@odoo/owl 3.0.0-alpha.13 → 3.0.0-alpha.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/compile_templates.mjs +2442 -2435
  2. package/dist/owl.cjs.js +6459 -6381
  3. package/dist/owl.es.js +6459 -6379
  4. package/dist/owl.iife.js +6459 -6381
  5. package/dist/owl.iife.min.js +1 -1
  6. package/dist/types/common/owl_error.d.ts +3 -3
  7. package/dist/types/common/utils.d.ts +8 -8
  8. package/dist/types/compiler/code_generator.d.ts +150 -150
  9. package/dist/types/compiler/index.d.ts +13 -13
  10. package/dist/types/compiler/inline_expressions.d.ts +59 -59
  11. package/dist/types/compiler/parser.d.ts +171 -171
  12. package/dist/types/compiler/standalone/index.d.ts +2 -2
  13. package/dist/types/compiler/standalone/setup_jsdom.d.ts +1 -1
  14. package/dist/types/index.d.ts +1 -1
  15. package/dist/types/owl.d.ts +669 -671
  16. package/dist/types/runtime/app.d.ts +57 -57
  17. package/dist/types/runtime/blockdom/attributes.d.ts +6 -6
  18. package/dist/types/runtime/blockdom/block_compiler.d.ts +21 -21
  19. package/dist/types/runtime/blockdom/config.d.ts +8 -8
  20. package/dist/types/runtime/blockdom/event_catcher.d.ts +7 -7
  21. package/dist/types/runtime/blockdom/events.d.ts +8 -8
  22. package/dist/types/runtime/blockdom/html.d.ts +17 -17
  23. package/dist/types/runtime/blockdom/index.d.ts +26 -26
  24. package/dist/types/runtime/blockdom/list.d.ts +18 -18
  25. package/dist/types/runtime/blockdom/multi.d.ts +17 -17
  26. package/dist/types/runtime/blockdom/text.d.ts +26 -26
  27. package/dist/types/runtime/blockdom/toggler.d.ts +17 -17
  28. package/dist/types/runtime/component.d.ts +18 -18
  29. package/dist/types/runtime/component_node.d.ts +61 -61
  30. package/dist/types/runtime/event_handling.d.ts +1 -1
  31. package/dist/types/runtime/hooks.d.ts +34 -33
  32. package/dist/types/runtime/index.d.ts +43 -43
  33. package/dist/types/runtime/lifecycle_hooks.d.ts +10 -10
  34. package/dist/types/runtime/plugins.d.ts +30 -29
  35. package/dist/types/runtime/portal.d.ts +12 -12
  36. package/dist/types/runtime/props.d.ts +21 -17
  37. package/dist/types/runtime/reactivity/computations.d.ts +31 -31
  38. package/dist/types/runtime/reactivity/computed.d.ts +7 -7
  39. package/dist/types/runtime/reactivity/effect.d.ts +2 -2
  40. package/dist/types/runtime/reactivity/proxy.d.ts +48 -48
  41. package/dist/types/runtime/reactivity/signal.d.ts +18 -18
  42. package/dist/types/runtime/registry.d.ts +20 -20
  43. package/dist/types/runtime/rendering/error_handling.d.ts +13 -13
  44. package/dist/types/runtime/rendering/fibers.d.ts +37 -37
  45. package/dist/types/runtime/rendering/scheduler.d.ts +21 -21
  46. package/dist/types/runtime/rendering/template_helpers.d.ts +50 -50
  47. package/dist/types/runtime/resource.d.ts +15 -15
  48. package/dist/types/runtime/status.d.ts +9 -9
  49. package/dist/types/runtime/template_set.d.ts +39 -39
  50. package/dist/types/runtime/types.d.ts +62 -31
  51. package/dist/types/runtime/utils.d.ts +24 -24
  52. package/dist/types/runtime/validation.d.ts +19 -2
  53. package/dist/types/version.d.ts +1 -1
  54. package/package.json +13 -11
