nebula-notebook 0.2.0 → 0.2.2

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.
Files changed (100) hide show
  1. package/README.md +35 -20
  2. package/dist/assets/{errorwidget-C4r2j2DQ.js → errorwidget-Wy5ajPiM.js} +1 -1
  3. package/dist/assets/{index-Day3QcNs.js → index-B_Bs5koo.js} +1 -1
  4. package/dist/assets/index-DK4nS74r.js +829 -0
  5. package/dist/assets/{index-D5w21_Z8.js → index-DeQN03nW.js} +1 -1
  6. package/dist/assets/index-DzjpmUak.css +32 -0
  7. package/dist/assets/{index-CsHoPQy-.js → index-g6MjT-VG.js} +1 -1
  8. package/dist/assets/{services-shim-D6p_A67v.js → services-shim-BirHVsih.js} +1 -1
  9. package/dist/index.html +2 -2
  10. package/node-server/dist/auth/auth-middleware.js +22 -4
  11. package/node-server/dist/auth/auth-service.js +37 -7
  12. package/node-server/dist/cluster/client-registration.d.ts +12 -1
  13. package/node-server/dist/cluster/client-registration.js +35 -2
  14. package/node-server/dist/cluster/kernel-proxy.js +19 -3
  15. package/node-server/dist/cluster/server-registry.d.ts +9 -0
  16. package/node-server/dist/cluster/server-registry.js +26 -0
  17. package/node-server/dist/discovery/conda-locations.d.ts +73 -0
  18. package/node-server/dist/discovery/conda-locations.js +427 -0
  19. package/node-server/dist/discovery/discovery-service.d.ts +73 -4
  20. package/node-server/dist/discovery/discovery-service.js +211 -127
  21. package/node-server/dist/discovery/types.d.ts +0 -1
  22. package/node-server/dist/discovery/types.js +1 -2
  23. package/node-server/dist/environment.d.ts +12 -0
  24. package/node-server/dist/environment.js +104 -0
  25. package/node-server/dist/fs/fs-service.d.ts +31 -1
  26. package/node-server/dist/fs/fs-service.js +160 -28
  27. package/node-server/dist/fs/types.d.ts +9 -0
  28. package/node-server/dist/fs/types.js +8 -0
  29. package/node-server/dist/index.js +71 -4
  30. package/node-server/dist/kernel/kernel-service.d.ts +17 -0
  31. package/node-server/dist/kernel/kernel-service.js +72 -4
  32. package/node-server/dist/kernel/kernelspec.d.ts +27 -0
  33. package/node-server/dist/kernel/kernelspec.js +75 -4
  34. package/node-server/dist/notebook/headless-handler.d.ts +10 -0
  35. package/node-server/dist/notebook/headless-handler.js +55 -5
  36. package/node-server/dist/notebook/undoRedoManager.d.ts +8 -0
  37. package/node-server/dist/notebook/undoRedoManager.js +39 -16
  38. package/node-server/dist/private-tmp.d.ts +14 -0
  39. package/node-server/dist/private-tmp.js +70 -0
  40. package/node-server/dist/routes/autocomplete.d.ts +19 -0
  41. package/node-server/dist/routes/autocomplete.js +294 -0
  42. package/node-server/dist/routes/fs.js +21 -4
  43. package/node-server/dist/routes/kernel.js +45 -2
  44. package/node-server/dist/routes/notebook.js +8 -2
  45. package/node-server/dist/routes/python.d.ts +1 -2
  46. package/node-server/dist/routes/python.js +139 -3
  47. package/node-server/dist/scheduler/allocation-service.d.ts +20 -0
  48. package/node-server/dist/scheduler/allocation-service.js +124 -8
  49. package/node-server/dist/scheduler/mock-scheduler.js +7 -3
  50. package/node-server/dist/scheduler/slurm-scheduler.js +21 -8
  51. package/node-server/dist/scheduler/types.d.ts +3 -2
  52. package/node-server/dist/terminal/agent-registry.d.ts +87 -0
  53. package/node-server/dist/terminal/agent-registry.js +246 -0
  54. package/node-server/dist/terminal/binding-store.d.ts +57 -0
  55. package/node-server/dist/terminal/binding-store.js +0 -0
  56. package/node-server/dist/terminal/pty-manager.d.ts +23 -6
  57. package/node-server/dist/terminal/pty-manager.js +130 -19
  58. package/node-server/dist/terminal/server.js +112 -21
  59. package/node-server/dist/terminal/types.d.ts +2 -0
  60. package/node-server/package.json +1 -0
  61. package/node_modules/nebula-autocomplete/README.md +145 -0
  62. package/node_modules/nebula-autocomplete/dist/backends/claude.d.ts +69 -0
  63. package/node_modules/nebula-autocomplete/dist/backends/claude.js +449 -0
  64. package/node_modules/nebula-autocomplete/dist/backends/codex.d.ts +45 -0
  65. package/node_modules/nebula-autocomplete/dist/backends/codex.js +108 -0
  66. package/node_modules/nebula-autocomplete/dist/client/fetcher.d.ts +16 -0
  67. package/node_modules/nebula-autocomplete/dist/client/fetcher.js +41 -0
  68. package/node_modules/nebula-autocomplete/dist/codemirror/ghostText.d.ts +43 -0
  69. package/node_modules/nebula-autocomplete/dist/codemirror/ghostText.js +175 -0
  70. package/node_modules/nebula-autocomplete/dist/core/engine.d.ts +17 -0
  71. package/node_modules/nebula-autocomplete/dist/core/engine.js +135 -0
  72. package/node_modules/nebula-autocomplete/dist/core/lru.d.ts +7 -0
  73. package/node_modules/nebula-autocomplete/dist/core/lru.js +26 -0
  74. package/node_modules/nebula-autocomplete/dist/core/prompt.d.ts +12 -0
  75. package/node_modules/nebula-autocomplete/dist/core/prompt.js +0 -0
  76. package/node_modules/nebula-autocomplete/dist/core/text.d.ts +53 -0
  77. package/node_modules/nebula-autocomplete/dist/core/text.js +169 -0
  78. package/node_modules/nebula-autocomplete/dist/index.d.ts +7 -0
  79. package/node_modules/nebula-autocomplete/dist/index.js +5 -0
  80. package/node_modules/nebula-autocomplete/dist/server/fastify.d.ts +40 -0
  81. package/node_modules/nebula-autocomplete/dist/server/fastify.js +52 -0
  82. package/node_modules/nebula-autocomplete/dist/transport.d.ts +55 -0
  83. package/node_modules/nebula-autocomplete/dist/transport.js +66 -0
  84. package/node_modules/nebula-autocomplete/dist/types.d.ts +103 -0
  85. package/node_modules/nebula-autocomplete/dist/types.js +1 -0
  86. package/node_modules/nebula-autocomplete/package.json +58 -0
  87. package/node_modules/nebula-autocomplete/server.d.ts +3 -0
  88. package/node_modules/nebula-autocomplete/server.js +3 -0
  89. package/package.json +17 -5
  90. package/scripts/postinstall.cjs +25 -5
  91. package/dist/assets/index-7-YBurka.js +0 -716
  92. package/dist/assets/index-CFBUnxSZ.css +0 -32
  93. package/node-server/dist/llm/index.d.ts +0 -5
  94. package/node-server/dist/llm/index.js +0 -21
  95. package/node-server/dist/llm/llm-service.d.ts +0 -77
  96. package/node-server/dist/llm/llm-service.js +0 -454
  97. package/node-server/dist/llm/types.d.ts +0 -40
  98. package/node-server/dist/llm/types.js +0 -15
  99. package/node-server/dist/routes/llm.d.ts +0 -8
  100. package/node-server/dist/routes/llm.js +0 -105
