!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"substack@538433c"};var t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="2a7c0b97-c74c-49ce-8da0-b3ee053d5952",e._sentryDebugIdIdentifier="sentry-dbid-2a7c0b97-c74c-49ce-8da0-b3ee053d5952")}catch(e){}}();"use strict";(self.webpackChunksubstack=self.webpackChunksubstack||[]).push([["23553"],{45773:function(e,t,n){n.d(t,{A:()=>r});let r=(0,n(81315).A)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]])},78998:function(e,t,n){let r,o;n.d(t,{FX:()=>g,O5:()=>s,XX:()=>d,mK:()=>u,oE:()=>m});var l=n(17402),i=n(62541),a=n(80385),s=((r=s||{})[r.None=0]="None",r[r.RenderStrategy=1]="RenderStrategy",r[r.Static=2]="Static",r),u=((o=u||{})[o.Unmount=0]="Unmount",o[o.Hidden=1]="Hidden",o);function d({ourProps:e,theirProps:t,slot:n,defaultTag:r,features:o,visible:l=!0,name:i,mergeRefs:s}){s=null!=s?s:f;let u=p(t,e);if(l)return c(u,n,r,i,s);let d=null!=o?o:0;if(2&d){let{static:e=!1,...t}=u;if(e)return c(t,n,r,i,s)}if(1&d){let{unmount:e=!0,...t}=u;return(0,a.Y)(+!e,{0:()=>null,1:()=>c({...t,hidden:!0,style:{display:"none"}},n,r,i,s)})}return c(u,n,r,i,s)}function c(e,t={},n,r,o){let{as:a=n,children:s,refName:u="ref",...d}=y(e,["unmount","static"]),f=void 0!==e.ref?{[u]:e.ref}:{},g="function"==typeof s?s(t):s;"className"in d&&d.className&&"function"==typeof d.className&&(d.className=d.className(t));let h={};if(t){let e=!1,n=[];for(let[r,o]of Object.entries(t))"boolean"==typeof o&&(e=!0),!0===o&&n.push(r);e&&(h["data-headlessui-state"]=n.join(" "))}if(a===l.Fragment&&Object.keys(m(d)).length>0){if(!(0,l.isValidElement)(g)||Array.isArray(g)&&g.length>1)throw Error(['Passing props on "Fragment"!',"",`The current component <${r} /> is rendering a "Fragment".`,"However we need to passthrough the following props:",Object.keys(d).map(e=>` - ${e}`).join(` `),"","You can apply a few solutions:",['Add an `as="..."` prop, to ensure that we render an actual element instead of a "Fragment".',"Render a single element as the child so that we can forward the props onto that element."].map(e=>` - ${e}`).join(` `)].join(` `));let e=g.props,t="function"==typeof(null==e?void 0:e.className)?(...t)=>(0,i.x)(null==e?void 0:e.className(...t),d.className):(0,i.x)(null==e?void 0:e.className,d.className);return(0,l.cloneElement)(g,Object.assign({},p(g.props,m(y(d,["ref"]))),h,f,{ref:o(g.ref,f.ref)},t?{className:t}:{}))}return(0,l.createElement)(a,Object.assign({},y(d,["ref"]),a!==l.Fragment&&f,a!==l.Fragment&&h),g)}function f(...e){return e.every(e=>null==e)?void 0:t=>{for(let n of e)null!=n&&("function"==typeof n?n(t):n.current=t)}}function p(...e){if(0===e.length)return{};if(1===e.length)return e[0];let t={},n={};for(let r of e)for(let e in r)e.startsWith("on")&&"function"==typeof r[e]?(null!=n[e]||(n[e]=[]),n[e].push(r[e])):t[e]=r[e];if(t.disabled||t["aria-disabled"])return Object.assign(t,Object.fromEntries(Object.keys(n).map(e=>[e,void 0])));for(let e in n)Object.assign(t,{[e](t,...r){for(let o of n[e]){if((t instanceof Event||(null==t?void 0:t.nativeEvent)instanceof Event)&&t.defaultPrevented)return;o(t,...r)}}});return t}function g(e){var t;return Object.assign((0,l.forwardRef)(e),{displayName:null!=(t=e.displayName)?t:e.name})}function m(e){let t=Object.assign({},e);for(let e in t)void 0===t[e]&&delete t[e];return t}function y(e,t=[]){let n=Object.assign({},e);for(let e of t)e in n&&delete n[e];return n}},38390:function(e,t,n){n.d(t,{UC:()=>en,VY:()=>eo,ZL:()=>ee,bL:()=>J,bm:()=>el,hE:()=>er,hJ:()=>et,l9:()=>Q});var r=n(17402),o=n(61935),l=n(53113),i=n(37227),a=n(39627),s=n(97372),u=n(83723),d=n(2068),c=n(51181),f=n(10607),p=n(9989),g=n(65567),m=n(69836),y=n(58241),h=n(44400),b=n(4006),v="Dialog",[w,R]=(0,i.A)(v),[D,N]=w(v),O=e=>{let{__scopeDialog:t,children:n,open:o,defaultOpen:l,onOpenChange:i,modal:u=!0}=e,d=r.useRef(null),c=r.useRef(null),[f,p]=(0,s.i)({prop:o,defaultProp:l??!1,onChange:i,caller:v});return(0,b.Y)(D,{scope:t,triggerRef:d,contentRef:c,contentId:(0,a.B)(),titleId:(0,a.B)(),descriptionId:(0,a.B)(),open:f,onOpenChange:p,onOpenToggle:r.useCallback(()=>p(e=>!e),[p]),modal:u,children:n})};O.displayName=v;var E="DialogTrigger",C=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=N(E,n),a=(0,l.s)(t,i.triggerRef);return(0,b.Y)(p.sG.button,{type:"button","aria-haspopup":"dialog","aria-expanded":i.open,"aria-controls":i.contentId,"data-state":q(i.open),...r,ref:a,onClick:(0,o.mK)(e.onClick,i.onOpenToggle)})});C.displayName=E;var Y="DialogPortal",[I,_]=w(Y,{forceMount:void 0}),j=e=>{let{__scopeDialog:t,forceMount:n,children:o,container:l}=e,i=N(Y,t);return(0,b.Y)(I,{scope:t,forceMount:n,children:r.Children.map(o,e=>(0,b.Y)(f.C,{present:n||i.open,children:(0,b.Y)(c.Z,{asChild:!0,container:l,children:e})}))})};j.displayName=Y;var F="DialogOverlay",k=r.forwardRef((e,t)=>{let n=_(F,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,l=N(F,e.__scopeDialog);return l.modal?(0,b.Y)(f.C,{present:r||l.open,children:(0,b.Y)(P,{...o,ref:t})}):null});k.displayName=F;var A=(0,h.TL)("DialogOverlay.RemoveScroll"),P=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=N(F,n);return(0,b.Y)(m.A,{as:A,allowPinchZoom:!0,shards:[o.contentRef],children:(0,b.Y)(p.sG.div,{"data-state":q(o.open),...r,ref:t,style:{pointerEvents:"auto",...r.style}})})}),$="DialogContent",S=r.forwardRef((e,t)=>{let n=_($,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,l=N($,e.__scopeDialog);return(0,b.Y)(f.C,{present:r||l.open,children:l.modal?(0,b.Y)(T,{...o,ref:t}):(0,b.Y)(W,{...o,ref:t})})});S.displayName=$;var T=r.forwardRef((e,t)=>{let n=N($,e.__scopeDialog),i=r.useRef(null),a=(0,l.s)(t,n.contentRef,i);return r.useEffect(()=>{let e=i.current;if(e)return(0,y.Eq)(e)},[]),(0,b.Y)(K,{...e,ref:a,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,o.mK)(e.onCloseAutoFocus,e=>{e.preventDefault(),n.triggerRef.current?.focus()}),onPointerDownOutside:(0,o.mK)(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=0===t.button&&!0===t.ctrlKey;(2===t.button||n)&&e.preventDefault()}),onFocusOutside:(0,o.mK)(e.onFocusOutside,e=>e.preventDefault())})}),W=r.forwardRef((e,t)=>{let n=N($,e.__scopeDialog),o=r.useRef(!1),l=r.useRef(!1);return(0,b.Y)(K,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(o.current||n.triggerRef.current?.focus(),t.preventDefault()),o.current=!1,l.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(o.current=!0,"pointerdown"===t.detail.originalEvent.type&&(l.current=!0));let r=t.target;n.triggerRef.current?.contains(r)&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&l.current&&t.preventDefault()}})}),K=r.forwardRef((e,t)=>{let{__scopeDialog:n,trapFocus:o,onOpenAutoFocus:i,onCloseAutoFocus:a,...s}=e,c=N($,n),f=r.useRef(null),p=(0,l.s)(t,f);return(0,g.Oh)(),(0,b.FD)(b.FK,{children:[(0,b.Y)(d.n,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:i,onUnmountAutoFocus:a,children:(0,b.Y)(u.qW,{role:"dialog",id:c.contentId,"aria-describedby":c.descriptionId,"aria-labelledby":c.titleId,"data-state":q(c.open),...s,ref:p,onDismiss:()=>c.onOpenChange(!1)})}),(0,b.FD)(b.FK,{children:[(0,b.Y)(X,{titleId:c.titleId}),(0,b.Y)(z,{contentRef:f,descriptionId:c.descriptionId})]})]})}),x="DialogTitle",V=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=N(x,n);return(0,b.Y)(p.sG.h2,{id:o.titleId,...r,ref:t})});V.displayName=x;var B="DialogDescription",M=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=N(B,n);return(0,b.Y)(p.sG.p,{id:o.descriptionId,...r,ref:t})});M.displayName=B;var G="DialogClose",H=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,l=N(G,n);return(0,b.Y)(p.sG.button,{type:"button",...r,ref:t,onClick:(0,o.mK)(e.onClick,()=>l.onOpenChange(!1))})});function q(e){return e?"open":"closed"}H.displayName=G;var L="DialogTitleWarning",[U,Z]=(0,i.q)(L,{contentName:$,titleName:x,docsSlug:"dialog"}),X=({titleId:e})=>{let t=Z(L),n=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users. If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component. For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return r.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},z=({contentRef:e,descriptionId:t})=>{let n=Z("DialogDescriptionWarning"),o=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${n.contentName}}.`;return r.useEffect(()=>{let n=e.current?.getAttribute("aria-describedby");t&&n&&(document.getElementById(t)||console.warn(o))},[o,e,t]),null},J=O,Q=C,ee=j,et=k,en=S,er=V,eo=M,el=/^(47582|70581|78893|89623)$/.test(n.j)?null:H},12386:function(e,t,n){n.d(t,{s6:()=>p});var r=n(17402),o=n(8639),l=n(4006),i=Symbol.for("react.lazy"),a=r[" use ".trim().toString()];function s(e){var t;return null!=e&&"object"==typeof e&&"$$typeof"in e&&e.$$typeof===i&&"_payload"in e&&"object"==typeof(t=e._payload)&&null!==t&&"then"in t}var u=Symbol("radix.slottable");function d(e){return r.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===u}var c=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{var n,i;let u,c,f,p=(i=n=`Primitive.${t}`,(u=r.forwardRef((e,t)=>{let{children:n,...l}=e;if(s(n)&&"function"==typeof a&&(n=a(n._payload)),r.isValidElement(n)){var i;let e,a,s=(i=n,(a=(e=Object.getOwnPropertyDescriptor(i.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?i.ref:(a=(e=Object.getOwnPropertyDescriptor(i,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?i.props.ref:i.props.ref||i.ref),u=function(e,t){let n={...t};for(let r in t){let o=e[r],l=t[r];/^on[A-Z]/.test(r)?o&&l?n[r]=(...e)=>{let t=l(...e);return o(...e),t}:o&&(n[r]=o):"style"===r?n[r]={...o,...l}:"className"===r&&(n[r]=[o,l].filter(Boolean).join(" "))}return{...e,...n}}(l,n.props);return n.type!==r.Fragment&&(u.ref=t?(0,o.t)(t,s):s),r.cloneElement(n,u)}return r.Children.count(n)>1?r.Children.only(null):null})).displayName=`${i}.SlotClone`,c=u,(f=r.forwardRef((e,t)=>{let{children:n,...o}=e;s(n)&&"function"==typeof a&&(n=a(n._payload));let i=r.Children.toArray(n),u=i.find(d);if(u){let e=u.props.children,n=i.map(t=>t!==u?t:r.Children.count(e)>1?r.Children.only(null):r.isValidElement(e)?e.props.children:null);return(0,l.Y)(c,{...o,ref:t,children:r.isValidElement(e)?r.cloneElement(e,void 0,n):null})}return(0,l.Y)(c,{...o,ref:t,children:n})})).displayName=`${n}.Slot`,f),g=r.forwardRef((e,n)=>{let{asChild:r,...o}=e;return"undefined"!=typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,l.Y)(r?p:t,{...o,ref:n})});return g.displayName=`Primitive.${t}`,{...e,[t]:g}},{}),f=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),p=r.forwardRef((e,t)=>(0,l.Y)(c.span,{...e,ref:t,style:{...f,...e.style}}));p.displayName="VisuallyHidden"},8639:function(e,t,n){function r(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}function o(...e){return t=>{let n=!1,o=e.map(e=>{let o=r(e,t);return n||"function"!=typeof o||(n=!0),o});if(n)return()=>{for(let t=0;to}),n(17402)}}]);