projet-fin-etude-rapport/assets/index-d6d34a4d.js

1274 lines
414 KiB
JavaScript
Raw Normal View History

2023-09-05 09:46:15 +00:00
(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const i of r)if(i.type==="childList")for(const a of i.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&s(a)}).observe(document,{childList:!0,subtree:!0});function n(r){const i={};return r.integrity&&(i.integrity=r.integrity),r.referrerPolicy&&(i.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?i.credentials="include":r.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function s(r){if(r.ep)return;r.ep=!0;const i=n(r);fetch(r.href,i)}})();function Dn(e,t){const n=Object.create(null),s=e.split(",");for(let r=0;r<s.length;r++)n[s[r]]=!0;return t?r=>!!n[r.toLowerCase()]:r=>!!n[r]}const Ne=Object.freeze({}),Ps=Object.freeze([]),ht=()=>{},vf=()=>!1,Km=/^on[^a-z]/,Lr=e=>Km.test(e),_i=e=>e.startsWith("onUpdate:"),De=Object.assign,Ba=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Wm=Object.prototype.hasOwnProperty,be=(e,t)=>Wm.call(e,t),se=Array.isArray,ns=e=>Nr(e)==="[object Map]",_f=e=>Nr(e)==="[object Set]",Gm=e=>Nr(e)==="[object RegExp]",ae=e=>typeof e=="function",He=e=>typeof e=="string",Ua=e=>typeof e=="symbol",Oe=e=>e!==null&&typeof e=="object",Ka=e=>Oe(e)&&ae(e.then)&&ae(e.catch),yf=Object.prototype.toString,Nr=e=>yf.call(e),Wa=e=>Nr(e).slice(8,-1),bf=e=>Nr(e)==="[object Object]",Ga=e=>He(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,ii=Dn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Ym=Dn("bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"),Ui=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Zm=/-(\w)/g,Jt=Ui(e=>e.replace(Zm,(t,n)=>n?n.toUpperCase():"")),Jm=/\B([A-Z])/g,un=Ui(e=>e.replace(Jm,"-$1").toLowerCase()),cs=Ui(e=>e.charAt(0).toUpperCase()+e.slice(1)),Kn=Ui(e=>e?`on${cs(e)}`:""),gr=(e,t)=>!Object.is(e,t),Wn=(e,t)=>{for(let n=0;n<e.length;n++)e[n](t)},yi=(e,t,n)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Xm=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Qm=e=>{const t=He(e)?Number(e):NaN;return isNaN(t)?e:t};let Ul;const bi=()=>Ul||(Ul=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function nt(e){if(se(e)){const t={};for(let n=0;n<e.length;n++){const s=e[n],r=He(s)?sh(s):nt(s);if(r)for(const i in r)t[i]=r[i]}return t}else{if(He(e))return e;if(Oe(e))return e}}const eh=/;(?![^(]*\))/g,th=/:([^]+)/,nh=/\/\*[^]*?\*\//g;function sh(e){const t={};return e.replace(nh,"").split(eh).forEach(n=>{if(n){const s=n.split(th);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function qe(e){let t="";if(He(e))t=e;else if(se(e))for(let n=0;n<e.length;n++){const s=qe(e[n]);s&&(t+=s+" ")}else if(Oe(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}function Re(e){if(!e)return null;let{class:t,style:n}=e;return t&&!He(t)&&(e.class=qe(t)),n&&(e.style=nt(n)),e}const rh="html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot",ih="svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,fo
`),r]);else{const i=[`[Vue warn]: ${e}`,...t];r.length&&i.push(`
`,...Yh(r)),console.warn(...i)}ds()}function Gh(){let e=is[is.length-1];if(!e)return[];const t=[];for(;e;){const n=t[0];n&&n.vnode===e?n.recurseCount++:t.push({vnode:e,recurseCount:0});const s=e.component&&e.component.parent;e=s&&s.vnode}return t}function Yh(e){const t=[];return e.forEach((n,s)=>{t.push(...s===0?[]:[`
`],...Zh(n))}),t}function Zh({vnode:e,recurseCount:t}){const n=t>0?`... (${t} recursive calls)`:"",s=e.component?e.component.parent==null:!1,r=` at <${io(e.component,e.type,s)}`,i=">"+n;return e.props?[r,...Jh(e.props),i]:[r+i]}function Jh(e){const t=[],n=Object.keys(e);return n.slice(0,3).forEach(s=>{t.push(...zf(s,e[s]))}),n.length>3&&t.push(" ..."),t}function zf(e,t,n){return He(t)?(t=JSON.stringify(t),n?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?n?t:[`${e}=${t}`]:Se(t)?(t=zf(e,ue(t.value),!0),n?t:[`${e}=Ref<`,t,">"]):ae(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=ue(t),n?t:[`${e}=`,t])}function Xh(e,t){e!==void 0&&(typeof e!="number"?N(`${t} is not a valid number - got ${JSON.stringify(e)}.`):isNaN(e)&&N(`${t} is NaN - the duration expression might be incorrect.`))}const sl={sp:"serverPrefetch hook",bc:"beforeCreate hook",c:"created hook",bm:"beforeMount hook",m:"mounted hook",bu:"beforeUpdate hook",u:"updated",bum:"beforeUnmount hook",um:"unmounted hook",a:"activated hook",da:"deactivated hook",ec:"errorCaptured hook",rtc:"renderTracked hook",rtg:"renderTriggered hook",0:"setup function",1:"render function",2:"watcher getter",3:"watcher callback",4:"watcher cleanup function",5:"native event handler",6:"component event handler",7:"vnode hook",8:"directive hook",9:"transition hook",10:"app errorHandler",11:"app warnHandler",12:"ref function",13:"async component loader",14:"scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core"};function cn(e,t,n,s){let r;try{r=s?e(...s):e()}catch(i){Ji(i,t,n)}return r}function Mt(e,t,n,s){if(ae(e)){const i=cn(e,t,n,s);return i&&Ka(i)&&i.catch(a=>{Ji(a,t,n)}),i}const r=[];for(let i=0;i<e.length;i++)r.push(Mt(e[i],t,n,s));return r}function Ji(e,t,n,s=!0){const r=t?t.vnode:null;if(t){let i=t.parent;const a=t.proxy,l=sl[n];for(;i;){const u=i.ec;if(u){for(let f=0;f<u.length;f++)if(u[f](e,a,l)===!1)return}i=i.parent}const c=t.appContext.config.errorHandler;if(c){cn(c,null,10,[e,a,l]);return}}Qh(e,n,r,s)}function Qh(e,t,n,s=!0){{const r=sl[t];if(n&&oi(n),N(`Unhandled error${r?` during execution of ${r}`:""}`),n&&ai(),s)throw e;console.error(e)}}let _r=!1,Wo=!1;const Qe=[];let Ut=0;const Cs=[];let Bt=null,yn=0;const Bf=Promise.resolve();let rl=null;const eg=100;function et(e){const t=rl||Bf;return e?t.then(this?e.bind(this):e):t}function tg(e){let t=Ut+1,n=Qe.length;for(;t<n;){const s=t+n>>>1;yr(Qe[s])<e?t=s+1:n=s}return t}function Xi(e){(!Qe.length||!Qe.includes(e,_r&&e.allowRecurse?Ut+1:Ut))&&(e.id==null?Qe.push(e):Qe.splice(tg(e.id),0,e),Uf())}function Uf(){!_r&&!Wo&&(Wo=!0,rl=Bf.then(Gf))}function ng(e){const t=Qe.indexOf(e);t>Ut&&Qe.splice(t,1)}function Kf(e){se(e)?Cs.push(...e):(!Bt||!Bt.includes(e,e.allowRecurse?yn+1:yn))&&Cs.push(e),Uf()}function Ql(e,t=_r?Ut+1:0){for(e=e||new Map;t<Qe.length;t++){const n=Qe[t];if(n&&n.pre){if(il(e,n))continue;Qe.splice(t,1),t--,n()}}}function Wf(e){if(Cs.length){const t=[...new Set(Cs)];if(Cs.length=0,Bt){Bt.push(...t);return}for(Bt=t,e=e||new Map,Bt.sort((n,s)=>yr(n)-yr(s)),yn=0;yn<Bt.length;yn++)il(e,Bt[yn])||Bt[yn]();Bt=null,yn=0}}const yr=e=>e.id==null?1/0:e.id,sg=(e,t)=>{const n=yr(e)-yr(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Gf(e){Wo=!1,_r=!0,e=e||new Map,Qe.sort(sg);const t=n=>il(e,n);try{for(Ut=0;Ut<Qe.length;Ut++){const n=Qe[Ut];if(n&&n.active!==!1){if(t(n))continue;cn(n,null,14)}}}finally{Ut=0,Qe.length=0,Wf(e),_r=!1,rl=null,(Qe.length||Cs.length)&&Gf(e)}}function il(e,t){if(!e.has(t))e.set(t,1);else{const n=e.get(t);if(n>eg){const s=t.ownerInstance,r=s&&Er(s.type);return N(`Maximum recursive updates exceeded${r?` in component <${r}>`:""}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`),!0}else e.set(t,n+1)}}let $n=!1;const Es=new Set;bi().__VUE_HMR_RUNTIME__={createRecord:po(Yf),rerender:po(og),reload:po(ag)};const us=new Map;function
If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.`:"";N(`Failed to resolve ${e.slice(0,-1)}: ${t}${l}`)}return a}else N(`resolve${cs(e.slice(0,-1))} can only be used in render() or setup().`)}function sc(e,t){return e&&(e[t]||e[Jt(t)]||e[cs(Jt(t))])}function Rs(e,t,n,s){let r;const i=n&&n[s];if(se(e)||He(e)){r=new Array(e.length);for(let a=0,l=e.length;a<l;a++)r[a]=t(e[a],a,void 0,i&&i[a])}else if(typeof e=="number"){Number.isInteger(e)||N(`The v-for range expect an integer value but got ${e}.`),r=new Array(e);for(let a=0;a<e;a++)r[a]=t(a+1,a,void 0,i&&i[a])}else if(Oe(e))if(e[Symbol.iterator])r=Array.from(e,(a,l)=>t(a,l,void 0,i&&i[l]));else{const a=Object.keys(e);r=new Array(a.length);for(let l=0,c=a.length;l<c;l++){const u=a[l];r[l]=t(e[u],u,l,i&&i[l])}}else r=[];return n&&(n[s]=r),r}function Nn(e,t,n={},s,r){if(Ye.isCE||Ye.parent&&Os(Ye.parent)&&Ye.parent.isCE)return t!=="default"&&(n.name=t),ne("slot",n,s&&s());let i=e[t];i&&i.length>1&&(N("SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template."),i=()=>[]),i&&i._c&&(i._d=!1),E();const a=i&&dd(i(n)),l=X($e,{key:n.key||a&&a.key||`_${t}`},a||(s?s():[]),a&&e._===1?64:-2);return!r&&l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),i&&i._c&&(i._d=!0),l}function dd(e){return e.some(t=>Rn(t)?!(t.type===ut||t.type===$e&&!dd(t.children)):!0)?e:null}const Qo=e=>e?Pd(e)?ro(e)||e.proxy:Qo(e.parent):null,os=De(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>er(e.props),$attrs:e=>er(e.attrs),$slots:e=>er(e.slots),$refs:e=>er(e.refs),$parent:e=>Qo(e.parent),$root:e=>Qo(e.root),$emit:e=>e.emit,$options:e=>fl(e),$forceUpdate:e=>e.f||(e.f=()=>Xi(e.update)),$nextTick:e=>e.n||(e.n=et.bind(e.proxy)),$watch:e=>xg.bind(e)}),ul=e=>e==="_"||e==="$",vo=(e,t)=>e!==Ne&&!e.__isScriptSetup&&be(e,t),pd={get({_:e},t){const{ctx:n,setupState:s,data:r,props:i,accessCache:a,type:l,appContext:c}=e;if(t==="__isVue")return!0;let u;if(t[0]!=="$"){const m=a[t];if(m!==void 0)switch(m){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(vo(s,t))return a[t]=1,s[t];if(r!==Ne&&be(r,t))return a[t]=2,r[t];if((u=e.propsOptions[0])&&be(u,t))return a[t]=3,i[t];if(n!==Ne&&be(n,t))return a[t]=4,n[t];ea&&(a[t]=0)}}const f=os[t];let d,p;if(f)return t==="$attrs"?(rt(e,"get",t),Pi()):t==="$slots"&&rt(e,"get",t),f(e);if((d=l.__cssModules)&&(d=d[t]))return d;if(n!==Ne&&be(n,t))return a[t]=4,n[t];if(p=c.config.globalProperties,be(p,t))return p[t];Ye&&(!He(t)||t.indexOf("__v")!==0)&&(r!==Ne&&ul(t[0])&&be(r,t)?N(`Property ${JSON.stringify(t)} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.`):e===Ye&&N(`Property ${JSON.stringify(t)} was accessed during render but is not defined on instance.`))},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return vo(r,t)?(r[t]=n,!0):r.__isScriptSetup&&be(r,t)?(N(`Cannot mutate <script setup> binding "${t}" from Options API.`),!1):s!==Ne&&be(s,t)?(s[t]=n,!0):be(e.props,t)?(N(`Attempting to mutate prop "${t}". Props are readonly.`),!1):t[0]==="$"&&t.slice(1)in e?(N(`Attempting to mutate public property "${t}". Properties starting with $ are reserved and readonly.`),!1):(t in e.appContext.config.globalProperties?Object.defineProperty(i,t,{enumerable:!0,configurable:!0,value:n}):i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},a){let l;return!!n[a]||e!==Ne&&be(e,a)||vo(t,a)||(l=i[0])&&be(l,a)||be(s,a)||be(os,a)||be(r.config.globalProperties,a)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:be(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};pd.ownKeys=e=>(N("Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead."),Reflect.ownKeys(e));function Rg(e){const t={};return Object.defineProperty(t,"_",{configurable:!0,enumerable:!1,get:()=>e
For more details, see https://link.vuejs.org/feature-flags.`)}}const Je=wg;function av(e){return lv(e)}function lv(e,t){ov();const n=bi();n.__VUE__=!0,Zf(n.__VUE_DEVTOOLS_GLOBAL_HOOK__,n);const{insert:s,remove:r,patchProp:i,createElement:a,createText:l,createComment:c,setText:u,setElementText:f,parentNode:d,nextSibling:p,setScopeId:m=ht,insertStaticContent:g}=e,b=(h,v,S,I=null,M=null,H=null,B=!1,D=null,q=$n?!1:!!v.dynamicChildren)=>{if(h===v)return;h&&!Gn(h,v)&&(I=U(h),dt(h,M,H,!0),h=null),v.patchFlag===-2&&(q=!1,v.dynamicChildren=null);const{type:R,ref:Q,shapeFlag:J}=v;switch(R){case Dr:w(h,v,S,I);break;case ut:y(h,v,S,I);break;case li:h==null?x(v,S,I,B):_(h,v,S,B);break;case $e:fe(h,v,S,I,M,H,B,D,q);break;default:J&1?k(h,v,S,I,M,H,B,D,q):J&6?me(h,v,S,I,M,H,B,D,q):J&64||J&128?R.process(h,v,S,I,M,H,B,D,q,G):N("Invalid VNode type:",R,`(${typeof R})`)}Q!=null&&M&&ra(Q,h&&h.ref,H,v||h,!v)},w=(h,v,S,I)=>{if(h==null)s(v.el=l(v.children),S,I);else{const M=v.el=h.el;v.children!==h.children&&u(M,v.children)}},y=(h,v,S,I)=>{h==null?s(v.el=c(v.children||""),S,I):v.el=h.el},x=(h,v,S,I)=>{[h.el,h.anchor]=g(h.children,v,S,I,h.el,h.anchor)},_=(h,v,S,I)=>{if(v.children!==h.children){const M=p(h.anchor);$(h),[v.el,v.anchor]=g(v.children,S,M,I)}else v.el=h.el,v.anchor=h.anchor},P=({el:h,anchor:v},S,I)=>{let M;for(;h&&h!==v;)M=p(h),s(h,S,I),h=M;s(v,S,I)},$=({el:h,anchor:v})=>{let S;for(;h&&h!==v;)S=p(h),r(h),h=S;r(v)},k=(h,v,S,I,M,H,B,D,q)=>{B=B||v.type==="svg",h==null?j(v,S,I,M,H,B,D,q):Y(h,v,M,H,B,D,q)},j=(h,v,S,I,M,H,B,D)=>{let q,R;const{type:Q,props:J,shapeFlag:ie,transition:ce,dirs:xe}=h;if(q=h.el=a(h.type,H,J&&J.is,J),ie&8?f(q,h.children):ie&16&&F(h.children,q,null,I,M,H&&Q!=="foreignObject",B,D),xe&&qn(h,null,I,"created"),A(q,h,h.scopeId,B,I),J){for(const Le in J)Le!=="value"&&!ii(Le)&&i(q,Le,null,J[Le],H,h.children,I,M,O);"value"in J&&i(q,"value",null,J.value),(R=J.onVnodeBeforeMount)&&kt(R,I,h)}Object.defineProperty(q,"__vnode",{value:h,enumerable:!1}),Object.defineProperty(q,"__vueParentComponent",{value:I,enumerable:!1}),xe&&qn(h,null,I,"beforeMount");const je=(!M||M&&!M.pendingBranch)&&ce&&!ce.persisted;je&&ce.beforeEnter(q),s(q,v,S),((R=J&&J.onVnodeMounted)||je||xe)&&Je(()=>{R&&kt(R,I,h),je&&ce.enter(q),xe&&qn(h,null,I,"mounted")},M)},A=(h,v,S,I,M)=>{if(S&&m(h,S),I)for(let H=0;H<I.length;H++)m(h,I[H]);if(M){let H=M.subTree;if(H.patchFlag>0&&H.patchFlag&2048&&(H=nd(H.children)||H),v===H){const B=M.vnode;A(h,B,B.scopeId,B.slotScopeIds,M.parent)}}},F=(h,v,S,I,M,H,B,D,q=0)=>{for(let R=q;R<h.length;R++){const Q=h[R]=D?bn(h[R]):Ft(h[R]);b(null,Q,v,S,I,M,H,B,D)}},Y=(h,v,S,I,M,H,B)=>{const D=v.el=h.el;let{patchFlag:q,dynamicChildren:R,dirs:Q}=v;q|=h.patchFlag&16;const J=h.props||Ne,ie=v.props||Ne;let ce;S&&Vn(S,!1),(ce=ie.onVnodeBeforeUpdate)&&kt(ce,S,v,h),Q&&qn(v,h,S,"beforeUpdate"),S&&Vn(S,!0),$n&&(q=0,B=!1,R=null);const xe=M&&v.type!=="foreignObject";if(R?(oe(h.dynamicChildren,R,D,S,I,xe,H),Mi(h,v)):B||ye(h,v,D,null,S,I,xe,H,!1),q>0){if(q&16)V(D,v,J,ie,S,I,M);else if(q&2&&J.class!==ie.class&&i(D,"class",null,ie.class,M),q&4&&i(D,"style",J.style,ie.style,M),q&8){const je=v.dynamicProps;for(let Le=0;Le<je.length;Le++){const Be=je[Le],Rt=J[Be],vs=ie[Be];(vs!==Rt||Be==="value")&&i(D,Be,Rt,vs,M,h.children,S,I,O)}}q&1&&h.children!==v.children&&f(D,v.children)}else!B&&R==null&&V(D,v,J,ie,S,I,M);((ce=ie.onVnodeUpdated)||Q)&&Je(()=>{ce&&kt(ce,S,v,h),Q&&qn(v,h,S,"updated")},I)},oe=(h,v,S,I,M,H,B)=>{for(let D=0;D<v.length;D++){const q=h[D],R=v[D],Q=q.el&&(q.type===$e||!Gn(q,R)||q.shapeFlag&70)?d(q.el):S;b(q,R,Q,null,I,M,H,B,!0)}},V=(h,v,S,I,M,H,B)=>{if(S!==I){if(S!==Ne)for(const D in S)!ii(D)&&!(D in I)&&i(h,D,S[D],null,B,v.children,M,H,O);for(const D in I){if(ii(D))continue;const q=I[D],R=S[D];q!==R&&D!=="value"&&i(h,D,R,q,B,v.children,M,H,O)}"value"in I&&i(h,"value",S.value,I.value)}},fe=(h,v,S,I,M,H,B,D,q)=>{const R=v.el=h?h.el:l(""),Q=v.anchor=h?h.anchor:l("");let{patchFlag:J,dynamicChildren:ie,slotScopeIds:ce}=v;($n||J&2048)&&(J=0,q=!1,ie=null),ce&&(D=D?D.concat(ce):ce),h==null?(s(R,S,I),s(Q,S,I),F(v.children,S,Q,M,H,B,D,q)):J>0&&J&64&
Component that was made reactive: `,e)),o(e,t,n,s,r,a,i,!0)}function Me(e){return e?Si(e)||so in e?De({},e):e:null}function en(e,t,n=!1){const{props:s,ref:r,patchFlag:i,children:a}=e,l=t?wr(s||{},t):s;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Sd(l),ref:t&&t.ref?n&&r?se(r)?r.concat(ci(t)):[r,ci(t)]:ci(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i===-1&&se(a)?a.map($d):a,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==$e?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&en(e.ssContent),ssFallback:e.ssFallback&&en(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function $d(e){const t=en(e);return se(e.children)&&(t.children=e.children.map($d)),t}function ms(e=" ",t=0){return ne(Dr,null,e,t)}function de(e="",t=!1){return t?(E(),X(ut,null,e)):ne(ut,null,e)}function Ft(e){return e==null||typeof e=="boolean"?ne(ut):se(e)?ne($e,null,e.slice()):typeof e=="object"?bn(e):ne(Dr,null,String(e))}function bn(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:en(e)}function pl(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(se(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),pl(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!(so in t)?t._ctx=Ye:r===3&&Ye&&(Ye.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else ae(t)?(t={default:t,_ctx:Ye},n=32):(t=String(t),s&64?(n=16,t=[ms(t)]):n=8);e.children=t,e.shapeFlag|=n}function wr(...e){const t={};for(let n=0;n<e.length;n++){const s=e[n];for(const r in s)if(r==="class")t.class!==s.class&&(t.class=qe([t.class,s.class]));else if(r==="style")t.style=nt([t.style,s.style]);else if(Lr(r)){const i=t[r],a=s[r];a&&i!==a&&!(se(i)&&i.includes(a))&&(t[r]=i?[].concat(i,a):a)}else r!==""&&(t[r]=s[r])}return t}function kt(e,t,n,s=null){Mt(e,t,7,[n,s])}const vv=hd();let _v=0;function yv(e,t,n){const s=e.type,r=(t?t.appContext:e.appContext)||vv,i={uid:_v++,vnode:e,type:s,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,scope:new Sf(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(r.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:vd(s,r),emitsOptions:Qf(s,r),emit:null,emitted:null,propsDefaults:Ne,inheritAttrs:s.inheritAttrs,ctx:Ne,data:Ne,props:Ne,attrs:Ne,slots:Ne,refs:Ne,setupState:Ne,setupContext:null,attrsProxy:null,slotsProxy:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return i.ctx=Rg(i),i.root=t?t.root:i,i.emit=hg.bind(null,i),e.ce&&e.ce(i),i}let Ge=null;const Lt=()=>Ge||Ye;let ml,_s,hc="__VUE_INSTANCE_SETTERS__";(_s=bi()[hc])||(_s=bi()[hc]=[]),_s.push(e=>Ge=e),ml=e=>{_s.length>1?_s.forEach(t=>t(e)):_s[0](e)};const As=e=>{ml(e),e.scope.on()},as=()=>{Ge&&Ge.scope.off(),ml(null)},bv=Dn("slot,component");function oa(e,t){const n=t.isNativeTag||vf;(bv(e)||n(e))&&N("Do not use built-in or reserved HTML elements as component id: "+e)}function Pd(e){return e.vnode.shapeFlag&4}let xr=!1;function wv(e,t=!1){xr=t;const{props:n,children:s}=e.vnode,r=Pd(e);Yg(e,n,r,t),rv(e,s);const i=r?xv(e,t):void 0;return xr=!1,i}function xv(e,t){var n;const s=e.type;{if(s.name&&oa(s.name,e.appContext.config),s.components){const i=Object.keys(s.components);for(let a=0;a<i.length;a++)oa(i[a],e.appContext.config)}if(s.directives){const i=Object.keys(s.directives);for(let a=0;a<i.length;a++)id(i[a])}s.compilerOptions&&Ev()&&N('"compilerOptions" is only supported when using a build of Vue that includes the runtime compiler. Since you are using a runtime-only build, the options should be passed via your build tool config instead.')}e.accessCache=Object.create(null),e.proxy=Zi(new Proxy(e.ctx,pd)),jg(e);const{setup:r}
* vue-router v4.2.4
* (c) 2023 Eduardo San Martin Morote
* @license MIT
*/const an=typeof window<"u";function Wy(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const ke=Object.assign;function Po(e,t){const n={};for(const s in t){const r=t[s];n[s]=$t(r)?r.map(e):e(r)}return n}const lr=()=>{},$t=Array.isArray;function Ee(e){const t=Array.from(arguments).slice(1);console.warn.apply(console,["[Vue Router warn]: "+e].concat(t))}const Gy=/\/$/,Yy=e=>e.replace(Gy,"");function Co(e,t,n="/"){let s,r={},i="",a="";const l=t.indexOf("#");let c=t.indexOf("?");return l<c&&l>=0&&(c=-1),c>-1&&(s=t.slice(0,c),i=t.slice(c+1,l>-1?l:t.length),r=e(i)),l>-1&&(s=s||t.slice(0,l),a=t.slice(l,t.length)),s=Xy(s??t,n),{fullPath:s+(i&&"?")+i+a,path:s,query:r,hash:a}}function Zy(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function eu(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function tu(e,t,n){const s=t.matched.length-1,r=n.matched.length-1;return s>-1&&s===r&&jn(t.matched[s],n.matched[r])&&np(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function jn(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function np(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!Jy(e[n],t[n]))return!1;return!0}function Jy(e,t){return $t(e)?nu(e,t):$t(t)?nu(t,e):e===t}function nu(e,t){return $t(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function Xy(e,t){if(e.startsWith("/"))return e;if(!t.startsWith("/"))return Ee(`Cannot resolve a relative location without an absolute path. Trying to resolve "${e}" from "${t}". It should look like "/${t}".`),e;if(!e)return t;const n=t.split("/"),s=e.split("/"),r=s[s.length-1];(r===".."||r===".")&&s.push("");let i=n.length-1,a,l;for(a=0;a<s.length;a++)if(l=s[a],l!==".")if(l==="..")i>1&&i--;else break;return n.slice(0,i).join("/")+"/"+s.slice(a-(a===s.length?1:0)).join("/")}var Sr;(function(e){e.pop="pop",e.push="push"})(Sr||(Sr={}));var cr;(function(e){e.back="back",e.forward="forward",e.unknown=""})(cr||(cr={}));function Qy(e){if(!e)if(an){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Yy(e)}const eb=/^[^#]+#/;function tb(e,t){return e.replace(eb,"#")+t}function nb(e,t){const n=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-n.left-(t.left||0),top:s.top-n.top-(t.top||0)}}const ao=()=>({left:window.pageXOffset,top:window.pageYOffset});function sb(e){let t;if("el"in e){const n=e.el,s=typeof n=="string"&&n.startsWith("#");if(typeof e.el=="string"&&(!s||!document.getElementById(e.el.slice(1))))try{const i=document.querySelector(e.el);if(s&&i){Ee(`The selector "${e.el}" should be passed as "el: document.querySelector('${e.el}')" because it starts with "#".`);return}}catch{Ee(`The selector "${e.el}" is invalid. If you are using an id selector, make sure to escape it. You can find more information about escaping characters in selectors at https://mathiasbynens.be/notes/css-escapes or use CSS.escape (https://developer.mozilla.org/en-US/docs/Web/API/CSS/escape).`);return}const r=typeof n=="string"?s?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!r){Ee(`Couldn't find element using selector "${e.el}" returned by scrollBehavior.`);return}t=nb(r,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.pageXOffset,t.top!=null?t.top:window.pageYOffset)}function su(e,t){return(history.state?history.state.position-t:-1)+e}const ma=new Map;function rb(e,t){ma.set(e,t)}function ib(e){const t=ma.get(e);return ma.delete(e),t}let ob=()=>location.protocol+"//"+location.host;function sp(e,t){const{pathname:n,search:s,hash:r}=t,i=e.indexOf("#");if(i>-1){let l=r.includes(e.slice(i))?e.slice(i).length:1,c=r.slice(l);return c[0]!=="/"&&(c="/"+c),eu(c,"")}return eu(n,e)+s+r}function ab(e,t,n,s){let r=[],i=[],a=null;const l=({state:p})=>{const m=sp(e,location),g=n.value,b=t.value;let w=0;if(p){if(n.value=m,t.value=p,a&&a
history.replaceState(history.state, '', url)
You can find more information at https://next.router.vuejs.org/guide/migration/#usage-of-history-state.`),i(f.current,f,!0);const d=ke({},ru(s.value,c,null),{position:f.position+1},u);i(c,d,!1),s.value=c}return{location:s,state:r,push:l,replace:a}}function cb(e){e=Qy(e);const t=lb(e),n=ab(e,t.state,t.location,t.replace);function s(i,a=!0){a||n.pauseListeners(),history.go(i)}const r=ke({location:"",base:e,go:s,createHref:tb.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}function ub(e){return typeof e=="string"||e&&typeof e=="object"}function rp(e){return typeof e=="string"||typeof e=="symbol"}const vn={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},ip=Symbol("navigation failure");var iu;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(iu||(iu={}));const fb={1({location:e,currentLocation:t}){return`No match for
${JSON.stringify(e)}${t?`
while being at
`+JSON.stringify(t):""}`},2({from:e,to:t}){return`Redirected from "${e.fullPath}" to "${pb(t)}" via a navigation guard.`},4({from:e,to:t}){return`Navigation aborted from "${e.fullPath}" to "${t.fullPath}" via a navigation guard.`},8({from:e,to:t}){return`Navigation cancelled from "${e.fullPath}" to "${t.fullPath}" with a new navigation.`},16({from:e,to:t}){return`Avoided redundant navigation to current location: "${e.fullPath}".`}};function Ms(e,t){return ke(new Error(fb[e](t)),{type:e,[ip]:!0},t)}function tn(e,t){return e instanceof Error&&ip in e&&(t==null||!!(e.type&t))}const db=["params","query","hash"];function pb(e){if(typeof e=="string")return e;if("path"in e)return e.path;const t={};for(const n of db)n in e&&(t[n]=e[n]);return JSON.stringify(t,null,2)}const ou="[^/]+?",mb={sensitive:!1,strict:!1,start:!0,end:!0},hb=/[.+*?^${}()[\]/\\]/g;function gb(e,t){const n=ke({},mb,t),s=[];let r=n.start?"^":"";const i=[];for(const u of e){const f=u.length?[]:[90];n.strict&&!u.length&&(r+="/");for(let d=0;d<u.length;d++){const p=u[d];let m=40+(n.sensitive?.25:0);if(p.type===0)d||(r+="/"),r+=p.value.replace(hb,"\\$&"),m+=40;else if(p.type===1){const{value:g,repeatable:b,optional:w,regexp:y}=p;i.push({name:g,repeatable:b,optional:w});const x=y||ou;if(x!==ou){m+=10;try{new RegExp(`(${x})`)}catch(P){throw new Error(`Invalid custom RegExp for param "${g}" (${x}): `+P.message)}}let _=b?`((?:${x})(?:/(?:${x}))*)`:`(${x})`;d||(_=w&&u.length<2?`(?:/${_})`:"/"+_),w&&(_+="?"),r+=_,m+=20,w&&(m+=-8),b&&(m+=-20),x===".*"&&(m+=-50)}f.push(m)}s.push(f)}if(n.strict&&n.end){const u=s.length-1;s[u][s[u].length-1]+=.7000000000000001}n.strict||(r+="/?"),n.end?r+="$":n.strict&&(r+="(?:/|$)");const a=new RegExp(r,n.sensitive?"":"i");function l(u){const f=u.match(a),d={};if(!f)return null;for(let p=1;p<f.length;p++){const m=f[p]||"",g=i[p-1];d[g.name]=m&&g.repeatable?m.split("/"):m}return d}function c(u){let f="",d=!1;for(const p of e){(!d||!f.endsWith("/"))&&(f+="/"),d=!1;for(const m of p)if(m.type===0)f+=m.value;else if(m.type===1){const{value:g,repeatable:b,optional:w}=m,y=g in u?u[g]:"";if($t(y)&&!b)throw new Error(`Provided param "${g}" is an array but it is not repeatable (* or + modifiers)`);const x=$t(y)?y.join("/"):y;if(!x)if(w)p.length<2&&(f.endsWith("/")?f=f.slice(0,-1):d=!0);else throw new Error(`Missing required param "${g}"`);f+=x}}return f||"/"}return{re:a,score:s,keys:i,parse:l,stringify:c}}function vb(e,t){let n=0;for(;n<e.length&&n<t.length;){const s=t[n]-e[n];if(s)return s;n++}return e.length<t.length?e.length===1&&e[0]===40+40?-1:1:e.length>t.length?t.length===1&&t[0]===40+40?1:-1:0}function _b(e,t){let n=0;const s=e.score,r=t.score;for(;n<s.length&&n<r.length;){const i=vb(s[n],r[n]);if(i)return i;n++}if(Math.abs(r.length-s.length)===1){if(au(s))return 1;if(au(r))return-1}return r.length-s.length}function au(e){const t=e[e.length-1];return e.length>0&&t[t.length-1]<0}const yb={type:0,value:""},bb=/[a-zA-Z0-9_]/;function wb(e){if(!e)return[[]];if(e==="/")return[[yb]];if(!e.startsWith("/"))throw new Error(`Route paths should start with a "/": "${e}" should be "/${e}".`);function t(m){throw new Error(`ERR (${n})/"${u}": ${m}`)}let n=0,s=n;const r=[];let i;function a(){i&&r.push(i),i=[]}let l=0,c,u="",f="";function d(){u&&(n===0?i.push({type:0,value:u}):n===1||n===2||n===3?(i.length>1&&(c==="*"||c==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),i.push({type:1,value:u,regexp:f,repeatable:c==="*"||c==="+",optional:c==="*"||c==="?"})):t("Invalid state to consume buffer"),u="")}function p(){u+=c}for(;l<e.length;){if(c=e[l++],c==="\\"&&n!==2){s=n,n=4;continue}switch(n){case 0:c==="/"?(u&&d(),a()):c===":"?(d(),n=1):p();break;case 4:p(),n=s;break;case 1:c==="("?n=2:bb.test(c)?p():(d(),n=0,c!=="*"&&c!=="?"&&c!=="+"&&l--);break;case 2:c===")"?f[f.length-1]=="\\"?f=f.slice(0,-1)+c:n=3:f+=c;break;case 3:d(),n=0,c!=="*"&&c!=="?"&&c!=="+"&&l--,f="";break;default:t("Unknown state");break}}return n===2&&t(`Unfinished custom RegExp for param "${u}"`),d(),a(),r}function xb(e,t,n){const s=gb(wb(e.path),n);{const i=ne
See more at https://next.router.vuejs.org/guide/migration/#removed-star-or-catch-all-routes.`);if(y=xb(_,d,b),d&&P[0]==="/"&&kb(y,d),p?(p.alias.push(y),Cb(p,y)):(x=x||y,x!==y&&x.alias.push(y),m&&f.name&&!cu(y)&&a(f.name)),g.children){const $=g.children;for(let k=0;k<$.length;k++)i($[k],y,p&&p.children[k])}p=p||y,(y.record.components&&Object.keys(y.record.components).length||y.record.name||y.record.redirect)&&c(y)}return x?()=>{a(x)}:lr}function a(f){if(rp(f)){const d=s.get(f);d&&(s.delete(f),n.splice(n.indexOf(d),1),d.children.forEach(a),d.alias.forEach(a))}else{const d=n.indexOf(f);d>-1&&(n.splice(d,1),f.record.name&&s.delete(f.record.name),f.children.forEach(a),f.alias.forEach(a))}}function l(){return n}function c(f){let d=0;for(;d<n.length&&_b(f,n[d])>=0&&(f.record.path!==n[d].record.path||!op(f,n[d]));)d++;n.splice(d,0,f),f.record.name&&!cu(f)&&s.set(f.record.name,f)}function u(f,d){let p,m={},g,b;if("name"in f&&f.name){if(p=s.get(f.name),!p)throw Ms(1,{location:f});{const x=Object.keys(f.params||{}).filter(_=>!p.keys.find(P=>P.name===_));x.length&&Ee(`Discarded invalid param(s) "${x.join('", "')}" when navigating. See https://github.com/vuejs/router/blob/main/packages/router/CHANGELOG.md#414-2022-08-22 for more details.`)}b=p.record.name,m=ke(lu(d.params,p.keys.filter(x=>!x.optional).map(x=>x.name)),f.params&&lu(f.params,p.keys.map(x=>x.name))),g=p.stringify(m)}else if("path"in f)g=f.path,g.startsWith("/")||Ee(`The Matcher cannot resolve relative paths but received "${g}". Unless you directly called \`matcher.resolve("${g}")\`, this is probably a bug in vue-router. Please open an issue at https://github.com/vuejs/router/issues/new/choose.`),p=n.find(x=>x.re.test(g)),p&&(m=p.parse(g),b=p.record.name);else{if(p=d.name?s.get(d.name):n.find(x=>x.re.test(d.path)),!p)throw Ms(1,{location:f,currentLocation:d});b=p.record.name,m=ke({},d.params,f.params),g=p.stringify(m)}const w=[];let y=p;for(;y;)w.unshift(y.record),y=y.parent;return{name:b,path:g,params:m,matched:w,meta:Pb(w)}}return e.forEach(f=>i(f)),{addRoute:i,resolve:u,removeRoute:a,getRoutes:l,getRecordMatcher:r}}function lu(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function Sb(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:$b(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function $b(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function cu(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Pb(e){return e.reduce((t,n)=>ke(t,n.meta),{})}function uu(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}function ha(e,t){return e.name===t.name&&e.optional===t.optional&&e.repeatable===t.repeatable}function Cb(e,t){for(const n of e.keys)if(!n.optional&&!t.keys.find(ha.bind(null,n)))return Ee(`Alias "${t.record.path}" and the original record: "${e.record.path}" must have the exact same param named "${n.name}"`);for(const n of t.keys)if(!n.optional&&!e.keys.find(ha.bind(null,n)))return Ee(`Alias "${t.record.path}" and the original record: "${e.record.path}" must have the exact same param named "${n.name}"`)}function Ob(e,t){t&&t.record.name&&!e.name&&!e.path&&Ee(`The route named "${String(t.record.name)}" has a child without a name and an empty path. Using that name won't render the empty path child so you probably want to move the name to the child instead. If this is intentional, add a name to the child route to remove the warning.`)}function kb(e,t){for(const n of t.keys)if(!e.keys.find(ha.bind(null,n)))return Ee(`Absolute path "${e.record.path}" must have the exact same param named "${n.name}" as its parent "${t.record.path}".`)}function op(e,t){return t.children.some(n=>n===e||op(e,n))}const ap=/#/g,Tb=/&/g,Ab=/\//g,Mb=/=/g,Ib=/\?/g,lp=/\+/g,Lb=/%5B/g,Nb=/%5D/g,cp=/%5E/g,Rb=/%60/g,up=/%7B/g,jb=/%7C/g,fp=/%7D/g,Db=/%20/g;function vl(e)
${e.toString()}
. If you are returning a value instead of calling "next", make sure to remove the "next" parameter from your function.`;if(typeof u=="object"&&"then"in u)f=f.then(p=>c._called?p:(Ee(d),Promise.reject(new Error("Invalid navigation guard"))));else if(u!==void 0&&!c._called){Ee(d),l(new Error("Invalid navigation guard"));return}}f.catch(d=>l(d))})}function Kb(e,t,n){let s=0;return function(){s++===1&&Ee(`The "next" callback was called more than once in one navigation guard when going from "${n.fullPath}" to "${t.fullPath}". It should be called exactly one time in each navigation guard. This will fail in production.`),e._called=!0,s===1&&e.apply(null,arguments)}}function Oo(e,t,n,s){const r=[];for(const i of e){!i.components&&!i.children.length&&Ee(`Record with path "${i.path}" is either missing a "component(s)" or "children" property.`);for(const a in i.components){let l=i.components[a];{if(!l||typeof l!="object"&&typeof l!="function")throw Ee(`Component "${a}" in record with path "${i.path}" is not a valid component. Received "${String(l)}".`),new Error("Invalid route component");if("then"in l){Ee(`Component "${a}" in record with path "${i.path}" is a Promise instead of a function that returns a Promise. Did you write "import('./MyPage.vue')" instead of "() => import('./MyPage.vue')" ? This will break in production if not fixed.`);const c=l;l=()=>c}else l.__asyncLoader&&!l.__warnedDefineAsync&&(l.__warnedDefineAsync=!0,Ee(`Component "${a}" in record with path "${i.path}" is defined using "defineAsyncComponent()". Write "() => import('./MyPage.vue')" instead of "defineAsyncComponent(() => import('./MyPage.vue'))".`))}if(!(t!=="beforeRouteEnter"&&!i.instances[a]))if(Wb(l)){const u=(l.__vccOpts||l)[t];u&&r.push(wn(u,n,s,i,a))}else{let c=l();"catch"in c||(Ee(`Component "${a}" in record with path "${i.path}" is a function that does not return a Promise. If you were passing a functional component, make sure to add a "displayName" to the component. This will break in production if not fixed.`),c=Promise.resolve(c)),r.push(()=>c.then(u=>{if(!u)return Promise.reject(new Error(`Couldn't resolve component "${a}" at "${i.path}"`));const f=Wy(u)?u.default:u;i.components[a]=f;const p=(f.__vccOpts||f)[t];return p&&wn(p,n,s,i,a)()}))}}}return r}function Wb(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function pu(e){const t=Z(_l),n=Z(dp),s=T(()=>t.resolve(C(e.to))),r=T(()=>{const{matched:c}=s.value,{length:u}=c,f=c[u-1],d=n.matched;if(!f||!d.length)return-1;const p=d.findIndex(jn.bind(null,f));if(p>-1)return p;const m=mu(c[u-2]);return u>1&&mu(f)===m&&d[d.length-1].path!==m?d.findIndex(jn.bind(null,c[u-2])):p}),i=T(()=>r.value>-1&&Jb(n.params,s.value.params)),a=T(()=>r.value>-1&&r.value===n.matched.length-1&&np(n.params,s.value.params));function l(c={}){return Zb(c)?t[C(e.replace)?"replace":"push"](C(e.to)).catch(lr):Promise.resolve()}if(an){const c=Lt();if(c){const u={route:s.value,isActive:i.value,isExactActive:a.value};c.__vrl_devtools=c.__vrl_devtools||[],c.__vrl_devtools.push(u),Ns(()=>{u.route=s.value,u.isActive=i.value,u.isExactActive=a.value},{flush:"post"})}}return{route:s,href:T(()=>s.value.href),isActive:i,isExactActive:a,navigate:l}}const Gb=Pe({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:pu,setup(e,{slots:t}){const n=Ve(pu(e)),{options:s}=Z(_l),r=T(()=>({[hu(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[hu(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const i=t.default&&t.default(n);return e.custom?i:vt("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},i)}}}),Yb=Gb;function Zb(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.
Use slot props instead:
<router-view v-slot="{ Component }">
<${s}>
<component :is="Component" />
</${s}>
</router-view>`)}}function Gs(e,t){const n=ke({},e,{matched:e.matched.map(s=>c1(s,["instances","children","aliasOf"]))});return{_custom:{type:null,readOnly:!0,display:e.fullPath,tooltip:t,value:n}}}function ei(e){return{_custom:{display:e}}}let t1=0;function n1(e,t,n){if(t.__hasDevtools)return;t.__hasDevtools=!0;const s=t1++;Ky({id:"org.vuejs.router"+(s?"."+s:""),label:"Vue Router",packageName:"vue-router",homepage:"https://router.vuejs.org",logo:"https://router.vuejs.org/logo.png",componentStateTypes:["Routing"],app:e},r=>{typeof r.now!="function"&&console.warn("[Vue Router]: You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html."),r.on.inspectComponent((f,d)=>{f.instanceData&&f.instanceData.state.push({type:"Routing",key:"$route",editable:!1,value:Gs(t.currentRoute.value,"Current Route")})}),r.on.visitComponentTree(({treeNode:f,componentInstance:d})=>{if(d.__vrv_devtools){const p=d.__vrv_devtools;f.tags.push({label:(p.name?`${p.name.toString()}: `:"")+p.path,textColor:0,tooltip:"This component is rendered by &lt;router-view&gt;",backgroundColor:pp})}$t(d.__vrl_devtools)&&(d.__devtoolsApi=r,d.__vrl_devtools.forEach(p=>{let m=gp,g="";p.isExactActive?(m=hp,g="This is exactly active"):p.isActive&&(m=mp,g="This link is active"),f.tags.push({label:p.route.path,textColor:0,tooltip:g,backgroundColor:m})}))}),pe(t.currentRoute,()=>{c(),r.notifyComponentUpdate(),r.sendInspectorTree(l),r.sendInspectorState(l)});const i="router:navigations:"+s;r.addTimelineLayer({id:i,label:`Router${s?" "+s:""} Navigations`,color:4237508}),t.onError((f,d)=>{r.addTimelineEvent({layerId:i,event:{title:"Error during Navigation",subtitle:d.fullPath,logType:"error",time:r.now(),data:{error:f},groupId:d.meta.__navigationId}})});let a=0;t.beforeEach((f,d)=>{const p={guard:ei("beforeEach"),from:Gs(d,"Current Location during this navigation"),to:Gs(f,"Target location")};Object.defineProperty(f.meta,"__navigationId",{value:a++}),r.addTimelineEvent({layerId:i,event:{time:r.now(),title:"Start of navigation",subtitle:f.fullPath,data:p,groupId:f.meta.__navigationId}})}),t.afterEach((f,d,p)=>{const m={guard:ei("afterEach")};p?(m.failure={_custom:{type:Error,readOnly:!0,display:p?p.message:"",tooltip:"Navigation Failure",value:p}},m.status=ei("❌")):m.status=ei("✅"),m.from=Gs(d,"Current Location during this navigation"),m.to=Gs(f,"Target location"),r.addTimelineEvent({layerId:i,event:{title:"End of navigation",subtitle:f.fullPath,time:r.now(),data:m,logType:p?"warning":"default",groupId:f.meta.__navigationId}})});const l="router-inspector:"+s;r.addInspector({id:l,label:"Routes"+(s?" "+s:""),icon:"book",treeFilterPlaceholder:"Search routes"});function c(){if(!u)return;const f=u;let d=n.getRoutes().filter(p=>!p.parent);d.forEach(yp),f.filter&&(d=d.filter(p=>_a(p,f.filter.toLowerCase()))),d.forEach(p=>_p(p,t.currentRoute.value)),f.rootNodes=d.map(vp)}let u;r.on.getInspectorTree(f=>{u=f,f.app===e&&f.inspectorId===l&&c()}),r.on.getInspectorState(f=>{if(f.app===e&&f.inspectorId===l){const p=n.getRoutes().find(m=>m.record.__vd_id===f.nodeId);p&&(f.state={options:r1(p)})}}),r.sendInspectorTree(l),r.sendInspectorState(l)})}function s1(e){return e.optional?e.repeatable?"*":"?":e.repeatable?"+":""}function r1(e){const{record:t}=e,n=[{editable:!1,key:"path",value:t.path}];return t.name!=null&&n.push({editable:!1,key:"name",value:t.name}),n.push({editable:!1,key:"regexp",value:e.re}),e.keys.length&&n.push({editable:!1,key:"keys",value:{_custom:{type:null,readOnly:!0,display:e.keys.map(s=>`${s.name}${s1(s)}`).join(" "),tooltip:"Param keys",value:e.keys}}}),t.redirect!=null&&n.push({editable:!1,key:"redirect",value:t.redirect}),e.alias.length&&n.push({editable:!1,key:"aliases",value:e.alias.map(s=>s.record.path)}),Object.keys(e.record.meta).length&&n.push({editable:!1,key:"meta",value:e.record.meta}),n.push({key:"score",editable:!1,value:{_custom:{type:null,readOnly:!0,display:e.score.map(s=>s.join(", ")).join(" | "),tooltip:"Score
${JSON.stringify(G,null,2)}
when navigating to "${O.fullPath}". A redirect must contain a name or path. This will break in production.`),new Error("Invalid redirect");return ke({query:O.query,hash:O.hash,params:"path"in G?{}:O.params},G)}}function j(O,U){const K=u=y(O),G=c.value,ve=O.state,Ae=O.force,h=O.replace===!0,v=k(K);if(v)return j(ke(x(v),{state:typeof v=="object"?ke({},ve,v.state):ve,force:Ae,replace:h}),U||K);const S=K;S.redirectedFrom=U;let I;return!Ae&&tu(s,G,K)&&(I=Ms(16,{to:S,from:G}),Pt(G,G,!0,!1)),(I?Promise.resolve(I):Y(S,G)).catch(M=>tn(M)?tn(M,2)?M:Te(M):re(M,S,G)).then(M=>{if(M){if(tn(M,2))return tu(s,y(M.to),S)&&U&&(U._count=U._count?U._count+1:1)>30?(Ee(`Detected a possibly infinite redirection in a navigation guard when going from "${G.fullPath}" to "${S.fullPath}". Aborting to avoid a Stack Overflow.
Are you always returning a new location within a navigation guard? That would lead to this error. Only return when redirecting or aborting, that should fix this. This might break in production if not fixed.`),Promise.reject(new Error("Infinite redirect in navigation guard"))):j(ke({replace:h},x(M.to),{state:typeof M.to=="object"?ke({},ve,M.to.state):ve,force:Ae}),U||S)}else M=V(S,G,!0,h,ve);return oe(S,G,M),M})}function A(O,U){const K=_(O,U);return K?Promise.reject(K):Promise.resolve()}function F(O){const U=Vt.values().next().value;return U&&typeof U.runWithContext=="function"?U.runWithContext(O):O()}function Y(O,U){let K;const[G,ve,Ae]=f1(O,U);K=Oo(G.reverse(),"beforeRouteLeave",O,U);for(const v of G)v.leaveGuards.forEach(S=>{K.push(wn(S,O,U))});const h=A.bind(null,O,U);return K.push(h),Ct(K).then(()=>{K=[];for(const v of i.list())K.push(wn(v,O,U));return K.push(h),Ct(K)}).then(()=>{K=Oo(ve,"beforeRouteUpdate",O,U);for(const v of ve)v.updateGuards.forEach(S=>{K.push(wn(S,O,U))});return K.push(h),Ct(K)}).then(()=>{K=[];for(const v of Ae)if(v.beforeEnter)if($t(v.beforeEnter))for(const S of v.beforeEnter)K.push(wn(S,O,U));else K.push(wn(v.beforeEnter,O,U));return K.push(h),Ct(K)}).then(()=>(O.matched.forEach(v=>v.enterCallbacks={}),K=Oo(Ae,"beforeRouteEnter",O,U),K.push(h),Ct(K))).then(()=>{K=[];for(const v of a.list())K.push(wn(v,O,U));return K.push(h),Ct(K)}).catch(v=>tn(v,8)?v:Promise.reject(v))}function oe(O,U,K){l.list().forEach(G=>F(()=>G(O,U,K)))}function V(O,U,K,G,ve){const Ae=_(O,U);if(Ae)return Ae;const h=U===vn,v=an?history.state:{};K&&(G||h?r.replace(O.fullPath,ke({scroll:h&&v&&v.scroll},ve)):r.push(O.fullPath,ve)),c.value=O,Pt(O,U,K,h),Te()}let fe;function me(){fe||(fe=r.listen((O,U,K)=>{if(!Hn.listening)return;const G=y(O),ve=k(G);if(ve){j(ke(ve,{replace:!0}),G).catch(lr);return}u=G;const Ae=c.value;an&&rb(su(Ae.fullPath,K.delta),ao()),Y(G,Ae).catch(h=>tn(h,12)?h:tn(h,2)?(j(h.to,G).then(v=>{tn(v,20)&&!K.delta&&K.type===Sr.pop&&r.go(-1,!1)}).catch(lr),Promise.reject()):(K.delta&&r.go(-K.delta,!1),re(h,G,Ae))).then(h=>{h=h||V(G,Ae,!1),h&&(K.delta&&!tn(h,8)?r.go(-K.delta,!1):K.type===Sr.pop&&tn(h,20)&&r.go(-1,!1)),oe(G,Ae,h)}).catch(lr)}))}let ge=Ws(),Ie=Ws(),W;function re(O,U,K){Te(O);const G=Ie.list();return G.length?G.forEach(ve=>ve(O,U,K)):(Ee("uncaught error during route navigation:"),console.error(O)),Promise.reject(O)}function ye(){return W&&c.value!==vn?Promise.resolve():new Promise((O,U)=>{ge.add([O,U])})}function Te(O){return W||(W=!O,me(),ge.list().forEach(([U,K])=>O?K(O):U()),ge.reset()),O}function Pt(O,U,K,G){const{scrollBehavior:ve}=e;if(!an||!ve)return Promise.resolve();const Ae=!K&&ib(su(O.fullPath,0))||(G||!K)&&history.state&&history.state.scroll||null;return et().then(()=>ve(O,U,Ae)).then(h=>h&&sb(h)).catch(h=>re(h,O,U))}const Xe=O=>r.go(O);let dt;const Vt=new Set,Hn={currentRoute:c,listening:!0,addRoute:m,removeRoute:g,hasRoute:w,getRoutes:b,resolve:y,options:e,push:P,replace:$,go:Xe,back:()=>Xe(-1),forward:()=>Xe(1),beforeEach:i.add,beforeResolve:a.add,afterEach:l.add,onError:Ie.add,isReady:ye,install(O){const U=this;O.component("RouterLink",Yb),O.component("RouterView",Qb),O.config.globalProperties.$router=U,Object.defineProperty(O.config.globalProperties,"$route",{enumerable:!0,get:()=>C(c)}),an&&!dt&&c.value===vn&&(dt=!0,P(r.location).catch(ve=>{Ee("Unexpected error when starting the router:",ve)}));const K={};for(const ve in vn)Object.defineProperty(K,ve,{get:()=>c.value[ve],enumerable:!0});O.provide(_l,U),O.provide(dp,Ff(K)),O.provide(va,c);const G=O.unmount;Vt.add(O),O.unmount=function(){Vt.delete(O),Vt.size<1&&(u=vn,fe&&fe(),fe=null,c.value=vn,dt=!1,W=!1),G()},an&&n1(O,U,t)}};function Ct(O){return O.reduce((U,K)=>U.then(()=>F(K)),Promise.resolve())}return Hn}function f1(e,t){const n=[],s=[],r=[],i=Math.max(t.matched.length,e.matched.length);for(let a=0;a<i;a++){const l=t.matched[a];l&&(e.matched.find(u=>jn(u,l))?s.push(l):n.push(l));const c=e.matched[a];c&&(t.matched.find(u=>jn(u,c))||r.push(c))}return[n,s,r]}const ko=z(!1),ur=z(!1),$s=z(!1),d1=z(!0),ya=sy({xs:460,...ny}),ls=Dy(),bp=
`);alert(g),console.warn(g)}return d}const Op=We(yt(m1),yt(h1),d1);function rw(e,t,n=!1){typeof e=="string"&&(e=bp[e]);const s=We(e,Op);let r=0,i;const a=()=>{if(clearTimeout(i),!s.value){r=0;return}n&&(i=setTimeout(a,Math.max(1e3-r*250,150)),r++),t()};return pe(s,a,{flush:"sync"})}function iw(e,t){return X_(e,n=>{Op.value&&(n.repeat||t())})}function ow(){const e=sw();new Map(e.map(n=>[n.key,n])).forEach(n=>{n.fn&&rw(n.key,n.fn,n.autoRepeat)}),iw("f",()=>wp.toggle())}const aw={class:"slidev-icon",viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},lw=o("path",{fill:"currentColor",d:"M24 9.4L22.6 8L16 14.6L9.4 8L8 9.4l6.6 6.6L8 22.6L9.4 24l6.6-6.6l6.6 6.6l1.4-1.4l-6.6-6.6L24 9.4z"},null,-1),cw=[lw];function uw(e,t){return E(),L("svg",aw,cw)}const fw={name:"carbon-close",render:uw};function xl(e,t=""){var r,i;const n=["slidev-page",t],s=(i=(r=e==null?void 0:e.meta)==null?void 0:r.slide)==null?void 0:i.no;return s!=null&&n.push(`slidev-page-${s}`),n.filter(Boolean).join(" ")}const dw=Pe({__name:"SlideContainer",props:{width:{type:Number},meta:{default:()=>({})},scale:{type:[Number,String]}},setup(e){const t=e;Z(ee);const n=z(),s=Py(n),r=T(()=>t.width?t.width:s.width.value),i=T(()=>t.width?t.width/Pn:s.height.value);t.width&&Ns(()=>{n.value&&(n.value.style.width=`${r.value}px`,n.value.style.height=`${i.value}px`)});const a=T(()=>r.value/i.value),l=T(()=>t.scale&&!Is.value?t.scale:a.value<Pn?r.value/Cn:i.value*Pn/Cn),c=T(()=>({height:`${hl}px`,width:`${Cn}px`,transform:`translate(-50%, -50%) scale(${l.value})`})),u=T(()=>({"select-none":!Ce.selectable}));return wt(Ud,l),(f,d)=>(E(),L("div",{id:"slide-container",ref_key:"root",ref:n,class:qe(u.value)},[o("div",{id:"slide-content",style:nt(c.value)},[Nn(f.$slots,"default")],4),Nn(f.$slots,"controls")],2))}});const te=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},kp=te(dw,[["__file","/home/laurent/Documents/Cours/ENSEEIHT/PFE/etude-biblio/slides/node_modules/@slidev/client/internals/SlideContainer.vue"]]),El=Pe({name:"SlideWrapper",props:{clicks:{type:[Number,String],default:0},clicksElements:{type:Array,default:()=>[]},clicksOrderMap:{type:Map,default:()=>new Map},clicksDisabled:{type:Boolean,default:!1},context:{type:String,default:"main"},is:{type:Object,default:void 0},route:{type:Object,default:void 0}},setup(e,{emit:t}){const n=Gt(e,"clicks",t),s=Gt(e,"clicksElements",t),r=Gt(e,"clicksDisabled",t),i=Gt(e,"clicksOrderMap",t);s.value.length=0,wt(t_,e.route),wt(n_,e.context),wt(fi,n),wt(di,r),wt(Ss,s),wt(ua,i)},render(){var e,t;return this.$props.is?vt(this.$props.is):(t=(e=this.$slots)==null?void 0:e.default)==null?void 0:t.call(e)}}),pw=["innerHTML"],mw=Pe({__name:"DrawingPreview",props:{page:{type:Number,required:!0}},setup(e){return Z(ee),(t,n)=>C(Ri)[t.page]?(E(),L("svg",{key:0,class:"w-full h-full absolute top-0 pointer-events-none",innerHTML:C(Ri)[t.page]},null,8,pw)):de("v-if",!0)}}),Tp=te(mw,[["__file","/home/laurent/Documents/Cours/ENSEEIHT/PFE/etude-biblio/slides/node_modules/@slidev/client/internals/DrawingPreview.vue"]]),hw=Object.freeze(Object.defineProperty({__proto__:null,default:Tp},Symbol.toStringTag,{value:"Module"})),gw={class:"slides-overview bg-main !bg-opacity-75 p-16 overflow-y-auto"},vw=["onClick"],Mo=4*16*2,Tu=2*16,_w=Pe({__name:"SlidesOverview",props:{modelValue:{type:Boolean,required:!0}},emits:[],setup(e,{emit:t}){const n=e;Z(ee);const s=Gt(n,"modelValue",t);function r(){s.value=!1}function i(d){Ls(d),r()}function a(d){return d===Et.value}const l=ya.smaller("xs"),c=ya.smaller("sm"),u=T(()=>l.value?ls.width.value-Mo:c.value?(ls.width.value-Mo-Tu)/2:300),f=T(()=>Math.floor((ls.width.value-Mo)/(u.value+Tu)));return Ns(()=>{Et.value=ze.value,wl.value=f.value}),(d,p)=>{const m=fw;return E(),L($e,null,[od(o("div",gw,[o("div",{class:"grid gap-y-4 gap-x-8 w-full",style:nt(`grid-template-columns: repeat(auto-fit,minmax(${u.value}px,1fr))`)},[(E(!0),L($e,null,Rs(C(Ke),(g,b)=>(E(),L("div",{key:g.path,class:"relative"},[o("div",{class:qe(["inline-block border rounded border-opacity-50 overflow-hidden bg-main hover:border-$slidev-theme-prim
`+e.mark.snippet),s+" "+n):s}function Or(e,t){Error.call(this),this.name="YAMLException",this.reason=e,this.mark=t,this.message=Up(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}Or.prototype=Object.create(Error.prototype);Or.prototype.constructor=Or;Or.prototype.toString=function(t){return this.name+": "+Up(this,t)};var Xn=Or,wS=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],xS=["scalar","sequence","mapping"];function ES(e){var t={};return e!==null&&Object.keys(e).forEach(function(n){e[n].forEach(function(s){t[String(s)]=n})}),t}function SS(e,t){if(t=t||{},Object.keys(t).forEach(function(n){if(wS.indexOf(n)===-1)throw new Xn('Unknown option "'+n+'" is met in definition of "'+e+'" YAML type.')}),this.options=t,this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(n){return n},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.representName=t.representName||null,this.defaultStyle=t.defaultStyle||null,this.multi=t.multi||!1,this.styleAliases=ES(t.styleAliases||null),xS.indexOf(this.kind)===-1)throw new Xn('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}var st=SS;function Ru(e,t){var n=[];return e[t].forEach(function(s){var r=n.length;n.forEach(function(i,a){i.tag===s.tag&&i.kind===s.kind&&i.multi===s.multi&&(r=a)}),n[r]=s}),n}function $S(){var e={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},t,n;function s(r){r.multi?(e.multi[r.kind].push(r),e.multi.fallback.push(r)):e[r.kind][r.tag]=e.fallback[r.tag]=r}for(t=0,n=arguments.length;t<n;t+=1)arguments[t].forEach(s);return e}function Aa(e){return this.extend(e)}Aa.prototype.extend=function(t){var n=[],s=[];if(t instanceof st)s.push(t);else if(Array.isArray(t))s=s.concat(t);else if(t&&(Array.isArray(t.implicit)||Array.isArray(t.explicit)))t.implicit&&(n=n.concat(t.implicit)),t.explicit&&(s=s.concat(t.explicit));else throw new Xn("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");n.forEach(function(i){if(!(i instanceof st))throw new Xn("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(i.loadKind&&i.loadKind!=="scalar")throw new Xn("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(i.multi)throw new Xn("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),s.forEach(function(i){if(!(i instanceof st))throw new Xn("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var r=Object.create(Aa.prototype);return r.implicit=(this.implicit||[]).concat(n),r.explicit=(this.explicit||[]).concat(s),r.compiledImplicit=Ru(r,"implicit"),r.compiledExplicit=Ru(r,"explicit"),r.compiledTypeMap=$S(r.compiledImplicit,r.compiledExplicit),r};var PS=Aa,CS=new st("tag:yaml.org,2002:str",{kind:"scalar",construct:function(e){return e!==null?e:""}}),OS=new st("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(e){return e!==null?e:[]}}),kS=new st("tag:yaml.org,2002:map",{kind:"mapping",construct:function(e){return e!==null?e:{}}}),TS=new PS({explicit:[CS,OS,kS]});function AS(e){if(e===null)return!0;var t=e.length;return t===1&&e==="~"||t===4&&(e==="null"||e==="Null"||e==="NULL")}function MS(){return null}function IS(e){return e===null}var LS=new st("tag:yaml.org,2002:null",{kind:"scalar",resolve:AS,construct:MS,predicate:IS,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"},empty:function(){return""}},defaultStyle:"lowercase"});function NS(e){if(e===null)return!1;var t=e.length;return t===4&&(e==="true"||e==="True"||e==="TRUE")||t===5&&(e==="false"||e==="False"||e==="FALSE")}function RS(e){return e==="true"||e==="True"||e==="TRUE"}
\r`;function a$(e){if(e===null)return!1;var t,n,s=0,r=e.length,i=Pl;for(n=0;n<r;n++)if(t=i.indexOf(e.charAt(n)),!(t>64)){if(t<0)return!1;s+=6}return s%8===0}function l$(e){var t,n,s=e.replace(/[\r\n=]/g,""),r=s.length,i=Pl,a=0,l=[];for(t=0;t<r;t++)t%4===0&&t&&(l.push(a>>16&255),l.push(a>>8&255),l.push(a&255)),a=a<<6|i.indexOf(s.charAt(t));return n=r%4*6,n===0?(l.push(a>>16&255),l.push(a>>8&255),l.push(a&255)):n===18?(l.push(a>>10&255),l.push(a>>2&255)):n===12&&l.push(a>>4&255),new Uint8Array(l)}function c$(e){var t="",n=0,s,r,i=e.length,a=Pl;for(s=0;s<i;s++)s%3===0&&s&&(t+=a[n>>18&63],t+=a[n>>12&63],t+=a[n>>6&63],t+=a[n&63]),n=(n<<8)+e[s];return r=i%3,r===0?(t+=a[n>>18&63],t+=a[n>>12&63],t+=a[n>>6&63],t+=a[n&63]):r===2?(t+=a[n>>10&63],t+=a[n>>4&63],t+=a[n<<2&63],t+=a[64]):r===1&&(t+=a[n>>2&63],t+=a[n<<4&63],t+=a[64],t+=a[64]),t}function u$(e){return Object.prototype.toString.call(e)==="[object Uint8Array]"}var f$=new st("tag:yaml.org,2002:binary",{kind:"scalar",resolve:a$,construct:l$,predicate:u$,represent:c$}),d$=Object.prototype.hasOwnProperty,p$=Object.prototype.toString;function m$(e){if(e===null)return!0;var t=[],n,s,r,i,a,l=e;for(n=0,s=l.length;n<s;n+=1){if(r=l[n],a=!1,p$.call(r)!=="[object Object]")return!1;for(i in r)if(d$.call(r,i))if(!a)a=!0;else return!1;if(!a)return!1;if(t.indexOf(i)===-1)t.push(i);else return!1}return!0}function h$(e){return e!==null?e:[]}var g$=new st("tag:yaml.org,2002:omap",{kind:"sequence",resolve:m$,construct:h$}),v$=Object.prototype.toString;function _$(e){if(e===null)return!0;var t,n,s,r,i,a=e;for(i=new Array(a.length),t=0,n=a.length;t<n;t+=1){if(s=a[t],v$.call(s)!=="[object Object]"||(r=Object.keys(s),r.length!==1))return!1;i[t]=[r[0],s[r[0]]]}return!0}function y$(e){if(e===null)return[];var t,n,s,r,i,a=e;for(i=new Array(a.length),t=0,n=a.length;t<n;t+=1)s=a[t],r=Object.keys(s),i[t]=[r[0],s[r[0]]];return i}var b$=new st("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:_$,construct:y$}),w$=Object.prototype.hasOwnProperty;function x$(e){if(e===null)return!0;var t,n=e;for(t in n)if(w$.call(n,t)&&n[t]!==null)return!1;return!0}function E$(e){return e!==null?e:{}}var S$=new st("tag:yaml.org,2002:set",{kind:"mapping",resolve:x$,construct:E$});e$.extend({implicit:[r$,o$],explicit:[f$,g$,b$,S$]});function ju(e){return e===48?"\0":e===97?"\x07":e===98?"\b":e===116||e===9?" ":e===110?`
`:e===118?"\v":e===102?"\f":e===114?"\r":e===101?"\x1B":e===32?" ":e===34?'"':e===47?"/":e===92?"\\":e===78?"…":e===95?" ":e===76?"\u2028":e===80?"\u2029":""}var $$=new Array(256),P$=new Array(256);for(var xs=0;xs<256;xs++)$$[xs]=ju(xs)?1:0,P$[xs]=ju(xs);function C$(e){return Array.from(new Set(e))}function Du(...e){let t,n,s;e.length===1?(t=0,s=1,[n]=e):[t,n,s=1]=e;const r=[];let i=t;for(;i<n;)r.push(i),i+=s||1;return r}function O$(e,t){if(!t||t==="all"||t==="*")return Du(1,e+1);const n=[];for(const s of t.split(/[,;]/g))if(!s.includes("-"))n.push(+s);else{const[r,i]=s.split("-",2);n.push(...Du(+r,i?+i+1:e+1))}return C$(n).filter(s=>s<=e).sort((s,r)=>s-r)}function Gp(e){const t=T(()=>e.value.path),n=T(()=>Ke.length),s=T(()=>Number.parseInt(t.value.split(/\//g).slice(-1)[0])||1),r=T(()=>lo(s.value)),i=T(()=>Ke.find(p=>p.path===`${s.value}`)),a=T(()=>{var p,m,g;return(g=(m=(p=i.value)==null?void 0:p.meta)==null?void 0:m.slide)==null?void 0:g.id}),l=T(()=>{var p,m;return((m=(p=i.value)==null?void 0:p.meta)==null?void 0:m.layout)||(s.value===1?"cover":"default")}),c=T(()=>Ke.find(p=>p.path===`${Math.min(Ke.length,s.value+1)}`)),u=T(()=>Ke.filter(p=>{var m,g;return(g=(m=p.meta)==null?void 0:m.slide)==null?void 0:g.title}).reduce((p,m)=>(Cl(p,m),p),[])),f=T(()=>Ol(u.value,i.value)),d=T(()=>kl(f.value));return{route:e,path:t,total:n,currentPage:s,currentPath:r,currentRoute:i,currentSlideId:a,currentLayout:l,nextRoute:c,rawTree:u,treeWithActiveStatuses:f,tree:d,downloadPDF:Ia,next:An,nextSlide:kr,openInEditor:ok,prev:Mn,prevSlide:Tr}}function Yp(e,t,n){const s=z(0);et(()=>{gt.afterEach(async()=>{await et(),s.value+=1})});const r=T(()=>{var c,u;return s.value,((u=(c=t.value)==null?void 0:c.meta)==null?void 0:u.__clicksElements)||[]}),i=T(()=>{var c,u;return+(((u=(c=t.value)==null?void 0:c.meta)==null?void 0:u.clicks)??r.value.length)}),a=T(()=>n.value<Ke.length-1||e.value<i.value),l=T(()=>n.value>1||e.value>0);return{clicks:e,clicksElements:r,clicksTotal:i,hasNext:a,hasPrev:l}}const k$=["id"],T$=Pe({__name:"PrintSlideClick",props:{clicks:{type:Number,required:!0},clicksElements:{type:Array,required:!1},nav:{type:null,required:!0},route:{type:null,required:!0}},emits:["update:clicksElements"],setup(e,{emit:t}){const n=e,s=Gt(n,"clicksElements",t),r=T(()=>({height:`${hl}px`,width:`${Cn}px`})),i=Qt();On(()=>Promise.resolve().then(()=>hw),void 0).then(u=>i.value=u.default);const a=T(()=>n.clicks),l=Yp(a,n.nav.currentRoute,n.nav.currentPage),c=T(()=>`${n.route.path.toString().padStart(3,"0")}-${(a.value+1).toString().padStart(2,"0")}`);return wt(ee,Ve({nav:{...n.nav,...l},configs:Ce,themeConfigs:T(()=>Ce.themeConfig)})),(u,f)=>{var d;return E(),L("div",{id:c.value,class:"print-slide-container",style:nt(r.value)},[ne(C(Vp)),ne(C(El),{is:(d=u.route)==null?void 0:d.component,"clicks-elements":C(s),"onUpdate:clicksElements":f[0]||(f[0]=p=>Se(s)?s.value=p:null),clicks:a.value,"clicks-disabled":!1,class:qe(C(xl)(u.route)),route:u.route},null,8,["is","clicks-elements","clicks","class","route"]),i.value?(E(),X(C(i),{key:0,page:+u.route.path},null,8,["page"])):de("v-if",!0),ne(C(qp))],12,k$)}}}),Fu=te(T$,[["__file","/home/laurent/Documents/Cours/ENSEEIHT/PFE/etude-biblio/slides/node_modules/@slidev/client/internals/PrintSlideClick.vue"]]),A$=Pe({__name:"PrintSlide",props:{route:{type:null,required:!0}},setup(e){var i;const t=e;Z(ee);const n=z(((i=t.route.meta)==null?void 0:i.__clicksElements)||[]),s=T(()=>t.route),r=Gp(s);return(a,l)=>(E(),L($e,null,[ne(Fu,{"clicks-elements":n.value,"onUpdate:clicksElements":l[0]||(l[0]=c=>n.value=c),clicks:0,nav:C(r),route:s.value},null,8,["clicks-elements","nav","route"]),C(fr)?de("v-if",!0):(E(!0),L($e,{key:0},Rs(n.value.length,c=>(E(),X(Fu,{key:c,clicks:c,nav:C(r),route:s.value},null,8,["clicks","nav","route"]))),128))],64))}}),M$=te(A$,[["__file","/home/laurent/Documents/Cours/ENSEEIHT/PFE/etude-biblio/slides/node_modules/@slidev/client/internals/PrintSlide.vue"]]),I$={id:"print-content"},L$=Pe({__name:"PrintContainer",props:{width:{type:Number,required:!0}},setup(e){const t=e;Z(ee);const n=T(()=>t.wi
c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14
c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54
c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10
s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429
c69,-144,104.5,-217.7,106.5,-221
l0 -0
c5.3,-9.3,12,-14,20,-14
H400000v40H845.2724
s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7
c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z
M834 80h400000v40h-400000z`})])])])]),o("span",{class:"vlist-s"},"")]),o("span",{class:"vlist-r"},[o("span",{class:"vlist",style:{height:"0.2147em"}},[o("span")])])])])])]),o("span",{style:{top:"-3.23em"}},[o("span",{class:"pstrut",style:{height:"3em"}}),o("span",{class:"frac-line",style:{"border-bottom-width":"0.04em"}})]),o("span",{style:{top:"-3.677em"}},[o("span",{class:"pstrut",style:{height:"3em"}}),o("span",{class:"mord"},[o("span",{class:"mord"},[o("span",{class:"mord mathnormal"},"x"),o("span",{class:"msupsub"},[o("span",{class:"vlist-t vlist-t2"},[o("span",{class:"vlist-r"},[o("span",{class:"vlist",style:{height:"0.2806em"}},[o("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[o("span",{class:"pstrut",style:{height:"2.7em"}}),o("span",{class:"sizing reset-size6 size3 mtight"},[o("span",{class:"mord mathnormal mtight"},"t")])])]),o("span",{class:"vlist-s"},"")]),o("span",{class:"vlist-r"},[o("span",{class:"vlist",style:{height:"0.15em"}},[o("span")])])])])]),o("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),o("span",{class:"mbin"},""),o("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),o("span",{class:"mord sqrt"},[o("span",{class:"vlist-t vlist-t2"},[o("span",{class:"vlist-r"},[o("span",{class:"vlist",style:{height:"0.8322em"}},[o("span",{class:"svg-align",style:{top:"-3em"}},[o("span",{class:"pstrut",style:{height:"3em"}}),o("span",{class:"mord",style:{"padding-left":"0.833em"}},[o("span",{class:"mord"},"1"),o("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),o("span",{class:"mbin"},""),o("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),o("span",{class:"mord"},[o("span",{class:"mord overline"},[o("span",{class:"vlist-t"},[o("span",{class:"vlist-r"},[o("span",{class:"vlist",style:{height:"0.6306em"}},[o("span",{style:{top:"-3em"}},[o("span",{class:"pstrut",style:{height:"3em"}}),o("span",{class:"mord"},[o("span",{class:"mord mathnormal",style:{"margin-right":"0.0037em"}},"α")])]),o("span",{style:{top:"-3.5506em"}},[o("span",{class:"pstrut",style:{height:"3em"}}),o("span",{class:"overline-line",style:{"border-bottom-width":"0.04em"}})])])])])]),o("span",{class:"msupsub"},[o("span",{class:"vlist-t vlist-t2"},[o("span",{class:"vlist-r"},[o("span",{class:"vlist",style:{height:"0.2806em"}},[o("span",{style:{top:"-2.55em","margin-right":"0.05em"}},[o("span",{class:"pstrut",style:{height:"2.7em"}}),o("span",{class:"sizing reset-size6 size3 mtight"},[o("span",{class:"mord mathnormal mtight"},"t")])])]),o("span",{class:"vlist-s"},"")]),o("span",{class:"vlist-r"},[o("span",{class:"vlist",style:{height:"0.15em"}},[o("span")])])])])])])]),o("span",{style:{top:"-2.7922em"}},[o("span",{class:"pstrut",style:{height:"3em"}}),o("span",{class:"hide-tail",style:{"min-width":"0.853em",height:"1.08em"}},[o("svg",{xmlns:"http://www.w3.org/2000/svg",width:"400em",height:"1.08em",viewBox:"0 0 400000 1080",preserveAspectRatio:"xMinYMin slice"},[o("path",{d:`M95,702
c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14
c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54
c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10
s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429
c69,-144,104.5,-217.7,106.5,-221
l0 -0
c5.3,-9.3,12,-14,20,-14
H400000v40H845.2724
s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7
c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z
M834 80h400000v40h-400000z`})])])])]),o("span",{class:"vlist-s"},"")]),o("span",{class:"vlist-r"},[o("span",{class:"vlist",style:{height:"0.2078em"}},[o("span")])])])]),o("span",{class:"mord"},[o("span",{class:"mord mathnormal"},"ϵ"),o("span",{class:"msupsub"},[o("span",{class:"vlist-t vlist-t2"},[o("span",{class:"vlist-r"},[o("span",{class:"vlist",style:{height:"0.3361em"}},[o("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[o("span",{class:"pstrut",style:{height:"2.7em"}}),o("span",{class:"sizing reset-size6 size3 mtight"},[o("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.02778em"}},"θ")])])]),o("span",{class:"vlist-s"},"")]),o("span",{class:"vlist-r"},[o("span",{class:"vlist",style:{height:"0.15em"}},[o("span")])])])])]),o("span",{class:"mopen"},"("),o("span",{class:"mord"},[o("span",{class:"mord mathnormal"},"x"),o("span",{class:"msupsub"},[o("span",{class:"vlist-t vlist-t2"},[o("span",{class:"vlist-r"},[o("span",{class:"vlist",style:{height:"0.2806em"}},[o("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[o("span",{class:"pstrut",style:{height:"2.7em"}}),o("span",{class:"sizing reset-size6 size3 mtight"},[o("span",{class:"mord mathnormal mtight"},"t")])])]),o("span",{class:"vlist-s"},"")]),o("span",{class:"vlist-r"},[o("span",{class:"vlist",style:{height:"0.15em"}},[o("span")])])])])]),o("span",{class:"mclose"},")")])])]),o("span",{class:"vlist-s"},"")]),o("span",{class:"vlist-r"},[o("span",{class:"vlist",style:{height:"0.93em"}},[o("span")])])])]),o("span",{class:"mclose nulldelimiter"})])])])])]),o("p",null,[o("span",{class:"katex"},[o("span",{class:"katex-mathml"},[o("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[o("semantics",null,[o("mrow",null,[o("mstyle",{scriptlevel:"0",displaystyle:"true"},[o("mtext",null,"RMSE"),o("mo",null,"="),o("msqrt",null,[o("mfrac",null,[o("mrow",null,[o("mi",{mathvariant:"normal"},"∥"),o("msub",null,[o("mi",null,"x"),o("mn",null,"0")]),o("mo",null,""),o("msub",null,[o("mover",{accent:"true"},[o("mi",null,"x"),o("mo",null,"^")]),o("mn",null,"0")]),o("msubsup",null,[o("mi",{mathvariant:"normal"},"∥"),o("mn",null,"2"),o("mn",null,"2")])]),o("mi",null,"D")])])])]),o("annotation",{encoding:"application/x-tex"},"\\displaystyle \\text{RMSE} = \\sqrt{ \\frac{ \\| x_0 - \\hat{x}_0 \\|^2_2 }{ D } }")])])]),o("span",{class:"katex-html","aria-hidden":"true"},[o("span",{class:"base"},[o("span",{class:"strut",style:{height:"0.6833em"}}),o("span",{class:"mord text"},[o("span",{class:"mord"},"RMSE")]),o("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),o("span",{class:"mrel"},"="),o("span",{class:"mspace",style:{"margin-right":"0.2778em"}})]),o("span",{class:"base"},[o("span",{class:"strut",style:{height:"2.44em","vertical-align":"-0.7127em"}}),o("span",{class:"mord sqrt"},[o("span",{class:"vlist-t vlist-t2"},[o("span",{class:"vlist-r"},[o("span",{class:"vlist",style:{height:"1.7273em"}},[o("span",{class:"svg-align",style:{top:"-4.4em"}},[o("span",{class:"pstrut",style:{height:"4.4em"}}),o("span",{class:"mord",style:{"padding-left":"1em"}},[o("span",{class:"mord"},[o("span",{class:"mopen nulldelimiter"}),o("span",{class:"mfrac"},[o("span",{class:"vlist-t vlist-t2"},[o("span",{class:"vlist-r"},[o("span",{class:"vlist",style:{height:"1.4729em"}},[o("span",{style:{top:"-2.314em"}},[o("span",{class:"pstrut",style:{height:"3em"}}),o("span",{class:"mord"},[o("span",{class:"mord mathnormal",style:{"margin-right":"0.02778em"}},"D")])]),o("span",{style:{top:"-3.23em"}},[o("span",{class:"pstrut",style:{height:"3em"}}),o("span",{class:"frac-line",style:{"border-bottom-width":"0.04em"}})]),o("span",{style:{top:"-3.677em"}},[o("span",{class:"pstrut",style:{height:"3em"}}),o("span",{class:"mord"},[o("span",{class:"mord"},"∥"),o("span",{class:"mord"},[o("span",{class:"mord mathnormal"},"x"),o("span",{class:"msupsub"},[o("span",{class:"vlist-t vlist-t2"},[o("span",{class:"vlist-r"},[o("span",{class:"vlist",style:{height:"0.3011em"}},[o("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"
c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514
c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20
s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121
s209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081
l0 -0c4,-6.7,10,-10,18,-10 H400000
v40H1014.6
s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185
c-2,6,-10,9,-24,9
c-8,0,-12,-0.7,-12,-2z M1001 80
h400000v40h-400000z`})])])])]),o("span",{class:"vlist-s"},"")]),o("span",{class:"vlist-r"},[o("span",{class:"vlist",style:{height:"0.7127em"}},[o("span")])])])])])])])]),o("p",null,[o("span",{class:"katex-display"},[o("span",{class:"katex"},[o("span",{class:"katex-mathml"},[o("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[o("semantics",null,[o("mtable",{rowspacing:"0.25em",columnalign:"right left",columnspacing:"0em"},[o("mtr",null,[o("mtd",null,[o("mstyle",{scriptlevel:"0",displaystyle:"true"},[o("mtext",null,"Rate")])]),o("mtd",null,[o("mstyle",{scriptlevel:"0",displaystyle:"true"},[o("mrow",null,[o("mrow"),o("mo",null,"="),o("mfrac",null,[o("mn",null,"1"),o("mrow",null,[o("mn",null,"2"),o("msubsup",null,[o("mi",null,"σ"),o("mi",null,"q"),o("mn",null,"2")]),o("mo",{stretchy:"false"},"("),o("mi",null,"t"),o("mo",{stretchy:"false"},")")])]),o("mfrac",null,[o("mrow",null,[o("msub",null,[o("mover",{accent:"true"},[o("mi",null,"α"),o("mo",{stretchy:"true"},"‾")]),o("mrow",null,[o("mi",null,"t"),o("mo",null,""),o("mn",null,"1")])]),o("mo",{stretchy:"false"},"("),o("mn",null,"1"),o("mo",null,""),o("msub",null,[o("mi",null,"α"),o("mi",null,"t")]),o("msup",null,[o("mo",{stretchy:"false"},")"),o("mn",null,"2")])]),o("mrow",null,[o("mo",{stretchy:"false"},"("),o("mn",null,"1"),o("mo",null,""),o("msub",null,[o("mover",{accent:"true"},[o("mi",null,"α"),o("mo",{stretchy:"true"},"‾")]),o("mi",null,"t")]),o("msup",null,[o("mo",{stretchy:"false"},")"),o("mn",null,"2")])])]),o("mi",{mathvariant:"normal"},"∥"),o("msub",null,[o("mi",null,"x"),o("mn",null,"0")]),o("mo",null,""),o("msub",null,[o("mover",{accent:"true"},[o("mi",null,"x"),o("mo",null,"^")]),o("mn",null,"0")]),o("msubsup",null,[o("mi",{mathvariant:"normal"},"∥"),o("mn",null,"2"),o("mn",null,"2")])])])])]),o("mtr",null,[o("mtd",null,[o("mstyle",{scriptlevel:"0",displaystyle:"true"},[o("mrow")])]),o("mtd",null,[o("mstyle",{scriptlevel:"0",displaystyle:"true"},[o("mrow",null,[o("mrow"),o("mo",null,"="),o("msub",null,[o("mtext",null,"D"),o("mtext",null,"KL")]),o("mrow",null,[o("mo",{fence:"true"},"["),o("mi",null,"q"),o("mo",{stretchy:"false"},"("),o("msub",null,[o("mi",null,"x"),o("mrow",null,[o("mi",null,"t"),o("mo",null,""),o("mn",null,"1")])]),o("mi",{mathvariant:"normal"},""),o("msub",null,[o("mi",null,"x"),o("mi",null,"t")]),o("mo",{separator:"true"},","),o("msub",null,[o("mi",null,"x"),o("mn",null,"0")]),o("mo",{stretchy:"false"},")"),o("mi",{mathvariant:"normal"},"∥"),o("msub",null,[o("mi",null,"p"),o("mi",null,"θ")]),o("mo",{stretchy:"false"},"("),o("msub",null,[o("mi",null,"x"),o("mrow",null,[o("mi",null,"t"),o("mo",null,""),o("mn",null,"1")])]),o("mi",{mathvariant:"normal"},""),o("msub",null,[o("mi",null,"x"),o("mi",null,"t")]),o("mo",{stretchy:"false"},")"),o("mo",{fence:"true"},"]")])])])])])]),o("annotation",{encoding:"application/x-tex"},"\\begin{align*} \\text{Rate} &= \\frac{1}{2 \\sigma^2_q(t)} \\frac{ \\overline\\alpha_{t-1} ( 1 - \\alpha_t )^2 }{ (1 - \\overline\\alpha_t)^2 } \\| x_0 - \\hat{x}_0 \\|^2_2 \\\\ &= \\text{D}_{\\text{KL}} \\left[ q(x_{t-1} | x_t, x_0) \\| p_\\theta(x_{t-1} | x_t) \\right] \\end{align*}")])])]),o("span",{class:"katex-html","aria-hidden":"true"},[o("span",{class:"base"},[o("span",{class:"strut",style:{height:"4.3602em","vertical-align":"-1.9301em"}}),o("span",{class:"mord"},[o("span",{class:"mtable"},[o("span",{class:"col-align-r"},[o("span",{class:"vlist-t vlist-t2"},[o("span",{class:"vlist-r"},[o("span",{class:"vlist",style:{height:"2.4301em"}},[o("span",{style:{top:"-4.4301em"}},[o("span",{class:"pstrut",style:{height:"3.4911em"}}),o("span",{class:"mord"},[o("span",{class:"mord text"},[o("span",{class:"mord"},"Rate")])])]),o("span",{style:{top:"-2.221em"}},[o("span",{class:"pstrut",style:{height:"3.4911em"}}),o("span",{class:"mord"})])]),o("span",{class:"vlist-s"},"")]),o("span",{class:"vlist-r"},[o("span",{class:"vlist",style:{height:"1.9301em"}},[o("span")])])])]),o("span",{class:"col-align-l"},[o("span",{class:"vlist-t vlist-t2"},[o("span",{class:"vlist-r"},[o(
`)])],-1),RC=o("p",null,[o("a",{href:"https://distill.pub/2019/visual-exploration-gaussian-processes/",class:"absolute bottom-0 font-extralight mb-1 mr-2 right-0 text-xs"},"Distill")],-1),jC={__name:"15",setup(e){const t={};return Z(ee),(n,s)=>(E(),X(Fe,Re(Me(t)),{default:_e(()=>[LC,NC,RC]),_:1},16))}},DC=te(jC,[["__file","/@slidev/slides/15.md"]]),FC="/projet-fin-etude/assets/gp_train_30_pca-ad1e3633.png",HC=o("h2",null,'"Entrainement" dun GP sur Rotor37_1200',-1),qC=o("div",{class:"flex flex-col items-center h-100"},[o("img",{src:FC,class:"m-auto w-full"})],-1),VC={__name:"16",setup(e){const t={};return Z(ee),(n,s)=>(E(),X(Fe,Re(Me(t)),{default:_e(()=>[HC,qC]),_:1},16))}},zC=te(VC,[["__file","/@slidev/slides/16.md"]]),BC="/projet-fin-etude/assets/gp_unconditional-aeebcb2b.png",UC=o("h2",null,"Analyse de générations non conditionnées",-1),KC=o("div",{class:"flex flex-col items-center h-100"},[o("img",{src:BC,class:"m-auto w-full"})],-1),WC={__name:"17",setup(e){const t={};return Z(ee),(n,s)=>(E(),X(Fe,Re(Me(t)),{default:_e(()=>[UC,KC]),_:1},16))}},GC=te(WC,[["__file","/@slidev/slides/17.md"]]),YC="/projet-fin-etude/assets/gp_guidance-50904295.gif",ZC=o("h2",null,"Analyse de générations progressivement conditionnées",-1),JC=o("div",{class:"flex flex-col items-center h-100"},[o("img",{src:YC,class:"m-auto w-full"})],-1),XC={__name:"18",setup(e){const t={};return Z(ee),(n,s)=>(E(),X(Fe,Re(Me(t)),{default:_e(()=>[ZC,JC]),_:1},16))}},QC=te(XC,[["__file","/@slidev/slides/18.md"]]),eO="/projet-fin-etude/assets/gp_massflow-b6526bc6.gif",tO=o("h2",null,"Analyse de générations conditionnées (massflow)",-1),nO=o("div",{class:"flex flex-col items-center h-100"},[o("img",{src:eO,class:"m-auto w-full"})],-1),sO={__name:"19",setup(e){const t={};return Z(ee),(n,s)=>(E(),X(Fe,Re(Me(t)),{default:_e(()=>[tO,nO]),_:1},16))}},rO=te(sO,[["__file","/@slidev/slides/19.md"]]),iO="/projet-fin-etude/assets/gp_efficiency-1aa8da9d.gif",oO=o("h2",null,"Analyse de générations conditionnées (efficiency)",-1),aO=o("div",{class:"flex flex-col items-center h-100"},[o("img",{src:iO,class:"m-auto w-full"})],-1),lO={__name:"20",setup(e){const t={};return Z(ee),(n,s)=>(E(),X(Fe,Re(Me(t)),{default:_e(()=>[oO,aO]),_:1},16))}},cO=te(lO,[["__file","/@slidev/slides/20.md"]]),uO="/projet-fin-etude/assets/gp_double-8c3dc61f.gif",fO=o("h2",null,"Analyse de générations conditionnées (double)",-1),dO=o("div",{class:"flex flex-col items-center h-100"},[o("img",{src:uO,class:"m-auto w-full"})],-1),pO={__name:"21",setup(e){const t={};return Z(ee),(n,s)=>(E(),X(Fe,Re(Me(t)),{default:_e(()=>[fO,dO]),_:1},16))}},mO=te(pO,[["__file","/@slidev/slides/21.md"]]),hO=o("h2",null,"Conclusion",-1),gO=o("div",{class:"h-100 flex flex-col text-2xl justify-center"},[o("h3",null,"Travail réalisé"),o("ul",null,[o("li",null,"Génération conditionnée daubes par diffusion"),o("li",null,"Release dun code réutilisable en interne"),o("li",null,"Rédaction dune déclaration dinvention")])],-1),vO={__name:"22",setup(e){const t={};return Z(ee),(n,s)=>(E(),X(Fe,Re(Me(t)),{default:_e(()=>[hO,gO]),_:1},16))}},_O=te(vO,[["__file","/@slidev/slides/22.md"]]),yO=o("h2",null,"Conclusion",-1),bO=o("div",{class:"h-100 flex flex-col text-2xl justify-center"},[o("h3",null,"Perspectives"),o("ul",null,[o("li",null,"Vérifier le conditionnement par simulation CFD"),o("li",null,"Remplacer la PCA par une méthode paramétrique"),o("li",null,"Travailler directement sur les CAOs"),o("li",null,"Tester des méthodes par RL")])],-1),wO={__name:"23",setup(e){const t={};return Z(ee),(n,s)=>(E(),X(Fe,Re(Me(t)),{default:_e(()=>[yO,bO]),_:1},16))}},xO=te(wO,[["__file","/@slidev/slides/23.md"]]),EO=o("div",{class:"h-full w-full flex justify-center items-center"},[o("h1",null,"Annexes")],-1),SO={__name:"24",setup(e){const t={};return Z(ee),(n,s)=>(E(),X(Fe,Re(Me(t)),{default:_e(()=>[EO]),_:1},16))}},$O=te(SO,[["__file","/@slidev/slides/24.md"]]),PO="/projet-fin-etude/assets/graphvae_surface-1361cbd5.gif",CO="/projet-fin-etude/assets/graphvae_points-98280873.gif",OO=o("h2",null,"GraphVA
`,-1),DO={__name:"27",setup(e){const t={};return Z(ee),(n,s)=>(E(),X(Fe,Re(Me(t)),{default:_e(()=>[jO]),_:1},16))}},FO=te(DO,[["__file","/@slidev/slides/27.md"]]);const Xp=e=>(ed("data-v-0d97e068"),e=e(),td(),e),HO=Xp(()=>o("p",null,[o("embed",{src:"/projet-fin-etude/rapport.pdf",type:"application/pdf",width:"100%",height:"100%"})],-1)),qO=Xp(()=>o("p",null,[o("a",{href:"/projet-fin-etude/rapport.pdf",class:"absolute bottom-0 font-extralight mb-1 mr-2 right-0 text-xs"},"Link to PDF")],-1)),VO={__name:"28",setup(e){const t={};return Z(ee),(n,s)=>(E(),X(Fe,Re(Me(t)),{default:_e(()=>[HO,qO]),_:1},16))}},zO=te(VO,[["__scopeId","data-v-0d97e068"],["__file","/@slidev/slides/28.md"]]),BO=[{path:"1",name:"page-1",component:X$,meta:{theme:"academic",class:"text-white",coverAuthor:"Laurent Fainsin",coverBackgroundUrl:"https://git.fainsin.bzh/ENSEEIHT/projet-fin-etude-rapport/media/branch/master/assets/aube.jpg",coverBackgroundSource:"Safran Media Library",coverBackgroundSourceUrl:"https://medialibrary.safran-group.com/Photos/media/179440",coverDate:"2023-09-07",themeConfig:{paginationX:"r",paginationY:"t",paginationPagesDisabled:[1]},title:"Projet de fin d'étude",slide:{raw:`---
theme: academic
class: text-white
coverAuthor: Laurent Fainsin
coverBackgroundUrl: >-
https://git.fainsin.bzh/ENSEEIHT/projet-fin-etude-rapport/media/branch/master/assets/aube.jpg
coverBackgroundSource: Safran Media Library
coverBackgroundSourceUrl: https://medialibrary.safran-group.com/Photos/media/179440
coverDate: '2023-09-07'
themeConfig:
paginationX: r
paginationY: t
paginationPagesDisabled:
- 1
title: Projet de fin d'étude
---
<h2 class="opacity-50" style="font-size: 2rem;">Projet de Fin d'Étude</h2>
<h1 style="font-size: 2.4rem; line-height: normal;">Modèles génératifs pour la représentation latente d'aubes 3D sous forme de maillages non structurés</h1>
<!--
Hello, \\
aujourd'hui prez pfe, \\
dont sujet porte sur... \\
mon but aujourd'hui, expliquer ces 3 lignes
-->
`,title:"Projet de fin d'étude",content:`<h2 class="opacity-50" style="font-size: 2rem;">Projet de Fin d'Étude</h2>
<h1 style="font-size: 2.4rem; line-height: normal;">Modèles génératifs pour la représentation latente d'aubes 3D sous forme de maillages non structurés</h1>`,frontmatter:{theme:"academic",class:"text-white",coverAuthor:"Laurent Fainsin",coverBackgroundUrl:"https://git.fainsin.bzh/ENSEEIHT/projet-fin-etude-rapport/media/branch/master/assets/aube.jpg",coverBackgroundSource:"Safran Media Library",coverBackgroundSourceUrl:"https://medialibrary.safran-group.com/Photos/media/179440",coverDate:"2023-09-07",themeConfig:{paginationX:"r",paginationY:"t",paginationPagesDisabled:[1]},title:"Projet de fin d'étude"},note:`Hello, \\
aujourd'hui prez pfe, \\
dont sujet porte sur... \\
mon but aujourd'hui, expliquer ces 3 lignes`,index:0,start:0,end:28,noteHTML:`<p>Hello, <br>
aujourd'hui prez pfe, <br>
dont sujet porte sur... <br>
mon but aujourd'hui, expliquer ces 3 lignes</p>
`,filepath:"/home/laurent/Documents/Cours/ENSEEIHT/PFE/etude-biblio/slides/slides.md",id:0,no:1},__clicksElements:[],__preloaded:!1}},{path:"2",name:"page-2",component:rP,meta:{slide:{raw:`
## Sommaire
<div class="h-100 flex items-center text-2xl">
- Présentation de Safran
- Présentation du dataset
- Modèles génératifs
- Génération par diffusion
- Résultats
- Vérifications
- Conclusion
</div>
<!--
Petit sommaire pour cadrer prez
- Présentation brève de Safran et contexte Stage
- Présentation de mes données
- Présentation de modèles pour traiter le problème
- Résultats de ces modèles
- Vérification de ces modèles
- Conclu
-->
`,title:"Sommaire",level:2,content:`## Sommaire
<div class="h-100 flex items-center text-2xl">
- Présentation de Safran
- Présentation du dataset
- Modèles génératifs
- Génération par diffusion
- Résultats
- Vérifications
- Conclusion
</div>`,frontmatter:{},note:`Petit sommaire pour cadrer prez
- Présentation brève de Safran et contexte Stage
- Présentation de mes données
- Présentation de modèles pour traiter le problème
- Résultats de ces modèles
- Vérification de ces modèles
- Conclu`,index:1,start:29,end:55,noteHTML:`<p>Petit sommaire pour cadrer prez</p>
<ul>
<li>Présentation brève de Safran et contexte Stage</li>
<li>Présentation de mes données</li>
<li>Présentation de modèles pour traiter le problème</li>
<li>Résultats de ces modèles</li>
<li>Vérification de ces modèles</li>
<li>Conclu</li>
</ul>
`,filepath:"/home/laurent/Documents/Cours/ENSEEIHT/PFE/etude-biblio/slides/slides.md",id:1,no:2},__clicksElements:[],__preloaded:!1}},{path:"3",name:"page-3",component:fP,meta:{slide:{raw:`
## Présentation (rapide) de Safran
<div class="flex items-center h-full">
<figure>
<img src="/assets/SAF2012_0009786-1.jpg" class="h-81">
<figcaption class="text-center">CFM56-7B</figcaption>
</figure>
<figure>
<img src="/assets/SAF2013_0105143-1.jpg" class="h-81">
<figcaption class="text-center">M88</figcaption>
</figure>
</div>
<a href="https://medialibrary.safran-group.com/" class="absolute bottom-0 font-extralight mb-1 mr-2 right-0 text-xs">Safran Media Library</a>
<!--
Rapidement, Safran grand groupe industriel technologique français. \\
principalement aéronautique, mais pas que, \\
plein d'autre filiales, mais la thématique c'est les trucs qui volent. \\
safran génère des revenus majoritairement grâce vente de moteur propulsion avion civiles
- à gauche: cfm56 moteur civile le plus vendu au monde, depuis 1978
- à droite: m88, moteur militaire, équipe les rafales (Dassault)
- aussi des moteur helico...
-->
`,title:"Présentation (rapide) de Safran",level:2,content:`## Présentation (rapide) de Safran
<div class="flex items-center h-full">
<figure>
<img src="/assets/SAF2012_0009786-1.jpg" class="h-81">
<figcaption class="text-center">CFM56-7B</figcaption>
</figure>
<figure>
<img src="/assets/SAF2013_0105143-1.jpg" class="h-81">
<figcaption class="text-center">M88</figcaption>
</figure>
</div>
<a href="https://medialibrary.safran-group.com/" class="absolute bottom-0 font-extralight mb-1 mr-2 right-0 text-xs">Safran Media Library</a>`,frontmatter:{},note:`Rapidement, Safran grand groupe industriel technologique français. \\
principalement aéronautique, mais pas que, \\
plein d'autre filiales, mais la thématique c'est les trucs qui volent. \\
safran génère des revenus majoritairement grâce vente de moteur propulsion avion civiles
- à gauche: cfm56 moteur civile le plus vendu au monde, depuis 1978
- à droite: m88, moteur militaire, équipe les rafales (Dassault)
- aussi des moteur helico...`,index:2,start:56,end:84,noteHTML:`<p>Rapidement, Safran grand groupe industriel technologique français. <br>
principalement aéronautique, mais pas que, <br>
plein d'autre filiales, mais la thématique c'est les trucs qui volent. <br>
safran génère des revenus majoritairement grâce vente de moteur propulsion avion civiles</p>
<ul>
<li>à gauche: cfm56 moteur civile le plus vendu au monde, depuis 1978</li>
<li>à droite: m88, moteur militaire, équipe les rafales (Dassault)</li>
<li>aussi des moteur helico...</li>
</ul>
`,filepath:"/home/laurent/Documents/Cours/ENSEEIHT/PFE/etude-biblio/slides/slides.md",id:2,no:3},__clicksElements:[],__preloaded:!1}},{path:"4",name:"page-4",component:gP,meta:{slide:{raw:`
## Détails d'un moteur d'avion
<div class="flex items-center h-full">
<img src="https://avr-global.com/wp-content/uploads/2019/06/03-b-moteur-turbine-gaz-2-2.png" class="ml-20 h-full">
</div>
<a href="https://avr-global.com/aerospace/" class="absolute bottom-0 font-extralight mb-1 mr-2 right-0 text-xs">AV&R Global</a>
<!--
Lors de mon stage, \\
équipe de Safran Tech, \\
département recherche de Safran, \\
explore nouveaux procédés, nouvelles générations moteurs
Dans mon cas, \\
travaille amélioration processus génération, \\
aubes des turbines des compresseurs
-->
`,title:"Détails d'un moteur d'avion",level:2,content:`## Détails d'un moteur d'avion
<div class="flex items-center h-full">
<img src="https://avr-global.com/wp-content/uploads/2019/06/03-b-moteur-turbine-gaz-2-2.png" class="ml-20 h-full">
</div>
<a href="https://avr-global.com/aerospace/" class="absolute bottom-0 font-extralight mb-1 mr-2 right-0 text-xs">AV&R Global</a>`,frontmatter:{},note:`Lors de mon stage, \\
équipe de Safran Tech, \\
département recherche de Safran, \\
explore nouveaux procédés, nouvelles générations moteurs
Dans mon cas, \\
travaille amélioration processus génération, \\
aubes des turbines des compresseurs`,index:3,start:85,end:105,noteHTML:`<p>Lors de mon stage, <br>
équipe de Safran Tech, <br>
département recherche de Safran, <br>
explore nouveaux procédés, nouvelles générations moteurs</p>
<p>Dans mon cas, <br>
travaille amélioration processus génération, <br>
aubes des turbines des compresseurs</p>
`,filepath:"/home/laurent/Documents/Cours/ENSEEIHT/PFE/etude-biblio/slides/slides.md",id:3,no:4},__clicksElements:[],__preloaded:!1}},{path:"5",name:"page-5",component:xP,meta:{slide:{raw:`
## Dataset Rotor37_1200
<style scoped>
p {
margin-bottom: 0 !important;
}
</style>
<div class="flex items-center w-full h-110">
<div class="w-65">
1200 échantillons
- 1000 train (87%)
- 200 validation (13%)
Maillages
- 29773 nœuds
- 59328 triangles
- 89100 arêtes
Champs physiques
- Température
- Pression
- Énergie
- Densité
</div>
<div class="w-65">
40 paramètres de déformations
Input CFD
- Vitesse de rotation
- Vitesse du vent
Output CFD
- Input Massflow
- Output Massflow
- Compression Rate
- Isentropic efficiency
- Polytropic efficiency
</div>
<div class="flex items-center flex-col bg-black h-full w-60 ml-auto">
<img src="/assets/rotor37_surface.gif" class="m-auto h-full">
<img src="/assets/rotor37_points.gif" class="m-auto h-full">
</div>
</div>
<!--
Rotor37_1200, le dataset sur lequel j'ai principalement travaillé.
Donc travaille sur graphe/maillage, \\
mais connectivité "locales" (voisins proches dans l'espace) \\
donc utiliser seulement le nuage de points
Ça nous arrange, \\
car connectivité des maillages trop complexe (quadratique), \\
et techniques reconstruire surface from points
On aurait aussi pu travailler direct CAO (primitives), \\
mais bcp plus complexe car reprez pas unique via CAO, \\
et zero littérature.
-->
`,title:"Dataset Rotor37_1200",level:2,content:`## Dataset Rotor37_1200
<style scoped>
p {
margin-bottom: 0 !important;
}
</style>
<div class="flex items-center w-full h-110">
<div class="w-65">
1200 échantillons
- 1000 train (87%)
- 200 validation (13%)
Maillages
- 29773 nœuds
- 59328 triangles
- 89100 arêtes
Champs physiques
- Température
- Pression
- Énergie
- Densité
</div>
<div class="w-65">
40 paramètres de déformations
Input CFD
- Vitesse de rotation
- Vitesse du vent
Output CFD
- Input Massflow
- Output Massflow
- Compression Rate
- Isentropic efficiency
- Polytropic efficiency
</div>
<div class="flex items-center flex-col bg-black h-full w-60 ml-auto">
<img src="/assets/rotor37_surface.gif" class="m-auto h-full">
<img src="/assets/rotor37_points.gif" class="m-auto h-full">
</div>
</div>`,frontmatter:{},note:`Rotor37_1200, le dataset sur lequel j'ai principalement travaillé.
Donc travaille sur graphe/maillage, \\
mais connectivité "locales" (voisins proches dans l'espace) \\
donc utiliser seulement le nuage de points
Ça nous arrange, \\
car connectivité des maillages trop complexe (quadratique), \\
et techniques reconstruire surface from points
On aurait aussi pu travailler direct CAO (primitives), \\
mais bcp plus complexe car reprez pas unique via CAO, \\
et zero littérature.`,index:4,start:106,end:176,noteHTML:`<p>Rotor37_1200, le dataset sur lequel j'ai principalement travaillé.</p>
<p>Donc travaille sur graphe/maillage, <br>
mais connectivité &quot;locales&quot; (voisins proches dans l'espace) <br>
donc utiliser seulement le nuage de points</p>
<p>Ça nous arrange, <br>
car connectivité des maillages trop complexe (quadratique), <br>
et techniques reconstruire surface from points</p>
<p>On aurait aussi pu travailler direct CAO (primitives), <br>
mais bcp plus complexe car reprez pas unique via CAO, <br>
et zero littérature.</p>
`,filepath:"/home/laurent/Documents/Cours/ENSEEIHT/PFE/etude-biblio/slides/slides.md",id:4,no:5},__clicksElements:[],__preloaded:!1}},{path:"6",name:"page-6",component:PP,meta:{slide:{raw:`
## Problème direct
<img src="https://git.fainsin.bzh/ENSEEIHT/projet-fin-etude-rapport/media/branch/master/assets/online_adaptative_sampling_DOE.png" class="m-auto h-100 mt-10"/>
<!--
On veut c'est générer trucs ressemblent rotor37. \\
pour ça on peut appliquer le problème direct, \\
si on veut trouver aube qui respecte un certaine critère de perf, \\
"l'exploration d'un espace paramètre"
On prend CAO, \\
on échantillone, passer sous simu, \\
relèver les perfs, on optimise pour resampler, \\
repeat ad vitam eternam.
À la fin, on a normalement au moins une aube qui nous convient.
Inconvénient, \\
c'est long, à cause de la simu, \\
nous on voudrait avoir le processus inverse \\
(perf -> aube) pas (aube -> perf)
-->
`,title:"Problème direct",level:2,content:`## Problème direct
<img src="https://git.fainsin.bzh/ENSEEIHT/projet-fin-etude-rapport/media/branch/master/assets/online_adaptative_sampling_DOE.png" class="m-auto h-100 mt-10"/>`,frontmatter:{},note:`On veut c'est générer trucs ressemblent rotor37. \\
pour ça on peut appliquer le problème direct, \\
si on veut trouver aube qui respecte un certaine critère de perf, \\
"l'exploration d'un espace paramètre"
On prend CAO, \\
on échantillone, passer sous simu, \\
relèver les perfs, on optimise pour resampler, \\
repeat ad vitam eternam.
À la fin, on a normalement au moins une aube qui nous convient.
Inconvénient, \\
c'est long, à cause de la simu, \\
nous on voudrait avoir le processus inverse \\
(perf -> aube) pas (aube -> perf)`,index:5,start:177,end:201,noteHTML:`<p>On veut c'est générer trucs ressemblent rotor37. <br>
pour ça on peut appliquer le problème direct, <br>
si on veut trouver aube qui respecte un certaine critère de perf, <br>
&quot;l'exploration d'un espace paramètre&quot;</p>
<p>On prend CAO, <br>
on échantillone, passer sous simu, <br>
relèver les perfs, on optimise pour resampler, <br>
repeat ad vitam eternam.</p>
<p>À la fin, on a normalement au moins une aube qui nous convient.</p>
<p>Inconvénient, <br>
c'est long, à cause de la simu, <br>
nous on voudrait avoir le processus inverse <br>
(perf -&gt; aube) pas (aube -&gt; perf)</p>
`,filepath:"/home/laurent/Documents/Cours/ENSEEIHT/PFE/etude-biblio/slides/slides.md",id:5,no:6},__clicksElements:[],__preloaded:!1}},{path:"7",name:"page-7",component:MP,meta:{slide:{raw:`
## Problème inverse, Modèles génératifs
<img src="/assets/generative-overview.png" class="m-auto h-110"/>
<a href="https://lilianweng.github.io/posts/2021-07-11-diffusion-models/" class="absolute bottom-0 font-extralight mb-1 mr-2 right-0 text-xs">Lilian Weng, 2021</a>
<!--
Approximer le problème inverse, \\
solution, utiliser des réseaux de neurones, modèles génératifs.
Y'a globalement 4 grosses familles de modèles génératifs (gan, vae, nf, dm).
L'objectif de ces modèles se ressemblent un peu tous, \\
les trois premiers, on veut apprendre à génerer distrib x' qui ressemble très fortement à x.
Formelement pendant training on veut apprendre l'identité, \\
mais particularité dans leur archi, par exemple \\
VAE on passe par un goulot étranglement, espace latent, \\
GAN on a une architecture adversarial, etc. \\
NF on utilise des transfo continue reversible bijectives \\
y'a plusieurs avantages et inconvenients à chaque méthode.
Ce qui nous interesse le plus ici c'est diffusion, récent et potentiel. \\
le principe, trouver processus réversible discret stochastique \\
entre distrib données et une autre distrib qu'on connait parfaitement math
-->
`,title:"Problème inverse, Modèles génératifs",level:2,content:`## Problème inverse, Modèles génératifs
<img src="/assets/generative-overview.png" class="m-auto h-110"/>
<a href="https://lilianweng.github.io/posts/2021-07-11-diffusion-models/" class="absolute bottom-0 font-extralight mb-1 mr-2 right-0 text-xs">Lilian Weng, 2021</a>`,frontmatter:{},note:`Approximer le problème inverse, \\
solution, utiliser des réseaux de neurones, modèles génératifs.
Y'a globalement 4 grosses familles de modèles génératifs (gan, vae, nf, dm).
L'objectif de ces modèles se ressemblent un peu tous, \\
les trois premiers, on veut apprendre à génerer distrib x' qui ressemble très fortement à x.
Formelement pendant training on veut apprendre l'identité, \\
mais particularité dans leur archi, par exemple \\
VAE on passe par un goulot étranglement, espace latent, \\
GAN on a une architecture adversarial, etc. \\
NF on utilise des transfo continue reversible bijectives \\
y'a plusieurs avantages et inconvenients à chaque méthode.
Ce qui nous interesse le plus ici c'est diffusion, récent et potentiel. \\
le principe, trouver processus réversible discret stochastique \\
entre distrib données et une autre distrib qu'on connait parfaitement math`,index:6,start:202,end:230,noteHTML:`<p>Approximer le problème inverse, <br>
solution, utiliser des réseaux de neurones, modèles génératifs.</p>
<p>Y'a globalement 4 grosses familles de modèles génératifs (gan, vae, nf, dm).</p>
<p>L'objectif de ces modèles se ressemblent un peu tous, <br>
les trois premiers, on veut apprendre à génerer distrib x' qui ressemble très fortement à x.</p>
<p>Formelement pendant training on veut apprendre l'identité, <br>
mais particularité dans leur archi, par exemple <br>
VAE on passe par un goulot étranglement, espace latent, <br>
GAN on a une architecture adversarial, etc. <br>
NF on utilise des transfo continue reversible bijectives <br>
y'a plusieurs avantages et inconvenients à chaque méthode.</p>
<p>Ce qui nous interesse le plus ici c'est diffusion, récent et potentiel. <br>
le principe, trouver processus réversible discret stochastique <br>
entre distrib données et une autre distrib qu'on connait parfaitement math</p>
`,filepath:"/home/laurent/Documents/Cours/ENSEEIHT/PFE/etude-biblio/slides/slides.md",id:6,no:7},__clicksElements:[],__preloaded:!1}},{path:"8",name:"page-8",component:FP,meta:{slide:{raw:`
## Denoising Diffusion Probabilistic Model (DDPM)
<div class="flex flex-col items-center h-100">
<img src="/assets/ddpm_algo.png" class="m-auto w-9/10">
<img src="/assets/ddpm_example.png" class="m-auto w-full">
</div>
<p class="absolute bottom-0 font-extralight !my-0 mr-2 right-0 text-xs">
<a href="https://arxiv.org/abs/2006.11239">arxiv:2006.11239</a>,
<a href="https://cvpr2022-tutorial-diffusion-models.github.io/">CVPR 2022 Diffusion Tutorial</a>
</p>
<!--
Plusieurs méthodes pour faire dla diffusion, \\
la + simple d'entre elles c'est DDPM. \\
Le principe, apprendre mapping entre données et gaussienne isotropique.
Ce mapping apprendre via réseau débruiteur (denoising). \\
Pour se faire (algo 1), \\
on prend une de nos données (x0), \\
on la bruite (xt), \\
on la donne notre réseau, on récupère la prédiction (eps_theta), \\
on opti le réseau à prédire le bruit que l'on a ajouté (eps).
Convergence atteinte, \\
on est capable de débruiter des données.
Intéressant lorsqu'on part d'un bruit blanc (xT), \\
et que l'on demande quand même au réseau de débruiter. \\
Le réseau hallucine informations y'en a pas, \\
et génère finalement nouvelle donnée même distrib de celles qu'il a apprises. (algo 2)
-->
`,title:"Denoising Diffusion Probabilistic Model (DDPM)",level:2,content:`## Denoising Diffusion Probabilistic Model (DDPM)
<div class="flex flex-col items-center h-100">
<img src="/assets/ddpm_algo.png" class="m-auto w-9/10">
<img src="/assets/ddpm_example.png" class="m-auto w-full">
</div>
<p class="absolute bottom-0 font-extralight !my-0 mr-2 right-0 text-xs">
<a href="https://arxiv.org/abs/2006.11239">arxiv:2006.11239</a>,
<a href="https://cvpr2022-tutorial-diffusion-models.github.io/">CVPR 2022 Diffusion Tutorial</a>
</p>`,frontmatter:{},note:`Plusieurs méthodes pour faire dla diffusion, \\
la + simple d'entre elles c'est DDPM. \\
Le principe, apprendre mapping entre données et gaussienne isotropique.
Ce mapping apprendre via réseau débruiteur (denoising). \\
Pour se faire (algo 1), \\
on prend une de nos données (x0), \\
on la bruite (xt), \\
on la donne notre réseau, on récupère la prédiction (eps_theta), \\
on opti le réseau à prédire le bruit que l'on a ajouté (eps).
Convergence atteinte, \\
on est capable de débruiter des données.
Intéressant lorsqu'on part d'un bruit blanc (xT), \\
et que l'on demande quand même au réseau de débruiter. \\
Le réseau hallucine informations y'en a pas, \\
et génère finalement nouvelle donnée même distrib de celles qu'il a apprises. (algo 2)`,index:7,start:231,end:265,noteHTML:`<p>Plusieurs méthodes pour faire dla diffusion, <br>
la + simple d'entre elles c'est DDPM. <br>
Le principe, apprendre mapping entre données et gaussienne isotropique.</p>
<p>Ce mapping apprendre via réseau débruiteur (denoising). <br>
Pour se faire (algo 1), <br>
on prend une de nos données (x0), <br>
on la bruite (xt), <br>
on la donne notre réseau, on récupère la prédiction (eps_theta), <br>
on opti le réseau à prédire le bruit que l'on a ajouté (eps).</p>
<p>Convergence atteinte, <br>
on est capable de débruiter des données.</p>
<p>Intéressant lorsqu'on part d'un bruit blanc (xT), <br>
et que l'on demande quand même au réseau de débruiter. <br>
Le réseau hallucine informations y'en a pas, <br>
et génère finalement nouvelle donnée même distrib de celles qu'il a apprises. (algo 2)</p>
`,filepath:"/home/laurent/Documents/Cours/ENSEEIHT/PFE/etude-biblio/slides/slides.md",id:7,no:8},__clicksElements:[],__preloaded:!1}},{path:"9",name:"page-9",component:KP,meta:{slide:{raw:`
## Diffusion forward process
<div class="flex items-center h-100">
<figure>
<div class="flex items-center w-full bg-black">
<img src="/assets/aube_rotation.gif" class="m-auto w-full">
<img src="/assets/aube_forward_front.gif" class="m-auto w-full">
<img src="/assets/aube_forward_side.gif" class="m-auto w-full">
</div>
<figcaption class="text-center">Corruption progressive d'un échantillon, via un bruit gaussien (cf. algorithm 1)</figcaption>
</figure>
</div>
<!--
On peut l'appliquer à nos aubes,
example du forward process sur une aube 3D, \\
(subsample 2048 points et normalisé donc un peu applati), \\
à la fin on obtient truc qui ressemble à une gaussienne.
Ce genre de données input réseau capable traiter des pointcloud, \\
comme par exemple un réseau basés sur des KPConvs, \\
ou autre archi style PointNet, \\
ou PVCNN qui travaille sur reprez voxel des points, \\
(cf rapport).
-->
`,title:"Diffusion forward process",level:2,content:`## Diffusion forward process
<div class="flex items-center h-100">
<figure>
<div class="flex items-center w-full bg-black">
<img src="/assets/aube_rotation.gif" class="m-auto w-full">
<img src="/assets/aube_forward_front.gif" class="m-auto w-full">
<img src="/assets/aube_forward_side.gif" class="m-auto w-full">
</div>
<figcaption class="text-center">Corruption progressive d'un échantillon, via un bruit gaussien (cf. algorithm 1)</figcaption>
</figure>
</div>`,frontmatter:{},note:`On peut l'appliquer à nos aubes,
example du forward process sur une aube 3D, \\
(subsample 2048 points et normalisé donc un peu applati), \\
à la fin on obtient truc qui ressemble à une gaussienne.
Ce genre de données input réseau capable traiter des pointcloud, \\
comme par exemple un réseau basés sur des KPConvs, \\
ou autre archi style PointNet, \\
ou PVCNN qui travaille sur reprez voxel des points, \\
(cf rapport).`,index:8,start:266,end:293,noteHTML:`<p>On peut l'appliquer à nos aubes,
example du forward process sur une aube 3D, <br>
(subsample 2048 points et normalisé donc un peu applati), <br>
à la fin on obtient truc qui ressemble à une gaussienne.</p>
<p>Ce genre de données input réseau capable traiter des pointcloud, <br>
comme par exemple un réseau basés sur des KPConvs, <br>
ou autre archi style PointNet, <br>
ou PVCNN qui travaille sur reprez voxel des points, <br>
(cf rapport).</p>
`,filepath:"/home/laurent/Documents/Cours/ENSEEIHT/PFE/etude-biblio/slides/slides.md",id:8,no:9},__clicksElements:[],__preloaded:!1}},{path:"10",name:"page-10",component:QP,meta:{slide:{raw:`
## Diffusion reverse process
<div class="flex items-center h-100">
<figure>
<div class="flex items-center w-full bg-black">
<img src="/assets/sample_rotation.gif" class="m-auto w-full">
<img src="/assets/sample_reverse_front.gif" class="m-auto w-full">
<img src="/assets/sample_reverse_side.gif" class="m-auto w-full">
</div>
<figcaption class="text-center">Débruitage itératif d'un nuage gaussien (cf. algorithm 2)</figcaption>
</figure>
</div>
<!--
Si on effectue le reverse process, \\
nuage de point gaussien ressemble progressivement à une aube.
Le résultat (kp-fcnn) est pas mal, \\
mais reste une bonne quantité de bruit, \\
(bonne chance reconstruction surface), \\
surement améliorable hyperparmètres, \\
mais meilleurs méthodes depuis 2020.
-->
`,title:"Diffusion reverse process",level:2,content:`## Diffusion reverse process
<div class="flex items-center h-100">
<figure>
<div class="flex items-center w-full bg-black">
<img src="/assets/sample_rotation.gif" class="m-auto w-full">
<img src="/assets/sample_reverse_front.gif" class="m-auto w-full">
<img src="/assets/sample_reverse_side.gif" class="m-auto w-full">
</div>
<figcaption class="text-center">Débruitage itératif d'un nuage gaussien (cf. algorithm 2)</figcaption>
</figure>
</div>`,frontmatter:{},note:`Si on effectue le reverse process, \\
nuage de point gaussien ressemble progressivement à une aube.
Le résultat (kp-fcnn) est pas mal, \\
mais reste une bonne quantité de bruit, \\
(bonne chance reconstruction surface), \\
surement améliorable hyperparmètres, \\
mais meilleurs méthodes depuis 2020.`,index:9,start:294,end:319,noteHTML:`<p>Si on effectue le reverse process, <br>
nuage de point gaussien ressemble progressivement à une aube.</p>
<p>Le résultat (kp-fcnn) est pas mal, <br>
mais reste une bonne quantité de bruit, <br>
(bonne chance reconstruction surface), <br>
surement améliorable hyperparmètres, <br>
mais meilleurs méthodes depuis 2020.</p>
`,filepath:"/home/laurent/Documents/Cours/ENSEEIHT/PFE/etude-biblio/slides/slides.md",id:9,no:10},__clicksElements:[],__preloaded:!1}},{path:"11",name:"page-11",component:iC,meta:{slide:{raw:`
## Latent Diffusion Model (LDM)
<div class="flex items-center w-full h-full flex-col justify-evenly">
<div class="flex items-center w-full h-72 justify-evenly">
<figure>
<img src="https://ar5iv.labs.arxiv.org/html/2112.10752/assets/img/generativevscompressive4.jpg" class="m-auto h-70">
</figure>
<div>
$\\displaystyle x_0 \\approx \\hat{x}_0 = \\frac{ x_t - \\sqrt{1 - \\overline\\alpha_t} \\epsilon_\\theta(x_t) }{ \\sqrt{\\overline\\alpha_t} }$
$\\displaystyle \\text{RMSE} = \\sqrt{ \\frac{ \\| x_0 - \\hat{x}_0 \\|^2_2 }{ D } }$
$$\\begin{align*}
\\text{Rate} &= \\frac{1}{2 \\sigma^2_q(t)} \\frac{ \\overline\\alpha_{t-1} ( 1 - \\alpha_t )^2 }{ (1 - \\overline\\alpha_t)^2 } \\| x_0 - \\hat{x}_0 \\|^2_2 \\\\
&= \\text{D}_{\\text{KL}} \\left[ q(x_{t-1} | x_t, x_0) \\| p_\\theta(x_{t-1} | x_t) \\right]
\\end{align*}$$
</div>
</div>
<figure>
<img src="/assets/ldm-simplified.png" class="w-160">
<figcaption class="text-center">Nouvelle pipeline, ajout d'une transformation en amont</figcaption>
</figure>
</div>
<a href="https://arxiv.org/abs/2112.10752" class="absolute bottom-0 font-extralight mb-1 mr-2 right-0 text-xs">arxiv:2112.10752</a>
<!--
Présentation des LDM qui permettent de traiter plus efficacement nos données.
Part du constat que si l'on trace pour t, \\
l'erreur de reconstruction (RMSE, distortion) en fonction de t, \\
(on prend x_0, on le bruite x_t, on prédit x_0_hat, pour chaque t), \\
le Rate (issue de l'ELBO, une KLD) en fonction de t, \\
(KLD=#bits nécéssaire pour passer de P à Q), \\
on combine les deux pour avoir distortion en fonction de rate. \\
On observe qu'on a deux domaine dans le processus de diffusion, \\
un domaine nécéssite bcp de bits et encode peu de distortion, \\
l'autre inverse, peu bits, bcp de distortion, \\
donc un peu du gachi de réseau neurone le perceptuel, \\
on aimerait travailler uniquement sur la partie semantique. \\
On peut le faire si trouve espace alternatif aux données, \\
Espace latent sont une possibilité, \\
utilisation, par ex, d'autoencoder, qui s'occuper du perceptuel, \\
la diffusion préoccupe que du semantic. \\
Ça revient à modifier la pipeline de diffusion comme suit:
avantage, latent space plus petit, donc modèle plus petit, simple, rapide...
-->
`,title:"Latent Diffusion Model (LDM)",level:2,content:`## Latent Diffusion Model (LDM)
<div class="flex items-center w-full h-full flex-col justify-evenly">
<div class="flex items-center w-full h-72 justify-evenly">
<figure>
<img src="https://ar5iv.labs.arxiv.org/html/2112.10752/assets/img/generativevscompressive4.jpg" class="m-auto h-70">
</figure>
<div>
$\\displaystyle x_0 \\approx \\hat{x}_0 = \\frac{ x_t - \\sqrt{1 - \\overline\\alpha_t} \\epsilon_\\theta(x_t) }{ \\sqrt{\\overline\\alpha_t} }$
$\\displaystyle \\text{RMSE} = \\sqrt{ \\frac{ \\| x_0 - \\hat{x}_0 \\|^2_2 }{ D } }$
$$\\begin{align*}
\\text{Rate} &= \\frac{1}{2 \\sigma^2_q(t)} \\frac{ \\overline\\alpha_{t-1} ( 1 - \\alpha_t )^2 }{ (1 - \\overline\\alpha_t)^2 } \\| x_0 - \\hat{x}_0 \\|^2_2 \\\\
&= \\text{D}_{\\text{KL}} \\left[ q(x_{t-1} | x_t, x_0) \\| p_\\theta(x_{t-1} | x_t) \\right]
\\end{align*}$$
</div>
</div>
<figure>
<img src="/assets/ldm-simplified.png" class="w-160">
<figcaption class="text-center">Nouvelle pipeline, ajout d'une transformation en amont</figcaption>
</figure>
</div>
<a href="https://arxiv.org/abs/2112.10752" class="absolute bottom-0 font-extralight mb-1 mr-2 right-0 text-xs">arxiv:2112.10752</a>`,frontmatter:{},note:`Présentation des LDM qui permettent de traiter plus efficacement nos données.
Part du constat que si l'on trace pour t, \\
l'erreur de reconstruction (RMSE, distortion) en fonction de t, \\
(on prend x_0, on le bruite x_t, on prédit x_0_hat, pour chaque t), \\
le Rate (issue de l'ELBO, une KLD) en fonction de t, \\
(KLD=#bits nécéssaire pour passer de P à Q), \\
on combine les deux pour avoir distortion en fonction de rate. \\
On observe qu'on a deux domaine dans le processus de diffusion, \\
un domaine nécéssite bcp de bits et encode peu de distortion, \\
l'autre inverse, peu bits, bcp de distortion, \\
donc un peu du gachi de réseau neurone le perceptuel, \\
on aimerait travailler uniquement sur la partie semantique. \\
On peut le faire si trouve espace alternatif aux données, \\
Espace latent sont une possibilité, \\
utilisation, par ex, d'autoencoder, qui s'occuper du perceptuel, \\
la diffusion préoccupe que du semantic. \\
Ça revient à modifier la pipeline de diffusion comme suit:
avantage, latent space plus petit, donc modèle plus petit, simple, rapide...`,index:10,start:320,end:380,noteHTML:`<p>Présentation des LDM qui permettent de traiter plus efficacement nos données.</p>
<p>Part du constat que si l'on trace pour t, <br>
l'erreur de reconstruction (RMSE, distortion) en fonction de t, <br>
(on prend x_0, on le bruite x_t, on prédit x_0_hat, pour chaque t), <br>
le Rate (issue de l'ELBO, une KLD) en fonction de t, <br>
(KLD=#bits nécéssaire pour passer de P à Q), <br>
on combine les deux pour avoir distortion en fonction de rate. \\</p>
<p>On observe qu'on a deux domaine dans le processus de diffusion, <br>
un domaine nécéssite bcp de bits et encode peu de distortion, <br>
l'autre inverse, peu bits, bcp de distortion, <br>
donc un peu du gachi de réseau neurone le perceptuel, <br>
on aimerait travailler uniquement sur la partie semantique. \\</p>
<p>On peut le faire si trouve espace alternatif aux données, <br>
Espace latent sont une possibilité, <br>
utilisation, par ex, d'autoencoder, qui s'occuper du perceptuel, <br>
la diffusion préoccupe que du semantic. \\</p>
<p>Ça revient à modifier la pipeline de diffusion comme suit:</p>
<p>avantage, latent space plus petit, donc modèle plus petit, simple, rapide...</p>
`,filepath:"/home/laurent/Documents/Cours/ENSEEIHT/PFE/etude-biblio/slides/slides.md",id:10,no:11},__clicksElements:[],__preloaded:!1}},{path:"12",name:"page-12",component:gC,meta:{slide:{raw:`
## Générations par diffusion latente (non conditionnée)
<div class="grid grid-cols-4 col-auto self-center justify-items-center w-full h-100 bg-black">
<img src="/assets/gen_points_1.gif" class="w-50">
<img src="/assets/gen_points_2.gif" class="w-50">
<img src="/assets/gen_points_3.gif" class="w-50">
<img src="/assets/gen_points_4.gif" class="w-50">
<img src="/assets/gen_points_5.gif" class="w-50">
<img src="/assets/gen_points_6.gif" class="w-50">
<img src="/assets/gen_points_7.gif" class="w-50">
<img src="/assets/gen_surface_1.gif" class="w-50">
</div>
<!--
Si on applique nos diffusion latente via une PCA, \\
on obtient ceci.
Nuages de point de très bonne qualité, \\
on a plus le bruit qu'on avait avec KP-FCNN, \\
bonus PCA, même ordre des points, on peut copier connectivité aube nominale, \\
pas besoin méthode reconstruction dans ce cas.
-->
`,title:"Générations par diffusion latente (non conditionnée)",level:2,content:`## Générations par diffusion latente (non conditionnée)
<div class="grid grid-cols-4 col-auto self-center justify-items-center w-full h-100 bg-black">
<img src="/assets/gen_points_1.gif" class="w-50">
<img src="/assets/gen_points_2.gif" class="w-50">
<img src="/assets/gen_points_3.gif" class="w-50">
<img src="/assets/gen_points_4.gif" class="w-50">
<img src="/assets/gen_points_5.gif" class="w-50">
<img src="/assets/gen_points_6.gif" class="w-50">
<img src="/assets/gen_points_7.gif" class="w-50">
<img src="/assets/gen_surface_1.gif" class="w-50">
</div>`,frontmatter:{},note:`Si on applique nos diffusion latente via une PCA, \\
on obtient ceci.
Nuages de point de très bonne qualité, \\
on a plus le bruit qu'on avait avec KP-FCNN, \\
bonus PCA, même ordre des points, on peut copier connectivité aube nominale, \\
pas besoin méthode reconstruction dans ce cas.`,index:11,start:381,end:405,noteHTML:`<p>Si on applique nos diffusion latente via une PCA, <br>
on obtient ceci.</p>
<p>Nuages de point de très bonne qualité, <br>
on a plus le bruit qu'on avait avec KP-FCNN, <br>
bonus PCA, même ordre des points, on peut copier connectivité aube nominale, <br>
pas besoin méthode reconstruction dans ce cas.</p>
`,filepath:"/home/laurent/Documents/Cours/ENSEEIHT/PFE/etude-biblio/slides/slides.md",id:11,no:12},__clicksElements:[],__preloaded:!1}},{path:"13",name:"page-13",component:xC,meta:{slide:{raw:`
## Classifier-free Guidance (CFG)
<img src="https://perceptron.blog/assets/images/diffusion_models/diffusion_gradients_free.gif" class="m-auto h-55">
<img src="https://perceptron.blog/assets/images/diffusion_models/diffusion_free_guided_results.gif" class="m-auto h-55">
<a href="https://perceptron.blog/defusing-diffusion/" class="absolute bottom-0 font-extralight mb-1 mr-2 right-0 text-xs">Paweł Pierzchlewicz</a>
<!--
Jusqu'à présent, avec tout ce que j'ai dit, \\
capable de générer des données ressemble certaine densité proba. \\
(non conditionné)
Cependant on veut générer données ressemblent densité proba jointe avec classe. \\
(conditionné).
Il existe plusieurs méthode pour faire cela, \\
l'un d'entre elle etant cfg.
Principe entrainer notre réseau diffusion conjointement, \\
prédiction non conditionnée et conditionnée.
On complexifie un peu plus l'apprentissage, \\
mais sampling pouvoir choisir quel densité de proba on veut gen.
On pourrait très bien entrainer un modèle par classe, \\
mais c'est long et en plus nous on a pas de classes discète, \\
on fait tout en même temps...
-->
`,title:"Classifier-free Guidance (CFG)",level:2,content:`## Classifier-free Guidance (CFG)
<img src="https://perceptron.blog/assets/images/diffusion_models/diffusion_gradients_free.gif" class="m-auto h-55">
<img src="https://perceptron.blog/assets/images/diffusion_models/diffusion_free_guided_results.gif" class="m-auto h-55">
<a href="https://perceptron.blog/defusing-diffusion/" class="absolute bottom-0 font-extralight mb-1 mr-2 right-0 text-xs">Paweł Pierzchlewicz</a>`,frontmatter:{},note:`Jusqu'à présent, avec tout ce que j'ai dit, \\
capable de générer des données ressemble certaine densité proba. \\
(non conditionné)
Cependant on veut générer données ressemblent densité proba jointe avec classe. \\
(conditionné).
Il existe plusieurs méthode pour faire cela, \\
l'un d'entre elle etant cfg.
Principe entrainer notre réseau diffusion conjointement, \\
prédiction non conditionnée et conditionnée.
On complexifie un peu plus l'apprentissage, \\
mais sampling pouvoir choisir quel densité de proba on veut gen.
On pourrait très bien entrainer un modèle par classe, \\
mais c'est long et en plus nous on a pas de classes discète, \\
on fait tout en même temps...`,index:12,start:406,end:436,noteHTML:`<p>Jusqu'à présent, avec tout ce que j'ai dit, <br>
capable de générer des données ressemble certaine densité proba. <br>
(non conditionné)</p>
<p>Cependant on veut générer données ressemblent densité proba jointe avec classe. <br>
(conditionné).</p>
<p>Il existe plusieurs méthode pour faire cela, <br>
l'un d'entre elle etant cfg.</p>
<p>Principe entrainer notre réseau diffusion conjointement, <br>
prédiction non conditionnée et conditionnée.</p>
<p>On complexifie un peu plus l'apprentissage, <br>
mais sampling pouvoir choisir quel densité de proba on veut gen.</p>
<p>On pourrait très bien entrainer un modèle par classe, <br>
mais c'est long et en plus nous on a pas de classes discète, <br>
on fait tout en même temps...</p>
`,filepath:"/home/laurent/Documents/Cours/ENSEEIHT/PFE/etude-biblio/slides/slides.md",id:12,no:13},__clicksElements:[],__preloaded:!1}},{path:"14",name:"page-14",component:IC,meta:{slide:{raw:`
## Générations par diffusion latente (conditionnée)
<div class="grid grid-cols-4 col-auto self-center justify-items-center w-full h-100 bg-black">
<img src="/assets/gen_surface_1.gif" class="w-50">
<img src="/assets/gen_surface_2.gif" class="w-50">
<img src="/assets/gen_surface_3.gif" class="w-50">
<img src="/assets/gen_surface_4.gif" class="w-50">
<img src="/assets/gen_surface_5.gif" class="w-50">
<img src="/assets/gen_surface_6.gif" class="w-50">
<img src="/assets/gen_surface_7.gif" class="w-50">
<img src="/assets/gen_surface_8.gif" class="w-50">
</div>
<!--
Si on fait génération conditionné, ça marche encore.
Problème, \\
incapable visuellement différence entre aubes conditionné, \\
par exemple toutes conditonnés même critère physqiue, \\
et ça se voit pas trop.
Une solution ça serait simu cfd, mais trop long, \\
donc on va utiliser des modèles de regression, plus légers et rapides.
-->
`,title:"Générations par diffusion latente (conditionnée)",level:2,content:`## Générations par diffusion latente (conditionnée)
<div class="grid grid-cols-4 col-auto self-center justify-items-center w-full h-100 bg-black">
<img src="/assets/gen_surface_1.gif" class="w-50">
<img src="/assets/gen_surface_2.gif" class="w-50">
<img src="/assets/gen_surface_3.gif" class="w-50">
<img src="/assets/gen_surface_4.gif" class="w-50">
<img src="/assets/gen_surface_5.gif" class="w-50">
<img src="/assets/gen_surface_6.gif" class="w-50">
<img src="/assets/gen_surface_7.gif" class="w-50">
<img src="/assets/gen_surface_8.gif" class="w-50">
</div>`,frontmatter:{},note:`Si on fait génération conditionné, ça marche encore.
Problème, \\
incapable visuellement différence entre aubes conditionné, \\
par exemple toutes conditonnés même critère physqiue, \\
et ça se voit pas trop.
Une solution ça serait simu cfd, mais trop long, \\
donc on va utiliser des modèles de regression, plus légers et rapides.`,index:13,start:437,end:463,noteHTML:`<p>Si on fait génération conditionné, ça marche encore.</p>
<p>Problème, <br>
incapable visuellement différence entre aubes conditionné, <br>
par exemple toutes conditonnés même critère physqiue, <br>
et ça se voit pas trop.</p>
<p>Une solution ça serait simu cfd, mais trop long, <br>
donc on va utiliser des modèles de regression, plus légers et rapides.</p>
`,filepath:"/home/laurent/Documents/Cours/ENSEEIHT/PFE/etude-biblio/slides/slides.md",id:13,no:14},__clicksElements:[],__preloaded:!1}},{path:"15",name:"page-15",component:DC,meta:{slide:{raw:`
## Gaussian Process (GP)
<div class="flex items-center h-100" style="overflow: hidden;">
<div style="overflow: hidden;">
<iframe scrolling="no" style="height: 50rem; margin-top: -18rem; width: 75rem; margin-left: -10rem;" src="https://distill.pub/2019/visual-exploration-gaussian-processes/">
</iframe>
</div>
</div>
<a href="https://distill.pub/2019/visual-exploration-gaussian-processes/" class="absolute bottom-0 font-extralight mb-1 mr-2 right-0 text-xs">Distill</a>
<!--
On pourrait entrainer un réseau de neurones pour faire regression entre nuage de points et critère de perf. Mais y'a plus simples.
Les GP c'est des méthodes à noyau, probabilistiques.
* supervisé, au même sens que SVM, K-NN, ...
* non paramétrique (techniquement hyper-paramétrique, à cause noyau).
* fournir des intervals de confiance
-->
`,title:"Gaussian Process (GP)",level:2,content:`## Gaussian Process (GP)
<div class="flex items-center h-100" style="overflow: hidden;">
<div style="overflow: hidden;">
<iframe scrolling="no" style="height: 50rem; margin-top: -18rem; width: 75rem; margin-left: -10rem;" src="https://distill.pub/2019/visual-exploration-gaussian-processes/">
</iframe>
</div>
</div>
<a href="https://distill.pub/2019/visual-exploration-gaussian-processes/" class="absolute bottom-0 font-extralight mb-1 mr-2 right-0 text-xs">Distill</a>`,frontmatter:{},note:`On pourrait entrainer un réseau de neurones pour faire regression entre nuage de points et critère de perf. Mais y'a plus simples.
Les GP c'est des méthodes à noyau, probabilistiques.
* supervisé, au même sens que SVM, K-NN, ...
* non paramétrique (techniquement hyper-paramétrique, à cause noyau).
* fournir des intervals de confiance`,index:14,start:464,end:485,noteHTML:`<p>On pourrait entrainer un réseau de neurones pour faire regression entre nuage de points et critère de perf. Mais y'a plus simples.</p>
<p>Les GP c'est des méthodes à noyau, probabilistiques.</p>
<ul>
<li>supervisé, au même sens que SVM, K-NN, ...</li>
<li>non paramétrique (techniquement hyper-paramétrique, à cause noyau).</li>
<li>fournir des intervals de confiance</li>
</ul>
`,filepath:"/home/laurent/Documents/Cours/ENSEEIHT/PFE/etude-biblio/slides/slides.md",id:14,no:15},__clicksElements:[],__preloaded:!1}},{path:"16",name:"page-16",component:zC,meta:{slide:{raw:`
## "Entrainement" d'un GP sur Rotor37_1200
<div class="flex flex-col items-center h-100">
<img src="/assets/gp_train_30_pca.png" class="m-auto w-full">
</div>
<!--
Donc on peut utiliser des GPs pour relation modes pca et perfs.
On s'assure juste que leurs prédictions sont correctes par rapport à des données de test, ici coeff détermination ~= 1 donc correct.
-->
`,title:`"Entrainement" d'un GP sur Rotor37_1200`,level:2,content:`## "Entrainement" d'un GP sur Rotor37_1200
<div class="flex flex-col items-center h-100">
<img src="/assets/gp_train_30_pca.png" class="m-auto w-full">
</div>`,frontmatter:{},note:`Donc on peut utiliser des GPs pour relation modes pca et perfs.
On s'assure juste que leurs prédictions sont correctes par rapport à des données de test, ici coeff détermination ~= 1 donc correct.`,index:15,start:486,end:499,noteHTML:`<p>Donc on peut utiliser des GPs pour relation modes pca et perfs.</p>
<p>On s'assure juste que leurs prédictions sont correctes par rapport à des données de test, ici coeff détermination ~= 1 donc correct.</p>
`,filepath:"/home/laurent/Documents/Cours/ENSEEIHT/PFE/etude-biblio/slides/slides.md",id:15,no:16},__clicksElements:[],__preloaded:!1}},{path:"17",name:"page-17",component:GC,meta:{slide:{raw:`
## Analyse de générations non conditionnées
<div class="flex flex-col items-center h-100">
<img src="/assets/gp_unconditional.png" class="m-auto w-full">
</div>
`,title:"Analyse de générations non conditionnées",level:2,content:`## Analyse de générations non conditionnées
<div class="flex flex-col items-center h-100">
<img src="/assets/gp_unconditional.png" class="m-auto w-full">
</div>`,frontmatter:{},index:16,start:500,end:507,noteHTML:"",filepath:"/home/laurent/Documents/Cours/ENSEEIHT/PFE/etude-biblio/slides/slides.md",id:16,no:17},__clicksElements:[],__preloaded:!1}},{path:"18",name:"page-18",component:QC,meta:{slide:{raw:`
## Analyse de générations progressivement conditionnées
<div class="flex flex-col items-center h-100">
<img src="/assets/gp_guidance.gif" class="m-auto w-full">
</div>
<!--
je fais varier gamma entre 0 et 1.
conditionné sur out_massflow = -1
-->
`,title:"Analyse de générations progressivement conditionnées",level:2,content:`## Analyse de générations progressivement conditionnées
<div class="flex flex-col items-center h-100">
<img src="/assets/gp_guidance.gif" class="m-auto w-full">
</div>`,frontmatter:{},note:`je fais varier gamma entre 0 et 1.
conditionné sur out_massflow = -1`,index:17,start:508,end:521,noteHTML:`<p>je fais varier gamma entre 0 et 1.</p>
<p>conditionné sur out_massflow = -1</p>
`,filepath:"/home/laurent/Documents/Cours/ENSEEIHT/PFE/etude-biblio/slides/slides.md",id:17,no:18},__clicksElements:[],__preloaded:!1}},{path:"19",name:"page-19",component:rO,meta:{slide:{raw:`
## Analyse de générations conditionnées (massflow)
<div class="flex flex-col items-center h-100">
<img src="/assets/gp_massflow.gif" class="m-auto w-full">
</div>
<!--
on fait varier entre -3 et 3.
gamma = 2.5.
ça suit bien le conditionnement, \\
sur les bords ça déconne un peu, pas très grave, \\
mais ça doit venir du GP qui ne généralise pas la regression, \\
car génération correctes visuellement, \\
il faudrait verif avec une CFD .
correlation avec in_massflow et compression_rate, \\
normal car correlé physiquement.
-->
`,title:"Analyse de générations conditionnées (massflow)",level:2,content:`## Analyse de générations conditionnées (massflow)
<div class="flex flex-col items-center h-100">
<img src="/assets/gp_massflow.gif" class="m-auto w-full">
</div>`,frontmatter:{},note:`on fait varier entre -3 et 3.
gamma = 2.5.
ça suit bien le conditionnement, \\
sur les bords ça déconne un peu, pas très grave, \\
mais ça doit venir du GP qui ne généralise pas la regression, \\
car génération correctes visuellement, \\
il faudrait verif avec une CFD .
correlation avec in_massflow et compression_rate, \\
normal car correlé physiquement.`,index:18,start:522,end:544,noteHTML:`<p>on fait varier entre -3 et 3.</p>
<p>gamma = 2.5.</p>
<p>ça suit bien le conditionnement, <br>
sur les bords ça déconne un peu, pas très grave, <br>
mais ça doit venir du GP qui ne généralise pas la regression, <br>
car génération correctes visuellement, <br>
il faudrait verif avec une CFD .</p>
<p>correlation avec in_massflow et compression_rate, <br>
normal car correlé physiquement.</p>
`,filepath:"/home/laurent/Documents/Cours/ENSEEIHT/PFE/etude-biblio/slides/slides.md",id:18,no:19},__clicksElements:[],__preloaded:!1}},{path:"20",name:"page-20",component:cO,meta:{slide:{raw:`
## Analyse de générations conditionnées (efficiency)
<div class="flex flex-col items-center h-100">
<img src="/assets/gp_efficiency.gif" class="m-auto w-full">
</div>
<!--
pareil, mais pour l'efficiency
-->
`,title:"Analyse de générations conditionnées (efficiency)",level:2,content:`## Analyse de générations conditionnées (efficiency)
<div class="flex flex-col items-center h-100">
<img src="/assets/gp_efficiency.gif" class="m-auto w-full">
</div>`,frontmatter:{},note:"pareil, mais pour l'efficiency",index:19,start:545,end:556,noteHTML:`<p>pareil, mais pour l'efficiency</p>
`,filepath:"/home/laurent/Documents/Cours/ENSEEIHT/PFE/etude-biblio/slides/slides.md",id:19,no:20},__clicksElements:[],__preloaded:!1}},{path:"21",name:"page-21",component:mO,meta:{slide:{raw:`
## Analyse de générations conditionnées (double)
<div class="flex flex-col items-center h-100">
<img src="/assets/gp_double.gif" class="m-auto w-full">
</div>
<!--
pareil, mais on conditionne \\
efficiency = 1 \\
massflow = [-3, 3]
-->
`,title:"Analyse de générations conditionnées (double)",level:2,content:`## Analyse de générations conditionnées (double)
<div class="flex flex-col items-center h-100">
<img src="/assets/gp_double.gif" class="m-auto w-full">
</div>`,frontmatter:{},note:`pareil, mais là on conditionne \\
efficiency = 1 \\
massflow = [-3, 3]`,index:20,start:557,end:570,noteHTML:`<p>pareil, mais on conditionne <br>
efficiency = 1 <br>
massflow = [-3, 3]</p>
`,filepath:"/home/laurent/Documents/Cours/ENSEEIHT/PFE/etude-biblio/slides/slides.md",id:20,no:21},__clicksElements:[],__preloaded:!1}},{path:"22",name:"page-22",component:_O,meta:{slide:{raw:`
## Conclusion
<div class="h-100 flex flex-col text-2xl justify-center">
### Travail réalisé
- Génération conditionnée d'aubes par diffusion
- Release d'un code réutilisable en interne
- Rédaction d'une déclaration d'invention
</div>
`,title:"Conclusion",level:2,content:`## Conclusion
<div class="h-100 flex flex-col text-2xl justify-center">
### Travail réalisé
- Génération conditionnée d'aubes par diffusion
- Release d'un code réutilisable en interne
- Rédaction d'une déclaration d'invention
</div>`,frontmatter:{},index:21,start:571,end:584,noteHTML:"",filepath:"/home/laurent/Documents/Cours/ENSEEIHT/PFE/etude-biblio/slides/slides.md",id:21,no:22},__clicksElements:[],__preloaded:!1}},{path:"23",name:"page-23",component:xO,meta:{slide:{raw:`
## Conclusion
<div class="h-100 flex flex-col text-2xl justify-center">
### Perspectives
- Vérifier le conditionnement par simulation CFD
- Remplacer la PCA par une méthode paramétrique
- Travailler directement sur les CAOs
- Tester des méthodes par RL
</div>
`,title:"Conclusion",level:2,content:`## Conclusion
<div class="h-100 flex flex-col text-2xl justify-center">
### Perspectives
- Vérifier le conditionnement par simulation CFD
- Remplacer la PCA par une méthode paramétrique
- Travailler directement sur les CAOs
- Tester des méthodes par RL
</div>`,frontmatter:{},index:22,start:585,end:599,noteHTML:"",filepath:"/home/laurent/Documents/Cours/ENSEEIHT/PFE/etude-biblio/slides/slides.md",id:22,no:23},__clicksElements:[],__preloaded:!1}},{path:"24",name:"page-24",component:$O,meta:{slide:{raw:`
<div class="h-full w-full flex justify-center items-center">
# Annexes
</div>
`,title:"Annexes",level:1,content:`<div class="h-full w-full flex justify-center items-center">
# Annexes
</div>`,frontmatter:{},index:23,start:600,end:607,noteHTML:"",filepath:"/home/laurent/Documents/Cours/ENSEEIHT/PFE/etude-biblio/slides/slides.md",id:23,no:24},__clicksElements:[],__preloaded:!1}},{path:"25",name:"page-25",component:AO,meta:{slide:{raw:`
## GraphVAE
<div class="flex items-center w-full bg-black">
<img src="/assets/graphvae_surface.gif" class="m-auto w-full">
<img src="/assets/graphvae_points.gif" class="m-auto w-full">
</div>
`,title:"GraphVAE",level:2,content:`## GraphVAE
<div class="flex items-center w-full bg-black">
<img src="/assets/graphvae_surface.gif" class="m-auto w-full">
<img src="/assets/graphvae_points.gif" class="m-auto w-full">
</div>`,frontmatter:{},index:24,start:608,end:616,noteHTML:"",filepath:"/home/laurent/Documents/Cours/ENSEEIHT/PFE/etude-biblio/slides/slides.md",id:24,no:25},__clicksElements:[],__preloaded:!1}},{path:"26",name:"page-26",component:RO,meta:{slide:{raw:`
## PVD
<div class="flex items-center w-full bg-black">
<img src="/assets/pvd_points.gif" class="m-auto h-100">
</div>
<!--
bon résultats, mais y'a des points au milieu de l'aube, donc c'est chiant pour reconstruction surface. En plus on peut moins facilement appliquer ce qu'on a fait avec les GPs ici.
-->
`,title:"PVD",level:2,content:`## PVD
<div class="flex items-center w-full bg-black">
<img src="/assets/pvd_points.gif" class="m-auto h-100">
</div>`,frontmatter:{},note:"bon résultats, mais y'a des points au milieu de l'aube, donc c'est chiant pour reconstruction surface. En plus on peut moins facilement appliquer ce qu'on a fait avec les GPs ici.",index:25,start:617,end:628,noteHTML:`<p>bon résultats, mais y'a des points au milieu de l'aube, donc c'est chiant pour reconstruction surface. En plus on peut moins facilement appliquer ce qu'on a fait avec les GPs ici.</p>
`,filepath:"/home/laurent/Documents/Cours/ENSEEIHT/PFE/etude-biblio/slides/slides.md",id:25,no:26},__clicksElements:[],__preloaded:!1}},{path:"27",name:"page-27",component:FO,meta:{slide:{raw:`
<iframe scrolling="yes" src="https://distill.pub/2017/feature-visualization/" class="h-full w-full">
</iframe>
`,content:`<iframe scrolling="yes" src="https://distill.pub/2017/feature-visualization/" class="h-full w-full">
</iframe>`,frontmatter:{},index:26,start:629,end:633,noteHTML:"",filepath:"/home/laurent/Documents/Cours/ENSEEIHT/PFE/etude-biblio/slides/slides.md",id:26,no:27},__clicksElements:[],__preloaded:!1}},{path:"28",name:"page-28",component:zO,meta:{slide:{raw:`
<style scoped>
p {
height: 100%;
}
</style>
<embed
src="/projet-fin-etude/rapport.pdf"
type="application/pdf"
width="100%"
height="100%"
/>
<a href="/projet-fin-etude/rapport.pdf" class="absolute bottom-0 font-extralight mb-1 mr-2 right-0 text-xs">Link to PDF</a>
`,content:`<style scoped>
p {
height: 100%;
}
</style>
<embed
src="/projet-fin-etude/rapport.pdf"
type="application/pdf"
width="100%"
height="100%"
/>
<a href="/projet-fin-etude/rapport.pdf" class="absolute bottom-0 font-extralight mb-1 mr-2 right-0 text-xs">Link to PDF</a>`,frontmatter:{},index:27,start:634,end:650,noteHTML:"",filepath:"/home/laurent/Documents/Cours/ENSEEIHT/PFE/etude-biblio/slides/slides.md",id:27,no:28},__clicksElements:[],__preloaded:!1}}],UO=[],Ke=BO,ir=[{name:"play",path:"/",component:cS,children:[...Ke,...UO]},{name:"print",path:"/print",component:j$},{path:"",redirect:{path:"/1"}},{path:"/:pathMatch(.*)",redirect:{path:"/1"}}];{let e=function(t){if(!rr.remote||rr.remote===t.query.password)return!0;if(rr.remote&&t.query.password===void 0){const n=prompt("Enter password");if(rr.remote===n)return!0}return t.params.no?{path:`/${t.params.no}`}:{path:""}};ir.push({path:"/presenter/print",component:()=>On(()=>import("./PresenterPrint-dd85e2dc.js"),["assets/PresenterPrint-dd85e2dc.js","assets/NoteDisplay-6984e6f7.js"])}),ir.push({name:"notes",path:"/notes",component:()=>On(()=>import("./NotesView-9f43de9e.js"),["assets/NotesView-9f43de9e.js","assets/NoteDisplay-6984e6f7.js"]),beforeEnter:e}),ir.push({name:"presenter",path:"/presenter/:no",component:()=>On(()=>import("./Presenter-05a47db0.js"),["assets/Presenter-05a47db0.js","assets/NoteDisplay-6984e6f7.js","assets/DrawingControls-574185f1.js","assets/Presenter-aa6741a8.css"]),beforeEnter:e}),ir.push({path:"/presenter",redirect:{path:"/presenter/1"}})}const gt=u1({history:cb("/projet-fin-etude/"),routes:ir});function KO(e,t,{mode:n="replace"}={}){return T({get(){const s=gt.currentRoute.value.query[e];return s==null?t??null:Array.isArray(s)?s.filter(Boolean):s},set(s){et(()=>{gt[C(n)]({query:{...gt.currentRoute.value.query,[e]:s}})})}})}const Qp=z(0);et(()=>{gt.afterEach(async()=>{await et(),Qp.value+=1})});const em=z(0),It=T(()=>gt.currentRoute.value),Is=T(()=>It.value.query.print!==void 0),WO=T(()=>It.value.query.print==="clicks"),on=T(()=>It.value.query.embedded!==void 0),mt=T(()=>It.value.path.startsWith("/presenter")),GO=T(()=>It.value.path.startsWith("/notes")),fr=T(()=>Is.value&&!WO.value),Ma=T(()=>It.value.query.password),YO=T(()=>!mt.value&&(!Ce.remote||Ma.value===Ce.remote)),qu=KO("clicks","0"),ZO=T(()=>Ke.length),JO=T(()=>It.value.path),ze=T(()=>Number.parseInt(JO.value.split(/\//g).slice(-1)[0])||1);T(()=>lo(ze.value));const lt=T(()=>Ke.find(e=>e.path===`${ze.value}`));T(()=>{var e,t,n;return(n=(t=(e=lt.value)==null?void 0:e.meta)==null?void 0:t.slide)==null?void 0:n.id});T(()=>{var e,t;return((t=(e=lt.value)==null?void 0:e.meta)==null?void 0:t.layout)||(ze.value===1?"cover":"default")});const Lo=T(()=>Ke.find(e=>e.path===`${Math.min(Ke.length,ze.value+1)}`)),XO=T(()=>Ke.find(e=>e.path===`${Math.max(1,ze.value-1)}`)),QO=T(()=>{var e,t;return Qp.value,((t=(e=lt.value)==null?void 0:e.meta)==null?void 0:t.__clicksElements)||[]}),At=T({get(){if(fr.value)return 99999;let e=+(qu.value||0);return Number.isNaN(e)&&(e=0),e},set(e){qu.value=e.toString()}}),qi=T(()=>{var e,t;return+(((t=(e=lt.value)==null?void 0:e.meta)==null?void 0:t.clicks)??QO.value.length)}),ek=T(()=>ze.value<Ke.length||At.value<qi.value),tk=T(()=>ze.value>1||At.value>0),nk=T(()=>Ke.filter(e=>{var t,n;return(n=(t=e.meta)==null?void 0:t.slide)==null?void 0:n.title}).reduce((e,t)=>(Cl(e,t),e),[])),sk=T(()=>Ol(nk.value,lt.value));T(()=>kl(sk.value));const rk=T(()=>ck(em.value,lt.value,XO.value));pe(lt,(e,t)=>{em.value=Number(e==null?void 0:e.path)-Number(t==null?void 0:t.path)});function An(){qi.value<=At.value?kr():At.value+=1}async function Mn(){At.value<=0?await Tr():At.value-=1}function lo(e){return mt.value?`/presenter/${e}`:`/${e}`}function kr(){const e=Math.min(Ke.length,ze.value+1);return Ls(e)}async function Tr(e=!0){const t=Math.max(1,ze.value-1);await Ls(t),e&&qi.value&&gt.replace({query:{...It.value.query,clicks:qi.value}})}function Ls(e,t){return gt.push({path:lo(e),query:{...It.value.query,clicks:t}})}function ik(e){const t=z(0),{direction:n,distanceX:s,distanceY:r}=My(e,{onSwipeStart(i){i.pointerType==="touch"&&(Pr.value||(t.value=da()))},onSwipeEnd(i){if(i.pointerType!=="touch"||!t.value||Pr.value)return;const a=Math.a