diff --git a/dev/Sieve/Grammar.js b/dev/Sieve/Grammar.js index d83df718b..595a34bda 100644 --- a/dev/Sieve/Grammar.js +++ b/dev/Sieve/Grammar.js @@ -9,7 +9,7 @@ import { MULTILINE_DOTSTART } from 'Sieve/RegEx'; -import { arrayToString, getMatchTypes, getComparators, koObserve } from 'Sieve/Utils'; +import { arrayToString, getMatchTypes, getComparators } from 'Sieve/Utils'; /** * abstract @@ -154,7 +154,6 @@ export /*abstract*/ class TestCommand extends GrammarCommand this._comparator = ''; this._match_type = ''; this.relational_match = ''; // GrammarQuotedString DQUOTE ( "gt" / "ge" / "lt" / "le" / "eq" / "ne" ) DQUOTE - koObserve(this, 'match_type'); } get require() { return /:value|:count/.test(this._match_type) ? 'relational' : ''; } diff --git a/dev/Sieve/Utils.js b/dev/Sieve/Utils.js index c671af8ae..5f5d13f07 100644 --- a/dev/Sieve/Utils.js +++ b/dev/Sieve/Utils.js @@ -58,18 +58,6 @@ export const serverErrorDesc(text); }, - koObserve = (obj, prop) => { -// Object.getOwnPropertyNames(obj).forEach(prop => { -// prop = prop.replace(/^_/, ''); - obj['ko_' + prop] = ko.computed({ - read: () => obj[prop], - write: (v) => obj[prop] = v, - pure:true - }); -// }); -// Object.preventExtensions(obj); - }, - getComparators = (validOnly = 0) => { let result = [ // Default diff --git a/snappymail/v/0.0.0/app/templates/Views/Sieve/BodyTest.html b/snappymail/v/0.0.0/app/templates/Views/Sieve/BodyTest.html index 8ef90f372..ec89af91d 100644 --- a/snappymail/v/0.0.0/app/templates/Views/Sieve/BodyTest.html +++ b/snappymail/v/0.0.0/app/templates/Views/Sieve/BodyTest.html @@ -1,5 +1,5 @@ - diff --git a/snappymail/v/0.0.0/app/templates/Views/Sieve/CurrentDateTest.html b/snappymail/v/0.0.0/app/templates/Views/Sieve/CurrentDateTest.html index 10660f9ee..1f4937132 100644 --- a/snappymail/v/0.0.0/app/templates/Views/Sieve/CurrentDateTest.html +++ b/snappymail/v/0.0.0/app/templates/Views/Sieve/CurrentDateTest.html @@ -1,6 +1,6 @@ currentdate - diff --git a/snappymail/v/0.0.0/app/templates/Views/Sieve/DateTest.html b/snappymail/v/0.0.0/app/templates/Views/Sieve/DateTest.html index 2afd208d2..777b028ec 100644 --- a/snappymail/v/0.0.0/app/templates/Views/Sieve/DateTest.html +++ b/snappymail/v/0.0.0/app/templates/Views/Sieve/DateTest.html @@ -1,6 +1,6 @@ date - diff --git a/snappymail/v/0.0.0/app/templates/Views/Sieve/EnvironmentTest.html b/snappymail/v/0.0.0/app/templates/Views/Sieve/EnvironmentTest.html index 68a26f8bc..4add3740f 100644 --- a/snappymail/v/0.0.0/app/templates/Views/Sieve/EnvironmentTest.html +++ b/snappymail/v/0.0.0/app/templates/Views/Sieve/EnvironmentTest.html @@ -1,6 +1,6 @@ environment - diff --git a/snappymail/v/0.0.0/app/templates/Views/Sieve/HasFlagTest.html b/snappymail/v/0.0.0/app/templates/Views/Sieve/HasFlagTest.html index 8e89073fc..2c0dd5cc5 100644 --- a/snappymail/v/0.0.0/app/templates/Views/Sieve/HasFlagTest.html +++ b/snappymail/v/0.0.0/app/templates/Views/Sieve/HasFlagTest.html @@ -1,6 +1,6 @@ hasflag - diff --git a/snappymail/v/0.0.0/app/templates/Views/Sieve/HeaderTest.html b/snappymail/v/0.0.0/app/templates/Views/Sieve/HeaderTest.html index 9462e093b..18f7d7b69 100644 --- a/snappymail/v/0.0.0/app/templates/Views/Sieve/HeaderTest.html +++ b/snappymail/v/0.0.0/app/templates/Views/Sieve/HeaderTest.html @@ -1,7 +1,7 @@
- diff --git a/snappymail/v/0.0.0/app/templates/Views/Sieve/MetadataTest.html b/snappymail/v/0.0.0/app/templates/Views/Sieve/MetadataTest.html index 347051630..761c9a71f 100644 --- a/snappymail/v/0.0.0/app/templates/Views/Sieve/MetadataTest.html +++ b/snappymail/v/0.0.0/app/templates/Views/Sieve/MetadataTest.html @@ -1,6 +1,6 @@ metadata - diff --git a/snappymail/v/0.0.0/app/templates/Views/Sieve/NotifyMethodCapabilityTest.html b/snappymail/v/0.0.0/app/templates/Views/Sieve/NotifyMethodCapabilityTest.html index 956106fce..5525e8421 100644 --- a/snappymail/v/0.0.0/app/templates/Views/Sieve/NotifyMethodCapabilityTest.html +++ b/snappymail/v/0.0.0/app/templates/Views/Sieve/NotifyMethodCapabilityTest.html @@ -1,6 +1,6 @@ notifymethodcapability - diff --git a/snappymail/v/0.0.0/app/templates/Views/Sieve/ServerMetadataTest.html b/snappymail/v/0.0.0/app/templates/Views/Sieve/ServerMetadataTest.html index ac817870f..2bb0ed42d 100644 --- a/snappymail/v/0.0.0/app/templates/Views/Sieve/ServerMetadataTest.html +++ b/snappymail/v/0.0.0/app/templates/Views/Sieve/ServerMetadataTest.html @@ -1,6 +1,6 @@ servermetadata - diff --git a/snappymail/v/0.0.0/app/templates/Views/Sieve/SpamTestTest.html b/snappymail/v/0.0.0/app/templates/Views/Sieve/SpamTestTest.html index 6c85bba88..b7570302f 100644 --- a/snappymail/v/0.0.0/app/templates/Views/Sieve/SpamTestTest.html +++ b/snappymail/v/0.0.0/app/templates/Views/Sieve/SpamTestTest.html @@ -1,7 +1,7 @@ spamtest - diff --git a/snappymail/v/0.0.0/app/templates/Views/Sieve/StringTest.html b/snappymail/v/0.0.0/app/templates/Views/Sieve/StringTest.html index 9c09c1be4..6d30eda75 100644 --- a/snappymail/v/0.0.0/app/templates/Views/Sieve/StringTest.html +++ b/snappymail/v/0.0.0/app/templates/Views/Sieve/StringTest.html @@ -1,6 +1,6 @@ string - diff --git a/snappymail/v/0.0.0/app/templates/Views/Sieve/VirusTestTest.html b/snappymail/v/0.0.0/app/templates/Views/Sieve/VirusTestTest.html index 8d7ec6ccd..22dc2b060 100644 --- a/snappymail/v/0.0.0/app/templates/Views/Sieve/VirusTestTest.html +++ b/snappymail/v/0.0.0/app/templates/Views/Sieve/VirusTestTest.html @@ -1,6 +1,6 @@ virustest - diff --git a/vendors/knockout/build/output/knockout-latest.debug.js b/vendors/knockout/build/output/knockout-latest.debug.js index 0de9f2dee..c92f538ac 100644 --- a/vendors/knockout/build/output/knockout-latest.debug.js +++ b/vendors/knockout/build/output/knockout-latest.debug.js @@ -1362,9 +1362,9 @@ ko.expressionRewriting = (() => { divisionLookBehind = /[\])"'A-Za-z0-9_$]+$/, keywordRegexLookBehind = {'in':1,'return':1,'typeof':1}, - parseObjectLiteral = objectLiteralString => { + preProcessBindings = bindingsStringOrKeyValueArray => { // Trim leading and trailing spaces from the string - var str = ko.utils.stringTrim(objectLiteralString); + var str = ko.utils.stringTrim(bindingsStringOrKeyValueArray); // Trim braces '{' surrounding the whole object literal if (str.charCodeAt(0) === 123) str = str.slice(1, -1); @@ -1383,9 +1383,10 @@ ko.expressionRewriting = (() => { // A comma signals the end of a key/value pair if depth is zero if (c === 44) { // "," if (depth <= 0) { - result.push((key && values.length) - ? {key: key, value: values.join('')} - : {'unknown': key || values.join('')}); + if (key && values.length) { + // Values are wrapped in a function so that each value can be accessed independently + result.push("'" + key + "':()=>(" + values.join('') + ")"); + } key = depth = 0; values = []; continue; @@ -1426,34 +1427,13 @@ ko.expressionRewriting = (() => { throw Error("Unbalanced parentheses, braces, or brackets"); } } - return result; - }, - preProcessBindings = (bindingsStringOrKeyValueArray) => { + result.push("'$data':()=>$data"); - var resultStrings = [], -// propertyAccessorResultStrings = [], - keyValueArray = parseObjectLiteral(bindingsStringOrKeyValueArray), - - processKeyValue = (key, val) => { - // Values are wrapped in a function so that each value can be accessed independently - val = 'function(){return ' + val + ' }'; - resultStrings.push("'" + key + "':" + val); - }; - - keyValueArray.forEach(keyValue => - processKeyValue(keyValue.key || keyValue['unknown'], keyValue.value) - ); -/* - if (propertyAccessorResultStrings.length) - processKeyValue('_ko_property_writers', "{" + propertyAccessorResultStrings.join(",") + " }"); -*/ - return resultStrings.join(","); + return result.join(","); }; return { - parseObjectLiteral: parseObjectLiteral, - preProcessBindings: preProcessBindings, keyValueArrayContainsKey: (keyValueArray, key) => @@ -1471,8 +1451,9 @@ ko.expressionRewriting = (() => { // it is !== existing value on that writable observable writeValueToProperty: (element, property, allBindings, key, value, checkIfDifferent) => { if (!property || !ko.isObservable(property)) { - throw Error(`"${key}" must be observable for ${element.outerHTML.replace(/>.+/,'>')}`); -// allBindings.get('_ko_property_writers')?.[key]?.(value); + console.error(`"${key}" should be observable in ${element.outerHTML.replace(/>.+/,'>')}`); +// ko.dataFor(element).key = value; + allBindings.get('$data')[key] = value; } else if (ko.isWriteableObservable(property) && (!checkIfDifferent || property.peek() !== value)) { property(value); } diff --git a/vendors/knockout/build/output/knockout-latest.js b/vendors/knockout/build/output/knockout-latest.js index 3c32d29bf..3757fe343 100644 --- a/vendors/knockout/build/output/knockout-latest.js +++ b/vendors/knockout/build/output/knockout-latest.js @@ -8,61 +8,60 @@ d[a[e]];d[a[g]]=b};c.g={extend:(a,b)=>b?Object.assign(a,b):a,K:(a,b)=>a&&Object.entries(a).forEach(d=>b(d[0],d[1])),Qa:a=>[...a.childNodes].forEach(b=>c.removeNode(b)),Wb:a=>{a=[...a];var b=(a[0]?.ownerDocument||J).createElement("div");a.forEach(d=>b.append(c.ha(d)));return b},ua:(a,b)=>Array.prototype.map.call(a,b?d=>c.ha(d.cloneNode(!0)):d=>d.cloneNode(!0)),pa:(a,b)=>{c.g.Qa(a);b&&a.append(...b)},xa:(a,b)=>{if(a.length){for(b=8===b.nodeType&&b.parentNode||b;a.length&&a[0].parentNode!==b;)a.splice(0, 1);for(;1null==a?"":a.trim?a.trim():a.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,""),Pa:a=>a.ownerDocument.documentElement.contains(1!==a.nodeType?a.parentNode:a),Db:(a,b)=>{if(!a?.nodeType)throw Error("element must be a DOM node when calling triggerEvent");a.dispatchEvent(new Event(b))},h:a=>c.W(a)?a():a,Za:(a,b)=>a.textContent= c.g.h(b)};c.U("utils",c.g);c.U("unwrap",c.g.h);(()=>{let a=0,b="__ko__"+Date.now(),d=new WeakMap;c.g.l={get:(e,g)=>(d.get(e)||{})[g],set:(e,g,l)=>{d.has(e)?d.get(e)[g]=l:d.set(e,{[g]:l});return l},Ra(e,g,l){return this.get(e,g)||this.set(e,g,l)},clear:e=>d.delete(e),Z:()=>a++ +b}})();c.g.N=(()=>{var a=c.g.l.Z(),b={1:1,8:1,9:1},d={1:1,9:1};const e=(f,h)=>{var k=c.g.l.get(f,a);h&&!k&&(k=new Set,c.g.l.set(f,a,k));return k},g=f=>{var h=e(f);h&&(new Set(h)).forEach(k=>k(f));c.g.l.clear(f);d[f.nodeType]&& -l(f.childNodes,!0)},l=(f,h)=>{for(var k=[],n,p=0;p{if("function"!=typeof h)throw Error("Callback must be a function");e(f,1).add(h)},Ya:(f,h)=>{var k=e(f);k&&(k.delete(h),k.size||c.g.l.set(f,a,null))},ha:f=>{c.u.I(()=>{b[f.nodeType]&&(g(f),d[f.nodeType]&&l(f.getElementsByTagName("*")))});return f},removeNode:f=>{c.ha(f);f.parentNode&&f.parentNode.removeChild(f)}}})(); +l(f.childNodes,!0)},l=(f,h)=>{for(var k=[],m,p=0;p{if("function"!=typeof h)throw Error("Callback must be a function");e(f,1).add(h)},Ya:(f,h)=>{var k=e(f);k&&(k.delete(h),k.size||c.g.l.set(f,a,null))},ha:f=>{c.u.I(()=>{b[f.nodeType]&&(g(f),d[f.nodeType]&&l(f.getElementsByTagName("*")))});return f},removeNode:f=>{c.ha(f);f.parentNode&&f.parentNode.removeChild(f)}}})(); c.ha=c.g.N.ha;c.removeNode=c.g.N.removeNode;c.U("utils.domNodeDisposal",c.g.N);c.extenders={debounce:(a,b)=>a.Da(d=>da(d,b)),rateLimit:(a,b)=>a.Da(d=>ca(d,b)),notify:(a,b)=>{a.ka="always"==b?null:L}};class ha{constructor(a,b,d){this.S=a;this.eb=b;this.za=d;this.Ha=!1;this.H=this.da=null}dispose(){this.Ha||(this.H&&c.g.N.Ya(this.da,this.H),this.Ha=!0,this.za(),this.S=this.eb=this.za=this.da=this.H=null)}s(a){this.da=a;c.g.N.addDisposeCallback(a,this.H=this.dispose.bind(this))}}c.P=function(){Object.setPrototypeOf(this, N);N.init(this)};var N={init:a=>{a.R=new Map;a.R.set("change",new Set);a.jb=1},subscribe:function(a,b,d){var e=this;d=d||"change";var g=new ha(e,b?a.bind(b):a,()=>{e.R.get(d).delete(g);e.Ia?.(d)});e.Ja?.(d);e.R.has(d)||e.R.set(d,new Set);e.R.get(d).add(g);return g},B(a,b){b=b||"change";"change"===b&&this.Ea();if(this.na(b)){b="change"===b&&this.Eb||new Set(this.R.get(b));try{c.u.nb(),b.forEach(d=>{d.Ha||d.eb(a)})}finally{c.u.end()}}},ya(){return this.jb},Rb(a){return this.ya()!==a},Ea(){++this.jb}, -Da(a){var b=this,d=c.W(b),e,g,l,f,h;b.ra||(b.ra=b.B,b.B=(n,p)=>{p&&"change"!==p?"beforeChange"===p?b.gb(n):b.ra(n,p):b.hb(n)});var k=a(()=>{b.ea=!1;d&&f===b&&(f=b.fb?b.fb():b());var n=g||h&&b.Ba(l,f);h=g=e=!1;n&&b.ra(l=f)});b.hb=(n,p)=>{p&&b.ea||(h=!p);b.Eb=new Set(b.R.get("change"));b.ea=e=!0;f=n;k()};b.gb=n=>{e||(l=n,b.ra(n,"beforeChange"))};b.ib=()=>{h=!0};b.Gb=()=>{b.Ba(l,b.L(!0))&&(g=!0)}},na(a){return(this.R.get(a)||[]).size},Ba(a,b){return!this.ka||!this.ka(a,b)},toString:()=>"[object Object]", +Da(a){var b=this,d=c.W(b),e,g,l,f,h;b.ra||(b.ra=b.B,b.B=(m,p)=>{p&&"change"!==p?"beforeChange"===p?b.gb(m):b.ra(m,p):b.hb(m)});var k=a(()=>{b.ea=!1;d&&f===b&&(f=b.fb?b.fb():b());var m=g||h&&b.Ba(l,f);h=g=e=!1;m&&b.ra(l=f)});b.hb=(m,p)=>{p&&b.ea||(h=!p);b.Eb=new Set(b.R.get("change"));b.ea=e=!0;f=m;k()};b.gb=m=>{e||(l=m,b.ra(m,"beforeChange"))};b.ib=()=>{h=!0};b.Gb=()=>{b.Ba(l,b.L(!0))&&(g=!0)}},na(a){return(this.R.get(a)||[]).size},Ba(a,b){return!this.ka||!this.ka(a,b)},toString:()=>"[object Object]", extend:function(a){var b=this;a&&c.g.K(a,(d,e)=>{d=c.extenders[d];"function"==typeof d&&(b=d(b,e)||b)});return b}};c.P.fn=Object.setPrototypeOf(N,Function.prototype);c.Vb=a=>"function"==typeof a?.subscribe&&"function"==typeof a.B;(()=>{let a=[],b,d=0;c.u={nb:e=>{a.push(b);b=e},end:()=>b=a.pop(),zb:e=>{if(b){if(!c.Vb(e))throw Error("Only subscribable things can act as dependencies");b.Jb.call(b.Kb,e,e.Fb||(e.Fb=++d))}},I(e,g,l){try{return a.push(b),b=void 0,e.apply(g,l||[])}finally{b=a.pop()}},ma:()=> b?.o.ma(),Ca:()=>b?.Ca,o:()=>b?.o}})();const A=Symbol("_latestValue");c.$=a=>{function b(){if(0b[A]?.length});c.P.fn.init(b);return Object.setPrototypeOf(b,E)};var E={toJSON:function(){let a=this[A];return a?.toJSON?.()||a},ka:L,L(){return this[A]},valueHasMutated:function(){this.B(this[A],"spectate");this.B(this[A])},cb(){this.B(this[A], "beforeChange")}};Object.setPrototypeOf(E,c.P.fn);var D=c.$.Zb="__ko_proto__";E[D]=c.$;c.W=a=>{if((a="function"==typeof a&&a[D])&&a!==E[D]&&a!==c.o.fn[D])throw Error("Invalid object that looks like an observable; possibly from another Knockout instance");return!!a};c.vb=a=>"function"==typeof a&&(a[D]===E[D]||a[D]===c.o.fn[D]&&a.Sb);c.U("observable",c.$);c.U("isObservable",c.W);c.U("observable.fn",E);c.observableArray=a=>{a=a||[];if(!Array.isArray(a))throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined."); return Object.setPrototypeOf(c.$(a),c.observableArray.fn).extend({trackArrayChanges:!0})};const S=Symbol("IS_OBSERVABLE_ARRAY");c.observableArray.fn=Object.setPrototypeOf({[S]:1,remove:function(a){for(var b=this.L(),d=!1,e="function"!=typeof a||c.W(a)?f=>f===a:a,g=b.length;g--;){var l=b[g];if(e(l)){if(b[g]!==l)throw Error("Array modified during remove; cannot remove item");d||this.cb();d=!0;b.splice(g,1)}}d&&this.valueHasMutated()}},c.$.fn);Object.getOwnPropertyNames(Array.prototype).forEach(a=>{"function"=== -typeof Array.prototype[a]&&"constructor"!=a&&("copyWithin fill pop push reverse shift sort splice unshift".split(" ").includes(a)?c.observableArray.fn[a]=function(...b){var d=this.L();this.cb();this.pb(d,a,b);b=d[a](...b);this.valueHasMutated();return b===d?this:b}:c.observableArray.fn[a]=function(...b){return this()[a](...b)})});c.isObservableArray=a=>!(!a||!a[S]);c.extenders.trackArrayChanges=(a,b)=>{function d(){if(k){var q=[].concat(a.L()||[]);if(a.na("arrayChange")){if(!l||1++k,null,"spectate"),n=[].concat(a.L()||[]),l=null,f=a.subscribe(d))}a.Ka={};"object"==typeof b&&c.g.extend(a.Ka,b);a.Ka.sparse=!0;if(!a.pb){var g=!1,l=null,f,h,k=0,n,p=a.Ja,m=a.Ia;a.Ja=q=>{p?.call(a,q);"arrayChange"===q&&e()};a.Ia=q=>{m?.call(a,q);"arrayChange"!==q||a.na("arrayChange")||(f?.dispose(),h?.dispose(),h=f=null,g=!1,n=void 0)};a.pb=(q,r,u)=>{if(g&&!k){var t=[],z=q.length,w=u.length,y=0,B= +typeof Array.prototype[a]&&"constructor"!=a&&("copyWithin fill pop push reverse shift sort splice unshift".split(" ").includes(a)?c.observableArray.fn[a]=function(...b){var d=this.L();this.cb();this.pb(d,a,b);b=d[a](...b);this.valueHasMutated();return b===d?this:b}:c.observableArray.fn[a]=function(...b){return this()[a](...b)})});c.isObservableArray=a=>!(!a||!a[S]);c.extenders.trackArrayChanges=(a,b)=>{function d(){if(k){var q=[].concat(a.L()||[]);if(a.na("arrayChange")){if(!l||1++k,null,"spectate"),m=[].concat(a.L()||[]),l=null,f=a.subscribe(d))}a.Ka={};"object"==typeof b&&c.g.extend(a.Ka,b);a.Ka.sparse=!0;if(!a.pb){var g=!1,l=null,f,h,k=0,m,p=a.Ja,n=a.Ia;a.Ja=q=>{p?.call(a,q);"arrayChange"===q&&e()};a.Ia=q=>{n?.call(a,q);"arrayChange"!==q||a.na("arrayChange")||(f?.dispose(),h?.dispose(),h=f=null,g=!1,m=void 0)};a.pb=(q,r,u)=>{if(g&&!k){var t=[],z=q.length,w=u.length,y=0,B= (ia,ja,ka)=>t[t.length]={status:ia,value:ja,index:ka};switch(r){case "push":y=z;case "unshift":for(q=0;qu[0]?z+u[0]:u[0]),z);z=1===w?z:Math.min(y+(u[1]||0),z);w=y+w-2;r=Math.max(z,w);for(var v=[],F=[],C=2;y{function d(){if(0< arguments.length){if("function"!==typeof e)throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");e(...arguments);return this}g.X||c.u.zb(d);(g.V||g.A&&d.oa())&&d.T();return g.J}"object"===typeof a?b=a:(b=b||{},a&&(b.read=a));if("function"!=typeof b.read)throw Error("Pass a function that returns the value of the ko.computed");var e=b.write,g={J:void 0,Y:!0,V:!0,Aa:!1,ab:!1,X:!1,Xa:!1,A:!1,yb:b.read, s:b.s||null,ia:b.ia,Oa:null,v:{},G:0,bc:null};d[x]=g;d.Sb="function"===typeof e;c.P.fn.init(d);Object.setPrototypeOf(d,K);b.pure&&(g.Xa=!0,g.A=!0,c.g.extend(d,la));g.s&&(g.ab=!0,g.s.nodeType||(g.s=null));g.A||d.T();g.s&&d.isActive()&&c.g.N.addDisposeCallback(g.s,g.Oa=()=>{d.dispose()});return d};var K={ka:L,ma(){return this[x].G},Pb(){var a=[];c.g.K(this[x].v,(b,d)=>a[d.fa]=d.S);return a},Sa(a){if(!this[x].G)return!1;var b=this.Pb();return b.includes(a)||!!b.find(d=>d.Sa&&d.Sa(a))},kb(a,b,d){if(this[x].Xa&& -b===this)throw Error("A 'pure' computed must not be called recursively");this[x].v[a]=d;d.fa=this[x].G++;d.ga=b.ya()},oa(){var a,b=this[x].v;for(a in b)if(Object.prototype.hasOwnProperty.call(b,a)){var d=b[a];if(this.qa&&d.S.ea||d.S.Rb(d.ga))return!0}},dc(){this[x].Aa||this.qa?.(!1)},isActive(){var a=this[x];return a.V||0{b[x].A||(b[x].Y?b.T():b[x].V=!1);return b[x].J};b.qa=d=>{b.gb(b[x].J);b[x].V=!0;d&&(b[x].Y=!0);b.hb(b,!d)}},dispose:function(){var a=this[x];!a.A&&a.v&&c.g.K(a.v,(b,d)=>d.dispose?.());a.s&&a.Oa&&c.g.N.Ya(a.s,a.Oa);a.v=void 0;a.G=0;a.X=!0;a.Y=!1;a.V=!1;a.A=!1;a.s=void 0;a.ia=void 0;a.yb=void 0}},la={Ja(a){var b=this,d=b[x];if(!d.X&&d.A&&"change"==a){d.A=!1;if(d.Y||b.oa())d.v= null,d.G=0,b.T()&&b.Ea();else{var e=[];c.g.K(d.v,(g,l)=>e[l.fa]=g);e.forEach((g,l)=>{var f=d.v[g],h=b.Cb(f.S);h.fa=l;h.ga=f.ga;d.v[g]=h});b.oa()&&b.T()&&b.Ea()}d.X||b.B(d.J,"awake")}},Ia(a){var b=this[x];b.X||"change"!=a||this.na("change")||(c.g.K(b.v,(d,e)=>{e.dispose&&(b.v[d]={S:e.S,fa:e.fa,ga:e.ga},e.dispose())}),b.A=!0,this.B(void 0,"asleep"))},ya(){var a=this[x];a.A&&(a.Y||this.oa())&&this.T();return c.P.fn.ya.call(this)}};Object.setPrototypeOf(K,c.P.fn);var O=c.$.Zb;K[O]=c.o;c.o.fn=K;c.U("computed", c.o);c.isComputed=a=>"function"==typeof a&&a[O]===K[O];c.xb=a=>{if("function"===typeof a)return c.o(a,{pure:!0});a={...a,pure:!0};return c.o(a)};c.C={M:a=>{switch(a.nodeName){case "OPTION":return!0===a.__ko__hasDomDataOptionValue__?c.g.l.get(a,c.i.options.Wa):a.value;case "SELECT":return 0<=a.selectedIndex?c.C.M(a.options[a.selectedIndex]):void 0;default:return a.value}},Fa:(a,b)=>{switch(a.nodeName){case "OPTION":"string"===typeof b?(c.g.l.set(a,c.i.options.Wa,void 0),delete a.__ko__hasDomDataOptionValue__, a.value=b):(c.g.l.set(a,c.i.options.Wa,b),a.__ko__hasDomDataOptionValue__=!0,a.value="number"===typeof b?b:"");break;case "SELECT":for(var d=-1,e=""===(b??""),g=a.options.length,l;g--;)if(l=c.C.M(a.options[g]),l==b||""===l&&e){d=g;break}if(0<=d||e&&1{var a=RegExp("\"(?:\\\\.|[^\"])*\"|'(?:\\\\.|[^'])*'|`(?:\\\\.|[^`])*`|/\\*(?:[^*]|\\*+[^*/])*\\*+/|//.*\n|/(?:\\\\.|[^/])+/w*|[^\\s:,/][^,\"'`{}()/:[\\]]*[^\\s,\"'`{}()/:[\\]]|[^\\s]", -"g"),b=/[\])"'A-Za-z0-9_$]+$/,d={"in":1,"return":1,"typeof":1},e=g=>{g=c.g.Bb(g);123===g.charCodeAt(0)&&(g=g.slice(1,-1));g+="\n,";var l=[],f=g.match(a),h=[],k=0;if(1=k){l.push(q&&h.length?{key:q,value:h.join("")}:{unknown:q||h.join("")});var q=k=0;h=[];continue}}else if(58===m){if(!k&&!q&&1===h.length){q=h.pop();continue}}else if(47===m&&1{var l=[];e(g).forEach(f=>{l.push("'"+(f.key||f.unknown)+"':function(){return "+(f.value+" }"))});return l.join(",")},cc:(g,l)=>-1f.key==l),Ga:(g,l,f,h,k,n)=>{if(l&&c.W(l))!c.vb(l)||n&&l.L()===k|| -l(k);else throw Error(`"${h}" must be observable for ${g.outerHTML.replace(/>.+/,">")}`);}}})();(()=>{function a(f){return 8==f.nodeType&&e.test(f.nodeValue)}function b(f){return 8==f.nodeType&&g.test(f.nodeValue)}function d(f,h){for(var k=f,n=1,p=[];k=k.nextSibling;){if(b(k)&&(c.g.l.set(k,l,!0),!--n))return p;p.push(k);a(k)&&++n}if(!h)throw Error("Cannot find closing comment tag to match: "+f.nodeValue);return null}var e=/^\s*ko(?:\s+([\s\S]+))?\s*$/,g=/^\s*\/ko\s*$/,l="__ko_matchedEndComment__"; -c.m={aa:{},childNodes:f=>a(f)?d(f):f.childNodes,ja:f=>{a(f)?(f=d(f))&&[...f].forEach(h=>c.removeNode(h)):c.g.Qa(f)},pa:(f,h)=>{a(f)?(c.m.ja(f),f.after(...h)):c.g.pa(f,h)},prepend:(f,h)=>{a(f)?f.nextSibling.before(h):f.prepend(h)},Ub:(f,h,k)=>{k?k.after(h):c.m.prepend(f,h)},firstChild:f=>{if(a(f))return f=f.nextSibling,!f||b(f)?null:f;let h=f.firstChild;if(h&&b(h))throw Error("Found invalid end comment, as the first child of "+f);return h},nextSibling:f=>{if(a(f)){var h=d(f,void 0);f=h?(h.length?h[h.length- -1]:f).nextSibling:null}if((h=f.nextSibling)&&b(h)){if(b(h)&&!c.g.l.get(h,l))throw Error("Found end comment without a matching opening comment, as child of "+f);return null}return h},Qb:a,ac:f=>(f=f.nodeValue.match(e))?f[1]:null}})();const T=new Map;c.ob=new class{Xb(a){switch(a.nodeType){case 1:return null!=a.getAttribute("data-bind");case 8:return c.m.Qb(a)}return!1}Ob(a,b){a:{switch(a.nodeType){case 1:var d=a.getAttribute("data-bind");break a;case 8:d=c.m.ac(a);break a}d=null}if(d)try{let g=T.get(d); -if(!g){var e="with($context){with($data||{}){return{"+c.la.Yb(d)+"}}}";g=new Function("$context","$element",e);T.set(d,g)}return g(b,a)}catch(g){throw g.message="Unable to parse bindings.\nBindings value: "+d+"\nMessage: "+g.message,g;}return null}};const G=Symbol("_subscribable"),H=Symbol("_ancestorBindingInfo"),U=Symbol("_dataDependency"),V={},I=c.g.l.Z();c.i={};c.ba=class{constructor(a,b,d,e){var g=this,l=a===V,f=l?void 0:a,h="function"==typeof f&&!c.W(f),k=e?.dataDependency;a=()=>{var p=h?f(): -f;p=c.g.h(p);b?(c.g.extend(g,b),H in b&&(g[H]=b[H])):(g.$root=p,g.ko=c);g[G]=n;l?p=g.$data:g.$data=p;d?.(g,b,p);if(b?.[G]&&!c.u.o().Sa(b[G]))b[G]();k&&(g[U]=k);return g.$data};if(e?.exportDependencies)a();else{var n=c.xb(a);n.L();n.isActive()?n.ka=null:g[G]=void 0}}createChildContext(a,b){return new c.ba(a,this,(d,e)=>{d.$parent=e.$data;b.extend?.(d)},b)}extend(a,b){return new c.ba(V,this,d=>c.g.extend(d,"function"==typeof a?a(d):a),b)}};const W=a=>{a=c.g.l.get(a,I);var b=a?.D;b&&(a.D=null,b.wb())}; -class ma{constructor(a,b,d){this.H=a;this.da=b;this.ta=new Set;this.F=!1;b.D||c.g.N.addDisposeCallback(a,W);d?.D&&(d.D.ta.add(a),this.za=d)}wb(){this.za?.D?.Mb(this.H)}Mb(a){this.ta.delete(a);this.ta.size||this.rb?.()}rb(){this.F=!0;this.da.D&&!this.ta.size&&(this.da.D=null,c.g.N.Ya(this.H,W),c.j.notify(this.H,c.j.ca),this.wb())}}c.j={F:"childrenComplete",ca:"descendantsComplete",subscribe:(a,b,d,e,g)=>{var l=c.g.l.Ra(a,I,{});l.wa||(l.wa=new c.P);g?.notifyImmediately&&l.Va[b]&&c.u.I(d,e,[a]);return l.wa.subscribe(d, -e,b)},notify:(a,b)=>{var d=c.g.l.get(a,I);if(d&&(d.Va[b]=!0,d.wa?.B(a,b),b==c.j.F))if(d.D)d.D.rb();else if(void 0===d.D&&d.wa?.na(c.j.ca))throw Error("descendantsComplete event not supported for bindings on this node");},$a:(a,b)=>{var d=c.g.l.Ra(a,I,{});d.D||(d.D=new ma(a,d,b[H]));return b[H]==d?b:b.extend(e=>{e[H]=d})}};const Y=(a,b)=>{for(var d,e=c.m.firstChild(b);d=e;)e=c.m.nextSibling(d),X(a,d);c.j.notify(b,c.j.F)},X=(a,b)=>{var d=a;if(1===b.nodeType||c.ob.Xb(b))d=Z(b,null,a);d&&!b.matches?.("SCRIPT,TEXTAREA,TEMPLATE")&& -Y(d,b)},na=a=>{var b=[],d={},e=[],g=l=>{if(!d[l]){var f=c.i[l];f&&(f.after&&(e.push(l),f.after.forEach(h=>{if(a[h]){if(e.includes(h))throw Error("Cannot combine the following bindings, because they have a cyclic dependency: "+e.join(", "));g(h)}}),e.length--),b.push({key:l,ub:f}));d[l]=!0}};c.g.K(a,g);return b},Z=(a,b,d)=>{var e=c.g.l.Ra(a,I,{}),g=e.Hb;if(!b){if(g)throw Error("You cannot apply bindings multiple times to the same element.");e.Hb=!0}g||(e.context=d);e.Va||(e.Va={});if(b&&"function"!== -typeof b)var l=b;else{var f=c.o(()=>{if(l=b?b(d,a):c.ob.Ob(a,d))d[G]?.(),d[U]?.();return l},{s:a});l&&f.isActive()||(f=null)}var h=d,k;if(l){var n=f?m=>()=>f()[m]():m=>l[m],p={get:m=>l[m]&&n(m)(),has:m=>m in l};c.j.F in l&&c.j.subscribe(a,c.j.F,()=>{var m=l[c.j.F]();if(m){var q=c.m.childNodes(a);q.length&&m(q,c.dataFor(q[0]))}});c.j.ca in l&&(h=c.j.$a(a,d),c.j.subscribe(a,c.j.ca,()=>{var m=l[c.j.ca]();m&&c.m.firstChild(a)&&m(a)}));na(l).forEach(m=>{var q=m.ub.init,r=m.ub.update,u=m.key;if(8===a.nodeType&& -!c.m.aa[u])throw Error("The binding '"+u+"' cannot be used with comment nodes");try{"function"==typeof q&&c.u.I(()=>{var t=q(a,n(u),p,h.$data,h);if(t&&t.controlsDescendantBindings){if(void 0!==k)throw Error("Multiple bindings ("+k+" and "+u+") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");k=u}}),"function"==typeof r&&c.o(()=>r(a,n(u),p,h.$data,h),{s:a})}catch(t){throw t.message='Unable to process binding "'+u+": "+l[u]+ -'"\nMessage: '+t.message,t;}})}return void 0===k&&h};c.$b=a=>c.g.l.get(a,I)?.context;const P=a=>a&&a instanceof c.ba?a:new c.ba(a);c.applyBindingAccessorsToNode=(a,b,d)=>Z(a,b,P(d));c.mb=(a,b)=>{1!==b.nodeType&&8!==b.nodeType||Y(P(a),b)};c.Ib=(a,b)=>X(P(a),b);c.dataFor=a=>([1,8].includes(a?.nodeType)&&c.$b(a))?.$data;c.U("bindingHandlers",c.i);(()=>{var a=Object.create(null),b=new Map;c.components={get:(l,f)=>{if(b.has(l))f(b.get(l));else{var h=a[l];h?h.subscribe(f):(h=a[l]=new c.P,h.subscribe(f), -g(l,k=>{b.set(l,k);delete a[l];h.B(k)}))}},register:(l,f)=>{if(!f)throw Error("Invalid configuration for "+l);if(d[l])throw Error("Component "+l+" is already registered");d[l]=f}};var d=Object.create(null),e=(l,f)=>{throw Error(`Component '${l}': ${f}`);},g=(l,f)=>{var h={},k=d[l]||{},n=k.template;k=k.viewModel;if(n){n.element||e(l,"Unknown template value: "+n);n=n.element;var p=J.getElementById(n);p||e(l,"Cannot find element with ID "+n);p.matches("TEMPLATE")||e(l,"Template Source Element not a