import{S as kt,i as Ot,s as At,e as s,k as l,w as O,t as a,M as Pt,c as o,d as r,m as d,a as n,x as A,h as c,b as i,G as e,g as m,y as P,L as Ft,q as F,o as C,B as q,v as Ct}from"../../../chunks/vendor-hf-doc-builder.js";import{D as ce}from"../../../chunks/Docstring-hf-doc-builder.js";import{I as at}from"../../../chunks/IconCopyLink-hf-doc-builder.js";function qt(ct){let g,le,_,D,Q,N,xe,X,we,de,p,Te,I,ke,Oe,M,Ae,Pe,L,Fe,Ce,ue,v,y,Z,V,qe,ee,Ne,he,u,G,Ie,te,Me,Le,b,Ve,J,Ge,Ke,Y,Ue,ze,Be,$,K,He,U,Re,re,We,Je,Ye,x,z,je,se,Qe,Xe,w,B,Ze,oe,et,pe,E,T,ne,H,tt,ie,rt,fe,S,R,st,W,ot,ae,nt,it,me;return N=new at({}),V=new at({}),G=new ce({props:{name:"class diffusers.EulerDiscreteScheduler",anchor:"diffusers.EulerDiscreteScheduler",parameters:[{name:"num_train_timesteps",val:": int = 1000"},{name:"beta_start",val:": float = 0.0001"},{name:"beta_end",val:": float = 0.02"},{name:"beta_schedule",val:": str = 'linear'"},{name:"trained_betas",val:": typing.Union[numpy.ndarray, typing.List[float], NoneType] = None"},{name:"prediction_type",val:": str = 'epsilon'"},{name:"interpolation_type",val:": str = 'linear'"},{name:"use_karras_sigmas",val:": typing.Optional[bool] = False"},{name:"timestep_spacing",val:": str = 'linspace'"},{name:"steps_offset",val:": int = 0"}],parametersDescription:[{anchor:"diffusers.EulerDiscreteScheduler.num_train_timesteps",description:`<strong>num_train_timesteps</strong> (<code>int</code>, defaults to 1000) &#x2014;
The number of diffusion steps to train the model.`,name:"num_train_timesteps"},{anchor:"diffusers.EulerDiscreteScheduler.beta_start",description:`<strong>beta_start</strong> (<code>float</code>, defaults to 0.0001) &#x2014;
The starting <code>beta</code> value of inference.`,name:"beta_start"},{anchor:"diffusers.EulerDiscreteScheduler.beta_end",description:`<strong>beta_end</strong> (<code>float</code>, defaults to 0.02) &#x2014;
The final <code>beta</code> value.`,name:"beta_end"},{anchor:"diffusers.EulerDiscreteScheduler.beta_schedule",description:`<strong>beta_schedule</strong> (<code>str</code>, defaults to <code>&quot;linear&quot;</code>) &#x2014;
The beta schedule, a mapping from a beta range to a sequence of betas for stepping the model. Choose from
<code>linear</code> or <code>scaled_linear</code>.`,name:"beta_schedule"},{anchor:"diffusers.EulerDiscreteScheduler.trained_betas",description:`<strong>trained_betas</strong> (<code>np.ndarray</code>, <em>optional</em>) &#x2014;
Pass an array of betas directly to the constructor to bypass <code>beta_start</code> and <code>beta_end</code>.`,name:"trained_betas"},{anchor:"diffusers.EulerDiscreteScheduler.prediction_type",description:`<strong>prediction_type</strong> (<code>str</code>, defaults to <code>epsilon</code>, <em>optional</em>) &#x2014;
Prediction type of the scheduler function; can be <code>epsilon</code> (predicts the noise of the diffusion process),
<code>sample</code> (directly predicts the noisy sample<code>) or </code>v_prediction\` (see section 2.4 of <a href="https://imagen.research.google/video/paper.pdf" rel="nofollow">Imagen
Video</a> paper).`,name:"prediction_type"},{anchor:"diffusers.EulerDiscreteScheduler.interpolation_type(str,",description:`<strong>interpolation_type(<code>str</code>,</strong> defaults to <code>&quot;linear&quot;</code>, <em>optional</em>) &#x2014;
The interpolation type to compute intermediate sigmas for the scheduler denoising steps. Should be on of
<code>&quot;linear&quot;</code> or <code>&quot;log_linear&quot;</code>.`,name:"interpolation_type(str,"},{anchor:"diffusers.EulerDiscreteScheduler.use_karras_sigmas",description:`<strong>use_karras_sigmas</strong> (<code>bool</code>, <em>optional</em>, defaults to <code>False</code>) &#x2014;
Whether to use Karras sigmas for step sizes in the noise schedule during the sampling process. If <code>True</code>,
the sigmas are determined according to a sequence of noise levels {&#x3C3;i}.`,name:"use_karras_sigmas"},{anchor:"diffusers.EulerDiscreteScheduler.timestep_spacing",description:`<strong>timestep_spacing</strong> (<code>str</code>, defaults to <code>&quot;linspace&quot;</code>) &#x2014;
The way the timesteps should be scaled. Refer to Table 2 of the <a href="https://huggingface.co/papers/2305.08891" rel="nofollow">Common Diffusion Noise Schedules and
Sample Steps are Flawed</a> for more information.`,name:"timestep_spacing"},{anchor:"diffusers.EulerDiscreteScheduler.steps_offset",description:`<strong>steps_offset</strong> (<code>int</code>, defaults to 0) &#x2014;
An offset added to the inference steps. You can use a combination of <code>offset=1</code> and
<code>set_alpha_to_one=False</code> to make the last step use step 0 for the previous alpha product like in Stable
Diffusion.`,name:"steps_offset"}],source:"https://github.com/huggingface/diffusers/blob/v0.20.0/src/diffusers/schedulers/scheduling_euler_discrete.py#L94"}}),K=new ce({props:{name:"scale_model_input",anchor:"diffusers.EulerDiscreteScheduler.scale_model_input",parameters:[{name:"sample",val:": FloatTensor"},{name:"timestep",val:": typing.Union[float, torch.FloatTensor]"}],parametersDescription:[{anchor:"diffusers.EulerDiscreteScheduler.scale_model_input.sample",description:`<strong>sample</strong> (<code>torch.FloatTensor</code>) &#x2014;
The input sample.`,name:"sample"},{anchor:"diffusers.EulerDiscreteScheduler.scale_model_input.timestep",description:`<strong>timestep</strong> (<code>int</code>, <em>optional</em>) &#x2014;
The current timestep in the diffusion chain.`,name:"timestep"}],source:"https://github.com/huggingface/diffusers/blob/v0.20.0/src/diffusers/schedulers/scheduling_euler_discrete.py#L186",returnDescription:`
<p>A scaled input sample.</p>
`,returnType:`
<p><code>torch.FloatTensor</code></p>
`}}),z=new ce({props:{name:"set_timesteps",anchor:"diffusers.EulerDiscreteScheduler.set_timesteps",parameters:[{name:"num_inference_steps",val:": int"},{name:"device",val:": typing.Union[str, torch.device] = None"}],parametersDescription:[{anchor:"diffusers.EulerDiscreteScheduler.set_timesteps.num_inference_steps",description:`<strong>num_inference_steps</strong> (<code>int</code>) &#x2014;
The number of diffusion steps used when generating samples with a pre-trained model.`,name:"num_inference_steps"},{anchor:"diffusers.EulerDiscreteScheduler.set_timesteps.device",description:`<strong>device</strong> (<code>str</code> or <code>torch.device</code>, <em>optional</em>) &#x2014;
The device to which the timesteps should be moved to. If <code>None</code>, the timesteps are not moved.`,name:"device"}],source:"https://github.com/huggingface/diffusers/blob/v0.20.0/src/diffusers/schedulers/scheduling_euler_discrete.py#L213"}}),B=new ce({props:{name:"step",anchor:"diffusers.EulerDiscreteScheduler.step",parameters:[{name:"model_output",val:": FloatTensor"},{name:"timestep",val:": typing.Union[float, torch.FloatTensor]"},{name:"sample",val:": FloatTensor"},{name:"s_churn",val:": float = 0.0"},{name:"s_tmin",val:": float = 0.0"},{name:"s_tmax",val:": float = inf"},{name:"s_noise",val:": float = 1.0"},{name:"generator",val:": typing.Optional[torch._C.Generator] = None"},{name:"return_dict",val:": bool = True"}],parametersDescription:[{anchor:"diffusers.EulerDiscreteScheduler.step.model_output",description:`<strong>model_output</strong> (<code>torch.FloatTensor</code>) &#x2014;
The direct output from learned diffusion model.`,name:"model_output"},{anchor:"diffusers.EulerDiscreteScheduler.step.timestep",description:`<strong>timestep</strong> (<code>float</code>) &#x2014;
The current discrete timestep in the diffusion chain.`,name:"timestep"},{anchor:"diffusers.EulerDiscreteScheduler.step.sample",description:`<strong>sample</strong> (<code>torch.FloatTensor</code>) &#x2014;
A current instance of a sample created by the diffusion process.`,name:"sample"},{anchor:"diffusers.EulerDiscreteScheduler.step.s_churn",description:"<strong>s_churn</strong> (<code>float</code>) &#x2014;",name:"s_churn"},{anchor:"diffusers.EulerDiscreteScheduler.step.s_tmin",description:"<strong>s_tmin</strong>  (<code>float</code>) &#x2014;",name:"s_tmin"},{anchor:"diffusers.EulerDiscreteScheduler.step.s_tmax",description:"<strong>s_tmax</strong>  (<code>float</code>) &#x2014;",name:"s_tmax"},{anchor:"diffusers.EulerDiscreteScheduler.step.s_noise",description:`<strong>s_noise</strong> (<code>float</code>, defaults to 1.0) &#x2014;
Scaling factor for noise added to the sample.`,name:"s_noise"},{anchor:"diffusers.EulerDiscreteScheduler.step.generator",description:`<strong>generator</strong> (<code>torch.Generator</code>, <em>optional</em>) &#x2014;
A random number generator.`,name:"generator"},{anchor:"diffusers.EulerDiscreteScheduler.step.return_dict",description:`<strong>return_dict</strong> (<code>bool</code>) &#x2014;
Whether or not to return a <a href="/docs/diffusers/v0.20.0/en/api/schedulers/euler#diffusers.schedulers.scheduling_euler_discrete.EulerDiscreteSchedulerOutput">EulerDiscreteSchedulerOutput</a> or
tuple.`,name:"return_dict"}],source:"https://github.com/huggingface/diffusers/blob/v0.20.0/src/diffusers/schedulers/scheduling_euler_discrete.py#L309",returnDescription:`
<p>If return_dict is <code>True</code>, <a
  href="/docs/diffusers/v0.20.0/en/api/schedulers/euler#diffusers.schedulers.scheduling_euler_discrete.EulerDiscreteSchedulerOutput"
>EulerDiscreteSchedulerOutput</a> is
returned, otherwise a tuple is returned where the first element is the sample tensor.</p>
`,returnType:`
<p><a
  href="/docs/diffusers/v0.20.0/en/api/schedulers/euler#diffusers.schedulers.scheduling_euler_discrete.EulerDiscreteSchedulerOutput"
>EulerDiscreteSchedulerOutput</a> or <code>tuple</code></p>
`}}),H=new at({}),R=new ce({props:{name:"class diffusers.schedulers.scheduling_euler_discrete.EulerDiscreteSchedulerOutput",anchor:"diffusers.schedulers.scheduling_euler_discrete.EulerDiscreteSchedulerOutput",parameters:[{name:"prev_sample",val:": FloatTensor"},{name:"pred_original_sample",val:": typing.Optional[torch.FloatTensor] = None"}],parametersDescription:[{anchor:"diffusers.schedulers.scheduling_euler_discrete.EulerDiscreteSchedulerOutput.prev_sample",description:`<strong>prev_sample</strong> (<code>torch.FloatTensor</code> of shape <code>(batch_size, num_channels, height, width)</code> for images) &#x2014;
Computed sample <code>(x_{t-1})</code> of previous timestep. <code>prev_sample</code> should be used as next model input in the
denoising loop.`,name:"prev_sample"},{anchor:"diffusers.schedulers.scheduling_euler_discrete.EulerDiscreteSchedulerOutput.pred_original_sample",description:`<strong>pred_original_sample</strong> (<code>torch.FloatTensor</code> of shape <code>(batch_size, num_channels, height, width)</code> for images) &#x2014;
The predicted denoised sample <code>(x_{0})</code> based on the model output from the current timestep.
<code>pred_original_sample</code> can be used to preview progress or for guidance.`,name:"pred_original_sample"}],source:"https://github.com/huggingface/diffusers/blob/v0.20.0/src/diffusers/schedulers/scheduling_euler_discrete.py#L32"}}),{c(){g=s("meta"),le=l(),_=s("h1"),D=s("a"),Q=s("span"),O(N.$$.fragment),xe=l(),X=s("span"),we=a("EulerDiscreteScheduler"),de=l(),p=s("p"),Te=a("The Euler scheduler (Algorithm 2) is from the "),I=s("a"),ke=a("Elucidating the Design Space of Diffusion-Based Generative Models"),Oe=a(" paper by Karras et al. This is a fast scheduler which can often generate good outputs in 20-30 steps. The scheduler is based on the original "),M=s("a"),Ae=a("k-diffusion"),Pe=a(" implementation by "),L=s("a"),Fe=a("Katherine Crowson"),Ce=a("."),ue=l(),v=s("h2"),y=s("a"),Z=s("span"),O(V.$$.fragment),qe=l(),ee=s("span"),Ne=a("EulerDiscreteScheduler"),he=l(),u=s("div"),O(G.$$.fragment),Ie=l(),te=s("p"),Me=a("Euler scheduler."),Le=l(),b=s("p"),Ve=a("This model inherits from "),J=s("a"),Ge=a("SchedulerMixin"),Ke=a(" and "),Y=s("a"),Ue=a("ConfigMixin"),ze=a(`. Check the superclass documentation for the generic
methods the library implements for all schedulers such as loading and saving.`),Be=l(),$=s("div"),O(K.$$.fragment),He=l(),U=s("p"),Re=a(`Ensures interchangeability with schedulers that need to scale the denoising model input depending on the
current timestep. Scales the denoising model input by `),re=s("code"),We=a("(sigma**2 + 1) ** 0.5"),Je=a(" to match the Euler algorithm."),Ye=l(),x=s("div"),O(z.$$.fragment),je=l(),se=s("p"),Qe=a("Sets the discrete timesteps used for the diffusion chain (to be run before inference)."),Xe=l(),w=s("div"),O(B.$$.fragment),Ze=l(),oe=s("p"),et=a(`Predict the sample from the previous timestep by reversing the SDE. This function propagates the diffusion
process from the learned model outputs (most often the predicted noise).`),pe=l(),E=s("h2"),T=s("a"),ne=s("span"),O(H.$$.fragment),tt=l(),ie=s("span"),rt=a("EulerDiscreteSchedulerOutput"),fe=l(),S=s("div"),O(R.$$.fragment),st=l(),W=s("p"),ot=a("Output class for the scheduler\u2019s "),ae=s("code"),nt=a("step"),it=a(" function output."),this.h()},l(t){const h=Pt('[data-svelte="svelte-1phssyn"]',document.head);g=o(h,"META",{name:!0,content:!0}),h.forEach(r),le=d(t),_=o(t,"H1",{class:!0});var ge=n(_);D=o(ge,"A",{id:!0,class:!0,href:!0});var lt=n(D);Q=o(lt,"SPAN",{});var dt=n(Q);A(N.$$.fragment,dt),dt.forEach(r),lt.forEach(r),xe=d(ge),X=o(ge,"SPAN",{});var ut=n(X);we=c(ut,"EulerDiscreteScheduler"),ut.forEach(r),ge.forEach(r),de=d(t),p=o(t,"P",{});var k=n(p);Te=c(k,"The Euler scheduler (Algorithm 2) is from the "),I=o(k,"A",{href:!0,rel:!0});var ht=n(I);ke=c(ht,"Elucidating the Design Space of Diffusion-Based Generative Models"),ht.forEach(r),Oe=c(k," paper by Karras et al. This is a fast scheduler which can often generate good outputs in 20-30 steps. The scheduler is based on the original "),M=o(k,"A",{href:!0,rel:!0});var pt=n(M);Ae=c(pt,"k-diffusion"),pt.forEach(r),Pe=c(k," implementation by "),L=o(k,"A",{href:!0,rel:!0});var ft=n(L);Fe=c(ft,"Katherine Crowson"),ft.forEach(r),Ce=c(k,"."),k.forEach(r),ue=d(t),v=o(t,"H2",{class:!0});var _e=n(v);y=o(_e,"A",{id:!0,class:!0,href:!0});var mt=n(y);Z=o(mt,"SPAN",{});var gt=n(Z);A(V.$$.fragment,gt),gt.forEach(r),mt.forEach(r),qe=d(_e),ee=o(_e,"SPAN",{});var _t=n(ee);Ne=c(_t,"EulerDiscreteScheduler"),_t.forEach(r),_e.forEach(r),he=d(t),u=o(t,"DIV",{class:!0});var f=n(u);A(G.$$.fragment,f),Ie=d(f),te=o(f,"P",{});var vt=n(te);Me=c(vt,"Euler scheduler."),vt.forEach(r),Le=d(f),b=o(f,"P",{});var j=n(b);Ve=c(j,"This model inherits from "),J=o(j,"A",{href:!0});var bt=n(J);Ge=c(bt,"SchedulerMixin"),bt.forEach(r),Ke=c(j," and "),Y=o(j,"A",{href:!0});var Et=n(Y);Ue=c(Et,"ConfigMixin"),Et.forEach(r),ze=c(j,`. Check the superclass documentation for the generic
methods the library implements for all schedulers such as loading and saving.`),j.forEach(r),Be=d(f),$=o(f,"DIV",{class:!0});var ve=n($);A(K.$$.fragment,ve),He=d(ve),U=o(ve,"P",{});var be=n(U);Re=c(be,`Ensures interchangeability with schedulers that need to scale the denoising model input depending on the
current timestep. Scales the denoising model input by `),re=o(be,"CODE",{});var St=n(re);We=c(St,"(sigma**2 + 1) ** 0.5"),St.forEach(r),Je=c(be," to match the Euler algorithm."),be.forEach(r),ve.forEach(r),Ye=d(f),x=o(f,"DIV",{class:!0});var Ee=n(x);A(z.$$.fragment,Ee),je=d(Ee),se=o(Ee,"P",{});var Dt=n(se);Qe=c(Dt,"Sets the discrete timesteps used for the diffusion chain (to be run before inference)."),Dt.forEach(r),Ee.forEach(r),Xe=d(f),w=o(f,"DIV",{class:!0});var Se=n(w);A(B.$$.fragment,Se),Ze=d(Se),oe=o(Se,"P",{});var yt=n(oe);et=c(yt,`Predict the sample from the previous timestep by reversing the SDE. This function propagates the diffusion
process from the learned model outputs (most often the predicted noise).`),yt.forEach(r),Se.forEach(r),f.forEach(r),pe=d(t),E=o(t,"H2",{class:!0});var De=n(E);T=o(De,"A",{id:!0,class:!0,href:!0});var $t=n(T);ne=o($t,"SPAN",{});var xt=n(ne);A(H.$$.fragment,xt),xt.forEach(r),$t.forEach(r),tt=d(De),ie=o(De,"SPAN",{});var wt=n(ie);rt=c(wt,"EulerDiscreteSchedulerOutput"),wt.forEach(r),De.forEach(r),fe=d(t),S=o(t,"DIV",{class:!0});var ye=n(S);A(R.$$.fragment,ye),st=d(ye),W=o(ye,"P",{});var $e=n(W);ot=c($e,"Output class for the scheduler\u2019s "),ae=o($e,"CODE",{});var Tt=n(ae);nt=c(Tt,"step"),Tt.forEach(r),it=c($e," function output."),$e.forEach(r),ye.forEach(r),this.h()},h(){i(g,"name","hf:doc:metadata"),i(g,"content",JSON.stringify(Nt)),i(D,"id","eulerdiscretescheduler"),i(D,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),i(D,"href","#eulerdiscretescheduler"),i(_,"class","relative group"),i(I,"href","https://huggingface.co/papers/2206.00364"),i(I,"rel","nofollow"),i(M,"href","https://github.com/crowsonkb/k-diffusion/blob/481677d114f6ea445aa009cf5bd7a9cdee909e47/k_diffusion/sampling.py#L51"),i(M,"rel","nofollow"),i(L,"href","https://github.com/crowsonkb/"),i(L,"rel","nofollow"),i(y,"id","diffusers.EulerDiscreteScheduler"),i(y,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),i(y,"href","#diffusers.EulerDiscreteScheduler"),i(v,"class","relative group"),i(J,"href","/docs/diffusers/v0.20.0/en/api/schedulers/overview#diffusers.SchedulerMixin"),i(Y,"href","/docs/diffusers/v0.20.0/en/api/configuration#diffusers.ConfigMixin"),i($,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),i(x,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),i(w,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),i(u,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),i(T,"id","diffusers.schedulers.scheduling_euler_discrete.EulerDiscreteSchedulerOutput"),i(T,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),i(T,"href","#diffusers.schedulers.scheduling_euler_discrete.EulerDiscreteSchedulerOutput"),i(E,"class","relative group"),i(S,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8")},m(t,h){e(document.head,g),m(t,le,h),m(t,_,h),e(_,D),e(D,Q),P(N,Q,null),e(_,xe),e(_,X),e(X,we),m(t,de,h),m(t,p,h),e(p,Te),e(p,I),e(I,ke),e(p,Oe),e(p,M),e(M,Ae),e(p,Pe),e(p,L),e(L,Fe),e(p,Ce),m(t,ue,h),m(t,v,h),e(v,y),e(y,Z),P(V,Z,null),e(v,qe),e(v,ee),e(ee,Ne),m(t,he,h),m(t,u,h),P(G,u,null),e(u,Ie),e(u,te),e(te,Me),e(u,Le),e(u,b),e(b,Ve),e(b,J),e(J,Ge),e(b,Ke),e(b,Y),e(Y,Ue),e(b,ze),e(u,Be),e(u,$),P(K,$,null),e($,He),e($,U),e(U,Re),e(U,re),e(re,We),e(U,Je),e(u,Ye),e(u,x),P(z,x,null),e(x,je),e(x,se),e(se,Qe),e(u,Xe),e(u,w),P(B,w,null),e(w,Ze),e(w,oe),e(oe,et),m(t,pe,h),m(t,E,h),e(E,T),e(T,ne),P(H,ne,null),e(E,tt),e(E,ie),e(ie,rt),m(t,fe,h),m(t,S,h),P(R,S,null),e(S,st),e(S,W),e(W,ot),e(W,ae),e(ae,nt),e(W,it),me=!0},p:Ft,i(t){me||(F(N.$$.fragment,t),F(V.$$.fragment,t),F(G.$$.fragment,t),F(K.$$.fragment,t),F(z.$$.fragment,t),F(B.$$.fragment,t),F(H.$$.fragment,t),F(R.$$.fragment,t),me=!0)},o(t){C(N.$$.fragment,t),C(V.$$.fragment,t),C(G.$$.fragment,t),C(K.$$.fragment,t),C(z.$$.fragment,t),C(B.$$.fragment,t),C(H.$$.fragment,t),C(R.$$.fragment,t),me=!1},d(t){r(g),t&&r(le),t&&r(_),q(N),t&&r(de),t&&r(p),t&&r(ue),t&&r(v),q(V),t&&r(he),t&&r(u),q(G),q(K),q(z),q(B),t&&r(pe),t&&r(E),q(H),t&&r(fe),t&&r(S),q(R)}}}const Nt={local:"eulerdiscretescheduler",sections:[{local:"diffusers.EulerDiscreteScheduler",title:"EulerDiscreteScheduler"},{local:"diffusers.schedulers.scheduling_euler_discrete.EulerDiscreteSchedulerOutput",title:"EulerDiscreteSchedulerOutput"}],title:"EulerDiscreteScheduler"};function It(ct){return Ct(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Gt extends kt{constructor(g){super();Ot(this,g,It,qt,At,{})}}export{Gt as default,Nt as metadata};