@@ -1,4 +1,4 @@
1
- import{c as ti,a as sc,g as Bd}from"./index-7-YBurka.js";var ie;(function(n){function e(l,q,A=0,N=-1){let H=l.length;if(H===0)return-1;A<0?A=Math.max(0,A+H):A=Math.min(A,H-1),N<0?N=Math.max(0,N+H):N=Math.min(N,H-1);let Z;N<A?Z=N+1+(H-A):Z=N-A+1;for(let Y=0;Y<Z;++Y){let ce=(A+Y)%H;if(l[ce]===q)return ce}return-1}n.firstIndexOf=e;function t(l,q,A=-1,N=0){let H=l.length;if(H===0)return-1;A<0?A=Math.max(0,A+H):A=Math.min(A,H-1),N<0?N=Math.max(0,N+H):N=Math.min(N,H-1);let Z;A<N?Z=A+1+(H-N):Z=A-N+1;for(let Y=0;Y<Z;++Y){let ce=(A-Y+H)%H;if(l[ce]===q)return ce}return-1}n.lastIndexOf=t;function i(l,q,A=0,N=-1){let H=l.length;if(H===0)return-1;A<0?A=Math.max(0,A+H):A=Math.min(A,H-1),N<0?N=Math.max(0,N+H):N=Math.min(N,H-1);let Z;N<A?Z=N+1+(H-A):Z=N-A+1;for(let Y=0;Y<Z;++Y){let ce=(A+Y)%H;if(q(l[ce],ce))return ce}return-1}n.findFirstIndex=i;function s(l,q,A=-1,N=0){let H=l.length;if(H===0)return-1;A<0?A=Math.max(0,A+H):A=Math.min(A,H-1),N<0?N=Math.max(0,N+H):N=Math.min(N,H-1);let Z;A<N?Z=A+1+(H-N):Z=A-N+1;for(let Y=0;Y<Z;++Y){let ce=(A-Y+H)%H;if(q(l[ce],ce))return ce}return-1}n.findLastIndex=s;function a(l,q,A=0,N=-1){let H=i(l,q,A,N);return H!==-1?l[H]:void 0}n.findFirstValue=a;function u(l,q,A=-1,N=0){let H=s(l,q,A,N);return H!==-1?l[H]:void 0}n.findLastValue=u;function c(l,q,A,N=0,H=-1){let Z=l.length;if(Z===0)return 0;N<0?N=Math.max(0,N+Z):N=Math.min(N,Z-1),H<0?H=Math.max(0,H+Z):H=Math.min(H,Z-1);let Y=N,ce=H-N+1;for(;ce>0;){let we=ce>>1,He=Y+we;A(l[He],q)<0?(Y=He+1,ce-=we+1):ce=we}return Y}n.lowerBound=c;function f(l,q,A,N=0,H=-1){let Z=l.length;if(Z===0)return 0;N<0?N=Math.max(0,N+Z):N=Math.min(N,Z-1),H<0?H=Math.max(0,H+Z):H=Math.min(H,Z-1);let Y=N,ce=H-N+1;for(;ce>0;){let we=ce>>1,He=Y+we;A(l[He],q)>0?ce=we:(Y=He+1,ce-=we+1)}return Y}n.upperBound=f;function p(l,q,A){if(l===q)return!0;if(l.length!==q.length)return!1;for(let N=0,H=l.length;N<H;++N)if(A?!A(l[N],q[N]):l[N]!==q[N])return!1;return!0}n.shallowEqual=p;function _(l,q={}){let{start:A,stop:N,step:H}=q;if(H===void 0&&(H=1),H===0)throw new Error("Slice `step` cannot be zero.");let Z=l.length;A===void 0?A=H<0?Z-1:0:A<0?A=Math.max(A+Z,H<0?-1:0):A>=Z&&(A=H<0?Z-1:Z),N===void 0?N=H<0?-1:Z:N<0?N=Math.max(N+Z,H<0?-1:0):N>=Z&&(N=H<0?Z-1:Z);let Y;H<0&&N>=A||H>0&&A>=N?Y=0:H<0?Y=Math.floor((N-A+1)/H+1):Y=Math.floor((N-A-1)/H+1);let ce=[];for(let we=0;we<Y;++we)ce[we]=l[A+we*H];return ce}n.slice=_;function b(l,q,A){let N=l.length;if(N<=1||(q<0?q=Math.max(0,q+N):q=Math.min(q,N-1),A<0?A=Math.max(0,A+N):A=Math.min(A,N-1),q===A))return;let H=l[q],Z=q<A?1:-1;for(let Y=q;Y!==A;Y+=Z)l[Y]=l[Y+Z];l[A]=H}n.move=b;function w(l,q=0,A=-1){let N=l.length;if(!(N<=1))for(q<0?q=Math.max(0,q+N):q=Math.min(q,N-1),A<0?A=Math.max(0,A+N):A=Math.min(A,N-1);q<A;){let H=l[q],Z=l[A];l[q++]=Z,l[A--]=H}}n.reverse=w;function x(l,q,A=0,N=-1){let H=l.length;if(H<=1||(A<0?A=Math.max(0,A+H):A=Math.min(A,H-1),N<0?N=Math.max(0,N+H):N=Math.min(N,H-1),A>=N))return;let Z=N-A+1;if(q>0?q=q%Z:q<0&&(q=(q%Z+Z)%Z),q===0)return;let Y=A+q;w(l,A,Y-1),w(l,Y,N),w(l,A,N)}n.rotate=x;function y(l,q,A=0,N=-1){let H=l.length;if(H===0)return;A<0?A=Math.max(0,A+H):A=Math.min(A,H-1),N<0?N=Math.max(0,N+H):N=Math.min(N,H-1);let Z;N<A?Z=N+1+(H-A):Z=N-A+1;for(let Y=0;Y<Z;++Y)l[(A+Y)%H]=q}n.fill=y;function C(l,q,A){let N=l.length;q<0?q=Math.max(0,q+N):q=Math.min(q,N);for(let H=N;H>q;--H)l[H]=l[H-1];l[q]=A}n.insert=C;function E(l,q){let A=l.length;if(q<0&&(q+=A),q<0||q>=A)return;let N=l[q];for(let H=q+1;H<A;++H)l[H-1]=l[H];return l.length=A-1,N}n.removeAt=E;function I(l,q,A=0,N=-1){let H=e(l,q,A,N);return H!==-1&&E(l,H),H}n.removeFirstOf=I;function R(l,q,A=-1,N=0){let H=t(l,q,A,N);return H!==-1&&E(l,H),H}n.removeLastOf=R;function L(l,q,A=0,N=-1){let H=l.length;if(H===0)return 0;A<0?A=Math.max(0,A+H):A=Math.min(A,H-1),N<0?N=Math.max(0,N+H):N=Math.min(N,H-1);let Z=0;for(let Y=0;Y<H;++Y)A<=N&&Y>=A&&Y<=N&&l[Y]===q||N<A&&(Y<=N||Y>=A)&&l[Y]===q?Z++:Z>0&&(l[Y-Z]=l[Y]);return Z>0&&(l.length=H-Z),Z}n.removeAllOf=L;function O(l,q,A=0,N=-1){let H,Z=i(l,q,A,N);return Z!==-1&&(H=E(l,Z)),{index:Z,value:H}}n.removeFirstWhere=O;function F(l,q,A=-1,N=0){let H,Z=s(l,q,A,N);return Z!==-1&&(H=E(l,Z)),{index:Z,value:H}}n.removeLastWhere=F;function $(l,q,A=0,N=-1){let H=l.length;if(H===0)return 0;A<0?A=Math.max(0,A+H):A=Math.min(A,H-1),N<0?N=Math.max(0,N+H):N=Math.min(N,H-1);let Z=0;for(let Y=0;Y<H;++Y)A<=N&&Y>=A&&Y<=N&&q(l[Y],Y)||N<A&&(Y<=N||Y>=A)&&q(l[Y],Y)?Z++:Z>0&&(l[Y-Z]=l[Y]);return Z>0&&(l.length=H-Z),Z}n.removeAllWhere=$})(ie||(ie={}));function*Pd(...n){for(const e of n)yield*e}function*Ii(){}function*Fd(n,e=0){for(const t of n)yield[e++,t]}function*Wd(n,e){let t=0;for(const i of n)e(i,t++)&&(yield i)}function en(n,e){let t=0;for(const i of n)if(e(i,t++))return i}function $d(n,e){let t=0;for(const i of n)if(e(i,t++))return t-1;return-1}function jd(n,e){let t;for(const i of n){if(t===void 0){t=i;continue}e(i,t)<0&&(t=i)}return t}function ac(n,e){let t;for(const i of n){if(t===void 0){t=i;continue}e(i,t)>0&&(t=i)}return t}function Ud(n,e){let t=!0,i,s;for(const a of n)t?(i=a,s=a,t=!1):e(a,i)<0?i=a:e(a,s)>0&&(s=a);return t?void 0:[i,s]}function Vd(n){return Array.from(n)}function Kd(n){const e={};for(const[t,i]of n)e[t]=i;return e}function Gd(n,e){let t=0;for(const i of n)if(e(i,t++)===!1)return}function La(n,e){let t=0;for(const i of n)if(e(i,t++)===!1)return!1;return!0}function oc(n,e){let t=0;for(const i of n)if(e(i,t++))return!0;return!1}function*Xd(n,e){let t=0;for(const i of n)yield e(i,t++)}function*Yd(n,e,t){e===void 0?(e=n,n=0,t=1):t===void 0&&(t=1);const i=ya.rangeLength(n,e,t);for(let s=0;s<i;s++)yield n+t*s}var ya;(function(n){function e(t,i,s){return s===0?1/0:t>i&&s>0||t<i&&s<0?0:Math.ceil((i-t)/s)}n.rangeLength=e})(ya||(ya={}));function Jd(n,e,t){const i=n[Symbol.iterator]();let s=0,a=i.next();if(a.done&&t===void 0)throw new TypeError("Reduce of empty iterable with no initial value.");if(a.done)return t;let u=i.next();if(u.done&&t===void 0)return a.value;if(u.done)return e(t,a.value,s++);let c;t===void 0?c=e(a.value,u.value,s++):c=e(e(t,a.value,s++),u.value,s++);let f;for(;!(f=i.next()).done;)c=e(c,f.value,s++);return c}function*Qd(n,e){for(;0<e--;)yield n}function*Zd(n){yield n}function*lc(n){if(typeof n.retro=="function")yield*n.retro();else for(let e=n.length-1;e>-1;e--)yield n[e]}function uc(n){let e=[],t=new Set,i=new Map;for(const u of n)s(u);for(const[u]of i)a(u);return e;function s(u){let[c,f]=u,p=i.get(f);p?p.push(c):i.set(f,[c])}function a(u){if(t.has(u))return;t.add(u);let c=i.get(u);if(c)for(const f of c)a(f);e.push(u)}}function*ef(n,e){let t=0;for(const i of n)t++%e===0&&(yield i)}var Li;(function(n){function e(u,c,f=0){let p=new Array(c.length);for(let _=0,b=f,w=c.length;_<w;++_,++b){if(b=u.indexOf(c[_],b),b===-1)return null;p[_]=b}return p}n.findIndices=e;function t(u,c,f=0){let p=e(u,c,f);if(!p)return null;let _=0;for(let b=0,w=p.length;b<w;++b){let x=p[b]-f;_+=x*x}return{score:_,indices:p}}n.matchSumOfSquares=t;function i(u,c,f=0){let p=e(u,c,f);if(!p)return null;let _=0,b=f-1;for(let w=0,x=p.length;w<x;++w){let y=p[w];_+=y-b-1,b=y}return{score:_,indices:p}}n.matchSumOfDeltas=i;function s(u,c,f){let p=[],_=0,b=0,w=c.length;for(;_<w;){let x=c[_],y=c[_];for(;++_<w&&c[_]===y+1;)y++;b<x&&p.push(u.slice(b,x)),x<y+1&&p.push(f(u.slice(x,y+1))),b=y+1}return b<u.length&&p.push(u.slice(b)),p}n.highlight=s;function a(u,c){return u<c?-1:u>c?1:0}n.cmp=a})(Li||(Li={}));function*tf(n,e){if(e<1)return;const t=n[Symbol.iterator]();let i;for(;0<e--&&!(i=t.next()).done;)yield i.value}function*nf(...n){const e=n.map(i=>i[Symbol.iterator]());let t=e.map(i=>i.next());for(;La(t,i=>!i.done);t=e.map(i=>i.next()))yield t.map(i=>i.value)}const vm=Object.freeze(Object.defineProperty({__proto__:null,get ArrayExt(){return ie},get StringExt(){return Li},chain:Pd,each:Gd,empty:Ii,enumerate:Fd,every:La,filter:Wd,find:en,findIndex:$d,map:Xd,max:ac,min:jd,minmax:Ud,once:Zd,range:Yd,reduce:Jd,repeat:Qd,retro:lc,some:oc,stride:ef,take:tf,toArray:Vd,toObject:Kd,topologicSort:uc,zip:nf},Symbol.toStringTag,{value:"Module"}));var De;(function(n){n.emptyObject=Object.freeze({}),n.emptyArray=Object.freeze([]);function e(_){return _===null||typeof _=="boolean"||typeof _=="number"||typeof _=="string"}n.isPrimitive=e;function t(_){return Array.isArray(_)}n.isArray=t;function i(_){return!e(_)&&!t(_)}n.isObject=i;function s(_,b){if(_===b)return!0;if(e(_)||e(b))return!1;let w=t(_),x=t(b);return w!==x?!1:w&&x?u(_,b):c(_,b)}n.deepEqual=s;function a(_){return e(_)?_:t(_)?f(_):p(_)}n.deepCopy=a;function u(_,b){if(_===b)return!0;if(_.length!==b.length)return!1;for(let w=0,x=_.length;w<x;++w)if(!s(_[w],b[w]))return!1;return!0}function c(_,b){if(_===b)return!0;for(let w in _)if(_[w]!==void 0&&!(w in b))return!1;for(let w in b)if(b[w]!==void 0&&!(w in _))return!1;for(let w in _){let x=_[w],y=b[w];if(!(x===void 0&&y===void 0)&&(x===void 0||y===void 0||!s(x,y)))return!1}return!0}function f(_){let b=new Array(_.length);for(let w=0,x=_.length;w<x;++w)b[w]=a(_[w]);return b}function p(_){let b={};for(let w in _){let x=_[w];x!==void 0&&(b[w]=a(x))}return b}})(De||(De={}));class rf{constructor(){this._types=[],this._values=[]}types(){return this._types.slice()}hasData(e){return this._types.indexOf(e)!==-1}getData(e){let t=this._types.indexOf(e);return t!==-1?this._values[t]:void 0}setData(e,t){this.clearData(e),this._types.push(e),this._values.push(t)}clearData(e){let t=this._types.indexOf(e);t!==-1&&(this._types.splice(t,1),this._values.splice(t,1))}clear(){this._types.length=0,this._values.length=0}}var tl;(function(n){class e{constructor(c){var f,p,_,b;this._activated=!1,this._promise=null,this._service=null,this.id=c.id,this.description=(f=c.description)!==null&&f!==void 0?f:"",this.activate=c.activate,this.deactivate=(p=c.deactivate)!==null&&p!==void 0?p:null,this.provides=(_=c.provides)!==null&&_!==void 0?_:null,this.autoStart=(b=c.autoStart)!==null&&b!==void 0?b:!1,this.requires=c.requires?c.requires.slice():[],this.optional=c.optional?c.optional.slice():[]}get activated(){return this._activated}set activated(c){this._activated=c}get service(){return this._service}set service(c){this._service=c}get promise(){return this._promise}set promise(c){this._promise=c}}function t(u){return new e(u)}n.createPluginData=t;function i(u,c,f){const p=[...u.requires,...u.optional],_=w=>{if(w===u.provides)return!0;const x=f.get(w);if(!x)return!1;const y=c.get(x),C=[...y.requires,...y.optional];return C.length===0?!1:(b.push(x),C.some(_)?!0:(b.pop(),!1))};if(!u.provides||p.length===0)return;const b=[u.id];if(p.some(_))throw new ReferenceError(`Cycle detected: ${b.join(" -> ")}.`)}n.ensureNoCycle=i;function s(u,c,f){const p=new Array,_=C=>{const E=c.get(C),I=[...E.requires,...E.optional];p.push(...I.reduce((R,L)=>{const O=f.get(L);return O&&R.push([C,O]),R},[]))};for(const C of c.keys())_(C);const b=p.filter(C=>C[1]===u);let w=0;for(;b.length>w;){const C=b.length,E=new Set(b.map(I=>I[0]));for(const I of E)p.filter(R=>R[1]===I).forEach(R=>{b.includes(R)||b.push(R)});w=C}const x=uc(b),y=x.findIndex(C=>C===u);return y===-1?[u]:x.slice(0,y+1)}n.findDependents=s;function a(u,c){const f=new Set;for(const p of u.keys())u.get(p).autoStart===!0&&f.add(p);if(c.startPlugins)for(const p of c.startPlugins)f.add(p);if(c.ignorePlugins)for(const p of c.ignorePlugins)f.delete(p);return Array.from(f)}n.collectStartupPlugins=a})(tl||(tl={}));class Or{constructor(){this.promise=new Promise((e,t)=>{this._resolve=e,this._reject=t})}resolve(e){let t=this._resolve;t(e)}reject(e){let t=this._reject;t(e)}}class ym{constructor(e,t){this.name=e,this.description=t??"",this._tokenStructuralPropertyT=null}}function sf(n){let e=0;for(let t=0,i=n.length;t<i;++t)t%4===0&&(e=Math.random()*4294967295>>>0),n[t]=e&255,e>>>=8}var ba;(function(n){n.getRandomValues=(()=>{const e=typeof window<"u"&&(window.crypto||window.msCrypto)||null;return e&&typeof e.getRandomValues=="function"?function(i){return e.getRandomValues(i)}:sf})()})(ba||(ba={}));function af(n){const e=new Uint8Array(16),t=new Array(256);for(let i=0;i<16;++i)t[i]="0"+i.toString(16);for(let i=16;i<256;++i)t[i]=i.toString(16);return function(){return n(e),e[6]=64|e[6]&15,e[8]=128|e[8]&63,t[e[0]]+t[e[1]]+t[e[2]]+t[e[3]]+"-"+t[e[4]]+t[e[5]]+"-"+t[e[6]]+t[e[7]]+"-"+t[e[8]]+t[e[9]]+"-"+t[e[10]]+t[e[11]]+t[e[12]]+t[e[13]]+t[e[14]]+t[e[15]]}}var zn;(function(n){n.uuid4=af(ba.getRandomValues)})(zn||(zn={}));var qr,il;function of(){if(il)return qr;il=1;function n(){this.__data__=[],this.size=0}return qr=n,qr}var Hr,nl;function cc(){if(nl)return Hr;nl=1;function n(e,t){return e===t||e!==e&&t!==t}return Hr=n,Hr}var Br,rl;function Un(){if(rl)return Br;rl=1;var n=cc();function e(t,i){for(var s=t.length;s--;)if(n(t[s][0],i))return s;return-1}return Br=e,Br}var Pr,sl;function lf(){if(sl)return Pr;sl=1;var n=Un(),e=Array.prototype,t=e.splice;function i(s){var a=this.__data__,u=n(a,s);if(u<0)return!1;var c=a.length-1;return u==c?a.pop():t.call(a,u,1),--this.size,!0}return Pr=i,Pr}var Fr,al;function uf(){if(al)return Fr;al=1;var n=Un();function e(t){var i=this.__data__,s=n(i,t);return s<0?void 0:i[s][1]}return Fr=e,Fr}var Wr,ol;function cf(){if(ol)return Wr;ol=1;var n=Un();function e(t){return n(this.__data__,t)>-1}return Wr=e,Wr}var $r,ll;function hf(){if(ll)return $r;ll=1;var n=Un();function e(t,i){var s=this.__data__,a=n(s,t);return a<0?(++this.size,s.push([t,i])):s[a][1]=i,this}return $r=e,$r}var jr,ul;function Vn(){if(ul)return jr;ul=1;var n=of(),e=lf(),t=uf(),i=cf(),s=hf();function a(u){var c=-1,f=u==null?0:u.length;for(this.clear();++c<f;){var p=u[c];this.set(p[0],p[1])}}return a.prototype.clear=n,a.prototype.delete=e,a.prototype.get=t,a.prototype.has=i,a.prototype.set=s,jr=a,jr}var Ur,cl;function df(){if(cl)return Ur;cl=1;var n=Vn();function e(){this.__data__=new n,this.size=0}return Ur=e,Ur}var Vr,hl;function ff(){if(hl)return Vr;hl=1;function n(e){var t=this.__data__,i=t.delete(e);return this.size=t.size,i}return Vr=n,Vr}var Kr,dl;function pf(){if(dl)return Kr;dl=1;function n(e){return this.__data__.get(e)}return Kr=n,Kr}var Gr,fl;function mf(){if(fl)return Gr;fl=1;function n(e){return this.__data__.has(e)}return Gr=n,Gr}var Xr,pl;function hc(){if(pl)return Xr;pl=1;var n=typeof ti=="object"&&ti&&ti.Object===Object&&ti;return Xr=n,Xr}var Yr,ml;function Gt(){if(ml)return Yr;ml=1;var n=hc(),e=typeof self=="object"&&self&&self.Object===Object&&self,t=n||e||Function("return this")();return Yr=t,Yr}var Jr,gl;function Ra(){if(gl)return Jr;gl=1;var n=Gt(),e=n.Symbol;return Jr=e,Jr}var Qr,_l;function gf(){if(_l)return Qr;_l=1;var n=Ra(),e=Object.prototype,t=e.hasOwnProperty,i=e.toString,s=n?n.toStringTag:void 0;function a(u){var c=t.call(u,s),f=u[s];try{u[s]=void 0;var p=!0}catch{}var _=i.call(u);return p&&(c?u[s]=f:delete u[s]),_}return Qr=a,Qr}var Zr,vl;function _f(){if(vl)return Zr;vl=1;var n=Object.prototype,e=n.toString;function t(i){return e.call(i)}return Zr=t,Zr}var es,yl;function Kn(){if(yl)return es;yl=1;var n=Ra(),e=gf(),t=_f(),i="[object Null]",s="[object Undefined]",a=n?n.toStringTag:void 0;function u(c){return c==null?c===void 0?s:i:a&&a in Object(c)?e(c):t(c)}return es=u,es}var ts,bl;function dc(){if(bl)return ts;bl=1;function n(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}return ts=n,ts}var is,xl;function fc(){if(xl)return is;xl=1;var n=Kn(),e=dc(),t="[object AsyncFunction]",i="[object Function]",s="[object GeneratorFunction]",a="[object Proxy]";function u(c){if(!e(c))return!1;var f=n(c);return f==i||f==s||f==t||f==a}return is=u,is}var ns,wl;function vf(){if(wl)return ns;wl=1;var n=Gt(),e=n["__core-js_shared__"];return ns=e,ns}var rs,Sl;function yf(){if(Sl)return rs;Sl=1;var n=vf(),e=(function(){var i=/[^.]+$/.exec(n&&n.keys&&n.keys.IE_PROTO||"");return i?"Symbol(src)_1."+i:""})();function t(i){return!!e&&e in i}return rs=t,rs}var ss,Cl;function pc(){if(Cl)return ss;Cl=1;var n=Function.prototype,e=n.toString;function t(i){if(i!=null){try{return e.call(i)}catch{}try{return i+""}catch{}}return""}return ss=t,ss}var as,Ml;function bf(){if(Ml)return as;Ml=1;var n=fc(),e=yf(),t=dc(),i=pc(),s=/[\\^$.*+?()[\]{}|]/g,a=/^\[object .+?Constructor\]$/,u=Function.prototype,c=Object.prototype,f=u.toString,p=c.hasOwnProperty,_=RegExp("^"+f.call(p).replace(s,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function b(w){if(!t(w)||e(w))return!1;var x=n(w)?_:a;return x.test(i(w))}return as=b,as}var os,Tl;function xf(){if(Tl)return os;Tl=1;function n(e,t){return e==null?void 0:e[t]}return os=n,os}var ls,Al;function Hi(){if(Al)return ls;Al=1;var n=bf(),e=xf();function t(i,s){var a=e(i,s);return n(a)?a:void 0}return ls=t,ls}var us,El;function Na(){if(El)return us;El=1;var n=Hi(),e=Gt(),t=n(e,"Map");return us=t,us}var cs,Il;function Gn(){if(Il)return cs;Il=1;var n=Hi(),e=n(Object,"create");return cs=e,cs}var hs,zl;function wf(){if(zl)return hs;zl=1;var n=Gn();function e(){this.__data__=n?n(null):{},this.size=0}return hs=e,hs}var ds,Dl;function Sf(){if(Dl)return ds;Dl=1;function n(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}return ds=n,ds}var fs,kl;function Cf(){if(kl)return fs;kl=1;var n=Gn(),e="__lodash_hash_undefined__",t=Object.prototype,i=t.hasOwnProperty;function s(a){var u=this.__data__;if(n){var c=u[a];return c===e?void 0:c}return i.call(u,a)?u[a]:void 0}return fs=s,fs}var ps,Ll;function Mf(){if(Ll)return ps;Ll=1;var n=Gn(),e=Object.prototype,t=e.hasOwnProperty;function i(s){var a=this.__data__;return n?a[s]!==void 0:t.call(a,s)}return ps=i,ps}var ms,Rl;function Tf(){if(Rl)return ms;Rl=1;var n=Gn(),e="__lodash_hash_undefined__";function t(i,s){var a=this.__data__;return this.size+=this.has(i)?0:1,a[i]=n&&s===void 0?e:s,this}return ms=t,ms}var gs,Nl;function Af(){if(Nl)return gs;Nl=1;var n=wf(),e=Sf(),t=Cf(),i=Mf(),s=Tf();function a(u){var c=-1,f=u==null?0:u.length;for(this.clear();++c<f;){var p=u[c];this.set(p[0],p[1])}}return a.prototype.clear=n,a.prototype.delete=e,a.prototype.get=t,a.prototype.has=i,a.prototype.set=s,gs=a,gs}var _s,Ol;function Ef(){if(Ol)return _s;Ol=1;var n=Af(),e=Vn(),t=Na();function i(){this.size=0,this.__data__={hash:new n,map:new(t||e),string:new n}}return _s=i,_s}var vs,ql;function If(){if(ql)return vs;ql=1;function n(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}return vs=n,vs}var ys,Hl;function Xn(){if(Hl)return ys;Hl=1;var n=If();function e(t,i){var s=t.__data__;return n(i)?s[typeof i=="string"?"string":"hash"]:s.map}return ys=e,ys}var bs,Bl;function zf(){if(Bl)return bs;Bl=1;var n=Xn();function e(t){var i=n(this,t).delete(t);return this.size-=i?1:0,i}return bs=e,bs}var xs,Pl;function Df(){if(Pl)return xs;Pl=1;var n=Xn();function e(t){return n(this,t).get(t)}return xs=e,xs}var ws,Fl;function kf(){if(Fl)return ws;Fl=1;var n=Xn();function e(t){return n(this,t).has(t)}return ws=e,ws}var Ss,Wl;function Lf(){if(Wl)return Ss;Wl=1;var n=Xn();function e(t,i){var s=n(this,t),a=s.size;return s.set(t,i),this.size+=s.size==a?0:1,this}return Ss=e,Ss}var Cs,$l;function mc(){if($l)return Cs;$l=1;var n=Ef(),e=zf(),t=Df(),i=kf(),s=Lf();function a(u){var c=-1,f=u==null?0:u.length;for(this.clear();++c<f;){var p=u[c];this.set(p[0],p[1])}}return a.prototype.clear=n,a.prototype.delete=e,a.prototype.get=t,a.prototype.has=i,a.prototype.set=s,Cs=a,Cs}var Ms,jl;function Rf(){if(jl)return Ms;jl=1;var n=Vn(),e=Na(),t=mc(),i=200;function s(a,u){var c=this.__data__;if(c instanceof n){var f=c.__data__;if(!e||f.length<i-1)return f.push([a,u]),this.size=++c.size,this;c=this.__data__=new t(f)}return c.set(a,u),this.size=c.size,this}return Ms=s,Ms}var Ts,Ul;function Nf(){if(Ul)return Ts;Ul=1;var n=Vn(),e=df(),t=ff(),i=pf(),s=mf(),a=Rf();function u(c){var f=this.__data__=new n(c);this.size=f.size}return u.prototype.clear=e,u.prototype.delete=t,u.prototype.get=i,u.prototype.has=s,u.prototype.set=a,Ts=u,Ts}var As,Vl;function Of(){if(Vl)return As;Vl=1;var n="__lodash_hash_undefined__";function e(t){return this.__data__.set(t,n),this}return As=e,As}var Es,Kl;function qf(){if(Kl)return Es;Kl=1;function n(e){return this.__data__.has(e)}return Es=n,Es}var Is,Gl;function Hf(){if(Gl)return Is;Gl=1;var n=mc(),e=Of(),t=qf();function i(s){var a=-1,u=s==null?0:s.length;for(this.__data__=new n;++a<u;)this.add(s[a])}return i.prototype.add=i.prototype.push=e,i.prototype.has=t,Is=i,Is}var zs,Xl;function Bf(){if(Xl)return zs;Xl=1;function n(e,t){for(var i=-1,s=e==null?0:e.length;++i<s;)if(t(e[i],i,e))return!0;return!1}return zs=n,zs}var Ds,Yl;function Pf(){if(Yl)return Ds;Yl=1;function n(e,t){return e.has(t)}return Ds=n,Ds}var ks,Jl;function gc(){if(Jl)return ks;Jl=1;var n=Hf(),e=Bf(),t=Pf(),i=1,s=2;function a(u,c,f,p,_,b){var w=f&i,x=u.length,y=c.length;if(x!=y&&!(w&&y>x))return!1;var C=b.get(u),E=b.get(c);if(C&&E)return C==c&&E==u;var I=-1,R=!0,L=f&s?new n:void 0;for(b.set(u,c),b.set(c,u);++I<x;){var O=u[I],F=c[I];if(p)var $=w?p(F,O,I,c,u,b):p(O,F,I,u,c,b);if($!==void 0){if($)continue;R=!1;break}if(L){if(!e(c,function(l,q){if(!t(L,q)&&(O===l||_(O,l,f,p,b)))return L.push(q)})){R=!1;break}}else if(!(O===F||_(O,F,f,p,b))){R=!1;break}}return b.delete(u),b.delete(c),R}return ks=a,ks}var Ls,Ql;function Ff(){if(Ql)return Ls;Ql=1;var n=Gt(),e=n.Uint8Array;return Ls=e,Ls}var Rs,Zl;function Wf(){if(Zl)return Rs;Zl=1;function n(e){var t=-1,i=Array(e.size);return e.forEach(function(s,a){i[++t]=[a,s]}),i}return Rs=n,Rs}var Ns,eu;function $f(){if(eu)return Ns;eu=1;function n(e){var t=-1,i=Array(e.size);return e.forEach(function(s){i[++t]=s}),i}return Ns=n,Ns}var Os,tu;function jf(){if(tu)return Os;tu=1;var n=Ra(),e=Ff(),t=cc(),i=gc(),s=Wf(),a=$f(),u=1,c=2,f="[object Boolean]",p="[object Date]",_="[object Error]",b="[object Map]",w="[object Number]",x="[object RegExp]",y="[object Set]",C="[object String]",E="[object Symbol]",I="[object ArrayBuffer]",R="[object DataView]",L=n?n.prototype:void 0,O=L?L.valueOf:void 0;function F($,l,q,A,N,H,Z){switch(q){case R:if($.byteLength!=l.byteLength||$.byteOffset!=l.byteOffset)return!1;$=$.buffer,l=l.buffer;case I:return!($.byteLength!=l.byteLength||!H(new e($),new e(l)));case f:case p:case w:return t(+$,+l);case _:return $.name==l.name&&$.message==l.message;case x:case C:return $==l+"";case b:var Y=s;case y:var ce=A&u;if(Y||(Y=a),$.size!=l.size&&!ce)return!1;var we=Z.get($);if(we)return we==l;A|=c,Z.set($,l);var He=i(Y($),Y(l),A,N,H,Z);return Z.delete($),He;case E:if(O)return O.call($)==O.call(l)}return!1}return Os=F,Os}var qs,iu;function Uf(){if(iu)return qs;iu=1;function n(e,t){for(var i=-1,s=t.length,a=e.length;++i<s;)e[a+i]=t[i];return e}return qs=n,qs}var Hs,nu;function Oa(){if(nu)return Hs;nu=1;var n=Array.isArray;return Hs=n,Hs}var Bs,ru;function Vf(){if(ru)return Bs;ru=1;var n=Uf(),e=Oa();function t(i,s,a){var u=s(i);return e(i)?u:n(u,a(i))}return Bs=t,Bs}var Ps,su;function Kf(){if(su)return Ps;su=1;function n(e,t){for(var i=-1,s=e==null?0:e.length,a=0,u=[];++i<s;){var c=e[i];t(c,i,e)&&(u[a++]=c)}return u}return Ps=n,Ps}var Fs,au;function Gf(){if(au)return Fs;au=1;function n(){return[]}return Fs=n,Fs}var Ws,ou;function Xf(){if(ou)return Ws;ou=1;var n=Kf(),e=Gf(),t=Object.prototype,i=t.propertyIsEnumerable,s=Object.getOwnPropertySymbols,a=s?function(u){return u==null?[]:(u=Object(u),n(s(u),function(c){return i.call(u,c)}))}:e;return Ws=a,Ws}var $s,lu;function Yf(){if(lu)return $s;lu=1;function n(e,t){for(var i=-1,s=Array(e);++i<e;)s[i]=t(i);return s}return $s=n,$s}var js,uu;function Yn(){if(uu)return js;uu=1;function n(e){return e!=null&&typeof e=="object"}return js=n,js}var Us,cu;function Jf(){if(cu)return Us;cu=1;var n=Kn(),e=Yn(),t="[object Arguments]";function i(s){return e(s)&&n(s)==t}return Us=i,Us}var Vs,hu;function Qf(){if(hu)return Vs;hu=1;var n=Jf(),e=Yn(),t=Object.prototype,i=t.hasOwnProperty,s=t.propertyIsEnumerable,a=n((function(){return arguments})())?n:function(u){return e(u)&&i.call(u,"callee")&&!s.call(u,"callee")};return Vs=a,Vs}var Yi={exports:{}},Ks,du;function Zf(){if(du)return Ks;du=1;function n(){return!1}return Ks=n,Ks}Yi.exports;var fu;function _c(){return fu||(fu=1,(function(n,e){var t=Gt(),i=Zf(),s=e&&!e.nodeType&&e,a=s&&!0&&n&&!n.nodeType&&n,u=a&&a.exports===s,c=u?t.Buffer:void 0,f=c?c.isBuffer:void 0,p=f||i;n.exports=p})(Yi,Yi.exports)),Yi.exports}var Gs,pu;function ep(){if(pu)return Gs;pu=1;var n=9007199254740991,e=/^(?:0|[1-9]\d*)$/;function t(i,s){var a=typeof i;return s=s??n,!!s&&(a=="number"||a!="symbol"&&e.test(i))&&i>-1&&i%1==0&&i<s}return Gs=t,Gs}var Xs,mu;function vc(){if(mu)return Xs;mu=1;var n=9007199254740991;function e(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=n}return Xs=e,Xs}var Ys,gu;function tp(){if(gu)return Ys;gu=1;var n=Kn(),e=vc(),t=Yn(),i="[object Arguments]",s="[object Array]",a="[object Boolean]",u="[object Date]",c="[object Error]",f="[object Function]",p="[object Map]",_="[object Number]",b="[object Object]",w="[object RegExp]",x="[object Set]",y="[object String]",C="[object WeakMap]",E="[object ArrayBuffer]",I="[object DataView]",R="[object Float32Array]",L="[object Float64Array]",O="[object Int8Array]",F="[object Int16Array]",$="[object Int32Array]",l="[object Uint8Array]",q="[object Uint8ClampedArray]",A="[object Uint16Array]",N="[object Uint32Array]",H={};H[R]=H[L]=H[O]=H[F]=H[$]=H[l]=H[q]=H[A]=H[N]=!0,H[i]=H[s]=H[E]=H[a]=H[I]=H[u]=H[c]=H[f]=H[p]=H[_]=H[b]=H[w]=H[x]=H[y]=H[C]=!1;function Z(Y){return t(Y)&&e(Y.length)&&!!H[n(Y)]}return Ys=Z,Ys}var Js,_u;function ip(){if(_u)return Js;_u=1;function n(e){return function(t){return e(t)}}return Js=n,Js}var Ji={exports:{}};Ji.exports;var vu;function np(){return vu||(vu=1,(function(n,e){var t=hc(),i=e&&!e.nodeType&&e,s=i&&!0&&n&&!n.nodeType&&n,a=s&&s.exports===i,u=a&&t.process,c=(function(){try{var f=s&&s.require&&s.require("util").types;return f||u&&u.binding&&u.binding("util")}catch{}})();n.exports=c})(Ji,Ji.exports)),Ji.exports}var Qs,yu;function yc(){if(yu)return Qs;yu=1;var n=tp(),e=ip(),t=np(),i=t&&t.isTypedArray,s=i?e(i):n;return Qs=s,Qs}var Zs,bu;function rp(){if(bu)return Zs;bu=1;var n=Yf(),e=Qf(),t=Oa(),i=_c(),s=ep(),a=yc(),u=Object.prototype,c=u.hasOwnProperty;function f(p,_){var b=t(p),w=!b&&e(p),x=!b&&!w&&i(p),y=!b&&!w&&!x&&a(p),C=b||w||x||y,E=C?n(p.length,String):[],I=E.length;for(var R in p)(_||c.call(p,R))&&!(C&&(R=="length"||x&&(R=="offset"||R=="parent")||y&&(R=="buffer"||R=="byteLength"||R=="byteOffset")||s(R,I)))&&E.push(R);return E}return Zs=f,Zs}var ea,xu;function sp(){if(xu)return ea;xu=1;var n=Object.prototype;function e(t){var i=t&&t.constructor,s=typeof i=="function"&&i.prototype||n;return t===s}return ea=e,ea}var ta,wu;function ap(){if(wu)return ta;wu=1;function n(e,t){return function(i){return e(t(i))}}return ta=n,ta}var ia,Su;function op(){if(Su)return ia;Su=1;var n=ap(),e=n(Object.keys,Object);return ia=e,ia}var na,Cu;function lp(){if(Cu)return na;Cu=1;var n=sp(),e=op(),t=Object.prototype,i=t.hasOwnProperty;function s(a){if(!n(a))return e(a);var u=[];for(var c in Object(a))i.call(a,c)&&c!="constructor"&&u.push(c);return u}return na=s,na}var ra,Mu;function up(){if(Mu)return ra;Mu=1;var n=fc(),e=vc();function t(i){return i!=null&&e(i.length)&&!n(i)}return ra=t,ra}var sa,Tu;function cp(){if(Tu)return sa;Tu=1;var n=rp(),e=lp(),t=up();function i(s){return t(s)?n(s):e(s)}return sa=i,sa}var aa,Au;function hp(){if(Au)return aa;Au=1;var n=Vf(),e=Xf(),t=cp();function i(s){return n(s,t,e)}return aa=i,aa}var oa,Eu;function dp(){if(Eu)return oa;Eu=1;var n=hp(),e=1,t=Object.prototype,i=t.hasOwnProperty;function s(a,u,c,f,p,_){var b=c&e,w=n(a),x=w.length,y=n(u),C=y.length;if(x!=C&&!b)return!1;for(var E=x;E--;){var I=w[E];if(!(b?I in u:i.call(u,I)))return!1}var R=_.get(a),L=_.get(u);if(R&&L)return R==u&&L==a;var O=!0;_.set(a,u),_.set(u,a);for(var F=b;++E<x;){I=w[E];var $=a[I],l=u[I];if(f)var q=b?f(l,$,I,u,a,_):f($,l,I,a,u,_);if(!(q===void 0?$===l||p($,l,c,f,_):q)){O=!1;break}F||(F=I=="constructor")}if(O&&!F){var A=a.constructor,N=u.constructor;A!=N&&"constructor"in a&&"constructor"in u&&!(typeof A=="function"&&A instanceof A&&typeof N=="function"&&N instanceof N)&&(O=!1)}return _.delete(a),_.delete(u),O}return oa=s,oa}var la,Iu;function fp(){if(Iu)return la;Iu=1;var n=Hi(),e=Gt(),t=n(e,"DataView");return la=t,la}var ua,zu;function pp(){if(zu)return ua;zu=1;var n=Hi(),e=Gt(),t=n(e,"Promise");return ua=t,ua}var ca,Du;function mp(){if(Du)return ca;Du=1;var n=Hi(),e=Gt(),t=n(e,"Set");return ca=t,ca}var ha,ku;function gp(){if(ku)return ha;ku=1;var n=Hi(),e=Gt(),t=n(e,"WeakMap");return ha=t,ha}var da,Lu;function _p(){if(Lu)return da;Lu=1;var n=fp(),e=Na(),t=pp(),i=mp(),s=gp(),a=Kn(),u=pc(),c="[object Map]",f="[object Object]",p="[object Promise]",_="[object Set]",b="[object WeakMap]",w="[object DataView]",x=u(n),y=u(e),C=u(t),E=u(i),I=u(s),R=a;return(n&&R(new n(new ArrayBuffer(1)))!=w||e&&R(new e)!=c||t&&R(t.resolve())!=p||i&&R(new i)!=_||s&&R(new s)!=b)&&(R=function(L){var O=a(L),F=O==f?L.constructor:void 0,$=F?u(F):"";if($)switch($){case x:return w;case y:return c;case C:return p;case E:return _;case I:return b}return O}),da=R,da}var fa,Ru;function vp(){if(Ru)return fa;Ru=1;var n=Nf(),e=gc(),t=jf(),i=dp(),s=_p(),a=Oa(),u=_c(),c=yc(),f=1,p="[object Arguments]",_="[object Array]",b="[object Object]",w=Object.prototype,x=w.hasOwnProperty;function y(C,E,I,R,L,O){var F=a(C),$=a(E),l=F?_:s(C),q=$?_:s(E);l=l==p?b:l,q=q==p?b:q;var A=l==b,N=q==b,H=l==q;if(H&&u(C)){if(!u(E))return!1;F=!0,A=!1}if(H&&!A)return O||(O=new n),F||c(C)?e(C,E,I,R,L,O):t(C,E,l,I,R,L,O);if(!(I&f)){var Z=A&&x.call(C,"__wrapped__"),Y=N&&x.call(E,"__wrapped__");if(Z||Y){var ce=Z?C.value():C,we=Y?E.value():E;return O||(O=new n),L(ce,we,I,R,O)}}return H?(O||(O=new n),i(C,E,I,R,L,O)):!1}return fa=y,fa}var pa,Nu;function yp(){if(Nu)return pa;Nu=1;var n=vp(),e=Yn();function t(i,s,a,u,c){return i===s?!0:i==null||s==null||!e(i)&&!e(s)?i!==i&&s!==s:n(i,s,a,u,t,c)}return pa=t,pa}var ma,Ou;function bp(){if(Ou)return ma;Ou=1;var n=yp();function e(t,i){return n(t,i)}return ma=e,ma}var xp=bp();const wp=sc(xp);function qu(n,e){return n.filter(t=>e.indexOf(t)===-1)}function xa(n,e){return wp(n,e)}const Zi=Object.assign||function(n,...e){for(let t=1;t<e.length;t++){const i=e[t];for(const s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])}return n};function bm(){return zn.uuid4()}function bc(n){const e=Object.keys(n),t=[];return e.forEach(function(i){t.push(n[i])}),Promise.all(t).then(i=>{const s={};for(let a=0;a<e.length;a++)s[e[a]]=i[a];return s})}function Dn(n,e){return function(i){throw e&&console.error(new Error(n)),i}}function Sp(n,e,t){for(let i=0;i<e.length;i++){const s=e[i];let a=t[i];a instanceof DataView||(a=new DataView(a instanceof ArrayBuffer?a:a.buffer));let u=n;for(let c=0;c<s.length-1;c++)u=u[s[c]];u[s[s.length-1]]=a}}function Cp(n){var e;return(e=typeof n=="object"&&n&&"toJSON"in n)!==null&&e!==void 0?e:!1}function Mp(n){return De.isObject(n)}function Tp(n){const e=[],t=[];function i(a,u){if(Cp(a)&&(a=a.toJSON()),Array.isArray(a)){let c=!1;for(let f=0;f<a.length;f++){const p=a[f];if(p)if(p instanceof ArrayBuffer||ArrayBuffer.isView(p))c||(a=a.slice(),c=!0),e.push(ArrayBuffer.isView(p)?p.buffer:p),t.push(u.concat([f])),a[f]=null;else{const _=i(p,u.concat([f]));_!==p&&(c||(a=a.slice(),c=!0),a[f]=_)}}}else if(Mp(a))for(const c in a){let f=!1;if(Object.prototype.hasOwnProperty.call(a,c)){const p=a[c];if(p)if(p instanceof ArrayBuffer||ArrayBuffer.isView(p))f||(a=Object.assign({},a),f=!0),e.push(ArrayBuffer.isView(p)?p.buffer:p),t.push(u.concat([c])),delete a[c];else{const _=i(p,u.concat([c]));_!==p&&(f||(a=Object.assign({},a),f=!0),a[c]=_)}}}return a}return{state:i(n,[]),buffers:e,buffer_paths:t}}const xm=`<svg style="height:50%;max-height: 50px;" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48">
1
+ import{c as ti,a as sc,g as Bd}from"./index-DK4nS74r.js";var ie;(function(n){function e(l,q,A=0,N=-1){let H=l.length;if(H===0)return-1;A<0?A=Math.max(0,A+H):A=Math.min(A,H-1),N<0?N=Math.max(0,N+H):N=Math.min(N,H-1);let Z;N<A?Z=N+1+(H-A):Z=N-A+1;for(let Y=0;Y<Z;++Y){let ce=(A+Y)%H;if(l[ce]===q)return ce}return-1}n.firstIndexOf=e;function t(l,q,A=-1,N=0){let H=l.length;if(H===0)return-1;A<0?A=Math.max(0,A+H):A=Math.min(A,H-1),N<0?N=Math.max(0,N+H):N=Math.min(N,H-1);let Z;A<N?Z=A+1+(H-N):Z=A-N+1;for(let Y=0;Y<Z;++Y){let ce=(A-Y+H)%H;if(l[ce]===q)return ce}return-1}n.lastIndexOf=t;function i(l,q,A=0,N=-1){let H=l.length;if(H===0)return-1;A<0?A=Math.max(0,A+H):A=Math.min(A,H-1),N<0?N=Math.max(0,N+H):N=Math.min(N,H-1);let Z;N<A?Z=N+1+(H-A):Z=N-A+1;for(let Y=0;Y<Z;++Y){let ce=(A+Y)%H;if(q(l[ce],ce))return ce}return-1}n.findFirstIndex=i;function s(l,q,A=-1,N=0){let H=l.length;if(H===0)return-1;A<0?A=Math.max(0,A+H):A=Math.min(A,H-1),N<0?N=Math.max(0,N+H):N=Math.min(N,H-1);let Z;A<N?Z=A+1+(H-N):Z=A-N+1;for(let Y=0;Y<Z;++Y){let ce=(A-Y+H)%H;if(q(l[ce],ce))return ce}return-1}n.findLastIndex=s;function a(l,q,A=0,N=-1){let H=i(l,q,A,N);return H!==-1?l[H]:void 0}n.findFirstValue=a;function u(l,q,A=-1,N=0){let H=s(l,q,A,N);return H!==-1?l[H]:void 0}n.findLastValue=u;function c(l,q,A,N=0,H=-1){let Z=l.length;if(Z===0)return 0;N<0?N=Math.max(0,N+Z):N=Math.min(N,Z-1),H<0?H=Math.max(0,H+Z):H=Math.min(H,Z-1);let Y=N,ce=H-N+1;for(;ce>0;){let we=ce>>1,He=Y+we;A(l[He],q)<0?(Y=He+1,ce-=we+1):ce=we}return Y}n.lowerBound=c;function f(l,q,A,N=0,H=-1){let Z=l.length;if(Z===0)return 0;N<0?N=Math.max(0,N+Z):N=Math.min(N,Z-1),H<0?H=Math.max(0,H+Z):H=Math.min(H,Z-1);let Y=N,ce=H-N+1;for(;ce>0;){let we=ce>>1,He=Y+we;A(l[He],q)>0?ce=we:(Y=He+1,ce-=we+1)}return Y}n.upperBound=f;function p(l,q,A){if(l===q)return!0;if(l.length!==q.length)return!1;for(let N=0,H=l.length;N<H;++N)if(A?!A(l[N],q[N]):l[N]!==q[N])return!1;return!0}n.shallowEqual=p;function _(l,q={}){let{start:A,stop:N,step:H}=q;if(H===void 0&&(H=1),H===0)throw new Error("Slice `step` cannot be zero.");let Z=l.length;A===void 0?A=H<0?Z-1:0:A<0?A=Math.max(A+Z,H<0?-1:0):A>=Z&&(A=H<0?Z-1:Z),N===void 0?N=H<0?-1:Z:N<0?N=Math.max(N+Z,H<0?-1:0):N>=Z&&(N=H<0?Z-1:Z);let Y;H<0&&N>=A||H>0&&A>=N?Y=0:H<0?Y=Math.floor((N-A+1)/H+1):Y=Math.floor((N-A-1)/H+1);let ce=[];for(let we=0;we<Y;++we)ce[we]=l[A+we*H];return ce}n.slice=_;function b(l,q,A){let N=l.length;if(N<=1||(q<0?q=Math.max(0,q+N):q=Math.min(q,N-1),A<0?A=Math.max(0,A+N):A=Math.min(A,N-1),q===A))return;let H=l[q],Z=q<A?1:-1;for(let Y=q;Y!==A;Y+=Z)l[Y]=l[Y+Z];l[A]=H}n.move=b;function w(l,q=0,A=-1){let N=l.length;if(!(N<=1))for(q<0?q=Math.max(0,q+N):q=Math.min(q,N-1),A<0?A=Math.max(0,A+N):A=Math.min(A,N-1);q<A;){let H=l[q],Z=l[A];l[q++]=Z,l[A--]=H}}n.reverse=w;function x(l,q,A=0,N=-1){let H=l.length;if(H<=1||(A<0?A=Math.max(0,A+H):A=Math.min(A,H-1),N<0?N=Math.max(0,N+H):N=Math.min(N,H-1),A>=N))return;let Z=N-A+1;if(q>0?q=q%Z:q<0&&(q=(q%Z+Z)%Z),q===0)return;let Y=A+q;w(l,A,Y-1),w(l,Y,N),w(l,A,N)}n.rotate=x;function y(l,q,A=0,N=-1){let H=l.length;if(H===0)return;A<0?A=Math.max(0,A+H):A=Math.min(A,H-1),N<0?N=Math.max(0,N+H):N=Math.min(N,H-1);let Z;N<A?Z=N+1+(H-A):Z=N-A+1;for(let Y=0;Y<Z;++Y)l[(A+Y)%H]=q}n.fill=y;function C(l,q,A){let N=l.length;q<0?q=Math.max(0,q+N):q=Math.min(q,N);for(let H=N;H>q;--H)l[H]=l[H-1];l[q]=A}n.insert=C;function E(l,q){let A=l.length;if(q<0&&(q+=A),q<0||q>=A)return;let N=l[q];for(let H=q+1;H<A;++H)l[H-1]=l[H];return l.length=A-1,N}n.removeAt=E;function I(l,q,A=0,N=-1){let H=e(l,q,A,N);return H!==-1&&E(l,H),H}n.removeFirstOf=I;function R(l,q,A=-1,N=0){let H=t(l,q,A,N);return H!==-1&&E(l,H),H}n.removeLastOf=R;function L(l,q,A=0,N=-1){let H=l.length;if(H===0)return 0;A<0?A=Math.max(0,A+H):A=Math.min(A,H-1),N<0?N=Math.max(0,N+H):N=Math.min(N,H-1);let Z=0;for(let Y=0;Y<H;++Y)A<=N&&Y>=A&&Y<=N&&l[Y]===q||N<A&&(Y<=N||Y>=A)&&l[Y]===q?Z++:Z>0&&(l[Y-Z]=l[Y]);return Z>0&&(l.length=H-Z),Z}n.removeAllOf=L;function O(l,q,A=0,N=-1){let H,Z=i(l,q,A,N);return Z!==-1&&(H=E(l,Z)),{index:Z,value:H}}n.removeFirstWhere=O;function F(l,q,A=-1,N=0){let H,Z=s(l,q,A,N);return Z!==-1&&(H=E(l,Z)),{index:Z,value:H}}n.removeLastWhere=F;function $(l,q,A=0,N=-1){let H=l.length;if(H===0)return 0;A<0?A=Math.max(0,A+H):A=Math.min(A,H-1),N<0?N=Math.max(0,N+H):N=Math.min(N,H-1);let Z=0;for(let Y=0;Y<H;++Y)A<=N&&Y>=A&&Y<=N&&q(l[Y],Y)||N<A&&(Y<=N||Y>=A)&&q(l[Y],Y)?Z++:Z>0&&(l[Y-Z]=l[Y]);return Z>0&&(l.length=H-Z),Z}n.removeAllWhere=$})(ie||(ie={}));function*Pd(...n){for(const e of n)yield*e}function*Ii(){}function*Fd(n,e=0){for(const t of n)yield[e++,t]}function*Wd(n,e){let t=0;for(const i of n)e(i,t++)&&(yield i)}function en(n,e){let t=0;for(const i of n)if(e(i,t++))return i}function $d(n,e){let t=0;for(const i of n)if(e(i,t++))return t-1;return-1}function jd(n,e){let t;for(const i of n){if(t===void 0){t=i;continue}e(i,t)<0&&(t=i)}return t}function ac(n,e){let t;for(const i of n){if(t===void 0){t=i;continue}e(i,t)>0&&(t=i)}return t}function Ud(n,e){let t=!0,i,s;for(const a of n)t?(i=a,s=a,t=!1):e(a,i)<0?i=a:e(a,s)>0&&(s=a);return t?void 0:[i,s]}function Vd(n){return Array.from(n)}function Kd(n){const e={};for(const[t,i]of n)e[t]=i;return e}function Gd(n,e){let t=0;for(const i of n)if(e(i,t++)===!1)return}function La(n,e){let t=0;for(const i of n)if(e(i,t++)===!1)return!1;return!0}function oc(n,e){let t=0;for(const i of n)if(e(i,t++))return!0;return!1}function*Xd(n,e){let t=0;for(const i of n)yield e(i,t++)}function*Yd(n,e,t){e===void 0?(e=n,n=0,t=1):t===void 0&&(t=1);const i=ya.rangeLength(n,e,t);for(let s=0;s<i;s++)yield n+t*s}var ya;(function(n){function e(t,i,s){return s===0?1/0:t>i&&s>0||t<i&&s<0?0:Math.ceil((i-t)/s)}n.rangeLength=e})(ya||(ya={}));function Jd(n,e,t){const i=n[Symbol.iterator]();let s=0,a=i.next();if(a.done&&t===void 0)throw new TypeError("Reduce of empty iterable with no initial value.");if(a.done)return t;let u=i.next();if(u.done&&t===void 0)return a.value;if(u.done)return e(t,a.value,s++);let c;t===void 0?c=e(a.value,u.value,s++):c=e(e(t,a.value,s++),u.value,s++);let f;for(;!(f=i.next()).done;)c=e(c,f.value,s++);return c}function*Qd(n,e){for(;0<e--;)yield n}function*Zd(n){yield n}function*lc(n){if(typeof n.retro=="function")yield*n.retro();else for(let e=n.length-1;e>-1;e--)yield n[e]}function uc(n){let e=[],t=new Set,i=new Map;for(const u of n)s(u);for(const[u]of i)a(u);return e;function s(u){let[c,f]=u,p=i.get(f);p?p.push(c):i.set(f,[c])}function a(u){if(t.has(u))return;t.add(u);let c=i.get(u);if(c)for(const f of c)a(f);e.push(u)}}function*ef(n,e){let t=0;for(const i of n)t++%e===0&&(yield i)}var Li;(function(n){function e(u,c,f=0){let p=new Array(c.length);for(let _=0,b=f,w=c.length;_<w;++_,++b){if(b=u.indexOf(c[_],b),b===-1)return null;p[_]=b}return p}n.findIndices=e;function t(u,c,f=0){let p=e(u,c,f);if(!p)return null;let _=0;for(let b=0,w=p.length;b<w;++b){let x=p[b]-f;_+=x*x}return{score:_,indices:p}}n.matchSumOfSquares=t;function i(u,c,f=0){let p=e(u,c,f);if(!p)return null;let _=0,b=f-1;for(let w=0,x=p.length;w<x;++w){let y=p[w];_+=y-b-1,b=y}return{score:_,indices:p}}n.matchSumOfDeltas=i;function s(u,c,f){let p=[],_=0,b=0,w=c.length;for(;_<w;){let x=c[_],y=c[_];for(;++_<w&&c[_]===y+1;)y++;b<x&&p.push(u.slice(b,x)),x<y+1&&p.push(f(u.slice(x,y+1))),b=y+1}return b<u.length&&p.push(u.slice(b)),p}n.highlight=s;function a(u,c){return u<c?-1:u>c?1:0}n.cmp=a})(Li||(Li={}));function*tf(n,e){if(e<1)return;const t=n[Symbol.iterator]();let i;for(;0<e--&&!(i=t.next()).done;)yield i.value}function*nf(...n){const e=n.map(i=>i[Symbol.iterator]());let t=e.map(i=>i.next());for(;La(t,i=>!i.done);t=e.map(i=>i.next()))yield t.map(i=>i.value)}const vm=Object.freeze(Object.defineProperty({__proto__:null,get ArrayExt(){return ie},get StringExt(){return Li},chain:Pd,each:Gd,empty:Ii,enumerate:Fd,every:La,filter:Wd,find:en,findIndex:$d,map:Xd,max:ac,min:jd,minmax:Ud,once:Zd,range:Yd,reduce:Jd,repeat:Qd,retro:lc,some:oc,stride:ef,take:tf,toArray:Vd,toObject:Kd,topologicSort:uc,zip:nf},Symbol.toStringTag,{value:"Module"}));var De;(function(n){n.emptyObject=Object.freeze({}),n.emptyArray=Object.freeze([]);function e(_){return _===null||typeof _=="boolean"||typeof _=="number"||typeof _=="string"}n.isPrimitive=e;function t(_){return Array.isArray(_)}n.isArray=t;function i(_){return!e(_)&&!t(_)}n.isObject=i;function s(_,b){if(_===b)return!0;if(e(_)||e(b))return!1;let w=t(_),x=t(b);return w!==x?!1:w&&x?u(_,b):c(_,b)}n.deepEqual=s;function a(_){return e(_)?_:t(_)?f(_):p(_)}n.deepCopy=a;function u(_,b){if(_===b)return!0;if(_.length!==b.length)return!1;for(let w=0,x=_.length;w<x;++w)if(!s(_[w],b[w]))return!1;return!0}function c(_,b){if(_===b)return!0;for(let w in _)if(_[w]!==void 0&&!(w in b))return!1;for(let w in b)if(b[w]!==void 0&&!(w in _))return!1;for(let w in _){let x=_[w],y=b[w];if(!(x===void 0&&y===void 0)&&(x===void 0||y===void 0||!s(x,y)))return!1}return!0}function f(_){let b=new Array(_.length);for(let w=0,x=_.length;w<x;++w)b[w]=a(_[w]);return b}function p(_){let b={};for(let w in _){let x=_[w];x!==void 0&&(b[w]=a(x))}return b}})(De||(De={}));class rf{constructor(){this._types=[],this._values=[]}types(){return this._types.slice()}hasData(e){return this._types.indexOf(e)!==-1}getData(e){let t=this._types.indexOf(e);return t!==-1?this._values[t]:void 0}setData(e,t){this.clearData(e),this._types.push(e),this._values.push(t)}clearData(e){let t=this._types.indexOf(e);t!==-1&&(this._types.splice(t,1),this._values.splice(t,1))}clear(){this._types.length=0,this._values.length=0}}var tl;(function(n){class e{constructor(c){var f,p,_,b;this._activated=!1,this._promise=null,this._service=null,this.id=c.id,this.description=(f=c.description)!==null&&f!==void 0?f:"",this.activate=c.activate,this.deactivate=(p=c.deactivate)!==null&&p!==void 0?p:null,this.provides=(_=c.provides)!==null&&_!==void 0?_:null,this.autoStart=(b=c.autoStart)!==null&&b!==void 0?b:!1,this.requires=c.requires?c.requires.slice():[],this.optional=c.optional?c.optional.slice():[]}get activated(){return this._activated}set activated(c){this._activated=c}get service(){return this._service}set service(c){this._service=c}get promise(){return this._promise}set promise(c){this._promise=c}}function t(u){return new e(u)}n.createPluginData=t;function i(u,c,f){const p=[...u.requires,...u.optional],_=w=>{if(w===u.provides)return!0;const x=f.get(w);if(!x)return!1;const y=c.get(x),C=[...y.requires,...y.optional];return C.length===0?!1:(b.push(x),C.some(_)?!0:(b.pop(),!1))};if(!u.provides||p.length===0)return;const b=[u.id];if(p.some(_))throw new ReferenceError(`Cycle detected: ${b.join(" -> ")}.`)}n.ensureNoCycle=i;function s(u,c,f){const p=new Array,_=C=>{const E=c.get(C),I=[...E.requires,...E.optional];p.push(...I.reduce((R,L)=>{const O=f.get(L);return O&&R.push([C,O]),R},[]))};for(const C of c.keys())_(C);const b=p.filter(C=>C[1]===u);let w=0;for(;b.length>w;){const C=b.length,E=new Set(b.map(I=>I[0]));for(const I of E)p.filter(R=>R[1]===I).forEach(R=>{b.includes(R)||b.push(R)});w=C}const x=uc(b),y=x.findIndex(C=>C===u);return y===-1?[u]:x.slice(0,y+1)}n.findDependents=s;function a(u,c){const f=new Set;for(const p of u.keys())u.get(p).autoStart===!0&&f.add(p);if(c.startPlugins)for(const p of c.startPlugins)f.add(p);if(c.ignorePlugins)for(const p of c.ignorePlugins)f.delete(p);return Array.from(f)}n.collectStartupPlugins=a})(tl||(tl={}));class Or{constructor(){this.promise=new Promise((e,t)=>{this._resolve=e,this._reject=t})}resolve(e){let t=this._resolve;t(e)}reject(e){let t=this._reject;t(e)}}class ym{constructor(e,t){this.name=e,this.description=t??"",this._tokenStructuralPropertyT=null}}function sf(n){let e=0;for(let t=0,i=n.length;t<i;++t)t%4===0&&(e=Math.random()*4294967295>>>0),n[t]=e&255,e>>>=8}var ba;(function(n){n.getRandomValues=(()=>{const e=typeof window<"u"&&(window.crypto||window.msCrypto)||null;return e&&typeof e.getRandomValues=="function"?function(i){return e.getRandomValues(i)}:sf})()})(ba||(ba={}));function af(n){const e=new Uint8Array(16),t=new Array(256);for(let i=0;i<16;++i)t[i]="0"+i.toString(16);for(let i=16;i<256;++i)t[i]=i.toString(16);return function(){return n(e),e[6]=64|e[6]&15,e[8]=128|e[8]&63,t[e[0]]+t[e[1]]+t[e[2]]+t[e[3]]+"-"+t[e[4]]+t[e[5]]+"-"+t[e[6]]+t[e[7]]+"-"+t[e[8]]+t[e[9]]+"-"+t[e[10]]+t[e[11]]+t[e[12]]+t[e[13]]+t[e[14]]+t[e[15]]}}var zn;(function(n){n.uuid4=af(ba.getRandomValues)})(zn||(zn={}));var qr,il;function of(){if(il)return qr;il=1;function n(){this.__data__=[],this.size=0}return qr=n,qr}var Hr,nl;function cc(){if(nl)return Hr;nl=1;function n(e,t){return e===t||e!==e&&t!==t}return Hr=n,Hr}var Br,rl;function Un(){if(rl)return Br;rl=1;var n=cc();function e(t,i){for(var s=t.length;s--;)if(n(t[s][0],i))return s;return-1}return Br=e,Br}var Pr,sl;function lf(){if(sl)return Pr;sl=1;var n=Un(),e=Array.prototype,t=e.splice;function i(s){var a=this.__data__,u=n(a,s);if(u<0)return!1;var c=a.length-1;return u==c?a.pop():t.call(a,u,1),--this.size,!0}return Pr=i,Pr}var Fr,al;function uf(){if(al)return Fr;al=1;var n=Un();function e(t){var i=this.__data__,s=n(i,t);return s<0?void 0:i[s][1]}return Fr=e,Fr}var Wr,ol;function cf(){if(ol)return Wr;ol=1;var n=Un();function e(t){return n(this.__data__,t)>-1}return Wr=e,Wr}var $r,ll;function hf(){if(ll)return $r;ll=1;var n=Un();function e(t,i){var s=this.__data__,a=n(s,t);return a<0?(++this.size,s.push([t,i])):s[a][1]=i,this}return $r=e,$r}var jr,ul;function Vn(){if(ul)return jr;ul=1;var n=of(),e=lf(),t=uf(),i=cf(),s=hf();function a(u){var c=-1,f=u==null?0:u.length;for(this.clear();++c<f;){var p=u[c];this.set(p[0],p[1])}}return a.prototype.clear=n,a.prototype.delete=e,a.prototype.get=t,a.prototype.has=i,a.prototype.set=s,jr=a,jr}var Ur,cl;function df(){if(cl)return Ur;cl=1;var n=Vn();function e(){this.__data__=new n,this.size=0}return Ur=e,Ur}var Vr,hl;function ff(){if(hl)return Vr;hl=1;function n(e){var t=this.__data__,i=t.delete(e);return this.size=t.size,i}return Vr=n,Vr}var Kr,dl;function pf(){if(dl)return Kr;dl=1;function n(e){return this.__data__.get(e)}return Kr=n,Kr}var Gr,fl;function mf(){if(fl)return Gr;fl=1;function n(e){return this.__data__.has(e)}return Gr=n,Gr}var Xr,pl;function hc(){if(pl)return Xr;pl=1;var n=typeof ti=="object"&&ti&&ti.Object===Object&&ti;return Xr=n,Xr}var Yr,ml;function Gt(){if(ml)return Yr;ml=1;var n=hc(),e=typeof self=="object"&&self&&self.Object===Object&&self,t=n||e||Function("return this")();return Yr=t,Yr}var Jr,gl;function Ra(){if(gl)return Jr;gl=1;var n=Gt(),e=n.Symbol;return Jr=e,Jr}var Qr,_l;function gf(){if(_l)return Qr;_l=1;var n=Ra(),e=Object.prototype,t=e.hasOwnProperty,i=e.toString,s=n?n.toStringTag:void 0;function a(u){var c=t.call(u,s),f=u[s];try{u[s]=void 0;var p=!0}catch{}var _=i.call(u);return p&&(c?u[s]=f:delete u[s]),_}return Qr=a,Qr}var Zr,vl;function _f(){if(vl)return Zr;vl=1;var n=Object.prototype,e=n.toString;function t(i){return e.call(i)}return Zr=t,Zr}var es,yl;function Kn(){if(yl)return es;yl=1;var n=Ra(),e=gf(),t=_f(),i="[object Null]",s="[object Undefined]",a=n?n.toStringTag:void 0;function u(c){return c==null?c===void 0?s:i:a&&a in Object(c)?e(c):t(c)}return es=u,es}var ts,bl;function dc(){if(bl)return ts;bl=1;function n(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}return ts=n,ts}var is,xl;function fc(){if(xl)return is;xl=1;var n=Kn(),e=dc(),t="[object AsyncFunction]",i="[object Function]",s="[object GeneratorFunction]",a="[object Proxy]";function u(c){if(!e(c))return!1;var f=n(c);return f==i||f==s||f==t||f==a}return is=u,is}var ns,wl;function vf(){if(wl)return ns;wl=1;var n=Gt(),e=n["__core-js_shared__"];return ns=e,ns}var rs,Sl;function yf(){if(Sl)return rs;Sl=1;var n=vf(),e=(function(){var i=/[^.]+$/.exec(n&&n.keys&&n.keys.IE_PROTO||"");return i?"Symbol(src)_1."+i:""})();function t(i){return!!e&&e in i}return rs=t,rs}var ss,Cl;function pc(){if(Cl)return ss;Cl=1;var n=Function.prototype,e=n.toString;function t(i){if(i!=null){try{return e.call(i)}catch{}try{return i+""}catch{}}return""}return ss=t,ss}var as,Ml;function bf(){if(Ml)return as;Ml=1;var n=fc(),e=yf(),t=dc(),i=pc(),s=/[\\^$.*+?()[\]{}|]/g,a=/^\[object .+?Constructor\]$/,u=Function.prototype,c=Object.prototype,f=u.toString,p=c.hasOwnProperty,_=RegExp("^"+f.call(p).replace(s,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function b(w){if(!t(w)||e(w))return!1;var x=n(w)?_:a;return x.test(i(w))}return as=b,as}var os,Tl;function xf(){if(Tl)return os;Tl=1;function n(e,t){return e==null?void 0:e[t]}return os=n,os}var ls,Al;function Hi(){if(Al)return ls;Al=1;var n=bf(),e=xf();function t(i,s){var a=e(i,s);return n(a)?a:void 0}return ls=t,ls}var us,El;function Na(){if(El)return us;El=1;var n=Hi(),e=Gt(),t=n(e,"Map");return us=t,us}var cs,Il;function Gn(){if(Il)return cs;Il=1;var n=Hi(),e=n(Object,"create");return cs=e,cs}var hs,zl;function wf(){if(zl)return hs;zl=1;var n=Gn();function e(){this.__data__=n?n(null):{},this.size=0}return hs=e,hs}var ds,Dl;function Sf(){if(Dl)return ds;Dl=1;function n(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}return ds=n,ds}var fs,kl;function Cf(){if(kl)return fs;kl=1;var n=Gn(),e="__lodash_hash_undefined__",t=Object.prototype,i=t.hasOwnProperty;function s(a){var u=this.__data__;if(n){var c=u[a];return c===e?void 0:c}return i.call(u,a)?u[a]:void 0}return fs=s,fs}var ps,Ll;function Mf(){if(Ll)return ps;Ll=1;var n=Gn(),e=Object.prototype,t=e.hasOwnProperty;function i(s){var a=this.__data__;return n?a[s]!==void 0:t.call(a,s)}return ps=i,ps}var ms,Rl;function Tf(){if(Rl)return ms;Rl=1;var n=Gn(),e="__lodash_hash_undefined__";function t(i,s){var a=this.__data__;return this.size+=this.has(i)?0:1,a[i]=n&&s===void 0?e:s,this}return ms=t,ms}var gs,Nl;function Af(){if(Nl)return gs;Nl=1;var n=wf(),e=Sf(),t=Cf(),i=Mf(),s=Tf();function a(u){var c=-1,f=u==null?0:u.length;for(this.clear();++c<f;){var p=u[c];this.set(p[0],p[1])}}return a.prototype.clear=n,a.prototype.delete=e,a.prototype.get=t,a.prototype.has=i,a.prototype.set=s,gs=a,gs}var _s,Ol;function Ef(){if(Ol)return _s;Ol=1;var n=Af(),e=Vn(),t=Na();function i(){this.size=0,this.__data__={hash:new n,map:new(t||e),string:new n}}return _s=i,_s}var vs,ql;function If(){if(ql)return vs;ql=1;function n(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}return vs=n,vs}var ys,Hl;function Xn(){if(Hl)return ys;Hl=1;var n=If();function e(t,i){var s=t.__data__;return n(i)?s[typeof i=="string"?"string":"hash"]:s.map}return ys=e,ys}var bs,Bl;function zf(){if(Bl)return bs;Bl=1;var n=Xn();function e(t){var i=n(this,t).delete(t);return this.size-=i?1:0,i}return bs=e,bs}var xs,Pl;function Df(){if(Pl)return xs;Pl=1;var n=Xn();function e(t){return n(this,t).get(t)}return xs=e,xs}var ws,Fl;function kf(){if(Fl)return ws;Fl=1;var n=Xn();function e(t){return n(this,t).has(t)}return ws=e,ws}var Ss,Wl;function Lf(){if(Wl)return Ss;Wl=1;var n=Xn();function e(t,i){var s=n(this,t),a=s.size;return s.set(t,i),this.size+=s.size==a?0:1,this}return Ss=e,Ss}var Cs,$l;function mc(){if($l)return Cs;$l=1;var n=Ef(),e=zf(),t=Df(),i=kf(),s=Lf();function a(u){var c=-1,f=u==null?0:u.length;for(this.clear();++c<f;){var p=u[c];this.set(p[0],p[1])}}return a.prototype.clear=n,a.prototype.delete=e,a.prototype.get=t,a.prototype.has=i,a.prototype.set=s,Cs=a,Cs}var Ms,jl;function Rf(){if(jl)return Ms;jl=1;var n=Vn(),e=Na(),t=mc(),i=200;function s(a,u){var c=this.__data__;if(c instanceof n){var f=c.__data__;if(!e||f.length<i-1)return f.push([a,u]),this.size=++c.size,this;c=this.__data__=new t(f)}return c.set(a,u),this.size=c.size,this}return Ms=s,Ms}var Ts,Ul;function Nf(){if(Ul)return Ts;Ul=1;var n=Vn(),e=df(),t=ff(),i=pf(),s=mf(),a=Rf();function u(c){var f=this.__data__=new n(c);this.size=f.size}return u.prototype.clear=e,u.prototype.delete=t,u.prototype.get=i,u.prototype.has=s,u.prototype.set=a,Ts=u,Ts}var As,Vl;function Of(){if(Vl)return As;Vl=1;var n="__lodash_hash_undefined__";function e(t){return this.__data__.set(t,n),this}return As=e,As}var Es,Kl;function qf(){if(Kl)return Es;Kl=1;function n(e){return this.__data__.has(e)}return Es=n,Es}var Is,Gl;function Hf(){if(Gl)return Is;Gl=1;var n=mc(),e=Of(),t=qf();function i(s){var a=-1,u=s==null?0:s.length;for(this.__data__=new n;++a<u;)this.add(s[a])}return i.prototype.add=i.prototype.push=e,i.prototype.has=t,Is=i,Is}var zs,Xl;function Bf(){if(Xl)return zs;Xl=1;function n(e,t){for(var i=-1,s=e==null?0:e.length;++i<s;)if(t(e[i],i,e))return!0;return!1}return zs=n,zs}var Ds,Yl;function Pf(){if(Yl)return Ds;Yl=1;function n(e,t){return e.has(t)}return Ds=n,Ds}var ks,Jl;function gc(){if(Jl)return ks;Jl=1;var n=Hf(),e=Bf(),t=Pf(),i=1,s=2;function a(u,c,f,p,_,b){var w=f&i,x=u.length,y=c.length;if(x!=y&&!(w&&y>x))return!1;var C=b.get(u),E=b.get(c);if(C&&E)return C==c&&E==u;var I=-1,R=!0,L=f&s?new n:void 0;for(b.set(u,c),b.set(c,u);++I<x;){var O=u[I],F=c[I];if(p)var $=w?p(F,O,I,c,u,b):p(O,F,I,u,c,b);if($!==void 0){if($)continue;R=!1;break}if(L){if(!e(c,function(l,q){if(!t(L,q)&&(O===l||_(O,l,f,p,b)))return L.push(q)})){R=!1;break}}else if(!(O===F||_(O,F,f,p,b))){R=!1;break}}return b.delete(u),b.delete(c),R}return ks=a,ks}var Ls,Ql;function Ff(){if(Ql)return Ls;Ql=1;var n=Gt(),e=n.Uint8Array;return Ls=e,Ls}var Rs,Zl;function Wf(){if(Zl)return Rs;Zl=1;function n(e){var t=-1,i=Array(e.size);return e.forEach(function(s,a){i[++t]=[a,s]}),i}return Rs=n,Rs}var Ns,eu;function $f(){if(eu)return Ns;eu=1;function n(e){var t=-1,i=Array(e.size);return e.forEach(function(s){i[++t]=s}),i}return Ns=n,Ns}var Os,tu;function jf(){if(tu)return Os;tu=1;var n=Ra(),e=Ff(),t=cc(),i=gc(),s=Wf(),a=$f(),u=1,c=2,f="[object Boolean]",p="[object Date]",_="[object Error]",b="[object Map]",w="[object Number]",x="[object RegExp]",y="[object Set]",C="[object String]",E="[object Symbol]",I="[object ArrayBuffer]",R="[object DataView]",L=n?n.prototype:void 0,O=L?L.valueOf:void 0;function F($,l,q,A,N,H,Z){switch(q){case R:if($.byteLength!=l.byteLength||$.byteOffset!=l.byteOffset)return!1;$=$.buffer,l=l.buffer;case I:return!($.byteLength!=l.byteLength||!H(new e($),new e(l)));case f:case p:case w:return t(+$,+l);case _:return $.name==l.name&&$.message==l.message;case x:case C:return $==l+"";case b:var Y=s;case y:var ce=A&u;if(Y||(Y=a),$.size!=l.size&&!ce)return!1;var we=Z.get($);if(we)return we==l;A|=c,Z.set($,l);var He=i(Y($),Y(l),A,N,H,Z);return Z.delete($),He;case E:if(O)return O.call($)==O.call(l)}return!1}return Os=F,Os}var qs,iu;function Uf(){if(iu)return qs;iu=1;function n(e,t){for(var i=-1,s=t.length,a=e.length;++i<s;)e[a+i]=t[i];return e}return qs=n,qs}var Hs,nu;function Oa(){if(nu)return Hs;nu=1;var n=Array.isArray;return Hs=n,Hs}var Bs,ru;function Vf(){if(ru)return Bs;ru=1;var n=Uf(),e=Oa();function t(i,s,a){var u=s(i);return e(i)?u:n(u,a(i))}return Bs=t,Bs}var Ps,su;function Kf(){if(su)return Ps;su=1;function n(e,t){for(var i=-1,s=e==null?0:e.length,a=0,u=[];++i<s;){var c=e[i];t(c,i,e)&&(u[a++]=c)}return u}return Ps=n,Ps}var Fs,au;function Gf(){if(au)return Fs;au=1;function n(){return[]}return Fs=n,Fs}var Ws,ou;function Xf(){if(ou)return Ws;ou=1;var n=Kf(),e=Gf(),t=Object.prototype,i=t.propertyIsEnumerable,s=Object.getOwnPropertySymbols,a=s?function(u){return u==null?[]:(u=Object(u),n(s(u),function(c){return i.call(u,c)}))}:e;return Ws=a,Ws}var $s,lu;function Yf(){if(lu)return $s;lu=1;function n(e,t){for(var i=-1,s=Array(e);++i<e;)s[i]=t(i);return s}return $s=n,$s}var js,uu;function Yn(){if(uu)return js;uu=1;function n(e){return e!=null&&typeof e=="object"}return js=n,js}var Us,cu;function Jf(){if(cu)return Us;cu=1;var n=Kn(),e=Yn(),t="[object Arguments]";function i(s){return e(s)&&n(s)==t}return Us=i,Us}var Vs,hu;function Qf(){if(hu)return Vs;hu=1;var n=Jf(),e=Yn(),t=Object.prototype,i=t.hasOwnProperty,s=t.propertyIsEnumerable,a=n((function(){return arguments})())?n:function(u){return e(u)&&i.call(u,"callee")&&!s.call(u,"callee")};return Vs=a,Vs}var Yi={exports:{}},Ks,du;function Zf(){if(du)return Ks;du=1;function n(){return!1}return Ks=n,Ks}Yi.exports;var fu;function _c(){return fu||(fu=1,(function(n,e){var t=Gt(),i=Zf(),s=e&&!e.nodeType&&e,a=s&&!0&&n&&!n.nodeType&&n,u=a&&a.exports===s,c=u?t.Buffer:void 0,f=c?c.isBuffer:void 0,p=f||i;n.exports=p})(Yi,Yi.exports)),Yi.exports}var Gs,pu;function ep(){if(pu)return Gs;pu=1;var n=9007199254740991,e=/^(?:0|[1-9]\d*)$/;function t(i,s){var a=typeof i;return s=s??n,!!s&&(a=="number"||a!="symbol"&&e.test(i))&&i>-1&&i%1==0&&i<s}return Gs=t,Gs}var Xs,mu;function vc(){if(mu)return Xs;mu=1;var n=9007199254740991;function e(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=n}return Xs=e,Xs}var Ys,gu;function tp(){if(gu)return Ys;gu=1;var n=Kn(),e=vc(),t=Yn(),i="[object Arguments]",s="[object Array]",a="[object Boolean]",u="[object Date]",c="[object Error]",f="[object Function]",p="[object Map]",_="[object Number]",b="[object Object]",w="[object RegExp]",x="[object Set]",y="[object String]",C="[object WeakMap]",E="[object ArrayBuffer]",I="[object DataView]",R="[object Float32Array]",L="[object Float64Array]",O="[object Int8Array]",F="[object Int16Array]",$="[object Int32Array]",l="[object Uint8Array]",q="[object Uint8ClampedArray]",A="[object Uint16Array]",N="[object Uint32Array]",H={};H[R]=H[L]=H[O]=H[F]=H[$]=H[l]=H[q]=H[A]=H[N]=!0,H[i]=H[s]=H[E]=H[a]=H[I]=H[u]=H[c]=H[f]=H[p]=H[_]=H[b]=H[w]=H[x]=H[y]=H[C]=!1;function Z(Y){return t(Y)&&e(Y.length)&&!!H[n(Y)]}return Ys=Z,Ys}var Js,_u;function ip(){if(_u)return Js;_u=1;function n(e){return function(t){return e(t)}}return Js=n,Js}var Ji={exports:{}};Ji.exports;var vu;function np(){return vu||(vu=1,(function(n,e){var t=hc(),i=e&&!e.nodeType&&e,s=i&&!0&&n&&!n.nodeType&&n,a=s&&s.exports===i,u=a&&t.process,c=(function(){try{var f=s&&s.require&&s.require("util").types;return f||u&&u.binding&&u.binding("util")}catch{}})();n.exports=c})(Ji,Ji.exports)),Ji.exports}var Qs,yu;function yc(){if(yu)return Qs;yu=1;var n=tp(),e=ip(),t=np(),i=t&&t.isTypedArray,s=i?e(i):n;return Qs=s,Qs}var Zs,bu;function rp(){if(bu)return Zs;bu=1;var n=Yf(),e=Qf(),t=Oa(),i=_c(),s=ep(),a=yc(),u=Object.prototype,c=u.hasOwnProperty;function f(p,_){var b=t(p),w=!b&&e(p),x=!b&&!w&&i(p),y=!b&&!w&&!x&&a(p),C=b||w||x||y,E=C?n(p.length,String):[],I=E.length;for(var R in p)(_||c.call(p,R))&&!(C&&(R=="length"||x&&(R=="offset"||R=="parent")||y&&(R=="buffer"||R=="byteLength"||R=="byteOffset")||s(R,I)))&&E.push(R);return E}return Zs=f,Zs}var ea,xu;function sp(){if(xu)return ea;xu=1;var n=Object.prototype;function e(t){var i=t&&t.constructor,s=typeof i=="function"&&i.prototype||n;return t===s}return ea=e,ea}var ta,wu;function ap(){if(wu)return ta;wu=1;function n(e,t){return function(i){return e(t(i))}}return ta=n,ta}var ia,Su;function op(){if(Su)return ia;Su=1;var n=ap(),e=n(Object.keys,Object);return ia=e,ia}var na,Cu;function lp(){if(Cu)return na;Cu=1;var n=sp(),e=op(),t=Object.prototype,i=t.hasOwnProperty;function s(a){if(!n(a))return e(a);var u=[];for(var c in Object(a))i.call(a,c)&&c!="constructor"&&u.push(c);return u}return na=s,na}var ra,Mu;function up(){if(Mu)return ra;Mu=1;var n=fc(),e=vc();function t(i){return i!=null&&e(i.length)&&!n(i)}return ra=t,ra}var sa,Tu;function cp(){if(Tu)return sa;Tu=1;var n=rp(),e=lp(),t=up();function i(s){return t(s)?n(s):e(s)}return sa=i,sa}var aa,Au;function hp(){if(Au)return aa;Au=1;var n=Vf(),e=Xf(),t=cp();function i(s){return n(s,t,e)}return aa=i,aa}var oa,Eu;function dp(){if(Eu)return oa;Eu=1;var n=hp(),e=1,t=Object.prototype,i=t.hasOwnProperty;function s(a,u,c,f,p,_){var b=c&e,w=n(a),x=w.length,y=n(u),C=y.length;if(x!=C&&!b)return!1;for(var E=x;E--;){var I=w[E];if(!(b?I in u:i.call(u,I)))return!1}var R=_.get(a),L=_.get(u);if(R&&L)return R==u&&L==a;var O=!0;_.set(a,u),_.set(u,a);for(var F=b;++E<x;){I=w[E];var $=a[I],l=u[I];if(f)var q=b?f(l,$,I,u,a,_):f($,l,I,a,u,_);if(!(q===void 0?$===l||p($,l,c,f,_):q)){O=!1;break}F||(F=I=="constructor")}if(O&&!F){var A=a.constructor,N=u.constructor;A!=N&&"constructor"in a&&"constructor"in u&&!(typeof A=="function"&&A instanceof A&&typeof N=="function"&&N instanceof N)&&(O=!1)}return _.delete(a),_.delete(u),O}return oa=s,oa}var la,Iu;function fp(){if(Iu)return la;Iu=1;var n=Hi(),e=Gt(),t=n(e,"DataView");return la=t,la}var ua,zu;function pp(){if(zu)return ua;zu=1;var n=Hi(),e=Gt(),t=n(e,"Promise");return ua=t,ua}var ca,Du;function mp(){if(Du)return ca;Du=1;var n=Hi(),e=Gt(),t=n(e,"Set");return ca=t,ca}var ha,ku;function gp(){if(ku)return ha;ku=1;var n=Hi(),e=Gt(),t=n(e,"WeakMap");return ha=t,ha}var da,Lu;function _p(){if(Lu)return da;Lu=1;var n=fp(),e=Na(),t=pp(),i=mp(),s=gp(),a=Kn(),u=pc(),c="[object Map]",f="[object Object]",p="[object Promise]",_="[object Set]",b="[object WeakMap]",w="[object DataView]",x=u(n),y=u(e),C=u(t),E=u(i),I=u(s),R=a;return(n&&R(new n(new ArrayBuffer(1)))!=w||e&&R(new e)!=c||t&&R(t.resolve())!=p||i&&R(new i)!=_||s&&R(new s)!=b)&&(R=function(L){var O=a(L),F=O==f?L.constructor:void 0,$=F?u(F):"";if($)switch($){case x:return w;case y:return c;case C:return p;case E:return _;case I:return b}return O}),da=R,da}var fa,Ru;function vp(){if(Ru)return fa;Ru=1;var n=Nf(),e=gc(),t=jf(),i=dp(),s=_p(),a=Oa(),u=_c(),c=yc(),f=1,p="[object Arguments]",_="[object Array]",b="[object Object]",w=Object.prototype,x=w.hasOwnProperty;function y(C,E,I,R,L,O){var F=a(C),$=a(E),l=F?_:s(C),q=$?_:s(E);l=l==p?b:l,q=q==p?b:q;var A=l==b,N=q==b,H=l==q;if(H&&u(C)){if(!u(E))return!1;F=!0,A=!1}if(H&&!A)return O||(O=new n),F||c(C)?e(C,E,I,R,L,O):t(C,E,l,I,R,L,O);if(!(I&f)){var Z=A&&x.call(C,"__wrapped__"),Y=N&&x.call(E,"__wrapped__");if(Z||Y){var ce=Z?C.value():C,we=Y?E.value():E;return O||(O=new n),L(ce,we,I,R,O)}}return H?(O||(O=new n),i(C,E,I,R,L,O)):!1}return fa=y,fa}var pa,Nu;function yp(){if(Nu)return pa;Nu=1;var n=vp(),e=Yn();function t(i,s,a,u,c){return i===s?!0:i==null||s==null||!e(i)&&!e(s)?i!==i&&s!==s:n(i,s,a,u,t,c)}return pa=t,pa}var ma,Ou;function bp(){if(Ou)return ma;Ou=1;var n=yp();function e(t,i){return n(t,i)}return ma=e,ma}var xp=bp();const wp=sc(xp);function qu(n,e){return n.filter(t=>e.indexOf(t)===-1)}function xa(n,e){return wp(n,e)}const Zi=Object.assign||function(n,...e){for(let t=1;t<e.length;t++){const i=e[t];for(const s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])}return n};function bm(){return zn.uuid4()}function bc(n){const e=Object.keys(n),t=[];return e.forEach(function(i){t.push(n[i])}),Promise.all(t).then(i=>{const s={};for(let a=0;a<e.length;a++)s[e[a]]=i[a];return s})}function Dn(n,e){return function(i){throw e&&console.error(new Error(n)),i}}function Sp(n,e,t){for(let i=0;i<e.length;i++){const s=e[i];let a=t[i];a instanceof DataView||(a=new DataView(a instanceof ArrayBuffer?a:a.buffer));let u=n;for(let c=0;c<s.length-1;c++)u=u[s[c]];u[s[s.length-1]]=a}}function Cp(n){var e;return(e=typeof n=="object"&&n&&"toJSON"in n)!==null&&e!==void 0?e:!1}function Mp(n){return De.isObject(n)}function Tp(n){const e=[],t=[];function i(a,u){if(Cp(a)&&(a=a.toJSON()),Array.isArray(a)){let c=!1;for(let f=0;f<a.length;f++){const p=a[f];if(p)if(p instanceof ArrayBuffer||ArrayBuffer.isView(p))c||(a=a.slice(),c=!0),e.push(ArrayBuffer.isView(p)?p.buffer:p),t.push(u.concat([f])),a[f]=null;else{const _=i(p,u.concat([f]));_!==p&&(c||(a=a.slice(),c=!0),a[f]=_)}}}else if(Mp(a))for(const c in a){let f=!1;if(Object.prototype.hasOwnProperty.call(a,c)){const p=a[c];if(p)if(p instanceof ArrayBuffer||ArrayBuffer.isView(p))f||(a=Object.assign({},a),f=!0),e.push(ArrayBuffer.isView(p)?p.buffer:p),t.push(u.concat([c])),delete a[c];else{const _=i(p,u.concat([c]));_!==p&&(f||(a=Object.assign({},a),f=!0),a[c]=_)}}}return a}return{state:i(n,[]),buffers:e,buffer_paths:t}}const xm=`<svg style="height:50%;max-height: 50px;" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48">
2
2
  <g >
3
3
  <g transform="translate(0.24520123,0.93464292)">
4
4
  <path d="M 8.2494641,21.074514 V 5.6225142 c 0,-0.314 0.254,-0.567 0.57,-0.567 H 29.978464 c 2.388,0 9.268,5.8269998 9.268,8.3029998 v 5.5835 l -3.585749,4.407396 -2.772971,-3.535534 -5.126524,3.414213 -5.944543,-3.237436 -5.722718,3.06066 z m 30.9969999,3.8675 v 15.5835 c 0,0.314 -0.254,0.567 -0.57,0.567 H 8.8194641 c -0.315,0.002 -0.57,-0.251 -0.57,-0.566 v -15.452 l 7.8444949,2.628449 5.656854,-2.65165 4.24264,3.005204 5.833631,-3.237437 3.712311,3.944543 z" style="fill:url(#linearGradient3448);stroke:#888a85" />
package/dist/index.html CHANGED
@@ -64,8 +64,8 @@
64
64
  }