@@ -1 +1 @@
1
- !function(t){"use strict";function e(t){t=t.slice();const e=[];let n;for(;(n=t[0])&&"string"==typeof n;)e.push(t.shift());return{modifiers:e,data:t}}const n={shouldNormalizeDom:!0,mainEventHandler:(t,n,o)=>("function"==typeof t?t(n):Array.isArray(t)&&(t=e(t).data)[0](t[1],n),!1)},o=document.createTextNode("");class i{constructor(t,e){this.key=t,this.child=e}mount(t,e){this.parentEl=t,this.child.mount(t,e)}moveBeforeDOMNode(t,e){this.child.moveBeforeDOMNode(t,e)}moveBeforeVNode(t,e){this.moveBeforeDOMNode(t&&t.firstNode()||e)}patch(t,e){if(this===t)return;let n=this.child,i=t.child;if(this.key===t.key)n.patch(i,e);else{const r=n.firstNode();r.parentElement.insertBefore(o,r),e&&n.beforeRemove(),n.remove(),i.mount(this.parentEl,o),this.child=i,this.key=t.key}}beforeRemove(){this.child.beforeRemove()}remove(){this.child.remove()}firstNode(){return this.child.firstNode()}toString(){return this.child.toString()}}function r(t,e){return new i(t,e)}class s extends Error{}const{setAttribute:l,removeAttribute:a}=Element.prototype,c=DOMTokenList.prototype,h=c.add,u=c.remove,d=Array.isArray,{split:f,trim:p}=String.prototype,m=/\s+/;function g(t,e){switch(e){case!1:case void 0:a.call(this,t);break;case!0:l.call(this,t,"");break;default:l.call(this,t,e)}}function b(t){return function(e){g.call(this,t,e)}}function y(t){if(d(t))"class"===t[0]?x.call(this,t[1]):g.call(this,t[0],t[1]);else for(let e in t)"class"===e?x.call(this,t[e]):g.call(this,e,t[e])}function v(t,e){if(d(t)){const n=t[0],o=t[1];if(n===e[0]){if(o===e[1])return;"class"===n?N.call(this,o,e[1]):g.call(this,n,o)}else a.call(this,e[0]),g.call(this,n,o)}else{for(let n in e)n in t||("class"===n?N.call(this,"",e[n]):a.call(this,n));for(let n in t){const o=t[n];o!==e[n]&&("class"===n?N.call(this,o,e[n]):g.call(this,n,o))}}}function w(t){const e={};switch(typeof t){case"string":const n=p.call(t);if(!n)return{};let o=f.call(n,m);for(let t=0,n=o.length;t<n;t++)e[o[t]]=!0;return e;case"object":for(let n in t){const o=t[n];if(o){if(n=p.call(n),!n)continue;const t=f.call(n,m);for(let n of t)e[n]=o}}return e;case"undefined":return{};case"number":return{[t]:!0};default:return{[t]:!0}}}function x(t){t=""===t?{}:w(t);const e=this.classList;for(let n in t)h.call(e,n)}function N(t,e){e=""===e?{}:w(e),t=""===t?{}:w(t);const n=this.classList;for(let o in e)o in t||u.call(n,o);for(let o in t)o in e||h.call(n,o)}function $(t){let e=!1;return async(...n)=>{e||(e=!0,await Promise.resolve(),e=!1,t(...n))}}class k extends EventTarget{trigger(t,e){this.dispatchEvent(new CustomEvent(t,{detail:e}))}}class E extends String{}function T(t){return t instanceof E?t:void 0===t?_(""):"number"==typeof t?_(String(t)):([["&","&amp;"],["<","&lt;"],[">","&gt;"],["'","&#x27;"],['"',"&quot;"],["`","&#x60;"]].forEach(e=>{t=String(t).replace(new RegExp(e[0],"g"),e[1])}),_(t))}function _(t,...e){if(!Array.isArray(t))return new E(t);const n=t;let o="",i=0;for(;i<e.length;++i)o+=n[i]+T(e[i]);return o+=n[i],new E(o)}function A(t){const e=t.split(".")[0],o=t.includes(".capture");return t.includes(".synthetic")?function(t,e=!1){let o=`__event__synthetic_${t}`;e&&(o=`${o}_capture`);!function(t,e,o=!1){if(S[e])return;document.addEventListener(t,t=>function(t,e){let o=e.target;for(;null!==o;){const i=o[t];if(i)for(const t of Object.values(i)){if(n.mainEventHandler(t,e,o))return}o=o.parentNode}}(e,t),{capture:o}),S[e]=!0}(t,o,e);const i=D++;function r(t){const e=this[o]||{};e[i]=t,this[o]=e}function s(){delete this[o]}return{setup:r,update:r,remove:s}}(e,o):function(t,e=!1){let o=`__event__${t}_${C++}`;e&&(o=`${o}_capture`);function i(t){const e=t.currentTarget;if(!e||!function(t){if(!t)return!1;if(t.ownerDocument.contains(t))return!0;const e=t.getRootNode();return e instanceof ShadowRoot&&t.ownerDocument.contains(e.host)}(e))return;const i=e[o];i&&n.mainEventHandler(i,t,e)}function r(n){this[o]=n,this.addEventListener(t,i,{capture:e})}function s(){delete this[o],this.removeEventListener(t,i,{capture:e})}function l(t){this[o]=t}return{setup:r,update:l,remove:s}}(e,o)}let C=1;let D=1;const S={};const O=Node.prototype,R=O.insertBefore,L=(B=O,P="textContent",Object.getOwnPropertyDescriptor(B,P)).set;var B,P;const M=O.removeChild;class I{constructor(t){this.children=t}mount(t,e){const n=this.children,o=n.length,i=new Array(o);for(let r=0;r<o;r++){let o=n[r];if(o)o.mount(t,e);else{const n=document.createTextNode("");i[r]=n,R.call(t,n,e)}}this.anchors=i,this.parentEl=t}moveBeforeDOMNode(t,e=this.parentEl){this.parentEl=e;const n=this.children,o=this.anchors;for(let i=0,r=n.length;i<r;i++){let r=n[i];if(r)r.moveBeforeDOMNode(t,e);else{const n=o[i];R.call(e,n,t)}}}moveBeforeVNode(t,e){if(t){const n=t.children[0];e=(n?n.firstNode():t.anchors[0])||null}const n=this.children,o=this.parentEl,i=this.anchors;for(let t=0,r=n.length;t<r;t++){let r=n[t];if(r)r.moveBeforeVNode(null,e);else{const n=i[t];R.call(o,n,e)}}}patch(t,e){if(this===t)return;const n=this.children,o=t.children,i=this.anchors,r=this.parentEl;for(let t=0,s=n.length;t<s;t++){const s=n[t],l=o[t];if(s)if(l)s.patch(l,e);else{const o=s.firstNode(),l=document.createTextNode("");i[t]=l,R.call(r,l,o),e&&s.beforeRemove(),s.remove(),n[t]=void 0}else if(l){n[t]=l;const e=i[t];l.mount(r,e),M.call(r,e)}}}beforeRemove(){const t=this.children;for(let e=0,n=t.length;e<n;e++){const n=t[e];n&&n.beforeRemove()}}remove(){const t=this.parentEl;if(this.isOnlyChild)L.call(t,"");else{const e=this.children,n=this.anchors;for(let o=0,i=e.length;o<i;o++){const i=e[o];i?i.remove():M.call(t,n[o])}}}firstNode(){const t=this.children[0];return t?t.firstNode():this.anchors[0]}toString(){return this.children.map(t=>t?t.toString():"").join("")}}function j(t){return new I(t)}const V=Node.prototype,W=CharacterData.prototype,F=V.insertBefore,K=((t,e)=>Object.getOwnPropertyDescriptor(t,e))(W,"data").set,U=V.removeChild;class H{constructor(t){this.text=t}mountNode(t,e,n){this.parentEl=e,F.call(e,t,n),this.el=t}moveBeforeDOMNode(t,e=this.parentEl){this.parentEl=e,F.call(e,this.el,t)}moveBeforeVNode(t,e){F.call(this.parentEl,this.el,t?t.el:e)}beforeRemove(){}remove(){U.call(this.parentEl,this.el)}firstNode(){return this.el}toString(){return this.text}}class z extends H{mount(t,e){this.mountNode(document.createTextNode(Y(this.text)),t,e)}patch(t){const e=t.text;this.text!==e&&(K.call(this.el,Y(e)),this.text=e)}}class G extends H{mount(t,e){this.mountNode(document.createComment(Y(this.text)),t,e)}patch(){}}function q(t){return new z(t)}function X(t){return new G(t)}function Y(t){switch(typeof t){case"string":return t;case"number":return String(t);case"boolean":return t?"true":"false";default:return t||""}}const J=(t,e)=>Object.getOwnPropertyDescriptor(t,e),Z=Node.prototype,Q=Element.prototype,tt=J(CharacterData.prototype,"data").set,et=J(Z,"firstChild").get,nt=J(Z,"nextSibling").get,ot=()=>{};function it(t){return function(e){this[t]=0===e?0:e?e.valueOf():""}}const rt={};function st(t){if(t in rt)return rt[t];const e=(new DOMParser).parseFromString(`<t>${t}</t>`,"text/xml").firstChild.firstChild;n.shouldNormalizeDom&&lt(e);const o=at(e),i=ut(o),r=function(t,e){let n=function(t,e){const{refN:n,collectors:o,children:i,locations:r,cbRefs:s}=e,l=o.length;r.sort((t,e)=>t.idx-e.idx);const a=r.length,c=i.length,h=i,u=n>0,d=Z.cloneNode,f=Z.insertBefore,p=Q.remove;class m{constructor(t){this.data=t}beforeRemove(){}remove(){p.call(this.el)}firstNode(){return this.el}moveBeforeDOMNode(t,e=this.parentEl){this.parentEl=e,f.call(e,this.el,t)}moveBeforeVNode(t,e){f.call(this.parentEl,this.el,t?t.el:e)}toString(){const t=document.createElement("div");return this.mount(t,null),t.innerHTML}mount(e,n){const o=d.call(t,!0);f.call(e,o,n),this.el=o,this.parentEl=e}patch(t,e){}}u&&(m.prototype.mount=function(e,i){const u=d.call(t,!0),p=new Array(n);this.refs=p,p[0]=u;for(let t=0;t<l;t++){const e=o[t];p[e.idx]=e.getVal.call(p[e.prevIdx])}if(a){const t=this.data;for(let e=0;e<a;e++){const n=r[e];n.setData.call(p[n.refIdx],t[e])}}if(f.call(e,u,i),c){const t=this.children;for(let e=0;e<c;e++){const n=t[e];if(n){const t=h[e],o=t.afterRefIdx?p[t.afterRefIdx]:null;n.isOnlyChild=t.isOnlyChild,n.mount(p[t.parentRefIdx],o)}}}if(this.el=u,this.parentEl=e,s.length){const t=this.data,e=this.refs;for(let n of s){const{idx:o,refIdx:i}=r[n];(0,t[o])(e[i],null)}}},m.prototype.patch=function(t,e){if(this===t)return;const n=this.refs;if(a){const e=this.data,o=t.data;for(let t=0;t<a;t++){const i=e[t],s=o[t];if(i!==s){const e=r[t];e.updateData.call(n[e.refIdx],s,i)}}this.data=o}if(c){let o=this.children;const i=t.children;for(let t=0;t<c;t++){const r=o[t],s=i[t];if(r)s?r.patch(s,e):(e&&r.beforeRemove(),r.remove(),o[t]=void 0);else if(s){const e=h[t],i=e.afterRefIdx?n[e.afterRefIdx]:null;s.mount(n[e.parentRefIdx],i),o[t]=s}}}},m.prototype.remove=function(){if(s.length){const t=this.data,e=this.refs;for(let n of s){const{idx:o,refIdx:i}=r[n];(0,t[o])(null,e[i])}}p.call(this.el)});return m}(t,e);if(e.children.length)return n=class extends n{constructor(t,e){super(t),this.children=e}},n.prototype.beforeRemove=I.prototype.beforeRemove,(t,e=[])=>new n(t,e);return t=>new n(t)}(o.el,i);return rt[t]=r,r}function lt(t){if(t.nodeType!==Node.TEXT_NODE||/\S/.test(t.textContent)){if(t.nodeType!==Node.ELEMENT_NODE||"pre"!==t.tagName)for(let e=t.childNodes.length-1;e>=0;--e)lt(t.childNodes.item(e))}else t.remove()}function at(t,e=null,n=null){switch(t.nodeType){case Node.ELEMENT_NODE:{let o=n&&n.currentNS;const i=t.tagName;let r;const s=[];if(i.startsWith("block-text-")){const t=parseInt(i.slice(11),10);s.push({type:"text",idx:t}),r=document.createTextNode("")}if(i.startsWith("block-child-")){n.isRef||ct(n);const t=parseInt(i.slice(12),10);s.push({type:"child",idx:t}),r=document.createTextNode("")}if(o||(o=t.namespaceURI),r||(r=o?document.createElementNS(o,i):document.createElement(i)),r instanceof Element){if(!n){document.createElement("template").content.appendChild(r)}const e=t.attributes;for(let t=0;t<e.length;t++){const n=e[t].name,o=e[t].value;if(n.startsWith("block-handler-")){const t=parseInt(n.slice(14),10);s.push({type:"handler",idx:t,event:o})}else if(n.startsWith("block-attribute-")){const t=parseInt(n.slice(16),10);s.push({type:"attribute",idx:t,name:o,tag:i})}else if(n.startsWith("block-property-")){const t=parseInt(n.slice(15),10);s.push({type:"property",idx:t,name:o,tag:i})}else"block-attributes"===n?s.push({type:"attributes",idx:parseInt(o,10)}):"block-ref"===n?s.push({type:"ref",idx:parseInt(o,10)}):r.setAttribute(e[t].name,o)}}const l={parent:e,firstChild:null,nextSibling:null,el:r,info:s,refN:0,currentNS:o};if(t.firstChild){const e=t.childNodes[0];if(1===t.childNodes.length&&e.nodeType===Node.ELEMENT_NODE&&e.tagName.startsWith("block-child-")){const t=e.tagName,n=parseInt(t.slice(12),10);s.push({idx:n,type:"child",isOnlyChild:!0})}else{l.firstChild=at(t.firstChild,l,l),r.appendChild(l.firstChild.el);let e=t.firstChild,n=l.firstChild;for(;e=e.nextSibling;)n.nextSibling=at(e,n,l),r.appendChild(n.nextSibling.el),n=n.nextSibling}}return l.info.length&&ct(l),l}case Node.TEXT_NODE:case Node.COMMENT_NODE:return{parent:e,firstChild:null,nextSibling:null,el:t.nodeType===Node.TEXT_NODE?document.createTextNode(t.textContent):document.createComment(t.textContent),info:[],refN:0,currentNS:null}}throw new s("boom")}function ct(t){t.isRef=!0;do{t.refN++}while(t=t.parent)}function ht(t){let e=t.parent;for(;e&&e.nextSibling===t;)t=e,e=e.parent;return e}function ut(t,e,n){if(!e){e={collectors:[],locations:[],children:new Array(t.info.filter(t=>"child"===t.type).length),cbRefs:[],refN:t.refN},n=0}if(t.refN){const o=n,i=t.isRef,r=t.firstChild?t.firstChild.refN:0,s=t.nextSibling?t.nextSibling.refN:0;if(i){for(let e of t.info)e.refIdx=o;t.refIdx=o,function(t,e){for(let n of e.info)switch(n.type){case"text":t.locations.push({idx:n.idx,refIdx:n.refIdx,setData:dt,updateData:dt});break;case"child":n.isOnlyChild?t.children[n.idx]={parentRefIdx:n.refIdx,isOnlyChild:!0}:t.children[n.idx]={parentRefIdx:ht(e).refIdx,afterRefIdx:n.refIdx};break;case"property":{const e=n.refIdx,o=it(n.name);t.locations.push({idx:n.idx,refIdx:e,setData:o,updateData:o});break}case"attribute":{const e=n.refIdx;let o,i;"class"===n.name?(i=x,o=N):(i=b(n.name),o=i),t.locations.push({idx:n.idx,refIdx:e,setData:i,updateData:o});break}case"attributes":t.locations.push({idx:n.idx,refIdx:n.refIdx,setData:y,updateData:v});break;case"handler":{const{setup:e,update:o}=A(n.event);t.locations.push({idx:n.idx,refIdx:n.refIdx,setData:e,updateData:o});break}case"ref":t.locations.push({idx:n.idx,refIdx:n.refIdx,setData:ot,updateData:ot}),t.cbRefs.push(n.idx)}}(e,t),n++}if(s){const i=n+r;e.collectors.push({idx:i,prevIdx:o,getVal:nt}),ut(t.nextSibling,e,i)}r&&(e.collectors.push({idx:n,prevIdx:o,getVal:et}),ut(t.firstChild,e,n))}return e}function dt(t){tt.call(this,Y(t))}const ft=Node.prototype,pt=ft.insertBefore,mt=ft.appendChild,gt=ft.removeChild,bt=((t,e)=>Object.getOwnPropertyDescriptor(t,e))(ft,"textContent").set;class yt{constructor(t){this.children=t}mount(t,e){const n=this.children,o=document.createTextNode("");this.anchor=o,pt.call(t,o,e);const i=n.length;if(i){const e=n[0].mount;for(let r=0;r<i;r++)e.call(n[r],t,o)}this.parentEl=t}moveBeforeDOMNode(t,e=this.parentEl){this.parentEl=e;const n=this.children;for(let o=0,i=n.length;o<i;o++)n[o].moveBeforeDOMNode(t,e);e.insertBefore(this.anchor,t)}moveBeforeVNode(t,e){if(t){const n=t.children[0];e=(n?n.firstNode():t.anchor)||null}const n=this.children;for(let t=0,o=n.length;t<o;t++)n[t].moveBeforeVNode(null,e);this.parentEl.insertBefore(this.anchor,e)}patch(t,e){if(this===t)return;const n=this.children,o=t.children;if(0===o.length&&0===n.length)return;this.children=o;const i=o[0]||n[0],{mount:r,patch:s,remove:l,beforeRemove:a,moveBeforeVNode:c,firstNode:h}=i,u=this.anchor,d=this.isOnlyChild,f=this.parentEl;if(0===o.length&&d){if(e)for(let t=0,e=n.length;t<e;t++)a.call(n[t]);return bt.call(f,""),void mt.call(f,u)}let p,m=0,g=0,b=n[0],y=o[0],v=n.length-1,w=o.length-1,x=n[v],N=o[w];for(;m<=v&&g<=w;){if(null===b){b=n[++m];continue}if(null===x){x=n[--v];continue}let t=b.key,i=y.key;if(t===i){s.call(b,y,e),o[g]=b,b=n[++m],y=o[++g];continue}let l=x.key,a=N.key;if(l===a){s.call(x,N,e),o[w]=x,x=n[--v],N=o[--w];continue}if(t===a){s.call(b,N,e),o[w]=b;const t=o[w+1];c.call(b,t,u),b=n[++m],N=o[--w];continue}if(l===i){s.call(x,y,e),o[g]=x;const t=n[m];c.call(x,t,u),x=n[--v],y=o[++g];continue}p=p||wt(n,m,v);let d=p[i];if(void 0===d)r.call(y,f,h.call(b)||null);else{const t=n[d];c.call(t,b,null),s.call(t,y,e),o[g]=t,n[d]=null}y=o[++g]}if(m<=v||g<=w)if(m>v){const t=o[w+1],e=t?h.call(t)||null:u;for(let t=g;t<=w;t++)r.call(o[t],f,e)}else for(let t=m;t<=v;t++){let o=n[t];o&&(e&&a.call(o),l.call(o))}}beforeRemove(){const t=this.children,e=t.length;if(e){const n=t[0].beforeRemove;for(let o=0;o<e;o++)n.call(t[o])}}remove(){const{parentEl:t,anchor:e}=this;if(this.isOnlyChild)bt.call(t,"");else{const n=this.children,o=n.length;if(o){const t=n[0].remove;for(let e=0;e<o;e++)t.call(n[e])}gt.call(t,e)}}firstNode(){const t=this.children[0];return t?t.firstNode():void 0}toString(){return this.children.map(t=>t.toString()).join("")}}function vt(t){return new yt(t)}function wt(t,e,n){let o={};for(let i=e;i<=n;i++)o[t[i].key]=i;return o}const xt=Node.prototype,Nt=xt.insertBefore,$t=xt.removeChild;class kt{constructor(t){this.content=[],this.html=t}mount(t,e){this.parentEl=t;const n=document.createElement("template");n.innerHTML=this.html,this.content=[...n.content.childNodes];for(let n of this.content)Nt.call(t,n,e);if(!this.content.length){const n=document.createTextNode("");this.content.push(n),Nt.call(t,n,e)}}moveBeforeDOMNode(t,e=this.parentEl){this.parentEl=e;for(let n of this.content)Nt.call(e,n,t)}moveBeforeVNode(t,e){const n=t?t.content[0]:e;this.moveBeforeDOMNode(n)}patch(t){if(this===t)return;const e=t.html;if(this.html!==e){const n=this.parentEl,o=this.content[0],i=document.createElement("template");i.innerHTML=e;const r=[...i.content.childNodes];for(let t of r)Nt.call(n,t,o);if(!r.length){const t=document.createTextNode("");r.push(t),Nt.call(n,t,o)}this.remove(),this.content=r,this.html=t.html}}beforeRemove(){}remove(){const t=this.parentEl;for(let e of this.content)$t.call(t,e)}firstNode(){return this.content[0]}toString(){return this.html}}function Et(t){return new kt(t)}function Tt(t,e,n=null){t.mount(e,n)}var _t;let At,Ct;function Dt(t){Ct&&(Ct.sources.add(t),t.observers.add(Ct))}function St(t){!function(t){if(At)return t();At=[];try{return t()}finally{}}(()=>{for(const e of t.observers)e.state===_t.EXECUTED&&(e.isDerived?jt(e):At.push(e)),e.state=_t.STALE}),Ot()}!function(t){t[t.EXECUTED=0]="EXECUTED",t[t.STALE=1]="STALE",t[t.PENDING=2]="PENDING"}(_t||(_t={}));const Ot=$(function(){if(!At)return;for(const t of At)Mt(t);At=void 0});function Rt(t){return Pt(void 0,t)}function Lt(){return Ct}function Bt(t){Ct=t}function Pt(t,e){const n=Ct;let o;Ct=t;try{o=e()}finally{Ct=n}return o}function Mt(t){var e;const n=t.state;if(n===_t.EXECUTED)return;if(n===_t.PENDING&&(function(t){for(const e of t.sources)"compute"in e&&Mt(e)}(t),t.state!==_t.STALE))return void(t.state=_t.EXECUTED);It(t);const o=Ct;Ct=t,t.value=null===(e=t.compute)||void 0===e?void 0:e.call(t),t.state=_t.EXECUTED,Ct=o}function It(t){const e=t.sources;for(const n of e){n.observers.delete(t)}e.clear()}function jt(t){for(const e of t.observers)e.state||(e.state=_t.PENDING,e.isDerived?jt(e):At.push(e))}const Vt=new WeakMap,Wt=new WeakMap;function Ft(t,e){try{t.destroy()}catch(t){}return Object.assign(new s("[Owl] Unhandled error. Destroying the root component"),{cause:e})}function Kt(t,e){if(!t)return!1;const n=t.fiber;n&&Vt.set(n,e);const o=Wt.get(t);if(o){let n=!1;const i=()=>Ft(t.app,e);for(let t=o.length-1;t>=0;t--)try{o[t](e,i),n=!0;break}catch(t){e=t}if(n)return!0}return Kt(t.parent,e)}function Ut(t){let{error:e}=t;const n="node"in t?t.node:t.fiber.node,o="fiber"in t?t.fiber:n.fiber;if(o){let t=o;do{t.node.fiber=t,t=t.parent}while(t);Vt.set(o.root,e)}if(!Kt(n,e))throw Ft(n.app,e)}function Ht(){throw new s("Attempted to render cancelled fiber")}function zt(t){let e=0;for(let n of t){let t=n.node;n.render=Ht,0===t.status&&t.cancel(),t.fiber=null,n.bdom?t.forceNextRender=!0:e++,e+=zt(n.children)}return e}class Gt{constructor(t,e){if(this.bdom=null,this.children=[],this.appliedToDom=!1,this.deep=!1,this.childrenMap={},this.node=t,this.parent=e,e){this.deep=e.deep;const t=e.root;t.setCounter(t.counter+1),this.root=t,e.children.push(this)}else this.root=this}render(){let t=this.root.node,e=t.app.scheduler,n=t.parent;for(;n;){if(n.fiber){let o=n.fiber.root;if(0!==o.counter||!(t.parentKey in n.fiber.childrenMap))return void e.delayedRenders.push(this);n=o.node}t=n,n=n.parent}this._render()}_render(){const t=this.node,e=this.root;e&&(Pt(t.signalComputation,()=>{try{this.bdom=!0,this.bdom=t.renderFn()}catch(e){t.app.handleError({node:t,error:e})}}),e.setCounter(e.counter-1))}}class qt extends Gt{constructor(){super(...arguments),this.counter=1,this.willPatch=[],this.patched=[],this.mounted=[],this.locked=!1}complete(){const t=this.node;let e;this.locked=!0;let n=this.mounted;try{for(e of this.willPatch){let t=e.node;if(t.fiber===e){const e=t.component;for(let n of t.willPatch)n.call(e)}}for(e=void 0,t._patch(),this.locked=!1;e=n.pop();)if(e.appliedToDom)for(let t of e.node.mounted)t();let o=this.patched;for(;e=o.pop();)if(e.appliedToDom)for(let t of e.node.patched)t()}catch(o){for(let t of n)t.node.willUnmount=[];this.locked=!1,t.app.handleError({fiber:e||this,error:o})}}setCounter(t){this.counter=t,0===t&&this.node.app.scheduler.flush()}}class Xt extends qt{constructor(t,e,n={}){super(t,null),this.target=e,this.position=n.position||"last-child"}complete(){let t=this;try{const e=this.node;if(e.children=this.childrenMap,e.app.constructor.validateTarget(this.target),e.bdom)e.updateDom();else if(e.bdom=this.bdom,"last-child"===this.position||0===this.target.childNodes.length)Tt(e.bdom,this.target);else{const t=this.target.childNodes[0];Tt(e.bdom,this.target,t)}e.fiber=null,e.status=1,this.appliedToDom=!0;let n=this.mounted;for(;t=n.pop();)if(t.appliedToDom)for(let e of t.node.mounted)e()}catch(e){this.node.app.handleError({fiber:t,error:e})}}}let Yt=null;function Jt(){if(!Yt)throw new s("No active component (a hook function should only be called in 'setup')");return Yt}class Zt{constructor(t,e,n,o,i){this.fiber=null,this.bdom=null,this.status=0,this.forceNextRender=!1,this.children=Object.create(null),this.willStart=[],this.willUpdateProps=[],this.willUnmount=[],this.mounted=[],this.willPatch=[],this.patched=[],this.willDestroy=[],this.name=t.name,Yt=this,this.app=n,this.parent=o,this.parentKey=i,this.pluginManager=o?o.pluginManager:n.pluginManager,this.signalComputation={value:void 0,compute:()=>this.render(!1),sources:new Set,state:_t.EXECUTED},this.props=Object.assign({},e);const r=Lt();Bt(void 0),this.component=new t(this);const s={this:this.component,__owl__:this};this.renderFn=n.getTemplate(t.template).bind(this.component,s,this),this.component.setup(),Bt(r),Yt=null}mountComponent(t,e){const n=new Xt(this,t,e);this.app.scheduler.addFiber(n),this.initiateRender(n)}async initiateRender(t){this.fiber=t,this.mounted.length&&t.root.mounted.push(t);const e=this.component;try{let t;Pt(void 0,()=>{t=this.willStart.map(t=>t.call(e))}),await Promise.all(t)}catch(t){return void this.app.handleError({node:this,error:t})}0===this.status&&this.fiber===t&&t.render()}async render(t){if(this.status>=2)return;let e=this.fiber;if(e&&(e.root.locked||!0===e.bdom)&&(await Promise.resolve(),e=this.fiber),e){if(!e.bdom&&!Vt.has(e))return void(t&&(e.deep=t));t=t||e.deep}else if(!this.bdom)return;const n=function(t){let e=t.fiber;if(e){let t=e.root;return t.locked=!0,t.setCounter(t.counter+1-zt(e.children)),t.locked=!1,e.children=[],e.childrenMap={},e.bdom=null,Vt.has(e)&&(Vt.delete(e),Vt.delete(t),e.appliedToDom=!1,e instanceof qt&&(e.mounted=e instanceof Xt?[e]:[])),e}const n=new qt(t,null);return t.willPatch.length&&n.willPatch.push(n),t.patched.length&&n.patched.push(n),n}(this);n.deep=t,this.fiber=n,this.app.scheduler.addFiber(n),await Promise.resolve(),this.status>=2||this.fiber!==n||!e&&n.parent||n.render()}cancel(){this._cancel(),delete this.parent.children[this.parentKey],this.app.scheduler.scheduleDestroy(this)}_cancel(){this.status=2;const t=this.children;for(let e in t)t[e]._cancel()}destroy(){let t=1===this.status;this._destroy(),t&&this.bdom.remove()}_destroy(){const t=this.component;if(1===this.status)for(let e of this.willUnmount)e.call(t);for(let t of Object.values(this.children))t._destroy();if(this.willDestroy.length)try{for(let e of this.willDestroy)e.call(t)}catch(t){this.app.handleError({error:t,node:this})}this.status=3}async updateAndRender(t,e){t=Object.assign({},t);const n=function(t,e){let n=t.fiber;return n&&(zt(n.children),n.root=null),new Gt(t,e)}(this,e);this.fiber=n;const o=this.component;let i;if(Rt(()=>{i=Promise.all(this.willUpdateProps.map(e=>e.call(o,t)))}),await i,n!==this.fiber)return;this.props=t,n.render();const r=e.root;this.willPatch.length&&r.willPatch.push(n),this.patched.length&&r.patched.push(n)}updateDom(){if(this.fiber)if(this.bdom===this.fiber.bdom)for(let t in this.children){this.children[t].updateDom()}else this.bdom.patch(this.fiber.bdom,!1),this.fiber.appliedToDom=!0,this.fiber=null}firstNode(){const t=this.bdom;return t?t.firstNode():void 0}mount(t,e){const n=this.fiber.bdom;this.bdom=n,n.mount(t,e),this.status=1,this.fiber.appliedToDom=!0,this.children=this.fiber.childrenMap,this.fiber=null}moveBeforeDOMNode(t,e){this.bdom.moveBeforeDOMNode(t,e)}moveBeforeVNode(t,e){this.bdom.moveBeforeVNode(t?t.bdom:null,e)}patch(){this.fiber&&this.fiber.parent&&this._patch()}_patch(){let t=!1;for(let e in this.children){t=!0;break}const e=this.fiber;this.children=e.childrenMap,this.bdom.patch(e.bdom,t),e.appliedToDom=!0,this.fiber=null}beforeRemove(){this._destroy()}remove(){this.bdom.remove()}}class Qt{constructor(t){this.__owl__=t}setup(){}render(t=!1){this.__owl__.render(!0===t)}}function te(t,e){const n=ee(t,e);if(n.length){const t=JSON.stringify(n,(t,e)=>"function"==typeof e?e.name:e,2);throw new s(`Value does not match the type\n${t}`)}}function ee(t,e){return e(t)}Qt.template="";const ne=function(t){return"string"!=typeof t?[{type:"type",expected:String,received:t}]:[]};function oe(...t){return function(e){if("object"!=typeof e)return[{type:"type",expected:Object,received:e}];const n=Object.keys(e),o=t.filter(t=>!!t.endsWith("?")||!n.includes(t));return o.length?[{type:"missing keys",value:e,missingKeys:o}]:[]}}function ie(t){return function(e){if("object"!=typeof e)return[{type:"type",expected:Object,received:e}];if(t){const n=[],o=[];for(let i in t){const r=ee(e[i],t[i]);i in e?o.push(...r):n.push(i)}return n.length&&o.push({type:"missing keys",value:e,missingKeys:n}),o}return[]}}var re={__proto__:null,any:function(){return[]},boolean:function(t){return"boolean"!=typeof t?[{type:"type",expected:Boolean,received:t}]:[]},number:function(t){return"number"!=typeof t?[{type:"type",expected:Number,received:t}]:[]},string:ne,array:function(t){return function(e){return Array.isArray(e)?t?e.flatMap(e=>ee(e,t)):[]:[{type:"type",expected:Array,received:e}]}},func:function(t,e){return function(t){return"function"!=typeof t?[{type:"type",expected:Function,received:t}]:[]}},instanceOf:function(t){return function(e){return e instanceof t?[]:[{type:"type",expected:t,received:e}]}},keys:oe,literal:function(t){return function(e){return e!==t?[{type:"exact value",expected:t,received:e}]:[]}},object:ie,optional:function(t){return function(e){return void 0===e?[]:ee(e,t)}},record:function(t){return function(e){if("object"!=typeof e)return[{type:"type",expected:Object,received:e}];const n=[];for(let o in e)n.push(...ee(e[o],t));return n}},tuple:function(...t){return function(e){return Array.isArray(e)?e.length!==t.length?[{type:"length",expected:t.length,received:e.length}]:t.flatMap((t,n)=>ee(e[n],t)):[{type:"type",expected:Array,received:e}]}},constructor:function(t){return function(e){return"function"==typeof e&&(e===t||e.prototype instanceof t)?[]:[{type:"type"}]}},union:function(...t){return function(e){return t.filter(t=>ee(e,t).length).length?[{type:"union"}]:[]}},signal:function(t){return function(t){return"function"!=typeof t?[{type:"type",expected:Function,received:t}]:"function"!=typeof t.set?[{type:"type",expected:Function,received:t.set}]:[]}},reactiveValue:function(t){return function(t){return"function"!=typeof t?[{type:"type",expected:Function,received:t}]:[]}}};let se={};class le{constructor(t){var e;this.children=[],this.onDestroyCb=[],this.status=0,this.parent=t||null,null===(e=this.parent)||void 0===e||e.children.push(this),this.plugins=this.parent?Object.create(this.parent.plugins):{}}destroy(){for(let t of this.children)t.destroy();const t=this.onDestroyCb;for(;t.length;)t.pop()();this.status=3}getPluginById(t){return this.plugins[t]||null}getPlugin(t){return this.getPluginById(t.id)}startPlugins(t,e={}){const n=le.current;le.current=this;const o=[];for(const i of t){if(!i.id)throw le.current=n,new s(`Plugin "${i.name}" has no id`);if(this.plugins.hasOwnProperty(i.id)){const t=this.getPluginById(i.id).constructor;if(t!==i)throw le.current=n,new s(`Trying to start a plugin with the same id as an other plugin (id: '${i.id}', existing plugin: '${t.name}', starting plugin: '${i.name}')`);continue}se=e[i.id]||{};const t=new i;this.plugins[i.id]=t,o.push(t)}se={};for(let t of o)t.setup();return le.current=n,le.current||(this.status=1),o}}function ae(t){const e=le.current||Jt().pluginManager;let n=e.getPluginById(t.id);if(!n){if(e!==le.current)throw new s(`Unknown plugin "${t.id}"`);e.startPlugins([t]),n=e.getPluginById(t.id)}return n}function ce(t,e,n){const o=e.bind(t.component);if(t.app.dev){const t=e.name?` <${e.name}>`:"";Reflect.defineProperty(o,"name",{value:n+t})}return o}function he(t){const e=Jt();e.mounted.push(ce(e,t,"onMounted"))}function ue(t){const e=Jt();e.willUnmount.unshift(ce(e,t,"onWillUnmount"))}function de(t){const e=le.current;if(e)e.onDestroyCb.push(t);else{const e=Jt();e.willDestroy.unshift(ce(e,t,"onWillDestroy"))}}function fe(t,e={}){const n=Jt();function o(t){return void 0===n.props[t]?e[t]:n.props[t]}const i=Object.create(null);function r(t){for(const e of t)Reflect.defineProperty(i,e,{enumerable:!0,get:o.bind(null,e)})}if(t){const e=t&&!Array.isArray(t);if(r((e?Object.keys(t):t).map(t=>t.endsWith("?")?t.slice(0,-1):t)),n.app.dev){const o=e?ie(t):oe(...t);te(n.props,o),n.willUpdateProps.push(t=>{te(t,o)})}}else r(Object.keys(n.props)),n.willUpdateProps.push(t=>{for(let t in i)Reflect.deleteProperty(i,t);r(Object.keys(t))});return i}le.current=null,ae.props=function(t,e={}){function n(t){return void 0===se[t]?e[t]:se[t]}const o=Object.create(null);function i(t){for(const e of t)Reflect.defineProperty(o,e,{enumerable:!0,get:n.bind(null,e)})}if(t){const e=t&&!Array.isArray(t);i((e?Object.keys(t):t).map(t=>t.endsWith("?")?t.slice(0,-1):t));if(Jt().app.dev){const n=e?ie(t):oe(...t);te(se,n)}}else i(Object.keys(se));return se};const pe=q("").constructor;class me extends pe{constructor(t,e){super(""),this.target=null,this.selector=t,this.content=e}mount(t,e){super.mount(t,e),this.target=document.querySelector(this.selector),this.target?this.content.mount(this.target,null):this.content.mount(t,e)}beforeRemove(){this.content.beforeRemove()}remove(){this.content&&(super.remove(),this.content.remove(),this.content=null)}patch(t){super.patch(t),this.content?this.content.patch(t.content,!0):(this.content=t.content,this.content.mount(this.target,null))}}class ge extends Qt{constructor(){super(...arguments),this.props=fe({target:ne})}setup(){const t=this.__owl__;he(()=>{const e=t.bdom;if(!e.target){const n=document.querySelector(t.props.target);if(!n)throw new s("invalid portal target");e.content.moveBeforeDOMNode(n.firstChild,n)}}),ue(()=>{t.bdom.remove()})}}ge.template="__portal__";const be=Symbol("Key changes"),ye=Object.prototype.toString,ve=Object.prototype.hasOwnProperty,we=["Object","Array","Set","Map","WeakMap"],xe=["Set","Map","WeakMap"];function Ne(t){return ye.call(_e(t)).slice(8,-1)}function $e(t){return"object"==typeof t&&we.includes(Ne(t))}function ke(t,e){return!e&&$e(t)?Le(t):t}const Ee=new WeakSet;function Te(t){return Ee.add(t),t}function _e(t){return Se.has(t)?Se.get(t):t}const Ae=new WeakMap;function Ce(t,e,n){Dt(null!=n?n:function(t,e){let n=Ae.get(t);n||(n=new Map,Ae.set(t,n));let o=n.get(e);return o||(o={value:void 0,observers:new Set},n.set(e,o)),o}(t,e))}function De(t,e,n){if(!n){const o=Ae.get(t);if(!o)return;if(!o.has(e))return;n=o.get(e)}St(n)}const Se=new WeakMap,Oe=new WeakMap;function Re(t,e){if(!$e(t))throw new s("Cannot make the given value reactive");if(Ee.has(t))return t;if(Se.has(t))return t;const n=Oe.get(t);if(n)return n;const o=Ne(t),i=xe.includes(o)?function(t,e,n){const o=We[e](t,n);return Object.assign(Be(n),{get:(t,e)=>ve.call(o,e)?o[e]:(Ce(t,e,n),ke(t[e],n))})}(t,o,e):Be(e),r=new Proxy(t,i);return Oe.set(t,r),Se.set(r,t),r}function Le(t){return Re(t,null)}function Be(t){return{get(e,n,o){const i=Object.getOwnPropertyDescriptor(e,n);return!i||i.writable||i.configurable?(Ce(e,n,t),ke(Reflect.get(e,n,o),t)):Reflect.get(e,n,o)},set(e,n,o,i){const r=ve.call(e,n),s=Reflect.get(e,n,i),l=Reflect.set(e,n,_e(o),i);return!r&&ve.call(e,n)&&De(e,be,t),(s!==Reflect.get(e,n,i)||"length"===n&&Array.isArray(e))&&De(e,n,t),l},deleteProperty(e,n){const o=Reflect.deleteProperty(e,n);return De(e,be,t),De(e,n,t),o},ownKeys:e=>(Ce(e,be,t),Reflect.ownKeys(e)),has:(e,n)=>(Ce(e,be,t),Reflect.has(e,n))}}function Pe(t,e,n){return o=>(o=_e(o),Ce(e,o,n),ke(e[t](o),n))}function Me(t,e,n){return function*(){Ce(e,be,n);const o=e.keys();for(const i of e[t]()){const t=o.next().value;Ce(e,t,n),yield ke(i,n)}}}function Ie(t,e){return function(n,o){Ce(t,be,e),t.forEach(function(i,r,s){Ce(t,r,e),n.call(o,ke(i,e),ke(r,e),ke(s,e))},o)}}function je(t,e,n,o){return(i,r)=>{i=_e(i);const s=n.has(i),l=n[e](i),a=n[t](i,r);return s!==n.has(i)&&De(n,be,o),l!==n[e](i)&&De(n,i,o),a}}function Ve(t,e){return()=>{const n=[...t.keys()];t.clear(),De(t,be,e);for(const o of n)De(t,o,e)}}const We={Set:(t,e)=>({has:Pe("has",t,e),add:je("add","has",t,e),delete:je("delete","has",t,e),keys:Me("keys",t,e),values:Me("values",t,e),entries:Me("entries",t,e),[Symbol.iterator]:Me(Symbol.iterator,t,e),forEach:Ie(t,e),clear:Ve(t,e),get size(){return Ce(t,be,e),t.size}}),Map:(t,e)=>({has:Pe("has",t,e),get:Pe("get",t,e),set:je("set","get",t,e),delete:je("delete","has",t,e),keys:Me("keys",t,e),values:Me("values",t,e),entries:Me("entries",t,e),[Symbol.iterator]:Me(Symbol.iterator,t,e),forEach:Ie(t,e),clear:Ve(t,e),get size(){return Ce(t,be,e),t.size}}),WeakMap:(t,e)=>({has:Pe("has",t,e),get:Pe("get",t,e),set:je("set","get",t,e),delete:je("delete","has",t,e)})};const Fe=Object.create;function Ke(t){const e=Fe(t);for(let n in t)e[n]=t[n];return e}const Ue=Symbol("isBoundary");class He{constructor(t,e,n,o,i){this.fn=t,this.ctx=Ke(e),this.component=n,this.node=o,this.key=i}evaluate(){return this.fn.call(this.component,this.ctx,this.node,this.key)}toString(){return this.evaluate().toString()}}const ze={withDefault:function(t,e){return null==t||!1===t?e:t},zero:Symbol("zero"),isBoundary:Ue,callSlot:function(t,e,n,o,i,s,l){n=n+"__slot_"+o;const a=t.__owl__.props.slots||{},{__render:c,__ctx:h,__scope:u}=a[o]||{},d=Fe(h||{});u&&(d[u]=s);const f=c?c(d,e,n):null;if(l){let s,a;return f?s=i?r(o,f):f:a=l(t,e,n),j([s,a])}return f||q("")},capture:Ke,withKey:function(t,e){return t.key=e,t},prepareList:function(t){let e,n;if(Array.isArray(t))e=t,n=t;else if(t instanceof Map)e=[...t.keys()],n=[...t.values()];else if(Symbol.iterator in Object(t))e=[...t],n=e;else{if(!t||"object"!=typeof t)throw new s(`Invalid loop expression: "${t}" is not iterable`);n=Object.values(t),e=Object.keys(t)}const o=n.length;return[e,n,o,new Array(o)]},setContextValue:function(t,e,n){const o=t;for(;!t.hasOwnProperty(e)&&!t.hasOwnProperty(Ue);){const e=t.__proto__;if(!e){t=o;break}t=e}t[e]=n},shallowEqual:function(t,e){for(let n=0,o=t.length;n<o;n++)if(t[n]!==e[n])return!1;return!0},toNumber:function(t){const e=parseFloat(t);return isNaN(e)?t:e},LazyValue:He,safeOutput:function(t,e){if(null==t)return e?r("default",e):r("undefined",q(""));let n,o;return t instanceof E?(n="string_safe",o=Et(t)):t instanceof He?(n="lazy_value",o=t.evaluate()):(n="string_unsafe",o=q(t)),r(n,o)},createCatcher:function(t){const e=Object.keys(t).length;class n{constructor(t,e){this.handlerFns=[],this.afterNode=null,this.child=t,this.handlerData=e}mount(e,n){this.parentEl=e,this.child.mount(e,n),this.afterNode=document.createTextNode(""),e.insertBefore(this.afterNode,n),this.wrapHandlerData();for(let n in t){const o=t[n],i=A(n);this.handlerFns[o]=i,i.setup.call(e,this.handlerData[o])}}wrapHandlerData(){for(let t=0;t<e;t++){let e=this.handlerData[t],n=e.length-2,o=e[n];const i=this;e[n]=function(t){const e=t.target;let n=i.child.firstNode();const r=i.afterNode;for(;n&&n!==r;){if(n.contains(e))return o.call(this,t);n=n.nextSibling}}}}moveBeforeDOMNode(t,e=this.parentEl){this.parentEl=e,this.child.moveBeforeDOMNode(t,e),e.insertBefore(this.afterNode,t)}moveBeforeVNode(t,e){t&&(e=t.firstNode()||e),this.child.moveBeforeVNode(t?t.child:null,e),this.parentEl.insertBefore(this.afterNode,e)}patch(t,n){if(this!==t){this.handlerData=t.handlerData,this.wrapHandlerData();for(let t=0;t<e;t++)this.handlerFns[t].update.call(this.parentEl,this.handlerData[t]);this.child.patch(t.child,n)}}beforeRemove(){this.child.beforeRemove()}remove(){for(let t=0;t<e;t++)this.handlerFns[t].remove.call(this.parentEl);this.child.remove(),this.afterNode.remove()}firstNode(){return this.child.firstNode()}toString(){return this.child.toString()}}return function(t,e){return new n(t,e)}},markRaw:Te,OwlError:s,createRef:function(t){if(!t)throw new s("Ref is undefined or null");let e,n;if(t.add&&t.remove)e=t.add.bind(t),n=t.remove.bind(t);else{if(!t.set)throw new s("Ref should implement either a 'set' function or 'add' and 'remove' functions");e=t.set.bind(t),n=()=>t.set(null)}return(t,o)=>{o&&n(o),t&&e(t)}},modelExpr:function(t){if(!t.set||"function"!=typeof t)throw new s("Invalid t-model expression: expression should evaluate to a function with a 'set' method defined on it");return t}};function Ge(t){const e=(new DOMParser).parseFromString(t,"text/xml");if(e.getElementsByTagName("parsererror").length){let n="Invalid XML in template.";const o=e.getElementsByTagName("parsererror")[0].textContent;if(o){n+="\nThe parser has produced the following error message:\n"+o;const e=/\d+/g,i=e.exec(o);if(i){const r=Number(i[0]),s=t.split("\n")[r-1],l=e.exec(o);if(s&&l){const t=Number(l[0])-1;s[t]&&(n+=`\nThe error might be located at xml line ${r} column ${t}\n${s}\n${"-".repeat(t-1)}^`)}}}throw new s(n)}return e}const qe={text:q,createBlock:st,list:vt,multi:j,html:Et,toggler:r,comment:X};class Xe{static registerTemplate(t,e){Ye[t]=e}constructor(t={}){if(this.rawTemplates=Object.create(Ye),this.templates={},this.Portal=ge,this.dev=t.dev||!1,this.translateFn=t.translateFn,this.translatableAttributes=t.translatableAttributes,t.templates)if(t.templates instanceof Document||"string"==typeof t.templates)this.addTemplates(t.templates);else for(const e in t.templates)this.addTemplate(e,t.templates[e]);this.getRawTemplate=t.getTemplate,this.customDirectives=t.customDirectives||{},this.runtimeUtils={...ze,__globals__:t.globalValues||{}},this.hasGlobalValues=Boolean(t.globalValues&&Object.keys(t.globalValues).length)}addTemplate(t,e){if(t in this.rawTemplates){if(!this.dev)return;const n=this.rawTemplates[t];if(("string"==typeof n?n:n instanceof Element?n.outerHTML:n.toString())===("string"==typeof e?e:e.outerHTML))return;throw new s(`Template ${t} already defined with different content`)}this.rawTemplates[t]=e}addTemplates(t){if(t){t=t instanceof Document?t:Ge(t);for(const e of t.querySelectorAll("[t-name]")){const t=e.getAttribute("t-name");this.addTemplate(t,e)}}}getTemplate(t){var e;if(!(t in this.templates)){const n=(null===(e=this.getRawTemplate)||void 0===e?void 0:e.call(this,t))||this.rawTemplates[t];if(void 0===n){let e="";try{e=` (for component "${Jt().component.constructor.name}")`}catch{}throw new s(`Missing template: "${t}"${e}`)}const o="function"==typeof n&&!(n instanceof Element)?n:this._compileTemplate(t,n),i=this.templates;this.templates[t]=function(e,n){return i[t].call(this,e,n)};const r=o(this,qe,this.runtimeUtils);this.templates[t]=r}return this.templates[t]}_compileTemplate(t,e){throw new s("Unable to compile a template. Please use owl full build instead")}callTemplate(t,e,n,o,i){return r(e,this.getTemplate(e).call(t,n,o,i+e))}}const Ye={};function Je(...t){const e="__template__"+Je.nextId++,n=String.raw(...t);return Ye[e]=n,e}Je.nextId=1,Xe.registerTemplate("__portal__",function(t,e,n){let{callSlot:o}=n;return function(t,e,n=""){return new me(t.this.props.target,o(t,e,n,"default",!1,null))}});const Ze="true,false,NaN,null,undefined,debugger,console,window,in,instanceof,new,function,return,eval,void,Math,RegExp,Array,Object,Date,__globals__".split(","),Qe=Object.assign(Object.create(null),{and:"&&",or:"||",gt:">",gte:">=",lt:"<",lte:"<="}),tn=Object.assign(Object.create(null),{"{":"LEFT_BRACE","}":"RIGHT_BRACE","[":"LEFT_BRACKET","]":"RIGHT_BRACKET",":":"COLON",",":"COMMA","(":"LEFT_PAREN",")":"RIGHT_PAREN"}),en="...,.,===,==,+,!==,!=,!,||,&&,>=,>,<=,<,?,-,*,/,%,typeof ,=>,=,;,in ,new ,|,&,^,~".split(",");const nn=[function(t){let e=t[0],n=e;if("'"!==e&&'"'!==e&&"`"!==e)return!1;let o,i=1;for(;t[i]&&t[i]!==n;){if(o=t[i],e+=o,"\\"===o){if(i++,o=t[i],!o)throw new s("Invalid expression");e+=o}i++}if(t[i]!==n)throw new s("Invalid expression");return e+=n,"`"===n?{type:"TEMPLATE_STRING",value:e,replace:t=>e.replace(/\$\{(.*?)\}/g,(e,n)=>"${"+t(n)+"}")}:{type:"VALUE",value:e}},function(t){let e=t[0];if(e&&e.match(/[0-9]/)){let n=1;for(;t[n]&&t[n].match(/[0-9]|\./);)e+=t[n],n++;return{type:"VALUE",value:e}}return!1},function(t){for(let e of en)if(t.startsWith(e))return{type:"OPERATOR",value:e};return!1},function(t){let e=t[0];if(e&&e.match(/[a-zA-Z_\$]/)){let n=1;for(;t[n]&&t[n].match(/[\w\$]/);)e+=t[n],n++;return e in Qe?{type:"OPERATOR",value:Qe[e],size:e.length}:{type:"SYMBOL",value:e}}return!1},function(t){const e=t[0];return!(!e||!(e in tn))&&{type:tn[e],value:e}}];const on=t=>t&&("LEFT_BRACE"===t.type||"COMMA"===t.type),rn=t=>t&&("RIGHT_BRACE"===t.type||"COMMA"===t.type);function sn(t){const e=new Set,n=function(t){const e=[];let n,o=!0,i=t;try{for(;o;)if(i=i.trim(),i){for(let t of nn)if(o=t(i),o){e.push(o),i=i.slice(o.size||o.value.length);break}}else o=!1}catch(t){n=t}if(i.length||n)throw new s(`Tokenizer error: could not tokenize \`${t}\``);return e}(t);let o=0,i=[];for(;o<n.length;){let t=n[o],r=n[o-1],s=n[o+1],l=i[i.length-1];switch(t.type){case"LEFT_BRACE":case"LEFT_BRACKET":case"LEFT_PAREN":i.push(t.type);break;case"RIGHT_BRACE":case"RIGHT_BRACKET":case"RIGHT_PAREN":i.pop()}let a="SYMBOL"===t.type&&!Ze.includes(t.value);if(a&&r&&("LEFT_BRACE"===l&&on(r)&&rn(s)&&(n.splice(o+1,0,{type:"COLON",value:":"},{...t}),s=n[o+1]),"OPERATOR"===r.type&&"."===r.value?a=!1:"LEFT_BRACE"!==r.type&&"COMMA"!==r.type||s&&"COLON"===s.type&&(a=!1)),"TEMPLATE_STRING"===t.type&&(t.value=t.replace(t=>an(t))),s&&"OPERATOR"===s.type&&"=>"===s.value)if("RIGHT_PAREN"===t.type){let t=o-1;for(;t>0&&"LEFT_PAREN"!==n[t].type;)"SYMBOL"===n[t].type&&n[t].originalValue&&(n[t].value=n[t].originalValue,e.add(n[t].value)),t--}else e.add(t.value);a&&(t.varName=t.value,e.has(t.value)||(t.originalValue=t.value,t.value=`ctx['${t.value}']`)),o++}for(const t of n)"SYMBOL"===t.type&&t.varName&&e.has(t.value)&&(t.originalValue=t.value,t.value=`_${t.value}`,t.isLocal=!0);return n}const ln=new Map([["in "," in "]]);function an(t){return sn(t).map(t=>ln.get(t.value)||t.value).join("")}const cn=/\{\{.*?\}\}|\#\{.*?\}/g;function hn(t){return function(t,e){let n=t.match(cn);if(n&&n[0].length===t.length)return`(${e(t.slice(2,"{"===n[0][0]?-2:-1))})`;let o=t.replace(cn,t=>"${"+e(t.slice(2,"{"===t[0]?-2:-1))+"}");return"`"+o+"`"}(t,an)}const un=/\s+/g,dn=document.implementation.createDocument(null,null,null),fn=new Set(["stop","capture","prevent","self","synthetic"]);let pn={};function mn(t=""){return pn[t]=(pn[t]||0)+1,t+pn[t]}function gn(t,e){switch(t){case"input":return"checked"===e||"indeterminate"===e||"value"===e||"readonly"===e||"readOnly"===e||"disabled"===e;case"option":return"selected"===e||"disabled"===e;case"textarea":return"value"===e||"readonly"===e||"readOnly"===e||"disabled"===e;case"select":return"value"===e||"disabled"===e;case"button":case"optgroup":return"disabled"===e}return!1}function bn(t){return`\`${t.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/,"\\${")}\``}class yn{constructor(t,e){this.dynamicTagName=null,this.isRoot=!1,this.hasDynamicChildren=!1,this.children=[],this.data=[],this.childNumber=0,this.parentVar="",this.id=yn.nextBlockId++,this.varName="b"+this.id,this.blockName="block"+this.id,this.target=t,this.type=e}insertData(t,e="d"){const n=mn(e);return this.target.addLine(`let ${n} = ${t};`),this.data.push(n)-1}insert(t){this.currentDom?this.currentDom.appendChild(t):this.dom=t}generateExpr(t){if("block"===this.type){const t=this.children.length;let e=this.data.length?`[${this.data.join(", ")}]`:t?"[]":"";return t&&(e+=", ["+this.children.map(t=>t.varName).join(", ")+"]"),this.dynamicTagName?`toggler(${this.dynamicTagName}, ${this.blockName}(${this.dynamicTagName})(${e}))`:`${this.blockName}(${e})`}return"list"===this.type?`list(c_block${this.id})`:t}asXmlString(){const t=dn.createElement("t");return t.appendChild(this.dom),t.innerHTML}}function vn(t,e){return Object.assign({block:null,index:0,forceNewBlock:!0,translate:t.translate,translationCtx:t.translationCtx,tKeyExpr:null,nameSpace:t.nameSpace,tModelSelectedExpr:t.tModelSelectedExpr},e)}yn.nextBlockId=1;class wn{constructor(t,e){this.indentLevel=0,this.loopLevel=0,this.code=[],this.hasRoot=!1,this.hasCache=!1,this.shouldProtectScope=!1,this.name=t,this.on=e||null}addLine(t,e){const n=new Array(this.indentLevel+2).join(" ");void 0===e?this.code.push(n+t):this.code.splice(e,0,n+t)}generateCode(){let t=[];t.push(`function ${this.name}(ctx, node, key = "") {`),this.shouldProtectScope&&(t.push(" ctx = Object.create(ctx);"),t.push(" ctx[isBoundary] = 1")),this.hasCache&&(t.push(" let cache = ctx.cache || {};"),t.push(" let nextCache = ctx.cache = {};"));for(let e of this.code)t.push(e);return this.hasRoot||t.push("return text('');"),t.push("}"),t.join("\n ")}currentKey(t){let e=this.loopLevel?`key${this.loopLevel}`:"key";return t.tKeyExpr&&(e=`${t.tKeyExpr} + ${e}`),e}}const xn=["alt","aria-label","aria-placeholder","aria-roledescription","aria-valuetext","label","placeholder","title"],Nn=/^(\s*)([\s\S]+?)(\s*)$/;class $n{constructor(t,e){if(this.blocks=[],this.nextBlockId=1,this.isDebug=!1,this.targets=[],this.target=new wn("template"),this.translatableAttributes=xn,this.staticDefs=[],this.slotNames=new Set,this.helpers=new Set,this.translateFn=e.translateFn||(t=>t),e.translatableAttributes){const t=new Set(xn);for(let n of e.translatableAttributes)n.startsWith("-")?t.delete(n.slice(1)):t.add(n);this.translatableAttributes=[...t]}this.hasSafeContext=e.hasSafeContext||!1,this.dev=e.dev||!1,this.ast=t,this.templateName=e.name,e.hasGlobalValues&&this.helpers.add("__globals__")}generateCode(){const t=this.ast;this.isDebug=11===t.type,yn.nextBlockId=1,pn={},this.compileAST(t,{block:null,index:0,forceNewBlock:!1,isLast:!0,translate:!0,translationCtx:"",tKeyExpr:null});let e=[" let { text, createBlock, list, multi, html, toggler, comment } = bdom;"];this.helpers.size&&e.push(`let { ${[...this.helpers].join(", ")} } = helpers;`),this.templateName&&e.push(`// Template name: "${this.templateName}"`);for(let{id:t,expr:n}of this.staticDefs)e.push(`const ${t} = ${n};`);if(this.blocks.length){e.push("");for(let t of this.blocks)if(t.dom){let n=bn(t.asXmlString());t.dynamicTagName?(n=n.replace(/^`<\w+/,`\`<\${tag || '${t.dom.nodeName}'}`),n=n.replace(/\w+>`$/,`\${tag || '${t.dom.nodeName}'}>\``),e.push(`let ${t.blockName} = tag => createBlock(${n});`)):e.push(`let ${t.blockName} = createBlock(${n});`)}}if(this.targets.length)for(let t of this.targets)e.push(""),e=e.concat(t.generateCode());e.push(""),e=e.concat("return "+this.target.generateCode());const n=e.join("\n ");if(this.isDebug){const t=`[Owl Debug]\n${n}`;console.log(t)}return n}compileInNewTarget(t,e,n,o){const i=mn(t),r=this.target,s=new wn(i,o);return this.targets.push(s),this.target=s,this.compileAST(e,vn(n)),this.target=r,i}addLine(t,e){this.target.addLine(t,e)}define(t,e){this.addLine(`const ${t} = ${e};`)}insertAnchor(t,e=t.children.length){const n=`block-child-${e}`,o=dn.createElement(n);t.insert(o)}createBlock(t,e,n){const o=this.target.hasRoot,i=new yn(this.target,e);return o||(this.target.hasRoot=!0,i.isRoot=!0),t&&(t.children.push(i),"list"===t.type&&(i.parentVar=`c_block${t.id}`)),i}insertBlock(t,e,n){let o=e.generateExpr(t);if(e.parentVar){let t=this.target.currentKey(n);return this.helpers.add("withKey"),void this.addLine(`${e.parentVar}[${n.index}] = withKey(${o}, ${t});`)}n.tKeyExpr&&(o=`toggler(${n.tKeyExpr}, ${o})`),e.isRoot?(this.target.on&&(o=this.wrapWithEventCatcher(o,this.target.on)),this.addLine(`return ${o};`)):this.define(e.varName,o)}captureExpression(t,e=!1){if(!e&&!t.includes("=>"))return an(t);const n=sn(t),o=new Map;return n.map(t=>{if(t.varName&&!t.isLocal){if(!o.has(t.varName)){const e=mn("v");o.set(t.varName,e),this.define(e,t.value)}t.value=o.get(t.varName)}return t.value}).join("")}translate(t,e){const n=Nn.exec(t);return n[1]+this.translateFn(n[2],e)+n[3]}compileAST(t,e){switch(t.type){case 1:return this.compileComment(t,e);case 0:return this.compileText(t,e);case 2:return this.compileTDomNode(t,e);case 7:return this.compileTOut(t,e);case 4:return this.compileTIf(t,e);case 8:return this.compileTForeach(t,e);case 9:return this.compileTKey(t,e);case 3:return this.compileMulti(t,e);case 6:return this.compileTCall(t,e);case 14:return this.compileTCallBlock(t,e);case 5:return this.compileTSet(t,e);case 10:return this.compileComponent(t,e);case 11:return this.compileDebug(t,e);case 12:return this.compileLog(t,e);case 13:return this.compileTCallSlot(t,e);case 15:return this.compileTTranslation(t,e);case 16:return this.compileTTranslationContext(t,e);case 17:return this.compileTPortal(t,e)}}compileDebug(t,e){return this.addLine("debugger;"),t.content?this.compileAST(t.content,e):null}compileLog(t,e){return this.addLine(`console.log(${an(t.expr)});`),t.content?this.compileAST(t.content,e):null}compileComment(t,e){let{block:n,forceNewBlock:o}=e;if(!n||o)n=this.createBlock(n,"comment",e),this.insertBlock(`comment(${bn(t.value)})`,n,{...e,forceNewBlock:o&&!n});else{const e=dn.createComment(t.value);n.insert(e)}return n.varName}compileText(t,e){let{block:n,forceNewBlock:o}=e,i=t.value;if(i&&!1!==e.translate&&(i=this.translate(i,e.translationCtx)),e.inPreTag||(i=i.replace(un," ")),!n||o)n=this.createBlock(n,"text",e),this.insertBlock(`text(${bn(i)})`,n,{...e,forceNewBlock:o&&!n});else{const e=0===t.type?dn.createTextNode:dn.createComment;n.insert(e.call(dn,i))}return n.varName}generateHandlerCode(t,e){const n=t.split(".").slice(1).map(t=>{if(!fn.has(t))throw new s(`Unknown event modifier: '${t}'`);return`"${t}"`});let o="";return n.length&&(o=`${n.join(",")}, `),`[${o}${this.captureExpression(e)}, ctx]`}compileTDomNode(t,e){var n;let{block:o,forceNewBlock:i}=e;const r=!o||i||null!==t.dynamicTag||t.ns;let s=this.target.code.length;if(r&&((t.dynamicTag||e.tKeyExpr||t.ns)&&e.block&&this.insertAnchor(e.block),o=this.createBlock(o,"block",e),this.blocks.push(o),t.dynamicTag)){const e=mn("tag");this.define(e,an(t.dynamicTag)),o.dynamicTagName=e}const l={};for(let i in t.attrs){let r,s;if(i.startsWith("t-attf")){r=hn(t.attrs[i]);const e=o.insertData(r,"attr");s=i.slice(7),l["block-attribute-"+e]=s}else if(i.startsWith("t-att"))if(s="t-att"===i?null:i.slice(6),r=an(t.attrs[i]),s&&gn(t.tag,s)){"readonly"===s&&(s="readOnly"),r="value"===s?`new String((${r}) === 0 ? 0 : ((${r}) || ""))`:`new Boolean(${r})`;l[`block-property-${o.insertData(r,"prop")}`]=s}else{const t=o.insertData(r,"attr");"t-att"===i?l["block-attributes"]=String(t):l[`block-attribute-${t}`]=s}else if(this.translatableAttributes.includes(i)){const o=(null===(n=t.attrsTranslationCtx)||void 0===n?void 0:n[i])||e.translationCtx;l[i]=this.translateFn(t.attrs[i],o)}else r=`"${t.attrs[i]}"`,s=i,l[i]=t.attrs[i];if("value"===s&&e.tModelSelectedExpr){l[`block-attribute-${o.insertData(`${e.tModelSelectedExpr} === ${r}`,"attr")}`]="selected"}}let a;if(t.model){const{hasDynamicChildren:e,expr:n,eventType:i,shouldNumberize:r,shouldTrim:s,targetAttr:c,specialInitTargetAttr:h}=t.model,u=an(n),d=mn("expr");let f;if(this.helpers.add("modelExpr"),this.define(d,`modelExpr(${u})`),h){let e=c in l&&`'${l[c]}'`;if(!e&&t.attrs){const n=t.attrs[`t-att-${c}`];n&&(e=an(n))}f=o.insertData(`${d}() === ${e}`,"prop"),l[`block-property-${f}`]=h}else if(e){a=`${mn("bValue")}`,this.define(a,`${d}()`)}else f=o.insertData(`${d}()`,"prop"),l[`block-property-${f}`]=c;this.helpers.add("toNumber");let p=`ev.target.${c}`;p=s?`${p}.trim()`:p,p=r?`toNumber(${p})`:p;const m=`[(ev) => { ${d}.set(${p}); }]`;f=o.insertData(m,"hdlr"),l[`block-handler-${f}`]=i}for(let e in t.on){const n=this.generateHandlerCode(e,t.on[e]);l[`block-handler-${o.insertData(n,"hdlr")}`]=e}if(t.ref){const e=an(t.ref);this.helpers.add("createRef");const n=`createRef(${e})`,i=o.insertData(n,"ref");l["block-ref"]=String(i)}const c=t.ns||e.nameSpace,h=c?dn.createElementNS(c,t.tag):dn.createElement(t.tag);for(const[t,e]of Object.entries(l))"class"===t&&""===e||h.setAttribute(t,e);if(o.insert(h),t.content.length){const n=o.currentDom;o.currentDom=h;const i=t.content;for(let n=0;n<i.length;n++){const r=t.content[n],s=vn(e,{block:o,index:o.childNumber,forceNewBlock:!1,isLast:e.isLast&&n===i.length-1,tKeyExpr:e.tKeyExpr,nameSpace:c,tModelSelectedExpr:a,inPreTag:e.inPreTag||"pre"===t.tag});this.compileAST(r,s)}o.currentDom=n}if(r&&(this.insertBlock(`${o.blockName}(ddd)`,o,e),o.children.length&&o.hasDynamicChildren)){const t=this.target.code,e=o.children.slice();let n=e.shift();for(let o=s;o<t.length&&(!t[o].trimStart().startsWith(`const ${n.varName} `)||(t[o]=t[o].replace(`const ${n.varName}`,n.varName),n=e.shift(),n));o++);this.addLine(`let ${o.children.map(t=>t.varName).join(", ")};`,s)}return o.varName}compileTOut(t,e){let n,{block:o}=e;if(o&&this.insertAnchor(o),o=this.createBlock(o,"html",e),"0"===t.expr)this.helpers.add("zero"),n="ctx[zero]";else if(t.body){let o=null;o=yn.nextBlockId;const i=vn(e);this.compileAST({type:3,content:t.body},i),this.helpers.add("safeOutput"),n=`safeOutput(${an(t.expr)}, b${o})`}else this.helpers.add("safeOutput"),n=`safeOutput(${an(t.expr)})`;return this.insertBlock(n,o,e),o.varName}compileTIfBranch(t,e,n){this.target.indentLevel++;let o=e.children.length;this.compileAST(t,vn(n,{block:e,index:n.index})),e.children.length>o&&this.insertAnchor(e,o),this.target.indentLevel--}compileTIf(t,e,n){let{block:o,forceNewBlock:i}=e;const r=this.target.code.length,s=!o||"multi"!==o.type&&i;if(o&&(o.hasDynamicChildren=!0),(!o||"multi"!==o.type&&i)&&(o=this.createBlock(o,"multi",e)),this.addLine(`if (${an(t.condition)}) {`),this.compileTIfBranch(t.content,o,e),t.tElif)for(let n of t.tElif)this.addLine(`} else if (${an(n.condition)}) {`),this.compileTIfBranch(n.content,o,e);if(t.tElse&&(this.addLine("} else {"),this.compileTIfBranch(t.tElse,o,e)),this.addLine("}"),s){if(o.children.length){const t=this.target.code,e=o.children.slice();let n=e.shift();for(let o=r;o<t.length&&(!t[o].trimStart().startsWith(`const ${n.varName} `)||(t[o]=t[o].replace(`const ${n.varName}`,n.varName),n=e.shift(),n));o++);this.addLine(`let ${o.children.map(t=>t.varName).join(", ")};`,r)}const t=o.children.map(t=>t.varName).join(", ");this.insertBlock(`multi([${t}])`,o,e)}return o.varName}compileTForeach(t,e){let{block:n}=e;n&&this.insertAnchor(n),n=this.createBlock(n,"list",e),this.target.loopLevel++;const o=`i${this.target.loopLevel}`;this.addLine("ctx = Object.create(ctx);");const i=`v_block${n.id}`,r=`k_block${n.id}`,s=`l_block${n.id}`,l=`c_block${n.id}`;let a;this.helpers.add("prepareList"),this.define(`[${r}, ${i}, ${s}, ${l}]`,`prepareList(${an(t.collection)});`),this.dev&&this.define(`keys${n.id}`,"new Set()"),this.addLine(`for (let ${o} = 0; ${o} < ${s}; ${o}++) {`),this.target.indentLevel++,this.addLine(`ctx[\`${t.elem}\`] = ${r}[${o}];`),t.hasNoFirst||this.addLine(`ctx[\`${t.elem}_first\`] = ${o} === 0;`),t.hasNoLast||this.addLine(`ctx[\`${t.elem}_last\`] = ${o} === ${r}.length - 1;`),t.hasNoIndex||this.addLine(`ctx[\`${t.elem}_index\`] = ${o};`),t.hasNoValue||this.addLine(`ctx[\`${t.elem}_value\`] = ${i}[${o}];`),this.define(`key${this.target.loopLevel}`,t.key?an(t.key):o),this.dev&&(this.helpers.add("OwlError"),this.addLine(`if (keys${n.id}.has(String(key${this.target.loopLevel}))) { throw new OwlError(\`Got duplicate key in t-foreach: \${key${this.target.loopLevel}}\`)}`),this.addLine(`keys${n.id}.add(String(key${this.target.loopLevel}));`)),t.memo&&(this.target.hasCache=!0,a=mn(),this.define(`memo${a}`,an(t.memo)),this.define(`vnode${a}`,`cache[key${this.target.loopLevel}];`),this.addLine(`if (vnode${a}) {`),this.target.indentLevel++,this.addLine(`if (shallowEqual(vnode${a}.memo, memo${a})) {`),this.target.indentLevel++,this.addLine(`${l}[${o}] = vnode${a};`),this.addLine(`nextCache[key${this.target.loopLevel}] = vnode${a};`),this.addLine("continue;"),this.target.indentLevel--,this.addLine("}"),this.target.indentLevel--,this.addLine("}"));const c=vn(e,{block:n,index:o});return this.compileAST(t.body,c),t.memo&&this.addLine(`nextCache[key${this.target.loopLevel}] = Object.assign(${l}[${o}], {memo: memo${a}});`),this.target.indentLevel--,this.target.loopLevel--,this.addLine("}"),e.isLast||this.addLine("ctx = ctx.__proto__;"),this.insertBlock("l",n,e),n.varName}compileTKey(t,e){const n=mn("tKey_");return this.define(n,an(t.expr)),e=vn(e,{tKeyExpr:n,block:e.block,index:e.index}),this.compileAST(t.content,e)}compileMulti(t,e){let{block:n,forceNewBlock:o}=e;const i=!n||o;let r=this.target.code.length;if(i){let o=null;if(t.content.filter(t=>!t.hasNoRepresentation).length<=1){for(let n of t.content){const t=this.compileAST(n,e);o=o||t}return o}n=this.createBlock(n,"multi",e)}let s=0;for(let o=0,i=t.content.length;o<i;o++){const r=t.content[o],l=!r.hasNoRepresentation,a=vn(e,{block:n,index:s,forceNewBlock:l,isLast:e.isLast&&o===i-1});this.compileAST(r,a),l&&s++}if(i){if(n.hasDynamicChildren&&n.children.length){const t=this.target.code,e=n.children.slice();let o=e.shift();for(let n=r;n<t.length&&(!t[n].trimStart().startsWith(`const ${o.varName} `)||(t[n]=t[n].replace(`const ${o.varName}`,o.varName),o=e.shift(),o));n++);this.addLine(`let ${n.children.map(t=>t.varName).join(", ")};`,r)}const t=n.children.map(t=>t.varName).join(", ");this.insertBlock(`multi([${t}])`,n,e)}return n.varName}compileTCall(t,e){let{block:n,forceNewBlock:o}=e,i=e.ctxVar||"ctx";t.context&&(i=mn("ctx"),this.addLine(`let ${i} = {this: ${an(t.context)}, __owl__: this.__owl__};`));const r=cn.test(t.name),s=r?hn(t.name):"`"+t.name+"`";if(n&&!o&&this.insertAnchor(n),n=this.createBlock(n,"multi",e),t.body){this.addLine(`${i} = Object.create(${i});`),this.addLine(`${i}[isBoundary] = 1;`),this.helpers.add("isBoundary");const n=vn(e,{ctxVar:i}),o=this.compileMulti({type:3,content:t.body},n);o&&(this.helpers.add("zero"),this.addLine(`${i}[zero] = ${o};`))}const l=this.generateComponentKey();if(r){const t=mn("template");this.staticDefs.find(t=>"call"===t.id)||this.staticDefs.push({id:"call",expr:"app.callTemplate.bind(app)"}),this.define(t,s),this.insertBlock(`call(this, ${t}, ${i}, node, ${l})`,n,{...e,forceNewBlock:!n})}else{const t=mn("callTemplate_");this.staticDefs.push({id:t,expr:`app.getTemplate(${s})`}),this.insertBlock(`${t}.call(this, ${i}, node, ${l})`,n,{...e,forceNewBlock:!n})}return t.body&&!e.isLast&&this.addLine(`${i} = ${i}.__proto__;`),n.varName}compileTCallBlock(t,e){let{block:n,forceNewBlock:o}=e;return n&&(o||this.insertAnchor(n)),n=this.createBlock(n,"multi",e),this.insertBlock(an(t.name),n,{...e,forceNewBlock:!n}),n.varName}compileTSet(t,e){this.target.shouldProtectScope=!0,this.helpers.add("isBoundary").add("withDefault");const n=t.value?an(t.value||""):"null";if(t.body){this.helpers.add("LazyValue");const o={type:3,content:t.body};let i=`new LazyValue(${this.compileInNewTarget("value",o,e)}, ctx, this, node, ${this.target.currentKey(e)})`;i=t.value?i?`withDefault(${n}, ${i})`:n:i,this.addLine(`ctx[\`${t.name}\`] = ${i};`)}else{let o;if(t.defaultValue){const i=bn(e.translate?this.translate(t.defaultValue,e.translationCtx):t.defaultValue);o=t.value?`withDefault(${n}, ${i})`:i}else o=n;this.helpers.add("setContextValue"),this.addLine(`setContextValue(${e.ctxVar||"ctx"}, "${t.name}", ${o});`)}return null}generateComponentKey(t="key"){const e=[mn("__")];for(let t=0;t<this.target.loopLevel;t++)e.push(`\${key${t+1}}`);return`${t} + \`${e.join("__")}\``}formatProp(t,e,n,o){if(t.endsWith(".translate")){const i=(null==n?void 0:n[t])||o;e=bn(this.translateFn(e,i))}else e=this.captureExpression(e);if(t.includes(".")){let[n,o]=t.split(".");switch(t=n,o){case"bind":e=`(${e}).bind(this)`;break;case"alike":case"translate":break;default:throw new s(`Invalid prop suffix: ${o}`)}}return`${t=/^[a-z_]+$/i.test(t)?t:`'${t}'`}: ${e||void 0}`}formatPropObject(t,e,n){return Object.entries(t).map(([t,o])=>this.formatProp(t,o,e,n))}getPropString(t,e){let n=`{${t.join(",")}}`;return e&&(n=`Object.assign({}, ${an(e)}${t.length?", "+n:""})`),n}compileComponent(t,e){let{block:n}=e;const o="slots"in(t.props||{}),i=t.props?this.formatPropObject(t.props,t.propsTranslationCtx,e.translationCtx):[];let r="";if(t.slots){let n="ctx";!this.target.loopLevel&&this.hasSafeContext||(n=mn("ctx"),this.helpers.add("capture"),this.define(n,"capture(ctx)"));let o=[];for(let i in t.slots){const r=t.slots[i],s=[];if(r.content){const t=this.compileInNewTarget("slot",r.content,e,r.on);s.push(`__render: ${t}.bind(this), __ctx: ${n}`)}const l=t.slots[i].scope;l&&s.push(`__scope: "${l}"`),t.slots[i].attrs&&s.push(...this.formatPropObject(t.slots[i].attrs,t.slots[i].attrsTranslationCtx,e.translationCtx));const a=`{${s.join(", ")}}`;o.push(`'${i}': ${a}`)}r=`{${o.join(", ")}}`}!r||t.dynamicProps||o||(this.helpers.add("markRaw"),i.push(`slots: markRaw(${r})`));let s,l,a=this.getPropString(i,t.dynamicProps);(r&&(t.dynamicProps||o)||this.dev)&&(s=mn("props"),this.define(s,a),a=s),r&&(t.dynamicProps||o)&&(this.helpers.add("markRaw"),this.addLine(`${s}.slots = markRaw(Object.assign(${r}, ${s}.slots))`)),t.isDynamic?(l=mn("Comp"),this.define(l,an(t.name))):l=`\`${t.name}\``,n&&(!1===e.forceNewBlock||e.tKeyExpr)&&this.insertAnchor(n);let c=this.generateComponentKey();e.tKeyExpr&&(c=`${e.tKeyExpr} + ${c}`);let h=mn("comp");const u=[];for(let e in t.props||{}){let[t,n]=e.split(".");n||u.push(`"${t}"`)}this.staticDefs.push({id:h,expr:`app.createComponent(${t.isDynamic?null:l}, ${!t.isDynamic}, ${!!t.slots}, ${!!t.dynamicProps}, [${u}])`}),t.isDynamic&&(c=`(${l}).name + ${c}`);let d=`${h}(${a}, ${c}, node, this, ${t.isDynamic?l:null})`;return t.isDynamic&&(d=`toggler(${l}, ${d})`),t.on&&(d=this.wrapWithEventCatcher(d,t.on)),n=this.createBlock(n,"multi",e),this.insertBlock(d,n,e),n.varName}wrapWithEventCatcher(t,e){this.helpers.add("createCatcher");let n=mn("catcher"),o={},i=[];for(let t in e){let n=mn("hdlr"),r=i.push(n)-1;o[t]=r;const s=this.generateHandlerCode(t,e[t]);this.define(n,s)}return this.staticDefs.push({id:n,expr:`createCatcher(${JSON.stringify(o)})`}),`${n}(${t}, [${i.join(",")}])`}compileTCallSlot(t,e){this.helpers.add("callSlot");let n,o,{block:i}=e,r=!1,s=!1;t.name.match(cn)?(r=!0,s=!0,o=hn(t.name)):(o="'"+t.name+"'",s=s||this.slotNames.has(t.name),this.slotNames.add(t.name));const l={...t.attrs},a=l["t-props"];delete l["t-props"];let c=this.target.loopLevel?`key${this.target.loopLevel}`:"key";s&&(c=this.generateComponentKey(c));const h=t.attrs?this.formatPropObject(l,t.attrsTranslationCtx,e.translationCtx):[],u=this.getPropString(h,a);if(t.defaultContent){n=`callSlot(ctx, node, ${c}, ${o}, ${r}, ${u}, ${this.compileInNewTarget("defaultContent",t.defaultContent,e)}.bind(this))`}else if(r){let t=mn("slot");this.define(t,o),n=`toggler(${t}, callSlot(ctx, node, ${c}, ${t}, ${r}, ${u}))`}else n=`callSlot(ctx, node, ${c}, ${o}, ${r}, ${u})`;return t.on&&(n=this.wrapWithEventCatcher(n,t.on)),i&&this.insertAnchor(i),i=this.createBlock(i,"multi",e),this.insertBlock(n,i,{...e,forceNewBlock:!1}),i.varName}compileTTranslation(t,e){return t.content?this.compileAST(t.content,Object.assign({},e,{translate:!1})):null}compileTTranslationContext(t,e){return t.content?this.compileAST(t.content,Object.assign({},e,{translationCtx:t.translationCtx})):null}compileTPortal(t,e){this.staticDefs.find(t=>"Portal"===t.id)||this.staticDefs.push({id:"Portal",expr:"app.Portal"});let{block:n}=e;const o=this.compileInNewTarget("slot",t.content,e);let i="ctx";!this.target.loopLevel&&this.hasSafeContext||(i=mn("ctx"),this.helpers.add("capture"),this.define(i,"capture(ctx)"));let r=mn("comp");this.staticDefs.push({id:r,expr:"app.createComponent(null, false, true, false, false)"});const s=`${r}({target: ${an(t.target)},slots: {'default': {__render: ${o}.bind(this), __ctx: ${i}}}}, ${this.generateComponentKey()}, node, ctx, Portal)`;return n&&this.insertAnchor(n),n=this.createBlock(n,"multi",e),this.insertBlock(s,n,{...e,forceNewBlock:!1}),n.varName}}const kn=new WeakMap;function En(t,e){var n;return function(t){let e=t.querySelectorAll("[t-elif], [t-else]");for(let t=0,n=e.length;t<n;t++){let n=e[t],o=n.previousElementSibling,i=t=>o.getAttribute(t),r=t=>+!!n.getAttribute(t);if(!o||!i("t-if")&&!i("t-elif"))throw new s("t-elif and t-else directives must be preceded by a t-if or t-elif directive");{if(i("t-foreach"))throw new s("t-if cannot stay at the same level as t-foreach when using t-elif or t-else");if(["t-if","t-elif","t-else"].map(r).reduce(function(t,e){return t+e})>1)throw new s("Only one conditional branching directive is allowed per node");let t;for(;(t=n.previousSibling)!==o;){if(t.nodeValue.trim().length&&8!==t.nodeType)throw new s("text is not allowed between branching directives");t.remove()}}}}(n=t),function(t){const e=[...t.querySelectorAll("[t-out]")].filter(t=>t.tagName[0]===t.tagName[0].toUpperCase()||t.hasAttribute("t-component"));for(const t of e){if(t.childNodes.length)throw new s("Cannot have t-out on a component that already has content");const e=t.getAttribute("t-out");t.removeAttribute("t-out");const n=t.ownerDocument.createElement("t");null!=e&&n.setAttribute("t-out",e),t.appendChild(n)}}(n),Tn(t,e)||{type:0,value:""}}function Tn(t,e){return t instanceof Element?function(t,e){if(!e.customDirectives)return null;const n=t.getAttributeNames();for(let o of n){if("t-custom"===o||"t-custom-"===o)throw new s("Missing custom directive name with t-custom directive");if(o.startsWith("t-custom-")){const n=o.split(".")[0].slice(9),i=e.customDirectives[n];if(!i)throw new s(`Custom directive "${n}" is not defined`);const r=t.getAttribute(o),l=o.split(".").slice(1);t.removeAttribute(o);try{i(t,r,l)}catch(t){throw new s(`Custom directive "${n}" throw the following error: ${t}`)}return Tn(t,e)}}return null}(t,e)||function(t,e){if(t.hasAttribute("t-debug")){t.removeAttribute("t-debug");const n=Tn(t,e),o={type:11,content:n};return(null==n?void 0:n.hasNoRepresentation)&&(o.hasNoRepresentation=!0),o}if(t.hasAttribute("t-log")){const n=t.getAttribute("t-log");t.removeAttribute("t-log");const o=Tn(t,e),i={type:12,expr:n,content:o};return(null==o?void 0:o.hasNoRepresentation)&&(i.hasNoRepresentation=!0),i}return null}(t,e)||function(t,e){if(!t.hasAttribute("t-foreach"))return null;const n=t.outerHTML,o=t.getAttribute("t-foreach");t.removeAttribute("t-foreach");const i=t.getAttribute("t-as")||"";t.removeAttribute("t-as");const r=t.getAttribute("t-key");if(!r)throw new s(`"Directive t-foreach should always be used with a t-key!" (expression: t-foreach="${o}" t-as="${i}")`);t.removeAttribute("t-key");const l=t.getAttribute("t-memo")||"";t.removeAttribute("t-memo");const a=Tn(t,e);if(!a)return null;const c=!n.includes("t-call"),h=c&&!n.includes(`${i}_first`),u=c&&!n.includes(`${i}_last`),d=c&&!n.includes(`${i}_index`),f=c&&!n.includes(`${i}_value`);return{type:8,collection:o,elem:i,body:a,memo:l,key:r,hasNoFirst:h,hasNoLast:u,hasNoIndex:d,hasNoValue:f}}(t,e)||function(t,e){if(!t.hasAttribute("t-if"))return null;const n=t.getAttribute("t-if");t.removeAttribute("t-if");const o=Tn(t,e)||{type:0,value:""};let i=t.nextElementSibling;const r=[];for(;i&&i.hasAttribute("t-elif");){const t=i.getAttribute("t-elif");i.removeAttribute("t-elif");const n=Tn(i,e),o=i.nextElementSibling;i.remove(),i=o,n&&r.push({condition:t,content:n})}let s=null;i&&i.hasAttribute("t-else")&&(i.removeAttribute("t-else"),s=Tn(i,e),i.remove());return{type:4,condition:n,content:o,tElif:r.length?r:null,tElse:s}}(t,e)||function(t,e){if(!t.hasAttribute("t-portal"))return null;const n=t.getAttribute("t-portal");t.removeAttribute("t-portal");const o=Tn(t,e);if(!o)return{type:0,value:""};return{type:17,target:n,content:o}}(t,e)||function(t,e){if(!t.hasAttribute("t-call"))return null;const n=t.getAttribute("t-call"),o=t.getAttribute("t-call-context");if(t.removeAttribute("t-call"),t.removeAttribute("t-call-context"),"t"!==t.tagName){const i=Tn(t,e),r={type:6,name:n,body:null,context:o};if(i&&2===i.type)return i.content=[r],i;if(i&&10===i.type)return{...i,slots:{default:{content:r,scope:null,on:null,attrs:null,attrsTranslationCtx:null}}}}const i=On(t,e);return{type:6,name:n,body:i.length?i:null,context:o}}(t,e)||function(t){if(!t.hasAttribute("t-call-block"))return null;const e=t.getAttribute("t-call-block");return{type:14,name:e}}(t)||function(t,e){if("off"!==t.getAttribute("t-translation"))return null;t.removeAttribute("t-translation");const n=Tn(t,e);if(3===(null==n?void 0:n.type)){return Rn(n.content.map(Dn))}return Dn(n)}(t,e)||function(t,e){const n=t.getAttribute("t-translation-context");if(!n)return null;t.removeAttribute("t-translation-context");const o=Tn(t,e);if(3===(null==o?void 0:o.type)){return Rn(o.content.map(t=>Sn(t,n)))}return Sn(o,n)}(t,e)||function(t,e){if(!t.hasAttribute("t-key"))return null;const n=t.getAttribute("t-key");t.removeAttribute("t-key");const o=Tn(t,e);if(!o)return null;const i={type:9,expr:n,content:o};o.hasNoRepresentation&&(i.hasNoRepresentation=!0);return i}(t,e)||function(t,e){if(!t.hasAttribute("t-out")&&!t.hasAttribute("t-esc"))return null;t.hasAttribute("t-esc")&&console.warn('t-esc has been deprecated in favor of t-out. If the value to render is not wrapped by the "markup" function, it will be escaped');const n=t.getAttribute("t-out")||t.getAttribute("t-esc");t.removeAttribute("t-out"),t.removeAttribute("t-esc");const o={type:7,expr:n,body:null},i=t.getAttribute("t-ref");t.removeAttribute("t-ref");const r=Tn(t,e);if(!r)return o;if(2===r.type)return o.body=r.content.length?r.content:null,{...r,ref:i,content:[o]};return o}(t,e)||function(t,e){if(!t.hasAttribute("t-call-slot"))return null;const n=t.getAttribute("t-call-slot");t.removeAttribute("t-call-slot");let o=null,i=null,r=null;for(let e of t.getAttributeNames()){const n=t.getAttribute(e);if(e.startsWith("t-on-"))r=r||{},r[e.slice(5)]=n;else if(e.startsWith("t-translation-context-")){i=i||{},i[e.slice(22)]=n}else o=o||{},o[e]=n}return{type:13,name:n,attrs:o,attrsTranslationCtx:i,on:r,defaultContent:Ln(t,e)}}(t,e)||function(t,e){let n=t.tagName;const o=n[0];let i=t.hasAttribute("t-component");if(i&&"t"!==n)throw new s(`Directive 't-component' can only be used on <t> nodes (used on a <${n}>)`);if(o!==o.toUpperCase()&&!i)return null;i&&(n=t.getAttribute("t-component"),t.removeAttribute("t-component"));const r=t.getAttribute("t-props");t.removeAttribute("t-props");const l=t.getAttribute("t-slot-scope");t.removeAttribute("t-slot-scope");let a=null,c=null,h=null;for(let e of t.getAttributeNames()){const n=t.getAttribute(e);if(e.startsWith("t-translation-context-")){h=h||{},h[e.slice(22)]=n}else if(e.startsWith("t-")){if(!e.startsWith("t-on-")){const t=Cn.get(e.split("-").slice(0,2).join("-"));throw new s(t||`unsupported directive on Component: ${e}`)}a=a||{},a[e.slice(5)]=n}else c=c||{},c[e]=n}let u=null;if(t.hasChildNodes()){const n=t.cloneNode(!0),o=Array.from(n.querySelectorAll("[t-set-slot]"));for(let t of o){if("t"!==t.tagName)throw new s(`Directive 't-set-slot' can only be used on <t> nodes (used on a <${t.tagName}>)`);const o=t.getAttribute("t-set-slot");let i=t.parentElement,r=!1;for(;i&&i!==n;){if(i.hasAttribute("t-component")||i.tagName[0]===i.tagName[0].toUpperCase()){r=!0;break}i=i.parentElement}if(r||!i)continue;t.removeAttribute("t-set-slot"),t.remove();const l=Tn(t,e);let a=null,c=null,h=null,d=null;for(let e of t.getAttributeNames()){const n=t.getAttribute(e);if("t-slot-scope"!==e)if(e.startsWith("t-translation-context-")){h=h||{},h[e.slice(22)]=n}else e.startsWith("t-on-")?(a=a||{},a[e.slice(5)]=n):(c=c||{},c[e]=n);else d=n}u=u||{},u[o]={content:l,on:a,attrs:c,attrsTranslationCtx:h,scope:d}}const i=Ln(n,e);u=u||{},i&&!u.default&&(u.default={content:i,on:a,attrs:null,attrsTranslationCtx:null,scope:l})}return{type:10,name:n,isDynamic:i,dynamicProps:r,props:c,propsTranslationCtx:h,slots:u,on:a}}(t,e)||function(t,e){const{tagName:n}=t,o=t.getAttribute("t-tag");if(t.removeAttribute("t-tag"),"t"===n&&!o)return null;if(n.startsWith("block-"))throw new s(`Invalid tag name: '${n}'`);e=Object.assign({},e),"pre"===n&&(e.inPreTag=!0);let i=!e.nameSpace&&An.has(n)?"http://www.w3.org/2000/svg":null;const r=t.getAttribute("t-ref");t.removeAttribute("t-ref");const l=t.getAttributeNames();let a=null,c=null,h=null,u=null;for(let o of l){const r=t.getAttribute(o);if("t-on"===o||"t-on-"===o)throw new s("Missing event name with t-on directive");if(o.startsWith("t-on-"))h=h||{},h[o.slice(5)]=r;else if(o.startsWith("t-model")){if(!["input","select","textarea"].includes(n))throw new s("The t-model directive only works with <input>, <textarea> and <select>");const i=t.getAttribute("type"),l="input"===n,a="select"===n,c=l&&"checkbox"===i,h=l&&"radio"===i,d=o.includes(".trim"),f=d||o.includes(".lazy");u={expr:r,targetAttr:c?"checked":"value",specialInitTargetAttr:h?"checked":null,eventType:h?"click":a||f?"change":"input",hasDynamicChildren:!1,shouldTrim:d,shouldNumberize:o.includes(".number")},a&&((e=Object.assign({},e)).tModelInfo=u)}else{if(o.startsWith("block-"))throw new s(`Invalid attribute: '${o}'`);if("xmlns"===o)i=r;else if(o.startsWith("t-translation-context-")){c=c||{},c[o.slice(22)]=r}else if("t-name"!==o){if(o.startsWith("t-")&&!o.startsWith("t-att"))throw new s(`Unknown QWeb directive: '${o}'`);const t=e.tModelInfo;t&&["t-att-value","t-attf-value"].includes(o)&&(t.hasDynamicChildren=!0),a=a||{},a[o]=r}}}i&&(e.nameSpace=i);const d=On(t,e);return{type:2,tag:n,dynamicTag:o,attrs:a,attrsTranslationCtx:c,on:h,ref:r,content:d,model:u,ns:i}}(t,e)||function(t,e){if(!t.hasAttribute("t-set"))return null;const n=t.getAttribute("t-set"),o=t.getAttribute("t-value")||null,i=t.innerHTML===t.textContent&&t.textContent||null;let r=null;t.textContent!==t.innerHTML&&(r=On(t,e));return{type:5,name:n,value:o,defaultValue:i,body:r,hasNoRepresentation:!0}}(t,e)||function(t,e){if("t"!==t.tagName)return null;return Ln(t,e)}(t,e):function(t,e){if(t.nodeType===Node.TEXT_NODE){let n=t.textContent||"";return e.inPreTag||!_n.test(n)||n.trim()?{type:0,value:n}:null}if(t.nodeType===Node.COMMENT_NODE)return{type:1,value:t.textContent||""};return null}(t,e)}const _n=/[\r\n]/;const An=new Set(["svg","g","path"]);const Cn=new Map([["t-ref","t-ref is no longer supported on components. Consider exposing only the public part of the component's API through a callback prop."],["t-att","t-att makes no sense on component: props are already treated as expressions"],["t-attf","t-attf is not supported on components: use template strings for string interpolation in props"]]);function Dn(t){const e={type:15,content:t};return(null==t?void 0:t.hasNoRepresentation)&&(e.hasNoRepresentation=!0),e}function Sn(t,e){const n={type:16,content:t,translationCtx:e};return(null==t?void 0:t.hasNoRepresentation)&&(n.hasNoRepresentation=!0),n}function On(t,e){const n=[];for(let o of t.childNodes){const t=Tn(o,e);t&&(3===t.type?n.push(...t.content):n.push(t))}return n}function Rn(t){const e={type:3,content:t};return t.every(t=>t.hasNoRepresentation)&&(e.hasNoRepresentation=!0),e}function Ln(t,e){const n=On(t,e);switch(n.length){case 0:return null;case 1:return n[0];default:return Rn(n)}}function Bn(t,e={hasGlobalValues:!1}){const n=function(t,e){const n={inPreTag:!1,customDirectives:e};if("string"==typeof t)return En(Ge(`<t>${t}</t>`).firstChild,n);let o=kn.get(t);return o||(o=En(t.cloneNode(!0),n),kn.set(t,o)),o}(t,e.customDirectives),o=t instanceof Node?!(t instanceof Element)||null===t.querySelector("[t-set], [t-call]"):!t.includes("t-set=")&&!t.includes("t-call="),i=new $n(n,{...e,hasSafeContext:o}).generateCode();try{return new Function("app, bdom, helpers",i)}catch(t){const{name:n}=e,o=new s(`Failed to compile ${n?`template "${n}"`:"anonymous template"}: ${t.message}\n\ngenerated code:\nfunction(app, bdom, helpers) {\n${i}\n}`);throw o.cause=t,o}}class Pn{constructor(){this.tasks=new Set,this.frame=0,this.delayedRenders=[],this.cancelledNodes=new Set,this.processing=!1,this.requestAnimationFrame=Pn.requestAnimationFrame}addFiber(t){this.tasks.add(t.root)}scheduleDestroy(t){this.cancelledNodes.add(t),0===this.frame&&(this.frame=this.requestAnimationFrame(()=>this.processTasks()))}flush(){if(this.delayedRenders.length){let t=this.delayedRenders;this.delayedRenders=[];for(let e of t)e.root&&3!==e.node.status&&e.node.fiber===e&&e.render()}0===this.frame&&(this.frame=this.requestAnimationFrame(()=>this.processTasks()))}processTasks(){if(!this.processing){this.processing=!0,this.frame=0;for(let t of this.cancelledNodes)t._destroy();this.cancelledNodes.clear();for(let t of this.tasks)this.processFiber(t);for(let t of this.tasks)3===t.node.status&&this.tasks.delete(t);this.processing=!1}}processFiber(t){if(t.root!==t)return void this.tasks.delete(t);const e=Vt.has(t);e&&0!==t.counter?this.tasks.delete(t):3!==t.node.status?0===t.counter&&(e||t.complete(),t.appliedToDom&&this.tasks.delete(t)):this.tasks.delete(t)}}Pn.requestAnimationFrame=window.requestAnimationFrame.bind(window);let Mn=!1;const In=new Set;window.__OWL_DEVTOOLS__||(window.__OWL_DEVTOOLS__={apps:In,Fiber:Gt,RootFiber:qt,toRaw:_e,proxy:Le});class jn extends Xe{constructor(t={}){super(t),this.scheduler=new Pn,this.roots=new Set,this.name=t.name||"",In.add(this),this.pluginManager=t.pluginManager||new le(null),t.plugins&&this.pluginManager.startPlugins(t.plugins),t.test&&(this.dev=!0),!this.dev||t.test||Mn||(console.info("Owl is running in 'dev' mode."),Mn=!0)}createRoot(t,e={}){const n=e.props||{};let o,i;const r=new Promise((t,e)=>{o=t,i=e}),s=function(){let t=Yt;return()=>{Yt=t}}();let l,a=null;try{l=this.makeNode(t,n)}catch(t){a=t,i(t)}finally{s()}const c={node:l,promise:r,mount:(t,e)=>(a||(jn.validateTarget(t),this.mountNode(l,t,o,i,e)),r),destroy:()=>{this.roots.delete(c),l.destroy(),this.scheduler.processTasks()}};return this.roots.add(c),c}makeNode(t,e){return new Zt(t,e,this,null,null)}mountNode(t,e,n,o,i){let r=Wt.get(t);r||(r=[],Wt.set(t,r)),r.unshift((t,e)=>{const n=e();o(n)}),t.mounted.push(()=>{n(t.component),r.shift()}),t.mountComponent(e,i)}destroy(){for(let t of this.roots)t.destroy();this.scheduler.processTasks(),In.delete(this)}createComponent(t,e,n,o,i){const r=!e;let l;const a=0===i.length;l=n?(t,e)=>!0:o?function(t,e){for(let n in t)if(t[n]!==e[n])return!0;return Object.keys(t).length!==Object.keys(e).length}:a?(t,e)=>!1:function(t,e){for(let n of i)if(t[n]!==e[n])return!0;return!1};const c=Zt.prototype.updateAndRender,h=Zt.prototype.initiateRender;return(n,o,i,a,u)=>{let d=i.children,f=d[o];r&&f&&f.component.constructor!==u&&(f=void 0);const p=i.fiber;if(f)(l(f.props,n)||p.deep||f.forceNextRender)&&(f.forceNextRender=!1,c.call(f,n,p));else{if(e){const e=a.constructor.components;if(!e)throw new s(`Cannot find the definition of component "${t}", missing static components key in parent`);if(!(u=e[t]))throw new s(`Cannot find the definition of component "${t}"`);if(!(u.prototype instanceof Qt))throw new s(`"${t}" is not a Component. It must inherit from the Component class`)}f=new Zt(u,n,this,i,o),d[o]=f,h.call(f,new Gt(f,p))}return p.childrenMap[o]=f,f}}handleError(...t){return Ut(...t)}}jn.validateTarget=function(t){const e=t&&t.ownerDocument;if(e){if(!e.defaultView)throw new s("Cannot mount a component: the target document is not attached to a window (defaultView is missing)");if(t instanceof e.defaultView.HTMLElement||t instanceof ShadowRoot){if(!function(t,e){let n=t;const o=e.defaultView.ShadowRoot;for(;n;){if(n===e)return!0;if(n.parentNode)n=n.parentNode;else{if(!(n instanceof o&&n.host))return!1;n=n.host}}return!1}(t,e))throw new s("Cannot mount a component on a detached dom node");return}}throw new s("Cannot mount component: the target is not a valid DOM element")},jn.apps=In,jn.version="3.0.0-alpha";function Vn(t,e){let n;return()=>(null!=n||(n={state:_t.STALE,sources:new Set,compute:()=>(St(n),t()),isDerived:!0,value:void 0,observers:new Set,name:null==e?void 0:e.name}),Mt(n),Dt(n),n.value)}const Wn=Symbol("Signal");function Fn(t,e,n){const o={value:t,observers:new Set,name:null==n?void 0:n.name};let i=e(o);const r=()=>(Dt(o),i);return r[Wn]=o,r.set=t=>{Object.is(o.value,t)||(o.value=t,i=e(o),St(o))},r}function Kn(t,e){return Fn(t,t=>t.value,e)}Kn.invalidate=function(t){if(!(Wn in t))throw new s(`Value is not a signal (${t})`);St(t[Wn])},Kn.Array=function(t,e){return Fn(t,t=>Re(t.value,t),e)},Kn.Object=function(t,e){return Fn(t,t=>Re(t.value,t),e)},Kn.Map=function(t,e){return Fn(t,t=>Re(t.value,t),e)},Kn.Set=function(t,e){return Fn(t,t=>Re(t.value,t),e)};function Un(t,e){var n,o,i;const r={state:_t.STALE,value:void 0,compute:()=>(Bt(void 0),Hn(r),Bt(r),t()),sources:new Set,childrenEffect:[],name:null==e?void 0:e.name};return null===(i=null===(o=null===(n=Lt())||void 0===n?void 0:n.childrenEffect)||void 0===o?void 0:o.push)||void 0===i||i.call(o,r),Mt(r),()=>{const t=Lt();Bt(void 0),Hn(r),Bt(t)}}function Hn(t){It(t),function(t){const e=t.value;e&&"function"==typeof e&&(e(),t.value=void 0)}(t);for(const e of t.childrenEffect)e.state=_t.EXECUTED,It(e),Hn(e);t.childrenEffect.length=0}n.shouldNormalizeDom=!1,n.mainEventHandler=(t,n,o)=>{const{data:i,modifiers:r}=e(t);t=i;let l=!1;if(r.length){let t=!1;const e=n.target===o;for(const o of r)switch(o){case"self":if(t=!0,e)continue;return l;case"prevent":(t&&e||!t)&&n.preventDefault();continue;case"stop":(t&&e||!t)&&n.stopPropagation(),l=!0;continue}}if(Object.hasOwnProperty.call(t,0)){const e=t[0];if("function"!=typeof e)throw new s(`Invalid handler (expected a function, received: '${e}')`);let o=t[1]?t[1].__owl__:null;o&&1!==o.status||e.call(o?o.component:null,n)}return l};const zn={config:n,mount:Tt,patch:function(t,e,n=!1){t.patch(e,n)},remove:function(t,e=!1){e&&t.beforeRemove(),t.remove()},list:vt,multi:j,text:q,toggler:r,createBlock:st,html:Et,comment:X},Gn={version:jn.version};Xe.prototype._compileTemplate=function(t,e){return Bn(e,{name:t,dev:this.dev,translateFn:this.translateFn,translatableAttributes:this.translatableAttributes,customDirectives:this.customDirectives,hasGlobalValues:this.hasGlobalValues})},t.App=jn,t.Component=Qt,t.EventBus=k,t.OwlError=s,t.Plugin=class{static get id(){var t;return null!==(t=this._shadowId)&&void 0!==t?t:this.name}static set id(t){this._shadowId=t}setup(){}},t.PluginManager=le,t.Registry=class{constructor(t={}){this._map=Kn.Object(Object.create(null)),this.entries=Vn(()=>Object.entries(this._map()).sort((t,e)=>t[1][0]-e[1][0]).map(([t,e])=>[t,e[1]])),this.items=Vn(()=>this.entries().map(t=>t[1])),this._name=t.name||"registry",this._validation=t.validation}addById(t,e=50){if(!t.id)throw new s(`Item should have an id key (registry '${this._name}')`);return this.add(t.id,t,e)}add(t,e,n=50){return this._validation&&te(e,this._validation),this._map()[t]=[n,e],this}get(t,e){const n=t in this._map();if(!n&&arguments.length<2)throw new Error(`KeyNotFoundError: Cannot find key "${t}" (registry '${this._name}')`);return n?this._map()[t][1]:e}remove(t){delete this._map()[t]}has(t){return t in this._map()}},t.Resource=class{constructor(t={}){this._items=Kn.Array([]),this.items=Vn(()=>this._items().sort((t,e)=>t[0]-e[0]).map(t=>t[1])),this._validation=t.validation}add(t,e=50){return this._validation&&te(t,this._validation),this._items().push([e,t]),this}remove(t){const e=this._items().filter(([e,n])=>n!==t);return this._items.set(e),this}has(t){return this._items().some(([e,n])=>n===t)}},t.__info__=Gn,t.assertType=te,t.batched=$,t.blockDom=zn,t.computed=Vn,t.effect=Un,t.htmlEscape=T,t.markRaw=Te,t.markup=_,t.mount=async function(t,e,n={}){return new jn(n).createRoot(t,n).mount(e,n)},t.onError=function(t){const e=Jt();let n=Wt.get(e);n||(n=[],Wt.set(e,n)),n.push(t.bind(e.component))},t.onMounted=he,t.onPatched=function(t){const e=Jt();e.patched.push(ce(e,t,"onPatched"))},t.onWillDestroy=de,t.onWillPatch=function(t){const e=Jt();e.willPatch.unshift(ce(e,t,"onWillPatch"))},t.onWillStart=function(t){const e=Jt();e.willStart.push(ce(e,t,"onWillStart"))},t.onWillUnmount=ue,t.onWillUpdateProps=function(t){const e=Jt();e.willUpdateProps.push(ce(e,t,"onWillUpdateProps"))},t.plugin=ae,t.props=fe,t.providePlugins=function(t,e){const n=Jt(),o=new le(n.pluginManager);return n.pluginManager=o,de(()=>o.destroy()),o.startPlugins(t,e)},t.signal=Kn,t.state=Le,t.status=function(){const t=le.current,e=t||Jt();return()=>{switch(e.status){case 0:return"new";case 2:return"cancelled";case 1:return t?"started":"mounted";case 3:return"destroyed"}}},t.toRaw=_e,t.types=re,t.untrack=Rt,t.useComponent=function(){return Yt.component},t.useEffect=function(t){de(Un(t))},t.useListener=function(t,e,n,o){t.addEventListener(e,n,o),de(()=>t.removeEventListener(e,n,o))},t.useResource=function(t,e){for(let n of e)t.add(n);de(()=>{for(let n of e)t.remove(n)})},t.validateType=ee,t.whenReady=function(t){return new Promise(function(t){"loading"!==document.readyState?t(!0):document.addEventListener("DOMContentLoaded",t,!1)}).then(t||function(){})},t.xml=Je,Object.defineProperty(t,"__esModule",{value:!0}),Gn.date="2026-01-18T08:00:45.537Z",Gn.hash="08a7334",Gn.url="https://github.com/odoo/owl"}(this.owl=this.owl||{});
1
+ !function(t){"use strict";function e(t){t=t.slice();const e=[];let n;for(;(n=t[0])&&"string"==typeof n;)e.push(t.shift());return{modifiers:e,data:t}}const n={shouldNormalizeDom:!0,mainEventHandler:(t,n,s)=>("function"==typeof t?t(n):Array.isArray(t)&&(t=e(t).data)[0](t[1],n),!1)},s=document.createTextNode("");class o{constructor(t,e){this.key=t,this.child=e}mount(t,e){this.parentEl=t,this.child.mount(t,e)}moveBeforeDOMNode(t,e){this.child.moveBeforeDOMNode(t,e)}moveBeforeVNode(t,e){this.moveBeforeDOMNode(t&&t.firstNode()||e)}patch(t,e){if(this===t)return;let n=this.child,o=t.child;if(this.key===t.key)n.patch(o,e);else{const i=n.firstNode();i.parentElement.insertBefore(s,i),e&&n.beforeRemove(),n.remove(),o.mount(this.parentEl,s),this.child=o,this.key=t.key}}beforeRemove(){this.child.beforeRemove()}remove(){this.child.remove()}firstNode(){return this.child.firstNode()}toString(){return this.child.toString()}}function i(t,e){return new o(t,e)}class r extends Error{}const{setAttribute:l,removeAttribute:a}=Element.prototype,c=DOMTokenList.prototype,h=c.add,u=c.remove,d=Array.isArray,{split:f,trim:p}=String.prototype,m=/\s+/;function g(t,e){switch(e){case!1:case void 0:a.call(this,t);break;case!0:l.call(this,t,"");break;default:l.call(this,t,e)}}function v(t){return function(e){g.call(this,t,e)}}function b(t){if(d(t))"class"===t[0]?x.call(this,t[1]):g.call(this,t[0],t[1]);else for(let e in t)"class"===e?x.call(this,t[e]):g.call(this,e,t[e])}function y(t,e){if(d(t)){const n=t[0],s=t[1];if(n===e[0]){if(s===e[1])return;"class"===n?N.call(this,s,e[1]):g.call(this,n,s)}else a.call(this,e[0]),g.call(this,n,s)}else{for(let n in e)n in t||("class"===n?N.call(this,"",e[n]):a.call(this,n));for(let n in t){const s=t[n];s!==e[n]&&("class"===n?N.call(this,s,e[n]):g.call(this,n,s))}}}function w(t){const e={};switch(typeof t){case"string":const n=p.call(t);if(!n)return{};let s=f.call(n,m);for(let t=0,n=s.length;t<n;t++)e[s[t]]=!0;return e;case"object":for(let n in t){const s=t[n];if(s){if(n=p.call(n),!n)continue;const t=f.call(n,m);for(let n of t)e[n]=s}}return e;case"undefined":return{};case"number":return{[t]:!0};default:return{[t]:!0}}}function x(t){t=""===t?{}:w(t);const e=this.classList;for(let n in t)h.call(e,n)}function N(t,e){e=""===e?{}:w(e),t=""===t?{}:w(t);const n=this.classList;for(let s in e)s in t||u.call(n,s);for(let s in t)s in e||h.call(n,s)}function $(t){let e=!1;return async(...n)=>{e||(e=!0,await Promise.resolve(),e=!1,t(...n))}}class k extends EventTarget{trigger(t,e){this.dispatchEvent(new CustomEvent(t,{detail:e}))}}class E extends String{}function T(t){return t instanceof E?t:void 0===t?A(""):"number"==typeof t?A(String(t)):([["&","&amp;"],["<","&lt;"],[">","&gt;"],["'","&#x27;"],['"',"&quot;"],["`","&#x60;"]].forEach(e=>{t=String(t).replace(new RegExp(e[0],"g"),e[1])}),A(t))}function A(t,...e){if(!Array.isArray(t))return new E(t);const n=t;let s="",o=0;for(;o<e.length;++o)s+=n[o]+T(e[o]);return s+=n[o],new E(s)}function _(t){const e=t.split(".")[0],s=t.includes(".capture");return t.includes(".synthetic")?function(t,e=!1){let s=`__event__synthetic_${t}`;e&&(s=`${s}_capture`);!function(t,e,s=!1){if(S[e])return;document.addEventListener(t,t=>function(t,e){let s=e.target;for(;null!==s;){const o=s[t];if(o)for(const t of Object.values(o)){if(n.mainEventHandler(t,e,s))return}s=s.parentNode}}(e,t),{capture:s}),S[e]=!0}(t,s,e);const o=D++;function i(t){const e=this[s]||{};e[o]=t,this[s]=e}function r(){delete this[s]}return{setup:i,update:i,remove:r}}(e,s):function(t,e=!1){let s=`__event__${t}_${C++}`;e&&(s=`${s}_capture`);function o(t){const e=t.currentTarget;if(!e||!function(t){if(!t)return!1;if(t.ownerDocument.contains(t))return!0;const e=t.getRootNode();return e instanceof ShadowRoot&&t.ownerDocument.contains(e.host)}(e))return;const o=e[s];o&&n.mainEventHandler(o,t,e)}function i(n){this[s]=n,this.addEventListener(t,o,{capture:e})}function r(){delete this[s],this.removeEventListener(t,o,{capture:e})}function l(t){this[s]=t}return{setup:i,update:l,remove:r}}(e,s)}let C=1;let D=1;const S={};const O=Node.prototype,R=O.insertBefore,L=(B=O,I="textContent",Object.getOwnPropertyDescriptor(B,I)).set;var B,I;const P=O.removeChild;class M{constructor(t){this.children=t}mount(t,e){const n=this.children,s=n.length,o=new Array(s);for(let i=0;i<s;i++){let s=n[i];if(s)s.mount(t,e);else{const n=document.createTextNode("");o[i]=n,R.call(t,n,e)}}this.anchors=o,this.parentEl=t}moveBeforeDOMNode(t,e=this.parentEl){this.parentEl=e;const n=this.children,s=this.anchors;for(let o=0,i=n.length;o<i;o++){let i=n[o];if(i)i.moveBeforeDOMNode(t,e);else{const n=s[o];R.call(e,n,t)}}}moveBeforeVNode(t,e){if(t){const n=t.children[0];e=(n?n.firstNode():t.anchors[0])||null}const n=this.children,s=this.parentEl,o=this.anchors;for(let t=0,i=n.length;t<i;t++){let i=n[t];if(i)i.moveBeforeVNode(null,e);else{const n=o[t];R.call(s,n,e)}}}patch(t,e){if(this===t)return;const n=this.children,s=t.children,o=this.anchors,i=this.parentEl;for(let t=0,r=n.length;t<r;t++){const r=n[t],l=s[t];if(r)if(l)r.patch(l,e);else{const s=r.firstNode(),l=document.createTextNode("");o[t]=l,R.call(i,l,s),e&&r.beforeRemove(),r.remove(),n[t]=void 0}else if(l){n[t]=l;const e=o[t];l.mount(i,e),P.call(i,e)}}}beforeRemove(){const t=this.children;for(let e=0,n=t.length;e<n;e++){const n=t[e];n&&n.beforeRemove()}}remove(){const t=this.parentEl;if(this.isOnlyChild)L.call(t,"");else{const e=this.children,n=this.anchors;for(let s=0,o=e.length;s<o;s++){const o=e[s];o?o.remove():P.call(t,n[s])}}}firstNode(){const t=this.children[0];return t?t.firstNode():this.anchors[0]}toString(){return this.children.map(t=>t?t.toString():"").join("")}}function j(t){return new M(t)}const V=Node.prototype,W=CharacterData.prototype,F=V.insertBefore,K=((t,e)=>Object.getOwnPropertyDescriptor(t,e))(W,"data").set,U=V.removeChild;class H{constructor(t){this.text=t}mountNode(t,e,n){this.parentEl=e,F.call(e,t,n),this.el=t}moveBeforeDOMNode(t,e=this.parentEl){this.parentEl=e,F.call(e,this.el,t)}moveBeforeVNode(t,e){F.call(this.parentEl,this.el,t?t.el:e)}beforeRemove(){}remove(){U.call(this.parentEl,this.el)}firstNode(){return this.el}toString(){return this.text}}let z=class extends H{mount(t,e){this.mountNode(document.createTextNode(Y(this.text)),t,e)}patch(t){const e=t.text;this.text!==e&&(K.call(this.el,Y(e)),this.text=e)}};class G extends H{mount(t,e){this.mountNode(document.createComment(Y(this.text)),t,e)}patch(){}}function q(t){return new z(t)}function X(t){return new G(t)}function Y(t){switch(typeof t){case"string":return t;case"number":return String(t);case"boolean":return t?"true":"false";default:return t||""}}const J=(t,e)=>Object.getOwnPropertyDescriptor(t,e),Z=Node.prototype,Q=Element.prototype,tt=J(CharacterData.prototype,"data").set,et=J(Z,"firstChild").get,nt=J(Z,"nextSibling").get,st=()=>{};function ot(t){return function(e){this[t]=0===e?0:e?e.valueOf():""}}const it={};function rt(t){if(t in it)return it[t];const e=(new DOMParser).parseFromString(`<t>${t}</t>`,"text/xml").firstChild.firstChild;n.shouldNormalizeDom&&lt(e);const s=at(e),o=ut(s),i=function(t,e){let n=function(t,e){const{refN:n,collectors:s,children:o,locations:i,cbRefs:r}=e,l=s.length;i.sort((t,e)=>t.idx-e.idx);const a=i.length,c=o.length,h=o,u=n>0,d=Z.cloneNode,f=Z.insertBefore,p=Q.remove;class m{constructor(t){this.data=t}beforeRemove(){}remove(){p.call(this.el)}firstNode(){return this.el}moveBeforeDOMNode(t,e=this.parentEl){this.parentEl=e,f.call(e,this.el,t)}moveBeforeVNode(t,e){f.call(this.parentEl,this.el,t?t.el:e)}toString(){const t=document.createElement("div");return this.mount(t,null),t.innerHTML}mount(e,n){const s=d.call(t,!0);f.call(e,s,n),this.el=s,this.parentEl=e}patch(t,e){}}u&&(m.prototype.mount=function(e,o){const u=d.call(t,!0),p=new Array(n);this.refs=p,p[0]=u;for(let t=0;t<l;t++){const e=s[t];p[e.idx]=e.getVal.call(p[e.prevIdx])}if(a){const t=this.data;for(let e=0;e<a;e++){const n=i[e];n.setData.call(p[n.refIdx],t[e])}}if(f.call(e,u,o),c){const t=this.children;for(let e=0;e<c;e++){const n=t[e];if(n){const t=h[e],s=t.afterRefIdx?p[t.afterRefIdx]:null;n.isOnlyChild=t.isOnlyChild,n.mount(p[t.parentRefIdx],s)}}}if(this.el=u,this.parentEl=e,r.length){const t=this.data,e=this.refs;for(let n of r){const{idx:s,refIdx:o}=i[n];(0,t[s])(e[o],null)}}},m.prototype.patch=function(t,e){if(this===t)return;const n=this.refs;if(a){const e=this.data,s=t.data;for(let t=0;t<a;t++){const o=e[t],r=s[t];if(o!==r){const e=i[t];e.updateData.call(n[e.refIdx],r,o)}}this.data=s}if(c){let s=this.children;const o=t.children;for(let t=0;t<c;t++){const i=s[t],r=o[t];if(i)r?i.patch(r,e):(e&&i.beforeRemove(),i.remove(),s[t]=void 0);else if(r){const e=h[t],o=e.afterRefIdx?n[e.afterRefIdx]:null;r.mount(n[e.parentRefIdx],o),s[t]=r}}}},m.prototype.remove=function(){if(r.length){const t=this.data,e=this.refs;for(let n of r){const{idx:s,refIdx:o}=i[n];(0,t[s])(null,e[o])}}p.call(this.el)});return m}(t,e);if(e.children.length)return n=class extends n{constructor(t,e){super(t),this.children=e}},n.prototype.beforeRemove=M.prototype.beforeRemove,(t,e=[])=>new n(t,e);return t=>new n(t)}(s.el,o);return it[t]=i,i}function lt(t){if(t.nodeType!==Node.TEXT_NODE||/\S/.test(t.textContent)){if(t.nodeType!==Node.ELEMENT_NODE||"pre"!==t.tagName)for(let e=t.childNodes.length-1;e>=0;--e)lt(t.childNodes.item(e))}else t.remove()}function at(t,e=null,n=null){switch(t.nodeType){case Node.ELEMENT_NODE:{let s=n&&n.currentNS;const o=t.tagName;let i;const r=[];if(o.startsWith("block-text-")){const t=parseInt(o.slice(11),10);r.push({type:"text",idx:t}),i=document.createTextNode("")}if(o.startsWith("block-child-")){n.isRef||ct(n);const t=parseInt(o.slice(12),10);r.push({type:"child",idx:t}),i=document.createTextNode("")}if(s||(s=t.namespaceURI),i||(i=s?document.createElementNS(s,o):document.createElement(o)),i instanceof Element){if(!n){document.createElement("template").content.appendChild(i)}const e=t.attributes;for(let t=0;t<e.length;t++){const n=e[t].name,s=e[t].value;if(n.startsWith("block-handler-")){const t=parseInt(n.slice(14),10);r.push({type:"handler",idx:t,event:s})}else if(n.startsWith("block-attribute-")){const t=parseInt(n.slice(16),10);r.push({type:"attribute",idx:t,name:s,tag:o})}else if(n.startsWith("block-property-")){const t=parseInt(n.slice(15),10);r.push({type:"property",idx:t,name:s,tag:o})}else"block-attributes"===n?r.push({type:"attributes",idx:parseInt(s,10)}):"block-ref"===n?r.push({type:"ref",idx:parseInt(s,10)}):i.setAttribute(e[t].name,s)}}const l={parent:e,firstChild:null,nextSibling:null,el:i,info:r,refN:0,currentNS:s};if(t.firstChild){const e=t.childNodes[0];if(1===t.childNodes.length&&e.nodeType===Node.ELEMENT_NODE&&e.tagName.startsWith("block-child-")){const t=e.tagName,n=parseInt(t.slice(12),10);r.push({idx:n,type:"child",isOnlyChild:!0})}else{l.firstChild=at(t.firstChild,l,l),i.appendChild(l.firstChild.el);let e=t.firstChild,n=l.firstChild;for(;e=e.nextSibling;)n.nextSibling=at(e,n,l),i.appendChild(n.nextSibling.el),n=n.nextSibling}}return l.info.length&&ct(l),l}case Node.TEXT_NODE:case Node.COMMENT_NODE:return{parent:e,firstChild:null,nextSibling:null,el:t.nodeType===Node.TEXT_NODE?document.createTextNode(t.textContent):document.createComment(t.textContent),info:[],refN:0,currentNS:null}}throw new r("boom")}function ct(t){t.isRef=!0;do{t.refN++}while(t=t.parent)}function ht(t){let e=t.parent;for(;e&&e.nextSibling===t;)t=e,e=e.parent;return e}function ut(t,e,n){if(!e){e={collectors:[],locations:[],children:new Array(t.info.filter(t=>"child"===t.type).length),cbRefs:[],refN:t.refN},n=0}if(t.refN){const s=n,o=t.isRef,i=t.firstChild?t.firstChild.refN:0,r=t.nextSibling?t.nextSibling.refN:0;if(o){for(let e of t.info)e.refIdx=s;t.refIdx=s,function(t,e){for(let n of e.info)switch(n.type){case"text":t.locations.push({idx:n.idx,refIdx:n.refIdx,setData:dt,updateData:dt});break;case"child":n.isOnlyChild?t.children[n.idx]={parentRefIdx:n.refIdx,isOnlyChild:!0}:t.children[n.idx]={parentRefIdx:ht(e).refIdx,afterRefIdx:n.refIdx};break;case"property":{const e=n.refIdx,s=ot(n.name);t.locations.push({idx:n.idx,refIdx:e,setData:s,updateData:s});break}case"attribute":{const e=n.refIdx;let s,o;"class"===n.name?(o=x,s=N):(o=v(n.name),s=o),t.locations.push({idx:n.idx,refIdx:e,setData:o,updateData:s});break}case"attributes":t.locations.push({idx:n.idx,refIdx:n.refIdx,setData:b,updateData:y});break;case"handler":{const{setup:e,update:s}=_(n.event);t.locations.push({idx:n.idx,refIdx:n.refIdx,setData:e,updateData:s});break}case"ref":t.locations.push({idx:n.idx,refIdx:n.refIdx,setData:st,updateData:st}),t.cbRefs.push(n.idx)}}(e,t),n++}if(r){const o=n+i;e.collectors.push({idx:o,prevIdx:s,getVal:nt}),ut(t.nextSibling,e,o)}i&&(e.collectors.push({idx:n,prevIdx:s,getVal:et}),ut(t.firstChild,e,n))}return e}function dt(t){tt.call(this,Y(t))}const ft=Node.prototype,pt=ft.insertBefore,mt=ft.appendChild,gt=ft.removeChild,vt=((t,e)=>Object.getOwnPropertyDescriptor(t,e))(ft,"textContent").set;class bt{constructor(t){this.children=t}mount(t,e){const n=this.children,s=document.createTextNode("");this.anchor=s,pt.call(t,s,e);const o=n.length;if(o){const e=n[0].mount;for(let i=0;i<o;i++)e.call(n[i],t,s)}this.parentEl=t}moveBeforeDOMNode(t,e=this.parentEl){this.parentEl=e;const n=this.children;for(let s=0,o=n.length;s<o;s++)n[s].moveBeforeDOMNode(t,e);e.insertBefore(this.anchor,t)}moveBeforeVNode(t,e){if(t){const n=t.children[0];e=(n?n.firstNode():t.anchor)||null}const n=this.children;for(let t=0,s=n.length;t<s;t++)n[t].moveBeforeVNode(null,e);this.parentEl.insertBefore(this.anchor,e)}patch(t,e){if(this===t)return;const n=this.children,s=t.children;if(0===s.length&&0===n.length)return;this.children=s;const o=s[0]||n[0],{mount:i,patch:r,remove:l,beforeRemove:a,moveBeforeVNode:c,firstNode:h}=o,u=this.anchor,d=this.isOnlyChild,f=this.parentEl;if(0===s.length&&d){if(e)for(let t=0,e=n.length;t<e;t++)a.call(n[t]);return vt.call(f,""),void mt.call(f,u)}let p,m=0,g=0,v=n[0],b=s[0],y=n.length-1,w=s.length-1,x=n[y],N=s[w];for(;m<=y&&g<=w;){if(null===v){v=n[++m];continue}if(null===x){x=n[--y];continue}let t=v.key,o=b.key;if(t===o){r.call(v,b,e),s[g]=v,v=n[++m],b=s[++g];continue}let l=x.key,a=N.key;if(l===a){r.call(x,N,e),s[w]=x,x=n[--y],N=s[--w];continue}if(t===a){r.call(v,N,e),s[w]=v;const t=s[w+1];c.call(v,t,u),v=n[++m],N=s[--w];continue}if(l===o){r.call(x,b,e),s[g]=x;const t=n[m];c.call(x,t,u),x=n[--y],b=s[++g];continue}p=p||wt(n,m,y);let d=p[o];if(void 0===d)i.call(b,f,h.call(v)||null);else{const t=n[d];c.call(t,v,null),r.call(t,b,e),s[g]=t,n[d]=null}b=s[++g]}if(m<=y||g<=w)if(m>y){const t=s[w+1],e=t?h.call(t)||null:u;for(let t=g;t<=w;t++)i.call(s[t],f,e)}else for(let t=m;t<=y;t++){let s=n[t];s&&(e&&a.call(s),l.call(s))}}beforeRemove(){const t=this.children,e=t.length;if(e){const n=t[0].beforeRemove;for(let s=0;s<e;s++)n.call(t[s])}}remove(){const{parentEl:t,anchor:e}=this;if(this.isOnlyChild)vt.call(t,"");else{const n=this.children,s=n.length;if(s){const t=n[0].remove;for(let e=0;e<s;e++)t.call(n[e])}gt.call(t,e)}}firstNode(){const t=this.children[0];return t?t.firstNode():void 0}toString(){return this.children.map(t=>t.toString()).join("")}}function yt(t){return new bt(t)}function wt(t,e,n){let s={};for(let o=e;o<=n;o++)s[t[o].key]=o;return s}const xt=Node.prototype,Nt=xt.insertBefore,$t=xt.removeChild;class kt{constructor(t){this.content=[],this.html=t}mount(t,e){this.parentEl=t;const n=document.createElement("template");n.innerHTML=this.html,this.content=[...n.content.childNodes];for(let n of this.content)Nt.call(t,n,e);if(!this.content.length){const n=document.createTextNode("");this.content.push(n),Nt.call(t,n,e)}}moveBeforeDOMNode(t,e=this.parentEl){this.parentEl=e;for(let n of this.content)Nt.call(e,n,t)}moveBeforeVNode(t,e){const n=t?t.content[0]:e;this.moveBeforeDOMNode(n)}patch(t){if(this===t)return;const e=t.html;if(this.html!==e){const n=this.parentEl,s=this.content[0],o=document.createElement("template");o.innerHTML=e;const i=[...o.content.childNodes];for(let t of i)Nt.call(n,t,s);if(!i.length){const t=document.createTextNode("");i.push(t),Nt.call(n,t,s)}this.remove(),this.content=i,this.html=t.html}}beforeRemove(){}remove(){const t=this.parentEl;for(let e of this.content)$t.call(t,e)}firstNode(){return this.content[0]}toString(){return this.html}}function Et(t){return new kt(t)}function Tt(t,e,n=null){t.mount(e,n)}var At;let _t,Ct;function Dt(t){Ct&&(Ct.sources.add(t),t.observers.add(Ct))}function St(t){!function(t){if(_t)return t();_t=[];try{return t()}finally{}}(()=>{for(const e of t.observers)e.state===At.EXECUTED&&(e.isDerived?jt(e):_t.push(e)),e.state=At.STALE}),Ot()}!function(t){t[t.EXECUTED=0]="EXECUTED",t[t.STALE=1]="STALE",t[t.PENDING=2]="PENDING"}(At||(At={}));const Ot=$(function(){if(!_t)return;for(const t of _t)Pt(t);_t=void 0});function Rt(t){return It(void 0,t)}function Lt(){return Ct}function Bt(t){Ct=t}function It(t,e){const n=Ct;let s;Ct=t;try{s=e()}finally{Ct=n}return s}function Pt(t){var e;const n=t.state;if(n===At.EXECUTED)return;if(n===At.PENDING&&(function(t){for(const e of t.sources)"compute"in e&&Pt(e)}(t),t.state!==At.STALE))return void(t.state=At.EXECUTED);Mt(t);const s=Ct;Ct=t,t.value=null===(e=t.compute)||void 0===e?void 0:e.call(t),t.state=At.EXECUTED,Ct=s}function Mt(t){const e=t.sources;for(const n of e){n.observers.delete(t)}e.clear()}function jt(t){for(const e of t.observers)e.state||(e.state=At.PENDING,e.isDerived?jt(e):_t.push(e))}const Vt=new WeakMap,Wt=new WeakMap;function Ft(t,e){try{t.destroy()}catch(t){}return Object.assign(new r("[Owl] Unhandled error. Destroying the root component"),{cause:e})}function Kt(t,e){if(!t)return!1;const n=t.fiber;n&&Vt.set(n,e);const s=Wt.get(t);if(s){let n=!1;const o=()=>Ft(t.app,e);for(let t=s.length-1;t>=0;t--)try{s[t](e,o),n=!0;break}catch(t){e=t}if(n)return!0}return Kt(t.parent,e)}function Ut(t){let{error:e}=t;const n="node"in t?t.node:t.fiber.node,s="fiber"in t?t.fiber:n.fiber;if(s){let t=s;do{t.node.fiber=t,t=t.parent}while(t);Vt.set(s.root,e)}if(!Kt(n,e))throw Ft(n.app,e)}function Ht(){throw new r("Attempted to render cancelled fiber")}function zt(t){let e=0;for(let n of t){let t=n.node;n.render=Ht,0===t.status&&t.cancel(),t.fiber=null,n.bdom?t.forceNextRender=!0:e++,e+=zt(n.children)}return e}class Gt{constructor(t,e){if(this.bdom=null,this.children=[],this.appliedToDom=!1,this.deep=!1,this.childrenMap={},this.node=t,this.parent=e,e){this.deep=e.deep;const t=e.root;t.setCounter(t.counter+1),this.root=t,e.children.push(this)}else this.root=this}render(){let t=this.root.node,e=t.app.scheduler,n=t.parent;for(;n;){if(n.fiber){let s=n.fiber.root;if(0!==s.counter||!(t.parentKey in n.fiber.childrenMap))return void e.delayedRenders.push(this);n=s.node}t=n,n=n.parent}this._render()}_render(){const t=this.node,e=this.root;e&&(It(t.signalComputation,()=>{try{this.bdom=!0,this.bdom=t.renderFn()}catch(e){t.app.handleError({node:t,error:e})}}),e.setCounter(e.counter-1))}}class qt extends Gt{constructor(){super(...arguments),this.counter=1,this.willPatch=[],this.patched=[],this.mounted=[],this.locked=!1}complete(){const t=this.node;let e;this.locked=!0;let n=this.mounted;try{for(e of this.willPatch){let t=e.node;if(t.fiber===e){const e=t.component;for(let n of t.willPatch)n.call(e)}}for(e=void 0,t._patch(),this.locked=!1;e=n.pop();)if(e.appliedToDom)for(let t of e.node.mounted)t();let s=this.patched;for(;e=s.pop();)if(e.appliedToDom)for(let t of e.node.patched)t()}catch(s){for(let t of n)t.node.willUnmount=[];this.locked=!1,t.app.handleError({fiber:e||this,error:s})}}setCounter(t){this.counter=t,0===t&&this.node.app.scheduler.flush()}}class Xt extends qt{constructor(t,e,n={}){super(t,null),this.target=e,this.position=n.position||"last-child"}complete(){let t=this;try{const e=this.node;if(e.children=this.childrenMap,e.app.constructor.validateTarget(this.target),e.bdom)e.updateDom();else if(e.bdom=this.bdom,"last-child"===this.position||0===this.target.childNodes.length)Tt(e.bdom,this.target);else{const t=this.target.childNodes[0];Tt(e.bdom,this.target,t)}e.fiber=null,e.status=1,this.appliedToDom=!0;let n=this.mounted;for(;t=n.pop();)if(t.appliedToDom)for(let e of t.node.mounted)e()}catch(e){this.node.app.handleError({fiber:t,error:e})}}}let Yt=null;function Jt(){if(!Yt)throw new r("No active component (a hook function should only be called in 'setup')");return Yt}class Zt{constructor(t,e,n,s,o){this.fiber=null,this.bdom=null,this.status=0,this.forceNextRender=!1,this.children=Object.create(null),this.willStart=[],this.willUpdateProps=[],this.willUnmount=[],this.mounted=[],this.willPatch=[],this.patched=[],this.willDestroy=[],this.name=t.name,Yt=this,this.app=n,this.parent=s,this.parentKey=o,this.pluginManager=s?s.pluginManager:n.pluginManager,this.signalComputation={value:void 0,compute:()=>this.render(!1),sources:new Set,state:At.EXECUTED},this.props=Object.assign({},e);const i=Lt();Bt(void 0),this.component=new t(this);const r={this:this.component,__owl__:this};this.renderFn=n.getTemplate(t.template).bind(this.component,r,this),this.component.setup(),Bt(i),Yt=null}mountComponent(t,e){const n=new Xt(this,t,e);this.app.scheduler.addFiber(n),this.initiateRender(n)}async initiateRender(t){this.fiber=t,this.mounted.length&&t.root.mounted.push(t);const e=this.component;try{let t;It(void 0,()=>{t=this.willStart.map(t=>t.call(e))}),await Promise.all(t)}catch(t){return void this.app.handleError({node:this,error:t})}0===this.status&&this.fiber===t&&t.render()}async render(t){if(this.status>=2)return;let e=this.fiber;if(e&&(e.root.locked||!0===e.bdom)&&(await Promise.resolve(),e=this.fiber),e){if(!e.bdom&&!Vt.has(e))return void(t&&(e.deep=t));t=t||e.deep}else if(!this.bdom)return;const n=function(t){let e=t.fiber;if(e){let t=e.root;return t.locked=!0,t.setCounter(t.counter+1-zt(e.children)),t.locked=!1,e.children=[],e.childrenMap={},e.bdom=null,Vt.has(e)&&(Vt.delete(e),Vt.delete(t),e.appliedToDom=!1,e instanceof qt&&(e.mounted=e instanceof Xt?[e]:[])),e}const n=new qt(t,null);return t.willPatch.length&&n.willPatch.push(n),t.patched.length&&n.patched.push(n),n}(this);n.deep=t,this.fiber=n,this.app.scheduler.addFiber(n),await Promise.resolve(),this.status>=2||this.fiber!==n||!e&&n.parent||n.render()}cancel(){this._cancel(),delete this.parent.children[this.parentKey],this.app.scheduler.scheduleDestroy(this)}_cancel(){this.status=2;const t=this.children;for(let e in t)t[e]._cancel()}destroy(){let t=1===this.status;this._destroy(),t&&this.bdom.remove()}_destroy(){const t=this.component;if(1===this.status)for(let e of this.willUnmount)e.call(t);for(let t of Object.values(this.children))t._destroy();if(this.willDestroy.length)try{for(let e of this.willDestroy)e.call(t)}catch(t){this.app.handleError({error:t,node:this})}this.status=3}async updateAndRender(t,e){t=Object.assign({},t);const n=function(t,e){let n=t.fiber;return n&&(zt(n.children),n.root=null),new Gt(t,e)}(this,e);this.fiber=n;const s=this.component;let o;if(Rt(()=>{o=Promise.all(this.willUpdateProps.map(e=>e.call(s,t)))}),await o,n!==this.fiber)return;this.props=t,n.render();const i=e.root;this.willPatch.length&&i.willPatch.push(n),this.patched.length&&i.patched.push(n)}updateDom(){if(this.fiber)if(this.bdom===this.fiber.bdom)for(let t in this.children){this.children[t].updateDom()}else this.bdom.patch(this.fiber.bdom,!1),this.fiber.appliedToDom=!0,this.fiber=null}firstNode(){const t=this.bdom;return t?t.firstNode():void 0}mount(t,e){const n=this.fiber.bdom;this.bdom=n,n.mount(t,e),this.status=1,this.fiber.appliedToDom=!0,this.children=this.fiber.childrenMap,this.fiber=null}moveBeforeDOMNode(t,e){this.bdom.moveBeforeDOMNode(t,e)}moveBeforeVNode(t,e){this.bdom.moveBeforeVNode(t?t.bdom:null,e)}patch(){this.fiber&&this.fiber.parent&&this._patch()}_patch(){let t=!1;for(let e in this.children){t=!0;break}const e=this.fiber;this.children=e.childrenMap,this.bdom.patch(e.bdom,t),e.appliedToDom=!0,this.fiber=null}beforeRemove(){this._destroy()}remove(){this.bdom.remove()}}class Qt{constructor(t){this.__owl__=t}setup(){}render(t=!1){this.__owl__.render(!0===t)}}Qt.template="";const te={any:function(){},array:function(t){return function(e){if(Array.isArray(e.value)){if(t)for(let n=0;n<e.value.length;n++)e.withKey(n).validate(t)}else e.addIssue({message:"value is not an array"})}},boolean:function(t){"boolean"!=typeof t.value&&t.addIssue({message:"value is not a boolean"})},constructor:function(t){return function(e){"function"==typeof e.value&&(e.value===t||e.value.prototype instanceof t)||e.addIssue({message:`value is not '${t.name}' or an extension`})}},customValidator:function(t,e,n="value does not match custom validation"){return function(s){s.validate(t),s.isValid&&(e(s.value)||s.addIssue({message:n}))}},function:function(t=[],e=void 0){return function(t){"function"!=typeof t.value&&t.addIssue({message:"value is not a function"})}},instanceOf:function(t){return function(e){e.value instanceof t||e.addIssue({message:`value is not an instance of '${t.name}'`})}},literal:function(t){return function(e){e.value!==t&&e.addIssue({message:`value is not equal to ${"string"==typeof t?`'${t}'`:t}`})}},number:function(t){"number"!=typeof t.value&&t.addIssue({message:"value is not a number"})},object:function(t={}){return function(e){"object"!=typeof e.value||Array.isArray(e.value)||null===e.value?e.addIssue({message:"value is not an object"}):t&&(Array.isArray(t)?function(t,e){const n=e.filter(e=>!e.endsWith("?")&&!(e in t.value));n.length&&t.addIssue({message:"object value have missing keys",missingKeys:n})}(e,t):function(t,e){const n=[];for(const s in e){const o=s.endsWith("?")?s.slice(0,-1):s;void 0!==t.value[o]?t.withKey(o).validate(e[s]):s.endsWith("?")||n.push(o)}n.length&&t.addIssue({message:"object value have missing keys",missingKeys:n})}(e,t))}},promise:function(t){return function(t){t.value instanceof Promise||t.addIssue({message:"value is not a promise"})}},reactiveValue:function(t){return function(t){"function"!=typeof t.value&&t.addIssue({message:"value is not a reactive (it should be function)"})}},record:function(t){return function(e){if("object"!=typeof e.value||Array.isArray(e.value)||null===e.value)e.addIssue({message:"value is not an object"});else if(t)for(const n in e.value)e.withKey(n).validate(t)}},signal:function(t){return function(t){"function"!=typeof t.value&&t.addIssue({message:"value is not a signal (it should be function)"}),"function"!=typeof t.value.set&&t.addIssue({message:"value is not a signal (method 'set' should be defined as a function)"})}},string:function(t){"string"!=typeof t.value&&t.addIssue({message:"value is not a string"})},tuple:function(t){return function(e){if(Array.isArray(e.value))if(e.value.length===t.length)for(let n=0;n<t.length;n++)e.withKey(n).validate(t[n]);else e.addIssue({message:"tuple value does not have the correct length"});else e.addIssue({message:"value is not an array"})}},union:function(t){return function(e){let n=0;const s=[];for(const o of t){const t=e.withIssues(s);if(t.validate(o),s.length===n||t.issueDepth>0)return void e.mergeIssues(s.slice(n));n=s.length}e.addIssue({message:"value does not match union type",subIssues:s})}}};function ee(t,e,n="Value does not match the type"){const s=se(t,e);if(s.length){const t=JSON.stringify(s,(t,e)=>"function"==typeof e?e.name:e,2);throw new r(`${n}\n${t}`)}}function ne(t,e,n,s){return{issueDepth:0,path:n,value:e,get isValid(){return!t.length},addIssue(e){t.push({received:this.value,path:this.path,...e})},mergeIssues(e){t.push(...e)},validate(t){t(this),!this.isValid&&s&&(s.issueDepth=this.issueDepth+1)},withIssues(t){return ne(t,this.value,this.path,this)},withKey(e){return ne(t,this.value[e],this.path.concat(e),this)}}}function se(t,e){const n=[];return e(ne(n,t,[])),n}let oe={};class ie{constructor(t){var e;this.children=[],this.onDestroyCb=[],this.status=0,this.parent=t||null,null===(e=this.parent)||void 0===e||e.children.push(this),this.plugins=this.parent?Object.create(this.parent.plugins):{}}destroy(){for(let t of this.children)t.destroy();const t=this.onDestroyCb;for(;t.length;)t.pop()();this.status=3}getPluginById(t){return this.plugins[t]||null}getPlugin(t){return this.getPluginById(t.id)}startPlugins(t,e={}){const n=ie.current;ie.current=this;const s=[];for(const o of t){if(!o.id)throw ie.current=n,new r(`Plugin "${o.name}" has no id`);if(this.plugins.hasOwnProperty(o.id)){const t=this.getPluginById(o.id).constructor;if(t!==o)throw ie.current=n,new r(`Trying to start a plugin with the same id as an other plugin (id: '${o.id}', existing plugin: '${t.name}', starting plugin: '${o.name}')`);continue}oe=e[o.id]||{};const t=new o;this.plugins[o.id]=t,s.push(t)}oe={};for(let t of s)t.setup();return ie.current=n,ie.current||(this.status=1),s}}function re(t){const e=ie.current||Jt().pluginManager;let n=e.getPluginById(t.id);if(!n){if(e!==ie.current)throw new r(`Unknown plugin "${t.id}"`);e.startPlugins([t]),n=e.getPluginById(t.id)}return n}function le(t,e,n){const s=e.bind(t.component);if(t.app.dev){const t=e.name?` <${e.name}>`:"";Reflect.defineProperty(s,"name",{value:n+t})}return s}function ae(t){const e=Jt();e.mounted.push(le(e,t,"onMounted"))}function ce(t){const e=Jt();e.willUnmount.unshift(le(e,t,"onWillUnmount"))}function he(t){const e=ie.current;if(e)e.onDestroyCb.push(t);else{const e=Jt();e.willDestroy.unshift(le(e,t,"onWillDestroy"))}}function ue(t,e){const n=Jt();function s(t){return void 0===n.props[t]&&e?e[t]:n.props[t]}const o=Object.create(null);function i(t){for(const e of t)Reflect.defineProperty(o,e,{enumerable:!0,get:s.bind(null,e)})}if(t){if(i((Array.isArray(t)?t:Object.keys(t)).map(t=>t.endsWith("?")?t.slice(0,-1):t)),n.app.dev){const s=e?function(t,e){const n=(Array.isArray(t)?t:Object.keys(t)).filter(t=>!t.endsWith("?")&&t in e);return e=>{n.length&&e.addIssue({message:"props have default values on mandatory keys",keys:n}),e.validate(te.object(t))}}(t,e):te.object(t);ee(n.props,s,`Invalid component props (${n.name})`),n.willUpdateProps.push(t=>{ee(t,s,`Invalid component props (${n.name})`)})}}else i(Object.keys(n.props)),n.willUpdateProps.push(t=>{for(let t in o)Reflect.deleteProperty(o,t);i(Object.keys(t))});return o}ie.current=null,re.props=function(t,e={}){function n(t){return void 0===oe[t]?e[t]:oe[t]}const s=Object.create(null);function o(t){for(const e of t)Reflect.defineProperty(s,e,{enumerable:!0,get:n.bind(null,e)})}if(t){o((t&&!Array.isArray(t)?Object.keys(t):t).map(t=>t.endsWith("?")?t.slice(0,-1):t));if(Jt().app.dev){const e=te.object(t);ee(oe,e)}}else o(Object.keys(oe));return oe};const de=q("").constructor;class fe extends de{constructor(t,e){super(""),this.target=null,this.selector=t,this.content=e}mount(t,e){super.mount(t,e),this.target=document.querySelector(this.selector),this.target?this.content.mount(this.target,null):this.content.mount(t,e)}beforeRemove(){this.content.beforeRemove()}remove(){this.content&&(super.remove(),this.content.remove(),this.content=null)}patch(t){super.patch(t),this.content?this.content.patch(t.content,!0):(this.content=t.content,this.content.mount(this.target,null))}}class pe extends Qt{constructor(){super(...arguments),this.props=ue({target:te.string})}setup(){const t=this.__owl__;ae(()=>{const e=t.bdom;if(!e.target){const n=document.querySelector(t.props.target);if(!n)throw new r("invalid portal target");e.content.moveBeforeDOMNode(n.firstChild,n)}}),ce(()=>{t.bdom.remove()})}}pe.template="__portal__";const me=Symbol("Key changes"),ge=Object.prototype.toString,ve=Object.prototype.hasOwnProperty,be=["Object","Array","Set","Map","WeakMap"],ye=["Set","Map","WeakMap"];function we(t){return ge.call(Ee(t)).slice(8,-1)}function xe(t){return"object"==typeof t&&be.includes(we(t))}function Ne(t,e){return!e&&xe(t)?Oe(t):t}const $e=new WeakSet;function ke(t){return $e.add(t),t}function Ee(t){return Ce.has(t)?Ce.get(t):t}const Te=new WeakMap;function Ae(t,e,n){Dt(null!=n?n:function(t,e){let n=Te.get(t);n||(n=new Map,Te.set(t,n));let s=n.get(e);return s||(s={value:void 0,observers:new Set},n.set(e,s)),s}(t,e))}function _e(t,e,n){if(!n){const s=Te.get(t);if(!s)return;if(!s.has(e))return;n=s.get(e)}St(n)}const Ce=new WeakMap,De=new WeakMap;function Se(t,e){if(!xe(t))throw new r("Cannot make the given value reactive");if($e.has(t))return t;if(Ce.has(t))return t;const n=De.get(t);if(n)return n;const s=we(t),o=ye.includes(s)?function(t,e,n){const s=je[e](t,n);return Object.assign(Re(n),{get:(t,e)=>ve.call(s,e)?s[e]:(Ae(t,e,n),Ne(t[e],n))})}(t,s,e):Re(e),i=new Proxy(t,o);return De.set(t,i),Ce.set(i,t),i}function Oe(t){return Se(t,null)}function Re(t){return{get(e,n,s){const o=Object.getOwnPropertyDescriptor(e,n);return!o||o.writable||o.configurable?(Ae(e,n,t),Ne(Reflect.get(e,n,s),t)):Reflect.get(e,n,s)},set(e,n,s,o){const i=ve.call(e,n),r=Reflect.get(e,n,o),l=Reflect.set(e,n,Ee(s),o);return!i&&ve.call(e,n)&&_e(e,me,t),(r!==Reflect.get(e,n,o)||"length"===n&&Array.isArray(e))&&_e(e,n,t),l},deleteProperty(e,n){const s=Reflect.deleteProperty(e,n);return _e(e,me,t),_e(e,n,t),s},ownKeys:e=>(Ae(e,me,t),Reflect.ownKeys(e)),has:(e,n)=>(Ae(e,me,t),Reflect.has(e,n))}}function Le(t,e,n){return s=>(s=Ee(s),Ae(e,s,n),Ne(e[t](s),n))}function Be(t,e,n){return function*(){Ae(e,me,n);const s=e.keys();for(const o of e[t]()){const t=s.next().value;Ae(e,t,n),yield Ne(o,n)}}}function Ie(t,e){return function(n,s){Ae(t,me,e),t.forEach(function(o,i,r){Ae(t,i,e),n.call(s,Ne(o,e),Ne(i,e),Ne(r,e))},s)}}function Pe(t,e,n,s){return(o,i)=>{o=Ee(o);const r=n.has(o),l=n[e](o),a=n[t](o,i);return r!==n.has(o)&&_e(n,me,s),l!==n[e](o)&&_e(n,o,s),a}}function Me(t,e){return()=>{const n=[...t.keys()];t.clear(),_e(t,me,e);for(const s of n)_e(t,s,e)}}const je={Set:(t,e)=>({has:Le("has",t,e),add:Pe("add","has",t,e),delete:Pe("delete","has",t,e),keys:Be("keys",t,e),values:Be("values",t,e),entries:Be("entries",t,e),[Symbol.iterator]:Be(Symbol.iterator,t,e),forEach:Ie(t,e),clear:Me(t,e),get size(){return Ae(t,me,e),t.size}}),Map:(t,e)=>({has:Le("has",t,e),get:Le("get",t,e),set:Pe("set","get",t,e),delete:Pe("delete","has",t,e),keys:Be("keys",t,e),values:Be("values",t,e),entries:Be("entries",t,e),[Symbol.iterator]:Be(Symbol.iterator,t,e),forEach:Ie(t,e),clear:Me(t,e),get size(){return Ae(t,me,e),t.size}}),WeakMap:(t,e)=>({has:Le("has",t,e),get:Le("get",t,e),set:Pe("set","get",t,e),delete:Pe("delete","has",t,e)})};const Ve=Object.create;function We(t){const e=Ve(t);for(let n in t)e[n]=t[n];return e}const Fe=Symbol("isBoundary");class Ke{constructor(t,e,n,s,o){this.fn=t,this.ctx=We(e),this.component=n,this.node=s,this.key=o}evaluate(){return this.fn.call(this.component,this.ctx,this.node,this.key)}toString(){return this.evaluate().toString()}}const Ue={withDefault:function(t,e){return null==t||!1===t?e:t},zero:Symbol("zero"),isBoundary:Fe,callSlot:function(t,e,n,s,o,r,l){n=n+"__slot_"+s;const a=t.__owl__.props.slots||{},{__render:c,__ctx:h,__scope:u}=a[s]||{},d=Ve(h||{});u&&(d[u]=r);const f=c?c(d,e,n):null;if(l){let r,a;return f?r=o?i(s,f):f:a=l(t,e,n),j([r,a])}return f||q("")},capture:We,withKey:function(t,e){return t.key=e,t},prepareList:function(t){let e,n;if(Array.isArray(t))e=t,n=t;else if(t instanceof Map)e=[...t.keys()],n=[...t.values()];else if(Symbol.iterator in Object(t))e=[...t],n=e;else{if(!t||"object"!=typeof t)throw new r(`Invalid loop expression: "${t}" is not iterable`);n=Object.values(t),e=Object.keys(t)}const s=n.length;return[e,n,s,new Array(s)]},setContextValue:function(t,e,n){const s=t;for(;!t.hasOwnProperty(e)&&!t.hasOwnProperty(Fe);){const e=t.__proto__;if(!e){t=s;break}t=e}t[e]=n},shallowEqual:function(t,e){for(let n=0,s=t.length;n<s;n++)if(t[n]!==e[n])return!1;return!0},toNumber:function(t){const e=parseFloat(t);return isNaN(e)?t:e},LazyValue:Ke,safeOutput:function(t,e){if(null==t)return e?i("default",e):i("undefined",q(""));let n,s;return t instanceof E?(n="string_safe",s=Et(t)):t instanceof Ke?(n="lazy_value",s=t.evaluate()):(n="string_unsafe",s=q(t)),i(n,s)},createCatcher:function(t){const e=Object.keys(t).length;class n{constructor(t,e){this.handlerFns=[],this.afterNode=null,this.child=t,this.handlerData=e}mount(e,n){this.parentEl=e,this.child.mount(e,n),this.afterNode=document.createTextNode(""),e.insertBefore(this.afterNode,n),this.wrapHandlerData();for(let n in t){const s=t[n],o=_(n);this.handlerFns[s]=o,o.setup.call(e,this.handlerData[s])}}wrapHandlerData(){for(let t=0;t<e;t++){let e=this.handlerData[t],n=e.length-2,s=e[n];const o=this;e[n]=function(t){const e=t.target;let n=o.child.firstNode();const i=o.afterNode;for(;n&&n!==i;){if(n.contains(e))return s.call(this,t);n=n.nextSibling}}}}moveBeforeDOMNode(t,e=this.parentEl){this.parentEl=e,this.child.moveBeforeDOMNode(t,e),e.insertBefore(this.afterNode,t)}moveBeforeVNode(t,e){t&&(e=t.firstNode()||e),this.child.moveBeforeVNode(t?t.child:null,e),this.parentEl.insertBefore(this.afterNode,e)}patch(t,n){if(this!==t){this.handlerData=t.handlerData,this.wrapHandlerData();for(let t=0;t<e;t++)this.handlerFns[t].update.call(this.parentEl,this.handlerData[t]);this.child.patch(t.child,n)}}beforeRemove(){this.child.beforeRemove()}remove(){for(let t=0;t<e;t++)this.handlerFns[t].remove.call(this.parentEl);this.child.remove(),this.afterNode.remove()}firstNode(){return this.child.firstNode()}toString(){return this.child.toString()}}return function(t,e){return new n(t,e)}},markRaw:ke,OwlError:r,createRef:function(t){if(!t)throw new r("Ref is undefined or null");let e,n;if(t.add&&t.delete)e=t.add.bind(t),n=t.delete.bind(t);else{if(!t.set)throw new r("Ref should implement either a 'set' function or 'add' and 'delete' functions");e=t.set.bind(t),n=()=>t.set(null)}return(t,s)=>{s&&n(s),t&&e(t)}},modelExpr:function(t){if("function"!=typeof t||"function"!=typeof t.set)throw new r("Invalid t-model expression: expression should evaluate to a function with a 'set' method defined on it");return t}};function He(t){const e=(new DOMParser).parseFromString(t,"text/xml");if(e.getElementsByTagName("parsererror").length){let n="Invalid XML in template.";const s=e.getElementsByTagName("parsererror")[0].textContent;if(s){n+="\nThe parser has produced the following error message:\n"+s;const e=/\d+/g,o=e.exec(s);if(o){const i=Number(o[0]),r=t.split("\n")[i-1],l=e.exec(s);if(r&&l){const t=Number(l[0])-1;r[t]&&(n+=`\nThe error might be located at xml line ${i} column ${t}\n${r}\n${"-".repeat(t-1)}^`)}}}throw new r(n)}return e}const ze={text:q,createBlock:rt,list:yt,multi:j,html:Et,toggler:i,comment:X};class Ge{static registerTemplate(t,e){qe[t]=e}constructor(t={}){if(this.rawTemplates=Object.create(qe),this.templates={},this.Portal=pe,this.dev=t.dev||!1,this.translateFn=t.translateFn,this.translatableAttributes=t.translatableAttributes,t.templates)if(t.templates instanceof Document||"string"==typeof t.templates)this.addTemplates(t.templates);else for(const e in t.templates)this.addTemplate(e,t.templates[e]);this.getRawTemplate=t.getTemplate,this.customDirectives=t.customDirectives||{},this.runtimeUtils={...Ue,__globals__:t.globalValues||{}},this.hasGlobalValues=Boolean(t.globalValues&&Object.keys(t.globalValues).length)}addTemplate(t,e){if(t in this.rawTemplates){if(!this.dev)return;const n=this.rawTemplates[t];if(("string"==typeof n?n:n instanceof Element?n.outerHTML:n.toString())===("string"==typeof e?e:e.outerHTML))return;throw new r(`Template ${t} already defined with different content`)}this.rawTemplates[t]=e}addTemplates(t){if(t){t=t instanceof Document?t:He(t);for(const e of t.querySelectorAll("[t-name]")){const t=e.getAttribute("t-name");this.addTemplate(t,e)}}}getTemplate(t){var e;if(!(t in this.templates)){const n=(null===(e=this.getRawTemplate)||void 0===e?void 0:e.call(this,t))||this.rawTemplates[t];if(void 0===n){let e="";try{e=` (for component "${Jt().component.constructor.name}")`}catch{}throw new r(`Missing template: "${t}"${e}`)}const s="function"==typeof n&&!(n instanceof Element)?n:this._compileTemplate(t,n),o=this.templates;this.templates[t]=function(e,n){return o[t].call(this,e,n)};const i=s(this,ze,this.runtimeUtils);this.templates[t]=i}return this.templates[t]}_compileTemplate(t,e){throw new r("Unable to compile a template. Please use owl full build instead")}callTemplate(t,e,n,s,o){return i(e,this.getTemplate(e).call(t,n,s,o+e))}}const qe={};function Xe(...t){const e="__template__"+Xe.nextId++,n=String.raw(...t);return qe[e]=n,e}Xe.nextId=1,Ge.registerTemplate("__portal__",function(t,e,n){let{callSlot:s}=n;return function(t,e,n=""){return new fe(t.this.props.target,s(t,e,n,"default",!1,null))}});const Ye="true,false,NaN,null,undefined,debugger,console,window,in,instanceof,new,function,return,eval,void,Math,RegExp,Array,Object,Date,__globals__".split(","),Je=Object.assign(Object.create(null),{and:"&&",or:"||",gt:">",gte:">=",lt:"<",lte:"<="}),Ze=Object.assign(Object.create(null),{"{":"LEFT_BRACE","}":"RIGHT_BRACE","[":"LEFT_BRACKET","]":"RIGHT_BRACKET",":":"COLON",",":"COMMA","(":"LEFT_PAREN",")":"RIGHT_PAREN"}),Qe="...,.,===,==,+,!==,!=,!,||,&&,>=,>,<=,<,?,-,*,/,%,typeof ,=>,=,;,in ,new ,|,&,^,~".split(",");const tn=[function(t){let e=t[0],n=e;if("'"!==e&&'"'!==e&&"`"!==e)return!1;let s,o=1;for(;t[o]&&t[o]!==n;){if(s=t[o],e+=s,"\\"===s){if(o++,s=t[o],!s)throw new r("Invalid expression");e+=s}o++}if(t[o]!==n)throw new r("Invalid expression");return e+=n,"`"===n?{type:"TEMPLATE_STRING",value:e,replace:t=>e.replace(/\$\{(.*?)\}/g,(e,n)=>"${"+t(n)+"}")}:{type:"VALUE",value:e}},function(t){let e=t[0];if(e&&e.match(/[0-9]/)){let n=1;for(;t[n]&&t[n].match(/[0-9]|\./);)e+=t[n],n++;return{type:"VALUE",value:e}}return!1},function(t){for(let e of Qe)if(t.startsWith(e))return{type:"OPERATOR",value:e};return!1},function(t){let e=t[0];if(e&&e.match(/[a-zA-Z_\$]/)){let n=1;for(;t[n]&&t[n].match(/[\w\$]/);)e+=t[n],n++;return e in Je?{type:"OPERATOR",value:Je[e],size:e.length}:{type:"SYMBOL",value:e}}return!1},function(t){const e=t[0];return!(!e||!(e in Ze))&&{type:Ze[e],value:e}}];const en=t=>t&&("LEFT_BRACE"===t.type||"COMMA"===t.type),nn=t=>t&&("RIGHT_BRACE"===t.type||"COMMA"===t.type);function sn(t){const e=new Set,n=function(t){const e=[];let n,s=!0,o=t;try{for(;s;)if(o=o.trim(),o){for(let t of tn)if(s=t(o),s){e.push(s),o=o.slice(s.size||s.value.length);break}}else s=!1}catch(t){n=t}if(o.length||n)throw new r(`Tokenizer error: could not tokenize \`${t}\``);return e}(t);let s=0,o=[];for(;s<n.length;){let t=n[s],i=n[s-1],r=n[s+1],l=o[o.length-1];switch(t.type){case"LEFT_BRACE":case"LEFT_BRACKET":case"LEFT_PAREN":o.push(t.type);break;case"RIGHT_BRACE":case"RIGHT_BRACKET":case"RIGHT_PAREN":o.pop()}let a="SYMBOL"===t.type&&!Ye.includes(t.value);if(a&&i&&("LEFT_BRACE"===l&&en(i)&&nn(r)&&(n.splice(s+1,0,{type:"COLON",value:":"},{...t}),r=n[s+1]),"OPERATOR"===i.type&&"."===i.value?a=!1:"LEFT_BRACE"!==i.type&&"COMMA"!==i.type||r&&"COLON"===r.type&&(a=!1)),"TEMPLATE_STRING"===t.type&&(t.value=t.replace(t=>rn(t))),r&&"OPERATOR"===r.type&&"=>"===r.value)if("RIGHT_PAREN"===t.type){let t=s-1;for(;t>0&&"LEFT_PAREN"!==n[t].type;)"SYMBOL"===n[t].type&&n[t].originalValue&&(n[t].value=n[t].originalValue,e.add(n[t].value)),t--}else e.add(t.value);a&&(t.varName=t.value,e.has(t.value)||(t.originalValue=t.value,t.value=`ctx['${t.value}']`)),s++}for(const t of n)"SYMBOL"===t.type&&t.varName&&e.has(t.value)&&(t.originalValue=t.value,t.value=`_${t.value}`,t.isLocal=!0);return n}const on=new Map([["in "," in "]]);function rn(t){return sn(t).map(t=>on.get(t.value)||t.value).join("")}const ln=/\{\{.*?\}\}|\#\{.*?\}/g;function an(t){return function(t,e){let n=t.match(ln);if(n&&n[0].length===t.length)return`(${e(t.slice(2,"{"===n[0][0]?-2:-1))})`;let s=t.replace(ln,t=>"${"+e(t.slice(2,"{"===t[0]?-2:-1))+"}");return"`"+s+"`"}(t,rn)}const cn=/\s+/g,hn=document.implementation.createDocument(null,null,null),un=new Set(["stop","capture","prevent","self","synthetic"]);let dn={};function fn(t=""){return dn[t]=(dn[t]||0)+1,t+dn[t]}function pn(t,e){switch(t){case"input":return"checked"===e||"indeterminate"===e||"value"===e||"readonly"===e||"readOnly"===e||"disabled"===e;case"option":return"selected"===e||"disabled"===e;case"textarea":return"value"===e||"readonly"===e||"readOnly"===e||"disabled"===e;case"select":return"value"===e||"disabled"===e;case"button":case"optgroup":return"disabled"===e}return!1}function mn(t){return`\`${t.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/,"\\${")}\``}class gn{constructor(t,e){this.dynamicTagName=null,this.isRoot=!1,this.hasDynamicChildren=!1,this.children=[],this.data=[],this.childNumber=0,this.parentVar="",this.id=gn.nextBlockId++,this.varName="b"+this.id,this.blockName="block"+this.id,this.target=t,this.type=e}insertData(t,e="d"){const n=fn(e);return this.target.addLine(`let ${n} = ${t};`),this.data.push(n)-1}insert(t){this.currentDom?this.currentDom.appendChild(t):this.dom=t}generateExpr(t){if("block"===this.type){const t=this.children.length;let e=this.data.length?`[${this.data.join(", ")}]`:t?"[]":"";return t&&(e+=", ["+this.children.map(t=>t.varName).join(", ")+"]"),this.dynamicTagName?`toggler(${this.dynamicTagName}, ${this.blockName}(${this.dynamicTagName})(${e}))`:`${this.blockName}(${e})`}return"list"===this.type?`list(c_block${this.id})`:t}asXmlString(){const t=hn.createElement("t");return t.appendChild(this.dom),t.innerHTML}}function vn(t,e){return Object.assign({block:null,index:0,forceNewBlock:!0,translate:t.translate,translationCtx:t.translationCtx,tKeyExpr:null,nameSpace:t.nameSpace,tModelSelectedExpr:t.tModelSelectedExpr},e)}gn.nextBlockId=1;class bn{constructor(t,e){this.indentLevel=0,this.loopLevel=0,this.code=[],this.hasRoot=!1,this.hasCache=!1,this.shouldProtectScope=!1,this.name=t,this.on=e||null}addLine(t,e){const n=new Array(this.indentLevel+2).join(" ");void 0===e?this.code.push(n+t):this.code.splice(e,0,n+t)}generateCode(){let t=[];t.push(`function ${this.name}(ctx, node, key = "") {`),this.shouldProtectScope&&(t.push(" ctx = Object.create(ctx);"),t.push(" ctx[isBoundary] = 1")),this.hasCache&&(t.push(" let cache = ctx.cache || {};"),t.push(" let nextCache = ctx.cache = {};"));for(let e of this.code)t.push(e);return this.hasRoot||t.push("return text('');"),t.push("}"),t.join("\n ")}currentKey(t){let e=this.loopLevel?`key${this.loopLevel}`:"key";return t.tKeyExpr&&(e=`${t.tKeyExpr} + ${e}`),e}}const yn=["alt","aria-label","aria-placeholder","aria-roledescription","aria-valuetext","label","placeholder","title"],wn=/^(\s*)([\s\S]+?)(\s*)$/;class xn{constructor(t,e){if(this.blocks=[],this.nextBlockId=1,this.isDebug=!1,this.targets=[],this.target=new bn("template"),this.translatableAttributes=yn,this.staticDefs=[],this.slotNames=new Set,this.helpers=new Set,this.translateFn=e.translateFn||(t=>t),e.translatableAttributes){const t=new Set(yn);for(let n of e.translatableAttributes)n.startsWith("-")?t.delete(n.slice(1)):t.add(n);this.translatableAttributes=[...t]}this.hasSafeContext=e.hasSafeContext||!1,this.dev=e.dev||!1,this.ast=t,this.templateName=e.name,e.hasGlobalValues&&this.helpers.add("__globals__")}generateCode(){const t=this.ast;this.isDebug=11===t.type,gn.nextBlockId=1,dn={},this.compileAST(t,{block:null,index:0,forceNewBlock:!1,isLast:!0,translate:!0,translationCtx:"",tKeyExpr:null});let e=[" let { text, createBlock, list, multi, html, toggler, comment } = bdom;"];this.helpers.size&&e.push(`let { ${[...this.helpers].join(", ")} } = helpers;`),this.templateName&&e.push(`// Template name: "${this.templateName}"`);for(let{id:t,expr:n}of this.staticDefs)e.push(`const ${t} = ${n};`);if(this.blocks.length){e.push("");for(let t of this.blocks)if(t.dom){let n=mn(t.asXmlString());t.dynamicTagName?(n=n.replace(/^`<\w+/,`\`<\${tag || '${t.dom.nodeName}'}`),n=n.replace(/\w+>`$/,`\${tag || '${t.dom.nodeName}'}>\``),e.push(`let ${t.blockName} = tag => createBlock(${n});`)):e.push(`let ${t.blockName} = createBlock(${n});`)}}if(this.targets.length)for(let t of this.targets)e.push(""),e=e.concat(t.generateCode());e.push(""),e=e.concat("return "+this.target.generateCode());const n=e.join("\n ");if(this.isDebug){const t=`[Owl Debug]\n${n}`;console.log(t)}return n}compileInNewTarget(t,e,n,s){const o=fn(t),i=this.target,r=new bn(o,s);return this.targets.push(r),this.target=r,this.compileAST(e,vn(n)),this.target=i,o}addLine(t,e){this.target.addLine(t,e)}define(t,e){this.addLine(`const ${t} = ${e};`)}insertAnchor(t,e=t.children.length){const n=`block-child-${e}`,s=hn.createElement(n);t.insert(s)}createBlock(t,e,n){const s=this.target.hasRoot,o=new gn(this.target,e);return s||(this.target.hasRoot=!0,o.isRoot=!0),t&&(t.children.push(o),"list"===t.type&&(o.parentVar=`c_block${t.id}`)),o}insertBlock(t,e,n){let s=e.generateExpr(t);if(e.parentVar){let t=this.target.currentKey(n);return this.helpers.add("withKey"),void this.addLine(`${e.parentVar}[${n.index}] = withKey(${s}, ${t});`)}n.tKeyExpr&&(s=`toggler(${n.tKeyExpr}, ${s})`),e.isRoot?(this.target.on&&(s=this.wrapWithEventCatcher(s,this.target.on)),this.addLine(`return ${s};`)):this.define(e.varName,s)}captureExpression(t,e=!1){if(!e&&!t.includes("=>"))return rn(t);const n=sn(t),s=new Map;return n.map(t=>{if(t.varName&&!t.isLocal){if(!s.has(t.varName)){const e=fn("v");s.set(t.varName,e),this.define(e,t.value)}t.value=s.get(t.varName)}return t.value}).join("")}translate(t,e){const n=wn.exec(t);return n[1]+this.translateFn(n[2],e)+n[3]}compileAST(t,e){switch(t.type){case 1:return this.compileComment(t,e);case 0:return this.compileText(t,e);case 2:return this.compileTDomNode(t,e);case 7:return this.compileTOut(t,e);case 4:return this.compileTIf(t,e);case 8:return this.compileTForeach(t,e);case 9:return this.compileTKey(t,e);case 3:return this.compileMulti(t,e);case 6:return this.compileTCall(t,e);case 14:return this.compileTCallBlock(t,e);case 5:return this.compileTSet(t,e);case 10:return this.compileComponent(t,e);case 11:return this.compileDebug(t,e);case 12:return this.compileLog(t,e);case 13:return this.compileTCallSlot(t,e);case 15:return this.compileTTranslation(t,e);case 16:return this.compileTTranslationContext(t,e);case 17:return this.compileTPortal(t,e)}}compileDebug(t,e){return this.addLine("debugger;"),t.content?this.compileAST(t.content,e):null}compileLog(t,e){return this.addLine(`console.log(${rn(t.expr)});`),t.content?this.compileAST(t.content,e):null}compileComment(t,e){let{block:n,forceNewBlock:s}=e;if(!n||s)n=this.createBlock(n,"comment",e),this.insertBlock(`comment(${mn(t.value)})`,n,{...e,forceNewBlock:s&&!n});else{const e=hn.createComment(t.value);n.insert(e)}return n.varName}compileText(t,e){let{block:n,forceNewBlock:s}=e,o=t.value;if(o&&!1!==e.translate&&(o=this.translate(o,e.translationCtx)),e.inPreTag||(o=o.replace(cn," ")),!n||s)n=this.createBlock(n,"text",e),this.insertBlock(`text(${mn(o)})`,n,{...e,forceNewBlock:s&&!n});else{const e=0===t.type?hn.createTextNode:hn.createComment;n.insert(e.call(hn,o))}return n.varName}generateHandlerCode(t,e){const n=t.split(".").slice(1).map(t=>{if(!un.has(t))throw new r(`Unknown event modifier: '${t}'`);return`"${t}"`});let s="";return n.length&&(s=`${n.join(",")}, `),`[${s}${this.captureExpression(e)}, ctx]`}compileTDomNode(t,e){var n;let{block:s,forceNewBlock:o}=e;const i=!s||o||null!==t.dynamicTag||t.ns;let r=this.target.code.length;if(i&&((t.dynamicTag||e.tKeyExpr||t.ns)&&e.block&&this.insertAnchor(e.block),s=this.createBlock(s,"block",e),this.blocks.push(s),t.dynamicTag)){const e=fn("tag");this.define(e,rn(t.dynamicTag)),s.dynamicTagName=e}const l={};for(let o in t.attrs){let i,r;if(o.startsWith("t-attf")){i=an(t.attrs[o]);const e=s.insertData(i,"attr");r=o.slice(7),l["block-attribute-"+e]=r}else if(o.startsWith("t-att"))if(r="t-att"===o?null:o.slice(6),i=rn(t.attrs[o]),r&&pn(t.tag,r)){"readonly"===r&&(r="readOnly"),i="value"===r?`new String((${i}) === 0 ? 0 : ((${i}) || ""))`:`new Boolean(${i})`;l[`block-property-${s.insertData(i,"prop")}`]=r}else{const t=s.insertData(i,"attr");"t-att"===o?l["block-attributes"]=String(t):l[`block-attribute-${t}`]=r}else if(this.translatableAttributes.includes(o)){const s=(null===(n=t.attrsTranslationCtx)||void 0===n?void 0:n[o])||e.translationCtx;l[o]=this.translateFn(t.attrs[o],s)}else i=`"${t.attrs[o]}"`,r=o,l[o]=t.attrs[o];if("value"===r&&e.tModelSelectedExpr){l[`block-attribute-${s.insertData(`${e.tModelSelectedExpr} === ${i}`,"attr")}`]="selected"}}let a;if(t.model){const{hasDynamicChildren:e,expr:n,eventType:o,shouldNumberize:i,shouldTrim:r,targetAttr:c,specialInitTargetAttr:h}=t.model,u=rn(n),d=fn("expr");let f;if(this.helpers.add("modelExpr"),this.define(d,`modelExpr(${u})`),h){let e=c in l&&`'${l[c]}'`;if(!e&&t.attrs){const n=t.attrs[`t-att-${c}`];n&&(e=rn(n))}f=s.insertData(`${d}() === ${e}`,"prop"),l[`block-property-${f}`]=h}else if(e){a=`${fn("bValue")}`,this.define(a,`${d}()`)}else f=s.insertData(`${d}()`,"prop"),l[`block-property-${f}`]=c;this.helpers.add("toNumber");let p=`ev.target.${c}`;p=r?`${p}.trim()`:p,p=i?`toNumber(${p})`:p;const m=`[(ev) => { ${d}.set(${p}); }]`;f=s.insertData(m,"hdlr"),l[`block-handler-${f}`]=o}for(let e in t.on){const n=this.generateHandlerCode(e,t.on[e]);l[`block-handler-${s.insertData(n,"hdlr")}`]=e}if(t.ref){const e=rn(t.ref);this.helpers.add("createRef");const n=`createRef(${e})`,o=s.insertData(n,"ref");l["block-ref"]=String(o)}const c=t.ns||e.nameSpace,h=c?hn.createElementNS(c,t.tag):hn.createElement(t.tag);for(const[t,e]of Object.entries(l))"class"===t&&""===e||h.setAttribute(t,e);if(s.insert(h),t.content.length){const n=s.currentDom;s.currentDom=h;const o=t.content;for(let n=0;n<o.length;n++){const i=t.content[n],r=vn(e,{block:s,index:s.childNumber,forceNewBlock:!1,isLast:e.isLast&&n===o.length-1,tKeyExpr:e.tKeyExpr,nameSpace:c,tModelSelectedExpr:a,inPreTag:e.inPreTag||"pre"===t.tag});this.compileAST(i,r)}s.currentDom=n}if(i&&(this.insertBlock(`${s.blockName}(ddd)`,s,e),s.children.length&&s.hasDynamicChildren)){const t=this.target.code,e=s.children.slice();let n=e.shift();for(let s=r;s<t.length&&(!t[s].trimStart().startsWith(`const ${n.varName} `)||(t[s]=t[s].replace(`const ${n.varName}`,n.varName),n=e.shift(),n));s++);this.addLine(`let ${s.children.map(t=>t.varName).join(", ")};`,r)}return s.varName}compileTOut(t,e){let n,{block:s}=e;if(s&&this.insertAnchor(s),s=this.createBlock(s,"html",e),"0"===t.expr)this.helpers.add("zero"),n="ctx[zero]";else if(t.body){let s=null;s=gn.nextBlockId;const o=vn(e);this.compileAST({type:3,content:t.body},o),this.helpers.add("safeOutput"),n=`safeOutput(${rn(t.expr)}, b${s})`}else this.helpers.add("safeOutput"),n=`safeOutput(${rn(t.expr)})`;return this.insertBlock(n,s,e),s.varName}compileTIfBranch(t,e,n){this.target.indentLevel++;let s=e.children.length;this.compileAST(t,vn(n,{block:e,index:n.index})),e.children.length>s&&this.insertAnchor(e,s),this.target.indentLevel--}compileTIf(t,e,n){let{block:s,forceNewBlock:o}=e;const i=this.target.code.length,r=!s||"multi"!==s.type&&o;if(s&&(s.hasDynamicChildren=!0),(!s||"multi"!==s.type&&o)&&(s=this.createBlock(s,"multi",e)),this.addLine(`if (${rn(t.condition)}) {`),this.compileTIfBranch(t.content,s,e),t.tElif)for(let n of t.tElif)this.addLine(`} else if (${rn(n.condition)}) {`),this.compileTIfBranch(n.content,s,e);if(t.tElse&&(this.addLine("} else {"),this.compileTIfBranch(t.tElse,s,e)),this.addLine("}"),r){if(s.children.length){const t=this.target.code,e=s.children.slice();let n=e.shift();for(let s=i;s<t.length&&(!t[s].trimStart().startsWith(`const ${n.varName} `)||(t[s]=t[s].replace(`const ${n.varName}`,n.varName),n=e.shift(),n));s++);this.addLine(`let ${s.children.map(t=>t.varName).join(", ")};`,i)}const t=s.children.map(t=>t.varName).join(", ");this.insertBlock(`multi([${t}])`,s,e)}return s.varName}compileTForeach(t,e){let{block:n}=e;n&&this.insertAnchor(n),n=this.createBlock(n,"list",e),this.target.loopLevel++;const s=`i${this.target.loopLevel}`;this.addLine("ctx = Object.create(ctx);");const o=`v_block${n.id}`,i=`k_block${n.id}`,r=`l_block${n.id}`,l=`c_block${n.id}`;let a;this.helpers.add("prepareList"),this.define(`[${i}, ${o}, ${r}, ${l}]`,`prepareList(${rn(t.collection)});`),this.dev&&this.define(`keys${n.id}`,"new Set()"),this.addLine(`for (let ${s} = 0; ${s} < ${r}; ${s}++) {`),this.target.indentLevel++,this.addLine(`ctx[\`${t.elem}\`] = ${i}[${s}];`),t.hasNoFirst||this.addLine(`ctx[\`${t.elem}_first\`] = ${s} === 0;`),t.hasNoLast||this.addLine(`ctx[\`${t.elem}_last\`] = ${s} === ${i}.length - 1;`),t.hasNoIndex||this.addLine(`ctx[\`${t.elem}_index\`] = ${s};`),t.hasNoValue||this.addLine(`ctx[\`${t.elem}_value\`] = ${o}[${s}];`),this.define(`key${this.target.loopLevel}`,t.key?rn(t.key):s),this.dev&&(this.helpers.add("OwlError"),this.addLine(`if (keys${n.id}.has(String(key${this.target.loopLevel}))) { throw new OwlError(\`Got duplicate key in t-foreach: \${key${this.target.loopLevel}}\`)}`),this.addLine(`keys${n.id}.add(String(key${this.target.loopLevel}));`)),t.memo&&(this.target.hasCache=!0,a=fn(),this.define(`memo${a}`,rn(t.memo)),this.define(`vnode${a}`,`cache[key${this.target.loopLevel}];`),this.addLine(`if (vnode${a}) {`),this.target.indentLevel++,this.addLine(`if (shallowEqual(vnode${a}.memo, memo${a})) {`),this.target.indentLevel++,this.addLine(`${l}[${s}] = vnode${a};`),this.addLine(`nextCache[key${this.target.loopLevel}] = vnode${a};`),this.addLine("continue;"),this.target.indentLevel--,this.addLine("}"),this.target.indentLevel--,this.addLine("}"));const c=vn(e,{block:n,index:s});return this.compileAST(t.body,c),t.memo&&this.addLine(`nextCache[key${this.target.loopLevel}] = Object.assign(${l}[${s}], {memo: memo${a}});`),this.target.indentLevel--,this.target.loopLevel--,this.addLine("}"),e.isLast||this.addLine("ctx = ctx.__proto__;"),this.insertBlock("l",n,e),n.varName}compileTKey(t,e){const n=fn("tKey_");return this.define(n,rn(t.expr)),e=vn(e,{tKeyExpr:n,block:e.block,index:e.index}),this.compileAST(t.content,e)}compileMulti(t,e){let{block:n,forceNewBlock:s}=e;const o=!n||s;let i=this.target.code.length;if(o){let s=null;if(t.content.filter(t=>!t.hasNoRepresentation).length<=1){for(let n of t.content){const t=this.compileAST(n,e);s=s||t}return s}n=this.createBlock(n,"multi",e)}let r=0;for(let s=0,o=t.content.length;s<o;s++){const i=t.content[s],l=!i.hasNoRepresentation,a=vn(e,{block:n,index:r,forceNewBlock:l,isLast:e.isLast&&s===o-1});this.compileAST(i,a),l&&r++}if(o){if(n.hasDynamicChildren&&n.children.length){const t=this.target.code,e=n.children.slice();let s=e.shift();for(let n=i;n<t.length&&(!t[n].trimStart().startsWith(`const ${s.varName} `)||(t[n]=t[n].replace(`const ${s.varName}`,s.varName),s=e.shift(),s));n++);this.addLine(`let ${n.children.map(t=>t.varName).join(", ")};`,i)}const t=n.children.map(t=>t.varName).join(", ");this.insertBlock(`multi([${t}])`,n,e)}return n.varName}compileTCall(t,e){let{block:n,forceNewBlock:s}=e,o=e.ctxVar||"ctx";t.context&&(o=fn("ctx"),this.addLine(`let ${o} = {this: ${rn(t.context)}, __owl__: this.__owl__};`));const i=ln.test(t.name),r=i?an(t.name):"`"+t.name+"`";if(n&&!s&&this.insertAnchor(n),n=this.createBlock(n,"multi",e),t.body){this.addLine(`${o} = Object.create(${o});`),this.addLine(`${o}[isBoundary] = 1;`),this.helpers.add("isBoundary");const n=vn(e,{ctxVar:o}),s=this.compileMulti({type:3,content:t.body},n);s&&(this.helpers.add("zero"),this.addLine(`${o}[zero] = ${s};`))}const l=this.generateComponentKey();if(i){const t=fn("template");this.staticDefs.find(t=>"call"===t.id)||this.staticDefs.push({id:"call",expr:"app.callTemplate.bind(app)"}),this.define(t,r),this.insertBlock(`call(this, ${t}, ${o}, node, ${l})`,n,{...e,forceNewBlock:!n})}else{const t=fn("callTemplate_");this.staticDefs.push({id:t,expr:`app.getTemplate(${r})`}),this.insertBlock(`${t}.call(this, ${o}, node, ${l})`,n,{...e,forceNewBlock:!n})}return t.body&&!e.isLast&&this.addLine(`${o} = ${o}.__proto__;`),n.varName}compileTCallBlock(t,e){let{block:n,forceNewBlock:s}=e;return n&&(s||this.insertAnchor(n)),n=this.createBlock(n,"multi",e),this.insertBlock(rn(t.name),n,{...e,forceNewBlock:!n}),n.varName}compileTSet(t,e){this.target.shouldProtectScope=!0,this.helpers.add("isBoundary").add("withDefault");const n=t.value?rn(t.value||""):"null";if(t.body){this.helpers.add("LazyValue");const s={type:3,content:t.body};let o=`new LazyValue(${this.compileInNewTarget("value",s,e)}, ctx, this, node, ${this.target.currentKey(e)})`;o=t.value?o?`withDefault(${n}, ${o})`:n:o,this.addLine(`ctx[\`${t.name}\`] = ${o};`)}else{let s;if(t.defaultValue){const o=mn(e.translate?this.translate(t.defaultValue,e.translationCtx):t.defaultValue);s=t.value?`withDefault(${n}, ${o})`:o}else s=n;this.helpers.add("setContextValue"),this.addLine(`setContextValue(${e.ctxVar||"ctx"}, "${t.name}", ${s});`)}return null}generateComponentKey(t="key"){const e=[fn("__")];for(let t=0;t<this.target.loopLevel;t++)e.push(`\${key${t+1}}`);return`${t} + \`${e.join("__")}\``}formatProp(t,e,n,s){if(t.endsWith(".translate")){const o=(null==n?void 0:n[t])||s;e=mn(this.translateFn(e,o))}else e=this.captureExpression(e);if(t.includes(".")){let[n,s]=t.split(".");switch(t=n,s){case"bind":e=`(${e}).bind(this)`;break;case"alike":case"translate":break;default:throw new r(`Invalid prop suffix: ${s}`)}}return`${t=/^[a-z_]+$/i.test(t)?t:`'${t}'`}: ${e||void 0}`}formatPropObject(t,e,n){return Object.entries(t).map(([t,s])=>this.formatProp(t,s,e,n))}getPropString(t,e){let n=`{${t.join(",")}}`;return e&&(n=`Object.assign({}, ${rn(e)}${t.length?", "+n:""})`),n}compileComponent(t,e){let{block:n}=e;const s="slots"in(t.props||{}),o=t.props?this.formatPropObject(t.props,t.propsTranslationCtx,e.translationCtx):[];let i="";if(t.slots){let n="ctx";!this.target.loopLevel&&this.hasSafeContext||(n=fn("ctx"),this.helpers.add("capture"),this.define(n,"capture(ctx)"));let s=[];for(let o in t.slots){const i=t.slots[o],r=[];if(i.content){const t=this.compileInNewTarget("slot",i.content,e,i.on);r.push(`__render: ${t}.bind(this), __ctx: ${n}`)}const l=t.slots[o].scope;l&&r.push(`__scope: "${l}"`),t.slots[o].attrs&&r.push(...this.formatPropObject(t.slots[o].attrs,t.slots[o].attrsTranslationCtx,e.translationCtx));const a=`{${r.join(", ")}}`;s.push(`'${o}': ${a}`)}i=`{${s.join(", ")}}`}!i||t.dynamicProps||s||(this.helpers.add("markRaw"),o.push(`slots: markRaw(${i})`));let r,l,a=this.getPropString(o,t.dynamicProps);(i&&(t.dynamicProps||s)||this.dev)&&(r=fn("props"),this.define(r,a),a=r),i&&(t.dynamicProps||s)&&(this.helpers.add("markRaw"),this.addLine(`${r}.slots = markRaw(Object.assign(${i}, ${r}.slots))`)),t.isDynamic?(l=fn("Comp"),this.define(l,rn(t.name))):l=`\`${t.name}\``,n&&(!1===e.forceNewBlock||e.tKeyExpr)&&this.insertAnchor(n);let c=this.generateComponentKey();e.tKeyExpr&&(c=`${e.tKeyExpr} + ${c}`);let h=fn("comp");const u=[];for(let e in t.props||{}){let[t,n]=e.split(".");n||u.push(`"${t}"`)}this.staticDefs.push({id:h,expr:`app.createComponent(${t.isDynamic?null:l}, ${!t.isDynamic}, ${!!t.slots}, ${!!t.dynamicProps}, [${u}])`}),t.isDynamic&&(c=`(${l}).name + ${c}`);let d=`${h}(${a}, ${c}, node, this, ${t.isDynamic?l:null})`;return t.isDynamic&&(d=`toggler(${l}, ${d})`),t.on&&(d=this.wrapWithEventCatcher(d,t.on)),n=this.createBlock(n,"multi",e),this.insertBlock(d,n,e),n.varName}wrapWithEventCatcher(t,e){this.helpers.add("createCatcher");let n=fn("catcher"),s={},o=[];for(let t in e){let n=fn("hdlr"),i=o.push(n)-1;s[t]=i;const r=this.generateHandlerCode(t,e[t]);this.define(n,r)}return this.staticDefs.push({id:n,expr:`createCatcher(${JSON.stringify(s)})`}),`${n}(${t}, [${o.join(",")}])`}compileTCallSlot(t,e){this.helpers.add("callSlot");let n,s,{block:o}=e,i=!1,r=!1;t.name.match(ln)?(i=!0,r=!0,s=an(t.name)):(s="'"+t.name+"'",r=r||this.slotNames.has(t.name),this.slotNames.add(t.name));const l={...t.attrs},a=l["t-props"];delete l["t-props"];let c=this.target.loopLevel?`key${this.target.loopLevel}`:"key";r&&(c=this.generateComponentKey(c));const h=t.attrs?this.formatPropObject(l,t.attrsTranslationCtx,e.translationCtx):[],u=this.getPropString(h,a);if(t.defaultContent){n=`callSlot(ctx, node, ${c}, ${s}, ${i}, ${u}, ${this.compileInNewTarget("defaultContent",t.defaultContent,e)}.bind(this))`}else if(i){let t=fn("slot");this.define(t,s),n=`toggler(${t}, callSlot(ctx, node, ${c}, ${t}, ${i}, ${u}))`}else n=`callSlot(ctx, node, ${c}, ${s}, ${i}, ${u})`;return t.on&&(n=this.wrapWithEventCatcher(n,t.on)),o&&this.insertAnchor(o),o=this.createBlock(o,"multi",e),this.insertBlock(n,o,{...e,forceNewBlock:!1}),o.varName}compileTTranslation(t,e){return t.content?this.compileAST(t.content,Object.assign({},e,{translate:!1})):null}compileTTranslationContext(t,e){return t.content?this.compileAST(t.content,Object.assign({},e,{translationCtx:t.translationCtx})):null}compileTPortal(t,e){this.staticDefs.find(t=>"Portal"===t.id)||this.staticDefs.push({id:"Portal",expr:"app.Portal"});let{block:n}=e;const s=this.compileInNewTarget("slot",t.content,e);let o="ctx";!this.target.loopLevel&&this.hasSafeContext||(o=fn("ctx"),this.helpers.add("capture"),this.define(o,"capture(ctx)"));let i=fn("comp");this.staticDefs.push({id:i,expr:"app.createComponent(null, false, true, false, false)"});const r=`${i}({target: ${rn(t.target)},slots: {'default': {__render: ${s}.bind(this), __ctx: ${o}}}}, ${this.generateComponentKey()}, node, ctx, Portal)`;return n&&this.insertAnchor(n),n=this.createBlock(n,"multi",e),this.insertBlock(r,n,{...e,forceNewBlock:!1}),n.varName}}const Nn=new WeakMap;function $n(t,e){var n;return function(t){let e=t.querySelectorAll("[t-elif], [t-else]");for(let t=0,n=e.length;t<n;t++){let n=e[t],s=n.previousElementSibling,o=t=>s.getAttribute(t),i=t=>+!!n.getAttribute(t);if(!s||!o("t-if")&&!o("t-elif"))throw new r("t-elif and t-else directives must be preceded by a t-if or t-elif directive");{if(o("t-foreach"))throw new r("t-if cannot stay at the same level as t-foreach when using t-elif or t-else");if(["t-if","t-elif","t-else"].map(i).reduce(function(t,e){return t+e})>1)throw new r("Only one conditional branching directive is allowed per node");let t;for(;(t=n.previousSibling)!==s;){if(t.nodeValue.trim().length&&8!==t.nodeType)throw new r("text is not allowed between branching directives");t.remove()}}}}(n=t),function(t){const e=[...t.querySelectorAll("[t-out]")].filter(t=>t.tagName[0]===t.tagName[0].toUpperCase()||t.hasAttribute("t-component"));for(const t of e){if(t.childNodes.length)throw new r("Cannot have t-out on a component that already has content");const e=t.getAttribute("t-out");t.removeAttribute("t-out");const n=t.ownerDocument.createElement("t");null!=e&&n.setAttribute("t-out",e),t.appendChild(n)}}(n),kn(t,e)||{type:0,value:""}}function kn(t,e){return t instanceof Element?function(t,e){if(!e.customDirectives)return null;const n=t.getAttributeNames();for(let s of n){if("t-custom"===s||"t-custom-"===s)throw new r("Missing custom directive name with t-custom directive");if(s.startsWith("t-custom-")){const n=s.split(".")[0].slice(9),o=e.customDirectives[n];if(!o)throw new r(`Custom directive "${n}" is not defined`);const i=t.getAttribute(s),l=s.split(".").slice(1);t.removeAttribute(s);try{o(t,i,l)}catch(t){throw new r(`Custom directive "${n}" throw the following error: ${t}`)}return kn(t,e)}}return null}(t,e)||function(t,e){if(t.hasAttribute("t-debug")){t.removeAttribute("t-debug");const n=kn(t,e),s={type:11,content:n};return(null==n?void 0:n.hasNoRepresentation)&&(s.hasNoRepresentation=!0),s}if(t.hasAttribute("t-log")){const n=t.getAttribute("t-log");t.removeAttribute("t-log");const s=kn(t,e),o={type:12,expr:n,content:s};return(null==s?void 0:s.hasNoRepresentation)&&(o.hasNoRepresentation=!0),o}return null}(t,e)||function(t,e){if(!t.hasAttribute("t-foreach"))return null;const n=t.outerHTML,s=t.getAttribute("t-foreach");t.removeAttribute("t-foreach");const o=t.getAttribute("t-as")||"";t.removeAttribute("t-as");const i=t.getAttribute("t-key");if(!i)throw new r(`"Directive t-foreach should always be used with a t-key!" (expression: t-foreach="${s}" t-as="${o}")`);t.removeAttribute("t-key");const l=t.getAttribute("t-memo")||"";t.removeAttribute("t-memo");const a=kn(t,e);if(!a)return null;const c=!n.includes("t-call"),h=c&&!n.includes(`${o}_first`),u=c&&!n.includes(`${o}_last`),d=c&&!n.includes(`${o}_index`),f=c&&!n.includes(`${o}_value`);return{type:8,collection:s,elem:o,body:a,memo:l,key:i,hasNoFirst:h,hasNoLast:u,hasNoIndex:d,hasNoValue:f}}(t,e)||function(t,e){if(!t.hasAttribute("t-if"))return null;const n=t.getAttribute("t-if");t.removeAttribute("t-if");const s=kn(t,e)||{type:0,value:""};let o=t.nextElementSibling;const i=[];for(;o&&o.hasAttribute("t-elif");){const t=o.getAttribute("t-elif");o.removeAttribute("t-elif");const n=kn(o,e),s=o.nextElementSibling;o.remove(),o=s,n&&i.push({condition:t,content:n})}let r=null;o&&o.hasAttribute("t-else")&&(o.removeAttribute("t-else"),r=kn(o,e),o.remove());return{type:4,condition:n,content:s,tElif:i.length?i:null,tElse:r}}(t,e)||function(t,e){if(!t.hasAttribute("t-portal"))return null;const n=t.getAttribute("t-portal");t.removeAttribute("t-portal");const s=kn(t,e);if(!s)return{type:0,value:""};return{type:17,target:n,content:s}}(t,e)||function(t,e){if(!t.hasAttribute("t-call"))return null;const n=t.getAttribute("t-call"),s=t.getAttribute("t-call-context");if(t.removeAttribute("t-call"),t.removeAttribute("t-call-context"),"t"!==t.tagName){const o=kn(t,e),i={type:6,name:n,body:null,context:s};if(o&&2===o.type)return o.content=[i],o;if(o&&10===o.type)return{...o,slots:{default:{content:i,scope:null,on:null,attrs:null,attrsTranslationCtx:null}}}}const o=Dn(t,e);return{type:6,name:n,body:o.length?o:null,context:s}}(t,e)||function(t){if(!t.hasAttribute("t-call-block"))return null;const e=t.getAttribute("t-call-block");return{type:14,name:e}}(t)||function(t,e){if("off"!==t.getAttribute("t-translation"))return null;t.removeAttribute("t-translation");const n=kn(t,e);if(3===(null==n?void 0:n.type)){return Sn(n.content.map(_n))}return _n(n)}(t,e)||function(t,e){const n=t.getAttribute("t-translation-context");if(!n)return null;t.removeAttribute("t-translation-context");const s=kn(t,e);if(3===(null==s?void 0:s.type)){return Sn(s.content.map(t=>Cn(t,n)))}return Cn(s,n)}(t,e)||function(t,e){if(!t.hasAttribute("t-key"))return null;const n=t.getAttribute("t-key");t.removeAttribute("t-key");const s=kn(t,e);if(!s)return null;const o={type:9,expr:n,content:s};s.hasNoRepresentation&&(o.hasNoRepresentation=!0);return o}(t,e)||function(t,e){if(!t.hasAttribute("t-out")&&!t.hasAttribute("t-esc"))return null;t.hasAttribute("t-esc")&&console.warn('t-esc has been deprecated in favor of t-out. If the value to render is not wrapped by the "markup" function, it will be escaped');const n=t.getAttribute("t-out")||t.getAttribute("t-esc");t.removeAttribute("t-out"),t.removeAttribute("t-esc");const s={type:7,expr:n,body:null},o=t.getAttribute("t-ref");t.removeAttribute("t-ref");const i=kn(t,e);if(!i)return s;if(2===i.type)return s.body=i.content.length?i.content:null,{...i,ref:o,content:[s]};return s}(t,e)||function(t,e){if(!t.hasAttribute("t-call-slot")||!t.hasAttribute("t-slot"))return null;t.hasAttribute("t-slot")&&console.warn("t-slot has been renamed t-call-slot.");const n=t.getAttribute("t-call-slot");t.removeAttribute("t-call-slot");let s=null,o=null,i=null;for(let e of t.getAttributeNames()){const n=t.getAttribute(e);if(e.startsWith("t-on-"))i=i||{},i[e.slice(5)]=n;else if(e.startsWith("t-translation-context-")){o=o||{},o[e.slice(22)]=n}else s=s||{},s[e]=n}return{type:13,name:n,attrs:s,attrsTranslationCtx:o,on:i,defaultContent:On(t,e)}}(t,e)||function(t,e){let n=t.tagName;const s=n[0];let o=t.hasAttribute("t-component");if(o&&"t"!==n)throw new r(`Directive 't-component' can only be used on <t> nodes (used on a <${n}>)`);if(s!==s.toUpperCase()&&!o)return null;o&&(n=t.getAttribute("t-component"),t.removeAttribute("t-component"));const i=t.getAttribute("t-props");t.removeAttribute("t-props");const l=t.getAttribute("t-slot-scope");t.removeAttribute("t-slot-scope");let a=null,c=null,h=null;for(let e of t.getAttributeNames()){const n=t.getAttribute(e);if(e.startsWith("t-translation-context-")){h=h||{},h[e.slice(22)]=n}else if(e.startsWith("t-")){if(!e.startsWith("t-on-")){const t=An.get(e.split("-").slice(0,2).join("-"));throw new r(t||`unsupported directive on Component: ${e}`)}a=a||{},a[e.slice(5)]=n}else c=c||{},c[e]=n}let u=null;if(t.hasChildNodes()){const n=t.cloneNode(!0),s=Array.from(n.querySelectorAll("[t-set-slot]"));for(let t of s){if("t"!==t.tagName)throw new r(`Directive 't-set-slot' can only be used on <t> nodes (used on a <${t.tagName}>)`);const s=t.getAttribute("t-set-slot");let o=t.parentElement,i=!1;for(;o&&o!==n;){if(o.hasAttribute("t-component")||o.tagName[0]===o.tagName[0].toUpperCase()){i=!0;break}o=o.parentElement}if(i||!o)continue;t.removeAttribute("t-set-slot"),t.remove();const l=kn(t,e);let a=null,c=null,h=null,d=null;for(let e of t.getAttributeNames()){const n=t.getAttribute(e);if("t-slot-scope"!==e)if(e.startsWith("t-translation-context-")){h=h||{},h[e.slice(22)]=n}else e.startsWith("t-on-")?(a=a||{},a[e.slice(5)]=n):(c=c||{},c[e]=n);else d=n}u=u||{},u[s]={content:l,on:a,attrs:c,attrsTranslationCtx:h,scope:d}}const o=On(n,e);u=u||{},o&&!u.default&&(u.default={content:o,on:a,attrs:null,attrsTranslationCtx:null,scope:l})}return{type:10,name:n,isDynamic:o,dynamicProps:i,props:c,propsTranslationCtx:h,slots:u,on:a}}(t,e)||function(t,e){const{tagName:n}=t,s=t.getAttribute("t-tag");if(t.removeAttribute("t-tag"),"t"===n&&!s)return null;if(n.startsWith("block-"))throw new r(`Invalid tag name: '${n}'`);e=Object.assign({},e),"pre"===n&&(e.inPreTag=!0);let o=!e.nameSpace&&Tn.has(n)?"http://www.w3.org/2000/svg":null;const i=t.getAttribute("t-ref");t.removeAttribute("t-ref");const l=t.getAttributeNames();let a=null,c=null,h=null,u=null;for(let s of l){const i=t.getAttribute(s);if("t-on"===s||"t-on-"===s)throw new r("Missing event name with t-on directive");if(s.startsWith("t-on-"))h=h||{},h[s.slice(5)]=i;else if(s.startsWith("t-model")){if(!["input","select","textarea"].includes(n))throw new r("The t-model directive only works with <input>, <textarea> and <select>");const o=t.getAttribute("type"),l="input"===n,a="select"===n,c=l&&"checkbox"===o,h=l&&"radio"===o,d=s.includes(".trim"),f=d||s.includes(".lazy");u={expr:i,targetAttr:c?"checked":"value",specialInitTargetAttr:h?"checked":null,eventType:h?"click":a||f?"change":"input",hasDynamicChildren:!1,shouldTrim:d,shouldNumberize:s.includes(".number")},a&&((e=Object.assign({},e)).tModelInfo=u)}else{if(s.startsWith("block-"))throw new r(`Invalid attribute: '${s}'`);if("xmlns"===s)o=i;else if(s.startsWith("t-translation-context-")){c=c||{},c[s.slice(22)]=i}else if("t-name"!==s){if(s.startsWith("t-")&&!s.startsWith("t-att"))throw new r(`Unknown QWeb directive: '${s}'`);const t=e.tModelInfo;t&&["t-att-value","t-attf-value"].includes(s)&&(t.hasDynamicChildren=!0),a=a||{},a[s]=i}}}o&&(e.nameSpace=o);const d=Dn(t,e);return{type:2,tag:n,dynamicTag:s,attrs:a,attrsTranslationCtx:c,on:h,ref:i,content:d,model:u,ns:o}}(t,e)||function(t,e){if(!t.hasAttribute("t-set"))return null;const n=t.getAttribute("t-set"),s=t.getAttribute("t-value")||null,o=t.innerHTML===t.textContent&&t.textContent||null;let i=null;t.textContent!==t.innerHTML&&(i=Dn(t,e));return{type:5,name:n,value:s,defaultValue:o,body:i,hasNoRepresentation:!0}}(t,e)||function(t,e){if("t"!==t.tagName)return null;return On(t,e)}(t,e):function(t,e){if(t.nodeType===Node.TEXT_NODE){let n=t.textContent||"";return e.inPreTag||!En.test(n)||n.trim()?{type:0,value:n}:null}if(t.nodeType===Node.COMMENT_NODE)return{type:1,value:t.textContent||""};return null}(t,e)}const En=/[\r\n]/;const Tn=new Set(["svg","g","path"]);const An=new Map([["t-ref","t-ref is no longer supported on components. Consider exposing only the public part of the component's API through a callback prop."],["t-att","t-att makes no sense on component: props are already treated as expressions"],["t-attf","t-attf is not supported on components: use template strings for string interpolation in props"]]);function _n(t){const e={type:15,content:t};return(null==t?void 0:t.hasNoRepresentation)&&(e.hasNoRepresentation=!0),e}function Cn(t,e){const n={type:16,content:t,translationCtx:e};return(null==t?void 0:t.hasNoRepresentation)&&(n.hasNoRepresentation=!0),n}function Dn(t,e){const n=[];for(let s of t.childNodes){const t=kn(s,e);t&&(3===t.type?n.push(...t.content):n.push(t))}return n}function Sn(t){const e={type:3,content:t};return t.every(t=>t.hasNoRepresentation)&&(e.hasNoRepresentation=!0),e}function On(t,e){const n=Dn(t,e);switch(n.length){case 0:return null;case 1:return n[0];default:return Sn(n)}}function Rn(t,e={hasGlobalValues:!1}){const n=function(t,e){const n={inPreTag:!1,customDirectives:e};if("string"==typeof t)return $n(He(`<t>${t}</t>`).firstChild,n);let s=Nn.get(t);return s||(s=$n(t.cloneNode(!0),n),Nn.set(t,s)),s}(t,e.customDirectives),s=t instanceof Node?!(t instanceof Element)||null===t.querySelector("[t-set], [t-call]"):!t.includes("t-set=")&&!t.includes("t-call="),o=new xn(n,{...e,hasSafeContext:s}).generateCode();try{return new Function("app, bdom, helpers",o)}catch(t){const{name:n}=e,s=new r(`Failed to compile ${n?`template "${n}"`:"anonymous template"}: ${t.message}\n\ngenerated code:\nfunction(app, bdom, helpers) {\n${o}\n}`);throw s.cause=t,s}}class Ln{constructor(){this.tasks=new Set,this.frame=0,this.delayedRenders=[],this.cancelledNodes=new Set,this.processing=!1,this.requestAnimationFrame=Ln.requestAnimationFrame}addFiber(t){this.tasks.add(t.root)}scheduleDestroy(t){this.cancelledNodes.add(t),0===this.frame&&(this.frame=this.requestAnimationFrame(()=>this.processTasks()))}flush(){if(this.delayedRenders.length){let t=this.delayedRenders;this.delayedRenders=[];for(let e of t)e.root&&3!==e.node.status&&e.node.fiber===e&&e.render()}0===this.frame&&(this.frame=this.requestAnimationFrame(()=>this.processTasks()))}processTasks(){if(!this.processing){this.processing=!0,this.frame=0;for(let t of this.cancelledNodes)t._destroy();this.cancelledNodes.clear();for(let t of this.tasks)this.processFiber(t);for(let t of this.tasks)3===t.node.status&&this.tasks.delete(t);this.processing=!1}}processFiber(t){if(t.root!==t)return void this.tasks.delete(t);const e=Vt.has(t);e&&0!==t.counter?this.tasks.delete(t):3!==t.node.status?0===t.counter&&(e||t.complete(),t.appliedToDom&&this.tasks.delete(t)):this.tasks.delete(t)}}Ln.requestAnimationFrame=window.requestAnimationFrame.bind(window);let Bn=!1;const In=new Set;window.__OWL_DEVTOOLS__||(window.__OWL_DEVTOOLS__={apps:In,Fiber:Gt,RootFiber:qt,toRaw:Ee,proxy:Oe});class Pn extends Ge{constructor(t={}){super(t),this.scheduler=new Ln,this.roots=new Set,this.name=t.name||"",In.add(this),this.pluginManager=t.pluginManager||new ie(null),t.plugins&&this.pluginManager.startPlugins(t.plugins),t.test&&(this.dev=!0),!this.dev||t.test||Bn||(console.info("Owl is running in 'dev' mode."),Bn=!0)}createRoot(t,e={}){const n=e.props||{};let s,o;const i=new Promise((t,e)=>{s=t,o=e}),r=function(){let t=Yt;return()=>{Yt=t}}();let l,a=null;try{l=this.makeNode(t,n)}catch(t){a=t,o(t)}finally{r()}const c={node:l,promise:i,mount:(t,e)=>(a||(Pn.validateTarget(t),this.mountNode(l,t,s,o,e)),i),destroy:()=>{this.roots.delete(c),l.destroy(),this.scheduler.processTasks()}};return this.roots.add(c),c}makeNode(t,e){return new Zt(t,e,this,null,null)}mountNode(t,e,n,s,o){let i=Wt.get(t);i||(i=[],Wt.set(t,i)),i.unshift((t,e)=>{const n=e();s(n)}),t.mounted.push(()=>{n(t.component),i.shift()}),t.mountComponent(e,o)}destroy(){for(let t of this.roots)t.destroy();this.scheduler.processTasks(),In.delete(this)}createComponent(t,e,n,s,o){const i=!e;let l;const a=0===o.length;l=n?(t,e)=>!0:s?function(t,e){for(let n in t)if(t[n]!==e[n])return!0;return Object.keys(t).length!==Object.keys(e).length}:a?(t,e)=>!1:function(t,e){for(let n of o)if(t[n]!==e[n])return!0;return!1};const c=Zt.prototype.updateAndRender,h=Zt.prototype.initiateRender;return(n,s,o,a,u)=>{let d=o.children,f=d[s];i&&f&&f.component.constructor!==u&&(f=void 0);const p=o.fiber;if(f)(l(f.props,n)||p.deep||f.forceNextRender)&&(f.forceNextRender=!1,c.call(f,n,p));else{if(e){const e=a.constructor.components;if(!e)throw new r(`Cannot find the definition of component "${t}", missing static components key in parent`);if(!(u=e[t]))throw new r(`Cannot find the definition of component "${t}"`);if(!(u.prototype instanceof Qt))throw new r(`"${t}" is not a Component. It must inherit from the Component class`)}f=new Zt(u,n,this,o,s),d[s]=f,h.call(f,new Gt(f,p))}return p.childrenMap[s]=f,f}}handleError(...t){return Ut(...t)}}Pn.validateTarget=function(t){const e=t&&t.ownerDocument;if(e){if(!e.defaultView)throw new r("Cannot mount a component: the target document is not attached to a window (defaultView is missing)");if(t instanceof e.defaultView.HTMLElement||t instanceof ShadowRoot){if(!function(t,e){let n=t;const s=e.defaultView.ShadowRoot;for(;n;){if(n===e)return!0;if(n.parentNode)n=n.parentNode;else{if(!(n instanceof s&&n.host))return!1;n=n.host}}return!1}(t,e))throw new r("Cannot mount a component on a detached dom node");return}}throw new r("Cannot mount component: the target is not a valid DOM element")},Pn.apps=In,Pn.version="3.0.0-alpha";function Mn(t,e){let n;return()=>(null!=n||(n={state:At.STALE,sources:new Set,compute:()=>(St(n),t()),isDerived:!0,value:void 0,observers:new Set,name:null==e?void 0:e.name}),Pt(n),Dt(n),n.value)}const jn=Symbol("Signal");function Vn(t,e,n){const s={value:t,observers:new Set,name:null==n?void 0:n.name};let o=e(s);const i=()=>(Dt(s),o);return i[jn]=s,i.set=t=>{Object.is(s.value,t)||(s.value=t,o=e(s),St(s))},i}function Wn(t,e){return Vn(t,t=>t.value,e)}Wn.invalidate=function(t){if(!(jn in t))throw new r(`Value is not a signal (${t})`);St(t[jn])},Wn.Array=function(t,e){return Vn(t,t=>Se(t.value,t),e)},Wn.Object=function(t,e){return Vn(t,t=>Se(t.value,t),e)},Wn.Map=function(t,e){return Vn(t,t=>Se(t.value,t),e)},Wn.Set=function(t,e){return Vn(t,t=>Se(t.value,t),e)};function Fn(t,e){var n,s,o;const i={state:At.STALE,value:void 0,compute:()=>(Bt(void 0),Kn(i),Bt(i),t()),sources:new Set,childrenEffect:[],name:null==e?void 0:e.name};return null===(o=null===(s=null===(n=Lt())||void 0===n?void 0:n.childrenEffect)||void 0===s?void 0:s.push)||void 0===o||o.call(s,i),Pt(i),()=>{const t=Lt();Bt(void 0),Kn(i),Bt(t)}}function Kn(t){Mt(t),function(t){const e=t.value;e&&"function"==typeof e&&(e(),t.value=void 0)}(t);for(const e of t.childrenEffect)e.state=At.EXECUTED,Mt(e),Kn(e);t.childrenEffect.length=0}function Un(t){he(Fn(t))}n.shouldNormalizeDom=!1,n.mainEventHandler=(t,n,s)=>{const{data:o,modifiers:i}=e(t);t=o;let l=!1;if(i.length){let t=!1;const e=n.target===s;for(const s of i)switch(s){case"self":if(t=!0,e)continue;return l;case"prevent":(t&&e||!t)&&n.preventDefault();continue;case"stop":(t&&e||!t)&&n.stopPropagation(),l=!0;continue}}if(Object.hasOwnProperty.call(t,0)){const e=t[0];if("function"!=typeof e)throw new r(`Invalid handler (expected a function, received: '${e}')`);let s=t[1]?t[1].__owl__:null;s&&1!==s.status||e.call(s?s.component:null,n)}return l};const Hn={config:n,mount:Tt,patch:function(t,e,n=!1){t.patch(e,n)},remove:function(t,e=!1){e&&t.beforeRemove(),t.remove()},list:yt,multi:j,text:q,toggler:i,createBlock:rt,html:Et,comment:X},zn={version:Pn.version};Ge.prototype._compileTemplate=function(t,e){return Rn(e,{name:t,dev:this.dev,translateFn:this.translateFn,translatableAttributes:this.translatableAttributes,customDirectives:this.customDirectives,hasGlobalValues:this.hasGlobalValues})},t.App=Pn,t.Component=Qt,t.EventBus=k,t.OwlError=r,t.Plugin=class{static get id(){var t;return null!==(t=this._shadowId)&&void 0!==t?t:this.name}static set id(t){this._shadowId=t}setup(){}},t.PluginManager=ie,t.Registry=class{constructor(t={}){this._map=Wn.Object(Object.create(null)),this.entries=Mn(()=>Object.entries(this._map()).sort((t,e)=>t[1][0]-e[1][0]).map(([t,e])=>[t,e[1]])),this.items=Mn(()=>this.entries().map(t=>t[1])),this._name=t.name||"registry",this._validation=t.validation}addById(t,e=50){if(!t.id)throw new r(`Item should have an id key (registry '${this._name}')`);return this.add(t.id,t,e)}add(t,e,n=50){return this._validation&&ee(e,this._validation),this._map()[t]=[n,e],this}get(t,e){const n=t in this._map();if(!n&&arguments.length<2)throw new Error(`KeyNotFoundError: Cannot find key "${t}" (registry '${this._name}')`);return n?this._map()[t][1]:e}delete(t){delete this._map()[t]}has(t){return t in this._map()}},t.Resource=class{constructor(t={}){this._items=Wn.Array([]),this.items=Mn(()=>this._items().sort((t,e)=>t[0]-e[0]).map(t=>t[1])),this._validation=t.validation}add(t,e=50){return this._validation&&ee(t,this._validation),this._items().push([e,t]),this}delete(t){const e=this._items().filter(([e,n])=>n!==t);return this._items.set(e),this}has(t){return this._items().some(([e,n])=>n===t)}},t.__info__=zn,t.assertType=ee,t.batched=$,t.blockDom=Hn,t.computed=Mn,t.effect=Fn,t.htmlEscape=T,t.markRaw=ke,t.markup=A,t.mount=async function(t,e,n={}){return new Pn(n).createRoot(t,n).mount(e,n)},t.onError=function(t){const e=Jt();let n=Wt.get(e);n||(n=[],Wt.set(e,n)),n.push(t.bind(e.component))},t.onMounted=ae,t.onPatched=function(t){const e=Jt();e.patched.push(le(e,t,"onPatched"))},t.onWillDestroy=he,t.onWillPatch=function(t){const e=Jt();e.willPatch.unshift(le(e,t,"onWillPatch"))},t.onWillStart=function(t){const e=Jt();e.willStart.push(le(e,t,"onWillStart"))},t.onWillUnmount=ce,t.onWillUpdateProps=function(t){const e=Jt();e.willUpdateProps.push(le(e,t,"onWillUpdateProps"))},t.plugin=re,t.props=ue,t.providePlugins=function(t,e){const n=Jt(),s=new ie(n.pluginManager);return n.pluginManager=s,he(()=>s.destroy()),s.startPlugins(t,e)},t.proxy=Oe,t.signal=Wn,t.status=function(){const t=ie.current,e=t||Jt();return()=>{switch(e.status){case 0:return"new";case 2:return"cancelled";case 1:return t?"started":"mounted";case 3:return"destroyed"}}},t.toRaw=Ee,t.types=te,t.untrack=Rt,t.useComponent=function(){return Yt.component},t.useEffect=Un,t.useListener=function(t,e,n,s){"function"==typeof t?Un(()=>{const o=t();if(o)return o.addEventListener(e,n,s),()=>o.removeEventListener(e,n,s)}):(t.addEventListener(e,n,s),he(()=>t.removeEventListener(e,n,s)))},t.useResource=function(t,e){for(let n of e)t.add(n);he(()=>{for(let n of e)t.delete(n)})},t.validateType=se,t.whenReady=function(t){return new Promise(function(t){"loading"!==document.readyState?t(!0):document.addEventListener("DOMContentLoaded",t,!1)}).then(t||function(){})},t.xml=Xe,zn.date="2026-01-19T17:41:43.775Z",zn.hash="3aafa18",zn.url="https://github.com/odoo/owl"}(this.owl=this.owl||{});
@@ -1,3 +1,3 @@
1
- export declare class OwlError extends Error {
2
- cause?: any;
3
- }
1
+ export declare class OwlError extends Error {
2
+ cause?: any;
3
+ }
@@ -1,8 +1,8 @@
1
- /**
2
- * Parses an XML string into an XML document, throwing errors on parser errors
3
- * instead of returning an XML document containing the parseerror.
4
- *
5
- * @param xml the string to parse
6
- * @returns an XML document corresponding to the content of the string
7
- */
8
- export declare function parseXML(xml: string): XMLDocument;
1
+ /**
2
+ * Parses an XML string into an XML document, throwing errors on parser errors
3
+ * instead of returning an XML document containing the parseerror.
4
+ *
5
+ * @param xml the string to parse
6
+ * @returns an XML document corresponding to the content of the string
7
+ */
8
+ export declare function parseXML(xml: string): XMLDocument;