dsh-metaphysics 0.58.0 → 0.59.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/client.name.js CHANGED
@@ -1,6 +1,6 @@
1
- window.__ModuleLoader__.load({id:"dsh-metaphysics",chunk:"client.name.js",factory(tt){const W={};return W.fail=(function(){return{fail:(Q,te)=>{const J=new Error(te);return J.code=Q,J}}})(),W.diff=(function(){const P=new Set(["summary","interpret","castAt","asOf","precision","disclaimer","note","trueSolarText","civilText","offsetMinutes","input","jd","juMethod","juMethodNote","lateZiHourMode","leapPolicy","schools","bodyMasterSchool","bodyMasterNote","handle","handleError","revision"]),Q=a=>a!==null&&typeof a=="object";function te(a,r,u="",g=[]){if(a===r)return g;if(!Q(a)||!Q(r))return g.push({path:u||"(root)",from:a,to:r}),g;const _=new Set([...Object.keys(a),...Object.keys(r)]);for(const K of _){if(P.has(K))continue;const R=u?`${u}.${K}`:K,ee=a[K],ue=r[K];Q(ee)&&Q(ue)?te(ee,ue,R,g):JSON.stringify(ee)!==JSON.stringify(ue)&&g.push({path:R,from:ee,to:ue})}return g}const J=[[/^pillars\.year\.ganzhi$/,"年柱"],[/^pillars\.month\.ganzhi$/,"月柱"],[/^pillars\.day\.ganzhi$/,"日柱"],[/^pillars\.hour\.ganzhi$/,"时柱"],[/^pillars\.\w+\.hidden/,"藏干"],[/^pillars\.\w+\.stemTenGod$/,"十神"],[/^pillars\.\w+\.kongwang/,"空亡"],[/^pillars\.\w+\.dishi$|^pillars\.\w+\.zizuo$/,"十二长生"],[/^pillars\.\w+\.nayin$/,"纳音"],[/^dayMaster\./,"日主"],[/^palaces\.(taiyuan|minggong|shengong)\./,"命身宫"],[/^palaces\.\d+\.(palace|branch|stem|ganzhi)$/,"宫位"],[/^palaces\.\d+\.stars\.\d+\.(name|brightness|type)$/,"星曜"],[/^palaces\.\d+\.shensha\./,"神煞"],[/^palaces\.\d+\.(daxian|xiaoxian)\./,"大限"],[/^palaces\.\d+\.sanfang\./,"三方四正"],[/^palaces\.\d+\./,"宫位"],[/^palaces\./,"命身宫"],[/^soul\./,"命宫"],[/^body\./,"身宫"],[/^doujun\./,"流年斗君"],[/^siZhu\.year$/,"年柱"],[/^siZhu\.month$/,"月柱"],[/^siZhu\.day$/,"日柱"],[/^siZhu\.time$/,"时柱"],[/^ju$|^juNumber$/,"局数"],[/^yuan$/,"三元"],[/^dun$/,"阴阳遁"],[/^daxian(List)?\./,"大限"],[/^fly(Chains|Composite)?\./,"飞星"],[/^pattern/,"格局"],[/^schools\./,"流派回显"],[/^dayun\.jiao\./,"起运"],[/^dayun\.toNextJieDays$/,"起运时间"],[/^dayun\.list\.(\d+)\.ganzhi$/,"大运干支"],[/^dayun\.startAge\./,"起运时间"],[/^dayun\./,"大运评分"],[/^liunian\./,"流年"],[/^jieqi\./,"节气边界"],[/^solarTime\./,"真太阳时"],[/^dayGanZhi$/,"日辰"],[/^hourZhi$/,"时支"],[/^yueJiang\./,"月将"],[/^xunKong$/,"旬空"],[/^lines\.(\d+)\./,"爻"],[/^shensha\./,"神煞"],[/^frame\./,"格局用神"],[/^strength\./,"旺衰"],[/^wuxing\./,"五行计数"],[/^relations\./,"干支关系"],[/^input\./,"输入回显"]],ne=[[/^pillars\./,"四柱"],[/^shensha\./,"神煞"],[/^dayun\./,"大运"],[/^liunian\./,"流年"],[/^frame\./,"格局用神"],[/^strength\./,"旺衰"],[/^wuxing\./,"五行计数"],[/^dayMaster\./,"日主"],[/^relations\./,"干支关系"],[/^palaces\.(taiyuan|minggong|shengong)\./,"命身宫"],[/^palaces\.\d+\./,"宫位"],[/^palaces\./,"命身宫"],[/^soul\.|^body\.|^doujun\./,"命身宫"],[/^siZhu\./,"四柱"],[/^ju$|^juNumber$|^yuan$|^dun$/,"局数"],[/^daxian/,"大限"],[/^fly/,"飞星"],[/^pattern/,"格局"],[/^jieqi\./,"节气"],[/^solarTime\./,"真太阳时"],[/^input\./,"输入回显"],[/^lines\./,"爻"]],T=[[/^pillars\.(year|month|day|hour)\.ganzhi$/,"柱"],[/^palaces\.(minggong|shengong)\.ganzhi$/,"命身宫"],[/^soul\.ganzhi$/,"命宫"],[/^body\.branch$/,"身宫"],[/^siZhu\.(year|month|day|time)$/,"柱"],[/^dayun\.jiao\.at$/,"起运"],[/^dayGanZhi$/,"日辰"],[/^hourZhi$/,"时支"],[/^ju$|^juNumber$|^juName$/,"局数"],[/^dun$/,"阴阳遁"],[/^lines\.\d+\.(ganzhi|yinYang|name)$/,"爻"],[/^yueJiang\.(name|zhi)$/,"月将"]];function v(a){for(const[r,u]of J)if(r.test(a))return u;return Y(a)||a}function Y(a){for(const[r,u]of ne)if(r.test(a))return u;return""}function m(a){for(const[r,u]of T)if(r.test(a))return u;return""}function $(a){return[...a].sort((r,u)=>r.path.localeCompare(u.path,"zh-Hans-CN",{numeric:!0}))}function A(a){if(!a.length)return"本盘不受此口径影响:所有字段一致。";const r=a.filter(K=>m(K.path)),u=[...new Set(a.map(K=>Y(K.path)).filter(Boolean))],g=r.length?`根因 ${r.length} 处:`+r.slice(0,4).map(K=>`${v(K.path)} ${j(K.from)}→${j(K.to)}`).join("、")+(r.length>4?" 等":""):"无单一根因",_=u.length?`;连带影响 ${u.slice(0,6).join("、")}${u.length>6?" 等":""} ${u.length} 类,共 ${a.length} 处`:`;共 ${a.length} 处`;return g+_+"。"}const j=a=>a===void 0?"—":a===null?"null":typeof a=="string"?a:Array.isArray(a)?a.join("")||"[]":typeof a=="object"?JSON.stringify(a):String(a);function y(a,{title:r="",limit:u=12}={}){const g=[];if(r&&g.push(`【${r}】`),g.push(A(a)),!a.length)return g.join(`
1
+ window.__ModuleLoader__.load({id:"dsh-metaphysics",chunk:"client.name.js",factory(ot){const W={};return W.fail=(function(){return{fail:(Q,te)=>{const J=new Error(te);return J.code=Q,J}}})(),W.diff=(function(){const P=new Set(["summary","interpret","castAt","asOf","precision","disclaimer","note","trueSolarText","civilText","offsetMinutes","input","jd","juMethod","juMethodNote","lateZiHourMode","leapPolicy","schools","bodyMasterSchool","bodyMasterNote","handle","handleError","revision"]),Q=a=>a!==null&&typeof a=="object";function te(a,r,u="",g=[]){if(a===r)return g;if(!Q(a)||!Q(r))return g.push({path:u||"(root)",from:a,to:r}),g;const _=new Set([...Object.keys(a),...Object.keys(r)]);for(const K of _){if(P.has(K))continue;const R=u?`${u}.${K}`:K,ee=a[K],ue=r[K];Q(ee)&&Q(ue)?te(ee,ue,R,g):JSON.stringify(ee)!==JSON.stringify(ue)&&g.push({path:R,from:ee,to:ue})}return g}const J=[[/^pillars\.year\.ganzhi$/,"年柱"],[/^pillars\.month\.ganzhi$/,"月柱"],[/^pillars\.day\.ganzhi$/,"日柱"],[/^pillars\.hour\.ganzhi$/,"时柱"],[/^pillars\.\w+\.hidden/,"藏干"],[/^pillars\.\w+\.stemTenGod$/,"十神"],[/^pillars\.\w+\.kongwang/,"空亡"],[/^pillars\.\w+\.dishi$|^pillars\.\w+\.zizuo$/,"十二长生"],[/^pillars\.\w+\.nayin$/,"纳音"],[/^dayMaster\./,"日主"],[/^palaces\.(taiyuan|minggong|shengong)\./,"命身宫"],[/^palaces\.\d+\.(palace|branch|stem|ganzhi)$/,"宫位"],[/^palaces\.\d+\.stars\.\d+\.(name|brightness|type)$/,"星曜"],[/^palaces\.\d+\.shensha\./,"神煞"],[/^palaces\.\d+\.(daxian|xiaoxian)\./,"大限"],[/^palaces\.\d+\.sanfang\./,"三方四正"],[/^palaces\.\d+\./,"宫位"],[/^palaces\./,"命身宫"],[/^soul\./,"命宫"],[/^body\./,"身宫"],[/^doujun\./,"流年斗君"],[/^siZhu\.year$/,"年柱"],[/^siZhu\.month$/,"月柱"],[/^siZhu\.day$/,"日柱"],[/^siZhu\.time$/,"时柱"],[/^ju$|^juNumber$/,"局数"],[/^yuan$/,"三元"],[/^dun$/,"阴阳遁"],[/^daxian(List)?\./,"大限"],[/^fly(Chains|Composite)?\./,"飞星"],[/^pattern/,"格局"],[/^schools\./,"流派回显"],[/^dayun\.jiao\./,"起运"],[/^dayun\.toNextJieDays$/,"起运时间"],[/^dayun\.list\.(\d+)\.ganzhi$/,"大运干支"],[/^dayun\.startAge\./,"起运时间"],[/^dayun\./,"大运评分"],[/^liunian\./,"流年"],[/^jieqi\./,"节气边界"],[/^solarTime\./,"真太阳时"],[/^dayGanZhi$/,"日辰"],[/^hourZhi$/,"时支"],[/^yueJiang\./,"月将"],[/^xunKong$/,"旬空"],[/^lines\.(\d+)\./,"爻"],[/^shensha\./,"神煞"],[/^frame\./,"格局用神"],[/^strength\./,"旺衰"],[/^wuxing\./,"五行计数"],[/^relations\./,"干支关系"],[/^input\./,"输入回显"]],ne=[[/^pillars\./,"四柱"],[/^shensha\./,"神煞"],[/^dayun\./,"大运"],[/^liunian\./,"流年"],[/^frame\./,"格局用神"],[/^strength\./,"旺衰"],[/^wuxing\./,"五行计数"],[/^dayMaster\./,"日主"],[/^relations\./,"干支关系"],[/^palaces\.(taiyuan|minggong|shengong)\./,"命身宫"],[/^palaces\.\d+\./,"宫位"],[/^palaces\./,"命身宫"],[/^soul\.|^body\.|^doujun\./,"命身宫"],[/^siZhu\./,"四柱"],[/^ju$|^juNumber$|^yuan$|^dun$/,"局数"],[/^daxian/,"大限"],[/^fly/,"飞星"],[/^pattern/,"格局"],[/^jieqi\./,"节气"],[/^solarTime\./,"真太阳时"],[/^input\./,"输入回显"],[/^lines\./,"爻"]],T=[[/^pillars\.(year|month|day|hour)\.ganzhi$/,"柱"],[/^palaces\.(minggong|shengong)\.ganzhi$/,"命身宫"],[/^soul\.ganzhi$/,"命宫"],[/^body\.branch$/,"身宫"],[/^siZhu\.(year|month|day|time)$/,"柱"],[/^dayun\.jiao\.at$/,"起运"],[/^dayGanZhi$/,"日辰"],[/^hourZhi$/,"时支"],[/^ju$|^juNumber$|^juName$/,"局数"],[/^dun$/,"阴阳遁"],[/^lines\.\d+\.(ganzhi|yinYang|name)$/,"爻"],[/^yueJiang\.(name|zhi)$/,"月将"]];function v(a){for(const[r,u]of J)if(r.test(a))return u;return Y(a)||a}function Y(a){for(const[r,u]of ne)if(r.test(a))return u;return""}function m(a){for(const[r,u]of T)if(r.test(a))return u;return""}function $(a){return[...a].sort((r,u)=>r.path.localeCompare(u.path,"zh-Hans-CN",{numeric:!0}))}function A(a){if(!a.length)return"本盘不受此口径影响:所有字段一致。";const r=a.filter(K=>m(K.path)),u=[...new Set(a.map(K=>Y(K.path)).filter(Boolean))],g=r.length?`根因 ${r.length} 处:`+r.slice(0,4).map(K=>`${v(K.path)} ${j(K.from)}→${j(K.to)}`).join("、")+(r.length>4?" 等":""):"无单一根因",_=u.length?`;连带影响 ${u.slice(0,6).join("、")}${u.length>6?" 等":""} ${u.length} 类,共 ${a.length} 处`:`;共 ${a.length} 处`;return g+_+"。"}const j=a=>a===void 0?"—":a===null?"null":typeof a=="string"?a:Array.isArray(a)?a.join("")||"[]":typeof a=="object"?JSON.stringify(a):String(a);function y(a,{title:r="",limit:u=12}={}){const g=[];if(r&&g.push(`【${r}】`),g.push(A(a)),!a.length)return g.join(`
2
2
  `);const _=$(a.filter(R=>m(R.path))),K=$(a.filter(R=>!m(R.path)));if(_.length){g.push(""),g.push(" 根因(口径直接改动):");for(const R of _)g.push(` ${v(R.path).padEnd(6)} ${j(R.from)} → ${j(R.to)}`)}if(K.length){g.push(""),g.push(` 连带变化(${K.length} 处,展示前 ${Math.min(u,K.length)} 处):`);for(const R of K.slice(0,u))g.push(` ${v(R.path).padEnd(6)} ${j(R.from)} → ${j(R.to)}`);if(K.length>u){const R={};for(const ee of K.slice(u)){const ue=Y(ee.path)||"其他";R[ue]=(R[ue]||0)+1}g.push(" 其余:"+Object.entries(R).map(([ee,ue])=>`${ee} ${ue} 处`).join("、"))}}return g.join(`
3
- `)}const k=(a,r,u,g,_,K)=>({key:a,title:r,short:u,read:R=>{const ee=R[a]!==void 0?R[a]:R.schools&&R.schools[a];return K[ee]?ee:g},alt:R=>R===_?g:_,label:R=>K[R]||R}),re={bazi:[{key:"lateZi",title:"晚子时:23:00 后是否换日",short:"晚子时",read:a=>a.lateZi!==!1,alt:a=>!a,label:a=>a?"换日":"不换日"},{key:"trueSolar",title:"真太阳时:是否按出生地经度修正",short:"真太阳时",read:a=>a.trueSolar!==!1,alt:a=>!a,label:a=>a?"修正":"不修正"}],ziwei:[{key:"leapMonth",title:"闰月归月:按日切分 / 整月归次月",short:"闰月归月",read:a=>a.leapMonth==="next"||a.leapMonth==="prev"?a.leapMonth:"split",alt:a=>a==="split"?"next":"split",label:a=>({split:"按日切分",next:"整月归次月",prev:"整月归本月"})[a]||a},{key:"trueSolar",title:"真太阳时:是否按出生地经度修正",short:"真太阳时",read:a=>a.trueSolar!==!1,alt:a=>!a,label:a=>a?"修正":"不修正"},k("brightnessSchool","亮度表:默认 / QS 七档","亮度表","default","QS",{default:"默认",QS:"QS(七档)",XD1:"XD1(七档)",ZZ:"ZZ(五档)",XD2:"XD2(五档)"}),k("gengYearSihua","庚干四化:阳武阴同 / 同科阴忌","庚干四化","GYWYT","GYWTY",{GYWYT:"阳武阴同",GYWTY:"同科阴忌",GYWFT:"府科同忌",GYWFX:"府科相忌",GYWTX:"同科相忌"}),k("tianmaSchool","天马:按年支 / 按生月","天马","year-branch","month-branch",{"year-branch":"年支","month-branch":"生月"}),k("tiankongSchool","天空:不排 / 年支顺行","天空","off","normal",{off:"不排",normal:"年支顺行","shun-jia-shi":"加生时"}),k("jiekongSchool","截空旬空:不排 / 正副双星","截空旬空","off","double",{off:"不排",single:"单星",double:"正副双星",zhanyan:"占验派"}),k("kuiyueSchool","魁钺:qs1 / qs2","魁钺","qs1","qs2",{qs1:"qs1",qs2:"qs2","zhong-yiming":"中一鸣",network:"网络"}),k("tianshiTianshang","天伤天使:常规 / 中州互换","天伤天使","normal","zhongzhou",{normal:"常规",zhongzhou:"中州(阴男阳女互换)"}),k("changshengSchool","长生:阴阳顺逆 / 火土起寅","长生","yin-yang-shun-ni","huo-tu",{"yin-yang-shun-ni":"阴阳顺逆","shui-tu":"水二","huo-tu":"火土(土五局起寅)"}),k("lateZishi","晚子时:归当日 / 归次日","晚子时","current-day","next-day",{"current-day":"归当日","next-day":"归次日","all-current":"全归当日","day-cur-time-next":"日归当日·时归次日"}),k("shenzhuSchool","身主:子午皆火星 / 子铃午火","身主","common","verse",{common:"子午皆火星",verse:"子铃午火(安身主诀逐字)"})],qimen:[{key:"juMethod",title:"取局流派:拆补 / 超神接气 / 置闰",short:"取局流派",read:a=>["chaibu","chaoshen","zhirun"].includes(a.juMethod)?a.juMethod:"chaibu",alt:a=>a==="chaibu"?"zhirun":"chaibu",label:a=>({chaibu:"拆补法",chaoshen:"超神接气",zhirun:"置闰法"})[a]||a},{key:"lateZiHourMode",title:"晚子时:23:00 后归当日 / 次日",short:"晚子时归日",read:a=>a.lateZiHourMode==="next-day"?"next-day":"same-day",alt:a=>a==="next-day"?"same-day":"next-day",label:a=>a==="next-day"?"归次日":"归当日"}]},S={bazi:[{path:"pillars.day.ganzhi",label:"日柱"},{path:"pillars.hour.ganzhi",label:"时柱"},{path:"strength.level",label:"旺衰"},{path:"frame.primaryName",label:"格局"},{path:"frame.yongshen.favor",label:"喜用"},{path:"dayun.jiao.at",label:"起运"}],ziwei:[{path:"soul.ganzhi",label:"命宫"},{path:"body.branch",label:"身宫支"},{path:"bureau.name",label:"五行局"},{path:"bodyMaster",label:"身主"},{path:"daxianList.0.ages",label:"起大限"}],qimen:[{path:"siZhu.day",label:"日柱"},{path:"ju",label:"局数"},{path:"zhiFu.star",label:"值符"},{path:"zhiShi.gate",label:"值使"}]};function M(a,r){let u=a;for(const g of String(r).split(".")){if(u==null)return;u=u[g]}return u}function i(a){return a==null?"—":Array.isArray(a)?a.join("、"):typeof a=="object"?"—":String(a)}function d(a,r,u){return(S[a]||[]).map(_=>{const K=i(M(r,_.path)),R=i(M(u,_.path));return{key:_.path,label:_.label,current:K,alt:R,changed:K!==R}})}return{diffObjects:te,labelOf:v,categoryOf:Y,rootOf:m,sortDiffs:$,summarize:A,formatValue:j,renderDiff:y,CALIBER_SWITCHES:re,CALIBER_VIEWS:S,viewCell:i,viewRows:d}})(),W.fingerprint=(function(){const P="0123456789ABCDEFGHJKMNPQRSTVWXYZ";function Q(T){return JSON.stringify(te(T))}function te(T){if(T===null)return null;const v=typeof T;if(v==="string")return typeof T.normalize=="function"?T.normalize("NFC"):T;if(v==="number")return Number.isFinite(T)?Object.is(T,-0)?0:T:null;if(v==="boolean")return T;if(Array.isArray(T))return T.map(te);if(v==="object"){const Y={};for(const m of Object.keys(T).sort()){const $=T[m];$===void 0||typeof $=="function"||typeof $=="symbol"||(Y[m]=te($))}return Y}return null}function J(T){const v=String(T);let Y=2166136261,m=2654435769;for(let j=0;j<v.length;j+=1){const y=v.charCodeAt(j);for(const k of[y&255,y>>>8])Y=Math.imul(Y^k,16777619),m=Math.imul(m^k,2246822507)}let $=(Y>>>0)*8+(m>>>29),A="";for(let j=0;j<7;j+=1)A=P[$%32]+A,$=Math.floor($/32);return A}function ne(T={}){const v=String(T.system||""),Y=String(T.version||"dev"),m=T.seed===void 0||T.seed===null||T.seed===""?null:Number(T.seed),$=T.asOf?String(T.asOf):null,A=T.params&&typeof T.params=="object"?T.params:{},j=Q({system:v,params:A,seed:m,asOf:$}),y=Q({base:j,version:Y});return{id:`LY-${J(y)}`,baseId:`LY-${J(j)}`,version:Y,system:v,payload:j}}return{canonicalJson:Q,shortHash:J,fingerprintOf:ne}})(),W.validate=(function(){const{fail:P}=W.fail||{},Q=1600,te=2400;function J(m){return m%4===0&&m%100!==0||m%400===0}function ne(m,$){return $===2?J(m)?29:28:[31,28,31,30,31,30,31,31,30,31,30,31][$-1]||0}const T=m=>typeof m=="string"?`「${m}」`:String(m),v="引擎只接受解析好的公历字段 { year, month, day, hour?, minute? };字符串请先交给宿主层的 parseDateTime 解析";function Y(m,$=""){const A=$?`${$} 的`:"";if(!m||typeof m!="object"||Array.isArray(m)){const re=m===null?"null":Array.isArray(m)?"数组":typeof m;throw P("E_INPUT",`${A}入参必须是对象(收到 ${re});${v}`)}const j=m.hour===void 0?0:m.hour,y=m.minute===void 0?0:m.minute;for(const[re,S]of[["year",m.year],["month",m.month],["day",m.day],["hour",j],["minute",y]])if(!Number.isInteger(S))throw P("E_INPUT",`${A}${re} 必须是整数(收到 ${T(S)});${v}`);if(m.year<Q||m.year>te)throw P("E_INPUT",`${A}year 超出支持范围 ${Q}–${te}(收到 ${m.year});更早的年份时区与历法口径不可靠`);if(m.month<1||m.month>12)throw P("E_INPUT",`${A}month 超出范围 1–12(收到 ${m.month})`);const k=ne(m.year,m.month);if(m.day<1||m.day>k)throw P("E_INPUT",`${A}日期不存在:${m.year}-${m.month}-${m.day}(${m.year} 年 ${m.month} 月只有 ${k} 天)`);if(j<0||j>23)throw P("E_INPUT",`${A}hour 超出范围 0–23(收到 ${j})`);if(y<0||y>59)throw P("E_INPUT",`${A}minute 超出范围 0–59(收到 ${y})`);return m}return{MIN_YEAR:Q,MAX_YEAR:te,isLeapYear:J,daysInMonth:ne,assertCivil:Y}})(),W.lru=(function(){function P({max:Q=64,ttlMs:te=0,name:J="lru",now:ne=()=>Date.now()}={}){const T=new Map,v={name:J,hits:0,misses:0,evictions:0,expirations:0},Y=m=>te>0&&ne()-m.at>te;return{name:J,max:Q,ttlMs:te,get(m){const $=T.get(m);if(!$||Y($)){$&&(T.delete(m),v.expirations+=1),v.misses+=1;return}return T.delete(m),T.set(m,$),v.hits+=1,$.value},set(m,$){for(T.has(m)&&T.delete(m),T.set(m,{value:$,at:ne()});T.size>Q;)T.delete(T.keys().next().value),v.evictions+=1;return $},has(m){const $=T.get(m);return $?Y($)?(T.delete(m),v.expirations+=1,!1):!0:!1},delete(m){return T.delete(m)},clear(){T.clear()},get size(){return T.size},stats(){const m=v.hits+v.misses;return{name:J,size:T.size,max:Q,hits:v.hits,misses:v.misses,evictions:v.evictions,expirations:v.expirations,hitRate:m?v.hits/m:0}}}}return{createLru:P}})(),W.nayin=(function(){const P=["海中金","炉中火","大林木","路旁土","剑锋金","山头火","涧下水","城头土","白蜡金","杨柳木","泉中水","屋上土","霹雳火","松柏木","长流水","沙中金","山下火","平地木","壁上土","金箔金","覆灯火","天河水","大驿土","钗钏金","桑柘木","大溪水","沙中土","天上火","石榴木","大海水"];function Q(te){const J=(Number(te)%60+60)%60,ne=P[Math.floor(J/2)];return{name:ne,element:ne[2]}}return{NAYIN_NAMES:P,nayinOf:Q}})(),W.sanhe=(function(){const P=[{branches:["申","子","辰"],element:"水"},{branches:["亥","卯","未"],element:"木"},{branches:["寅","午","戌"],element:"火"},{branches:["巳","酉","丑"],element:"金"}],Q=Object.fromEntries(P.map(ne=>[ne.branches.join(""),ne.element])),te=Object.fromEntries(P.flatMap(ne=>ne.branches.map(T=>[T,ne.element])));function J(ne){return P.find(T=>T.branches.includes(ne))||null}return{SANHE_GROUPS:P,SANHE:Q,SANHE_ELEMENT:te,sanheGroupOf:J}})(),W["vsop-earth"]=(function(){const P=[[1.75347045673,0,0],[.03341656453,4.66925680415,6283.0758499914],[.00034894275,4.62610242189,12566.1516999828],[3417572e-11,2.82886579754,3.523118349],[3497056e-11,2.74411783405,5753.3848848968],[3135899e-11,3.62767041756,77713.7714681205],[2676218e-11,4.41808345438,7860.4193924392],[2342691e-11,6.13516214446,3930.2096962196],[1273165e-11,2.03709657878,529.6909650946],[1324294e-11,.74246341673,11506.7697697936],[901854e-11,2.04505446477,26.2983197998],[1199167e-11,1.10962946234,1577.3435424478],[857223e-11,3.50849152283,398.1490034082],[779786e-11,1.17882681962,5223.6939198022],[99025e-10,5.23268072088,5884.9268465832],[753141e-11,2.53339052847,5507.5532386674],[505267e-11,4.58292599973,18849.2275499742],[492392e-11,4.20505711826,775.522611324],[356672e-11,2.91954114478,.0673103028],[284125e-11,1.89869240932,796.2980068164],[242879e-11,.34481445893,5486.777843175],[317087e-11,5.84901948512,11790.6290886588],[271112e-11,.31486255375,10977.078804699],[206217e-11,4.80646631478,2544.3144198834],[205478e-11,1.86953770281,5573.1428014331],[202318e-11,2.45767790232,6069.7767545534],[126225e-11,1.08295459501,20.7753954924],[155516e-11,.83306084617,213.299095438],[115132e-11,.64544911683,.9803210682],[102851e-11,.63599845579,4694.0029547076],[101724e-11,4.2667980198,7.1135470008],[99206e-11,6.20992926918,2146.1654164752],[132212e-11,3.41118292683,2942.4634232916],[97607e-11,.68101342359,155.4203994342],[85128e-11,1.29870764804,6275.9623029906],[74651e-11,1.755089133,5088.6288397668],[101895e-11,.97569280312,15720.8387848784],[84711e-11,3.67080093031,71430.69561812909],[73547e-11,4.67926633877,801.8209311238],[73874e-11,3.50319414955,3154.6870848956],[78757e-11,3.03697458703,12036.4607348882],[79637e-11,1.80791287082,17260.1546546904],[85803e-11,5.9832263126,161000.6857376741],[56963e-11,2.78430458592,6286.5989683404],[61148e-11,1.81839892984,7084.8967811152],[69627e-11,.83297621398,9437.762934887],[56116e-11,4.38694865354,14143.4952424306],[62449e-11,3.97763912806,8827.3902698748],[51145e-11,.28306832879,5856.4776591154],[55577e-11,3.47006059924,6279.5527316424],[41036e-11,5.36817592855,8429.2412664666],[51605e-11,1.33282739866,1748.016413067],[51992e-11,.18914947184,12139.5535091068],[49e-8,.48735014197,1194.4470102246],[392e-9,6.16833020996,10447.3878396044],[3557e-10,1.775968892,6812.766815086],[3677e-10,6.04133863162,10213.285546211],[36596e-11,2.56957481827,1059.3819301892],[33296e-11,.59310278598,17789.845619785],[35954e-11,1.70875808777,2352.8661537718],[40938e-11,2.39850938714,19651.048481098],[30047e-11,2.73975124088,1349.8674096588],[30412e-11,.44294464169,83996.84731811189],[23663e-11,.48473622521,8031.0922630584],[23574e-11,2.06528133162,3340.6124266998],[21089e-11,4.14825468851,951.7184062506],[24738e-11,.21484762138,3.5904286518],[25352e-11,3.16470891653,4690.4798363586],[22823e-11,5.22195230819,4705.7323075436],[21419e-11,1.42563910473,16730.4636895958],[21891e-11,5.55594302779,553.5694028424],[203e-9,.37133792946,283.8593188652]],Q=[[6283.0758499914,0,0],[.00206058863,2.67823455808,6283.0758499914],[4303419e-11,2.63512233481,12566.1516999828],[425264e-11,1.59046982018,3.523118349],[109017e-11,2.96631010675,1577.3435424478],[93479e-11,2.59211109542,18849.2275499742],[119305e-11,5.79555765566,26.2983197998],[72121e-11,1.13840581212,529.6909650946],[67784e-11,1.87453300345,398.1490034082],[6735e-10,4.40932832004,5507.5532386674],[59045e-11,2.88815790631,5223.6939198022],[55976e-11,2.17471740035,155.4203994342],[45411e-11,.39799502896,796.2980068164],[36298e-11,.46875437227,775.522611324],[28962e-11,2.64732254645,7.1135470008],[20844e-11,5.34138275149,.9803210682]],te=[[8721859e-11,1.07253635559,6283.0758499914],[99099e-10,3.14159265359,0],[294833e-11,.43717350256,12566.1516999828],[27338e-11,.05295636147,3.523118349],[16333e-11,5.18820215724,26.2983197998],[15745e-11,3.68504712183,155.4203994342],[9425e-11,.29667114694,18849.2275499742],[8938e-11,2.05706319592,77713.7714681205],[694e-10,.82691541038,775.522611324],[5061e-11,4.6624323168,1577.3435424478]],J=[[289058e-11,5.84173149732,6283.0758499914],[20712e-11,6.0498393902,12566.1516999828],[2962e-11,5.1956057957,155.4203994342],[2527e-11,3.14159265359,0],[1288e-11,4.7219761197,3.523118349]],ne=[[7714e-11,4.14117321449,6283.0758499914],[1016e-11,3.27573644241,12566.1516999828]];function T(v){let Y=0;for(const[$,A,j]of P)Y+=$*Math.cos(A+j*v);let m=1;for(const $ of[Q,te,J,ne]){m*=v;for(const[A,j,y]of $)Y+=A*m*Math.cos(j+y*v)}return Y}return{earthL:T}})(),W.calendar=(function(){const{earthL:P}=W["vsop-earth"]||{},{createLru:Q}=W.lru||{},te=["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"],J=["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"],ne=["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"];function T(l){return(285+15*l)%360}function v(l,h,c){const b=Math.floor((14-h)/12),x=l+4800-b,p=h+12*b-3;return c+Math.floor((153*p+2)/5)+365*x+Math.floor(x/4)-Math.floor(x/100)+Math.floor(x/400)-32045}function Y(l){const h=l+32044,c=Math.floor((4*h+3)/146097),b=h-Math.floor(146097*c/4),x=Math.floor((4*b+3)/1461),p=b-Math.floor(1461*x/4),I=Math.floor((5*p+2)/153);return{year:100*c+x-4800+Math.floor(I/10),month:I+3-12*Math.floor(I/10),day:p-Math.floor((153*I+2)/5)+1}}function m(l,h){for(let c=0;c<60;c++)if(c%10===l&&c%12===h)return c;return-1}function $(l){const h=(l%60+60)%60;return{index:h,stem:te[h%10],branch:J[h%12],name:te[h%10]+J[h%12]}}function A(l){return((l+49)%60+60)%60}function j(l){const h=l-2451545,c=h/36525,b=h/365250;let x=P(b)*180/Math.PI+180;x=(x%360+360)%360;const p=(5029.0966*c+1.11113*c*c-6e-6*c*c*c)/3600;x+=p,x-=.09033/3600;const I=(125.04452-1934.136261*c)*Math.PI/180,H=(280.4665+36000.7698*c)*Math.PI/180,he=(218.3165+481267.8813*c)*Math.PI/180,se=(-17.2*Math.sin(I)-1.32*Math.sin(2*H)-.23*Math.sin(2*he)+.21*Math.sin(2*I))/3600;x+=se;const xe=(357.52911+35999.05029*c-1537e-7*c*c)*Math.PI/180,Oe=.016708634-42037e-9*c-1267e-10*c*c,Ne=1.000001018*(1-Oe*Oe)/(1+Oe*Math.cos(xe+(1.914602-.004817*c)*(Math.PI/180)*Math.sin(xe)));return x-=20.4898/3600/(Ne||1),(x%360+360)%360}function y(l){const h=[[1900,-2.8],[1920,21.2],[1940,24.3],[1950,29.1],[1960,33.2],[1970,40.2],[1980,50.5],[1990,56.9],[2e3,63.8],[2010,66.1],[2020,69.4],[2030,72],[2050,80],[2100,110]];if(l<=h[0][0])return h[0][1];for(let c=1;c<h.length;c++)if(l<=h[c][0]){const[b,x]=h[c-1],[p,I]=h[c];return x+(I-x)*(l-b)/(p-b)}return h[h.length-1][1]}const k=8/24,re=7.7611/24,S=2425612+4/24;function M(l){return l<S?re:k}const i=Q({max:4096,name:"termInstant"}),d=1e-5,a=new Map,r=365.2422;function u(l,h){const c=T(h),b=v(l,1,5)-.5+h*15.2184,x=a.get(h);let p=x!==void 0?x+r:b;Math.abs(p-b)>20&&(p=b);for(let H=0;H<12;H++){let he=c-j(p);if(he=((he+180)%360+360)%360-180,p+=he/.98564736,Math.abs(he)<d)break}a.set(h,p);const I=p-y(l)/86400;return I+M(I)}function g(l,h){const c=l*24+h,b=i.get(c);if(b!==void 0)return b;const x=u(l,h);return i.set(c,x),x}function _(l){const h=Math.floor(l+.5),c=l+.5-h,b=Math.round(c*1440),{year:x,month:p,day:I}=Y(h);return{year:x,month:p,day:I,hour:Math.floor(b/60)%24,minute:b%60}}function K({year:l,month:h,day:c,hour:b=0,minute:x=0}){return v(l,h,c)-.5+(b*60+x)/1440}function R(l,h,c){const b=v(l,h,c)-v(l,1,1)+1,x=2*Math.PI*(b-81)/364;return 9.87*Math.sin(2*x)-7.53*Math.cos(x)-1.5*Math.sin(x)}const ee=Q({max:8,name:"termWindow"}),ue=Q({max:32,name:"termYear"}),je=Array.from({length:24},(l,h)=>h),Ae=je.filter(l=>l%2===0);function ze(l,h){const c=h?`${l}|jie`:`${l}|all`,b=ue.get(c);if(b)return b;if(h){const p=ue.get(`${l}|all`);if(p){const I=p.filter(H=>H.index%2===0);return ue.set(c,I),I}}const x=[];for(const p of h?Ae:je)x.push({year:l,index:p,name:ne[p],jd:g(l,p)});return x.sort((p,I)=>p.jd-I.jd),ue.set(c,x),x}function ve(l,h={}){const c=h.jieOnly===!0,b=c?`${l}|jie`:l,x=ee.get(b);if(x)return x;const p=[...ze(l-1,c),...ze(l,c),...ze(l+1,c)];return p.sort((I,H)=>I.jd-H.jd),ee.set(b,p),p}function Re(l){if(typeof l!="string"||l.length<2)return[];const h=te.indexOf(l[0]),c=J.indexOf(l[1]);if(h<0||c<0)return[];const b=m(h,c);if(b<0)return[];const x=Math.floor(b/10)*10;return[J[(x+10)%12],J[(x+11)%12]]}function Pe(l,h){let c=null;for(const b of l)if(b.index%2===0)if(b.jd<=h)c=b;else break;return c}function q(l,h){for(const c of l)if(c.index%2===0&&c.jd>h)return c;return null}function V(l){const h=_(l),c=b=>String(b).padStart(2,"0");return`${h.year}-${c(h.month)}-${c(h.day)} ${c(h.hour)}:${c(h.minute)}`}function F(){return[i.stats(),ue.stats(),ee.stats()]}return{STEMS:te,BRANCHES:J,TERM_NAMES:ne,termLongitude:T,toJDN:v,fromJDN:Y,sexagenaryIndex:m,ganzhiName:$,dayGanzhiIndex:A,sunLongitude:j,deltaTSeconds:y,OFFSET_MODERN:k,OFFSET_BEIJING_LOCAL:re,CUTOVER_JD:S,localOffsetFor:M,termInstantJd:g,jdToParts:_,partsToJd:K,equationOfTime:R,termWindow:ve,xunKongOf:Re,previousJie:Pe,nextJie:q,formatJd:V,cacheMetrics:F}})(),W.lunar=(function(){const{toJDN:P,jdToParts:Q,termInstantJd:te,deltaTSeconds:J,localOffsetFor:ne,OFFSET_MODERN:T}=W.calendar||{},v=29.530588861,Y=245155009766e-5,m=Math.PI/180;function $(M){const i=M/1236.85,d=Y+v*M+15437e-8*i*i-15e-8*i*i*i+73e-11*i*i*i*i,a=1-.002516*i-74e-7*i*i,r=(2.5534+29.1053567*M-14e-7*i*i-11e-8*i*i*i)*m,u=(201.5643+385.81693528*M+.0107582*i*i+1238e-8*i*i*i-58e-9*i*i*i*i)*m,g=(160.7108+390.67050284*M-.0016118*i*i-227e-8*i*i*i+11e-9*i*i*i*i)*m,_=(124.7746-1.56375588*M+.0020672*i*i+215e-8*i*i*i)*m,K=-.4072*Math.sin(u)+.17241*a*Math.sin(r)+.01608*Math.sin(2*u)+.01039*Math.sin(2*g)+.00739*a*Math.sin(u-r)-.00514*a*Math.sin(u+r)+.00208*a*a*Math.sin(2*r)-.00111*Math.sin(u-2*g)-57e-5*Math.sin(u+2*g)+56e-5*a*Math.sin(2*u+r)-42e-5*Math.sin(3*u)+42e-5*a*Math.sin(r+2*g)+38e-5*a*Math.sin(r-2*g)-24e-5*a*Math.sin(2*u-r)-17e-5*Math.sin(_)-7e-5*Math.sin(u+2*r)+4e-5*Math.sin(2*u-2*g)+4e-5*Math.sin(3*r)+3e-5*Math.sin(u+r-2*g)+3e-5*Math.sin(2*u+2*g)-3e-5*Math.sin(u+r+2*g)+3e-5*Math.sin(u-r+2*g)-2e-5*Math.sin(u-r-2*g)-2e-5*Math.sin(3*u+r)+2e-5*Math.sin(4*u),R=d+K-J(2e3+i*100)/86400;return R+ne(R)}function A(M){return Math.floor(M+.5)}function j(M){const i=M-T;return i+ne(i)}function y(M){return Math.round((M+.5-Y)/v)}function k(M,i,d){for(let a=M-1;a<=M+1;a++)for(let r=1;r<24;r+=2){const u=j(te(a,r)),g=A(u);if(g>=i&&g<d)return{index:r,jd:u}}return null}function re(M,i,d){const a=P(M,i,d),r=A(j(te(M,23))),u=a<r?M-1:M,g=A(j(te(u,23)));let _=y(g);for(;A($(_))>g;)_--;for(;A($(_+1))<=g;)_++;const K=A(j(te(u+1,23)));let R=_;for(;A($(R+1))<=K;)R++;const ee=R-_;let ue=-1;if(ee===13)for(let ve=1;ve<=ee;ve++){const Re=A($(_+ve-1)),Pe=A($(_+ve));if(!k(u,Re,Pe)){ue=ve;break}}let je=11,Ae=!1,ze=A($(_));for(let ve=1;ve<=15;ve++){const Re=A($(_+ve-1)),Pe=A($(_+ve)),q=k(u,Re,Pe),V=ve===ue;if(a>=Re&&a<Pe){const F=Q($(_+ve-1)),l=V?(je+10)%12+1:je;return{year:u,lunarYear:Ae?u+1:u,month:l,day:a-Re+1,isLeap:V,monthStart:`${F.year}-${String(F.month).padStart(2,"0")}-${String(F.day).padStart(2,"0")}`,hasZhongQi:!!q}}V||(je=je%12+1,je===1&&(Ae=!0)),ze=Pe}throw new Error(`农历换算失败:${M}-${i}-${d}`)}function S(M,i,d){return P(M,i,d)}return{SYNODIC:v,newMoonJd:$,dayNumberOf:A,solarToLunar:re,monthStartJd:S}})(),W.geo=(function(){const P=`
3
+ `)}const k=(a,r,u,g,_,K)=>({key:a,title:r,short:u,read:R=>{const ee=R[a]!==void 0?R[a]:R.schools&&R.schools[a];return K[ee]?ee:g},alt:R=>R===_?g:_,label:R=>K[R]||R}),re={bazi:[{key:"lateZi",title:"晚子时:23:00 后是否换日",short:"晚子时",read:a=>a.lateZi!==!1,alt:a=>!a,label:a=>a?"换日":"不换日"},{key:"trueSolar",title:"真太阳时:是否按出生地经度修正",short:"真太阳时",read:a=>a.trueSolar!==!1,alt:a=>!a,label:a=>a?"修正":"不修正"}],ziwei:[{key:"leapMonth",title:"闰月归月:按日切分 / 整月归次月",short:"闰月归月",read:a=>a.leapMonth==="next"||a.leapMonth==="prev"?a.leapMonth:"split",alt:a=>a==="split"?"next":"split",label:a=>({split:"按日切分",next:"整月归次月",prev:"整月归本月"})[a]||a},{key:"trueSolar",title:"真太阳时:是否按出生地经度修正",short:"真太阳时",read:a=>a.trueSolar!==!1,alt:a=>!a,label:a=>a?"修正":"不修正"},k("brightnessSchool","亮度表:默认 / QS 七档","亮度表","default","QS",{default:"默认",QS:"QS(七档)",XD1:"XD1(七档)",ZZ:"ZZ(五档)",XD2:"XD2(五档)"}),k("gengYearSihua","庚干四化:阳武阴同 / 同科阴忌","庚干四化","GYWYT","GYWTY",{GYWYT:"阳武阴同",GYWTY:"同科阴忌",GYWFT:"府科同忌",GYWFX:"府科相忌",GYWTX:"同科相忌"}),k("tianmaSchool","天马:按年支 / 按生月","天马","year-branch","month-branch",{"year-branch":"年支","month-branch":"生月"}),k("tiankongSchool","天空:不排 / 年支顺行","天空","off","normal",{off:"不排",normal:"年支顺行","shun-jia-shi":"加生时"}),k("jiekongSchool","截空旬空:不排 / 正副双星","截空旬空","off","double",{off:"不排",single:"单星",double:"正副双星",zhanyan:"占验派"}),k("kuiyueSchool","魁钺:qs1 / qs2","魁钺","qs1","qs2",{qs1:"qs1",qs2:"qs2","zhong-yiming":"中一鸣",network:"网络"}),k("tianshiTianshang","天伤天使:常规 / 中州互换","天伤天使","normal","zhongzhou",{normal:"常规",zhongzhou:"中州(阴男阳女互换)"}),k("changshengSchool","长生:阴阳顺逆 / 火土起寅","长生","yin-yang-shun-ni","huo-tu",{"yin-yang-shun-ni":"阴阳顺逆","shui-tu":"水二","huo-tu":"火土(土五局起寅)"}),k("lateZishi","晚子时:归当日 / 归次日","晚子时","current-day","next-day",{"current-day":"归当日","next-day":"归次日","all-current":"全归当日","day-cur-time-next":"日归当日·时归次日"}),k("shenzhuSchool","身主:子午皆火星 / 子铃午火","身主","common","verse",{common:"子午皆火星",verse:"子铃午火(安身主诀逐字)"})],qimen:[{key:"juMethod",title:"取局流派:拆补 / 超神接气 / 置闰",short:"取局流派",read:a=>["chaibu","chaoshen","zhirun"].includes(a.juMethod)?a.juMethod:"chaibu",alt:a=>a==="chaibu"?"zhirun":"chaibu",label:a=>({chaibu:"拆补法",chaoshen:"超神接气",zhirun:"置闰法"})[a]||a},{key:"lateZiHourMode",title:"晚子时:23:00 后归当日 / 次日",short:"晚子时归日",read:a=>a.lateZiHourMode==="next-day"?"next-day":"same-day",alt:a=>a==="next-day"?"same-day":"next-day",label:a=>a==="next-day"?"归次日":"归当日"}]},S={bazi:[{path:"pillars.day.ganzhi",label:"日柱"},{path:"pillars.hour.ganzhi",label:"时柱"},{path:"strength.level",label:"旺衰"},{path:"frame.primaryName",label:"格局"},{path:"frame.yongshen.favor",label:"喜用"},{path:"dayun.jiao.at",label:"起运"}],ziwei:[{path:"soul.ganzhi",label:"命宫"},{path:"body.branch",label:"身宫支"},{path:"bureau.name",label:"五行局"},{path:"bodyMaster",label:"身主"},{path:"daxianList.0.ages",label:"起大限"}],qimen:[{path:"siZhu.day",label:"日柱"},{path:"ju",label:"局数"},{path:"zhiFu.star",label:"值符"},{path:"zhiShi.gate",label:"值使"}]};function M(a,r){let u=a;for(const g of String(r).split(".")){if(u==null)return;u=u[g]}return u}function i(a){return a==null?"—":Array.isArray(a)?a.join("、"):typeof a=="object"?"—":String(a)}function d(a,r,u){return(S[a]||[]).map(_=>{const K=i(M(r,_.path)),R=i(M(u,_.path));return{key:_.path,label:_.label,current:K,alt:R,changed:K!==R}})}return{diffObjects:te,labelOf:v,categoryOf:Y,rootOf:m,sortDiffs:$,summarize:A,formatValue:j,renderDiff:y,CALIBER_SWITCHES:re,CALIBER_VIEWS:S,viewCell:i,viewRows:d}})(),W.fingerprint=(function(){const P="0123456789ABCDEFGHJKMNPQRSTVWXYZ";function Q(T){return JSON.stringify(te(T))}function te(T){if(T===null)return null;const v=typeof T;if(v==="string")return typeof T.normalize=="function"?T.normalize("NFC"):T;if(v==="number")return Number.isFinite(T)?Object.is(T,-0)?0:T:null;if(v==="boolean")return T;if(Array.isArray(T))return T.map(te);if(v==="object"){const Y={};for(const m of Object.keys(T).sort()){const $=T[m];$===void 0||typeof $=="function"||typeof $=="symbol"||(Y[m]=te($))}return Y}return null}function J(T){const v=String(T);let Y=2166136261,m=2654435769;for(let j=0;j<v.length;j+=1){const y=v.charCodeAt(j);for(const k of[y&255,y>>>8])Y=Math.imul(Y^k,16777619),m=Math.imul(m^k,2246822507)}let $=(Y>>>0)*8+(m>>>29),A="";for(let j=0;j<7;j+=1)A=P[$%32]+A,$=Math.floor($/32);return A}function ne(T={}){const v=String(T.system||""),Y=String(T.version||"dev"),m=T.seed===void 0||T.seed===null||T.seed===""?null:Number(T.seed),$=T.asOf?String(T.asOf):null,A=T.params&&typeof T.params=="object"?T.params:{},j=Q({system:v,params:A,seed:m,asOf:$}),y=Q({base:j,version:Y});return{id:`LY-${J(y)}`,baseId:`LY-${J(j)}`,version:Y,system:v,payload:j}}return{canonicalJson:Q,shortHash:J,fingerprintOf:ne}})(),W.validate=(function(){const{fail:P}=W.fail||{},Q=1600,te=2400;function J(m){return m%4===0&&m%100!==0||m%400===0}function ne(m,$){return $===2?J(m)?29:28:[31,28,31,30,31,30,31,31,30,31,30,31][$-1]||0}const T=m=>typeof m=="string"?`「${m}」`:String(m),v="引擎只接受解析好的公历字段 { year, month, day, hour?, minute? };字符串请先交给宿主层的 parseDateTime 解析";function Y(m,$=""){const A=$?`${$} 的`:"";if(!m||typeof m!="object"||Array.isArray(m)){const re=m===null?"null":Array.isArray(m)?"数组":typeof m;throw P("E_INPUT",`${A}入参必须是对象(收到 ${re});${v}`)}const j=m.hour===void 0?0:m.hour,y=m.minute===void 0?0:m.minute;for(const[re,S]of[["year",m.year],["month",m.month],["day",m.day],["hour",j],["minute",y]])if(!Number.isInteger(S))throw P("E_INPUT",`${A}${re} 必须是整数(收到 ${T(S)});${v}`);if(m.year<Q||m.year>te)throw P("E_INPUT",`${A}year 超出支持范围 ${Q}–${te}(收到 ${m.year});更早的年份时区与历法口径不可靠`);if(m.month<1||m.month>12)throw P("E_INPUT",`${A}month 超出范围 1–12(收到 ${m.month})`);const k=ne(m.year,m.month);if(m.day<1||m.day>k)throw P("E_INPUT",`${A}日期不存在:${m.year}-${m.month}-${m.day}(${m.year} 年 ${m.month} 月只有 ${k} 天)`);if(j<0||j>23)throw P("E_INPUT",`${A}hour 超出范围 0–23(收到 ${j})`);if(y<0||y>59)throw P("E_INPUT",`${A}minute 超出范围 0–59(收到 ${y})`);return m}return{MIN_YEAR:Q,MAX_YEAR:te,isLeapYear:J,daysInMonth:ne,assertCivil:Y}})(),W.lru=(function(){function P({max:Q=64,ttlMs:te=0,name:J="lru",now:ne=()=>Date.now()}={}){const T=new Map,v={name:J,hits:0,misses:0,evictions:0,expirations:0},Y=m=>te>0&&ne()-m.at>te;return{name:J,max:Q,ttlMs:te,get(m){const $=T.get(m);if(!$||Y($)){$&&(T.delete(m),v.expirations+=1),v.misses+=1;return}return T.delete(m),T.set(m,$),v.hits+=1,$.value},set(m,$){for(T.has(m)&&T.delete(m),T.set(m,{value:$,at:ne()});T.size>Q;)T.delete(T.keys().next().value),v.evictions+=1;return $},has(m){const $=T.get(m);return $?Y($)?(T.delete(m),v.expirations+=1,!1):!0:!1},delete(m){return T.delete(m)},clear(){T.clear()},get size(){return T.size},stats(){const m=v.hits+v.misses;return{name:J,size:T.size,max:Q,hits:v.hits,misses:v.misses,evictions:v.evictions,expirations:v.expirations,hitRate:m?v.hits/m:0}}}}return{createLru:P}})(),W.nayin=(function(){const P=["海中金","炉中火","大林木","路旁土","剑锋金","山头火","涧下水","城头土","白蜡金","杨柳木","泉中水","屋上土","霹雳火","松柏木","长流水","沙中金","山下火","平地木","壁上土","金箔金","覆灯火","天河水","大驿土","钗钏金","桑柘木","大溪水","沙中土","天上火","石榴木","大海水"];function Q(te){const J=(Number(te)%60+60)%60,ne=P[Math.floor(J/2)];return{name:ne,element:ne[2]}}return{NAYIN_NAMES:P,nayinOf:Q}})(),W.sanhe=(function(){const P=[{branches:["申","子","辰"],element:"水"},{branches:["亥","卯","未"],element:"木"},{branches:["寅","午","戌"],element:"火"},{branches:["巳","酉","丑"],element:"金"}],Q=Object.fromEntries(P.map(ne=>[ne.branches.join(""),ne.element])),te=Object.fromEntries(P.flatMap(ne=>ne.branches.map(T=>[T,ne.element])));function J(ne){return P.find(T=>T.branches.includes(ne))||null}return{SANHE_GROUPS:P,SANHE:Q,SANHE_ELEMENT:te,sanheGroupOf:J}})(),W["vsop-earth"]=(function(){const P=[[1.75347045673,0,0],[.03341656453,4.66925680415,6283.0758499914],[.00034894275,4.62610242189,12566.1516999828],[3417572e-11,2.82886579754,3.523118349],[3497056e-11,2.74411783405,5753.3848848968],[3135899e-11,3.62767041756,77713.7714681205],[2676218e-11,4.41808345438,7860.4193924392],[2342691e-11,6.13516214446,3930.2096962196],[1273165e-11,2.03709657878,529.6909650946],[1324294e-11,.74246341673,11506.7697697936],[901854e-11,2.04505446477,26.2983197998],[1199167e-11,1.10962946234,1577.3435424478],[857223e-11,3.50849152283,398.1490034082],[779786e-11,1.17882681962,5223.6939198022],[99025e-10,5.23268072088,5884.9268465832],[753141e-11,2.53339052847,5507.5532386674],[505267e-11,4.58292599973,18849.2275499742],[492392e-11,4.20505711826,775.522611324],[356672e-11,2.91954114478,.0673103028],[284125e-11,1.89869240932,796.2980068164],[242879e-11,.34481445893,5486.777843175],[317087e-11,5.84901948512,11790.6290886588],[271112e-11,.31486255375,10977.078804699],[206217e-11,4.80646631478,2544.3144198834],[205478e-11,1.86953770281,5573.1428014331],[202318e-11,2.45767790232,6069.7767545534],[126225e-11,1.08295459501,20.7753954924],[155516e-11,.83306084617,213.299095438],[115132e-11,.64544911683,.9803210682],[102851e-11,.63599845579,4694.0029547076],[101724e-11,4.2667980198,7.1135470008],[99206e-11,6.20992926918,2146.1654164752],[132212e-11,3.41118292683,2942.4634232916],[97607e-11,.68101342359,155.4203994342],[85128e-11,1.29870764804,6275.9623029906],[74651e-11,1.755089133,5088.6288397668],[101895e-11,.97569280312,15720.8387848784],[84711e-11,3.67080093031,71430.69561812909],[73547e-11,4.67926633877,801.8209311238],[73874e-11,3.50319414955,3154.6870848956],[78757e-11,3.03697458703,12036.4607348882],[79637e-11,1.80791287082,17260.1546546904],[85803e-11,5.9832263126,161000.6857376741],[56963e-11,2.78430458592,6286.5989683404],[61148e-11,1.81839892984,7084.8967811152],[69627e-11,.83297621398,9437.762934887],[56116e-11,4.38694865354,14143.4952424306],[62449e-11,3.97763912806,8827.3902698748],[51145e-11,.28306832879,5856.4776591154],[55577e-11,3.47006059924,6279.5527316424],[41036e-11,5.36817592855,8429.2412664666],[51605e-11,1.33282739866,1748.016413067],[51992e-11,.18914947184,12139.5535091068],[49e-8,.48735014197,1194.4470102246],[392e-9,6.16833020996,10447.3878396044],[3557e-10,1.775968892,6812.766815086],[3677e-10,6.04133863162,10213.285546211],[36596e-11,2.56957481827,1059.3819301892],[33296e-11,.59310278598,17789.845619785],[35954e-11,1.70875808777,2352.8661537718],[40938e-11,2.39850938714,19651.048481098],[30047e-11,2.73975124088,1349.8674096588],[30412e-11,.44294464169,83996.84731811189],[23663e-11,.48473622521,8031.0922630584],[23574e-11,2.06528133162,3340.6124266998],[21089e-11,4.14825468851,951.7184062506],[24738e-11,.21484762138,3.5904286518],[25352e-11,3.16470891653,4690.4798363586],[22823e-11,5.22195230819,4705.7323075436],[21419e-11,1.42563910473,16730.4636895958],[21891e-11,5.55594302779,553.5694028424],[203e-9,.37133792946,283.8593188652]],Q=[[6283.0758499914,0,0],[.00206058863,2.67823455808,6283.0758499914],[4303419e-11,2.63512233481,12566.1516999828],[425264e-11,1.59046982018,3.523118349],[109017e-11,2.96631010675,1577.3435424478],[93479e-11,2.59211109542,18849.2275499742],[119305e-11,5.79555765566,26.2983197998],[72121e-11,1.13840581212,529.6909650946],[67784e-11,1.87453300345,398.1490034082],[6735e-10,4.40932832004,5507.5532386674],[59045e-11,2.88815790631,5223.6939198022],[55976e-11,2.17471740035,155.4203994342],[45411e-11,.39799502896,796.2980068164],[36298e-11,.46875437227,775.522611324],[28962e-11,2.64732254645,7.1135470008],[20844e-11,5.34138275149,.9803210682]],te=[[8721859e-11,1.07253635559,6283.0758499914],[99099e-10,3.14159265359,0],[294833e-11,.43717350256,12566.1516999828],[27338e-11,.05295636147,3.523118349],[16333e-11,5.18820215724,26.2983197998],[15745e-11,3.68504712183,155.4203994342],[9425e-11,.29667114694,18849.2275499742],[8938e-11,2.05706319592,77713.7714681205],[694e-10,.82691541038,775.522611324],[5061e-11,4.6624323168,1577.3435424478]],J=[[289058e-11,5.84173149732,6283.0758499914],[20712e-11,6.0498393902,12566.1516999828],[2962e-11,5.1956057957,155.4203994342],[2527e-11,3.14159265359,0],[1288e-11,4.7219761197,3.523118349]],ne=[[7714e-11,4.14117321449,6283.0758499914],[1016e-11,3.27573644241,12566.1516999828]];function T(v){let Y=0;for(const[$,A,j]of P)Y+=$*Math.cos(A+j*v);let m=1;for(const $ of[Q,te,J,ne]){m*=v;for(const[A,j,y]of $)Y+=A*m*Math.cos(j+y*v)}return Y}return{earthL:T}})(),W.calendar=(function(){const{earthL:P}=W["vsop-earth"]||{},{createLru:Q}=W.lru||{},te=["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"],J=["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"],ne=["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"];function T(l){return(285+15*l)%360}function v(l,h,c){const b=Math.floor((14-h)/12),x=l+4800-b,p=h+12*b-3;return c+Math.floor((153*p+2)/5)+365*x+Math.floor(x/4)-Math.floor(x/100)+Math.floor(x/400)-32045}function Y(l){const h=l+32044,c=Math.floor((4*h+3)/146097),b=h-Math.floor(146097*c/4),x=Math.floor((4*b+3)/1461),p=b-Math.floor(1461*x/4),I=Math.floor((5*p+2)/153);return{year:100*c+x-4800+Math.floor(I/10),month:I+3-12*Math.floor(I/10),day:p-Math.floor((153*I+2)/5)+1}}function m(l,h){for(let c=0;c<60;c++)if(c%10===l&&c%12===h)return c;return-1}function $(l){const h=(l%60+60)%60;return{index:h,stem:te[h%10],branch:J[h%12],name:te[h%10]+J[h%12]}}function A(l){return((l+49)%60+60)%60}function j(l){const h=l-2451545,c=h/36525,b=h/365250;let x=P(b)*180/Math.PI+180;x=(x%360+360)%360;const p=(5029.0966*c+1.11113*c*c-6e-6*c*c*c)/3600;x+=p,x-=.09033/3600;const I=(125.04452-1934.136261*c)*Math.PI/180,H=(280.4665+36000.7698*c)*Math.PI/180,he=(218.3165+481267.8813*c)*Math.PI/180,se=(-17.2*Math.sin(I)-1.32*Math.sin(2*H)-.23*Math.sin(2*he)+.21*Math.sin(2*I))/3600;x+=se;const qe=(357.52911+35999.05029*c-1537e-7*c*c)*Math.PI/180,Te=.016708634-42037e-9*c-1267e-10*c*c,Ae=1.000001018*(1-Te*Te)/(1+Te*Math.cos(qe+(1.914602-.004817*c)*(Math.PI/180)*Math.sin(qe)));return x-=20.4898/3600/(Ae||1),(x%360+360)%360}function y(l){const h=[[1900,-2.8],[1920,21.2],[1940,24.3],[1950,29.1],[1960,33.2],[1970,40.2],[1980,50.5],[1990,56.9],[2e3,63.8],[2010,66.1],[2020,69.4],[2030,72],[2050,80],[2100,110]];if(l<=h[0][0])return h[0][1];for(let c=1;c<h.length;c++)if(l<=h[c][0]){const[b,x]=h[c-1],[p,I]=h[c];return x+(I-x)*(l-b)/(p-b)}return h[h.length-1][1]}const k=8/24,re=7.7611/24,S=2425612+4/24;function M(l){return l<S?re:k}const i=Q({max:4096,name:"termInstant"}),d=1e-5,a=new Map,r=365.2422;function u(l,h){const c=T(h),b=v(l,1,5)-.5+h*15.2184,x=a.get(h);let p=x!==void 0?x+r:b;Math.abs(p-b)>20&&(p=b);for(let H=0;H<12;H++){let he=c-j(p);if(he=((he+180)%360+360)%360-180,p+=he/.98564736,Math.abs(he)<d)break}a.set(h,p);const I=p-y(l)/86400;return I+M(I)}function g(l,h){const c=l*24+h,b=i.get(c);if(b!==void 0)return b;const x=u(l,h);return i.set(c,x),x}function _(l){const h=Math.floor(l+.5),c=l+.5-h,b=Math.round(c*1440),{year:x,month:p,day:I}=Y(h);return{year:x,month:p,day:I,hour:Math.floor(b/60)%24,minute:b%60}}function K({year:l,month:h,day:c,hour:b=0,minute:x=0}){return v(l,h,c)-.5+(b*60+x)/1440}function R(l,h,c){const b=v(l,h,c)-v(l,1,1)+1,x=2*Math.PI*(b-81)/364;return 9.87*Math.sin(2*x)-7.53*Math.cos(x)-1.5*Math.sin(x)}const ee=Q({max:8,name:"termWindow"}),ue=Q({max:32,name:"termYear"}),ke=Array.from({length:24},(l,h)=>h),Me=ke.filter(l=>l%2===0);function Ne(l,h){const c=h?`${l}|jie`:`${l}|all`,b=ue.get(c);if(b)return b;if(h){const p=ue.get(`${l}|all`);if(p){const I=p.filter(H=>H.index%2===0);return ue.set(c,I),I}}const x=[];for(const p of h?Me:ke)x.push({year:l,index:p,name:ne[p],jd:g(l,p)});return x.sort((p,I)=>p.jd-I.jd),ue.set(c,x),x}function Oe(l,h={}){const c=h.jieOnly===!0,b=c?`${l}|jie`:l,x=ee.get(b);if(x)return x;const p=[...Ne(l-1,c),...Ne(l,c),...Ne(l+1,c)];return p.sort((I,H)=>I.jd-H.jd),ee.set(b,p),p}function _e(l){if(typeof l!="string"||l.length<2)return[];const h=te.indexOf(l[0]),c=J.indexOf(l[1]);if(h<0||c<0)return[];const b=m(h,c);if(b<0)return[];const x=Math.floor(b/10)*10;return[J[(x+10)%12],J[(x+11)%12]]}function Ge(l,h){let c=null;for(const b of l)if(b.index%2===0)if(b.jd<=h)c=b;else break;return c}function q(l,h){for(const c of l)if(c.index%2===0&&c.jd>h)return c;return null}function V(l){const h=_(l),c=b=>String(b).padStart(2,"0");return`${h.year}-${c(h.month)}-${c(h.day)} ${c(h.hour)}:${c(h.minute)}`}function F(){return[i.stats(),ue.stats(),ee.stats()]}return{STEMS:te,BRANCHES:J,TERM_NAMES:ne,termLongitude:T,toJDN:v,fromJDN:Y,sexagenaryIndex:m,ganzhiName:$,dayGanzhiIndex:A,sunLongitude:j,deltaTSeconds:y,OFFSET_MODERN:k,OFFSET_BEIJING_LOCAL:re,CUTOVER_JD:S,localOffsetFor:M,termInstantJd:g,jdToParts:_,partsToJd:K,equationOfTime:R,termWindow:Oe,xunKongOf:_e,previousJie:Ge,nextJie:q,formatJd:V,cacheMetrics:F}})(),W.lunar=(function(){const{toJDN:P,jdToParts:Q,termInstantJd:te,deltaTSeconds:J,localOffsetFor:ne,OFFSET_MODERN:T}=W.calendar||{},v=29.530588861,Y=245155009766e-5,m=Math.PI/180;function $(M){const i=M/1236.85,d=Y+v*M+15437e-8*i*i-15e-8*i*i*i+73e-11*i*i*i*i,a=1-.002516*i-74e-7*i*i,r=(2.5534+29.1053567*M-14e-7*i*i-11e-8*i*i*i)*m,u=(201.5643+385.81693528*M+.0107582*i*i+1238e-8*i*i*i-58e-9*i*i*i*i)*m,g=(160.7108+390.67050284*M-.0016118*i*i-227e-8*i*i*i+11e-9*i*i*i*i)*m,_=(124.7746-1.56375588*M+.0020672*i*i+215e-8*i*i*i)*m,K=-.4072*Math.sin(u)+.17241*a*Math.sin(r)+.01608*Math.sin(2*u)+.01039*Math.sin(2*g)+.00739*a*Math.sin(u-r)-.00514*a*Math.sin(u+r)+.00208*a*a*Math.sin(2*r)-.00111*Math.sin(u-2*g)-57e-5*Math.sin(u+2*g)+56e-5*a*Math.sin(2*u+r)-42e-5*Math.sin(3*u)+42e-5*a*Math.sin(r+2*g)+38e-5*a*Math.sin(r-2*g)-24e-5*a*Math.sin(2*u-r)-17e-5*Math.sin(_)-7e-5*Math.sin(u+2*r)+4e-5*Math.sin(2*u-2*g)+4e-5*Math.sin(3*r)+3e-5*Math.sin(u+r-2*g)+3e-5*Math.sin(2*u+2*g)-3e-5*Math.sin(u+r+2*g)+3e-5*Math.sin(u-r+2*g)-2e-5*Math.sin(u-r-2*g)-2e-5*Math.sin(3*u+r)+2e-5*Math.sin(4*u),R=d+K-J(2e3+i*100)/86400;return R+ne(R)}function A(M){return Math.floor(M+.5)}function j(M){const i=M-T;return i+ne(i)}function y(M){return Math.round((M+.5-Y)/v)}function k(M,i,d){for(let a=M-1;a<=M+1;a++)for(let r=1;r<24;r+=2){const u=j(te(a,r)),g=A(u);if(g>=i&&g<d)return{index:r,jd:u}}return null}function re(M,i,d){const a=P(M,i,d),r=A(j(te(M,23))),u=a<r?M-1:M,g=A(j(te(u,23)));let _=y(g);for(;A($(_))>g;)_--;for(;A($(_+1))<=g;)_++;const K=A(j(te(u+1,23)));let R=_;for(;A($(R+1))<=K;)R++;const ee=R-_;let ue=-1;if(ee===13)for(let Oe=1;Oe<=ee;Oe++){const _e=A($(_+Oe-1)),Ge=A($(_+Oe));if(!k(u,_e,Ge)){ue=Oe;break}}let ke=11,Me=!1,Ne=A($(_));for(let Oe=1;Oe<=15;Oe++){const _e=A($(_+Oe-1)),Ge=A($(_+Oe)),q=k(u,_e,Ge),V=Oe===ue;if(a>=_e&&a<Ge){const F=Q($(_+Oe-1)),l=V?(ke+10)%12+1:ke;return{year:u,lunarYear:Me?u+1:u,month:l,day:a-_e+1,isLeap:V,monthStart:`${F.year}-${String(F.month).padStart(2,"0")}-${String(F.day).padStart(2,"0")}`,hasZhongQi:!!q}}V||(ke=ke%12+1,ke===1&&(Me=!0)),Ne=Ge}throw new Error(`农历换算失败:${M}-${i}-${d}`)}function S(M,i,d){return P(M,i,d)}return{SYNODIC:v,newMoonJd:$,dayNumberOf:A,solarToLunar:re,monthStartJd:S}})(),W.geo=(function(){const P=`
4
4
  北京 116.41 39.90;上海 121.47 31.23;天津 117.20 39.13;重庆 106.55 29.56
5
5
  广州 113.26 23.13;深圳 114.06 22.55;珠海 113.58 22.27;东莞 113.75 23.02;佛山 113.12 23.02
6
6
  汕头 116.68 23.35;中山 113.39 22.52;惠州 114.42 23.11;江门 113.08 22.58;湛江 110.36 21.27
@@ -64,71 +64,72 @@ window.__ModuleLoader__.load({id:"dsh-metaphysics",chunk:"client.name.js",factor
64
64
  海口 110.20 20.04;三亚 109.51 18.25;儋州 109.58 19.52;琼海 110.47 19.26
65
65
  香港 114.17 22.32;澳门 113.55 22.20;台北 121.52 25.03;高雄 120.31 22.63;台中 120.68 24.14
66
66
  `,Q={河北:"石家庄",山西:"太原",内蒙古:"呼和浩特",辽宁:"沈阳",吉林:"长春",黑龙江:"哈尔滨",江苏:"南京",浙江:"杭州",安徽:"合肥",福建:"福州",江西:"南昌",山东:"济南",河南:"郑州",湖北:"武汉",湖南:"长沙",广东:"广州",广西:"南宁",海南:"海口",四川:"成都",贵州:"贵阳",云南:"昆明",西藏:"拉萨",陕西:"西安",甘肃:"兰州",青海:"西宁",宁夏:"银川",新疆:"乌鲁木齐",台湾:"台北"},te={石家庄:[114.51,38.04],太原:[112.55,37.87],沈阳:[123.43,41.8],长春:[125.32,43.82],哈尔滨:[126.53,45.8],南京:[118.8,32.06],杭州:[120.15,30.28],合肥:[117.23,31.82],福州:[119.3,26.08],南昌:[115.86,28.68],济南:[117,36.65],郑州:[113.62,34.75],武汉:[114.3,30.59],长沙:[112.94,28.23],广州:[113.26,23.13],南宁:[108.37,22.82],海口:[110.2,20.04],成都:[104.07,30.67],贵阳:[106.63,26.65],昆明:[102.83,24.88],拉萨:[91.13,29.65],西安:[108.94,34.34],兰州:[103.83,36.06],西宁:[101.78,36.62],银川:[106.23,38.49],乌鲁木齐:[87.62,43.82],台北:[121.52,25.03]},J=(()=>{const A={};for(const j of P.trim().split(`
67
- `))for(const y of j.split(";")){const k=y.trim().split(/\s+/);if(k.length!==3)continue;const[re,S,M]=k;A[re]={lon:Number(S),lat:Number(M)}}for(const[j,[y,k]]of Object.entries(te))A[j]||(A[j]={lon:y,lat:k});return A})(),ne=/(省|市|地区|盟|自治州|自治县|自治区|特别行政区|县|区|镇|乡|街道|村|小区|社区)/g;function T(A){const j=String(A||"").trim();if(!j)return null;const y=Number(j);if(Number.isFinite(y)&&/^-?\d+(\.\d+)?$/.test(j)&&y>=60&&y<=150)return{lon:y,lat:null,matched:`${y}°E`,level:"经度",note:"按你输入的经度计算"};const k=j.replace(/\s/g,"").replace(ne,""),re=Object.keys(J).sort((M,i)=>i.length-M.length);for(const M of re)if(k.includes(M)){const i=J[M];return{lon:i.lon,lat:i.lat,matched:M,level:"地级市",note:`按 ${M} 估算(约 ${i.lon}°E)`}}const S=j.replace(/\s/g,"");for(const[M,i]of Object.entries(Q)){const d=S.indexOf(M);if(d<0)continue;const a=S.charAt(d+M.length);if(a==="区"||a==="县")continue;const r=J[i]||{lon:te[i][0],lat:te[i][1]};return{lon:r.lon,lat:r.lat,matched:i,level:"省会",note:`未匹配到具体城市,按 ${M} 省会 ${i} 估算(约 ${r.lon}°E)`}}return{lon:null,lat:null,matched:null,level:"未匹配",note:`没查到「${j}」,可改填经度(如 116.4)`}}const v=/(区|县|镇|乡|村|小区|街道|路|号|巷|弄|组|队)/,Y="dsh-metaphysics/0.23.0 (+https://github.com/xuanfu-web/dsh-metaphysics)";async function m(A,{timeoutMs:j=2500}={}){if(typeof fetch!="function")return null;let y=null;try{const k=typeof AbortController=="function"?new AbortController:null;k&&(y=setTimeout(()=>k.abort(),j));const re="https://nominatim.openstreetmap.org/search?format=jsonv2&limit=1&accept-language=zh-CN&countrycodes=cn&q="+encodeURIComponent(A),S=await fetch(re,{signal:k?k.signal:void 0,headers:{"User-Agent":Y}});if(!S||!S.ok)return null;const M=await S.json();if(!Array.isArray(M)||M.length===0)return null;const i=M[0],d=Number(i.lon),a=Number(i.lat);return Number.isFinite(d)?{lon:d,lat:a,matched:i.display_name,level:"在线",note:`在线解析:${i.display_name}`}:null}catch{return null}finally{y&&clearTimeout(y)}}async function $(A,j={}){const y=T(A),k=String(A||"").trim();if(!k||!(j.online===!0)||y&&typeof y.lon=="number"&&!v.test(k))return y;const S=await m(k,j);return S?{...S,local:y&&y.lon!=null?y:null}:y&&typeof y.lon=="number"?{...y,onlineFailed:!0,note:`${y.note}(联网解析失败或超时,已退回内置坐标表)`}:{...y,onlineFailed:!0}}return{CITIES:J,PROVINCES:Q,resolveAddress:T,geocodeAddress:$}})(),W.random=(function(){function P(J){let ne=Number(J)>>>0;return ne||(ne=2654435769),function(){ne=ne+1831565813>>>0;let v=ne;return v=Math.imul(v^v>>>15,v|1),v^=v+Math.imul(v^v>>>7,v|61),((v^v>>>14)>>>0)/4294967296}}function Q(J){if(J==null||J==="")return Math.random;const ne=Number(J);return Number.isFinite(ne)?P(ne):Math.random}function te(J){return J==null||J===""?!0:Number.isFinite(Number(J))}return{mulberry32:P,randomOf:Q,isSeed:te}})(),W.dst=(function(){const{daysInMonth:P}=W.validate||{},Q={1986:["1986-05-04","1986-09-14"],1987:["1987-04-12","1987-09-13"],1988:["1988-04-10","1988-09-11"],1989:["1989-04-16","1989-09-17"],1990:["1990-04-15","1990-09-16"],1991:["1991-04-14","1991-09-15"]},te=(v,Y,m)=>v*1e4+Y*100+m;function J(v){const Y=Q[v.year];if(!Y)return!1;const[m,$,A]=Y[0].split("-").map(Number),[j,y,k]=Y[1].split("-").map(Number),re=te(v.year,v.month,v.day);if(re<te(m,$,A)||re>te(j,y,k))return!1;const S=v.hour*60+(v.minute||0);return!(re===te(m,$,A)&&S<120||re===te(j,y,k)&&S>=120)}function ne(v){const Y=v.minute||0;if(!J(v))return{year:v.year,month:v.month,day:v.day,hour:v.hour,minute:Y,applied:!1,note:null};let{year:m,month:$,day:A,hour:j}=v;return j-=1,j<0&&(j+=24,A-=1,A<1&&($-=1,$<1&&($=12,m-=1),A=P(m,$))),{year:m,month:$,day:A,hour:j,minute:Y,applied:!0,note:`检出自 ${Q[v.year][0]} 至 ${Q[v.year][1]} 的中国夏令时:出生钟面时间已减 1 小时校正`}}function T(v,Y){const m=Array.isArray(v)?v.slice():[];return Y&&Y.applied&&Y.note&&m.push(Y.note),m}return{DST_SPANS:Q,inDstSpan:J,applyDst:ne,withDstNote:T}})(),W.shensha=(function(){const{BRANCHES:P}=W.calendar||{},{sanheGroupOf:Q}=W.sanhe||{},te=["year","month","day","hour"],J={year:"年柱",month:"月柱",day:"日柱",hour:"时柱"},ne=["贵人","文星","婚姻","性情","事业","凶煞","格局"],T=["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"],v={year:"年干",month:"月干",day:"日干",hour:"时干"},Y={year:"年支",month:"月支",day:"日支",hour:"时支"},m=O=>{const f=Q(O);return f?f.branches.join(""):void 0},$={亥子丑:["寅","戌"],寅卯辰:["巳","丑"],巳午未:["申","辰"],申酉戌:["亥","未"]},A=O=>Object.keys($).find(f=>f.includes(O)),j={寅:"春",卯:"春",辰:"春",巳:"夏",午:"夏",未:"夏",申:"秋",酉:"秋",戌:"秋",亥:"冬",子:"冬",丑:"冬"},y=O=>({kind:"branch",ch:O}),k=O=>({kind:"stem",ch:O}),re=O=>({kind:"gz",ch:O}),S={甲:["丑","未"],戊:["丑","未"],庚:["丑","未"],乙:["子","申"],己:["子","申"],丙:["亥","酉"],丁:["亥","酉"],辛:["午","寅"],壬:["卯","巳"],癸:["卯","巳"]},M={甲:["子","午"],乙:["子","午"],丙:["卯","酉"],丁:["卯","酉"],戊:["辰","戌","丑","未"],己:["辰","戌","丑","未"],庚:["寅","亥"],辛:["寅","亥"],壬:["巳","申"],癸:["巳","申"]},i={寅:"丁",卯:"申",辰:"壬",巳:"辛",午:"亥",未:"甲",申:"癸",酉:"寅",戌:"丙",亥:"乙",子:"巳",丑:"庚"},d={寅午戌:"丙",申子辰:"壬",亥卯未:"甲",巳酉丑:"庚"},a={丙:"辛",壬:"丁",甲:"己",庚:"乙"},r={甲:["寅","子"],丙:["寅","子"],乙:["卯","丑"],癸:["卯","丑"],丁:["酉"],戊:["申"],己:["未"],庚:["午"],辛:["巳"],壬:["辰"]},u={甲:["未"],乙:["辰"],丙:["巳"],丁:["酉"],戊:["戌"],己:["卯"],庚:["亥"],辛:["申"],壬:["午"],癸:["寅"]},g={甲:["戌"],乙:["亥"],丙:["丑"],丁:["寅"],戊:["丑"],己:["寅"],庚:["辰"],辛:["巳"],壬:["未"],癸:["申"]},_={甲:["巳"],乙:["午"],丙:["巳"],丁:["午"],戊:["申"],己:["酉"],庚:["亥"],辛:["子"],壬:["寅"],癸:["卯"]},K={寅:"丑",卯:"寅",辰:"卯",巳:"辰",午:"巳",未:"午",申:"未",酉:"申",戌:"酉",亥:"戌",子:"亥",丑:"子"},R={甲:["巳"],乙:["午"],丙:["申"],丁:["酉"],戊:["申"],己:["酉"],庚:["亥"],辛:["子"],壬:["寅"],癸:["卯"]},ee={寅午戌:["丙","丁","戊","癸"],申子辰:["壬","癸","戊","己","丙","辛","甲","己"],巳酉丑:["庚","辛","乙"],亥卯未:["甲","乙","丁","壬"]},ue={寅午戌:["卯"],申子辰:["酉"],巳酉丑:["午"],亥卯未:["子"]},je={寅午戌:["午"],申子辰:["子"],巳酉丑:["酉"],亥卯未:["卯"]},Ae={寅午戌:["戌"],申子辰:["辰"],巳酉丑:["丑"],亥卯未:["未"]},ze={寅午戌:["申"],申子辰:["寅"],巳酉丑:["亥"],亥卯未:["巳"]},ve={寅午戌:["亥"],申子辰:["巳"],巳酉丑:["寅"],亥卯未:["申"]},Re={寅午戌:["子"],申子辰:["午"],巳酉丑:["卯"],亥卯未:["酉"]},Pe={寅午戌:["巳"],申子辰:["亥"],巳酉丑:["申"],亥卯未:["寅"]},q={甲:["辰"],乙:["巳"],丙:["未"],丁:["申"],戊:["未"],己:["申"],庚:["戌"],辛:["亥"],壬:["丑"],癸:["寅"]},V={甲:["寅"],乙:["卯"],丙:["巳"],丁:["午"],戊:["巳"],己:["午"],庚:["申"],辛:["酉"],壬:["亥"],癸:["子"]},F={甲:["卯"],乙:["辰"],丙:["午"],丁:["未"],戊:["午"],己:["未"],庚:["酉"],辛:["戌"],壬:["子"],癸:["丑"]},l={甲:["酉"],乙:["戌"],丙:["子"],丁:["丑"],戊:["子"],己:["丑"],庚:["卯"],辛:["辰"],壬:["午"],癸:["未"]},h={甲:["酉"],乙:["戌"],丙:["未"],丁:["申"],戊:["巳"],己:["午"],庚:["辰"],辛:["卯"],壬:["亥"],癸:["寅"]},c=["庚辰","庚戌","壬辰","戊戌"],b=["甲寅","丙辰","戊辰","庚辰","壬戌"],x=["丁酉","丁亥","癸巳","癸卯"],p=["丙午","丁未","戊子","戊午","己丑","己未"],I=["甲辰","乙巳","丙申","丁亥","戊戌","己丑","庚辰","辛巳","壬申","癸亥"],H=["丙子","丁丑","戊寅","辛卯","壬辰","癸巳","丙午","丁未","戊申","辛酉","壬戌","癸亥"],he={春:"戊寅",夏:"甲午",秋:"戊申",冬:"甲子"},se={春:["庚申","辛酉"],夏:["壬子","癸亥"],秋:["甲寅","乙卯"],冬:["丙午","丁巳"]},xe={春:["寅","子"],秋:["寅","子"],夏:["卯","未","辰"],冬:["卯","未","辰"]},Oe=["甲戊庚","乙丙丁","壬癸辛"],Ne=["乙丑","己巳","癸酉"];function Se(O,f,G,L,ae,we=["day"]){return{name:O,cat:f,luck:G,rule:L,refs:we,refKind:"stem",targets:(z,be)=>(ae[z.pillars[be].stem]||[]).map(y)}}function ye(O,f,G,L,ae,we=["year","day"]){return{name:O,cat:f,luck:G,rule:L,refs:we,refKind:"branch",targets:(z,be)=>{const fe=m(z.pillars[be].branch);return fe&&ae[fe]?ae[fe].map(y):[]}}}function Me(O,f,G,L,ae,we="year"){return{name:O,cat:f,luck:G,rule:L,refs:[we],refKind:"branch",viaLabel:Y[we],targets:z=>ae(z)}}function E(O,f,G,L,ae,we){return{name:O,cat:f,luck:G,rule:L,refs:["month"],refKind:"branch",viaLabel:"月支",slots:we,targets:z=>ae(z)}}function ie(O,f,G,L,ae,we="day"){return{name:O,cat:f,luck:G,rule:L,refs:[we],refKind:"branch",viaLabel:J[we],slots:[we],targets:(z,be)=>ae.includes(z.pillars[be].ganzhi)?[re(z.pillars[be].ganzhi)]:[]}}const ce=[Se("天乙贵人","贵人","good","甲戊庚见丑未,乙己见子申,丙丁见亥酉,辛见午寅,壬癸见卯巳(年干、日干查四支)",S,["year","day"]),Se("太极贵人","贵人","good","甲乙见子午,丙丁见卯酉,戊己见辰戌丑未,庚辛见寅亥,壬癸见巳申(年干、日干查四支)",M,["year","day"]),E("天德贵人","贵人","good","正月丁、二月申、三月壬、四月辛、五月亥、六月甲、七月癸、八月寅、九月丙、十月乙、冬月巳、腊月庚(月支查干或支)",O=>{const f=i[O.pillars.month.branch];return f?T.includes(f)?[k(f)]:[y(f)]:[]}),E("月德贵人","贵人","good","寅午戌月见丙,申子辰月见壬,亥卯未月见甲,巳酉丑月见庚(月支查天干)",O=>{const f=m(O.pillars.month.branch);return f&&d[f]?[k(d[f])]:[]}),E("月德合","贵人","good","月德之合干:丙见辛、壬见丁、甲见己、庚见乙(月支定月德后查天干)",O=>{const f=m(O.pillars.month.branch),G=f&&d[f]?a[d[f]]:null;return G?[k(G)]:[]}),Se("福星贵人","贵人","good","甲丙见寅子,乙癸见卯丑,丁见酉、戊见申、己见未、庚见午、辛见巳、壬见辰(年干、日干查四支)",r,["year","day"]),Se("天官贵人","贵人","good","甲未、乙辰、丙巳、丁酉、戊戌、己卯、庚亥、辛申、壬午、癸寅(年干、日干查四支;此表流派有异)",u,["year","day"]),Se("国印贵人","贵人","good","甲戌、乙亥、丙丑、丁寅、戊丑、己寅、庚辰、辛巳、壬未、癸申(年干、日干查四支)",g,["year","day"]),Se("天厨贵人","贵人","good","食神之禄:甲巳、乙午、丙巳、丁午、戊申、己酉、庚亥、辛子、壬寅、癸卯(日干查四支)",_,["day"]),E("天医","贵人","good","月支退一位:寅月见丑、卯月见寅……丑月见子(月支查四支)",O=>{const f=K[O.pillars.month.branch];return f?[y(f)]:[]}),Se("文昌贵人","文星","good","甲巳、乙午、丙申、丁酉、戊申、己酉、庚亥、辛子、壬寅、癸卯(年干、日干查四支)",R,["year","day"]),E("德秀贵人","文星","good","寅午戌月德丙丁、秀戊癸;申子辰月德壬癸戊己、秀丙辛甲己;巳酉丑月德庚辛、秀乙庚;亥卯未月德甲乙、秀丁壬(月支查天干)",O=>{const f=m(O.pillars.month.branch);return f&&ee[f]?ee[f].map(k):[]}),ye("桃花","婚姻","neutral","寅午戌见卯、申子辰见酉、巳酉丑见午、亥卯未见子(年支、日支双查)",ue),Me("红鸾","婚姻","good","卯起子逆数:子见卯、丑见寅、寅见丑、卯见子……(年支查四支)",O=>{const f=P.indexOf(O.pillars.year.branch);return[y(P[((3-f)%12+12)%12])]}),Me("天喜","婚姻","good","红鸾对冲之位:子见酉、丑见申、寅见未……(年支查四支)",O=>{const G=((3-P.indexOf(O.pillars.year.branch))%12+12)%12;return[y(P[(G+6)%12])]}),Me("孤辰","婚姻","bad","亥子丑年见寅、寅卯辰年见巳、巳午未年见申、申酉戌年见亥(年支查四支)",O=>{const f=A(O.pillars.year.branch);return f?[y($[f][0])]:[]}),Me("寡宿","婚姻","bad","亥子丑年见戌、寅卯辰年见丑、巳午未年见辰、申酉戌年见未(年支查四支)",O=>{const f=A(O.pillars.year.branch);return f?[y($[f][1])]:[]}),Se("金舆","婚姻","good","禄前二位:甲龙乙蛇丙戊羊、丁己申宫庚犬乡、辛猪壬牛癸虎位(日干查四支)",q,["day"]),ye("华盖","性情","neutral","寅午戌见戌、申子辰见辰、巳酉丑见丑、亥卯未见未(年支、日支双查)",Ae),Se("羊刃","性情","bad","禄前一位:甲卯、乙辰、丙戊午、丁己未、庚酉、辛戌、壬子、癸丑(日干查四支;阳干论刃为主)",F,["day"]),Se("飞刃","性情","bad","羊刃六冲:甲酉、乙戌、丙子、丁丑、戊子、己丑、庚卯、辛辰、壬午、癸未(日干查四支)",l,["day"]),ie("魁罡","性情","neutral","日柱庚辰、庚戌、壬辰、戊戌(日柱见之)",c),E("童子煞","性情","neutral","春秋生见寅子,冬夏生见卯未辰(取季节口诀,查日支、时支;另有纳音五行一法,流派多歧,仅作参考)",O=>{const f=j[O.pillars.month.branch],G=f&&xe[f];return G?G.map(y):[]},["day","hour"]),ie("六秀日","性情","good","日柱丙午、丁未、戊子、戊午、己丑、己未(日柱见之)",p),ie("日德","性情","good","日柱甲寅、丙辰、戊辰、庚辰、壬戌(日柱见之)",b),ie("日贵","性情","good","日柱丁酉、丁亥、癸巳、癸卯(日柱见之)",x),Se("禄神","事业","good","甲寅、乙卯、丙戊巳、丁己午、庚申、辛酉、壬亥、癸子(日干查四支)",V,["day"]),ye("将星","事业","good","寅午戌见午、申子辰见子、巳酉丑见酉、亥卯未见卯(年支、日支双查)",je),ye("驿马","事业","neutral","寅午戌见申、申子辰见寅、巳酉丑见亥、亥卯未见巳(年支、日支双查)",ze),ye("劫煞","凶煞","bad","寅午戌见亥、申子辰见巳、巳酉丑见寅、亥卯未见申(年支、日支双查)",ve),ye("灾煞","凶煞","bad","寅午戌见子、申子辰见午、巳酉丑见卯、亥卯未见酉(年支、日支双查)",Re),ye("亡神","凶煞","bad","寅午戌见巳、申子辰见亥、巳酉丑见申、亥卯未见寅(年支、日支双查)",Pe),{name:"空亡",cat:"凶煞",luck:"bad",rule:"以日柱所在旬的空亡反查各柱地支(日柱旬空)",refs:["day"],refKind:"branch",viaLabel:"日柱旬空",targets:O=>(O.kongwang||[]).map(y)},ie("十恶大败","凶煞","bad","日柱甲辰、乙巳、丙申、丁亥、戊戌、己丑、庚辰、辛巳、壬申、癸亥(日柱见之)",I),ie("阴差阳错","凶煞","bad","日柱丙子、丁丑、戊寅、辛卯、壬辰、癸巳、丙午、丁未、戊申、辛酉、壬戌、癸亥(日柱见之)",H),E("四废日","凶煞","bad","春庚申辛酉、夏壬子癸亥、秋甲寅乙卯、冬丙午丁巳(月支定季节查日柱)",O=>{const f=j[O.pillars.month.branch],G=O.pillars.day.ganzhi;return f&&se[f].includes(G)?[re(G)]:[]},["day"]),Se("流霞","凶煞","bad","甲酉、乙戌、丙未、丁申、戊巳、己午、庚辰、辛卯、壬亥、癸寅(日干查四支;通行表)",h,["day"]),E("天赦日","格局","good","春戊寅、夏甲午、秋戊申、冬甲子(月支定季节查日柱)",O=>{const f=j[O.pillars.month.branch],G=O.pillars.day.ganzhi;return f&&he[f]===G?[re(G)]:[]},["day"]),ie("金神","格局","neutral","时柱乙丑、己巳、癸酉(时柱见之;严格成格另需日主身旺,此仅记星)",Ne,"hour"),{name:"天罗",cat:"凶煞",luck:"bad",rule:"四支见戌、亥俱全(戌亥为天罗)",custom:O=>ge(O,["戌","亥"])},{name:"地网",cat:"凶煞",luck:"bad",rule:"四支见辰、巳俱全(辰巳为地网)",custom:O=>ge(O,["辰","巳"])},{name:"三奇贵人",cat:"格局",luck:"good",rule:"年月日或月日时天干依序为甲戊庚(天上)、乙丙丁(地下)、壬癸辛(人中)",custom:O=>{const f=[];for(const G of[["year","month","day"],["month","day","hour"]]){const L=G.map(ae=>O.pillars[ae].stem).join("");Oe.includes(L)&&f.push({pillars:G.slice(),via:"三柱天干",target:L})}return f}}];function ge(O,f){const G=te.filter(L=>f.includes(O.pillars[L].branch));return G.length<f.length?[]:[{pillars:G,via:"四支",target:f.join("")}]}function oe(O,f){return f.kind==="stem"?O.stem===f.ch:f.kind==="branch"?O.branch===f.ch:O.ganzhi===f.ch}function Z(O,f){if(O.custom)return O.custom(f);const G=[];for(const L of O.refs){const ae=O.targets(f,L)||[];if(!ae.length)continue;const we=O.viaLabel||(O.refKind==="stem"?v:Y)[L];for(const z of O.slots||te){const be=f.pillars[z];for(const fe of ae)oe(be,fe)&&G.push({pillars:[z],via:we,target:fe.ch})}}return G}function D(O,f=[]){const G={pillars:O,kongwang:f},L=[];for(const z of ce){const be=Z(z,G);if(!be.length)continue;const fe={name:z.name,cat:z.cat,luck:z.luck,rule:z.rule,pillars:[],via:new Set,target:new Set};for(const Ye of be){for(const Fe of Ye.pillars)fe.pillars.includes(Fe)||fe.pillars.push(Fe);Ye.via&&fe.via.add(Ye.via),Ye.target&&fe.target.add(Ye.target)}fe.pillars.sort((Ye,Fe)=>te.indexOf(Ye)-te.indexOf(Fe)),L.push(fe)}L.sort((z,be)=>ne.indexOf(z.cat)-ne.indexOf(be.cat));const ae={year:[],month:[],day:[],hour:[]};for(const z of L)for(const be of z.pillars)ae[be].push({name:z.name,cat:z.cat,luck:z.luck,via:[...z.via].join("、"),target:[...z.target].join("、"),rule:z.rule});const we=[];for(const z of ne){const be=L.filter(fe=>fe.cat===z);be.length&&we.push({cat:z,items:be.map(fe=>({name:fe.name,cat:fe.cat,luck:fe.luck,pillars:fe.pillars.slice(),via:[...fe.via].join("、"),target:[...fe.target].join("、"),rule:fe.rule}))})}return{detail:ae,groups:we,names:L.map(z=>z.name),count:L.reduce((z,be)=>z+be.pillars.length,0)}}const de=ce.reduce((O,f)=>(O[f.name]={cat:f.cat,luck:f.luck,rule:f.rule},O),{});return{PILLAR_KEYS:te,PILLAR_LABEL:J,CATEGORY_ORDER:ne,computeBaziShensha:D,RULE_TABLE:de}})(),W.tiaohou=(function(){const P={甲:"木",乙:"木",丙:"火",丁:"火",戊:"土",己:"土",庚:"金",辛:"金",壬:"水",癸:"水"},Q={亥:-1.8,子:-2,丑:-1.5,寅:-.4,卯:.2,辰:.5,巳:1.3,午:2,未:1.5,申:.6,酉:.2,戌:-.2},te={亥:"初冬",子:"仲冬",丑:"季冬",寅:"初春",卯:"仲春",辰:"季春",巳:"初夏",午:"仲夏",未:"季夏",申:"初秋",酉:"仲秋",戌:"季秋"},J={丑:1,辰:1,子:.6,亥:.5},ne={未:1,戌:1,午:.4,巳:.4},T={寒湿:{element:"火",stem:"丙",avoid:"水",why:"冻土要太阳来解,水再多只会更冷"},寒燥:{element:"火",stem:"丙",avoid:"水",why:"天寒地干,先要一点阳和之气"},寒:{element:"火",stem:"丙",avoid:"水",why:"冬令气寒,非火不暖"},温热:{element:"水",stem:"壬",avoid:"火",why:"火气初旺,得水润泽才好用"},燥热:{element:"水",stem:"壬",avoid:"火",why:"火炎土燥,非水不润"},热:{element:"水",stem:"壬",avoid:"火",why:"夏令炎威,先求一泓清水"},湿滞:{element:"火",stem:"丙",avoid:"水",why:"湿气郁结,要火来蒸腾"},燥:{element:"水",stem:"壬",avoid:"火",why:"气燥不润,得水则舒"},平和:{element:null,stem:null,avoid:null,why:"寒暖相济,气候不是这一盘的主要矛盾"}},v={寒湿:"寒湿",寒燥:"寒燥",寒:"寒",温热:"温热",燥热:"燥热",热:"热",湿滞:"湿滞",燥:"燥",平和:"平和"},Y={寒湿:{木:"木是花草藤萝,冰封的土里抽不出芽——它不缺雨水,缺的是一轮太阳",火:"火在冬天最怕被水浇,一点火苗要护住,才谈得上发光",土:"土冻成一块,再厚也长不出东西,得先晒透",金:"金在寒水里泡久了,锋刃会发滞,要火来炼一炼",水:"水本就冷,再加寒就是死水;要火把它烧活"},寒燥:{木:"木在干冷里最难熬,既缺暖气,又缺一点滋润",火:"火在寒天里要先活下来,才有余力照别人",土:"土冷而干,板结着,得暖气与一点水汽一起松",金:"金寒则脆,得火炼、得土养,才成器",水:"水在寒天里收得太紧,要一点火气化开"},寒:{木:"冬木先要暖,暖了才谈得上发荣",火:"火在冬天要护住,别被冷风吹散",土:"土寒不生物,先暖后养",金:"金寒则钝,得火则利",水:"水寒则滞,得火则行"},温热:{木:"木在暖和里长得快,但要防长得太急、根扎不深",火:"火得时令,容易旺过头,要留一点水来收",土:"土被火烤着,容易燥,得水润一润",金:"金在暖处容易软,需要一点水土把它养住",水:"水在暖处容易蒸干,要源头不断"},燥热:{木:"木被火烤着,叶子先焦,得先补水",火:"火已经够旺了,再添柴只会烧到自己",土:"土燥则裂,得水润、得木疏",金:"金在燥热里容易发烫变形,要水来淬",水:"水在燥热里最珍贵,一滴都不能浪费"},热:{木:"木在暑天要水,不然只长叶不结果",火:"火已经当令,收着用比放出去更划算",土:"土热则燥,得水则安",金:"金在暑天要水来洗,才见光泽",水:"水在暑天是命脉,要保住源头"},湿滞:{木:"木泡在水里会烂根,先要疏土透气",火:"火在湿气里点不着,得先除湿",土:"土湿成泥,得火蒸腾、得木来疏",金:"金埋在湿土里会生锈,要见火见光",水:"水已经太多,再添就是泛滥"},燥:{木:"木在燥气里容易枯,先要一点水",火:"火在燥处容易失控,要收",土:"土燥不毛,得水润、得木疏",金:"金在燥处要水来洗,才不刺手",水:"水在燥处最容易被耗干,要护住"},平和:{木:"寒暖还算相济,木有生长的余地",火:"气候不偏,火可以按自己的节奏用",土:"土不燥不湿,能养也能载",金:"金不寒不燥,成器只差打磨",水:"水不冰不涸,能流得动"}},m=k=>Math.round(k*100)/100;function $({monthBranch:k,dayStem:re,wuxing:S={},branches:M=[]}){const i=Number(S.火||0),d=Number(S.水||0);let a=0,r=0,u=0,g=0;for(const F of M)J[F]&&(a+=J[F],(F==="丑"||F==="辰")&&(u+=1)),ne[F]&&(r+=ne[F],(F==="未"||F==="戌")&&(g+=1));const _=Q[k]??0,K=m(_+.45*i-.4*d),R=m(a-r+.25*d-.25*i),ee=K<=-.8,ue=K>=.9,je=R>=.8,Ae=R<=-.8;let ze="平和";ee&&je?ze="寒湿":ee&&Ae?ze="寒燥":ee?ze="寒":ue&&Ae?ze="燥热":ue?ze="温热":ue&&R>=.8?ze="湿滞":Ae?ze="燥":je&&(ze="湿滞");const ve=T[ze]||T.平和,Re=P[re]||"土",Pe=[`${te[k]||k}${k}月`,`火${i}`,`水${d}`,u?`湿土${u}处`:"",g?`燥土${g}处`:""].filter(Boolean),q=Math.abs(K)>=1.2||Math.abs(R)>=1.2?"调候优先":"扶抑为主",V=A({kind:ze,monthBranch:k,dayElement:Re,need:ve,temp:K,damp:R,fire:i,water:d});return{kind:ze,label:v[ze]||ze,temp:K,damp:R,cold:ee,hot:ue,wet:je,dry:Ae,need:ve.element?{element:ve.element,stem:ve.stem,why:ve.why}:null,avoidElement:ve.avoid,dayElement:Re,priority:q,evidence:Pe,narration:V}}function A({kind:k,monthBranch:re,dayElement:S,need:M,fire:i,water:d}){const a=(Y[k]||Y.平和)[S]||"",r=te[re]||"",u=`${r||""}${re}月出生,全局火${i}、水${d},这一盘的气候是「${v[k]||k}」`;return M.element?`${u}。${a}。所以这一局要的不是更多的${k.includes("寒")?"水":"火"},而是${M.stem}${M.element}——${M.why}。`:`${u}。${a}。调候不是这一盘的主要矛盾,取用仍以扶抑为主,寒暖只作微调。`}function j(k,re=[],S=[]){if(!k||!k.need)return{clash:!1,text:"气候平和,按扶抑取用即可。"};const M=k.need.element,i=re.includes(M),d=S.includes(M);return i&&!d?{clash:!1,text:`调候要${k.need.stem}${M},扶抑也以${M}为喜——两套取法同向,不必取舍。`}:{clash:!0,text:`调候要${k.need.stem}${M},扶抑却把${M}列为${d?"忌":"闲"};两者不一致,本盘按调候优先取${M},扶抑次之——因为寒暖失衡时,再补强弱也难受。`}}function y(k){if(!k)return"";const re=(k.evidence||[]).join("、"),S=k.need?`调候取${k.need.stem}${k.need.element}(${k.need.why}),忌${k.avoidElement}。`:"气候平和,调候不作主取。";return`${k.label}(${re})。${k.narration}${S}${k.priority==="调候优先"?" 本盘调候优先于扶抑。":""}`}return{judgeClimate:$,arbitrate:j,climateText:y}})(),W.qiongtong=(function(){const P=["寅","卯","辰","巳","午","未","申","酉","戌","亥","子","丑"],Q=["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],te="https://www.luckclub.cn/bazi/004/",J="用神顺序据通行整理表,原文摘句照录;各版本有异文,按条目 note 标注待核处。",ne={甲:[{b:"寅",m:"正月",y:"丙癸",q:"正月甲木,初春尚有余寒,得丙癸逢,富贵双全。癸藏丙透,名寒木向阳,主大富贵。倘风水不及,亦不失儒林俊秀。如无丙癸,平常人也。",ch:2,qs:"丙癸"},{b:"卯",m:"二月",y:"庚丙丁戊己",q:"或二月甲木,庚金得所者,名阳刃架煞,可许异途小贵,若武职便显,但要财资煞,柱中逢财,英雄独压万人,若见癸水,困了财杀,主为光棍,重刃必定遭凶,煞重无凶,但性格横暴,正二月甲木,无从财化土之格。",ch:3,qs:"庚癸"},{b:"辰",m:"三月",y:"庚丁壬",q:"三月甲木,木气相竭。先取庚金,次用壬水。",ch:4,qs:"庚壬"},{b:"巳",m:"四月",y:"癸丁庚",q:"四月甲木退气,丙火司权,先癸后丁。",ch:5,qs:"丙癸丁"},{b:"午",m:"五月",y:"癸丁庚",q:"五六月甲木,木性虚焦,一理共推,五月先癸后丁,庚金次之。,或五月乏癸,用丁亦可,要运行地为佳。六月三伏生寒,丁火退气。先丁后庚,无癸亦可。",ch:6,qs:"癸丁庚"},{b:"未",m:"六月",y:"丁庚癸",q:"五六月甲木,木性虚焦,一理共推,五月先癸后丁,庚金次之。,或五月乏癸,用丁亦可,要运行地为佳。六月三伏生寒,丁火退气。先丁后庚,无癸亦可。",ch:6,qs:"癸丁庚"},{b:"申",m:"七月",y:"庚丁壬",q:"七月甲堪为戟,然非丁不能造庚,非庚不能造甲,丁庚两透,科甲可许。",ch:7,qs:"丁庚"},{b:"酉",m:"八月",y:"丁丙庚",q:"八月甲木,木囚金旺。丁火为先,次用丙火,庚金再次。",ch:8,qs:"丁丙庚"},{b:"戌",m:"九月",y:"庚甲丁壬癸",q:"九月甲木,木星凋零,独爱丁火壬癸滋扶。",ch:9,qs:"丁壬癸"},{b:"亥",m:"十月",y:"庚丁丙戊",q:"十月甲木,以庚为君,以丁为佐,丙火次之,忌壬水泛木,须戊土为制,故戊又次之。",ch:10,qs:"庚丁丙壬戊"},{b:"子",m:"十一月",y:"丁庚丙",q:"十一月甲木,木性生寒,丁先庚后,丙火佐之,癸水司权,为火金之病。",ch:11,qs:"丁庚丙癸"},{b:"丑",m:"十二月",y:"丁庚丙",q:"十二月甲木,天寒气冻,木性极寒,无发生之象。先用庚劈甲,方引丁火,始得木火有通明之象,故丁次之。",ch:12,qs:"庚丁"}],乙:[{b:"寅",m:"正月",y:"丙癸",q:"正月天气,犹有余寒,非丙不长,虽有癸润,恐凝寒气,故先用丙,癸次之。",ch:13,qs:"丙癸"},{b:"卯",m:"二月",y:"丙癸",q:"二月乙木,阳气渐升,木不寒矣,以丙为君,癸为臣,丙癸两透,不透庚金,大富大贵。",ch:14,qs:"丙癸庚"},{b:"辰",m:"三月",y:"癸丙戊",q:"三月乙木,阳气愈炽,先癸后丙",ch:15,qs:"癸丙"},{b:"巳",m:"四月",y:"癸",q:"四月乙木,巳宫自有丙火,戊取癸水为尊。四月乙木,专用癸水,丙火酌用,虽以庚辛佐癸,须辛透为清。",ch:16,qs:"丙戊癸庚辛"},{b:"午",m:"五月",y:"癸丙",q:"五月乙木,丁火司权,禾稼俱旱。上半月属阳,先癸次丙;下半月属阴,三伏生寒,丙癸齐用。柱多金水,丙火为先,余皆用癸水为先。",ch:17,qs:"丁癸丙"},{b:"未",m:"六月",y:"癸丙",q:"六月乙木,木性且寒,柱多金水,丙火为尊。支成水局,乙得无伤。癸水透干,大富大贵。无癸定作常人,运不行北,困苦一生。",ch:18,qs:"丙癸"},{b:"申",m:"七月",y:"丙癸己",q:"七月乙木,庚金乘令,庚虽输情于乙妹,怎奈干乙难合支庚。柱见庚多,乙难受载。或丙癸透干,又加己出埋金,丙癸己俱透,此格可云科甲,大富大贵",ch:19,qs:"庚丙癸己甲"},{b:"酉",m:"八月",y:"癸丙丁",q:"八月乙木,芝兰禾稼均退,以丹桂为乙木。在白露之后,桂蕊未开,专用癸水,以滋桂萼。若秋分后,桂花已开,又当向阳,宜先用丙,癸水次之,丙癸两透,科甲名臣。",ch:20,qs:"癸丙甲"},{b:"戌",m:"九月",y:"癸辛",q:"九月乙木,枝枯叶落,必赖癸水滋养。如见甲申时,名为藤萝繁甲,可秋可冬。",ch:21,qs:"癸甲"},{b:"亥",m:"十月",y:"丙戊",q:"十月乙木,丙不受气,壬水司令,丙为尊,或壬多,用戊土。",ch:22,qs:"丙壬戊"},{b:"子",m:"十一月",y:"丙",q:"十一月乙木,根叶寒冻,喜丙复一阳,用丙火解冻,斯花木有向阳之意,不宜癸水出干以冻花木,故专用丙火。",ch:23,qs:"丙癸"},{b:"丑",m:"十二月",y:"丙",q:"十二月乙木,木寒宜丙,有寒谷回春之象。得一丙透,无癸出破格,不特科甲,定主名臣显宦。丙火藏支,不过廪贡生员。干支无丙,一介寒儒。",ch:24,qs:"丙癸甲"}],丙:[{b:"寅",m:"正月",y:"壬庚",q:"正月三阳开泰,火气渐炎,取壬为尊,庚金为佐。壬庚两透,定许科甲,即壬透庚藏,虽不由科甲,恰有异途恩封",ch:25,qs:"壬庚甲"},{b:"卯",m:"二月",y:"壬己",q:"二月丙火,阳气舒升,专用壬水。",ch:26,qs:"壬"},{b:"辰",m:"三月",y:"壬甲",q:"三月火气渐炎,专用壬水,或支成土局,取甲为辅,壬不可离。",ch:27,qs:"壬甲"},{b:"巳",m:"四月",y:"壬癸庚",q:"四月丙火,建禄于巳,火势炎炎,宜专用壬水,解炎威之力,成既济之功。如无壬水,名孤阳失辅,难透清光,得庚发水源,方为有根之水。壬庚两透,不见戊己出干,号曰湖海汪洋,广映太阳,光辉显著,文明之象。",ch:28,qs:"壬庚戊己"},{b:"午",m:"五月",y:"壬庚",q:"五月丙火愈炎,得壬庚高透,方为上命。或一壬无庚,亦主贡监,还须好运。犹防戊己出干,丁壬化合,则为平人。即不透庚壬。或有申宫长生之水,济之坐禄之金,至妙,必入词林。又怕戊己杂乱,则为异路。",ch:29,qs:"壬庚戊己丁"},{b:"未",m:"六月",y:"壬庚",q:"六月丙火退气,三伏生寒,己土泄气,壬水为用,取庚辅佐。",ch:30,qs:"己壬庚"},{b:"申",m:"七月",y:"壬戊",q:"七月丙火,太阳转西,阳气渐衰。日近西山,见土皆晦。惟日照湖海,暮夜光天,故仍用壬水,辅映太阳光辉。",ch:31,qs:"壬"},{b:"酉",m:"八月",y:"壬癸",q:"八月丙火,日近黄昏,丙有余光,存于湖海,仍用壬水辅映。",ch:32,qs:"壬"},{b:"戌",m:"九月",y:"甲壬",q:"九月丙火,火气愈退,忌土晦光,必须先用甲木,次取壬水。",ch:33,qs:"甲壬"},{b:"亥",m:"十月",y:"甲戊庚壬",q:"十月丙火,太阳失令,得见甲戊庚齐透,科甲有准,风土不及,终成选拔,主为人性好清高,斯文领袖。",ch:34,qs:"甲戊庚"},{b:"子",m:"十一月",y:"壬戊己",q:"十一月丙火,冬至一阳生,弱中复强,壬水为最,戊土佐之。",ch:35,qs:"壬戊"},{b:"丑",m:"十二月",y:"壬甲",q:"十二月丙火,气进二阳,每雪欺霜,喜壬为用,己土司令,土多又不可少甲",ch:36,qs:"壬己甲"}],丁:[{b:"寅",m:"正月",y:"甲庚",q:"正月丁火,甲木当权,乃为母旺,非庚不能劈甲,何以引丁,先庚次壬。",ch:37,qs:"甲庚壬"},{b:"卯",m:"二月",y:"庚甲",q:"二月丁火,湿乙伤丁,先庚后甲,非庚不能去乙,非甲不能引丁。",ch:38,qs:"乙庚甲"},{b:"辰",m:"三月",y:"甲庚",q:"三月丁火,戊土司令,泄弱丁气,先用甲木引丁制土,次看庚金。",ch:39,qs:"戊甲庚"},{b:"巳",m:"四月",y:"甲庚",q:"四月丁火乘旺,虽取甲引丁,必须用庚劈甲,有庚伐甲、方云木火通明;甲多、又取庚为先。",ch:40,qs:"甲庚"},{b:"午",m:"五月",y:"壬庚癸",q:"五月丁火,时逢建禄,不得轻用甲木;遇干透隔位之壬,不贪丁合,忠而且孝。",ch:41,qs:"甲壬"},{b:"未",m:"六月",y:"甲壬庚",q:"六月丁火,阴柔退气,但值三伏生寒,丁弱极矣,专取甲木,壬水次之。",ch:42,qs:"甲壬"},{b:"申",m:"七月",y:"甲庚丙戊",q:"七月丁火,退气柔弱,端用甲木,金虽乘旺司权,无伤丁之理,仍取庚劈甲,为引火之物,或借丙暖金晒甲,不虑丙夺丁光,凡两丙夹丁者,夏月忌之,余月不忌,但此格少年困苦刑克中年富贵,必要地支见水制丙,方",ch:43,qs:"甲庚丙"},{b:"酉",m:"八月",y:"甲庚丙戊",q:"或八月一派辛金,不见庚金,又无比劫,比弃命从才,富而且贵,虽不科甲,亦有异途,从才者水为妻,不克,有正偏,木为子,不刑。或九月一派戊土,泄丁火之气,不见甲木,为伤官伤尽,非寻常可比,或甲木透出",ch:44,qs:"辛庚甲戊",note:"原文全章未见「丙」,此格按整理表录入,待以善本核对"},{b:"戌",m:"九月",y:"甲庚戊",q:"或八月一派辛金,不见庚金,又无比劫,比弃命从才,富而且贵,虽不科甲,亦有异途,从才者水为妻,不克,有正偏,木为子,不刑。或九月一派戊土,泄丁火之气,不见甲木,为伤官伤尽,非寻常可比,或甲木透出",ch:44,qs:"辛庚甲戊"},{b:"亥",m:"十月",y:"甲庚",q:"三冬丁火微寒,端用庚甲,甲乃庚之良友,凡用甲木,庚不可少,无庚无甲,何能引丁,难云木火通明,冬丁有甲,不怕水多金多,可称上格,甲庚两透,科甲分明,见己则否,己多合甲,则为常人。或一丙夺丁,必赖",ch:45,qs:"庚甲己丙"},{b:"子",m:"十一月",y:"甲庚",q:"或仲冬水多癸旺,金无比印,此作弃命从杀,亦有异途功名,见丁比出干,难合格局,常人,且主骨肉浮云,六亲流水,戊出破癸,颇有兄弟妻儿,此格用戊,火妻土子,用甲,水妻木子。或四柱多丙丁,又用癸制火,",ch:46,qs:"癸戊甲丙"},{b:"丑",m:"十二月",y:"甲庚",q:"或仲冬水多癸旺,金无比印,此作弃命从杀,亦有异途功名,见丁比出干,难合格局,常人,且主骨肉浮云,六亲流水,戊出破癸,颇有兄弟妻儿,此格用戊,火妻土子,用甲,水妻木子。或四柱多丙丁,又用癸制火,",ch:46,qs:"癸戊甲丙"}],戊:[{b:"寅",m:"正月",y:"丙甲癸",q:"正二月宜先透丙,三月宜先透甲,盖正二月虽有癸甲,无丙亦难除寒气,如风雨淹淹,万物生而不长,故无丙者,一生成败,富贵艰辛,或有丙无癸甲者,名曰春旱,如万物生而多厄,一生勤苦,劳而无功。",ch:48,qs:"丙甲癸辛"},{b:"卯",m:"二月",y:"丙甲癸",q:"正二月宜先透丙,三月宜先透甲,盖正二月虽有癸甲,无丙亦难除寒气,如风雨淹淹,万物生而不长,故无丙者,一生成败,富贵艰辛,或有丙无癸甲者,名曰春旱,如万物生而多厄,一生勤苦,劳而无功。",ch:48,qs:"丙甲癸辛"},{b:"辰",m:"三月",y:"甲丙癸",q:"三月戊土司令,不见丙甲癸者,愚而且贱,甲癸透者、科甲;两癸透者、生员。丙透甲藏,无癸者富;有癸者,异途显达。",ch:49,qs:"丙甲癸"},{b:"巳",m:"四月",y:"甲丙癸",q:"四月戊土,阳气发升,寒气内藏,外实内虚,不畏火炎,无阳气相催,万物不长,故先用甲疏劈,次取丙癸为佐。",ch:50,qs:"甲丙癸"},{b:"午",m:"五月",y:"壬甲丙",q:"五月戊土,仲夏火炎,先看壬水,次取甲木,丙火酌用,用癸恐其力微。",ch:51,qs:"壬甲丙癸"},{b:"未",m:"六月",y:"癸丙甲",q:"六月戊土,遇夏干枯,先看癸水,次用丙火、甲木。",ch:52,qs:"癸丙甲"},{b:"申",m:"七月",y:"丙癸甲",q:"七月戊土,阳气渐入,寒气渐出,先丙后癸,甲木次之。",ch:53,qs:"丙癸甲"},{b:"酉",m:"八月",y:"丙癸",q:"八月戊土,金泄身寒,赖丙照暖,喜水滋润,先丙后癸,不必木疏。",ch:54,qs:"丙癸"},{b:"戌",m:"九月",y:"甲丙癸",q:"九月戊土当权,不可专用丙火。先看甲木,次取癸水,却忌戊与癸合。见金先用癸水,后取丙火,配合支干,方成有生之土,合此定发云程,科甲有准。",ch:55,qs:"丙甲癸"},{b:"亥",m:"十月",y:"甲丙",q:"十月戊土,时值小阳,阳气略出,先用甲木,次取丙火,非甲,土不灵,非丙,土不暖;安能发生万物。",ch:56,qs:"甲丙"},{b:"子",m:"十一月",y:"丙甲",q:"十一二月严寒冰冻,丙火为尊,甲木为佐。丙甲两透,桃浪之人;丙出甲藏,采芹食饩,丙藏甲出,佐杂前程;有丙无甲者,豪富,有甲无丙者,清贫,丙甲全无,下流之造。",ch:57,qs:"丙甲"},{b:"丑",m:"十二月",y:"丙甲",q:"十一二月严寒冰冻,丙火为尊,甲木为佐。丙甲两透,桃浪之人;丙出甲藏,采芹食饩,丙藏甲出,佐杂前程;有丙无甲者,豪富,有甲无丙者,清贫,丙甲全无,下流之造。",ch:57,qs:"丙甲"}],己:[{b:"寅",m:"正月",y:"丙庚甲",q:"正月己土,寒气未退,田园犹冻,丙暖为尊,得丙照暖,万物自生。忌见壬水,盖壬不为丙优,反为己病,何也?壬乃江湖之水,田园浸没,急须修堤岸,田园始得播种,须戊作堤,以保园圃,壬多见戊者,定主清雅富",ch:58,qs:"丙壬戊"},{b:"卯",m:"二月",y:"甲癸丙",q:"二月己土,阳气渐升,虽禾稼未成,万物发生。但田园未展,宜先取甲木疏之,忌合;次取癸水润之。",ch:59,qs:"甲癸"},{b:"辰",m:"三月",y:"丙癸甲",q:"三月己土,正栽培禾稼之时。先丙后癸,土暖而润,随用甲疏。",ch:60,qs:"丙癸甲"},{b:"巳",m:"四月",y:"癸丙",q:"三夏己土,时值禾稼在田,最喜甘沛,取癸为要,次用丙火。夏无太阳,禾稼不长,故无癸曰旱田,无丙曰孤阴。",ch:61,qs:"癸丙"},{b:"午",m:"五月",y:"癸丙",q:"三夏己土,时值禾稼在田,最喜甘沛,取癸为要,次用丙火。夏无太阳,禾稼不长,故无癸曰旱田,无丙曰孤阴。",ch:61,qs:"癸丙"},{b:"未",m:"六月",y:"癸丙",q:"三夏己土,时值禾稼在田,最喜甘沛,取癸为要,次用丙火。夏无太阳,禾稼不长,故无癸曰旱田,无丙曰孤阴。",ch:61,qs:"癸丙"},{b:"申",m:"七月",y:"丙癸",q:"三秋己土,万物收藏之际,外虚内实,寒气渐升,须丙火温之,癸水润之。不特此也,且癸能泄金,丙能制金,补土精神,则秋生之物咸茂矣。",ch:62,qs:"丙癸"},{b:"酉",m:"八月",y:"丙癸",q:"三秋己土,万物收藏之际,外虚内实,寒气渐升,须丙火温之,癸水润之。不特此也,且癸能泄金,丙能制金,补土精神,则秋生之物咸茂矣。",ch:62,qs:"丙癸"},{b:"戌",m:"九月",y:"甲丙癸",q:"三秋己土,万物收藏之际,外虚内实,寒气渐升,须丙火温之,癸水润之。不特此也,且癸能泄金,丙能制金,补土精神,则秋生之物咸茂矣。",ch:62,qs:"丙癸"},{b:"亥",m:"十月",y:"丙甲戊",q:"三冬己土,湿泥寒冻,非丙暖不生,取丙为尊,甲木能参用,不可用癸。唯初冬壬水旺,用以为制,余皆用丙。无丙用丁,但丁不能解冻除寒,不能火济;丁多,衣禄安然。",ch:63,qs:"丙甲癸壬丁"},{b:"子",m:"十一月",y:"丙甲戊",q:"三冬己土,湿泥寒冻,非丙暖不生,取丙为尊,甲木能参用,不可用癸。唯初冬壬水旺,用以为制,余皆用丙。无丙用丁,但丁不能解冻除寒,不能火济;丁多,衣禄安然。",ch:63,qs:"丙甲癸壬丁"},{b:"丑",m:"十二月",y:"丙甲戊",q:"三冬己土,湿泥寒冻,非丙暖不生,取丙为尊,甲木能参用,不可用癸。唯初冬壬水旺,用以为制,余皆用丙。无丙用丁,但丁不能解冻除寒,不能火济;丁多,衣禄安然。",ch:63,qs:"丙甲癸壬丁"}],庚:[{b:"寅",m:"正月",y:"戊甲壬丙丁",q:"正月庚金,木旺之际,有土皆死,不能生金。且金之寒气未除,先用丙暖庚性。又虑土厚埋金,须甲疏泄。",ch:65,qs:"丙甲"},{b:"卯",m:"二月",y:"丁甲庚丙",q:"二月庚金,卯中乙木当权,柱中自然有乙,当令之乙,得庚辰时,庚必留情于乙,此金有暗强之势,如秋金相似。",ch:66,qs:"乙"},{b:"辰",m:"三月",y:"甲丁壬癸",q:"三月庚金,戊土司令,不怕生寒,无生金之理,有埋金之忧。故先用甲木疏土,次用丁火煅炼成器,不必用庚劈甲。",ch:67,qs:"戊甲丁"},{b:"巳",m:"四月",y:"壬戊丙丁",q:"四月庚金,长生在巳,巳虽有丙,内有戊土,丙不熔金,故不畏火炎。但丙不可轻用,宜先用壬水,方得中和。书曰:群金生夏,妙用玄武;次取戊土,丙火佐之;三者皆全,富贵无双。或透一二,亦主贡监衣衿。",ch:68,qs:"丙戊壬"},{b:"午",m:"五月",y:"壬癸",q:"五月庚金,丁火旺烈,庚金败地,专用壬水,癸又次之。",ch:69,qs:"丁壬癸"},{b:"未",m:"六月",y:"丁甲",q:"六月庚金,三伏生寒,金顽已极。先用丁火,次取甲木。",ch:70,qs:"丁甲"},{b:"申",m:"七月",y:"丁甲",q:"七月庚金,刚锐极矣。专用丁火煅炼,次取木引丁。故曰:秋金刚锐最为奇,壬癸相逢总不宜:如逢木火来成局,试看福寿与天齐。",ch:71,qs:"丁壬癸"},{b:"酉",m:"八月",y:"丁甲丙",q:"八月庚金,刚锐未退,仍用丁甲,丙不可少。",ch:72,qs:"丁甲丙"},{b:"戌",m:"九月",y:"甲壬",q:"九月庚金,戊土司令,最怕土厚埋金。宜先用甲疏,后用壬洗,则金自出矣,忌见己土浊壬。",ch:73,qs:"戊甲壬己"},{b:"亥",m:"十月",y:"丁丙",q:"十月庚金,水冷性寒,非丁莫造,非丙不暖。",ch:74,qs:"丁丙"},{b:"子",m:"十一月",y:"丁甲丙",q:"十一月庚金,天气严寒,仍取丁甲,次取丙火照暖。",ch:75,qs:"丁甲丙"},{b:"丑",m:"十二月",y:"丙丁甲",q:"十二月庚金,寒气太重,丑为湿泥,愈寒愈冻,先取丙火解冻,次取丁火炼金,甲亦不可少。",ch:76,qs:"丙丁甲"}],辛:[{b:"寅",m:"正月",y:"己壬庚",q:"正月辛金,阳气舒升寒气未除。然正月建寅,中有长生之丙,可解寒气。但忌甲木司权,辛金失令。性爱湿泥滋养,取己土为身之本。次用壬水淘洗,欲得辛金发现,全赖壬水之功。",ch:77,qs:"丙甲己壬"},{b:"卯",m:"二月",y:"壬甲",q:"二月辛金,阳和之际,壬水为尊。见戊己为病,得甲制伏,则辛金不致埋没,壬水不致混浊,合此者,必身入玉堂。故二月庚金,有壬甲透者贵显;否则,乡绅。或壬坐亥支,不见土出,可能入芥,家亦小康。得申中之",ch:78,qs:"壬戊己甲庚"},{b:"辰",m:"三月",y:"壬甲",q:"三月辛金,戊土司令,辛承正气,母旺子相。",ch:79,qs:"戊"},{b:"巳",m:"四月",y:"壬甲癸",q:"四月辛金,时道首夏,忌丙火之燥烈,喜壬水之洗淘。",ch:80,qs:"丙壬"},{b:"午",m:"五月",y:"壬己癸",q:"五月辛金,丁火司权,辛金失令,阴柔之极,不宜煅炼,须己壬兼用。何也?己为泥沙,壬为湖海,己无壬不湿,辛无己不生,故壬己并用。无壬,癸亦可用,但癸力小。",ch:81,qs:"丁己壬癸"},{b:"未",m:"六月",y:"壬庚甲",q:"六月己土当权,滋扶太过,恐污金不耀,专用壬水为妙,次取庚金佐之。",ch:82,qs:"己壬庚"},{b:"申",m:"七月",y:"壬甲戊",q:"七月辛金,值庚秉令,不旺自旺。且申中有长生之壬,四柱不见戊土透干,胎元亦无戊制,唯申中一戊,为壬堤岸,人命得此,为官清正,但不富耳。",ch:83,qs:"庚壬戊"},{b:"酉",m:"八月",y:"壬甲",q:"八月辛金,当权,得令,旺之极矣,专用壬水淘之泄之为贵,故云:金见水以流通。",ch:84,qs:"壬"},{b:"戌",m:"九月",y:"壬甲",q:"九月辛金,戊土司令,母旺子相,须甲疏土,壬泄旺金,先壬后甲。壬甲两透,桃洞之仙。",ch:85,qs:"戊甲壬"},{b:"亥",m:"十月",y:"壬丙",q:"十月时值小阳,阳气初潜,寒气未盛,先用壬水,次用丙火,暖壬温辛。",ch:86,qs:"壬丙"},{b:"子",m:"十一月",y:"丙戊壬甲",q:"十一月辛金,癸水司令,为寒冬雨露,最忌癸水出干,冻金而困丙火。",ch:87,qs:"癸丙"},{b:"丑",m:"十二月",y:"丙壬戊己",q:"十二月辛金,寒冻之极,先丙后壬。无丙不能解冻,无壬不能洗淘。",ch:88,qs:"丙壬"}],壬:[{b:"寅",m:"正月",y:"庚丙戊",q:"正月壬水,汪洋之象,能并百川之流。然水性柔弱,宜用庚金之源,次取丙火以除寒气,又次取戊土以止其流,庶不致汪洋无度。",ch:90,qs:"庚丙戊"},{b:"卯",m:"二月",y:"戊辛庚",q:"二月壬水,寒气初除,清流湛深,不用丙暖,专取戊土为堤岸,辛发其源,庚金次之。",ch:91,qs:"丙戊辛庚"},{b:"辰",m:"三月",y:"甲庚",q:"三月壬水,戊土司权,死有推山塞海之患,先用甲疏季土,次取庚发水源。",ch:92,qs:"戊甲庚"},{b:"巳",m:"四月",y:"壬辛庚癸",q:"四月壬水,丙火司权,水弱极矣。专取壬水比肩为助,次取辛金发源,忌与丙火合化,又以庚金为佐。",ch:93,qs:"丙辛庚"},{b:"午",m:"五月",y:"癸庚辛",q:"五月壬水,丁旺壬弱,取庚为用,取癸为佐。无庚不能蓄源,无癸不能伤丁。",ch:94,qs:"丁庚癸"},{b:"未",m:"六月",y:"辛甲",q:"六月壬水,己土当权,丁火退气,用辛蓄源,用甲劈土;先辛后甲,次取癸水。",ch:95,qs:"己丁辛甲癸"},{b:"申",m:"七月",y:"戊丁",q:"七月壬水,庚金司令,壬得申之长生,源流自远,转弱为强。专用戊土,次取丁火,佐戊制庚,但用辰戌之戊,不用申中受病之戊。",ch:96,qs:"庚戊丁"},{b:"酉",m:"八月",y:"甲庚",q:"八月壬水,辛金司权,金白水清之时,忌戊己为病,专取甲木。",ch:97,qs:"辛戊己甲"},{b:"戌",m:"九月",y:"甲丙",q:"九月亥水进气,其性将厚。若一派壬水,见一甲制戌中之戊,又见一戊出干,斯用丙火,此格清贵极矣,正谓一将当关,群邪自伏。见丙,便主衣禄,或不见丙戊,终为下格。",ch:98,qs:"甲戊丙"},{b:"亥",m:"十月",y:"戊丙庚",q:"十月壬水司权,至旺之极,取戊为用。",ch:99,qs:"戊"},{b:"子",m:"十一月",y:"戊丙",q:"十一月壬水,阳刃帮身,较前更旺,先取戊土,次用丙火。",ch:100,qs:"戊丙"},{b:"丑",m:"十二月",y:"丙丁甲",q:"十二月壬水,旺极复衰,何也?上半月癸辛主事,壬水稍旺,专用丙火解冻,下半月己土主事,故衰,亦用丙火,甲木佐之;故有丙,名利两全。",ch:101,qs:"癸辛丙己甲"}],癸:[{b:"寅",m:"正月",y:"辛丙",q:"正月癸水,值三阳之候,为雨露之精,其性至柔。先用辛金,生癸水之源,次用丙火照暖,名阴阳和合,万物发生。",ch:102,qs:"辛丙"},{b:"卯",m:"二月",y:"庚辛",q:"二月癸水,不刚不柔,乙木司令,泄弱元神,专用庚金为用,辛金次之。",ch:103,qs:"乙庚辛"},{b:"辰",m:"三月",y:"丙辛甲",q:"三月癸水,要分清明鼓雨,清明后火气未炽,专用丙火,名阴阳承蔼。谷雨后虽用丙火,还宜辛金佐之,富贵;次看何神高透无伤,便可定格局高低。如",ch:104,qs:"丙辛"},{b:"巳",m:"四月",y:"辛",q:"四月癸水,喜见新母,无辛,庚亦可用,但不自然。",ch:105,qs:"辛庚"},{b:"午",m:"五月",y:"庚辛壬癸",q:"五月癸水,至弱无根,必须庚辛为生身之本,但丁火司权,金难敌火,安能滋养癸水?宜见比劫,方得庚辛妙用。",ch:106,qs:"庚辛丁"},{b:"未",m:"六月",y:"庚辛壬癸",q:"六月癸水,有上下月之分,上半月庚辛无气,下半月庚辛有气。凡六癸日,人多推此月多不验者,何也?俗士不知此理,不知未中有乙,与己同宫,破而不破,故癸水不能从煞,所以专用庚辛。如上半月,金神衰弱,火",ch:107,qs:"庚辛乙己",note:"原文全章未见「壬」,此格按整理表录入,待以善本核对"},{b:"申",m:"七月",y:"丁",q:"七月癸水,正母旺子相之时。癸虽死申,殊不知申中有庚生之,名死处逢生,弱中复强,即运行西北,亦不死也。但庚司令,刚锐极矣,必取丁火为用。",ch:108,qs:"庚丁"},{b:"酉",m:"八月",y:"辛丙",q:"八月癸水,辛金虚灵,非顽金可比,正金白水清。故取辛金为用,丙火佐之,名水暖金温。",ch:109,qs:"辛丙"},{b:"戌",m:"九月",y:"辛甲壬癸",q:"九月癸水,失令无根,戊土司权,克制太过,专用辛金发癸水之源,次用癸甲,要比肩滋甲制戊方妙。",ch:110,qs:"戊辛甲"},{b:"亥",m:"十月",y:"庚辛戊丁",q:"十月癸水,旺中有弱,何也?因亥摇木,泄散元神,宜用庚辛为妙。",ch:111,qs:"庚辛"},{b:"子",m:"十一月",y:"丙辛",q:"十一月癸水,值冰冻之时,金水无交欢之象,专用丙火解冻,庶不致变雨为雪,结露为霜。又要辛金滋扶,然无丙火,辛亦不妙。凡冬季癸水,有丙透解冻,则金温水暖,两两相生,要不见壬透,自然登科及第,紫诰金",ch:112,qs:"丙辛壬"},{b:"丑",m:"十二月",y:"丙丁",q:"十二月癸水,落地成冰,万物不能舒泰,专用丙火解冻。",ch:113,qs:"丙"}]};function T(Y,m){const $=ne[Y];if(!$)return null;const A=P.indexOf(m);if(A<0)return null;const j=$[A];if(!j)return null;const y=[...j.y];return{stem:Y,branch:j.b,month:j.m,yong:y,primary:y[0]||null,quote:j.q,quoteStems:[...j.qs],chapter:j.ch,url:te+String(j.ch).padStart(3,"0")+"/",note:j.note||"",label:Y+"日生于"+j.m+"("+j.m+j.b+"月)"}}function v(Y){return Y?Y.label+":用神 "+Y.yong.join("、")+"(首取 "+Y.primary+")":""}return{QT_BRANCHES:P,QT_MONTHS:Q,QT_BASE_URL:te,QT_NOTE:J,QT:ne,qtOf:T,qtLine:v}})(),W.classics=(function(){const P={ziping:{name:"子平真诠",author:"清·沈孝瞻",base:"https://www.diancang.xyz/xuanxuewushu/zipingzhenquan/"},ditian:{name:"滴天髓",author:"明·京图(通行本)",base:"https://www.diancang.xyz/xuanxuewushu/ditiansui/"},sanming:{name:"三命通会",author:"明·万民英",base:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/"}},Q=[{id:"zp-yongshen",book:"ziping",chapter:"八、论用神",scene:"用神",tags:[],quote:"八字用神,专求月令,以日干配月令地支,而生克不同,格局分焉。财官印食,此用神之善而顺用之者也;煞伤劫刃,用神之不善而逆用之者也。",plain:"用神从月令里找:财、官、印、食四吉神顺用(生之护之),煞、伤、劫、刃四凶神逆用(制之化之)。",url:"https://www.diancang.xyz/xuanxuewushu/zipingzhenquan/53628.html"},{id:"zp-zhenguan",book:"ziping",chapter:"三十一、论正官",scene:"格局",tags:["正官"],quote:"以刑冲破害为忌,则以生之护之为喜矣。存其喜而去其忌则贵,而贵之中又有高低者,何也?",plain:"正官格最忌刑冲破害,喜财生官、印护官;去忌存喜才谈得上贵,贵的层次还要看财印是否并透、有无伤官七煞混杂。",url:"https://www.diancang.xyz/xuanxuewushu/zipingzhenquan/53651.html"},{id:"zp-cai",book:"ziping",chapter:"三十三、论财",scene:"格局",tags:["财","正财","偏财"],quote:"财为我克,使用之物也,以能生官,所以为美。为财帛,为妻妾,为才能,为驿马,皆财类也。",plain:"财是我所克、能为我用之物,因能生官而美;它同时代表钱财、配偶、才能、走动,不只「钱」一项。",url:"https://www.diancang.xyz/xuanxuewushu/zipingzhenquan/53653.html"},{id:"zp-yin",book:"ziping",chapter:"三十五、论印绶",scene:"格局",tags:["印"],quote:"印绶喜其生身,正偏同为美格,故财与印不分偏正,同为一格而论之。",plain:"印能生身,正印偏印都算美格,不分偏正而论;印格的关键在身印强弱与官杀、食伤、财的配合。",url:"https://www.diancang.xyz/xuanxuewushu/zipingzhenquan/53655.html"},{id:"zp-shishen",book:"ziping",chapter:"三十七、论食神",scene:"格局",tags:["食神"],quote:"食神本属泄气,以其能生正财,所以喜之。故食神生财,美格也。财要有根,不必偏正叠出,如身强食旺而财透,大贵之格。",plain:"食神本是泄气,可贵在能生财;食神生财要财有根,身强、食旺、财透三者齐,格局才大。",url:"https://www.diancang.xyz/xuanxuewushu/zipingzhenquan/53657.html"},{id:"zp-pianguan",book:"ziping",chapter:"三十九、论偏官",scene:"格局",tags:["七杀","偏官"],quote:"煞以攻身,似非美物,百大贵之格,多存七煞。盖控制得宜,煞为我用,如大英雄大豪杰,似难驾驭,而处之有方,则惊天动地之功,忽焉而就。",plain:"七煞攻身,看着不美,但大贵之格多有七煞——能控制住就为我所用,像驾驭豪杰,处之有方就能成大事。",url:"https://www.diancang.xyz/xuanxuewushu/zipingzhenquan/53659.html"},{id:"zp-shangguan",book:"ziping",chapter:"四十一、论伤官",scene:"格局",tags:["伤官"],quote:"伤官虽非吉神,实为秀气,故文人学士,多于伤官格内得之。而夏木见水,冬金见火,则又为秀之尤秀者也。",plain:"伤官不是吉神,却是秀气所在,文人多出伤官格;夏木得水、冬金得火,是秀气里更秀的两种。",url:"https://www.diancang.xyz/xuanxuewushu/zipingzhenquan/53661.html"},{id:"zp-yangren",book:"ziping",chapter:"四十三、论阳刃",scene:"格局",tags:["劫财","阳刃"],quote:"阳刃者,劫我正财之神,乃正财之七煞也。禄前一位,惟五阳有之,故为阳刃。不曰劫而曰刃,劫之甚也。刃宜伏制,官煞皆宜,财印相随,尤为贵显。",verifiedQuote:"阳刃者,劫我正财之神,乃正财之七煞也。禄前一位,惟五阳有之",variantNote:"典藏网此页把「故为阳刃」刻作「故为旭刃」,与通行本异文;前段仍可逐字核验",plain:"阳刃是劫财之极(只有五阳干有),宜用官煞制伏;财印相随而不相碍,格局更显。",url:"https://www.diancang.xyz/xuanxuewushu/zipingzhenquan/53663.html"},{id:"zp-lujie",book:"ziping",chapter:"四十五、论建禄月劫",scene:"格局",tags:["比肩","建禄","月劫"],quote:"故建禄与月劫,可同一格,不必加分,皆以透干支,别取财官煞食为用。",plain:"建禄、月劫同看一格,月令本身不算用神,要另看透出的财官煞食取用。",url:"https://www.diancang.xyz/xuanxuewushu/zipingzhenquan/53665.html"},{id:"zp-qihou",book:"ziping",chapter:"十四、论用神配气候得失",scene:"调候",tags:[],quote:"论命惟以月令用神为主,然亦须配气候而互参之。譬如英雄豪杰,生得其时,自然事半功倍;遭时不顺,虽有奇才,成功不易。",plain:"月令用神为主,但必须配气候参看;同样的格局,生在得时的气候里事半功倍,逆着气候就费劲。",url:"https://www.diancang.xyz/xuanxuewushu/zipingzhenquan/53634.html"},{id:"zp-chengbai",book:"ziping",chapter:"九、论用神成败救应",scene:"格局",tags:[],quote:"成中有败,必是带忌;败中有成,全凭救应。",plain:"成格不等于一路顺:成中带忌(官逢财又逢伤、官被合之类)就打了折;败格也未必无救——印来解伤、合来清煞,败中还能转成。",url:"https://www.diancang.xyz/xuanxuewushu/zipingzhenquan/53629.html"},{id:"zp-zaji",book:"ziping",chapter:"十六、论杂气如何取用",scene:"用神",tags:[],quote:"何谓透干?如甲生辰月,透戊则用偏财,透癸则用正印,透乙则用月劫是也。何谓会支?如甲生辰月,逢申与子会局,则用水印是也。一透则一用,兼透则兼用,透而又会,则透与会并用。",plain:"四墓(辰戌丑未)所藏不止一气,所以叫杂气:取用先看哪一藏干透到天干,透一个用一个;没有透干,再看地支有没有与月支会成三合局,会成什么局就取局中那一气。透干与会支同时成立时两样并用。原文对「兼透」只给原则,没有给取舍次序。",url:"https://www.diancang.xyz/xuanxuewushu/zipingzhenquan/53636.html"},{id:"zp-bianhua",book:"ziping",chapter:"十、论用神变化",scene:"格局",tags:[],quote:"故若丁生亥月,本为正官,支全卯未,则化为印。己生申月,本属伤官。藏庚透壬,则化为财。凡此之类皆用神之变化也。",plain:"用神本从月令取,但月令藏干不一:丁生亥月本为正官,支会卯未就化为印;己生申月本属伤官,庚藏壬透就化为财。起点相同,合化一变,取用也跟着变(原文只说变化之由,不断定某盘必化)。",url:"https://www.diancang.xyz/xuanxuewushu/zipingzhenquan/53630.html"},{id:"dt-hannuan",book:"ditian",chapter:"通神论·寒暖",scene:"调候",tags:[],quote:"天道有寒暖,生育万物,人道行之,不可过也。",plain:"天有寒暖才能生养万物,人命里寒暖也不能过——过寒过热都要调。",url:"https://www.diancang.xyz/xuanxuewushu/ditiansui/153091.html"},{id:"dt-zaoshi",book:"ditian",chapter:"通神论·燥湿",scene:"调候",tags:[],quote:"地道有燥湿,生成品汇,人道得之,不可偏也。",plain:"地有燥湿才有品类生成,人命得燥湿之气也不能偏。",url:"https://www.diancang.xyz/xuanxuewushu/ditiansui/153091.html"},{id:"dt-shuaiwang",book:"ditian",chapter:"通神论·衰旺",scene:"调候",tags:[],quote:"能知旺衰之真机,其于三命之奥,思过半矣。",plain:"真正看懂旺衰的机关,命理之奥就过了一半——旺衰不是数个数,要看真机。",url:"https://www.diancang.xyz/xuanxuewushu/ditiansui/153091.html"},{id:"dt-zhonghe",book:"ditian",chapter:"通神论·中和",scene:"调候",tags:[],quote:"既识中和之正理,而于五行之妙,有全能焉。",plain:"懂得中和的道理,五行的妙处就都在其中了。",url:"https://www.diancang.xyz/xuanxuewushu/ditiansui/153091.html"},{id:"dt-guansha",book:"ditian",chapter:"通神论·官杀",scene:"十神",tags:["正官","七杀"],quote:"官杀混杂来问我,有可有不可。",plain:"官杀混杂不是一律不好,要看能不能去留取清。",url:"https://www.diancang.xyz/xuanxuewushu/ditiansui/153091.html"},{id:"dt-shangguan",book:"ditian",chapter:"通神论·伤官",scene:"十神",tags:["伤官"],quote:"伤官见官最难辨,可见不可见。",plain:"伤官见官是最难分辨的一条:有的能见,有的不能见,不能一句「伤官见官为祸百端」了事。",url:"https://www.diancang.xyz/xuanxuewushu/ditiansui/153091.html"},{id:"dt-yueling",book:"ditian",chapter:"通神论·月令",scene:"用神",tags:[],quote:"月令乃提纲之府,譬之宅也,人元为用事之神,宅之定向也,不可以不卜。",plain:"月令像宅子,藏干是用事之神,像宅子的朝向,必须细看。",url:"https://www.diancang.xyz/xuanxuewushu/ditiansui/153091.html"},{id:"dt-tiyong",book:"ditian",chapter:"通神论·体用",scene:"用神",tags:[],quote:"道有体用,不可以一端论也,要在扶之抑之得其宜。",plain:"体用不能只看一头,关键是扶抑得宜。",url:"https://www.diancang.xyz/xuanxuewushu/ditiansui/153091.html"},{id:"dt-jingshen",book:"ditian",chapter:"通神论·精神",scene:"用神",tags:[],quote:"人有精神,不可以一偏求也,要在损之益之得其中。",plain:"看精神不能偏执一端,要在损益之间求其中。",url:"https://www.diancang.xyz/xuanxuewushu/ditiansui/153091.html"},{id:"dt-tongguan",book:"ditian",chapter:"通神论·通关",scene:"用神",tags:[],quote:"关内有织女,关外有牛郎,此关若通也,相邀入洞房。",plain:"两股力隔着一道关相望:一边织女、一边牛郎,中间若有一行能把两边接上(一方生它、它再生另一方),对峙就化成相生。原文只给取象,哪一行为关要按五行生克定。",url:"https://www.diancang.xyz/xuanxuewushu/ditiansui/153091.html"},{id:"smt-zhenguan",book:"sanming",chapter:"卷五·论正官",scene:"格局",tags:["正官"],quote:"正官者,乃甲见辛、乙见庚之例。阴阳配合,相制有用,成其道也。故正官为六格之首,止许一位,多则不宜。",plain:"正官取「克我而阴阳相配」,有制而能成用;六格以正官居首,只宜一位,多见就杂。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7582.html"},{id:"smt-zhengcai",book:"sanming",chapter:"卷六·论正财",scene:"格局",tags:["财","正财"],quote:"正财者,乃甲见己、乙见戊之例。受我克制,为我之妻,譬人娶妻,妻赍财嫁我,我必精神康强,而后可享用,若衰微不振,虽妻财丰厚,但能目视,终不得用。",plain:"正财是我克制之物,古人以「娶妻带财」作比:自身精神康强才受用得起,身弱不振,财再厚也只是看着。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7645.html"},{id:"smt-piancai",book:"sanming",chapter:"卷六·论偏财",scene:"格局",tags:["财","偏财"],quote:"何谓偏财?乃甲见戊、乙见己之例。非妻所带,乃众人之财也。切忌有姊妹兄弟分夺,柱无官星,祸患百出。",plain:"偏财取「我克而阴阳不同」:不是妻家带来的私财,而是众人之财,宜流通不宜独占。原文最忌比肩劫财来分夺,又说柱中无官星则多事(旧说的重话照录,本插件只记原文、不作断语)。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7650.html"},{id:"smt-yinshou",book:"sanming",chapter:"卷六·论印绶",scene:"格局",tags:["印"],quote:"印绶者,乃五行生我之名。如甲乙在亥子月,丙丁在寅卯月之类,乃我气之源,为生气,为父母,能护我官星,使无伤克",plain:"印是生我之气,像源头与父母:它能护住官星,使官不受伤克;反过来说,印重就怕财来破。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7655.html"},{id:"smt-shishen",book:"sanming",chapter:"卷六·论食神",scene:"格局",tags:["食神"],quote:"凡命遇财煞之地,食神旺相,煞被食制,不敢为祸,财被食生,充裕不竭,故食神一名寿星,一名爵星,良有以也。",plain:"食神旺,一头制煞、一头生财:煞被制住不敢为祸,财被生起不至枯竭;所以食神又叫寿星、爵星。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7663.html"},{id:"smt-shangguan",book:"sanming",chapter:"卷六·论伤官",scene:"格局",tags:["伤官"],quote:"伤官虽凶,乃我所生,自家之物,伤尽则能生财,财旺则能生官,造化展转有情。",plain:"伤官虽称凶,却是我自己生出来的:伤尽(柱中不见官星)反能生财,财旺再生官,辗转还是有情。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7662.html"},{id:"smt-yangren",book:"sanming",chapter:"卷六·论阳刃",scene:"格局",tags:["阳刃","劫财"],quote:"阳者,阴阳之阳,刃者,刀刃之刃,即禄前一位,言旺越其分,故险。",plain:"阳刃指禄前一位,旺过了本分,所以险;甲丙戊庚壬五阳干才有刃,阴干见伤官同论。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7671.html"},{id:"smt-jianlu",book:"sanming",chapter:"卷六·论建禄",scene:"格局",tags:["建禄","比肩","月劫"],quote:"凡命月令建禄,难招祖业,必主平生见财不聚,却病少寿长,行运再见比肩,克妻妨父损子",plain:"月令建禄是日主临官之地,身旺而财官难取:古说难承祖业、见财不聚,但病少寿长;再走比肩运,古书说克妻妨父损子(属于旧说的重话,本插件只记原文、不作断语)。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7672.html"},{id:"smt-guansha-liu",book:"sanming",chapter:"卷五·官煞去留杂论",scene:"格局",tags:["七杀","偏官"],quote:"凡看去留,要详柱中官煞孰重孰轻,天干透者易去,月支所藏者难去,须伤官食神去官煞之物众而有力,方才去得。",plain:"官煞混见时先比谁重谁轻:天干透出的容易去,月支藏着的难去;用来去官煞的伤官食神要成众、有根有力,才真去得掉。七杀格遇正官混杂,就按这一篇看取舍。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7599.html"},{id:"smt-quzhi",book:"sanming",chapter:"卷六·曲直",scene:"格局",tags:["曲直格","专旺"],quote:"甲乙日得亥卯未局,柱中须有亥字带印为入格,若无亥有卯,止是木之本气,却要见金土为贵,既无亥字,又无金土,则木不秀不实,难以言贵。",plain:"曲直格要木局成方(亥卯未)且带亥字为印,才算入格;只有卯、没有亥,只是木的本气,得另见金土才谈得上贵;两样都没有,木虽旺而无成,难称贵格。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7630.html"},{id:"smt-yanshang",book:"sanming",chapter:"卷六·炎上",scene:"格局",tags:["炎上格","专旺"],quote:"丙丁日遇寅午戌局,柱中须有寅字带印为入格,无寅止是九流近贵之命,若火自旺,无亥水相济,不贵。喜东北方运,忌见辰丑戊己,晦火光明,多主眼疾,或患风气,柱有木制成贵,忌水金乡,怕冲。",plain:"炎上格要火局成方(寅午戌)且带寅字为印才入格;无寅只是偏贵的命。火自旺还要一点水相济,过燥不贵;行运喜东北、忌湿土晦火,也怕冲。原文另带「多主眼疾」一句,属于旧说,本插件只记原文、不作健康判断。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7631.html"},{id:"smt-congge",book:"sanming",chapter:"卷六·从革",scene:"格局",tags:["从革格","专旺"],quote:"庚辛日见巳酉丑局,须带丙丁巳午一二位方成其器,但不可火多。如辛巳、辛酉、辛丑三日不喜五月生,被火所伤,宜八月或水土养育食神印绶为吉。",plain:"从革格是金局成方(巳酉丑),但金要火炼才成器:须带丙丁或巳午一二位,火又不能多。辛巳、辛酉、辛丑三日出身在五月(火旺)被伤,原文说宜八月或水土养育。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7632.html"},{id:"smt-runxia",book:"sanming",chapter:"卷六·润下",scene:"格局",tags:["润下格","专旺"],quote:"壬癸日见申子辰全,忌引卯巳死绝之地,三刑四冲之乡,死绝则不流,冲刑则横流,岁运同。或曰水太泛须柱有土神一两位制之,得成堤岸,既有土怕会木为凶,如有木伤土要金印救解,终是一生成败。",plain:"润下格是水局三合全(申子辰),最忌卯巳死绝与三刑四冲:死绝水不流,冲刑水横流,行运也一样看。水太泛要一两位土作堤,有土又怕木来破堤,木伤土再用金印解救——原文把成败条件摊开讲。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7633.html"},{id:"smt-jiasi",book:"sanming",chapter:"卷六·稼穑",scene:"格局",tags:["稼穑格","专旺"],quote:"赋云:戊己忻逢四季,乃为稼穑之名。是戊己生逢季月,喜见木为官,止得一木为妙,木多则土虚,主虚诈为破家不仁之人。",plain:"稼穑格取戊己生于四季月(辰戌丑未)。原文说喜见一木为官,木多则土虚;后半对木多之人的评语是旧说的重话,本插件只照录条件、不拿来评价人。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7634.html"},{id:"smt-congsha",book:"sanming",chapter:"卷五·弃命从煞",scene:"格局",tags:["从杀格"],quote:"《独步》云:弃命从煞,须要会煞从财,忌煞从煞。盖言从煞格,以煞神太重,身无所归,不得已从之,要行煞旺及财乡,四柱无一点比肩印绶方论,如遇运扶身旺,与煞为敌,从煞不专,故为祸患。",plain:"从煞格是煞太重、日主无所归才「弃命」相从:条件是四柱没有一点比肩印绶扶身,行运喜煞旺与财乡;一旦走扶身之运,与煞为敌,就从得不专。本插件只作结构说明,不据此断寿夭。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7598.html"},{id:"smt-congcai",book:"sanming",chapter:"卷六·弃命从财",scene:"格局",tags:["从财格"],quote:"《独步》云:弃命从财,须要会财,若逢根气,命损无猜。假如丁生酉月,柱多庚辛,日干无气,只得弃命相从,运入北方财官旺地,乃为入格,南行灾。",plain:"从财格要财会成局、日干无气;一见根气就破格,原文用「命损无猜」这种重话写明。以丁生酉月、柱多庚辛为例:只能弃命相从,行北方财官旺地为入格,南行则灾。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7652.html"},{id:"smt-suiyun",book:"sanming",chapter:"卷二·总论岁运",scene:"岁运",tags:[],quote:"行运以生月为运元,最怕行运与太岁冲克,若岁运冲月必祸;若岁运与日相对,谓之返吟,岁运压日,谓之伏吟,二者不利六亲,非横破财,不为吉兆。",plain:"大运以生月为起点,最怕与流年(太岁)冲克:原文说岁运冲月为祸,又把「岁运与日柱相对」叫返吟、「岁运压日」叫伏吟。这两句是按「对日柱」说的,与本插件「干支相同为伏吟、天克地冲为反吟」不是同一套定义(本插件取后者);末句「不利六亲、破财」是旧说的重话,只作变动提示,不作断语。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7539.html"},{id:"smt-renyuan",book:"sanming",chapter:"卷二·论人元司事",scene:"人元",tags:[],quote:"故支吕所藏者主命,谓之人元,名为司事之神,以命术言之为月令。如正月建寅,寅中有艮土用事五日,丙火长生五日,甲木二十日;二月建卯,卯中有甲木用事七日,乙木二十三日;",plain:"地支所藏为「人元」,按月令分日轮值。三命通会这一本给的是另一套日数:寅月艮土(戊土)五日、丙火五日、甲木二十日,卯月甲七日、乙二十三日。它与本插件采用的通行 30 日表(寅月戊7丙7甲16,即 7/7/16;卯月甲10乙20,即 10/20)不是同一套分法;两表各照原样并列,本插件仍按通行表给「第几日谁当权」,不改取格。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7529.html"}],te=Q.reduce((y,k)=>(y[k.id]=k,y),{}),J={正官格:"正官",七杀格:"七杀",偏官格:"偏官",正财格:"正财",偏财格:"偏财",正印格:"印",偏印格:"印",食神格:"食神",伤官格:"伤官",阳刃格:"阳刃",月劫格:"月劫",建禄格:"建禄"},ne={曲直格:"smt-quzhi",炎上格:"smt-yanshang",从革格:"smt-congge",润下格:"smt-runxia",稼穑格:"smt-jiasi",从财格:"smt-congcai",从杀格:"smt-congsha"};function T(y){return te[y]||null}function v(y){return(y&&Array.isArray(y.liunian)?y.liunian:[]).some(S=>S&&S.suiyun&&Array.isArray(S.suiyun.signals)&&S.suiyun.signals.length)?T("smt-suiyun"):null}function Y(y){const k=String(y||"");if(J[k])return J[k];const re=k.replace(/格$/,"");return J[re+"格"]||re}function m(y,k){return Q.find(re=>re.scene==="格局"&&re.tags.includes(y)&&(!k||re.book===k))||null}function $(y){return y.chapter.replace(/^.*[、·]/,"").replace(/^论/,"")}function A(y,k=5){if(!y)return[];const re=[],S=new Set,M=(ee,ue)=>{!ee||S.has(ee.id)||re.length>=k||(S.add(ee.id),re.push({...ee,why:ue}))},i=Array.isArray(y.geju)?y.geju:y.frame&&Array.isArray(y.frame.geju)?y.frame.geju:[],d=i.some(ee=>ee&&ee.kind==="化气格");for(const ee of i){if(ee&&ee.status==="破格"||d&&ee&&ee.status==="假从")continue;const ue=ee&&ne[ee.name]?T(ne[ee.name]):null;ue&&M(ue,`本盘列有「${ee.name}」,故取${P[ue.book].name}「${$(ue)}」一条`)}for(const ee of i){if(!ee||ee.kind&&ee.kind!=="月令格")continue;const ue=Y(ee.name),je=m(ue,"ziping")||m(ue);je&&M(je,`你的月令格局是「${ee.name}」,故取${P[je.book].name}「${$(je)}」一条`);const Ae=Q.find(ze=>ze.scene==="格局"&&ze.tags.includes(ue)&&(!je||ze.book!==je.book));Ae&&M(Ae,`同是「${ee.name}」,${P[Ae.book].name}「${$(Ae)}」另有取法,可对照读`)}const a=y.climate||y.frame&&y.frame.yongshen&&(y.frame.yongshen.climate||y.frame.yongshen.tiaohou),r=y.frame&&y.frame.yongshen&&y.frame.yongshen.tongguan,u=r&&r.usable?T("dt-tongguan"):null;if(a&&a.kind&&a.kind!=="平和"){const ee=!!(a.cold||a.kind.indexOf("寒")>=0),ue=!!(a.hot||a.kind.indexOf("热")>=0);M(T(ee?"dt-hannuan":"dt-zaoshi"),`本盘气候判为「${a.kind}」,故取${P.ditian.name}寒暖燥湿一条`),u||M(T("zp-qihou"),"气候与月令用神要互参,故取子平真诠「用神配气候」一条"),ue&&M(T("dt-hannuan"),"本盘偏热,寒暖一条正对")}u&&M(u,`本盘忌${r.foe}克用${r.use},局中${r.bridge}${r.weight}分可作通关,故取${P.ditian.name}「通关」一条`);const g=i.find(ee=>ee&&ee.kind==="化气格"),_=i.find(ee=>ee&&ee.kind==="组合"),K=y.monthBranch||y.frame&&y.frame.monthBranch||y.pillars&&y.pillars.month&&y.pillars.month.branch,R=["辰","未","戌","丑"].includes(K);return g?M(T("zp-bianhua"),`本盘列有「${g.name}」:用神由月令合化而变,总纲一位改取${P.ziping.name}论用神变化`):R?M(T("zp-zaji"),`月令${K}属四墓杂气,取用先看透干、再看会支,总纲一位取${P.ziping.name}论杂气如何取用`):_?M(T("zp-chengbai"),`本盘另有「${_.name}」组合:成格还要看带忌与救应,总纲一位改取${P.ziping.name}论用神成败救应`):M(T("zp-yongshen"),"用神从月令取、四吉顺用四凶逆用,是通用总纲"),re}function j(y){return!y||!y.length?"":y.map(k=>`《${P[k.book].name}·${k.chapter}》「${k.quote}」`).join(`
68
- `)}return{CLASSIC_BOOKS:P,CLASSICS:Q,classicOf:T,suiyunClassicOf:v,classicsFor:A,classicsText:j}})(),W.geju=(function(){const{judgeClimate:P,arbitrate:Q}=W.tiaohou||{},{qtOf:te}=W.qiongtong||{},{SANHE_GROUPS:J,sanheGroupOf:ne}=W.sanhe||{},T=["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"],v=["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"],Y={甲:"木",乙:"木",丙:"火",丁:"火",戊:"土",己:"土",庚:"金",辛:"金",壬:"水",癸:"水"},m={子:"水",丑:"土",寅:"木",卯:"木",辰:"土",巳:"火",午:"火",未:"土",申:"金",酉:"金",戌:"土",亥:"水"},$={木:"火",火:"土",土:"金",金:"水",水:"木"},A={木:"土",土:"水",水:"火",火:"金",金:"木"},j={子:["癸"],丑:["己","癸","辛"],寅:["甲","丙","戊"],卯:["乙"],辰:["戊","乙","癸"],巳:["丙","戊","庚"],午:["丁","己"],未:["己","丁","乙"],申:["庚","壬","戊"],酉:["辛"],戌:["戊","辛","丁"],亥:["壬","甲"]},y=[1,.5,.3],k={甲:"寅",乙:"卯",丙:"巳",丁:"午",戊:"巳",己:"午",庚:"申",辛:"酉",壬:"亥",癸:"子"},re={甲:"卯",乙:"辰",丙:"午",丁:"未",戊:"午",己:"未",庚:"酉",辛:"戌",壬:"子",癸:"丑"},S={甲己:"土",乙庚:"金",丙辛:"水",丁壬:"木",戊癸:"火"},M=l=>T.indexOf(l)%2===0,i=["木","火","土","金","水"];function d(l,h){const c=Y[l],b=Y[h],x=M(l)===M(h);return c===b?x?"比肩":"劫财":$[c]===b?x?"食神":"伤官":A[c]===b?x?"偏财":"正财":A[b]===c?x?"七杀":"正官":$[b]===c?x?"偏印":"正印":"?"}const a={比劫:["比肩","劫财"],食伤:["食神","伤官"],财:["正财","偏财"],官杀:["正官","七杀"],印:["正印","偏印"]};function r(l,h){const c={比劫:0,食伤:0,财:0,官杀:0,印:0},b={比肩:0,劫财:0,食神:0,伤官:0,正财:0,偏财:0,正官:0,七杀:0,正印:0,偏印:0},x=(p,I)=>{const H=d(h,p),he=Object.keys(a).find(se=>a[se].includes(H));he&&(c[he]+=I),b[H]!==void 0&&(b[H]+=I)};for(const p of["year","month","day","hour"])x(l[p].stem,p==="day"?.6:1),(j[l[p].branch]||[]).forEach((I,H)=>x(I,y[H]??.1));for(const p of Object.keys(c))c[p]=Math.round(c[p]*10)/10;for(const p of Object.keys(b))b[p]=Math.round(b[p]*10)/10;return{groups:c,byGod:b}}function u(l){const h=Y[l],c=i.find(x=>$[x]===h),b=i.find(x=>A[x]===h);return{me:h,inMe:c,shi:$[h],cai:A[h],guan:b}}const g=["辰","未","戌","丑"];function _(l,h,c){if(!g.includes(h))return null;const b=ne(h);if(!b)return null;const x=["year","day","hour"],p=b.branches.filter(he=>he!==h);if(!p.every(he=>x.some(se=>l[se].branch===he)))return null;const I=c.find(he=>Y[he.stem]===b.element);if(!I)return null;const H=x.filter(he=>p.includes(l[he].branch)).map(he=>`${{year:"年",day:"日",hour:"时"}[he]}支${l[he].branch}`);return{...I,group:b,where:H}}function K(l,h,c){const b=j[c]||[],x=b.map((ye,Me)=>({stem:ye,god:d(h,ye),pos:["本气","中气","余气"][Me],w:y[Me]??.1})),I=["year","month","hour"].find(ye=>x.some(Me=>Me.stem===l[ye].stem)),H=x[0],he=I?null:_(l,c,x),se=I?x.find(ye=>ye.stem===l[I].stem):he||H,xe=I?"透干":he?"会支":"本气",Oe=I?{year:"年",month:"月",hour:"时"}[I]:null;if(H.god==="比肩"&&k[h]===c)return{name:"建禄格",kind:"月令格",evidence:`月令${c}为日干${h}之禄(本气${H.stem}比肩),身坐禄地`};if(H.god==="劫财")return re[h]===c?{name:M(h)?"阳刃格":"月刃格",kind:"月令格",evidence:`月令${c}为日干${h}之刃(本气${H.stem}劫财)${M(h)?"":",阴干统称月刃"}`}:{name:"月劫格",kind:"月令格",evidence:`月令${c}本气${H.stem}为劫财`};if(xe==="本气"&&H.god==="比肩")return{name:"比肩格",kind:"月令格",evidence:`月令${c}藏${b.join("")},本气${H.stem}为比肩,但${h}禄在${k[h]}、不在${c},属杂气月比肩当权`};if(xe!=="本气"&&se.god==="劫财"){const ye=I?`透于${Oe}干`:`${he.where.join("、")}会成${he.group.element}局`;return{name:"月劫格",kind:"月令格",evidence:`月令${c}藏${b.join("")},${se.pos}${se.stem}(劫财)${ye},劫财为用,作月劫论`}}const Ne=`${se.god}格`;let Se;return I?Se=`月令${c}藏${b.join("")},${se.pos}${se.stem}(${se.god})透于${Oe}干`:he?Se=`月令${c}藏${b.join("")},本气${H.stem}(${H.god})未透干,而${he.where.join("、")}会成${he.group.element}局,取${se.pos}${se.stem}(${se.god})为用`:Se=`月令${c}藏${b.join("")},本气${H.stem}(${H.god})未透干,以月令本气取格`,{name:Ne,kind:"月令格",evidence:Se}}const R={木:"曲直格",火:"炎上格",土:"稼穑格",金:"从革格",水:"润下格"},ee={财:"从财格",官杀:"从杀格",食伤:"从儿格",印:"从强格",比劫:"从强格"},ue={year:"年",month:"月",day:"日",hour:"时"};function je(l,h){const c=Y[h],b={bi:0,yin:0,total:0,details:[],helpers:[]};for(const x of["year","month","day","hour"]){const p=l[x].branch;(j[p]||[]).forEach((I,H)=>{const he=Y[I],se=y[H]??.1;he===c?(b.bi+=se,b.details.push(`${ue[x]}支${p}藏${I}(比劫 ${se})`)):$[he]===c&&(b.yin+=se,b.details.push(`${ue[x]}支${p}藏${I}(印 ${se})`))})}for(const x of["year","month","hour"]){const p=l[x].stem,I=Y[p];(I===c||$[I]===c)&&b.helpers.push(`${ue[x]}干${p}(${I===c?"比劫":"印"})`)}return b.bi=Math.round(b.bi*10)/10,b.yin=Math.round(b.yin*10)/10,b.total=Math.round((b.bi+b.yin)*10)/10,b}function Ae(l,h,c,b,x,p){const I=[],H=u(h),he=H.me,se=x[he]??0,xe=x[H.inMe]??0,Oe=x[H.cai]??0,Ne=x[H.guan]??0,Se=x[H.shi]??0;for(const oe of["year","month","hour"]){const Z=l[oe].stem,D=S[h+Z]||S[Z+h];if(!D)continue;const de=m[c];if(de===D||$[de]===D){I.push({name:`${D==="土"?"化土格":`化${D}格`}`,kind:"化气格",evidence:`日干${h}与${["年","月","时"][["year","month","hour"].indexOf(oe)]}干${Z}合化${D},月令${c}${de}${de===D?"同化神":"生助化神"};化气格须全局无争合妒合才算真,此处仅列条件`});break}}if((b.level==="身强"||b.level==="偏强")&&se+xe>=5){const oe=[];Ne>1.2&&oe.push(`官杀 ${Ne} 分,逆旺势`),Oe>1.8&&oe.push(`财 ${Oe} 分,耗旺气`);const Z=m[c],D=Z===he||Z===H.inMe,de=J.find(L=>L.element===he),O=["year","month","day","hour"].map(L=>l[L].branch),f=de&&de.branches.every(L=>O.includes(L))?de.branches.join(""):null,G=oe.length?"破格":D?"成格":"待定";I.push({name:R[he],kind:"专旺格",status:G,breaks:oe,ju:f,evidence:`日主${he}得${se+xe}分(同类+印),官杀${Ne}、财${Oe}${oe.length?"":"皆弱"};${D?`月令${c}${Z}助旺`:`月令${c}${Z}不助旺`}${f?`,地支${f}成局`:""},${G==="成格"?"成格":G==="破格"?"见破格条件":"成势而条件未全"}`,breakRule:oe.length?"专旺以官杀逆旺势、财星耗旺气为破;见其一即不纯":void 0})}const ye=je(l,h);if(ye.total<1&&(b.level==="身弱"||b.level==="偏弱")){const oe=Object.entries({财:Oe,官杀:Ne,食伤:Se,印:xe}).sort((Z,D)=>D[1]-Z[1])[0];if(oe[1]>=2.5){const Z=ye.total>0||ye.helpers.length>0,D=[...ye.details,...ye.helpers.map(de=>`天干${de}虚透`)];I.push({name:ee[oe[0]],kind:"从格",status:Z?"假从":"真从",breaks:Z?D:[],rootWeight:ye.total,evidence:Z?`日主有微根或虚透(${D.join(";")}),${oe[0]}占 ${oe[1]} 分最旺,假从${oe[0]};行运助身则不从`:`日主无根(四支藏干无同类与印、天干无比劫印绶),${oe[0]}占 ${oe[1]} 分最旺,真从${oe[0]}`,breakRule:Z?"从格以日主有根、比劫印绶透出为破;有根而从者称假从,运助身则不从":void 0})}}const Me=p.byGod||{},E=p.groups||p,ie=oe=>(Me[oe]??0)>=.5,ce=(Me.正印??0)+(Me.偏印??0),ge=[["官印相生",ie("正官")&&ce>=.5,"正官与印并见,官生印而护身"],["杀印相生",ie("七杀")&&ce>=.5&&(Me.七杀??0)>(Me.正官??0),"七杀与印并见,杀印相生"],["食伤生财",(E.食伤??0)>=.6&&(E.财??0)>=.6,`食伤${E.食伤}+财${E.财},食伤生财`],["财官相生",(E.财??0)>=.6&&(E.官杀??0)>=.6,`财${E.财}+官杀${E.官杀},财生官`],["伤官配印",ie("伤官")&&ce>=.5&&(E.财??0)<=1,"伤官与印并见,伤官配印"],["伤官见官",ie("伤官")&&ie("正官"),"伤官与正官并见(伤官见官,为祸百端之说)"],["羊刃驾杀",(E.官杀??0)>=1&&re[h]===c,`月令为刃,又有七杀${E.官杀},刃杀相制`]];for(const[oe,Z,D]of ge)Z&&I.push({name:oe,kind:"组合",evidence:D});return I}const ze=1.5,ve=.5;function Re(l=[],h=[],c={}){const b=x=>Math.round((Number(c[x])||0)*10)/10;for(const x of l)if(!(b(x)<ze))for(const p of h){if(A[p]!==x||b(p)<ze)continue;const I=$[p];if(!I||$[I]!==x)continue;const H=b(I),he=h.includes(I)&&!l.includes(I),se=he?"为忌":H>=ze?"可通":H>0?"关弱":"未通";return{use:x,foe:p,bridge:I,weight:H,present:H>0,bridgeIsAvoid:he,level:se,usable:se==="可通",note:"相战=用神与忌神两行各在局中 ≥1.5 分且相克;通关一行=克方所生、又能生用神的那一行(五行里唯一),只报局中分量,不据此断吉凶"}}return null}function Pe(l,h,c,b,x=[]){const p=u(l),I=p.me,H=c.level==="身弱"||c.level==="偏弱",he=c.level==="身强"||c.level==="偏强",se=z=>z===I?"比劫":z===p.inMe?"印":z===p.shi?"食伤":z===p.cai?"财":"官杀",xe={比劫:"帮身",印:"生身",食伤:"泄秀",财:"耗",官杀:"制"},Oe=H?[p.inMe,I]:he?[p.shi,p.cai,p.guan]:[p.inMe,I,p.shi],Ne=H?[p.shi,p.cai,p.guan]:he?[I,p.inMe]:[p.guan,p.cai];let Se=Oe.slice(),ye=Ne.slice();const Me=[],E=P({monthBranch:h,dayStem:l,wuxing:b,branches:x}),ie=te(l,h),ce=Q(E,Oe,Ne);if(E.need&&E.priority==="调候优先"){const z=E.need.element;Se.includes(z)||Se.unshift(z),ye=ye.filter(fe=>fe!==z);const be=E.avoidElement;be&&Se.includes(be)?Me.push({element:be,favorRole:se(be),favorVerb:xe[se(be)],climate:E.label,note:`调候忌${be}(${E.label}),但它在扶抑里为${se(be)};本表保留在喜用,不列入忌。`}):be&&!ye.includes(be)&&ye.unshift(be)}const ge={比劫:["比肩","劫财"],印:["正印","偏印"],食伤:["食神","伤官"],财:["正财","偏财"],官杀:["正官","七杀"]},oe=Array.from(new Set(Se.flatMap(z=>ge[se(z)]||[]))),Z=Array.from(new Set(ye.flatMap(z=>ge[se(z)]||[]))),D=Array.from(new Set(Me.flatMap(z=>ge[se(z.element)]||[]))),de=z=>Math.round((Number(b[z])||0)*10)/10,O=ye.filter(z=>de(z)<ve).map(z=>({element:z,role:se(z),verb:xe[se(z)],weight:de(z)})),f=Array.from(new Set(O.flatMap(z=>ge[z.role]||[]))),G=Re(Se,ye,b),L=z=>`${z}(${se(z)}·${xe[se(z)]})`,ae=Me.map(z=>`${z.element}(扶抑为${z.favorRole}·${z.favorVerb};${z.climate}盘调候忌${z.element},本表保留在喜用)`).join("、"),we=[`日主${l}${I},${c.level}(${c.score} 分):`,`喜${Se.map(L).join("、")||"—"};忌${ye.map(L).join("、")||"—"}。`,O.length?`中性偏忌:${O.map(z=>`${z.element}(局中 ${z.weight} 分)`).join("、")}——分量近零,不作实忌论,但不从此盘喜忌中删除(行运遇之仍按忌计)。`:"",Me.length?`有争议:${ae}。`:"",!H&&!he?"身中和,先取调候与通关,喜忌随大运流年动态变化。":"",`调候:${E.label}(${(E.evidence||[]).join("、")})${E.need?`,取${E.need.stem}${E.need.element},忌${E.avoidElement}${Me.some(z=>z.element===E.avoidElement)?"(有争议)":""}`:",气候平和"}。`,ie?`穷通宝鉴:${ie.month}${l}${I},用神${ie.yong.join("、")}(首取${ie.primary})。`:"",G?`通关:忌${G.foe}克用${G.use},五行以${G.bridge}为关;局中${G.level==="可通"?`${G.bridge} ${G.weight} 分,关可通`:G.level==="关弱"?`仅 ${G.bridge} ${G.weight} 分,关弱`:G.level==="为忌"?`${G.bridge} ${G.weight} 分但此行为忌,通关力打折`:`未见${G.bridge},关未通`}(只作结构提示,不据此断吉凶)。`:"",ce.text,ce.clash?"取舍:本盘按「调候优先、扶抑次之」取用;若你更认同扶抑派,可把调候当环境偏好,强弱判断不受影响。":""].filter(Boolean).join("");return{method:E.priority==="调候优先"?"调候优先 + 扶抑校验":"扶抑为主 + 调候校验",level:c.level,favor:Se,avoid:ye,disputed:Me,neutral:O,favorRoles:Se.map(se),avoidRoles:ye.map(se),neutralRoles:O.map(z=>z.role),favorTenGods:oe,avoidTenGods:Z,disputedTenGods:D,neutralTenGods:f,tiaohou:{...E,...ce,element:E.need?E.need.element:null},climate:E,qt:ie,tongguan:G,detail:we}}const q=[[1.3,"大吉"],[.6,"吉"],[-.6,"平"],[-1.3,"忌"],[-1/0,"大忌"]];function V(l,h){const c=h.yongshen,b=l[0],x=l[1],p=Y[b],I=m[x],H=c.tiaohou||c.climate||null,he=E=>{let ie=0;return c.favor.includes(E)&&(ie+=1),c.avoid.includes(E)&&(ie-=1),ie};let se=he(p)*1+he(I)*.8;for(const E of(j[x]||[]).slice(1))se+=he(Y[E])*.2;const xe=[];if(c.favor.includes(p)?xe.push(`天干${b}${p}为用神`):c.avoid.includes(p)?xe.push(`天干${b}${p}为忌神`):xe.push(`天干${b}${p}不喜不忌`),c.favor.includes(I)?xe.push(`地支${x}${I}助用`):c.avoid.includes(I)&&xe.push(`地支${x}${I}助忌`),H&&H.need&&H.priority==="调候优先"){const E=H.need.element,ie=H.avoidElement,ce=String(H.kind).includes("寒");p===E?(se+=1.1,xe.push(`${H.label}之局得${b}${p},${ce?"解冻":"得润"}`)):p===ie&&(se-=.9,xe.push(`${H.label}之局再逢${b}${p},${ce?"冻木难生":"燥上加燥"}`)),I===E?(se+=.9,xe.push(`地支${x}${I}合调候`)):I===ie&&(se-=1,xe.push(`地支${x}${I}加重${H.label}`)),ce&&(p==="水"||I==="水")&&(se-=.3)}else H&&H.need&&(p===H.need.element||I===H.need.element)&&xe.push(`合调候(${H.need.element})`);const Oe=d(h.dayStem,b),Ne=c.favorTenGods.includes(Oe)?.3:0,Se=c.qt||null;Se&&Se.primary&&!c.avoid.includes(Y[Se.primary])&&(b===Se.primary?(se+=.3,xe.push(`天干${b}正是${Se.branch}月${Se.stem}日的首取(穷通宝鉴)`)):Se.yong.includes(b)&&!c.avoid.includes(Y[b])&&(se+=.15,xe.push(`天干${b}为穷通宝鉴次取`)));let ye=Math.round((se+Ne)*10)/10;ye=Math.max(-4,Math.min(4,ye));const Me=q.find(([E])=>ye>=E)[1];return{ganzhi:l,score:ye,tier:Me,stemTenGod:Oe,reasons:xe,note:`${Oe}运,${Me}(${ye})`}}function F({pillars:l,dayStem:h,monthBranch:c,strength:b,wuxing:x}){const p=r(l,h),I=K(l,h,c),H=Ae(l,h,c,b,x,p),he=[I,...H],se=Pe(h,c,b,x,Object.values(l).map(xe=>xe.branch));return{geju:he,primary:I,primaryName:I.name,godStats:p,yongshen:se,dayStem:h,monthBranch:c}}return{tenGod:d,elementRoles:u,tongguanOf:Re,scoreLuck:V,analyzeBaziFrame:F}})(),W.bazi=(function(){const{STEMS:P,BRANCHES:Q,TERM_NAMES:te,ganzhiName:J,dayGanzhiIndex:ne,jdToParts:T,partsToJd:v,sexagenaryIndex:Y,termWindow:m,previousJie:$,nextJie:A,equationOfTime:j,formatJd:y,xunKongOf:k}=W.calendar||{},{resolveAddress:re}=W.geo||{},{computeBaziShensha:S}=W.shensha||{},{assertCivil:M,daysInMonth:i}=W.validate||{},{applyDst:d}=W.dst||{},{nayinOf:a}=W.nayin||{},{SANHE:r}=W.sanhe||{},{analyzeBaziFrame:u,scoreLuck:g}=W.geju||{},_={子:["癸"],丑:["己","癸","辛"],寅:["甲","丙","戊"],卯:["乙"],辰:["戊","乙","癸"],巳:["丙","戊","庚"],午:["丁","己"],未:["己","丁","乙"],申:["庚","壬","戊"],酉:["辛"],戌:["戊","辛","丁"],亥:["壬","甲"]},K={寅:[["戊",7],["丙",7],["甲",16]],卯:[["甲",10],["乙",20]],辰:[["乙",9],["癸",3],["戊",18]],巳:[["戊",5],["庚",9],["丙",16]],午:[["丙",10],["己",9],["丁",11]],未:[["丁",9],["乙",3],["己",18]],申:[["戊",7],["壬",3],["庚",20]],酉:[["庚",10],["辛",20]],戌:[["辛",9],["丁",3],["戊",18]],亥:[["戊",7],["甲",5],["壬",18]],子:[["壬",10],["癸",20]],丑:[["癸",9],["辛",3],["己",18]]},R={甲:"木",乙:"木",丙:"火",丁:"火",戊:"土",己:"土",庚:"金",辛:"金",壬:"水",癸:"水"},ee={子:"水",丑:"土",寅:"木",卯:"木",辰:"土",巳:"火",午:"火",未:"土",申:"金",酉:"金",戌:"土",亥:"水"},ue={木:"火",火:"土",土:"金",金:"水",水:"木"},je={木:"土",土:"水",水:"火",火:"金",金:"木"},Ae=E=>P.indexOf(E)%2===0,ze=[1,.5,.3],ve=[1.2,.6,.3],Re={甲己:"土",乙庚:"金",丙辛:"水",丁壬:"木",戊癸:"火"},Pe=["甲庚","乙辛","丙壬","丁癸"],q={子丑:"土",寅亥:"木",卯戌:"火",辰酉:"金",巳申:"水",午未:"土"},V={寅卯辰:"木",巳午未:"火",申酉戌:"金",亥子丑:"水"},F=["子午","丑未","寅申","卯酉","辰戌","巳亥"],l=["子未","丑午","寅巳","卯辰","申亥","酉戌"],h=["子酉","丑辰","寅亥","卯午","巳申","未戌"],c=[["寅","巳","申"],["丑","戌","未"],["子","卯"]],b=["辰","午","酉","亥"],x=(E,ie,ce)=>E.includes(ie+ce)||E.includes(ce+ie);function p(E,ie){const ce=Object.keys(ue).find(f=>ue[f]===ie),ge=["year","month","day","hour"].map(f=>E[f].branch),oe=new Set(ge),Z={};for(const f of ge)Z[f]=1;const D=[],de=new Set,O=(f,G,L,ae)=>{const we=[];for(const z of[...f])(Z[z]??1)>L&&(Z[z]=L,we.push(z)),de.add(z);we.length&&L<1&&D.push(`${f}${ae}${G},${we.join("")}根气按${Math.round(L*10)}成计`)};for(const[f,G]of Object.entries(V))[...f].every(L=>oe.has(L))&&O(f,G,G===ie?1:G===ce?.6:.1,"三会");for(const[f,G]of Object.entries(r))[...f].every(L=>oe.has(L))&&O(f,G,G===ie?1:G===ce?.6:.2,"三合");for(let f=0;f<ge.length;f++)for(let G=f+1;G<ge.length;G++){const L=ge[f],ae=ge[G],we=q[L+ae]||q[ae+L];if(!we||de.has(L)&&de.has(ae))continue;const z=we===ie?1:we===ce?.8:.5,be=[];for(const fe of[L,ae])de.has(fe)||(Z[fe]??1)>z&&(Z[fe]=z,be.push(fe));be.length&&z<1&&D.push(`${L}${ae}合${we},${be.join("")}根气按${Math.round(z*10)}成计`)}return{factor:Z,notes:D,inJu:de}}const I=.3;function H(E,ie,ce){let ge=0;for(const oe of["year","month","day","hour"]){const Z=E[oe],D=ce[Z.branch]??1;D<=.1||Z.hidden.forEach((de,O)=>{R[de.stem]===ie&&(ge+=(ve[O]??.1)*D)})}return ge}function he(E){const ie=["year","month","day","hour"].map(f=>E[f].stem),ce=["year","month","day","hour"].map(f=>E[f].branch),ge=[];for(let f=0;f<4;f++)for(let G=f+1;G<4;G++){const L=ie[f],ae=ie[G];if(L===ae)continue;const we=Re[L+ae]||Re[ae+L];if(we){ge.push({text:`${L}${ae}合(化${we}待定)`,rank:0});continue}if(x(Pe,L,ae)){ge.push({text:`${L}${ae}相冲`,rank:1});continue}const z=R[L],be=R[ae];je[z]===be?ge.push({text:`${L}克${ae}`,rank:3}):je[be]===z&&ge.push({text:`${ae}克${L}`,rank:3})}const oe=[],Z=new Set(ce),D=[];for(const[f,G]of Object.entries(r))[...f].every(L=>Z.has(L))&&(oe.push({text:`${f}三合${G}`,rank:0}),D.push(f));const de=[];for(const[f,G]of Object.entries(V))[...f].every(L=>Z.has(L))&&(oe.push({text:`${f}三会${G}`,rank:0}),de.push(f));for(let f=0;f<4;f++)for(let G=f+1;G<4;G++){const L=ce[f],ae=ce[G];if(L===ae){b.includes(L)&&oe.push({text:`${L}${ae}自刑`,rank:2});continue}const we=q[L+ae]||q[ae+L],z=Object.keys(r).find(fe=>fe.includes(L)&&fe.includes(ae)),be=Object.keys(V).find(fe=>fe.includes(L)&&fe.includes(ae));if(we)oe.push({text:`${L}${ae}合${we}`,rank:0});else{if(z&&!D.includes(z)){const fe=z[1],Ye=L===fe||ae===fe?"半合":"拱合";oe.push({text:`${L}${ae}${Ye}${r[z]}`,rank:0})}if(be&&!de.includes(be)){const fe=Math.abs(be.indexOf(L)-be.indexOf(ae))===1;oe.push({text:`${L}${ae}${fe?"半会":"拱会"}${V[be]}`,rank:0})}}x(F,L,ae)&&oe.push({text:`${L}${ae}相冲`,rank:1}),x(l,L,ae)&&oe.push({text:`${L}${ae}相害`,rank:2}),x(h,L,ae)&&oe.push({text:`${L}${ae}相破`,rank:2});for(const fe of c)fe.includes(L)&&fe.includes(ae)&&oe.push({text:`${L}${ae}相刑`,rank:2})}const O=f=>{const G=new Set,L=[];for(const ae of[...f].sort((we,z)=>we.rank-z.rank))G.has(ae.text)||(G.add(ae.text),L.push(ae.text));return L};return{stems:O(ge),branches:O(oe)}}function se(E,ie){const ce=R[E],ge=R[ie],oe=Ae(E)===Ae(ie);return ce===ge?oe?"比肩":"劫财":ue[ce]===ge?oe?"食神":"伤官":je[ce]===ge?oe?"偏财":"正财":je[ge]===ce?oe?"七杀":"正官":ue[ge]===ce?oe?"偏印":"正印":"?"}function xe(E){return a(E).name}const Oe={0:1,2:2,4:3,6:4,8:5,10:6,12:7,14:8,16:9,18:10,20:11,22:0};function Ne(E,ie){const ce=J(E),ge=_[ce.branch];return{ganzhi:ce.name,stem:ce.stem,branch:ce.branch,stemElement:R[ce.stem],branchElement:ee[ce.branch],stemTenGod:ie?se(ie,ce.stem):null,hidden:ge.map((oe,Z)=>({stem:oe,element:R[oe],tenGod:ie?se(ie,oe):null,role:["本气","中气","余气"][Z]??"余气"})),nayin:xe(E)}}function Se(E,ie){const ce=T(E);if(ie==null||Number.isNaN(ie))return{offsetMinutes:0,jd:E,note:"未提供经度,按东八区平太阳时"};const ge=(ie-120)*4,oe=j(ce.year,ce.month,ce.day),Z=ge+oe;return{offsetMinutes:Math.round(Z*10)/10,jd:E+Z/1440,note:`经度差 ${ge.toFixed(1)} 分 + 均时差 ${oe.toFixed(1)} 分`}}function ye(E,ie,ce){const ge=K[E];if(!ge)return null;const oe=[];let Z=1;for(const[ae,we]of ge)oe.push({stem:ae,element:R[ae],from:Z,to:Z+we-1}),Z+=we;const D=Z-1,de=Math.max(1,Math.floor(ie)-Math.floor(ce+.5)+1),O=de>D,f=O?oe.length-1:oe.findIndex(ae=>de>=ae.from&&de<=ae.to),G=oe[f]||oe[oe.length-1],L=oe[f+1]||null;return{month:E,day:de,tableDays:D,segments:oe,active:G.stem,activeElement:G.element,segment:{from:G.from,to:G.to},next:L?{stem:L.stem,element:L.element,from:L.from,inDays:L.from-de}:null,inHidden:(_[E]||[]).includes(G.stem),beyond:O,note:"人元司权按「节」当日起算,节当日为第 1 日,日差用本盘所用时刻(含真太阳时)所在日计;本插件固定 30 日表(余气 → 中气 → 本气),第 31 日以后按本气算。只作解释层的一层细节,不改取格。"}}function Me(E){M(E);let{year:ie,month:ce,day:ge,hour:oe=0,minute:Z=0,gender:D="male"}=E;const de=E.lateZi!==!1,O=E.trueSolar!==!1,f=E.dst===!1?{applied:!1,note:null}:d({year:ie,month:ce,day:ge,hour:oe,minute:Z});f.applied&&(ie=f.year,ce=f.month,ge=f.day,oe=f.hour,Z=f.minute);const G=v({year:ie,month:ce,day:ge,hour:oe,minute:Z}),L=E.geo||(E.address?re(E.address):null),ae=typeof E.longitude=="number"?E.longitude:L&&typeof L.lon=="number"?L.lon:void 0,we=O?Se(G,ae):{offsetMinutes:0,jd:G,note:"未启用真太阳时"},z=we.jd,be=m(ie,{jieOnly:!0}),fe=$(be,z),Ye=A(be,z),Fe=be.find(C=>C.index===2&&C.year===ie),gn=Fe&&z<Fe.jd?ie-1:ie,An=((gn-4)%60+60)%60,Fn=P[An%10],$n=Oe[fe.index],Mn=(P.indexOf(Fn)%5*2+2)%10,hn=(($n-2)%12+12)%12,vn=(Mn+hn)%10,pn=Y(vn,$n),dn=Math.floor(z+.5),On=T(z).hour,_e=de&&On>=23?dn+1:dn,Tn=ne(_e),Ue=P[Tn%10],In=Math.floor((On+1)%24/2),We=(P.indexOf(Ue)%5*2%10+In)%10,Wn=Y(We,In),Ge={year:Ne(An,Ue),month:Ne(pn,Ue),day:Ne(Tn,Ue),hour:Ne(Wn,Ue)},Ce=P.indexOf(Fn)%2===0,on=Ce&&D==="male"||!Ce&&D==="female",mn=on?Ye.jd-z:z-fe.jd,_n=mn*4;let bn=Math.floor(_n/12),wn=Math.round(_n%12);wn>=12&&(wn-=12,bn+=1);const Sn=365.2422,Rn=Sn/3,Ln=on?Ye:fe,jn=z+mn*Rn,Cn=T(jn),Dn=(C,me)=>{const X=C.year+me;return{year:X,month:C.month,day:Math.min(C.day,i(X,C.month)),hour:C.hour,minute:C.minute}},xn=[],Gn=[];for(let C=1;C<=8;C++){const me=((pn+(on?C:-C))%60+60)%60,X=J(me),Ee=v(Dn(Cn,(C-1)*10)),Le=v(Dn(Cn,C*10));xn.push({step:C,startAge:bn+(C-1)*10,ganzhi:X.name,stem:X.stem,branch:X.branch,stemTenGod:se(Ue,X.stem),nayin:xe(me),fromDate:y(Ee),toDate:y(Le)}),Gn.push({step:C,ganzhi:X.name,fromJd:Ee,toJd:Le})}const an=Number(E.nowYear)||new Date().getFullYear(),nn=[];for(let C=an;C<an+10;C++){const me=((C-4)%60+60)%60;nn.push({year:C,age:C-gn+1,ganzhi:J(me).name,stemTenGod:se(Ue,J(me).stem)})}const Je={木:0,火:0,土:0,金:0,水:0};for(const C of Object.values(Ge))Je[C.stemElement]+=1,C.hidden.forEach((me,X)=>{Je[me.element]+=ze[X]??.1});for(const C of Object.keys(Je))Je[C]=Math.round(Je[C]*10)/10;const Hn=Math.floor(Tn/10)*10,Pn=[Q[(Hn+10)%12],Q[(Hn+11)%12]],Kn=["长生","沐浴","冠带","临官","帝旺","衰","病","死","墓","绝","胎","养"],Yn={甲:11,乙:6,丙:2,丁:9,戊:2,己:9,庚:5,辛:0,壬:8,癸:3},Xn=C=>P.indexOf(C)%2===0;function kn(C,me){const X=Yn[C],Ee=Q.indexOf(me),Le=Xn(C)?Ee-X:X-Ee;return Kn[(Le%12+12)%12]}const fn=Ge.month.branch,qn=S(Ge,Pn);for(const C of["year","month","day","hour"]){const me=Ge[C];me.dishi=kn(Ue,me.branch),me.zizuo=kn(me.stem,me.branch),me.kongwang=k(me.ganzhi),me.shensha=qn.detail[C].map(X=>X.name),me.shenshaDetail=qn.detail[C]}const En={寅:"木",卯:"木",巳:"火",午:"火",申:"金",酉:"金",亥:"水",子:"水",辰:"土",戌:"土",丑:"土",未:"土"},Ze=R[Ue],tn=En[fn];let Ke,Ve;Ze===tn?(Ke=3,Ve="旺"):ue[tn]===Ze?(Ke=2,Ve="相"):ue[Ze]===tn?(Ke=1,Ve="休"):je[Ze]===tn?(Ke=.5,Ve="囚"):(Ke=0,Ve="死");const sn=p(Ge,Ze);let rn=0;const en=[];for(const C of["year","month","day","hour"]){const me=Ge[C],X=sn.factor[me.branch]??1;let Ee=!1;me.hidden.forEach((Le,Te)=>{R[Le.stem]===Ze?(rn+=(ve[Te]??.1)*X,Ee=!0):ue[R[Le.stem]]===Ze&&(rn+=(ve[Te]??.1)*.4*X,Ee=!0)}),Ee&&en.push(me.branch)}let Xe=0;const zn=[],cn=[],yn=[];for(const C of["year","month","hour"]){const me=Ge[C].stem,X=R[me];if(X===Ze||ue[X]===Ze){const Ee=X===Ze?1:.8;H(Ge,X,sn.factor)>=I?Xe+=Ee:(Xe+=Ee*.5,yn.push(me)),zn.push(me)}else je[X]===Ze?(Xe-=1,cn.push(me)):je[Ze]===X?(Xe-=.8,cn.push(me)):(Xe-=.5,cn.push(me))}const ln=Math.round((Ke+rn+Xe)*10)/10,Qn=ln>=4?"身强":ln>=2.5?"偏强":ln>=1.5?"中和":ln>=.5?"偏弱":"身弱",Vn=sn.notes.length?`;合会折根:${sn.notes.join("、")}`:"",et=yn.length?`;虚透${yn.join("")}帮扶减半`:"",Zn={level:Qn,score:ln,detail:`月令${fn}${tn},日主${Ze}${Ve}(${Ke});通根${en.join("")||"无"}(${rn.toFixed(1)});天干帮扶${zn.join("")||"无"}/耗泄${cn.join("")||"无"}(${Xe.toFixed(1)})${Vn}${et}`,method:"月令权重 3/2/1/0.5/0 + 地支藏干通根(三会/三合/六合折根)+ 天干帮扶(虚透减半),量化后分档;属简化算法,非唯一流派",parts:{season:{branch:fn,element:tn,word:Ve,weight:Ke},roots:en,rootScore:Math.round(rn*10)/10,helpers:zn,drainers:cn,helpScore:Math.round(Xe*10)/10,structure:sn.notes,virtualHelpers:yn}},un=u({pillars:Ge,dayStem:Ue,monthBranch:fn,strength:Zn,wuxing:Je}),nt=(C,me)=>{if(!C||!me)return[];if(C===me)return b.includes(C)?["自刑"]:[];const X=[];(q[C+me]||q[me+C])&&X.push("合"),x(F,C,me)&&X.push("冲"),x(l,C,me)&&X.push("害"),x(h,C,me)&&X.push("破");for(const Ee of c)Ee.includes(C)&&Ee.includes(me)&&X.push("刑");return X},Nn=["year","month","day","hour"].map(C=>Ge[C].branch),Un=C=>{const me=new Set,X=[];for(const Ee of Nn)for(const Le of nt(Ee,C)){const Te=Le+Ee;me.has(Te)||(me.add(Te),X.push(Te))}return X};for(const C of xn)C.relations=Un(C.branch),C.luck=g(C.ganzhi,un);for(const C of nn)C.relations=Un(C.ganzhi[1]),C.luck=g(C.ganzhi,un);const Qe={year:"年柱",month:"月柱",day:"日柱",hour:"时柱"},e=(C,me)=>je[R[C]]===R[me],t=(C,me)=>typeof C!="string"||typeof me!="string"||C.length<2||me.length<2||!(C[0]in R)||!(me[0]in R)?!1:(e(C[0],me[0])||e(me[0],C[0]))&&x(F,C[1],me[1]),o=C=>{const me=m(C,{jieOnly:!0}).find(X=>X.index===2&&T(X.jd).year===C);return me?me.jd:v({year:C,month:2,day:4})};for(const C of nn){const me=o(C.year),X=o(C.year+1),Ee=Gn.filter(Te=>Te.fromJd<X&&Te.toJd>me),Le=[];for(const Te of Ee){Te.ganzhi===C.ganzhi?Le.push({type:"岁运并临",target:`第${Te.step}步大运`,detail:`大运与流年同为${C.ganzhi}`}):t(Te.ganzhi,C.ganzhi)&&Le.push({type:"运年反吟",target:`第${Te.step}步大运`,detail:`大运${Te.ganzhi}与流年${C.ganzhi}天克地冲`});for(const De of["year","month","day","hour"]){const Bn=Ge[De].ganzhi;Bn&&(Te.ganzhi===Bn?Le.push({type:"大运伏吟",target:`第${Te.step}步大运·${Qe[De]}`,detail:`大运${Te.ganzhi}与${Qe[De]}同干支`}):t(Te.ganzhi,Bn)&&Le.push({type:"大运反吟",target:`第${Te.step}步大运·${Qe[De]}`,detail:`大运${Te.ganzhi}与${Qe[De]}${Bn}天克地冲`}))}}for(const Te of["year","month","day","hour"]){const De=Ge[Te].ganzhi;De&&(C.ganzhi===De?Le.push({type:"流年伏吟",target:Qe[Te],detail:`流年${C.ganzhi}与${Qe[Te]}同干支`}):t(C.ganzhi,De)&&Le.push({type:"流年反吟",target:Qe[Te],detail:`流年${C.ganzhi}与${Qe[Te]}${De}天克地冲`}))}C.suiyun={dayun:Ee.map(Te=>({step:Te.step,ganzhi:Te.ganzhi})),signals:Le,note:"只标干支重复与天克地冲这类变动信号,不判吉凶;大运按该年立春到次年立春的区间取,交运落在年内时前后两步并列;大运与本命四柱的伏吟/反吟整步大运都在,逐年重复列出"}}const n=T(z),s=P.indexOf(Ge.month.stem),w=Q.indexOf(Ge.month.branch),N=J(Y((s+1)%10,(w+3)%12)),U=P.indexOf(Ge.day.stem),pe=Q.indexOf(Ge.day.branch),qe=J(Y((U+5)%10,(1-pe+12)%12)),le=Q.indexOf(Ge.hour.branch),ke=P.indexOf(Ge.year.stem),B=((ke*12+(27-w-le)%12+2)%60+60)%60,$e=((ke*12+(11+w+le)%12+2)%60+60)%60,He=J(B),Be=J($e),Ie=ye(Q[$n],dn,fe.jd);return Ie&&(Ie.term={name:fe.name,time:y(fe.jd)}),{system:"bazi",relations:he(Ge),palaces:{taiyuan:{ganzhi:N.name,note:"月干进一、月支进三"},taixi:{ganzhi:qe.name,note:"日干五合、日支六合"},minggong:{ganzhi:He.name,branch:He.branch,note:"生月与生时支合数定宫(27 减,取模后 +2);干随六十甲子"},shengong:{ganzhi:Be.name,branch:Be.branch,note:"生月与生时支合数定宫(11 加,取模后 +2);干随六十甲子"}},input:{civil:{year:ie,month:ce,day:ge,hour:oe,minute:Z},gender:D,longitude:ae??null,address:E.address||null,geo:L,lateZi:de,trueSolar:O,dst:{applied:!!f.applied,note:f.note||null}},solarTime:{civilText:`${ie}-${String(ce).padStart(2,"0")}-${String(ge).padStart(2,"0")} ${String(oe).padStart(2,"0")}:${String(Z).padStart(2,"0")}`,trueSolarText:y(z),offsetMinutes:we.offsetMinutes,note:f.applied?`${f.note};${we.note}`:we.note,lunarYearForPillar:gn},jieqi:{previous:{name:fe.name,time:y(fe.jd)},next:{name:Ye.name,time:y(Ye.jd)},nearBoundaryMinutes:Math.round(Math.min(z-fe.jd,Ye.jd-z)*1440)},renyuan:Ie,pillars:Ge,dayMaster:{stem:Ue,element:R[Ue],yinYang:Ae(Ue)?"阳":"阴"},wuxing:Je,kongwang:Pn,shensha:qn,dayun:{direction:on?"顺行":"逆行",rule:`${Ce?"阳":"阴"}年${D==="male"?"男":"女"}${on?"顺排":"逆排"}`,startAge:{years:bn,months:wn},toNextJieDays:Math.round(mn*100)/100,jiao:{at:y(jn),jd:Math.round(jn*1e6)/1e6,scaleDaysPerDay:Rn,yearDays:Sn,spanDays:Math.round(mn*1e4)/1e4,from:{name:Ln.name,time:y(Ln.jd)},frame:we.offsetMinutes?"真太阳时":"平太阳时",offsetMinutes:we.offsetMinutes,note:"三日折一年:出生到节令的真实间隔按 365.2422/3 放大后加到出生时刻;同一比例即「一日折四月、一时辰折十日」,每步大运在同月同日同时刻换"},list:xn},strength:Zn,frame:un,climate:un.yongshen.climate||un.yongshen.tiaohou||null,liunian:nn,liunianFrom:an}}return{HIDDEN_STEMS:_,RENYUAN_TABLE:K,STEM_ELEMENT:R,BRANCH_ELEMENT:ee,buildRelations:he,tenGod:se,nayin:xe,applyTrueSolar:Se,renyuanOf:ye,buildBazi:Me}})(),W["name-data"]=(function(){return{READING:[["梓","zi",3,11],["桐","tong",2,10],["楠","nan",2,13],["楷","kai",3,13],["松","song",1,8],["柏","bai",3,9],["枫","feng",1,13],["榕","rong",2,14],["槿","jin",3,15],["棠","tang",2,12],["楚","chu",3,13],["柯","ke",1,9],["桓","huan",2,10],["榆","yu",2,13],["栩","xu",3,10],["榛","zhen",1,14],["芸","yun",2,10],["芷","zhi",3,10],["芮","rui",4,10],["若","ruo",4,11],["茜","qian",4,12],["茵","yin",1,12],["茗","ming",2,12],["莎","sha",1,13],["茉","mo",4,11],["筱","xiao",3,13],["蓉","rong",2,16],["萱","xuan",1,15],["蕙","hui",4,18],["蕊","rui",3,18],["菲","fei",1,14],["蔓","man",4,17],["荣","rong",2,14],["茂","mao",4,11],["栋","dong",4,12],["梁","liang",2,11],["朴","pu",3,6],["本","ben",3,5],["林","lin",2,8],["森","sen",1,12],["枝","zhi",1,8],["果","guo",3,8],["禾","he",2,5],["秀","xiu",4,7],["穗","sui",4,17],["稼","jia",4,15],["颖","ying",3,16],["苗","miao",2,8],["菁","jing",1,14],["菡","han",4,14],["蕴","yun",4,22],["蕾","lei",3,19],["薇","wei",1,19],["薏","yi",4,19],["菀","wan",3,14],["荷","he",2,13],["莲","lian",2,17],["菱","ling",2,14],["苇","wei",3,15],["荻","di",2,13],["筠","yun",2,13],["笛","di",2,11],["杉","shan",1,7],["柠","ning",2,18],["桢","zhen",1,13],["樾","yue",4,16],["柘","zhe",4,9],["权","quan",2,22],["材","cai",2,7],["杭","hang",2,8],["枚","mei",2,8],["梧","wu",2,11],["竹","zhu",2,6],["简","jian",3,18],["策","ce",4,12],["筹","chou",2,20],["芬","fen",1,10],["芳","fang",1,10],["花","hua",1,10],["菊","ju",2,14],["兰","lan",2,23],["芝","zhi",1,10],["芹","qin",2,10],["荃","quan",2,12],["萃","cui",4,14],["蓁","zhen",1,16],["荞","qiao",2,18],["莞","wan",3,13],["萦","ying",2,16],["蔚","wei",4,17],["芃","peng",2,9],["芩","qin",2,10],["苡","yi",3,11],["莱","lai",2,14],["萌","meng",2,14],["葆","bao",3,15],["萧","xiao",1,18],["樟","zhang",1,15],["樱","ying",1,21],["栎","li",4,19],["棹","zhao",4,12],["楸","qiu",1,13],["槐","huai",2,14],["橙","cheng",2,16],["檀","tan",2,17],["炎","yan",2,8],["灿","can",4,17],["炫","xuan",4,9],["炜","wei",3,13],["烨","ye",4,14],["煜","yu",4,13],["熙","xi",1,13],["煊","xuan",1,13],["焕","huan",4,13],["熠","yi",4,15],["炅","jiong",3,8],["昱","yu",4,9],["晗","han",2,11],["旭","xu",4,6],["昊","hao",4,8],["晟","sheng",4,11],["晨","chen",2,11],["景","jing",3,12],["曜","yao",4,18],["曦","xi",1,20],["朗","lang",3,11],["昭","zhao",1,9],["昕","xin",1,8],["昀","yun",2,8],["暖","nuan",3,13],["灵","ling",2,24],["丹","dan",1,4],["彤","tong",2,7],["冉","ran",3,5],["南","nan",2,9],["丰","feng",1,18],["日","ri",4,4],["阳","yang",2,17],["光","guang",1,6],["亮","liang",4,9],["明","ming",2,8],["晶","jing",1,12],["晴","qing",2,12],["夏","xia",4,10],["智","zhi",4,12],["卓","zhuo",2,8],["乐","le",4,15],["恺","kai",3,14],["恬","tian",2,10],["甜","tian",2,11],["亭","ting",2,9],["俊","jun",4,9],["丙","bing",3,5],["丁","ding",1,2],["鼎","ding",3,13],["陶","tao",2,16],["熹","xi",1,16],["炀","yang",2,13],["烜","xuan",3,10],["暻","jing",3,16],["晖","hui",1,13],["晔","ye",4,16],["旻","min",2,8],["晏","yan",4,10],["晓","xiao",3,16],["暄","xuan",1,13],["昆","kun",1,8],["伶","ling",2,7],["坤","kun",1,8],["垚","yao",2,9],["培","pei",2,11],["城","cheng",2,10],["域","yu",4,11],["坚","jian",1,11],["墨","mo",4,15],["均","jun",1,7],["坦","tan",3,8],["基","ji",1,11],["堂","tang",2,11],["圣","sheng",4,13],["在","zai",4,6],["岳","yue",4,8],["峰","feng",1,10],["峻","jun",4,10],["岚","lan",2,12],["岩","yan",2,8],["崇","chong",2,11],["岐","qi",2,7],["屿","yu",3,17],["磊","lei",3,15],["尧","yao",2,12],["圆","yuan",2,13],["恩","en",1,10],["惟","wei",2,11],["轩","xuan",1,10],["逸","yi",4,15],["山","shan",1,3],["岸","an",4,8],["岑","cen",2,7],["巍","wei",1,21],["嵩","song",1,13],["岭","ling",3,17],["奥","ao",4,13],["宜","yi",2,8],["容","rong",2,10],["意","yi",4,13],["依","yi",1,8],["悠","you",1,11],["维","wei",2,14],["纬","wei",3,15],["永","yong",3,5],["远","yuan",3,17],["辰","chen",2,7],["壁","bi",4,16],["田","tian",2,5],["由","you",2,5],["画","hua",4,12],["延","yan",2,7],["建","jian",4,9],["音","yin",1,9],["韵","yun",4,19],["玮","wei",3,14],["雍","yong",1,13],["懿","yi",4,22],["宇","yu",3,6],["亦","yi",4,6],["安","an",1,6],["宁","ning",2,14],["锋","feng",1,15],["钢","gang",1,16],["钧","jun",1,12],["铭","ming",2,14],["锐","rui",4,15],["锡","xi",1,16],["锦","jin",3,16],["鑫","xin",1,24],["键","jian",4,17],["鉴","jian",4,22],["钦","qin",1,12],["镇","zhen",4,18],["铮","zheng",1,16],["钰","yu",4,13],["铠","kai",3,18],["珊","shan",1,10],["珠","zhu",1,10],["琳","lin",2,13],["琦","qi",2,13],["琪","qi",2,13],["瑜","yu",2,14],["瑞","rui",4,14],["瑄","xuan",1,14],["璇","xuan",2,16],["璟","jing",3,17],["璐","lu",4,18],["瑾","jin",3,16],["珏","jue",2,9],["环","huan",2,18],["玲","ling",2,10],["珑","long",2,21],["瑶","yao",2,15],["莹","ying",2,15],["铎","duo",2,21],["金","jin",1,8],["秋","qiu",1,9],["书","shu",1,10],["舒","shu",1,12],["善","shan",4,12],["信","xin",4,9],["修","xiu",1,10],["素","su",4,10],["静","jing",4,16],["心","xin",1,4],["新","xin",1,13],["正","zheng",4,5],["世","shi",4,5],["少","shao",3,4],["西","xi",1,6],["白","bai",2,5],["辛","xin",1,7],["成","cheng",2,7],["利","li",4,7],["剑","jian",4,15],["刚","gang",1,10],["则","ze",2,9],["初","chu",1,7],["硕","shuo",4,14],["尚","shang",4,8],["臣","chen",2,6],["川","chuan",1,3],["舟","zhou",1,6],["州","zhou",1,6],["祖","zu",3,10],["祥","xiang",2,11],["禄","lu",4,13],["禧","xi",3,17],["珍","zhen",1,10],["宣","xuan",1,9],["序","xu",4,7],["谦","qian",1,17],["赞","zan",4,19],["超","chao",1,12],["锴","kai",3,17],["承","cheng",2,8],["语","yu",3,14],["诺","nuo",4,16],["诗","shi",1,13],["梦","meng",4,14],["思","si",1,9],["悦","yue",4,11],["欣","xin",1,8],["嘉","jia",1,14],["佳","jia",1,8],["博","bo",2,12],["睿","rui",4,14],["知","zhi",1,8],["星","xing",1,9],["言","yan",2,7],["和","he",2,8],["江","jiang",1,7],["河","he",2,9],["海","hai",3,11],["洋","yang",2,10],["波","bo",1,9],["涛","tao",1,18],["涵","han",2,12],["清","qing",1,12],["澈","che",4,16],["澄","cheng",2,16],["润","run",4,16],["泽","ze",2,17],["沛","pei",4,8],["沁","qin",4,8],["泓","hong",2,9],["泉","quan",2,9],["汐","xi",1,7],["淇","qi",2,12],["鸿","hong",2,17],["滋","zi",1,13],["淼","miao",3,12],["雨","yu",3,8],["雪","xue",3,11],["霖","lin",2,16],["霏","fei",1,16],["露","lu",4,21],["霆","ting",2,15],["雯","wen",2,12],["霓","ni",2,16],["湉","tian",2,13],["沐","mu",4,8],["宸","chen",2,10],["然","ran",2,12],["文","wen",2,4],["月","yue",4,4],["水","shui",3,4],["冰","bing",1,6],["洁","jie",2,16],["浩","hao",4,11],["瀚","han",4,20],["渊","yuan",1,12],["澜","lan",2,21],["潮","chao",2,16],["溪","xi",1,14],["湘","xiang",1,13],["渝","yu",2,13],["深","shen",1,12],["湛","zhan",4,13],["汇","hui",4,13],["洲","zhou",1,10],["湾","wan",1,26],["云","yun",2,12],["风","feng",1,9],["北","bei",3,5],["冬","dong",1,5],["玄","xuan",2,5],["子","zi",3,3],["平","ping",2,5],["方","fang",1,4],["帆","fan",1,6],["航","hang",2,10],["敏","min",3,11],["慧","hui",4,15],["惠","hui",4,12],["霈","pei",4,15],["灏","hao",4,25],["湄","mei",2,13],["滨","bin",1,18],["洛","luo",4,10],["津","jin",1,10],["泊","bo",2,9],["沧","cang",1,14],["浦","pu",3,11]],SURNAME_STROKES:{王:4,李:7,张:11,刘:15,陈:16,杨:13,黄:12,赵:14,吴:7,周:8,徐:10,孙:10,马:10,朱:6,胡:11,郭:15,何:7,高:10,林:8,罗:20,郑:19,梁:11,谢:17,宋:7,唐:10,许:11,韩:17,冯:12,曹:11,彭:12,曾:12,萧:18,田:5,董:15,潘:16,袁:10,蔡:17,余:7,于:3,杜:7,叶:15,程:12,魏:18,吕:7,丁:2,任:6,姚:9,卢:16,姜:9,崔:11,钟:17,谭:19,陆:16,范:15,金:8,石:5,廖:14,贾:13,夏:10,韦:9,付:5,方:4,白:5,邹:17,孟:8,熊:14,秦:10,邱:12,江:7,尹:4,薛:19,段:9,雷:13,侯:9,龙:16,史:5,陶:16,黎:15,贺:12,顾:21,毛:4,郝:14,龚:22,邵:12,钱:16,严:20,武:8,戴:18,莫:13,孔:4,向:6,常:11,康:11,易:8,文:4,施:9,洪:10,安:6,颜:18,温:13,章:11,鲁:15,葛:15,伍:6,申:5,尤:4,焦:12,柳:9,邢:11,路:13,岳:8,乔:12,赖:20,万:15,苏:22,蒋:17,沈:8,汪:8,邓:19,覃:12,房:8,边:22,辛:7,涂:11,甘:5,封:9,储:18,邬:17,路:13,詹:13},SURNAME_READING:{王:["wang",2],李:["li",3],张:["zhang",1],刘:["liu",2],陈:["chen",2],杨:["yang",2],黄:["huang",2],赵:["zhao",4],吴:["wu",2],周:["zhou",1],徐:["xu",2],孙:["sun",1],马:["ma",3],朱:["zhu",1],胡:["hu",2],郭:["guo",1],何:["he",2],高:["gao",1],林:["lin",2],罗:["luo",2],郑:["zheng",4],梁:["liang",2],谢:["xie",4],宋:["song",4],唐:["tang",2],许:["xu",3],韩:["han",2],冯:["feng",2],曹:["cao",2],彭:["peng",2],曾:["zeng",1],萧:["xiao",1],田:["tian",2],董:["dong",3],潘:["pan",1],袁:["yuan",2],蔡:["cai",4],余:["yu",2],于:["yu",2],杜:["du",4],叶:["ye",4],程:["cheng",2],魏:["wei",4],吕:["lv",3],丁:["ding",1],任:["ren",2],姚:["yao",2],卢:["lu",2],姜:["jiang",1],崔:["cui",1],钟:["zhong",1],谭:["tan",2],陆:["lu",4],范:["fan",4],金:["jin",1],石:["shi",2],廖:["liao",4],贾:["jia",3],夏:["xia",4],韦:["wei",2],付:["fu",4],方:["fang",1],白:["bai",2],邹:["zou",1],孟:["meng",4],熊:["xiong",2],秦:["qin",2],邱:["qiu",1],江:["jiang",1],尹:["yin",3],薛:["xue",1],段:["duan",4],雷:["lei",2],侯:["hou",2],龙:["long",2],史:["shi",3],陶:["tao",2],黎:["li",2],贺:["he",4],顾:["gu",4],毛:["mao",2],郝:["hao",3],龚:["gong",1],邵:["shao",4],钱:["qian",2],严:["yan",2],武:["wu",3],戴:["dai",4],莫:["mo",4],孔:["kong",3],向:["xiang",4],常:["chang",2],康:["kang",1],易:["yi",4],文:["wen",2],施:["shi",1],洪:["hong",2],安:["an",1],颜:["yan",2],温:["wen",1],章:["zhang",1],鲁:["lu",3],葛:["ge",3],伍:["wu",3],申:["shen",1],尤:["you",2],焦:["jiao",1],柳:["liu",3],邢:["xing",2],路:["lu",4],岳:["yue",4],乔:["qiao",2],赖:["lai",4],万:["wan",4],苏:["su",1],蒋:["jiang",3],沈:["shen",3],汪:["wang",1],邓:["deng",4],覃:["tan",2],房:["fang",2],边:["bian",1],辛:["xin",1],涂:["tu",2],甘:["gan",1],封:["feng",1],储:["chu",3],邬:["wu",1],詹:["zhan",1],欧:["ou",1],阳:["yang",2],司:["si",1],上:["shang",4],官:["guan",1],诸:["zhu",1],东:["dong",1],皇:["huang",2],甫:["fu",3],尉:["yu",4],迟:["chi",2],令:["ling",4],狐:["hu",2],慕:["mu",4],徒:["tu",2],公:["gong",1]},DOUBLE_SURNAMES:{欧阳:{s:[15,17],py:"ouyang",tone:1},司马:{s:[5,10],py:"sima",tone:1},上官:{s:[3,8],py:"shangguan",tone:4},诸葛:{s:[15,15],py:"zhuge",tone:1},东方:{s:[8,4],py:"dongfang",tone:1},皇甫:{s:[9,7],py:"huangfu",tone:2},尉迟:{s:[11,19],py:"yuchi",tone:4},令狐:{s:[5,8],py:"linghu",tone:4},慕容:{s:[14,10],py:"murong",tone:4},宇文:{s:[6,4],py:"yuwen",tone:3},司徒:{s:[5,10],py:"situ",tone:1},夏侯:{s:[10,9],py:"xiahou",tone:4},公孙:{s:[4,10],py:"gongsun",tone:1}},SHULI_81:[null,["吉","太极之数"],["凶","两仪之数"],["吉","三才之数"],["凶","四象之数"],["吉","五行之数"],["吉","六爻之数"],["吉","七政之数"],["吉","八卦之数"],["凶","大成之数"],["凶","终结之数"],["吉","旱苗逢雨"],["凶","掘井无泉"],["吉","春日牡丹"],["凶","破兆之数"],["吉","福寿之数"],["吉","厚重之数"],["吉","刚强之数"],["吉","铁镜重磨"],["凶","多难之数"],["凶","屋下藏金"],["吉","明月中天"],["凶","秋草逢霜"],["吉","壮丽之数"],["吉","掘藏得金"],["吉","荣俊之数"],["凶","变怪之数"],["半吉","增长之数"],["凶","阔水浮萍"],["吉","智谋之数"],["半吉","非运之数"],["吉","春日花开"],["吉","宝马金鞍"],["吉","旭日升天"],["凶","破家之数"],["吉","高楼望月"],["凶","波澜重叠"],["吉","猛虎出林"],["半吉","磨铁成针"],["吉","富贵荣华"],["半吉","退安之数"],["吉","有德之数"],["半吉","寒蝉在柳"],["凶","散财破产"],["凶","烦闷之数"],["吉","顺风之数"],["凶","浪里淘金"],["吉","点石成金"],["吉","古松立鹤"],["半吉","转变之数"],["半吉","小舟入海"],["半吉","沉浮之数"],["吉","先见之明"],["半吉","曲卷难星"],["凶","石上栽花"],["半吉","善恶之数"],["凶","浪里行舟"],["吉","日照春松"],["半吉","晚行遇月"],["凶","寒蝉悲风"],["凶","无谋之数"],["吉","牡丹芙蓉"],["凶","衰败之数"],["吉","舟归平海"],["凶","非命之数"],["吉","巨流归海"],["凶","岩头步马"],["吉","通达之数"],["吉","顺风吹帆"],["凶","非业之数"],["凶","残菊经霜"],["半吉","石上金花"],["凶","劳苦之数"],["半吉","志高力微"],["凶","残菊逢霜"],["半吉","退守之数"],["凶","离散之数"],["半吉","半吉之数"],["半吉","晚苦之数"],["凶","云头望月"],["半吉","遁吉之数"],["吉","万物回春"]]}})(),W.name=(function(){const{buildBazi:P}=W.bazi||{},{assertCivil:Q}=W.validate||{},{READING:te,SURNAME_STROKES:J,SURNAME_READING:ne,DOUBLE_SURNAMES:T,SHULI_81:v}=W["name-data"]||{},Y={木:"火",火:"土",土:"金",金:"水",水:"木"},m={木:"土",土:"水",水:"火",火:"金",金:"木"},$={火:"木",土:"火",金:"土",水:"金",木:"水"},A={土:"木",水:"土",火:"水",金:"火",木:"金"},j=["木","火","土","金","水"],y=[["梓","木","梓树,喻成长、手艺与念乡","n"],["桐","木","梧桐,高洁、引来凤凰","n"],["楠","木","楠木,坚韧贵重","n"],["楷","木","楷模,端正可法","m"],["松","木","松柏常青,坚韧长寿","m"],["柏","木","柏树,刚直耐寒","m"],["枫","木","枫叶,热烈与秋意","n"],["榕","木","榕树,荫庇包容","n"],["槿","木","木槿,朝开暮落、坚韧","f"],["棠","木","海棠,明媚雅致","f"],["楚","木","清楚、楚楚有致","n"],["柯","木","草木枝干,条理分明","m"],["桓","木","桓桓武貌,栋梁","m"],["榆","木","榆树,安稳敦厚","n"],["栩","木","栩栩生动","n"],["榛","木","榛果,丰实","n"],["芸","木","芸香,清雅好学","f"],["芷","木","白芷,芳洁","f"],["芮","木","草初生,柔而韧","f"],["若","木","若木,从容","f"],["茜","木","茜草,明丽","f"],["茵","木","绿茵,葱茏","f"],["茗","木","茶芽,清雅","f"],["莎","木","莎草,柔韧","f"],["茉","木","茉莉,素净芬芳","f"],["筱","木","小竹,清秀有节","f"],["蓉","木","芙蓉,明艳","f"],["萱","木","萱草,忘忧","f"],["蕙","木","蕙兰,芳心","f"],["蕊","木","花蕊,含秀","f"],["菲","木","芳菲,繁茂","f"],["蔓","木","藤蔓,绵延","f"],["荣","木","繁荣,荣光","m"],["茂","木","茂盛,丰隆","m"],["栋","木","栋梁","m"],["梁","木","桥梁、栋梁","m"],["朴","木","质朴","m"],["本","木","根本","m"],["炎","火","火盛,热烈","m"],["灿","火","灿烂","n"],["炫","火","光彩炫目","m"],["炜","火","光明","m"],["烨","火","火光盛明","m"],["煜","火","照耀","m"],["熙","火","光明和乐","n"],["煊","火","温暖显赫","m"],["焕","火","焕然一新","m"],["熠","火","熠熠生辉","n"],["炅","火","日光","n"],["昱","火","日光,明亮","m"],["晗","火","天将明","f"],["旭","火","旭日初升","m"],["昊","火","广大如天","m"],["晟","火","光明兴盛","m"],["晨","火","清晨","n"],["景","火","光景、景仰","n"],["曜","火","日光照耀","m"],["曦","火","晨曦","n"],["朗","火","明朗","m"],["昭","火","昭明","n"],["昕","火","黎明","f"],["昀","火","日光","f"],["暖","火","温暖","f"],["灵","火","灵秀","f"],["丹","火","赤诚","f"],["彤","火","朱红","f"],["冉","火","冉冉上升","f"],["南","火","南方,向阳","n"],["坤","土","大地,厚德","m"],["垚","土","山高","m"],["培","土","培育","m"],["城","土","城池,坚固","m"],["域","土","疆域","m"],["坚","土","坚定","m"],["墨","土","笔墨,文气","n"],["均","土","均衡","m"],["坦","土","坦荡","m"],["基","土","根基","m"],["堂","土","堂堂正正","m"],["圣","土","圣明","m"],["在","土","存在、自在","n"],["岳","土","山岳","m"],["峰","土","山峰","m"],["峻","土","高峻","m"],["岚","土","山间雾气","f"],["岩","土","岩石,刚毅","m"],["崇","土","崇高","m"],["岐","土","岐山,分岔有路","m"],["屿","土","小岛","n"],["磊","土","磊落","m"],["尧","土","古圣王,高远","m"],["圆","土","圆满","f"],["恩","土","恩厚","n"],["惟","土","思惟","m"],["锋","金","锋芒","m"],["钢","金","刚强","m"],["钧","金","权衡、钧衡","m"],["铭","金","铭记","m"],["锐","金","锐进","m"],["锡","金","赐予","m"],["锦","金","锦绣","n"],["鑫","金","兴盛(三金)","m"],["键","金","关键、强健","m"],["鉴","金","明鉴","m"],["钦","金","钦敬","m"],["镇","金","镇守","m"],["铮","金","铮铮有声","m"],["钰","金","珍宝","n"],["铠","金","铠甲","m"],["珊","金","珊瑚","f"],["珠","金","明珠","f"],["琳","金","美玉","f"],["琦","金","美玉、奇伟","n"],["琪","金","美玉","f"],["瑜","金","美玉、瑜亮","n"],["瑞","金","祥瑞","n"],["瑄","金","璧玉","f"],["璇","金","美玉","f"],["璟","金","玉光","n"],["璐","金","美玉","f"],["瑾","金","美玉,谨守","f"],["珏","金","双玉","n"],["环","金","圆环,周全","f"],["玲","金","玲珑","f"],["珑","金","玲珑","f"],["瑶","金","瑶华","f"],["莹","金","晶莹","f"],["铎","金","铃铎,传声","m"],["江","水","江河,开阔","m"],["河","水","河流","m"],["海","水","海纳百川","m"],["洋","水","海洋,宽广","n"],["波","水","波澜","m"],["涛","水","波涛","m"],["涵","水","包涵、涵养","f"],["清","水","清澈","n"],["澈","水","澄澈","m"],["澄","水","澄明","n"],["润","水","温润","m"],["泽","水","恩泽","m"],["沛","水","充沛","m"],["沁","水","沁润","f"],["泓","水","水深而广","m"],["泉","水","源泉","n"],["汐","水","潮汐","f"],["淇","水","淇水","f"],["鸿","水","鸿鹄、宏大","m"],["滋","水","滋润","n"],["淼","水","水势浩渺","n"],["雨","水","甘霖","n"],["雪","水","洁白","f"],["霖","水","甘霖","m"],["霏","水","雨雪纷飞","f"],["露","水","露华","f"],["霆","水","雷霆","m"],["雯","水","云纹","f"],["霓","水","虹霓","f"],["湉","水","水流平缓","f"],["沐","水","沐浴,受润泽","n"],["宸","木","屋宇、北极星所居,喻尊贵","m"],["轩","土","高轩,气宇轩昂","m"],["逸","土","安逸、超逸","m"],["然","火","自然、坦然","n"],["承","金","承继担当","m"],["语","木","言语,温言","f"],["诺","火","诺言,信守","n"],["诗","金","诗书,文气","f"],["梦","木","梦想","f"],["思","金","思虑,才思","n"],["悦","金","喜悦","f"],["欣","木","欢欣","f"],["嘉","木","嘉美","n"],["佳","木","佳好","f"],["博","水","博学","m"],["文","水","文采","n"],["睿","金","睿智","m"],["宇","土","器宇、宇宙","m"],["亦","土","也,从容","n"],["知","火","知晓,明理","n"],["星","火","星辰","n"],["月","木","明月","f"],["言","木","言语,信","n"],["和","水","和顺","n"],["安","土","安宁","n"],["宁","火","安宁","f"],["林","木","林木成片,茂盛有荫","n"],["森","木","众木成林,森然","n"],["枝","木","枝条,生发","n"],["果","木","果实,有成","n"],["禾","木","禾苗,五谷初生","n"],["秀","木","禾吐穗,秀美出众","n"],["穗","木","谷穗,丰实","n"],["稼","木","庄稼,耕作有成","m"],["颖","木","禾颖,聪颖","n"],["苗","木","苗裔,初生有生机","n"],["菁","木","菁华,草木茂盛","f"],["菡","木","荷花含苞","f"],["蕴","木","蕴积,含而不露","f"],["蕾","木","花蕾,待放","f"],["薇","木","蔷薇,细而韧","f"],["薏","木","薏苡,清润","f"],["菀","木","草木茂盛","f"],["荷","木","荷花,出淤泥","f"],["莲","木","莲花,清直","f"],["菱","木","菱角,水生","f"],["苇","木","芦苇,柔韧","n"],["荻","木","荻草,秋声","n"],["筠","木","竹皮,竹之青","n"],["笛","木","竹笛,清音","n"],["杉","木","杉木,挺拔","n"],["柠","木","柠檬,清新","f"],["桢","木","桢干,栋梁材","m"],["樾","木","树荫,庇下","m"],["柘","木","柘木,坚韧","n"],["权","木","权衡,执中","m"],["材","木","木材,成材","m"],["杭","木","苏杭,舟行","n"],["枚","木","衔枚,静而进","n"],["梧","木","梧桐,栖凤","n"],["竹","木","竹,有节而虚心","n"],["简","木","简朴,简静","n"],["策","木","策谋,鞭策","m"],["筹","木","筹算,谋划","m"],["芬","木","芬芳","f"],["芳","木","芳华","f"],["花","木","花,明媚","f"],["菊","木","菊花,晚节","f"],["兰","木","兰花,幽香","f"],["芝","木","芝兰,瑞草","f"],["芹","木","芹献,谦诚","f"],["荃","木","荃草,香草","f"],["萃","木","荟萃,聚合","n"],["蓁","木","蓁蓁,草木盛","n"],["荞","木","荞麦,实而不华","f"],["莞","木","莞尔,浅笑","f"],["萦","木","萦绕,绵长","f"],["蔚","木","蔚然,文采盛","n"],["芃","木","芃芃,草木茂","n"],["芩","木","黄芩,草本","f"],["苡","木","薏苡,清润","f"],["莱","木","莱草,野而秀","n"],["萌","木","萌芽,生机","n"],["葆","木","永葆,守而不失","n"],["萧","木","萧然,清疏","n"],["樟","木","樟木,香而久","n"],["樱","木","樱花,明丽","f"],["栎","木","栎树,坚实","n"],["棹","木","舟棹,行水","n"],["楸","木","楸树,高直","n"],["槐","木","槐树,三公之位","n"],["橙","木","橙,明暖","n"],["檀","木","檀香,沉静","n"],["丰","火","丰盛、丰盈(繁体豐从豆,归火)","n"],["日","火","太阳,光明","m"],["阳","火","阳光,向阳而生","m"],["光","火","光明","n"],["亮","火","明亮,爽朗","m"],["明","火","光明、明理","n"],["晶","火","晶莹,三光","f"],["晴","火","晴朗,天开","f"],["夏","火","夏天,盛大","n"],["智","火","智慧,明达","m"],["卓","火","卓越,卓立","m"],["乐","火","和乐","n"],["恺","火","恺悌,和乐","m"],["恬","火","恬静","f"],["甜","火","甜美","f"],["亭","火","亭亭,端立","f"],["俊","火","俊朗,才俊","m"],["丙","火","天干丙,阳火","m"],["丁","火","天干丁,阴火","n"],["鼎","火","鼎立,厚重","m"],["陶","火","陶然,自得","n"],["熹","火","熹微,晨光","n"],["炀","火","火旺,炽盛","m"],["烜","火","烜赫,显明","m"],["暻","火","日光","n"],["晖","火","日晖,光彩","n"],["晔","火","光晔,明盛","n"],["旻","火","秋天,天高","m"],["晏","火","晏然,安和","n"],["晓","火","拂晓,天将明","f"],["暄","火","温暖,日暖","f"],["昆","火","昆山,同也","m"],["伶","火","伶俐,聪敏","f"],["山","土","山,稳重","m"],["岸","土","岸然,独立","m"],["岑","土","小山,高而静","n"],["巍","土","巍峨,高大","m"],["嵩","土","嵩山,高峻","m"],["岭","土","山岭,绵延","n"],["奥","土","深奥,蕴藉","m"],["宜","土","宜然,合度","n"],["容","土","包容,容仪","n"],["意","土","心意,诚意","f"],["依","土","依倚,亲近","f"],["悠","土","悠然,从容","f"],["维","土","维系,纲维","n"],["纬","土","经纬,有条","n"],["永","土","永恒,久长","n"],["远","土","高远","m"],["辰","土","星辰、辰时","m"],["壁","土","壁立,端正","m"],["田","土","田野,耕获","m"],["由","土","由来,自得","n"],["画","土","图画,文采","f"],["延","土","延展,绵长","m"],["建","土","建立,树也","m"],["音","土","音声,和鸣","f"],["韵","土","韵致,余响","f"],["玮","土","美玉,珍奇","m"],["雍","土","雍容,和穆","m"],["懿","土","懿德,美善","f"],["金","金","金,坚而贵","m"],["秋","金","秋收、成熟(秋属金,肃而收)","n"],["书","金","书卷,文墨","n"],["舒","金","舒展,从容","n"],["善","金","善良,善成","n"],["信","金","诚信,符信","m"],["修","金","修远,修身","m"],["素","金","素雅,本色","f"],["静","金","安静,沉静","f"],["心","金","心志,中藏","f"],["新","金","新意,日新","n"],["正","金","正直,端正","m"],["世","金","世代,绵延","m"],["少","金","少年,少壮","m"],["西","金","西方,金位","n"],["白","金","洁白,素净","n"],["辛","金","天干辛,阴金","n"],["成","金","成器,成事","m"],["利","金","利落,锋利","m"],["剑","金","剑,刚锐","m"],["刚","金","刚强,不屈","m"],["则","金","法则,有度","m"],["初","金","初心,开端","n"],["硕","金","硕大,学殖","m"],["尚","金","崇尚,尚贤","n"],["臣","金","臣,佐事","m"],["川","金","川流,通达","n"],["舟","金","舟行,济渡","n"],["州","金","州,聚落","n"],["祖","金","祖德,源远","m"],["祥","金","吉祥,祥瑞","n"],["禄","金","福禄,俸给","m"],["禧","金","禧庆,福","n"],["珍","金","珍宝,珍重","f"],["宣","金","宣明,布达","n"],["序","金","秩序,庠序","n"],["谦","金","谦逊,有终","m"],["赞","金","赞美,佐成","m"],["超","金","超越,越过","m"],["锴","金","精铁,坚刚","m"],["水","水","水,润下","n"],["冰","水","冰清,澄澈","f"],["洁","水","洁净,洁身","f"],["浩","水","浩大,广远","m"],["瀚","水","浩瀚,无涯","m"],["渊","水","渊深,有本","m"],["澜","水","波澜,壮阔","n"],["潮","水","潮涌,有信","n"],["溪","水","溪流,清浅","f"],["湘","水","湘水,清深","f"],["渝","水","渝水,守而不变","n"],["深","水","深厚,深藏","m"],["湛","水","湛然,清深","m"],["汇","水","汇聚,会归","n"],["洲","水","洲渚,水中地","n"],["湾","水","水湾,曲处","f"],["云","水","云行,舒卷","n"],["风","水","风雅,流动","n"],["北","水","北方,水位","n"],["冬","水","冬藏,静敛","f"],["玄","水","玄远,幽深","n"],["子","水","子,初生","m"],["平","水","平和,坦易","n"],["方","水","方正,有隅","n"],["帆","水","风帆,顺行","n"],["航","水","航行,济远","m"],["敏","水","敏思,捷悟","f"],["慧","水","慧心,明彻","f"],["惠","水","惠泽,施与","f"],["霈","水","霈雨,丰沛","m"],["灏","水","灏气,广大","m"],["湄","水","水湄,岸边","f"],["滨","水","水滨,近水","n"],["洛","水","洛水,清流","n"],["津","水","津渡,要处","n"],["泊","水","淡泊,自守","m"],["沧","水","沧海,苍茫","m"],["浦","水","浦,水滨","n"]],k=new Map,re=new Map;for(const[q,V,F,l]of te)re.has(q)||re.set(q,{py:V,tone:F,st:l});for(const q of y)if(!k.has(q[0])){const V=re.get(q[0])||{};k.set(q[0],{c:q[0],el:q[1],meaning:q[2],g:q[3],order:k.size,py:V.py||null,tone:V.tone||null,strokes:V.st||null})}const S={1:"木",2:"木",3:"火",4:"火",5:"土",6:"土",7:"金",8:"金",9:"水",0:"水"},M=(q,V)=>q===V?"同":Y[q]===V?"生":m[q]===V?"克":Y[V]===q?"被生":"被克";function i(q){let V=q;for(;V>81;)V-=80;if(!(V>=1))return null;const F=v[V];return F?{num:V,level:F[0],name:F[1]}:null}function d(q){const V={};for(const F of[q&&q.surnameStrokes,q&&q.strokeOverrides])if(!(!F||typeof F!="object"))for(const[l,h]of Object.entries(F))Number.isInteger(h)&&h>0&&(V[l]=h);return Object.keys(V).length?V:void 0}function a(q,V,F){if(V&&Number.isInteger(V[q])&&V[q]>0)return{strokes:V[q],source:"user"};const l=k.get(q);return l&&l.strokes?{strokes:l.strokes,source:"lib"}:F==="surname"&&J[q]?{strokes:J[q],source:"surname"}:null}function r(q,V){const F=k.get(q);if(F&&F.py)return{py:F.py,tone:F.tone};if(V==="surname"&&ne[q]){const[l,h]=ne[q];return{py:l,tone:h}}return null}function u(q,V,F){const l=[...String(q||"")],h=[...String(V||"")];if(!l.length||!h.length)return{available:!1,reason:"需要姓与名才能排五格"};if(l.length>2)return{available:!1,reason:"姓超过两字:五格只算单姓与常见复姓"};const c=l.length===2?T[q]:null,x=c&&!l.some(D=>F&&F[D])?c.s.map(D=>({strokes:D,source:"table"})):l.map(D=>a(D,F,"surname")),p=h.map(D=>a(D,F,"given")),I=[...l,...h].filter((D,de)=>!(de<l.length?x[de]:p[de-l.length]));if(I.length)return{available:!1,reason:`这些字没有康熙笔画数据,五格算不了:${I.join("、")}——可用 strokeOverrides 传入笔画后再算`,missing:I};const H=x.map(D=>D.strokes),he=p.map(D=>D.strokes),se=D=>D.reduce((de,O)=>de+O,0),xe=l.length===2,Oe=xe?se(H):H[0]+1,Ne=H[l.length-1]+he[0],Se=se(he)+(h.length===1?1:0),ye=se(H)+se(he),Me=l.length===1&&h.length===1?2:ye-Ne+1,E=[["天格",Oe],["人格",Ne],["地格",Se],["外格",Me],["总格",ye]].map(([D,de])=>({key:D,strokes:de,...i(de)})),ce=[Oe,Ne,Se].map(D=>D%10).map(D=>S[D]),ge=[{pair:"天与人",rel:M(ce[0],ce[1])},{pair:"人与地",rel:M(ce[1],ce[2])}],oe=ce[0]===ce[1]&&ce[1]===ce[2]?"三才同气,气脉集中":ge.every(D=>D.rel==="生"||D.rel==="同")?"一路相生,传统看作顺遂":ge.every(D=>D.rel==="克"||D.rel==="被克")?"相连相克,传统看作内外拉扯":`${ge.map(D=>`${D.pair}${D.rel}`).join("、")},吉凶各派看法不一`,Z=[...x,...p].some(D=>D.source==="user")?"mixed":"table";return{available:!0,surnameStyle:xe?"复姓":"单姓",strokes:[...l.map((D,de)=>({char:D,strokes:x[de].strokes,source:x[de].source,kind:"姓"})),...h.map((D,de)=>({char:D,strokes:p[de].strokes,source:p[de].source,kind:"名"}))],rows:E,sancai:{elements:ce,text:`${ce.join("")}(${oe})`,relations:ge},summary:E.map(D=>`${D.key}${D.strokes}${D.level}`).join(" "),source:Z}}const g=["zh","ch","sh","b","p","m","f","d","t","n","l","g","k","h","j","q","x","r","z","c","s","y","w"];function _(q){const V=String(q||"").toLowerCase();for(const F of g)if(V.startsWith(F))return{ini:F,fin:V.slice(F.length)};return{ini:"",fin:V}}const K={1:"一",2:"二",3:"三",4:"四"};function R(q){const V=[...String(q||"")];if(V.length<2)return{available:!1,reason:"至少两个字才谈得上音韵"};const F=V.map((p,I)=>{const H=r(p,I===0?"surname":"given");return H?{char:p,py:H.py,tone:H.tone,..._(H.py)}:{char:p,py:null,tone:null,ini:null,fin:null}}),l=F.filter(p=>!p.py).map(p=>p.char);if(l.length)return{available:!1,reason:`这些字没有读音数据:${l.join("、")}`,missing:l};const h=[];new Set(F.map(p=>p.tone)).size===1&&F.length>=2&&h.push({type:"tone",text:`全名都是${K[F[0].tone]}声,声调没有起伏`});for(let p=1;p<F.length;p++){const I=F[p-1],H=F[p];if(I.py===H.py&&I.tone===H.tone){h.push({type:"same",text:`「${I.char}${H.char}」同音同调(叠字或撞音)`});continue}I.ini&&I.ini===H.ini&&h.push({type:"initial",text:`「${I.char}${H.char}」同声母 ${I.ini}`}),I.fin===H.fin&&h.push({type:"final",text:`「${I.char}${H.char}」同韵母 ${I.fin}`})}const b=new Set(F.map(p=>p.ini).filter(Boolean));F.length>=3&&b.size===1&&h.push({type:"initial",text:`三字同声母 ${[...b][0]},连着读容易黏在一起`});const x=h.length===0?"顺口":h.length===1?"略拗":"拗口";return{available:!0,chars:F.map(p=>({char:p.char,py:p.py,tone:p.tone})),tonePattern:F.map(p=>p.tone).join("-"),issues:h,level:x}}function ee(q,V){const F=q&&q.charElements;if(!F||typeof F!="object")return null;const l=F[V];return j.includes(l)?l:null}function ue(q,V,F,l=3){const h=y.filter(c=>c[1]===q&&!F.has(c[0]));return h.sort((c,b)=>{const x=p=>p[3]===V||p[3]==="n"?1:0;return x(b)-x(c)}),h.slice(0,l).map(c=>({char:c[0],element:c[1],meaning:c[2]}))}const je={m:"男",f:"女",n:"中"};function Ae(q){const V=q&&q.level?q.level:null,F=q&&q.dayElement?q.dayElement:null;return!F||!V?{list:j.slice(),basis:"未取得旺衰:不筛五行,只做用字与字义建议"}:V==="身强"||V==="偏强"?{list:[A[F],Y[F],m[F]].filter(Boolean),basis:`${V}(${F}):宜克、泄、耗——用${A[F]}(克我)、${Y[F]}(我生)、${m[F]}(我克)`}:V==="身弱"||V==="偏弱"?{list:[F,$[F]].filter(Boolean),basis:`${V}(${F}):宜生、扶——用${F}(同我)、${$[F]}(生我)`}:{list:j.slice(),basis:`${V}:中和不偏,五行皆可用,以字义与音形为先`}}function ze(q){return k.get(q)||null}function ve(q){const V=String(q.surname||"").trim();if(!V)throw new Error("缺少姓氏:请给 surname(如「李」)");const F=String(q.givenName||"").trim();if(!F)throw new Error("缺少名字:请给 givenName(1–2 个汉字,如「沐宸」)");if([...F].length>2)throw new Error("名请给 1–2 个汉字;复姓请把复姓整体写在 surname,名只留 1–2 字");let l={list:[],basis:""},h=null,c=null;const b=Number.isInteger(q.year)&&Number.isInteger(q.month)&&Number.isInteger(q.day);if(b){Q(q,"birth");const E=P({year:q.year,month:q.month,day:q.day,hour:Number.isInteger(q.hour)?q.hour:12,minute:Number.isInteger(q.minute)?q.minute:0,gender:q.gender||"male",lateZi:q.lateZi!==!1,trueSolar:q.trueSolar!==!1,dst:q.dst!==!1,longitude:q.longitude,address:q.address,geo:q.geo});h={level:E.strength.level,score:E.strength.score,dayElement:E.pillars.day.stemElement},l=Ae(h),c={dayMaster:E.dayMaster,solarNote:E.solarTime?E.solarTime.note:""}}const x=q.gender==="female"?"f":"m",p=new Set([V,...F]),I=l.list.length?l.list:j.slice(),H=[...F].map(E=>{const ie=ze(E),ce=ee(q,E);return ie?{char:E,element:ie.el,meaning:ie.meaning,genderHint:je[ie.g],favorable:b?l.list.includes(ie.el):null,source:"lib",note:null}:ce?{char:E,element:ce,meaning:"字库未收录;五行按你指定的「"+ce+"」计",genderHint:null,favorable:b?l.list.includes(ce):null,source:"user",note:"此字五行由调用方指定,不是字库推断"}:{char:E,element:"未收录",meaning:"字库未收录,未推断五行(不猜)",genderHint:null,favorable:null,source:"none",note:b?"若想贴合命局,可换用下面的同喜用字":"字库未收录:给出生辰后可以看同喜用的替换字",suggest:b?I.flatMap(ge=>ue(ge,x,p,2)):[]}}),he=H.filter(E=>E.source==="lib").length,se=H.filter(E=>E.source==="none").length,xe=H.filter(E=>E.favorable===!0).length,Oe=H.length-se;let Ne;b?se===H.length?Ne=`两字都不在字库里,没法判断合不合喜用(喜用为 ${l.list.join("、")})。下面给了可替换的常用字,或把你自己认定的五行传进来。`:xe===Oe&&Oe>0?Ne=`用字都落在喜用(${l.list.join("、")})上,与命局方向一致。`:xe>0?Ne=`部分用字合喜用(${xe}/${Oe}),其余可再斟酌;喜用为 ${l.list.join("、")}。`:Ne=`用字未落在喜用(${l.list.join("、")})上;不必然是坏名,但若想贴合命局可换字再看。`:Ne="只做了字义与五行归类;给出生年月日才能判断用字是否合喜用。";const Se=d(q),ye=u(V,F,Se),Me=R(V+F);return{system:"name",action:"assess",surname:V,givenName:F,fullName:V+F,...b?{bazi:{...c,strength:h,favorable:l.list,basis:l.basis}}:{},chars:H,wuge:ye,phonetics:Me,stats:{chars:H.length,known:he,unknown:se,favorableCount:xe,libSize:y.length,wugeReady:ye.available===!0},verdict:Ne,notes:[`字之五行按通行字义/偏旁归类,自建字库共 ${y.length} 字(常用名用字为主);未收录的字不猜五行,如实标注,「用户指定」是你传入的归类。`,"五格按康熙字典繁体笔画计(氵→水4、艹→艸6、华→華14 这类换算),81 数理取通行本、各派对少数数取法有出入;姓氏笔画表没覆盖的姓或你想按别派算,可传 strokeOverrides 覆盖。","音韵只做机械检查(全名同调、相邻同声母/同韵母、叠字),不做语义谐音判断——谐音、方言读法还得自己读三遍。","起名只做用字参考,不替父母做决定。"]}}function Re(q){const V=String(q.surname||"").trim();if(!V)throw new Error("缺少姓氏:请给 surname(如「李」)");if(!Number.isInteger(q.year)||!Number.isInteger(q.month)||!Number.isInteger(q.day))throw new Error("生成候选名需要完整出生年月日(公历):不给生辰无法判断喜用五行");Q(q,"birth");const F=q.gender==="female"?"female":"male",l=Math.max(1,Math.min(20,Number.isInteger(q.limit)?q.limit:10)),h=P({year:q.year,month:q.month,day:q.day,hour:Number.isInteger(q.hour)?q.hour:12,minute:Number.isInteger(q.minute)?q.minute:0,gender:F,lateZi:q.lateZi!==!1,trueSolar:q.trueSolar!==!1,dst:q.dst!==!1,longitude:q.longitude,address:q.address,geo:q.geo}),c={level:h.strength.level,score:h.strength.score,dayElement:h.pillars.day.stemElement},b=Ae(c),x=y.filter(Z=>b.list.includes(Z[1])&&Z[0]!==V),p=F==="male"?"m":"f",I=[...V],H=d(q),he=I.map(Z=>a(Z,H,"surname")),se=I.length<=2&&he.every(Boolean),xe=se?he.reduce((Z,D)=>Z+D.strokes,0):0,Oe=se?he[he.length-1].strokes:0,Ne=Z=>{const D=i(Z);return D?D.level==="吉"?2:D.level==="半吉"?1:0:0},Se=new Map(x.map(Z=>[Z[0],(a(Z[0],H,"given")||{}).strokes||0])),ye=[];for(let Z=0;Z<x.length;Z++)for(let D=0;D<x.length;D++){if(Z===D)continue;const de=x[Z],O=x[D],f=z=>z[3]===p||z[3]==="n"?1:0,G=f(de)+f(O)-(de[3]!==p&&de[3]!=="n"&&O[3]!==p&&O[3]!=="n"?2:0),L=Se.get(de[0]),ae=Se.get(O[0]);let we=0;if(se&&L&&ae){const z=Oe+L,be=L+ae,fe=xe+L+ae;we=Ne(z)+Ne(be)+Ne(fe)+Ne(fe-z+1)}ye.push({name:de[0]+O[0],chars:[{char:de[0],element:de[1],meaning:de[2]},{char:O[0],element:O[1],meaning:O[2]}],elements:[de[1],O[1]],allFavorable:b.list.includes(de[1])&&b.list.includes(O[1]),genderScore:G,wugeScore:we,order:(Z*7+D*13)%9973})}const Me=Z=>Z.elements[0]!==Z.elements[1]?1:0;ye.sort((Z,D)=>D.allFavorable-Z.allFavorable||Me(D)-Me(Z)||D.wugeScore-Z.wugeScore||D.genderScore-Z.genderScore||Z.order-D.order);const E=[],ie=new Set,ce=new Set([V]),ge=new Set,oe=(Z,D,de)=>{const O=[...Z.name].sort().join("");if(ie.has(O)||D&&Z.chars.some(G=>ce.has(G.char)))return!1;const f=Z.elements.join("");return de&&ge.has(f)?!1:(ie.add(O),ge.add(f),Z.chars.forEach(G=>ce.add(G.char)),E.push({rank:E.length+1,name:V+Z.name,given:Z.name,chars:Z.chars,wuge:u(V,Z.name,H),phonetics:R(V+Z.name)}),!0)};for(const Z of ye){if(E.length>=l)break;oe(Z,!0,!0)}for(const Z of ye){if(E.length>=l)break;oe(Z,!0,!1)}for(const Z of ye){if(E.length>=l)break;oe(Z,!1,!1)}return{system:"name",action:"generate",surname:V,gender:F==="male"?"男":"女",bazi:{dayMaster:h.dayMaster,strength:c,favorable:b.list,basis:b.basis},candidates:E,notes:[`字库共 ${y.length} 字,只在喜用五行(${b.list.join("、")})里选字;未覆盖的生僻好字可用 charElements 指定五行后评估。`,"候选排序依次看:合喜用 → 两字异行 → 五格(人格/地格/总格/外格 吉多者先)→ 性别倾向 → 字库序,是排序不是「吉名」判定。",se?"五格按康熙字典繁体笔画与通行本 81 数理算;姓的笔画取自内置姓氏表,没覆盖的姓可传 surnameStrokes 或 strokeOverrides。":"姓的笔画不在内置姓氏表里,这一轮没按五格排序(不半算);可传 surnameStrokes 或 strokeOverrides 后重算。","音韵只做机械检查(同调、相邻同声母/同韵母、叠字),不做语义谐音判断——候选的音韵结果随每条一起给出。"]}}function Pe(q){return q.action==="generate"?Re(q):ve(q)}return{CHAR_LIB:y,shuliOf:i,wuge:u,splitPinyin:_,phonetics:R,favorableElements:Ae,assessName:ve,generateNames:Re,buildName:Pe}})(),W["bazi-words"]=(function(){const P={甲:{image:"参天之木",look:"身形多半偏修长,肩背挺,站着有股站相",temper:"直、有担当,认定的事不太会转弯",gift:"扛得起事,适合把一摊子组织起来",trap:"不会转弯,撞上南墙也硬顶"},乙:{image:"藤萝之木",look:"身形柔韧,气质亲和,不太有攻击性",temper:"柔中带韧,擅长借力,能屈能伸",gift:"协调、渗透,在缝隙里也能生长",trap:"太依赖环境,环境一换就慌"},丙:{image:"太阳之火",look:"面色偏红润,精神足,进门容易被注意到",temper:"外放热情,心里想什么脸上就写着什么",gift:"感染人、带动气氛,适合站到台前",trap:"三分钟热度,来得快去得也快"},丁:{image:"灯烛之火",look:"偏清瘦,眼神亮,动静之间有点静气",temper:"内敛细腻,认准一件事能守很久",gift:"专注、耐得住,适合做需要磨的活",trap:"敏感,容易在心里反复内耗"},戊:{image:"城墙之土",look:"骨架偏厚,给人稳当、压得住场的感觉",temper:"沉稳慢热,不轻易表态,表态了就算数",gift:"承载与守成,能把局面稳稳托住",trap:"太钝,机会过了才反应过来"},己:{image:"田园之土",look:"面目温和,身形圆润,没什么棱角",temper:"包容细致,想得多,习惯先照顾别人",gift:"经营与服务,把琐碎的事理顺",trap:"纠结,反复权衡反而错过时机"},庚:{image:"刀剑之金",look:"骨架硬朗,气场直接,说话不绕弯",temper:"果决、讲义气,眼里容不下拖泥带水",gift:"执行与开疆,难啃的骨头敢接",trap:"太刚,锋利的一面容易伤到亲近的人"},辛:{image:"珠玉之金",look:"清秀讲究,衣着细节看得出用心",temper:"精致敏锐,对分寸与体面很在意",gift:"审美与精细活,做得比说的好",trap:"挑剔,也容易被一句评价刺到"},壬:{image:"江河之水",look:"身形偏厚实,眉眼开阔,气度大",temper:"大开大合,爱自由,不喜欢被框住",gift:"统筹与流动,能把资源盘活",trap:"散漫,摊子铺开却收不回来"},癸:{image:"雨露之水",look:"清秀安静,存在感不抢,但耐看",temper:"细腻、直觉强,心事多半自己消化",gift:"感知与研究,能注意到别人漏掉的细节",trap:"多愁,遇事先退,容易错过表态的时机"}},Q={正官:{role:"规则与名分",gift:"守序可靠,答应的事会做到",trap:"太在意评价,放不开手脚",love:"重承诺,但不擅长把在意说出口",work:"适合在成体系的组织里按层级上升"},七杀:{role:"压力与冲劲",gift:"抗压强、敢担事,越难越来劲",trap:"急躁,习惯用硬碰解决问题",love:"容易被有主见的人吸引,也容易互相较劲",work:"适合高挑战、要快速决断的岗位"},正财:{role:"稳定收入与责任",gift:"务实会积累,账目清楚",trap:"算得太细,不敢为机会冒一点险",love:"重实际,用行动多于言语",work:"适合按劳取酬、积累型的路径"},偏财:{role:"机会与流动资源",gift:"善抓机会、人脉活络",trap:"铺得太开,钱和精力都容易留不住",love:"大方、桃花多,边界要自己划",work:"适合业务、投资、资源整合"},食神:{role:"表达与享受",gift:"会生活,也能把喜欢的事做成产出",trap:"太舒服就懒下来,节奏一松就拖",love:"温柔会照顾人,也怕麻烦",work:"适合技术、创作、餐饮、教育"},伤官:{role:"才华与不服",gift:"点子多、敢改,能做出别人做不出的东西",trap:"嘴上不饶人,赢了道理输了关系",love:"要求高,容易挑对方的刺",work:"适合改革、创意、专业型岗位"},正印:{role:"支持与学习",gift:"有耐心、学得进,靠得住",trap:"依赖心重,想得多做得少",love:"需要被理解与照顾",work:"适合研究、文教、需要资质的岗位"},偏印:{role:"偏门与钻研",gift:"冷门的门类也能钻透",trap:"孤,想法多但不爱解释",love:"需要空间,不喜欢被管",work:"适合专精技术、冷门专业"},比肩:{role:"同伴与自我",gift:"独立、扛得住,不轻易麻烦别人",trap:"固执,什么都想亲力亲为",love:"相处像朋友多过像恋人",work:"适合并肩作战或独立负责一块"},劫财:{role:"竞争与行动",gift:"行动快、敢抢,机会面前不犹豫",trap:"冲动,容易在钱和人情上破口",love:"来去都快,需要给彼此空间",work:"适合业务冲刺、竞争型岗位"},比劫:{role:"自我与同辈",gift:"独立、扛得住,不太依赖别人",trap:"固执,什么都想自己来",love:"相处像并肩的伙伴",work:"适合独立负责一块,或与同频的人并肩"},食伤:{role:"表达与产出",gift:"有想法,也做得出东西",trap:"话多或要求高,容易得罪人",love:"重视交流,也容易挑刺",work:"适合创作、技术、教学这类要表达的岗位"},财:{role:"资源与现实",gift:"务实、会算账、抓得住机会",trap:"把安全感全押在数字上",love:"重实际,用行动多于言语",work:"适合业务、财务、资源整合"},官杀:{role:"规则与压力",gift:"守序、抗压、担得起责任",trap:"绷得太紧,习惯用硬碰解决",love:"重承诺,也容易管得太宽",work:"适合体系内按层级上升,或高压高挑战的岗位"},印:{role:"支持与学习",gift:"有耐心、学得进、靠得住",trap:"想得多做得少,依赖现成的东西",love:"需要被理解与照顾",work:"适合研究、文教、需要资质的岗位"}},te={强:{泄:"这盘的问题是「力气有余、出口不够」:不缺劲头,缺的是把劲往哪使。先把方向定下来,比再多加一把力更管用。",制:"这盘气足又带压力:能扛事,但也容易一直绷着。学会把压力分出去,比硬顶更能长久。",耗:"这盘底子厚,适合在资源与实务上做文章:把力气换成看得见的成果,别停在想法里。"},弱:{生:"这盘底子偏薄,靠「有人托一把」最有效:找对平台、师友与环境,比自己硬撑省力得多。",比:"这盘单打独斗会累,找到同频的人并肩做,反而能把短板补上。",泄:"这盘不宜再往外耗,先收一收摊子,把根基补稳,再谈扩张。"},中:{default:"这盘五行相对均衡,没有哪一处特别极端:走哪条路都能走,靠的是选择与坚持,不是运气。"}};function J(m,$){const A=/强/.test(String(m||"")),j=/弱/.test(String(m||"")),y=Array.isArray($)?$:[String($||"")];if(!A&&!j)return te.中.default;const k=A?te.强:te.弱;for(const re of y){const S=/官杀/.test(re)?"制":/财/.test(re)?"耗":/食伤/.test(re)?"泄":/印/.test(re)?"生":/比劫/.test(re)?"比":"";if(S&&k[S])return k[S]}return A?k.泄:k.生}const ne=[[/自刑/,"自刑:自己跟自己较劲,多半是内耗而不是外来的事"],[/三会|三合/,"三合三会:几股力并成一股,做同类的事更容易成势"],[/六合|合/,"合:人事上容易谈拢,也容易被关系绑住、脱不开身"],[/相冲|冲/,"冲:桩子会晃,变动与拉扯偏多,宜先稳住再动"],[/相刑|刑/,"刑:规矩与情绪上的摩擦,事情不大但磨人"],[/相害|害/,"害:暗处的损耗,多是说不清的不顺"],[/相破|破/,"破:本来成形的事容易散,收尾要多花一分力"]];function T(m){const $=[];for(const A of Array.isArray(m)?m:[])for(const[j,y]of ne)if(j.test(A)&&!$.includes(y)){$.push(y);break}return $}function v(m){return Q[String(m||"")]||null}function Y(m){return P[String(m||"")]||null}return{STEM_PORTRAIT:P,TENGOD_PORTRAIT:Q,FRAME_TONE:te,frameToneOf:J,relationNotes:T,godPortraitOf:v,stemPortraitOf:Y}})(),W.followup=(function(){const{ZIWEI_STARS:P}=W["interpret-data"]||{},Q=[{key:"career",label:"事业",words:["事业","工作","跳槽","升职","创业","职业","岗位","离职","加薪","面试","offer"]},{key:"wealth",label:"财富",words:["财","钱","收入","投资","买房","存款","亏","赚","分红"]},{key:"love",label:"感情",words:["感情","婚","恋","对象","分手","复合","姻缘","结婚","桃花"]},{key:"health",label:"健康",words:["健康","病","身体","手术","失眠","体检","医院"]},{key:"study",label:"学业",words:["学业","考试","学习","考研","考公","证书","升学"]},{key:"travel",label:"出行",words:["出行","搬家","旅行","出国","迁","远行"]}],te={career:"官禄",wealth:"财帛",love:"夫妻",health:"疾厄",study:"官禄",travel:"迁移",overall:"命宫"},J=(S,M)=>{const i=String(S).match(/(20\d{2})\s*年?/);if(i)return Number(i[1]);const d=Array.isArray(M.liunian)&&M.liunian[0]?Number(M.liunian[0].year):null;return d?/明年/.test(S)?d+1:/后年/.test(S)?d+2:/去年/.test(S)?d-1:/今年|本年/.test(S)?d:null:null},ne=S=>Q.find(M=>M.words.some(i=>String(S).includes(i)))||null;function T(S,M){const i=J(M,S),d=ne(M),a=Array.isArray(S.liunian)?S.liunian:[],r=Array.isArray(S.dayun?.list)?S.dayun.list:[],u=a.map(g=>g.year);if(i&&!a.some(g=>Number(g.year)===i))return{ok:!1,year:i,topic:d,answer:`这一盘已排的流年范围是 ${u[0]}–${u[u.length-1]},没有 ${i} 年。可以把问题改到范围内,或用 asOf 指定你想看的年份重新排盘。`,evidence:[`已排流年:${u.join("、")}`],confidence:"弱"};if(i){const g=a.find(je=>Number(je.year)===i),_=r.find(je=>Number(je.startAge)<=Number(g.age)&&Number(g.age)<=Number(je.startAge)+9)||null,K=g.luck?.tier||"平",R=(g.luck?.reasons||[]).slice(0,3),ee=(g.relations||[]).join("、"),ue=d?Y(S,d.key):"";return{ok:!0,year:i,topic:d,answer:`${i} 年(${g.ganzhi})流年,十神为${g.stemTenGod||"—"},档位「${K}」;所行大运 ${_?`${_.ganzhi}(${_.luck?.tier||"平"})`:"未取到"}。${R.length?`理由:${R.join(",")}。`:""}${ee?`与该年地支相关的原局关系:${ee}。`:""}${ue}`,evidence:[`流年 ${g.year} ${g.ganzhi}·${g.stemTenGod||""}·${K}`,_?`大运 ${_.ganzhi}·${_.luck?.tier||"平"}`:"",ee?`原局关系 ${ee}`:"",d?`问题方向:${d.label}`:""].filter(Boolean),confidence:_&&R.length?"强":"中"}}if(d){const g={wealth:"overall",study:"work",travel:"overall"}[d.key]||d.key,_=(S.interpret?.dimensions||[]).find(K=>K.key===d.key||K.key===g);if(_){const K=S.frame&&S.frame.godStats&&S.frame.godStats.groups||{},R=d.key==="wealth"?` 财星权重 ${Number(K.财||0)}(只作结构参考,不含金额)。`:"";return{ok:!0,year:null,topic:d,answer:`按${d.label}这条线看:${_.text}${R}${_.advice?` 建议:${_.advice}`:""}`,evidence:(_.evidence||[]).slice(0,4),confidence:_.confidence||"中"}}}return{ok:!1,year:null,topic:d,answer:`这个问题里没有识别到具体的年份或方面。可以这样问:「2027 年事业怎么样」「财运如何」「感情在 2028 年」;已排流年是 ${u[0]}–${u[u.length-1]}。`,evidence:[`可问年份:${u.join("、")}`],confidence:"弱"}}function v(S,M){const i=J(M,S),d=ne(M),a=Array.isArray(S.liunian)?S.liunian:[];if(i&&!a.some(r=>Number(r.year)===i))return{ok:!1,year:i,topic:d,answer:`这一盘的流年表覆盖 ${a[0]?.year}–${a[a.length-1]?.year},没有 ${i} 年;可以换一个年份,或用 asOf 指定起点重新排盘。`,evidence:[`流年表:${a.map(r=>r.year).join("、")}`],confidence:"弱"};if(i){const r=a.find(g=>Number(g.year)===i),u=r.daxian||{};return{ok:!0,year:i,topic:d,answer:`${i} 年(${r.ganzhi},${r.age} 岁)流年命宫落在「${r.lifePalace?r.lifePalace.palace:"—"}」,四化为 ${(r.mutagen||[]).join("、")||"不明显"};所行大限${u.palace?`在${u.palace}(${u.start}–${u.end} 岁)`:"未取到"}。${d?`与「${d.label}」对应的宫位信号见下条依据。`:""}`,evidence:[`流年命宫 ${r.lifePalace?r.lifePalace.palace:"—"}(${r.lifePalace?r.lifePalace.branch:"—"})`,`四化 ${(r.mutagen||[]).join("、")||"不明显"}`,u.palace?`大限 ${u.palace}·${u.start}–${u.end}岁`:""].filter(Boolean),confidence:(r.mutagen||[]).length>=3?"强":"中"}}if(d){const r=te[d.key]||"命宫",u=(S.palaces||[]).find(g=>g.palace===r);if(u){const g=(u.stars||[]).filter(K=>K.type==="主星").map(K=>K.name),_=g.map(K=>P[K]?.trait).filter(Boolean).slice(0,2).join(";");return{ok:!0,year:null,topic:d,answer:`「${d.label}」看${r}:主星${g.length?g.join("、"):"无正曜(借对宫)"}${_?`——${_}`:""}。宫支${u.branch},${u.stems,""}生年四化与煞星的影响需结合报告里的对应分节一起看。`,evidence:[`${r} ${u.branch}·${g.join("、")||"无正曜"}`,...(u.shensha||[]).slice(0,3)],confidence:g.length?"强":"弱"}}}return{ok:!1,year:null,topic:d,answer:"没有识别到具体年份或方面。可以问「2028 年事业」「感情怎么样」「财运在 2030 年」;也可以直接问某个宫位,如「夫妻宫」。",evidence:[],confidence:"弱"}}function Y(S,M){return`这段时间可以重点对照报告里「${{career:"事业",wealth:"财富",love:"感情",health:"健康",study:"学业",travel:"出行"}[M]||"整体"}」一节看。`}function m(S,M){const i=ne(M),d=Array.isArray(S.interpret?.sections)?S.interpret.sections:[],a=i?d.find(u=>u.label.includes(i.label)||u.text.includes(i.label)):null;if(a)return{ok:!0,year:null,topic:i,answer:a.text,evidence:[`引用分节:${a.label}`],confidence:"中"};const r=d[0];return{ok:!1,year:null,topic:i,answer:r?`这一盘的追问需要落到具体方面(事业 / 财富 / 感情 / 健康 / 学业 / 出行)。先看「${r.label}」这一节,或把问题说得更具体一点。`:"这一盘暂时没有可追问的分节;先看完整解析,再问具体方面。",evidence:[],confidence:"弱"}}function $(S,M){const i=String(M||"").trim(),d=S&&S.system==="bazi"?T(S,i):S&&S.system==="ziwei"?v(S,i):m(S,i);return{question:i,...d}}const A={bazi:"八字(四柱)",ziwei:"紫微斗数",liuyao:"六爻",meihua:"梅花易数",daliuren:"大六壬",qimen:"奇门遁甲",tarot:"塔罗",hepan:"合盘",chenggu:"称骨",almanac:"黄历",zeri:"择日",star:"星座",numerology:"生命数字",mbti:"十六型人格",trend:"人生 K 线",fengshui:"风水",name:"起名",convert:"公农历互转"},j=Object.freeze({bazi:["基本信息","四柱(日主/十神/藏干)","旺衰·格局·用神","合冲·神煞","起运·大运·流年","古籍依据"],ziwei:["基本信息","命宫/身宫与五行局","十二宫(主星/辅煞/四化)","格局与三方四正","大限/流年","古籍依据"],liuyao:["所问与用神","本卦/变卦(世应/动爻/六亲)","月建日辰(旺衰/空破)","应期线索","卦辞与依据"],meihua:["所问与体用","本卦/互卦/变卦","五行生克","应期与依据"],daliuren:["天地盘(月将/贵人)","四课","三传","课体与神将","依据"],qimen:["四柱与局数","九宫(星门神/天盘干)","用神落宫","门宫·干宫·十干克应","旺衰·击刑入墓","依据"],tarot:["问题与牌阵","逐牌(正逆/元素)","牌间关系","综合倾向","边界"],fengshui:["坐向与元运","运盘/山盘/向盘","旺山旺向","取象与边界"]}),y=Object.freeze(["基本信息","盘面事实","结构与关系","倾向","边界"]);function k(S){return j[S]||y}function re(S,M={}){const i=A[S&&S.system]||S&&S.system||"未知体系",a=String(M&&M.question||"").trim()||"请先用一句白话讲清这张盘的主线,再指出最值得注意的一两处,并说明每处的具体依据。",r=Number.isFinite(M&&M.maxChars)&&M.maxChars>=400?M.maxChars:3e3,u=String(S&&S.summary||"").trim(),g=u.length>r,_=g?`${u.slice(0,r)}…(摘要已截断)`:u,K=M&&typeof M.interpret=="object"&&M.interpret||S&&typeof S.interpret=="object"&&S.interpret||null,R=String(K&&K.answer||"").trim(),ee=String(K&&K.plain||"").trim(),ue=[];R&&ue.push(`直答:${R}`),ee&&ue.push(`说人话:${ee}`);const Ae=["【命理追问】下面这张盘是命理插件刚排好的,请就着它回答我的问题;不用重新排盘,盘面字段已经够用。",`体系:${i}`,`所问:${a}`,"",...ue.length?["——开场结论(插件已按同一套规则算好,开场先沿用这句;措辞可改,口径别换)——",...ue,""]:[],"——盘面层次(从上到下读,别跳层)——",`${i}:${k(S&&S.system).join(" → ")}`,"先复述事实,再讲结构与时间;上一层没交代清楚,不要跳到下一层。","","——盘面摘要——",_||"(这张盘没有摘要字段,请先让我重新排一次。)","","——回答要求——","读者不懂命理。按下面的骨架答;任何一句他看不懂,就算没写完:",ue.length?"1) 开头一句结论:先沿用上面的「开场结论」,再用一句不用术语的话说清这张盘的主线——只读这一句也该有收获;":"1) 开头一句结论:不用术语,一句话说清这张盘的主线,只读这一句也该有收获;","2) 第二段只复述盘面骨架:按上面的层次用 2–4 行写事实(如四柱、格局、用神、大运),不掺倾向,让读者知道后面的判断从哪来;","3) 判断最多两条,按重要性排序,每条分四行写:"," 盘面|只引盘面已有的字(具体的柱、宫或爻、字段名),不掺解释;"," 白话|把上一行的术语当场翻成日常话——调候 / 化气 / 通关 / 空亡 / 争合 这类词必须落地,一个词只翻一次,不连续堆三个以上;"," 倾向|说「更可能……」,讲清它在现实里大概意味着什么,用概率语气;"," 边界|这条在什么情况下不成立;盘面没给的,直接写「这盘里看不出来」;","4) 收尾一句「如果只记一件事」:给一条能核对、能动手的观察点,并说明它出自上面哪条盘面依据;","5) 别把传统说法当成已证实的事实:不下绝对断言,也不用「肯定」「绝对」这类词,更不写「格局很好」「运程不顺」这种没有信息的空话。"].join(`
69
- `);return{text:Ae,question:a,system:S&&S.system||"",label:i,chars:Ae.length,truncated:g}}return{followup:$,READING_ORDERS:j,READING_ORDER_FALLBACK:y,readingOrderOf:k,askPrompt:re}})(),W.revise=(function(){const P=[{key:"ziwei",label:"紫微",re:/紫微|斗数/},{key:"bazi",label:"八字",re:/八字|四柱/},{key:"liuyao",label:"六爻",re:/六爻|摇卦/},{key:"qimen",label:"奇门",re:/奇门/},{key:"daliuren",label:"大六壬",re:/大六壬|六壬/},{key:"tarot",label:"塔罗",re:/塔罗|抽牌/},{key:"meihua",label:"梅花",re:/梅花/},{key:"hepan",label:"合盘",re:/合盘|合婚/},{key:"almanac",label:"黄历",re:/黄历|老黄历/},{key:"zeri",label:"择日",re:/择日|挑日子/},{key:"fengshui",label:"风水",re:/风水/},{key:"name",label:"起名",re:/起名|取名/},{key:"chenggu",label:"称骨",re:/称骨/},{key:"xiaoliuren",label:"小六壬",re:/小六壬/},{key:"star",label:"星座",re:/星座/},{key:"numerology",label:"生命数字",re:/生命数字|生命灵数/},{key:"mbti",label:"MBTI",re:/mbti|人格测试|十六型/i},{key:"trend",label:"人生 K 线",re:/k\s*线|人生曲线/i},{key:"convert",label:"公农历互转",re:/农历转公历|公历转农历|公农历/}],Q=[{key:"love",label:"感情",re:/感情|婚姻|恋爱|对象|夫妻/},{key:"wealth",label:"财运",re:/财运|财富|赚钱|收入|破财/},{key:"career",label:"事业",re:/事业|工作|升职|跳槽/},{key:"health",label:"健康",re:/健康|身体|疾病|病/},{key:"study",label:"学业",re:/学业|考试|考研|升学|读书/},{key:"travel",label:"出行",re:/出行|搬家|迁移|旅行|外地/}],te=/换成|改成|改为|换到|改看|再看|再看一下|换一套|排一?张|用|按|看/,J=m=>String(m||"").replace(/(出生|出生地|所在地|人)$/,"").replace(/[的了].*$/,"").trim();function ne(m){const $=String(m??"").trim(),A={},j=[],y=[];if(!$)return{text:"",patch:A,labels:j,ignored:y};if(te.test($)){for(const S of P)if(S.re.test($)){A.system=S.key,j.push({key:"system",label:"体系",value:S.key,display:S.label});break}}/女命|女性|换成女|改成女|女盘/.test($)?(A.gender="female",j.push({key:"gender",label:"性别",value:"female",display:"女"})):/男命|男性|换成男|改成男|男盘/.test($)&&(A.gender="male",j.push({key:"gender",label:"性别",value:"male",display:"男"})),/晚子时/.test($)&&(/不换日|不换天|算当日|归当日|按当日|当天/.test($)?(A.lateZi=!1,j.push({key:"lateZi",label:"晚子时",value:!1,display:"23:00 后仍算当日"})):/换日|算次日|归次日|按次日|第二天|次日/.test($)&&(A.lateZi=!0,j.push({key:"lateZi",label:"晚子时",value:!0,display:"23:00 后算次日"}))),/真太阳时/.test($)&&(/不用|不要|关闭|关掉|取消|不算/.test($)?(A.trueSolar=!1,j.push({key:"trueSolar",label:"真太阳时",value:!1,display:"用东八区平太阳时"})):(A.trueSolar=!0,j.push({key:"trueSolar",label:"真太阳时",value:!0,display:"按出生地经度校正"}))),/夏令时/.test($)&&(/不用|不要|关闭|关掉|取消|不校正/.test($)?(A.dst=!1,j.push({key:"dst",label:"夏令时",value:!1,display:"不自动校正 1986–1991 夏令时"})):(A.dst=!0,j.push({key:"dst",label:"夏令时",value:!0,display:"自动校正 1986–1991 夏令时"})));const k=$.match(/出生在\s*([\u4e00-\u9fa5]{2,12})/)||$.match(/出生地(?:改成|改为|换成|换到|是|为)?\s*([\u4e00-\u9fa5]{2,12})/)||$.match(/改到\s*([\u4e00-\u9fa5]{2,12})\s*出生/);if(k){const S=J(k[1]);S.length>=2&&(A.address=S,j.push({key:"address",label:"出生地",value:S,display:S}))}const re=$.match(/(?:看|查|问|到|到了|临近)\s*((?:19|20)\d{2})\s*年/)||$.match(/((?:19|20)\d{2})\s*年(?:的)?(?:运势|怎么样|如何|会怎样|流年)/);if(re){const S=Number(re[1]);A.asOf=`${S}-01-01T00:00`,j.push({key:"asOf",label:"流年基准",value:A.asOf,display:`${S} 年`})}else/(出生|生年)/.test($)&&/(19|20)\d{2}\s*年/.test($)&&y.push("出生年份没改:一句话改不出日与时辰,请直接传 datetime(如 1993-04-08T06:20)");for(const S of Q)if(S.re.test($)){A.direction=S.key,j.push({key:"direction",label:"询问方向",value:S.key,display:S.label});break}return/解读|详解|详细说|说人话/.test($)&&!/不要解读|不用解读|别解读/.test($)&&(A.withInterpret=!0,j.push({key:"withInterpret",label:"解读",value:!0,display:"附解析与详解"})),{text:$,patch:A,labels:j,ignored:y}}const T=P,v=Q;function Y(m,$){if($==null)return null;if(m==="system"){const A=P.find(j=>j.key===$);return A?A.label:String($)}if(m==="gender")return $==="female"?"女":$==="male"?"男":String($);if(m==="direction"){const A=Q.find(j=>j.key===$);return A?A.label:String($)}if(typeof $=="boolean")return $?"开":"关";if(m==="asOf"){const A=String($).match(/^(\d{4})/);return A?`${A[1]} 年`:String($)}return String($)}return{parseRevision:ne,REVISE_SYSTEMS:T,REVISE_DIRECTIONS:v,displayValue:Y}})(),W.handle=(function(){const{fail:P}=W.fail||{},Q="mc1.",te=new Set(["handle","trace","shadow","shadowVersion","diff","withInterpret","cross","verifyPast","rectify","events","ask","followup","question","geocode","caliber","revise"]),J=i=>i!==null&&typeof i=="object"&&!Array.isArray(i);function ne(i){if(Array.isArray(i))return`[${i.map(a=>ne(a===void 0?null:a)).join(",")}]`;if(J(i))return`{${Object.keys(i).filter(r=>i[r]!==void 0).sort().map(r=>`${JSON.stringify(r)}:${ne(i[r])}`).join(",")}}`;const d=JSON.stringify(i===void 0?null:i);return d===void 0?"null":d}function T(i){let d=2166136261;for(let a=0;a<i.length;a++)d^=i.charCodeAt(a),d=Math.imul(d,16777619)>>>0;return d.toString(16).padStart(8,"0")}const v="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";function Y(i){const d=[];for(const a of String(i)){let r=a.codePointAt(0);r<128?d.push(r):r<2048?d.push(192|r>>6,128|r&63):r<65536?d.push(224|r>>12,128|r>>6&63,128|r&63):d.push(240|r>>18,128|r>>12&63,128|r>>6&63,128|r&63)}return d}function m(i){let d="";for(let a=0;a<i.length;){const r=i[a];let u,g;r<128?(u=r,g=1):r<224?(u=r&31,g=2):r<240?(u=r&15,g=3):(u=r&7,g=4);for(let _=1;_<g;_++)u=u<<6|i[a+_]&63;a+=g,d+=String.fromCodePoint(u)}return d}function $(i){const d=Y(i);let a="";for(let r=0;r<d.length;r+=3){const u=d[r],g=d[r+1],_=d[r+2];if(a+=v[u>>2],a+=v[(u&3)<<4|(g===void 0?0:g)>>4],g===void 0||(a+=v[(g&15)<<2|(_===void 0?0:_)>>6],_===void 0))break;a+=v[_&63]}return a}function A(i){const d=[];let a=0,r=0;for(const u of i){const g=v.indexOf(u);if(g<0)throw new Error(`不是 base64url 字符:${u}`);a=a<<6|g,r+=6,r>=8&&(r-=8,d.push(a>>r&255))}return m(d)}function j(i={}){const d={};for(const[a,r]of Object.entries(i||{}))te.has(a)||r===void 0||(d[a]=r);return d}function y(i={}){const d=j(i);if(!Object.keys(d).length)return"";const a=$(ne(d));return`${Q}${a}.${T(a)}`}function k(i){if(typeof i!="string"||!i.trim())throw P("E_HANDLE","handle 必须是非空字符串;没拿到句柄时照常传 system + datetime 等原始参数即可");const d=i.trim();if(!d.startsWith(Q))throw P("E_HANDLE",`handle 前缀不对(应以 ${Q} 开头):句柄来自旧版本或复制不全,重新排一次盘取新的 handle`);const a=d.slice(Q.length),r=a.lastIndexOf(".");if(r<=0)throw P("E_HANDLE","handle 缺少校验位:复制时可能被截断,重新取一次");const u=a.slice(0,r),g=a.slice(r+1);if(T(u)!==g)throw P("E_HANDLE","handle 校验不通过:内容被改动或截断,重新排一次盘取新的 handle");let _;try{_=JSON.parse(A(u))}catch{throw P("E_HANDLE","handle 内容无法解析(不是本插件生成的句柄),重新排一次盘取新的 handle")}if(!J(_))throw P("E_HANDLE","handle 内容不是参数对象,重新排一次盘取新的 handle");return _}function re(i={}){if(!J(i))return i;const{handle:d,...a}=i;if(d==null||d==="")return{...a};const u={...k(d)};for(const[g,_]of Object.entries(a))_!==void 0&&(u[g]=_);return u}return{handlePayload:j,encodeHandle:y,decodeHandle:k,resolveHandle:re,HANDLE_PREFIX:Q,handleChecksum:T}})(),W.bridge=(function(){const{encodeHandle:P,decodeHandle:Q,HANDLE_PREFIX:te}=W.handle||{},{askPrompt:J}=W.followup||{},ne=200,T=60,v={bazi:"八字",ziwei:"紫微",liuyao:"六爻",meihua:"梅花",daliuren:"大六壬",qimen:"奇门",hepan:"合盘",tarot:"塔罗",almanac:"黄历",zeri:"择日",chenggu:"称骨",xiaoliuren:"小六壬",star:"星座",numerology:"生命数字",mbti:"人格",trend:"人生K线",fengshui:"风水",name:"起名",convert:"农历"},Y=d=>v[d]||d||"未知体系";function m(d){const a=String(d||""),r=a.indexOf("#");return r<0?a:a.slice(0,r)}function $(d){try{return encodeURIComponent(d)}catch{return""}}function A(d){try{return decodeURIComponent(d)}catch{return String(d||"")}}function j(d={},a={}){const r=a||{},g=String(r.handle||d&&d.handle||"").trim()||P(d||{});if(!g||!g.startsWith(te))return"";const _=String(r.question||"").trim().slice(0,ne),K=[`mp=${g}`];return _&&K.push(`q=${$(_)}`),`${m(r.base)}#${K.join("&")}`}function y(d){const a=String(d||"").trim();if(!a)return{ok:!1,code:"E_LINK",message:"没有链接内容:请粘贴带 #mp= 的完整链接"};let r="";const u=a.indexOf("#");if(u>=0&&a.slice(u+1).trim())r=a.slice(u+1).trim();else{const R=a.indexOf("?");R>=0&&a.slice(R+1).trim()?r=a.slice(R+1).trim():/^mp=/.test(a)&&(r=a)}if(!r)return{ok:!1,code:"E_LINK",message:"链接里没有 #mp= 片段:这不是本插件生成的深链"};const g={};for(const R of r.split("&")){if(!R)continue;const ee=R.indexOf("=");if(ee<=0)continue;const ue=R.slice(0,ee),je=R.slice(ee+1);ue==="mp"?g.mp=je:ue==="q"&&(g.q=je)}if(!g.mp)return{ok:!1,code:"E_LINK",message:"链接里没有 mp 参数(只有问题没有盘):无法还原盘面"};let _;try{_=Q(g.mp)}catch(R){return{ok:!1,code:R&&R.code||"E_HANDLE",message:R&&R.message||"句柄无法解析"}}const K=g.q?A(g.q).slice(0,ne):"";return{ok:!0,handle:g.mp,args:_,question:K,system:_.system||"",label:Y(_.system)}}const k=d=>{const a=/^(\d{4}-\d{1,2}-\d{1,2})[T ](\d{1,2}:\d{2})/.exec(String(d||"").trim());if(!a)return{date:"",time:""};const[r,u,g]=a[1].split("-");return{date:`${r}-${String(u).padStart(2,"0")}-${String(g).padStart(2,"0")}`,time:a[2].padStart(5,"0")}},re=["gender","address","trueSolar","lateZi","lines"];function S(d){const a=d&&d.ok?d:null,r=a&&a.args||{},u=k(r.datetime),g={tab:r.system||"",date:u.date,time:u.time,question:a&&a.question||"",restored:[],rest:{}};g.tab&&g.restored.push("system"),u.date&&g.restored.push("datetime");for(const _ of re)r[_]===void 0||r[_]===null||(g[_]=r[_],g.restored.push(_));g.question&&g.restored.push("question");for(const[_,K]of Object.entries(r))_==="system"||_==="datetime"||re.includes(_)||(g.rest[_]=K);return g}function M(d){const a=Object.keys(d&&d.rest||{});return a.length?`链接里还有 ${a.length} 项没填回表单(${a.join("、")}):这些只在引擎调用里生效,页面上按默认值显示。`:""}function i(d,a={}){const r=a||{},u=d||{},g=u.system||"",_=Y(g),K=String(r.question||"").trim(),R=String(u.handle||"").trim();let ee="";try{const Re=J(u,{question:K,interpret:r.interpret});ee=Re&&Re.text||String(u.summary||"")}catch{ee=String(u.summary||"")}const ue=K?K.length>T?`${K.slice(0,T)}…`:K:"(未填问题:按摘要讲主线)",je=R?`【命理追问】${_}|${R}|问:${ue}`:`【命理追问】${_}|问:${ue}`,Ae={};R&&(Ae.handle=R),g&&(Ae.system=g),K&&(Ae.question=K);const ze=JSON.stringify({tool:"metaphysics",v:1,args:Ae},null,2),ve=R?j({handle:R},{question:K,base:r.base}):"";return{system:g,label:_,handle:R,question:K,full:ee,brief:je,structured:ze,link:ve}}return{LINK_MAX_QUESTION:ne,askLink:j,parseAskLink:y,formOf:S,restNote:M,askPackages:i}})(),W.index=(function(){const{buildBazi:P}=W.bazi||{},{buildLiuyao:Q,tossLines:te,bodyLabels:J,yongshenOf:ne,yongshenStrength:T,fushenAccess:v,hexagramStrength:Y,jinTuiPower:m,yingqiWindow:$}=W.liuyao||{},{buildZiwei:A,BRIGHTNESS:j,flowOf:y,asOfParts:k,ZIWEI_SCHOOL_DEFAULTS:re}=W.ziwei||{},{drawTarot:S}=W.tarot||{},{buildMeihua:M}=W.meihua||{},{buildDaliuren:i}=W.daliuren||{},{buildHepan:d,tripleOf:a}=W.hepan||{},{buildZiweiHepan:r}=W["ziwei-hepan"]||{},{buildQimen:u,buildSnapshot:g}=W.qimen||{},{geocodeAddress:_,resolveAddress:K}=W.geo||{},{toJDN:R,ganzhiName:ee,dayGanzhiIndex:ue}=W.calendar||{},{randomOf:je,isSeed:Ae}=W.random||{},{encodeHandle:ze,decodeHandle:ve,resolveHandle:Re}=W.handle||{},{askLink:Pe,parseAskLink:q,formOf:V,restNote:F,askPackages:l}=W.bridge||{},{parseRevision:h,displayValue:c}=W.revise||{},{interpret:b,DIRECTIONS:x,DIRECTION_DEFAULT:p}=W.interpret||{},{followup:I,askPrompt:H}=W.followup||{},{crossCheck:he,crossText:se,crossSection:xe}=W.crosscheck||{},{pastSignals:Oe,verifyFit:Ne}=W.verify||{},{rectifyBirth:Se}=W.rectify||{},{buildAlmanac:ye}=W.almanac||{},{buildZeri:Me}=W.zeri||{},{buildChenggu:E}=W.chenggu||{},{buildXiaoliuren:ie}=W.xiaoliuren||{},{buildStar:ce}=W.star||{},{buildNumerology:ge}=W.numerology||{},{buildMbti:oe,mbtiPaper:Z}=W.mbti||{},{buildConvert:D}=W.convert||{},{classicsFor:de,classicsText:O,suiyunClassicOf:f,classicOf:G,CLASSIC_BOOKS:L}=W.classics||{},{diffObjects:ae,summarize:we,sortDiffs:z,labelOf:be,rootOf:fe,categoryOf:Ye,formatValue:Fe,CALIBER_SWITCHES:gn,viewRows:An}=W.diff||{},{canonicalJson:Fn,fingerprintOf:$n}=W.fingerprint||{},{buildTrend:Mn}=W.trend||{},{buildFengshui:hn}=W.fengshui||{},{buildName:vn}=W.name||{},{buildTrace:pn,traceMarkdown:dn,SYSTEM_LABEL:On}=W.trace||{},{fail:_e}=W.fail||{},{assertCivil:Tn}=W.validate||{},Ue=e=>String(e).padStart(2,"0"),In=["male","female"];function Jn(e,t){return t===2?e%4===0&&e%100!==0||e%400===0?29:28:[31,28,31,30,31,30,31,31,30,31,30,31][t-1]}function We(e,t=""){if(In.includes(e))return e;const o=e==null||e===""?"(未提供)":`「${e}」`;throw _e("E_INPUT",`${t?t+"的":""}gender 必须是 male 或 female${o};性别决定大运/大限顺逆,不能靠默认值`)}const Wn=["brightnessSchool","gengYearSihua","tianmaSchool","tiankongSchool","jiekongSchool","kuiyueSchool","tianshiTianshang","changshengSchool","lateZishi","shenzhuSchool"];function Ge(e){const t={};for(const o of Wn)e[o]!==void 0&&(t[o]=e[o]);return e.schools&&typeof e.schools=="object"&&(t.schools=e.schools),t}function Ce(e){if(typeof e!="string"||!e.trim())throw _e("E_INPUT","缺少 datetime(公历日期时间),例如 1990-05-12T14:30");const t=e.trim().match(/^(\d{4})-(\d{1,2})-(\d{1,2})(?:[T\s](\d{1,2}):(\d{1,2})(?::(\d{1,2}))?)?$/);if(!t)throw _e("E_INPUT",`无法解析 datetime:「${e}」,请用 1990-05-12T14:30 这种格式`);const o={year:Number(t[1]),month:Number(t[2]),day:Number(t[3]),hour:Number(t[4]??0),minute:Number(t[5]??0)};if(o.month<1||o.month>12)throw _e("E_INPUT",`月份超出范围:${o.month}`);const n=Jn(o.year,o.month);if(o.day<1||o.day>n)throw _e("E_INPUT",`日期不存在:${o.year}-${o.month}-${o.day}(${o.year} 年 ${o.month} 月只有 ${n} 天)`);if(o.hour>23||o.minute>59)throw _e("E_INPUT",`时间超出范围:${o.hour}:${o.minute}`);if(o.year<1600||o.year>2400)throw _e("E_RANGE",`年份 ${o.year} 超出可计算范围(1600–2400)`);return(o.year<1900||o.year>2100)&&(o.precision={level:"approx",note:`ΔT 模型仅覆盖 1900–2100,${o.year} 年按端点值外推,节气与朔望时刻可能有分钟级偏差,月柱在交节前后需复核`}),o}function on(e){const t=e.pillars,o=(X,Ee)=>`${X}:${Ee.ganzhi} ${Ee.stemTenGod?`十神 ${Ee.stemTenGod} `:""}藏干 ${Ee.hidden.map(Le=>`${Le.stem}(${Le.tenGod})`).join(" ")} 纳音 ${Ee.nayin} 地势 ${Ee.dishi} 自坐 ${Ee.zizuo} 空亡 ${Ee.kongwang.join("")}`+(Ee.shensha&&Ee.shensha.length?` 神煞 ${Ee.shensha.join("、")}`:""),n=Object.entries(e.wuxing).map(([X,Ee])=>`${X}${Ee}`).join(" "),s=e.palaces?`【胎元】${e.palaces.taiyuan.ganzhi} 胎息 ${e.palaces.taixi?e.palaces.taixi.ganzhi:"—"} 命宫 ${e.palaces.minggong.ganzhi} 身宫 ${e.palaces.shengong.ganzhi}`:"",w=e.dayun.list.slice(0,8).map(X=>`${X.startAge}岁 ${X.ganzhi}(${X.stemTenGod})${X.luck?`·${X.luck.tier}`:""}${X.relations&&X.relations.length?`[${X.relations.join("")}]`:""}`).join(" "),N=e.dayun.jiao&&e.dayun.jiao.at?`;交运 ${e.dayun.jiao.at}(${e.dayun.jiao.frame},距${e.dayun.jiao.from.name} ${e.dayun.jiao.spanDays} 天,三日折一年)`:"",U=e.jieqi.nearBoundaryMinutes<20?`
70
- ⚠ 出生时刻距「节」仅 ${e.jieqi.nearBoundaryMinutes} 分钟,而节气时刻本身有最多约 14 分钟的偏差,月柱与年柱建议人工复核。`:"",pe={year:"年",month:"月",day:"日",hour:"时"},qe=e.shensha&&e.shensha.groups&&e.shensha.groups.length?`神煞(${e.shensha.count} 见):`+e.shensha.groups.map(X=>`${X.cat}|`+X.items.map(Ee=>`${Ee.name}(${Ee.pillars.map(Le=>pe[Le]).join("")})`).join("、")).join(";"):"神煞:—",le=e.renyuan,ke=G("smt-renyuan"),B=le?`人元:${le.month}月第${le.day}日,${le.active}${le.activeElement}司权(${le.segments.map(X=>`${X.stem}${X.from}–${X.to}`).join(" ")})${le.beyond?";已过 30 日表,按本气算":""}${ke?`|原文见《${L[ke.book].name}·${ke.chapter}》`:""}`:"",$e=e.frame&&e.frame.yongshen&&e.frame.yongshen.disputed||[],He=$e.length?` 有争议:${$e.map(X=>`${X.element}(${X.favorRole};${X.climate}盘调候忌${X.element})`).join("、")}`:"",Be=new Set($e.map(X=>X.element)),Ie=e.frame&&e.frame.yongshen&&e.frame.yongshen.neutral||[],C=Ie.length?` 中性偏忌:${Ie.map(X=>`${X.element} ${X.weight} 分`).join("、")}(近零,不作实忌)`:"",me=e.frame?[`格局:${e.frame.primary?`${e.frame.primary.name}(${e.frame.primary.evidence})`:"—"}`,`   ${e.frame.geju.map(X=>`${X.name}[${X.kind}${X.status?`·${X.status}`:""}]`).join(" ")}`,`用神:喜${e.frame.yongshen.favor.join("")}(${e.frame.yongshen.favorTenGods.join("、")}) 忌${e.frame.yongshen.avoid.join("")}(${e.frame.yongshen.avoidTenGods.join("、")})${He}${C} ${e.frame.yongshen.method}`,`   ${e.frame.yongshen.detail}`,`寒暖:${e.climate?`${e.climate.label}(${(e.climate.evidence||[]).join("、")})${e.climate.need?` 调候取${e.climate.need.stem}${e.climate.need.element} 忌${e.climate.avoidElement}${Be.has(e.climate.avoidElement)?"(有争议)":""}`:""}`:"—"}`+(e.frame.yongshen.qt?` 穷通:${e.frame.yongshen.qt.month}${e.frame.yongshen.qt.stem}取${e.frame.yongshen.qt.yong.join("、")}(首取${e.frame.yongshen.qt.primary})`:""),`十神权重:${Object.entries(e.frame.godStats.groups).map(([X,Ee])=>`${X}${Ee}`).join(" ")}`]:[];return[`【四柱】${t.year.ganzhi} ${t.month.ganzhi} ${t.day.ganzhi} ${t.hour.ganzhi}`,`日主:${e.dayMaster.stem}${e.dayMaster.element}(${e.dayMaster.yinYang}) 空亡:${e.kongwang.join("")}`,o("年柱",t.year),o("月柱",t.month),o("日柱",t.day),o("时柱",t.hour),`五行:${n}`,...s?[s]:[],`日主强弱:${e.strength.level}(${e.strength.score}) ${e.strength.detail}`,...me,`天干关系:${e.relations&&e.relations.stems.length?e.relations.stems.join(" "):"—"}`,`地支关系:${e.relations&&e.relations.branches.length?e.relations.branches.join(" "):"—"}`,qe,`真太阳时:${e.solarTime.trueSolarText}(${e.input.geo?e.input.geo.note+";":""}${e.solarTime.note}) 晚子时:${e.input.lateZi?"23:00 后算次日":"23:00 后仍算当日"}`,`节气:上一节 ${e.jieqi.previous.name} ${e.jieqi.previous.time} 下一节 ${e.jieqi.next.name} ${e.jieqi.next.time}`,...B?[B]:[],`大运:${e.dayun.rule}(${e.dayun.direction}),${e.dayun.startAge.years}岁${e.dayun.startAge.months}个月起运${N}`,` ${w}`,`流年:${e.liunian.slice(0,10).map(X=>`${X.year}${X.ganzhi}(${X.stemTenGod})${X.luck?`·${X.luck.tier}`:""}`).join(" ")}`,(()=>{const X=e.liunian.filter(De=>De.suiyun&&De.suiyun.signals&&De.suiyun.signals.length);if(!X.length)return"岁运提示:近十年无岁运并临、运年反吟或大运/流年伏吟、反吟(只标干支,不判吉凶)";const Ee=De=>`${De.type}${(De.type.startsWith("流年")||De.type.startsWith("大运"))&&De.target?`(${De.target})`:""}`,Le=f(e),Te=Le?`|古籍见《${L[Le.book].name}·${Le.chapter}》`:"";return"岁运提示(只标干支变动,不判吉凶):"+X.map(De=>`${De.year}${De.ganzhi} ${De.suiyun.signals.map(Ee).join("/")}`).join(";")+Te})(),"(格局、用神、行运吉凶为扶抑+简化调候的量化提示,非断语。)"].join(`
71
- `)+U}function mn(e){const t=e.lunar.monthRaw||e.lunar.month,o=`${e.lunar.year}年${e.lunar.isLeap?`闰${t}`:e.lunar.month}月${e.lunar.day}日`+(e.lunar.isLeap&&e.lunar.month!==t?`(按${e.lunar.month}月起盘)`:""),n=(()=>{if(!e.schools)return"";const $e=Object.entries({brightnessSchool:"亮度",gengYearSihua:"庚干四化",tianmaSchool:"天马",tiankongSchool:"天空",jiekongSchool:"截空",kuiyueSchool:"魁钺",tianshiTianshang:"天伤天使",changshengSchool:"长生",lateZishi:"晚子时",shenzhuSchool:"身主"}).filter(([He])=>e.schools[He]&&e.schools[He]!==re[He]).map(([He,Be])=>`${Be} ${e.schools[He]}`);return $e.length?`【流派】${$e.join(" ")}`:""})(),s=B=>B.length?B.map($e=>`${$e.name}${$e.mutagen?`化${$e.mutagen}`:""}`).join(" "):"—",w=B=>`神煞:长生(${B.changsheng}) 博士(${B.boshi}) 将前(${B.jiangqian}) 岁前(${B.suiqi})`,N=[];for(const B of e.palaces){const $e=B.isSoul?"【命】":B.isBody?"【身】":"  ";N.push(` ${B.palace} ${B.branch} ${B.ganzhi} ${$e} 大限${String(B.daxian.start).padStart(2)}-${B.daxian.end} 小限${String(B.xiaoxian.age).padStart(2)} ${s(B.stars)}`),N.push(` ${w(B.shensha)}`)}const U=(e.liunian??[]).slice(0,6).map(B=>` ${B.year} ${B.ganzhi} ${String(B.age).padStart(2)}岁 命宫${B.lifePalace.branch}(${B.lifePalace.palace}) 流禄${B.liulu} 流羊${B.liuyang} 流陀${B.liutuo} | ${B.mutagen.map($e=>$e.replace("化","")).join(" ")}`+(B.mutagenHits?` 四化落宫 ${B.mutagenHits.map($e=>`${$e.star}${$e.type}→${$e.palace||"未上盘"}`).join("、")}`:"")+(B.sanfangMainStars?` 三方主星 ${B.sanfangMainStars.join("")}`:"")),pe=(e.patterns??[]).length?e.patterns.map(B=>`${B.name}(${B.tone==="good"?"吉格":B.tone==="bad"?"忌格":"中"}:${B.evidence})`).join(";"):"无明显格局(按内置规则)",qe=(e.daxianList??[]).slice(0,8).map(B=>` ${B.branch}宫(${B.palace})${B.ages[0]}-${B.ages[1]}岁 ${B.ganzhi} 会${B.mainStars.join("")||"—"} 化 ${B.mutagenHits.map($e=>`${$e.star}${$e.type}→${$e.palace||"未上盘"}`).join("、")}`),le=(()=>{const B=e.flyChains;if(!B)return"";const $e=Be=>{const Ie=B[Be];return!Ie||!Ie.steps.length?"":`${Be}:${Ie.path.join("→")}${Ie.closed?"(成环)":""}`},He=["禄","权","科","忌"].map($e).filter(Boolean).join(" ");return He?`【命宫飞星】${He}`:""})(),ke=(()=>{const B=e.flyComposite;if(!B||!Array.isArray(B.sources)||!B.sources.length)return"";const $e=B.labels.length?B.labels.join(" · "):"无同宫会聚",He=["禄","权","科","忌"].map(Be=>{const Ie=(B.byType&&B.byType[Be]||[]).filter(me=>!me.self),C=[...new Set(Ie.map(me=>String(me.to).replace(/宫$/,"")))];return C.length?`${Be}→${C.join("/")}`:""}).filter(Boolean).join(" ");return`【三方四正飞化】${B.sanfang.join("·")}:${$e}${He?` ${He}`:""}`})();return[`【农历】${o}(月首 ${e.lunar.monthStart}) 时支:${e.hourBranch} 年干支:${e.yearGanzhi}`,`【时刻】${e.solarTime?`${e.solarTime.civilText} → 真太阳时 ${e.solarTime.trueSolarText}${e.input.geo?"("+e.input.geo.note+")":""}`:""}`,`【命宫】${e.soul.branch}(${e.soul.ganzhi}·${e.soul.nayin}) 【身宫】${e.body.branch}(落${e.body.lands}) 【五行局】${e.bureau.name}`,`【紫微】${e.ziwei} 【天府】${e.tianfu} 【命主】${e.lifeMaster} 【身主】${e.bodyMaster}${e.bodyMasterNote?`(${e.bodyMasterSchool==="common"?"子午皆火星":"子铃午火"})`:""}`,`【大限】${e.daxian.rule},${e.daxian.startAge}岁起 【小限】${e.xiaoxianRule.direction}`,n,`【昌曲】文昌${e.changqu.wenchang.branch}(${e.changqu.wenchang.palace}${e.changqu.wenchang.mutagen?"·化"+e.changqu.wenchang.mutagen:""}) 文曲${e.changqu.wenqu.branch}(${e.changqu.wenqu.palace}${e.changqu.wenqu.mutagen?"·化"+e.changqu.wenqu.mutagen:""})`,`   ${e.changqu.relation} 入命三方:${e.changqu.inSoulSanfang?"是":"否"} 吸收面:${e.changqu.absorb.label}(${e.changqu.absorb.reason})`,le,ke,"十二宫:",...N,"大限(按起运年龄排序,前 8 限,宫干四化落宫):",...qe,"流年(前 6 年,完整 12 年在结构化数据里):",...U,`【格局】${pe}`,e.patternSummary?`【结构统计】吉格 ${e.patternSummary.good.length}、中性 ${e.patternSummary.neutral.length}、忌格 ${e.patternSummary.bad.length}${e.patternSummary.broken.length?`、破格 ${e.patternSummary.broken.length}(${e.patternSummary.broken.join("、")})`:""};${e.patternSummary.note}`:"",e.lunar.note?`注:${e.lunar.note}`:""].filter(Boolean).join(`
72
- `)}const _n=["旺","相","休","囚","死"];function bn(e){const t=e.states,o=e.month;if(!t||!o)return"无月令数据";const n=s=>_n.filter(w=>s&&Array.isArray(s[w])&&s[w].length).map(w=>`${w} ${s[w].join("/")}`).join(" ");return`月令 ${o.branch}(${o.element}) 门 ${n(t.gate)||"—"} 星 ${n(t.star)||"—"} 干 ${n(t.stem)||"—"}`}function wn(e){const t=e.palaces,o=n=>`${n.palace}宫 ${n.star||"—"}/${n.gate||"—"}/${n.god||"—"}${n.kong?" 空":""}${n.ma?" 马":""}`;return[`【四柱】${e.siZhu.year} ${e.siZhu.month} ${e.siZhu.day} ${e.siZhu.time}`,`【局数】${e.ju} 节气 ${e.jieqi}(${e.jieqiTime})`,`【值符】${e.zhiFu.star}(${e.zhiFu.gong}宫) 【值使】${e.zhiShi.gate}(${e.zhiShi.gong}宫) 旬首 ${e.xunshou}`,`【空亡】${e.kongWang.join("")||"—"} 驿马 ${e.ma.zhi||"—"}(${e.ma.gong||"—"}宫)`,`【宫位条件】击刑 ${(e.conditions&&e.conditions.jiXing||[]).map(n=>`${n.palace}宫${n.stem}`).join("、")||"无"} 三奇入墓 ${(e.conditions&&e.conditions.ruMu||[]).map(n=>`${n.palace}宫${n.stem}`).join("、")||"无"} 六仪入墓 ${(e.conditions&&e.conditions.liuYiRuMu||[]).map(n=>`${n.palace}宫${n.stem}`).join("、")||"无"}`,`【十干克应】${[...t,e.centerPalace].filter(n=>n&&n.ganYing).map(n=>`${n.palace}宫 ${n.ganYing.tian}加${n.ganYing.di} ${n.ganYing.name}`).join(" ")||"—"}`,`【旺衰】${bn(e)}`,`【九宫】${t.map(o).join(" ")}`,`※ 晚子时:${e.lateZiHourMode==="next-day"?"23:00 后归次日":"23:00 后仍归当日"}(可用 lateZiHourMode / lateZi 指定)`,`※ ${e.rules[e.rules.length-1]}`].join(`
73
- `)}function Sn(e){if(!e||!Array.isArray(e.pairs)||!e.pairs.length)return[];const t=["【三方合盘】三对两两并列,不合成「三人总分」",...e.pairs.map(o=>`· ${o.a}–${o.b}:${o.level||"—"}(${o.total==null?"—":`${o.total}/100`})`)];return e.best&&(e.spread>=3?t.push(` 最顺:${e.best.a}–${e.best.b}(${e.best.total}/100)`+(e.hardest?`;最需磨合:${e.hardest.a}–${e.hardest.b}(${e.hardest.total}/100)`:"")):t.push(` 三对分数接近(最高与最低相差 ${e.spread} 分),不排名`)),e.focus&&e.focus.spread>=3&&t.push(` 差异最大的一维:${e.focus.label}(三对相差 ${e.focus.spread} 分)`),e.note&&t.push(`※ ${e.note}`),t}function Rn(e){if(e.chart==="ziwei"){const n=s=>`${s.label}:${s.score>=0?"+":""}${s.score} ${s.text}`;return[`【紫微合盘】${e.score.level}(${e.score.total}/100)`,`你 命宫 ${e.a.soul.branch}(${e.a.soulStars.join("、")||"无主星"}) 夫妻 ${e.a.spouseStars.join("、")||"无主星"} ${e.a.bureau}`,`对方 命宫 ${e.b.soul.branch}(${e.b.soulStars.join("、")||"无主星"}) 夫妻 ${e.b.spouseStars.join("、")||"无主星"} ${e.b.bureau}`,...e.dimensions.map(n),...e.interactions.map(s=>` · ${s.text}`),...Sn(e.triple),...e.notes.map(s=>`※ ${s}`)].join(`
74
- `)}const t=n=>`${n.label}:${n.score>=0?"+":""}${n.score} ${n.text}`,o=n=>!n||!n.solarNote?"—":`${n.longitude==null?"未含经度修正":`${n.longitude}°E`}(${n.solarNote})`;return[`【合盘】${e.score.level}(${e.score.total}/100)`,`你 ${e.a.pillars.join(" ")} 日主 ${e.a.dayMaster} 日支 ${e.a.dayBranch} ${e.a.strength||""}`,`对方 ${e.b.pillars.join(" ")} 日主 ${e.b.dayMaster} 日支 ${e.b.dayBranch} ${e.b.strength||""}`,`真太阳时:你 ${o(e.a)};对方 ${o(e.b)}`,...e.dimensions.map(t),...e.detail?[`属相:${e.detail.yearRelation.label}——${e.detail.yearRelation.text}`,`日干:${e.detail.stems.text}`,...e.detail.crossBranches&&e.detail.crossBranches.length?[`跨盘地支:${e.detail.crossBranches.map(n=>`${n.name}(${n.a}${n.b})`).join("、")}`]:[],`年命纳音:${e.detail.nayin.a} / ${e.detail.nayin.b}(${e.detail.nayin.label})——${e.detail.nayin.text}`,`吉凶象:吉 ${e.detail.tally.good} / 凶 ${e.detail.tally.bad}(${e.detail.tally.lean};分档只数象,总分以上面三维度为准)`]:[],...Sn(e.triple),...e.notes.map(n=>`※ ${n}`)].join(`
75
- `)}function Ln(e){const t=e.sanChuan,o=n=>`${n.zhi}(${n.jiang}${n.liuQin}${n.xunKong?"空":""})`;return[`【日时】${e.dayGanZhi}日 ${e.hourZhi}时(${e.dayNight}贵) 月将 ${e.yueJiang.name}${e.yueJiang.zhi} 节气 ${e.jieqi.name} ${e.lateZi===!1?"晚子时不换日":"晚子时换日"}`,`【三传】初 ${o(t.chu)} → 中 ${o(t.zhong)} → 末 ${o(t.mo)}`,`【四课】${e.siKe.map(n=>`${n.position}课 ${n.shang}上${n.xia}下(${n.relation}·${n.jiang})`).join(" ")}`,`【天地盘】${e.pan.map(n=>`${n.di}:${n.tian}(${n.jiang})`).join(" ")}`,`【格局】${e.geJu.name}·${e.geJu.detail}`,...e.shensha&&e.shensha.length?[`【神煞】${e.shensha.map(n=>`${n.name}${n.branch}`).join(" ")}`]:[]].join(`
76
- `)}function jn(e){const t=[`【起卦】${e.source}`,`【本卦】${e.ben.name}(上${e.ben.upper} 下${e.ben.lower}) 动爻:${e.movingName}`,`【互卦】${e.hu.name} 【变卦】${e.bian.name} 【错卦】${e.cuo.name} 【综卦】${e.zong.name}`,`【体用】体 ${e.bodyUse.body.trigram}${e.bodyUse.body.element} 用 ${e.bodyUse.use.trigram}${e.bodyUse.use.element} ${e.bodyUse.level}`,`    ${e.bodyUse.relation}`],o=e.lines.slice().reverse().map(n=>` ${n.name} ${n.yinYang==="阳"?"━━━━━":"━━ ━━"}${n.moving?" ←动":""}`);return[...t,"【爻】",...o].join(`
77
- `)}function Cn(e){const t=[e.question?`【所问】${e.question}`:"(未填写提问)",`【牌阵】${e.spread}${e.castAt?` 抽牌于 ${e.castAt}`:""}`];for(const o of e.cards)t.push(` ${o.position}:${o.name}(${o.orientation}) ${o.keywords.join("、")}`);if(e.reading&&e.reading.length){t.push("【解读】");for(const o of e.reading)t.push(` ${o}`)}return t.join(`
78
- `)}function Dn(e){const t=pe=>{const qe=pe.lines.slice().reverse().map(le=>{const ke=le.position===pe.shi?"世":le.position===pe.ying?"应":" ";return` ${le.name} ${ke} ${le.symbol} ${le.ganzhi}${le.element} ${le.liuqin}/${le.liushen}`});return[`${pe.name}(${pe.palace}·${pe.palaceElement})`,...qe].join(`
79
- `)},o=[`起卦:${e.cast.notation.join("、")}(自下而上)`,`日辰:${e.dayGanZhi.name}`,e.xunShou?`旬首:${e.xunShou} 旬空:${(e.xunKong||[]).join("")||"—"}`:"",e.question?`所问:${e.question}`:"","本卦:",t(e.ben)];e.bian?o.push(`动爻:第 ${e.cast.movingPositions.join("、")} 爻`,"变卦(六亲以变卦自身宫论):",t(e.bian)):o.push("六爻安静,无变卦。");const n=e.body&&Array.isArray(e.body.labels)?e.body.labels:J(e.body);o.push(`卦体:${n.length?n.join(" · "):"无六冲、六合、伏吟、反吟"}`);const s=e.useGod||ne(e,{});if(s&&s.liuqin){const pe=s.found.length?s.found.map($e=>`${$e.position}爻${$e.ganzhi}${$e.element}${$e.kong?"(空)":""}`).join("、"):s.fushen.length?s.fushen.map($e=>`伏 ${$e.position}爻${$e.ganzhi}${$e.element}(${$e.relation||"飞伏关系未知"})`).join("、"):"不上卦";o.push(`用神:${s.byShi?"世爻":s.liuqin}(${s.ask})→ ${pe}${s.side?`(${s.side})`:""}`);const qe=s.byShi?"用神 世爻":`用神 ${s.liuqin}`,le=s.labels.filter($e=>$e!==qe&&!$e.startsWith(qe));le.length&&o.push(`用神联动:${le.join(" · ")}`);const ke=e.useGodStrength;if(ke&&ke.labels.length){const $e=ke.month&&ke.month.branch?`月建 ${ke.month.branch}(${ke.month.element}) `:"";o.push(`用神旺衰:${$e}${ke.labels.join(" · ")}`)}const B=e.fushenAccess;B&&Array.isArray(B.labels)&&B.labels.length&&o.push(`伏神出伏:${B.labels.join(" · ")}`)}else o.push("用神:未取(未指明所问之事;用「询问方向」指定后即按六亲取用)");const w=e.hexStrength;if(w&&Array.isArray(w.labels)&&w.labels.length){const pe=w.month&&w.month.branch?`月建 ${w.month.branch}(${w.month.element}) `:"无月建(未给起卦时间) ";o.push(`全卦旺衰:${pe}${w.labels.join(" · ")}`)}const N=e.jinTuiPower;N&&Array.isArray(N.lines)&&N.lines.length&&o.push(`进退力重:${N.lines.map(pe=>`${pe.position}爻${pe.from}→${pe.to}${pe.type}·${pe.verdict}`).join(" · ")}`);const U=e.yingqi;return U&&Array.isArray(U.triggers)&&U.triggers.length&&o.push(`应期线索:${U.tempo} · ${U.triggers.map(pe=>`${pe.labels.join("/")}${pe.branch}`).join(" · ")}(只列地支,不出日期)`),o.filter(Boolean).join(`
80
- `)}function xn(e){const t=new WeakSet,o=(n,s)=>{switch((n instanceof Number||n instanceof String||n instanceof Boolean)&&(n=n.valueOf()),n&&typeof n=="object"&&typeof n.toJSON=="function"&&(n=n.toJSON(s)),typeof n){case"string":case"boolean":return n;case"number":return Number.isFinite(n)?Object.is(n,-0)?0:n:null;case"bigint":throw new TypeError("Do not know how to serialize a BigInt");case"object":{if(n===null)return null;if(t.has(n))throw new TypeError("Converting circular structure to JSON");t.add(n);let w;if(Array.isArray(n)){w=new Array(n.length);for(let N=0;N<n.length;N++){const U=o(n[N],String(N));w[N]=U===void 0?null:U}}else{w={};for(const N of Object.keys(n)){const U=o(n[N],N);U!==void 0&&(w[N]=U)}}return t.delete(n),w}default:return}};return o(e,"")}const Gn=new Set(["shadow","shadowVersion","diff","trace","traceError","withInterpret","cross","verifyPast","rectify","events","geocode","ask","followup","caliber","seed","asOf","handle","revise"]),an=e=>{if(e==null||e==="")return null;const t=Number(e);return Number.isFinite(t)?Number(t.toFixed(6)):null};function nn(e){if(e==null||e==="")return null;try{const t=Ce(e);return{y:t.year,m:t.month,d:t.day,h:t.hour,mi:t.minute,precision:t.precision}}catch{return String(e).trim()}}function Je(e={}){const t={};return e.datetime&&(t.datetime=nn(e.datetime)),e.gender&&(t.gender=String(e.gender).toLowerCase()),e.longitude!==void 0?t.longitude=an(e.longitude):e.address&&(t.address=String(e.address).trim()),e.lateZi!==void 0&&(t.lateZi=e.lateZi!==!1),e.trueSolar!==void 0&&(t.trueSolar=e.trueSolar!==!1),e.dst!==void 0&&(t.dst=e.dst!==!1),t}function Hn(e){return e.lateZiHourMode==="next-day"||e.lateZi===!0?"next-day":"same-day"}function Pn(e,t){const o=String(t&&t.system||e.system||""),n=t&&t.input&&typeof t.input=="object"?t.input:null;if(o==="bazi"&&n)return{civil:n.civil,gender:n.gender,longitude:an(n.longitude),lateZi:n.lateZi!==!1,trueSolar:n.trueSolar!==!1,dst:!!(n.dst&&n.dst.applied)};if(o==="ziwei"&&n)return{civil:{year:n.year,month:n.month,day:n.day,hour:n.hour,minute:n.minute},gender:n.gender,longitude:an(n.longitude),leapMonth:n.leapMonth||"split",leapAsNext:n.leapAsNext===!0,schools:n.schools||re,trueSolar:n.trueSolar!==!1,dst:!!(n.dst&&n.dst.applied)};if(o==="qimen")return{datetime:nn(e.datetime),juMethod:e.juMethod||"chaibu",lateZiHourMode:Hn(e)};if(o==="hepan"){const w={chart:e.chart==="ziwei"?"ziwei":"bazi",a:Je({...e,datetime:e.datetime}),b:Je(e.partner||{})};return e.partner2&&(w.c=Je(e.partner2)),w}const s={};for(const[w,N]of Object.entries(e))if(!(Gn.has(w)||N===void 0))if(w==="datetime")s.datetime=nn(N);else if(w==="partner")s.partner=Je(N);else if(w==="gender")s.gender=String(N).toLowerCase();else{if(w==="address")continue;typeof N=="number"?s[w]=Number.isFinite(N)?Object.is(N,-0)?0:N:null:typeof N=="string"?s[w]=N.trim():s[w]=N}return o==="daliuren"&&s.lateZi===void 0&&(s.lateZi=!0),o==="tarot"&&s.count===void 0&&(s.count=3),o==="meihua"&&s.mode===void 0&&(s.mode="time"),o==="xiaoliuren"&&s.mode===void 0&&(s.mode="time"),o==="convert"&&s.mode===void 0&&(s.mode="solar2lunar"),o==="fengshui"&&s.action===void 0&&(s.action="natal"),o==="tarot"&&t&&Array.isArray(t.cards)&&t.cards.length&&(s.cards=t.cards.map(w=>`${w.name||""}|${w.upright?"正":"逆"}`)),o==="liuyao"&&t&&t.cast&&Array.isArray(t.cast.lines)&&(s.cast=t.cast.lines.join("")),s}function Kn(e,t){const o=t.seed,n=!(o==null||o==="");return e==="liuyao"&&Array.isArray(t.lines)&&t.lines.length===6?{reproducible:!0}:(e==="tarot"||e==="liuyao")&&!n?{reproducible:!1,reason:"未给 seed:重算会变成另一副牌 / 另一卦"}:e==="bazi"||e==="ziwei"||e==="trend"||e==="fengshui"?{reproducible:!0,asOfPinned:!!t.asOf}:{reproducible:!0}}function Yn(e={},t={}){const o=t.result||null,n=String(o&&o.system||e.system||""),s=String(t.version||typeof globalThis<"u"&&globalThis.__MP_VER||"dev");return{...$n({system:n,params:Pn(e,o),seed:e.seed,asOf:e.asOf?String(e.asOf):null,version:s}),...Kn(n,e),system:n,version:s}}const Xn=new Set(["shadow","trace","traceText","traceError","interpret","summary","classics","suiyunClassic","renyuanClassic","cross","past","rectify","followup","caliber","input","reading","knowledge","outline","sections","answer","plain","tables","glossary","caveats","lead","dimensions","moduleType","technique","disclaimer","ask","followups","knowledgeCount","title","systemLabel","handle","handleError","revision"]);function kn(e){const t={};for(const[o,n]of Object.entries(e||{}))Xn.has(o)||(t[o]=n);return t}function fn(e){return!e||!e.shadow||!e.shadow.baseId?null:{snapshot:!0,shadow:e.shadow,data:kn(e)}}function qn(e,t,o={}){const n=e&&e.shadow,s=t&&t.shadow;if(!n||!s)return{sameId:!1,total:0,reason:"缺少影子盘信息"};if(n.baseId&&s.baseId&&n.baseId!==s.baseId)return{sameId:!1,total:0,fromId:n.id,toId:s.id,fromBaseId:n.baseId,toBaseId:s.baseId,reason:"基础指纹不同,不是同一张盘"};const w=B=>B.snapshot===!0&&B.data&&typeof B.data=="object"?B.data:kn(B),N=ae(w(e),w(t)),U=z(N.filter(B=>fe(B.path))).map(B=>({path:B.path,label:be(B.path),from:Fe(B.from),to:Fe(B.to)})),pe=new Map;for(const B of N){const $e=Ye(B.path)||"其他";pe.set($e,(pe.get($e)||0)+1)}const qe=[...pe.entries()].map(([B,$e])=>({name:B,count:$e})).sort((B,$e)=>$e.count-B.count||B.name.localeCompare($e.name,"zh-Hans-CN")),le=o.fromVersion||n.version||"",ke=o.toVersion||s.version||"";return{sameId:!0,versionChanged:le!==ke,fromVersion:le,toVersion:ke,total:N.length,summary:we(N),roots:U,categories:qe,diffs:N}}function En(e={}){let t=Re(e),o;if(typeof t.revise=="string"&&t.revise.trim()){const s=h(t.revise),w={...t};t={...t,...s.patch},o={text:s.text,applied:s.labels.map(N=>{const U=w[N.key]===void 0?null:w[N.key];return{...N,from:U,fromDisplay:c(N.key,U)}}),ignored:s.ignored}}t.partner2===null&&(t={...t},delete t.partner2);const n=xn(Xe(t));if(o&&(n.revision=o),n&&n.system==="bazi"){n.classics=de(n);const s=O(n.classics);s&&(n.summary=`${n.summary}
67
+ `))for(const y of j.split(";")){const k=y.trim().split(/\s+/);if(k.length!==3)continue;const[re,S,M]=k;A[re]={lon:Number(S),lat:Number(M)}}for(const[j,[y,k]]of Object.entries(te))A[j]||(A[j]={lon:y,lat:k});return A})(),ne=/(省|市|地区|盟|自治州|自治县|自治区|特别行政区|县|区|镇|乡|街道|村|小区|社区)/g;function T(A){const j=String(A||"").trim();if(!j)return null;const y=Number(j);if(Number.isFinite(y)&&/^-?\d+(\.\d+)?$/.test(j)&&y>=60&&y<=150)return{lon:y,lat:null,matched:`${y}°E`,level:"经度",note:"按你输入的经度计算"};const k=j.replace(/\s/g,"").replace(ne,""),re=Object.keys(J).sort((M,i)=>i.length-M.length);for(const M of re)if(k.includes(M)){const i=J[M];return{lon:i.lon,lat:i.lat,matched:M,level:"地级市",note:`按 ${M} 估算(约 ${i.lon}°E)`}}const S=j.replace(/\s/g,"");for(const[M,i]of Object.entries(Q)){const d=S.indexOf(M);if(d<0)continue;const a=S.charAt(d+M.length);if(a==="区"||a==="县")continue;const r=J[i]||{lon:te[i][0],lat:te[i][1]};return{lon:r.lon,lat:r.lat,matched:i,level:"省会",note:`未匹配到具体城市,按 ${M} 省会 ${i} 估算(约 ${r.lon}°E)`}}return{lon:null,lat:null,matched:null,level:"未匹配",note:`没查到「${j}」,可改填经度(如 116.4)`}}const v=/(区|县|镇|乡|村|小区|街道|路|号|巷|弄|组|队)/,Y="dsh-metaphysics/0.23.0 (+https://github.com/xuanfu-web/dsh-metaphysics)";async function m(A,{timeoutMs:j=2500}={}){if(typeof fetch!="function")return null;let y=null;try{const k=typeof AbortController=="function"?new AbortController:null;k&&(y=setTimeout(()=>k.abort(),j));const re="https://nominatim.openstreetmap.org/search?format=jsonv2&limit=1&accept-language=zh-CN&countrycodes=cn&q="+encodeURIComponent(A),S=await fetch(re,{signal:k?k.signal:void 0,headers:{"User-Agent":Y}});if(!S||!S.ok)return null;const M=await S.json();if(!Array.isArray(M)||M.length===0)return null;const i=M[0],d=Number(i.lon),a=Number(i.lat);return Number.isFinite(d)?{lon:d,lat:a,matched:i.display_name,level:"在线",note:`在线解析:${i.display_name}`}:null}catch{return null}finally{y&&clearTimeout(y)}}async function $(A,j={}){const y=T(A),k=String(A||"").trim();if(!k||!(j.online===!0)||y&&typeof y.lon=="number"&&!v.test(k))return y;const S=await m(k,j);return S?{...S,local:y&&y.lon!=null?y:null}:y&&typeof y.lon=="number"?{...y,onlineFailed:!0,note:`${y.note}(联网解析失败或超时,已退回内置坐标表)`}:{...y,onlineFailed:!0}}return{CITIES:J,PROVINCES:Q,resolveAddress:T,geocodeAddress:$}})(),W.random=(function(){function P(J){let ne=Number(J)>>>0;return ne||(ne=2654435769),function(){ne=ne+1831565813>>>0;let v=ne;return v=Math.imul(v^v>>>15,v|1),v^=v+Math.imul(v^v>>>7,v|61),((v^v>>>14)>>>0)/4294967296}}function Q(J){if(J==null||J==="")return Math.random;const ne=Number(J);return Number.isFinite(ne)?P(ne):Math.random}function te(J){return J==null||J===""?!0:Number.isFinite(Number(J))}return{mulberry32:P,randomOf:Q,isSeed:te}})(),W.dst=(function(){const{daysInMonth:P}=W.validate||{},Q={1986:["1986-05-04","1986-09-14"],1987:["1987-04-12","1987-09-13"],1988:["1988-04-10","1988-09-11"],1989:["1989-04-16","1989-09-17"],1990:["1990-04-15","1990-09-16"],1991:["1991-04-14","1991-09-15"]},te=(v,Y,m)=>v*1e4+Y*100+m;function J(v){const Y=Q[v.year];if(!Y)return!1;const[m,$,A]=Y[0].split("-").map(Number),[j,y,k]=Y[1].split("-").map(Number),re=te(v.year,v.month,v.day);if(re<te(m,$,A)||re>te(j,y,k))return!1;const S=v.hour*60+(v.minute||0);return!(re===te(m,$,A)&&S<120||re===te(j,y,k)&&S>=120)}function ne(v){const Y=v.minute||0;if(!J(v))return{year:v.year,month:v.month,day:v.day,hour:v.hour,minute:Y,applied:!1,note:null};let{year:m,month:$,day:A,hour:j}=v;return j-=1,j<0&&(j+=24,A-=1,A<1&&($-=1,$<1&&($=12,m-=1),A=P(m,$))),{year:m,month:$,day:A,hour:j,minute:Y,applied:!0,note:`检出自 ${Q[v.year][0]} 至 ${Q[v.year][1]} 的中国夏令时:出生钟面时间已减 1 小时校正`}}function T(v,Y){const m=Array.isArray(v)?v.slice():[];return Y&&Y.applied&&Y.note&&m.push(Y.note),m}return{DST_SPANS:Q,inDstSpan:J,applyDst:ne,withDstNote:T}})(),W.shensha=(function(){const{BRANCHES:P}=W.calendar||{},{sanheGroupOf:Q}=W.sanhe||{},te=["year","month","day","hour"],J={year:"年柱",month:"月柱",day:"日柱",hour:"时柱"},ne=["贵人","文星","婚姻","性情","事业","凶煞","格局"],T=["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"],v={year:"年干",month:"月干",day:"日干",hour:"时干"},Y={year:"年支",month:"月支",day:"日支",hour:"时支"},m=O=>{const f=Q(O);return f?f.branches.join(""):void 0},$={亥子丑:["寅","戌"],寅卯辰:["巳","丑"],巳午未:["申","辰"],申酉戌:["亥","未"]},A=O=>Object.keys($).find(f=>f.includes(O)),j={寅:"春",卯:"春",辰:"春",巳:"夏",午:"夏",未:"夏",申:"秋",酉:"秋",戌:"秋",亥:"冬",子:"冬",丑:"冬"},y=O=>({kind:"branch",ch:O}),k=O=>({kind:"stem",ch:O}),re=O=>({kind:"gz",ch:O}),S={甲:["丑","未"],戊:["丑","未"],庚:["丑","未"],乙:["子","申"],己:["子","申"],丙:["亥","酉"],丁:["亥","酉"],辛:["午","寅"],壬:["卯","巳"],癸:["卯","巳"]},M={甲:["子","午"],乙:["子","午"],丙:["卯","酉"],丁:["卯","酉"],戊:["辰","戌","丑","未"],己:["辰","戌","丑","未"],庚:["寅","亥"],辛:["寅","亥"],壬:["巳","申"],癸:["巳","申"]},i={寅:"丁",卯:"申",辰:"壬",巳:"辛",午:"亥",未:"甲",申:"癸",酉:"寅",戌:"丙",亥:"乙",子:"巳",丑:"庚"},d={寅午戌:"丙",申子辰:"壬",亥卯未:"甲",巳酉丑:"庚"},a={丙:"辛",壬:"丁",甲:"己",庚:"乙"},r={甲:["寅","子"],丙:["寅","子"],乙:["卯","丑"],癸:["卯","丑"],丁:["酉"],戊:["申"],己:["未"],庚:["午"],辛:["巳"],壬:["辰"]},u={甲:["未"],乙:["辰"],丙:["巳"],丁:["酉"],戊:["戌"],己:["卯"],庚:["亥"],辛:["申"],壬:["午"],癸:["寅"]},g={甲:["戌"],乙:["亥"],丙:["丑"],丁:["寅"],戊:["丑"],己:["寅"],庚:["辰"],辛:["巳"],壬:["未"],癸:["申"]},_={甲:["巳"],乙:["午"],丙:["巳"],丁:["午"],戊:["申"],己:["酉"],庚:["亥"],辛:["子"],壬:["寅"],癸:["卯"]},K={寅:"丑",卯:"寅",辰:"卯",巳:"辰",午:"巳",未:"午",申:"未",酉:"申",戌:"酉",亥:"戌",子:"亥",丑:"子"},R={甲:["巳"],乙:["午"],丙:["申"],丁:["酉"],戊:["申"],己:["酉"],庚:["亥"],辛:["子"],壬:["寅"],癸:["卯"]},ee={寅午戌:["丙","丁","戊","癸"],申子辰:["壬","癸","戊","己","丙","辛","甲","己"],巳酉丑:["庚","辛","乙"],亥卯未:["甲","乙","丁","壬"]},ue={寅午戌:["卯"],申子辰:["酉"],巳酉丑:["午"],亥卯未:["子"]},ke={寅午戌:["午"],申子辰:["子"],巳酉丑:["酉"],亥卯未:["卯"]},Me={寅午戌:["戌"],申子辰:["辰"],巳酉丑:["丑"],亥卯未:["未"]},Ne={寅午戌:["申"],申子辰:["寅"],巳酉丑:["亥"],亥卯未:["巳"]},Oe={寅午戌:["亥"],申子辰:["巳"],巳酉丑:["寅"],亥卯未:["申"]},_e={寅午戌:["子"],申子辰:["午"],巳酉丑:["卯"],亥卯未:["酉"]},Ge={寅午戌:["巳"],申子辰:["亥"],巳酉丑:["申"],亥卯未:["寅"]},q={甲:["辰"],乙:["巳"],丙:["未"],丁:["申"],戊:["未"],己:["申"],庚:["戌"],辛:["亥"],壬:["丑"],癸:["寅"]},V={甲:["寅"],乙:["卯"],丙:["巳"],丁:["午"],戊:["巳"],己:["午"],庚:["申"],辛:["酉"],壬:["亥"],癸:["子"]},F={甲:["卯"],乙:["辰"],丙:["午"],丁:["未"],戊:["午"],己:["未"],庚:["酉"],辛:["戌"],壬:["子"],癸:["丑"]},l={甲:["酉"],乙:["戌"],丙:["子"],丁:["丑"],戊:["子"],己:["丑"],庚:["卯"],辛:["辰"],壬:["午"],癸:["未"]},h={甲:["酉"],乙:["戌"],丙:["未"],丁:["申"],戊:["巳"],己:["午"],庚:["辰"],辛:["卯"],壬:["亥"],癸:["寅"]},c=["庚辰","庚戌","壬辰","戊戌"],b=["甲寅","丙辰","戊辰","庚辰","壬戌"],x=["丁酉","丁亥","癸巳","癸卯"],p=["丙午","丁未","戊子","戊午","己丑","己未"],I=["甲辰","乙巳","丙申","丁亥","戊戌","己丑","庚辰","辛巳","壬申","癸亥"],H=["丙子","丁丑","戊寅","辛卯","壬辰","癸巳","丙午","丁未","戊申","辛酉","壬戌","癸亥"],he={春:"戊寅",夏:"甲午",秋:"戊申",冬:"甲子"},se={春:["庚申","辛酉"],夏:["壬子","癸亥"],秋:["甲寅","乙卯"],冬:["丙午","丁巳"]},qe={春:["寅","子"],秋:["寅","子"],夏:["卯","未","辰"],冬:["卯","未","辰"]},Te=["甲戊庚","乙丙丁","壬癸辛"],Ae=["乙丑","己巳","癸酉"];function xe(O,f,G,L,ae,Se=["day"]){return{name:O,cat:f,luck:G,rule:L,refs:Se,refKind:"stem",targets:(z,be)=>(ae[z.pillars[be].stem]||[]).map(y)}}function ye(O,f,G,L,ae,Se=["year","day"]){return{name:O,cat:f,luck:G,rule:L,refs:Se,refKind:"branch",targets:(z,be)=>{const fe=m(z.pillars[be].branch);return fe&&ae[fe]?ae[fe].map(y):[]}}}function ve(O,f,G,L,ae,Se="year"){return{name:O,cat:f,luck:G,rule:L,refs:[Se],refKind:"branch",viaLabel:Y[Se],targets:z=>ae(z)}}function E(O,f,G,L,ae,Se){return{name:O,cat:f,luck:G,rule:L,refs:["month"],refKind:"branch",viaLabel:"月支",slots:Se,targets:z=>ae(z)}}function ie(O,f,G,L,ae,Se="day"){return{name:O,cat:f,luck:G,rule:L,refs:[Se],refKind:"branch",viaLabel:J[Se],slots:[Se],targets:(z,be)=>ae.includes(z.pillars[be].ganzhi)?[re(z.pillars[be].ganzhi)]:[]}}const ce=[xe("天乙贵人","贵人","good","甲戊庚见丑未,乙己见子申,丙丁见亥酉,辛见午寅,壬癸见卯巳(年干、日干查四支)",S,["year","day"]),xe("太极贵人","贵人","good","甲乙见子午,丙丁见卯酉,戊己见辰戌丑未,庚辛见寅亥,壬癸见巳申(年干、日干查四支)",M,["year","day"]),E("天德贵人","贵人","good","正月丁、二月申、三月壬、四月辛、五月亥、六月甲、七月癸、八月寅、九月丙、十月乙、冬月巳、腊月庚(月支查干或支)",O=>{const f=i[O.pillars.month.branch];return f?T.includes(f)?[k(f)]:[y(f)]:[]}),E("月德贵人","贵人","good","寅午戌月见丙,申子辰月见壬,亥卯未月见甲,巳酉丑月见庚(月支查天干)",O=>{const f=m(O.pillars.month.branch);return f&&d[f]?[k(d[f])]:[]}),E("月德合","贵人","good","月德之合干:丙见辛、壬见丁、甲见己、庚见乙(月支定月德后查天干)",O=>{const f=m(O.pillars.month.branch),G=f&&d[f]?a[d[f]]:null;return G?[k(G)]:[]}),xe("福星贵人","贵人","good","甲丙见寅子,乙癸见卯丑,丁见酉、戊见申、己见未、庚见午、辛见巳、壬见辰(年干、日干查四支)",r,["year","day"]),xe("天官贵人","贵人","good","甲未、乙辰、丙巳、丁酉、戊戌、己卯、庚亥、辛申、壬午、癸寅(年干、日干查四支;此表流派有异)",u,["year","day"]),xe("国印贵人","贵人","good","甲戌、乙亥、丙丑、丁寅、戊丑、己寅、庚辰、辛巳、壬未、癸申(年干、日干查四支)",g,["year","day"]),xe("天厨贵人","贵人","good","食神之禄:甲巳、乙午、丙巳、丁午、戊申、己酉、庚亥、辛子、壬寅、癸卯(日干查四支)",_,["day"]),E("天医","贵人","good","月支退一位:寅月见丑、卯月见寅……丑月见子(月支查四支)",O=>{const f=K[O.pillars.month.branch];return f?[y(f)]:[]}),xe("文昌贵人","文星","good","甲巳、乙午、丙申、丁酉、戊申、己酉、庚亥、辛子、壬寅、癸卯(年干、日干查四支)",R,["year","day"]),E("德秀贵人","文星","good","寅午戌月德丙丁、秀戊癸;申子辰月德壬癸戊己、秀丙辛甲己;巳酉丑月德庚辛、秀乙庚;亥卯未月德甲乙、秀丁壬(月支查天干)",O=>{const f=m(O.pillars.month.branch);return f&&ee[f]?ee[f].map(k):[]}),ye("桃花","婚姻","neutral","寅午戌见卯、申子辰见酉、巳酉丑见午、亥卯未见子(年支、日支双查)",ue),ve("红鸾","婚姻","good","卯起子逆数:子见卯、丑见寅、寅见丑、卯见子……(年支查四支)",O=>{const f=P.indexOf(O.pillars.year.branch);return[y(P[((3-f)%12+12)%12])]}),ve("天喜","婚姻","good","红鸾对冲之位:子见酉、丑见申、寅见未……(年支查四支)",O=>{const G=((3-P.indexOf(O.pillars.year.branch))%12+12)%12;return[y(P[(G+6)%12])]}),ve("孤辰","婚姻","bad","亥子丑年见寅、寅卯辰年见巳、巳午未年见申、申酉戌年见亥(年支查四支)",O=>{const f=A(O.pillars.year.branch);return f?[y($[f][0])]:[]}),ve("寡宿","婚姻","bad","亥子丑年见戌、寅卯辰年见丑、巳午未年见辰、申酉戌年见未(年支查四支)",O=>{const f=A(O.pillars.year.branch);return f?[y($[f][1])]:[]}),xe("金舆","婚姻","good","禄前二位:甲龙乙蛇丙戊羊、丁己申宫庚犬乡、辛猪壬牛癸虎位(日干查四支)",q,["day"]),ye("华盖","性情","neutral","寅午戌见戌、申子辰见辰、巳酉丑见丑、亥卯未见未(年支、日支双查)",Me),xe("羊刃","性情","bad","禄前一位:甲卯、乙辰、丙戊午、丁己未、庚酉、辛戌、壬子、癸丑(日干查四支;阳干论刃为主)",F,["day"]),xe("飞刃","性情","bad","羊刃六冲:甲酉、乙戌、丙子、丁丑、戊子、己丑、庚卯、辛辰、壬午、癸未(日干查四支)",l,["day"]),ie("魁罡","性情","neutral","日柱庚辰、庚戌、壬辰、戊戌(日柱见之)",c),E("童子煞","性情","neutral","春秋生见寅子,冬夏生见卯未辰(取季节口诀,查日支、时支;另有纳音五行一法,流派多歧,仅作参考)",O=>{const f=j[O.pillars.month.branch],G=f&&qe[f];return G?G.map(y):[]},["day","hour"]),ie("六秀日","性情","good","日柱丙午、丁未、戊子、戊午、己丑、己未(日柱见之)",p),ie("日德","性情","good","日柱甲寅、丙辰、戊辰、庚辰、壬戌(日柱见之)",b),ie("日贵","性情","good","日柱丁酉、丁亥、癸巳、癸卯(日柱见之)",x),xe("禄神","事业","good","甲寅、乙卯、丙戊巳、丁己午、庚申、辛酉、壬亥、癸子(日干查四支)",V,["day"]),ye("将星","事业","good","寅午戌见午、申子辰见子、巳酉丑见酉、亥卯未见卯(年支、日支双查)",ke),ye("驿马","事业","neutral","寅午戌见申、申子辰见寅、巳酉丑见亥、亥卯未见巳(年支、日支双查)",Ne),ye("劫煞","凶煞","bad","寅午戌见亥、申子辰见巳、巳酉丑见寅、亥卯未见申(年支、日支双查)",Oe),ye("灾煞","凶煞","bad","寅午戌见子、申子辰见午、巳酉丑见卯、亥卯未见酉(年支、日支双查)",_e),ye("亡神","凶煞","bad","寅午戌见巳、申子辰见亥、巳酉丑见申、亥卯未见寅(年支、日支双查)",Ge),{name:"空亡",cat:"凶煞",luck:"bad",rule:"以日柱所在旬的空亡反查各柱地支(日柱旬空)",refs:["day"],refKind:"branch",viaLabel:"日柱旬空",targets:O=>(O.kongwang||[]).map(y)},ie("十恶大败","凶煞","bad","日柱甲辰、乙巳、丙申、丁亥、戊戌、己丑、庚辰、辛巳、壬申、癸亥(日柱见之)",I),ie("阴差阳错","凶煞","bad","日柱丙子、丁丑、戊寅、辛卯、壬辰、癸巳、丙午、丁未、戊申、辛酉、壬戌、癸亥(日柱见之)",H),E("四废日","凶煞","bad","春庚申辛酉、夏壬子癸亥、秋甲寅乙卯、冬丙午丁巳(月支定季节查日柱)",O=>{const f=j[O.pillars.month.branch],G=O.pillars.day.ganzhi;return f&&se[f].includes(G)?[re(G)]:[]},["day"]),xe("流霞","凶煞","bad","甲酉、乙戌、丙未、丁申、戊巳、己午、庚辰、辛卯、壬亥、癸寅(日干查四支;通行表)",h,["day"]),E("天赦日","格局","good","春戊寅、夏甲午、秋戊申、冬甲子(月支定季节查日柱)",O=>{const f=j[O.pillars.month.branch],G=O.pillars.day.ganzhi;return f&&he[f]===G?[re(G)]:[]},["day"]),ie("金神","格局","neutral","时柱乙丑、己巳、癸酉(时柱见之;严格成格另需日主身旺,此仅记星)",Ae,"hour"),{name:"天罗",cat:"凶煞",luck:"bad",rule:"四支见戌、亥俱全(戌亥为天罗)",custom:O=>ge(O,["戌","亥"])},{name:"地网",cat:"凶煞",luck:"bad",rule:"四支见辰、巳俱全(辰巳为地网)",custom:O=>ge(O,["辰","巳"])},{name:"三奇贵人",cat:"格局",luck:"good",rule:"年月日或月日时天干依序为甲戊庚(天上)、乙丙丁(地下)、壬癸辛(人中)",custom:O=>{const f=[];for(const G of[["year","month","day"],["month","day","hour"]]){const L=G.map(ae=>O.pillars[ae].stem).join("");Te.includes(L)&&f.push({pillars:G.slice(),via:"三柱天干",target:L})}return f}}];function ge(O,f){const G=te.filter(L=>f.includes(O.pillars[L].branch));return G.length<f.length?[]:[{pillars:G,via:"四支",target:f.join("")}]}function oe(O,f){return f.kind==="stem"?O.stem===f.ch:f.kind==="branch"?O.branch===f.ch:O.ganzhi===f.ch}function Z(O,f){if(O.custom)return O.custom(f);const G=[];for(const L of O.refs){const ae=O.targets(f,L)||[];if(!ae.length)continue;const Se=O.viaLabel||(O.refKind==="stem"?v:Y)[L];for(const z of O.slots||te){const be=f.pillars[z];for(const fe of ae)oe(be,fe)&&G.push({pillars:[z],via:Se,target:fe.ch})}}return G}function D(O,f=[]){const G={pillars:O,kongwang:f},L=[];for(const z of ce){const be=Z(z,G);if(!be.length)continue;const fe={name:z.name,cat:z.cat,luck:z.luck,rule:z.rule,pillars:[],via:new Set,target:new Set};for(const Pe of be){for(const Be of Pe.pillars)fe.pillars.includes(Be)||fe.pillars.push(Be);Pe.via&&fe.via.add(Pe.via),Pe.target&&fe.target.add(Pe.target)}fe.pillars.sort((Pe,Be)=>te.indexOf(Pe)-te.indexOf(Be)),L.push(fe)}L.sort((z,be)=>ne.indexOf(z.cat)-ne.indexOf(be.cat));const ae={year:[],month:[],day:[],hour:[]};for(const z of L)for(const be of z.pillars)ae[be].push({name:z.name,cat:z.cat,luck:z.luck,via:[...z.via].join("、"),target:[...z.target].join("、"),rule:z.rule});const Se=[];for(const z of ne){const be=L.filter(fe=>fe.cat===z);be.length&&Se.push({cat:z,items:be.map(fe=>({name:fe.name,cat:fe.cat,luck:fe.luck,pillars:fe.pillars.slice(),via:[...fe.via].join("、"),target:[...fe.target].join("、"),rule:fe.rule}))})}return{detail:ae,groups:Se,names:L.map(z=>z.name),count:L.reduce((z,be)=>z+be.pillars.length,0)}}const de=ce.reduce((O,f)=>(O[f.name]={cat:f.cat,luck:f.luck,rule:f.rule},O),{});return{PILLAR_KEYS:te,PILLAR_LABEL:J,CATEGORY_ORDER:ne,computeBaziShensha:D,RULE_TABLE:de}})(),W.tiaohou=(function(){const P={甲:"木",乙:"木",丙:"火",丁:"火",戊:"土",己:"土",庚:"金",辛:"金",壬:"水",癸:"水"},Q={亥:-1.8,子:-2,丑:-1.5,寅:-.4,卯:.2,辰:.5,巳:1.3,午:2,未:1.5,申:.6,酉:.2,戌:-.2},te={亥:"初冬",子:"仲冬",丑:"季冬",寅:"初春",卯:"仲春",辰:"季春",巳:"初夏",午:"仲夏",未:"季夏",申:"初秋",酉:"仲秋",戌:"季秋"},J={丑:1,辰:1,子:.6,亥:.5},ne={未:1,戌:1,午:.4,巳:.4},T={寒湿:{element:"火",stem:"丙",avoid:"水",why:"冻土要太阳来解,水再多只会更冷"},寒燥:{element:"火",stem:"丙",avoid:"水",why:"天寒地干,先要一点阳和之气"},寒:{element:"火",stem:"丙",avoid:"水",why:"冬令气寒,非火不暖"},温热:{element:"水",stem:"壬",avoid:"火",why:"火气初旺,得水润泽才好用"},燥热:{element:"水",stem:"壬",avoid:"火",why:"火炎土燥,非水不润"},热:{element:"水",stem:"壬",avoid:"火",why:"夏令炎威,先求一泓清水"},湿滞:{element:"火",stem:"丙",avoid:"水",why:"湿气郁结,要火来蒸腾"},燥:{element:"水",stem:"壬",avoid:"火",why:"气燥不润,得水则舒"},平和:{element:null,stem:null,avoid:null,why:"寒暖相济,气候不是这一盘的主要矛盾"}},v={寒湿:"寒湿",寒燥:"寒燥",寒:"寒",温热:"温热",燥热:"燥热",热:"热",湿滞:"湿滞",燥:"燥",平和:"平和"},Y={寒湿:{木:"木是花草藤萝,冰封的土里抽不出芽——它不缺雨水,缺的是一轮太阳",火:"火在冬天最怕被水浇,一点火苗要护住,才谈得上发光",土:"土冻成一块,再厚也长不出东西,得先晒透",金:"金在寒水里泡久了,锋刃会发滞,要火来炼一炼",水:"水本就冷,再加寒就是死水;要火把它烧活"},寒燥:{木:"木在干冷里最难熬,既缺暖气,又缺一点滋润",火:"火在寒天里要先活下来,才有余力照别人",土:"土冷而干,板结着,得暖气与一点水汽一起松",金:"金寒则脆,得火炼、得土养,才成器",水:"水在寒天里收得太紧,要一点火气化开"},寒:{木:"冬木先要暖,暖了才谈得上发荣",火:"火在冬天要护住,别被冷风吹散",土:"土寒不生物,先暖后养",金:"金寒则钝,得火则利",水:"水寒则滞,得火则行"},温热:{木:"木在暖和里长得快,但要防长得太急、根扎不深",火:"火得时令,容易旺过头,要留一点水来收",土:"土被火烤着,容易燥,得水润一润",金:"金在暖处容易软,需要一点水土把它养住",水:"水在暖处容易蒸干,要源头不断"},燥热:{木:"木被火烤着,叶子先焦,得先补水",火:"火已经够旺了,再添柴只会烧到自己",土:"土燥则裂,得水润、得木疏",金:"金在燥热里容易发烫变形,要水来淬",水:"水在燥热里最珍贵,一滴都不能浪费"},热:{木:"木在暑天要水,不然只长叶不结果",火:"火已经当令,收着用比放出去更划算",土:"土热则燥,得水则安",金:"金在暑天要水来洗,才见光泽",水:"水在暑天是命脉,要保住源头"},湿滞:{木:"木泡在水里会烂根,先要疏土透气",火:"火在湿气里点不着,得先除湿",土:"土湿成泥,得火蒸腾、得木来疏",金:"金埋在湿土里会生锈,要见火见光",水:"水已经太多,再添就是泛滥"},燥:{木:"木在燥气里容易枯,先要一点水",火:"火在燥处容易失控,要收",土:"土燥不毛,得水润、得木疏",金:"金在燥处要水来洗,才不刺手",水:"水在燥处最容易被耗干,要护住"},平和:{木:"寒暖还算相济,木有生长的余地",火:"气候不偏,火可以按自己的节奏用",土:"土不燥不湿,能养也能载",金:"金不寒不燥,成器只差打磨",水:"水不冰不涸,能流得动"}},m=k=>Math.round(k*100)/100;function $({monthBranch:k,dayStem:re,wuxing:S={},branches:M=[]}){const i=Number(S.火||0),d=Number(S.水||0);let a=0,r=0,u=0,g=0;for(const F of M)J[F]&&(a+=J[F],(F==="丑"||F==="辰")&&(u+=1)),ne[F]&&(r+=ne[F],(F==="未"||F==="戌")&&(g+=1));const _=Q[k]??0,K=m(_+.45*i-.4*d),R=m(a-r+.25*d-.25*i),ee=K<=-.8,ue=K>=.9,ke=R>=.8,Me=R<=-.8;let Ne="平和";ee&&ke?Ne="寒湿":ee&&Me?Ne="寒燥":ee?Ne="寒":ue&&Me?Ne="燥热":ue?Ne="温热":ue&&R>=.8?Ne="湿滞":Me?Ne="燥":ke&&(Ne="湿滞");const Oe=T[Ne]||T.平和,_e=P[re]||"土",Ge=[`${te[k]||k}${k}月`,`火${i}`,`水${d}`,u?`湿土${u}处`:"",g?`燥土${g}处`:""].filter(Boolean),q=Math.abs(K)>=1.2||Math.abs(R)>=1.2?"调候优先":"扶抑为主",V=A({kind:Ne,monthBranch:k,dayElement:_e,need:Oe,temp:K,damp:R,fire:i,water:d});return{kind:Ne,label:v[Ne]||Ne,temp:K,damp:R,cold:ee,hot:ue,wet:ke,dry:Me,need:Oe.element?{element:Oe.element,stem:Oe.stem,why:Oe.why}:null,avoidElement:Oe.avoid,dayElement:_e,priority:q,evidence:Ge,narration:V}}function A({kind:k,monthBranch:re,dayElement:S,need:M,fire:i,water:d}){const a=(Y[k]||Y.平和)[S]||"",r=te[re]||"",u=`${r||""}${re}月出生,全局火${i}、水${d},这一盘的气候是「${v[k]||k}」`;return M.element?`${u}。${a}。所以这一局要的不是更多的${k.includes("寒")?"水":"火"},而是${M.stem}${M.element}——${M.why}。`:`${u}。${a}。调候不是这一盘的主要矛盾,取用仍以扶抑为主,寒暖只作微调。`}function j(k,re=[],S=[]){if(!k||!k.need)return{clash:!1,text:"气候平和,按扶抑取用即可。"};const M=k.need.element,i=re.includes(M),d=S.includes(M);return i&&!d?{clash:!1,text:`调候要${k.need.stem}${M},扶抑也以${M}为喜——两套取法同向,不必取舍。`}:{clash:!0,text:`调候要${k.need.stem}${M},扶抑却把${M}列为${d?"忌":"闲"};两者不一致,本盘按调候优先取${M},扶抑次之——因为寒暖失衡时,再补强弱也难受。`}}function y(k){if(!k)return"";const re=(k.evidence||[]).join("、"),S=k.need?`调候取${k.need.stem}${k.need.element}(${k.need.why}),忌${k.avoidElement}。`:"气候平和,调候不作主取。";return`${k.label}(${re})。${k.narration}${S}${k.priority==="调候优先"?" 本盘调候优先于扶抑。":""}`}return{judgeClimate:$,arbitrate:j,climateText:y}})(),W.qiongtong=(function(){const P=["寅","卯","辰","巳","午","未","申","酉","戌","亥","子","丑"],Q=["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],te="https://www.luckclub.cn/bazi/004/",J="用神顺序据通行整理表,原文摘句照录;各版本有异文,按条目 note 标注待核处。",ne={甲:[{b:"寅",m:"正月",y:"丙癸",q:"正月甲木,初春尚有余寒,得丙癸逢,富贵双全。癸藏丙透,名寒木向阳,主大富贵。倘风水不及,亦不失儒林俊秀。如无丙癸,平常人也。",ch:2,qs:"丙癸"},{b:"卯",m:"二月",y:"庚丙丁戊己",q:"或二月甲木,庚金得所者,名阳刃架煞,可许异途小贵,若武职便显,但要财资煞,柱中逢财,英雄独压万人,若见癸水,困了财杀,主为光棍,重刃必定遭凶,煞重无凶,但性格横暴,正二月甲木,无从财化土之格。",ch:3,qs:"庚癸"},{b:"辰",m:"三月",y:"庚丁壬",q:"三月甲木,木气相竭。先取庚金,次用壬水。",ch:4,qs:"庚壬"},{b:"巳",m:"四月",y:"癸丁庚",q:"四月甲木退气,丙火司权,先癸后丁。",ch:5,qs:"丙癸丁"},{b:"午",m:"五月",y:"癸丁庚",q:"五六月甲木,木性虚焦,一理共推,五月先癸后丁,庚金次之。,或五月乏癸,用丁亦可,要运行地为佳。六月三伏生寒,丁火退气。先丁后庚,无癸亦可。",ch:6,qs:"癸丁庚"},{b:"未",m:"六月",y:"丁庚癸",q:"五六月甲木,木性虚焦,一理共推,五月先癸后丁,庚金次之。,或五月乏癸,用丁亦可,要运行地为佳。六月三伏生寒,丁火退气。先丁后庚,无癸亦可。",ch:6,qs:"癸丁庚"},{b:"申",m:"七月",y:"庚丁壬",q:"七月甲堪为戟,然非丁不能造庚,非庚不能造甲,丁庚两透,科甲可许。",ch:7,qs:"丁庚"},{b:"酉",m:"八月",y:"丁丙庚",q:"八月甲木,木囚金旺。丁火为先,次用丙火,庚金再次。",ch:8,qs:"丁丙庚"},{b:"戌",m:"九月",y:"庚甲丁壬癸",q:"九月甲木,木星凋零,独爱丁火壬癸滋扶。",ch:9,qs:"丁壬癸"},{b:"亥",m:"十月",y:"庚丁丙戊",q:"十月甲木,以庚为君,以丁为佐,丙火次之,忌壬水泛木,须戊土为制,故戊又次之。",ch:10,qs:"庚丁丙壬戊"},{b:"子",m:"十一月",y:"丁庚丙",q:"十一月甲木,木性生寒,丁先庚后,丙火佐之,癸水司权,为火金之病。",ch:11,qs:"丁庚丙癸"},{b:"丑",m:"十二月",y:"丁庚丙",q:"十二月甲木,天寒气冻,木性极寒,无发生之象。先用庚劈甲,方引丁火,始得木火有通明之象,故丁次之。",ch:12,qs:"庚丁"}],乙:[{b:"寅",m:"正月",y:"丙癸",q:"正月天气,犹有余寒,非丙不长,虽有癸润,恐凝寒气,故先用丙,癸次之。",ch:13,qs:"丙癸"},{b:"卯",m:"二月",y:"丙癸",q:"二月乙木,阳气渐升,木不寒矣,以丙为君,癸为臣,丙癸两透,不透庚金,大富大贵。",ch:14,qs:"丙癸庚"},{b:"辰",m:"三月",y:"癸丙戊",q:"三月乙木,阳气愈炽,先癸后丙",ch:15,qs:"癸丙"},{b:"巳",m:"四月",y:"癸",q:"四月乙木,巳宫自有丙火,戊取癸水为尊。四月乙木,专用癸水,丙火酌用,虽以庚辛佐癸,须辛透为清。",ch:16,qs:"丙戊癸庚辛"},{b:"午",m:"五月",y:"癸丙",q:"五月乙木,丁火司权,禾稼俱旱。上半月属阳,先癸次丙;下半月属阴,三伏生寒,丙癸齐用。柱多金水,丙火为先,余皆用癸水为先。",ch:17,qs:"丁癸丙"},{b:"未",m:"六月",y:"癸丙",q:"六月乙木,木性且寒,柱多金水,丙火为尊。支成水局,乙得无伤。癸水透干,大富大贵。无癸定作常人,运不行北,困苦一生。",ch:18,qs:"丙癸"},{b:"申",m:"七月",y:"丙癸己",q:"七月乙木,庚金乘令,庚虽输情于乙妹,怎奈干乙难合支庚。柱见庚多,乙难受载。或丙癸透干,又加己出埋金,丙癸己俱透,此格可云科甲,大富大贵",ch:19,qs:"庚丙癸己甲"},{b:"酉",m:"八月",y:"癸丙丁",q:"八月乙木,芝兰禾稼均退,以丹桂为乙木。在白露之后,桂蕊未开,专用癸水,以滋桂萼。若秋分后,桂花已开,又当向阳,宜先用丙,癸水次之,丙癸两透,科甲名臣。",ch:20,qs:"癸丙甲"},{b:"戌",m:"九月",y:"癸辛",q:"九月乙木,枝枯叶落,必赖癸水滋养。如见甲申时,名为藤萝繁甲,可秋可冬。",ch:21,qs:"癸甲"},{b:"亥",m:"十月",y:"丙戊",q:"十月乙木,丙不受气,壬水司令,丙为尊,或壬多,用戊土。",ch:22,qs:"丙壬戊"},{b:"子",m:"十一月",y:"丙",q:"十一月乙木,根叶寒冻,喜丙复一阳,用丙火解冻,斯花木有向阳之意,不宜癸水出干以冻花木,故专用丙火。",ch:23,qs:"丙癸"},{b:"丑",m:"十二月",y:"丙",q:"十二月乙木,木寒宜丙,有寒谷回春之象。得一丙透,无癸出破格,不特科甲,定主名臣显宦。丙火藏支,不过廪贡生员。干支无丙,一介寒儒。",ch:24,qs:"丙癸甲"}],丙:[{b:"寅",m:"正月",y:"壬庚",q:"正月三阳开泰,火气渐炎,取壬为尊,庚金为佐。壬庚两透,定许科甲,即壬透庚藏,虽不由科甲,恰有异途恩封",ch:25,qs:"壬庚甲"},{b:"卯",m:"二月",y:"壬己",q:"二月丙火,阳气舒升,专用壬水。",ch:26,qs:"壬"},{b:"辰",m:"三月",y:"壬甲",q:"三月火气渐炎,专用壬水,或支成土局,取甲为辅,壬不可离。",ch:27,qs:"壬甲"},{b:"巳",m:"四月",y:"壬癸庚",q:"四月丙火,建禄于巳,火势炎炎,宜专用壬水,解炎威之力,成既济之功。如无壬水,名孤阳失辅,难透清光,得庚发水源,方为有根之水。壬庚两透,不见戊己出干,号曰湖海汪洋,广映太阳,光辉显著,文明之象。",ch:28,qs:"壬庚戊己"},{b:"午",m:"五月",y:"壬庚",q:"五月丙火愈炎,得壬庚高透,方为上命。或一壬无庚,亦主贡监,还须好运。犹防戊己出干,丁壬化合,则为平人。即不透庚壬。或有申宫长生之水,济之坐禄之金,至妙,必入词林。又怕戊己杂乱,则为异路。",ch:29,qs:"壬庚戊己丁"},{b:"未",m:"六月",y:"壬庚",q:"六月丙火退气,三伏生寒,己土泄气,壬水为用,取庚辅佐。",ch:30,qs:"己壬庚"},{b:"申",m:"七月",y:"壬戊",q:"七月丙火,太阳转西,阳气渐衰。日近西山,见土皆晦。惟日照湖海,暮夜光天,故仍用壬水,辅映太阳光辉。",ch:31,qs:"壬"},{b:"酉",m:"八月",y:"壬癸",q:"八月丙火,日近黄昏,丙有余光,存于湖海,仍用壬水辅映。",ch:32,qs:"壬"},{b:"戌",m:"九月",y:"甲壬",q:"九月丙火,火气愈退,忌土晦光,必须先用甲木,次取壬水。",ch:33,qs:"甲壬"},{b:"亥",m:"十月",y:"甲戊庚壬",q:"十月丙火,太阳失令,得见甲戊庚齐透,科甲有准,风土不及,终成选拔,主为人性好清高,斯文领袖。",ch:34,qs:"甲戊庚"},{b:"子",m:"十一月",y:"壬戊己",q:"十一月丙火,冬至一阳生,弱中复强,壬水为最,戊土佐之。",ch:35,qs:"壬戊"},{b:"丑",m:"十二月",y:"壬甲",q:"十二月丙火,气进二阳,每雪欺霜,喜壬为用,己土司令,土多又不可少甲",ch:36,qs:"壬己甲"}],丁:[{b:"寅",m:"正月",y:"甲庚",q:"正月丁火,甲木当权,乃为母旺,非庚不能劈甲,何以引丁,先庚次壬。",ch:37,qs:"甲庚壬"},{b:"卯",m:"二月",y:"庚甲",q:"二月丁火,湿乙伤丁,先庚后甲,非庚不能去乙,非甲不能引丁。",ch:38,qs:"乙庚甲"},{b:"辰",m:"三月",y:"甲庚",q:"三月丁火,戊土司令,泄弱丁气,先用甲木引丁制土,次看庚金。",ch:39,qs:"戊甲庚"},{b:"巳",m:"四月",y:"甲庚",q:"四月丁火乘旺,虽取甲引丁,必须用庚劈甲,有庚伐甲、方云木火通明;甲多、又取庚为先。",ch:40,qs:"甲庚"},{b:"午",m:"五月",y:"壬庚癸",q:"五月丁火,时逢建禄,不得轻用甲木;遇干透隔位之壬,不贪丁合,忠而且孝。",ch:41,qs:"甲壬"},{b:"未",m:"六月",y:"甲壬庚",q:"六月丁火,阴柔退气,但值三伏生寒,丁弱极矣,专取甲木,壬水次之。",ch:42,qs:"甲壬"},{b:"申",m:"七月",y:"甲庚丙戊",q:"七月丁火,退气柔弱,端用甲木,金虽乘旺司权,无伤丁之理,仍取庚劈甲,为引火之物,或借丙暖金晒甲,不虑丙夺丁光,凡两丙夹丁者,夏月忌之,余月不忌,但此格少年困苦刑克中年富贵,必要地支见水制丙,方",ch:43,qs:"甲庚丙"},{b:"酉",m:"八月",y:"甲庚丙戊",q:"或八月一派辛金,不见庚金,又无比劫,比弃命从才,富而且贵,虽不科甲,亦有异途,从才者水为妻,不克,有正偏,木为子,不刑。或九月一派戊土,泄丁火之气,不见甲木,为伤官伤尽,非寻常可比,或甲木透出",ch:44,qs:"辛庚甲戊",note:"原文全章未见「丙」,此格按整理表录入,待以善本核对"},{b:"戌",m:"九月",y:"甲庚戊",q:"或八月一派辛金,不见庚金,又无比劫,比弃命从才,富而且贵,虽不科甲,亦有异途,从才者水为妻,不克,有正偏,木为子,不刑。或九月一派戊土,泄丁火之气,不见甲木,为伤官伤尽,非寻常可比,或甲木透出",ch:44,qs:"辛庚甲戊"},{b:"亥",m:"十月",y:"甲庚",q:"三冬丁火微寒,端用庚甲,甲乃庚之良友,凡用甲木,庚不可少,无庚无甲,何能引丁,难云木火通明,冬丁有甲,不怕水多金多,可称上格,甲庚两透,科甲分明,见己则否,己多合甲,则为常人。或一丙夺丁,必赖",ch:45,qs:"庚甲己丙"},{b:"子",m:"十一月",y:"甲庚",q:"或仲冬水多癸旺,金无比印,此作弃命从杀,亦有异途功名,见丁比出干,难合格局,常人,且主骨肉浮云,六亲流水,戊出破癸,颇有兄弟妻儿,此格用戊,火妻土子,用甲,水妻木子。或四柱多丙丁,又用癸制火,",ch:46,qs:"癸戊甲丙"},{b:"丑",m:"十二月",y:"甲庚",q:"或仲冬水多癸旺,金无比印,此作弃命从杀,亦有异途功名,见丁比出干,难合格局,常人,且主骨肉浮云,六亲流水,戊出破癸,颇有兄弟妻儿,此格用戊,火妻土子,用甲,水妻木子。或四柱多丙丁,又用癸制火,",ch:46,qs:"癸戊甲丙"}],戊:[{b:"寅",m:"正月",y:"丙甲癸",q:"正二月宜先透丙,三月宜先透甲,盖正二月虽有癸甲,无丙亦难除寒气,如风雨淹淹,万物生而不长,故无丙者,一生成败,富贵艰辛,或有丙无癸甲者,名曰春旱,如万物生而多厄,一生勤苦,劳而无功。",ch:48,qs:"丙甲癸辛"},{b:"卯",m:"二月",y:"丙甲癸",q:"正二月宜先透丙,三月宜先透甲,盖正二月虽有癸甲,无丙亦难除寒气,如风雨淹淹,万物生而不长,故无丙者,一生成败,富贵艰辛,或有丙无癸甲者,名曰春旱,如万物生而多厄,一生勤苦,劳而无功。",ch:48,qs:"丙甲癸辛"},{b:"辰",m:"三月",y:"甲丙癸",q:"三月戊土司令,不见丙甲癸者,愚而且贱,甲癸透者、科甲;两癸透者、生员。丙透甲藏,无癸者富;有癸者,异途显达。",ch:49,qs:"丙甲癸"},{b:"巳",m:"四月",y:"甲丙癸",q:"四月戊土,阳气发升,寒气内藏,外实内虚,不畏火炎,无阳气相催,万物不长,故先用甲疏劈,次取丙癸为佐。",ch:50,qs:"甲丙癸"},{b:"午",m:"五月",y:"壬甲丙",q:"五月戊土,仲夏火炎,先看壬水,次取甲木,丙火酌用,用癸恐其力微。",ch:51,qs:"壬甲丙癸"},{b:"未",m:"六月",y:"癸丙甲",q:"六月戊土,遇夏干枯,先看癸水,次用丙火、甲木。",ch:52,qs:"癸丙甲"},{b:"申",m:"七月",y:"丙癸甲",q:"七月戊土,阳气渐入,寒气渐出,先丙后癸,甲木次之。",ch:53,qs:"丙癸甲"},{b:"酉",m:"八月",y:"丙癸",q:"八月戊土,金泄身寒,赖丙照暖,喜水滋润,先丙后癸,不必木疏。",ch:54,qs:"丙癸"},{b:"戌",m:"九月",y:"甲丙癸",q:"九月戊土当权,不可专用丙火。先看甲木,次取癸水,却忌戊与癸合。见金先用癸水,后取丙火,配合支干,方成有生之土,合此定发云程,科甲有准。",ch:55,qs:"丙甲癸"},{b:"亥",m:"十月",y:"甲丙",q:"十月戊土,时值小阳,阳气略出,先用甲木,次取丙火,非甲,土不灵,非丙,土不暖;安能发生万物。",ch:56,qs:"甲丙"},{b:"子",m:"十一月",y:"丙甲",q:"十一二月严寒冰冻,丙火为尊,甲木为佐。丙甲两透,桃浪之人;丙出甲藏,采芹食饩,丙藏甲出,佐杂前程;有丙无甲者,豪富,有甲无丙者,清贫,丙甲全无,下流之造。",ch:57,qs:"丙甲"},{b:"丑",m:"十二月",y:"丙甲",q:"十一二月严寒冰冻,丙火为尊,甲木为佐。丙甲两透,桃浪之人;丙出甲藏,采芹食饩,丙藏甲出,佐杂前程;有丙无甲者,豪富,有甲无丙者,清贫,丙甲全无,下流之造。",ch:57,qs:"丙甲"}],己:[{b:"寅",m:"正月",y:"丙庚甲",q:"正月己土,寒气未退,田园犹冻,丙暖为尊,得丙照暖,万物自生。忌见壬水,盖壬不为丙优,反为己病,何也?壬乃江湖之水,田园浸没,急须修堤岸,田园始得播种,须戊作堤,以保园圃,壬多见戊者,定主清雅富",ch:58,qs:"丙壬戊"},{b:"卯",m:"二月",y:"甲癸丙",q:"二月己土,阳气渐升,虽禾稼未成,万物发生。但田园未展,宜先取甲木疏之,忌合;次取癸水润之。",ch:59,qs:"甲癸"},{b:"辰",m:"三月",y:"丙癸甲",q:"三月己土,正栽培禾稼之时。先丙后癸,土暖而润,随用甲疏。",ch:60,qs:"丙癸甲"},{b:"巳",m:"四月",y:"癸丙",q:"三夏己土,时值禾稼在田,最喜甘沛,取癸为要,次用丙火。夏无太阳,禾稼不长,故无癸曰旱田,无丙曰孤阴。",ch:61,qs:"癸丙"},{b:"午",m:"五月",y:"癸丙",q:"三夏己土,时值禾稼在田,最喜甘沛,取癸为要,次用丙火。夏无太阳,禾稼不长,故无癸曰旱田,无丙曰孤阴。",ch:61,qs:"癸丙"},{b:"未",m:"六月",y:"癸丙",q:"三夏己土,时值禾稼在田,最喜甘沛,取癸为要,次用丙火。夏无太阳,禾稼不长,故无癸曰旱田,无丙曰孤阴。",ch:61,qs:"癸丙"},{b:"申",m:"七月",y:"丙癸",q:"三秋己土,万物收藏之际,外虚内实,寒气渐升,须丙火温之,癸水润之。不特此也,且癸能泄金,丙能制金,补土精神,则秋生之物咸茂矣。",ch:62,qs:"丙癸"},{b:"酉",m:"八月",y:"丙癸",q:"三秋己土,万物收藏之际,外虚内实,寒气渐升,须丙火温之,癸水润之。不特此也,且癸能泄金,丙能制金,补土精神,则秋生之物咸茂矣。",ch:62,qs:"丙癸"},{b:"戌",m:"九月",y:"甲丙癸",q:"三秋己土,万物收藏之际,外虚内实,寒气渐升,须丙火温之,癸水润之。不特此也,且癸能泄金,丙能制金,补土精神,则秋生之物咸茂矣。",ch:62,qs:"丙癸"},{b:"亥",m:"十月",y:"丙甲戊",q:"三冬己土,湿泥寒冻,非丙暖不生,取丙为尊,甲木能参用,不可用癸。唯初冬壬水旺,用以为制,余皆用丙。无丙用丁,但丁不能解冻除寒,不能火济;丁多,衣禄安然。",ch:63,qs:"丙甲癸壬丁"},{b:"子",m:"十一月",y:"丙甲戊",q:"三冬己土,湿泥寒冻,非丙暖不生,取丙为尊,甲木能参用,不可用癸。唯初冬壬水旺,用以为制,余皆用丙。无丙用丁,但丁不能解冻除寒,不能火济;丁多,衣禄安然。",ch:63,qs:"丙甲癸壬丁"},{b:"丑",m:"十二月",y:"丙甲戊",q:"三冬己土,湿泥寒冻,非丙暖不生,取丙为尊,甲木能参用,不可用癸。唯初冬壬水旺,用以为制,余皆用丙。无丙用丁,但丁不能解冻除寒,不能火济;丁多,衣禄安然。",ch:63,qs:"丙甲癸壬丁"}],庚:[{b:"寅",m:"正月",y:"戊甲壬丙丁",q:"正月庚金,木旺之际,有土皆死,不能生金。且金之寒气未除,先用丙暖庚性。又虑土厚埋金,须甲疏泄。",ch:65,qs:"丙甲"},{b:"卯",m:"二月",y:"丁甲庚丙",q:"二月庚金,卯中乙木当权,柱中自然有乙,当令之乙,得庚辰时,庚必留情于乙,此金有暗强之势,如秋金相似。",ch:66,qs:"乙"},{b:"辰",m:"三月",y:"甲丁壬癸",q:"三月庚金,戊土司令,不怕生寒,无生金之理,有埋金之忧。故先用甲木疏土,次用丁火煅炼成器,不必用庚劈甲。",ch:67,qs:"戊甲丁"},{b:"巳",m:"四月",y:"壬戊丙丁",q:"四月庚金,长生在巳,巳虽有丙,内有戊土,丙不熔金,故不畏火炎。但丙不可轻用,宜先用壬水,方得中和。书曰:群金生夏,妙用玄武;次取戊土,丙火佐之;三者皆全,富贵无双。或透一二,亦主贡监衣衿。",ch:68,qs:"丙戊壬"},{b:"午",m:"五月",y:"壬癸",q:"五月庚金,丁火旺烈,庚金败地,专用壬水,癸又次之。",ch:69,qs:"丁壬癸"},{b:"未",m:"六月",y:"丁甲",q:"六月庚金,三伏生寒,金顽已极。先用丁火,次取甲木。",ch:70,qs:"丁甲"},{b:"申",m:"七月",y:"丁甲",q:"七月庚金,刚锐极矣。专用丁火煅炼,次取木引丁。故曰:秋金刚锐最为奇,壬癸相逢总不宜:如逢木火来成局,试看福寿与天齐。",ch:71,qs:"丁壬癸"},{b:"酉",m:"八月",y:"丁甲丙",q:"八月庚金,刚锐未退,仍用丁甲,丙不可少。",ch:72,qs:"丁甲丙"},{b:"戌",m:"九月",y:"甲壬",q:"九月庚金,戊土司令,最怕土厚埋金。宜先用甲疏,后用壬洗,则金自出矣,忌见己土浊壬。",ch:73,qs:"戊甲壬己"},{b:"亥",m:"十月",y:"丁丙",q:"十月庚金,水冷性寒,非丁莫造,非丙不暖。",ch:74,qs:"丁丙"},{b:"子",m:"十一月",y:"丁甲丙",q:"十一月庚金,天气严寒,仍取丁甲,次取丙火照暖。",ch:75,qs:"丁甲丙"},{b:"丑",m:"十二月",y:"丙丁甲",q:"十二月庚金,寒气太重,丑为湿泥,愈寒愈冻,先取丙火解冻,次取丁火炼金,甲亦不可少。",ch:76,qs:"丙丁甲"}],辛:[{b:"寅",m:"正月",y:"己壬庚",q:"正月辛金,阳气舒升寒气未除。然正月建寅,中有长生之丙,可解寒气。但忌甲木司权,辛金失令。性爱湿泥滋养,取己土为身之本。次用壬水淘洗,欲得辛金发现,全赖壬水之功。",ch:77,qs:"丙甲己壬"},{b:"卯",m:"二月",y:"壬甲",q:"二月辛金,阳和之际,壬水为尊。见戊己为病,得甲制伏,则辛金不致埋没,壬水不致混浊,合此者,必身入玉堂。故二月庚金,有壬甲透者贵显;否则,乡绅。或壬坐亥支,不见土出,可能入芥,家亦小康。得申中之",ch:78,qs:"壬戊己甲庚"},{b:"辰",m:"三月",y:"壬甲",q:"三月辛金,戊土司令,辛承正气,母旺子相。",ch:79,qs:"戊"},{b:"巳",m:"四月",y:"壬甲癸",q:"四月辛金,时道首夏,忌丙火之燥烈,喜壬水之洗淘。",ch:80,qs:"丙壬"},{b:"午",m:"五月",y:"壬己癸",q:"五月辛金,丁火司权,辛金失令,阴柔之极,不宜煅炼,须己壬兼用。何也?己为泥沙,壬为湖海,己无壬不湿,辛无己不生,故壬己并用。无壬,癸亦可用,但癸力小。",ch:81,qs:"丁己壬癸"},{b:"未",m:"六月",y:"壬庚甲",q:"六月己土当权,滋扶太过,恐污金不耀,专用壬水为妙,次取庚金佐之。",ch:82,qs:"己壬庚"},{b:"申",m:"七月",y:"壬甲戊",q:"七月辛金,值庚秉令,不旺自旺。且申中有长生之壬,四柱不见戊土透干,胎元亦无戊制,唯申中一戊,为壬堤岸,人命得此,为官清正,但不富耳。",ch:83,qs:"庚壬戊"},{b:"酉",m:"八月",y:"壬甲",q:"八月辛金,当权,得令,旺之极矣,专用壬水淘之泄之为贵,故云:金见水以流通。",ch:84,qs:"壬"},{b:"戌",m:"九月",y:"壬甲",q:"九月辛金,戊土司令,母旺子相,须甲疏土,壬泄旺金,先壬后甲。壬甲两透,桃洞之仙。",ch:85,qs:"戊甲壬"},{b:"亥",m:"十月",y:"壬丙",q:"十月时值小阳,阳气初潜,寒气未盛,先用壬水,次用丙火,暖壬温辛。",ch:86,qs:"壬丙"},{b:"子",m:"十一月",y:"丙戊壬甲",q:"十一月辛金,癸水司令,为寒冬雨露,最忌癸水出干,冻金而困丙火。",ch:87,qs:"癸丙"},{b:"丑",m:"十二月",y:"丙壬戊己",q:"十二月辛金,寒冻之极,先丙后壬。无丙不能解冻,无壬不能洗淘。",ch:88,qs:"丙壬"}],壬:[{b:"寅",m:"正月",y:"庚丙戊",q:"正月壬水,汪洋之象,能并百川之流。然水性柔弱,宜用庚金之源,次取丙火以除寒气,又次取戊土以止其流,庶不致汪洋无度。",ch:90,qs:"庚丙戊"},{b:"卯",m:"二月",y:"戊辛庚",q:"二月壬水,寒气初除,清流湛深,不用丙暖,专取戊土为堤岸,辛发其源,庚金次之。",ch:91,qs:"丙戊辛庚"},{b:"辰",m:"三月",y:"甲庚",q:"三月壬水,戊土司权,死有推山塞海之患,先用甲疏季土,次取庚发水源。",ch:92,qs:"戊甲庚"},{b:"巳",m:"四月",y:"壬辛庚癸",q:"四月壬水,丙火司权,水弱极矣。专取壬水比肩为助,次取辛金发源,忌与丙火合化,又以庚金为佐。",ch:93,qs:"丙辛庚"},{b:"午",m:"五月",y:"癸庚辛",q:"五月壬水,丁旺壬弱,取庚为用,取癸为佐。无庚不能蓄源,无癸不能伤丁。",ch:94,qs:"丁庚癸"},{b:"未",m:"六月",y:"辛甲",q:"六月壬水,己土当权,丁火退气,用辛蓄源,用甲劈土;先辛后甲,次取癸水。",ch:95,qs:"己丁辛甲癸"},{b:"申",m:"七月",y:"戊丁",q:"七月壬水,庚金司令,壬得申之长生,源流自远,转弱为强。专用戊土,次取丁火,佐戊制庚,但用辰戌之戊,不用申中受病之戊。",ch:96,qs:"庚戊丁"},{b:"酉",m:"八月",y:"甲庚",q:"八月壬水,辛金司权,金白水清之时,忌戊己为病,专取甲木。",ch:97,qs:"辛戊己甲"},{b:"戌",m:"九月",y:"甲丙",q:"九月亥水进气,其性将厚。若一派壬水,见一甲制戌中之戊,又见一戊出干,斯用丙火,此格清贵极矣,正谓一将当关,群邪自伏。见丙,便主衣禄,或不见丙戊,终为下格。",ch:98,qs:"甲戊丙"},{b:"亥",m:"十月",y:"戊丙庚",q:"十月壬水司权,至旺之极,取戊为用。",ch:99,qs:"戊"},{b:"子",m:"十一月",y:"戊丙",q:"十一月壬水,阳刃帮身,较前更旺,先取戊土,次用丙火。",ch:100,qs:"戊丙"},{b:"丑",m:"十二月",y:"丙丁甲",q:"十二月壬水,旺极复衰,何也?上半月癸辛主事,壬水稍旺,专用丙火解冻,下半月己土主事,故衰,亦用丙火,甲木佐之;故有丙,名利两全。",ch:101,qs:"癸辛丙己甲"}],癸:[{b:"寅",m:"正月",y:"辛丙",q:"正月癸水,值三阳之候,为雨露之精,其性至柔。先用辛金,生癸水之源,次用丙火照暖,名阴阳和合,万物发生。",ch:102,qs:"辛丙"},{b:"卯",m:"二月",y:"庚辛",q:"二月癸水,不刚不柔,乙木司令,泄弱元神,专用庚金为用,辛金次之。",ch:103,qs:"乙庚辛"},{b:"辰",m:"三月",y:"丙辛甲",q:"三月癸水,要分清明鼓雨,清明后火气未炽,专用丙火,名阴阳承蔼。谷雨后虽用丙火,还宜辛金佐之,富贵;次看何神高透无伤,便可定格局高低。如",ch:104,qs:"丙辛"},{b:"巳",m:"四月",y:"辛",q:"四月癸水,喜见新母,无辛,庚亦可用,但不自然。",ch:105,qs:"辛庚"},{b:"午",m:"五月",y:"庚辛壬癸",q:"五月癸水,至弱无根,必须庚辛为生身之本,但丁火司权,金难敌火,安能滋养癸水?宜见比劫,方得庚辛妙用。",ch:106,qs:"庚辛丁"},{b:"未",m:"六月",y:"庚辛壬癸",q:"六月癸水,有上下月之分,上半月庚辛无气,下半月庚辛有气。凡六癸日,人多推此月多不验者,何也?俗士不知此理,不知未中有乙,与己同宫,破而不破,故癸水不能从煞,所以专用庚辛。如上半月,金神衰弱,火",ch:107,qs:"庚辛乙己",note:"原文全章未见「壬」,此格按整理表录入,待以善本核对"},{b:"申",m:"七月",y:"丁",q:"七月癸水,正母旺子相之时。癸虽死申,殊不知申中有庚生之,名死处逢生,弱中复强,即运行西北,亦不死也。但庚司令,刚锐极矣,必取丁火为用。",ch:108,qs:"庚丁"},{b:"酉",m:"八月",y:"辛丙",q:"八月癸水,辛金虚灵,非顽金可比,正金白水清。故取辛金为用,丙火佐之,名水暖金温。",ch:109,qs:"辛丙"},{b:"戌",m:"九月",y:"辛甲壬癸",q:"九月癸水,失令无根,戊土司权,克制太过,专用辛金发癸水之源,次用癸甲,要比肩滋甲制戊方妙。",ch:110,qs:"戊辛甲"},{b:"亥",m:"十月",y:"庚辛戊丁",q:"十月癸水,旺中有弱,何也?因亥摇木,泄散元神,宜用庚辛为妙。",ch:111,qs:"庚辛"},{b:"子",m:"十一月",y:"丙辛",q:"十一月癸水,值冰冻之时,金水无交欢之象,专用丙火解冻,庶不致变雨为雪,结露为霜。又要辛金滋扶,然无丙火,辛亦不妙。凡冬季癸水,有丙透解冻,则金温水暖,两两相生,要不见壬透,自然登科及第,紫诰金",ch:112,qs:"丙辛壬"},{b:"丑",m:"十二月",y:"丙丁",q:"十二月癸水,落地成冰,万物不能舒泰,专用丙火解冻。",ch:113,qs:"丙"}]};function T(Y,m){const $=ne[Y];if(!$)return null;const A=P.indexOf(m);if(A<0)return null;const j=$[A];if(!j)return null;const y=[...j.y];return{stem:Y,branch:j.b,month:j.m,yong:y,primary:y[0]||null,quote:j.q,quoteStems:[...j.qs],chapter:j.ch,url:te+String(j.ch).padStart(3,"0")+"/",note:j.note||"",label:Y+"日生于"+j.m+"("+j.m+j.b+"月)"}}function v(Y){return Y?Y.label+":用神 "+Y.yong.join("、")+"(首取 "+Y.primary+")":""}return{QT_BRANCHES:P,QT_MONTHS:Q,QT_BASE_URL:te,QT_NOTE:J,QT:ne,qtOf:T,qtLine:v}})(),W.classics=(function(){const P={ziping:{name:"子平真诠",author:"清·沈孝瞻",base:"https://www.diancang.xyz/xuanxuewushu/zipingzhenquan/"},ditian:{name:"滴天髓",author:"明·京图(通行本)",base:"https://www.diancang.xyz/xuanxuewushu/ditiansui/"},sanming:{name:"三命通会",author:"明·万民英",base:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/"}},Q=[{id:"zp-yongshen",book:"ziping",chapter:"八、论用神",scene:"用神",tags:[],quote:"八字用神,专求月令,以日干配月令地支,而生克不同,格局分焉。财官印食,此用神之善而顺用之者也;煞伤劫刃,用神之不善而逆用之者也。",plain:"用神从月令里找:财、官、印、食四吉神顺用(生之护之),煞、伤、劫、刃四凶神逆用(制之化之)。",url:"https://www.diancang.xyz/xuanxuewushu/zipingzhenquan/53628.html"},{id:"zp-zhenguan",book:"ziping",chapter:"三十一、论正官",scene:"格局",tags:["正官"],quote:"以刑冲破害为忌,则以生之护之为喜矣。存其喜而去其忌则贵,而贵之中又有高低者,何也?",plain:"正官格最忌刑冲破害,喜财生官、印护官;去忌存喜才谈得上贵,贵的层次还要看财印是否并透、有无伤官七煞混杂。",url:"https://www.diancang.xyz/xuanxuewushu/zipingzhenquan/53651.html"},{id:"zp-cai",book:"ziping",chapter:"三十三、论财",scene:"格局",tags:["财","正财","偏财"],quote:"财为我克,使用之物也,以能生官,所以为美。为财帛,为妻妾,为才能,为驿马,皆财类也。",plain:"财是我所克、能为我用之物,因能生官而美;它同时代表钱财、配偶、才能、走动,不只「钱」一项。",url:"https://www.diancang.xyz/xuanxuewushu/zipingzhenquan/53653.html"},{id:"zp-yin",book:"ziping",chapter:"三十五、论印绶",scene:"格局",tags:["印"],quote:"印绶喜其生身,正偏同为美格,故财与印不分偏正,同为一格而论之。",plain:"印能生身,正印偏印都算美格,不分偏正而论;印格的关键在身印强弱与官杀、食伤、财的配合。",url:"https://www.diancang.xyz/xuanxuewushu/zipingzhenquan/53655.html"},{id:"zp-shishen",book:"ziping",chapter:"三十七、论食神",scene:"格局",tags:["食神"],quote:"食神本属泄气,以其能生正财,所以喜之。故食神生财,美格也。财要有根,不必偏正叠出,如身强食旺而财透,大贵之格。",plain:"食神本是泄气,可贵在能生财;食神生财要财有根,身强、食旺、财透三者齐,格局才大。",url:"https://www.diancang.xyz/xuanxuewushu/zipingzhenquan/53657.html"},{id:"zp-pianguan",book:"ziping",chapter:"三十九、论偏官",scene:"格局",tags:["七杀","偏官"],quote:"煞以攻身,似非美物,百大贵之格,多存七煞。盖控制得宜,煞为我用,如大英雄大豪杰,似难驾驭,而处之有方,则惊天动地之功,忽焉而就。",plain:"七煞攻身,看着不美,但大贵之格多有七煞——能控制住就为我所用,像驾驭豪杰,处之有方就能成大事。",url:"https://www.diancang.xyz/xuanxuewushu/zipingzhenquan/53659.html"},{id:"zp-shangguan",book:"ziping",chapter:"四十一、论伤官",scene:"格局",tags:["伤官"],quote:"伤官虽非吉神,实为秀气,故文人学士,多于伤官格内得之。而夏木见水,冬金见火,则又为秀之尤秀者也。",plain:"伤官不是吉神,却是秀气所在,文人多出伤官格;夏木得水、冬金得火,是秀气里更秀的两种。",url:"https://www.diancang.xyz/xuanxuewushu/zipingzhenquan/53661.html"},{id:"zp-yangren",book:"ziping",chapter:"四十三、论阳刃",scene:"格局",tags:["劫财","阳刃"],quote:"阳刃者,劫我正财之神,乃正财之七煞也。禄前一位,惟五阳有之,故为阳刃。不曰劫而曰刃,劫之甚也。刃宜伏制,官煞皆宜,财印相随,尤为贵显。",verifiedQuote:"阳刃者,劫我正财之神,乃正财之七煞也。禄前一位,惟五阳有之",variantNote:"典藏网此页把「故为阳刃」刻作「故为旭刃」,与通行本异文;前段仍可逐字核验",plain:"阳刃是劫财之极(只有五阳干有),宜用官煞制伏;财印相随而不相碍,格局更显。",url:"https://www.diancang.xyz/xuanxuewushu/zipingzhenquan/53663.html"},{id:"zp-lujie",book:"ziping",chapter:"四十五、论建禄月劫",scene:"格局",tags:["比肩","建禄","月劫"],quote:"故建禄与月劫,可同一格,不必加分,皆以透干支,别取财官煞食为用。",plain:"建禄、月劫同看一格,月令本身不算用神,要另看透出的财官煞食取用。",url:"https://www.diancang.xyz/xuanxuewushu/zipingzhenquan/53665.html"},{id:"zp-qihou",book:"ziping",chapter:"十四、论用神配气候得失",scene:"调候",tags:[],quote:"论命惟以月令用神为主,然亦须配气候而互参之。譬如英雄豪杰,生得其时,自然事半功倍;遭时不顺,虽有奇才,成功不易。",plain:"月令用神为主,但必须配气候参看;同样的格局,生在得时的气候里事半功倍,逆着气候就费劲。",url:"https://www.diancang.xyz/xuanxuewushu/zipingzhenquan/53634.html"},{id:"zp-chengbai",book:"ziping",chapter:"九、论用神成败救应",scene:"格局",tags:[],quote:"成中有败,必是带忌;败中有成,全凭救应。",plain:"成格不等于一路顺:成中带忌(官逢财又逢伤、官被合之类)就打了折;败格也未必无救——印来解伤、合来清煞,败中还能转成。",url:"https://www.diancang.xyz/xuanxuewushu/zipingzhenquan/53629.html"},{id:"zp-zaji",book:"ziping",chapter:"十六、论杂气如何取用",scene:"用神",tags:[],quote:"何谓透干?如甲生辰月,透戊则用偏财,透癸则用正印,透乙则用月劫是也。何谓会支?如甲生辰月,逢申与子会局,则用水印是也。一透则一用,兼透则兼用,透而又会,则透与会并用。",plain:"四墓(辰戌丑未)所藏不止一气,所以叫杂气:取用先看哪一藏干透到天干,透一个用一个;没有透干,再看地支有没有与月支会成三合局,会成什么局就取局中那一气。透干与会支同时成立时两样并用。原文对「兼透」只给原则,没有给取舍次序。",url:"https://www.diancang.xyz/xuanxuewushu/zipingzhenquan/53636.html"},{id:"zp-bianhua",book:"ziping",chapter:"十、论用神变化",scene:"格局",tags:[],quote:"故若丁生亥月,本为正官,支全卯未,则化为印。己生申月,本属伤官。藏庚透壬,则化为财。凡此之类皆用神之变化也。",plain:"用神本从月令取,但月令藏干不一:丁生亥月本为正官,支会卯未就化为印;己生申月本属伤官,庚藏壬透就化为财。起点相同,合化一变,取用也跟着变(原文只说变化之由,不断定某盘必化)。",url:"https://www.diancang.xyz/xuanxuewushu/zipingzhenquan/53630.html"},{id:"dt-hannuan",book:"ditian",chapter:"通神论·寒暖",scene:"调候",tags:[],quote:"天道有寒暖,生育万物,人道行之,不可过也。",plain:"天有寒暖才能生养万物,人命里寒暖也不能过——过寒过热都要调。",url:"https://www.diancang.xyz/xuanxuewushu/ditiansui/153091.html"},{id:"dt-zaoshi",book:"ditian",chapter:"通神论·燥湿",scene:"调候",tags:[],quote:"地道有燥湿,生成品汇,人道得之,不可偏也。",plain:"地有燥湿才有品类生成,人命得燥湿之气也不能偏。",url:"https://www.diancang.xyz/xuanxuewushu/ditiansui/153091.html"},{id:"dt-shuaiwang",book:"ditian",chapter:"通神论·衰旺",scene:"调候",tags:[],quote:"能知旺衰之真机,其于三命之奥,思过半矣。",plain:"真正看懂旺衰的机关,命理之奥就过了一半——旺衰不是数个数,要看真机。",url:"https://www.diancang.xyz/xuanxuewushu/ditiansui/153091.html"},{id:"dt-zhonghe",book:"ditian",chapter:"通神论·中和",scene:"调候",tags:[],quote:"既识中和之正理,而于五行之妙,有全能焉。",plain:"懂得中和的道理,五行的妙处就都在其中了。",url:"https://www.diancang.xyz/xuanxuewushu/ditiansui/153091.html"},{id:"dt-guansha",book:"ditian",chapter:"通神论·官杀",scene:"十神",tags:["正官","七杀"],quote:"官杀混杂来问我,有可有不可。",plain:"官杀混杂不是一律不好,要看能不能去留取清。",url:"https://www.diancang.xyz/xuanxuewushu/ditiansui/153091.html"},{id:"dt-shangguan",book:"ditian",chapter:"通神论·伤官",scene:"十神",tags:["伤官"],quote:"伤官见官最难辨,可见不可见。",plain:"伤官见官是最难分辨的一条:有的能见,有的不能见,不能一句「伤官见官为祸百端」了事。",url:"https://www.diancang.xyz/xuanxuewushu/ditiansui/153091.html"},{id:"dt-yueling",book:"ditian",chapter:"通神论·月令",scene:"用神",tags:[],quote:"月令乃提纲之府,譬之宅也,人元为用事之神,宅之定向也,不可以不卜。",plain:"月令像宅子,藏干是用事之神,像宅子的朝向,必须细看。",url:"https://www.diancang.xyz/xuanxuewushu/ditiansui/153091.html"},{id:"dt-tiyong",book:"ditian",chapter:"通神论·体用",scene:"用神",tags:[],quote:"道有体用,不可以一端论也,要在扶之抑之得其宜。",plain:"体用不能只看一头,关键是扶抑得宜。",url:"https://www.diancang.xyz/xuanxuewushu/ditiansui/153091.html"},{id:"dt-jingshen",book:"ditian",chapter:"通神论·精神",scene:"用神",tags:[],quote:"人有精神,不可以一偏求也,要在损之益之得其中。",plain:"看精神不能偏执一端,要在损益之间求其中。",url:"https://www.diancang.xyz/xuanxuewushu/ditiansui/153091.html"},{id:"dt-tongguan",book:"ditian",chapter:"通神论·通关",scene:"用神",tags:[],quote:"关内有织女,关外有牛郎,此关若通也,相邀入洞房。",plain:"两股力隔着一道关相望:一边织女、一边牛郎,中间若有一行能把两边接上(一方生它、它再生另一方),对峙就化成相生。原文只给取象,哪一行为关要按五行生克定。",url:"https://www.diancang.xyz/xuanxuewushu/ditiansui/153091.html"},{id:"smt-zhenguan",book:"sanming",chapter:"卷五·论正官",scene:"格局",tags:["正官"],quote:"正官者,乃甲见辛、乙见庚之例。阴阳配合,相制有用,成其道也。故正官为六格之首,止许一位,多则不宜。",plain:"正官取「克我而阴阳相配」,有制而能成用;六格以正官居首,只宜一位,多见就杂。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7582.html"},{id:"smt-zhengcai",book:"sanming",chapter:"卷六·论正财",scene:"格局",tags:["财","正财"],quote:"正财者,乃甲见己、乙见戊之例。受我克制,为我之妻,譬人娶妻,妻赍财嫁我,我必精神康强,而后可享用,若衰微不振,虽妻财丰厚,但能目视,终不得用。",plain:"正财是我克制之物,古人以「娶妻带财」作比:自身精神康强才受用得起,身弱不振,财再厚也只是看着。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7645.html"},{id:"smt-piancai",book:"sanming",chapter:"卷六·论偏财",scene:"格局",tags:["财","偏财"],quote:"何谓偏财?乃甲见戊、乙见己之例。非妻所带,乃众人之财也。切忌有姊妹兄弟分夺,柱无官星,祸患百出。",plain:"偏财取「我克而阴阳不同」:不是妻家带来的私财,而是众人之财,宜流通不宜独占。原文最忌比肩劫财来分夺,又说柱中无官星则多事(旧说的重话照录,本插件只记原文、不作断语)。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7650.html"},{id:"smt-yinshou",book:"sanming",chapter:"卷六·论印绶",scene:"格局",tags:["印"],quote:"印绶者,乃五行生我之名。如甲乙在亥子月,丙丁在寅卯月之类,乃我气之源,为生气,为父母,能护我官星,使无伤克",plain:"印是生我之气,像源头与父母:它能护住官星,使官不受伤克;反过来说,印重就怕财来破。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7655.html"},{id:"smt-shishen",book:"sanming",chapter:"卷六·论食神",scene:"格局",tags:["食神"],quote:"凡命遇财煞之地,食神旺相,煞被食制,不敢为祸,财被食生,充裕不竭,故食神一名寿星,一名爵星,良有以也。",plain:"食神旺,一头制煞、一头生财:煞被制住不敢为祸,财被生起不至枯竭;所以食神又叫寿星、爵星。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7663.html"},{id:"smt-shangguan",book:"sanming",chapter:"卷六·论伤官",scene:"格局",tags:["伤官"],quote:"伤官虽凶,乃我所生,自家之物,伤尽则能生财,财旺则能生官,造化展转有情。",plain:"伤官虽称凶,却是我自己生出来的:伤尽(柱中不见官星)反能生财,财旺再生官,辗转还是有情。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7662.html"},{id:"smt-yangren",book:"sanming",chapter:"卷六·论阳刃",scene:"格局",tags:["阳刃","劫财"],quote:"阳者,阴阳之阳,刃者,刀刃之刃,即禄前一位,言旺越其分,故险。",plain:"阳刃指禄前一位,旺过了本分,所以险;甲丙戊庚壬五阳干才有刃,阴干见伤官同论。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7671.html"},{id:"smt-jianlu",book:"sanming",chapter:"卷六·论建禄",scene:"格局",tags:["建禄","比肩","月劫"],quote:"凡命月令建禄,难招祖业,必主平生见财不聚,却病少寿长,行运再见比肩,克妻妨父损子",plain:"月令建禄是日主临官之地,身旺而财官难取:古说难承祖业、见财不聚,但病少寿长;再走比肩运,古书说克妻妨父损子(属于旧说的重话,本插件只记原文、不作断语)。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7672.html"},{id:"smt-guansha-liu",book:"sanming",chapter:"卷五·官煞去留杂论",scene:"格局",tags:["七杀","偏官"],quote:"凡看去留,要详柱中官煞孰重孰轻,天干透者易去,月支所藏者难去,须伤官食神去官煞之物众而有力,方才去得。",plain:"官煞混见时先比谁重谁轻:天干透出的容易去,月支藏着的难去;用来去官煞的伤官食神要成众、有根有力,才真去得掉。七杀格遇正官混杂,就按这一篇看取舍。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7599.html"},{id:"smt-quzhi",book:"sanming",chapter:"卷六·曲直",scene:"格局",tags:["曲直格","专旺"],quote:"甲乙日得亥卯未局,柱中须有亥字带印为入格,若无亥有卯,止是木之本气,却要见金土为贵,既无亥字,又无金土,则木不秀不实,难以言贵。",plain:"曲直格要木局成方(亥卯未)且带亥字为印,才算入格;只有卯、没有亥,只是木的本气,得另见金土才谈得上贵;两样都没有,木虽旺而无成,难称贵格。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7630.html"},{id:"smt-yanshang",book:"sanming",chapter:"卷六·炎上",scene:"格局",tags:["炎上格","专旺"],quote:"丙丁日遇寅午戌局,柱中须有寅字带印为入格,无寅止是九流近贵之命,若火自旺,无亥水相济,不贵。喜东北方运,忌见辰丑戊己,晦火光明,多主眼疾,或患风气,柱有木制成贵,忌水金乡,怕冲。",plain:"炎上格要火局成方(寅午戌)且带寅字为印才入格;无寅只是偏贵的命。火自旺还要一点水相济,过燥不贵;行运喜东北、忌湿土晦火,也怕冲。原文另带「多主眼疾」一句,属于旧说,本插件只记原文、不作健康判断。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7631.html"},{id:"smt-congge",book:"sanming",chapter:"卷六·从革",scene:"格局",tags:["从革格","专旺"],quote:"庚辛日见巳酉丑局,须带丙丁巳午一二位方成其器,但不可火多。如辛巳、辛酉、辛丑三日不喜五月生,被火所伤,宜八月或水土养育食神印绶为吉。",plain:"从革格是金局成方(巳酉丑),但金要火炼才成器:须带丙丁或巳午一二位,火又不能多。辛巳、辛酉、辛丑三日出身在五月(火旺)被伤,原文说宜八月或水土养育。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7632.html"},{id:"smt-runxia",book:"sanming",chapter:"卷六·润下",scene:"格局",tags:["润下格","专旺"],quote:"壬癸日见申子辰全,忌引卯巳死绝之地,三刑四冲之乡,死绝则不流,冲刑则横流,岁运同。或曰水太泛须柱有土神一两位制之,得成堤岸,既有土怕会木为凶,如有木伤土要金印救解,终是一生成败。",plain:"润下格是水局三合全(申子辰),最忌卯巳死绝与三刑四冲:死绝水不流,冲刑水横流,行运也一样看。水太泛要一两位土作堤,有土又怕木来破堤,木伤土再用金印解救——原文把成败条件摊开讲。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7633.html"},{id:"smt-jiasi",book:"sanming",chapter:"卷六·稼穑",scene:"格局",tags:["稼穑格","专旺"],quote:"赋云:戊己忻逢四季,乃为稼穑之名。是戊己生逢季月,喜见木为官,止得一木为妙,木多则土虚,主虚诈为破家不仁之人。",plain:"稼穑格取戊己生于四季月(辰戌丑未)。原文说喜见一木为官,木多则土虚;后半对木多之人的评语是旧说的重话,本插件只照录条件、不拿来评价人。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7634.html"},{id:"smt-congsha",book:"sanming",chapter:"卷五·弃命从煞",scene:"格局",tags:["从杀格"],quote:"《独步》云:弃命从煞,须要会煞从财,忌煞从煞。盖言从煞格,以煞神太重,身无所归,不得已从之,要行煞旺及财乡,四柱无一点比肩印绶方论,如遇运扶身旺,与煞为敌,从煞不专,故为祸患。",plain:"从煞格是煞太重、日主无所归才「弃命」相从:条件是四柱没有一点比肩印绶扶身,行运喜煞旺与财乡;一旦走扶身之运,与煞为敌,就从得不专。本插件只作结构说明,不据此断寿夭。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7598.html"},{id:"smt-congcai",book:"sanming",chapter:"卷六·弃命从财",scene:"格局",tags:["从财格"],quote:"《独步》云:弃命从财,须要会财,若逢根气,命损无猜。假如丁生酉月,柱多庚辛,日干无气,只得弃命相从,运入北方财官旺地,乃为入格,南行灾。",plain:"从财格要财会成局、日干无气;一见根气就破格,原文用「命损无猜」这种重话写明。以丁生酉月、柱多庚辛为例:只能弃命相从,行北方财官旺地为入格,南行则灾。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7652.html"},{id:"smt-suiyun",book:"sanming",chapter:"卷二·总论岁运",scene:"岁运",tags:[],quote:"行运以生月为运元,最怕行运与太岁冲克,若岁运冲月必祸;若岁运与日相对,谓之返吟,岁运压日,谓之伏吟,二者不利六亲,非横破财,不为吉兆。",plain:"大运以生月为起点,最怕与流年(太岁)冲克:原文说岁运冲月为祸,又把「岁运与日柱相对」叫返吟、「岁运压日」叫伏吟。这两句是按「对日柱」说的,与本插件「干支相同为伏吟、天克地冲为反吟」不是同一套定义(本插件取后者);末句「不利六亲、破财」是旧说的重话,只作变动提示,不作断语。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7539.html"},{id:"smt-renyuan",book:"sanming",chapter:"卷二·论人元司事",scene:"人元",tags:[],quote:"故支吕所藏者主命,谓之人元,名为司事之神,以命术言之为月令。如正月建寅,寅中有艮土用事五日,丙火长生五日,甲木二十日;二月建卯,卯中有甲木用事七日,乙木二十三日;",plain:"地支所藏为「人元」,按月令分日轮值。三命通会这一本给的是另一套日数:寅月艮土(戊土)五日、丙火五日、甲木二十日,卯月甲七日、乙二十三日。它与本插件采用的通行 30 日表(寅月戊7丙7甲16,即 7/7/16;卯月甲10乙20,即 10/20)不是同一套分法;两表各照原样并列,本插件仍按通行表给「第几日谁当权」,不改取格。",url:"https://www.diancang.xyz/xuanxuewushu/sanmingtonghui/7529.html"}],te=Q.reduce((y,k)=>(y[k.id]=k,y),{}),J={正官格:"正官",七杀格:"七杀",偏官格:"偏官",正财格:"正财",偏财格:"偏财",正印格:"印",偏印格:"印",食神格:"食神",伤官格:"伤官",阳刃格:"阳刃",月劫格:"月劫",建禄格:"建禄"},ne={曲直格:"smt-quzhi",炎上格:"smt-yanshang",从革格:"smt-congge",润下格:"smt-runxia",稼穑格:"smt-jiasi",从财格:"smt-congcai",从杀格:"smt-congsha"};function T(y){return te[y]||null}function v(y){return(y&&Array.isArray(y.liunian)?y.liunian:[]).some(S=>S&&S.suiyun&&Array.isArray(S.suiyun.signals)&&S.suiyun.signals.length)?T("smt-suiyun"):null}function Y(y){const k=String(y||"");if(J[k])return J[k];const re=k.replace(/格$/,"");return J[re+"格"]||re}function m(y,k){return Q.find(re=>re.scene==="格局"&&re.tags.includes(y)&&(!k||re.book===k))||null}function $(y){return y.chapter.replace(/^.*[、·]/,"").replace(/^论/,"")}function A(y,k=5){if(!y)return[];const re=[],S=new Set,M=(ee,ue)=>{!ee||S.has(ee.id)||re.length>=k||(S.add(ee.id),re.push({...ee,why:ue}))},i=Array.isArray(y.geju)?y.geju:y.frame&&Array.isArray(y.frame.geju)?y.frame.geju:[],d=i.some(ee=>ee&&ee.kind==="化气格");for(const ee of i){if(ee&&ee.status==="破格"||d&&ee&&ee.status==="假从")continue;const ue=ee&&ne[ee.name]?T(ne[ee.name]):null;ue&&M(ue,`本盘列有「${ee.name}」,故取${P[ue.book].name}「${$(ue)}」一条`)}for(const ee of i){if(!ee||ee.kind&&ee.kind!=="月令格")continue;const ue=Y(ee.name),ke=m(ue,"ziping")||m(ue);ke&&M(ke,`你的月令格局是「${ee.name}」,故取${P[ke.book].name}「${$(ke)}」一条`);const Me=Q.find(Ne=>Ne.scene==="格局"&&Ne.tags.includes(ue)&&(!ke||Ne.book!==ke.book));Me&&M(Me,`同是「${ee.name}」,${P[Me.book].name}「${$(Me)}」另有取法,可对照读`)}const a=y.climate||y.frame&&y.frame.yongshen&&(y.frame.yongshen.climate||y.frame.yongshen.tiaohou),r=y.frame&&y.frame.yongshen&&y.frame.yongshen.tongguan,u=r&&r.usable?T("dt-tongguan"):null;if(a&&a.kind&&a.kind!=="平和"){const ee=!!(a.cold||a.kind.indexOf("寒")>=0),ue=!!(a.hot||a.kind.indexOf("热")>=0);M(T(ee?"dt-hannuan":"dt-zaoshi"),`本盘气候判为「${a.kind}」,故取${P.ditian.name}寒暖燥湿一条`),u||M(T("zp-qihou"),"气候与月令用神要互参,故取子平真诠「用神配气候」一条"),ue&&M(T("dt-hannuan"),"本盘偏热,寒暖一条正对")}u&&M(u,`本盘忌${r.foe}克用${r.use},局中${r.bridge}${r.weight}分可作通关,故取${P.ditian.name}「通关」一条`);const g=i.find(ee=>ee&&ee.kind==="化气格"),_=i.find(ee=>ee&&ee.kind==="组合"),K=y.monthBranch||y.frame&&y.frame.monthBranch||y.pillars&&y.pillars.month&&y.pillars.month.branch,R=["辰","未","戌","丑"].includes(K);return g?M(T("zp-bianhua"),`本盘列有「${g.name}」:用神由月令合化而变,总纲一位改取${P.ziping.name}论用神变化`):R?M(T("zp-zaji"),`月令${K}属四墓杂气,取用先看透干、再看会支,总纲一位取${P.ziping.name}论杂气如何取用`):_?M(T("zp-chengbai"),`本盘另有「${_.name}」组合:成格还要看带忌与救应,总纲一位改取${P.ziping.name}论用神成败救应`):M(T("zp-yongshen"),"用神从月令取、四吉顺用四凶逆用,是通用总纲"),re}function j(y){return!y||!y.length?"":y.map(k=>`《${P[k.book].name}·${k.chapter}》「${k.quote}」`).join(`
68
+ `)}return{CLASSIC_BOOKS:P,CLASSICS:Q,classicOf:T,suiyunClassicOf:v,classicsFor:A,classicsText:j}})(),W.geju=(function(){const{judgeClimate:P,arbitrate:Q}=W.tiaohou||{},{qtOf:te}=W.qiongtong||{},{SANHE_GROUPS:J,sanheGroupOf:ne}=W.sanhe||{},T=["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"],v=["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"],Y={甲:"木",乙:"木",丙:"火",丁:"火",戊:"土",己:"土",庚:"金",辛:"金",壬:"水",癸:"水"},m={子:"水",丑:"土",寅:"木",卯:"木",辰:"土",巳:"火",午:"火",未:"土",申:"金",酉:"金",戌:"土",亥:"水"},$={木:"火",火:"土",土:"金",金:"水",水:"木"},A={木:"土",土:"水",水:"火",火:"金",金:"木"},j={子:["癸"],丑:["己","癸","辛"],寅:["甲","丙","戊"],卯:["乙"],辰:["戊","乙","癸"],巳:["丙","戊","庚"],午:["丁","己"],未:["己","丁","乙"],申:["庚","壬","戊"],酉:["辛"],戌:["戊","辛","丁"],亥:["壬","甲"]},y=[1,.5,.3],k={甲:"寅",乙:"卯",丙:"巳",丁:"午",戊:"巳",己:"午",庚:"申",辛:"酉",壬:"亥",癸:"子"},re={甲:"卯",乙:"辰",丙:"午",丁:"未",戊:"午",己:"未",庚:"酉",辛:"戌",壬:"子",癸:"丑"},S={甲己:"土",乙庚:"金",丙辛:"水",丁壬:"木",戊癸:"火"},M=l=>T.indexOf(l)%2===0,i=["木","火","土","金","水"];function d(l,h){const c=Y[l],b=Y[h],x=M(l)===M(h);return c===b?x?"比肩":"劫财":$[c]===b?x?"食神":"伤官":A[c]===b?x?"偏财":"正财":A[b]===c?x?"七杀":"正官":$[b]===c?x?"偏印":"正印":"?"}const a={比劫:["比肩","劫财"],食伤:["食神","伤官"],财:["正财","偏财"],官杀:["正官","七杀"],印:["正印","偏印"]};function r(l,h){const c={比劫:0,食伤:0,财:0,官杀:0,印:0},b={比肩:0,劫财:0,食神:0,伤官:0,正财:0,偏财:0,正官:0,七杀:0,正印:0,偏印:0},x=(p,I)=>{const H=d(h,p),he=Object.keys(a).find(se=>a[se].includes(H));he&&(c[he]+=I),b[H]!==void 0&&(b[H]+=I)};for(const p of["year","month","day","hour"])x(l[p].stem,p==="day"?.6:1),(j[l[p].branch]||[]).forEach((I,H)=>x(I,y[H]??.1));for(const p of Object.keys(c))c[p]=Math.round(c[p]*10)/10;for(const p of Object.keys(b))b[p]=Math.round(b[p]*10)/10;return{groups:c,byGod:b}}function u(l){const h=Y[l],c=i.find(x=>$[x]===h),b=i.find(x=>A[x]===h);return{me:h,inMe:c,shi:$[h],cai:A[h],guan:b}}const g=["辰","未","戌","丑"];function _(l,h,c){if(!g.includes(h))return null;const b=ne(h);if(!b)return null;const x=["year","day","hour"],p=b.branches.filter(he=>he!==h);if(!p.every(he=>x.some(se=>l[se].branch===he)))return null;const I=c.find(he=>Y[he.stem]===b.element);if(!I)return null;const H=x.filter(he=>p.includes(l[he].branch)).map(he=>`${{year:"年",day:"日",hour:"时"}[he]}支${l[he].branch}`);return{...I,group:b,where:H}}function K(l,h,c){const b=j[c]||[],x=b.map((ye,ve)=>({stem:ye,god:d(h,ye),pos:["本气","中气","余气"][ve],w:y[ve]??.1})),I=["year","month","hour"].find(ye=>x.some(ve=>ve.stem===l[ye].stem)),H=x[0],he=I?null:_(l,c,x),se=I?x.find(ye=>ye.stem===l[I].stem):he||H,qe=I?"透干":he?"会支":"本气",Te=I?{year:"年",month:"月",hour:"时"}[I]:null;if(H.god==="比肩"&&k[h]===c)return{name:"建禄格",kind:"月令格",evidence:`月令${c}为日干${h}之禄(本气${H.stem}比肩),身坐禄地`};if(H.god==="劫财")return re[h]===c?{name:M(h)?"阳刃格":"月刃格",kind:"月令格",evidence:`月令${c}为日干${h}之刃(本气${H.stem}劫财)${M(h)?"":",阴干统称月刃"}`}:{name:"月劫格",kind:"月令格",evidence:`月令${c}本气${H.stem}为劫财`};if(qe==="本气"&&H.god==="比肩")return{name:"比肩格",kind:"月令格",evidence:`月令${c}藏${b.join("")},本气${H.stem}为比肩,但${h}禄在${k[h]}、不在${c},属杂气月比肩当权`};if(qe!=="本气"&&se.god==="劫财"){const ye=I?`透于${Te}干`:`${he.where.join("、")}会成${he.group.element}局`;return{name:"月劫格",kind:"月令格",evidence:`月令${c}藏${b.join("")},${se.pos}${se.stem}(劫财)${ye},劫财为用,作月劫论`}}const Ae=`${se.god}格`;let xe;return I?xe=`月令${c}藏${b.join("")},${se.pos}${se.stem}(${se.god})透于${Te}干`:he?xe=`月令${c}藏${b.join("")},本气${H.stem}(${H.god})未透干,而${he.where.join("、")}会成${he.group.element}局,取${se.pos}${se.stem}(${se.god})为用`:xe=`月令${c}藏${b.join("")},本气${H.stem}(${H.god})未透干,以月令本气取格`,{name:Ae,kind:"月令格",evidence:xe}}const R={木:"曲直格",火:"炎上格",土:"稼穑格",金:"从革格",水:"润下格"},ee={财:"从财格",官杀:"从杀格",食伤:"从儿格",印:"从强格",比劫:"从强格"},ue={year:"年",month:"月",day:"日",hour:"时"};function ke(l,h){const c=Y[h],b={bi:0,yin:0,total:0,details:[],helpers:[]};for(const x of["year","month","day","hour"]){const p=l[x].branch;(j[p]||[]).forEach((I,H)=>{const he=Y[I],se=y[H]??.1;he===c?(b.bi+=se,b.details.push(`${ue[x]}支${p}藏${I}(比劫 ${se})`)):$[he]===c&&(b.yin+=se,b.details.push(`${ue[x]}支${p}藏${I}(印 ${se})`))})}for(const x of["year","month","hour"]){const p=l[x].stem,I=Y[p];(I===c||$[I]===c)&&b.helpers.push(`${ue[x]}干${p}(${I===c?"比劫":"印"})`)}return b.bi=Math.round(b.bi*10)/10,b.yin=Math.round(b.yin*10)/10,b.total=Math.round((b.bi+b.yin)*10)/10,b}function Me(l,h,c,b,x,p){const I=[],H=u(h),he=H.me,se=x[he]??0,qe=x[H.inMe]??0,Te=x[H.cai]??0,Ae=x[H.guan]??0,xe=x[H.shi]??0;for(const oe of["year","month","hour"]){const Z=l[oe].stem,D=S[h+Z]||S[Z+h];if(!D)continue;const de=m[c];if(de===D||$[de]===D){I.push({name:`${D==="土"?"化土格":`化${D}格`}`,kind:"化气格",evidence:`日干${h}与${["年","月","时"][["year","month","hour"].indexOf(oe)]}干${Z}合化${D},月令${c}${de}${de===D?"同化神":"生助化神"};化气格须全局无争合妒合才算真,此处仅列条件`});break}}if((b.level==="身强"||b.level==="偏强")&&se+qe>=5){const oe=[];Ae>1.2&&oe.push(`官杀 ${Ae} 分,逆旺势`),Te>1.8&&oe.push(`财 ${Te} 分,耗旺气`);const Z=m[c],D=Z===he||Z===H.inMe,de=J.find(L=>L.element===he),O=["year","month","day","hour"].map(L=>l[L].branch),f=de&&de.branches.every(L=>O.includes(L))?de.branches.join(""):null,G=oe.length?"破格":D?"成格":"待定";I.push({name:R[he],kind:"专旺格",status:G,breaks:oe,ju:f,evidence:`日主${he}得${se+qe}分(同类+印),官杀${Ae}、财${Te}${oe.length?"":"皆弱"};${D?`月令${c}${Z}助旺`:`月令${c}${Z}不助旺`}${f?`,地支${f}成局`:""},${G==="成格"?"成格":G==="破格"?"见破格条件":"成势而条件未全"}`,breakRule:oe.length?"专旺以官杀逆旺势、财星耗旺气为破;见其一即不纯":void 0})}const ye=ke(l,h);if(ye.total<1&&(b.level==="身弱"||b.level==="偏弱")){const oe=Object.entries({财:Te,官杀:Ae,食伤:xe,印:qe}).sort((Z,D)=>D[1]-Z[1])[0];if(oe[1]>=2.5){const Z=ye.total>0||ye.helpers.length>0,D=[...ye.details,...ye.helpers.map(de=>`天干${de}虚透`)];I.push({name:ee[oe[0]],kind:"从格",status:Z?"假从":"真从",breaks:Z?D:[],rootWeight:ye.total,evidence:Z?`日主有微根或虚透(${D.join(";")}),${oe[0]}占 ${oe[1]} 分最旺,假从${oe[0]};行运助身则不从`:`日主无根(四支藏干无同类与印、天干无比劫印绶),${oe[0]}占 ${oe[1]} 分最旺,真从${oe[0]}`,breakRule:Z?"从格以日主有根、比劫印绶透出为破;有根而从者称假从,运助身则不从":void 0})}}const ve=p.byGod||{},E=p.groups||p,ie=oe=>(ve[oe]??0)>=.5,ce=(ve.正印??0)+(ve.偏印??0),ge=[["官印相生",ie("正官")&&ce>=.5,"正官与印并见,官生印而护身"],["杀印相生",ie("七杀")&&ce>=.5&&(ve.七杀??0)>(ve.正官??0),"七杀与印并见,杀印相生"],["食伤生财",(E.食伤??0)>=.6&&(E.财??0)>=.6,`食伤${E.食伤}+财${E.财},食伤生财`],["财官相生",(E.财??0)>=.6&&(E.官杀??0)>=.6,`财${E.财}+官杀${E.官杀},财生官`],["伤官配印",ie("伤官")&&ce>=.5&&(E.财??0)<=1,"伤官与印并见,伤官配印"],["伤官见官",ie("伤官")&&ie("正官"),"伤官与正官并见(伤官见官,为祸百端之说)"],["羊刃驾杀",(E.官杀??0)>=1&&re[h]===c,`月令为刃,又有七杀${E.官杀},刃杀相制`]];for(const[oe,Z,D]of ge)Z&&I.push({name:oe,kind:"组合",evidence:D});return I}const Ne=1.5,Oe=.5;function _e(l=[],h=[],c={}){const b=x=>Math.round((Number(c[x])||0)*10)/10;for(const x of l)if(!(b(x)<Ne))for(const p of h){if(A[p]!==x||b(p)<Ne)continue;const I=$[p];if(!I||$[I]!==x)continue;const H=b(I),he=h.includes(I)&&!l.includes(I),se=he?"为忌":H>=Ne?"可通":H>0?"关弱":"未通";return{use:x,foe:p,bridge:I,weight:H,present:H>0,bridgeIsAvoid:he,level:se,usable:se==="可通",note:"相战=用神与忌神两行各在局中 ≥1.5 分且相克;通关一行=克方所生、又能生用神的那一行(五行里唯一),只报局中分量,不据此断吉凶"}}return null}function Ge(l,h,c,b,x=[]){const p=u(l),I=p.me,H=c.level==="身弱"||c.level==="偏弱",he=c.level==="身强"||c.level==="偏强",se=z=>z===I?"比劫":z===p.inMe?"印":z===p.shi?"食伤":z===p.cai?"财":"官杀",qe={比劫:"帮身",印:"生身",食伤:"泄秀",财:"耗",官杀:"制"},Te=H?[p.inMe,I]:he?[p.shi,p.cai,p.guan]:[p.inMe,I,p.shi],Ae=H?[p.shi,p.cai,p.guan]:he?[I,p.inMe]:[p.guan,p.cai];let xe=Te.slice(),ye=Ae.slice();const ve=[],E=P({monthBranch:h,dayStem:l,wuxing:b,branches:x}),ie=te(l,h),ce=Q(E,Te,Ae);if(E.need&&E.priority==="调候优先"){const z=E.need.element;xe.includes(z)||xe.unshift(z),ye=ye.filter(fe=>fe!==z);const be=E.avoidElement;be&&xe.includes(be)?ve.push({element:be,favorRole:se(be),favorVerb:qe[se(be)],climate:E.label,note:`调候忌${be}(${E.label}),但它在扶抑里为${se(be)};本表保留在喜用,不列入忌。`}):be&&!ye.includes(be)&&ye.unshift(be)}const ge={比劫:["比肩","劫财"],印:["正印","偏印"],食伤:["食神","伤官"],财:["正财","偏财"],官杀:["正官","七杀"]},oe=Array.from(new Set(xe.flatMap(z=>ge[se(z)]||[]))),Z=Array.from(new Set(ye.flatMap(z=>ge[se(z)]||[]))),D=Array.from(new Set(ve.flatMap(z=>ge[se(z.element)]||[]))),de=z=>Math.round((Number(b[z])||0)*10)/10,O=ye.filter(z=>de(z)<Oe).map(z=>({element:z,role:se(z),verb:qe[se(z)],weight:de(z)})),f=Array.from(new Set(O.flatMap(z=>ge[z.role]||[]))),G=_e(xe,ye,b),L=z=>`${z}(${se(z)}·${qe[se(z)]})`,ae=ve.map(z=>`${z.element}(扶抑为${z.favorRole}·${z.favorVerb};${z.climate}盘调候忌${z.element},本表保留在喜用)`).join("、"),Se=[`日主${l}${I},${c.level}(${c.score} 分):`,`喜${xe.map(L).join("、")||"—"};忌${ye.map(L).join("、")||"—"}。`,O.length?`中性偏忌:${O.map(z=>`${z.element}(局中 ${z.weight} 分)`).join("、")}——分量近零,不作实忌论,但不从此盘喜忌中删除(行运遇之仍按忌计)。`:"",ve.length?`有争议:${ae}。`:"",!H&&!he?"身中和,先取调候与通关,喜忌随大运流年动态变化。":"",`调候:${E.label}(${(E.evidence||[]).join("、")})${E.need?`,取${E.need.stem}${E.need.element},忌${E.avoidElement}${ve.some(z=>z.element===E.avoidElement)?"(有争议)":""}`:",气候平和"}。`,ie?`穷通宝鉴:${ie.month}${l}${I},用神${ie.yong.join("、")}(首取${ie.primary})。`:"",G?`通关:忌${G.foe}克用${G.use},五行以${G.bridge}为关;局中${G.level==="可通"?`${G.bridge} ${G.weight} 分,关可通`:G.level==="关弱"?`仅 ${G.bridge} ${G.weight} 分,关弱`:G.level==="为忌"?`${G.bridge} ${G.weight} 分但此行为忌,通关力打折`:`未见${G.bridge},关未通`}(只作结构提示,不据此断吉凶)。`:"",ce.text,ce.clash?"取舍:本盘按「调候优先、扶抑次之」取用;若你更认同扶抑派,可把调候当环境偏好,强弱判断不受影响。":""].filter(Boolean).join("");return{method:E.priority==="调候优先"?"调候优先 + 扶抑校验":"扶抑为主 + 调候校验",level:c.level,favor:xe,avoid:ye,disputed:ve,neutral:O,favorRoles:xe.map(se),avoidRoles:ye.map(se),neutralRoles:O.map(z=>z.role),favorTenGods:oe,avoidTenGods:Z,disputedTenGods:D,neutralTenGods:f,tiaohou:{...E,...ce,element:E.need?E.need.element:null},climate:E,qt:ie,tongguan:G,detail:Se}}const q=[[1.3,"大吉"],[.6,"吉"],[-.6,"平"],[-1.3,"忌"],[-1/0,"大忌"]];function V(l,h){const c=h.yongshen,b=l[0],x=l[1],p=Y[b],I=m[x],H=c.tiaohou||c.climate||null,he=E=>{let ie=0;return c.favor.includes(E)&&(ie+=1),c.avoid.includes(E)&&(ie-=1),ie};let se=he(p)*1+he(I)*.8;for(const E of(j[x]||[]).slice(1))se+=he(Y[E])*.2;const qe=[];if(c.favor.includes(p)?qe.push(`天干${b}${p}为用神`):c.avoid.includes(p)?qe.push(`天干${b}${p}为忌神`):qe.push(`天干${b}${p}不喜不忌`),c.favor.includes(I)?qe.push(`地支${x}${I}助用`):c.avoid.includes(I)&&qe.push(`地支${x}${I}助忌`),H&&H.need&&H.priority==="调候优先"){const E=H.need.element,ie=H.avoidElement,ce=String(H.kind).includes("寒");p===E?(se+=1.1,qe.push(`${H.label}之局得${b}${p},${ce?"解冻":"得润"}`)):p===ie&&(se-=.9,qe.push(`${H.label}之局再逢${b}${p},${ce?"冻木难生":"燥上加燥"}`)),I===E?(se+=.9,qe.push(`地支${x}${I}合调候`)):I===ie&&(se-=1,qe.push(`地支${x}${I}加重${H.label}`)),ce&&(p==="水"||I==="水")&&(se-=.3)}else H&&H.need&&(p===H.need.element||I===H.need.element)&&qe.push(`合调候(${H.need.element})`);const Te=d(h.dayStem,b),Ae=c.favorTenGods.includes(Te)?.3:0,xe=c.qt||null;xe&&xe.primary&&!c.avoid.includes(Y[xe.primary])&&(b===xe.primary?(se+=.3,qe.push(`天干${b}正是${xe.branch}月${xe.stem}日的首取(穷通宝鉴)`)):xe.yong.includes(b)&&!c.avoid.includes(Y[b])&&(se+=.15,qe.push(`天干${b}为穷通宝鉴次取`)));let ye=Math.round((se+Ae)*10)/10;ye=Math.max(-4,Math.min(4,ye));const ve=q.find(([E])=>ye>=E)[1];return{ganzhi:l,score:ye,tier:ve,stemTenGod:Te,reasons:qe,note:`${Te}运,${ve}(${ye})`}}function F({pillars:l,dayStem:h,monthBranch:c,strength:b,wuxing:x}){const p=r(l,h),I=K(l,h,c),H=Me(l,h,c,b,x,p),he=[I,...H],se=Ge(h,c,b,x,Object.values(l).map(qe=>qe.branch));return{geju:he,primary:I,primaryName:I.name,godStats:p,yongshen:se,dayStem:h,monthBranch:c}}return{tenGod:d,elementRoles:u,tongguanOf:_e,scoreLuck:V,analyzeBaziFrame:F}})(),W.bazi=(function(){const{STEMS:P,BRANCHES:Q,TERM_NAMES:te,ganzhiName:J,dayGanzhiIndex:ne,jdToParts:T,partsToJd:v,sexagenaryIndex:Y,termWindow:m,previousJie:$,nextJie:A,equationOfTime:j,formatJd:y,xunKongOf:k}=W.calendar||{},{resolveAddress:re}=W.geo||{},{computeBaziShensha:S}=W.shensha||{},{assertCivil:M,daysInMonth:i}=W.validate||{},{applyDst:d}=W.dst||{},{nayinOf:a}=W.nayin||{},{SANHE:r}=W.sanhe||{},{analyzeBaziFrame:u,scoreLuck:g}=W.geju||{},_={子:["癸"],丑:["己","癸","辛"],寅:["甲","丙","戊"],卯:["乙"],辰:["戊","乙","癸"],巳:["丙","戊","庚"],午:["丁","己"],未:["己","丁","乙"],申:["庚","壬","戊"],酉:["辛"],戌:["戊","辛","丁"],亥:["壬","甲"]},K={寅:[["戊",7],["丙",7],["甲",16]],卯:[["甲",10],["乙",20]],辰:[["乙",9],["癸",3],["戊",18]],巳:[["戊",5],["庚",9],["丙",16]],午:[["丙",10],["己",9],["丁",11]],未:[["丁",9],["乙",3],["己",18]],申:[["戊",7],["壬",3],["庚",20]],酉:[["庚",10],["辛",20]],戌:[["辛",9],["丁",3],["戊",18]],亥:[["戊",7],["甲",5],["壬",18]],子:[["壬",10],["癸",20]],丑:[["癸",9],["辛",3],["己",18]]},R={甲:"木",乙:"木",丙:"火",丁:"火",戊:"土",己:"土",庚:"金",辛:"金",壬:"水",癸:"水"},ee={子:"水",丑:"土",寅:"木",卯:"木",辰:"土",巳:"火",午:"火",未:"土",申:"金",酉:"金",戌:"土",亥:"水"},ue={木:"火",火:"土",土:"金",金:"水",水:"木"},ke={木:"土",土:"水",水:"火",火:"金",金:"木"},Me=E=>P.indexOf(E)%2===0,Ne=[1,.5,.3],Oe=[1.2,.6,.3],_e={甲己:"土",乙庚:"金",丙辛:"水",丁壬:"木",戊癸:"火"},Ge=["甲庚","乙辛","丙壬","丁癸"],q={子丑:"土",寅亥:"木",卯戌:"火",辰酉:"金",巳申:"水",午未:"土"},V={寅卯辰:"木",巳午未:"火",申酉戌:"金",亥子丑:"水"},F=["子午","丑未","寅申","卯酉","辰戌","巳亥"],l=["子未","丑午","寅巳","卯辰","申亥","酉戌"],h=["子酉","丑辰","寅亥","卯午","巳申","未戌"],c=[["寅","巳","申"],["丑","戌","未"],["子","卯"]],b=["辰","午","酉","亥"],x=(E,ie,ce)=>E.includes(ie+ce)||E.includes(ce+ie);function p(E,ie){const ce=Object.keys(ue).find(f=>ue[f]===ie),ge=["year","month","day","hour"].map(f=>E[f].branch),oe=new Set(ge),Z={};for(const f of ge)Z[f]=1;const D=[],de=new Set,O=(f,G,L,ae)=>{const Se=[];for(const z of[...f])(Z[z]??1)>L&&(Z[z]=L,Se.push(z)),de.add(z);Se.length&&L<1&&D.push(`${f}${ae}${G},${Se.join("")}根气按${Math.round(L*10)}成计`)};for(const[f,G]of Object.entries(V))[...f].every(L=>oe.has(L))&&O(f,G,G===ie?1:G===ce?.6:.1,"三会");for(const[f,G]of Object.entries(r))[...f].every(L=>oe.has(L))&&O(f,G,G===ie?1:G===ce?.6:.2,"三合");for(let f=0;f<ge.length;f++)for(let G=f+1;G<ge.length;G++){const L=ge[f],ae=ge[G],Se=q[L+ae]||q[ae+L];if(!Se||de.has(L)&&de.has(ae))continue;const z=Se===ie?1:Se===ce?.8:.5,be=[];for(const fe of[L,ae])de.has(fe)||(Z[fe]??1)>z&&(Z[fe]=z,be.push(fe));be.length&&z<1&&D.push(`${L}${ae}合${Se},${be.join("")}根气按${Math.round(z*10)}成计`)}return{factor:Z,notes:D,inJu:de}}const I=.3;function H(E,ie,ce){let ge=0;for(const oe of["year","month","day","hour"]){const Z=E[oe],D=ce[Z.branch]??1;D<=.1||Z.hidden.forEach((de,O)=>{R[de.stem]===ie&&(ge+=(Oe[O]??.1)*D)})}return ge}function he(E){const ie=["year","month","day","hour"].map(f=>E[f].stem),ce=["year","month","day","hour"].map(f=>E[f].branch),ge=[];for(let f=0;f<4;f++)for(let G=f+1;G<4;G++){const L=ie[f],ae=ie[G];if(L===ae)continue;const Se=_e[L+ae]||_e[ae+L];if(Se){ge.push({text:`${L}${ae}合(化${Se}待定)`,rank:0});continue}if(x(Ge,L,ae)){ge.push({text:`${L}${ae}相冲`,rank:1});continue}const z=R[L],be=R[ae];ke[z]===be?ge.push({text:`${L}克${ae}`,rank:3}):ke[be]===z&&ge.push({text:`${ae}克${L}`,rank:3})}const oe=[],Z=new Set(ce),D=[];for(const[f,G]of Object.entries(r))[...f].every(L=>Z.has(L))&&(oe.push({text:`${f}三合${G}`,rank:0}),D.push(f));const de=[];for(const[f,G]of Object.entries(V))[...f].every(L=>Z.has(L))&&(oe.push({text:`${f}三会${G}`,rank:0}),de.push(f));for(let f=0;f<4;f++)for(let G=f+1;G<4;G++){const L=ce[f],ae=ce[G];if(L===ae){b.includes(L)&&oe.push({text:`${L}${ae}自刑`,rank:2});continue}const Se=q[L+ae]||q[ae+L],z=Object.keys(r).find(fe=>fe.includes(L)&&fe.includes(ae)),be=Object.keys(V).find(fe=>fe.includes(L)&&fe.includes(ae));if(Se)oe.push({text:`${L}${ae}合${Se}`,rank:0});else{if(z&&!D.includes(z)){const fe=z[1],Pe=L===fe||ae===fe?"半合":"拱合";oe.push({text:`${L}${ae}${Pe}${r[z]}`,rank:0})}if(be&&!de.includes(be)){const fe=Math.abs(be.indexOf(L)-be.indexOf(ae))===1;oe.push({text:`${L}${ae}${fe?"半会":"拱会"}${V[be]}`,rank:0})}}x(F,L,ae)&&oe.push({text:`${L}${ae}相冲`,rank:1}),x(l,L,ae)&&oe.push({text:`${L}${ae}相害`,rank:2}),x(h,L,ae)&&oe.push({text:`${L}${ae}相破`,rank:2});for(const fe of c)fe.includes(L)&&fe.includes(ae)&&oe.push({text:`${L}${ae}相刑`,rank:2})}const O=f=>{const G=new Set,L=[];for(const ae of[...f].sort((Se,z)=>Se.rank-z.rank))G.has(ae.text)||(G.add(ae.text),L.push(ae.text));return L};return{stems:O(ge),branches:O(oe)}}function se(E,ie){const ce=R[E],ge=R[ie],oe=Me(E)===Me(ie);return ce===ge?oe?"比肩":"劫财":ue[ce]===ge?oe?"食神":"伤官":ke[ce]===ge?oe?"偏财":"正财":ke[ge]===ce?oe?"七杀":"正官":ue[ge]===ce?oe?"偏印":"正印":"?"}function qe(E){return a(E).name}const Te={0:1,2:2,4:3,6:4,8:5,10:6,12:7,14:8,16:9,18:10,20:11,22:0};function Ae(E,ie){const ce=J(E),ge=_[ce.branch];return{ganzhi:ce.name,stem:ce.stem,branch:ce.branch,stemElement:R[ce.stem],branchElement:ee[ce.branch],stemTenGod:ie?se(ie,ce.stem):null,hidden:ge.map((oe,Z)=>({stem:oe,element:R[oe],tenGod:ie?se(ie,oe):null,role:["本气","中气","余气"][Z]??"余气"})),nayin:qe(E)}}function xe(E,ie){const ce=T(E);if(ie==null||Number.isNaN(ie))return{offsetMinutes:0,jd:E,note:"未提供经度,按东八区平太阳时"};const ge=(ie-120)*4,oe=j(ce.year,ce.month,ce.day),Z=ge+oe;return{offsetMinutes:Math.round(Z*10)/10,jd:E+Z/1440,note:`经度差 ${ge.toFixed(1)} 分 + 均时差 ${oe.toFixed(1)} 分`}}function ye(E,ie,ce){const ge=K[E];if(!ge)return null;const oe=[];let Z=1;for(const[ae,Se]of ge)oe.push({stem:ae,element:R[ae],from:Z,to:Z+Se-1}),Z+=Se;const D=Z-1,de=Math.max(1,Math.floor(ie)-Math.floor(ce+.5)+1),O=de>D,f=O?oe.length-1:oe.findIndex(ae=>de>=ae.from&&de<=ae.to),G=oe[f]||oe[oe.length-1],L=oe[f+1]||null;return{month:E,day:de,tableDays:D,segments:oe,active:G.stem,activeElement:G.element,segment:{from:G.from,to:G.to},next:L?{stem:L.stem,element:L.element,from:L.from,inDays:L.from-de}:null,inHidden:(_[E]||[]).includes(G.stem),beyond:O,note:"人元司权按「节」当日起算,节当日为第 1 日,日差用本盘所用时刻(含真太阳时)所在日计;本插件固定 30 日表(余气 → 中气 → 本气),第 31 日以后按本气算。只作解释层的一层细节,不改取格。"}}function ve(E){M(E);let{year:ie,month:ce,day:ge,hour:oe=0,minute:Z=0,gender:D="male"}=E;const de=E.lateZi!==!1,O=E.trueSolar!==!1,f=E.dst===!1?{applied:!1,note:null}:d({year:ie,month:ce,day:ge,hour:oe,minute:Z});f.applied&&(ie=f.year,ce=f.month,ge=f.day,oe=f.hour,Z=f.minute);const G=v({year:ie,month:ce,day:ge,hour:oe,minute:Z}),L=E.geo||(E.address?re(E.address):null),ae=typeof E.longitude=="number"?E.longitude:L&&typeof L.lon=="number"?L.lon:void 0,Se=O?xe(G,ae):{offsetMinutes:0,jd:G,note:"未启用真太阳时"},z=Se.jd,be=m(ie,{jieOnly:!0}),fe=$(be,z),Pe=A(be,z),Be=be.find(C=>C.index===2&&C.year===ie),gn=Be&&z<Be.jd?ie-1:ie,Mn=((gn-4)%60+60)%60,Jn=P[Mn%10],$n=Te[fe.index],vn=(P.indexOf(Jn)%5*2+2)%10,un=(($n-2)%12+12)%12,On=(vn+un)%10,pn=Y(On,$n),hn=Math.floor(z+.5),Tn=T(z).hour,Ie=de&&Tn>=23?hn+1:hn,In=ne(Ie),Ze=P[In%10],_n=Math.floor((Tn+1)%24/2),Je=(P.indexOf(Ze)%5*2%10+_n)%10,Kn=Y(Je,_n),Ce={year:Ae(Mn,Ze),month:Ae(pn,Ze),day:Ae(In,Ze),hour:Ae(Kn,Ze)},Le=P.indexOf(Jn)%2===0,tn=Le&&D==="male"||!Le&&D==="female",dn=tn?Pe.jd-z:z-fe.jd,Rn=dn*4;let bn=Math.floor(Rn/12),wn=Math.round(Rn%12);wn>=12&&(wn-=12,bn+=1);const Sn=365.2422,Ln=Sn/3,Cn=tn?Pe:fe,jn=z+dn*Ln,Dn=T(jn),Gn=(C,X)=>{const we=C.year+X;return{year:we,month:C.month,day:Math.min(C.day,i(we,C.month)),hour:C.hour,minute:C.minute}},xn=[],Hn=[];for(let C=1;C<=8;C++){const X=((pn+(tn?C:-C))%60+60)%60,we=J(X),Re=v(Gn(Dn,(C-1)*10)),me=v(Gn(Dn,C*10));xn.push({step:C,startAge:bn+(C-1)*10,ganzhi:we.name,stem:we.stem,branch:we.branch,stemTenGod:se(Ze,we.stem),nayin:qe(X),fromDate:y(Re),toDate:y(me)}),Hn.push({step:C,ganzhi:we.name,fromJd:Re,toJd:me})}const on=Number(E.nowYear)||new Date().getFullYear(),en=[];for(let C=on;C<on+10;C++){const X=((C-4)%60+60)%60;en.push({year:C,age:C-gn+1,ganzhi:J(X).name,stemTenGod:se(Ze,J(X).stem)})}const Fe={木:0,火:0,土:0,金:0,水:0};for(const C of Object.values(Ce))Fe[C.stemElement]+=1,C.hidden.forEach((X,we)=>{Fe[X.element]+=Ne[we]??.1});for(const C of Object.keys(Fe))Fe[C]=Math.round(Fe[C]*10)/10;const Pn=Math.floor(In/10)*10,Yn=[Q[(Pn+10)%12],Q[(Pn+11)%12]],Xn=["长生","沐浴","冠带","临官","帝旺","衰","病","死","墓","绝","胎","养"],Zn={甲:11,乙:6,丙:2,丁:9,戊:2,己:9,庚:5,辛:0,壬:8,癸:3},Qn=C=>P.indexOf(C)%2===0;function kn(C,X){const we=Zn[C],Re=Q.indexOf(X),me=Qn(C)?Re-we:we-Re;return Xn[(me%12+12)%12]}const mn=Ce.month.branch,qn=S(Ce,Yn);for(const C of["year","month","day","hour"]){const X=Ce[C];X.dishi=kn(Ze,X.branch),X.zizuo=kn(X.stem,X.branch),X.kongwang=k(X.ganzhi),X.shensha=qn.detail[C].map(we=>we.name),X.shenshaDetail=qn.detail[C]}const En={寅:"木",卯:"木",巳:"火",午:"火",申:"金",酉:"金",亥:"水",子:"水",辰:"土",戌:"土",丑:"土",未:"土"},Ye=R[Ze],nn=En[mn];let We,Qe;Ye===nn?(We=3,Qe="旺"):ue[nn]===Ye?(We=2,Qe="相"):ue[Ye]===nn?(We=1,Qe="休"):ke[Ye]===nn?(We=.5,Qe="囚"):(We=0,Qe="死");const an=p(Ce,Ye);let sn=0;const Ve=[];for(const C of["year","month","day","hour"]){const X=Ce[C],we=an.factor[X.branch]??1;let Re=!1;X.hidden.forEach((me,je)=>{R[me.stem]===Ye?(sn+=(Oe[je]??.1)*we,Re=!0):ue[R[me.stem]]===Ye&&(sn+=(Oe[je]??.1)*.4*we,Re=!0)}),Re&&Ve.push(X.branch)}let Ke=0;const zn=[],rn=[],fn=[];for(const C of["year","month","hour"]){const X=Ce[C].stem,we=R[X];if(we===Ye||ue[we]===Ye){const Re=we===Ye?1:.8;H(Ce,we,an.factor)>=I?Ke+=Re:(Ke+=Re*.5,fn.push(X)),zn.push(X)}else ke[we]===Ye?(Ke-=1,rn.push(X)):ke[Ye]===we?(Ke-=.8,rn.push(X)):(Ke-=.5,rn.push(X))}const cn=Math.round((We+sn+Ke)*10)/10,Vn=cn>=4?"身强":cn>=2.5?"偏强":cn>=1.5?"中和":cn>=.5?"偏弱":"身弱",et=an.notes.length?`;合会折根:${an.notes.join("、")}`:"",nt=fn.length?`;虚透${fn.join("")}帮扶减半`:"",Un={level:Vn,score:cn,detail:`月令${mn}${nn},日主${Ye}${Qe}(${We});通根${Ve.join("")||"无"}(${sn.toFixed(1)});天干帮扶${zn.join("")||"无"}/耗泄${rn.join("")||"无"}(${Ke.toFixed(1)})${et}${nt}`,method:"月令权重 3/2/1/0.5/0 + 地支藏干通根(三会/三合/六合折根)+ 天干帮扶(虚透减半),量化后分档;属简化算法,非唯一流派",parts:{season:{branch:mn,element:nn,word:Qe,weight:We},roots:Ve,rootScore:Math.round(sn*10)/10,helpers:zn,drainers:rn,helpScore:Math.round(Ke*10)/10,structure:an.notes,virtualHelpers:fn}},ln=u({pillars:Ce,dayStem:Ze,monthBranch:mn,strength:Un,wuxing:Fe}),tt=(C,X)=>{if(!C||!X)return[];if(C===X)return b.includes(C)?["自刑"]:[];const we=[];(q[C+X]||q[X+C])&&we.push("合"),x(F,C,X)&&we.push("冲"),x(l,C,X)&&we.push("害"),x(h,C,X)&&we.push("破");for(const Re of c)Re.includes(C)&&Re.includes(X)&&we.push("刑");return we},Nn=["year","month","day","hour"].map(C=>Ce[C].branch),Bn=C=>{const X=new Set,we=[];for(const Re of Nn)for(const me of tt(Re,C)){const je=me+Re;X.has(je)||(X.add(je),we.push(je))}return we};for(const C of xn)C.relations=Bn(C.branch),C.luck=g(C.ganzhi,ln);for(const C of en)C.relations=Bn(C.ganzhi[1]),C.luck=g(C.ganzhi,ln);const Xe={year:"年柱",month:"月柱",day:"日柱",hour:"时柱"},Fn=(C,X)=>ke[R[C]]===R[X],An=(C,X)=>typeof C!="string"||typeof X!="string"||C.length<2||X.length<2||!(C[0]in R)||!(X[0]in R)?!1:(Fn(C[0],X[0])||Fn(X[0],C[0]))&&x(F,C[1],X[1]),e=C=>{const X=m(C,{jieOnly:!0}).find(we=>we.index===2&&T(we.jd).year===C);return X?X.jd:v({year:C,month:2,day:4})};for(const C of en){const X=e(C.year),we=e(C.year+1),Re=Hn.filter(je=>je.fromJd<we&&je.toJd>X),me=[];for(const je of Re){je.ganzhi===C.ganzhi?me.push({type:"岁运并临",target:`第${je.step}步大运`,detail:`大运与流年同为${C.ganzhi}`}):An(je.ganzhi,C.ganzhi)&&me.push({type:"运年反吟",target:`第${je.step}步大运`,detail:`大运${je.ganzhi}与流年${C.ganzhi}天克地冲`});for(const He of["year","month","day","hour"]){const yn=Ce[He].ganzhi;yn&&(je.ganzhi===yn?me.push({type:"大运伏吟",target:`第${je.step}步大运·${Xe[He]}`,detail:`大运${je.ganzhi}与${Xe[He]}同干支`}):An(je.ganzhi,yn)&&me.push({type:"大运反吟",target:`第${je.step}步大运·${Xe[He]}`,detail:`大运${je.ganzhi}与${Xe[He]}${yn}天克地冲`}))}}for(const je of["year","month","day","hour"]){const He=Ce[je].ganzhi;He&&(C.ganzhi===He?me.push({type:"流年伏吟",target:Xe[je],detail:`流年${C.ganzhi}与${Xe[je]}同干支`}):An(C.ganzhi,He)&&me.push({type:"流年反吟",target:Xe[je],detail:`流年${C.ganzhi}与${Xe[je]}${He}天克地冲`}))}C.suiyun={dayun:Re.map(je=>({step:je.step,ganzhi:je.ganzhi})),signals:me,note:"只标干支重复与天克地冲这类变动信号,不判吉凶;大运按该年立春到次年立春的区间取,交运落在年内时前后两步并列;大运与本命四柱的伏吟/反吟整步大运都在,逐年重复列出"}}const o=T(z),t=P.indexOf(Ce.month.stem),n=Q.indexOf(Ce.month.branch),s=J(Y((t+1)%10,(n+3)%12)),w=P.indexOf(Ce.day.stem),N=Q.indexOf(Ce.day.branch),U=J(Y((w+5)%10,(1-N+12)%12)),pe=Q.indexOf(Ce.hour.branch),ze=P.indexOf(Ce.year.stem),le=((ze*12+(27-n-pe)%12+2)%60+60)%60,Ee=((ze*12+(11+n+pe)%12+2)%60+60)%60,B=J(le),$e=J(Ee),De=ye(Q[$n],hn,fe.jd);return De&&(De.term={name:fe.name,time:y(fe.jd)}),{system:"bazi",relations:he(Ce),palaces:{taiyuan:{ganzhi:s.name,note:"月干进一、月支进三"},taixi:{ganzhi:U.name,note:"日干五合、日支六合"},minggong:{ganzhi:B.name,branch:B.branch,note:"生月与生时支合数定宫(27 减,取模后 +2);干随六十甲子"},shengong:{ganzhi:$e.name,branch:$e.branch,note:"生月与生时支合数定宫(11 加,取模后 +2);干随六十甲子"}},input:{civil:{year:ie,month:ce,day:ge,hour:oe,minute:Z},gender:D,longitude:ae??null,address:E.address||null,geo:L,lateZi:de,trueSolar:O,dst:{applied:!!f.applied,note:f.note||null}},solarTime:{civilText:`${ie}-${String(ce).padStart(2,"0")}-${String(ge).padStart(2,"0")} ${String(oe).padStart(2,"0")}:${String(Z).padStart(2,"0")}`,trueSolarText:y(z),offsetMinutes:Se.offsetMinutes,note:f.applied?`${f.note};${Se.note}`:Se.note,lunarYearForPillar:gn},jieqi:{previous:{name:fe.name,time:y(fe.jd)},next:{name:Pe.name,time:y(Pe.jd)},nearBoundaryMinutes:Math.round(Math.min(z-fe.jd,Pe.jd-z)*1440)},renyuan:De,pillars:Ce,dayMaster:{stem:Ze,element:R[Ze],yinYang:Me(Ze)?"阳":"阴"},wuxing:Fe,kongwang:Yn,shensha:qn,dayun:{direction:tn?"顺行":"逆行",rule:`${Le?"阳":"阴"}年${D==="male"?"男":"女"}${tn?"顺排":"逆排"}`,startAge:{years:bn,months:wn},toNextJieDays:Math.round(dn*100)/100,jiao:{at:y(jn),jd:Math.round(jn*1e6)/1e6,scaleDaysPerDay:Ln,yearDays:Sn,spanDays:Math.round(dn*1e4)/1e4,from:{name:Cn.name,time:y(Cn.jd)},frame:Se.offsetMinutes?"真太阳时":"平太阳时",offsetMinutes:Se.offsetMinutes,note:"三日折一年:出生到节令的真实间隔按 365.2422/3 放大后加到出生时刻;同一比例即「一日折四月、一时辰折十日」,每步大运在同月同日同时刻换"},list:xn},strength:Un,frame:ln,climate:ln.yongshen.climate||ln.yongshen.tiaohou||null,liunian:en,liunianFrom:on}}return{HIDDEN_STEMS:_,RENYUAN_TABLE:K,STEM_ELEMENT:R,BRANCH_ELEMENT:ee,buildRelations:he,tenGod:se,nayin:qe,applyTrueSolar:xe,renyuanOf:ye,buildBazi:ve}})(),W["name-data"]=(function(){return{READING:[["梓","zi",3,11],["桐","tong",2,10],["楠","nan",2,13],["楷","kai",3,13],["松","song",1,8],["柏","bai",3,9],["枫","feng",1,13],["榕","rong",2,14],["槿","jin",3,15],["棠","tang",2,12],["楚","chu",3,13],["柯","ke",1,9],["桓","huan",2,10],["榆","yu",2,13],["栩","xu",3,10],["榛","zhen",1,14],["芸","yun",2,10],["芷","zhi",3,10],["芮","rui",4,10],["若","ruo",4,11],["茜","qian",4,12],["茵","yin",1,12],["茗","ming",2,12],["莎","sha",1,13],["茉","mo",4,11],["筱","xiao",3,13],["蓉","rong",2,16],["萱","xuan",1,15],["蕙","hui",4,18],["蕊","rui",3,18],["菲","fei",1,14],["蔓","man",4,17],["荣","rong",2,14],["茂","mao",4,11],["栋","dong",4,12],["梁","liang",2,11],["朴","pu",3,6],["本","ben",3,5],["林","lin",2,8],["森","sen",1,12],["枝","zhi",1,8],["果","guo",3,8],["禾","he",2,5],["秀","xiu",4,7],["穗","sui",4,17],["稼","jia",4,15],["颖","ying",3,16],["苗","miao",2,8],["菁","jing",1,14],["菡","han",4,14],["蕴","yun",4,22],["蕾","lei",3,19],["薇","wei",1,19],["薏","yi",4,19],["菀","wan",3,14],["荷","he",2,13],["莲","lian",2,17],["菱","ling",2,14],["苇","wei",3,15],["荻","di",2,13],["筠","yun",2,13],["笛","di",2,11],["杉","shan",1,7],["柠","ning",2,18],["桢","zhen",1,13],["樾","yue",4,16],["柘","zhe",4,9],["权","quan",2,22],["材","cai",2,7],["杭","hang",2,8],["枚","mei",2,8],["梧","wu",2,11],["竹","zhu",2,6],["简","jian",3,18],["策","ce",4,12],["筹","chou",2,20],["芬","fen",1,10],["芳","fang",1,10],["花","hua",1,10],["菊","ju",2,14],["兰","lan",2,23],["芝","zhi",1,10],["芹","qin",2,10],["荃","quan",2,12],["萃","cui",4,14],["蓁","zhen",1,16],["荞","qiao",2,18],["莞","wan",3,13],["萦","ying",2,16],["蔚","wei",4,17],["芃","peng",2,9],["芩","qin",2,10],["苡","yi",3,11],["莱","lai",2,14],["萌","meng",2,14],["葆","bao",3,15],["萧","xiao",1,18],["樟","zhang",1,15],["樱","ying",1,21],["栎","li",4,19],["棹","zhao",4,12],["楸","qiu",1,13],["槐","huai",2,14],["橙","cheng",2,16],["檀","tan",2,17],["炎","yan",2,8],["灿","can",4,17],["炫","xuan",4,9],["炜","wei",3,13],["烨","ye",4,14],["煜","yu",4,13],["熙","xi",1,13],["煊","xuan",1,13],["焕","huan",4,13],["熠","yi",4,15],["炅","jiong",3,8],["昱","yu",4,9],["晗","han",2,11],["旭","xu",4,6],["昊","hao",4,8],["晟","sheng",4,11],["晨","chen",2,11],["景","jing",3,12],["曜","yao",4,18],["曦","xi",1,20],["朗","lang",3,11],["昭","zhao",1,9],["昕","xin",1,8],["昀","yun",2,8],["暖","nuan",3,13],["灵","ling",2,24],["丹","dan",1,4],["彤","tong",2,7],["冉","ran",3,5],["南","nan",2,9],["丰","feng",1,18],["日","ri",4,4],["阳","yang",2,17],["光","guang",1,6],["亮","liang",4,9],["明","ming",2,8],["晶","jing",1,12],["晴","qing",2,12],["夏","xia",4,10],["智","zhi",4,12],["卓","zhuo",2,8],["乐","le",4,15],["恺","kai",3,14],["恬","tian",2,10],["甜","tian",2,11],["亭","ting",2,9],["俊","jun",4,9],["丙","bing",3,5],["丁","ding",1,2],["鼎","ding",3,13],["陶","tao",2,16],["熹","xi",1,16],["炀","yang",2,13],["烜","xuan",3,10],["暻","jing",3,16],["晖","hui",1,13],["晔","ye",4,16],["旻","min",2,8],["晏","yan",4,10],["晓","xiao",3,16],["暄","xuan",1,13],["昆","kun",1,8],["伶","ling",2,7],["坤","kun",1,8],["垚","yao",2,9],["培","pei",2,11],["城","cheng",2,10],["域","yu",4,11],["坚","jian",1,11],["墨","mo",4,15],["均","jun",1,7],["坦","tan",3,8],["基","ji",1,11],["堂","tang",2,11],["圣","sheng",4,13],["在","zai",4,6],["岳","yue",4,8],["峰","feng",1,10],["峻","jun",4,10],["岚","lan",2,12],["岩","yan",2,8],["崇","chong",2,11],["岐","qi",2,7],["屿","yu",3,17],["磊","lei",3,15],["尧","yao",2,12],["圆","yuan",2,13],["恩","en",1,10],["惟","wei",2,11],["轩","xuan",1,10],["逸","yi",4,15],["山","shan",1,3],["岸","an",4,8],["岑","cen",2,7],["巍","wei",1,21],["嵩","song",1,13],["岭","ling",3,17],["奥","ao",4,13],["宜","yi",2,8],["容","rong",2,10],["意","yi",4,13],["依","yi",1,8],["悠","you",1,11],["维","wei",2,14],["纬","wei",3,15],["永","yong",3,5],["远","yuan",3,17],["辰","chen",2,7],["壁","bi",4,16],["田","tian",2,5],["由","you",2,5],["画","hua",4,12],["延","yan",2,7],["建","jian",4,9],["音","yin",1,9],["韵","yun",4,19],["玮","wei",3,14],["雍","yong",1,13],["懿","yi",4,22],["宇","yu",3,6],["亦","yi",4,6],["安","an",1,6],["宁","ning",2,14],["锋","feng",1,15],["钢","gang",1,16],["钧","jun",1,12],["铭","ming",2,14],["锐","rui",4,15],["锡","xi",1,16],["锦","jin",3,16],["鑫","xin",1,24],["键","jian",4,17],["鉴","jian",4,22],["钦","qin",1,12],["镇","zhen",4,18],["铮","zheng",1,16],["钰","yu",4,13],["铠","kai",3,18],["珊","shan",1,10],["珠","zhu",1,10],["琳","lin",2,13],["琦","qi",2,13],["琪","qi",2,13],["瑜","yu",2,14],["瑞","rui",4,14],["瑄","xuan",1,14],["璇","xuan",2,16],["璟","jing",3,17],["璐","lu",4,18],["瑾","jin",3,16],["珏","jue",2,9],["环","huan",2,18],["玲","ling",2,10],["珑","long",2,21],["瑶","yao",2,15],["莹","ying",2,15],["铎","duo",2,21],["金","jin",1,8],["秋","qiu",1,9],["书","shu",1,10],["舒","shu",1,12],["善","shan",4,12],["信","xin",4,9],["修","xiu",1,10],["素","su",4,10],["静","jing",4,16],["心","xin",1,4],["新","xin",1,13],["正","zheng",4,5],["世","shi",4,5],["少","shao",3,4],["西","xi",1,6],["白","bai",2,5],["辛","xin",1,7],["成","cheng",2,7],["利","li",4,7],["剑","jian",4,15],["刚","gang",1,10],["则","ze",2,9],["初","chu",1,7],["硕","shuo",4,14],["尚","shang",4,8],["臣","chen",2,6],["川","chuan",1,3],["舟","zhou",1,6],["州","zhou",1,6],["祖","zu",3,10],["祥","xiang",2,11],["禄","lu",4,13],["禧","xi",3,17],["珍","zhen",1,10],["宣","xuan",1,9],["序","xu",4,7],["谦","qian",1,17],["赞","zan",4,19],["超","chao",1,12],["锴","kai",3,17],["承","cheng",2,8],["语","yu",3,14],["诺","nuo",4,16],["诗","shi",1,13],["梦","meng",4,14],["思","si",1,9],["悦","yue",4,11],["欣","xin",1,8],["嘉","jia",1,14],["佳","jia",1,8],["博","bo",2,12],["睿","rui",4,14],["知","zhi",1,8],["星","xing",1,9],["言","yan",2,7],["和","he",2,8],["江","jiang",1,7],["河","he",2,9],["海","hai",3,11],["洋","yang",2,10],["波","bo",1,9],["涛","tao",1,18],["涵","han",2,12],["清","qing",1,12],["澈","che",4,16],["澄","cheng",2,16],["润","run",4,16],["泽","ze",2,17],["沛","pei",4,8],["沁","qin",4,8],["泓","hong",2,9],["泉","quan",2,9],["汐","xi",1,7],["淇","qi",2,12],["鸿","hong",2,17],["滋","zi",1,13],["淼","miao",3,12],["雨","yu",3,8],["雪","xue",3,11],["霖","lin",2,16],["霏","fei",1,16],["露","lu",4,21],["霆","ting",2,15],["雯","wen",2,12],["霓","ni",2,16],["湉","tian",2,13],["沐","mu",4,8],["宸","chen",2,10],["然","ran",2,12],["文","wen",2,4],["月","yue",4,4],["水","shui",3,4],["冰","bing",1,6],["洁","jie",2,16],["浩","hao",4,11],["瀚","han",4,20],["渊","yuan",1,12],["澜","lan",2,21],["潮","chao",2,16],["溪","xi",1,14],["湘","xiang",1,13],["渝","yu",2,13],["深","shen",1,12],["湛","zhan",4,13],["汇","hui",4,13],["洲","zhou",1,10],["湾","wan",1,26],["云","yun",2,12],["风","feng",1,9],["北","bei",3,5],["冬","dong",1,5],["玄","xuan",2,5],["子","zi",3,3],["平","ping",2,5],["方","fang",1,4],["帆","fan",1,6],["航","hang",2,10],["敏","min",3,11],["慧","hui",4,15],["惠","hui",4,12],["霈","pei",4,15],["灏","hao",4,25],["湄","mei",2,13],["滨","bin",1,18],["洛","luo",4,10],["津","jin",1,10],["泊","bo",2,9],["沧","cang",1,14],["浦","pu",3,11]],SURNAME_STROKES:{王:4,李:7,张:11,刘:15,陈:16,杨:13,黄:12,赵:14,吴:7,周:8,徐:10,孙:10,马:10,朱:6,胡:11,郭:15,何:7,高:10,林:8,罗:20,郑:19,梁:11,谢:17,宋:7,唐:10,许:11,韩:17,冯:12,曹:11,彭:12,曾:12,萧:18,田:5,董:15,潘:16,袁:10,蔡:17,余:7,于:3,杜:7,叶:15,程:12,魏:18,吕:7,丁:2,任:6,姚:9,卢:16,姜:9,崔:11,钟:17,谭:19,陆:16,范:15,金:8,石:5,廖:14,贾:13,夏:10,韦:9,付:5,方:4,白:5,邹:17,孟:8,熊:14,秦:10,邱:12,江:7,尹:4,薛:19,段:9,雷:13,侯:9,龙:16,史:5,陶:16,黎:15,贺:12,顾:21,毛:4,郝:14,龚:22,邵:12,钱:16,严:20,武:8,戴:18,莫:13,孔:4,向:6,常:11,康:11,易:8,文:4,施:9,洪:10,安:6,颜:18,温:13,章:11,鲁:15,葛:15,伍:6,申:5,尤:4,焦:12,柳:9,邢:11,路:13,岳:8,乔:12,赖:20,万:15,苏:22,蒋:17,沈:8,汪:8,邓:19,覃:12,房:8,边:22,辛:7,涂:11,甘:5,封:9,储:18,邬:17,路:13,詹:13},SURNAME_READING:{王:["wang",2],李:["li",3],张:["zhang",1],刘:["liu",2],陈:["chen",2],杨:["yang",2],黄:["huang",2],赵:["zhao",4],吴:["wu",2],周:["zhou",1],徐:["xu",2],孙:["sun",1],马:["ma",3],朱:["zhu",1],胡:["hu",2],郭:["guo",1],何:["he",2],高:["gao",1],林:["lin",2],罗:["luo",2],郑:["zheng",4],梁:["liang",2],谢:["xie",4],宋:["song",4],唐:["tang",2],许:["xu",3],韩:["han",2],冯:["feng",2],曹:["cao",2],彭:["peng",2],曾:["zeng",1],萧:["xiao",1],田:["tian",2],董:["dong",3],潘:["pan",1],袁:["yuan",2],蔡:["cai",4],余:["yu",2],于:["yu",2],杜:["du",4],叶:["ye",4],程:["cheng",2],魏:["wei",4],吕:["lv",3],丁:["ding",1],任:["ren",2],姚:["yao",2],卢:["lu",2],姜:["jiang",1],崔:["cui",1],钟:["zhong",1],谭:["tan",2],陆:["lu",4],范:["fan",4],金:["jin",1],石:["shi",2],廖:["liao",4],贾:["jia",3],夏:["xia",4],韦:["wei",2],付:["fu",4],方:["fang",1],白:["bai",2],邹:["zou",1],孟:["meng",4],熊:["xiong",2],秦:["qin",2],邱:["qiu",1],江:["jiang",1],尹:["yin",3],薛:["xue",1],段:["duan",4],雷:["lei",2],侯:["hou",2],龙:["long",2],史:["shi",3],陶:["tao",2],黎:["li",2],贺:["he",4],顾:["gu",4],毛:["mao",2],郝:["hao",3],龚:["gong",1],邵:["shao",4],钱:["qian",2],严:["yan",2],武:["wu",3],戴:["dai",4],莫:["mo",4],孔:["kong",3],向:["xiang",4],常:["chang",2],康:["kang",1],易:["yi",4],文:["wen",2],施:["shi",1],洪:["hong",2],安:["an",1],颜:["yan",2],温:["wen",1],章:["zhang",1],鲁:["lu",3],葛:["ge",3],伍:["wu",3],申:["shen",1],尤:["you",2],焦:["jiao",1],柳:["liu",3],邢:["xing",2],路:["lu",4],岳:["yue",4],乔:["qiao",2],赖:["lai",4],万:["wan",4],苏:["su",1],蒋:["jiang",3],沈:["shen",3],汪:["wang",1],邓:["deng",4],覃:["tan",2],房:["fang",2],边:["bian",1],辛:["xin",1],涂:["tu",2],甘:["gan",1],封:["feng",1],储:["chu",3],邬:["wu",1],詹:["zhan",1],欧:["ou",1],阳:["yang",2],司:["si",1],上:["shang",4],官:["guan",1],诸:["zhu",1],东:["dong",1],皇:["huang",2],甫:["fu",3],尉:["yu",4],迟:["chi",2],令:["ling",4],狐:["hu",2],慕:["mu",4],徒:["tu",2],公:["gong",1]},DOUBLE_SURNAMES:{欧阳:{s:[15,17],py:"ouyang",tone:1},司马:{s:[5,10],py:"sima",tone:1},上官:{s:[3,8],py:"shangguan",tone:4},诸葛:{s:[15,15],py:"zhuge",tone:1},东方:{s:[8,4],py:"dongfang",tone:1},皇甫:{s:[9,7],py:"huangfu",tone:2},尉迟:{s:[11,19],py:"yuchi",tone:4},令狐:{s:[5,8],py:"linghu",tone:4},慕容:{s:[14,10],py:"murong",tone:4},宇文:{s:[6,4],py:"yuwen",tone:3},司徒:{s:[5,10],py:"situ",tone:1},夏侯:{s:[10,9],py:"xiahou",tone:4},公孙:{s:[4,10],py:"gongsun",tone:1}},SHULI_81:[null,["吉","太极之数"],["凶","两仪之数"],["吉","三才之数"],["凶","四象之数"],["吉","五行之数"],["吉","六爻之数"],["吉","七政之数"],["吉","八卦之数"],["凶","大成之数"],["凶","终结之数"],["吉","旱苗逢雨"],["凶","掘井无泉"],["吉","春日牡丹"],["凶","破兆之数"],["吉","福寿之数"],["吉","厚重之数"],["吉","刚强之数"],["吉","铁镜重磨"],["凶","多难之数"],["凶","屋下藏金"],["吉","明月中天"],["凶","秋草逢霜"],["吉","壮丽之数"],["吉","掘藏得金"],["吉","荣俊之数"],["凶","变怪之数"],["半吉","增长之数"],["凶","阔水浮萍"],["吉","智谋之数"],["半吉","非运之数"],["吉","春日花开"],["吉","宝马金鞍"],["吉","旭日升天"],["凶","破家之数"],["吉","高楼望月"],["凶","波澜重叠"],["吉","猛虎出林"],["半吉","磨铁成针"],["吉","富贵荣华"],["半吉","退安之数"],["吉","有德之数"],["半吉","寒蝉在柳"],["凶","散财破产"],["凶","烦闷之数"],["吉","顺风之数"],["凶","浪里淘金"],["吉","点石成金"],["吉","古松立鹤"],["半吉","转变之数"],["半吉","小舟入海"],["半吉","沉浮之数"],["吉","先见之明"],["半吉","曲卷难星"],["凶","石上栽花"],["半吉","善恶之数"],["凶","浪里行舟"],["吉","日照春松"],["半吉","晚行遇月"],["凶","寒蝉悲风"],["凶","无谋之数"],["吉","牡丹芙蓉"],["凶","衰败之数"],["吉","舟归平海"],["凶","非命之数"],["吉","巨流归海"],["凶","岩头步马"],["吉","通达之数"],["吉","顺风吹帆"],["凶","非业之数"],["凶","残菊经霜"],["半吉","石上金花"],["凶","劳苦之数"],["半吉","志高力微"],["凶","残菊逢霜"],["半吉","退守之数"],["凶","离散之数"],["半吉","半吉之数"],["半吉","晚苦之数"],["凶","云头望月"],["半吉","遁吉之数"],["吉","万物回春"]]}})(),W.name=(function(){const{buildBazi:P}=W.bazi||{},{assertCivil:Q}=W.validate||{},{READING:te,SURNAME_STROKES:J,SURNAME_READING:ne,DOUBLE_SURNAMES:T,SHULI_81:v}=W["name-data"]||{},Y={木:"火",火:"土",土:"金",金:"水",水:"木"},m={木:"土",土:"水",水:"火",火:"金",金:"木"},$={火:"木",土:"火",金:"土",水:"金",木:"水"},A={土:"木",水:"土",火:"水",金:"火",木:"金"},j=["木","火","土","金","水"],y=[["梓","木","梓树,喻成长、手艺与念乡","n"],["桐","木","梧桐,高洁、引来凤凰","n"],["楠","木","楠木,坚韧贵重","n"],["楷","木","楷模,端正可法","m"],["松","木","松柏常青,坚韧长寿","m"],["柏","木","柏树,刚直耐寒","m"],["枫","木","枫叶,热烈与秋意","n"],["榕","木","榕树,荫庇包容","n"],["槿","木","木槿,朝开暮落、坚韧","f"],["棠","木","海棠,明媚雅致","f"],["楚","木","清楚、楚楚有致","n"],["柯","木","草木枝干,条理分明","m"],["桓","木","桓桓武貌,栋梁","m"],["榆","木","榆树,安稳敦厚","n"],["栩","木","栩栩生动","n"],["榛","木","榛果,丰实","n"],["芸","木","芸香,清雅好学","f"],["芷","木","白芷,芳洁","f"],["芮","木","草初生,柔而韧","f"],["若","木","若木,从容","f"],["茜","木","茜草,明丽","f"],["茵","木","绿茵,葱茏","f"],["茗","木","茶芽,清雅","f"],["莎","木","莎草,柔韧","f"],["茉","木","茉莉,素净芬芳","f"],["筱","木","小竹,清秀有节","f"],["蓉","木","芙蓉,明艳","f"],["萱","木","萱草,忘忧","f"],["蕙","木","蕙兰,芳心","f"],["蕊","木","花蕊,含秀","f"],["菲","木","芳菲,繁茂","f"],["蔓","木","藤蔓,绵延","f"],["荣","木","繁荣,荣光","m"],["茂","木","茂盛,丰隆","m"],["栋","木","栋梁","m"],["梁","木","桥梁、栋梁","m"],["朴","木","质朴","m"],["本","木","根本","m"],["炎","火","火盛,热烈","m"],["灿","火","灿烂","n"],["炫","火","光彩炫目","m"],["炜","火","光明","m"],["烨","火","火光盛明","m"],["煜","火","照耀","m"],["熙","火","光明和乐","n"],["煊","火","温暖显赫","m"],["焕","火","焕然一新","m"],["熠","火","熠熠生辉","n"],["炅","火","日光","n"],["昱","火","日光,明亮","m"],["晗","火","天将明","f"],["旭","火","旭日初升","m"],["昊","火","广大如天","m"],["晟","火","光明兴盛","m"],["晨","火","清晨","n"],["景","火","光景、景仰","n"],["曜","火","日光照耀","m"],["曦","火","晨曦","n"],["朗","火","明朗","m"],["昭","火","昭明","n"],["昕","火","黎明","f"],["昀","火","日光","f"],["暖","火","温暖","f"],["灵","火","灵秀","f"],["丹","火","赤诚","f"],["彤","火","朱红","f"],["冉","火","冉冉上升","f"],["南","火","南方,向阳","n"],["坤","土","大地,厚德","m"],["垚","土","山高","m"],["培","土","培育","m"],["城","土","城池,坚固","m"],["域","土","疆域","m"],["坚","土","坚定","m"],["墨","土","笔墨,文气","n"],["均","土","均衡","m"],["坦","土","坦荡","m"],["基","土","根基","m"],["堂","土","堂堂正正","m"],["圣","土","圣明","m"],["在","土","存在、自在","n"],["岳","土","山岳","m"],["峰","土","山峰","m"],["峻","土","高峻","m"],["岚","土","山间雾气","f"],["岩","土","岩石,刚毅","m"],["崇","土","崇高","m"],["岐","土","岐山,分岔有路","m"],["屿","土","小岛","n"],["磊","土","磊落","m"],["尧","土","古圣王,高远","m"],["圆","土","圆满","f"],["恩","土","恩厚","n"],["惟","土","思惟","m"],["锋","金","锋芒","m"],["钢","金","刚强","m"],["钧","金","权衡、钧衡","m"],["铭","金","铭记","m"],["锐","金","锐进","m"],["锡","金","赐予","m"],["锦","金","锦绣","n"],["鑫","金","兴盛(三金)","m"],["键","金","关键、强健","m"],["鉴","金","明鉴","m"],["钦","金","钦敬","m"],["镇","金","镇守","m"],["铮","金","铮铮有声","m"],["钰","金","珍宝","n"],["铠","金","铠甲","m"],["珊","金","珊瑚","f"],["珠","金","明珠","f"],["琳","金","美玉","f"],["琦","金","美玉、奇伟","n"],["琪","金","美玉","f"],["瑜","金","美玉、瑜亮","n"],["瑞","金","祥瑞","n"],["瑄","金","璧玉","f"],["璇","金","美玉","f"],["璟","金","玉光","n"],["璐","金","美玉","f"],["瑾","金","美玉,谨守","f"],["珏","金","双玉","n"],["环","金","圆环,周全","f"],["玲","金","玲珑","f"],["珑","金","玲珑","f"],["瑶","金","瑶华","f"],["莹","金","晶莹","f"],["铎","金","铃铎,传声","m"],["江","水","江河,开阔","m"],["河","水","河流","m"],["海","水","海纳百川","m"],["洋","水","海洋,宽广","n"],["波","水","波澜","m"],["涛","水","波涛","m"],["涵","水","包涵、涵养","f"],["清","水","清澈","n"],["澈","水","澄澈","m"],["澄","水","澄明","n"],["润","水","温润","m"],["泽","水","恩泽","m"],["沛","水","充沛","m"],["沁","水","沁润","f"],["泓","水","水深而广","m"],["泉","水","源泉","n"],["汐","水","潮汐","f"],["淇","水","淇水","f"],["鸿","水","鸿鹄、宏大","m"],["滋","水","滋润","n"],["淼","水","水势浩渺","n"],["雨","水","甘霖","n"],["雪","水","洁白","f"],["霖","水","甘霖","m"],["霏","水","雨雪纷飞","f"],["露","水","露华","f"],["霆","水","雷霆","m"],["雯","水","云纹","f"],["霓","水","虹霓","f"],["湉","水","水流平缓","f"],["沐","水","沐浴,受润泽","n"],["宸","木","屋宇、北极星所居,喻尊贵","m"],["轩","土","高轩,气宇轩昂","m"],["逸","土","安逸、超逸","m"],["然","火","自然、坦然","n"],["承","金","承继担当","m"],["语","木","言语,温言","f"],["诺","火","诺言,信守","n"],["诗","金","诗书,文气","f"],["梦","木","梦想","f"],["思","金","思虑,才思","n"],["悦","金","喜悦","f"],["欣","木","欢欣","f"],["嘉","木","嘉美","n"],["佳","木","佳好","f"],["博","水","博学","m"],["文","水","文采","n"],["睿","金","睿智","m"],["宇","土","器宇、宇宙","m"],["亦","土","也,从容","n"],["知","火","知晓,明理","n"],["星","火","星辰","n"],["月","木","明月","f"],["言","木","言语,信","n"],["和","水","和顺","n"],["安","土","安宁","n"],["宁","火","安宁","f"],["林","木","林木成片,茂盛有荫","n"],["森","木","众木成林,森然","n"],["枝","木","枝条,生发","n"],["果","木","果实,有成","n"],["禾","木","禾苗,五谷初生","n"],["秀","木","禾吐穗,秀美出众","n"],["穗","木","谷穗,丰实","n"],["稼","木","庄稼,耕作有成","m"],["颖","木","禾颖,聪颖","n"],["苗","木","苗裔,初生有生机","n"],["菁","木","菁华,草木茂盛","f"],["菡","木","荷花含苞","f"],["蕴","木","蕴积,含而不露","f"],["蕾","木","花蕾,待放","f"],["薇","木","蔷薇,细而韧","f"],["薏","木","薏苡,清润","f"],["菀","木","草木茂盛","f"],["荷","木","荷花,出淤泥","f"],["莲","木","莲花,清直","f"],["菱","木","菱角,水生","f"],["苇","木","芦苇,柔韧","n"],["荻","木","荻草,秋声","n"],["筠","木","竹皮,竹之青","n"],["笛","木","竹笛,清音","n"],["杉","木","杉木,挺拔","n"],["柠","木","柠檬,清新","f"],["桢","木","桢干,栋梁材","m"],["樾","木","树荫,庇下","m"],["柘","木","柘木,坚韧","n"],["权","木","权衡,执中","m"],["材","木","木材,成材","m"],["杭","木","苏杭,舟行","n"],["枚","木","衔枚,静而进","n"],["梧","木","梧桐,栖凤","n"],["竹","木","竹,有节而虚心","n"],["简","木","简朴,简静","n"],["策","木","策谋,鞭策","m"],["筹","木","筹算,谋划","m"],["芬","木","芬芳","f"],["芳","木","芳华","f"],["花","木","花,明媚","f"],["菊","木","菊花,晚节","f"],["兰","木","兰花,幽香","f"],["芝","木","芝兰,瑞草","f"],["芹","木","芹献,谦诚","f"],["荃","木","荃草,香草","f"],["萃","木","荟萃,聚合","n"],["蓁","木","蓁蓁,草木盛","n"],["荞","木","荞麦,实而不华","f"],["莞","木","莞尔,浅笑","f"],["萦","木","萦绕,绵长","f"],["蔚","木","蔚然,文采盛","n"],["芃","木","芃芃,草木茂","n"],["芩","木","黄芩,草本","f"],["苡","木","薏苡,清润","f"],["莱","木","莱草,野而秀","n"],["萌","木","萌芽,生机","n"],["葆","木","永葆,守而不失","n"],["萧","木","萧然,清疏","n"],["樟","木","樟木,香而久","n"],["樱","木","樱花,明丽","f"],["栎","木","栎树,坚实","n"],["棹","木","舟棹,行水","n"],["楸","木","楸树,高直","n"],["槐","木","槐树,三公之位","n"],["橙","木","橙,明暖","n"],["檀","木","檀香,沉静","n"],["丰","火","丰盛、丰盈(繁体豐从豆,归火)","n"],["日","火","太阳,光明","m"],["阳","火","阳光,向阳而生","m"],["光","火","光明","n"],["亮","火","明亮,爽朗","m"],["明","火","光明、明理","n"],["晶","火","晶莹,三光","f"],["晴","火","晴朗,天开","f"],["夏","火","夏天,盛大","n"],["智","火","智慧,明达","m"],["卓","火","卓越,卓立","m"],["乐","火","和乐","n"],["恺","火","恺悌,和乐","m"],["恬","火","恬静","f"],["甜","火","甜美","f"],["亭","火","亭亭,端立","f"],["俊","火","俊朗,才俊","m"],["丙","火","天干丙,阳火","m"],["丁","火","天干丁,阴火","n"],["鼎","火","鼎立,厚重","m"],["陶","火","陶然,自得","n"],["熹","火","熹微,晨光","n"],["炀","火","火旺,炽盛","m"],["烜","火","烜赫,显明","m"],["暻","火","日光","n"],["晖","火","日晖,光彩","n"],["晔","火","光晔,明盛","n"],["旻","火","秋天,天高","m"],["晏","火","晏然,安和","n"],["晓","火","拂晓,天将明","f"],["暄","火","温暖,日暖","f"],["昆","火","昆山,同也","m"],["伶","火","伶俐,聪敏","f"],["山","土","山,稳重","m"],["岸","土","岸然,独立","m"],["岑","土","小山,高而静","n"],["巍","土","巍峨,高大","m"],["嵩","土","嵩山,高峻","m"],["岭","土","山岭,绵延","n"],["奥","土","深奥,蕴藉","m"],["宜","土","宜然,合度","n"],["容","土","包容,容仪","n"],["意","土","心意,诚意","f"],["依","土","依倚,亲近","f"],["悠","土","悠然,从容","f"],["维","土","维系,纲维","n"],["纬","土","经纬,有条","n"],["永","土","永恒,久长","n"],["远","土","高远","m"],["辰","土","星辰、辰时","m"],["壁","土","壁立,端正","m"],["田","土","田野,耕获","m"],["由","土","由来,自得","n"],["画","土","图画,文采","f"],["延","土","延展,绵长","m"],["建","土","建立,树也","m"],["音","土","音声,和鸣","f"],["韵","土","韵致,余响","f"],["玮","土","美玉,珍奇","m"],["雍","土","雍容,和穆","m"],["懿","土","懿德,美善","f"],["金","金","金,坚而贵","m"],["秋","金","秋收、成熟(秋属金,肃而收)","n"],["书","金","书卷,文墨","n"],["舒","金","舒展,从容","n"],["善","金","善良,善成","n"],["信","金","诚信,符信","m"],["修","金","修远,修身","m"],["素","金","素雅,本色","f"],["静","金","安静,沉静","f"],["心","金","心志,中藏","f"],["新","金","新意,日新","n"],["正","金","正直,端正","m"],["世","金","世代,绵延","m"],["少","金","少年,少壮","m"],["西","金","西方,金位","n"],["白","金","洁白,素净","n"],["辛","金","天干辛,阴金","n"],["成","金","成器,成事","m"],["利","金","利落,锋利","m"],["剑","金","剑,刚锐","m"],["刚","金","刚强,不屈","m"],["则","金","法则,有度","m"],["初","金","初心,开端","n"],["硕","金","硕大,学殖","m"],["尚","金","崇尚,尚贤","n"],["臣","金","臣,佐事","m"],["川","金","川流,通达","n"],["舟","金","舟行,济渡","n"],["州","金","州,聚落","n"],["祖","金","祖德,源远","m"],["祥","金","吉祥,祥瑞","n"],["禄","金","福禄,俸给","m"],["禧","金","禧庆,福","n"],["珍","金","珍宝,珍重","f"],["宣","金","宣明,布达","n"],["序","金","秩序,庠序","n"],["谦","金","谦逊,有终","m"],["赞","金","赞美,佐成","m"],["超","金","超越,越过","m"],["锴","金","精铁,坚刚","m"],["水","水","水,润下","n"],["冰","水","冰清,澄澈","f"],["洁","水","洁净,洁身","f"],["浩","水","浩大,广远","m"],["瀚","水","浩瀚,无涯","m"],["渊","水","渊深,有本","m"],["澜","水","波澜,壮阔","n"],["潮","水","潮涌,有信","n"],["溪","水","溪流,清浅","f"],["湘","水","湘水,清深","f"],["渝","水","渝水,守而不变","n"],["深","水","深厚,深藏","m"],["湛","水","湛然,清深","m"],["汇","水","汇聚,会归","n"],["洲","水","洲渚,水中地","n"],["湾","水","水湾,曲处","f"],["云","水","云行,舒卷","n"],["风","水","风雅,流动","n"],["北","水","北方,水位","n"],["冬","水","冬藏,静敛","f"],["玄","水","玄远,幽深","n"],["子","水","子,初生","m"],["平","水","平和,坦易","n"],["方","水","方正,有隅","n"],["帆","水","风帆,顺行","n"],["航","水","航行,济远","m"],["敏","水","敏思,捷悟","f"],["慧","水","慧心,明彻","f"],["惠","水","惠泽,施与","f"],["霈","水","霈雨,丰沛","m"],["灏","水","灏气,广大","m"],["湄","水","水湄,岸边","f"],["滨","水","水滨,近水","n"],["洛","水","洛水,清流","n"],["津","水","津渡,要处","n"],["泊","水","淡泊,自守","m"],["沧","水","沧海,苍茫","m"],["浦","水","浦,水滨","n"]],k=new Map,re=new Map;for(const[q,V,F,l]of te)re.has(q)||re.set(q,{py:V,tone:F,st:l});for(const q of y)if(!k.has(q[0])){const V=re.get(q[0])||{};k.set(q[0],{c:q[0],el:q[1],meaning:q[2],g:q[3],order:k.size,py:V.py||null,tone:V.tone||null,strokes:V.st||null})}const S={1:"木",2:"木",3:"火",4:"火",5:"土",6:"土",7:"金",8:"金",9:"水",0:"水"},M=(q,V)=>q===V?"同":Y[q]===V?"生":m[q]===V?"克":Y[V]===q?"被生":"被克";function i(q){let V=q;for(;V>81;)V-=80;if(!(V>=1))return null;const F=v[V];return F?{num:V,level:F[0],name:F[1]}:null}function d(q){const V={};for(const F of[q&&q.surnameStrokes,q&&q.strokeOverrides])if(!(!F||typeof F!="object"))for(const[l,h]of Object.entries(F))Number.isInteger(h)&&h>0&&(V[l]=h);return Object.keys(V).length?V:void 0}function a(q,V,F){if(V&&Number.isInteger(V[q])&&V[q]>0)return{strokes:V[q],source:"user"};const l=k.get(q);return l&&l.strokes?{strokes:l.strokes,source:"lib"}:F==="surname"&&J[q]?{strokes:J[q],source:"surname"}:null}function r(q,V){const F=k.get(q);if(F&&F.py)return{py:F.py,tone:F.tone};if(V==="surname"&&ne[q]){const[l,h]=ne[q];return{py:l,tone:h}}return null}function u(q,V,F){const l=[...String(q||"")],h=[...String(V||"")];if(!l.length||!h.length)return{available:!1,reason:"需要姓与名才能排五格"};if(l.length>2)return{available:!1,reason:"姓超过两字:五格只算单姓与常见复姓"};const c=l.length===2?T[q]:null,x=c&&!l.some(D=>F&&F[D])?c.s.map(D=>({strokes:D,source:"table"})):l.map(D=>a(D,F,"surname")),p=h.map(D=>a(D,F,"given")),I=[...l,...h].filter((D,de)=>!(de<l.length?x[de]:p[de-l.length]));if(I.length)return{available:!1,reason:`这些字没有康熙笔画数据,五格算不了:${I.join("、")}——可用 strokeOverrides 传入笔画后再算`,missing:I};const H=x.map(D=>D.strokes),he=p.map(D=>D.strokes),se=D=>D.reduce((de,O)=>de+O,0),qe=l.length===2,Te=qe?se(H):H[0]+1,Ae=H[l.length-1]+he[0],xe=se(he)+(h.length===1?1:0),ye=se(H)+se(he),ve=l.length===1&&h.length===1?2:ye-Ae+1,E=[["天格",Te],["人格",Ae],["地格",xe],["外格",ve],["总格",ye]].map(([D,de])=>({key:D,strokes:de,...i(de)})),ce=[Te,Ae,xe].map(D=>D%10).map(D=>S[D]),ge=[{pair:"天与人",rel:M(ce[0],ce[1])},{pair:"人与地",rel:M(ce[1],ce[2])}],oe=ce[0]===ce[1]&&ce[1]===ce[2]?"三才同气,气脉集中":ge.every(D=>D.rel==="生"||D.rel==="同")?"一路相生,传统看作顺遂":ge.every(D=>D.rel==="克"||D.rel==="被克")?"相连相克,传统看作内外拉扯":`${ge.map(D=>`${D.pair}${D.rel}`).join("、")},吉凶各派看法不一`,Z=[...x,...p].some(D=>D.source==="user")?"mixed":"table";return{available:!0,surnameStyle:qe?"复姓":"单姓",strokes:[...l.map((D,de)=>({char:D,strokes:x[de].strokes,source:x[de].source,kind:"姓"})),...h.map((D,de)=>({char:D,strokes:p[de].strokes,source:p[de].source,kind:"名"}))],rows:E,sancai:{elements:ce,text:`${ce.join("")}(${oe})`,relations:ge},summary:E.map(D=>`${D.key}${D.strokes}${D.level}`).join(" "),source:Z}}const g=["zh","ch","sh","b","p","m","f","d","t","n","l","g","k","h","j","q","x","r","z","c","s","y","w"];function _(q){const V=String(q||"").toLowerCase();for(const F of g)if(V.startsWith(F))return{ini:F,fin:V.slice(F.length)};return{ini:"",fin:V}}const K={1:"一",2:"二",3:"三",4:"四"};function R(q){const V=[...String(q||"")];if(V.length<2)return{available:!1,reason:"至少两个字才谈得上音韵"};const F=V.map((p,I)=>{const H=r(p,I===0?"surname":"given");return H?{char:p,py:H.py,tone:H.tone,..._(H.py)}:{char:p,py:null,tone:null,ini:null,fin:null}}),l=F.filter(p=>!p.py).map(p=>p.char);if(l.length)return{available:!1,reason:`这些字没有读音数据:${l.join("、")}`,missing:l};const h=[];new Set(F.map(p=>p.tone)).size===1&&F.length>=2&&h.push({type:"tone",text:`全名都是${K[F[0].tone]}声,声调没有起伏`});for(let p=1;p<F.length;p++){const I=F[p-1],H=F[p];if(I.py===H.py&&I.tone===H.tone){h.push({type:"same",text:`「${I.char}${H.char}」同音同调(叠字或撞音)`});continue}I.ini&&I.ini===H.ini&&h.push({type:"initial",text:`「${I.char}${H.char}」同声母 ${I.ini}`}),I.fin===H.fin&&h.push({type:"final",text:`「${I.char}${H.char}」同韵母 ${I.fin}`})}const b=new Set(F.map(p=>p.ini).filter(Boolean));F.length>=3&&b.size===1&&h.push({type:"initial",text:`三字同声母 ${[...b][0]},连着读容易黏在一起`});const x=h.length===0?"顺口":h.length===1?"略拗":"拗口";return{available:!0,chars:F.map(p=>({char:p.char,py:p.py,tone:p.tone})),tonePattern:F.map(p=>p.tone).join("-"),issues:h,level:x}}function ee(q,V){const F=q&&q.charElements;if(!F||typeof F!="object")return null;const l=F[V];return j.includes(l)?l:null}function ue(q,V,F,l=3){const h=y.filter(c=>c[1]===q&&!F.has(c[0]));return h.sort((c,b)=>{const x=p=>p[3]===V||p[3]==="n"?1:0;return x(b)-x(c)}),h.slice(0,l).map(c=>({char:c[0],element:c[1],meaning:c[2]}))}const ke={m:"男",f:"女",n:"中"};function Me(q){const V=q&&q.level?q.level:null,F=q&&q.dayElement?q.dayElement:null;return!F||!V?{list:j.slice(),basis:"未取得旺衰:不筛五行,只做用字与字义建议"}:V==="身强"||V==="偏强"?{list:[A[F],Y[F],m[F]].filter(Boolean),basis:`${V}(${F}):宜克、泄、耗——用${A[F]}(克我)、${Y[F]}(我生)、${m[F]}(我克)`}:V==="身弱"||V==="偏弱"?{list:[F,$[F]].filter(Boolean),basis:`${V}(${F}):宜生、扶——用${F}(同我)、${$[F]}(生我)`}:{list:j.slice(),basis:`${V}:中和不偏,五行皆可用,以字义与音形为先`}}function Ne(q){return k.get(q)||null}function Oe(q){const V=String(q.surname||"").trim();if(!V)throw new Error("缺少姓氏:请给 surname(如「李」)");const F=String(q.givenName||"").trim();if(!F)throw new Error("缺少名字:请给 givenName(1–2 个汉字,如「沐宸」)");if([...F].length>2)throw new Error("名请给 1–2 个汉字;复姓请把复姓整体写在 surname,名只留 1–2 字");let l={list:[],basis:""},h=null,c=null;const b=Number.isInteger(q.year)&&Number.isInteger(q.month)&&Number.isInteger(q.day);if(b){Q(q,"birth");const E=P({year:q.year,month:q.month,day:q.day,hour:Number.isInteger(q.hour)?q.hour:12,minute:Number.isInteger(q.minute)?q.minute:0,gender:q.gender||"male",lateZi:q.lateZi!==!1,trueSolar:q.trueSolar!==!1,dst:q.dst!==!1,longitude:q.longitude,address:q.address,geo:q.geo});h={level:E.strength.level,score:E.strength.score,dayElement:E.pillars.day.stemElement},l=Me(h),c={dayMaster:E.dayMaster,solarNote:E.solarTime?E.solarTime.note:""}}const x=q.gender==="female"?"f":"m",p=new Set([V,...F]),I=l.list.length?l.list:j.slice(),H=[...F].map(E=>{const ie=Ne(E),ce=ee(q,E);return ie?{char:E,element:ie.el,meaning:ie.meaning,genderHint:ke[ie.g],favorable:b?l.list.includes(ie.el):null,source:"lib",note:null}:ce?{char:E,element:ce,meaning:"字库未收录;五行按你指定的「"+ce+"」计",genderHint:null,favorable:b?l.list.includes(ce):null,source:"user",note:"此字五行由调用方指定,不是字库推断"}:{char:E,element:"未收录",meaning:"字库未收录,未推断五行(不猜)",genderHint:null,favorable:null,source:"none",note:b?"若想贴合命局,可换用下面的同喜用字":"字库未收录:给出生辰后可以看同喜用的替换字",suggest:b?I.flatMap(ge=>ue(ge,x,p,2)):[]}}),he=H.filter(E=>E.source==="lib").length,se=H.filter(E=>E.source==="none").length,qe=H.filter(E=>E.favorable===!0).length,Te=H.length-se;let Ae;b?se===H.length?Ae=`两字都不在字库里,没法判断合不合喜用(喜用为 ${l.list.join("、")})。下面给了可替换的常用字,或把你自己认定的五行传进来。`:qe===Te&&Te>0?Ae=`用字都落在喜用(${l.list.join("、")})上,与命局方向一致。`:qe>0?Ae=`部分用字合喜用(${qe}/${Te}),其余可再斟酌;喜用为 ${l.list.join("、")}。`:Ae=`用字未落在喜用(${l.list.join("、")})上;不必然是坏名,但若想贴合命局可换字再看。`:Ae="只做了字义与五行归类;给出生年月日才能判断用字是否合喜用。";const xe=d(q),ye=u(V,F,xe),ve=R(V+F);return{system:"name",action:"assess",surname:V,givenName:F,fullName:V+F,...b?{bazi:{...c,strength:h,favorable:l.list,basis:l.basis}}:{},chars:H,wuge:ye,phonetics:ve,stats:{chars:H.length,known:he,unknown:se,favorableCount:qe,libSize:y.length,wugeReady:ye.available===!0},verdict:Ae,notes:[`字之五行按通行字义/偏旁归类,自建字库共 ${y.length} 字(常用名用字为主);未收录的字不猜五行,如实标注,「用户指定」是你传入的归类。`,"五格按康熙字典繁体笔画计(氵→水4、艹→艸6、华→華14 这类换算),81 数理取通行本、各派对少数数取法有出入;姓氏笔画表没覆盖的姓或你想按别派算,可传 strokeOverrides 覆盖。","音韵只做机械检查(全名同调、相邻同声母/同韵母、叠字),不做语义谐音判断——谐音、方言读法还得自己读三遍。","起名只做用字参考,不替父母做决定。"]}}function _e(q){const V=String(q.surname||"").trim();if(!V)throw new Error("缺少姓氏:请给 surname(如「李」)");if(!Number.isInteger(q.year)||!Number.isInteger(q.month)||!Number.isInteger(q.day))throw new Error("生成候选名需要完整出生年月日(公历):不给生辰无法判断喜用五行");Q(q,"birth");const F=q.gender==="female"?"female":"male",l=Math.max(1,Math.min(20,Number.isInteger(q.limit)?q.limit:10)),h=P({year:q.year,month:q.month,day:q.day,hour:Number.isInteger(q.hour)?q.hour:12,minute:Number.isInteger(q.minute)?q.minute:0,gender:F,lateZi:q.lateZi!==!1,trueSolar:q.trueSolar!==!1,dst:q.dst!==!1,longitude:q.longitude,address:q.address,geo:q.geo}),c={level:h.strength.level,score:h.strength.score,dayElement:h.pillars.day.stemElement},b=Me(c),x=y.filter(Z=>b.list.includes(Z[1])&&Z[0]!==V),p=F==="male"?"m":"f",I=[...V],H=d(q),he=I.map(Z=>a(Z,H,"surname")),se=I.length<=2&&he.every(Boolean),qe=se?he.reduce((Z,D)=>Z+D.strokes,0):0,Te=se?he[he.length-1].strokes:0,Ae=Z=>{const D=i(Z);return D?D.level==="吉"?2:D.level==="半吉"?1:0:0},xe=new Map(x.map(Z=>[Z[0],(a(Z[0],H,"given")||{}).strokes||0])),ye=[];for(let Z=0;Z<x.length;Z++)for(let D=0;D<x.length;D++){if(Z===D)continue;const de=x[Z],O=x[D],f=z=>z[3]===p||z[3]==="n"?1:0,G=f(de)+f(O)-(de[3]!==p&&de[3]!=="n"&&O[3]!==p&&O[3]!=="n"?2:0),L=xe.get(de[0]),ae=xe.get(O[0]);let Se=0;if(se&&L&&ae){const z=Te+L,be=L+ae,fe=qe+L+ae;Se=Ae(z)+Ae(be)+Ae(fe)+Ae(fe-z+1)}ye.push({name:de[0]+O[0],chars:[{char:de[0],element:de[1],meaning:de[2]},{char:O[0],element:O[1],meaning:O[2]}],elements:[de[1],O[1]],allFavorable:b.list.includes(de[1])&&b.list.includes(O[1]),genderScore:G,wugeScore:Se,order:(Z*7+D*13)%9973})}const ve=Z=>Z.elements[0]!==Z.elements[1]?1:0;ye.sort((Z,D)=>D.allFavorable-Z.allFavorable||ve(D)-ve(Z)||D.wugeScore-Z.wugeScore||D.genderScore-Z.genderScore||Z.order-D.order);const E=[],ie=new Set,ce=new Set([V]),ge=new Set,oe=(Z,D,de)=>{const O=[...Z.name].sort().join("");if(ie.has(O)||D&&Z.chars.some(G=>ce.has(G.char)))return!1;const f=Z.elements.join("");return de&&ge.has(f)?!1:(ie.add(O),ge.add(f),Z.chars.forEach(G=>ce.add(G.char)),E.push({rank:E.length+1,name:V+Z.name,given:Z.name,chars:Z.chars,wuge:u(V,Z.name,H),phonetics:R(V+Z.name)}),!0)};for(const Z of ye){if(E.length>=l)break;oe(Z,!0,!0)}for(const Z of ye){if(E.length>=l)break;oe(Z,!0,!1)}for(const Z of ye){if(E.length>=l)break;oe(Z,!1,!1)}return{system:"name",action:"generate",surname:V,gender:F==="male"?"男":"女",bazi:{dayMaster:h.dayMaster,strength:c,favorable:b.list,basis:b.basis},candidates:E,notes:[`字库共 ${y.length} 字,只在喜用五行(${b.list.join("、")})里选字;未覆盖的生僻好字可用 charElements 指定五行后评估。`,"候选排序依次看:合喜用 → 两字异行 → 五格(人格/地格/总格/外格 吉多者先)→ 性别倾向 → 字库序,是排序不是「吉名」判定。",se?"五格按康熙字典繁体笔画与通行本 81 数理算;姓的笔画取自内置姓氏表,没覆盖的姓可传 surnameStrokes 或 strokeOverrides。":"姓的笔画不在内置姓氏表里,这一轮没按五格排序(不半算);可传 surnameStrokes 或 strokeOverrides 后重算。","音韵只做机械检查(同调、相邻同声母/同韵母、叠字),不做语义谐音判断——候选的音韵结果随每条一起给出。"]}}function Ge(q){return q.action==="generate"?_e(q):Oe(q)}return{CHAR_LIB:y,shuliOf:i,wuge:u,splitPinyin:_,phonetics:R,favorableElements:Me,assessName:Oe,generateNames:_e,buildName:Ge}})(),W["bazi-words"]=(function(){const P={甲:{image:"参天之木",look:"身形多半偏修长,肩背挺,站着有股站相",temper:"直、有担当,认定的事不太会转弯",gift:"扛得起事,适合把一摊子组织起来",trap:"不会转弯,撞上南墙也硬顶"},乙:{image:"藤萝之木",look:"身形柔韧,气质亲和,不太有攻击性",temper:"柔中带韧,擅长借力,能屈能伸",gift:"协调、渗透,在缝隙里也能生长",trap:"太依赖环境,环境一换就慌"},丙:{image:"太阳之火",look:"面色偏红润,精神足,进门容易被注意到",temper:"外放热情,心里想什么脸上就写着什么",gift:"感染人、带动气氛,适合站到台前",trap:"三分钟热度,来得快去得也快"},丁:{image:"灯烛之火",look:"偏清瘦,眼神亮,动静之间有点静气",temper:"内敛细腻,认准一件事能守很久",gift:"专注、耐得住,适合做需要磨的活",trap:"敏感,容易在心里反复内耗"},戊:{image:"城墙之土",look:"骨架偏厚,给人稳当、压得住场的感觉",temper:"沉稳慢热,不轻易表态,表态了就算数",gift:"承载与守成,能把局面稳稳托住",trap:"太钝,机会过了才反应过来"},己:{image:"田园之土",look:"面目温和,身形圆润,没什么棱角",temper:"包容细致,想得多,习惯先照顾别人",gift:"经营与服务,把琐碎的事理顺",trap:"纠结,反复权衡反而错过时机"},庚:{image:"刀剑之金",look:"骨架硬朗,气场直接,说话不绕弯",temper:"果决、讲义气,眼里容不下拖泥带水",gift:"执行与开疆,难啃的骨头敢接",trap:"太刚,锋利的一面容易伤到亲近的人"},辛:{image:"珠玉之金",look:"清秀讲究,衣着细节看得出用心",temper:"精致敏锐,对分寸与体面很在意",gift:"审美与精细活,做得比说的好",trap:"挑剔,也容易被一句评价刺到"},壬:{image:"江河之水",look:"身形偏厚实,眉眼开阔,气度大",temper:"大开大合,爱自由,不喜欢被框住",gift:"统筹与流动,能把资源盘活",trap:"散漫,摊子铺开却收不回来"},癸:{image:"雨露之水",look:"清秀安静,存在感不抢,但耐看",temper:"细腻、直觉强,心事多半自己消化",gift:"感知与研究,能注意到别人漏掉的细节",trap:"多愁,遇事先退,容易错过表态的时机"}},Q={正官:{role:"规则与名分",gift:"守序可靠,答应的事会做到",trap:"太在意评价,放不开手脚",love:"重承诺,但不擅长把在意说出口",work:"适合在成体系的组织里按层级上升"},七杀:{role:"压力与冲劲",gift:"抗压强、敢担事,越难越来劲",trap:"急躁,习惯用硬碰解决问题",love:"容易被有主见的人吸引,也容易互相较劲",work:"适合高挑战、要快速决断的岗位"},正财:{role:"稳定收入与责任",gift:"务实会积累,账目清楚",trap:"算得太细,不敢为机会冒一点险",love:"重实际,用行动多于言语",work:"适合按劳取酬、积累型的路径"},偏财:{role:"机会与流动资源",gift:"善抓机会、人脉活络",trap:"铺得太开,钱和精力都容易留不住",love:"大方、桃花多,边界要自己划",work:"适合业务、投资、资源整合"},食神:{role:"表达与享受",gift:"会生活,也能把喜欢的事做成产出",trap:"太舒服就懒下来,节奏一松就拖",love:"温柔会照顾人,也怕麻烦",work:"适合技术、创作、餐饮、教育"},伤官:{role:"才华与不服",gift:"点子多、敢改,能做出别人做不出的东西",trap:"嘴上不饶人,赢了道理输了关系",love:"要求高,容易挑对方的刺",work:"适合改革、创意、专业型岗位"},正印:{role:"支持与学习",gift:"有耐心、学得进,靠得住",trap:"依赖心重,想得多做得少",love:"需要被理解与照顾",work:"适合研究、文教、需要资质的岗位"},偏印:{role:"偏门与钻研",gift:"冷门的门类也能钻透",trap:"孤,想法多但不爱解释",love:"需要空间,不喜欢被管",work:"适合专精技术、冷门专业"},比肩:{role:"同伴与自我",gift:"独立、扛得住,不轻易麻烦别人",trap:"固执,什么都想亲力亲为",love:"相处像朋友多过像恋人",work:"适合并肩作战或独立负责一块"},劫财:{role:"竞争与行动",gift:"行动快、敢抢,机会面前不犹豫",trap:"冲动,容易在钱和人情上破口",love:"来去都快,需要给彼此空间",work:"适合业务冲刺、竞争型岗位"},比劫:{role:"自我与同辈",gift:"独立、扛得住,不太依赖别人",trap:"固执,什么都想自己来",love:"相处像并肩的伙伴",work:"适合独立负责一块,或与同频的人并肩"},食伤:{role:"表达与产出",gift:"有想法,也做得出东西",trap:"话多或要求高,容易得罪人",love:"重视交流,也容易挑刺",work:"适合创作、技术、教学这类要表达的岗位"},财:{role:"资源与现实",gift:"务实、会算账、抓得住机会",trap:"把安全感全押在数字上",love:"重实际,用行动多于言语",work:"适合业务、财务、资源整合"},官杀:{role:"规则与压力",gift:"守序、抗压、担得起责任",trap:"绷得太紧,习惯用硬碰解决",love:"重承诺,也容易管得太宽",work:"适合体系内按层级上升,或高压高挑战的岗位"},印:{role:"支持与学习",gift:"有耐心、学得进、靠得住",trap:"想得多做得少,依赖现成的东西",love:"需要被理解与照顾",work:"适合研究、文教、需要资质的岗位"}},te={强:{泄:"这盘的问题是「力气有余、出口不够」:不缺劲头,缺的是把劲往哪使。先把方向定下来,比再多加一把力更管用。",制:"这盘气足又带压力:能扛事,但也容易一直绷着。学会把压力分出去,比硬顶更能长久。",耗:"这盘底子厚,适合在资源与实务上做文章:把力气换成看得见的成果,别停在想法里。"},弱:{生:"这盘底子偏薄,靠「有人托一把」最有效:找对平台、师友与环境,比自己硬撑省力得多。",比:"这盘单打独斗会累,找到同频的人并肩做,反而能把短板补上。",泄:"这盘不宜再往外耗,先收一收摊子,把根基补稳,再谈扩张。"},中:{default:"这盘五行相对均衡,没有哪一处特别极端:走哪条路都能走,靠的是选择与坚持,不是运气。"}};function J(m,$){const A=/强/.test(String(m||"")),j=/弱/.test(String(m||"")),y=Array.isArray($)?$:[String($||"")];if(!A&&!j)return te.中.default;const k=A?te.强:te.弱;for(const re of y){const S=/官杀/.test(re)?"制":/财/.test(re)?"耗":/食伤/.test(re)?"泄":/印/.test(re)?"生":/比劫/.test(re)?"比":"";if(S&&k[S])return k[S]}return A?k.泄:k.生}const ne=[[/自刑/,"自刑:自己跟自己较劲,多半是内耗而不是外来的事"],[/三会|三合/,"三合三会:几股力并成一股,做同类的事更容易成势"],[/六合|合/,"合:人事上容易谈拢,也容易被关系绑住、脱不开身"],[/相冲|冲/,"冲:桩子会晃,变动与拉扯偏多,宜先稳住再动"],[/相刑|刑/,"刑:规矩与情绪上的摩擦,事情不大但磨人"],[/相害|害/,"害:暗处的损耗,多是说不清的不顺"],[/相破|破/,"破:本来成形的事容易散,收尾要多花一分力"]];function T(m){const $=[];for(const A of Array.isArray(m)?m:[])for(const[j,y]of ne)if(j.test(A)&&!$.includes(y)){$.push(y);break}return $}function v(m){return Q[String(m||"")]||null}function Y(m){return P[String(m||"")]||null}return{STEM_PORTRAIT:P,TENGOD_PORTRAIT:Q,FRAME_TONE:te,frameToneOf:J,relationNotes:T,godPortraitOf:v,stemPortraitOf:Y}})(),W.followup=(function(){const{ZIWEI_STARS:P}=W["interpret-data"]||{},Q=[{key:"career",label:"事业",words:["事业","工作","跳槽","升职","创业","职业","岗位","离职","加薪","面试","offer"]},{key:"wealth",label:"财富",words:["财","钱","收入","投资","买房","存款","亏","赚","分红"]},{key:"love",label:"感情",words:["感情","婚","恋","对象","分手","复合","姻缘","结婚","桃花"]},{key:"health",label:"健康",words:["健康","病","身体","手术","失眠","体检","医院"]},{key:"study",label:"学业",words:["学业","考试","学习","考研","考公","证书","升学"]},{key:"travel",label:"出行",words:["出行","搬家","旅行","出国","迁","远行"]}],te={career:"官禄",wealth:"财帛",love:"夫妻",health:"疾厄",study:"官禄",travel:"迁移",overall:"命宫"},J=(S,M)=>{const i=String(S).match(/(20\d{2})\s*年?/);if(i)return Number(i[1]);const d=Array.isArray(M.liunian)&&M.liunian[0]?Number(M.liunian[0].year):null;return d?/明年/.test(S)?d+1:/后年/.test(S)?d+2:/去年/.test(S)?d-1:/今年|本年/.test(S)?d:null:null},ne=S=>Q.find(M=>M.words.some(i=>String(S).includes(i)))||null;function T(S,M){const i=J(M,S),d=ne(M),a=Array.isArray(S.liunian)?S.liunian:[],r=Array.isArray(S.dayun?.list)?S.dayun.list:[],u=a.map(g=>g.year);if(i&&!a.some(g=>Number(g.year)===i))return{ok:!1,year:i,topic:d,answer:`这一盘已排的流年范围是 ${u[0]}–${u[u.length-1]},没有 ${i} 年。可以把问题改到范围内,或用 asOf 指定你想看的年份重新排盘。`,evidence:[`已排流年:${u.join("、")}`],confidence:"弱"};if(i){const g=a.find(ke=>Number(ke.year)===i),_=r.find(ke=>Number(ke.startAge)<=Number(g.age)&&Number(g.age)<=Number(ke.startAge)+9)||null,K=g.luck?.tier||"平",R=(g.luck?.reasons||[]).slice(0,3),ee=(g.relations||[]).join("、"),ue=d?Y(S,d.key):"";return{ok:!0,year:i,topic:d,answer:`${i} 年(${g.ganzhi})流年,十神为${g.stemTenGod||"—"},档位「${K}」;所行大运 ${_?`${_.ganzhi}(${_.luck?.tier||"平"})`:"未取到"}。${R.length?`理由:${R.join(",")}。`:""}${ee?`与该年地支相关的原局关系:${ee}。`:""}${ue}`,evidence:[`流年 ${g.year} ${g.ganzhi}·${g.stemTenGod||""}·${K}`,_?`大运 ${_.ganzhi}·${_.luck?.tier||"平"}`:"",ee?`原局关系 ${ee}`:"",d?`问题方向:${d.label}`:""].filter(Boolean),confidence:_&&R.length?"强":"中"}}if(d){const g={wealth:"overall",study:"work",travel:"overall"}[d.key]||d.key,_=(S.interpret?.dimensions||[]).find(K=>K.key===d.key||K.key===g);if(_){const K=S.frame&&S.frame.godStats&&S.frame.godStats.groups||{},R=d.key==="wealth"?` 财星权重 ${Number(K.财||0)}(只作结构参考,不含金额)。`:"";return{ok:!0,year:null,topic:d,answer:`按${d.label}这条线看:${_.text}${R}${_.advice?` 建议:${_.advice}`:""}`,evidence:(_.evidence||[]).slice(0,4),confidence:_.confidence||"中"}}}return{ok:!1,year:null,topic:d,answer:`这个问题里没有识别到具体的年份或方面。可以这样问:「2027 年事业怎么样」「财运如何」「感情在 2028 年」;已排流年是 ${u[0]}–${u[u.length-1]}。`,evidence:[`可问年份:${u.join("、")}`],confidence:"弱"}}function v(S,M){const i=J(M,S),d=ne(M),a=Array.isArray(S.liunian)?S.liunian:[];if(i&&!a.some(r=>Number(r.year)===i))return{ok:!1,year:i,topic:d,answer:`这一盘的流年表覆盖 ${a[0]?.year}–${a[a.length-1]?.year},没有 ${i} 年;可以换一个年份,或用 asOf 指定起点重新排盘。`,evidence:[`流年表:${a.map(r=>r.year).join("、")}`],confidence:"弱"};if(i){const r=a.find(g=>Number(g.year)===i),u=r.daxian||{};return{ok:!0,year:i,topic:d,answer:`${i} 年(${r.ganzhi},${r.age} 岁)流年命宫落在「${r.lifePalace?r.lifePalace.palace:"—"}」,四化为 ${(r.mutagen||[]).join("、")||"不明显"};所行大限${u.palace?`在${u.palace}(${u.start}–${u.end} 岁)`:"未取到"}。${d?`与「${d.label}」对应的宫位信号见下条依据。`:""}`,evidence:[`流年命宫 ${r.lifePalace?r.lifePalace.palace:"—"}(${r.lifePalace?r.lifePalace.branch:"—"})`,`四化 ${(r.mutagen||[]).join("、")||"不明显"}`,u.palace?`大限 ${u.palace}·${u.start}–${u.end}岁`:""].filter(Boolean),confidence:(r.mutagen||[]).length>=3?"强":"中"}}if(d){const r=te[d.key]||"命宫",u=(S.palaces||[]).find(g=>g.palace===r);if(u){const g=(u.stars||[]).filter(K=>K.type==="主星").map(K=>K.name),_=g.map(K=>P[K]?.trait).filter(Boolean).slice(0,2).join(";");return{ok:!0,year:null,topic:d,answer:`「${d.label}」看${r}:主星${g.length?g.join("、"):"无正曜(借对宫)"}${_?`——${_}`:""}。宫支${u.branch},${u.stems,""}生年四化与煞星的影响需结合报告里的对应分节一起看。`,evidence:[`${r} ${u.branch}·${g.join("、")||"无正曜"}`,...(u.shensha||[]).slice(0,3)],confidence:g.length?"强":"弱"}}}return{ok:!1,year:null,topic:d,answer:"没有识别到具体年份或方面。可以问「2028 年事业」「感情怎么样」「财运在 2030 年」;也可以直接问某个宫位,如「夫妻宫」。",evidence:[],confidence:"弱"}}function Y(S,M){return`这段时间可以重点对照报告里「${{career:"事业",wealth:"财富",love:"感情",health:"健康",study:"学业",travel:"出行"}[M]||"整体"}」一节看。`}function m(S,M){const i=ne(M),d=Array.isArray(S.interpret?.sections)?S.interpret.sections:[],a=i?d.find(u=>u.label.includes(i.label)||u.text.includes(i.label)):null;if(a)return{ok:!0,year:null,topic:i,answer:a.text,evidence:[`引用分节:${a.label}`],confidence:"中"};const r=d[0];return{ok:!1,year:null,topic:i,answer:r?`这一盘的追问需要落到具体方面(事业 / 财富 / 感情 / 健康 / 学业 / 出行)。先看「${r.label}」这一节,或把问题说得更具体一点。`:"这一盘暂时没有可追问的分节;先看完整解析,再问具体方面。",evidence:[],confidence:"弱"}}function $(S,M){const i=String(M||"").trim(),d=S&&S.system==="bazi"?T(S,i):S&&S.system==="ziwei"?v(S,i):m(S,i);return{question:i,...d}}const A={bazi:"八字(四柱)",ziwei:"紫微斗数",liuyao:"六爻",meihua:"梅花易数",daliuren:"大六壬",qimen:"奇门遁甲",tarot:"塔罗",hepan:"合盘",chenggu:"称骨",almanac:"黄历",zeri:"择日",star:"星座",numerology:"生命数字",mbti:"十六型人格",trend:"人生 K 线",fengshui:"风水",name:"起名",convert:"公农历互转"},j=Object.freeze({bazi:["基本信息","四柱(日主/十神/藏干)","旺衰·格局·用神","合冲·神煞","起运·大运·流年","古籍依据"],ziwei:["基本信息","命宫/身宫与五行局","十二宫(主星/辅煞/四化)","格局与三方四正","大限/流年","古籍依据"],liuyao:["所问与用神","本卦/变卦(世应/动爻/六亲)","月建日辰(旺衰/空破)","应期线索","卦辞与依据"],meihua:["所问与体用","本卦/互卦/变卦","五行生克","应期与依据"],daliuren:["天地盘(月将/贵人)","四课","三传","课体与神将","依据"],qimen:["四柱与局数","九宫(星门神/天盘干)","用神落宫","门宫·干宫·十干克应","旺衰·击刑入墓","依据"],tarot:["问题与牌阵","逐牌(正逆/元素)","牌间关系","综合倾向","边界"],fengshui:["坐向与元运","运盘/山盘/向盘","旺山旺向","取象与边界"]}),y=Object.freeze(["基本信息","盘面事实","结构与关系","倾向","边界"]);function k(S){return j[S]||y}function re(S,M={}){const i=A[S&&S.system]||S&&S.system||"未知体系",a=String(M&&M.question||"").trim()||"请先用一句白话讲清这张盘的主线,再指出最值得注意的一两处,并说明每处的具体依据。",r=Number.isFinite(M&&M.maxChars)&&M.maxChars>=400?M.maxChars:3e3,u=String(S&&S.summary||"").trim(),g=u.length>r,_=g?`${u.slice(0,r)}…(摘要已截断)`:u,K=M&&typeof M.interpret=="object"&&M.interpret||S&&typeof S.interpret=="object"&&S.interpret||null,R=String(K&&K.answer||"").trim(),ee=String(K&&K.plain||"").trim(),ue=[];R&&ue.push(`直答:${R}`),ee&&ue.push(`说人话:${ee}`);const Me=["【命理追问】下面这张盘是命理插件刚排好的,请就着它回答我的问题;不用重新排盘,盘面字段已经够用。",`体系:${i}`,`所问:${a}`,"",...ue.length?["——开场结论(插件已按同一套规则算好,开场先沿用这句;措辞可改,口径别换)——",...ue,""]:[],"——盘面层次(从上到下读,别跳层)——",`${i}:${k(S&&S.system).join(" → ")}`,"先复述事实,再讲结构与时间;上一层没交代清楚,不要跳到下一层。","","——盘面摘要——",_||"(这张盘没有摘要字段,请先让我重新排一次。)","","——回答要求——","读者不懂命理。按下面的骨架答;任何一句他看不懂,就算没写完:",ue.length?"1) 开头一句结论:先沿用上面的「开场结论」,再用一句不用术语的话说清这张盘的主线——只读这一句也该有收获;":"1) 开头一句结论:不用术语,一句话说清这张盘的主线,只读这一句也该有收获;","2) 第二段只复述盘面骨架:按上面的层次用 2–4 行写事实(如四柱、格局、用神、大运),不掺倾向,让读者知道后面的判断从哪来;","3) 判断最多两条,按重要性排序,每条分四行写:"," 盘面|只引盘面已有的字(具体的柱、宫或爻、字段名),不掺解释;"," 白话|把上一行的术语当场翻成日常话——调候 / 化气 / 通关 / 空亡 / 争合 这类词必须落地,一个词只翻一次,不连续堆三个以上;"," 倾向|说「更可能……」,讲清它在现实里大概意味着什么,用概率语气;"," 边界|这条在什么情况下不成立;盘面没给的,直接写「这盘里看不出来」;","4) 收尾一句「如果只记一件事」:给一条能核对、能动手的观察点,并说明它出自上面哪条盘面依据;","5) 别把传统说法当成已证实的事实:不下绝对断言,也不用「肯定」「绝对」这类词,更不写「格局很好」「运程不顺」这种没有信息的空话。"].join(`
69
+ `);return{text:Me,question:a,system:S&&S.system||"",label:i,chars:Me.length,truncated:g}}return{followup:$,READING_ORDERS:j,READING_ORDER_FALLBACK:y,readingOrderOf:k,askPrompt:re}})(),W.revise=(function(){const P=[{key:"ziwei",label:"紫微",re:/紫微|斗数/},{key:"bazi",label:"八字",re:/八字|四柱/},{key:"liuyao",label:"六爻",re:/六爻|摇卦/},{key:"qimen",label:"奇门",re:/奇门/},{key:"daliuren",label:"大六壬",re:/大六壬|六壬/},{key:"tarot",label:"塔罗",re:/塔罗|抽牌/},{key:"meihua",label:"梅花",re:/梅花/},{key:"hepan",label:"合盘",re:/合盘|合婚/},{key:"almanac",label:"黄历",re:/黄历|老黄历/},{key:"zeri",label:"择日",re:/择日|挑日子/},{key:"fengshui",label:"风水",re:/风水/},{key:"name",label:"起名",re:/起名|取名/},{key:"chenggu",label:"称骨",re:/称骨/},{key:"xiaoliuren",label:"小六壬",re:/小六壬/},{key:"star",label:"星座",re:/星座/},{key:"numerology",label:"生命数字",re:/生命数字|生命灵数/},{key:"mbti",label:"MBTI",re:/mbti|人格测试|十六型/i},{key:"trend",label:"人生 K 线",re:/k\s*线|人生曲线/i},{key:"convert",label:"公农历互转",re:/农历转公历|公历转农历|公农历/}],Q=[{key:"love",label:"感情",re:/感情|婚姻|恋爱|对象|夫妻/},{key:"wealth",label:"财运",re:/财运|财富|赚钱|收入|破财/},{key:"career",label:"事业",re:/事业|工作|升职|跳槽/},{key:"health",label:"健康",re:/健康|身体|疾病|病/},{key:"study",label:"学业",re:/学业|考试|考研|升学|读书/},{key:"travel",label:"出行",re:/出行|搬家|迁移|旅行|外地/}],te=/换成|改成|改为|换到|改看|再看|再看一下|换一套|排一?张|用|按|看/,J=m=>String(m||"").replace(/(出生|出生地|所在地|人)$/,"").replace(/[的了].*$/,"").trim();function ne(m){const $=String(m??"").trim(),A={},j=[],y=[];if(!$)return{text:"",patch:A,labels:j,ignored:y};if(te.test($)){for(const S of P)if(S.re.test($)){A.system=S.key,j.push({key:"system",label:"体系",value:S.key,display:S.label});break}}/女命|女性|换成女|改成女|女盘/.test($)?(A.gender="female",j.push({key:"gender",label:"性别",value:"female",display:"女"})):/男命|男性|换成男|改成男|男盘/.test($)&&(A.gender="male",j.push({key:"gender",label:"性别",value:"male",display:"男"})),/晚子时/.test($)&&(/不换日|不换天|算当日|归当日|按当日|当天/.test($)?(A.lateZi=!1,j.push({key:"lateZi",label:"晚子时",value:!1,display:"23:00 后仍算当日"})):/换日|算次日|归次日|按次日|第二天|次日/.test($)&&(A.lateZi=!0,j.push({key:"lateZi",label:"晚子时",value:!0,display:"23:00 后算次日"}))),/真太阳时/.test($)&&(/不用|不要|关闭|关掉|取消|不算/.test($)?(A.trueSolar=!1,j.push({key:"trueSolar",label:"真太阳时",value:!1,display:"用东八区平太阳时"})):(A.trueSolar=!0,j.push({key:"trueSolar",label:"真太阳时",value:!0,display:"按出生地经度校正"}))),/夏令时/.test($)&&(/不用|不要|关闭|关掉|取消|不校正/.test($)?(A.dst=!1,j.push({key:"dst",label:"夏令时",value:!1,display:"不自动校正 1986–1991 夏令时"})):(A.dst=!0,j.push({key:"dst",label:"夏令时",value:!0,display:"自动校正 1986–1991 夏令时"})));const k=$.match(/出生在\s*([\u4e00-\u9fa5]{2,12})/)||$.match(/出生地(?:改成|改为|换成|换到|是|为)?\s*([\u4e00-\u9fa5]{2,12})/)||$.match(/改到\s*([\u4e00-\u9fa5]{2,12})\s*出生/);if(k){const S=J(k[1]);S.length>=2&&(A.address=S,j.push({key:"address",label:"出生地",value:S,display:S}))}const re=$.match(/(?:看|查|问|到|到了|临近)\s*((?:19|20)\d{2})\s*年/)||$.match(/((?:19|20)\d{2})\s*年(?:的)?(?:运势|怎么样|如何|会怎样|流年)/);if(re){const S=Number(re[1]);A.asOf=`${S}-01-01T00:00`,j.push({key:"asOf",label:"流年基准",value:A.asOf,display:`${S} 年`})}else/(出生|生年)/.test($)&&/(19|20)\d{2}\s*年/.test($)&&y.push("出生年份没改:一句话改不出日与时辰,请直接传 datetime(如 1993-04-08T06:20)");for(const S of Q)if(S.re.test($)){A.direction=S.key,j.push({key:"direction",label:"询问方向",value:S.key,display:S.label});break}return/解读|详解|详细说|说人话/.test($)&&!/不要解读|不用解读|别解读/.test($)&&(A.withInterpret=!0,j.push({key:"withInterpret",label:"解读",value:!0,display:"附解析与详解"})),{text:$,patch:A,labels:j,ignored:y}}const T=P,v=Q;function Y(m,$){if($==null)return null;if(m==="system"){const A=P.find(j=>j.key===$);return A?A.label:String($)}if(m==="gender")return $==="female"?"女":$==="male"?"男":String($);if(m==="direction"){const A=Q.find(j=>j.key===$);return A?A.label:String($)}if(typeof $=="boolean")return $?"开":"关";if(m==="asOf"){const A=String($).match(/^(\d{4})/);return A?`${A[1]} 年`:String($)}return String($)}return{parseRevision:ne,REVISE_SYSTEMS:T,REVISE_DIRECTIONS:v,displayValue:Y}})(),W.handle=(function(){const{fail:P}=W.fail||{},Q="mc1.",te=new Set(["handle","trace","shadow","shadowVersion","diff","withInterpret","cross","verifyPast","rectify","events","ask","followup","question","geocode","caliber","revise"]),J=i=>i!==null&&typeof i=="object"&&!Array.isArray(i);function ne(i){if(Array.isArray(i))return`[${i.map(a=>ne(a===void 0?null:a)).join(",")}]`;if(J(i))return`{${Object.keys(i).filter(r=>i[r]!==void 0).sort().map(r=>`${JSON.stringify(r)}:${ne(i[r])}`).join(",")}}`;const d=JSON.stringify(i===void 0?null:i);return d===void 0?"null":d}function T(i){let d=2166136261;for(let a=0;a<i.length;a++)d^=i.charCodeAt(a),d=Math.imul(d,16777619)>>>0;return d.toString(16).padStart(8,"0")}const v="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";function Y(i){const d=[];for(const a of String(i)){let r=a.codePointAt(0);r<128?d.push(r):r<2048?d.push(192|r>>6,128|r&63):r<65536?d.push(224|r>>12,128|r>>6&63,128|r&63):d.push(240|r>>18,128|r>>12&63,128|r>>6&63,128|r&63)}return d}function m(i){let d="";for(let a=0;a<i.length;){const r=i[a];let u,g;r<128?(u=r,g=1):r<224?(u=r&31,g=2):r<240?(u=r&15,g=3):(u=r&7,g=4);for(let _=1;_<g;_++)u=u<<6|i[a+_]&63;a+=g,d+=String.fromCodePoint(u)}return d}function $(i){const d=Y(i);let a="";for(let r=0;r<d.length;r+=3){const u=d[r],g=d[r+1],_=d[r+2];if(a+=v[u>>2],a+=v[(u&3)<<4|(g===void 0?0:g)>>4],g===void 0||(a+=v[(g&15)<<2|(_===void 0?0:_)>>6],_===void 0))break;a+=v[_&63]}return a}function A(i){const d=[];let a=0,r=0;for(const u of i){const g=v.indexOf(u);if(g<0)throw new Error(`不是 base64url 字符:${u}`);a=a<<6|g,r+=6,r>=8&&(r-=8,d.push(a>>r&255))}return m(d)}function j(i={}){const d={};for(const[a,r]of Object.entries(i||{}))te.has(a)||r===void 0||(d[a]=r);return d}function y(i={}){const d=j(i);if(!Object.keys(d).length)return"";const a=$(ne(d));return`${Q}${a}.${T(a)}`}function k(i){if(typeof i!="string"||!i.trim())throw P("E_HANDLE","handle 必须是非空字符串;没拿到句柄时照常传 system + datetime 等原始参数即可");const d=i.trim();if(!d.startsWith(Q))throw P("E_HANDLE",`handle 前缀不对(应以 ${Q} 开头):句柄来自旧版本或复制不全,重新排一次盘取新的 handle`);const a=d.slice(Q.length),r=a.lastIndexOf(".");if(r<=0)throw P("E_HANDLE","handle 缺少校验位:复制时可能被截断,重新取一次");const u=a.slice(0,r),g=a.slice(r+1);if(T(u)!==g)throw P("E_HANDLE","handle 校验不通过:内容被改动或截断,重新排一次盘取新的 handle");let _;try{_=JSON.parse(A(u))}catch{throw P("E_HANDLE","handle 内容无法解析(不是本插件生成的句柄),重新排一次盘取新的 handle")}if(!J(_))throw P("E_HANDLE","handle 内容不是参数对象,重新排一次盘取新的 handle");return _}function re(i={}){if(!J(i))return i;const{handle:d,...a}=i;if(d==null||d==="")return{...a};const u={...k(d)};for(const[g,_]of Object.entries(a))_!==void 0&&(u[g]=_);return u}return{handlePayload:j,encodeHandle:y,decodeHandle:k,resolveHandle:re,HANDLE_PREFIX:Q,handleChecksum:T}})(),W.bridge=(function(){const{encodeHandle:P,decodeHandle:Q,HANDLE_PREFIX:te}=W.handle||{},{askPrompt:J}=W.followup||{},ne=200,T=60,v={bazi:"八字",ziwei:"紫微",liuyao:"六爻",meihua:"梅花",daliuren:"大六壬",qimen:"奇门",hepan:"合盘",tarot:"塔罗",almanac:"黄历",zeri:"择日",chenggu:"称骨",xiaoliuren:"小六壬",star:"星座",numerology:"生命数字",mbti:"人格",trend:"人生K线",fengshui:"风水",name:"起名",convert:"农历"},Y=d=>v[d]||d||"未知体系";function m(d){const a=String(d||""),r=a.indexOf("#");return r<0?a:a.slice(0,r)}function $(d){try{return encodeURIComponent(d)}catch{return""}}function A(d){try{return decodeURIComponent(d)}catch{return String(d||"")}}function j(d={},a={}){const r=a||{},g=String(r.handle||d&&d.handle||"").trim()||P(d||{});if(!g||!g.startsWith(te))return"";const _=String(r.question||"").trim().slice(0,ne),K=[`mp=${g}`];return _&&K.push(`q=${$(_)}`),`${m(r.base)}#${K.join("&")}`}function y(d){const a=String(d||"").trim();if(!a)return{ok:!1,code:"E_LINK",message:"没有链接内容:请粘贴带 #mp= 的完整链接"};let r="";const u=a.indexOf("#");if(u>=0&&a.slice(u+1).trim())r=a.slice(u+1).trim();else{const R=a.indexOf("?");R>=0&&a.slice(R+1).trim()?r=a.slice(R+1).trim():/^mp=/.test(a)&&(r=a)}if(!r)return{ok:!1,code:"E_LINK",message:"链接里没有 #mp= 片段:这不是本插件生成的深链"};const g={};for(const R of r.split("&")){if(!R)continue;const ee=R.indexOf("=");if(ee<=0)continue;const ue=R.slice(0,ee),ke=R.slice(ee+1);ue==="mp"?g.mp=ke:ue==="q"&&(g.q=ke)}if(!g.mp)return{ok:!1,code:"E_LINK",message:"链接里没有 mp 参数(只有问题没有盘):无法还原盘面"};let _;try{_=Q(g.mp)}catch(R){return{ok:!1,code:R&&R.code||"E_HANDLE",message:R&&R.message||"句柄无法解析"}}const K=g.q?A(g.q).slice(0,ne):"";return{ok:!0,handle:g.mp,args:_,question:K,system:_.system||"",label:Y(_.system)}}const k=d=>{const a=/^(\d{4}-\d{1,2}-\d{1,2})[T ](\d{1,2}:\d{2})/.exec(String(d||"").trim());if(!a)return{date:"",time:""};const[r,u,g]=a[1].split("-");return{date:`${r}-${String(u).padStart(2,"0")}-${String(g).padStart(2,"0")}`,time:a[2].padStart(5,"0")}},re=["gender","address","trueSolar","lateZi","lines"];function S(d){const a=d&&d.ok?d:null,r=a&&a.args||{},u=k(r.datetime),g={tab:r.system||"",date:u.date,time:u.time,question:a&&a.question||"",restored:[],rest:{}};g.tab&&g.restored.push("system"),u.date&&g.restored.push("datetime");for(const _ of re)r[_]===void 0||r[_]===null||(g[_]=r[_],g.restored.push(_));g.question&&g.restored.push("question");for(const[_,K]of Object.entries(r))_==="system"||_==="datetime"||re.includes(_)||(g.rest[_]=K);return g}function M(d){const a=Object.keys(d&&d.rest||{});return a.length?`链接里还有 ${a.length} 项没填回表单(${a.join("、")}):这些只在引擎调用里生效,页面上按默认值显示。`:""}function i(d,a={}){const r=a||{},u=d||{},g=u.system||"",_=Y(g),K=String(r.question||"").trim(),R=String(u.handle||"").trim();let ee="";try{const _e=J(u,{question:K,interpret:r.interpret});ee=_e&&_e.text||String(u.summary||"")}catch{ee=String(u.summary||"")}const ue=K?K.length>T?`${K.slice(0,T)}…`:K:"(未填问题:按摘要讲主线)",ke=R?`【命理追问】${_}|${R}|问:${ue}`:`【命理追问】${_}|问:${ue}`,Me={};R&&(Me.handle=R),g&&(Me.system=g),K&&(Me.question=K);const Ne=JSON.stringify({tool:"metaphysics",v:1,args:Me},null,2),Oe=R?j({handle:R},{question:K,base:r.base}):"";return{system:g,label:_,handle:R,question:K,full:ee,brief:ke,structured:Ne,link:Oe}}return{LINK_MAX_QUESTION:ne,askLink:j,parseAskLink:y,formOf:S,restNote:M,askPackages:i}})(),W.index=(function(){const{buildBazi:P}=W.bazi||{},{buildLiuyao:Q,tossLines:te,bodyLabels:J,yongshenOf:ne,yongshenStrength:T,fushenAccess:v,hexagramStrength:Y,jinTuiPower:m,yingqiWindow:$}=W.liuyao||{},{buildZiwei:A,BRIGHTNESS:j,flowOf:y,asOfParts:k,ZIWEI_SCHOOL_DEFAULTS:re}=W.ziwei||{},{drawTarot:S}=W.tarot||{},{buildMeihua:M}=W.meihua||{},{buildDaliuren:i}=W.daliuren||{},{buildHepan:d,tripleOf:a}=W.hepan||{},{buildZiweiHepan:r}=W["ziwei-hepan"]||{},{buildQimen:u,buildSnapshot:g}=W.qimen||{},{geocodeAddress:_,resolveAddress:K}=W.geo||{},{toJDN:R,ganzhiName:ee,dayGanzhiIndex:ue}=W.calendar||{},{randomOf:ke,isSeed:Me}=W.random||{},{encodeHandle:Ne,decodeHandle:Oe,resolveHandle:_e}=W.handle||{},{askLink:Ge,parseAskLink:q,formOf:V,restNote:F,askPackages:l}=W.bridge||{},{parseRevision:h,displayValue:c}=W.revise||{},{interpret:b,DIRECTIONS:x,DIRECTION_DEFAULT:p}=W.interpret||{},{followup:I,askPrompt:H}=W.followup||{},{crossCheck:he,crossText:se,crossSection:qe}=W.crosscheck||{},{pastSignals:Te,verifyFit:Ae}=W.verify||{},{rectifyBirth:xe}=W.rectify||{},{buildAlmanac:ye}=W.almanac||{},{buildZeri:ve}=W.zeri||{},{buildChenggu:E}=W.chenggu||{},{buildXiaoliuren:ie}=W.xiaoliuren||{},{buildStar:ce}=W.star||{},{buildNumerology:ge}=W.numerology||{},{buildMbti:oe,mbtiPaper:Z}=W.mbti||{},{buildConvert:D}=W.convert||{},{classicsFor:de,classicsText:O,suiyunClassicOf:f,classicOf:G,CLASSIC_BOOKS:L}=W.classics||{},{diffObjects:ae,summarize:Se,sortDiffs:z,labelOf:be,rootOf:fe,categoryOf:Pe,formatValue:Be,CALIBER_SWITCHES:gn,viewRows:Mn}=W.diff||{},{canonicalJson:Jn,fingerprintOf:$n}=W.fingerprint||{},{buildTrend:vn}=W.trend||{},{buildFengshui:un}=W.fengshui||{},{buildName:On}=W.name||{},{buildTrace:pn,traceMarkdown:hn,SYSTEM_LABEL:Tn}=W.trace||{},{fail:Ie}=W.fail||{},{assertCivil:In}=W.validate||{},Ze=e=>String(e).padStart(2,"0"),_n=["male","female"];function Wn(e,o){return o===2?e%4===0&&e%100!==0||e%400===0?29:28:[31,28,31,30,31,30,31,31,30,31,30,31][o-1]}function Je(e,o=""){if(_n.includes(e))return e;const t=e==null||e===""?"(未提供)":`「${e}」`;throw Ie("E_INPUT",`${o?o+"的":""}gender 必须是 male 或 female${t};性别决定大运/大限顺逆,不能靠默认值`)}const Kn=["brightnessSchool","gengYearSihua","tianmaSchool","tiankongSchool","jiekongSchool","kuiyueSchool","tianshiTianshang","changshengSchool","lateZishi","shenzhuSchool"];function Ce(e){const o={};for(const t of Kn)e[t]!==void 0&&(o[t]=e[t]);return e.schools&&typeof e.schools=="object"&&(o.schools=e.schools),o}function Le(e){if(typeof e!="string"||!e.trim())throw Ie("E_INPUT","缺少 datetime(公历日期时间),例如 1990-05-12T14:30");const o=e.trim().match(/^(\d{4})-(\d{1,2})-(\d{1,2})(?:[T\s](\d{1,2}):(\d{1,2})(?::(\d{1,2}))?)?$/);if(!o)throw Ie("E_INPUT",`无法解析 datetime:「${e}」,请用 1990-05-12T14:30 这种格式`);const t={year:Number(o[1]),month:Number(o[2]),day:Number(o[3]),hour:Number(o[4]??0),minute:Number(o[5]??0)};if(t.month<1||t.month>12)throw Ie("E_INPUT",`月份超出范围:${t.month}`);const n=Wn(t.year,t.month);if(t.day<1||t.day>n)throw Ie("E_INPUT",`日期不存在:${t.year}-${t.month}-${t.day}(${t.year} 年 ${t.month} 月只有 ${n} 天)`);if(t.hour>23||t.minute>59)throw Ie("E_INPUT",`时间超出范围:${t.hour}:${t.minute}`);if(t.year<1600||t.year>2400)throw Ie("E_RANGE",`年份 ${t.year} 超出可计算范围(1600–2400)`);return(t.year<1900||t.year>2100)&&(t.precision={level:"approx",note:`ΔT 模型仅覆盖 1900–2100,${t.year} 年按端点值外推,节气与朔望时刻可能有分钟级偏差,月柱在交节前后需复核`}),t}function tn(e){const o=e.pillars,t=(me,je)=>`${me}:${je.ganzhi} ${je.stemTenGod?`十神 ${je.stemTenGod} `:""}藏干 ${je.hidden.map(He=>`${He.stem}(${He.tenGod})`).join(" ")} 纳音 ${je.nayin} 地势 ${je.dishi} 自坐 ${je.zizuo} 空亡 ${je.kongwang.join("")}`+(je.shensha&&je.shensha.length?` 神煞 ${je.shensha.join("、")}`:""),n=Object.entries(e.wuxing).map(([me,je])=>`${me}${je}`).join(" "),s=e.palaces?`【胎元】${e.palaces.taiyuan.ganzhi} 胎息 ${e.palaces.taixi?e.palaces.taixi.ganzhi:"—"} 命宫 ${e.palaces.minggong.ganzhi} 身宫 ${e.palaces.shengong.ganzhi}`:"",w=e.dayun.list.slice(0,8).map(me=>`${me.startAge}岁 ${me.ganzhi}(${me.stemTenGod})${me.luck?`·${me.luck.tier}`:""}${me.relations&&me.relations.length?`[${me.relations.join("")}]`:""}`).join(" "),N=e.dayun.jiao&&e.dayun.jiao.at?`;交运 ${e.dayun.jiao.at}(${e.dayun.jiao.frame},距${e.dayun.jiao.from.name} ${e.dayun.jiao.spanDays} 天,三日折一年)`:"",U=e.jieqi.nearBoundaryMinutes<20?`
70
+ ⚠ 出生时刻距「节」仅 ${e.jieqi.nearBoundaryMinutes} 分钟,而节气时刻本身有最多约 14 分钟的偏差,月柱与年柱建议人工复核。`:"",pe={year:"年",month:"月",day:"日",hour:"时"},ze=e.shensha&&e.shensha.groups&&e.shensha.groups.length?`神煞(${e.shensha.count} 见):`+e.shensha.groups.map(me=>`${me.cat}|`+me.items.map(je=>`${je.name}(${je.pillars.map(He=>pe[He]).join("")})`).join("、")).join(";"):"神煞:—",le=e.renyuan,Ee=G("smt-renyuan"),B=le?`人元:${le.month}月第${le.day}日,${le.active}${le.activeElement}司权(${le.segments.map(me=>`${me.stem}${me.from}–${me.to}`).join(" ")})${le.beyond?";已过 30 日表,按本气算":""}${Ee?`|原文见《${L[Ee.book].name}·${Ee.chapter}》`:""}`:"",$e=e.frame&&e.frame.yongshen&&e.frame.yongshen.disputed||[],De=$e.length?` 有争议:${$e.map(me=>`${me.element}(${me.favorRole};${me.climate}盘调候忌${me.element})`).join("、")}`:"",C=new Set($e.map(me=>me.element)),X=e.frame&&e.frame.yongshen&&e.frame.yongshen.neutral||[],we=X.length?` 中性偏忌:${X.map(me=>`${me.element} ${me.weight} 分`).join("、")}(近零,不作实忌)`:"",Re=e.frame?[`格局:${e.frame.primary?`${e.frame.primary.name}(${e.frame.primary.evidence})`:"—"}`,`   ${e.frame.geju.map(me=>`${me.name}[${me.kind}${me.status?`·${me.status}`:""}]`).join(" ")}`,`用神:喜${e.frame.yongshen.favor.join("")}(${e.frame.yongshen.favorTenGods.join("、")}) 忌${e.frame.yongshen.avoid.join("")}(${e.frame.yongshen.avoidTenGods.join("、")})${De}${we} ${e.frame.yongshen.method}`,`   ${e.frame.yongshen.detail}`,`寒暖:${e.climate?`${e.climate.label}(${(e.climate.evidence||[]).join("、")})${e.climate.need?` 调候取${e.climate.need.stem}${e.climate.need.element} 忌${e.climate.avoidElement}${C.has(e.climate.avoidElement)?"(有争议)":""}`:""}`:"—"}`+(e.frame.yongshen.qt?` 穷通:${e.frame.yongshen.qt.month}${e.frame.yongshen.qt.stem}取${e.frame.yongshen.qt.yong.join("、")}(首取${e.frame.yongshen.qt.primary})`:""),`十神权重:${Object.entries(e.frame.godStats.groups).map(([me,je])=>`${me}${je}`).join(" ")}`]:[];return[`【四柱】${o.year.ganzhi} ${o.month.ganzhi} ${o.day.ganzhi} ${o.hour.ganzhi}`,`日主:${e.dayMaster.stem}${e.dayMaster.element}(${e.dayMaster.yinYang}) 空亡:${e.kongwang.join("")}`,t("年柱",o.year),t("月柱",o.month),t("日柱",o.day),t("时柱",o.hour),`五行:${n}`,...s?[s]:[],`日主强弱:${e.strength.level}(${e.strength.score}) ${e.strength.detail}`,...Re,`天干关系:${e.relations&&e.relations.stems.length?e.relations.stems.join(" "):"—"}`,`地支关系:${e.relations&&e.relations.branches.length?e.relations.branches.join(" "):"—"}`,ze,`真太阳时:${e.solarTime.trueSolarText}(${e.input.geo?e.input.geo.note+";":""}${e.solarTime.note}) 晚子时:${e.input.lateZi?"23:00 后算次日":"23:00 后仍算当日"}`,`节气:上一节 ${e.jieqi.previous.name} ${e.jieqi.previous.time} 下一节 ${e.jieqi.next.name} ${e.jieqi.next.time}`,...B?[B]:[],`大运:${e.dayun.rule}(${e.dayun.direction}),${e.dayun.startAge.years}岁${e.dayun.startAge.months}个月起运${N}`,` ${w}`,`流年:${e.liunian.slice(0,10).map(me=>`${me.year}${me.ganzhi}(${me.stemTenGod})${me.luck?`·${me.luck.tier}`:""}`).join(" ")}`,(()=>{const me=e.liunian.filter(Ue=>Ue.suiyun&&Ue.suiyun.signals&&Ue.suiyun.signals.length);if(!me.length)return"岁运提示:近十年无岁运并临、运年反吟或大运/流年伏吟、反吟(只标干支,不判吉凶)";const je=Ue=>`${Ue.type}${(Ue.type.startsWith("流年")||Ue.type.startsWith("大运"))&&Ue.target?`(${Ue.target})`:""}`,He=f(e),yn=He?`|古籍见《${L[He.book].name}·${He.chapter}》`:"";return"岁运提示(只标干支变动,不判吉凶):"+me.map(Ue=>`${Ue.year}${Ue.ganzhi} ${Ue.suiyun.signals.map(je).join("/")}`).join(";")+yn})(),"(格局、用神、行运吉凶为扶抑+简化调候的量化提示,非断语。)"].join(`
71
+ `)+U}function dn(e){const o=e.lunar.monthRaw||e.lunar.month,t=`${e.lunar.year}年${e.lunar.isLeap?`闰${o}`:e.lunar.month}月${e.lunar.day}日`+(e.lunar.isLeap&&e.lunar.month!==o?`(按${e.lunar.month}月起盘)`:""),n=(()=>{if(!e.schools)return"";const $e=Object.entries({brightnessSchool:"亮度",gengYearSihua:"庚干四化",tianmaSchool:"天马",tiankongSchool:"天空",jiekongSchool:"截空",kuiyueSchool:"魁钺",tianshiTianshang:"天伤天使",changshengSchool:"长生",lateZishi:"晚子时",shenzhuSchool:"身主"}).filter(([De])=>e.schools[De]&&e.schools[De]!==re[De]).map(([De,C])=>`${C} ${e.schools[De]}`);return $e.length?`【流派】${$e.join(" ")}`:""})(),s=B=>B.length?B.map($e=>`${$e.name}${$e.mutagen?`化${$e.mutagen}`:""}`).join(" "):"—",w=B=>`神煞:长生(${B.changsheng}) 博士(${B.boshi}) 将前(${B.jiangqian}) 岁前(${B.suiqi})`,N=[];for(const B of e.palaces){const $e=B.isSoul?"【命】":B.isBody?"【身】":"  ";N.push(` ${B.palace} ${B.branch} ${B.ganzhi} ${$e} 大限${String(B.daxian.start).padStart(2)}-${B.daxian.end} 小限${String(B.xiaoxian.age).padStart(2)} ${s(B.stars)}`),N.push(` ${w(B.shensha)}`)}const U=(e.liunian??[]).slice(0,6).map(B=>` ${B.year} ${B.ganzhi} ${String(B.age).padStart(2)}岁 命宫${B.lifePalace.branch}(${B.lifePalace.palace}) 流禄${B.liulu} 流羊${B.liuyang} 流陀${B.liutuo} | ${B.mutagen.map($e=>$e.replace("化","")).join(" ")}`+(B.mutagenHits?` 四化落宫 ${B.mutagenHits.map($e=>`${$e.star}${$e.type}→${$e.palace||"未上盘"}`).join("、")}`:"")+(B.sanfangMainStars?` 三方主星 ${B.sanfangMainStars.join("")}`:"")),pe=(e.patterns??[]).length?e.patterns.map(B=>`${B.name}(${B.tone==="good"?"吉格":B.tone==="bad"?"忌格":"中"}:${B.evidence})`).join(";"):"无明显格局(按内置规则)",ze=(e.daxianList??[]).slice(0,8).map(B=>` ${B.branch}宫(${B.palace})${B.ages[0]}-${B.ages[1]}岁 ${B.ganzhi} 会${B.mainStars.join("")||"—"} 化 ${B.mutagenHits.map($e=>`${$e.star}${$e.type}→${$e.palace||"未上盘"}`).join("、")}`),le=(()=>{const B=e.flyChains;if(!B)return"";const $e=C=>{const X=B[C];return!X||!X.steps.length?"":`${C}:${X.path.join("→")}${X.closed?"(成环)":""}`},De=["禄","权","科","忌"].map($e).filter(Boolean).join(" ");return De?`【命宫飞星】${De}`:""})(),Ee=(()=>{const B=e.flyComposite;if(!B||!Array.isArray(B.sources)||!B.sources.length)return"";const $e=B.labels.length?B.labels.join(" · "):"无同宫会聚",De=["禄","权","科","忌"].map(C=>{const X=(B.byType&&B.byType[C]||[]).filter(Re=>!Re.self),we=[...new Set(X.map(Re=>String(Re.to).replace(/宫$/,"")))];return we.length?`${C}→${we.join("/")}`:""}).filter(Boolean).join(" ");return`【三方四正飞化】${B.sanfang.join("·")}:${$e}${De?` ${De}`:""}`})();return[`【农历】${t}(月首 ${e.lunar.monthStart}) 时支:${e.hourBranch} 年干支:${e.yearGanzhi}`,`【时刻】${e.solarTime?`${e.solarTime.civilText} → 真太阳时 ${e.solarTime.trueSolarText}${e.input.geo?"("+e.input.geo.note+")":""}`:""}`,`【命宫】${e.soul.branch}(${e.soul.ganzhi}·${e.soul.nayin}) 【身宫】${e.body.branch}(落${e.body.lands}) 【五行局】${e.bureau.name}`,`【紫微】${e.ziwei} 【天府】${e.tianfu} 【命主】${e.lifeMaster} 【身主】${e.bodyMaster}${e.bodyMasterNote?`(${e.bodyMasterSchool==="common"?"子午皆火星":"子铃午火"})`:""}`,`【大限】${e.daxian.rule},${e.daxian.startAge}岁起 【小限】${e.xiaoxianRule.direction}`,n,`【昌曲】文昌${e.changqu.wenchang.branch}(${e.changqu.wenchang.palace}${e.changqu.wenchang.mutagen?"·化"+e.changqu.wenchang.mutagen:""}) 文曲${e.changqu.wenqu.branch}(${e.changqu.wenqu.palace}${e.changqu.wenqu.mutagen?"·化"+e.changqu.wenqu.mutagen:""})`,`   ${e.changqu.relation} 入命三方:${e.changqu.inSoulSanfang?"是":"否"} 吸收面:${e.changqu.absorb.label}(${e.changqu.absorb.reason})`,le,Ee,"十二宫:",...N,"大限(按起运年龄排序,前 8 限,宫干四化落宫):",...ze,"流年(前 6 年,完整 12 年在结构化数据里):",...U,`【格局】${pe}`,e.patternSummary?`【结构统计】吉格 ${e.patternSummary.good.length}、中性 ${e.patternSummary.neutral.length}、忌格 ${e.patternSummary.bad.length}${e.patternSummary.broken.length?`、破格 ${e.patternSummary.broken.length}(${e.patternSummary.broken.join("、")})`:""};${e.patternSummary.note}`:"",e.lunar.note?`注:${e.lunar.note}`:""].filter(Boolean).join(`
72
+ `)}const Rn=["旺","相","休","囚","死"];function bn(e){const o=e.states,t=e.month;if(!o||!t)return"无月令数据";const n=s=>Rn.filter(w=>s&&Array.isArray(s[w])&&s[w].length).map(w=>`${w} ${s[w].join("/")}`).join(" ");return`月令 ${t.branch}(${t.element}) 门 ${n(o.gate)||"—"} 星 ${n(o.star)||"—"} 干 ${n(o.stem)||"—"}`}function wn(e){const o=e.palaces,t=n=>`${n.palace}宫 ${n.star||"—"}/${n.gate||"—"}/${n.god||"—"}${n.kong?" 空":""}${n.ma?" 马":""}`;return[`【四柱】${e.siZhu.year} ${e.siZhu.month} ${e.siZhu.day} ${e.siZhu.time}`,`【局数】${e.ju} 节气 ${e.jieqi}(${e.jieqiTime})`,`【值符】${e.zhiFu.star}(${e.zhiFu.gong}宫) 【值使】${e.zhiShi.gate}(${e.zhiShi.gong}宫) 旬首 ${e.xunshou}`,`【空亡】${e.kongWang.join("")||"—"} 驿马 ${e.ma.zhi||"—"}(${e.ma.gong||"—"}宫)`,`【宫位条件】击刑 ${(e.conditions&&e.conditions.jiXing||[]).map(n=>`${n.palace}宫${n.stem}`).join("、")||"无"} 三奇入墓 ${(e.conditions&&e.conditions.ruMu||[]).map(n=>`${n.palace}宫${n.stem}`).join("、")||"无"} 六仪入墓 ${(e.conditions&&e.conditions.liuYiRuMu||[]).map(n=>`${n.palace}宫${n.stem}`).join("、")||"无"}`,`【十干克应】${[...o,e.centerPalace].filter(n=>n&&n.ganYing).map(n=>`${n.palace}宫 ${n.ganYing.tian}加${n.ganYing.di} ${n.ganYing.name}`).join(" ")||"—"}`,`【旺衰】${bn(e)}`,`【九宫】${o.map(t).join(" ")}`,`※ 晚子时:${e.lateZiHourMode==="next-day"?"23:00 后归次日":"23:00 后仍归当日"}(可用 lateZiHourMode / lateZi 指定)`,`※ ${e.rules[e.rules.length-1]}`].join(`
73
+ `)}function Sn(e){if(!e||!Array.isArray(e.pairs)||!e.pairs.length)return[];const o=["【三方合盘】三对两两并列,不合成「三人总分」",...e.pairs.map(t=>`· ${t.a}–${t.b}:${t.level||"—"}(${t.total==null?"—":`${t.total}/100`})`)];return e.best&&(e.spread>=3?o.push(` 最顺:${e.best.a}–${e.best.b}(${e.best.total}/100)`+(e.hardest?`;最需磨合:${e.hardest.a}–${e.hardest.b}(${e.hardest.total}/100)`:"")):o.push(` 三对分数接近(最高与最低相差 ${e.spread} 分),不排名`)),e.focus&&e.focus.spread>=3&&o.push(` 差异最大的一维:${e.focus.label}(三对相差 ${e.focus.spread} 分)`),e.note&&o.push(`※ ${e.note}`),o}function Ln(e){if(e.chart==="ziwei"){const n=s=>`${s.label}:${s.score>=0?"+":""}${s.score} ${s.text}`;return[`【紫微合盘】${e.score.level}(${e.score.total}/100)`,`你 命宫 ${e.a.soul.branch}(${e.a.soulStars.join("、")||"无主星"}) 夫妻 ${e.a.spouseStars.join("、")||"无主星"} ${e.a.bureau}`,`对方 命宫 ${e.b.soul.branch}(${e.b.soulStars.join("、")||"无主星"}) 夫妻 ${e.b.spouseStars.join("、")||"无主星"} ${e.b.bureau}`,...e.dimensions.map(n),...e.interactions.map(s=>` · ${s.text}`),...Sn(e.triple),...e.notes.map(s=>`※ ${s}`)].join(`
74
+ `)}const o=n=>`${n.label}:${n.score>=0?"+":""}${n.score} ${n.text}`,t=n=>!n||!n.solarNote?"—":`${n.longitude==null?"未含经度修正":`${n.longitude}°E`}(${n.solarNote})`;return[`【合盘】${e.score.level}(${e.score.total}/100)`,`你 ${e.a.pillars.join(" ")} 日主 ${e.a.dayMaster} 日支 ${e.a.dayBranch} ${e.a.strength||""}`,`对方 ${e.b.pillars.join(" ")} 日主 ${e.b.dayMaster} 日支 ${e.b.dayBranch} ${e.b.strength||""}`,`真太阳时:你 ${t(e.a)};对方 ${t(e.b)}`,...e.dimensions.map(o),...e.detail?[`属相:${e.detail.yearRelation.label}——${e.detail.yearRelation.text}`,`日干:${e.detail.stems.text}`,...e.detail.crossBranches&&e.detail.crossBranches.length?[`跨盘地支:${e.detail.crossBranches.map(n=>`${n.name}(${n.a}${n.b})`).join("、")}`]:[],`年命纳音:${e.detail.nayin.a} / ${e.detail.nayin.b}(${e.detail.nayin.label})——${e.detail.nayin.text}`,`吉凶象:吉 ${e.detail.tally.good} / 凶 ${e.detail.tally.bad}(${e.detail.tally.lean};分档只数象,总分以上面三维度为准)`]:[],...Sn(e.triple),...e.notes.map(n=>`※ ${n}`)].join(`
75
+ `)}function Cn(e){const o=e.sanChuan,t=n=>`${n.zhi}(${n.jiang}${n.liuQin}${n.xunKong?"空":""})`;return[`【日时】${e.dayGanZhi}日 ${e.hourZhi}时(${e.dayNight}贵) 月将 ${e.yueJiang.name}${e.yueJiang.zhi} 节气 ${e.jieqi.name} ${e.lateZi===!1?"晚子时不换日":"晚子时换日"}`,`【三传】初 ${t(o.chu)} → 中 ${t(o.zhong)} → 末 ${t(o.mo)}`,`【四课】${e.siKe.map(n=>`${n.position}课 ${n.shang}上${n.xia}下(${n.relation}·${n.jiang})`).join(" ")}`,`【天地盘】${e.pan.map(n=>`${n.di}:${n.tian}(${n.jiang})`).join(" ")}`,`【格局】${e.geJu.name}·${e.geJu.detail}`,...e.shensha&&e.shensha.length?[`【神煞】${e.shensha.map(n=>`${n.name}${n.branch}`).join(" ")}`]:[]].join(`
76
+ `)}function jn(e){const o=[`【起卦】${e.source}`,`【本卦】${e.ben.name}(上${e.ben.upper} 下${e.ben.lower}) 动爻:${e.movingName}`,`【互卦】${e.hu.name} 【变卦】${e.bian.name} 【错卦】${e.cuo.name} 【综卦】${e.zong.name}`,`【体用】体 ${e.bodyUse.body.trigram}${e.bodyUse.body.element} 用 ${e.bodyUse.use.trigram}${e.bodyUse.use.element} ${e.bodyUse.level}`,`    ${e.bodyUse.relation}`],t=e.lines.slice().reverse().map(n=>` ${n.name} ${n.yinYang==="阳"?"━━━━━":"━━ ━━"}${n.moving?" ←动":""}`);return[...o,"【爻】",...t].join(`
77
+ `)}function Dn(e){const o=[e.question?`【所问】${e.question}`:"(未填写提问)",`【牌阵】${e.spread}${e.castAt?` 抽牌于 ${e.castAt}`:""}`];for(const t of e.cards)o.push(` ${t.position}:${t.name}(${t.orientation}) ${t.keywords.join("、")}`);if(e.reading&&e.reading.length){o.push("【解读】");for(const t of e.reading)o.push(` ${t}`)}return o.join(`
78
+ `)}function Gn(e){const o=pe=>{const ze=pe.lines.slice().reverse().map(le=>{const Ee=le.position===pe.shi?"世":le.position===pe.ying?"应":" ";return` ${le.name} ${Ee} ${le.symbol} ${le.ganzhi}${le.element} ${le.liuqin}/${le.liushen}`});return[`${pe.name}(${pe.palace}·${pe.palaceElement})`,...ze].join(`
79
+ `)},t=[`起卦:${e.cast.notation.join("、")}(自下而上)`,`日辰:${e.dayGanZhi.name}`,e.xunShou?`旬首:${e.xunShou} 旬空:${(e.xunKong||[]).join("")||"—"}`:"",e.question?`所问:${e.question}`:"","本卦:",o(e.ben)];e.bian?t.push(`动爻:第 ${e.cast.movingPositions.join("、")} 爻`,"变卦(六亲以变卦自身宫论):",o(e.bian)):t.push("六爻安静,无变卦。");const n=e.body&&Array.isArray(e.body.labels)?e.body.labels:J(e.body);t.push(`卦体:${n.length?n.join(" · "):"无六冲、六合、伏吟、反吟"}`);const s=e.useGod||ne(e,{});if(s&&s.liuqin){const pe=s.found.length?s.found.map($e=>`${$e.position}爻${$e.ganzhi}${$e.element}${$e.kong?"(空)":""}`).join("、"):s.fushen.length?s.fushen.map($e=>`伏 ${$e.position}爻${$e.ganzhi}${$e.element}(${$e.relation||"飞伏关系未知"})`).join("、"):"不上卦";t.push(`用神:${s.byShi?"世爻":s.liuqin}(${s.ask})→ ${pe}${s.side?`(${s.side})`:""}`);const ze=s.byShi?"用神 世爻":`用神 ${s.liuqin}`,le=s.labels.filter($e=>$e!==ze&&!$e.startsWith(ze));le.length&&t.push(`用神联动:${le.join(" · ")}`);const Ee=e.useGodStrength;if(Ee&&Ee.labels.length){const $e=Ee.month&&Ee.month.branch?`月建 ${Ee.month.branch}(${Ee.month.element}) `:"";t.push(`用神旺衰:${$e}${Ee.labels.join(" · ")}`)}const B=e.fushenAccess;B&&Array.isArray(B.labels)&&B.labels.length&&t.push(`伏神出伏:${B.labels.join(" · ")}`)}else t.push("用神:未取(未指明所问之事;用「询问方向」指定后即按六亲取用)");const w=e.hexStrength;if(w&&Array.isArray(w.labels)&&w.labels.length){const pe=w.month&&w.month.branch?`月建 ${w.month.branch}(${w.month.element}) `:"无月建(未给起卦时间) ";t.push(`全卦旺衰:${pe}${w.labels.join(" · ")}`)}const N=e.jinTuiPower;N&&Array.isArray(N.lines)&&N.lines.length&&t.push(`进退力重:${N.lines.map(pe=>`${pe.position}爻${pe.from}→${pe.to}${pe.type}·${pe.verdict}`).join(" · ")}`);const U=e.yingqi;return U&&Array.isArray(U.triggers)&&U.triggers.length&&t.push(`应期线索:${U.tempo} · ${U.triggers.map(pe=>`${pe.labels.join("/")}${pe.branch}`).join(" · ")}(只列地支,不出日期)`),t.filter(Boolean).join(`
80
+ `)}function xn(e){const o=new WeakSet,t=(n,s)=>{switch((n instanceof Number||n instanceof String||n instanceof Boolean)&&(n=n.valueOf()),n&&typeof n=="object"&&typeof n.toJSON=="function"&&(n=n.toJSON(s)),typeof n){case"string":case"boolean":return n;case"number":return Number.isFinite(n)?Object.is(n,-0)?0:n:null;case"bigint":throw new TypeError("Do not know how to serialize a BigInt");case"object":{if(n===null)return null;if(o.has(n))throw new TypeError("Converting circular structure to JSON");o.add(n);let w;if(Array.isArray(n)){w=new Array(n.length);for(let N=0;N<n.length;N++){const U=t(n[N],String(N));w[N]=U===void 0?null:U}}else{w={};for(const N of Object.keys(n)){const U=t(n[N],N);U!==void 0&&(w[N]=U)}}return o.delete(n),w}default:return}};return t(e,"")}const Hn=new Set(["shadow","shadowVersion","diff","trace","traceError","withInterpret","cross","verifyPast","rectify","events","geocode","ask","followup","caliber","seed","asOf","handle","revise"]),on=e=>{if(e==null||e==="")return null;const o=Number(e);return Number.isFinite(o)?Number(o.toFixed(6)):null};function en(e){if(e==null||e==="")return null;try{const o=Le(e);return{y:o.year,m:o.month,d:o.day,h:o.hour,mi:o.minute,precision:o.precision}}catch{return String(e).trim()}}function Fe(e={}){const o={};return e.datetime&&(o.datetime=en(e.datetime)),e.gender&&(o.gender=String(e.gender).toLowerCase()),e.longitude!==void 0?o.longitude=on(e.longitude):e.address&&(o.address=String(e.address).trim()),e.lateZi!==void 0&&(o.lateZi=e.lateZi!==!1),e.trueSolar!==void 0&&(o.trueSolar=e.trueSolar!==!1),e.dst!==void 0&&(o.dst=e.dst!==!1),o}function Pn(e){return e.lateZiHourMode==="next-day"||e.lateZi===!0?"next-day":"same-day"}function Yn(e,o){const t=String(o&&o.system||e.system||""),n=o&&o.input&&typeof o.input=="object"?o.input:null;if(t==="bazi"&&n)return{civil:n.civil,gender:n.gender,longitude:on(n.longitude),lateZi:n.lateZi!==!1,trueSolar:n.trueSolar!==!1,dst:!!(n.dst&&n.dst.applied)};if(t==="ziwei"&&n)return{civil:{year:n.year,month:n.month,day:n.day,hour:n.hour,minute:n.minute},gender:n.gender,longitude:on(n.longitude),leapMonth:n.leapMonth||"split",leapAsNext:n.leapAsNext===!0,schools:n.schools||re,trueSolar:n.trueSolar!==!1,dst:!!(n.dst&&n.dst.applied)};if(t==="qimen")return{datetime:en(e.datetime),juMethod:e.juMethod||"chaibu",lateZiHourMode:Pn(e)};if(t==="hepan"){const w={chart:e.chart==="ziwei"?"ziwei":"bazi",a:Fe({...e,datetime:e.datetime}),b:Fe(e.partner||{})};return e.partner2&&(w.c=Fe(e.partner2)),w}const s={};for(const[w,N]of Object.entries(e))if(!(Hn.has(w)||N===void 0))if(w==="datetime")s.datetime=en(N);else if(w==="partner")s.partner=Fe(N);else if(w==="gender")s.gender=String(N).toLowerCase();else{if(w==="address")continue;typeof N=="number"?s[w]=Number.isFinite(N)?Object.is(N,-0)?0:N:null:typeof N=="string"?s[w]=N.trim():s[w]=N}return t==="daliuren"&&s.lateZi===void 0&&(s.lateZi=!0),t==="tarot"&&s.count===void 0&&(s.count=3),t==="meihua"&&s.mode===void 0&&(s.mode="time"),t==="xiaoliuren"&&s.mode===void 0&&(s.mode="time"),t==="convert"&&s.mode===void 0&&(s.mode="solar2lunar"),t==="fengshui"&&s.action===void 0&&(s.action="natal"),t==="tarot"&&o&&Array.isArray(o.cards)&&o.cards.length&&(s.cards=o.cards.map(w=>`${w.name||""}|${w.upright?"正":"逆"}`)),t==="liuyao"&&o&&o.cast&&Array.isArray(o.cast.lines)&&(s.cast=o.cast.lines.join("")),s}function Xn(e,o){const t=o.seed,n=!(t==null||t==="");return e==="liuyao"&&Array.isArray(o.lines)&&o.lines.length===6?{reproducible:!0}:(e==="tarot"||e==="liuyao")&&!n?{reproducible:!1,reason:"未给 seed:重算会变成另一副牌 / 另一卦"}:e==="bazi"||e==="ziwei"||e==="trend"||e==="fengshui"?{reproducible:!0,asOfPinned:!!o.asOf}:{reproducible:!0}}function Zn(e={},o={}){const t=o.result||null,n=String(t&&t.system||e.system||""),s=String(o.version||typeof globalThis<"u"&&globalThis.__MP_VER||"dev");return{...$n({system:n,params:Yn(e,t),seed:e.seed,asOf:e.asOf?String(e.asOf):null,version:s}),...Xn(n,e),system:n,version:s}}const Qn=new Set(["shadow","trace","traceText","traceError","interpret","summary","classics","suiyunClassic","renyuanClassic","cross","past","rectify","followup","caliber","input","reading","knowledge","outline","sections","answer","plain","tables","glossary","caveats","lead","dimensions","moduleType","technique","disclaimer","ask","followups","knowledgeCount","title","systemLabel","handle","handleError","revision"]);function kn(e){const o={};for(const[t,n]of Object.entries(e||{}))Qn.has(t)||(o[t]=n);return o}function mn(e){return!e||!e.shadow||!e.shadow.baseId?null:{snapshot:!0,shadow:e.shadow,data:kn(e)}}function qn(e,o,t={}){const n=e&&e.shadow,s=o&&o.shadow;if(!n||!s)return{sameId:!1,total:0,reason:"缺少影子盘信息"};if(n.baseId&&s.baseId&&n.baseId!==s.baseId)return{sameId:!1,total:0,fromId:n.id,toId:s.id,fromBaseId:n.baseId,toBaseId:s.baseId,reason:"基础指纹不同,不是同一张盘"};const w=B=>B.snapshot===!0&&B.data&&typeof B.data=="object"?B.data:kn(B),N=ae(w(e),w(o)),U=z(N.filter(B=>fe(B.path))).map(B=>({path:B.path,label:be(B.path),from:Be(B.from),to:Be(B.to)})),pe=new Map;for(const B of N){const $e=Pe(B.path)||"其他";pe.set($e,(pe.get($e)||0)+1)}const ze=[...pe.entries()].map(([B,$e])=>({name:B,count:$e})).sort((B,$e)=>$e.count-B.count||B.name.localeCompare($e.name,"zh-Hans-CN")),le=t.fromVersion||n.version||"",Ee=t.toVersion||s.version||"";return{sameId:!0,versionChanged:le!==Ee,fromVersion:le,toVersion:Ee,total:N.length,summary:Se(N),roots:U,categories:ze,diffs:N}}function En(e={}){let o=_e(e),t;if(typeof o.revise=="string"&&o.revise.trim()){const s=h(o.revise),w={...o};o={...o,...s.patch},t={text:s.text,applied:s.labels.map(N=>{const U=w[N.key]===void 0?null:w[N.key];return{...N,from:U,fromDisplay:c(N.key,U)}}),ignored:s.ignored}}o.partner2===null&&(o={...o},delete o.partner2);const n=xn(Ke(o));if(t&&(n.revision=t),n&&n.system==="bazi"){n.classics=de(n);const s=O(n.classics);s&&(n.summary=`${n.summary}
81
81
  【古籍】
82
82
  ${s}`);const w=f(n);if(w&&(n.suiyunClassic={...w,bookName:L[w.book].name}),n.renyuan){const N=G("smt-renyuan");N&&(n.renyuanClassic={...N,bookName:L[N.book].name})}}if(n&&n.precision&&n.precision.level==="approx"&&n.summary&&(n.summary=`⚠ ${n.precision.note}
83
83
  ${n.summary}`),n&&(n.system==="bazi"||n.system==="ziwei")&&n.input&&n.input.longitude==null&&n.summary&&(n.summary=`⚠ 未提供出生地或经度:按东八区平太阳时排盘,时柱可能与本命盘相差一个时辰;海外出生请先把当地时间换算成东八区标准时。
84
- ${n.summary}`),t.withInterpret&&(n.interpret=b(n,{question:typeof t.question=="string"?t.question:"",direction:typeof t.direction=="string"?t.direction:"general"})),t.cross===!0&&(n.system==="bazi"||n.system==="ziwei")){const w={...Ce(t.datetime),gender:We(t.gender),longitude:typeof t.longitude=="number"?t.longitude:void 0,address:typeof t.address=="string"?t.address:void 0,geo:t.geo&&typeof t.geo=="object"?t.geo:void 0,trueSolar:t.trueSolar!==!1,dst:t.dst!==!1},N=en(t.asOf),U=n.system==="bazi"?A({...w,leapMonth:t.leapMonth,leapAsNext:t.leapAsNext===!0,...Ge(t),asOf:N}):P({...w,lateZi:t.lateZi!==!1,nowYear:N?N.year:void 0});n.cross=he(n.system==="bazi"?n:U,n.system==="ziwei"?n:U),n.interpret&&n.interpret.sections.push(xe(n.cross))}if(Number.isInteger(t.verifyPast)&&t.verifyPast>0&&n.system==="bazi"){const s=Math.min(Math.max(t.verifyPast,1),10),w=Number(n.liunianFrom)-s,N=P({...Ce(t.datetime),gender:We(t.gender),lateZi:t.lateZi!==!1,trueSolar:t.trueSolar!==!1,longitude:typeof t.longitude=="number"?t.longitude:void 0,address:typeof t.address=="string"?t.address:void 0,geo:t.geo&&typeof t.geo=="object"?t.geo:void 0,dst:t.dst!==!1,nowYear:w});n.past={rows:Oe(N,Number(n.liunianFrom)-1),years:s,until:Number(n.liunianFrom)-1}}if(t.rectify===!0&&n.system==="bazi"){const s=Ce(t.datetime);n.rectify=Se({base:{year:s.year,month:s.month,day:s.day,minute:s.minute},gender:We(t.gender),events:Array.isArray(t.events)?t.events:[],hours:Array.isArray(t.rectifyHours)?t.rectifyHours:void 0,lateZi:t.lateZi!==!1,trueSolar:t.trueSolar!==!1,dst:t.dst!==!1,longitude:typeof t.longitude=="number"?t.longitude:void 0,address:typeof t.address=="string"?t.address:void 0,geo:t.geo&&typeof t.geo=="object"?t.geo:void 0})}if(typeof t.ask=="string"&&t.ask.trim()&&(n.followup=I(n,t.ask)),t.trace===!0)try{const s=pn(n,{direction:t.direction,gender:t.gender});s&&(n.trace=s,n.traceText=dn(s,{system:n.system}))}catch(s){n.traceError=String(s&&s.message||s)}if(t.shadow===!0)try{n.shadow=Yn(t,{result:n,version:t.shadowVersion})}catch(s){n.shadow={error:String(s&&s.message||s)}}try{const s=ze(t);s&&(n.handle=s)}catch(s){n.handleError=String(s&&s.message||s)}return n}function Ze(e){if(!e)return"";const t=[`【${e.title||"解析与详解"}】${e.ask&&e.ask.echo?e.ask.echo:""}`];e.answer&&t.push(`▶ ${e.ask&&e.ask.question?"先答所问":"先看结论"}:${e.answer}`),e.plain&&t.push(`▶ 说人话:${e.plain}`),e.lead&&t.push(e.lead),Array.isArray(e.outline)&&e.outline.length&&t.push("一页读懂:"+e.outline.map(o=>`${o.label}·${o.text}`).join(" ")),e.error&&t.push(`⚠ 解析生成失败:${e.error}(上方盘面数据本身可用)`);for(const o of e.dimensions||[]){const n=Array.isArray(o.evidence)&&o.evidence.length?`
85
-  依据:${o.evidence.join(";")}${o.confidence?` 置信度:${o.confidence}`:""}`:"",s=o.plain?`(${o.plain})`:"",w=(o.knowledge||[]).map(N=>`
86
-  规则·${N.gist}〔${N.statusLabel}〕${N.detail} 出处:${N.source}${N.note?` 注:${N.note}`:""}`).join("");t.push(`${o.label}:${s}${o.text}${o.advice?` 建议:${o.advice}`:""}${n}${w}`)}for(const o of e.sections||[])t.push(`${o.label}:${o.text}`);for(const o of e.tables||[])!Array.isArray(o.rows)||!o.rows.length||(t.push(`【${o.title}】`),t.push([o.columns.join(" | "),...o.rows.map(n=>n.join(" | "))].join(`
87
- `)));return Array.isArray(e.followups)&&e.followups.length&&t.push("还可以这样追问:"+e.followups.map(o=>`「${o}」`).join(" ")),Array.isArray(e.glossary)&&e.glossary.length&&t.push("名词解释:"+e.glossary.map(o=>`${o.term}=${o.plain}`).join(" ")),e.disclaimer&&t.push(e.disclaimer),t.join(`
88
- `)}const tn=["cross","verifyPast","withInterpret","question","direction","ask","geocode","rectify","events","shadow","trace"];function Ke(e={},t={}){const o=t.system||e.system,n=t.switches||gn[o]||[];if(!n.length)return{system:o,switches:[],affected:0,total:0};const s={...e};for(const N of tn)delete s[N];const w=n.map(N=>{const U=N.read(s),pe=N.alt(U);let qe=[],le="",ke=null,B=null;try{ke=En({...s,[N.key]:U}),B=En({...s,[N.key]:pe}),qe=ae(ke,B)}catch(Ie){le=Ie&&Ie.message||String(Ie)}const $e=z(qe.filter(Ie=>fe(Ie.path))).map(Ie=>({path:Ie.path,label:be(Ie.path),from:Fe(Ie.from),to:Fe(Ie.to)})),He=new Map;for(const Ie of qe){const C=Ye(Ie.path)||"其他";He.set(C,(He.get(C)||0)+1)}const Be=[...He.entries()].map(([Ie,C])=>({name:Ie,count:C})).sort((Ie,C)=>C.count-Ie.count||Ie.name.localeCompare(C.name,"zh-Hans-CN"));return{key:N.key,title:N.title,short:N.short,current:U,alt:pe,currentLabel:N.label(U),altLabel:N.label(pe),total:qe.length,summary:le?"":we(qe),views:le?[]:An(o,ke,B),roots:$e,categories:Be,error:le}});return{system:o,switches:w,affected:w.filter(N=>!N.error&&N.total>0).length,total:w.reduce((N,U)=>N+U.total,0)}}const Ve=["chaibu","chaoshen","zhirun"],sn=[1,3,5],rn=["same-day","next-day"];function en(e){if(e==null||e==="")return;const t=k(e);if(!t)throw _e("E_ASOF",`无法解析 asOf:「${e}」,请用 2026-10-22T16:00 这种格式`);const{year:o,month:n,day:s}=t;if(!(n>=1&&n<=12)||!(s>=1&&s<=Jn(o,n)))throw _e("E_ASOF",`asOf 指向的日期不存在:${e}`);return t}function Xe(e={}){const t=e.system;if(t==="bazi"){const o=Ce(e.datetime),n=en(e.asOf),s=P({...o,gender:We(e.gender),longitude:typeof e.longitude=="number"?e.longitude:void 0,address:typeof e.address=="string"?e.address:void 0,geo:e.geo&&typeof e.geo=="object"?e.geo:void 0,lateZi:e.lateZi!==!1,trueSolar:e.trueSolar!==!1,dst:e.dst!==!1,nowYear:n?n.year:void 0});return{...s,...n?{asOf:n}:{},precision:o.precision,summary:on(s)}}if(t==="ziwei"){const o=Ce(e.datetime),n=en(e.asOf),s=A({...o,gender:We(e.gender),leapMonth:e.leapMonth,leapAsNext:e.leapAsNext===!0,...Ge(e),longitude:typeof e.longitude=="number"?e.longitude:void 0,address:typeof e.address=="string"?e.address:void 0,geo:e.geo&&typeof e.geo=="object"?e.geo:void 0,trueSolar:e.trueSolar,dst:e.dst!==!1,asOf:n});return{...s,precision:o.precision,summary:mn(s)}}if(t==="tarot"){const o=e.count===void 0||e.count===null||e.count===""?3:Number(e.count);if(!sn.includes(o))throw _e("E_COUNT",`塔罗张数只能是 1 / 3 / 5,收到「${e.count}」`);if(!Ae(e.seed))throw _e("E_INPUT",`seed 必须是数字,收到「${e.seed}」`);const n=en(e.asOf),s=S({count:o,question:e.question,at:e.asOf,random:je(e.seed)});return e.seed!==void 0&&e.seed!==null&&e.seed!==""&&(s.seed=Number(e.seed)),{...s,...n?{asOf:n}:{},summary:Cn(s)}}if(t==="daliuren"){const o=Ce(e.datetime),n=e.lateZi!==!1,s=i({...o,lateZi:n});return s.lateZi=n,{...s,precision:o.precision,summary:Ln(s)}}if(t==="qimen"){const o=Ce(e.datetime);if(e.juMethod!==void 0&&!Ve.includes(e.juMethod))throw _e("E_INPUT",`juMethod 只能是 chaibu / chaoshen / zhirun,收到「${e.juMethod}」`);const n=e.lateZiHourMode!==void 0?e.lateZiHourMode:e.lateZi===!0?"next-day":e.lateZi===!1?"same-day":void 0;if(n!==void 0&&!rn.includes(n))throw _e("E_INPUT",`lateZiHourMode 只能是 same-day / next-day,收到「${n}」`);const s=n==="next-day"?"next-day":"same-day",w=u({...o,lateZiHourMode:s,juMethod:e.juMethod});return w.lateZiHourMode=s,{...w,summary:wn(w)}}if(t==="hepan"){const o=e.partner;if(!o||typeof o!="object")throw _e("E_PARTNER","合盘需要 partner:{ datetime, gender, address? },其中 partner.datetime 是对方的公历出生时间");if(!o.datetime)throw _e("E_PARTNER",'缺少 partner.datetime(对方的公历出生时间),例如 partner: {"datetime":"1992-03-03T10:00","gender":"female"}');const n=e.partner2;if(n!=null){if(typeof n!="object"||Array.isArray(n))throw _e("E_PARTNER","partner2 需要 { datetime, gender, address? };不想看三方就整段省略(null 视同未传)");if(!n.datetime)throw _e("E_PARTNER",'缺少 partner2.datetime(第三方的公历出生时间),例如 partner2: {"datetime":"1988-09-09T08:00","gender":"male"}')}const s=e.chart==="ziwei"?"ziwei":"bazi",w=(le,ke)=>({...Ce(le.datetime),gender:We(le.gender,ke),trueSolar:le.trueSolar,lateZi:le.lateZi,dst:le.dst!==!1,address:typeof le.address=="string"?le.address:void 0,longitude:typeof le.longitude=="number"?le.longitude:void 0,geo:le.geo&&typeof le.geo=="object"?le.geo:void 0}),N=w(e,"你(主方)"),U=w(o,"对方"),pe=(le,ke)=>s==="ziwei"?r({a:le,b:ke}):d({a:le,b:ke}),qe=pe(N,U);if(n){const le=w(n,"第三方");qe.triple=a([{key:"a-b",a:"你",b:"对方",result:qe},{key:"a-c",a:"你",b:"第三方",result:pe(N,le)},{key:"b-c",a:"对方",b:"第三方",result:pe(U,le)}])}return{...qe,summary:Rn(qe)}}if(t==="meihua"){let o;try{o=M({mode:e.mode==="number"?"number":"time",datetime:e.datetime,upper:e.upper,lower:e.lower,changing:e.changing})}catch(n){throw _e("E_INPUT",`梅花起卦参数不完整:${n&&n.message?n.message:n}`)}return{...o,summary:jn(o)}}if(t==="liuyao"){if(!Ae(e.seed))throw _e("E_INPUT",`seed 必须是数字,收到「${e.seed}」`);let o;if(e.lines===void 0||e.lines===null)o=te(je(e.seed));else{if(!Array.isArray(e.lines))throw _e("E_LINES","lines 必须是数组:自下而上 6 个爻值(6 老阴 / 7 少阳 / 8 少阴 / 9 老阳)");if(e.lines.length!==6)throw _e("E_LINES",`六爻需要正好 6 个爻值(自下而上),收到 ${e.lines.length} 个;留空则由引擎随机摇卦`);o=e.lines.map(Number)}let n,s=null;const w=e.datetime?Ce(e.datetime):en(e.asOf);if(w){e.datetime||(s=w);const ke=ee(ue(R(w.year,w.month,w.day)));n={stem:ke.stem,branch:ke.branch,name:ke.name}}let N;try{N=Q({lines:o,question:e.question,dayGanZhi:n})}catch(ke){throw _e("E_LINES",ke&&ke.message?ke.message:ke)}const U=ne(N,{direction:e.direction,gender:e.gender});U.liuqin&&(N.useGod=U);let pe=null;if(w)try{pe=(g({year:w.year,month:w.month,day:w.day,hour:w.hour,minute:w.minute}).monthGanZhi||"")[1]||null}catch{pe=null}const qe=Y(N,{monthBranch:pe,dayBranch:N.dayGanZhi.branch});qe&&(N.hexStrength=qe);const le=m(N,{monthBranch:pe,dayBranch:N.dayGanZhi.branch});if(le&&(N.jinTuiPower=le),U.liuqin){const ke=T(N,U,{monthBranch:pe,dayBranch:N.dayGanZhi.branch});ke&&(N.useGodStrength=ke);const B=v(N,U,{monthBranch:pe,dayBranch:N.dayGanZhi.branch});B&&(N.fushenAccess=B);const $e=$(N,U,{monthBranch:pe});$e&&(N.yingqi=$e)}return e.seed!==void 0&&e.seed!==null&&e.seed!==""&&(N.seed=Number(e.seed)),{...N,...s?{asOf:s}:{},summary:Dn(N)}}if(t==="almanac"){const o=Ce(e.datetime),n=ye({year:o.year,month:o.month,day:o.day});return{...n,summary:zn(n)}}if(t==="zeri"){if(!(e.candidates!==void 0&&e.candidates!==null)&&(typeof e.startDate!="string"||!e.startDate.trim()))throw _e("E_INPUT",'择日需要 startDate(公历 YYYY-MM-DD,起算日);可另给 days(1–60,默认 30)与 shengXiao(当事人属相)。只想比几天,改给 candidates: ["2026-12-01","2026-12-08"]');let n;try{n=Me({task:e.task,startDate:e.startDate,days:e.days,shengXiao:e.shengXiao,candidates:e.candidates})}catch(s){throw _e("E_INPUT",s&&s.message||String(s))}return{...n,summary:cn(n)}}if(t==="chenggu"){const o=Ce(e.datetime),n=/[T\s]\d{1,2}:\d{1,2}/.test(String(e.datetime)),s=Number.isInteger(e.hour)?e.hour:n?o.hour:null;if(s===null||s<0||s>23)throw _e("E_INPUT","称骨必须给时辰:datetime 带时分(如 1990-08-15T10:00),或额外给 hour(0–23)——缺时辰四柱不齐");const w=E({year:o.year,month:o.month,day:o.day,hour:s,minute:n?o.minute:0});return{...w,summary:yn(w)}}if(t==="convert"){const o=e.mode==="lunar2solar"?"lunar2solar":"solar2lunar";let n;if(o==="lunar2solar"){if(e.lunarYear==null||e.lunarMonth==null||e.lunarDay==null)throw _e("E_INPUT","农历转公历需要 lunarYear / lunarMonth / lunarDay(闰月另加 isLeapMonth: true)");n=D({mode:o,lunarYear:Number(e.lunarYear),lunarMonth:Number(e.lunarMonth),lunarDay:Number(e.lunarDay),isLeapMonth:e.isLeapMonth===!0})}else{const s=Ce(e.datetime);n=D({mode:o,year:s.year,month:s.month,day:s.day})}return{...n,summary:Vn(n)}}if(t==="xiaoliuren"){const o=e.datetime?Ce(e.datetime):null,n=ie({mode:e.mode==="number"?"number":"time",date:typeof e.date=="string"&&e.date.trim()?e.date:o?`${o.year}-${o.month}-${o.day}`:void 0,hour:Number.isInteger(e.hour)?e.hour:o&&/[T\s]\d{1,2}:\d{1,2}/.test(String(e.datetime))?o.hour:void 0,num1:e.num1,num2:e.num2,num3:e.num3,question:e.question});return{...n,summary:ln(n)}}if(t==="star"){const o=Ce(e.datetime),n=ce({year:o.year,month:o.month,day:o.day});return{...n,summary:Qn(n)}}if(t==="numerology"){const o=Ce(e.datetime),n=ge({year:o.year,month:o.month,day:o.day});return{...n,summary:et(n)}}if(t==="mbti"){if(e.answers===void 0||e.answers===null){const n=Z();return{...n,summary:un(n)}}const o=oe({answers:e.answers});return{...o,summary:Zn(o)}}if(t==="trend"){const o=Ce(e.datetime),n=Mn({...o,gender:We(e.gender),toAge:e.toAge,lateZi:e.lateZi!==!1,trueSolar:e.trueSolar!==!1,dst:e.dst!==!1,longitude:typeof e.longitude=="number"?e.longitude:void 0,address:typeof e.address=="string"?e.address:void 0,geo:e.geo&&typeof e.geo=="object"?e.geo:void 0});return{...n,precision:o.precision,summary:nt(n)}}if(t==="fengshui"){const o=e.action==="advise"?"advise":e.action==="xuankong"?"xuankong":"natal";if(o==="xuankong"){const w=hn({action:o,sitting:e.sitting,facing:e.facing,...e.period!==void 0?{period:e.period}:{},...Number.isInteger(e.fortuneYear)?{fortuneYear:e.fortuneYear}:{},...typeof e.sittingOffset=="number"?{sittingOffset:e.sittingOffset}:{},...typeof e.sittingDegree=="number"?{sittingDegree:e.sittingDegree}:{},...typeof e.facingOffset=="number"?{facingOffset:e.facingOffset}:{},...typeof e.facingDegree=="number"?{facingDegree:e.facingDegree}:{},...typeof e.fortuneDate=="string"?{fortuneDate:e.fortuneDate}:{},...typeof e.fortuneTime=="string"?{fortuneTime:e.fortuneTime}:{},dst:e.dst!==!1});return{...w,summary:Nn(w)}}if(o==="advise"){const w=hn({action:o,sitting:e.sitting,facing:e.facing,...e.datetime?Ce(e.datetime):{},...e.gender==="male"||e.gender==="female"?{gender:e.gender}:{},dst:e.dst!==!1});return{...w,summary:Nn(w)}}const n=Ce(e.datetime),s=hn({action:"natal",year:n.year,month:n.month,day:n.day,gender:We(e.gender),fortuneYear:Number.isInteger(e.fortuneYear)?e.fortuneYear:void 0,dst:e.dst!==!1});return{...s,summary:Nn(s)}}if(t==="name"){const o=e.action==="generate"?"generate":"assess",n=e.datetime?Ce(e.datetime):Number.isInteger(e.year)&&Number.isInteger(e.month)&&Number.isInteger(e.day)?{year:e.year,month:e.month,day:e.day,...Number.isInteger(e.hour)?{hour:e.hour}:{},...Number.isInteger(e.minute)?{minute:e.minute}:{}}:{},s=vn({action:o,surname:e.surname,givenName:e.givenName,limit:e.limit,charElements:e.charElements&&typeof e.charElements=="object"?e.charElements:void 0,strokeOverrides:e.strokeOverrides&&typeof e.strokeOverrides=="object"?e.strokeOverrides:void 0,surnameStrokes:e.surnameStrokes&&typeof e.surnameStrokes=="object"?e.surnameStrokes:void 0,...n,...e.gender==="male"||e.gender==="female"?{gender:e.gender}:{},...e.datetime?{lateZi:e.lateZi!==!1,trueSolar:e.trueSolar!==!1,dst:e.dst!==!1,longitude:typeof e.longitude=="number"?e.longitude:void 0,address:typeof e.address=="string"?e.address:void 0,geo:e.geo&&typeof e.geo=="object"?e.geo:void 0}:{}});return{...s,summary:Un(s)}}throw t?_e("E_SYSTEM",`未知体系「${t}」,可选:bazi(四柱八字)、ziwei(紫微斗数)、liuyao(六爻)、meihua(梅花易数)、daliuren(大六壬)、qimen(奇门遁甲)、hepan(合盘)、tarot(塔罗)、almanac(黄历)、zeri(择日)、chenggu(称骨)、xiaoliuren(小六壬)、star(星座)、numerology(生命数字)、mbti(十六型人格问卷)、trend(人生 K 线)、fengshui(风水)、name(起名)、convert(公农历互转)。`):_e("E_INPUT","缺少 system,可选:bazi(四柱八字)、ziwei(紫微斗数)、liuyao(六爻)、meihua(梅花易数)、daliuren(大六壬)、qimen(奇门遁甲)、hepan(合盘)、tarot(塔罗)、almanac(黄历)、zeri(择日)、chenggu(称骨)、xiaoliuren(小六壬)、star(星座)、numerology(生命数字)、mbti(十六型人格问卷)、trend(人生 K 线)、fengshui(风水)、name(起名)、convert(公农历互转)。")}function zn(e){const t=e.ganzhi,o=e.jieQi&&e.jieQi.next?` 下一节:${e.jieQi.next.name} ${e.jieQi.next.date}`:"",n=e.dayGod?`值日:${e.dayGod.name}(${e.dayGod.type}·${e.dayGod.luck})`:"",s=e.xiu?`二十八宿:${e.xiu.name}宿(${e.xiu.luck}·${e.xiu.zheng}·${e.xiu.animal})`:"",w=e.taiShen?`胎神:${e.taiShen}`:"",N=e.positions?`吉神方位:喜神${e.positions.xiShen||"—"} 财神${e.positions.caiShen||"—"} 福神${e.positions.fuShen?e.positions.fuShen.dir:"—"} 阳贵${e.positions.yangGui?e.positions.yangGui.dir:"—"} 阴贵${e.positions.yinGui?e.positions.yinGui.dir:"—"}`:"",U=e.lucky?`吉配生肖:六合${e.lucky.liuhe||"—"} 三合${(e.lucky.sanhe||[]).join("、")||"—"}`:"",pe=e.nayin&&e.nayin.day?`日柱纳音:${e.nayin.day.name}`:"",qe=(e.hours||[]).map(le=>`${le.zhi}${le.ganZhi.slice(0,1)}·${le.shen}${le.luck==="吉"?"吉":"凶"}`).join(" ");return[`【黄历】${e.meta.date} ${e.meta.weekday} ${e.lunar.text}`,`干支:${t.year}年 ${t.month}月 ${t.day}日 属${t.shengXiao}`,...e.meta.boundaryNote?[` ${e.meta.boundaryNote}`]:[],`建除:${e.zhiXing}日 冲:${e.chong.text}${e.chong.sha?`(${e.chong.sha})`:""} ${n}`,[s,pe,w].filter(Boolean).join(" "),`宜:${e.yi.join("、")}`,`忌:${e.ji.join("、")}`,N,U,qe?`时辰吉凶:${qe}`:"",`节气:上一节 ${e.jieQi.prev?`${e.jieQi.prev.name} ${e.jieQi.prev.date}`:"—"}${o}`,e.dailyHexagram?`每日一卦:${e.dailyHexagram.name} ${e.dailyHexagram.meaning||""}`:"",`口径:${e.meta.scope}`].filter(Boolean).join(`
89
- `)}function cn(e){const t=e.compare&&e.compare.mode==="candidates",o=t?`【择日·${e.meta.task}】候选 ${e.meta.days} 天:${e.meta.candidates.join("、")}${e.meta.shengXiao?` 当事人属${e.meta.shengXiao}`:"(未给属相,未做冲煞排除)"}`:`【择日·${e.meta.task}】${e.meta.startDate} 起 ${e.meta.days} 天${e.meta.shengXiao?` 当事人属${e.meta.shengXiao}`:"(未给属相,未做冲煞排除)"}`,n=e.days.slice().sort((w,N)=>N.score-w.score).slice(0,t?12:5).map(w=>`· ${w.date} ${w.weekday} ${w.verdict}(${w.score}分) 宜${w.yi.slice(0,3).join("/")} ${w.reasons.join(";")||"无特别加减分"}`),s=t?e.compare.best?`这一组里最优:${e.compare.best.date}(${e.compare.best.score}分,${e.compare.best.verdict})`+(e.compare.best.ties.length>1?`;同分:${e.compare.best.ties.filter(w=>w!==e.compare.best.date).join("、")}`:""):"这一组都因冲属相被排除,没有可用的日子":`推荐日:${e.best.length?e.best.join("、"):"本期无(都不够推荐分)"}`;return[o,s,`推荐日:${e.best.length?e.best.join("、"):"无"}`,`可用日:${e.usable.length?e.usable.join("、"):"无"}`,`回避日:${e.avoid.length?e.avoid.slice(0,6).join("、"):"无"}`,t?"候选日逐日:":"逐日排序:",...n,...t?[`比较口径:${e.compare.note}`]:[],`口径:${e.meta.scope}`].join(`
90
- `)}function yn(e){const t=e.song||{};return[`【称骨】${e.input.solar} ${e.lunar.text}`,`四项:${e.weights.year.label} ${e.weights.month.label} ${e.weights.day.label} ${e.weights.hour.label}`,`合计:${e.total.label}(${e.verdict.band})`,`歌诀(${e.total.label}):${t.text||"—"}`,`释义:${t.plain||"—"}`,`分档白话:${e.verdict.text}`,"口径:骨重与歌诀为通行本口径(各版本歌诀有异文),释义为白话自撰,属民俗娱乐参考。"].join(`
91
- `)}function ln(e){return[`【小六壬·${e.meta.mode}】${e.meta.question?`所问:${e.meta.question}`:""}`,e.meta.originText,`落宫:${e.steps.join(" → ")}`,`断语:${e.result.palace}(${e.result.luck}) ${e.result.text}`].join(`
92
- `)}function Qn(e){return[`【星座】${e.meta.date} ${e.sign.name}(${e.sign.element}·守护星${e.sign.planet})`,`区间:${e.sign.range} 关键词:${e.sign.keywords} 契合:${e.sign.compatible}`,`当日基调:${e.daily.tone}`,e.daily.dims.map(t=>`· ${t.name}:${"★".repeat(t.stars)}${"☆".repeat(5-t.stars)} ${t.text}`).join(`
84
+ ${n.summary}`),o.withInterpret&&(n.interpret=b(n,{question:typeof o.question=="string"?o.question:"",direction:typeof o.direction=="string"?o.direction:"general"})),o.cross===!0&&(n.system==="bazi"||n.system==="ziwei")){const w={...Le(o.datetime),gender:Je(o.gender),longitude:typeof o.longitude=="number"?o.longitude:void 0,address:typeof o.address=="string"?o.address:void 0,geo:o.geo&&typeof o.geo=="object"?o.geo:void 0,trueSolar:o.trueSolar!==!1,dst:o.dst!==!1},N=Ve(o.asOf),U=n.system==="bazi"?A({...w,leapMonth:o.leapMonth,leapAsNext:o.leapAsNext===!0,...Ce(o),asOf:N}):P({...w,lateZi:o.lateZi!==!1,nowYear:N?N.year:void 0});n.cross=he(n.system==="bazi"?n:U,n.system==="ziwei"?n:U),n.interpret&&n.interpret.sections.push(qe(n.cross))}if(Number.isInteger(o.verifyPast)&&o.verifyPast>0&&n.system==="bazi"){const s=Math.min(Math.max(o.verifyPast,1),10),w=Number(n.liunianFrom)-s,N=P({...Le(o.datetime),gender:Je(o.gender),lateZi:o.lateZi!==!1,trueSolar:o.trueSolar!==!1,longitude:typeof o.longitude=="number"?o.longitude:void 0,address:typeof o.address=="string"?o.address:void 0,geo:o.geo&&typeof o.geo=="object"?o.geo:void 0,dst:o.dst!==!1,nowYear:w});n.past={rows:Te(N,Number(n.liunianFrom)-1),years:s,until:Number(n.liunianFrom)-1}}if(o.rectify===!0&&n.system==="bazi"){const s=Le(o.datetime);n.rectify=xe({base:{year:s.year,month:s.month,day:s.day,minute:s.minute},gender:Je(o.gender),events:Array.isArray(o.events)?o.events:[],hours:Array.isArray(o.rectifyHours)?o.rectifyHours:void 0,lateZi:o.lateZi!==!1,trueSolar:o.trueSolar!==!1,dst:o.dst!==!1,longitude:typeof o.longitude=="number"?o.longitude:void 0,address:typeof o.address=="string"?o.address:void 0,geo:o.geo&&typeof o.geo=="object"?o.geo:void 0})}if(typeof o.ask=="string"&&o.ask.trim()&&(n.followup=I(n,o.ask)),o.trace===!0)try{const s=pn(n,{direction:o.direction,gender:o.gender});s&&(n.trace=s,n.traceText=hn(s,{system:n.system}))}catch(s){n.traceError=String(s&&s.message||s)}if(o.shadow===!0)try{n.shadow=Zn(o,{result:n,version:o.shadowVersion})}catch(s){n.shadow={error:String(s&&s.message||s)}}try{const s=Ne(o);s&&(n.handle=s)}catch(s){n.handleError=String(s&&s.message||s)}return n}function Ye(e){if(!e)return"";const o=[`【${e.title||"解析与详解"}】${e.ask&&e.ask.echo?e.ask.echo:""}`];e.answer&&o.push(`▶ ${e.ask&&e.ask.question?"先答所问":"先看结论"}:${e.answer}`),e.plain&&o.push(`▶ 说人话:${e.plain}`),e.lead&&o.push(e.lead),Array.isArray(e.outline)&&e.outline.length&&o.push("一页读懂:"+e.outline.map(t=>`${t.label}·${t.text}`).join(" ")),e.error&&o.push(`⚠ 解析生成失败:${e.error}(上方盘面数据本身可用)`);for(const t of e.dimensions||[]){const n=Array.isArray(t.evidence)&&t.evidence.length?`
85
+  依据:${t.evidence.join(";")}${t.confidence?` 置信度:${t.confidence}`:""}`:"",s=t.plain?`(${t.plain})`:"",w=(t.knowledge||[]).map(N=>`
86
+  规则·${N.gist}〔${N.statusLabel}〕${N.detail} 出处:${N.source}${N.note?` 注:${N.note}`:""}`).join("");o.push(`${t.label}:${s}${t.text}${t.advice?` 建议:${t.advice}`:""}${n}${w}`)}for(const t of e.sections||[])o.push(`${t.label}:${t.text}`);for(const t of e.tables||[])!Array.isArray(t.rows)||!t.rows.length||(o.push(`【${t.title}】`),o.push([t.columns.join(" | "),...t.rows.map(n=>n.join(" | "))].join(`
87
+ `)));return Array.isArray(e.followups)&&e.followups.length&&o.push("还可以这样追问:"+e.followups.map(t=>`「${t}」`).join(" ")),Array.isArray(e.glossary)&&e.glossary.length&&o.push("名词解释:"+e.glossary.map(t=>`${t.term}=${t.plain}`).join(" ")),Array.isArray(e.limits)&&e.limits.length&&o.push("【本插件不回答什么】"+e.limits.map(t=>`${t.title}——${t.text}`).join(`
88
+ `)),e.disclaimer&&o.push(e.disclaimer),o.join(`
89
+ `)}const nn=["cross","verifyPast","withInterpret","question","direction","ask","geocode","rectify","events","shadow","trace"];function We(e={},o={}){const t=o.system||e.system,n=o.switches||gn[t]||[];if(!n.length)return{system:t,switches:[],affected:0,total:0};const s={...e};for(const N of nn)delete s[N];const w=n.map(N=>{const U=N.read(s),pe=N.alt(U);let ze=[],le="",Ee=null,B=null;try{Ee=En({...s,[N.key]:U}),B=En({...s,[N.key]:pe}),ze=ae(Ee,B)}catch(X){le=X&&X.message||String(X)}const $e=z(ze.filter(X=>fe(X.path))).map(X=>({path:X.path,label:be(X.path),from:Be(X.from),to:Be(X.to)})),De=new Map;for(const X of ze){const we=Pe(X.path)||"其他";De.set(we,(De.get(we)||0)+1)}const C=[...De.entries()].map(([X,we])=>({name:X,count:we})).sort((X,we)=>we.count-X.count||X.name.localeCompare(we.name,"zh-Hans-CN"));return{key:N.key,title:N.title,short:N.short,current:U,alt:pe,currentLabel:N.label(U),altLabel:N.label(pe),total:ze.length,summary:le?"":Se(ze),views:le?[]:Mn(t,Ee,B),roots:$e,categories:C,error:le}});return{system:t,switches:w,affected:w.filter(N=>!N.error&&N.total>0).length,total:w.reduce((N,U)=>N+U.total,0)}}const Qe=["chaibu","chaoshen","zhirun"],an=[1,3,5],sn=["same-day","next-day"];function Ve(e){if(e==null||e==="")return;const o=k(e);if(!o)throw Ie("E_ASOF",`无法解析 asOf:「${e}」,请用 2026-10-22T16:00 这种格式`);const{year:t,month:n,day:s}=o;if(!(n>=1&&n<=12)||!(s>=1&&s<=Wn(t,n)))throw Ie("E_ASOF",`asOf 指向的日期不存在:${e}`);return o}function Ke(e={}){const o=e.system;if(o==="bazi"){const t=Le(e.datetime),n=Ve(e.asOf),s=P({...t,gender:Je(e.gender),longitude:typeof e.longitude=="number"?e.longitude:void 0,address:typeof e.address=="string"?e.address:void 0,geo:e.geo&&typeof e.geo=="object"?e.geo:void 0,lateZi:e.lateZi!==!1,trueSolar:e.trueSolar!==!1,dst:e.dst!==!1,nowYear:n?n.year:void 0});return{...s,...n?{asOf:n}:{},precision:t.precision,summary:tn(s)}}if(o==="ziwei"){const t=Le(e.datetime),n=Ve(e.asOf),s=A({...t,gender:Je(e.gender),leapMonth:e.leapMonth,leapAsNext:e.leapAsNext===!0,...Ce(e),longitude:typeof e.longitude=="number"?e.longitude:void 0,address:typeof e.address=="string"?e.address:void 0,geo:e.geo&&typeof e.geo=="object"?e.geo:void 0,trueSolar:e.trueSolar,dst:e.dst!==!1,asOf:n});return{...s,precision:t.precision,summary:dn(s)}}if(o==="tarot"){const t=e.count===void 0||e.count===null||e.count===""?3:Number(e.count);if(!an.includes(t))throw Ie("E_COUNT",`塔罗张数只能是 1 / 3 / 5,收到「${e.count}」`);if(!Me(e.seed))throw Ie("E_INPUT",`seed 必须是数字,收到「${e.seed}」`);const n=Ve(e.asOf),s=S({count:t,question:e.question,at:e.asOf,random:ke(e.seed)});return e.seed!==void 0&&e.seed!==null&&e.seed!==""&&(s.seed=Number(e.seed)),{...s,...n?{asOf:n}:{},summary:Dn(s)}}if(o==="daliuren"){const t=Le(e.datetime),n=e.lateZi!==!1,s=i({...t,lateZi:n});return s.lateZi=n,{...s,precision:t.precision,summary:Cn(s)}}if(o==="qimen"){const t=Le(e.datetime);if(e.juMethod!==void 0&&!Qe.includes(e.juMethod))throw Ie("E_INPUT",`juMethod 只能是 chaibu / chaoshen / zhirun,收到「${e.juMethod}」`);const n=e.lateZiHourMode!==void 0?e.lateZiHourMode:e.lateZi===!0?"next-day":e.lateZi===!1?"same-day":void 0;if(n!==void 0&&!sn.includes(n))throw Ie("E_INPUT",`lateZiHourMode 只能是 same-day / next-day,收到「${n}」`);const s=n==="next-day"?"next-day":"same-day",w=u({...t,lateZiHourMode:s,juMethod:e.juMethod});return w.lateZiHourMode=s,{...w,summary:wn(w)}}if(o==="hepan"){const t=e.partner;if(!t||typeof t!="object")throw Ie("E_PARTNER","合盘需要 partner:{ datetime, gender, address? },其中 partner.datetime 是对方的公历出生时间");if(!t.datetime)throw Ie("E_PARTNER",'缺少 partner.datetime(对方的公历出生时间),例如 partner: {"datetime":"1992-03-03T10:00","gender":"female"}');const n=e.partner2;if(n!=null){if(typeof n!="object"||Array.isArray(n))throw Ie("E_PARTNER","partner2 需要 { datetime, gender, address? };不想看三方就整段省略(null 视同未传)");if(!n.datetime)throw Ie("E_PARTNER",'缺少 partner2.datetime(第三方的公历出生时间),例如 partner2: {"datetime":"1988-09-09T08:00","gender":"male"}')}const s=e.chart==="ziwei"?"ziwei":"bazi",w=(le,Ee)=>({...Le(le.datetime),gender:Je(le.gender,Ee),trueSolar:le.trueSolar,lateZi:le.lateZi,dst:le.dst!==!1,address:typeof le.address=="string"?le.address:void 0,longitude:typeof le.longitude=="number"?le.longitude:void 0,geo:le.geo&&typeof le.geo=="object"?le.geo:void 0}),N=w(e,"你(主方)"),U=w(t,"对方"),pe=(le,Ee)=>s==="ziwei"?r({a:le,b:Ee}):d({a:le,b:Ee}),ze=pe(N,U);if(n){const le=w(n,"第三方");ze.triple=a([{key:"a-b",a:"你",b:"对方",result:ze},{key:"a-c",a:"你",b:"第三方",result:pe(N,le)},{key:"b-c",a:"对方",b:"第三方",result:pe(U,le)}])}return{...ze,summary:Ln(ze)}}if(o==="meihua"){let t;try{t=M({mode:e.mode==="number"?"number":"time",datetime:e.datetime,upper:e.upper,lower:e.lower,changing:e.changing})}catch(n){throw Ie("E_INPUT",`梅花起卦参数不完整:${n&&n.message?n.message:n}`)}return{...t,summary:jn(t)}}if(o==="liuyao"){if(!Me(e.seed))throw Ie("E_INPUT",`seed 必须是数字,收到「${e.seed}」`);let t;if(e.lines===void 0||e.lines===null)t=te(ke(e.seed));else{if(!Array.isArray(e.lines))throw Ie("E_LINES","lines 必须是数组:自下而上 6 个爻值(6 老阴 / 7 少阳 / 8 少阴 / 9 老阳)");if(e.lines.length!==6)throw Ie("E_LINES",`六爻需要正好 6 个爻值(自下而上),收到 ${e.lines.length} 个;留空则由引擎随机摇卦`);t=e.lines.map(Number)}let n,s=null;const w=e.datetime?Le(e.datetime):Ve(e.asOf);if(w){e.datetime||(s=w);const Ee=ee(ue(R(w.year,w.month,w.day)));n={stem:Ee.stem,branch:Ee.branch,name:Ee.name}}let N;try{N=Q({lines:t,question:e.question,dayGanZhi:n})}catch(Ee){throw Ie("E_LINES",Ee&&Ee.message?Ee.message:Ee)}const U=ne(N,{direction:e.direction,gender:e.gender});U.liuqin&&(N.useGod=U);let pe=null;if(w)try{pe=(g({year:w.year,month:w.month,day:w.day,hour:w.hour,minute:w.minute}).monthGanZhi||"")[1]||null}catch{pe=null}const ze=Y(N,{monthBranch:pe,dayBranch:N.dayGanZhi.branch});ze&&(N.hexStrength=ze);const le=m(N,{monthBranch:pe,dayBranch:N.dayGanZhi.branch});if(le&&(N.jinTuiPower=le),U.liuqin){const Ee=T(N,U,{monthBranch:pe,dayBranch:N.dayGanZhi.branch});Ee&&(N.useGodStrength=Ee);const B=v(N,U,{monthBranch:pe,dayBranch:N.dayGanZhi.branch});B&&(N.fushenAccess=B);const $e=$(N,U,{monthBranch:pe});$e&&(N.yingqi=$e)}return e.seed!==void 0&&e.seed!==null&&e.seed!==""&&(N.seed=Number(e.seed)),{...N,...s?{asOf:s}:{},summary:Gn(N)}}if(o==="almanac"){const t=Le(e.datetime),n=ye({year:t.year,month:t.month,day:t.day});return{...n,summary:zn(n)}}if(o==="zeri"){if(!(e.candidates!==void 0&&e.candidates!==null)&&(typeof e.startDate!="string"||!e.startDate.trim()))throw Ie("E_INPUT",'择日需要 startDate(公历 YYYY-MM-DD,起算日);可另给 days(1–60,默认 30)与 shengXiao(当事人属相)。只想比几天,改给 candidates: ["2026-12-01","2026-12-08"]');let n;try{n=ve({task:e.task,startDate:e.startDate,days:e.days,shengXiao:e.shengXiao,candidates:e.candidates})}catch(s){throw Ie("E_INPUT",s&&s.message||String(s))}return{...n,summary:rn(n)}}if(o==="chenggu"){const t=Le(e.datetime),n=/[T\s]\d{1,2}:\d{1,2}/.test(String(e.datetime)),s=Number.isInteger(e.hour)?e.hour:n?t.hour:null;if(s===null||s<0||s>23)throw Ie("E_INPUT","称骨必须给时辰:datetime 带时分(如 1990-08-15T10:00),或额外给 hour(0–23)——缺时辰四柱不齐");const w=E({year:t.year,month:t.month,day:t.day,hour:s,minute:n?t.minute:0});return{...w,summary:fn(w)}}if(o==="convert"){const t=e.mode==="lunar2solar"?"lunar2solar":"solar2lunar";let n;if(t==="lunar2solar"){if(e.lunarYear==null||e.lunarMonth==null||e.lunarDay==null)throw Ie("E_INPUT","农历转公历需要 lunarYear / lunarMonth / lunarDay(闰月另加 isLeapMonth: true)");n=D({mode:t,lunarYear:Number(e.lunarYear),lunarMonth:Number(e.lunarMonth),lunarDay:Number(e.lunarDay),isLeapMonth:e.isLeapMonth===!0})}else{const s=Le(e.datetime);n=D({mode:t,year:s.year,month:s.month,day:s.day})}return{...n,summary:et(n)}}if(o==="xiaoliuren"){const t=e.datetime?Le(e.datetime):null,n=ie({mode:e.mode==="number"?"number":"time",date:typeof e.date=="string"&&e.date.trim()?e.date:t?`${t.year}-${t.month}-${t.day}`:void 0,hour:Number.isInteger(e.hour)?e.hour:t&&/[T\s]\d{1,2}:\d{1,2}/.test(String(e.datetime))?t.hour:void 0,num1:e.num1,num2:e.num2,num3:e.num3,question:e.question});return{...n,summary:cn(n)}}if(o==="star"){const t=Le(e.datetime),n=ce({year:t.year,month:t.month,day:t.day});return{...n,summary:Vn(n)}}if(o==="numerology"){const t=Le(e.datetime),n=ge({year:t.year,month:t.month,day:t.day});return{...n,summary:nt(n)}}if(o==="mbti"){if(e.answers===void 0||e.answers===null){const n=Z();return{...n,summary:ln(n)}}const t=oe({answers:e.answers});return{...t,summary:Un(t)}}if(o==="trend"){const t=Le(e.datetime),n=vn({...t,gender:Je(e.gender),toAge:e.toAge,lateZi:e.lateZi!==!1,trueSolar:e.trueSolar!==!1,dst:e.dst!==!1,longitude:typeof e.longitude=="number"?e.longitude:void 0,address:typeof e.address=="string"?e.address:void 0,geo:e.geo&&typeof e.geo=="object"?e.geo:void 0});return{...n,precision:t.precision,summary:tt(n)}}if(o==="fengshui"){const t=e.action==="advise"?"advise":e.action==="xuankong"?"xuankong":"natal";if(t==="xuankong"){const w=un({action:t,sitting:e.sitting,facing:e.facing,...e.period!==void 0?{period:e.period}:{},...Number.isInteger(e.fortuneYear)?{fortuneYear:e.fortuneYear}:{},...typeof e.sittingOffset=="number"?{sittingOffset:e.sittingOffset}:{},...typeof e.sittingDegree=="number"?{sittingDegree:e.sittingDegree}:{},...typeof e.facingOffset=="number"?{facingOffset:e.facingOffset}:{},...typeof e.facingDegree=="number"?{facingDegree:e.facingDegree}:{},...typeof e.fortuneDate=="string"?{fortuneDate:e.fortuneDate}:{},...typeof e.fortuneTime=="string"?{fortuneTime:e.fortuneTime}:{},dst:e.dst!==!1});return{...w,summary:Nn(w)}}if(t==="advise"){const w=un({action:t,sitting:e.sitting,facing:e.facing,...e.datetime?Le(e.datetime):{},...e.gender==="male"||e.gender==="female"?{gender:e.gender}:{},dst:e.dst!==!1});return{...w,summary:Nn(w)}}const n=Le(e.datetime),s=un({action:"natal",year:n.year,month:n.month,day:n.day,gender:Je(e.gender),fortuneYear:Number.isInteger(e.fortuneYear)?e.fortuneYear:void 0,dst:e.dst!==!1});return{...s,summary:Nn(s)}}if(o==="name"){const t=e.action==="generate"?"generate":"assess",n=e.datetime?Le(e.datetime):Number.isInteger(e.year)&&Number.isInteger(e.month)&&Number.isInteger(e.day)?{year:e.year,month:e.month,day:e.day,...Number.isInteger(e.hour)?{hour:e.hour}:{},...Number.isInteger(e.minute)?{minute:e.minute}:{}}:{},s=On({action:t,surname:e.surname,givenName:e.givenName,limit:e.limit,charElements:e.charElements&&typeof e.charElements=="object"?e.charElements:void 0,strokeOverrides:e.strokeOverrides&&typeof e.strokeOverrides=="object"?e.strokeOverrides:void 0,surnameStrokes:e.surnameStrokes&&typeof e.surnameStrokes=="object"?e.surnameStrokes:void 0,...n,...e.gender==="male"||e.gender==="female"?{gender:e.gender}:{},...e.datetime?{lateZi:e.lateZi!==!1,trueSolar:e.trueSolar!==!1,dst:e.dst!==!1,longitude:typeof e.longitude=="number"?e.longitude:void 0,address:typeof e.address=="string"?e.address:void 0,geo:e.geo&&typeof e.geo=="object"?e.geo:void 0}:{}});return{...s,summary:Bn(s)}}throw o?Ie("E_SYSTEM",`未知体系「${o}」,可选:bazi(四柱八字)、ziwei(紫微斗数)、liuyao(六爻)、meihua(梅花易数)、daliuren(大六壬)、qimen(奇门遁甲)、hepan(合盘)、tarot(塔罗)、almanac(黄历)、zeri(择日)、chenggu(称骨)、xiaoliuren(小六壬)、star(星座)、numerology(生命数字)、mbti(十六型人格问卷)、trend(人生 K 线)、fengshui(风水)、name(起名)、convert(公农历互转)。`):Ie("E_INPUT","缺少 system,可选:bazi(四柱八字)、ziwei(紫微斗数)、liuyao(六爻)、meihua(梅花易数)、daliuren(大六壬)、qimen(奇门遁甲)、hepan(合盘)、tarot(塔罗)、almanac(黄历)、zeri(择日)、chenggu(称骨)、xiaoliuren(小六壬)、star(星座)、numerology(生命数字)、mbti(十六型人格问卷)、trend(人生 K 线)、fengshui(风水)、name(起名)、convert(公农历互转)。")}function zn(e){const o=e.ganzhi,t=e.jieQi&&e.jieQi.next?` 下一节:${e.jieQi.next.name} ${e.jieQi.next.date}`:"",n=e.dayGod?`值日:${e.dayGod.name}(${e.dayGod.type}·${e.dayGod.luck})`:"",s=e.xiu?`二十八宿:${e.xiu.name}宿(${e.xiu.luck}·${e.xiu.zheng}·${e.xiu.animal})`:"",w=e.taiShen?`胎神:${e.taiShen}`:"",N=e.positions?`吉神方位:喜神${e.positions.xiShen||"—"} 财神${e.positions.caiShen||"—"} 福神${e.positions.fuShen?e.positions.fuShen.dir:"—"} 阳贵${e.positions.yangGui?e.positions.yangGui.dir:"—"} 阴贵${e.positions.yinGui?e.positions.yinGui.dir:"—"}`:"",U=e.lucky?`吉配生肖:六合${e.lucky.liuhe||"—"} 三合${(e.lucky.sanhe||[]).join("、")||"—"}`:"",pe=e.nayin&&e.nayin.day?`日柱纳音:${e.nayin.day.name}`:"",ze=(e.hours||[]).map(le=>`${le.zhi}${le.ganZhi.slice(0,1)}·${le.shen}${le.luck==="吉"?"吉":"凶"}`).join(" ");return[`【黄历】${e.meta.date} ${e.meta.weekday} ${e.lunar.text}`,`干支:${o.year}年 ${o.month}月 ${o.day}日 属${o.shengXiao}`,...e.meta.boundaryNote?[` ${e.meta.boundaryNote}`]:[],`建除:${e.zhiXing}日 冲:${e.chong.text}${e.chong.sha?`(${e.chong.sha})`:""} ${n}`,[s,pe,w].filter(Boolean).join(" "),`宜:${e.yi.join("、")}`,`忌:${e.ji.join("、")}`,N,U,ze?`时辰吉凶:${ze}`:"",`节气:上一节 ${e.jieQi.prev?`${e.jieQi.prev.name} ${e.jieQi.prev.date}`:"—"}${t}`,e.dailyHexagram?`每日一卦:${e.dailyHexagram.name} ${e.dailyHexagram.meaning||""}`:"",`口径:${e.meta.scope}`].filter(Boolean).join(`
90
+ `)}function rn(e){const o=e.compare&&e.compare.mode==="candidates",t=o?`【择日·${e.meta.task}】候选 ${e.meta.days} 天:${e.meta.candidates.join("、")}${e.meta.shengXiao?` 当事人属${e.meta.shengXiao}`:"(未给属相,未做冲煞排除)"}`:`【择日·${e.meta.task}】${e.meta.startDate} 起 ${e.meta.days} 天${e.meta.shengXiao?` 当事人属${e.meta.shengXiao}`:"(未给属相,未做冲煞排除)"}`,n=e.days.slice().sort((w,N)=>N.score-w.score).slice(0,o?12:5).map(w=>`· ${w.date} ${w.weekday} ${w.verdict}(${w.score}分) 宜${w.yi.slice(0,3).join("/")} ${w.reasons.join(";")||"无特别加减分"}`),s=o?e.compare.best?`这一组里最优:${e.compare.best.date}(${e.compare.best.score}分,${e.compare.best.verdict})`+(e.compare.best.ties.length>1?`;同分:${e.compare.best.ties.filter(w=>w!==e.compare.best.date).join("、")}`:""):"这一组都因冲属相被排除,没有可用的日子":`推荐日:${e.best.length?e.best.join("、"):"本期无(都不够推荐分)"}`;return[t,s,`推荐日:${e.best.length?e.best.join("、"):"无"}`,`可用日:${e.usable.length?e.usable.join("、"):"无"}`,`回避日:${e.avoid.length?e.avoid.slice(0,6).join("、"):"无"}`,o?"候选日逐日:":"逐日排序:",...n,...o?[`比较口径:${e.compare.note}`]:[],`口径:${e.meta.scope}`].join(`
91
+ `)}function fn(e){const o=e.song||{};return[`【称骨】${e.input.solar} ${e.lunar.text}`,`四项:${e.weights.year.label} ${e.weights.month.label} ${e.weights.day.label} ${e.weights.hour.label}`,`合计:${e.total.label}(${e.verdict.band})`,`歌诀(${e.total.label}):${o.text||"—"}`,`释义:${o.plain||"—"}`,`分档白话:${e.verdict.text}`,"口径:骨重与歌诀为通行本口径(各版本歌诀有异文),释义为白话自撰,属民俗娱乐参考。"].join(`
92
+ `)}function cn(e){return[`【小六壬·${e.meta.mode}】${e.meta.question?`所问:${e.meta.question}`:""}`,e.meta.originText,`落宫:${e.steps.join(" → ")}`,`断语:${e.result.palace}(${e.result.luck}) ${e.result.text}`].join(`
93
+ `)}function Vn(e){return[`【星座】${e.meta.date} ${e.sign.name}(${e.sign.element}·守护星${e.sign.planet})`,`区间:${e.sign.range} 关键词:${e.sign.keywords} 契合:${e.sign.compatible}`,`当日基调:${e.daily.tone}`,e.daily.dims.map(o=>`· ${o.name}:${"★".repeat(o.stars)}${"☆".repeat(5-o.stars)} ${o.text}`).join(`
93
94
  `),`幸运色:${e.daily.luckyColor} 幸运数字:${e.daily.luckyNumber}`,"口径:当日基调由日期哈希确定性生成(同日同结果),纯娱乐向。"].join(`
94
- `)}function Vn(e){const t=e.ganzhi;return[`【公农历转换·${e.meta.mode==="lunar2solar"?"农历 → 公历":"公历 → 农历"}】${e.lunar.text} ⇄ ${e.solar.text} ${e.meta.weekday}`,`干支:${t.year}年 ${t.month}月 ${t.day}日 属${t.shengXiao}${t.springYear&&t.springYear!==t.year?`(春节界为${t.springYear}年)`:""}`,...e.meta.note?[`注:${e.meta.note}`]:[],`口径:${e.meta.scope}`].join(`
95
- `)}function et(e){return[`【生命数字】${e.meta.date}(西方数字学,与八字/紫微不可互证)`,...e.parts.map(t=>`${t.name}:${t.number}(${t.meaning.title}) ${t.meaning.keywords}
96
-  倾向:${t.meaning.tendency}
97
-  课题:${t.meaning.lesson}`)].join(`
98
- `)}function Zn(e){const t=e.dims.map(s=>{const w=s.picked===s.left?s.leftSay:s.rightSay,N=Math.round(s.pct*100);return`${s.left}/${s.right} 取 ${s.picked}(${s.strength} ${N}%,净分 ${s.sum}) ${w}`}),o=e.profile,n=Array.isArray(o.stack)&&o.stack.length?o.stack.map((s,w)=>`${w===0?"主导 ":""}${s.code}`).join(" → ")+`
99
-  ${o.stack.map(s=>`${s.code}:${s.say}`).join(`
100
-  `)}`:"";return[`【十六型人格】${e.type}(${o.title})· ${o.keywords} 已答 ${e.answered}/${e.total} 题`,`一句:${o.oneLine}`,"【四维】",...t,`【优势】${o.strengths.join(";")}`,`【留意】${o.blindspots.join(";")}`,`【课题】${o.growth}`,`【认知功能】${n}`,`【工作】${o.work}`,`【关系】${o.love}`,`【学习】${o.study}`,`注:${e.note}`].join(`
101
- `)}function un(e){return[`【十六型人格问卷】${e.total} 题,每题按 1(完全不像我)到 5(很像我)打分`,...e.questions.map(t=>`${t.no}. ${t.text}`),`请把 ${e.total} 个分数按顺序交给 answers(如 [4,2,5,3,…]);可以跳过某些题(填 null),至少答 12 题。`,`注:${e.note}`].join(`
102
- `)}function nt(e){const t=e.meta.strength,o=e.meta.dayMaster,n=o&&typeof o=="object"?`${o.stem}(${o.element})`:String(o||"");return[`【人生 K 线】${e.meta.birth} ${e.meta.gender} 日主 ${n} 旺衰 ${t.level}(${t.score})`,e.meta.boundaryNote?`※ ${e.meta.boundaryNote}`:"",`【大运分段】${e.segments.map(s=>`${s.ganZhi} ${s.startAge}-${s.endAge}岁`).join(" ")}`,`【走势】${Array.isArray(e.sparkline)?e.sparkline.join(" "):e.sparkline}`,...e.highlights&&e.highlights.best&&e.highlights.best.length?[`【关键年】最佳 ${e.highlights.best.join(";")}${e.highlights.worst&&e.highlights.worst.length?`
95
+ `)}function et(e){const o=e.ganzhi;return[`【公农历转换·${e.meta.mode==="lunar2solar"?"农历 → 公历":"公历 → 农历"}】${e.lunar.text} ⇄ ${e.solar.text} ${e.meta.weekday}`,`干支:${o.year}年 ${o.month}月 ${o.day}日 属${o.shengXiao}${o.springYear&&o.springYear!==o.year?`(春节界为${o.springYear}年)`:""}`,...e.meta.note?[`注:${e.meta.note}`]:[],`口径:${e.meta.scope}`].join(`
96
+ `)}function nt(e){return[`【生命数字】${e.meta.date}(西方数字学,与八字/紫微不可互证)`,...e.parts.map(o=>`${o.name}:${o.number}(${o.meaning.title}) ${o.meaning.keywords}
97
+  倾向:${o.meaning.tendency}
98
+  课题:${o.meaning.lesson}`)].join(`
99
+ `)}function Un(e){const o=e.dims.map(s=>{const w=s.picked===s.left?s.leftSay:s.rightSay,N=Math.round(s.pct*100);return`${s.left}/${s.right} 取 ${s.picked}(${s.strength} ${N}%,净分 ${s.sum}) ${w}`}),t=e.profile,n=Array.isArray(t.stack)&&t.stack.length?t.stack.map((s,w)=>`${w===0?"主导 ":""}${s.code}`).join(" → ")+`
100
+  ${t.stack.map(s=>`${s.code}:${s.say}`).join(`
101
+  `)}`:"";return[`【十六型人格】${e.type}(${t.title})· ${t.keywords} 已答 ${e.answered}/${e.total} 题`,`一句:${t.oneLine}`,"【四维】",...o,`【优势】${t.strengths.join(";")}`,`【留意】${t.blindspots.join(";")}`,`【课题】${t.growth}`,`【认知功能】${n}`,`【工作】${t.work}`,`【关系】${t.love}`,`【学习】${t.study}`,`注:${e.note}`].join(`
102
+ `)}function ln(e){return[`【十六型人格问卷】${e.total} 题,每题按 1(完全不像我)到 5(很像我)打分`,...e.questions.map(o=>`${o.no}. ${o.text}`),`请把 ${e.total} 个分数按顺序交给 answers(如 [4,2,5,3,…]);可以跳过某些题(填 null),至少答 12 题。`,`注:${e.note}`].join(`
103
+ `)}function tt(e){const o=e.meta.strength,t=e.meta.dayMaster,n=t&&typeof t=="object"?`${t.stem}(${t.element})`:String(t||"");return[`【人生 K 线】${e.meta.birth} ${e.meta.gender} 日主 ${n} 旺衰 ${o.level}(${o.score})`,e.meta.boundaryNote?`※ ${e.meta.boundaryNote}`:"",`【大运分段】${e.segments.map(s=>`${s.ganZhi} ${s.startAge}-${s.endAge}岁`).join(" ")}`,`【走势】${Array.isArray(e.sparkline)?e.sparkline.join(" "):e.sparkline}`,...e.highlights&&e.highlights.best&&e.highlights.best.length?[`【关键年】最佳 ${e.highlights.best.join(";")}${e.highlights.worst&&e.highlights.worst.length?`
103
104
  最需留意 ${e.highlights.worst.join(";")}`:""}`]:[],`※ ${e.disclaimer}`].filter(Boolean).join(`
104
- `)}function Nn(e){if(e.meta.action==="xuankong"){const o=e.meta.period,n=qe=>{const le=e.palaces.find(ke=>ke.palace===qe);return`${qe}${le.yun}/${le.shan}/${le.xiang}`},s=qe=>qe.map(n).join(" "),w=e.wangShanWangXiang,N=e.meta.jianXiang,U=e.timeFlying,pe=U?`【年月日时】${[["year","年"],["month","月"],["day","日"],["hour","时"]].filter(([qe])=>U[qe]).map(([qe,le])=>`${le}${U[qe].centerName}${U[qe].fly?`·${U[qe].fly}`:""}`).join(" ")}${U.meta&&U.meta.note?`(${U.meta.note})`:""}`:"";return[`【玄空】${e.meta.periodLabel}${N&&N.active?"·替卦":"·下卦"} 坐 ${e.meta.sitting} 向 ${e.meta.facing}`,...N&&N.active?[`【替卦】${N.note}`]:[],`【入中】山盘 ${e.meta.shanCenter.star}${e.meta.shanCenter.name}(${e.meta.shanCenter.fly},${e.meta.shanCenter.basis}${e.meta.shanCenter.mode==="替卦"?`;原运星 ${e.meta.shanCenter.original}${e.meta.shanCenter.replaced?",已替":",用替而未替"}`:""});向盘 ${e.meta.xiangCenter.star}${e.meta.xiangCenter.name}(${e.meta.xiangCenter.fly},${e.meta.xiangCenter.basis}${e.meta.xiangCenter.mode==="替卦"?`;原运星 ${e.meta.xiangCenter.original}${e.meta.xiangCenter.replaced?",已替":",用替而未替"}`:""})`,`【九宫】${s(["巽","离","坤"])}|${s(["震","中","兑"])}|${s(["艮","坎","乾"])}`,`【当运】山星${o}到${e.dangYun.shan.text};向星${o}到${e.dangYun.xiang.text}`,`【表法】${w.byTable===null?"替卦不套正向表;":""}${w.table.length?w.table.join("、"):"无"};${w.note}`,`【合十】山星合十 ${e.heshi.shan.join("、")||"无"};向星合十 ${e.heshi.xiang.join("、")||"无"}`,...pe?[pe]:[],...e.meta.note?[`※ ${e.meta.note}`]:[],`※ ${e.disclaimer}`].join(`
105
- `)}if(e.meta.action==="advise"){const o=e.mingMatch?[`【命宅配】${e.mingMatch.text}`]:[`※ ${e.meta.birthNote||"未提供生辰,未做命宅配。"}`];return[`【宅卦】坐 ${e.meta.sitting} 向 ${e.meta.facing} ${e.meta.houseGua}宅(${e.meta.houseGroup})`,`【八星】${e.houseStars.map(n=>`${n.star}·${n.direction}${n.palace?`(${n.palace})`:""}`).join(" ")}`,`【门】${e.layout.door}`,`【灶】${e.layout.stove}`,`【床】${e.layout.bed}`,`【厕】${e.layout.toilet}`,...o,`※ ${e.disclaimer}`].join(`
106
- `)}const t=e.mingGua;return[`【命卦】${t.num}${t.gua}(${t.group}) 方位 ${t.direction}`,`【四吉】${e.luckyDirections.map(o=>`${o.star}·${o.direction}${o.palace?`(${o.palace})`:""}`).join(" ")}`,`【四凶】${e.unluckyDirections.map(o=>`${o.star}·${o.direction}`).join(" ")}`,...e.yearlyFlying?[`【${e.meta.fortuneYear} 年九宫飞星】中宫 ${e.yearlyFlying.centerName};${e.yearlyFlying.palaces.filter(o=>o.palace!=="中").map(o=>`${o.palace}${o.name}`).join(" ")}`]:[`※ ${e.meta.note||""}`],`※ ${e.disclaimer}`].filter(Boolean).join(`
107
- `)}function Un(e){if(e.action==="generate")return[`【候选名】姓 ${e.surname}(${e.gender},喜用 ${e.bazi.favorable.join("、")})${e.bazi.basis}`,...e.candidates.map(U=>{const pe=U.wuge&&U.wuge.available?` 五格 ${U.wuge.summary}`:"",qe=U.phonetics&&U.phonetics.available?` 音韵 ${U.phonetics.level}(${U.phonetics.tonePattern})`:"";return`${U.rank}. ${U.name} ${U.chars.map(le=>`${le.char}(${le.element})${le.meaning}`).join(" ")}${pe}${qe}`}),...e.notes.map(U=>`※ ${U}`)].join(`
108
- `);const t=U=>U.source==="lib"?"字库":U.source==="user"?"用户指定":"未收录",o=U=>{const pe=U.element==="未收录"?"未收录(不猜五行)":`${U.element}(${t(U)})`,qe=U.favorable===!0?"合喜用":U.favorable===!1?"不合喜用":"不判",le=U.suggest&&U.suggest.length?` 可换:${U.suggest.map(ke=>`${ke.char}(${ke.element})`).join("、")}`:"";return`· ${U.char}:${pe}|${qe}|${U.meaning}${le}`},n=e.wuge,s=n&&n.available?`【五格】${n.strokes.map(U=>`${U.char}${U.strokes}画`).join("+")}|${n.summary}|三才 ${n.sancai.text}`:`【五格】${n?n.reason:"未算"}`,w=e.phonetics,N=w&&w.available?`【音韵】${w.chars.map(U=>`${U.char}${U.py}${U.tone}`).join(" ")}|声调 ${w.tonePattern}|${w.level}${w.issues.length?`:${w.issues.map(U=>U.text).join(";")}`:""}`:`【音韵】${w?w.reason:"未算"}`;return[`【名字评估】${e.fullName}`,...e.chars.map(o),e.bazi?`【八字】日主 ${e.bazi.dayMaster&&e.bazi.dayMaster.stem?`${e.bazi.dayMaster.stem}(${e.bazi.dayMaster.element})`:e.bazi.dayMaster},旺衰 ${e.bazi.strength.level}(${e.bazi.strength.score}),${e.bazi.basis}`:"",s,N,`【结论】${e.verdict}`,...e.notes.map(U=>`※ ${U}`)].filter(Boolean).join(`
109
- `)}function Qe(e){const o=[e.summary??JSON.stringify(e,null,2)];if(e.shadow&&e.shadow.id){const n=e.shadow;o.push(`【影子盘】${n.id}(同参数同 ID;版本 ${n.version})
105
+ `)}function Nn(e){if(e.meta.action==="xuankong"){const t=e.meta.period,n=ze=>{const le=e.palaces.find(Ee=>Ee.palace===ze);return`${ze}${le.yun}/${le.shan}/${le.xiang}`},s=ze=>ze.map(n).join(" "),w=e.wangShanWangXiang,N=e.meta.jianXiang,U=e.timeFlying,pe=U?`【年月日时】${[["year","年"],["month","月"],["day","日"],["hour","时"]].filter(([ze])=>U[ze]).map(([ze,le])=>`${le}${U[ze].centerName}${U[ze].fly?`·${U[ze].fly}`:""}`).join(" ")}${U.meta&&U.meta.note?`(${U.meta.note})`:""}`:"";return[`【玄空】${e.meta.periodLabel}${N&&N.active?"·替卦":"·下卦"} 坐 ${e.meta.sitting} 向 ${e.meta.facing}`,...N&&N.active?[`【替卦】${N.note}`]:[],`【入中】山盘 ${e.meta.shanCenter.star}${e.meta.shanCenter.name}(${e.meta.shanCenter.fly},${e.meta.shanCenter.basis}${e.meta.shanCenter.mode==="替卦"?`;原运星 ${e.meta.shanCenter.original}${e.meta.shanCenter.replaced?",已替":",用替而未替"}`:""});向盘 ${e.meta.xiangCenter.star}${e.meta.xiangCenter.name}(${e.meta.xiangCenter.fly},${e.meta.xiangCenter.basis}${e.meta.xiangCenter.mode==="替卦"?`;原运星 ${e.meta.xiangCenter.original}${e.meta.xiangCenter.replaced?",已替":",用替而未替"}`:""})`,`【九宫】${s(["巽","离","坤"])}|${s(["震","中","兑"])}|${s(["艮","坎","乾"])}`,`【当运】山星${t}到${e.dangYun.shan.text};向星${t}到${e.dangYun.xiang.text}`,`【表法】${w.byTable===null?"替卦不套正向表;":""}${w.table.length?w.table.join("、"):"无"};${w.note}`,`【合十】山星合十 ${e.heshi.shan.join("、")||"无"};向星合十 ${e.heshi.xiang.join("、")||"无"}`,...pe?[pe]:[],...e.meta.note?[`※ ${e.meta.note}`]:[],`※ ${e.disclaimer}`].join(`
106
+ `)}if(e.meta.action==="advise"){const t=e.mingMatch?[`【命宅配】${e.mingMatch.text}`]:[`※ ${e.meta.birthNote||"未提供生辰,未做命宅配。"}`];return[`【宅卦】坐 ${e.meta.sitting} 向 ${e.meta.facing} ${e.meta.houseGua}宅(${e.meta.houseGroup})`,`【八星】${e.houseStars.map(n=>`${n.star}·${n.direction}${n.palace?`(${n.palace})`:""}`).join(" ")}`,`【门】${e.layout.door}`,`【灶】${e.layout.stove}`,`【床】${e.layout.bed}`,`【厕】${e.layout.toilet}`,...t,`※ ${e.disclaimer}`].join(`
107
+ `)}const o=e.mingGua;return[`【命卦】${o.num}${o.gua}(${o.group}) 方位 ${o.direction}`,`【四吉】${e.luckyDirections.map(t=>`${t.star}·${t.direction}${t.palace?`(${t.palace})`:""}`).join(" ")}`,`【四凶】${e.unluckyDirections.map(t=>`${t.star}·${t.direction}`).join(" ")}`,...e.yearlyFlying?[`【${e.meta.fortuneYear} 年九宫飞星】中宫 ${e.yearlyFlying.centerName};${e.yearlyFlying.palaces.filter(t=>t.palace!=="中").map(t=>`${t.palace}${t.name}`).join(" ")}`]:[`※ ${e.meta.note||""}`],`※ ${e.disclaimer}`].filter(Boolean).join(`
108
+ `)}function Bn(e){if(e.action==="generate")return[`【候选名】姓 ${e.surname}(${e.gender},喜用 ${e.bazi.favorable.join("、")})${e.bazi.basis}`,...e.candidates.map(U=>{const pe=U.wuge&&U.wuge.available?` 五格 ${U.wuge.summary}`:"",ze=U.phonetics&&U.phonetics.available?` 音韵 ${U.phonetics.level}(${U.phonetics.tonePattern})`:"";return`${U.rank}. ${U.name} ${U.chars.map(le=>`${le.char}(${le.element})${le.meaning}`).join(" ")}${pe}${ze}`}),...e.notes.map(U=>`※ ${U}`)].join(`
109
+ `);const o=U=>U.source==="lib"?"字库":U.source==="user"?"用户指定":"未收录",t=U=>{const pe=U.element==="未收录"?"未收录(不猜五行)":`${U.element}(${o(U)})`,ze=U.favorable===!0?"合喜用":U.favorable===!1?"不合喜用":"不判",le=U.suggest&&U.suggest.length?` 可换:${U.suggest.map(Ee=>`${Ee.char}(${Ee.element})`).join("、")}`:"";return`· ${U.char}:${pe}|${ze}|${U.meaning}${le}`},n=e.wuge,s=n&&n.available?`【五格】${n.strokes.map(U=>`${U.char}${U.strokes}画`).join("+")}|${n.summary}|三才 ${n.sancai.text}`:`【五格】${n?n.reason:"未算"}`,w=e.phonetics,N=w&&w.available?`【音韵】${w.chars.map(U=>`${U.char}${U.py}${U.tone}`).join(" ")}|声调 ${w.tonePattern}|${w.level}${w.issues.length?`:${w.issues.map(U=>U.text).join(";")}`:""}`:`【音韵】${w?w.reason:"未算"}`;return[`【名字评估】${e.fullName}`,...e.chars.map(t),e.bazi?`【八字】日主 ${e.bazi.dayMaster&&e.bazi.dayMaster.stem?`${e.bazi.dayMaster.stem}(${e.bazi.dayMaster.element})`:e.bazi.dayMaster},旺衰 ${e.bazi.strength.level}(${e.bazi.strength.score}),${e.bazi.basis}`:"",s,N,`【结论】${e.verdict}`,...e.notes.map(U=>`※ ${U}`)].filter(Boolean).join(`
110
+ `)}function Xe(e){const t=[e.summary??JSON.stringify(e,null,2)];if(e.shadow&&e.shadow.id){const n=e.shadow;t.push(`【影子盘】${n.id}(同参数同 ID;版本 ${n.version})
110
111
   基础指纹 ${n.baseId}(不含版本,跨版本可比对)`+(n.reproducible===!1?`
111
112
   ⚠ 不可复算:${n.reason}`:"")+(n.reproducible===!0&&n.asOfPinned===!1&&(n.system==="bazi"||n.system==="ziwei")?`
112
-  提示:未固定 asOf,流年/流月随「此刻」变化;要比对请传 asOf。`:""))}if(e.revision&&((e.revision.applied||[]).length||(e.revision.ignored||[]).length)){const n=e.revision,s=(n.applied||[]).map(w=>`${w.label}:${w.fromDisplay==null?"(未设)":w.fromDisplay} → ${w.display}`);o.push(`【改参】${n.text}${s.length?`
113
+  提示:未固定 asOf,流年/流月随「此刻」变化;要比对请传 asOf。`:""))}if(e.revision&&((e.revision.applied||[]).length||(e.revision.ignored||[]).length)){const n=e.revision,s=(n.applied||[]).map(w=>`${w.label}:${w.fromDisplay==null?"(未设)":w.fromDisplay} → ${w.display}`);t.push(`【改参】${n.text}${s.length?`
113
114
   ${s.join(";")}`:`
114
115
   没有识别到可改的参数,仍按原参数排盘`}`+((n.ignored||[]).length?`
115
-  未处理:${n.ignored.join(";")}`:""))}if(typeof e.handle=="string"&&e.handle&&o.push(`【排盘句柄】${e.handle}
116
-  追问同一张盘:传 handle + 增量参数(asOf / direction / question,或换 system 看另一套盘),不必重报出生信息。`),Array.isArray(e.trace)&&e.trace.length&&o.push(`【推导链】${On[e.system]||e.system} · ${e.trace.length} 层
116
+  未处理:${n.ignored.join(";")}`:""))}if(typeof e.handle=="string"&&e.handle&&t.push(`【排盘句柄】${e.handle}
117
+  追问同一张盘:传 handle + 增量参数(asOf / direction / question,或换 system 看另一套盘),不必重报出生信息。`),Array.isArray(e.trace)&&e.trace.length&&t.push(`【推导链】${Tn[e.system]||e.system} · ${e.trace.length} 层
117
118
  `+e.trace.map((n,s)=>`${s+1}. ${n.field}|${n.result}
118
119
   规则:${n.rule} 出处:${n.source}`).join(`
119
- `)),e.interpret){const n=Ze(e.interpret);n&&o.push(n)}if(e.cross&&o.push(`【八字 × 紫微 交叉验证】
120
- ${se(e.cross)}`),e.caliber&&Array.isArray(e.caliber.switches)&&e.caliber.switches.length){const n=e.caliber;o.push(`【口径对照】同一组输入,只换一个口径(不判哪套更准,也不改盘面)
120
+ `)),e.interpret){const n=Ye(e.interpret);n&&t.push(n)}if(e.cross&&t.push(`【八字 × 紫微 交叉验证】
121
+ ${se(e.cross)}`),e.caliber&&Array.isArray(e.caliber.switches)&&e.caliber.switches.length){const n=e.caliber;t.push(`【口径对照】同一组输入,只换一个口径(不判哪套更准,也不改盘面)
121
122
  `+n.switches.map(s=>{if(s.error)return`· ${s.title}:未能对照(${s.error})`;if(!s.total)return`· ${s.title}:${s.currentLabel} → ${s.altLabel},本盘无变化`;const w=(Array.isArray(s.views)?s.views:[]).filter(U=>U.changed),N=w.length?`
122
123
   并排:${w.map(U=>`${U.label} ${U.current} → ${U.alt}`).join(";")}`:"";return`· ${s.title}:${s.currentLabel} → ${s.altLabel}
123
124
   ${s.summary}${N}`}).join(`
124
- `))}if(e.followup){const n=e.followup;o.push(`【追问】${n.question}
125
+ `))}if(e.followup){const n=e.followup;t.push(`【追问】${n.question}
125
126
  ${n.answer}${n.evidence&&n.evidence.length?`
126
-  依据:${n.evidence.join(";")} 置信度:${n.confidence}`:""}`)}if(e.past&&Array.isArray(e.past.rows)&&e.past.rows.length&&o.push(`【验前事】过去 ${e.past.years} 年的流年信号(只读,不改盘)
127
+  依据:${n.evidence.join(";")} 置信度:${n.confidence}`:""}`)}if(e.past&&Array.isArray(e.past.rows)&&e.past.rows.length&&t.push(`【验前事】过去 ${e.past.years} 年的流年信号(只读,不改盘)
127
128
  `+e.past.rows.map(n=>`· ${n.year} ${n.ganzhi} · ${n.theme}(${n.tier}${n.tenGod?`,${n.tenGod}`:""})`).join(`
128
129
  `)+`
129
- 用法:在面板里勾「准 / 不准 / 不确定」后算贴合度;贴合度低时先核对出生时间、时区与晚子时口径。`),e.rectify&&Array.isArray(e.rectify.candidates)){const n=e.rectify;o.push(`【生时校正】候选时辰 ${n.candidates.length} 个(固定规则打分,只缩小范围)
130
+ 用法:在面板里勾「准 / 不准 / 不确定」后算贴合度;贴合度低时先核对出生时间、时区与晚子时口径。`),e.rectify&&Array.isArray(e.rectify.candidates)){const n=e.rectify;t.push(`【生时校正】候选时辰 ${n.candidates.length} 个(固定规则打分,只缩小范围)
130
131
  `+n.candidates.slice(0,8).map(s=>`· ${s.label} 时柱 ${s.hourGanzhi} / 日柱 ${s.dayGanzhi} · 命中 ${s.hits}/${s.total}`).join(`
131
132
  `)+`
132
- ${n.note}`)}return o.filter(Boolean).join(`
133
+ ${n.note}`)}return t.filter(Boolean).join(`
133
134
 
134
- `)}return{interpret:b,DIRECTIONS:x,DIRECTION_DEFAULT:p,BRIGHTNESS:j,flowOf:y,geocodeAddress:_,resolveAddress:K,buildBazi:P,buildLiuyao:Q,tossLines:te,followup:I,askPrompt:H,pastSignals:Oe,verifyFit:Ne,rectifyBirth:Se,crossCheck:he,crossText:se,crossSection:xe,buildAlmanac:ye,buildZeri:Me,buildChenggu:E,buildXiaoliuren:ie,buildStar:ce,buildNumerology:ge,buildConvert:D,buildTrend:Mn,buildFengshui:hn,buildName:vn,buildTrace:pn,traceMarkdown:dn,encodeHandle:ze,decodeHandle:ve,resolveHandle:Re,askLink:Pe,parseAskLink:q,formOf:V,restNote:F,askPackages:l,parseDateTime:Ce,chartFingerprint:Yn,shadowSnapshot:fn,shadowDiff:qn,compute:En,interpretText:Ze,caliberCompare:Ke,renderText:Qe}})(),{Engine:W.index}}});
135
+ `)}const{buildEventPrompt:Fn,ASK_KINDS:An}=W["event-prompt"]||{};return{interpret:b,DIRECTIONS:x,DIRECTION_DEFAULT:p,BRIGHTNESS:j,flowOf:y,geocodeAddress:_,resolveAddress:K,buildBazi:P,buildLiuyao:Q,tossLines:te,followup:I,askPrompt:H,pastSignals:Te,verifyFit:Ae,rectifyBirth:xe,crossCheck:he,crossText:se,crossSection:qe,buildAlmanac:ye,buildZeri:ve,buildChenggu:E,buildXiaoliuren:ie,buildStar:ce,buildNumerology:ge,buildConvert:D,buildTrend:vn,buildFengshui:un,buildName:On,buildTrace:pn,traceMarkdown:hn,encodeHandle:Ne,decodeHandle:Oe,resolveHandle:_e,askLink:Ge,parseAskLink:q,formOf:V,restNote:F,askPackages:l,buildEventPrompt:Fn,ASK_KINDS:An,parseDateTime:Le,chartFingerprint:Zn,shadowSnapshot:mn,shadowDiff:qn,compute:En,interpretText:Ye,caliberCompare:We,renderText:Xe}})(),{Engine:W.index}}});