65
65
  }
66
66
  </script>
67
- <script type="module" crossorigin src="/assets/index-7-YBurka.js"></script>
68
- <link rel="stylesheet" crossorigin href="/assets/index-CFBUnxSZ.css">
67
+ <script type="module" crossorigin src="/assets/index-DK4nS74r.js"></script>
68
+ <link rel="stylesheet" crossorigin href="/assets/index-DzjpmUak.css">
69
69
  </head>
70
70
  <body class="bg-slate-50 text-slate-900 antialiased">
71
71
  <div id="root"></div>
@@ -45,6 +45,7 @@ exports.persistSessionToken = persistSessionToken;
45
45
  exports.authMiddleware = authMiddleware;
46
46
  exports.authWebSocketMiddleware = authWebSocketMiddleware;
47
47
  const url_1 = require("url");
48
+ const crypto_1 = require("crypto");
48
49
  const fs = __importStar(require("fs"));
49
50
  const path = __importStar(require("path"));
50
51
  const os = __importStar(require("os"));
@@ -132,13 +133,28 @@ function extractClusterSecret(req) {
132
133
  }
133
134
  return value;
134
135
  }
136
+ function secretsEqual(a, b) {
137
+ const ab = Buffer.from(a);
138
+ const bb = Buffer.from(b);
139
+ if (ab.length !== bb.length)
140
+ return false;
141
+ return (0, crypto_1.timingSafeEqual)(ab, bb);
142
+ }
143
+ /** Loopback = same machine (or arrived through an ssh tunnel, which
144
+ * terminates on this machine) — the trust boundary for the on-disk
145
+ * session-token fallback used by MCP/CLI tools. */
146
+ function isLoopback(addr) {
147
+ if (!addr)
148
+ return false;
149
+ return addr === '127.0.0.1' || addr === '::1' || addr === '::ffff:127.0.0.1' || addr.startsWith('127.');
150
+ }
135
151
  function hasValidClusterSecret(req) {
136
152
  const clusterSecret = getClusterSecret();
137
153
  if (!clusterSecret) {
138
154
  return false;
139
155
  }
140
156
  const provided = extractClusterSecret(req);
141
- return Boolean(provided && provided === clusterSecret);
157
+ return Boolean(provided && secretsEqual(provided, clusterSecret));
142
158
  }
