console: 任务详情也显示首字、总耗时、token

列表行与详情共用同一口径:新抽 api/taskMeta.ts(首字/
总耗时/token 计算),TaskListSection 改 import 它(逻辑
原样不动),TaskDetailPanel 在状态行下方加一行:首字
方块 + 耗时 + token,title 里写口径。
详情的数据缺口一并补上:单任务接口 _get_task 此前走
_task_to_dict 默认 total_tokens=None,详情 token 只能
显示占位;现与列表一样用 _task_tokens_map 一次聚合
(单任务只多一条查询),详情直接出真数。
types.ts 里过期的“列表不回 token”注释同步更新。
新测试:单任务 GET /tasks/{id} 聚合回 total_tokens。
This commit is contained in:
host committed 2026-10-30 00:39:13 +08:00
1 parent 3696dad7c8
commit 0f7162934b
7 files changed
+127 -99

No files matched your search

+11 -11
View File
@@ -12,7 +12,7 @@
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/var Ah;function Ay(){if(Ah)return ni;Ah=1;var i=Symbol.for("react.transitional.element"),r=Symbol.for("react.fragment");function m(o,_,C){var N=null;if(C!==void 0&&(N=""+C),_.key!==void 0&&(N=""+_.key),"key"in _){C={};for(var x in _)x!=="key"&&(C[x]=_[x])}else C=_;return _=C.ref,{$$typeof:i,type:o,key:N,ref:_!==void 0?_:null,props:C}}return ni.Fragment=r,ni.jsx=m,ni.jsxs=m,ni}var Mh;function My(){return Mh||(Mh=1,ar.exports=Ay()),ar.exports}var s=My(),nr={exports:{}},st={};/**
*/var Ah;function zy(){if(Ah)return ni;Ah=1;var i=Symbol.for("react.transitional.element"),r=Symbol.for("react.fragment");function m(o,_,C){var N=null;if(C!==void 0&&(N=""+C),_.key!==void 0&&(N=""+_.key),"key"in _){C={};for(var x in _)x!=="key"&&(C[x]=_[x])}else C=_;return _=C.ref,{$$typeof:i,type:o,key:N,ref:_!==void 0?_:null,props:C}}return ni.Fragment=r,ni.jsx=m,ni.jsxs=m,ni}var Mh;function Ry(){return Mh||(Mh=1,ar.exports=zy()),ar.exports}var s=Ry(),nr={exports:{}},st={};/**
* @license React
* react.production.js
*
@@ -20,7 +20,7 @@
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/var Oh;function Oy(){if(Oh)return st;Oh=1;var i=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),m=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),_=Symbol.for("react.profiler"),C=Symbol.for("react.consumer"),N=Symbol.for("react.context"),x=Symbol.for("react.forward_ref"),G=Symbol.for("react.suspense"),U=Symbol.for("react.memo"),Q=Symbol.for("react.lazy"),b=Symbol.for("react.activity"),B=Symbol.for("react.view_transition"),lt=Symbol.iterator;function at(y){return y===null||typeof y!="object"?null:(y=lt&&y[lt]||y["@@iterator"],typeof y=="function"?y:null)}var I={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},V=Object.assign,dt={};function Ot(y,R,F){this.props=y,this.context=R,this.refs=dt,this.updater=F||I}Ot.prototype.isReactComponent={},Ot.prototype.setState=function(y,R){if(typeof y!="object"&&typeof y!="function"&&y!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,y,R,"setState")},Ot.prototype.forceUpdate=function(y){this.updater.enqueueForceUpdate(this,y,"forceUpdate")};function te(){}te.prototype=Ot.prototype;function nt(y,R,F){this.props=y,this.context=R,this.refs=dt,this.updater=F||I}var Xt=nt.prototype=new te;Xt.constructor=nt,V(Xt,Ot.prototype),Xt.isPureReactComponent=!0;var ee=Array.isArray;function ct(){}var yt={H:null,A:null,T:null,S:null},le=Object.prototype.hasOwnProperty;function de(y,R,F){var K=F.ref;return{$$typeof:i,type:y,key:R,ref:K!==void 0?K:null,props:F}}function Kt(y,R){return de(y.type,R,y.props)}function Ft(y){return typeof y=="object"&&y!==null&&y.$$typeof===i}function Wt(y){var R={"=":"=0",":":"=2"};return"$"+y.replace(/[=:]/g,function(F){return R[F]})}var tl=/\/+/g;function mt(y,R){return typeof y=="object"&&y!==null&&y.key!=null?Wt(""+y.key):R.toString(36)}function Y(y){switch(y.status){case"fulfilled":return y.value;case"rejected":throw y.reason;default:switch(typeof y.status=="string"?y.then(ct,ct):(y.status="pending",y.then(function(R){y.status==="pending"&&(y.status="fulfilled",y.value=R)},function(R){y.status==="pending"&&(y.status="rejected",y.reason=R)})),y.status){case"fulfilled":return y.value;case"rejected":throw y.reason}}throw y}function A(y,R,F,K,pt){var ht=typeof y;(ht==="undefined"||ht==="boolean")&&(y=null);var _t=!1;if(y===null)_t=!0;else switch(ht){case"bigint":case"string":case"number":_t=!0;break;case"object":switch(y.$$typeof){case i:case r:_t=!0;break;case Q:return _t=y._init,A(_t(y._payload),R,F,K,pt)}}if(_t)return pt=pt(y),_t=K===""?"."+mt(y,0):K,ee(pt)?(F="",_t!=null&&(F=_t.replace(tl,"$&/")+"/"),A(pt,R,F,"",function(ge){return ge})):pt!=null&&(Ft(pt)&&(pt=Kt(pt,F+(pt.key==null||y&&y.key===pt.key?"":(""+pt.key).replace(tl,"$&/")+"/")+_t)),R.push(pt)),1;_t=0;var k=K===""?".":K+":";if(ee(y))for(var ut=0;ut<y.length;ut++)K=y[ut],ht=k+mt(K,ut),_t+=A(K,R,F,ht,pt);else if(ut=at(y),typeof ut=="function")for(y=ut.call(y),ut=0;!(K=y.next()).done;)K=K.value,ht=k+mt(K,ut++),_t+=A(K,R,F,ht,pt);else if(ht==="object"){if(typeof y.then=="function")return A(Y(y),R,F,K,pt);throw R=String(y),Error("Objects are not valid as a React child (found: "+(R==="[object Object]"?"object with keys {"+Object.keys(y).join(", ")+"}":R)+"). If you meant to render a collection of children, use an array instead.")}return _t}function et(y,R,F){if(y==null)return y;var K=[],pt=0;return A(y,K,"","",function(ht){return R.call(F,ht,pt++)}),K}function Tt(y){if(y._status===-1){var R=y._result,F=R();F.then(function(K){(y._status===0||y._status===-1)&&(y._status=1,y._result=K,F.status===void 0&&(F.status="fulfilled",F.value=K))},function(K){(y._status===0||y._status===-1)&&(y._status=2,y._result=K,F.status===void 0&&(F.status="rejected",F.reason=K))}),y._status===-1&&(y._status=0,y._result=F)}if(y._status===1)return y._result.default;throw y._result}var gt=typeof reportError=="function"?reportError:function(y){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var R=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof y=="object"&&y!==null&&typeof y.message=="string"?String(y.message):String(y),error:y});if(!window.dispatchEvent(R))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",y);return}console.error(y)};function ie(y){var R=yt.T,F={};F.types=R!==null?R.types:null,yt.T=F;try{var K=y(),pt=yt.S;pt!==null&&pt(F,K),typeof K=="object"&&K!==null&&typeof K.then=="function"&&K.then(ct,gt)}catch(ht){gt(ht)}finally{R!==null&&F.types!==null&&(R.types=F.types),yt.T=R}}function Oe(y){var R=yt.T;if(R!==null){var F=R.types;F===null?R.types=[y]:F.indexOf(y)===-1&&F.push(y)}else ie(Oe.bind(null,y))}var ze={map:et,forEach:function(y,R,F){et(y,function(){R.apply(this,arguments)},F)},count:function(y){var R=0;return et(y,function(){R++}),R},toArray:function(y){return et(y,function(R){return R})||[]},oLine truncated
*/var Oh;function Dy(){if(Oh)return st;Oh=1;var i=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),m=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),_=Symbol.for("react.profiler"),C=Symbol.for("react.consumer"),N=Symbol.for("react.context"),x=Symbol.for("react.forward_ref"),G=Symbol.for("react.suspense"),U=Symbol.for("react.memo"),Q=Symbol.for("react.lazy"),b=Symbol.for("react.activity"),B=Symbol.for("react.view_transition"),lt=Symbol.iterator;function at(y){return y===null||typeof y!="object"?null:(y=lt&&y[lt]||y["@@iterator"],typeof y=="function"?y:null)}var I={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},V=Object.assign,dt={};function Ot(y,R,F){this.props=y,this.context=R,this.refs=dt,this.updater=F||I}Ot.prototype.isReactComponent={},Ot.prototype.setState=function(y,R){if(typeof y!="object"&&typeof y!="function"&&y!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,y,R,"setState")},Ot.prototype.forceUpdate=function(y){this.updater.enqueueForceUpdate(this,y,"forceUpdate")};function te(){}te.prototype=Ot.prototype;function nt(y,R,F){this.props=y,this.context=R,this.refs=dt,this.updater=F||I}var Xt=nt.prototype=new te;Xt.constructor=nt,V(Xt,Ot.prototype),Xt.isPureReactComponent=!0;var ee=Array.isArray;function ct(){}var yt={H:null,A:null,T:null,S:null},le=Object.prototype.hasOwnProperty;function de(y,R,F){var K=F.ref;return{$$typeof:i,type:y,key:R,ref:K!==void 0?K:null,props:F}}function Kt(y,R){return de(y.type,R,y.props)}function Ft(y){return typeof y=="object"&&y!==null&&y.$$typeof===i}function Wt(y){var R={"=":"=0",":":"=2"};return"$"+y.replace(/[=:]/g,function(F){return R[F]})}var tl=/\/+/g;function mt(y,R){return typeof y=="object"&&y!==null&&y.key!=null?Wt(""+y.key):R.toString(36)}function Y(y){switch(y.status){case"fulfilled":return y.value;case"rejected":throw y.reason;default:switch(typeof y.status=="string"?y.then(ct,ct):(y.status="pending",y.then(function(R){y.status==="pending"&&(y.status="fulfilled",y.value=R)},function(R){y.status==="pending"&&(y.status="rejected",y.reason=R)})),y.status){case"fulfilled":return y.value;case"rejected":throw y.reason}}throw y}function A(y,R,F,K,pt){var ht=typeof y;(ht==="undefined"||ht==="boolean")&&(y=null);var _t=!1;if(y===null)_t=!0;else switch(ht){case"bigint":case"string":case"number":_t=!0;break;case"object":switch(y.$$typeof){case i:case r:_t=!0;break;case Q:return _t=y._init,A(_t(y._payload),R,F,K,pt)}}if(_t)return pt=pt(y),_t=K===""?"."+mt(y,0):K,ee(pt)?(F="",_t!=null&&(F=_t.replace(tl,"$&/")+"/"),A(pt,R,F,"",function(ge){return ge})):pt!=null&&(Ft(pt)&&(pt=Kt(pt,F+(pt.key==null||y&&y.key===pt.key?"":(""+pt.key).replace(tl,"$&/")+"/")+_t)),R.push(pt)),1;_t=0;var k=K===""?".":K+":";if(ee(y))for(var ut=0;ut<y.length;ut++)K=y[ut],ht=k+mt(K,ut),_t+=A(K,R,F,ht,pt);else if(ut=at(y),typeof ut=="function")for(y=ut.call(y),ut=0;!(K=y.next()).done;)K=K.value,ht=k+mt(K,ut++),_t+=A(K,R,F,ht,pt);else if(ht==="object"){if(typeof y.then=="function")return A(Y(y),R,F,K,pt);throw R=String(y),Error("Objects are not valid as a React child (found: "+(R==="[object Object]"?"object with keys {"+Object.keys(y).join(", ")+"}":R)+"). If you meant to render a collection of children, use an array instead.")}return _t}function et(y,R,F){if(y==null)return y;var K=[],pt=0;return A(y,K,"","",function(ht){return R.call(F,ht,pt++)}),K}function Tt(y){if(y._status===-1){var R=y._result,F=R();F.then(function(K){(y._status===0||y._status===-1)&&(y._status=1,y._result=K,F.status===void 0&&(F.status="fulfilled",F.value=K))},function(K){(y._status===0||y._status===-1)&&(y._status=2,y._result=K,F.status===void 0&&(F.status="rejected",F.reason=K))}),y._status===-1&&(y._status=0,y._result=F)}if(y._status===1)return y._result.default;throw y._result}var gt=typeof reportError=="function"?reportError:function(y){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var R=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof y=="object"&&y!==null&&typeof y.message=="string"?String(y.message):String(y),error:y});if(!window.dispatchEvent(R))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",y);return}console.error(y)};function ie(y){var R=yt.T,F={};F.types=R!==null?R.types:null,yt.T=F;try{var K=y(),pt=yt.S;pt!==null&&pt(F,K),typeof K=="object"&&K!==null&&typeof K.then=="function"&&K.then(ct,gt)}catch(ht){gt(ht)}finally{R!==null&&F.types!==null&&(R.types=F.types),yt.T=R}}function Oe(y){var R=yt.T;if(R!==null){var F=R.types;F===null?R.types=[y]:F.indexOf(y)===-1&&F.push(y)}else ie(Oe.bind(null,y))}var ze={map:et,forEach:function(y,R,F){et(y,function(){R.apply(this,arguments)},F)},count:function(y){var R=0;return et(y,function(){R++}),R},toArray:function(y){return et(y,function(R){return R})||[]},oLine truncated
* @license React
* scheduler.production.js
*
@@ -28,7 +28,7 @@
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/var Rh;function Ry(){return Rh||(Rh=1,(function(i){function r(Y,A){var et=Y.length;Y.push(A);t:for(;0<et;){var Tt=et-1>>>1,gt=Y[Tt];if(0<_(gt,A))Y[Tt]=A,Y[et]=gt,et=Tt;else break t}}function m(Y){return Y.length===0?null:Y[0]}function o(Y){if(Y.length===0)return null;var A=Y[0],et=Y.pop();if(et!==A){Y[0]=et;t:for(var Tt=0,gt=Y.length,ie=gt>>>1;Tt<ie;){var Oe=2*(Tt+1)-1,ze=Y[Oe],y=Oe+1,R=Y[y];if(0>_(ze,et))y<gt&&0>_(R,ze)?(Y[Tt]=R,Y[y]=et,Tt=y):(Y[Tt]=ze,Y[Oe]=et,Tt=Oe);else if(y<gt&&0>_(R,et))Y[Tt]=R,Y[y]=et,Tt=y;else break t}}return A}function _(Y,A){var et=Y.sortIndex-A.sortIndex;return et!==0?et:Y.id-A.id}if(i.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var C=performance;i.unstable_now=function(){return C.now()}}else{var N=Date,x=N.now();i.unstable_now=function(){return N.now()-x}}var G=[],U=[],Q=1,b=null,B=3,lt=!1,at=!1,I=!1,V=!1,dt=typeof setTimeout=="function"?setTimeout:null,Ot=typeof clearTimeout=="function"?clearTimeout:null,te=typeof setImmediate<"u"?setImmediate:null;function nt(Y){for(var A=m(U);A!==null;){if(A.callback===null)o(U);else if(A.startTime<=Y)o(U),A.sortIndex=A.expirationTime,r(G,A);else break;A=m(U)}}function Xt(Y){if(I=!1,nt(Y),!at)if(m(G)!==null)at=!0,ee||(ee=!0,Ft());else{var A=m(U);A!==null&&mt(Xt,A.startTime-Y)}}var ee=!1,ct=-1,yt=5,le=-1;function de(){return V?!0:!(i.unstable_now()-le<yt)}function Kt(){if(V=!1,ee){var Y=i.unstable_now();le=Y;var A=!0;try{t:{at=!1,I&&(I=!1,Ot(ct),ct=-1),lt=!0;var et=B;try{e:{for(nt(Y),b=m(G);b!==null&&!(b.expirationTime>Y&&de());){var Tt=b.callback;if(typeof Tt=="function"){b.callback=null,B=b.priorityLevel;var gt=Tt(b.expirationTime<=Y);if(Y=i.unstable_now(),typeof gt=="function"){b.callback=gt,nt(Y),A=!0;break e}b===m(G)&&o(G),nt(Y)}else o(G);b=m(G)}if(b!==null)A=!0;else{var ie=m(U);ie!==null&&mt(Xt,ie.startTime-Y),A=!1}}break t}finally{b=null,B=et,lt=!1}A=void 0}}finally{A?Ft():ee=!1}}}var Ft;if(typeof te=="function")Ft=function(){te(Kt)};else if(typeof MessageChannel<"u"){var Wt=new MessageChannel,tl=Wt.port2;Wt.port1.onmessage=Kt,Ft=function(){tl.postMessage(null)}}else Ft=function(){dt(Kt,0)};function mt(Y,A){ct=dt(function(){Y(i.unstable_now())},A)}i.unstable_IdlePriority=5,i.unstable_ImmediatePriority=1,i.unstable_LowPriority=4,i.unstable_NormalPriority=3,i.unstable_Profiling=null,i.unstable_UserBlockingPriority=2,i.unstable_cancelCallback=function(Y){Y.callback=null},i.unstable_forceFrameRate=function(Y){0>Y||125<Y?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):yt=0<Y?Math.floor(1e3/Y):5},i.unstable_getCurrentPriorityLevel=function(){return B},i.unstable_next=function(Y){switch(B){case 1:case 2:case 3:var A=3;break;default:A=B}var et=B;B=A;try{return Y()}finally{B=et}},i.unstable_requestPaint=function(){V=!0},i.unstable_runWithPriority=function(Y,A){switch(Y){case 1:case 2:case 3:case 4:case 5:break;default:Y=3}var et=B;B=Y;try{return A()}finally{B=et}},i.unstable_scheduleCallback=function(Y,A,et){var Tt=i.unstable_now();switch(typeof et=="object"&&et!==null?(et=et.delay,et=typeof et=="number"&&0<et?Tt+et:Tt):et=Tt,Y){case 1:var gt=-1;break;case 2:gt=250;break;case 5:gt=1073741823;break;case 4:gt=1e4;break;default:gt=5e3}return gt=et+gt,Y={id:Q++,callback:A,priorityLevel:Y,startTime:et,expirationTime:gt,sortIndex:-1},et>Tt?(Y.sortIndex=et,r(U,Y),m(G)===null&&Y===m(U)&&(I?(Ot(ct),ct=-1):I=!0,mt(Xt,et-Tt))):(Y.sortIndex=gt,r(G,Y),at||lt||(at=!0,ee||(ee=!0,Ft()))),Y},i.unstable_shouldYield=de,i.unstable_wrapCallback=function(Y){var A=B;return function(){var et=B;B=A;try{return Y.apply(this,arguments)}finally{B=et}}}})(cr)),cr}var Dh;function Dy(){return Dh||(Dh=1,ir.exports=Ry()),ir.exports}var sr={exports:{}},Ae={};/**
*/var Rh;function Hy(){return Rh||(Rh=1,(function(i){function r(Y,A){var et=Y.length;Y.push(A);t:for(;0<et;){var Tt=et-1>>>1,gt=Y[Tt];if(0<_(gt,A))Y[Tt]=A,Y[et]=gt,et=Tt;else break t}}function m(Y){return Y.length===0?null:Y[0]}function o(Y){if(Y.length===0)return null;var A=Y[0],et=Y.pop();if(et!==A){Y[0]=et;t:for(var Tt=0,gt=Y.length,ie=gt>>>1;Tt<ie;){var Oe=2*(Tt+1)-1,ze=Y[Oe],y=Oe+1,R=Y[y];if(0>_(ze,et))y<gt&&0>_(R,ze)?(Y[Tt]=R,Y[y]=et,Tt=y):(Y[Tt]=ze,Y[Oe]=et,Tt=Oe);else if(y<gt&&0>_(R,et))Y[Tt]=R,Y[y]=et,Tt=y;else break t}}return A}function _(Y,A){var et=Y.sortIndex-A.sortIndex;return et!==0?et:Y.id-A.id}if(i.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var C=performance;i.unstable_now=function(){return C.now()}}else{var N=Date,x=N.now();i.unstable_now=function(){return N.now()-x}}var G=[],U=[],Q=1,b=null,B=3,lt=!1,at=!1,I=!1,V=!1,dt=typeof setTimeout=="function"?setTimeout:null,Ot=typeof clearTimeout=="function"?clearTimeout:null,te=typeof setImmediate<"u"?setImmediate:null;function nt(Y){for(var A=m(U);A!==null;){if(A.callback===null)o(U);else if(A.startTime<=Y)o(U),A.sortIndex=A.expirationTime,r(G,A);else break;A=m(U)}}function Xt(Y){if(I=!1,nt(Y),!at)if(m(G)!==null)at=!0,ee||(ee=!0,Ft());else{var A=m(U);A!==null&&mt(Xt,A.startTime-Y)}}var ee=!1,ct=-1,yt=5,le=-1;function de(){return V?!0:!(i.unstable_now()-le<yt)}function Kt(){if(V=!1,ee){var Y=i.unstable_now();le=Y;var A=!0;try{t:{at=!1,I&&(I=!1,Ot(ct),ct=-1),lt=!0;var et=B;try{e:{for(nt(Y),b=m(G);b!==null&&!(b.expirationTime>Y&&de());){var Tt=b.callback;if(typeof Tt=="function"){b.callback=null,B=b.priorityLevel;var gt=Tt(b.expirationTime<=Y);if(Y=i.unstable_now(),typeof gt=="function"){b.callback=gt,nt(Y),A=!0;break e}b===m(G)&&o(G),nt(Y)}else o(G);b=m(G)}if(b!==null)A=!0;else{var ie=m(U);ie!==null&&mt(Xt,ie.startTime-Y),A=!1}}break t}finally{b=null,B=et,lt=!1}A=void 0}}finally{A?Ft():ee=!1}}}var Ft;if(typeof te=="function")Ft=function(){te(Kt)};else if(typeof MessageChannel<"u"){var Wt=new MessageChannel,tl=Wt.port2;Wt.port1.onmessage=Kt,Ft=function(){tl.postMessage(null)}}else Ft=function(){dt(Kt,0)};function mt(Y,A){ct=dt(function(){Y(i.unstable_now())},A)}i.unstable_IdlePriority=5,i.unstable_ImmediatePriority=1,i.unstable_LowPriority=4,i.unstable_NormalPriority=3,i.unstable_Profiling=null,i.unstable_UserBlockingPriority=2,i.unstable_cancelCallback=function(Y){Y.callback=null},i.unstable_forceFrameRate=function(Y){0>Y||125<Y?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):yt=0<Y?Math.floor(1e3/Y):5},i.unstable_getCurrentPriorityLevel=function(){return B},i.unstable_next=function(Y){switch(B){case 1:case 2:case 3:var A=3;break;default:A=B}var et=B;B=A;try{return Y()}finally{B=et}},i.unstable_requestPaint=function(){V=!0},i.unstable_runWithPriority=function(Y,A){switch(Y){case 1:case 2:case 3:case 4:case 5:break;default:Y=3}var et=B;B=Y;try{return A()}finally{B=et}},i.unstable_scheduleCallback=function(Y,A,et){var Tt=i.unstable_now();switch(typeof et=="object"&&et!==null?(et=et.delay,et=typeof et=="number"&&0<et?Tt+et:Tt):et=Tt,Y){case 1:var gt=-1;break;case 2:gt=250;break;case 5:gt=1073741823;break;case 4:gt=1e4;break;default:gt=5e3}return gt=et+gt,Y={id:Q++,callback:A,priorityLevel:Y,startTime:et,expirationTime:gt,sortIndex:-1},et>Tt?(Y.sortIndex=et,r(U,Y),m(G)===null&&Y===m(U)&&(I?(Ot(ct),ct=-1):I=!0,mt(Xt,et-Tt))):(Y.sortIndex=gt,r(G,Y),at||lt||(at=!0,ee||(ee=!0,Ft()))),Y},i.unstable_shouldYield=de,i.unstable_wrapCallback=function(Y){var A=B;return function(){var et=B;B=A;try{return Y.apply(this,arguments)}finally{B=et}}}})(cr)),cr}var Dh;function By(){return Dh||(Dh=1,ir.exports=Hy()),ir.exports}var sr={exports:{}},Ae={};/**
* @license React
* react-dom.production.js
*
@@ -36,7 +36,7 @@
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/var Uh;function Uy(){if(Uh)return Ae;Uh=1;var i=dr();function r(Q){var b="https://react.dev/errors/"+Q;if(1<arguments.length){b+="?args[]="+encodeURIComponent(arguments[1]);for(var B=2;B<arguments.length;B++)b+="&args[]="+encodeURIComponent(arguments[B])}return"Minified React error #"+Q+"; visit "+b+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function m(){}var o={d:{f:m,r:function(){throw Error(r(522))},D:m,C:m,L:m,m,X:m,S:m,M:m},p:0,findDOMNode:null},_=Symbol.for("react.portal"),C=Symbol.for("react.recoverable"),N=Symbol.for("react.optimistic_key");function x(Q,b,B){var lt=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:_,key:lt==null?null:lt===N?N:""+lt,children:Q,containerInfo:b,implementation:B}}var G=i.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function U(Q,b){if(Q==="font")return"";if(typeof b=="string")return b==="use-credentials"?b:""}return Ae.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=o,Ae.browser=function(Q){return{$$typeof:C,_reason:Q}},Ae.createPortal=function(Q,b){var B=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!b||b.nodeType!==1&&b.nodeType!==9&&b.nodeType!==11)throw Error(r(299));return x(Q,b,null,B)},Ae.flushSync=function(Q){var b=G.T,B=o.p;try{if(G.T=null,o.p=2,Q)return Q()}finally{G.T=b,o.p=B,o.d.f()}},Ae.preconnect=function(Q,b){typeof Q=="string"&&(b?(b=b.crossOrigin,b=typeof b=="string"?b==="use-credentials"?b:"":void 0):b=null,o.d.C(Q,b))},Ae.prefetchDNS=function(Q){typeof Q=="string"&&o.d.D(Q)},Ae.preinit=function(Q,b){if(typeof Q=="string"&&b&&typeof b.as=="string"){var B=b.as,lt=U(B,b.crossOrigin),at=typeof b.integrity=="string"?b.integrity:void 0,I=typeof b.fetchPriority=="string"?b.fetchPriority:void 0;B==="style"?o.d.S(Q,typeof b.precedence=="string"?b.precedence:void 0,{crossOrigin:lt,integrity:at,fetchPriority:I}):B==="script"&&o.d.X(Q,{crossOrigin:lt,integrity:at,fetchPriority:I,nonce:typeof b.nonce=="string"?b.nonce:void 0})}},Ae.preinitModule=function(Q,b){if(typeof Q=="string")if(typeof b=="object"&&b!==null){if(b.as==null||b.as==="script"){var B=U(b.as,b.crossOrigin);o.d.M(Q,{crossOrigin:B,integrity:typeof b.integrity=="string"?b.integrity:void 0,nonce:typeof b.nonce=="string"?b.nonce:void 0,fetchPriority:typeof b.fetchPriority=="string"?b.fetchPriority:void 0})}}else b==null&&o.d.M(Q)},Ae.preload=function(Q,b){if(typeof Q=="string"&&typeof b=="object"&&b!==null&&typeof b.as=="string"){var B=b.as,lt=U(B,b.crossOrigin);o.d.L(Q,B,{crossOrigin:lt,integrity:typeof b.integrity=="string"?b.integrity:void 0,nonce:typeof b.nonce=="string"?b.nonce:void 0,type:typeof b.type=="string"?b.type:void 0,fetchPriority:typeof b.fetchPriority=="string"?b.fetchPriority:void 0,referrerPolicy:typeof b.referrerPolicy=="string"?b.referrerPolicy:void 0,imageSrcSet:typeof b.imageSrcSet=="string"?b.imageSrcSet:void 0,imageSizes:typeof b.imageSizes=="string"?b.imageSizes:void 0,media:typeof b.media=="string"?b.media:void 0})}},Ae.preloadModule=function(Q,b){if(typeof Q=="string")if(b){var B=U(b.as,b.crossOrigin);o.d.m(Q,{as:typeof b.as=="string"&&b.as!=="script"?b.as:void 0,crossOrigin:B,integrity:typeof b.integrity=="string"?b.integrity:void 0,nonce:typeof b.nonce=="string"?b.nonce:void 0,fetchPriority:typeof b.fetchPriority=="string"?b.fetchPriority:void 0})}else o.d.m(Q)},Ae.requestFormReset=function(Q){o.d.r(Q)},Ae.unstable_batchedUpdates=function(Q,b){return Q(b)},Ae.useFormState=function(Q,b,B){return G.H.useFormState(Q,b,B)},Ae.useFormStatus=function(){return G.H.useHostTransitionStatus()},Ae.version="19.3.1",Ae}var Hh;function Hy(){if(Hh)return sr.exports;Hh=1;function i(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(i)}catch(r){console.error(r)}}return i(),sr.exports=Uy(),sr.exports}/**
*/var Uh;function qy(){if(Uh)return Ae;Uh=1;var i=dr();function r(Q){var b="https://react.dev/errors/"+Q;if(1<arguments.length){b+="?args[]="+encodeURIComponent(arguments[1]);for(var B=2;B<arguments.length;B++)b+="&args[]="+encodeURIComponent(arguments[B])}return"Minified React error #"+Q+"; visit "+b+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function m(){}var o={d:{f:m,r:function(){throw Error(r(522))},D:m,C:m,L:m,m,X:m,S:m,M:m},p:0,findDOMNode:null},_=Symbol.for("react.portal"),C=Symbol.for("react.recoverable"),N=Symbol.for("react.optimistic_key");function x(Q,b,B){var lt=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:_,key:lt==null?null:lt===N?N:""+lt,children:Q,containerInfo:b,implementation:B}}var G=i.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function U(Q,b){if(Q==="font")return"";if(typeof b=="string")return b==="use-credentials"?b:""}return Ae.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=o,Ae.browser=function(Q){return{$$typeof:C,_reason:Q}},Ae.createPortal=function(Q,b){var B=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!b||b.nodeType!==1&&b.nodeType!==9&&b.nodeType!==11)throw Error(r(299));return x(Q,b,null,B)},Ae.flushSync=function(Q){var b=G.T,B=o.p;try{if(G.T=null,o.p=2,Q)return Q()}finally{G.T=b,o.p=B,o.d.f()}},Ae.preconnect=function(Q,b){typeof Q=="string"&&(b?(b=b.crossOrigin,b=typeof b=="string"?b==="use-credentials"?b:"":void 0):b=null,o.d.C(Q,b))},Ae.prefetchDNS=function(Q){typeof Q=="string"&&o.d.D(Q)},Ae.preinit=function(Q,b){if(typeof Q=="string"&&b&&typeof b.as=="string"){var B=b.as,lt=U(B,b.crossOrigin),at=typeof b.integrity=="string"?b.integrity:void 0,I=typeof b.fetchPriority=="string"?b.fetchPriority:void 0;B==="style"?o.d.S(Q,typeof b.precedence=="string"?b.precedence:void 0,{crossOrigin:lt,integrity:at,fetchPriority:I}):B==="script"&&o.d.X(Q,{crossOrigin:lt,integrity:at,fetchPriority:I,nonce:typeof b.nonce=="string"?b.nonce:void 0})}},Ae.preinitModule=function(Q,b){if(typeof Q=="string")if(typeof b=="object"&&b!==null){if(b.as==null||b.as==="script"){var B=U(b.as,b.crossOrigin);o.d.M(Q,{crossOrigin:B,integrity:typeof b.integrity=="string"?b.integrity:void 0,nonce:typeof b.nonce=="string"?b.nonce:void 0,fetchPriority:typeof b.fetchPriority=="string"?b.fetchPriority:void 0})}}else b==null&&o.d.M(Q)},Ae.preload=function(Q,b){if(typeof Q=="string"&&typeof b=="object"&&b!==null&&typeof b.as=="string"){var B=b.as,lt=U(B,b.crossOrigin);o.d.L(Q,B,{crossOrigin:lt,integrity:typeof b.integrity=="string"?b.integrity:void 0,nonce:typeof b.nonce=="string"?b.nonce:void 0,type:typeof b.type=="string"?b.type:void 0,fetchPriority:typeof b.fetchPriority=="string"?b.fetchPriority:void 0,referrerPolicy:typeof b.referrerPolicy=="string"?b.referrerPolicy:void 0,imageSrcSet:typeof b.imageSrcSet=="string"?b.imageSrcSet:void 0,imageSizes:typeof b.imageSizes=="string"?b.imageSizes:void 0,media:typeof b.media=="string"?b.media:void 0})}},Ae.preloadModule=function(Q,b){if(typeof Q=="string")if(b){var B=U(b.as,b.crossOrigin);o.d.m(Q,{as:typeof b.as=="string"&&b.as!=="script"?b.as:void 0,crossOrigin:B,integrity:typeof b.integrity=="string"?b.integrity:void 0,nonce:typeof b.nonce=="string"?b.nonce:void 0,fetchPriority:typeof b.fetchPriority=="string"?b.fetchPriority:void 0})}else o.d.m(Q)},Ae.requestFormReset=function(Q){o.d.r(Q)},Ae.unstable_batchedUpdates=function(Q,b){return Q(b)},Ae.useFormState=function(Q,b,B){return G.H.useFormState(Q,b,B)},Ae.useFormStatus=function(){return G.H.useHostTransitionStatus()},Ae.version="19.3.1",Ae}var Hh;function Yy(){if(Hh)return sr.exports;Hh=1;function i(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(i)}catch(r){console.error(r)}}return i(),sr.exports=qy(),sr.exports}/**
* @license React
* react-dom-client.production.js
*
@@ -44,19 +44,19 @@
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/var Bh;function By(){if(Bh)return ui;Bh=1;var i=Dy(),r=dr(),m=Hy();function o(t){var e="https://react.dev/errors/"+t;if(1<arguments.length){e+="?args[]="+encodeURIComponent(arguments[1]);for(var l=2;l<arguments.length;l++)e+="&args[]="+encodeURIComponent(arguments[l])}return"Minified React error #"+t+"; visit "+e+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function _(t){return!(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)}function C(t){for(var e=t,l=e;l&&!l.alternate;)e=l,(e.flags&4098)!==0&&(t=e.return),l=e.return;for(;e.return;)e=e.return;return e.tag===3?t:null}function N(t){if(t.tag===13){var e=t.memoizedState;if(e===null&&(t=t.alternate,t!==null&&(e=t.memoizedState)),e!==null)return e.dehydrated}return null}function x(t){if(t.tag===31){var e=t.memoizedState;if(e===null&&(t=t.alternate,t!==null&&(e=t.memoizedState)),e!==null)return e.dehydrated}return null}function G(t){if(C(t)!==t)throw Error(o(188))}function U(t){var e=t.alternate;if(!e){if(e=C(t),e===null)throw Error(o(188));return e!==t?null:t}for(var l=t,a=e;;){var n=l.return;if(n===null)break;var u=n.alternate;if(u===null){if(a=n.return,a!==null){l=a;continue}break}if(n.child===u.child){for(u=n.child;u;){if(u===l)return G(n),t;if(u===a)return G(n),e;u=u.sibling}throw Error(o(188))}if(l.return!==a.return)l=n,a=u;else{for(var c=!1,f=n.child;f;){if(f===l){c=!0,l=n,a=u;break}if(f===a){c=!0,a=n,l=u;break}f=f.sibling}if(!c){for(f=u.child;f;){if(f===l){c=!0,l=u,a=n;break}if(f===a){c=!0,a=u,l=n;break}f=f.sibling}if(!c)throw Error(o(189))}}if(l.alternate!==a)throw Error(o(190))}if(l.tag!==3)throw Error(o(188));return l.stateNode.current===l?t:e}function Q(t){var e=t.tag;if(e===5||e===26||e===27||e===6)return t;for(t=t.child;t!==null;){if(e=Q(t),e!==null)return e;t=t.sibling}return null}function b(t,e,l,a,n,u){for(;t!==null;){if((t.tag===5||t.tag===27||t.tag===6)&&l(t,a,n,u)||(t.tag!==22||t.memoizedState===null)&&(e||t.tag!==5&&t.tag!==27)&&b(t.child,e,l,a,n,u))return!0;t=t.sibling}return!1}function B(t){for(t=t.return;t!==null;){if(t.tag===3||t.tag===5||t.tag===27)return t;t=t.return}return null}function lt(t){var e=!1;for(t=t.return;t!==null&&(t.tag===4&&(e=!0),!(t.tag===3||t.tag===5||t.tag===27));)t=t.return;return e}function at(t){var e=[null,null],l=B(t);return l===null||I(e,t,l.child,{foundSelf:!1}),e}function I(t,e,l,a){for(;l!==null;){if(l===e)a.foundSelf=!0;else if(l.tag===5||l.tag===27||l.tag===6){if(a.foundSelf)return t[1]=l,!0;t[0]=l}else if((l.tag!==22||l.memoizedState===null)&&I(t,e,l.child,a))return!0;l=l.sibling}return!1}function V(t){switch(t.tag){case 5:case 27:case 6:return t.stateNode;case 3:return t.stateNode.containerInfo;default:throw Error(o(559))}}var dt=null,Ot=null;function te(t,e,l){return t===l?!0:t===e?(dt=t,!0):!1}function nt(t,e,l){return t===l?(Ot=t,!1):t===e?(Ot!==null&&(dt=t),!0):!1}function Xt(t){if(t===null)return null;do t=t===null?null:t.return;while(t&&t.tag!==5&&t.tag!==27&&t.tag!==3);return t||null}function ee(t,e,l){for(var a=0,n=t;n;n=l(n))a++;n=0;for(var u=e;u;u=l(u))n++;for(;0<a-n;)t=l(t),a--;for(;0<n-a;)e=l(e),n--;for(;a--;){if(t===e||e!==null&&t===e.alternate)return t;t=l(t),e=l(e)}return null}var ct=Object.assign,yt=Symbol.for("react.element"),le=Symbol.for("react.transitional.element"),de=Symbol.for("react.portal"),Kt=Symbol.for("react.fragment"),Ft=Symbol.for("react.strict_mode"),Wt=Symbol.for("react.profiler"),tl=Symbol.for("react.consumer"),mt=Symbol.for("react.context"),Y=Symbol.for("react.forward_ref"),A=Symbol.for("react.suspense"),et=Symbol.for("react.suspense_list"),Tt=Symbol.for("react.memo"),gt=Symbol.for("react.lazy"),ie=Symbol.for("react.activity"),Oe=Symbol.for("react.legacy_hidden"),ze=Symbol.for("react.memo_cache_sentinel"),y=Symbol.for("react.view_transition"),R=Symbol.for("react.recoverable"),F=Symbol.iterator;function K(t){return t===null||typeof t!="object"?null:(t=F&&t[F]||t["@@iterator"],typeof t=="function"?t:null)}var pt=Symbol.for("react.client.reference");function ht(t){if(t==null)return null;if(typeof t=="function")return t.$$typeof===pt?null:t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case Kt:return"Fragment";case Wt:return"Profiler";case Ft:return"StrictMode";case A:return"Suspense";case et:return"SuspenseList";case ie:return"Activity";case y:return"ViewTransition"}if(typeof t=="object")switch(t.$$typeof){case de:return"Portal";case mt:return t.displayName||"Context";case tl:return(t._context.displayName||"Context")+".Consumer";case Y:var e=t.render;return t=t.displayName,t||(t=e.displayName||e.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case Tt:return e=t.displayName||null,e!==null?e:ht(t.type)||"Memo";case gt:e=t._payload,t=t._init;try{return ht(t(e))}catch{}}return null}var _t=Array.isArray,k=r.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ut=m.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ge={pending:!1,data:null,method:null,actioLine truncated
*/var Bh;function wy(){if(Bh)return ui;Bh=1;var i=By(),r=dr(),m=Yy();function o(t){var e="https://react.dev/errors/"+t;if(1<arguments.length){e+="?args[]="+encodeURIComponent(arguments[1]);for(var l=2;l<arguments.length;l++)e+="&args[]="+encodeURIComponent(arguments[l])}return"Minified React error #"+t+"; visit "+e+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function _(t){return!(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)}function C(t){for(var e=t,l=e;l&&!l.alternate;)e=l,(e.flags&4098)!==0&&(t=e.return),l=e.return;for(;e.return;)e=e.return;return e.tag===3?t:null}function N(t){if(t.tag===13){var e=t.memoizedState;if(e===null&&(t=t.alternate,t!==null&&(e=t.memoizedState)),e!==null)return e.dehydrated}return null}function x(t){if(t.tag===31){var e=t.memoizedState;if(e===null&&(t=t.alternate,t!==null&&(e=t.memoizedState)),e!==null)return e.dehydrated}return null}function G(t){if(C(t)!==t)throw Error(o(188))}function U(t){var e=t.alternate;if(!e){if(e=C(t),e===null)throw Error(o(188));return e!==t?null:t}for(var l=t,a=e;;){var n=l.return;if(n===null)break;var u=n.alternate;if(u===null){if(a=n.return,a!==null){l=a;continue}break}if(n.child===u.child){for(u=n.child;u;){if(u===l)return G(n),t;if(u===a)return G(n),e;u=u.sibling}throw Error(o(188))}if(l.return!==a.return)l=n,a=u;else{for(var c=!1,f=n.child;f;){if(f===l){c=!0,l=n,a=u;break}if(f===a){c=!0,a=n,l=u;break}f=f.sibling}if(!c){for(f=u.child;f;){if(f===l){c=!0,l=u,a=n;break}if(f===a){c=!0,a=u,l=n;break}f=f.sibling}if(!c)throw Error(o(189))}}if(l.alternate!==a)throw Error(o(190))}if(l.tag!==3)throw Error(o(188));return l.stateNode.current===l?t:e}function Q(t){var e=t.tag;if(e===5||e===26||e===27||e===6)return t;for(t=t.child;t!==null;){if(e=Q(t),e!==null)return e;t=t.sibling}return null}function b(t,e,l,a,n,u){for(;t!==null;){if((t.tag===5||t.tag===27||t.tag===6)&&l(t,a,n,u)||(t.tag!==22||t.memoizedState===null)&&(e||t.tag!==5&&t.tag!==27)&&b(t.child,e,l,a,n,u))return!0;t=t.sibling}return!1}function B(t){for(t=t.return;t!==null;){if(t.tag===3||t.tag===5||t.tag===27)return t;t=t.return}return null}function lt(t){var e=!1;for(t=t.return;t!==null&&(t.tag===4&&(e=!0),!(t.tag===3||t.tag===5||t.tag===27));)t=t.return;return e}function at(t){var e=[null,null],l=B(t);return l===null||I(e,t,l.child,{foundSelf:!1}),e}function I(t,e,l,a){for(;l!==null;){if(l===e)a.foundSelf=!0;else if(l.tag===5||l.tag===27||l.tag===6){if(a.foundSelf)return t[1]=l,!0;t[0]=l}else if((l.tag!==22||l.memoizedState===null)&&I(t,e,l.child,a))return!0;l=l.sibling}return!1}function V(t){switch(t.tag){case 5:case 27:case 6:return t.stateNode;case 3:return t.stateNode.containerInfo;default:throw Error(o(559))}}var dt=null,Ot=null;function te(t,e,l){return t===l?!0:t===e?(dt=t,!0):!1}function nt(t,e,l){return t===l?(Ot=t,!1):t===e?(Ot!==null&&(dt=t),!0):!1}function Xt(t){if(t===null)return null;do t=t===null?null:t.return;while(t&&t.tag!==5&&t.tag!==27&&t.tag!==3);return t||null}function ee(t,e,l){for(var a=0,n=t;n;n=l(n))a++;n=0;for(var u=e;u;u=l(u))n++;for(;0<a-n;)t=l(t),a--;for(;0<n-a;)e=l(e),n--;for(;a--;){if(t===e||e!==null&&t===e.alternate)return t;t=l(t),e=l(e)}return null}var ct=Object.assign,yt=Symbol.for("react.element"),le=Symbol.for("react.transitional.element"),de=Symbol.for("react.portal"),Kt=Symbol.for("react.fragment"),Ft=Symbol.for("react.strict_mode"),Wt=Symbol.for("react.profiler"),tl=Symbol.for("react.consumer"),mt=Symbol.for("react.context"),Y=Symbol.for("react.forward_ref"),A=Symbol.for("react.suspense"),et=Symbol.for("react.suspense_list"),Tt=Symbol.for("react.memo"),gt=Symbol.for("react.lazy"),ie=Symbol.for("react.activity"),Oe=Symbol.for("react.legacy_hidden"),ze=Symbol.for("react.memo_cache_sentinel"),y=Symbol.for("react.view_transition"),R=Symbol.for("react.recoverable"),F=Symbol.iterator;function K(t){return t===null||typeof t!="object"?null:(t=F&&t[F]||t["@@iterator"],typeof t=="function"?t:null)}var pt=Symbol.for("react.client.reference");function ht(t){if(t==null)return null;if(typeof t=="function")return t.$$typeof===pt?null:t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case Kt:return"Fragment";case Wt:return"Profiler";case Ft:return"StrictMode";case A:return"Suspense";case et:return"SuspenseList";case ie:return"Activity";case y:return"ViewTransition"}if(typeof t=="object")switch(t.$$typeof){case de:return"Portal";case mt:return t.displayName||"Context";case tl:return(t._context.displayName||"Context")+".Consumer";case Y:var e=t.render;return t=t.displayName,t||(t=e.displayName||e.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case Tt:return e=t.displayName||null,e!==null?e:ht(t.type)||"Memo";case gt:e=t._payload,t=t._init;try{return ht(t(e))}catch{}}return null}var _t=Array.isArray,k=r.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ut=m.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ge={pending:!1,data:null,method:null,actioLine truncated
at`)?" (<anonymous>)":-1<l.stack.indexOf("@")?"@unknown:0:0":""}return`
`+qe+t+ol}var Hl=!1;function dl(t,e){if(!t||Hl)return"";Hl=!0;var l=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var a={DetermineComponentFrameRoot:function(){try{if(e){var O=function(){throw Error()};if(Object.defineProperty(O.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(O,[])}catch(q){var g=q}Reflect.construct(t,[],O)}else{try{O.call()}catch(q){g=q}O=!1;try{var T=Object.getOwnPropertyDescriptor(t.prototype,"props");Object.defineProperty(t.prototype,"props",{configurable:!0,set:function(){throw Error()}}),O=!0,new t}finally{O&&(T!==void 0?Object.defineProperty(t.prototype,"props",T):delete t.prototype.props)}}}else{try{throw Error()}catch(q){g=q}(O=t())&&typeof O.catch=="function"&&O.catch(function(){})}}catch(q){if(q&&g&&typeof q.stack=="string")return[q.stack,g.stack]}return[null,null]}};a.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var n=Object.getOwnPropertyDescriptor(a.DetermineComponentFrameRoot,"name");n&&n.configurable&&Object.defineProperty(a.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var u=a.DetermineComponentFrameRoot(),c=u[0],f=u[1];if(c&&f){var d=c.split(`
`),S=f.split(`
`);for(n=a=0;a<d.length&&!d[a].includes("DetermineComponentFrameRoot");)a++;for(;n<S.length&&!S[n].includes("DetermineComponentFrameRoot");)n++;if(a===d.length||n===S.length)for(a=d.length-1,n=S.length-1;1<=a&&0<=n&&d[a]!==S[n];)n--;for(;1<=a&&0<=n;a--,n--)if(d[a]!==S[n]){if(a!==1||n!==1)do if(a--,n--,0>n||d[a]!==S[n]){var E=`
`+d[a].replace(" at new "," at ");return t.displayName&&E.includes("<anonymous>")&&(E=E.replace("<anonymous>",t.displayName)),E}while(1<=a&&0<=n);break}}}finally{Hl=!1,Error.prepareStackTrace=l}return(l=t?t.displayName||t.name:"")?pe(l):""}function Bl(t,e){switch(t.tag){case 26:case 27:case 5:return pe(t.type);case 16:return pe("Lazy");case 13:return t.child!==e&&e!==null?pe("Suspense Fallback"):pe("Suspense");case 19:return pe("SuspenseList");case 0:case 15:return dl(t.type,!1);case 11:return dl(t.type.render,!1);case 1:return dl(t.type,!0);case 31:return pe("Activity");case 30:return pe("ViewTransition");default:return""}}function Ye(t){try{var e="",l=null;do e+=Bl(t,l),l=t,t=t.return;while(t);return e}catch(a){return`
Error generating stack: `+a.message+`
`+a.stack}}var Vt=Object.prototype.hasOwnProperty,ll=i.unstable_scheduleCallback,ml=i.unstable_cancelCallback,ql=i.unstable_shouldYield,La=i.unstable_requestPaint,$t=i.unstable_now,Wl=i.unstable_getCurrentPriorityLevel,yn=i.unstable_ImmediatePriority,gn=i.unstable_UserBlockingPriority,Ke=i.unstable_NormalPriority,Za=i.unstable_LowPriority,va=i.unstable_IdlePriority,ou=i.log,du=i.unstable_setDisableYieldValue,$l=null,Se=null;function hl(t){if(typeof ou=="function"&&du(t),Se&&typeof Se.setStrictMode=="function")try{Se.setStrictMode($l,t)}catch{}}var be=Math.clz32?Math.clz32:L,H=Math.log,D=Math.LN2;function L(t){return t>>>=0,t===0?32:31-(H(t)/D|0)|0}var J=256,Ct=262144,Nl=4194304;function De(t){var e=t&42;if(e!==0)return e;switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return t&-t;case 262144:case 524288:case 1048576:case 2097152:return t&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function z(t,e,l){var a=t.pendingLanes;if(a===0)return 0;var n=0,u=t.suspendedLanes,c=t.pingedLanes;t=t.warmLanes;var f=a&134217727;return f!==0?(a=f&~u,a!==0?n=De(a):(c&=f,c!==0?n=De(c):l||(l=f&~t,l!==0&&(n=De(l))))):(f=a&~u,f!==0?n=De(f):c!==0?n=De(c):l||(l=a&~t,l!==0&&(n=De(l)))),n===0?0:e!==0&&e!==n&&(e&u)===0&&(u=n&-n,l=e&-e,u>=l||u===32&&(l&4194048)!==0)?e:n}function w(t,e){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&e)===0}function W(t,e){(e&8)!==0&&(e|=e&32);var l=t.entangledLanes;if(l!==0)for(t=t.entanglements,l&=e;0<l;){var a=31-be(l),n=1<<a;e|=t[a],l&=~n}return e}function qt(t,e){switch(t){case 1:case 2:case 4:case 8:case 64:return e+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Lt(){var t=Nl;return Nl<<=1,(Nl&62914560)===0&&(Nl=4194304),t}function je(t){for(var e=[],l=0;31>l;l++)e.push(t);return e}function Ue(t,e){t.pendingLanes|=e,e!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function ya(t,e,l,a,n,u){var c=t.pendingLanes;t.pendingLanes=l,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=l,t.entangledLanes&=l,t.errorRecoveryDisabledLanes&=l,t.shellSuspendCounter=0;var f=t.entanglements,d=t.expirationTimes,S=t.hiddenUpdates;for(l=c&~l;0<l;){var E=31-be(l),O=1<<E;f[E]=0,d[E]=-1;var g=S[E];if(g!==null)for(S[E]=null,E=0;E<g.length;E++){var T=g[E];T!==null&&(T.lane&=-536870913)}l&=~O}a!==0&&Il(t,a,0),u!==0&&n===0&&t.tag!==0&&(t.suspendedLanes|=u&~(c&~e))}function Il(t,e,l){t.pendingLanes|=e,t.suspendedLanes&=~e;var a=31-be(e);t.entangledLanes|=e,t.entanglements[a]=t.entanglements[a]|1073741824|l&261930}function ii(t,e){var l=t.entangledLanes|=e;for(t=t.entanglements;l;){var a=31-be(l),n=1<<a;n&e|t[a]&e&&(t[a]|=e),l&=~n}}function mu(t,e){var l=e&-e;return l=(l&42)!==0?1:we(l),(l&(t.suspendedLanes|e))!==0?0:l}function we(t){switch(t){case 2:t=1;break;case 8:t=4;break;case 32:t=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:t=128;break;case 268435456:t=134217728;break;default:t=0}return t}function He(t){return t&=-t,2<t?8<t?(t&134217727)!==0?32:268435456:8:2}function ci(){var t=ut.p;return t!==0?t:(t=window.event,t===void 0?32:jh(t.type))}function hr(t,e){var l=ut.p;try{return ut.p=t,e()}finally{ut.p=l}}var Pl=Math.random().toString(36).slice(2),xe="__reactFiber$"+Pl,Je="__reactProps$"+Pl,pn="__reactContainer$"+Pl,vr="__reactEvents$"+Pl,Vh="__reactListeners$"+Pl,Lh="__reactHandles$"+Pl,yr="__reactResources$"+Pl,hu="__reactMarker$"+Pl,si="__reactLoad$"+Pl;function fi(t){delete t[xe],delete t[Je],delete t[Vh],delete t[Lh]}function Ka(t){var e;if(e=t[xe])return e;for(var l=t.parentNode;l;){if(e=l[pn]||l[xe]){if(l=e.alternate,e.child!==null||l!==null&&l.child!==null)for(t=eh(t);t!==null;){if(l=t[xe])return l;t=eh(t)}return e}t=l,l=t.parentNode}return null}function Sn(t){if(t=t[xe]||t[pn]){var e=t.tag;if(e===5||e===6||e===13||e===31||e===26||e===27||e===3)return t}return null}function vu(t){var e=t.tag;if(e===5||e===26||e===27||e===6)return t.stateNode;throw Error(o(33))}function bn(t){var e=t[yr];return e||(e=t[yr]={hoistableStyles:new Map,hoistableScripts:new Map}),e}function me(t){t[hu]=!0}function gr(t){t[si]=void 0}var pr=new Set,Sr={};function Ja(t,e){jn(t,e),jn(t+"Capture",e)}function jn(t,eLine truncated
`).replace(R0,"")}function Hm(t,e){return e=Um(e),Um(t)===e}function Bt(t,e,l,a,n,u){switch(l){case"children":if(typeof a=="string")e==="body"||e==="textarea"&&a===""||Tn(t,a);else if(typeof a=="number"||typeof a=="bigint")e!=="body"&&Tn(t,""+a);else return;break;case"className":oi(t,"class",a);break;case"tabIndex":oi(t,"tabindex",a);break;case"dir":case"role":case"viewBox":case"width":case"height":oi(t,l,a);break;case"style":Mr(t,a,u);return;case"data":if(e!=="object"){oi(t,"data",a);break}case"src":case"href":if(a===""&&(e!=="a"||l!=="href")){t.removeAttribute(l);break}if(a==null||typeof a=="function"||typeof a=="symbol"||typeof a=="boolean"){t.removeAttribute(l);break}a=di(a),t.setAttribute(l,a);break;case"action":case"formAction":if(typeof a=="function"){t.setAttribute(l,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}else typeof u=="function"&&(l==="formAction"?(e!=="input"&&Bt(t,e,"name",n.name,n,null),Bt(t,e,"formEncType",n.formEncType,n,null),Bt(t,e,"formMethod",n.formMethod,n,null),Bt(t,e,"formTarget",n.formTarget,n,null)):(Bt(t,e,"encType",n.encType,n,null),Bt(t,e,"method",n.method,n,null),Bt(t,e,"target",n.target,n,null)));if(a==null||typeof a=="symbol"||typeof a=="boolean"){t.removeAttribute(l);break}a=di(a),t.setAttribute(l,a);break;case"onClick":a!=null&&(t.onclick=Yl);return;case"onScroll":a!=null&&bt("scroll",t);return;case"onScrollEnd":a!=null&&bt("scrollend",t);return;case"dangerouslySetInnerHTML":if(a!=null){if(typeof a!="object"||!("__html"in a))throw Error(o(61));if(l=a.__html,l!=null){if(n.children!=null)throw Error(o(60));(u!=null?u.__html:void 0)!==l&&(t.innerHTML=l)}}break;case"multiple":t.multiple=a&&typeof a!="function"&&typeof a!="symbol";break;case"muted":t.muted=a&&typeof a!="function"&&typeof a!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(a==null||typeof a=="function"||typeof a=="boolean"||typeof a=="symbol"){t.removeAttribute("xlink:href");break}l=di(a),t.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",l);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":a!=null&&typeof a!="function"&&typeof a!="symbol"?t.setAttribute(l,a):t.removeAttribute(l);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"credentialless":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":a&&typeof a!="function"&&typeof a!="symbol"?t.setAttribute(l,""):t.removeAttribute(l);break;case"capture":case"download":a===!0?t.setAttribute(l,""):a!==!1&&a!=null&&typeof a!="function"&&typeof a!="symbol"?t.setAttribute(l,a):t.removeAttribute(l);break;case"cols":case"rows":case"size":case"span":a!=null&&typeof a!="function"&&typeof a!="symbol"&&!isNaN(a)&&1<=a?t.setAttribute(l,a):t.removeAttribute(l);break;case"rowSpan":case"start":a==null||typeof a=="function"||typeof a=="symbol"||isNaN(a)?t.removeAttribute(l):t.setAttribute(l,a);break;case"popover":bt("beforetoggle",t),bt("toggle",t),ri(t,"popover",a);break;case"xlinkActuate":ta(t,"http://www.w3.org/1999/xlink","xlink:actuate",a);break;case"xlinkArcrole":ta(t,"http://www.w3.org/1999/xlink","xlink:arcrole",a);break;case"xlinkRole":ta(t,"http://www.w3.org/1999/xlink","xlink:role",a);break;case"xlinkShow":ta(t,"http://www.w3.org/1999/xlink","xlink:show",a);break;case"xlinkTitle":ta(t,"http://www.w3.org/1999/xlink","xlink:title",a);break;case"xlinkType":ta(t,"http://www.w3.org/1999/xlink","xlink:type",a);break;case"xmlBase":ta(t,"http://www.w3.org/XML/1998/namespace","xml:base",a);break;case"xmlLang":ta(t,"http://www.w3.org/XML/1998/namespace","xml:lang",a);break;case"xmlSpace":ta(t,"http://www.w3.org/XML/1998/namespace","xml:space",a);break;case"is":ri(t,"is",a);break;case"innerText":case"textContent":return;default:if(!(2<l.length)||l[0]!=="o"&&l[0]!=="O"||l[1]!=="n"&&l[1]!=="N")l=$h.get(l)||l,ri(t,l,a);else return}Nt=!0}function Uf(t,e,l,a,n,u){switch(l){case"style":Mr(t,a,u);return;case"dangerouslySetInnerHTML":if(a!=null){if(typeof a!="object"||!("__html"in a))throw Error(o(61));if(l=a.__html,l!=null){if(n.children!=null)throw Error(o(60));(u!=null?u.__html:void 0)!==l&&(t.innerHTML=l)}}break;case"children":if(typeof a=="string")Tn(t,a);else if(typeof a=="number"||typeof a=="bigint")Tn(t,""+a);else return;break;case"onScroll":a!=null&&bt("scroll",t);return;case"onScrollEnd":a!=null&&bt("scroLine truncated
`;qt&&(je+=qt+`
`),Lt&&(je+=(Array.isArray(Lt)?Lt.join(`
`+a.stack}}var Vt=Object.prototype.hasOwnProperty,ll=i.unstable_scheduleCallback,ml=i.unstable_cancelCallback,ql=i.unstable_shouldYield,La=i.unstable_requestPaint,$t=i.unstable_now,Wl=i.unstable_getCurrentPriorityLevel,yn=i.unstable_ImmediatePriority,gn=i.unstable_UserBlockingPriority,Ke=i.unstable_NormalPriority,Za=i.unstable_LowPriority,va=i.unstable_IdlePriority,ou=i.log,du=i.unstable_setDisableYieldValue,$l=null,Se=null;function hl(t){if(typeof ou=="function"&&du(t),Se&&typeof Se.setStrictMode=="function")try{Se.setStrictMode($l,t)}catch{}}var be=Math.clz32?Math.clz32:L,H=Math.log,D=Math.LN2;function L(t){return t>>>=0,t===0?32:31-(H(t)/D|0)|0}var J=256,Ct=262144,Nl=4194304;function De(t){var e=t&42;if(e!==0)return e;switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return t&-t;case 262144:case 524288:case 1048576:case 2097152:return t&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function z(t,e,l){var a=t.pendingLanes;if(a===0)return 0;var n=0,u=t.suspendedLanes,c=t.pingedLanes;t=t.warmLanes;var f=a&134217727;return f!==0?(a=f&~u,a!==0?n=De(a):(c&=f,c!==0?n=De(c):l||(l=f&~t,l!==0&&(n=De(l))))):(f=a&~u,f!==0?n=De(f):c!==0?n=De(c):l||(l=a&~t,l!==0&&(n=De(l)))),n===0?0:e!==0&&e!==n&&(e&u)===0&&(u=n&-n,l=e&-e,u>=l||u===32&&(l&4194048)!==0)?e:n}function w(t,e){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&e)===0}function W(t,e){(e&8)!==0&&(e|=e&32);var l=t.entangledLanes;if(l!==0)for(t=t.entanglements,l&=e;0<l;){var a=31-be(l),n=1<<a;e|=t[a],l&=~n}return e}function qt(t,e){switch(t){case 1:case 2:case 4:case 8:case 64:return e+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Lt(){var t=Nl;return Nl<<=1,(Nl&62914560)===0&&(Nl=4194304),t}function xe(t){for(var e=[],l=0;31>l;l++)e.push(t);return e}function Ue(t,e){t.pendingLanes|=e,e!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function ya(t,e,l,a,n,u){var c=t.pendingLanes;t.pendingLanes=l,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=l,t.entangledLanes&=l,t.errorRecoveryDisabledLanes&=l,t.shellSuspendCounter=0;var f=t.entanglements,d=t.expirationTimes,S=t.hiddenUpdates;for(l=c&~l;0<l;){var E=31-be(l),O=1<<E;f[E]=0,d[E]=-1;var g=S[E];if(g!==null)for(S[E]=null,E=0;E<g.length;E++){var T=g[E];T!==null&&(T.lane&=-536870913)}l&=~O}a!==0&&Il(t,a,0),u!==0&&n===0&&t.tag!==0&&(t.suspendedLanes|=u&~(c&~e))}function Il(t,e,l){t.pendingLanes|=e,t.suspendedLanes&=~e;var a=31-be(e);t.entangledLanes|=e,t.entanglements[a]=t.entanglements[a]|1073741824|l&261930}function ii(t,e){var l=t.entangledLanes|=e;for(t=t.entanglements;l;){var a=31-be(l),n=1<<a;n&e|t[a]&e&&(t[a]|=e),l&=~n}}function mu(t,e){var l=e&-e;return l=(l&42)!==0?1:we(l),(l&(t.suspendedLanes|e))!==0?0:l}function we(t){switch(t){case 2:t=1;break;case 8:t=4;break;case 32:t=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:t=128;break;case 268435456:t=134217728;break;default:t=0}return t}function He(t){return t&=-t,2<t?8<t?(t&134217727)!==0?32:268435456:8:2}function ci(){var t=ut.p;return t!==0?t:(t=window.event,t===void 0?32:xh(t.type))}function hr(t,e){var l=ut.p;try{return ut.p=t,e()}finally{ut.p=l}}var Pl=Math.random().toString(36).slice(2),je="__reactFiber$"+Pl,Je="__reactProps$"+Pl,pn="__reactContainer$"+Pl,vr="__reactEvents$"+Pl,Kh="__reactListeners$"+Pl,Jh="__reactHandles$"+Pl,yr="__reactResources$"+Pl,hu="__reactMarker$"+Pl,si="__reactLoad$"+Pl;function fi(t){delete t[je],delete t[Je],delete t[Kh],delete t[Jh]}function Ka(t){var e;if(e=t[je])return e;for(var l=t.parentNode;l;){if(e=l[pn]||l[je]){if(l=e.alternate,e.child!==null||l!==null&&l.child!==null)for(t=eh(t);t!==null;){if(l=t[je])return l;t=eh(t)}return e}t=l,l=t.parentNode}return null}function Sn(t){if(t=t[je]||t[pn]){var e=t.tag;if(e===5||e===6||e===13||e===31||e===26||e===27||e===3)return t}return null}function vu(t){var e=t.tag;if(e===5||e===26||e===27||e===6)return t.stateNode;throw Error(o(33))}function bn(t){var e=t[yr];return e||(e=t[yr]={hoistableStyles:new Map,hoistableScripts:new Map}),e}function me(t){t[hu]=!0}function gr(t){t[si]=void 0}var pr=new Set,Sr={};function Ja(t,e){xn(t,e),xn(t+"Capture",e)}function xn(t,eLine truncated
`).replace(H0,"")}function Hm(t,e){return e=Um(e),Um(t)===e}function Bt(t,e,l,a,n,u){switch(l){case"children":if(typeof a=="string")e==="body"||e==="textarea"&&a===""||Tn(t,a);else if(typeof a=="number"||typeof a=="bigint")e!=="body"&&Tn(t,""+a);else return;break;case"className":oi(t,"class",a);break;case"tabIndex":oi(t,"tabindex",a);break;case"dir":case"role":case"viewBox":case"width":case"height":oi(t,l,a);break;case"style":Mr(t,a,u);return;case"data":if(e!=="object"){oi(t,"data",a);break}case"src":case"href":if(a===""&&(e!=="a"||l!=="href")){t.removeAttribute(l);break}if(a==null||typeof a=="function"||typeof a=="symbol"||typeof a=="boolean"){t.removeAttribute(l);break}a=di(a),t.setAttribute(l,a);break;case"action":case"formAction":if(typeof a=="function"){t.setAttribute(l,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}else typeof u=="function"&&(l==="formAction"?(e!=="input"&&Bt(t,e,"name",n.name,n,null),Bt(t,e,"formEncType",n.formEncType,n,null),Bt(t,e,"formMethod",n.formMethod,n,null),Bt(t,e,"formTarget",n.formTarget,n,null)):(Bt(t,e,"encType",n.encType,n,null),Bt(t,e,"method",n.method,n,null),Bt(t,e,"target",n.target,n,null)));if(a==null||typeof a=="symbol"||typeof a=="boolean"){t.removeAttribute(l);break}a=di(a),t.setAttribute(l,a);break;case"onClick":a!=null&&(t.onclick=Yl);return;case"onScroll":a!=null&&bt("scroll",t);return;case"onScrollEnd":a!=null&&bt("scrollend",t);return;case"dangerouslySetInnerHTML":if(a!=null){if(typeof a!="object"||!("__html"in a))throw Error(o(61));if(l=a.__html,l!=null){if(n.children!=null)throw Error(o(60));(u!=null?u.__html:void 0)!==l&&(t.innerHTML=l)}}break;case"multiple":t.multiple=a&&typeof a!="function"&&typeof a!="symbol";break;case"muted":t.muted=a&&typeof a!="function"&&typeof a!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(a==null||typeof a=="function"||typeof a=="boolean"||typeof a=="symbol"){t.removeAttribute("xlink:href");break}l=di(a),t.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",l);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":a!=null&&typeof a!="function"&&typeof a!="symbol"?t.setAttribute(l,a):t.removeAttribute(l);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"credentialless":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":a&&typeof a!="function"&&typeof a!="symbol"?t.setAttribute(l,""):t.removeAttribute(l);break;case"capture":case"download":a===!0?t.setAttribute(l,""):a!==!1&&a!=null&&typeof a!="function"&&typeof a!="symbol"?t.setAttribute(l,a):t.removeAttribute(l);break;case"cols":case"rows":case"size":case"span":a!=null&&typeof a!="function"&&typeof a!="symbol"&&!isNaN(a)&&1<=a?t.setAttribute(l,a):t.removeAttribute(l);break;case"rowSpan":case"start":a==null||typeof a=="function"||typeof a=="symbol"||isNaN(a)?t.removeAttribute(l):t.setAttribute(l,a);break;case"popover":bt("beforetoggle",t),bt("toggle",t),ri(t,"popover",a);break;case"xlinkActuate":ta(t,"http://www.w3.org/1999/xlink","xlink:actuate",a);break;case"xlinkArcrole":ta(t,"http://www.w3.org/1999/xlink","xlink:arcrole",a);break;case"xlinkRole":ta(t,"http://www.w3.org/1999/xlink","xlink:role",a);break;case"xlinkShow":ta(t,"http://www.w3.org/1999/xlink","xlink:show",a);break;case"xlinkTitle":ta(t,"http://www.w3.org/1999/xlink","xlink:title",a);break;case"xlinkType":ta(t,"http://www.w3.org/1999/xlink","xlink:type",a);break;case"xmlBase":ta(t,"http://www.w3.org/XML/1998/namespace","xml:base",a);break;case"xmlLang":ta(t,"http://www.w3.org/XML/1998/namespace","xml:lang",a);break;case"xmlSpace":ta(t,"http://www.w3.org/XML/1998/namespace","xml:space",a);break;case"is":ri(t,"is",a);break;case"innerText":case"textContent":return;default:if(!(2<l.length)||l[0]!=="o"&&l[0]!=="O"||l[1]!=="n"&&l[1]!=="N")l=tv.get(l)||l,ri(t,l,a);else return}Nt=!0}function Uf(t,e,l,a,n,u){switch(l){case"style":Mr(t,a,u);return;case"dangerouslySetInnerHTML":if(a!=null){if(typeof a!="object"||!("__html"in a))throw Error(o(61));if(l=a.__html,l!=null){if(n.children!=null)throw Error(o(60));(u!=null?u.__html:void 0)!==l&&(t.innerHTML=l)}}break;case"children":if(typeof a=="string")Tn(t,a);else if(typeof a=="number"||typeof a=="bigint")Tn(t,""+a);else return;break;case"onScroll":a!=null&&bt("scroll",t);return;case"onScrollEnd":a!=null&&bt("scroLine truncated
`;qt&&(xe+=qt+`
`),Lt&&(xe+=(Array.isArray(Lt)?Lt.join(`
`):String(Lt))+`
`),je+=JSON.stringify(W,null,2).slice(0,4e3),Ul(je),ge("已返回登录信息,见下方")}catch(W){ge("发起失败:"+W.message)}},[]),Ct=v.useCallback(async()=>{const z=at.trim();if(!z){lt("请填要查配额的用户 id");return}try{const w=await tt($.adminQuotaUser(z));lt("用户 "+z.slice(0,8)+":本月用量 "+rr(w.used_usd_micros)+" / 配额 "+rr(w.quota_usd_micros)+(w.remaining_usd_micros!==null&&w.remaining_usd_micros!==void 0?"(剩余 "+rr(w.remaining_usd_micros)+")":"")+" | 月份 "+(w.month||""))}catch(w){lt(fr(w))}},[at]),Nl=v.useCallback(async()=>{if(window.confirm("确定手动触发 sweep 吗?超阈值的陈旧 running 任务会被标为 interrupted。"))try{const w=(await tt($.adminSweep,"POST",{})).swept||[];lt("sweep 完成,清理 "+w.length+" 个任务"+(w.length?":"+w.join("、"):""))}catch(z){lt(fr(z))}},[]),De=v.useCallback(async()=>{try{const z=await tt($.adminBackup,"POST",{});lt("备份完成:backend="+z.backend+" | 路径 "+z.path+" | 大小 "+z.size_bytes+" 字节 | 任务 "+z.task_count+" 行")}catch(z){lt(fr(z))}},[]);return{keySaved:i,keyState:m,quotaText:_,healthText:N,adminGate:G,adminBody:Q,adminResult:B,adminUserId:at,setAdminUserId:I,projects:V,projectId:Ot,setProjectId:te,projectMsg:nt,githubRepos:ee,workers:yt,workersSummary:de,workersError:Ft,members:tl,memberMsg:Y,memberError:et,skills:gt,apps:Oe,mcpServers:y,skillMsg:F,skillError:pt,mcpMsg:_t,mcpOauthMsg:ut,mcpOauthBox:Va,envs:Le,envCount:zt,envMsg:Fl,envRepoLine:ha,envRepoBar:el,envRepoMsg:ne,envSelect:ol,setEnvSelect:pe,models:Hl,modelCustomVisible:Bl,refreshHealth:ml,loadQuota:ql,probeAdmin:La,refreshProjects:$t,loadGithubRepos:Wl,loadRelayModels:yn,refreshWorkers:gn,refreshEnvs:Ke,refreshMembers:Za,refreshSkills:va,saveKeyInput:ou,clearKeyInput:du,createProject:$l,createEnv:Se,archiveEnv:hl,saveEnvRepo:be,inviteMember:H,changeMemberRole:D,reloadMcp:L,mcpOauth:J,adminQuota:Ct,adminSweep:Nl,adminBackup:De}}function Jy(){const[i,r]=v.useState([]),[m,o]=v.useState(""),[_,C]=v.useState(""),[N,x]=v.useState(""),[G,U]=v.useState(""),Q=v.useCallback(async(at,I)=>{const V=at!==void 0?at:I;if(!V){r([]);return}try{const dt=await tt($.tasks(V));r(dt.tasks||[]),o("")}catch(dt){o("加载失败:"+dt.message)}},[]),b=v.useMemo(()=>{const at=G.trim().toLowerCase();return i.filter(I=>!(_&&I.status!==_||N&&(I.executor||"")!==N||at&&!((I.id||"")+" "+(I.prompt||"")).toLowerCase().includes(at)))},[i,_,N,G]),B=b.length+" 个任务(共 "+i.length+" 个)",lt=v.useCallback(async(at,I)=>{const V={...at};I.length&&(V.upload_id=await Ly(I));const dt=await tt($.tasksCreate,"POST",V);return"任务已建:"+Me(dt.id)},[]);return{tasks:i,taskError:m,statusFilter:_,setStatusFilter:C,executorFilter:N,setExecutorFilter:x,searchText:G,setSearchText:U,filteredTasks:b,taskCountText:B,refreshTasks:Q,dispatch:lt}}function Fy(i,r){const[m,o]=v.useState(null),[_,C]=v.useState(""),[N,x]=v.useState(""),[G,U]=v.useState(""),[Q,b]=v.useState(""),[B,lt]=v.useState(!1),[at,I]=v.useState(""),[V,dt]=v.useState([]),[Ot,te]=v.useState([]),[nt,Xt]=v.useState(""),[ee,ct]=v.useState([]),[yt,le]=v.useState(""),[de,Kt]=v.useState(""),[Ft,Wt]=v.useState([]),[tl,mt]=v.useState(""),[Y,A]=v.useState(""),[et,Tt]=v.useState(""),[gt,ie]=v.useState(""),[Oe,ze]=v.useState([]),[y,R]=v.useState([]),[F,K]=v.useState(""),[pt,ht]=v.useState([]),[_t,k]=v.useState(""),[ut,ge]=v.useState(""),[Va,Ul]=v.useState(""),[Le,Gt]=v.useState(""),[zt,Re]=v.useState([]),[Fl,ae]=v.useState(""),[ha,El]=v.useState(null),el=v.useRef(null),Ze=v.useRef(null),ne=v.useRef(null);ne.current=m;const qe=v.useCallback(()=>{if(el.current){try{el.current.abort()}catch{}el.current=null}Ze.current&&(clearTimeout(Ze.current),Ze.current=null)},[]),ol=v.useCallback(async H=>{try{const D=await tt($.taskAgents(H));te(D.agents||[]),Xt(D.note||"")}catch(D){te([]),Xt("子代理链路加载失败:"+D.message)}},[]),pe=v.useCallback(H=>{Ze.current&&clearTimeout(Ze.current),Ze.current=setTimeout(()=>void ol(H),1e3)},[ol]),Hl=v.useCallback(async H=>{if(!H.coordinator_parts){dt([]);return}try{const D=await tt($.tasksByParent(H.project_id||"",H.id));dt(D.tasks||[])}catch{dt([])}},[]),dl=v.useCallback(async H=>{try{const D=await tt($.taskFollowups(H));ze(D.followups||[])}catch{ze([])}},[]),Bl=v.useCallback(async H=>{try{const D=await tt($.taskChatHistory(H));El(D)}catch{El(null)}},[]),Ye=v.useCallback(async H=>{var L;const D=H||((L=ne.current)==null?void 0:L.id);if(D)try{const J=await tt($.taskReviews(D));ct(J.reviews||[]),Kt("")}catch(J){Kt("评审队列加载失败:"+J.message)}},[]),Vt=v.useCallback(async H=>{var L;const D=H||((L=ne.current)==null?void 0:L.id);if(D)try{const J=await tt($.taskApprovals(D));R(J.approvals||[])}catch(J){K("审批队列加载失败:"+J.message)}},[]),ll=v.useCallback(async H=>{try{const D=await tt($.taskMessages(H));ht(D.messages||[])}catch{ht([])}},[]),ml=v.useCallback(async H=>{try{const D=await tt($.taskThread(H)),L=D.thread||D;let J=L.turns;J==null&&(J=L.tLine truncated
`),xe+=JSON.stringify(W,null,2).slice(0,4e3),Ul(xe),ge("已返回登录信息,见下方")}catch(W){ge("发起失败:"+W.message)}},[]),Ct=v.useCallback(async()=>{const z=at.trim();if(!z){lt("请填要查配额的用户 id");return}try{const w=await tt($.adminQuotaUser(z));lt("用户 "+z.slice(0,8)+":本月用量 "+rr(w.used_usd_micros)+" / 配额 "+rr(w.quota_usd_micros)+(w.remaining_usd_micros!==null&&w.remaining_usd_micros!==void 0?"(剩余 "+rr(w.remaining_usd_micros)+")":"")+" | 月份 "+(w.month||""))}catch(w){lt(fr(w))}},[at]),Nl=v.useCallback(async()=>{if(window.confirm("确定手动触发 sweep 吗?超阈值的陈旧 running 任务会被标为 interrupted。"))try{const w=(await tt($.adminSweep,"POST",{})).swept||[];lt("sweep 完成,清理 "+w.length+" 个任务"+(w.length?":"+w.join("、"):""))}catch(z){lt(fr(z))}},[]),De=v.useCallback(async()=>{try{const z=await tt($.adminBackup,"POST",{});lt("备份完成:backend="+z.backend+" | 路径 "+z.path+" | 大小 "+z.size_bytes+" 字节 | 任务 "+z.task_count+" 行")}catch(z){lt(fr(z))}},[]);return{keySaved:i,keyState:m,quotaText:_,healthText:N,adminGate:G,adminBody:Q,adminResult:B,adminUserId:at,setAdminUserId:I,projects:V,projectId:Ot,setProjectId:te,projectMsg:nt,githubRepos:ee,workers:yt,workersSummary:de,workersError:Ft,members:tl,memberMsg:Y,memberError:et,skills:gt,apps:Oe,mcpServers:y,skillMsg:F,skillError:pt,mcpMsg:_t,mcpOauthMsg:ut,mcpOauthBox:Va,envs:Le,envCount:zt,envMsg:Fl,envRepoLine:ha,envRepoBar:el,envRepoMsg:ne,envSelect:ol,setEnvSelect:pe,models:Hl,modelCustomVisible:Bl,refreshHealth:ml,loadQuota:ql,probeAdmin:La,refreshProjects:$t,loadGithubRepos:Wl,loadRelayModels:yn,refreshWorkers:gn,refreshEnvs:Ke,refreshMembers:Za,refreshSkills:va,saveKeyInput:ou,clearKeyInput:du,createProject:$l,createEnv:Se,archiveEnv:hl,saveEnvRepo:be,inviteMember:H,changeMemberRole:D,reloadMcp:L,mcpOauth:J,adminQuota:Ct,adminSweep:Nl,adminBackup:De}}function $y(){const[i,r]=v.useState([]),[m,o]=v.useState(""),[_,C]=v.useState(""),[N,x]=v.useState(""),[G,U]=v.useState(""),Q=v.useCallback(async(at,I)=>{const V=at!==void 0?at:I;if(!V){r([]);return}try{const dt=await tt($.tasks(V));r(dt.tasks||[]),o("")}catch(dt){o("加载失败:"+dt.message)}},[]),b=v.useMemo(()=>{const at=G.trim().toLowerCase();return i.filter(I=>!(_&&I.status!==_||N&&(I.executor||"")!==N||at&&!((I.id||"")+" "+(I.prompt||"")).toLowerCase().includes(at)))},[i,_,N,G]),B=b.length+" 个任务(共 "+i.length+" 个)",lt=v.useCallback(async(at,I)=>{const V={...at};I.length&&(V.upload_id=await Jy(I));const dt=await tt($.tasksCreate,"POST",V);return"任务已建:"+Me(dt.id)},[]);return{tasks:i,taskError:m,statusFilter:_,setStatusFilter:C,executorFilter:N,setExecutorFilter:x,searchText:G,setSearchText:U,filteredTasks:b,taskCountText:B,refreshTasks:Q,dispatch:lt}}function Iy(i,r){const[m,o]=v.useState(null),[_,C]=v.useState(""),[N,x]=v.useState(""),[G,U]=v.useState(""),[Q,b]=v.useState(""),[B,lt]=v.useState(!1),[at,I]=v.useState(""),[V,dt]=v.useState([]),[Ot,te]=v.useState([]),[nt,Xt]=v.useState(""),[ee,ct]=v.useState([]),[yt,le]=v.useState(""),[de,Kt]=v.useState(""),[Ft,Wt]=v.useState([]),[tl,mt]=v.useState(""),[Y,A]=v.useState(""),[et,Tt]=v.useState(""),[gt,ie]=v.useState(""),[Oe,ze]=v.useState([]),[y,R]=v.useState([]),[F,K]=v.useState(""),[pt,ht]=v.useState([]),[_t,k]=v.useState(""),[ut,ge]=v.useState(""),[Va,Ul]=v.useState(""),[Le,Gt]=v.useState(""),[zt,Re]=v.useState([]),[Fl,ae]=v.useState(""),[ha,El]=v.useState(null),el=v.useRef(null),Ze=v.useRef(null),ne=v.useRef(null);ne.current=m;const qe=v.useCallback(()=>{if(el.current){try{el.current.abort()}catch{}el.current=null}Ze.current&&(clearTimeout(Ze.current),Ze.current=null)},[]),ol=v.useCallback(async H=>{try{const D=await tt($.taskAgents(H));te(D.agents||[]),Xt(D.note||"")}catch(D){te([]),Xt("子代理链路加载失败:"+D.message)}},[]),pe=v.useCallback(H=>{Ze.current&&clearTimeout(Ze.current),Ze.current=setTimeout(()=>void ol(H),1e3)},[ol]),Hl=v.useCallback(async H=>{if(!H.coordinator_parts){dt([]);return}try{const D=await tt($.tasksByParent(H.project_id||"",H.id));dt(D.tasks||[])}catch{dt([])}},[]),dl=v.useCallback(async H=>{try{const D=await tt($.taskFollowups(H));ze(D.followups||[])}catch{ze([])}},[]),Bl=v.useCallback(async H=>{try{const D=await tt($.taskChatHistory(H));El(D)}catch{El(null)}},[]),Ye=v.useCallback(async H=>{var L;const D=H||((L=ne.current)==null?void 0:L.id);if(D)try{const J=await tt($.taskReviews(D));ct(J.reviews||[]),Kt("")}catch(J){Kt("评审队列加载失败:"+J.message)}},[]),Vt=v.useCallback(async H=>{var L;const D=H||((L=ne.current)==null?void 0:L.id);if(D)try{const J=await tt($.taskApprovals(D));R(J.approvals||[])}catch(J){K("审批队列加载失败:"+J.message)}},[]),ll=v.useCallback(async H=>{try{const D=await tt($.taskMessages(H));ht(D.messages||[])}catch{ht([])}},[]),ml=v.useCallback(async H=>{try{const D=await tt($.taskThread(H)),L=D.thread||D;let J=L.turns;J==null&&(J=L.tLine truncated
`);Ue=Il.pop()||"";for(const ii of Il){const mu=ii.split(`
`).filter(we=>we.indexOf("data: ")===0).map(we=>we.slice(6)).join(`
@@ -68,7 +68,7 @@ Error generating stack: `+a.message+`
`+D.result_text.slice(0,8e3)+`
`),D.error_text&&(L+=`=== error ===
`+D.error_text.slice(0,8e3)+`
`),C(L||"(暂无 result/error 输出)")}catch{}dl(H.id),Bl(H.id),Ye(H.id),Vt(H.id),Hl(H),ol(H.id),ll(H.id),ml(H.id),ql(H.id)}},[dl,Bl,Ye,Vt,Hl,ol,ll,ml,ql]),gn=v.useCallback(async H=>{const D=ne.current;if(!D)return;const L={cancel:"确定取消该任务吗?",merge:"确定把 completed 任务标为 merged 吗?",pr:"确定为该任务提 PR 吗?(会在仓库真实建 PR)"};if(!(L[H]&&!window.confirm(L[H])))try{const J=await tt($.taskAction(D.id,H),"POST",{});x(H+" 已提交:"+JSON.stringify(J).slice(0,300)),r(),await Wl(D.id)}catch(J){x(H+" 失败:"+J.message)}},[Wl,r]),Ke=v.useCallback(async()=>{const H=ne.current;if(H)try{const D=await tt($.taskCost(H.id));b(JSON.stringify(D,null,2).slice(0,4e3))}catch(D){b("查成本失败:"+D.message)}},[]),Za=v.useCallback(async H=>{const D=ne.current;if(D){if(!H.trim()){I("分支消息必填");return}if(!su.includes(D.status)){I("仅终态任务可分支");return}try{const L=await tt($.taskFork(D.id),"POST",{message:H.trim()});I("分支任务已建:"+L.id.slice(0,8)),r()}catch(L){I("分支失败:"+L.message)}}},[r]),va=v.useCallback(async H=>{const D=ne.current;if(D)try{await tt($.taskReviews(D.id),"POST",H),le("评审已登记(requested)"),await Ye(D.id)}catch(L){le("登记评审需求失败:"+L.message)}},[Ye]),ou=v.useCallback(H=>{const D=ne.current;if(!D)return;const L=window.prompt("输入该条评审的 findings(将写回记录并标为 completed):");L!==null&&tt($.taskReviewFindings(D.id,H),"POST",{findings:L}).then(()=>void Ye(D.id)).catch(J=>le("写 findings 失败:"+J.message))},[Ye]),du=v.useCallback((H,D)=>{const L=ne.current;if(!L)return;const J=D==="approved"?"approve":"deny";tt($.taskApprovalDecision(L.id,H,J),"POST",{}).then(()=>{K("已记录"+(D==="approved"?"允许":"拒绝")+"(当前版本只留回执,不拦截实时行为)"),Vt(L.id)}).catch(Ct=>K("决定失败:"+Ct.message))},[Vt]),$l=v.useCallback(async(H,D,L)=>{const J=ne.current;if(J){if(!D.trim()){k("目标任务 id 不能为空");return}if(!L.trim()){k("消息正文不能为空");return}try{const Ct=await tt($.taskMessagesTo(D.trim()),"POST",{from_task_id:J.id,body:L.trim(),mode:H});k("已发送("+Ct.delivery+")"),await ll(J.id)}catch(Ct){k("发送失败:"+Ct.message)}}},[ll]),Se=v.useCallback((H,D)=>{const L=ne.current;if(!L)return;if(!["completed","failed","interrupted"].includes(L.status)){Gt("仅 completed/failed/interrupted 任务可操作线程(merged/merge-failed 不可改,服务端同样 409)");return}const J={};if(H==="rename"){if(!D.trim()){Gt("新线程名不能为空");return}J.name=D.trim()}tt($.taskThreadAction(L.id,H),"POST",J).then(Ct=>{Gt(H+" 已提交:"+JSON.stringify(Ct).slice(0,300)),ml(L.id),ql(L.id)}).catch(Ct=>Gt(H+" 失败:"+Ct.message))},[ml,ql]),hl=v.useCallback(async H=>{const D=ne.current;if(!D)return;const L=H.trim();if(!L){ae("消息不能为空");return}try{su.includes(D.status)&&D.status!=="merged"?(await tt($.taskContinue(D.id),"POST",{message:L}),ae("已重新排队,同一会话继续"),r(),await Wl(D.id)):["queued","running"].includes(D.status)?(await tt($.taskFollowups(D.id),"POST",{body:L,mode:"direct"}),ae("已直接发送"),await dl(D.id),await Bl(D.id)):ae("merged/merge-failed 任务不可继续,也不可发后续消息")}catch(J){ae("发送失败:"+J.message)}},[Wl,r,dl,Bl]),be=v.useCallback(async()=>{const H=ne.current;if(!H){ie("先选一个任务");return}try{const D=await tt($.taskTrace(H.id)),L=new Blob([JSON.stringify({task_id:H.id,status:D.status,note:D.note||"",count:(D.entries||[]).length,entries:D.entries||[]},null,2)],{type:"application/json"}),J=document.createElement("a");J.href=URL.createObjectURL(L),J.download="trace-"+H.id.slice(0,8)+".json",document.body.appendChild(J),J.click(),J.remove(),setTimeout(()=>URL.revokeObjectURL(J.href),1e3),ie("已下载完整链路 "+(D.entries||[]).length+" 条")}catch(D){ie("下载失败:"+D.message)}},[]);return v.useEffect(()=>()=>qe(),[qe]),{currentTask:m,detailBody:_,actionMsg:N,actionReasons:G,costBox:Q,forkVisible:B,setForkVisible:lt,forkMsg:at,coordChildren:V,agents:Ot,agentsNote:nt,reviews:ee,reviewMsg:yt,reviewError:de,traceEntries:Ft,traceNote:tl,traceDone:Y,traceKind:et,setTraceKind:Tt,traceMsg:gt,followups:Oe,approvals:y,approvalMsg:F,peerMessages:pt,peerMsg:_t,threadText:ut,threadGateNote:Va,threadMsg:Le,threadList:zt,chatMsg:Fl,chatHistory:ha,showDetail:Wl,refreshDetailLists:yn,doAction:gn,taskCost:Ke,forkTask:Za,postReview:va,submitFindings:ou,decideApproval:du,postPeer:$l,threadAction:Se,sendChatMessage:hl,downloadTrace:be,refreshReviews:()=>void Ye(),refreshApprovals:()=>void Vt()}}function Wy(i){const[r,m]=v.useState([]),[o,_]=v.useState(""),[C,N]=v.useState(null),[x,G]=v.useState(""),U=v.useCallback(async lt=>{const at=lt!==void 0?lt:i();if(!at){m([]);return}try{const I=await tt($.projectAutomations(at));m(I.automations||[])}catch(I){_("自动化加载失败:"+I.message)}},[i]),Q=v.useCallback(async(lt,at,I,V)=>{cLine truncated
`),C(L||"(暂无 result/error 输出)")}catch{}dl(H.id),Bl(H.id),Ye(H.id),Vt(H.id),Hl(H),ol(H.id),ll(H.id),ml(H.id),ql(H.id)}},[dl,Bl,Ye,Vt,Hl,ol,ll,ml,ql]),gn=v.useCallback(async H=>{const D=ne.current;if(!D)return;const L={cancel:"确定取消该任务吗?",merge:"确定把 completed 任务标为 merged 吗?",pr:"确定为该任务提 PR 吗?(会在仓库真实建 PR)"};if(!(L[H]&&!window.confirm(L[H])))try{const J=await tt($.taskAction(D.id,H),"POST",{});x(H+" 已提交:"+JSON.stringify(J).slice(0,300)),r(),await Wl(D.id)}catch(J){x(H+" 失败:"+J.message)}},[Wl,r]),Ke=v.useCallback(async()=>{const H=ne.current;if(H)try{const D=await tt($.taskCost(H.id));b(JSON.stringify(D,null,2).slice(0,4e3))}catch(D){b("查成本失败:"+D.message)}},[]),Za=v.useCallback(async H=>{const D=ne.current;if(D){if(!H.trim()){I("分支消息必填");return}if(!su.includes(D.status)){I("仅终态任务可分支");return}try{const L=await tt($.taskFork(D.id),"POST",{message:H.trim()});I("分支任务已建:"+L.id.slice(0,8)),r()}catch(L){I("分支失败:"+L.message)}}},[r]),va=v.useCallback(async H=>{const D=ne.current;if(D)try{await tt($.taskReviews(D.id),"POST",H),le("评审已登记(requested)"),await Ye(D.id)}catch(L){le("登记评审需求失败:"+L.message)}},[Ye]),ou=v.useCallback(H=>{const D=ne.current;if(!D)return;const L=window.prompt("输入该条评审的 findings(将写回记录并标为 completed):");L!==null&&tt($.taskReviewFindings(D.id,H),"POST",{findings:L}).then(()=>void Ye(D.id)).catch(J=>le("写 findings 失败:"+J.message))},[Ye]),du=v.useCallback((H,D)=>{const L=ne.current;if(!L)return;const J=D==="approved"?"approve":"deny";tt($.taskApprovalDecision(L.id,H,J),"POST",{}).then(()=>{K("已记录"+(D==="approved"?"允许":"拒绝")+"(当前版本只留回执,不拦截实时行为)"),Vt(L.id)}).catch(Ct=>K("决定失败:"+Ct.message))},[Vt]),$l=v.useCallback(async(H,D,L)=>{const J=ne.current;if(J){if(!D.trim()){k("目标任务 id 不能为空");return}if(!L.trim()){k("消息正文不能为空");return}try{const Ct=await tt($.taskMessagesTo(D.trim()),"POST",{from_task_id:J.id,body:L.trim(),mode:H});k("已发送("+Ct.delivery+")"),await ll(J.id)}catch(Ct){k("发送失败:"+Ct.message)}}},[ll]),Se=v.useCallback((H,D)=>{const L=ne.current;if(!L)return;if(!["completed","failed","interrupted"].includes(L.status)){Gt("仅 completed/failed/interrupted 任务可操作线程(merged/merge-failed 不可改,服务端同样 409)");return}const J={};if(H==="rename"){if(!D.trim()){Gt("新线程名不能为空");return}J.name=D.trim()}tt($.taskThreadAction(L.id,H),"POST",J).then(Ct=>{Gt(H+" 已提交:"+JSON.stringify(Ct).slice(0,300)),ml(L.id),ql(L.id)}).catch(Ct=>Gt(H+" 失败:"+Ct.message))},[ml,ql]),hl=v.useCallback(async H=>{const D=ne.current;if(!D)return;const L=H.trim();if(!L){ae("消息不能为空");return}try{su.includes(D.status)&&D.status!=="merged"?(await tt($.taskContinue(D.id),"POST",{message:L}),ae("已重新排队,同一会话继续"),r(),await Wl(D.id)):["queued","running"].includes(D.status)?(await tt($.taskFollowups(D.id),"POST",{body:L,mode:"direct"}),ae("已直接发送"),await dl(D.id),await Bl(D.id)):ae("merged/merge-failed 任务不可继续,也不可发后续消息")}catch(J){ae("发送失败:"+J.message)}},[Wl,r,dl,Bl]),be=v.useCallback(async()=>{const H=ne.current;if(!H){ie("先选一个任务");return}try{const D=await tt($.taskTrace(H.id)),L=new Blob([JSON.stringify({task_id:H.id,status:D.status,note:D.note||"",count:(D.entries||[]).length,entries:D.entries||[]},null,2)],{type:"application/json"}),J=document.createElement("a");J.href=URL.createObjectURL(L),J.download="trace-"+H.id.slice(0,8)+".json",document.body.appendChild(J),J.click(),J.remove(),setTimeout(()=>URL.revokeObjectURL(J.href),1e3),ie("已下载完整链路 "+(D.entries||[]).length+" 条")}catch(D){ie("下载失败:"+D.message)}},[]);return v.useEffect(()=>()=>qe(),[qe]),{currentTask:m,detailBody:_,actionMsg:N,actionReasons:G,costBox:Q,forkVisible:B,setForkVisible:lt,forkMsg:at,coordChildren:V,agents:Ot,agentsNote:nt,reviews:ee,reviewMsg:yt,reviewError:de,traceEntries:Ft,traceNote:tl,traceDone:Y,traceKind:et,setTraceKind:Tt,traceMsg:gt,followups:Oe,approvals:y,approvalMsg:F,peerMessages:pt,peerMsg:_t,threadText:ut,threadGateNote:Va,threadMsg:Le,threadList:zt,chatMsg:Fl,chatHistory:ha,showDetail:Wl,refreshDetailLists:yn,doAction:gn,taskCost:Ke,forkTask:Za,postReview:va,submitFindings:ou,decideApproval:du,postPeer:$l,threadAction:Se,sendChatMessage:hl,downloadTrace:be,refreshReviews:()=>void Ye(),refreshApprovals:()=>void Vt()}}function Py(i){const[r,m]=v.useState([]),[o,_]=v.useState(""),[C,N]=v.useState(null),[x,G]=v.useState(""),U=v.useCallback(async lt=>{const at=lt!==void 0?lt:i();if(!at){m([]);return}try{const I=await tt($.projectAutomations(at));m(I.automations||[])}catch(I){_("自动化加载失败:"+I.message)}},[i]),Q=v.useCallback(async(lt,at,I,V)=>{cLine truncated
<style rel="stylesheet" crossorigin>:root{--text:#1f2328;--muted:#656d76;--subtle:#6e7781;--line:#d0d7de;--line-muted:#d8dee4;--paper:#ffffff;--card:#ffffff;--subtle-bg:#f6f8fa;--inset-bg:#f6f8fa;--accent:#0969da;--accent-emphasis:#0969da;--green:#2da44e;--green-hover:#2c974b;--success:#1a7f37;--danger:#d1242f;--danger-bg:#ffebe9;--attention:#9a6700;--done:#8250df;--selected-bg:#ddf4ff;--radius:6px;--shadow:0 1px 0 rgba(27,31,36,.04);--sans:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif;--mono:ui-monospace,SFMono-Regular,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;--ctl:32px}*{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--sans);margin:0;color:var(--text);background:#fff;line-height:1.5;font-size:14px}a{color:var(--accent);text-underline-offset:3px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}.muted{color:var(--muted);font-size:12px;line-height:1.5}.err{color:var(--danger)}.ok{color:var(--success)}button{cursor:pointer;font-weight:500;border-radius:var(--radius);border:1px solid var(--line);background:#fff;color:var(--text);box-shadow:var(--shadow)}button:hover{background:var(--subtle-bg)}button:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}button.primary,button.seal{background:var(--green);border-color:#1b1f2426;color:#fff}button.primary:hover,button.seal:hover{background:var(--green-hover)}button.danger{color:var(--danger);border-color:var(--line);background:#fff}button.danger:hover{background:var(--danger-bg);color:var(--danger)}.icon-btn{width:32px;height:32px;padding:0;display:grid;place-items:center;border:1px solid var(--line);border-radius:var(--radius);background:#fff;color:var(--text);font-size:16px;line-height:1}.icon-btn:hover{background:var(--subtle-bg)}.dash-topbar{position:sticky;top:0;z-index:10;background:#24292f;color:#fff;border-bottom:1px solid rgba(255,255,255,.15);padding:10px 20px 8px}.dash-topbar .muted{color:#ffffffbf}.dash-topbar-row{display:flex;gap:14px;align-items:center;flex-wrap:wrap}.dash-brand{font-weight:600;font-size:16px;color:#fff}.dash-status{font-size:13px;font-weight:600;color:#ffffffbf}.dash-status.ok{color:#2da44e}.dash-stamp{margin-left:auto}.dash-nav{display:flex;gap:4px;flex-wrap:wrap;margin-top:8px}.dash-nav a{color:#fff;text-decoration:none;font-size:13px;font-weight:600;padding:6px 12px;border-radius:var(--radius)}.dash-nav a:hover{background:#ffffff1f;text-decoration:none}.dash-page{max-width:1180px;margin:0 auto;padding:20px;display:flex;flex-direction:column;gap:20px}.dash-page>*{min-width:0}.dash-section>*{min-width:0}.dash-section{scroll-margin-top:130px;display:flex;flex-direction:column;gap:16px}.dash-section.card{padding:16px}.dash-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.dash-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px;min-width:0}.dash-card-label{color:var(--muted);font-size:12px;font-weight:600}.dash-card-value{font-size:24px;font-weight:600;line-height:1.3;overflow-wrap:anywhere}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:none;padding:16px}.card h2{font-size:14px;margin:0 0 12px;font-weight:600}.card h3{font-size:14px;margin:24px 0 12px;padding-top:16px;border-top:1px solid var(--line);font-weight:600}.card h3:first-of-type{border-top:0;padding-top:0}.composer h2{font-size:16px}.composer textarea.prompt{min-height:148px;font-size:14px;padding:12px;border-radius:var(--radius)}.composer textarea.coord{font-family:var(--mono);font-size:13px}.bar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:12px 0}.bar>button,.bar>label{display:inline-flex;align-items:center;height:var(--ctl);min-height:var(--ctl);padding:0 16px;box-sizing:border-box;white-space:nowrap}.bar>input,.bar>select{height:var(--ctl);min-height:var(--ctl)}input,select,textarea,button{font:inherit;font-size:14px;padding:5px 12px;border-radius:var(--radius);border:1px solid var(--line);background:#fff;color:var(--text)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #0969da4d}select{-moz-appearance:none;appearance:none;-webkit-appearance:none;cursor:pointer;padding-right:34px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' fill='none' stroke='%23656d76' stroke-width='1.5' stroke-linecap='round'/></svg>");background-repeat:no-repeat;background-position:right 12px center}select::-ms-expand{display:none}select:disabled,input:disabled{color:var(--muted);background:var(--subtle-bg);cursor:not-allowed}input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent)}input[type=file]{height:var(--ctl);display:inline-flex;align-items:center;padding:0 12px;border:1px dashed var(--line);border-radius:var(-Line truncated
</head>
<body>