143
159
  function isClusterRoute(pathname) {
144
160
  return pathname.startsWith('/api/servers') || pathname.startsWith('/servers');
@@ -205,8 +221,10 @@ async function authMiddleware(request, reply) {
205
221
  let token = extractToken(request);
206
222
  // Fallback: if no token in request, check the persisted session token file.
207
223
  // This allows MCP servers and CLI tools to piggyback on the browser's auth
208
- // without needing their own TOTP flow.
209
- if (!token) {
224
+ // without needing their own TOTP flow. Loopback-only: those tools run on
225
+ // this machine (or reach it through an ssh tunnel, which lands on
226
+ // loopback); a token-less request from the network gets no free ride.
227
+ if (!token && isLoopback(request.ip)) {
210
228
  token = readSessionToken();
211
229
  }
212
230
  if (!token) {
@@ -245,7 +263,7 @@ function authWebSocketMiddleware(request) {
245
263
  return false;
246
264
  }
247
265
  const provided = extractClusterSecret(request);
248
- if (provided !== clusterSecret) {
266
+ if (!provided || !secretsEqual(provided, clusterSecret)) {
249
267
  console.log('[Auth] WebSocket rejected - invalid cluster secret');
250
268
  return false;
251
269
  }
@@ -48,8 +48,8 @@ const os = __importStar(require("os"));
48
48
  const otplib_1 = require("otplib");
49
49
  const jwt = __importStar(require("jsonwebtoken"));
50
50
  const qrcode = __importStar(require("qrcode-terminal"));
51
- // Config file location
52
- const NEBULA_DIR = path.join(os.homedir(), '.nebula');
51
+ // Config file location (env override is a test seam)
52
+ const NEBULA_DIR = process.env.NEBULA_AUTH_DIR || path.join(os.homedir(), '.nebula');
53
53
  const AUTH_CONFIG_FILE = path.join(NEBULA_DIR, 'auth.json');
54
54
  // JWT settings
55
55
  const JWT_SECRET_LENGTH = 64;
@@ -58,8 +58,10 @@ const LONG_SESSION_DAYS = 30;
58
58
  // Rate limiting: max 5 attempts per 30 seconds
59
59
  const MAX_ATTEMPTS = 5;
60
60
  const WINDOW_MS = 30000;
61
- // Temporary debugging setting: accept up to five TOTP steps before and after
62
- // current time while investigating clock skew and login flow issues.
61
+ // DELIBERATELY wide (±5 steps = ±2.5min): cluster login nodes have shipped
62
+ // with minutes of clock skew and a tight window locks the user out entirely.
63
+ // Availability beats the marginal brute-force surface here — do not "fix"
64
+ // this back to 1 without confirming server NTP is trustworthy everywhere.
63
65
  const TOTP_WINDOW_STEPS = 5;
64
66
  otplib_1.authenticator.options = {
65
67
  ...otplib_1.authenticator.options,
@@ -105,6 +107,15 @@ class AuthService {
105
107
  }
106
108
  catch (err) {
107
109
  console.error('[Auth] Failed to load auth config:', err);
110
+ // NEVER silently overwrite an existing-but-unreadable config: it may
111
+ // hold the user's only copy of their TOTP secret (e.g. truncated by a
112
+ // quota-full write). Preserve it for recovery before regenerating.
113
+ try {
114
+ const backup = `${AUTH_CONFIG_FILE}.corrupt-${Date.now()}`;
115
+ fs.copyFileSync(AUTH_CONFIG_FILE, backup);
116
+ console.error(`[Auth] Unreadable auth config backed up to ${backup} — regenerating fresh secrets.`);
117
+ }
118
+ catch { /* backup is best-effort */ }
108
119
  }
109
120
  }
110
121
  // No config exists - generate new secrets
@@ -137,9 +148,28 @@ class AuthService {
137
148
  saveConfig() {
138
149
  if (!this.config)
139
150
  return;
140
- fs.writeFileSync(AUTH_CONFIG_FILE, JSON.stringify(this.config, null, 2), {
141
- mode: 0o600, // Owner read/write only
142
- });
151
+ // Atomic write (tmp + rename): a plain writeFileSync truncates BEFORE
152
+ // writing, so a quota-full/crashed write leaves an empty auth.json and
153
+ // the TOTP secret then exists only in this process's memory — exactly the
154
+ // failure that forces users to re-enroll after the next restart. With
155
+ // rename, a failed write leaves the previous file untouched.
156
+ const tmp = `${AUTH_CONFIG_FILE}.${process.pid}.tmp`;
157
+ try {
158
+ fs.writeFileSync(tmp, JSON.stringify(this.config, null, 2), { mode: 0o600 });
159
+ fs.renameSync(tmp, AUTH_CONFIG_FILE);
160
+ }
161
+ catch (err) {
162
+ try {
163
+ fs.unlinkSync(tmp);
164
+ }
165
+ catch { /* nothing partial to clean */ }
166
+ // Loud, specific failure: the server keeps working from memory, but the
167
+ // secret will NOT survive a restart — the user must be able to see why.
168
+ console.error(`[Auth] FAILED to persist auth config to ${AUTH_CONFIG_FILE} — ` +
169
+ `2FA secrets exist ONLY in memory and will be lost on restart. ` +
170
+ `Check disk quota/permissions. Error:`, err);
171
+ throw err;
172
+ }
143
173
  }
144
174
  /**
145
175
  * Print QR code and manual key to terminal for initial setup
@@ -10,10 +10,21 @@ declare class ClientRegistration {
10
10
  private registrationRetryTimeout;
11
11
  private registered;
12
12
  private serverId;
13
+ /**
14
+ * The local IP on the interface that ROUTES TO the main server, learned by
15
+ * opening a TCP connection to it. Registering os.hostname() broke on
16
+ * clusters where compute nodes report an FQDN the controller cannot
17
+ * resolve (cri22cn416.cri.uchicago.edu vs the resolvable cri22cn416):
18
+ * every controller→node fetch died as 500 "fetch failed" while heartbeats
19
+ * (outbound) kept the allocation looking healthy. An IP needs no DNS at
20
+ * all, and the interface that reaches the controller is the one the
21
+ * controller can reach back on.
22
+ */
23
+ private routableLocalAddress;
13
24
  /**
14
25
  * Initialize client registration from environment variables
15
26
  */
16
- initFromEnv(localPort: number): void;
27
+ initFromEnv(localPort: number): Promise<void>;
17
28
  /**
18
29
  * Register with the main server
19
30
  */
@@ -43,6 +43,7 @@ exports.clientRegistration = void 0;
43
43
  const server_registry_1 = require("./server-registry");
44
44
  const resource_service_1 = require("../resources/resource-service");
45
45
  const os = __importStar(require("os"));
46
+ const net = __importStar(require("net"));
46
47
  const HEARTBEAT_INTERVAL_MS = 30_000; // 30 seconds
47
48
  const REGISTRATION_RETRY_MS = 10_000; // 10 seconds retry on failure
48
49
  class ClientRegistration {
@@ -51,16 +52,48 @@ class ClientRegistration {
51
52
  registrationRetryTimeout = null;
52
53
  registered = false;
53
54
  serverId = null;
55
+ /**
56
+ * The local IP on the interface that ROUTES TO the main server, learned by
57
+ * opening a TCP connection to it. Registering os.hostname() broke on
58
+ * clusters where compute nodes report an FQDN the controller cannot
59
+ * resolve (cri22cn416.cri.uchicago.edu vs the resolvable cri22cn416):
60
+ * every controller→node fetch died as 500 "fetch failed" while heartbeats
61
+ * (outbound) kept the allocation looking healthy. An IP needs no DNS at
62
+ * all, and the interface that reaches the controller is the one the
63
+ * controller can reach back on.
64
+ */
65
+ routableLocalAddress(mainServerUrl) {
66
+ return new Promise((resolve) => {
67
+ try {
68
+ const u = new URL(mainServerUrl);
69
+ const port = Number(u.port) || (u.protocol === 'https:' ? 443 : 80);
70
+ const sock = net.connect({ host: u.hostname, port, timeout: 3000 }, () => {
71
+ const addr = sock.localAddress || null;
72
+ sock.destroy();
73
+ resolve(addr);
74
+ });
75
+ sock.on('error', () => resolve(null));
76
+ sock.on('timeout', () => { sock.destroy(); resolve(null); });
77
+ }
78
+ catch {
79
+ resolve(null);
80
+ }
81
+ });
82
+ }
54
83
  /**
55
84
  * Initialize client registration from environment variables
56
85
  */
57
- initFromEnv(localPort) {
86
+ async initFromEnv(localPort) {
58
87
  const mainServerUrl = process.env.NEBULA_MAIN_SERVER;
59
88
  if (!mainServerUrl) {
60
89
  console.log('[ClientRegistration] No NEBULA_MAIN_SERVER set, running as standalone');
61
90
  return;
62
91
  }
63
- const localHost = process.env.NEBULA_HOST || os.hostname();
92
+ // Explicit override routable IP → hostname (last resort; may be an
93
+ // FQDN the controller can't resolve).
94
+ const localHost = process.env.NEBULA_HOST
95
+ || (await this.routableLocalAddress(mainServerUrl))
96
+ || os.hostname();
64
97
  const serverName = process.env.NEBULA_SERVER_NAME || os.hostname();
65
98
  const secret = process.env.NEBULA_CLUSTER_SECRET;
66
99
  const allocationToken = process.env.NEBULA_ALLOCATION_TOKEN;
@@ -158,9 +158,17 @@ async function getRemoteKernelStatus(sessionId) {
158
158
  if (!server) {
159
159
  throw new Error(`Server not found: ${serverId}`);
160
160
  }
161
- const response = await fetch(`${server.url}/api/kernels/${remoteSessionId}/status`, {
162
- headers: { ...getClusterHeaders() },
163
- });
161
+ let response;
162
+ try {
163
+ response = await fetch(`${server.url}/api/kernels/${remoteSessionId}/status`, {
164
+ headers: { ...getClusterHeaders() },
165
+ });
166
+ }
167
+ catch (err) {
168
+ // Connection-level failure (refused/reset) — the node may be gone.
169
+ server_registry_1.serverRegistry.reportUnreachable(serverId);
170
+ throw err;
171
+ }
164
172
  if (!response.ok) {
165
173
  const error = await response.json().catch(() => ({ detail: 'Unknown error' }));
166
174
  throw new Error(error.detail || 'Failed to get kernel status');
@@ -331,6 +339,11 @@ function createWebSocketProxy(sessionId, clientWs) {
331
339
  // Handle remote close
332
340
  remoteWs.on('close', () => {
333
341
  console.log(`[KernelProxy] Remote WebSocket closed for ${sessionId}`);
342
+ // The kernel channel dropping is the earliest signal a compute node
343
+ // died (walltime, scancel, crash) — let the allocation layer verify.
344
+ const { serverId: sid } = parseSessionId(sessionId);
345
+ if (sid)
346
+ server_registry_1.serverRegistry.reportUnreachable(sid);
334
347
  if (clientWs.readyState === ws_1.WebSocket.OPEN) {
335
348
  clientWs.close();
336
349
  }
@@ -345,6 +358,9 @@ function createWebSocketProxy(sessionId, clientWs) {
345
358
  // Handle errors
346
359
  remoteWs.on('error', (err) => {
347
360
  console.error(`[KernelProxy] Remote WebSocket error for ${sessionId}:`, err);
361
+ const { serverId: sid } = parseSessionId(sessionId);
362
+ if (sid)
363
+ server_registry_1.serverRegistry.reportUnreachable(sid);
348
364
  });
349
365
  // Track the proxy
350
366
  const session = proxiedSessions.get(sessionId);
@@ -84,6 +84,15 @@ declare class ServerRegistry {
84
84
  * Get all online peer servers
85
85
  */
86
86
  getOnlineServers(): PeerServer[];
87
+ private lostListeners;
88
+ onServerLost(cb: (server: PeerServer) => void): void;
89
+ private notifyLost;
90
+ /**
91
+ * A request proxied to this server just failed at the connection level
92
+ * (refused/reset/timeout). Don't mark it offline on one failure — that's
93
+ * the heartbeat's job — but do tell listeners so they can verify fast.
94
+ */
95
+ reportUnreachable(serverId: string): void;
87
96
  /**
88
97
  * Check server health and update status
89
98
  */
@@ -168,6 +168,31 @@ class ServerRegistry {
168
168
  getOnlineServers() {
169
169
  return this.getAllServers().filter(s => s.status === 'online');
170
170
  }
171
+ // Listeners fired when a peer looks dead (heartbeat timeout, or a proxy
172
+ // request to it failed at the connection level). Lets the allocation
173
+ // service react instantly instead of waiting for its next squeue poll.
174
+ lostListeners = [];
175
+ onServerLost(cb) {
176
+ this.lostListeners.push(cb);
177
+ }
178
+ notifyLost(server) {
179
+ for (const cb of this.lostListeners) {
180
+ try {
181
+ cb(server);
182
+ }
183
+ catch { /* listener errors must not break the sweep */ }
184
+ }
185
+ }
186
+ /**
187
+ * A request proxied to this server just failed at the connection level
188
+ * (refused/reset/timeout). Don't mark it offline on one failure — that's
189
+ * the heartbeat's job — but do tell listeners so they can verify fast.
190
+ */
191
+ reportUnreachable(serverId) {
192
+ const server = this.servers.get(serverId);
193
+ if (server)
194
+ this.notifyLost(server);
195
+ }
171
196
  /**
172
197
  * Check server health and update status
173
198
  */
@@ -185,6 +210,7 @@ class ServerRegistry {
185
210
  if (stale > HEARTBEAT_TIMEOUT_MS && server.status === 'online') {
186
211
  console.log(`[ServerRegistry] Server ${server.id} marked offline (heartbeat timeout)`);
187
212
  server.status = 'offline';
213
+ this.notifyLost(server);
188
214
  }
189
215
  }
190
216
  }
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Conda Location Discovery (VSCode/PET-style filesystem forensics)
3
+ *
4
+ * Finds conda installs and environments WITHOUT executing conda/mamba —
5
+ * spawning conda boots a full Python interpreter and takes seconds, and the
6
+ * binary may not even be on PATH for envs created by mamba/micromamba or
7
+ * from another shell. Instead, everything comes from files conda itself
8
+ * maintains:
9
+ *
10
+ * - ~/.conda/environments.txt — conda appends EVERY env it creates here
11
+ * (named, path-based `-p` envs, and base), so this single file covers
12
+ * envs living in arbitrary locations.
13
+ * - .condarc `envs_dirs`/`envs_path` — user-configured env containers.
14
+ * - Well-known install roots (~/miniconda3, /opt/homebrew/…, micromamba…).
15
+ * - CONDA_* / MAMBA_* environment variables.
16
+ * - conda/mamba/micromamba binaries on PATH — the install root is derived
17
+ * from the (symlink-resolved) binary location, never by running it.
18
+ *
19
+ * A directory IS a conda env iff it has a `conda-meta/` directory (pixi envs
20
+ * carry a `conda-meta/pixi` marker and are excluded — the pixi locator owns
21
+ * those). An env is an install root iff it also has `envs/` or `condabin/`.
22
+ */
23
+ export interface CondaLocatorContext {
24
+ home: string;
25
+ env: Record<string, string | undefined>;
26
+ platform: NodeJS.Platform;
27
+ }
28
+ export interface CondaEnvLocation {
29
+ prefix: string;
30
+ envName: string | null;
31
+ base?: string;
32
+ }
33
+ export declare function defaultCondaContext(): CondaLocatorContext;
34
+ /** conda-meta/ present, and not a pixi env (conda-meta/pixi marker). */
35
+ export declare function isCondaEnv(dir: string): Promise<boolean>;
36
+ /** An install root is itself an env (base) that also carries envs/ or condabin/. */
37
+ export declare function isCondaInstall(dir: string): Promise<boolean>;
38
+ /** Env prefixes recorded by conda itself — one absolute path per line. */
39
+ export declare function readEnvironmentsTxt(ctx: CondaLocatorContext): Promise<string[]>;
40
+ /**
41
+ * Minimal .condarc reader for the two keys that name env containers.
42
+ * Handles block lists and inline `[a, b]` lists; deliberately not a full
43
+ * YAML parser — these files are flat and hand-written.
44
+ */
45
+ export declare function parseCondaRcEnvDirs(content: string, home: string): string[];
46
+ /** Every .condarc-style file worth checking, most specific first. */
47
+ export declare function getCondaRcSearchPaths(ctx: CondaLocatorContext): string[];
48
+ /** Env container dirs from every .condarc found (envs_dirs / envs_path). */
49
+ export declare function getCondaRcEnvDirs(ctx: CondaLocatorContext): Promise<string[]>;
50
+ /** Well-known install roots (cheap string candidates; existence checked later). */
51
+ export declare function getKnownCondaRoots(ctx: CondaLocatorContext): string[];
52
+ /**
53
+ * Derive install roots from conda-like binaries on PATH: resolve the symlink
54
+ * (homebrew shims point into Caskroom), then walk out of bin/condabin/Scripts.
55
+ * The binary is never executed.
56
+ */
57
+ export declare function getCondaRootsFromPath(ctx: CondaLocatorContext): Promise<string[]>;
58
+ /**
59
+ * Locate conda/mamba/micromamba binaries (PATH first, then known roots) for
60
+ * callers that DO need to run conda — e.g. `conda install -p <prefix>` in the
61
+ * ipykernel install flow. Discovery itself never executes these.
62
+ */
63
+ export declare function findCondaLikeBinaries(ctx?: CondaLocatorContext): Promise<string[]>;
64
+ export declare function pythonExeForPrefix(prefix: string, platform: NodeJS.Platform): string;
65
+ /** Inverse of pythonExeForPrefix: the env prefix a python executable lives in. */
66
+ export declare function prefixForPythonExe(pythonPath: string): string;
67
+ /** First match for an executable name on the context's PATH (fs check only). */
68
+ export declare function findExecutableOnPath(name: string, ctx?: CondaLocatorContext): Promise<string | null>;
69
+ /**
70
+ * The full sweep: merge every source, expand install roots and containers,
71
+ * and return deduped env locations.
72
+ */
73
+ export declare function collectCondaEnvs(ctx?: CondaLocatorContext): Promise<CondaEnvLocation[]>;