markuno_lib 1.2.146 → 1.2.150
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.
- package/bin/markcad.js +1 -1
- package/bin/marked.js +1 -1
- package/bin/markuno.js +1 -1
- package/package.json +1 -1
- package/types/markcad.d.ts +402 -402
- package/types/markuno.d.ts +9 -2
package/bin/marked.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function escape(e,t){return e.replace(t?/&/g:/&(?!#?\w+;)/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function replace(e,t){return e=e.source,t=t||"",function self(s,n){return s?(n=(n=n.source||n).replace(/(^|[^[])\^/g,"$1"),e=e.replace(s,n),self):new RegExp(e,t)}}function noop(){}function merge(e){let t,s,n=1;for(;n<arguments.length;n++)for(s in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,s)&&(e[s]=t[s]);return e}noop.exec=noop;const e={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:noop,hr:/^( *[-*_]){3,} *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,nptable:noop,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,blockquote:/^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,table:noop,paragraph:/^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,text:/^[^\n]+/,bullet:/(?:[*+-])/,item:/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/};e.item=replace(e.item,"gm")(/bull/g,e.bullet)(),e.list=replace(e.list)(/bull/g,e.bullet)("hr","\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))")("def","\\n+(?="+e.def.source+")")(),e.blockquote=replace(e.blockquote)("def",e.def)(),e._tag="(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b",e.html=replace(e.html)("comment",/<!--[\s\S]*?-->/)("closed",/<(tag)[\s\S]+?<\/\1>/)("closing",/<tag(?:"[^"]*"|'[^']*'|[^'">])*?>/)(/tag/g,e._tag)(),e.paragraph=replace(e.paragraph)("hr",e.hr)("heading",e.heading)("lheading",e.lheading)("blockquote",e.blockquote)("tag","<"+e._tag)("def",e.def)(),e.normal=merge({},e),e.gfm=merge({},e.normal,{fences:/^ *(`{3,}|~{3,})[ .]*(\S+)? *\n([\s\S]*?)\s*\1 *(?:\n+|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/,formula:/^ *(\${2,})([\s\S]*?)\s*\1 *(?:\n+|$)/}),e.gfm.paragraph=replace(e.paragraph)("(?!","(?!"+e.gfm.fences.source.replace("\\1","\\2")+"|"+e.list.source.replace("\\1","\\3")+"|")(),e.tables=merge({},e.gfm,{nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :0123456789]*)\n((?: *\|.*(?:\n|$))*)\n*/});const t={escape:/^\\([\\`*{}[\]()#+\-.!_>])/,autolink:/^<([^ >]+(@|:\/)[^ >]+)>/,url:noop,tag:/^<!--[\s\S]*?-->|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^[\]])*)\]/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,ico:/^::([\s\S]+?)::/,em:/^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,code:/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:noop,colorbase:noop,coloralt:noop,text:/^[\s\S]+?(?=[\\<![_*:`]| {2,}\n|$)/,_inside:/(?:\[[^\]]*\]|[^[\]]|\](?=[^[]*\]))*/,_href:/\s*<?([\s\S]*?)>?(?:\s+['"]([\s\S]*?)['"])?\s*/};t.link=replace(t.link)("inside",t._inside)("href",t._href)(),t.reflink=replace(t.reflink)("inside",t._inside)(),t.normal=merge({},t),t.pedantic=merge({},t.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/}),t.gfm=merge({},t.normal,{escape:replace(t.escape)("])","~|])")(),url:/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,del:/^~~~(?=\S)([\s\S]*?\S)~~~/,colorbase:/^~(?=\S)([\s\S]*?\S)~/,coloralt:/^~~(?=\S)([\s\S]*?\S)~~/,formula:/^\$(?=\S)([\s\S]*?\S)\$/,text:replace(t.text)("]|","~$]|")("|","|https?://|")()}),t.breaks=merge({},t.gfm,{br:replace(t.br)("{2,}","*")(),text:replace(t.gfm.text)("{2,}","*")()});const s={s:"subtitle",k:"keywords",g:"gruppo",e:"editore",y:"datapub",d:"datapub",p:"priority",a:"autore",u:"base",t:"title",l:"link",i:"img","#":"title"};const n=new class AliasInfo{constructor(){this.alias=JSON.parse(JSON.stringify(s)),this.check()}check(){let e=new Set,checkr=t=>{t&&t.length>2&&!e.has(t)&&e.add(t)};for(let e in this.alias)this.alias[e]?(checkr(e),checkr(this.alias[e])):delete this.alias[e];this.retoalias=function retroalias(e){let t={};for(let s in e)e[s]&&(t[e[s]]=s);return t}(this.alias),e=[...e],e=`^\\s*\\:(${e.join("|")}|\\w{1,2})\\:(.*)$`,this.regex=e}add(e,t){return e&&(this.alias[e]=t,this.check()),this}removeAll(){return this.alias={},this.check(),this}setmappa(e){this.alias={};for(let t in e)this.alias[t]=e[t];this.alias["#"]||(this.alias["#"]="title"),this.check()}parse(e,t,s){s&&this.setmappa();let n=e,l={};t&&(l=Object.assign(l,t),l.info=!0);let r=/^\s*#\s+(.*?)\s*$/im.exec(n);r&&(l[this.alias["#"]]=r[1].toLowerCase());for(let e=0;e<20;e++){let t=/:::(.*)([^]+?):::/im.exec(n);if(!t)break;{let s=t[1];s||(s=e+""),l.comments||(l.comments=[]),l.comments.push({k:s,v:t[2]}),n=n.substr(t.index+t[0].length)}}n=e;let i=new RegExp(this.regex,"im");for(let e=0;e<50;e++){let e=i.exec(n);if(!(e&&e.length>=2))break;{n=n.substr(e.index+e[0].length),l.info=!0;let t=(e[2]||"").trim(),s=this.alias[e[1].toLowerCase()];s||(s=e[1].toLowerCase()),"l"==s||"link"==s?(l[s]||(l[s]=[]),l[s].push(t)):l[s]=t}}return l}};var tokenize=(t,s,l=!1)=>{function _parsetable(e,t){let s,n={type:"table",headers:[],align:[],cells:[],cols:0},l=t.split("\n"),r=!1;function checkcols(e){if(n.cols<e){for(let t=n.cols;t<e;t++){n.align[t]="left",n.headers[t]=[];for(let e of n.cells)e[t]=[]}n.cols=e}}for(let e of l)if(e=e.trim(),e.length)if(e.length>2&&e.startsWith("|")&&e.endsWith("|")&&(e=e.slice(1,-1)),s=e.split("|"),checkcols(s.length),0==r&&/^[- :]+\|[- :|]*$/im.test(e)){for(let e=0;e<s.length;e++){let t=s[e],l=t.slice(0,1),r=t.slice(-1);n.align[e]=":"==l&&":"==r?"center":":"==r?"right":"left"}r=!0}else{let e=[];for(let t=0;t<s.length;t++){let l=s[t];if(r){let t=[];_tokenize(t,l,!1),e.push(t)}else _tokenize(n.headers[t],l,!1)}r&&n.cells.push(e)}e.push(n)}function _pushtoken(e,t){let s=/^([\d.]+)\s*/.exec(t),n="",l="";s&&(n=s[1],t=t.substring(s.index+s[0].length)),s=/^([\w\s]*?):.*$/gim.exec(t),s&&(l=s[1],t=t.substring(s.index+s[1].length)),e.push({type:"list_item_start",num:n}),l&&(e.push({type:"list_title_start"}),_tokenize(e,l,!1),e.push({type:"list_title_end"})),t=t.replace(/\n +/gim,"<br>"),_tokenize(e,t,!1),e.push({type:"list_item_end"})}function _parselista(e,t,s,n){let l=[s];for(e.push({type:"list_start",ordered:t});;){let s=/^( *)([*\-+])[\s$]/im.exec(n);if(!s){_pushtoken(e,n);break}{s.index&&_pushtoken(e,n.substring(0,s.index));let r=s[1].length;if(r>l[l.length-1])e.push({type:"list_start",ordered:t}),l.push(r);else for(;;){let t=l[l.length-1];if(1==l.length||t<=r)break;e.push({type:"list_end"}),l.pop()}n=n.substring(s.index+s[0].length)}}for(let t of l)e.push({type:"list_end"})}const _tokenize=(e,t,n,l)=>{let i;for(t=t.replace(/^ +$/gm,"");t;){if(s){let t=0;for(let s of e)s.text||s.html?t=t+s.text.length+2:t+=3;if(t>s)break}if((i=r.newline.exec(t))&&(t=t.substring(i[0].length),i[0].length>1&&e.push({type:"space"})),i=r.formula.exec(t))t=t.substring(i[0].length),e.push({type:"code",lang:"math",text:i[2]||""});else if(i=/^(\s*`{3})(.*)([^]+?)(`{3})/gim.exec(t)){i.index>0&&_tokenize(e,t.substring(0,i.index),n);let s=(i[3]||"").replace(/^\n/,"").replace(/\n+$/,"");e.push({type:"code",lang:i[2],text:s}),t=t.substring(i.index+i[0].length)}else if(i=r.heading.exec(t))t=t.substring(i[0].length),e.push({type:"heading",depth:i[1].length,text:i[2]});else if(n&&(i=/^(.*?\|.*\n[-: ]+\|[-| :]*\n.*?\|[^]*?)\n\n/gim.exec(t)))i.index>0&&_tokenize(e,t.substring(0,i.index),n),_parsetable(e,i[1]),t=t.substring(i.index+i[0].length);else if(n&&(i=/^\|.*\|\s*(?:\n\|.*\|)+/gim.exec(t)))i.index>0&&_tokenize(e,t.substring(0,i.index),n),_parsetable(e,i[0]),t=t.substring(i.index+i[0].length);else if(i=r.lheading.exec(t))t=t.substring(i[0].length),e.push({type:"heading",depth:"="===i[2]?1:2,text:i[1]});else if(i=r.hr.exec(t))t=t.substring(i[0].length),e.push({type:"hr"});else if(i=r.blockquote.exec(t))t=t.substring(i[0].length),e.push({type:"blockquote_start"}),_tokenize(e,i[0].replace(/^ *> ?/gm,""),n,!0),e.push({type:"blockquote_end"});else if(i=/^[\s-:]*?\|[\s-:|]*/im.exec(t),i||!(i=/^( *)([*\-+])[\s$]/im.exec(t))){if(i=r.html.exec(t))t=t.substring(i[0].length),e.push({type:"html",pre:"pre"===i[1]||"script"===i[1]||"style"===i[1],text:i[0]});else if(!l&&n&&(i=r.def.exec(t)))t=t.substring(i[0].length),e.push({type:"code",text:`??${i[0]}??${r.def}??`});else if(n&&(i=r.paragraph.exec(t)))t=t.substring(i[0].length),e.push({type:"paragraph",text:"\n"===i[1].charAt(i[1].length-1)?i[1].slice(0,-1):i[1]});else if(i=r.text.exec(t))t=t.substring(i[0].length),e.push({type:"text",text:i[0]});else if(t)throw new Error("Infinite loop on byte: "+t.charCodeAt(0))}else{i.index>0&&_tokenize(e,t.substring(0,i.index)),t=t.substring(i.index+i[0].length);let s=/([^]*?)(\n\n|\n\s*[#>])/im.exec(t+"\n\n");if(s){_parselista(e,"*"==i[2],i[1].length,s[1]),t=t.substring(s[1].length)}else e.push({type:"text??",text:i[0]})}}return e};let r=e.tables;return t=function removeInfo(e,t=!1){let s=e.replace(/:::([^]+?):::/gim,"").replace(new RegExp(n.regex,"gim"),"").replace(/^\s*#\s+/im,"# ").replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n");if(t){const e=/(^\s*#\s+(.*)?\s*)$/im;let t=e.exec(s);t&&0==t.index&&(s=s.replace(e,""))}return s}(t,l),_tokenize([],t,!0)};const l={string:/(".*?[^\\]"|'.*?[^\\]'|`[^]*?[^\\]`|""|''|``)/m,puntuaction:/(-[-=]?|,|;|\+[+=]?|!=?=?|<<?=?|>>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3})/g,parentesis:/(\(|\)|\[|\]|\{|\})/g,ingraffe:/([^$])(\{)(.*?)(\})/g,regex:/\/.*?[^\\]\/[gimu]*/m,numbers:/\b((?:(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+)n?|\d+n|NaN|Infinity)\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?)/gi,js:{comments:/(?:(?:^|[^\\:])(\/\/.*)|(?:^|[^\\])(\/\*[\s\S]*?(?:\*\/)))/m,keyword:/(\b)(import|require|endif|include|define|float|int|real|char|bool|as|true|false|async|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)(\b)/g,keyword2:/(\.\w+|\w+:)/g},json:{string:/(".*?[^\\]")/m,string1:/(".*?[^\\]"\s*:)/m},html:{script:/(<script[\s\S]*?>)([^]*?)(<\/script>)/im,tag:/<(!DOCTYPE|\/?\w+)([^]*?)(\/?>)/im,intag:/(\b)([\w-]+)(=)/g,comments:/<!--[^]*?-->/im},bash:{comments:/# .*/,keyword1:/(^ *|; *)(\w+)(\b)/g,keyword:/(\b)(sudo *[\w-]+)(\b)/g},mu:{comments:/(?:(?:^|[^\\:])(\/\/.*)|(?:^|[^\\])(\/\*[\s\S]*?(?:\*\/)))/m,keyword1:/(#)(\w+)(\b)/g,keyword2:/(\$\(?(\w+|\.|:|\)))/g},sql:{keyword:".",keyword2:/(\b)(FROM|USING|FTS5|NVARCHAR|INTEGER|REAL|BLOB|DELETE|UPDATE|BEGIN|END|ADD|CREATE|CONSTRAINT|ALTER|COLUMN|TABLE|ALL|ASC|BETWEEN|CASE|CHECK|COLUMN|INDEX|VIEW|PROCEDURE|DESC|DISTINTC|DROP|OUTER|INNER|LEFT|JOIN|INSERT|INTO|[NOT ]*NULL|LIMIT|SELECT|ORDER BY|UNION|WHERE)(\b)/gi,keyword1:/(\b)(COLLATE|NOCASE|DEFAULT|IF [NOT ]*EXISTS|PRIMARY KEY|VALUES|AS)(\b)/gi,comments:/(?:(?:^|[^\\:])(\/\/.*)|(?:^|[^\\])(\/\*[\s\S]*?(?:\*\/))|(--\s.*))/m}};function elang(e,t,s,n){let l;return n&&(l=n.length,n.push(e)),`<pre class="elang relative">${xelang(e,t,s)}<div class="absolute top-1 right-1"><button class="mu-internal-copy" data-copy="${l}">📋</button></div></pre>`}const escapeTag=e=>e.replace(/[<>]/g,(e=>({"<":"<",">":">"}[e]))),escapeHTML=e=>e.replace(/[&<>'"]/g,(e=>({"&":"&","<":"<",">":">","'":"'",'"':"""}[e]))),unescapeHTML=e=>e.replace(/&/g,"&").replace(/"/g,'"').replace(/'/g,"'").replace(/>/g,">").replace(/</g,"<");function xelang(e,t,s){let gspan=(e,t)=>(t&&(t=t.replace(/(\b)(\w+)(\b)/g,"$1_$2$3")),`☉☊${t||""}☊☉${(e=escapeTag(e))||""}☉☋`),regex=e=>{if(l[t]){let s=l[t][e];if("."==s)return;if(s)return s}let s=l[e];return"."==s?void 0:s},n=[],r=0,i=[];if(t){l[t]||(t="js");let r=regex("script");if(r){let s=[];for(;;){let n=r.exec(e);if(!n)break;n.index>0&&s.push(e.substr(0,n.index)),s.push(`★★K${i.length}★★`),i.push(xelang(n[1],t)+xelang(n[2],"js")+xelang(n[3],t)),e=e.substr(n.index+n[0].length)}e.length&&s.push(e),e=s.join("")}for(let s of[{r:"comments",s:"C"}]){let n=regex(s.r);if(n){let l=[];for(;;){let r=n.exec(e);if(!r)break;if(r.index>0&&l.push(e.substr(0,r.index)),l.push(`★★${s.s}${i.length}★★`),"html"==t){let e=r[0].replace(/</g,"<").replace(/>/g,">");i.push(e)}else i.push(r[0]);e=e.substr(r.index+r[0].length)}e.length&&l.push(e),e=l.join("")}}for(let t of[{r:"string2",s:"A"},{r:"string1",s:"B"},{r:"string",s:"S"},{r:"tag",s:"T"},{r:"regex",s:"R"}]){let s=regex(t.r);if(s){let n=[];for(;;){let l=s.exec(e);if(!l)break;if(l.index>0&&n.push(e.substr(0,l.index)),n.push(`★★${t.s}${i.length}★★`),"T"==t.s){let e=l[2].replace(regex("intag"),((e,t,s,n)=>t+gspan(s,"intag")+gspan(n,"punc")));i.push(gspan("<","punc")+l[1]+e+gspan(l[3],"punc"))}else if("`"==l[0][0]){let e=l[0].replace(/(\${)(.*?)(})/gm,((e,t,s,n)=>gspan(t,"punc")+gspan(s,"word")+gspan(n,"punc")));i.push(e)}else i.push(l[0]);e=e.substr(l.index+l[0].length)}e.length&&n.push(e),e=n.join("")}}let a=e.split("\n"),o=0;for(let e of a)o++,e=e.replace(regex("keyword"),((e,t,s,n)=>gspan(t,"tag")+gspan(s,"keys")+n)).replace(regex("keyword1"),((e,t,s,n)=>t+gspan(s,"keys1 keys")+n)).replace(regex("keyword2"),(e=>gspan(e,"keys2 keys"))).replace(regex("numbers"),(e=>gspan(e,"number"))).replace(regex("ingraffe"),((e,t,s,n,l)=>t+gspan(s,"punc")+gspan(n,"word")+gspan(l,"punc"))).replace(regex("puntuaction"),(e=>gspan(e,"punc"))).replace(/★★T(\d+)★★/gu,((e,t)=>gspan(i[Number(t)],"tag"))).replace(/★★S(\d+)★★/gu,((e,t)=>gspan(i[Number(t)],"string"))).replace(/★★B(\d+)★★/gu,((e,t)=>gspan(i[Number(t)],"string string1"))).replace(/★★A(\d+)★★/gu,((e,t)=>gspan(i[Number(t)],"string string2"))).replace(/★★R(\d+)★★/gu,((e,t)=>gspan(i[Number(t)],"regex"))).replace(/★★C(\d+)★★/gu,((e,t)=>gspan(i[Number(t)],"comment"))).replace(/★★K(\d+)★★/gu,((e,t)=>i[Number(t)])),s?n.push(gspan((" "+o).substr(-4),"rowid")+gspan(e)):n.push(gspan(e))}else{let t=e.split("\n");for(let e of t)r++,s?n.push(`${gspan((" "+r).substr(-4),"rowid")}${gspan(e)}`):n.push(gspan(e))}let a=n.join("\n");return a=a.replace(/☉☋/gmu,"</span>").replace(/☉☊([^]*?)☊☉/gmu,((e,s)=>{if(s){let e=s.split(" "),n=[];for(let s of e)n.push(`elang_${t}${s}`),n.push(`elang${s}`);return`<span class="${n.join(" ")}">`}return"<span>"})),a}class Render{constructor(e,t,s){this.baseurl=e,this.easy=t,this.callback=s}code(e,t,s){if(this.easy)return"";t||(t="js");let n=t==t.toUpperCase();return elang(e,t=t.toLowerCase(),n,s)}blockquote(e){return this.easy?e:`<blockquote>\n${e}</blockquote>\n`}html(e){return e}heading(e,t,s){return"."==e||"*"==e?"":this.easy?`${e} `:`<h${t}>${e}</h${t}>`}hr(){return this.easy?"":'<div class="my-4"><hr/></div>'}list(e,t){let s=t?"ol":"ul";return`<${s}>\n${e}</${s}>\n`}listtitle(e){return`<span class="listtitle">${e}</span>`}listitem(e,t){return t?`<li attr-num="${t||""}">${e}</li>\n`:`<li>${e}</li>\n`}paragraph(e){return this.easy?e:`<p>${e}</p>\n`}table(e,t){return this.easy?"":`<table>\n<thead>\n${e}\n</thead>\n<tbody>\n${t}\n</tbody>\n</table>\n\n`}tablerow(e){return`<tr>\n${e}</tr>\n`}tablecell(e,t,s){if(t)return`<th style="text-align:center;">${e}</th>\n`;return`<td style="${s?"text-align:"+s+";":""}">${e}</td>`}colorbase(e){return`<span class='tilde'>${e}</span>`}formula(e,t=!1){if(this.easy)return"";let s=`<img class='inline px-2' src='https://math.croswil.com/f?${e=e.replace(/<\/?em>/g," ").replace(/\r/g,"").replace("/\n/g"," ")}' alt='${e}'/>`;return t?`<div class='flex justify-center'><div>${s}</div></div>`:s}coloralt(e){return`<span class='tilde2'>${e}</span>`}strong(e){return"<strong>"+e+"</strong>"}ico(e){return`<span class="font-ico">${e}</span>`}em(e){return"<em>"+e+"</em>"}codespan(e){return"<code>"+e+"</code>"}br(){return"<br>"}del(e){return`<del>${e}</del>`}link(e,t,s){if(this.easy)return"("+s+")";let n;if("/"==e.substr(0,1)&&this.baseurl&&(e=this.baseurl+e.substr(1)),e.startsWith("!"))n=`<button class="mu-internal-link" data-href="${e=e.slice(1)}">${s}</button>`;else{let l="";e.startsWith(".")?e=e.slice(1):l='target="_blank"',n=`<a ${l} href='${e}' title='${t||""}'>${s}</a>`}return n}image(e,t,s){if(this.easy)return"";let n=s.split("|"),l="",r=!1,i=!1,a=!1;if((e=(e=e.replace("https://www.youtube.com/watch?v=","https://youtu.be/")).replace("https://youtu.be","https://www.youtube.com/embed")).endsWith(".mp3")?(e=e.slice(0,-4),a=!0):e.endsWith(".mp4")?(e=e.slice(0,-4),i=!0):e.endsWith(".webm")?(e=e.slice(0,-5),r=!0):e.endsWith(".video")&&(e=e.slice(0,-6),r=!0,i=!0),a)l=`\n <audio controls ${n.length>=1?' width="'+n[1]+'"':""}\n class="mx-auto my-2 ${n.length>=2?n[2]:""}" \n >\n <source src="${e}.mp3" type="audio/mpeg">\n Il tuo browser non supporta l'elemento audio.\n </audio>\n `;else if(i||r)l=`\n<video ${n.length>=1?' width="'+n[1]+'"':""}\nclass="border rounded-lg shadow-xl ${n.length>=2?n[2]:""}" \ncontrols controlsList="nodownload" >\n ${r?'<source src="'+e+'.webm" type="video/webm" >':""}\n ${i?'<source src="'+e+'.mp4" type="video/mp4" >':""}\n \n Your browser does not support the video tag.\n</video>`;else{if(e.indexOf("https://www.youtu")>=0){let s=e.split("/embed/")[1]?.split("?")[0];return l=`\n\n<div style="width: 94%; box-shadow: 6px 6px 10px hsl(206.5, 0%, 75%); margin: 3%;">\n <div style="position: relative; padding-bottom: 56.15%; height: 0; overflow: hidden;">\n <iframe \n style="position: absolute; top: 0; left:0; width: 100%; height: 100%; border: 0;"\n loading="lazy";\n srcdoc="<style>\n * {\n padding: 0;\n margin: 0;\n overflow: hidden;\n }\n \n body, html {\n height: 100%;\n }\n \n img, svg {\n position: absolute;\n width: 100%;\n top: 0;\n bottom: 0;\n margin: auto;\n }\n \n svg {\n filter: drop-shadow(1px 1px 10px hsl(206.5, 70.7%, 8%));\n transition: all 250ms ease-in-out;\n }\n \n body:hover svg {\n filter: drop-shadow(1px 1px 10px hsl(206.5, 0%, 10%));\n transform: scale(2);\n }\n </style>\n <a href='https://www.youtube.com/embed/${s}?autoplay=1'>\n <img src='https://img.youtube.com/vi/${s}/hqdefault.jpg' alt='${t||"video"}'>\n <svg xmlns='http://www.w3.org/2000/svg' width='64' height='64' viewBox='0 0 24 24' fill='none' stroke='#ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-play-circle'><circle cx='12' cy='12' r='10'></circle><polygon points='10 8 16 12 10 16 10 8'></polygon></svg>\n </a>\n "\n src="https://www.youtube.com/embed/${s}" \n title="${t||"video"}"\n frameborder="0"\n allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" \n allowfullscreen>\n </iframe>\n </div>\n </div> \n \n`,l}this.callback&&"function"==typeof this.callback&&(e=this.callback({type:"img",href:e})),"/"==e.substr(0,1)&&this.baseurl&&(e=this.baseurl+e.substr(1)),l='<img src="'+e+'" alt="'+n[0]+'"',n.length>1&&(n[1].length&&(l+=' width="'+n[1]+'"'),n.length>2&&(l+=' class="'+n[2]+'"')),n[0]&&(l+=' title="'+n[0]+'"'),l+="/>"}return l}text(e){return e}}const r=t.gfm;let tokenparser=(e,t,s=0)=>{let n=0,checklen=e=>{if(s>0&&e.length>s-n){let t=(e=e.substring(0,s-n)).lastIndexOf(" ");t>0&&(e=e.substring(0,t))}return e},next=()=>l=i.pop(),parseText=()=>{let e=l.text;for(;"text"===(i[i.length-1]||0).type;)e+="\n"+next().text;return output(checklen(e))},outputLink=(e,s)=>{let n=escape(s.href),l=s.title?escape(s.title):null;return"!"!==e[0].charAt(0)?t.link(n,l,output(e[1])):t.image(n,l,escape(e[1]))};const output=e=>{let s,n,l,i,c="";for(;e;)if(i=r.escape.exec(e))e=e.substring(i[0].length),c+=i[1];else if(i=r.autolink.exec(e))e=e.substring(i[0].length),"@"===i[2]?(n=":"===i[1].charAt(6)?i[1].substring(7):i[1],l=`mailto:${n}`):(n=escape(i[1]),l=n),c+=t.link(l,null,n);else if(a||!(i=r.url.exec(e))){if(i=r.tag.exec(e))!a&&/^<a /i.test(i[0])?a=!0:a&&/^<\/a>/i.test(i[0])&&(a=!1),e=e.substring(i[0].length),c+=i[0];else if(i=r.link.exec(e))e=e.substring(i[0].length),a=!0,c+=outputLink(i,{href:i[2],title:i[3]}),a=!1;else if((i=r.reflink.exec(e))||(i=r.nolink.exec(e))){if(e=e.substring(i[0].length),s=(i[2]||i[1]).replace(/\s+/g," "),s=o[s.toLowerCase()],!s||!s.href){c+=i[0].charAt(0),e=i[0].substring(1)+e;continue}a=!0,c+=outputLink(i,s),a=!1}else if(i=r.formula.exec(e))e=e.substring(i[0].length),c+=t.formula(output(i[1]));else if(i=r.ico.exec(e))e=e.substring(i[0].length),c+=t.ico(output(i[2]||i[1]));else if(i=r.strong.exec(e))e=e.substring(i[0].length),c+=t.strong(output(i[2]||i[1]));else if(i=r.em.exec(e))e=e.substring(i[0].length),c+=t.em(output(i[2]||i[1]));else if(i=r.code.exec(e))e=e.substring(i[0].length),c+=t.codespan(escape(i[2],!0));else if(i=r.br.exec(e))e=e.substring(i[0].length),c+=t.br();else if(i=r.del.exec(e))e=e.substring(i[0].length),c+=t.del(output(i[1]));else if(i=r.coloralt.exec(e))e=e.substring(i[0].length),c+=t.coloralt(output(i[1]));else if(i=r.colorbase.exec(e))e=e.substring(i[0].length),c+=t.colorbase(output(i[1]));else if(i=r.text.exec(e))e=e.substring(i[0].length),c+=t.text(i[0]);else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0))}else e=e.substring(i[0].length),n=escape(i[1]),l=n,c+=t.link(l,null,n);return c};let l,tok=()=>{switch(l.type){case"space":return"";case"hr":return t.hr();case"heading":return t.heading(output(checklen(l.text)),l.depth,l.text);case"code":return"math"==l.lang?t.formula(l.text,!0):t.code(l.text,l.lang,c);case"table":{let e,s,n,r="",i=[];s=[];for(let e=0;e<l.headers.length;e++)s.push(t.tablecell(tokenparser(l.headers[e],t,0).out,!0,l.align[e]));r=t.tablerow(s.join(""));for(let r=0;r<l.cells.length;r++){for(e=l.cells[r],s=[],n=0;n<e.length;n++)s.push(t.tablecell(tokenparser(e[n],t,0).out,!1,l.align[n]));i.push(t.tablerow(s.join("")))}return t.table(r,i.join(""))}case"blockquote_start":{let e="";for(;"blockquote_end"!==next().type;)e+=tok();return t.blockquote(e)}case"list_start":{let e="",s=l.ordered;for(;"list_end"!==next().type;)e+=tok();return t.list(e,s)}case"list_title_start":{let e="";for(;"list_title_end"!==next().type;)e+=tok();return t.listtitle(e)}case"list_item_start":{let e="",s=l.num;for(;"list_item_end"!==next().type;)e+="text"===l.type?parseText():tok();return t.listitem(e,s)}case"html":return t.html(l.text);case"paragraph":return t.paragraph(output(checklen(l.text)));case"text":return t.paragraph(parseText());default:console.log("missing",l.type)}},i=e.reverse(),a=!1,o={},c=[],p=[];for(;next();){let e=tok();if(n+=e.length,e&&p.push(e),s>0&&n>s)break}return{out:p.join(""),codes:c}};function __parselist(e,t){let s;function pb(n,l,r){if(s=n.exec(e),s){__parselist(e.slice(0,s.index),t);let n=s[1];return n.startsWith("\n")&&(t.push({class:"",text:"\n"}),n=n.slice(1)),t.push({class:l,text:r?r(n):n}),__parselist(e.slice(s.index+s[1].length),t),!0}return!1}e&&"string"==typeof e&&(pb(/^(:{3}\s*$[^]+?:{3}\s*$)/gim,"comment")||pb(/^(\s*`{3}[^]+?`{3}\s*$)/gim,"code")||pb(/^(\s*:\w+:.*)$/gim,"comment")||(e=e.replace(/ {2,}\n/gim," "),pb(/^(\s*#{1,6}\s+.*)/gim,"title")||pb(/(\n\s*\n)/gim,"break")||pb(/^(\s*>\s+[^]*?\n\n)/gim,"cite")||pb(/^(\s*>\s+.*)/gim,"cite")||pb(/^(.*?\|[^]*?\n\n)/gim,"table")||pb(/^( *\*| *-|-{1,8})[ $]/gim,"list")||pb(/^( ([\d]+[.]*)+)[ $]/gim,"list",(e=>{let t=e.split(".");t.shift();let s=[];for(let e of t)e.length&&s.push(" ");return s.push("-"),s.join("")}))||t.push({class:"",text:e})))}function parselist(e,t=""){let s=[];__parselist(e,s);let n=[],l=0;for(let e=0;e<s.length;e++){let r=s[e];if("list"==r.class){let i=r.text.replace("\n","").length;if(i>l)n.push({space:i,id:1}),l=i;else for(;;){let e=n[n.length-1];if(1==n.length||e.space<=i){l=e.space,e.id++;break}n.pop()}let a=[],o=[];for(let e of n)o.push(" "),a.push(e.id);o.pop(),r.old=r.text,r.text.indexOf("-")>=0?r.text=o.join("")+"- "+a.join(".")+".":r.text=o.join("")+"* ",a=[];for(let t=e+1;t<s.length&&""==s[t].class;t++)a.push(s[t].text);r.title=t,r.data=r.text+a.join("")}else""!=r.class&&("title"==r.class&&(t=r.text),n=[],l=0)}let r=[],i=[];for(let e of s)"list"==e.class&&i.push({title:e.title,lev:e.text,data:e.data}),r.push(e.text);return{txt:r.join(""),cards:i,tm:s}}function parserow$1(e,t,s=""){let n;function parse3(l,r){return n=l.exec(e),!!n&&(parserow$1(e.slice(0,n.index),t,s),t.push({class:`${s} ${r}`,text:n[1]}),parserow$1(n[2],t,`${s} ${r}`),t.push({class:`${s} ${r}`,text:n[3]}),parserow$1(e.slice(n.index+n[1].length+n[2].length+n[3].length),t,s),!0)}(function parse1(l,r){return n=l.exec(e),!!n&&(parserow$1(e.slice(0,n.index),t,s),t.push({class:`${s} ${r}`,text:n[1]}),parserow$1(e.slice(n.index+n[1].length),t,s),!0)})(/(`.*?`)/gim,"code2")||parse3(/(\*{3})([^]+?)(\*{3})/gim,"grassetto italico")||parse3(/(\*{2})([^]+?)(\*{2})/gim,"grassetto")||parse3(/(\*{1})([^]+?)(\*{1})/gim,"italico")||parse3(/(_{3})([^]+?)(_{3})/gim,"grassetto italico")||parse3(/(_{2})([^]+?)(_{2})/gim,"grassetto")||parse3(/(_{1})([^]+?)(_{1})/gim,"italico")||parse3(/(~{3})([^]+?)(~{3})/gim,"barrato")||parse3(/(~{2})([^]+?)(~{2})/gim,"tilde2")||parse3(/(~{1})([^]+?)(~{1})/gim,"tilde")||t.push({class:s,text:e})}function parseblock$1(e,t){let s;function pb(n,l,r=!1){return s=n.exec(e),!!s&&(parseblock$1(e.slice(0,s.index),t),r?parserow$1(s[1],t,l):t.push({class:l,text:s[1]}),parseblock$1(e.slice(s.index+s[1].length),t),!0)}if(!(pb(/^(:{3}[^]+?:{3})/gim,"comment")||pb(/^(\s*`{3}[^]+?`{3})/gim,"code")||pb(/^(\s*:\w+:.*)$/gim,"comment")||pb(/^(\s*#{1,6} +.*)$/gim,"title",!0)||pb(/^(\s*>\s+[^]*?\n\n)/gim,"cite",!0)||pb(/^(\s*>\s+.*)/gim,"cite",!0)||pb(/^(.*?\|.*\n[-: ]+\|[-| :]*\n.*?\|[^]*?\n\n)/gim,"tabella",!0)||pb(/^(\n{2,})/gim,"break",!0)||pb(/^( *\*| *-|-{1,8})[ $]/gim,"list",!0)||pb(/(^\s*[\d.]+)[\s$]/gim,"list",!0))){if(s=/(!*\[)(.*?)(\]\s*\()(.*?)(\))/.exec(e),s)return parserow$1(e.slice(0,s.index),t,""),t.push({class:"grassetto",text:s[1]}),t.push({class:"linkdes",text:s[2]}),t.push({class:"grassetto",text:s[3]}),t.push({class:"linkval",text:s[4]}),t.push({class:"grassetto",text:s[5]}),void parserow$1(e.slice(s.index+s[1].length+s[2].length+s[3].length+s[4].length+s[5].length),t,"");parserow$1(e,t,"")}}function parsetext(e){"number"==typeof e&&(e=String(e)),e&&"string"==typeof e||(e=" "),e.endsWith("\n")&&(e+=" ");let t=[];return parseblock$1(e,t),t}function parserow(e,t,s=""){let n;function parse1(l,r){return n=l.exec(e),!!n&&(parserow(e.slice(0,n.index),t,s),t.push({class:`${s} ${r}`,text:n[1]}),parserow(e.slice(n.index+n[1].length),t,s),!0)}parse1(/(\/\/.*)$/gim,"commento2")||function parse2(l,r){if(n=l.exec(e),n){let l=n.index+n[1].length;return parserow(e.slice(0,l),t,s),t.push({class:`${s} ${r}`,text:n[2]}),parserow(e.slice(l+n[2].length),t,s),!0}return!1}(/(#let.? +)([\w_.]+)/gi,"variabile")||parse1(/(#(select|setdef|ret|cases|endselect|ifdef|log|msg|endif|cvar|cache|look|lookb|elseifdef|variante|forvar|for|endfor|continue|break|inc|macro|default|lets|letv|lett|cat|func))/gim,"comando")||parse1(/(#(if\s*|elseif\s*))/gim,"comando")||parse1(/(#(else|let|i |m |f |j |case|def ))/gim,"comando")||parse1(/(\$[{(]?[\w_.]+)/gim,"variabile")||parse1(/({.+?\})/gim,"formula")||parse1(/([})(])/gim,"variabile")||parse1(/([\d.:,;\\,]+)/gim,"digit")||t.push({class:s,text:e})}function parseblock(e,t){let s;(function pb(n,l,r=!1){return s=n.exec(e),!!s&&(parseblock(e.slice(0,s.index),t),r?parserow(s[1],t,l):t.push({class:l,text:s[1]}),parseblock(e.slice(s.index+s[1].length),t),!0)})(/(\/\*[^]+?\*\/)/gim,"comment")||parserow(e,t,"")}function parserule(e){e||(e=" "),e.endsWith("\n")&&(e+=" ");let t=[];return parseblock(e,t),t}function formatrule(e){let t=e.split("\n"),s=[],n=0,l=0;const r=" ";for(let e=0;e<t.length;e++){let i=t[e].trim(),a=r.repeat(n>=0?n+l:l);l=0;let o="";i.split("//")[0].trim().endsWith("\\")&&(l=1),(i.startsWith("#")||i.startsWith("!"))&&(o=i.substring(1).split(" ")[0].toUpperCase(),i=i.substring(0,1)+o+i.substring(o.length+1)),"IF"==o||"IFDEF"==o||"IFNDEF"==o?i.indexOf("#",2)<0?n++:i=i.replace(/#([\w]+)/g,((e,t)=>"#"+t.toUpperCase())):["FOR","FORVAR","DO","SELECT"].includes(o)?n++:["ENDIF","LOOP","ENDFOR","ENDSELECT"].includes(o)&&(n--,a=r.repeat(n>=0?n:0)),["ELSEIF","ELSE","ELSEIFDEF","ELSEIFNDEF","CASE","CASES","DEFAULT"].includes(o)&&n>0?s.push(r.repeat(n-1)+i):s.push(a+i)}return s.join("\n")}function getcolonne(e){if((e=e+""||"").includes('"')){return e.split(/[,;](?=(?:(?:[^"]*["]){2})*[^"]*$)/).map((e=>e.trim().replace(/(^["'])|(["']$)/g,"").replace(/=\s*["']/g,"=")))}return e.split(/[,;]/).map((e=>e.trim()))}function formatvariante(e){let t=[],s=[];for(let n of e.split("\n")){let e=getcolonne(n);for(let t=0;t<e.length;t++){let n=e[t]||"";(n.includes(",")||n.includes(";"))&&(n=`"${n}"`,e[t]=n);let l=n.length;(!s[t]||s[t]<l)&&(s[t]=l)}t.push(getcolonne(n))}let n=[];for(let e of t){let t=[];for(let n=0;n<s.length;n++)t[n]=(e[n]||"").padEnd(s[n]);n.push(t.join(" , "))}return n.join("\n")}function markunoFormatCodeMirror(e){e.defineMode("markuno",(function(){return{startState:function(){return{inComment:!1}},token:function(e,t){return t.inComment?(e.skipTo("*/")?(e.next(),e.next(),t.inComment=!1):e.skipToEnd(),"comment"):e.match(/\/\/.*/)?"comment":e.sol()&&e.match(/^\s*\.[a-zA-Z0-9_]+(?=\s|$)/)?"def":t.expectMacroArg?e.eatSpace()?null:e.match(/^[^\s#,(){}]+/)?(t.expectMacroArg=!1,"builtin"):(e.next(),t.expectMacroArg=!1,null):e.sol()&&e.match(/^\s*#([mif])\b/i)?(t.expectMacroArg=!0,"def"):e.match("/*")?(e.skipTo("*/")?(e.next(),e.next()):t.inComment=!0,"comment"):e.match(/^\s*#(select|ret|cache|cvar|lookb|look|cases|endselect|log|msg|ifdef|ifndef|elseif|elseifndef|endif|elseifdef|variante|forvar|for|endfor|continue|break|inc|macro|default|lets|lett|cat|func|push|pop|letv|let|letm|lett|else)/i)||e.match(/^\s*#(if\s*|elseif\s*|j |case|def )/i)||e.match(/#(else|let|letv|lett|letm|cvar|cache|lookb|look)/i)?"keyword":!t.inCommand&&e.match(/^\s*#[\w_.]+/i)?"string":e.match(/^\s*![\w_.]+/i)?"builtin":e.match(/[<>!=+\-*/\\%]+/)?"operator":e.match(/\$\[[\w_.]+/)||e.match(/\$\{[\w_.]+/)||e.match(/\$\([\w_.]+/)||e.match(/\$[\w_.]+/)||e.match(/[}\])]/)?"string":e.match(/\{.+?\}/)?"variable-3":e.match(/[\d.:,;\\]+/)?"number":(e.next(),null)}}}))}function parsevars(e,t){let s=e;if(t)for(let e in t){let n=t[e]||`..${e}..`;s=s.replace(new RegExp(`\\[${e}\\]`,"gim"),n)}return s}const parseinfomd=(e,t,s)=>n.parse(e,t,s),mark=(e,t,s=!1,n=!1,l)=>{let r;if(n)r=tokenize(e,0,s);else{let{txt:t}=parselist(e);r=tokenize(t,0,s)}return tokenparser(r,new Render(t,!1,l))},markeasy=(e,t=400,s=!1)=>{let n=tokenize(e,t,s);return tokenparser(n,new Render,t).out};export{Render,n as aliasInfo,elang,escapeHTML,formatrule,formatvariante,mark,markeasy,markunoFormatCodeMirror,parseinfomd,parselist,parserule,parsetext,tokenparser as parsetokens,parsevars,tokenize,unescapeHTML};
|
|
1
|
+
function escape(e,t){return e.replace(t?/&/g:/&(?!#?\w+;)/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function replace(e,t){return e=e.source,t=t||"",function self(s,n){return s?(n=(n=n.source||n).replace(/(^|[^[])\^/g,"$1"),e=e.replace(s,n),self):new RegExp(e,t)}}function noop(){}function merge(e){let t,s,n=1;for(;n<arguments.length;n++)for(s in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,s)&&(e[s]=t[s]);return e}noop.exec=noop;const e={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:noop,hr:/^( *[-*_]){3,} *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,nptable:noop,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,blockquote:/^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,table:noop,paragraph:/^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,text:/^[^\n]+/,bullet:/(?:[*+-])/,item:/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/};e.item=replace(e.item,"gm")(/bull/g,e.bullet)(),e.list=replace(e.list)(/bull/g,e.bullet)("hr","\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))")("def","\\n+(?="+e.def.source+")")(),e.blockquote=replace(e.blockquote)("def",e.def)(),e._tag="(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b",e.html=replace(e.html)("comment",/<!--[\s\S]*?-->/)("closed",/<(tag)[\s\S]+?<\/\1>/)("closing",/<tag(?:"[^"]*"|'[^']*'|[^'">])*?>/)(/tag/g,e._tag)(),e.paragraph=replace(e.paragraph)("hr",e.hr)("heading",e.heading)("lheading",e.lheading)("blockquote",e.blockquote)("tag","<"+e._tag)("def",e.def)(),e.normal=merge({},e),e.gfm=merge({},e.normal,{fences:/^ *(`{3,}|~{3,})[ .]*(\S+)? *\n([\s\S]*?)\s*\1 *(?:\n+|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/,formula:/^ *(\${2,})([\s\S]*?)\s*\1 *(?:\n+|$)/}),e.gfm.paragraph=replace(e.paragraph)("(?!","(?!"+e.gfm.fences.source.replace("\\1","\\2")+"|"+e.list.source.replace("\\1","\\3")+"|")(),e.tables=merge({},e.gfm,{nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :0123456789]*)\n((?: *\|.*(?:\n|$))*)\n*/});const t={escape:/^\\([\\`*{}[\]()#+\-.!_>])/,autolink:/^<([^ >]+(@|:\/)[^ >]+)>/,url:noop,tag:/^<!--[\s\S]*?-->|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^[\]])*)\]/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,ico:/^::([\s\S]+?)::/,em:/^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,code:/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:noop,colorbase:noop,coloralt:noop,text:/^[\s\S]+?(?=[\\<![_*:`]| {2,}\n|$)/,_inside:/(?:\[[^\]]*\]|[^[\]]|\](?=[^[]*\]))*/,_href:/\s*<?([\s\S]*?)>?(?:\s+['"]([\s\S]*?)['"])?\s*/};t.link=replace(t.link)("inside",t._inside)("href",t._href)(),t.reflink=replace(t.reflink)("inside",t._inside)(),t.normal=merge({},t),t.pedantic=merge({},t.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/}),t.gfm=merge({},t.normal,{escape:replace(t.escape)("])","~|])")(),url:/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,del:/^~~~(?=\S)([\s\S]*?\S)~~~/,colorbase:/^~(?=\S)([\s\S]*?\S)~/,coloralt:/^~~(?=\S)([\s\S]*?\S)~~/,formula:/^\$(?=\S)([\s\S]*?\S)\$/,text:replace(t.text)("]|","~$]|")("|","|https?://|")()}),t.breaks=merge({},t.gfm,{br:replace(t.br)("{2,}","*")(),text:replace(t.gfm.text)("{2,}","*")()});const s={s:"subtitle",k:"keywords",g:"gruppo",e:"editore",y:"datapub",d:"datapub",p:"priority",a:"autore",u:"base",t:"title",l:"link",i:"img","#":"title"};const n=new class AliasInfo{constructor(){this.alias=JSON.parse(JSON.stringify(s)),this.check()}check(){let e=new Set,checkr=t=>{t&&t.length>2&&!e.has(t)&&e.add(t)};for(let e in this.alias)this.alias[e]?(checkr(e),checkr(this.alias[e])):delete this.alias[e];this.retoalias=function retroalias(e){let t={};for(let s in e)e[s]&&(t[e[s]]=s);return t}(this.alias),e=[...e],e=`^\\s*\\:(${e.join("|")}|\\w{1,2})\\:(.*)$`,this.regex=e}add(e,t){return e&&(this.alias[e]=t,this.check()),this}removeAll(){return this.alias={},this.check(),this}setmappa(e){this.alias={};for(let t in e)this.alias[t]=e[t];this.alias["#"]||(this.alias["#"]="title"),this.check()}parse(e,t,s){s&&this.setmappa();let n=e,l={};t&&(l=Object.assign(l,t),l.info=!0);let r=/^\s*#\s+(.*?)\s*$/im.exec(n);r&&(l[this.alias["#"]]=r[1].toLowerCase());for(let e=0;e<20;e++){let t=/:::(.*)([^]+?):::/im.exec(n);if(!t)break;{let s=t[1];s||(s=e+""),l.comments||(l.comments=[]),l.comments.push({k:s,v:t[2]}),n=n.substr(t.index+t[0].length)}}n=e;let i=new RegExp(this.regex,"im");for(let e=0;e<50;e++){let e=i.exec(n);if(!(e&&e.length>=2))break;{n=n.substr(e.index+e[0].length),l.info=!0;let t=(e[2]||"").trim(),s=this.alias[e[1].toLowerCase()];s||(s=e[1].toLowerCase()),"l"==s||"link"==s?(l[s]||(l[s]=[]),l[s].push(t)):l[s]=t}}return l}};var tokenize=(t,s,l=!1)=>{function _parsetable(e,t){let s,n={type:"table",headers:[],align:[],cells:[],cols:0},l=t.split("\n"),r=!1;function checkcols(e){if(n.cols<e){for(let t=n.cols;t<e;t++){n.align[t]="left",n.headers[t]=[];for(let e of n.cells)e[t]=[]}n.cols=e}}for(let e of l)if(e=e.trim(),e.length)if(e.length>2&&e.startsWith("|")&&e.endsWith("|")&&(e=e.slice(1,-1)),s=e.split("|"),checkcols(s.length),0==r&&/^[- :]+\|[- :|]*$/im.test(e)){for(let e=0;e<s.length;e++){let t=s[e],l=t.slice(0,1),r=t.slice(-1);n.align[e]=":"==l&&":"==r?"center":":"==r?"right":"left"}r=!0}else{let e=[];for(let t=0;t<s.length;t++){let l=s[t];if(r){let t=[];_tokenize(t,l,!1),e.push(t)}else _tokenize(n.headers[t],l,!1)}r&&n.cells.push(e)}e.push(n)}function _pushtoken(e,t){let s=/^([\d.]+)\s*/.exec(t),n="",l="";s&&(n=s[1],t=t.substring(s.index+s[0].length)),s=/^([\w\s]*?):.*$/gim.exec(t),s&&(l=s[1],t=t.substring(s.index+s[1].length)),e.push({type:"list_item_start",num:n}),l&&(e.push({type:"list_title_start"}),_tokenize(e,l,!1),e.push({type:"list_title_end"})),t=t.replace(/\n +/gim,"<br>"),_tokenize(e,t,!1),e.push({type:"list_item_end"})}function _parselista(e,t,s,n){let l=[s];for(e.push({type:"list_start",ordered:t});;){let s=/^( *)([*\-+])[\s$]/im.exec(n);if(!s){_pushtoken(e,n);break}{s.index&&_pushtoken(e,n.substring(0,s.index));let r=s[1].length;if(r>l[l.length-1])e.push({type:"list_start",ordered:t}),l.push(r);else for(;;){let t=l[l.length-1];if(1==l.length||t<=r)break;e.push({type:"list_end"}),l.pop()}n=n.substring(s.index+s[0].length)}}for(let t of l)e.push({type:"list_end"})}const _tokenize=(e,t,n,l)=>{let i;for(t=t.replace(/^ +$/gm,"");t;){if(s){let t=0;for(let s of e)s.text||s.html?t=t+s.text.length+2:t+=3;if(t>s)break}if((i=r.newline.exec(t))&&(t=t.substring(i[0].length),i[0].length>1&&e.push({type:"space"})),i=r.formula.exec(t))t=t.substring(i[0].length),e.push({type:"code",lang:"math",text:i[2]||""});else if(i=/^(\s*`{3})(.*)([^]+?)(`{3})/gim.exec(t)){i.index>0&&_tokenize(e,t.substring(0,i.index),n);let s=(i[3]||"").replace(/^\n/,"").replace(/\n+$/,"");e.push({type:"code",lang:i[2],text:s}),t=t.substring(i.index+i[0].length)}else if(i=r.heading.exec(t))t=t.substring(i[0].length),e.push({type:"heading",depth:i[1].length,text:i[2]});else if(n&&(i=/^(.*?\|.*\n[-: ]+\|[-| :]*\n.*?\|[^]*?)\n\n/gim.exec(t)))i.index>0&&_tokenize(e,t.substring(0,i.index),n),_parsetable(e,i[1]),t=t.substring(i.index+i[0].length);else if(n&&(i=/^\|.*\|\s*(?:\n\|.*\|)+/gim.exec(t)))i.index>0&&_tokenize(e,t.substring(0,i.index),n),_parsetable(e,i[0]),t=t.substring(i.index+i[0].length);else if(i=r.lheading.exec(t))t=t.substring(i[0].length),e.push({type:"heading",depth:"="===i[2]?1:2,text:i[1]});else if(i=r.hr.exec(t))t=t.substring(i[0].length),e.push({type:"hr"});else if(i=r.blockquote.exec(t))t=t.substring(i[0].length),e.push({type:"blockquote_start"}),_tokenize(e,i[0].replace(/^ *> ?/gm,""),n,!0),e.push({type:"blockquote_end"});else if(i=/^[\s-:]*?\|[\s-:|]*/im.exec(t),i||!(i=/^( *)([*\-+])[\s$]/im.exec(t))){if(i=r.html.exec(t))t=t.substring(i[0].length),e.push({type:"html",pre:"pre"===i[1]||"script"===i[1]||"style"===i[1],text:i[0]});else if(!l&&n&&(i=r.def.exec(t)))t=t.substring(i[0].length),e.push({type:"code",text:`??${i[0]}??${r.def}??`});else if(n&&(i=r.paragraph.exec(t)))t=t.substring(i[0].length),e.push({type:"paragraph",text:"\n"===i[1].charAt(i[1].length-1)?i[1].slice(0,-1):i[1]});else if(i=r.text.exec(t))t=t.substring(i[0].length),e.push({type:"text",text:i[0]});else if(t)throw new Error("Infinite loop on byte: "+t.charCodeAt(0))}else{i.index>0&&_tokenize(e,t.substring(0,i.index)),t=t.substring(i.index+i[0].length);let s=/([^]*?)(\n\n|\n\s*[#>])/im.exec(t+"\n\n");if(s){_parselista(e,"*"==i[2],i[1].length,s[1]),t=t.substring(s[1].length)}else e.push({type:"text??",text:i[0]})}}return e};let r=e.tables;return t=function removeInfo(e,t=!1){let s=e.replace(/:::([^]+?):::/gim,"").replace(new RegExp(n.regex,"gim"),"").replace(/^\s*#\s+/im,"# ").replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n");if(t){const e=/(^\s*#\s+(.*)?\s*)$/im;let t=e.exec(s);t&&0==t.index&&(s=s.replace(e,""))}return s}(t,l),_tokenize([],t,!0)};const l={string:/(".*?[^\\]"|'.*?[^\\]'|`[^]*?[^\\]`|""|''|``)/m,puntuaction:/(-[-=]?|,|;|\+[+=]?|!=?=?|<<?=?|>>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3})/g,parentesis:/(\(|\)|\[|\]|\{|\})/g,ingraffe:/([^$])(\{)(.*?)(\})/g,regex:/\/.*?[^\\]\/[gimu]*/m,numbers:/\b((?:(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+)n?|\d+n|NaN|Infinity)\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?)/gi,js:{comments:/(?:(?:^|[^\\:])(\/\/.*)|(?:^|[^\\])(\/\*[\s\S]*?(?:\*\/)))/m,keyword:/(\b)(import|require|endif|include|define|float|int|real|char|bool|as|true|false|async|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)(\b)/g,keyword2:/(\.\w+|\w+:)/g},json:{string:/(".*?[^\\]")/m,string1:/(".*?[^\\]"\s*:)/m},html:{script:/(<script[\s\S]*?>)([^]*?)(<\/script>)/im,tag:/<(!DOCTYPE|\/?\w+)([^]*?)(\/?>)/im,intag:/(\b)([\w-]+)(=)/g,comments:/<!--[^]*?-->/im},bash:{comments:/# .*/,keyword1:/(^ *|; *)(\w+)(\b)/g,keyword:/(\b)(sudo *[\w-]+)(\b)/g},mu:{comments:/(?:(?:^|[^\\:])(\/\/.*)|(?:^|[^\\])(\/\*[\s\S]*?(?:\*\/)))/m,keyword1:/(#)(\w+)(\b)/g,keyword2:/(\$\(?(\w+|\.|:|\)))/g},sql:{keyword:".",keyword2:/(\b)(FROM|USING|FTS5|NVARCHAR|INTEGER|REAL|BLOB|DELETE|UPDATE|BEGIN|END|ADD|CREATE|CONSTRAINT|ALTER|COLUMN|TABLE|ALL|ASC|BETWEEN|CASE|CHECK|COLUMN|INDEX|VIEW|PROCEDURE|DESC|DISTINTC|DROP|OUTER|INNER|LEFT|JOIN|INSERT|INTO|[NOT ]*NULL|LIMIT|SELECT|ORDER BY|UNION|WHERE)(\b)/gi,keyword1:/(\b)(COLLATE|NOCASE|DEFAULT|IF [NOT ]*EXISTS|PRIMARY KEY|VALUES|AS)(\b)/gi,comments:/(?:(?:^|[^\\:])(\/\/.*)|(?:^|[^\\])(\/\*[\s\S]*?(?:\*\/))|(--\s.*))/m}};function elang(e,t,s,n){let l;return n&&(l=n.length,n.push(e)),`<pre class="elang relative">${xelang(e,t,s)}<div class="absolute top-1 right-1"><button class="mu-internal-copy" data-copy="${l}">📋</button></div></pre>`}const escapeTag=e=>e.replace(/[<>]/g,(e=>({"<":"<",">":">"}[e]))),escapeHTML=e=>e.replace(/[&<>'"]/g,(e=>({"&":"&","<":"<",">":">","'":"'",'"':"""}[e]))),unescapeHTML=e=>e.replace(/&/g,"&").replace(/"/g,'"').replace(/'/g,"'").replace(/>/g,">").replace(/</g,"<");function xelang(e,t,s){let gspan=(e,t)=>(t&&(t=t.replace(/(\b)(\w+)(\b)/g,"$1_$2$3")),`☉☊${t||""}☊☉${(e=escapeTag(e))||""}☉☋`),regex=e=>{if(l[t]){let s=l[t][e];if("."==s)return;if(s)return s}let s=l[e];return"."==s?void 0:s},n=[],r=0,i=[];if(t){l[t]||(t="js");let r=regex("script");if(r){let s=[];for(;;){let n=r.exec(e);if(!n)break;n.index>0&&s.push(e.substr(0,n.index)),s.push(`★★K${i.length}★★`),i.push(xelang(n[1],t)+xelang(n[2],"js")+xelang(n[3],t)),e=e.substr(n.index+n[0].length)}e.length&&s.push(e),e=s.join("")}for(let s of[{r:"comments",s:"C"}]){let n=regex(s.r);if(n){let l=[];for(;;){let r=n.exec(e);if(!r)break;if(r.index>0&&l.push(e.substr(0,r.index)),l.push(`★★${s.s}${i.length}★★`),"html"==t){let e=r[0].replace(/</g,"<").replace(/>/g,">");i.push(e)}else i.push(r[0]);e=e.substr(r.index+r[0].length)}e.length&&l.push(e),e=l.join("")}}for(let t of[{r:"string2",s:"A"},{r:"string1",s:"B"},{r:"string",s:"S"},{r:"tag",s:"T"},{r:"regex",s:"R"}]){let s=regex(t.r);if(s){let n=[];for(;;){let l=s.exec(e);if(!l)break;if(l.index>0&&n.push(e.substr(0,l.index)),n.push(`★★${t.s}${i.length}★★`),"T"==t.s){let e=l[2].replace(regex("intag"),((e,t,s,n)=>t+gspan(s,"intag")+gspan(n,"punc")));i.push(gspan("<","punc")+l[1]+e+gspan(l[3],"punc"))}else if("`"==l[0][0]){let e=l[0].replace(/(\${)(.*?)(})/gm,((e,t,s,n)=>gspan(t,"punc")+gspan(s,"word")+gspan(n,"punc")));i.push(e)}else i.push(l[0]);e=e.substr(l.index+l[0].length)}e.length&&n.push(e),e=n.join("")}}let a=e.split("\n"),o=0;for(let e of a)o++,e=e.replace(regex("keyword"),((e,t,s,n)=>gspan(t,"tag")+gspan(s,"keys")+n)).replace(regex("keyword1"),((e,t,s,n)=>t+gspan(s,"keys1 keys")+n)).replace(regex("keyword2"),(e=>gspan(e,"keys2 keys"))).replace(regex("numbers"),(e=>gspan(e,"number"))).replace(regex("ingraffe"),((e,t,s,n,l)=>t+gspan(s,"punc")+gspan(n,"word")+gspan(l,"punc"))).replace(regex("puntuaction"),(e=>gspan(e,"punc"))).replace(/★★T(\d+)★★/gu,((e,t)=>gspan(i[Number(t)],"tag"))).replace(/★★S(\d+)★★/gu,((e,t)=>gspan(i[Number(t)],"string"))).replace(/★★B(\d+)★★/gu,((e,t)=>gspan(i[Number(t)],"string string1"))).replace(/★★A(\d+)★★/gu,((e,t)=>gspan(i[Number(t)],"string string2"))).replace(/★★R(\d+)★★/gu,((e,t)=>gspan(i[Number(t)],"regex"))).replace(/★★C(\d+)★★/gu,((e,t)=>gspan(i[Number(t)],"comment"))).replace(/★★K(\d+)★★/gu,((e,t)=>i[Number(t)])),s?n.push(gspan((" "+o).substr(-4),"rowid")+gspan(e)):n.push(gspan(e))}else{let t=e.split("\n");for(let e of t)r++,s?n.push(`${gspan((" "+r).substr(-4),"rowid")}${gspan(e)}`):n.push(gspan(e))}let a=n.join("\n");return a=a.replace(/☉☋/gmu,"</span>").replace(/☉☊([^]*?)☊☉/gmu,((e,s)=>{if(s){let e=s.split(" "),n=[];for(let s of e)n.push(`elang_${t}${s}`),n.push(`elang${s}`);return`<span class="${n.join(" ")}">`}return"<span>"})),a}class Render{constructor(e,t,s){this.baseurl=e,this.easy=t,this.callback=s}code(e,t,s){if(this.easy)return"";t||(t="js");let n=t==t.toUpperCase();return elang(e,t=t.toLowerCase(),n,s)}blockquote(e){return this.easy?e:`<blockquote>\n${e}</blockquote>\n`}html(e){return e}heading(e,t,s){return"."==e||"*"==e?"":this.easy?`${e} `:`<h${t}>${e}</h${t}>`}hr(){return this.easy?"":'<div class="my-4"><hr/></div>'}list(e,t){let s=t?"ol":"ul";return`<${s}>\n${e}</${s}>\n`}listtitle(e){return`<span class="listtitle">${e}</span>`}listitem(e,t){return t?`<li attr-num="${t||""}">${e}</li>\n`:`<li>${e}</li>\n`}paragraph(e){return this.easy?e:`<p>${e}</p>\n`}table(e,t){return this.easy?"":`<table>\n<thead>\n${e}\n</thead>\n<tbody>\n${t}\n</tbody>\n</table>\n\n`}tablerow(e){return`<tr>\n${e}</tr>\n`}tablecell(e,t,s){if(t)return`<th style="text-align:center;">${e}</th>\n`;return`<td style="${s?"text-align:"+s+";":""}">${e}</td>`}colorbase(e){return`<span class='tilde'>${e}</span>`}formula(e,t=!1){if(this.easy)return"";let s=`<img class='inline px-2' src='https://math.croswil.com/f?${e=e.replace(/<\/?em>/g," ").replace(/\r/g,"").replace("/\n/g"," ")}' alt='${e}'/>`;return t?`<div class='flex justify-center'><div>${s}</div></div>`:s}coloralt(e){return`<span class='tilde2'>${e}</span>`}strong(e){return"<strong>"+e+"</strong>"}ico(e){return`<span class="font-ico">${e}</span>`}em(e){return"<em>"+e+"</em>"}codespan(e){return"<code>"+e+"</code>"}br(){return"<br>"}del(e){return`<del>${e}</del>`}link(e,t,s){if(this.easy)return"("+s+")";let n;if("/"==e.substr(0,1)&&this.baseurl&&(e=this.baseurl+e.substr(1)),e.startsWith("!"))n=`<button class="mu-internal-link" data-href="${e=e.slice(1)}">${s}</button>`;else{let l="";e.startsWith(".")?e=e.slice(1):l='target="_blank"',n=`<a ${l} href='${e}' title='${t||""}'>${s}</a>`}return n}image(e,t,s){if(this.easy)return"";let n=s.split("|"),l="",r=!1,i=!1,a=!1;if((e=(e=e.replace("https://www.youtube.com/watch?v=","https://youtu.be/")).replace("https://youtu.be","https://www.youtube.com/embed")).endsWith(".mp3")?(e=e.slice(0,-4),a=!0):e.endsWith(".mp4")?(e=e.slice(0,-4),i=!0):e.endsWith(".webm")?(e=e.slice(0,-5),r=!0):e.endsWith(".video")&&(e=e.slice(0,-6),r=!0,i=!0),a)l=`\n <audio controls ${n.length>=1?' width="'+n[1]+'"':""}\n class="mx-auto my-2 ${n.length>=2?n[2]:""}" \n >\n <source src="${e}.mp3" type="audio/mpeg">\n Il tuo browser non supporta l'elemento audio.\n </audio>\n `;else if(i||r)l=`\n<video ${n.length>=1?' width="'+n[1]+'"':""}\nclass="border rounded-lg shadow-xl ${n.length>=2?n[2]:""}" \ncontrols controlsList="nodownload" >\n ${r?'<source src="'+e+'.webm" type="video/webm" >':""}\n ${i?'<source src="'+e+'.mp4" type="video/mp4" >':""}\n \n Your browser does not support the video tag.\n</video>`;else{if(e.indexOf("https://www.youtu")>=0){let s=e.split("/embed/")[1]?.split("?")[0];return l=`\n\n<div style="width: 94%; box-shadow: 6px 6px 10px hsl(206.5, 0%, 75%); margin: 3%;">\n <div style="position: relative; padding-bottom: 56.15%; height: 0; overflow: hidden;">\n <iframe \n style="position: absolute; top: 0; left:0; width: 100%; height: 100%; border: 0;"\n loading="lazy";\n srcdoc="<style>\n * {\n padding: 0;\n margin: 0;\n overflow: hidden;\n }\n \n body, html {\n height: 100%;\n }\n \n img, svg {\n position: absolute;\n width: 100%;\n top: 0;\n bottom: 0;\n margin: auto;\n }\n \n svg {\n filter: drop-shadow(1px 1px 10px hsl(206.5, 70.7%, 8%));\n transition: all 250ms ease-in-out;\n }\n \n body:hover svg {\n filter: drop-shadow(1px 1px 10px hsl(206.5, 0%, 10%));\n transform: scale(2);\n }\n </style>\n <a href='https://www.youtube.com/embed/${s}?autoplay=1'>\n <img src='https://img.youtube.com/vi/${s}/hqdefault.jpg' alt='${t||"video"}'>\n <svg xmlns='http://www.w3.org/2000/svg' width='64' height='64' viewBox='0 0 24 24' fill='none' stroke='#ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-play-circle'><circle cx='12' cy='12' r='10'></circle><polygon points='10 8 16 12 10 16 10 8'></polygon></svg>\n </a>\n "\n src="https://www.youtube.com/embed/${s}" \n title="${t||"video"}"\n frameborder="0"\n allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" \n allowfullscreen>\n </iframe>\n </div>\n </div> \n \n`,l}this.callback&&"function"==typeof this.callback&&(e=this.callback({type:"img",href:e})),"/"==e.substr(0,1)&&this.baseurl&&(e=this.baseurl+e.substr(1)),l='<img src="'+e+'" alt="'+n[0]+'"',n.length>1&&(n[1].length&&(l+=' width="'+n[1]+'"'),n.length>2&&(l+=' class="'+n[2]+'"')),n[0]&&(l+=' title="'+n[0]+'"'),l+="/>"}return l}text(e){return e}}const r=t.gfm;let tokenparser=(e,t,s=0)=>{let n=0,checklen=e=>{if(s>0&&e.length>s-n){let t=(e=e.substring(0,s-n)).lastIndexOf(" ");t>0&&(e=e.substring(0,t))}return e},next=()=>l=i.pop(),parseText=()=>{let e=l.text;for(;"text"===(i[i.length-1]||0).type;)e+="\n"+next().text;return output(checklen(e))},outputLink=(e,s)=>{let n=escape(s.href),l=s.title?escape(s.title):null;return"!"!==e[0].charAt(0)?t.link(n,l,output(e[1])):t.image(n,l,escape(e[1]))};const output=e=>{let s,n,l,i,c="";for(;e;)if(i=r.escape.exec(e))e=e.substring(i[0].length),c+=i[1];else if(i=r.autolink.exec(e))e=e.substring(i[0].length),"@"===i[2]?(n=":"===i[1].charAt(6)?i[1].substring(7):i[1],l=`mailto:${n}`):(n=escape(i[1]),l=n),c+=t.link(l,null,n);else if(a||!(i=r.url.exec(e))){if(i=r.tag.exec(e))!a&&/^<a /i.test(i[0])?a=!0:a&&/^<\/a>/i.test(i[0])&&(a=!1),e=e.substring(i[0].length),c+=i[0];else if(i=r.link.exec(e))e=e.substring(i[0].length),a=!0,c+=outputLink(i,{href:i[2],title:i[3]}),a=!1;else if((i=r.reflink.exec(e))||(i=r.nolink.exec(e))){if(e=e.substring(i[0].length),s=(i[2]||i[1]).replace(/\s+/g," "),s=o[s.toLowerCase()],!s||!s.href){c+=i[0].charAt(0),e=i[0].substring(1)+e;continue}a=!0,c+=outputLink(i,s),a=!1}else if(i=r.formula.exec(e))e=e.substring(i[0].length),c+=t.formula(output(i[1]));else if(i=r.ico.exec(e))e=e.substring(i[0].length),c+=t.ico(output(i[2]||i[1]));else if(i=r.strong.exec(e))e=e.substring(i[0].length),c+=t.strong(output(i[2]||i[1]));else if(i=r.em.exec(e))e=e.substring(i[0].length),c+=t.em(output(i[2]||i[1]));else if(i=r.code.exec(e))e=e.substring(i[0].length),c+=t.codespan(escape(i[2],!0));else if(i=r.br.exec(e))e=e.substring(i[0].length),c+=t.br();else if(i=r.del.exec(e))e=e.substring(i[0].length),c+=t.del(output(i[1]));else if(i=r.coloralt.exec(e))e=e.substring(i[0].length),c+=t.coloralt(output(i[1]));else if(i=r.colorbase.exec(e))e=e.substring(i[0].length),c+=t.colorbase(output(i[1]));else if(i=r.text.exec(e))e=e.substring(i[0].length),c+=t.text(i[0]);else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0))}else e=e.substring(i[0].length),n=escape(i[1]),l=n,c+=t.link(l,null,n);return c};let l,tok=()=>{switch(l.type){case"space":return"";case"hr":return t.hr();case"heading":return t.heading(output(checklen(l.text)),l.depth,l.text);case"code":return"math"==l.lang?t.formula(l.text,!0):t.code(l.text,l.lang,c);case"table":{let e,s,n,r="",i=[];s=[];for(let e=0;e<l.headers.length;e++)s.push(t.tablecell(tokenparser(l.headers[e],t,0).out,!0,l.align[e]));r=t.tablerow(s.join(""));for(let r=0;r<l.cells.length;r++){for(e=l.cells[r],s=[],n=0;n<e.length;n++)s.push(t.tablecell(tokenparser(e[n],t,0).out,!1,l.align[n]));i.push(t.tablerow(s.join("")))}return t.table(r,i.join(""))}case"blockquote_start":{let e="";for(;"blockquote_end"!==next().type;)e+=tok();return t.blockquote(e)}case"list_start":{let e="",s=l.ordered;for(;"list_end"!==next().type;)e+=tok();return t.list(e,s)}case"list_title_start":{let e="";for(;"list_title_end"!==next().type;)e+=tok();return t.listtitle(e)}case"list_item_start":{let e="",s=l.num;for(;"list_item_end"!==next().type;)e+="text"===l.type?parseText():tok();return t.listitem(e,s)}case"html":return t.html(l.text);case"paragraph":return t.paragraph(output(checklen(l.text)));case"text":return t.paragraph(parseText());default:console.log("missing",l.type)}},i=e.reverse(),a=!1,o={},c=[],p=[];for(;next();){let e=tok();if(n+=e.length,e&&p.push(e),s>0&&n>s)break}return{out:p.join(""),codes:c}};function __parselist(e,t){let s;function pb(n,l,r){if(s=n.exec(e),s){__parselist(e.slice(0,s.index),t);let n=s[1];return n.startsWith("\n")&&(t.push({class:"",text:"\n"}),n=n.slice(1)),t.push({class:l,text:r?r(n):n}),__parselist(e.slice(s.index+s[1].length),t),!0}return!1}e&&"string"==typeof e&&(pb(/^(:{3}\s*$[^]+?:{3}\s*$)/gim,"comment")||pb(/^(\s*`{3}[^]+?`{3}\s*$)/gim,"code")||pb(/^(\s*:\w+:.*)$/gim,"comment")||(e=e.replace(/ {2,}\n/gim," "),pb(/^(\s*#{1,6}\s+.*)/gim,"title")||pb(/(\n\s*\n)/gim,"break")||pb(/^(\s*>\s+[^]*?\n\n)/gim,"cite")||pb(/^(\s*>\s+.*)/gim,"cite")||pb(/^(.*?\|[^]*?\n\n)/gim,"table")||pb(/^( *\*| *-|-{1,8})[ $]/gim,"list")||pb(/^( ([\d]+[.]*)+)[ $]/gim,"list",(e=>{let t=e.split(".");t.shift();let s=[];for(let e of t)e.length&&s.push(" ");return s.push("-"),s.join("")}))||t.push({class:"",text:e})))}function parselist(e,t=""){let s=[];__parselist(e,s);let n=[],l=0;for(let e=0;e<s.length;e++){let r=s[e];if("list"==r.class){let i=r.text.replace("\n","").length;if(i>l)n.push({space:i,id:1}),l=i;else for(;;){let e=n[n.length-1];if(1==n.length||e.space<=i){l=e.space,e.id++;break}n.pop()}let a=[],o=[];for(let e of n)o.push(" "),a.push(e.id);o.pop(),r.old=r.text,r.text.indexOf("-")>=0?r.text=o.join("")+"- "+a.join(".")+".":r.text=o.join("")+"* ",a=[];for(let t=e+1;t<s.length&&""==s[t].class;t++)a.push(s[t].text);r.title=t,r.data=r.text+a.join("")}else""!=r.class&&("title"==r.class&&(t=r.text),n=[],l=0)}let r=[],i=[];for(let e of s)"list"==e.class&&i.push({title:e.title,lev:e.text,data:e.data}),r.push(e.text);return{txt:r.join(""),cards:i,tm:s}}function parserow$1(e,t,s=""){let n;function parse3(l,r){return n=l.exec(e),!!n&&(parserow$1(e.slice(0,n.index),t,s),t.push({class:`${s} ${r}`,text:n[1]}),parserow$1(n[2],t,`${s} ${r}`),t.push({class:`${s} ${r}`,text:n[3]}),parserow$1(e.slice(n.index+n[1].length+n[2].length+n[3].length),t,s),!0)}(function parse1(l,r){return n=l.exec(e),!!n&&(parserow$1(e.slice(0,n.index),t,s),t.push({class:`${s} ${r}`,text:n[1]}),parserow$1(e.slice(n.index+n[1].length),t,s),!0)})(/(`.*?`)/gim,"code2")||parse3(/(\*{3})([^]+?)(\*{3})/gim,"grassetto italico")||parse3(/(\*{2})([^]+?)(\*{2})/gim,"grassetto")||parse3(/(\*{1})([^]+?)(\*{1})/gim,"italico")||parse3(/(_{3})([^]+?)(_{3})/gim,"grassetto italico")||parse3(/(_{2})([^]+?)(_{2})/gim,"grassetto")||parse3(/(_{1})([^]+?)(_{1})/gim,"italico")||parse3(/(~{3})([^]+?)(~{3})/gim,"barrato")||parse3(/(~{2})([^]+?)(~{2})/gim,"tilde2")||parse3(/(~{1})([^]+?)(~{1})/gim,"tilde")||t.push({class:s,text:e})}function parseblock$1(e,t){let s;function pb(n,l,r=!1){return s=n.exec(e),!!s&&(parseblock$1(e.slice(0,s.index),t),r?parserow$1(s[1],t,l):t.push({class:l,text:s[1]}),parseblock$1(e.slice(s.index+s[1].length),t),!0)}if(!(pb(/^(:{3}[^]+?:{3})/gim,"comment")||pb(/^(\s*`{3}[^]+?`{3})/gim,"code")||pb(/^(\s*:\w+:.*)$/gim,"comment")||pb(/^(\s*#{1,6} +.*)$/gim,"title",!0)||pb(/^(\s*>\s+[^]*?\n\n)/gim,"cite",!0)||pb(/^(\s*>\s+.*)/gim,"cite",!0)||pb(/^(.*?\|.*\n[-: ]+\|[-| :]*\n.*?\|[^]*?\n\n)/gim,"tabella",!0)||pb(/^(\n{2,})/gim,"break",!0)||pb(/^( *\*| *-|-{1,8})[ $]/gim,"list",!0)||pb(/(^\s*[\d.]+)[\s$]/gim,"list",!0))){if(s=/(!*\[)(.*?)(\]\s*\()(.*?)(\))/.exec(e),s)return parserow$1(e.slice(0,s.index),t,""),t.push({class:"grassetto",text:s[1]}),t.push({class:"linkdes",text:s[2]}),t.push({class:"grassetto",text:s[3]}),t.push({class:"linkval",text:s[4]}),t.push({class:"grassetto",text:s[5]}),void parserow$1(e.slice(s.index+s[1].length+s[2].length+s[3].length+s[4].length+s[5].length),t,"");parserow$1(e,t,"")}}function parsetext(e){"number"==typeof e&&(e=String(e)),e&&"string"==typeof e||(e=" "),e.endsWith("\n")&&(e+=" ");let t=[];return parseblock$1(e,t),t}function parserow(e,t,s=""){let n;function parse1(l,r){return n=l.exec(e),!!n&&(parserow(e.slice(0,n.index),t,s),t.push({class:`${s} ${r}`,text:n[1]}),parserow(e.slice(n.index+n[1].length),t,s),!0)}parse1(/(\/\/.*)$/gim,"commento2")||function parse2(l,r){if(n=l.exec(e),n){let l=n.index+n[1].length;return parserow(e.slice(0,l),t,s),t.push({class:`${s} ${r}`,text:n[2]}),parserow(e.slice(l+n[2].length),t,s),!0}return!1}(/(#let.? +)([\w_.]+)/gi,"variabile")||parse1(/(#(select|setdef|ret|cases|endselect|ifdef|log|msg|endif|cvar|cache|look|lookb|elseifdef|variante|forvar|for|endfor|continue|break|inc|macro|default|lets|letv|lett|cat|func))/gim,"comando")||parse1(/(#(if\s*|elseif\s*))/gim,"comando")||parse1(/(#(else|let|i |m |f |t |j |case|def ))/gim,"comando")||parse1(/(\$[{(]?[\w_.]+)/gim,"variabile")||parse1(/({.+?\})/gim,"formula")||parse1(/([})(])/gim,"variabile")||parse1(/([\d.:,;\\,]+)/gim,"digit")||t.push({class:s,text:e})}function parseblock(e,t){let s;(function pb(n,l,r=!1){return s=n.exec(e),!!s&&(parseblock(e.slice(0,s.index),t),r?parserow(s[1],t,l):t.push({class:l,text:s[1]}),parseblock(e.slice(s.index+s[1].length),t),!0)})(/(\/\*[^]+?\*\/)/gim,"comment")||parserow(e,t,"")}function parserule(e){e||(e=" "),e.endsWith("\n")&&(e+=" ");let t=[];return parseblock(e,t),t}function formatrule(e){let t=e.split("\n"),s=[],n=0,l=0;const r=" ";for(let e=0;e<t.length;e++){let i=t[e].trim(),a=r.repeat(n>=0?n+l:l);l=0;let o="";i.split("//")[0].trim().endsWith("\\")&&(l=1),(i.startsWith("#")||i.startsWith("!"))&&(o=i.substring(1).split(" ")[0].toUpperCase(),i=i.substring(0,1)+o+i.substring(o.length+1)),"IF"==o||"IFDEF"==o||"IFNDEF"==o?i.indexOf("#",2)<0?n++:i=i.replace(/#([\w]+)/g,((e,t)=>"#"+t.toUpperCase())):["FOR","FORVAR","DO","SELECT"].includes(o)?n++:["ENDIF","LOOP","ENDFOR","ENDSELECT"].includes(o)&&(n--,a=r.repeat(n>=0?n:0)),["ELSEIF","ELSE","ELSEIFDEF","ELSEIFNDEF","CASE","CASES","DEFAULT"].includes(o)&&n>0?s.push(r.repeat(n-1)+i):s.push(a+i)}return s.join("\n")}function getcolonne(e){if((e=e+""||"").includes('"')){return e.split(/[,;](?=(?:(?:[^"]*["]){2})*[^"]*$)/).map((e=>e.trim().replace(/(^["'])|(["']$)/g,"").replace(/=\s*["']/g,"=")))}return e.split(/[,;]/).map((e=>e.trim()))}function formatvariante(e){let t=[],s=[];for(let n of e.split("\n")){let e=getcolonne(n);for(let t=0;t<e.length;t++){let n=e[t]||"";(n.includes(",")||n.includes(";"))&&(n=`"${n}"`,e[t]=n);let l=n.length;(!s[t]||s[t]<l)&&(s[t]=l)}t.push(getcolonne(n))}let n=[];for(let e of t){let t=[];for(let n=0;n<s.length;n++)t[n]=(e[n]||"").padEnd(s[n]);n.push(t.join(" , "))}return n.join("\n")}function markunoFormatCodeMirror(e){e.defineMode("markuno",(function(){return{startState:function(){return{inComment:!1}},token:function(e,t){return t.inComment?(e.skipTo("*/")?(e.next(),e.next(),t.inComment=!1):e.skipToEnd(),"comment"):e.match(/\/\/.*/)?"comment":e.sol()&&e.match(/^\s*\.[a-zA-Z0-9_]+(?=\s|$)/)?"def":t.expectMacroArg?e.eatSpace()?null:e.match(/^[^\s#,(){}]+/)?(t.expectMacroArg=!1,"builtin"):(e.next(),t.expectMacroArg=!1,null):e.sol()&&e.match(/^\s*#([mift])\b/i)?(t.expectMacroArg=!0,"def"):e.match("/*")?(e.skipTo("*/")?(e.next(),e.next()):t.inComment=!0,"comment"):e.match(/^\s*#(select|ret|cache|cvar|lookb|look|cases|endselect|log|msg|ifdef|ifndef|elseif|elseifndef|endif|elseifdef|variante|forvar|for|endfor|continue|break|inc|macro|default|lets|lett|cat|func|push|pop|letv|let|letm|lett|else)/i)||e.match(/^\s*#(if\s*|elseif\s*|j |case|def )/i)||e.match(/#(else|let|letv|lett|letm|cvar|cache|lookb|look)/i)?"keyword":!t.inCommand&&e.match(/^\s*#[\w_.]+/i)?"string":e.match(/^\s*![\w_.]+/i)?"builtin":e.match(/[<>!=+\-*/\\%]+/)?"operator":e.match(/\$\[[\w_.]+/)||e.match(/\$\{[\w_.]+/)||e.match(/\$\([\w_.]+/)||e.match(/\$[\w_.]+/)||e.match(/[}\])]/)?"string":e.match(/\{.+?\}/)?"variable-3":e.match(/[\d.:,;\\]+/)?"number":(e.next(),null)}}}))}function parsevars(e,t){let s=e;if(t)for(let e in t){let n=t[e]||`..${e}..`;s=s.replace(new RegExp(`\\[${e}\\]`,"gim"),n)}return s}const parseinfomd=(e,t,s)=>n.parse(e,t,s),mark=(e,t,s=!1,n=!1,l)=>{let r;if(n)r=tokenize(e,0,s);else{let{txt:t}=parselist(e);r=tokenize(t,0,s)}return tokenparser(r,new Render(t,!1,l))},markeasy=(e,t=400,s=!1)=>{let n=tokenize(e,t,s);return tokenparser(n,new Render,t).out};export{Render,n as aliasInfo,elang,escapeHTML,formatrule,formatvariante,mark,markeasy,markunoFormatCodeMirror,parseinfomd,parselist,parserule,parsetext,tokenparser as parsetokens,parsevars,tokenize,unescapeHTML};
|
package/bin/markuno.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function testsync(t,e){return t+e}const tk=()=>(new Date).valueOf();function seedarray(t,e){if(t&&t.length){let a=[];for(let e=0;e<t.length;e++){let s=t[e];if(s.p)for(let t=0;t<s.p;t++)a.push(e);else a.push(e)}return t[a[seeder(a.length,e)]]}}function seeder(t,e="seed42"){const a=function mulberry32(t){return function(){t=(t|=0)+1831565813|0;let e=Math.imul(t^t>>>15,1|t);return e=e+Math.imul(e^e>>>7,61|e)^e,((e^e>>>14)>>>0)/4294967296}}(function xmur3(t){let e=1779033703^t.length;for(let a=0;a<t.length;a++)e=Math.imul(e^t.charCodeAt(a),3432918353),e=e<<13|e>>>19;return function(){return e=Math.imul(e^e>>>16,2246822507),e=Math.imul(e^e>>>13,3266489909),(e^=e>>>16)>>>0}}(String(e))());return Math.floor(a()*t)}function isJsonStr(t){if("string"!=typeof t)return!1;const e=t.trim();return e.startsWith("{")&&e.endsWith("}")||e.startsWith("[")&&e.endsWith("]")}const isObject=t=>!(!t||!Array.isArray(t)&&"object"!=typeof t);function quote(t){if((t=(t||"").trim()).length>1){if(t.startsWith('"')&&t.endsWith('"'))return t;if(t.startsWith("(")&&t.endsWith(")"))return t}return`"${t}"`}function noquote(t){return(t=t.trim()).startsWith('"')&&t.endsWith('"')||t.startsWith("(")&&t.endsWith(")")?t.slice(1,-1):t}function hash(t){let e="";if("string"==typeof t||"number"==typeof t)e=t+"";else if("object"==typeof t&&t){const a=Object.keys(t).sort(),s="\0";e=a.map((e=>`${e}${s}${String(t[e])}`)).join(s)}let a=2166136261,s=2218511855;for(let t=0;t<e.length;t++){const i=e.charCodeAt(t);a^=i,a+=a<<5^2779096485,s^=a,s=((s<<3)+i^2134516169)>>>0}return a>>>=0,a.toString(16)+s.toString(16)}function geterrdes(t){if(t&&"object"==typeof t){let e=t.stack?.toString().replace(/^.*?node_modules.*$/gim,"")||t.message||"";e=e.replaceAll("/","_").replaceAll(".js","").replaceAll("\n\n","\n").replace(/;\s+/gi,"\n"),t=e}return(t=t.replace(/sqlite/gi,"SQL ")).replaceAll(";",",").trim()}let t,e,a,s,i,r;const logga=(...t)=>{r?r(t):console.log(...t)};function setcallbacks(n,o,c,l,u,h){e=n,t=o,a=c,s=l,i=u,r=h}const xdt=()=>(new Date).valueOf();function clean(t,e=!1){return e?(t||"").trim().toLowerCase():(t||"").trim()}function getcouple(t,e="=",a=!0){const s=(t=t||"").indexOf(e);return s>=0?{v:clean(t.substring(0,s),a),o:t.substring(s+e.length).trim(),fl:!0}:{v:clean(t,a),o:"",fl:!1}}function checkmu(t,e){if((t=(t||"").trim()).indexOf("/")>0){const a=t.split("/");e=a[0]||"",t=a[1]||""}if(!e)throw new Error("manca il catalogo per "+t);return{name:t,cat:e=checkname(e)}}function checkname(t,e=!1){if(t=(t||"").trim(),e&&!t)return"";if(!t||!/^[a-zA-Z_][a-z0-9A-Z_+-]*$/gim.test(t))throw new Error(`nome non valido: "${t}" \n deve contenere solo lettere, _, -, e numeri`);return t.toLowerCase()}function getcolonne(t,e=!1){t=String(t||"");const a=/^(\d*)\.\.(\d*)$/.exec(t);if(a){let t=parseInt(a[1])||0,e=parseInt(a[2])||0;const s=[];for(let a=t;a<=e;a++)s.push(a+"");return s}if(!/["({[]/.test(t))return t.split(/[,;]/).map((t=>t.trim()));const s=[];let i="",r=0,n=!1;for(let e=0;e<t.length;e++){const a=t[e];if(0===r&&'"'===a&&(0!==e&&"\\"===t[e-1]||(n=!n)),n||("("===a||"["===a||"{"===a?r++:")"!==a&&"]"!==a&&"}"!==a||(r=Math.max(0,r-1))),","!==a&&";"!==a||0!==r||n)i+=a;else{const t=i.trim();s.push(t),i=""}}const o=i.trim();return o&&s.push(o),s.map((t=>(t=t.trim(),!e&&(t.startsWith('"')&&t.endsWith('"')||t.startsWith("(")&&t.endsWith(")"))?t.slice(1,-1):t)))}const parsevar=(t,e,a,s,i=!1)=>{const r=["[","(","{"],n=["]",")","}"];s||(s="["==a?"]":"("==a?")":"}");const o=r.includes(a);let c=1,l=0;const u=[];for(let h=e;h<t.length;h++)if(o&&r.includes(t[h])||t[h]==a)c++;else if(o&&n.includes(t[h])||t[h]==s){if(c--,0==c&&t[h]==s)return u[l]=t.substring(e,h),{i:h,res:u}}else if(":"==t[h])1==c&&(u[l]=t.substring(e,h),e=h+1,l++);else if("\n"==t[h]&&i)return{i:h,res:u};return{i:-1,res:t.substring(e)}};function setOggetto(t,e){"object"==typeof t&&"object"==typeof e&&Object.keys(e).forEach((a=>{Object.hasOwn(t,a)&&"function"!=typeof t[a]&&(t[a]=e[a])}))}function getOggetto(t,e=[]){if(Array.isArray(t))return t.map((t=>getOggetto(t,e)));if(t&&"object"==typeof t){const a={};for(const[s,i]of Object.entries(t))"function"==typeof i||e&&e.includes(s)||(a[s]=getOggetto(i,e));return a}return t}function fromjson(t,e){if(Array.isArray(t))return t;if("string"!=typeof t)return t;if(""==t)return e||{};try{return JSON.parse(t)}catch(a){return logga(`Errore parsing JSON: ${a}\n${t}`),e||{}}}const n=new class Errori{constructor(){this.azzera()}azzera(){this.err=[]}add(t,e){this.err.push({msg:t,row:e})}get(){return this.err}get length(){return this.err.length}toString(){const t=[];for(const e of this.err){const a="object"==typeof e.msg?JSON.stringify(e.msg):e.msg||"";t.push(`${e.row?e.row+":":""}${a}`)}return t.join("\n")}},round=(t,e=-1)=>{const a="string"==typeof t?parseFloat(t)||0:t;if(e<0)return Math.round(a||0);const s=Math.pow(10,e);return Math.round(a*s)/s||0};function getheaddims(t){let e;try{e="object"==typeof t&&t?t:JSON.parse(t||"{}")}catch(t){e={}}return e||(e={}),e.l||(e.l={visible:1,val:1e3,min:0,max:1e4}),e.a||(e.a={visible:1,val:1e3,min:0,max:1e4}),e.p||(e.p={visible:1,val:1e3,min:0,max:1e4}),e}function sortrows(t){const e=Object.keys(t).sort(),a={};for(let s=0;s<e.length;s++){const i=e[s],r=t[i];s+1<e.length&&e[s+1].startsWith(i+".")?r.hasliv=1:delete r.hasliv,a[i]=r}return a}const o=/(?<!\w)\(/g,c=/^-?[0-9.]+$/,l=/^(\w+)(!)?\[(.*)?\]$/,u=/[0-9.]/,h=/[+\-*/^%]/,f=/[a-zA-Z]/i;function valutaparentesi(t){for(t=(t+"").trim();;){const e=o.exec(t);if(!e)break;{const{i:a,res:s}=parsevar(t,e.index+1,"(",")");if(a<=0)break;t=t.substring(0,e.index)+valutaparentesi(s[0])+(a>=0?t.substring(a+1):"")}}return function operatoricomparazione(t){let e,a;const s={"||":()=>valutaparentesi(e)||valutaparentesi(a)?1:0,"|":()=>valutaparentesi(e)||valutaparentesi(a)?1:0,"&&":()=>valutaparentesi(e)&&valutaparentesi(a)?1:0,"&":()=>valutaparentesi(e)&&valutaparentesi(a)?1:0,"<<=":()=>clean(e)<=clean(a),">>=":()=>clean(e)>=clean(a),"===":()=>clean(e)==clean(a),"==":()=>clean(e)==clean(a),"!!":()=>clean(e)!=clean(a),"<<":()=>clean(e)<clean(a),">>":()=>clean(e)>clean(a),"<=":()=>muCalcbase(e)<=muCalcbase(a),">=":()=>muCalcbase(e)>=muCalcbase(a),"<":()=>muCalcbase(e)<muCalcbase(a),">":()=>muCalcbase(e)>muCalcbase(a),"=":()=>muCalcbase(e)==muCalcbase(a),"!":()=>muCalcbase(e)!=muCalcbase(a)};let i=-1,r="";for(const e in s)if(i=t.indexOf(e),i>=0){r=e;break}return-1!==i?(e=t.slice(0,i),a=t.slice(i+r.length),s[r]&&s[r]()?1:0):muCalcbase(t)}(t=function valutainsiemi(t){if(t.includes("[")){function resinisiemi(t){const e=t[1],a=!!t[2],s=getcolonne(t[3]);for(const t of s)if(t==e)return a?"0":"1";return a?"1":"0"}for(;;){const e=l.exec(t);if(!e)break;{const a=resinisiemi(e);t=t.substring(0,e.index)+a+t.substring(e.index+e[0].length)}}}return t}(t))}const d={sqrt:t=>Math.sqrt(t),sqr:t=>Math.sqrt(t),pow:(t,e)=>Math.pow(t,e),int:t=>Math.floor(t),floor:(t,e=0)=>Math.floor((Number.parseFloat(t)||0)*10**e)/10**e,round:(t,e=0)=>Math.round((Number.parseFloat(t)||0)*10**e)/10**e,dec:(t,e=0)=>Math.floor((Number.parseFloat(t)||0)*10**e)/10**e,abs:t=>Math.abs(t),sin:t=>Math.sin(t*Math.PI/180),cos:t=>Math.cos(t*Math.PI/180),tan:t=>Math.tan(t*Math.PI/180),asin:t=>180*Math.asin(t)/Math.PI,acos:t=>180*Math.acos(t)/Math.PI,atan:t=>180*Math.atan(t)/Math.PI,atan2:(t,e)=>180*Math.atan2(t,e)/Math.PI,seeder:(t,e)=>seeder(t,e),log:t=>Math.log(t),log10:t=>Math.log10(t),min:(...t)=>Math.min(...t),max:(...t)=>Math.max(...t),clamp:(t,e,a)=>Math.max(e,Math.min(a,t)),rnd:(t,e)=>t?e?Math.floor(Math.random()*(e-t+1))+t:Math.floor(Math.random()*t):Math.random(),cas:(t,e)=>Math.floor(Math.random()*(e-t+1))+t};function muCalcbase(t){let e=0;function parseOperator(){const a=t[e];return h.test(a)?(e++,a):null}function parsePrimary(){if("+"===t[e]||"-"===t[e]){return("-"===t[e++]?-1:1)*parsePrimary()}if(u.test(t[e]))return function parseNumber(){const a=e;for(;e<t.length&&u.test(t[e]);)e++;return Number(t.slice(a,e))}();if("("===t[e]){e++;const a=parseExpr();return")"===t[e]&&e++,a}return f.test(t[e])?function parseFunctions(){const a=t.slice(e);if(!a)return 0;for(const[s,i]of Object.entries(d)){const r=new RegExp(`^(${s})\\(`,"i").exec(a);if(r){e+=r[0].length;let a=[];for(;;){let s=parseExpr();if(a.push(s),")"===t[e]){e++;break}if(","!=t[e])break;e++}return i(...a)}}return e++,parseExpr()}():0}function parseFactor(){let a=parsePrimary();for(;e<t.length&&/[/*^%]/.test(t[e]);){const t=parseOperator(),e=parsePrimary();"*"===t?a*=e:"/"===t?a=e?a/e:0:"%"===t?a=e?a%e:0:"^"===t&&(a=Math.pow(a,e))}return a}function parseExpr(){let a=parseFactor();for(;e<t.length&&/[+-]/.test(t[e]);){const t=parseOperator(),e=parseFactor();"+"===t?a+=e:"-"===t&&(a-=e)}return a}return t=t.replace(/\s/g,""),parseExpr()}function muCalc(t){if(!t)return 0;if("number"==typeof t)return t||0;if("string"!=typeof t)return 0;const e=t.replaceAll(",",".");return c.test(e)?Number(e)||0:valutaparentesi(t)||0}const tonum=(t,e=-1)=>{if(!t)return 0;let a=0;if("number"==typeof t)a=t||0;else if("string"==typeof t){const e=(t=t.replaceAll(",",".")).match(/^-?[0-9.]+$/);a=e&&e.length>0?Number(e[0])||0:muCalc(t)}if(e>=0)switch(e){case 0:a=Math.round(a);break;case 1:a=Math.round(10*a)/10;break;case 2:a=Math.round(100*a)/100;break;case 3:a=Math.round(1e3*a)/1e3;break;case 4:a=Math.round(1e4*a)/1e4;break;case 5:a=Math.round(1e5*a)/1e5;break;case 6:a=Math.round(1e6*a)/1e6}return a||0},m=100;function valutavar(t,e){const a=e[0]||"";if(!a)return"";if(t.counter>=m)return a;const s=valuta0(t,a);let i;if(t.stl[s])i=`-- R:${s} --`;else{const e=t.var(s);if(isObject(e))return e;t.stl[s]=!0,i=valutabase(t,e),delete t.stl[s]}if(t.counter>=m)return a;if(e[1]){let a=getcolonne(i);if("l"==e[1])return String(a.length);const s=valuta0(t,e[1]);let r;if(/^[\d.]+$/.test(s)){let t=s.split(".").map((t=>parseInt(t)));for(let e=0;e<t.length-1;e++){let s=t[e];if(!(s>=0&&s<a.length))return"";a=getcolonne(a[s])}r=t[t.length-1]}else r=muCalc(s);if(!(r>=0&&r<a.length))return"";for(i=valuta0(t,a[r]);;){let e=i.indexOf("$[");if(e<0)break;const{i:a}=parsevar(i,e+2,"[","]");if(a<e)break;let s=i.slice(e+2,a);i=i.substring(0,e)+valutaquadra(t,s)+i.substring(a+1)}}if(e[2]){const a=muCalc(valuta0(t,e[2]));if(a){let s=0;return e[3]&&(s=muCalc(valuta0(t,e[3]))),a<0?i.slice(a):s?i.substring(a-1,a+s-1):i.substring(a-1)}}return i}function valutaquadra(t,e){let a=getcolonne(e||"");const s=clean(a[0]);function replacecharcode(t){return"\\t"==t?"\t":"\\n"==t?"\n":(t||"").replace(/&(\d+)/g,((t,e)=>String.fromCharCode(parseInt(e))))}switch(s){case"set":{const e=valuta0(t,a[1]||""),s=valuta0(t,a[2]||"");t.add(e,t.var(s))}break;case"ex":{const e=valuta0(t,a[1]||"");let s=valuta0(t,a[2]||"");s||(s=",");const i=muCalc(valuta0(t,a[3]||"")),r=e.split(s);return i>0&&r[i-1]||""}case"ex2":{const e=replacecharcode(a[1]||""),s=muCalc(valuta0(t,a[2]||""));a.splice(0,3);return a.join(";").split(e)[s>0?s-1:0]||""}case"replace":return a[1].replace(new RegExp(a[2]||"x","gim"),(a[3]||"").trim());case"replace2":case"rp2":try{let t=replacecharcode(a[1]||"x");const e=replacecharcode(a[2]||"").trim();a.splice(0,3),t=t.replace(/&(\d+)/g,((t,e)=>`\\u${parseInt(e).toString(16).padStart(4,"0")}`));return a.join(";").replace(new RegExp(t,"im"),e)}catch(t){return""}case"look":case"lookb":{const t=parseFloat(a[1]||"");if(a=a.slice(2).map((t=>parseFloat(t)||0)),"lookb"==s){const e=a.filter((e=>e<=t));return e.length?Math.max(...e):t}{const e=a.filter((e=>e>=t));return e.length?Math.min(...e):t}}case"tk":{let e=muCalc(valuta0(t,a[1]||""))||0;if(!e){e=muCalc(valuta0(t,a[2]||""));const s=a[1]||"";return e?a[3].split(s)[e-1]:""}return a[e>0?e+1:2]||""}case"totab":return a.splice(0,1),a.join("\t");case"tosep":{const t=replacecharcode(a[1]||"")||";";return a.splice(0,2),a.join(t)}case"len":{let t;return a.length>2?(a.shift(),t=a.join(";")):t=a[1]||"",t.length}case"mid":{const e=valuta0(t,a[1]||""),s=muCalc(valuta0(t,a[2]||"")),i=muCalc(valuta0(t,a[3]||""));return e.substring(s-1,s+i-1)}case"arrotonda":{const t=muCalc(a[1]);let e=1;return["0","1","2","3","4","5","6"].includes(a[2])?e=Math.pow(10,parseInt(a[2])):(e=muCalc(a[2]),0==e&&(e=1e3)),Math.round(t*e)/e}case"iif":return muCalc(valuta0(t,a[1]))?a[2]||1:a[3]||0;case"instr":case"instr2a":{const t=a[1]||"",e=a[2]||"";return t.toLowerCase().indexOf(e.toLowerCase())+1}case"instr2":{const t=a[1]||"";return a.splice(0,2),a.join(";").toLowerCase().indexOf(t.toLowerCase())+1}default:return s.startsWith(".")?{fun:e,pars:[]}:{fun:s,pars:a}}}function valuta0(t,e){if(e+="",t.counter>=m)return e;for(;;){const a=/\$([{(])/im.exec(e);if(!a)break;{const s=a.index,{i:i,res:r}="("==a[1]?parsevar(e,s+2,"(",")"):parsevar(e,s+2,"{","}");let n=valutavar(t,r);if(isObject(n))return n;e=valuta0(t,e.substring(0,s))+n+(i>=0?valuta0(t,e.substring(i+1)):"")}}return e=(e=e.replace(/\$([a-z|][\w|.]*)/gi,((e,a)=>{let s="";for(;a.length;){let e;if(t.stl[a]?e=`--R: ${a} --`:(t.stl[a]=!0,e=valutabase(t,t.var(a)),delete t.stl[a]),e||!(a.length>1)){s=e+s;break}s=a.slice(-1)+s,a=a.substring(0,a.length-1)}return s}))).replace(/\$(\d+):(\d+)(:(\d+))?/g,((t,e,a,s,i)=>{i=i?+i:1;const r=[];for(let t=+e;t<=+a;t+=i)r.push(t.toString());return r.join(";")}))}function valutabase(t,e){return e&&(t.counter++,t.counter<=m&&(e=valuta0(t,e)),t.counter--),e}class Variabile{constructor(){this.stl={},this.dictionary={},this.vec=[],this.counter=0,this.fndotcallback=void 0}static isValidKey(t){return/^[\w][\w\d.[\]]*$/.test(t)}static sanitizeKey(t){return t.replace(/[^a-zA-Z0-9_.[\]]/g,"_")}setfndot(t){this.fndotcallback=t}push(){this.vec.push({saves:[],dic:{...this.dictionary}})}pop(){if(this.vec.length>0){let t=this.vec.pop(),e={};if(t.saves&&t.saves.length)for(let a of t.saves)e[a]=this.dictionary[a];if(this.dictionary=t.dic,t.saves&&t.saves.length)for(let a of t.saves)this.dictionary[a]=e[a]}}savevars(t){if(!this.vec.length>0)return;let e=this.vec[this.vec.length-1];e.saves||(e.saves=[]);let a=t.split(",");for(let t of a){const a=Variabile.sanitizeKey(t);a&&!e.saves.includes(a)&&e.saves.push(a)}}clear(){this.vec=[],this.dictionary={}}azzera=()=>this.clear();var(t){let e="";const a=/^(\d*)\.\.(\d*)$/.exec(t);if(a){let t=parseInt(a[1])||0,e=parseInt(a[2])||0;const s=[];for(let a=t;a<=e;a++)s.push(a+"");return s}if(t.indexOf("|")>=0){const a=t.split("|");t=a[0],e=a[1]}function toformat(t,e){switch(e.trim().toLowerCase()){case"0":return String(parseInt(t)||0);case"-":return String((parseInt(t)||1)-1);case"+":return String((parseInt(t)||0)+1);case"data":return a=parseFloat(t)||0,new Intl.DateTimeFormat("it",{day:"2-digit",month:"short",year:"2-digit"}).format(a.toDate());case"euro":return((t,e="")=>{if(t){let e=Intl.NumberFormat("en",{style:"currency",currency:"EUR"}).format(t);return e=e.replace(/€/g,"").replace(/\./g,";").replace(/,/g,".").replace(/;/g,",")+"€",e}return e})(parseFloat(t));case"num":return tonum(parseFloat(t));case"n":case"n0":case"n1":case"n2":case"n3":case"n4":{const a=parseInt(e.slice(1))||0;return tonum(parseFloat(t),a)}case"u":return String(t).toUpperCase();case"l":return String(t).toLowerCase();default:return t}var a}const s=Variabile.sanitizeKey(t);if(s.startsWith(".")&&this.fndotcallback){const t=this.fndotcallback(s.toLowerCase());if(t)return toformat(t,e)}if(Variabile.isValidKey(s)){const t=s.toLowerCase(),a=/^([\w][\w\d]*)([.[])/.exec(t);if(a){const s=this.dictionary[a[1]];if(s&&"object"==typeof s)return toformat(function objval(t,e){const a=e.split(".");let s=t;for(let t=0;t<a.length;t++){const e=a[t],i=e.match(/(.*?)\[(\d*)\]/);if(i){if(i[1]&&(s=s[i[1]]),void 0===s)return"";s=s[parseInt(i[2],10)||0]}else switch(e){case"_k":s=(Object.keys(s)||[]).join(",");break;case"_v":s=Object.values(s)||[];break;case"_l":s=s.length||0;break;default:s=s[e]}if(void 0===s)return""}return"number"==typeof s?s+"":s}(s,("["==a[2]?a[2]:"")+t.substring(a[0].length)),e)}return toformat(this.dictionary[t]||"",e)}return""}getvar(t){return this.var(t)}colonna(t,e){return getcolonne[e]||t}dump(t=!1){let e=[];for(const t in this.dictionary)e.push({cod:t,val:this.dictionary[t]});return e=e.sort(((t,e)=>t.cod>e.cod)),t?e.map((t=>`${t.cod} = ${isObject(t.val)?JSON.stringify(t.val,null,2):t.val}`)):e}add(t,e){if(t)if("number"==typeof e&&(e=String(e)),t.includes("*")){const a=Variabile.sanitizeKey(t.split("*")[0]);if(Variabile.isValidKey(a)){const t=a.toLowerCase();let s=Object.keys(this.dictionary).filter((e=>e.startsWith(t)));for(let t of s)e?this.dictionary[t]=e:delete this.dictionary[t]}}else{const a=Variabile.sanitizeKey(t);if(Variabile.isValidKey(a)){const t=a.toLowerCase();0===e||e?this.dictionary[t]=e:delete this.dictionary[t]}else logga(`Invalid key: ${t}=${e}`)}}removeallvars(t){if(Array.isArray(t)){let e=Object.keys(this.dictionary);for(let a of e)t.includes(a)||delete this.dictionary[a]}else this.dictionary={}}valutasync(t){return valutabase(this,t)}async valuta(t,e){this.stl={};let a=await async function valutafunc(t,e,a){if(e){for(let s=0;s<20;s++){const s=e.lastIndexOf("$[");if(!(s>=0)){e=valutabase(t,e);break}{const{i:i,res:r}=parsevar(e,s+2,"[","]"),n=valutabase(t,e.substring(0,s)),o=r?r[0].startsWith(".")?valutabase(t,r.join(":")):valutabase(t,r[0]):"",c=i>=0?valutabase(t,e.substring(i+1)):"";let l=valutaquadra(t,o);if("object"==typeof l&&(l=a?await a(l?.fun,l.pars):`** fun: ${l.fun} ** `),isObject(l))return l;e=n+l+c}}return e}return""}(this,t,e);return isObject(a)||(a=(t=>{for(;;){const e=t.indexOf("{");if(!(e>=0))break;{const{i:a,res:s}=parsevar(t,e+1,"{","}");if(a<0)return t;t=t.substring(0,e)+muCalc(s[0])+(a>=0?t.substring(a+1):"")}}return t})(a)),a}async parametrokeyval(t){if("string"!=typeof t)return{};if(!(t=t.trim()))return{};let e,a,s,i=!1;return t.startsWith("#")&&(i=!0,t=t.slice(1)),s=t.indexOf("="),s>0?(e=clean(t.slice(0,s)),a=t.slice(s+1)):(s=t.indexOf(":"),s>0?(e=clean(t.slice(0,s)),a=t.slice(s+1),a=this.var(a)):(e=clean(t),a=this.var(e))),a&&"string"==typeof a&&a.includes("$")&&(a=await this.valuta(a)),["l","a","p"].includes(e)&&(i=!0),i&&(a=muCalc(a)),{k:e,v:a}}}class CodiceBarra{constructor(){this.barre={}}azzera(){this.barre={}}oriented(t,e,a,s){switch(t=(t||"1").substr(0,1).toLowerCase()){case"0":break;case"l":return{t:"l",x:e};case"a":return{t:"a",x:a};case"p":return{t:"p",x:s};case"2":return{t:t,x:e,y:s,z:a};case"5":return{t:t,x:e,y:a,z:s};case"4":return{t:t,x:s,y:e,z:a};case"3":return{t:t,x:a,y:s,z:e};case"6":return{t:t,x:s,y:a,z:e};default:return{t:"1",x:a,y:e,z:s}}}async getcode(t,e,a,s,i){let[r,n]=t.split(":");n=n||"";const getcode0=async(t,r)=>{let n=this.barre[t];if(!n&&i&&(n=await i(t),n||(n={t:"1",r:[]}),this.barre[t]=n,n.coderr&&"errore"!=n.coderr||(n.coderr=`#err_${t}`)),!n||0==n.r.length)return{extra:{err:"missing codicebarra"},c:`#err_${t}`,fm:10};const{t:o,x:c,y:l,z:u}=this.oriented(t,e,a,s),h={barra:t,fm:n.fm,t:o,liv:r,items:n.r.length,err:""};let f=n.r;if(u){const t=f.filter((t=>t.z===u||!t.z));t.length>0?f=t:h.err=`spessore non coerente: ${u}`}if("l"==o||"a"==o||"p"==o){const t=f.find((t=>t.x>=c));if(t)return{c:t.c,fm:t.x==c?0:1,x1:t.x,x:c,extra:h}}else{let t=f.find((t=>t.x==c&&t.y==l));if(t)return{c:t.c,fm:0,x:c,y:l,z:u,x1:t.x,y1:t.y,z1:t.z,extra:h};if(0!=n.fm&&(t=f.find((t=>t.x>=c&&t.y==l)),t))return{c:t.c,fm:1,x:c,y:l,z:u,x1:t.x,y1:t.y,z1:t.z,extra:h};if(0!=n.fm&&2!=n.fm&&(t=f.find((t=>t.x>=c&&t.y>=l)),t))return{c:t.c,fm:2,x:c,y:l,z:u,x1:t.x,y1:t.y,z1:t.z,extra:h}}return n.codalt&&r<5?await getcode0(n.codalt,r+1):{c:n.coderr,fm:9,x:c,y:l,z:u,extra:h}};return await getcode0(r,0)}compila(t,e){e||(e={});const a={};if(Array.isArray(t)){for(const s of t)if(s.cod=clean(s.cod),s.barcode=clean(s.barcode),s.barcode.length>2&&"+"==s.barcode[0]){s.barcode=s.barcode.substr(1);const t=this.oriented(s.barcode.substr(0,1),s.l,s.a,s.p);t.c=s.modello?{c:s.cod,m:s.modello}:s.cod,a[s.barcode]||(a[s.barcode]={t:s.barcode.substr(0,1),r:[]},e[s.barcode]&&(a[s.barcode]=Object.assign(e[s.barcode],a[s.barcode]))),a[s.barcode].r.push(t)}for(const t in a){a[t].r.sort(((t,e)=>t.y?1e4*(t.x-e.x)+(t.y-e.y):t.x-e.x))}}this.barre=a}}const p="IFDEF|IFNDEF|SETDEF|CZERO|CACHE|RET|CVAR|LOOK|LOOKB|SELECT|CASES|CASE|LOG|MSG|DEFAULT|ELSEIFDEF|ELSEIFNDEF|ELSEIF|ELSE|ENDIF|ENDSELECT|PUSH|POP|FUNC|MACRO|LETS|LETO|LETM|LETT|LETV|LETM|LET|DEF|DO|VARIANTE|FORVAR|FOR|LOOP|ENDFOR|BREAK|EXIT|EXITFOR|CONTINUE|IF|INC|I|F|M|J|:P".split("|");function toCadPars(t){const e=muClComments(t),a=[];for(const t of e){const e=t.includes("(")||t.includes("[")?[t]:getcolonne(t,!0);let s=!1;for(const t of e)!t.startsWith('"')&&t.includes("=")?(a.push(t),s=!0):s&&(a[a.length-1]+=","+t)}const s={};for(const t of a){let{v:e,o:a}=getcouple(t,"=",!1);a=a||"",e&&(/^[-+]?\d*\.?\d+$/.test(a)&&(a=parseFloat(a)),s[e]=a)}return s}function muClComments(t,e){const a=(s=t,s.replace(/("(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*')|\/\*[\s\S]*?\*\//g,((t,e)=>e||""))).split(/\r?\n/);var s;const i=[];let r="";for(const t of a){let a=t;if(/(^|[^:])\/\/.*/.test(a)&&(a=a.replace(/(^|[^:])\/\/.*/,((t,e)=>e.trim()))),a=a.trim(),0!==a.length||e)if(r.length>0&&(a=r+" "+a,r=""),a.endsWith("\\")){a=a.slice(0,-1);const t=a.lastIndexOf("//");-1!==t&&(a=a.slice(0,t).trim()),r=a}else i.push(a)}return i}function muClean(t,e=!1){if(!Array.isArray(t))return void n.add("muClean: expected array!");const a=[];function addgen(t){if(a.length>0&&""==a[a.length-1].tipo){const s=a[a.length-1];e||!(!t.startsWith("!")&!t.startsWith("."))||t.startsWith("$")||t.startsWith("{")||t.startsWith("#")||s.contenuto.startsWith("!")||s.contenuto.startsWith(".")||s.contenuto.startsWith("$")||s.contenuto.startsWith("{")||s.contenuto.startsWith("#")?a.push({tipo:"",contenuto:t}):s.contenuto=s.contenuto+"\n"+t}else a.push({tipo:"",contenuto:t})}for(const e of t){const t=e.match(/^#([\w.]+)\s*(.*)$/);if(t){let s=t[1].toUpperCase().trim(),i="";if(s.includes(".")){const t=s.split(".");s=t[0],i=t[1]}if(p.includes(s)){const e=t[2];if("IF"!==s&&"IFDEF"!=s&&"IFNDEF"!=s||!e.includes("#")){const e={tipo:s,contenuto:t[2]};i&&(e.tipo2=i),a.push(e)}else{let i=e.match(/^(.*?)\s*#\s*(\w+)\s*(.*?)\s*#\s*(\w+)\s*(.*)$/);i?(a.push({tipo:s,contenuto:i[1].trim()}),a.push({tipo:i[2].toUpperCase(),contenuto:i[3]}),a.push({tipo:"ELSE",contenuto:""}),a.push({tipo:i[4].toUpperCase(),contenuto:i[5]}),a.push({tipo:"ENDIF",contenuto:""})):(i=e.match(/^(.*?)\s*#\s*(\w+)\s*(.*)$/),i?(a.push({tipo:s,contenuto:i[1].trim()}),a.push({tipo:i[2].toUpperCase(),contenuto:i[3]}),a.push({tipo:"ENDIF",contenuto:""})):a.push({tipo:t[1].toUpperCase(),contenuto:t[2]}))}}else addgen(e)}else addgen(e)}let s=0,i=0,r=0,o=[],c=[],l=[];for(let t=0;t<a.length;t++){const e=a[t];switch(e.i=t,e.tipo){case"FOR":case"FORVAR":case"VARIANTE":case"DO":i++,c[i]={pos:t,bk:[]};break;case"LOOP":case"ENDFOR":if(i>0){const{pos:s}=c[i];for(const e of c[i].bk)e.next=t,e.prev=s;e.prev=s,a[s].next=t,i--}break;case"BREAK":case"EXIT":case"EXITFOR":case"CONTINUE":i>0&&c[i].bk.push(e);break;case"IF":case"IFDEF":case"IFNDEF":s++,o[s]={pos:t,bk:[e]};break;case"SELECT":r++,l[r]={pos:t,bk:[e],first:t};break;case"ELSEIF":case"ELSEIFDEF":case"ELSEIFNDEF":case"ELSE":if(s>0){const{pos:i}=o[s];o[s].bk.push(e),a[i].next=t,o[s].pos=t}break;case"CASE":case"CASES":case"DEFAULT":if(r>0){const{pos:s,first:i}=l[r];l[r].bk.push(e),a[s].next=t,e.first=i,l[r].pos=t}break;case"ENDIF":if(s>0){const{pos:e,next:i}=o[s];a[e].next=t;for(const e of o[s].bk)e.last=t;s--}break;case"ENDSELECT":if(r>0){const{pos:e,next:s}=l[r];a[e].next=t;for(const e of l[r].bk)e.last=t;r--}}}return a}function muLimits(t){const e=muClComments(t),a=[];let s;const parsa=t=>t?[...new Set(t.split(",").map((t=>t.trim())).sort().filter((t=>t)))]:void 0;for(const t of e){let e=/^\s*\{(.*)?\}/im.exec(t);if(e)"limit"==clean(e[1])?(s={},a.push(s)):s=void 0;else if(s&&(e=/^\s*:(\w+)\s*(.*)/.exec(t),e))switch(e[1].toLowerCase()){case"opz":case"o":s.opz=parsa(e[2]);break;case"obs":case"obsolete":s.obsolete=parsa(e[2]);break;case"scons":case"sconsigliate":s.scons=parsa(e[2]);break;case"neutri":s.neutri=parsa(e[2]);break;case"art":s.art=parsa(e[2]);break;case"mod":s.mod=parsa(e[2]);break;default:logga("missing:",e[1])}}return a}function parselimitifromdb(t){let e,a=[];if(t&&t.length)for(const s of t){e={},s.varfilter=fromjson(s.varfilter,[]),s.result=fromjson(s.result,[]),s.result2=fromjson(s.result2,[]),s.exclude=parseInt(s.exclude)?1:0,s.exclude2=parseInt(s.exclude2)?1:0;const{item:i,model:r,rule:n,varfilter:o,result:c,result2:l,exclude:u,exclude2:h,datai:f,dataf:d}=s;function remap(t){let e=t.map((t=>clean("string"==typeof t?t:t.Value,!0)));return{k1:e.filter((t=>t&&!t.includes("*"))),k2:e.filter((t=>t&&t.includes("*"))).map((t=>t.split("*")[0]))}}if(e.id=s.id,c.length||l.length){if(c.length)if(u){let m=remap(c);e.ex=m.k1,e.ex2=m.k2}else{let p=remap(c);e.valid=p.k1,e.v2=p.k2}if(i&&(e.i=clean(i).split(";")),r&&(e.m=clean(r).split(";")),n&&(e.r=clean(n).split(";")),(f||d)&&f<d&&(e.datai=parseInt(f),e.dataf=parseInt(d)),o&&o.length){e.v=[];for(const v of o){let g=e.v.find((t=>t.v==clean(v.Variant)));g||(g={v:clean(v.Variant),o:[]},e.v.push(g)),g.o=[...g.o,...clean(v.Value).split(";")],g.o=[...new Set(g.o.filter((t=>t)))]}}setlevelimite(e),a.push(e)}}return a=a.sort(((t,e)=>e.l-t.l)),a}function setlevelimite(t){let e=0;t.i&&t.i.length&&(e+=5),t.m&&t.m.length&&(e+=3),t.r&&t.r.length&&(e+=2),t.v&&t.v.length&&(e+=3),t.datai&&t.dataf&&(e+=1),t.l=e}function parselimitifromrule(t){function parsevettorelimiti(t){const e={},a=/^\s*[!:]\s*(\w+)\s*(.*)$/i;function addres(t,a){function addres0(t,a){(a=clean(a))&&(e[t]||(e[t]=[]),e[t].includes(a)||e[t].push(a))}if(Array.isArray(a))for(const e of a)addres0(t,e);else addres0(t,a)}for(const s of t){const t=a.exec(s);if(t)switch(t[1]){case"var":case"v":case"variante":{const a=(t[2]||"").indexOf(" ");if(a>0){const s=clean(t[2].substring(0,a)),i=getcolonne(t[2].substring(a+1));if(s&&i&&i.length){e.v||(e.v=[]);let t=e.v.find((t=>t.v==s));t||(t={v:s,o:[]},e.v.push(t));for(const e of i)t.o.includes(e)||t.o.push(e)}}}break;case"d":case"dt":case"data":case"date":{const a=t[2].split(" "),s=parseInt(a[0]),i=parseInt(a[1]);(s||i)&&(e.datai=s,e.dataf=i)}break;case"rule":case"r":case"mu":addres("r",getcolonne(t[2]));break;case"item":case"i":addres("i",getcolonne(t[2]));break;case"model":case"m":addres("m",getcolonne(t[2]));break;case"e":case"escludi":case"exclude":addres("ex",getcolonne(t[2]))}else addres("valid",getcolonne(s))}return setlevelimite(e),e}let e;if(t&&t.length){for(const a of t){const t=parsevettorelimiti(a);if(t&&(t.valid&&t.valid.length||t.ex&&t.ex.length)){let a=0;t.i&&t.i.length&&(a+=5),t.m&&t.m.length&&(a+=3),t.r&&t.r.length&&(a+=2),t.v&&t.v.length&&(a+=3),t.datai&&t.dataf&&(a+=1),t.l=a,e||(e=[]),e.push(t)}}e&&(e=e.sort(((t,e)=>e.l-t.l)))}return e}class Variante{constructor(t){this.rows={},this.name="$",this.key="$",this.limits=void 0,this.amb=t}setheader(t,e){const{name:a,cat:s}=checkmu(t,e);return this.cat=s,this.name=a,this.alias="",this.obbligo=!1,this.des=a,this.vdef=[],this.rows={},this.h=[],this.key=`${s}/${a}`,{name:a,cat:s}}fromdim(t,e=2){"number"!=typeof t&&(t=muCalc(t)),e>0&&e--;let a,s=1e9;for(const i in this.rows){const r=this.rows[i];if(!r.annulla){const i=parseFloat(r.v[e])||0;i<=s&&i>=t&&(s=i,a=r)}}return this.#t(t,a)}async load(e,a,i=!1){const{name:r,cat:n}=this.setheader(e,a);if(t){const e=await t(n,r);if(e){if(await this.loadContentExtended(e),e.filter)this.limits=parselimitifromdb(e.filter);else if(s&&!i){const t=await s("filter",n,r);t&&t.length&&(this.limits=parselimitifromdb(t))}return!0}}return!1}async _loadContent(t){const e=/^\s*[!:]\s*(\w+)\s*(.*)$/i;let a="";const s=[];let i,r=!1;for(const n of t){const t=n.toLowerCase();if("{limit}"==t)i=[],s.push(i),r=!0;else if("{:limit}"==t)r=!1;else if(r)i.push(n);else{let t=e.exec(clean(n));if(t)if(a&&"extra"==t[1].toLowerCase()){const e=getcolonne(t[2]);for(const t of e){const e=t.indexOf("=");if(e>0){const s=clean(t.substring(0,e));"v"!=s&&(this.rows[a][s]=t.substring(e+1).trim())}}}else switch(t[1].toLowerCase()){case"alias":{const e=t[2].toLowerCase().split(";");if(e[0].trim()!=this.name)if(1==e.length)this.alias=e[0];else{let a;if(this.amb?a=await this.amb.getvariante(e[0]):(a=new Variante,await a.load(e[0],this.cat)),t=a?.rows,t){let a=Object.keys(t);if(a.length){e.splice(0,1);const addrows=e=>{e&&e.forEach((e=>this.rows[e]=t[e]))};for(const t of e){const e=/([ei])\s*:\s*(.*)\s*$/im.exec(t);if(e){const t=e[2].split(",");for(let e=0;e<t.length;e++)t[e]=t[e].trim();a="e"==e[1]?a.filter((e=>{for(const a of t)if(e.startsWith(a))return!1;return!0})):a.filter((e=>{for(const a of t)if(e.startsWith(a))return!0;return!1}))}}addrows(a)}}}}break;case"h":this.h=getcolonne(t[2]).map((t=>({des:t})));break;case"t":{const e=getcolonne(t[2]);if(this.h)for(let t=0;t<this.h.length;t++)this.h[t].t=e[t]||""}break;case"des":this.des=t[2];break;case"default":case"vdef":this.vdef=getcolonne(t[2]);break;case"obbligo":this.obbligo=!0;break;case"noerp":this.noerp=!0;break;case"noobbligo":this.obbligo=!1}else{const t=getcolonne(n),e=clean(t[0]);e&&(a=e,this.rows[a]={annulla:0,v:t})}}}const n=Object.keys(this.rows);for(const t of n)if(t.includes(".")){const e=t.split(".");for(let t=0;t<e.length-1;t++){const a=e.slice(0,t+1).join(".");this.rows[a]||(this.rows[a]={annulla:0,v:[a]})}}return this.limits=parselimitifromrule(s),!0}tovec(){const t=this.rows,e=[],a=Object.keys(t).sort();for(const t of a)this.rows[t].annulla<2&&e.push(this.#t(t,this.rows[t]));return e}#t(t,e){const a=[t];if(e)for(const t of e.v)"string"==typeof t&&(t.includes(",")||t.includes(";"))?a.push(quote(t)):a.push(t||"");return a.join(",")}tovar(t,e=""){const a=clean(t);if(!this.rows[a])return e||t;const s=this.rows[a];return 2==s.annulla?"":this.#t(e||t,s)}isvalidopz(t){const e=clean(t),a=this.rows[e];return!!a&&(1!=a.annulla&&!a.hasliv)}firstvalid(t,e=void 0){const a=t.indexOf(",");if(a>0&&(t=t.slice(0,a).trim()),t&&this.isvalidopz(t))return t;if(e&&e.length)for(const t of e)if(this.isvalidopz(t))return t;if(this.vdef&&this.vdef.length)for(const t of this.vdef)if(this.isvalidopz(t))return t;const s=Object.keys(this.rows).sort();for(let t=0;t<s.length;t++){const e=s[t];if(!(t<s.length-1&&s[t+1].startsWith(e+"."))&&this.isvalidopz(e))return e}}resetfilter(){delete this._valids;for(const t in this.rows)this.rows[t].annulla=0}validkeys(){let t=Object.keys(this.rows)||[];return t=t.filter((t=>0==this.rows[t].annulla)).sort(),t}limitfiltra(t){if(!t)return;t=muClComments(t.toLowerCase());const e=[];for(const a of t){const t=/^#(i|e|xe|xi|x\+|x-|x)(\d*)\s+(.+)$/i.exec(a);if(t){const a={ex:t[1],col:(parseInt(t[2])||1)-1,val:"x"==t[1]?t[3]:getcolonne(t[3])};a.val.length&&e.push(a)}}if(e.length)for(const t in this.rows){const a=this.rows[t];for(const t of e)if("e"==t.ex){if(_check((a.v[t.col]+"").toLowerCase(),t.val)){a.annulla=1;break}}else if(t.ex.startsWith("x")){const e=(a.v[t.col]+"").toLowerCase().split(/[,;]/).map((t=>t.trim()));if("xe"==t.ex){if(_check((t.val+"").toLowerCase(),e)){a.annulla=1;break}}else if("x+"==t.ex){if(parseFloat(a.v[t.col])<=parseFloat(t.val)){a.annulla=1;break}}else if("x-"==t.ex){if(parseFloat(a.v[t.col])>=parseFloat(t.val)){a.annulla=1;break}}else if(!_check((t.val+"").toLowerCase(),e)){a.annulla=1;break}}else if(!_check((a.v[t.col]+"").toLowerCase(),t.val)){a.annulla=1;break}}function _check(t,e){if(1==e?.length&&"."==e[0])return!!t;return!!e.find((e=>e.startsWith(t)))}}limita(t,e){if(e&&e.length){for(const t in this.rows)this.rows[t].annulla=e.includes(t)?0:1;return}if(this.resetfilter(),t&&t.length&&this.limitfiltra(t),!this.limits||!this.amb)return this;const{item:a,rule:s,model:i,vari:r,data:n}=this.amb,valid=(t,e)=>!e||!e.length||!!t&&e.includes(t);let o=!1;const c=this.limits.filter((t=>{if(!valid(a,t.i))return!1;if(!valid(s,t.r))return!1;if(!valid(i,t.m))return!1;if(n&&t.datai&&n<t.datai)return!1;if(n&&t.dataf&&n>t.dataf)return!1;if(t.v&&t.v.length)for(const e of t.v){const t=clean(r.var(e.v).split(",")[0],!0);if(t&&!e.o.includes(t))return!1}return(t.valid?.length||t.v2?.length)&&(o=!0),t.ex?.length||t.ex2,!0}));if(!c||!c.length)return this;for(let[t,e]of Object.entries(this.rows))if(!e.annulla){let a=!0,s=!1;if(o)for(let e of c){let s=!1;if(e.valid?.length&&e.valid.includes(t)&&(s=!0),!s&&e.v2?.length)for(let a of e.v2)if(t.startsWith(a)){s=!0;break}if(!s){a=!1;break}}for(let e of c){if(e.ex?.length&&e.ex.includes(t)){s=!0;break}if(e.ex2?.length)for(let a of e.ex2)if(t.startsWith(a)){s=!0;break}if(s)break}e.annulla=a&&!s?0:1}return c}async loadContentExtended(t){if("object"==typeof t){for(const e in t)["rows","des","h","alias","obbligo"].includes(e)&&(this[e]=t[e]);"string"==typeof t.def&&t.def.length&&(this.vdef=getcolonne(t.def.trim().toLowerCase())),t.filter&&t.filter.length&&(this.limits=parselimitifromdb(t.filter))}else await this._loadContent(muClComments(t,!1))}todata(){return{name:this.name,des:this.des,alias:this.alias,obbligo:this.obbligo,h:this.h,rows:this.rows,limits:this.limits,key:this.key}}}const v={};async function getcbfunc(t,e,s,i,r,n){if(a){if(v[e])return"";let t=await a(e,s,i,r,n);return isObject(t)||(t=(t||"").trim(),"!"==t&&(v[e]=!0,t="")),t}return t}async function intvaluta(t,e,a){return t.vari.valuta(a,(async(a,s)=>{switch(a){case"dim":{let a=muCalc(s[1]),i=await dammivariante(t,e,s[2]),r=parseInt(s[3])||2;return i&&i.fromdim?i.fromdim(a,r):a}case"seed":{let t=s[1],e=getcolonne(s[2]);return e[seeder(e.length,t)]||""}case"seedvar":{let a=await dammivariante(t,e,s[2]),i=s[1],r=a.validkeys();if(s[3]&&s[4]){let t=muCalc(s[3])-1;if(t>=0){let e=getcolonne(s[4]);r=r.filter((s=>{let i=a.rows[s];if(i&&i.v&&i.v[t]){let a=getcolonne(i.v[t]);if(a)for(let t of e)if(a.includes(t))return!0}return!1}))}}let n=seeder(r.length,i);return n>=0&&a.tovar(r[n])||""}default:return await getcbfunc(`**fun:${a}**`,a,s,t.vari,t)}}))}async function dammivariante(t,e,a){let s;return s=e&&e?.localvar&&e.localvar[a]?e.localvar[a]:await t.getvariante(a),s}async function impostavariante(t,e,a,s,i){let r,n=a;if((s=s||"")&&"string"==typeof s){const t=s.indexOf(":");t>=0&&(t>0&&(n=clean(s.slice(0,t))),s=s.slice(t+1))}if(i&&i.alias&&(n=i.alias),e&&e.paralias&&e.paralias[a]&&(n=e.paralias[a]),r=await dammivariante(t,e,n),r)if(i&&i.t){i.des||(i.des=r.des);let e=i?.filtra||"";if(e.includes("$")&&(e=await t.vari.valuta(e)),"m"===i.t){let t=2;if(s.includes(":")){const e=s.split(":");t=parseInt(e[1]),s=e[0]}r.limita(e),s=r.fromdim(parseFloat(s),t)}else{r.limita(e);const t=r.firstvalid(s,getcolonne(i.def));s=r.tovar(t)}}else r.resetfilter(),s=r.firstvalid(s),s=r.tovar(s);else i&&i.t&&i.t;return t.vari.add(a,s),s}async function pushpars(t,e,a,s){const i={},r=[];if(a)for(const s of a){const{v:a,o:n,fl:o}=getcouple(s);i[a]||(i[a]=!0,r.push({v:a,o:t.vari.var[a]}),o&&await impostavariante(t,e,a,n))}if(s)for(const a of s){const{v:s,o:n,fl:o}=getcouple(a);i[s]||(i[s]=!0,r.push({v:s,o:t.vari.var[s]}),o&&await impostavariante(t,e,s,n))}return r}function poppars(t,e){if(e)for(const a of e)t.vari.add(a.v,a.o)}const outpush=(t,e)=>{null!=e&&null!=e&&("object"==typeof e?t.push(JSON.stringify(e,null,2)):"string"==typeof e&&e.startsWith("_ ")&&t.length>0&&"string"==typeof t[t.length-1]?t[t.length-1]+=e.slice(2):t.push(...e.split("\n")))};async function muEval(t,e,a,s){if(!Array.isArray(a))return n.add("codice is not a valid parsed array"),[];const zeroval=()=>t&&t._managezero?"0":"";s||(s={}),s.id||(s.id="_"),s._stackmacro||(s._stackmacro=0),s.limited||(s.limited=!1),t||n.add("amb deve essere definito");const i=t.vari;t.maxdelays,t.cat;const r=[];let o,c,l;tk();for(let u=0;u<a.length;){let h=a[u];switch(h.tipo){case"IFDEF":case"IFNDEF":case"IF":{const f="IF"==h.tipo?muCalc(await intvaluta(t,e,h.contenuto)):"IFDEF"==h.tipo?""!=await intvaluta(t,e,h.contenuto):""==await intvaluta(t,e,h.contenuto);h.next?(a[h.next].jlast=f?1:0,f||(u=h.next-1)):n.add("Troppo tempo",h)}break;case"SELECT":h.next?(a[h.next].t1=await intvaluta(t,e,h.contenuto),u=h.next-1):n.add("manca endselect",h);break;case"CASE":case"CASES":case"DEFAULT":if(h.next)if(h.jlast)h.jlast=0,u=h.last-1;else{let d,m=1;const _getvv=async()=>{let a=await intvaluta(t,e,h.contenuto);return a=a.includes(":")&&!a.includes(",")?a.split(":").map((t=>(t||"").trim())):getcolonne(a),a};if("CASE"==h.tipo){m=0,d=await _getvv();const p=muCalc(h.t1||zeroval());d.find((t=>muCalc(t)==p))&&(m=1)}else if("CASES"==h.tipo){m=0,d=await _getvv();const v=h.t1||zeroval();d.find((t=>t==v))&&(m=1)}a[h.next].jlast=m?1:0,a[h.next].t1=h.t1,m||(u=h.next-1)}else n.add("manca select",h);break;case"ELSEIF":case"ELSEIFDEF":case"ELSEIFNDEF":case"ELSE":if(h.next)if(h.jlast)h.jlast=0,u=h.last-1;else{const g="ELSE"==h.tipo?1:"ELSEIF"==h.tipo?muCalc(await intvaluta(t,e,h.contenuto)):"ELSEIFDEF"==h.tipo?""!=await intvaluta(t,e,h.contenuto):""==await intvaluta(t,e,h.contenuto);a[h.next].jlast=g?1:0,g||(u=h.next-1)}else n.add("manca endif",h);break;case"ENDIF":case"ENDSELECT":case"CACHE":case"CVAR":break;case"PUSH":i.push();break;case"POP":i.pop();break;case"INC":case"I":if(s._stackmacro>500)n.add("stack chiamate macro troppo profondo!",h);else if(({macro:o,pars:c,xid:l}=await t.getmacro(h)||{}),o){s._inc=!0,s._stackmacro++;const b={},w=o.parametri?._;if(w&&w.length)for(const k of w){const x=clean(k.split("=")[0]||"",!0);x&&(b[x]=i.dictionary[x])}await o.impostaparametri(w,c);const y=await muEval(t,o,o.codice,s);for(const C in b)b[C]?i.dictionary[C]=b[C]:delete i.dictionary[C];r.push(...y),s._stackmacro--,s._inc=!1}break;case"RET":{const E=await intvaluta(t,e,h.contenuto);t.vari.savevars(E)}break;case"MACRO":case"M":case"FUNC":case"F":if(s._stackmacro>500)n.add("stack chiamate macro troppo profondo!",h);else{let{macro:O,pars:_,xid:$}=await t.getmacro(h)||{};if(O){const F=!!s.grafica||["F","FUNC"].includes(h.tipo),S=s.id||"",I=O.parametri?._,L={};if(F)i.push();else{if(O.head)for(const z of O.head)L[z.cod]=t.vari.var(z.cod);if(I&&I.length)for(const A of I){const M=(A.split("=")[0]||"").trim().toLowerCase();M&&(L[M]=i.dictionary[M])}}if(O.codice.length){if(s._stackmacro++,s.grafica&&"function"==typeof s.grafica){let j="",W="";_&&_.length?(j=_.find((t=>t.startsWith("#id"))),j?(j=await i.valuta(j.slice(4)),j.startsWith("#")?s.id=j:s.id=hash(`${u}${O.name}${S}${j}`),_=_.filter((t=>!t.startsWith("#id"))),W=s.id):s.id=hash(`z${S}${u}`)):s.id=hash(`z${S}${u}`);let N=t.pick.key;t.pick.key=s.id;const T=await s.grafica({tipo:h.tipo,id:W,pars:_,parametri:I,macro:O,options:s,vari:t.vari,amb:t});t.pick.key=N,r.push(T)}else{await O.impostaparametri(I,_);let V=t.vari.var("_rootnode");t.vari.add("_rootnode","0");const D=await muEval(t,O,O.codice,s);t.vari.add("_rootnode",V),r.push(...D)}s._stackmacro--}if(F)i.pop();else for(const R in L)L[R]?i.dictionary[R]=L[R]:delete i.dictionary[R];s.id=S}else n.add("Macro non trovata!",h)}break;case"SETDEF":{let P=getcolonne((h.contenuto||"").toLowerCase()),J=await dammivariante(t,o,P[0]),K=P[1]||"def_",U=P[2];if(K.endsWith("_")||(K+="_"),J&&J.rows){P=Object.keys(J.rows),U&&(P=P.filter((t=>t.startsWith(U))));for(let q of P){let G=`${K}${q}`;if(!i.dictionary[G]){function torow(t){const e=[];if(t)for(const a of t.v.slice(1))"string"==typeof a&&(a.includes(",")||a.includes(";"))?e.push(quote(a)):e.push(a||"");return e.join(",")}i.add(G,await intvaluta(t,e,torow(J.rows[q])))}}}}break;case"LET":case"LETS":{let B=h.contenuto.indexOf("="),Z=-1;if(B>=0&&(Z=h.contenuto.indexOf("=",B+1)),Z<0){const H=h.contenuto;if(B=H.indexOf("="),B>0){const X=await intvaluta(t,e,H.slice(0,B).trim());let Q=H.slice(B+1).trim();Q="LET"==h.tipo?muCalc(await intvaluta(t,e,Q))||zeroval():await intvaluta(t,e,Q),i.add(X,Q)}}else{const Y=getcolonne(h.contenuto);for(const tt of Y)if(B=tt.indexOf("="),B>0){const et=await intvaluta(t,e,tt.slice(0,B));let at=tt.slice(B+1).trim();at="LET"==h.tipo?muCalc(await intvaluta(t,e,at))||zeroval():await intvaluta(t,e,at),i.add(et,at)}}}break;case"LETT":{const st=h.contenuto.indexOf("=");if(st>0){const it=await intvaluta(t,e,h.contenuto.slice(0,st).trim()),rt=await intvaluta(t,e,h.contenuto.slice(st+1).trim());i.add(it,rt)}}break;case"CZERO":"1"==h.contenuto?t._managezero=!0:t._managezero=!1;break;case"LOOK":case"LOOKB":{const nt=getcolonne(await intvaluta(t,e,h.contenuto)),ot=muCalc(nt[1]),ct=muCalc(nt[3]),lt=await dammivariante(t,o,nt[2]);if(lt&<.rows){const ut=Object.values(lt.rows).reduce(((t,e)=>{const a=parseInt(e.v[ct?ct-1:0]);return a&&("LOOKB"==h.tipo?a<=ot&&a>t.v&&(t.v=a,t.c=e.v[0]):a>=ot&&a<t.v&&(t.v=a,t.c=e.v[0])),t}),{v:"LOOKB"==h.tipo?0:1/0,c:""});ut&&ut.c&&(t.vari.add(nt[0],lt.tovar(ut.c)),s.checkheader&&"function"==typeof s.checkheader&&await s.checkheader({variante:nt[0],valore:lt.tovar(ut.c),riga:h}))}else t.vari.add(nt[0],`${ot},no,no`)}break;case"LETV":case"LETM":case"DEF":{const ht=getcolonne(h.contenuto);if(ht)for(const ft of ht){let{v:dt,o:mt,fl:pt}=getcouple(ft);if(pt){dt=await i.valuta(dt),mt=await intvaluta(t,e,mt);const vt=await impostavariante(t,e,dt.trim().toLowerCase(),mt.trim().toLowerCase(),"LETM"==h.tipo?{t:"m"}:{t:"v"});s._stackmacro<=0&&s.checkheader&&"function"==typeof s.checkheader&&await s.checkheader({variante:dt,valore:vt,riga:h})}}}break;case"DO":{const gt=(h.contenuto||"").trim();let bt=!0;gt&&!muCalc(await intvaluta(t,e,gt))&&(bt=!1),h.next&&(bt||(u=h.next+1))}break;case"VARIANTE":case"FORVAR":case"FOR":{let wt,yt,kt,xt;if(s.oldstyle?(wt=h.contenuto.split(","),xt=wt[2]||"i",kt=wt[0],yt=wt[1]):(wt=getcolonne(h.contenuto||""),xt=wt[0]||"",kt=clean(wt[1],!0),yt=wt[2]||""),xt=xt.includes("$")?await intvaluta(t,e,xt):xt||"","FORVAR"==h.tipo||"VARIANTE"==h.tipo){const Et=await intvaluta(t,e,kt),Ot=Et?await dammivariante(t,e,Et):void 0;Ot?kt=Ot.tovec():(kt=[],n.add("getvariante not found!",h))}else{const _t=await intvaluta(t,e,kt||"");kt=kt?getcolonne(_t):void 0}kt=kt||[];const Ct=0;if(h.next){a[h.next].for={v:xt,elenco:kt,nc:Ct,valido:yt};let $t,Ft=!0;xt&&kt.length>0?Ct>=kt.length?Ft=!1:($t=kt[Ct],i.add(xt,$t),yt&&(Ft=!muCalc(await intvaluta(t,e,yt)))):Ft=!1,Ft||(u=h.next-1)}else n.add("manca endfor/loop",h)}break;case"LOOP":{let St=!0;h.contenuto&&!muCalc(await intvaluta(t,e,h.contenuto))&&(St=!1),St&&(u=h.prev-1);break}case"ENDFOR":if(!h.contenuto||muCalc(await intvaluta(t,e,h.contenuto)))if(h.for){const{v:It,elenco:Lt,valido:zt}=h.for;if(It&&Lt.length>0&&h.for.nc<500)for(;;){if(h.for.nc++,h.for.nc<Lt.length){if(i.add(It,Lt[h.for.nc]),zt&&muCalc(await intvaluta(t,e,zt)))continue;u=h.prev;break}break}}else n.add("manca istruzione for",h);break;case"BREAK":case"EXIT":case"EXITFOR":h.next?h.contenuto.trim()?muCalc(await intvaluta(t,e,h.contenuto))&&(u=h.next):u=h.next:n.add("break outside loop",h);break;case"CONTINUE":h.next?h.contenuto&&!muCalc(await intvaluta(t,e,h.contenuto))||(u=h.next-1):n.add("continue outside loop",h);break;case"MSG":case"LOG":{const At=await intvaluta(t,e,h.contenuto);logga(At),n.add(At)}break;default:{let Mt;if(h.contenuto.startsWith("!")){Mt=await intvaluta(t,e,h.contenuto);let jt="";const Wt=/^!(.\w+)[\s;,]\s*(.+)?$/gim.exec(Mt);if(Wt)if(Wt[1].startsWith("."))await getcbfunc(Mt,Mt.slice(1),[],i,t),jt="";else{const Nt=(Wt[1]||"").toLowerCase(),Tt=getcolonne(Wt[2]||"");jt=await getcbfunc(Mt,Nt,Tt,i,t)}jt&&outpush(r,jt)}else s.parsefnpunto&&"function"==typeof s.parsefnpunto&&h.contenuto.startsWith(".")?await s.parsefnpunto({dati:h.contenuto,output:r,id:s.id,vari:t.vari,amb:t}):(Mt=await intvaluta(t,e,h.contenuto),outpush(r,Mt))}}u++}return r}async function muGenerate(t,e,a,s,i=0){if(t.isgenera&&s){const r={counter:0,keys:{},isTestmode:i};if(a){if(!t.genera[a])return!1;await muGenerate_0(t,e,a,s,r)}else for(const a in t.genera)await muGenerate_0(t,e,a,s,r);return!0}}async function muGenerate_0(t,e,a,s,i){const r=t.genera[a];if(r){i.counter2=0;const n={};async function processavariante(o){if(i.isTestmode&&i.counter>i.isTestmode)return;if(o<r.vars.length){const a=r.vars[o];if(!n[a]){const s=await dammivariante(e,t,a),i=s?Object.keys(s.rows):void 0;if(i&&i.length>0){for(const t of i)e.vari.add(s.name,s.tovar(t)),n[a]=!0,await processavariante(o+1),n[a]=!1;return}logga("manca la variante",a)}}for(const a of r.calcola)t.formula[a]&&await muEval(e,t,t.formula[a],{limited:!0});for(const a of r.exclude)if(t.formula[a]){const s=await muEval(e,t,t.formula[a],{limited:!0});if(s)for(const t of s){if(muCalc(t))return}}const c=await muEval(e,t,r.codice,{limited:!0,localvar:t.localvar}),l={};for(const a of r.bom)if(t.formula[a]){let s=await muEval(e,t,t.formula[a],{limited:!0});s=s.join("\n").split("\n");for(const t of s)if(t){const e=getcolonne(t);l[a]||(l[a]=[]);const s={};for(let t=0;t<e.length;t++)s[`c${t}`]=e[t];l[a].push(s)}}await async function docallback(t,e,a,s,i,r){let n=!0;for(const o of e){const e=getcolonne(o);if(e[0]&&!r[e[0]]){r[e[0]]=1,r.counter++,r.counter2++;const o={__id:r.counter};for(let t=0;t<e.length;t++){let a=s.head[t]?s.head[t]:`c${t}`;"#"==a[0]?(a=a.substr(1),o[a]=Math.round(1e3*muCalc(e[t]))/1e3):o[a]=e[t]}await t(i,o,n?a:void 0,r.counter,r.counter2),n=!1}}}(s,c,l,r,a,i)}await processavariante(0)}}const g=["l","a","p"],b=/^\{(:?(var|valid|formula|genera|header|v|f|g|h))[\s|}]/im,w=["s","g","h","p","q"],y=[{cod:"t",des:"Variante"},{cod:"q",des:"V.Query"},{cod:"f",des:"Valore Fisso"},{cod:"g",des:"Gruppo"},{cod:"s",des:"Libero"},{cod:"m",des:"Misura"},{cod:"c",des:"Check (no/si)"},{cod:"z",des:"Check (si/no)"},{cod:"h",des:"Hidden"},{cod:"p",des:"Programmato"}],k=[{cod:"",des:"Libero"},{cod:"a",des:"Area"},{cod:"t",des:"Thumb",folder:"thumbs"},{cod:"i",des:"Image",folder:"textures"},{cod:"x",des:"3D file",folder:"3d"},{cod:"f",des:"Funzione",folder:"script"}];function valutaCondizioniTestata(t,e){const a=e.split("\n");for(const e of a)if(e.trim()){if(muCalc(t.valutasync(e)))return!0}return!1}class Macro{constructor(t,e){const{name:a,cat:s}=checkmu(e,t.cat||"");this.name=a,this.cat=s,this.amb=t,this.azzera()}azzera(){this.key=`${this.cat}/${this.name}`,this.localvar={},this.head=[],this.frontend=!1,this.valid=[],this.parametri={},this.paralias={},this.formula={},this.settings={},this.errori=[],this.codice=[],this.genera={}}get isgenera(){return Object.keys(this.genera).length||0}get iscodice(){return this.codice.length||0}get isheader(){return this.head?.length||0}geterrori(){const t=[];return this.errori.forEach((e=>t.push({e:e}))),t}getparametri(t={}){const{noderiva:e}=t,a={};if(this.dims&&g.forEach((t=>{const e=muCalc(this.amb.vari.var(t));e&&(a[t]=String(e))})),this.head){for(const t of this.head)if(!t._h){if(e&&t._d&&t._d.cod)continue;let s=this.amb.vari.var(t.cod);w.includes(t.t)||"string"==typeof s&&(s=s.split(",")[0]),a[t.cod]=s}}else if(this.parametri?._)for(const t of this.parametri._){const e=(t.split("=")[0]||"").trim().toLowerCase();let s=this.amb.vari.var[e];s=(s||"").split(",")[0],a[e]=s}return a}setgallery(t,e){if(!t||!e)return;if(!e.length)return;let a=e.find((e=>e.id==t));if(a?.rows?.length)for(let t of a.rows){let e=this.head.find((e=>e.cod==t.cod));e&&("t"==e.t&&(t.v||"").includes(";")?e._limit3=getcolonne(t.v):e._h3=!0)}}async setparametri(t){const e={},a=this.amb.ruleset||{};t||(t={}),this.dims&&g.forEach((e=>{let a=t[e]||this.dims[e].val;a=parseFloat(a)||0,this.dims[e].visible&&(a<this.dims[e].min&&(a=this.dims[e].min),a>this.dims[e].max&&(a=this.dims[e].max)),t[e]=String(a)}));for(const s of this.head){delete s._h3,delete s._limit3;const i=a[s.cod];i&&(i.islock?(s.visible="0",t[s.cod]=i.opz,s._islock=!0):t[s.cod]||(t[s.cod]=i.opz)),"g"!=s.t&&("z"!=s.t||t[s.cod]||(t[s.cod]="1"),s._v=t[s.cod]||"",e[s.cod]=!0)}for(const a in t)e[a]||(e[a]=!0,await impostavariante(this.amb,this,a,t[a]));return this.head?.length>0&&await this.setparametro(this.head[0].cod,t[this.head[0].cod]||void 0,!0,t),this.getparametri()}async setparametro(t,e,a=!1,s={}){if(e&&"string"==typeof e&&e.includes("$")&&(e=await intvaluta(this.amb,this,e)),s||(s={}),this.head){const _imposta=async(t,e,a,i)=>{const r=t?.cod;if(t.valid&&!t._h1){const e=!valutaCondizioniTestata(this.amb.vari,t.valid);if(t._h!=e&&(t._h=e,["g","g1","g2"].includes(t.t)))for(let e=a+1;e<this.head.length;e++){const a=this.head[e];if(a){if(["g","g1","g2"].includes(a.t))break;a._h1=t._h}}}if(t._h||t._h1)return this.amb.vari.add(r,""),t._v=void 0,"";{if(delete t._h2,t.visible){const e=!valutaCondizioniTestata(this.amb.vari,t.visible);if(e&&(t._h2=e),["g","g1","g2"].includes(t.t))for(let e=a+1;e<this.head.length;e++){const a=this.head[e];if(a){if(["g","g1","g2"].includes(a.t))break;t._h2?a._h3=t._h2:delete a._h3}}}let i=this.amb.vari.var(r)||"";"thlm".includes(t.t)&&"string"==typeof i&&(i=i.split(",")[0]);let n=i;if("z"!=t.t||i||(this.amb.vari.add(r,"1"),i="1"),"m"==t.t&&t.spars){let e=t.spars;(e||"").includes("$")&&(e=await intvaluta(this.amb,this,e));const a=getcolonne(e);i=parseFloat(i||a[0])||0,(!a[1]||"").includes(";")&&(a[1]&&parseFloat(i)<a[1]&&(i=parseFloat(a[1])||0),a[2]&&parseFloat(i)>a[2]&&(i=parseFloat(a[2])||0)),i=String(i),this.amb.vari.add(r,i)}const o=await impostavariante(this.amb,this,r,e||t._v||i,t);if(t._v=void 0,i=this.amb.vari.var(r)||"","thl".includes(t.t)&&"string"==typeof i&&(i=i.split(",")[0],this.amb&&this.amb.deriva&&this.amb.deriva.length>0)){const e=this.amb.deriva.filter((t=>t.cod==r&&((!t.item||t.item==this.amb.item)&&((!t.model||t.model==this.amb.model)&&((!t.rule||t.rule==this.amb.rule)&&(!t.opz||t.opz==i))))));e.length&&e.forEach((e=>{let a=this.head.find((t=>t.cod==e.tocod));if(a){let r=this.amb.vari.var(a.cod);s&&s[a.cod]&&(r=s[a.cod]),"string"==typeof r&&(r=r.split(",")[0],r&&r!=n&&r!=i?delete a._d:(a._v=e.toopz||i,a._d={cod:t.cod,opz:e.toopz}))}}))}return o}};let i,r=-1;if("#dim"==t)a=1;else{if(r=this.head.findIndex((e=>e.cod===t)),r<0)return;const s=this.head[r];i=await _imposta(s,e,r),a&&delete s._d}if(a)for(let t=r+1;t<this.head.length;t++)await _imposta(this.head[t],void 0,t);return i}return await impostavariante(this.amb,this,t,e)}getmarker(){let t;if(this.head&&this.head.length){let e=this.head.find((t=>"marker"==(t.stipo||"").trim().toLowerCase().split(/[;,]/)[0].trim()));e&&e.cod&&(t=e.cod)}return t}isderivato(t){return"string"==typeof t&&(t=this.head.find((e=>e.cod==t))),!!(t&&t._d&&t._d.cod)}async impostaparametri(t,e,a=!1,s){if(this.head){this.paralias||(this.paralias={}),Array.isArray(this.head)||(this.head=[]);for(const t of this.head)t._v="",delete t._h,delete t._h1,delete t._h2,t.alias&&(this.paralias[t.cod]=t.alias)}s||(s={}),t||(t=[]),e||(e=[]);for(const a of[...t,...e]){const t=a.indexOf("=");if(t>0){let e=clean(a.substr(0,t));e.includes("$")&&(e=await intvaluta(this.amb,this,e));let s,i=a.substr(t+1);i.includes("$")&&(i=await intvaluta(this.amb,this,i)),this.head&&(s=this.head.find((t=>t.cod==e)))?s._v=i:await impostavariante(this.amb,this,e,i)}}if(this.head){let t=!0;for(const e of this.head){let i=await this.checkvalid(e.valid);a&&(i=!0),["g","g1","g2"].includes(e.t)?t=i:t&&i&&await this.setparametro(e.cod,s[e.cod]||e._v)}}}async checkvalid(t){if(!t)return!0;return!!muCalc(await intvaluta(this.amb,this,t))}getmacrostr(){return JSON.stringify(this.getmacro())}getmacro(){return getOggetto(this,["amb"])}setmacro(t){if(setOggetto(this,fromjson(t,{})),this.localvar)for(const t in this.localvar){const e=new Variante;setOggetto(e,this.localvar[t]),this.localvar[t]=e}}async load(t,a){let s,i;try{let r;if(({name:s,cat:i}=checkmu(t||this.name,a||this.cat||"")),this.name||(this.name=s),this.cat||(this.cat=i),this.azzera(),e&&(r=await e(i,s),"string"==typeof r&&(r.startsWith("{")||r.startsWith("["))&&(r=fromjson(r)),r&&r.head&&!Array.isArray(r.head)&&(r.head=[]),this.amb.checkscripts(r.linkscript),delete r.linkscript,r.head&&(r.dims=getheaddims(r.dims))),r){if("string"==typeof r)await this.parsedata(r);else for(const t in r)this[t]=r[t];return!0}n.add(`missing cbGetFile: ${i}/${s}`)}catch(t){n.add(geterrdes(t),`macro.load: ${s}/${i}`)}}async loadAndCompile(t,e,a=!1){let s;const{name:r,cat:o}=checkmu(t,this.cat||e);return this.azzera(),i&&(s=await i(o,r)),s?(await this.parsedata(s,a),this.getmacro()):void n.add(`missing cbGetFile: ${r}/${o}`)}async#e(t,e,a,s){let r;const{name:n,cat:o}=checkmu(t,this.cat);if(i&&(r=await i(o,n)),!r)return[];if(r.includes("$1")&&s&&s.length>0)for(let t=1;t<s.length;t++)r=r.replaceAll(`$${t}`,s[t]);let c=muClComments(r);const l=[];e&&(c=c.filter((t=>!/^\{(:?(var|valid|formula|header|genera|v|f|h))[\s|}]/im.test(t))));for(const t of c){const s=b.exec(t);if(s)e=!s[1].startsWith(":"),l.push(t);else{const s=/^\s*\{i\s(.+)?\}/im.exec(t);if(s){const t=getcolonne(s[1]);if(!a.includes(t[0])){a.push(t[0]);const s=await this.loadinclude(t[0],e,a,t);Array.isArray(s)&&l.push(...s),a.pop()}}else l.push(t)}}return l}async parsedata(t,e=!1){if(this.azzera(),!t)return;const a=[];let s=muClComments(t),i=!1;const r=[];for(const t of s){const e=b.exec(t);if(e)i=!e[1].startsWith(":"),a.push(t);else{const e=/^\s*\{i\s(.+)?\}/im.exec(t);if(e){const t=getcolonne(e[1]),s=await this.#e(t[0],i,[t[0]],t);Array.isArray(s)&&a.push(...s)}else a.push(t)}}i=!1;let n=this.codice;for(const t of a){const e=b.exec(t);if(e)if(e[1].startsWith(":"))n=this.codice;else switch(e[1]){case"genera":case"g":{let e=/^\s*\{(genera|g)\s+(.+)?\}/im.exec(t);if(e){const t=checkname(getcolonne(e[2])[0]);this.genera[t]=[],n=this.genera[t]}else n=this.errori,n.push(t)}break;case"valid":n=this.valid;break;case"var":case"v":{const e=/^\s*\{(var|v)\s+(.+)?\}/im.exec(t);if(e){const t=getcolonne(e[2]),a=checkname(t[0]);this.localvar[a]={name:a,des:t[1]||"",rows:[]},n=this.localvar[a].rows}else n=this.errori,n.push(t)}break;case"formula":case"f":{const e=/^\s*\{(formula|f)\s+(.+)?\}/im.exec(t);if(e){const t=checkname(e[2]);this.formula[t]=[],n=this.formula[t]}else n=this.errori,n.push(t)}break;case"h":case"header":n=r;break;default:this.errori.push(t),n=this.errori}else t.startsWith("{")&&(n=this.codice),n.push(t)}this.parametri={},this.codice=this.cleanfiltraparametri("_",this.codice,e);for(const t in this.formula)this.formula[t]=this.cleanfiltraparametri(t,this.formula[t],e);for(const t in this.localvar){const e=new Variante,a=this.localvar[t];e.setheader(t,this.cat),e.rows={};for(const t of a.rows){const a=getcolonne(t),s=a[0].trim().toLowerCase();e.rows[s]={annulla:0,v:a}}a.des&&(e.des=a.des),this.localvar[t]=e}s=this.valid,this.valid=[];for(const t of s){let e=getcouple(t,",");e={v:e.v,msg:e.o},e.v&&(e.v.startsWith("#")?this.formula[e.v.substring(1)]&&this.valid.push(e):this.valid.push(e))}s=r;const o=[];for(const t of s){const e=/^\s*([\w\-_]+)+[;,\s]\s*(.*)?$/im.exec(t);if(e){const t=getcolonne(e[2]),a=clean(e[1]);let s;if(a){s=o.find((t=>t.cod==a)),s||(s={cod:a,t:"t"},o.push(s));for(const e of t){const t=getcouple(e);switch(t.v){case"t":s.t=t.o;break;case"def":case"default":s.def=t.o;break;case"valid":case"colonna":case"hidden":t.o.startsWith("#")?this.formula[t.o.substring(1)]&&(s[t.v]=t.o):s[t.v]=t.o;break;default:s[t.v]=t.o}}}}}this.head=o,s=this.genera;const c={};for(const t in s)if(Array.isArray(s[t])){const e={codice:[],head:"",calcola:[],bom:[],vars:[],exclude:[]},a=/^\s*[!:]\s*(\w+)\s*(.*)$/i;for(const i of s[t]){const s=a.exec(clean(i));if(s)switch(s[1]){case"calcola":case"c":e.calcola=[...e.calcola,...getcolonne(s[2])];break;case"exclude":case"e":case"escludi":e.exclude=[...e.exclude,...getcolonne(s[2])];break;case"bom":case"db":e.bom=[...e.bom,...getcolonne(s[2])];break;case"vars":case"v":e.vars=[...e.vars,...getcolonne(s[2])];break;case"head":case"h":e.head=getcolonne(s[2]);break;default:this.errori.push(`genera ${t} => ${i}`)}else e.codice.push(i)}e.codice=muClean(e.codice,!0),c[t]=e}this.genera=c}cleanfiltraparametri(t,e,a){if(this.paralias||(this.paralias={}),e&&e.length){let a=!1;const getparalias=t=>{const e=[],a=getcolonne(t);for(const t of a)if(t.includes(":")){const a=t.split(":");this.paralias[a[0]]=a[1],e.push(a[0])}else e.push(t);return e};for(let s=0;s<e.length;s++){const i=/^:p[;,\s]+(.*)?$/im.exec(e[s]);if(i)e[s]=null,a=!0,this.parametri[t]=getparalias(i[1]);else{const i=/^!(parametri|pars|p)[;,\s]+(.*)?$/im.exec(e[s]);i&&(e[s]=null,a=!0,this.parametri[t]=getparalias(i[2]))}}a&&(e=e.filter((t=>null!=t)))}return e=muClean(e,a)}}function parsevariabili(t){let e=!1;const a=[];for(;;){const s=/\$([{[(])/m.exec(t);if(!s){t&&e&&a.push({class:"",text:t});break}{e=!0;const i="["==s[1]?"inline":"variabile";s.index>0&&a.push({class:"",text:t.substring(0,s.index)});const{i:r}=parsevar(t,s.index+2,s[1],null);if(!(r>s.index)){a.push({class:i,text:t.substring(s.index)});break}a.push({class:i,text:t.substring(s.index,r+1)}),t=t.substring(r+1)}}return{fl:e,tk:a}}function parseexp(t,e,a){if(!a)throw new Error("missing callback");let s=!1;const i=[];for(;;){const r=e.exec(t);if(!r){t&&s&&i.push({class:"",text:t});break}r.index>0&&i.push({class:"",text:t.substring(0,r.index)}),i.push(...a(r)),s=!0,t=t.substring(r.index+r[0].length)}return{fl:s,tk:i}}function muParsecode(t,e){t||(t=" "),t.endsWith("\n")&&(t+=" ");const a=[{class:"",text:t}];for(let t=0;t<a.length;t++)if(!a[t].class){{const{fl:e,tk:s}=parseexp(a[t].text,/(\/\*[^]+?\*\/)/im,(t=>[{class:"comment",text:t[1]}]));e&&a.splice(t,1,...s)}if(!a[t].class){{const{fl:e,tk:s}=parseexp(a[t].text,/(\/\/.*)$/im,(t=>[{class:"commento2",text:t[1]}]));e&&a.splice(t,1,...s)}if(!a[t].class){{const{fl:e,tk:s}=parseexp(a[t].text,/(^\s*\{.+?\})/m,(t=>[{class:"header",text:t[1]}]));e&&a.splice(t,1,...s)}if(!a[t].class){{const{fl:e,tk:s}=parseexp(a[t].text,/(^\s*:\w+)(.*?$)/m,(t=>[{class:"param",text:t[1]},{class:"param2",text:t[2]}]));e&&a.splice(t,1,...s)}if(!e){if(a[t].class)continue;{const{fl:e,tk:s}=parseexp(a[t].text,/(^\s*!\w+)/m,(t=>[{class:"function",text:t[1]}]));e&&a.splice(t,1,...s)}if(a[t].class)continue;{const{fl:e,tk:s}=parseexp(a[t].text,/(#let.? +)([\w_.]+)/im,(t=>[{class:"comando",text:t[1]},{class:"variabile",text:t[2]}]));e&&a.splice(t,1,...s)}if(a[t].class)continue;{const{fl:e,tk:s}=parseexp(a[t].text,/(#(push|pop|ret|select|cases|endselect|ifndef|elseifndef|ifdef|endif|elseifdef|variante|forvar|for|endfor|continue|break|inc|macro|default|letm|lets|letv|lett|leto|cat))/im,(t=>[{class:"comando",text:t[1]}]));e&&a.splice(t,1,...s)}if(a[t].class)continue;{const{fl:e,tk:s}=parseexp(a[t].text,/(#(if\s*|elseif\s*))/im,(t=>[{class:"comando",text:t[1]}]));e&&a.splice(t,1,...s)}if(a[t].class)continue;{const{fl:e,tk:s}=parseexp(a[t].text,/(#(else|i |m |f |j |case|def ))/im,(t=>[{class:"comando",text:t[1]}]));e&&a.splice(t,1,...s)}if(a[t].class)continue;{const{fl:e,tk:s}=parsevariabili(a[t].text);e&&a.splice(t,1,...s)}if(a[t].class)continue;{const{fl:e,tk:s}=parseexp(a[t].text,/(\$[\w_.]+)/im,(t=>[{class:"variabile",text:t[1]}]));e&&a.splice(t,1,...s)}}}}}}return a}class Pickers{constructor(){this.clear()}clear(){this.d={},this.keypics={},this.key="",this.keypics[this.key]=0}reset(){this.keypics={},this.key="";for(let t in this.d)this.d[t]._invalid=!0}pack(){let t=[];Object.entries(this.d).forEach((([e,a])=>{a._invalid&&t.push(e),delete a._invalid}));for(let e of t)delete this.d[e]}setkey(t){this.key=t,this.keypics[t]||(this.keypics[t]=0)}add(t){let e=this.keypics[this.key]||0,a=`${this.key}_${e}`;this.keypics[this.key]=e+1;let s=this.d[a]??{};return t=t??{},this.d[a]={...s,...t,_invalid:!1,_key:this.key,_id:e},a}}function toruleset(t){const e={};if(t&&t.length)for(const a of t)e[a.cod]=a;return e}function headerconvert(t){const e=muClComments(t,!1);t={};let a={r:[]},s=!1;for(const i of e){const e=/^\s*\{(h|head|header)\s+(\w+)\}/im.exec(i);if(e)a={cod:e[2],des:e[2],r:[]},s=!1,t[e[2]]=a;else if(!/^\s*:/.exec(i)){const t=i.split(","),e={cod:clean(t[0])};let r;r=(t[1]||"").trim(),r&&(e.des=r),r=clean(t[2]),r&&(e.tipo=r),r=clean(t[3]),r&&(e.alias=r),r=clean(t[4]),r&&(e.valid=r),r=clean(t[5]),r&&(e.visible=r),e.cod&&(s||"sep"!=e.tipo?a.r.push(e):(a.des=e.des,a.valid=e.valid,a.visible=e.visible,s=!0))}}return t}function aliasconvert(t){const e=muClComments((t+"").toLowerCase(),!1),a={};for(const t of e)if(!/^\s*:/.exec(t)){const e=getcolonne(t);e[0]&&e[1]&&(a[e[0]]={cod:e[1]})}return a}class Ambiente{#a=void 0;#s=void 0;#i=void 0;#r=void 0;constructor(t=".",e=100,a=!1){this.righevuote=a,this.maxdelays=e,this.setcatalog(t),this.fndotcallback=void 0,this.pick=new Pickers}setcatalog(t){return t=clean(t),this.cat!=t&&(this.cat=t,this.item=this.rule=this.model="",this.azzera(!0)),t}get muvalutatore(){return{getcolonne:getcolonne,getcouple:getcouple,muCalc:muCalc,muEval:muEval,tipifree:w}}azzera(t=!1){this.imgpreview={},this.vari=new Variabile,this.ruleset={},this.fndotcallback&&this.vari.setfndot(this.fndotcallback),this.ruleheader="",t&&(this.macro={},this.sqcache={},this.varianti={},this.varelenco={},this.macroelenco={},this.scripts={},this.#a=void 0,this.#s=void 0,this.#i=void 0,this.#r=void 0)}setimgpreview(t,e){e?this.imgpreview[t]=e:delete this.imgpreview[t]}getimgpreview(t){return this?.imgpreview[t||""]}setfndot(t){this.fndotcallback=t,this.vari.setfndot(t)}async#n(t){if(s&&!this.varelenco[t]){const e=await s("headers",t,"_varianti");Array.isArray(e)?this.varelenco[t]=e:e.vars&&(this.varelenco[t]=e.vars,e.alias&&(this.#s=e.alias)),this.varelenco[t]||(this.varelenco[t]=[])}}parseheaderfrominfo(t){if(t&&t.length>0)for(const e of t)switch(e.tipo){case"_headers":"string"==typeof e.value&&(e.value=headerconvert(e.value)),this.#a=e.value||{};break;case"_alias":"string"==typeof e.value&&(e.value=aliasconvert(e.value)),this.#s=e.value||{};break;case"_typos":if("string"==typeof e.value){const t=fromjson(e.value);for(const e in t){const a=t[e];a.db&&(a.db=muClean(muClComments(a.db))),a.list&&(a.list=muClean(muClComments(a.list)))}e.value=t}this.#r=e.value||{}}}setitem(t,e,a,s=[],i=0){this.item=clean(t,!0),this.rule=clean(e,!0),this.model=clean(a,!0),this.ruleset=toruleset(s),this.data=i||(new Date).toInt()}async getheader(t){let e;return!this.#a&&s&&(e=await s("headers",this.cat,"_headers"),this.parseheaderfrominfo(e)),this.#a||(this.#a={}),this.#a[t]}async getalias(){let t;return!this.#s&&s&&(t=await s("headers",this.cat,"_alias"),this.parseheaderfrominfo(t)),this.#s||(this.#s={}),this.#s}get deriva(){return this.#i,this.#i||[]}async getmacro(t){try{if("string"==typeof t&&(t={tipo:"M",contenuto:t}),!t||!t.contenuto)return;let e=t.contenuto;e.startsWith("$")&&(e=await this.vari.valuta(e));const a=/^([({}):$\w.\\/]+)[\s;,]*(.*)?$/im.exec(e);if(!a)return void n.add("Macro non valida:"+e,t);let s=clean(a[1],!0);s.includes("$")&&(s=await this.vari.valuta(s));const i=getcolonne(a[2]),{name:r,cat:o}=checkmu(s,this.cat);this.cat=o;const c=`${o}/${r}`;if(!this.macro[c]){const e=new Macro(this,r);await e.load()?this.macro[c]=e:n.add(`macro fail to load ${c}`,t)}return s=this.macro[c],s?{macro:s,pars:i}:(n.add(`macro non trovata ${c}`,t),{})}catch(e){n.add(geterrdes(e),`ambiente.getmacro: ${t?.contenuto}`)}}async getvariante(t){const{name:e,cat:a}=checkmu(t,this.cat);let s=e,i={};if(a==this.cat&&this.#s&&this.#s[e],await this.#n(a),this.varelenco[a]&&!this.varelenco[a].includes(e))return;const r=`${a}/${s}`;let n;return this.varianti[r]?n=this.varianti[r]:(n=new Variante(this),await n.load(r,a),this.varianti[r]=n),i&&(i.des&&(n.des=i.des),i.vdef&&(n.vdef=i.vdef)),n}async varcompila(t,e){const a=new Variante(this);if(await a.load(t,this.cat,!0),a.alias){(await this.getalias())[t]=a.alias}e("variants",{cod:t,des:a.des||"",alias:a.alias,info:a.alias?"":JSON.stringify(getOggetto(a,["amb"]))})}async macrocompila(t,e){const a=new Macro(this,t);await a.loadAndCompile(`${t}.mu`);const s=a.getmacro();e("macros",{cod:t,info:JSON.stringify(s),isgenera:a.isgenera,isheader:a.isheader,iscodice:a.iscodice})}async barrecompila(t,e,a){const s=new CodiceBarra;await s.compila(t,e);for(const t in s.barre){a("barcodes",{cod:t,des:"",info:JSON.stringify(s.barre[t])})}return s}async tojson(t){let e;return a&&(e=await a("json",t)),e}async compila(t,e){if(e){for(const a of t.var)await this.varcompila(a,e);for(const a of t.mu)await this.macrocompila(a,e);if(e("infos",{cod:"info",des:t.cat,info:JSON.stringify({cat:t.cat,md:t.info})}),this.#a=void 0,this.#s=void 0,this.#i=void 0,this.#r=void 0,s){const t=await s("headers",this.cat,["_headers","_alias","_deriva","_typos"]);this.parseheaderfrominfo(t)}this.#a?e("infos",{cod:"headers",des:"",info:JSON.stringify(this.#a)}):logga("missing headers"),this.#s&&e("infos",{cod:"alias",des:"",info:JSON.stringify(this.#s)}),this.#i&&e("infos",{cod:"deriva",des:"",info:JSON.stringify(this.#i)}),this.#r&&e("infos",{cod:"typos",des:"tipologie",info:JSON.stringify(this.#r)})}}async checkvarianti(e,a){if(!e||!a?.length)return;e=checkname(e),await this.#n(e);const s=this.varelenco[e],i=[];for(let t of a){t=clean(t,!0);const a=`${e}/${t}`;this.varianti[a]||s&&s.includes(t)&&i.push(t)}if(i.length&&t){const a=await t(e,i);if(a&&a.length)for(const t of a){const{name:a,content:s}=t,i=new Variante(this);i.setheader(a,e),s&&await i.loadContentExtended(s),this.varianti[i.key]=i}}}async getheaderfromdb(e){const a=await s("header",this.cat,e,!this.#i);let{head:i,rows:r,macros:n,deriva:o,llvars:c}=a;for(const t of r)t.cod=clean(t.cod),t.alias=clean(t.alias),t.t=clean(t.t);if(!c){c=new Set;for(const t of r)if("p"==t.tipo);else{const e=t.alias?t.alias:t.cod;c.add(e)}c=[...c]}this.#i||(this.#i=o),await this.#n(this.cat),i.cod=clean(i.cod),i.rule=clean(i.rule),i.ruledef=i.ruledef||[];const l=[],u=this.varelenco[this.cat];for(const t of c)this.varianti[`${this.cat}/${t}`]||u&&u.includes(t)&&l.push(t);if(l.length&&t){const e=await t(this.cat,l);if(e&&e.length)for(const t of e){const{name:e,content:a}=t,s=new Variante(this);s.setheader(e,this.cat),a&&await s.loadContentExtended(a),this.varianti[s.key]=s}}return{head:i,rows:r,macros:n}}async getlinkedmacros(t,a){const getkey=t=>t.includes("/")?t:`${this.cat}/${t}`,s=[];let i;if(t&&(i=getkey(t),this.macro[i]||s.push(t)),a&&"string"==typeof a){const t=a.split(";");for(const e of t)i=getkey(e),this.macro[i]||s.push(e)}if(s&&s.length>0&&e){const t=await e(this.cat,s);if(t&&t.length>0)for(const e of t){this.checkscripts(e.content?.linkscript),delete e.content?.linkscript;const t=new Macro(this,e.name);for(const a in e.content){const s=e.content[a];t[a]=s}this.macro[t.key]=t}}}checkscripts(t){if(Array.isArray(t)&&t.length)for(let e of t)this.scripts[e.name]||(this.scripts[e.name]=e.value)}async setruleheader(t,e,a){const{name:s,cat:i}=checkmu(t,this.cat);a&&a.length&&(this.ruleset=toruleset(a));const r=`${i}/${s}`;if(!this.macro[r]){const e=await this.getheaderfromdb(s),{head:a,rows:o,macros:c}=e;await this.getlinkedmacros(a.rule,c);const l=new Macro(this,s);if(!a)return void n.add("Missing rule: "+t);if(a.rule){const t=this.macro[`${i}/${a.rule}`];if(t)for(const e in t)["cat","name","key"].includes(e)||(l[e]=t[e])}o&&o.length&&(l.head=o),this.macro[r]=l}this.ruleheader=r;const o=this.macro[r];return n.azzera(),await o.setparametri(e),o}getruleheader(){return this.macro[this.ruleheader]}async setvariante(t,e){return await impostavariante(this,null,t,e)}async valuta(t){let e;return"string"==typeof t&&(t=muClean(muClComments(t,this.righevuote))),Array.isArray(t)&&(e=await muEval(this,null,t)),e}setinfos(t){t&&(this.#a=t.headers,this.#s=t.alias,this.#i=void 0,this.#r=t.typos)}async splitteroggetti(t){let e=await this.getvariante(t),a=[];return e?.rows&&Object.values(e.rows).forEach((t=>{a.push({tipo:t.v[2]||"",cod:t.v[0]||"",des:t.v[1]||"",macro:t.v[4]||"",sps:parseInt(t.v[3])||0,isshape:parseInt(t.v[5])})})),a.length||a.push({tipo:"avob",cod:"__",des:"Vuoto",macro:"",sps:0}),a}}function toJson(t){return JSON.stringify(t,null,2)}function clamp(t,e=-1/0,a=1/0){return(t=Number(t)||0)<e&&(t=e),t>a&&(t=a),t}function gettipocolonna(t){return k.find((e=>e.cod==t))?.des||k[0].des}function gettipofolder(t){return k.find((e=>e.cod==t))?.folder||""}function newVariabile(){return new Variabile}async function newVariante(t,e,a){const s=new Variante(a);return await s.load(t,e),s}function newAmbiente(t,e=100){return new Ambiente(t,e)}function newMacro(t,e){return new Macro(t,e)}function sanitize(t,e=!1,a=!1){if(!t)return"";let s=String(t).trim().replace(a?/[^a-zA-Z0-9-+_.]/g:/[^a-zA-Z0-9-+_]/g,"_");return e?s.toLowerCase():s}function muValuta(t,e,a){a&&t.azzera();return t.valuta(e)}function muInit(t,e,a,s,i,r,n){const o=new Ambiente(t);return setcallbacks(e,a,s,i,r,n),o}function muCompileScript(t){return t&&"object"==typeof t?t:t.startsWith("{")&&t.endsWith("}")||t.startsWith("[")&&t.endsWith("]")?JSON.stringify(t):muClean(muClComments(t))}async function muEvalScript(t,e,a,s=!0){if(e=muCompileScript(e),s&&t.azzera(),a)for(const e of a){const{v:a,o:s}=getcouple(e);t.vari.add(a,s)}return{output:await muEval(t,null,e,{}),vari:t.vari.dictionary,errori:n}}Date.prototype.toInt||(Date.prototype.toInt=function(){const t=this;return t.getDate()+100*(t.getMonth()+1)+1e4*t.getFullYear()}),Date.prototype.toFloat||(Date.prototype.toFloat=function(){return Math.floor(1e4*this.getDate()+1e6*(this.getMonth()+1)+1e8*this.getFullYear()+100*this.getHours()+this.getMinutes()+.5)/1e4});const x={mus:{variants:{cod:"s",des:"s",alias:"s",info:"s",md:"s",__pk:"cod"},extras:{tipo:"s",cod:"s",info:"s",__pk:"tipo, cod"},macros:{cod:"s",des:"s",info:"s",md:"s",def:"s",isgenera:"i",iscodice:"i",isheader:"i",__pk:"cod"},infos:{cod:"s",des:"s",info:"s",__pk:"cod"},barcodes:{cod:"s",des:"s",info:"s",__pk:"cod"}}};export{Ambiente,CodiceBarra,Macro,Variabile,Variante,checkmu,checkname,clamp,clean,dammivariante,n as errori,fromjson,getOggetto,getcolonne,getcouple,geterrdes,getheaddims,gettipocolonna,gettipofolder,hash,impostavariante,intvaluta,isJsonStr,isObject,muInit as jsTest,logga,muCalc,muClComments,muClean,muCompileScript,muEval,muEvalScript,muGenerate,muInit,muLimits,muParsecode,muValuta,x as mustr,newAmbiente,newMacro,newVariabile,newVariante,noquote,parselimitifromdb,parselimitifromrule,parsevar,poppars,pushpars,quote,round,sanitize,seedarray,seeder,setOggetto,sortrows,testsync,k as tipicolonna,w as tipifree,y as tipiheader,tk,toCadPars,toJson,tonum,xdt};
|
|
1
|
+
function testsync(t,e){return t+e}const tk=()=>(new Date).valueOf();function seedarray(t,e){if(t&&t.length){let a=[];for(let e=0;e<t.length;e++){let s=t[e];if(s.p)for(let t=0;t<s.p;t++)a.push(e);else a.push(e)}return t[a[seeder(a.length,e)]]}}function seeder(t,e="seed42"){const a=function mulberry32(t){return function(){t=(t|=0)+1831565813|0;let e=Math.imul(t^t>>>15,1|t);return e=e+Math.imul(e^e>>>7,61|e)^e,((e^e>>>14)>>>0)/4294967296}}(function xmur3(t){let e=1779033703^t.length;for(let a=0;a<t.length;a++)e=Math.imul(e^t.charCodeAt(a),3432918353),e=e<<13|e>>>19;return function(){return e=Math.imul(e^e>>>16,2246822507),e=Math.imul(e^e>>>13,3266489909),(e^=e>>>16)>>>0}}(String(e))());return Math.floor(a()*t)}function isJsonStr(t){if("string"!=typeof t)return!1;const e=t.trim();return e.startsWith("{")&&e.endsWith("}")||e.startsWith("[")&&e.endsWith("]")}const isObject=t=>!(!t||!Array.isArray(t)&&"object"!=typeof t);function quote(t){if((t=(t||"").trim()).length>1){if(t.startsWith('"')&&t.endsWith('"'))return t;if(t.startsWith("(")&&t.endsWith(")"))return t}return`"${t}"`}function noquote(t){return(t=t.trim()).startsWith('"')&&t.endsWith('"')||t.startsWith("(")&&t.endsWith(")")?t.slice(1,-1):t}function hash(t){let e="";if("string"==typeof t||"number"==typeof t)e=t+"";else if("object"==typeof t&&t){const a=Object.keys(t).sort(),s="\0";e=a.map((e=>`${e}${s}${String(t[e])}`)).join(s)}let a=2166136261,s=2218511855;for(let t=0;t<e.length;t++){const i=e.charCodeAt(t);a^=i,a+=a<<5^2779096485,s^=a,s=((s<<3)+i^2134516169)>>>0}return a>>>=0,a.toString(16)+s.toString(16)}function geterrdes(t){if(t&&"object"==typeof t){let e=t.stack?.toString().replace(/^.*?node_modules.*$/gim,"")||t.message||"";e=e.replaceAll("/","_").replaceAll(".js","").replaceAll("\n\n","\n").replace(/;\s+/gi,"\n"),t=e}return(t=t.replace(/sqlite/gi,"SQL ")).replaceAll(";",",").trim()}let t,e,a,s,i,r;const logga=(...t)=>{r?r(t):console.log(...t)};function setcallbacks(n,o,c,l,u,h){e=n,t=o,a=c,s=l,i=u,r=h}const xdt=()=>(new Date).valueOf();function clean(t,e=!1){return e?(t||"").trim().toLowerCase():(t||"").trim()}function getcouple(t,e="=",a=!0){const s=(t=t||"").indexOf(e);return s>=0?{v:clean(t.substring(0,s),a),o:t.substring(s+e.length).trim(),fl:!0}:{v:clean(t,a),o:"",fl:!1}}function checkmu(t,e){if((t=(t||"").trim()).indexOf("/")>0){const a=t.split("/");e=a[0]||"",t=a[1]||""}if(!e)throw new Error("manca il catalogo per "+t);return{name:t,cat:e=checkname(e)}}function checkname(t,e=!1){if(t=(t||"").trim(),e&&!t)return"";if(!t||!/^[a-zA-Z_][a-z0-9A-Z_+-]*$/gim.test(t))throw new Error(`nome non valido: "${t}" \n deve contenere solo lettere, _, -, e numeri`);return t.toLowerCase()}function getcolonne(t,e=!1){t=String(t||"");const a=/^(\d*)\.\.(\d*)$/.exec(t);if(a){let t=parseInt(a[1])||0,e=parseInt(a[2])||0;const s=[];for(let a=t;a<=e;a++)s.push(a+"");return s}if(!/["({[]/.test(t))return t.split(/[,;]/).map((t=>t.trim()));const s=[];let i="",r=0,n=!1;for(let e=0;e<t.length;e++){const a=t[e];if(0===r&&'"'===a&&(0!==e&&"\\"===t[e-1]||(n=!n)),n||("("===a||"["===a||"{"===a?r++:")"!==a&&"]"!==a&&"}"!==a||(r=Math.max(0,r-1))),","!==a&&";"!==a||0!==r||n)i+=a;else{const t=i.trim();s.push(t),i=""}}const o=i.trim();return o&&s.push(o),s.map((t=>(t=t.trim(),!e&&(t.startsWith('"')&&t.endsWith('"')||t.startsWith("(")&&t.endsWith(")"))?t.slice(1,-1):t)))}const parsevar=(t,e,a,s,i=!1)=>{const r=["[","(","{"],n=["]",")","}"];s||(s="["==a?"]":"("==a?")":"}");const o=r.includes(a);let c=1,l=0;const u=[];for(let h=e;h<t.length;h++)if(o&&r.includes(t[h])||t[h]==a)c++;else if(o&&n.includes(t[h])||t[h]==s){if(c--,0==c&&t[h]==s)return u[l]=t.substring(e,h),{i:h,res:u}}else if(":"==t[h])1==c&&(u[l]=t.substring(e,h),e=h+1,l++);else if("\n"==t[h]&&i)return{i:h,res:u};return{i:-1,res:t.substring(e)}};function setOggetto(t,e){"object"==typeof t&&"object"==typeof e&&Object.keys(e).forEach((a=>{Object.hasOwn(t,a)&&"function"!=typeof t[a]&&(t[a]=e[a])}))}function getOggetto(t,e=[]){if(Array.isArray(t))return t.map((t=>getOggetto(t,e)));if(t&&"object"==typeof t){const a={};for(const[s,i]of Object.entries(t))"function"==typeof i||e&&e.includes(s)||(a[s]=getOggetto(i,e));return a}return t}function fromjson(t,e){if(Array.isArray(t))return t;if("string"!=typeof t)return t;if(""==t)return e||{};try{return JSON.parse(t)}catch(a){return logga(`Errore parsing JSON: ${a}\n${t}`),e||{}}}const n=new class Errori{constructor(){this.azzera()}azzera(){this.err=[]}add(t,e){this.err.push({msg:t,row:e})}get(){return this.err}get length(){return this.err.length}toString(){const t=[];for(const e of this.err){const a="object"==typeof e.msg?JSON.stringify(e.msg):e.msg||"";t.push(`${e.row?e.row+":":""}${a}`)}return t.join("\n")}},round=(t,e=-1)=>{const a="string"==typeof t?parseFloat(t)||0:t;if(e<0)return Math.round(a||0);const s=Math.pow(10,e);return Math.round(a*s)/s||0};function getheaddims(t){let e;try{e="object"==typeof t&&t?t:JSON.parse(t||"{}")}catch(t){e={}}return e||(e={}),e.l||(e.l={visible:1,val:1e3,min:0,max:1e4}),e.a||(e.a={visible:1,val:1e3,min:0,max:1e4}),e.p||(e.p={visible:1,val:1e3,min:0,max:1e4}),e}function sortrows(t){const e=Object.keys(t).sort(),a={};for(let s=0;s<e.length;s++){const i=e[s],r=t[i];s+1<e.length&&e[s+1].startsWith(i+".")?r.hasliv=1:delete r.hasliv,a[i]=r}return a}const o=/(?<!\w)\(/g,c=/^-?[0-9.]+$/,l=/^(\w+)(!)?\[(.*)?\]$/,u=/[0-9.]/,h=/[+\-*/^%]/,f=/[a-zA-Z]/i;function valutaparentesi(t){for(t=(t+"").trim();;){const e=o.exec(t);if(!e)break;{const{i:a,res:s}=parsevar(t,e.index+1,"(",")");if(a<=0)break;t=t.substring(0,e.index)+valutaparentesi(s[0])+(a>=0?t.substring(a+1):"")}}return function operatoricomparazione(t){let e,a;const s={"||":()=>valutaparentesi(e)||valutaparentesi(a)?1:0,"|":()=>valutaparentesi(e)||valutaparentesi(a)?1:0,"&&":()=>valutaparentesi(e)&&valutaparentesi(a)?1:0,"&":()=>valutaparentesi(e)&&valutaparentesi(a)?1:0,"<<=":()=>clean(e)<=clean(a),">>=":()=>clean(e)>=clean(a),"===":()=>clean(e)==clean(a),"==":()=>clean(e)==clean(a),"!!":()=>clean(e)!=clean(a),"<<":()=>clean(e)<clean(a),">>":()=>clean(e)>clean(a),"<=":()=>muCalcbase(e)<=muCalcbase(a),">=":()=>muCalcbase(e)>=muCalcbase(a),"<":()=>muCalcbase(e)<muCalcbase(a),">":()=>muCalcbase(e)>muCalcbase(a),"=":()=>muCalcbase(e)==muCalcbase(a),"!":()=>muCalcbase(e)!=muCalcbase(a)};let i=-1,r="";for(const e in s)if(i=t.indexOf(e),i>=0){r=e;break}return-1!==i?(e=t.slice(0,i),a=t.slice(i+r.length),s[r]&&s[r]()?1:0):muCalcbase(t)}(t=function valutainsiemi(t){if(t.includes("[")){function resinisiemi(t){const e=t[1],a=!!t[2],s=getcolonne(t[3]);for(const t of s)if(t==e)return a?"0":"1";return a?"1":"0"}for(;;){const e=l.exec(t);if(!e)break;{const a=resinisiemi(e);t=t.substring(0,e.index)+a+t.substring(e.index+e[0].length)}}}return t}(t))}const d={sqrt:t=>Math.sqrt(t),sqr:t=>Math.sqrt(t),pow:(t,e)=>Math.pow(t,e),int:t=>Math.floor(t),floor:(t,e=0)=>Math.floor((Number.parseFloat(t)||0)*10**e)/10**e,round:(t,e=0)=>Math.round((Number.parseFloat(t)||0)*10**e)/10**e,dec:(t,e=0)=>Math.floor((Number.parseFloat(t)||0)*10**e)/10**e,abs:t=>Math.abs(t),sin:t=>Math.sin(t*Math.PI/180),cos:t=>Math.cos(t*Math.PI/180),tan:t=>Math.tan(t*Math.PI/180),asin:t=>180*Math.asin(t)/Math.PI,acos:t=>180*Math.acos(t)/Math.PI,atan:t=>180*Math.atan(t)/Math.PI,atan2:(t,e)=>180*Math.atan2(t,e)/Math.PI,seeder:(t,e)=>seeder(t,e),log:t=>Math.log(t),log10:t=>Math.log10(t),min:(...t)=>Math.min(...t),max:(...t)=>Math.max(...t),clamp:(t,e,a)=>Math.max(e,Math.min(a,t)),rnd:(t,e)=>t?e?Math.floor(Math.random()*(e-t+1))+t:Math.floor(Math.random()*t):Math.random(),cas:(t,e)=>Math.floor(Math.random()*(e-t+1))+t};function muCalcbase(t){let e=0;function parseOperator(){const a=t[e];return h.test(a)?(e++,a):null}function parsePrimary(){if("+"===t[e]||"-"===t[e]){return("-"===t[e++]?-1:1)*parsePrimary()}if(u.test(t[e]))return function parseNumber(){const a=e;for(;e<t.length&&u.test(t[e]);)e++;return Number(t.slice(a,e))}();if("("===t[e]){e++;const a=parseExpr();return")"===t[e]&&e++,a}return f.test(t[e])?function parseFunctions(){const a=t.slice(e);if(!a)return 0;for(const[s,i]of Object.entries(d)){const r=new RegExp(`^(${s})\\(`,"i").exec(a);if(r){e+=r[0].length;let a=[];for(;;){let s=parseExpr();if(a.push(s),")"===t[e]){e++;break}if(","!=t[e])break;e++}return i(...a)}}return e++,parseExpr()}():0}function parseFactor(){let a=parsePrimary();for(;e<t.length&&/[/*^%]/.test(t[e]);){const t=parseOperator(),e=parsePrimary();"*"===t?a*=e:"/"===t?a=e?a/e:0:"%"===t?a=e?a%e:0:"^"===t&&(a=Math.pow(a,e))}return a}function parseExpr(){let a=parseFactor();for(;e<t.length&&/[+-]/.test(t[e]);){const t=parseOperator(),e=parseFactor();"+"===t?a+=e:"-"===t&&(a-=e)}return a}return t=t.replace(/\s/g,""),parseExpr()}function muCalc(t){if(!t)return 0;if("number"==typeof t)return t||0;if("string"!=typeof t)return 0;const e=t.replaceAll(",",".");return c.test(e)?Number(e)||0:valutaparentesi(t)||0}const tonum=(t,e=-1)=>{if(!t)return 0;let a=0;if("number"==typeof t)a=t||0;else if("string"==typeof t){const e=(t=t.replaceAll(",",".")).match(/^-?[0-9.]+$/);a=e&&e.length>0?Number(e[0])||0:muCalc(t)}if(e>=0)switch(e){case 0:a=Math.round(a);break;case 1:a=Math.round(10*a)/10;break;case 2:a=Math.round(100*a)/100;break;case 3:a=Math.round(1e3*a)/1e3;break;case 4:a=Math.round(1e4*a)/1e4;break;case 5:a=Math.round(1e5*a)/1e5;break;case 6:a=Math.round(1e6*a)/1e6}return a||0},m=100;function valutavar(t,e){const a=e[0]||"";if(!a)return"";if(t.counter>=m)return a;const s=valuta0(t,a);let i;if(t.stl[s])i=`-- R:${s} --`;else{const e=t.var(s);if(isObject(e))return e;t.stl[s]=!0,i=valutabase(t,e),delete t.stl[s]}if(t.counter>=m)return a;if(e[1]){let a=getcolonne(i);if("l"==e[1])return String(a.length);const s=valuta0(t,e[1]);let r;if(/^[\d.]+$/.test(s)){let t=s.split(".").map((t=>parseInt(t)));for(let e=0;e<t.length-1;e++){let s=t[e];if(!(s>=0&&s<a.length))return"";a=getcolonne(a[s])}r=t[t.length-1]}else r=muCalc(s);if(!(r>=0&&r<a.length))return"";for(i=valuta0(t,a[r]);;){let e=i.indexOf("$[");if(e<0)break;const{i:a}=parsevar(i,e+2,"[","]");if(a<e)break;let s=i.slice(e+2,a);i=i.substring(0,e)+valutaquadra(t,s)+i.substring(a+1)}}if(e[2]){const a=muCalc(valuta0(t,e[2]));if(a){let s=0;return e[3]&&(s=muCalc(valuta0(t,e[3]))),a<0?i.slice(a):s?i.substring(a-1,a+s-1):i.substring(a-1)}}return i}function valutaquadra(t,e){let a=getcolonne(e||"");const s=clean(a[0]);function replacecharcode(t){return"\\t"==t?"\t":"\\n"==t?"\n":(t||"").replace(/&(\d+)/g,((t,e)=>String.fromCharCode(parseInt(e))))}switch(s){case"set":{const e=valuta0(t,a[1]||""),s=valuta0(t,a[2]||"");t.add(e,t.var(s))}break;case"ex":{const e=valuta0(t,a[1]||"");let s=valuta0(t,a[2]||"");s||(s=",");const i=muCalc(valuta0(t,a[3]||"")),r=e.split(s);return i>0&&r[i-1]||""}case"ex2":{const e=replacecharcode(a[1]||""),s=muCalc(valuta0(t,a[2]||""));a.splice(0,3);return a.join(";").split(e)[s>0?s-1:0]||""}case"replace":return a[1].replace(new RegExp(a[2]||"x","gim"),(a[3]||"").trim());case"replace2":case"rp2":try{let t=replacecharcode(a[1]||"x");const e=replacecharcode(a[2]||"").trim();a.splice(0,3),t=t.replace(/&(\d+)/g,((t,e)=>`\\u${parseInt(e).toString(16).padStart(4,"0")}`));return a.join(";").replace(new RegExp(t,"im"),e)}catch(t){return""}case"look":case"lookb":{const t=parseFloat(a[1]||"");if(a=a.slice(2).map((t=>parseFloat(t)||0)),"lookb"==s){const e=a.filter((e=>e<=t));return e.length?Math.max(...e):t}{const e=a.filter((e=>e>=t));return e.length?Math.min(...e):t}}case"tk":{let e=muCalc(valuta0(t,a[1]||""))||0;if(!e){e=muCalc(valuta0(t,a[2]||""));const s=a[1]||"";return e?a[3].split(s)[e-1]:""}return a[e>0?e+1:2]||""}case"totab":return a.splice(0,1),a.join("\t");case"tosep":{const t=replacecharcode(a[1]||"")||";";return a.splice(0,2),a.join(t)}case"len":{let t;return a.length>2?(a.shift(),t=a.join(";")):t=a[1]||"",t.length}case"mid":{const e=valuta0(t,a[1]||""),s=muCalc(valuta0(t,a[2]||"")),i=muCalc(valuta0(t,a[3]||""));return e.substring(s-1,s+i-1)}case"arrotonda":{const t=muCalc(a[1]);let e=1;return["0","1","2","3","4","5","6"].includes(a[2])?e=Math.pow(10,parseInt(a[2])):(e=muCalc(a[2]),0==e&&(e=1e3)),Math.round(t*e)/e}case"iif":return muCalc(valuta0(t,a[1]))?a[2]||1:a[3]||0;case"instr":case"instr2a":{const t=a[1]||"",e=a[2]||"";return t.toLowerCase().indexOf(e.toLowerCase())+1}case"instr2":{const t=a[1]||"";return a.splice(0,2),a.join(";").toLowerCase().indexOf(t.toLowerCase())+1}default:return s.startsWith(".")?{fun:e,pars:[]}:{fun:s,pars:a}}}function valuta0(t,e){if(e+="",t.counter>=m)return e;for(;;){const a=/\$([{(])/im.exec(e);if(!a)break;{const s=a.index,{i:i,res:r}="("==a[1]?parsevar(e,s+2,"(",")"):parsevar(e,s+2,"{","}");let n=valutavar(t,r);if(isObject(n))return n;e=valuta0(t,e.substring(0,s))+n+(i>=0?valuta0(t,e.substring(i+1)):"")}}return e=(e=e.replace(/\$([a-z|][\w|.]*)/gi,((e,a)=>{let s="";for(;a.length;){let e;if(t.stl[a]?e=`--R: ${a} --`:(t.stl[a]=!0,e=valutabase(t,t.var(a)),delete t.stl[a]),e||!(a.length>1)){s=e+s;break}s=a.slice(-1)+s,a=a.substring(0,a.length-1)}return s}))).replace(/\$(\d+):(\d+)(:(\d+))?/g,((t,e,a,s,i)=>{i=i?+i:1;const r=[];for(let t=+e;t<=+a;t+=i)r.push(t.toString());return r.join(";")}))}function valutabase(t,e){return e&&(t.counter++,t.counter<=m&&(e=valuta0(t,e)),t.counter--),e}class Variabile{constructor(){this.stl={},this.dictionary={},this.vec=[],this.counter=0,this.fndotcallback=void 0}static isValidKey(t){return/^[\w][\w\d.[\]]*$/.test(t)}static sanitizeKey(t){return t.replace(/[^a-zA-Z0-9_.[\]]/g,"_")}setfndot(t){this.fndotcallback=t}push(){this.vec.push({saves:[],dic:{...this.dictionary}})}pop(){if(this.vec.length>0){let t=this.vec.pop(),e={};if(t.saves&&t.saves.length)for(let a of t.saves)e[a]=this.dictionary[a];if(this.dictionary=t.dic,t.saves&&t.saves.length)for(let a of t.saves)this.dictionary[a]=e[a]}}savevars(t){if(!this.vec.length>0)return;let e=this.vec[this.vec.length-1];e.saves||(e.saves=[]);let a=t.split(",");for(let t of a){const a=Variabile.sanitizeKey(t);a&&!e.saves.includes(a)&&e.saves.push(a)}}clear(){this.vec=[],this.dictionary={}}azzera=()=>this.clear();var(t){let e="";const a=/^(\d*)\.\.(\d*)$/.exec(t);if(a){let t=parseInt(a[1])||0,e=parseInt(a[2])||0;const s=[];for(let a=t;a<=e;a++)s.push(a+"");return s}if(t.indexOf("|")>=0){const a=t.split("|");t=a[0],e=a[1]}function toformat(t,e){switch(e.trim().toLowerCase()){case"0":return String(parseInt(t)||0);case"-":return String((parseInt(t)||1)-1);case"+":return String((parseInt(t)||0)+1);case"data":return a=parseFloat(t)||0,new Intl.DateTimeFormat("it",{day:"2-digit",month:"short",year:"2-digit"}).format(a.toDate());case"euro":return((t,e="")=>{if(t){let e=Intl.NumberFormat("en",{style:"currency",currency:"EUR"}).format(t);return e=e.replace(/€/g,"").replace(/\./g,";").replace(/,/g,".").replace(/;/g,",")+"€",e}return e})(parseFloat(t));case"num":return tonum(parseFloat(t));case"n":case"n0":case"n1":case"n2":case"n3":case"n4":{const a=parseInt(e.slice(1))||0;return tonum(parseFloat(t),a)}case"u":return String(t).toUpperCase();case"l":return String(t).toLowerCase();default:return t}var a}const s=Variabile.sanitizeKey(t);if(s.startsWith(".")&&this.fndotcallback){const t=this.fndotcallback(s.toLowerCase());if(t)return toformat(t,e)}if(Variabile.isValidKey(s)){const t=s.toLowerCase(),a=/^([\w][\w\d]*)([.[])/.exec(t);if(a){const s=this.dictionary[a[1]];if(s&&"object"==typeof s)return toformat(function objval(t,e){const a=e.split(".");let s=t;for(let t=0;t<a.length;t++){const e=a[t],i=e.match(/(.*?)\[(\d*)\]/);if(i){if(i[1]&&(s=s[i[1]]),void 0===s)return"";s=s[parseInt(i[2],10)||0]}else switch(e){case"_k":s=(Object.keys(s)||[]).join(",");break;case"_v":s=Object.values(s)||[];break;case"_l":s=s.length||0;break;default:s=s[e]}if(void 0===s)return""}return"number"==typeof s?s+"":s}(s,("["==a[2]?a[2]:"")+t.substring(a[0].length)),e)}return toformat(this.dictionary[t]||"",e)}return""}getvar(t){return this.var(t)}colonna(t,e){return getcolonne[e]||t}dump(t=!1){let e=[];for(const t in this.dictionary)e.push({cod:t,val:this.dictionary[t]});return e=e.sort(((t,e)=>t.cod>e.cod)),t?e.map((t=>`${t.cod} = ${isObject(t.val)?JSON.stringify(t.val,null,2):t.val}`)):e}add(t,e){if(t)if("number"==typeof e&&(e=String(e)),t.includes("*")){const a=Variabile.sanitizeKey(t.split("*")[0]);if(Variabile.isValidKey(a)){const t=a.toLowerCase();let s=Object.keys(this.dictionary).filter((e=>e.startsWith(t)));for(let t of s)e?this.dictionary[t]=e:delete this.dictionary[t]}}else{const a=Variabile.sanitizeKey(t);if(Variabile.isValidKey(a)){const t=a.toLowerCase();0===e||e?this.dictionary[t]=e:delete this.dictionary[t]}else logga(`Invalid key: ${t}=${e}`)}}removeallvars(t){if(Array.isArray(t)){let e=Object.keys(this.dictionary);for(let a of e)t.includes(a)||delete this.dictionary[a]}else this.dictionary={}}valutasync(t){return valutabase(this,t)}async valuta(t,e){this.stl={};let a=await async function valutafunc(t,e,a){if(e){for(let s=0;s<20;s++){const s=e.lastIndexOf("$[");if(!(s>=0)){e=valutabase(t,e);break}{const{i:i,res:r}=parsevar(e,s+2,"[","]"),n=valutabase(t,e.substring(0,s)),o=r?r[0].startsWith(".")?valutabase(t,r.join(":")):valutabase(t,r[0]):"",c=i>=0?valutabase(t,e.substring(i+1)):"";let l=valutaquadra(t,o);if("object"==typeof l&&(l=a?await a(l?.fun,l.pars):`** fun: ${l.fun} ** `),isObject(l))return l;e=n+l+c}}return e}return""}(this,t,e);return isObject(a)||(a=(t=>{for(;;){const e=t.indexOf("{");if(!(e>=0))break;{const{i:a,res:s}=parsevar(t,e+1,"{","}");if(a<0)return t;t=t.substring(0,e)+muCalc(s[0])+(a>=0?t.substring(a+1):"")}}return t})(a)),a}async parametrokeyval(t){if("string"!=typeof t)return{};if(!(t=t.trim()))return{};let e,a,s,i=!1;return t.startsWith("#")&&(i=!0,t=t.slice(1)),s=t.indexOf("="),s>0?(e=clean(t.slice(0,s)),a=t.slice(s+1)):(s=t.indexOf(":"),s>0?(e=clean(t.slice(0,s)),a=t.slice(s+1),a=this.var(a)):(e=clean(t),a=this.var(e))),a&&"string"==typeof a&&a.includes("$")&&(a=await this.valuta(a)),["l","a","p"].includes(e)&&(i=!0),i&&(a=muCalc(a)),{k:e,v:a}}}class CodiceBarra{constructor(){this.barre={}}azzera(){this.barre={}}oriented(t,e,a,s){switch(t=(t||"1").substr(0,1).toLowerCase()){case"0":break;case"l":return{t:"l",x:e};case"a":return{t:"a",x:a};case"p":return{t:"p",x:s};case"2":return{t:t,x:e,y:s,z:a};case"5":return{t:t,x:e,y:a,z:s};case"4":return{t:t,x:s,y:e,z:a};case"3":return{t:t,x:a,y:s,z:e};case"6":return{t:t,x:s,y:a,z:e};default:return{t:"1",x:a,y:e,z:s}}}async getcode(t,e,a,s,i){let[r,n]=t.split(":");n=n||"";const getcode0=async(t,r)=>{let n=this.barre[t];if(!n&&i&&(n=await i(t),n||(n={t:"1",r:[]}),this.barre[t]=n,n.coderr&&"errore"!=n.coderr||(n.coderr=`#err_${t}`)),!n||0==n.r.length)return{extra:{err:"missing codicebarra"},c:`#err_${t}`,fm:10};const{t:o,x:c,y:l,z:u}=this.oriented(t,e,a,s),h={barra:t,fm:n.fm,t:o,liv:r,items:n.r.length,err:""};let f=n.r;if(u){const t=f.filter((t=>t.z===u||!t.z));t.length>0?f=t:h.err=`spessore non coerente: ${u}`}if("l"==o||"a"==o||"p"==o){const t=f.find((t=>t.x>=c));if(t)return{c:t.c,fm:t.x==c?0:1,x1:t.x,x:c,extra:h}}else{let t=f.find((t=>t.x==c&&t.y==l));if(t)return{c:t.c,fm:0,x:c,y:l,z:u,x1:t.x,y1:t.y,z1:t.z,extra:h};if(0!=n.fm&&(t=f.find((t=>t.x>=c&&t.y==l)),t))return{c:t.c,fm:1,x:c,y:l,z:u,x1:t.x,y1:t.y,z1:t.z,extra:h};if(0!=n.fm&&2!=n.fm&&(t=f.find((t=>t.x>=c&&t.y>=l)),t))return{c:t.c,fm:2,x:c,y:l,z:u,x1:t.x,y1:t.y,z1:t.z,extra:h}}return n.codalt&&r<5?await getcode0(n.codalt,r+1):{c:n.coderr,fm:9,x:c,y:l,z:u,extra:h}};return await getcode0(r,0)}compila(t,e){e||(e={});const a={};if(Array.isArray(t)){for(const s of t)if(s.cod=clean(s.cod),s.barcode=clean(s.barcode),s.barcode.length>2&&"+"==s.barcode[0]){s.barcode=s.barcode.substr(1);const t=this.oriented(s.barcode.substr(0,1),s.l,s.a,s.p);t.c=s.modello?{c:s.cod,m:s.modello}:s.cod,a[s.barcode]||(a[s.barcode]={t:s.barcode.substr(0,1),r:[]},e[s.barcode]&&(a[s.barcode]=Object.assign(e[s.barcode],a[s.barcode]))),a[s.barcode].r.push(t)}for(const t in a){a[t].r.sort(((t,e)=>t.y?1e4*(t.x-e.x)+(t.y-e.y):t.x-e.x))}}this.barre=a}}const p="IFDEF|IFNDEF|SETDEF|CZERO|CACHE|RET|CVAR|LOOK|LOOKB|SELECT|CASES|CASE|LOG|MSG|DEFAULT|ELSEIFDEF|ELSEIFNDEF|ELSEIF|ELSE|ENDIF|ENDSELECT|PUSH|POP|FUNC|MACRO|LETS|LETO|LETM|LETT|LETV|LETM|LET|DEF|DO|VARIANTE|FORVAR|FOR|LOOP|ENDFOR|BREAK|EXIT|EXITFOR|CONTINUE|IF|INC|I|F|M|J|T|:P".split("|");function toCadPars(t){const e=muClComments(t),a=[];for(const t of e){const e=t.includes("(")||t.includes("[")?[t]:getcolonne(t,!0);let s=!1;for(const t of e)!t.startsWith('"')&&t.includes("=")?(a.push(t),s=!0):s&&(a[a.length-1]+=","+t)}const s={};for(const t of a){let{v:e,o:a}=getcouple(t,"=",!1);a=a||"",e&&(/^[-+]?\d*\.?\d+$/.test(a)&&(a=parseFloat(a)),s[e]=a)}return s}function muClComments(t,e){const a=(s=t,s.replace(/("(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*')|\/\*[\s\S]*?\*\//g,((t,e)=>e||""))).split(/\r?\n/);var s;const i=[];let r="";for(const t of a){let a=t;if(/(^|[^:])\/\/.*/.test(a)&&(a=a.replace(/(^|[^:])\/\/.*/,((t,e)=>e.trim()))),a=a.trim(),0!==a.length||e)if(r.length>0&&(a=r+" "+a,r=""),a.endsWith("\\")){a=a.slice(0,-1);const t=a.lastIndexOf("//");-1!==t&&(a=a.slice(0,t).trim()),r=a}else i.push(a)}return i}function muClean(t,e=!1){if(!Array.isArray(t))return void n.add("muClean: expected array!");const a=[];function addgen(t){if(a.length>0&&""==a[a.length-1].tipo){const s=a[a.length-1];e||!(!t.startsWith("!")&!t.startsWith("."))||t.startsWith("$")||t.startsWith("{")||t.startsWith("#")||s.contenuto.startsWith("!")||s.contenuto.startsWith(".")||s.contenuto.startsWith("$")||s.contenuto.startsWith("{")||s.contenuto.startsWith("#")?a.push({tipo:"",contenuto:t}):s.contenuto=s.contenuto+"\n"+t}else a.push({tipo:"",contenuto:t})}for(const e of t){const t=e.match(/^#([\w.]+)\s*(.*)$/);if(t){let s=t[1].toUpperCase().trim(),i="";if(s.includes(".")){const t=s.split(".");s=t[0],i=t[1]}if(p.includes(s)){const e=t[2];if("IF"!==s&&"IFDEF"!=s&&"IFNDEF"!=s||!e.includes("#")){const e={tipo:s,contenuto:t[2]};i&&(e.tipo2=i),a.push(e)}else{let i=e.match(/^(.*?)\s*#\s*(\w+)\s*(.*?)\s*#\s*(\w+)\s*(.*)$/);i?(a.push({tipo:s,contenuto:i[1].trim()}),a.push({tipo:i[2].toUpperCase(),contenuto:i[3]}),a.push({tipo:"ELSE",contenuto:""}),a.push({tipo:i[4].toUpperCase(),contenuto:i[5]}),a.push({tipo:"ENDIF",contenuto:""})):(i=e.match(/^(.*?)\s*#\s*(\w+)\s*(.*)$/),i?(a.push({tipo:s,contenuto:i[1].trim()}),a.push({tipo:i[2].toUpperCase(),contenuto:i[3]}),a.push({tipo:"ENDIF",contenuto:""})):a.push({tipo:t[1].toUpperCase(),contenuto:t[2]}))}}else addgen(e)}else addgen(e)}let s=0,i=0,r=0,o=[],c=[],l=[];for(let t=0;t<a.length;t++){const e=a[t];switch(e.i=t,e.tipo){case"FOR":case"FORVAR":case"VARIANTE":case"DO":i++,c[i]={pos:t,bk:[]};break;case"LOOP":case"ENDFOR":if(i>0){const{pos:s}=c[i];for(const e of c[i].bk)e.next=t,e.prev=s;e.prev=s,a[s].next=t,i--}break;case"BREAK":case"EXIT":case"EXITFOR":case"CONTINUE":i>0&&c[i].bk.push(e);break;case"IF":case"IFDEF":case"IFNDEF":s++,o[s]={pos:t,bk:[e]};break;case"SELECT":r++,l[r]={pos:t,bk:[e],first:t};break;case"ELSEIF":case"ELSEIFDEF":case"ELSEIFNDEF":case"ELSE":if(s>0){const{pos:i}=o[s];o[s].bk.push(e),a[i].next=t,o[s].pos=t}break;case"CASE":case"CASES":case"DEFAULT":if(r>0){const{pos:s,first:i}=l[r];l[r].bk.push(e),a[s].next=t,e.first=i,l[r].pos=t}break;case"ENDIF":if(s>0){const{pos:e,next:i}=o[s];a[e].next=t;for(const e of o[s].bk)e.last=t;s--}break;case"ENDSELECT":if(r>0){const{pos:e,next:s}=l[r];a[e].next=t;for(const e of l[r].bk)e.last=t;r--}}}return a}function muLimits(t){const e=muClComments(t),a=[];let s;const parsa=t=>t?[...new Set(t.split(",").map((t=>t.trim())).sort().filter((t=>t)))]:void 0;for(const t of e){let e=/^\s*\{(.*)?\}/im.exec(t);if(e)"limit"==clean(e[1])?(s={},a.push(s)):s=void 0;else if(s&&(e=/^\s*:(\w+)\s*(.*)/.exec(t),e))switch(e[1].toLowerCase()){case"opz":case"o":s.opz=parsa(e[2]);break;case"obs":case"obsolete":s.obsolete=parsa(e[2]);break;case"scons":case"sconsigliate":s.scons=parsa(e[2]);break;case"neutri":s.neutri=parsa(e[2]);break;case"art":s.art=parsa(e[2]);break;case"mod":s.mod=parsa(e[2]);break;default:logga("missing:",e[1])}}return a}function parselimitifromdb(t){let e,a=[];if(t&&t.length)for(const s of t){e={},s.varfilter=fromjson(s.varfilter,[]),s.result=fromjson(s.result,[]),s.result2=fromjson(s.result2,[]),s.exclude=parseInt(s.exclude)?1:0,s.exclude2=parseInt(s.exclude2)?1:0;const{item:i,model:r,rule:n,varfilter:o,result:c,result2:l,exclude:u,exclude2:h,datai:f,dataf:d}=s;function remap(t){let e=t.map((t=>clean("string"==typeof t?t:t.Value,!0)));return{k1:e.filter((t=>t&&!t.includes("*"))),k2:e.filter((t=>t&&t.includes("*"))).map((t=>t.split("*")[0]))}}if(e.id=s.id,c.length||l.length){if(c.length)if(u){let m=remap(c);e.ex=m.k1,e.ex2=m.k2}else{let p=remap(c);e.valid=p.k1,e.v2=p.k2}if(i&&(e.i=clean(i).split(";")),r&&(e.m=clean(r).split(";")),n&&(e.r=clean(n).split(";")),(f||d)&&f<d&&(e.datai=parseInt(f),e.dataf=parseInt(d)),o&&o.length){e.v=[];for(const v of o){let g=e.v.find((t=>t.v==clean(v.Variant)));g||(g={v:clean(v.Variant),o:[]},e.v.push(g)),g.o=[...g.o,...clean(v.Value).split(";")],g.o=[...new Set(g.o.filter((t=>t)))]}}setlevelimite(e),a.push(e)}}return a=a.sort(((t,e)=>e.l-t.l)),a}function setlevelimite(t){let e=0;t.i&&t.i.length&&(e+=5),t.m&&t.m.length&&(e+=3),t.r&&t.r.length&&(e+=2),t.v&&t.v.length&&(e+=3),t.datai&&t.dataf&&(e+=1),t.l=e}function parselimitifromrule(t){function parsevettorelimiti(t){const e={},a=/^\s*[!:]\s*(\w+)\s*(.*)$/i;function addres(t,a){function addres0(t,a){(a=clean(a))&&(e[t]||(e[t]=[]),e[t].includes(a)||e[t].push(a))}if(Array.isArray(a))for(const e of a)addres0(t,e);else addres0(t,a)}for(const s of t){const t=a.exec(s);if(t)switch(t[1]){case"var":case"v":case"variante":{const a=(t[2]||"").indexOf(" ");if(a>0){const s=clean(t[2].substring(0,a)),i=getcolonne(t[2].substring(a+1));if(s&&i&&i.length){e.v||(e.v=[]);let t=e.v.find((t=>t.v==s));t||(t={v:s,o:[]},e.v.push(t));for(const e of i)t.o.includes(e)||t.o.push(e)}}}break;case"d":case"dt":case"data":case"date":{const a=t[2].split(" "),s=parseInt(a[0]),i=parseInt(a[1]);(s||i)&&(e.datai=s,e.dataf=i)}break;case"rule":case"r":case"mu":addres("r",getcolonne(t[2]));break;case"item":case"i":addres("i",getcolonne(t[2]));break;case"model":case"m":addres("m",getcolonne(t[2]));break;case"e":case"escludi":case"exclude":addres("ex",getcolonne(t[2]))}else addres("valid",getcolonne(s))}return setlevelimite(e),e}let e;if(t&&t.length){for(const a of t){const t=parsevettorelimiti(a);if(t&&(t.valid&&t.valid.length||t.ex&&t.ex.length)){let a=0;t.i&&t.i.length&&(a+=5),t.m&&t.m.length&&(a+=3),t.r&&t.r.length&&(a+=2),t.v&&t.v.length&&(a+=3),t.datai&&t.dataf&&(a+=1),t.l=a,e||(e=[]),e.push(t)}}e&&(e=e.sort(((t,e)=>e.l-t.l)))}return e}class Variante{constructor(t){this.rows={},this.name="$",this.key="$",this.limits=void 0,this.amb=t}setheader(t,e){const{name:a,cat:s}=checkmu(t,e);return this.cat=s,this.name=a,this.alias="",this.obbligo=!1,this.des=a,this.vdef=[],this.rows={},this.h=[],this.key=`${s}/${a}`,{name:a,cat:s}}fromdim(t,e=2){"number"!=typeof t&&(t=muCalc(t)),e>0&&e--;let a,s=1e9;for(const i in this.rows){const r=this.rows[i];if(!r.annulla){const i=parseFloat(r.v[e])||0;i<=s&&i>=t&&(s=i,a=r)}}return this.#t(t,a)}async load(e,a,i=!1){const{name:r,cat:n}=this.setheader(e,a);if(t){const e=await t(n,r);if(e){if(await this.loadContentExtended(e),e.filter)this.limits=parselimitifromdb(e.filter);else if(s&&!i){const t=await s("filter",n,r);t&&t.length&&(this.limits=parselimitifromdb(t))}return!0}}return!1}async _loadContent(t){const e=/^\s*[!:]\s*(\w+)\s*(.*)$/i;let a="";const s=[];let i,r=!1;for(const n of t){const t=n.toLowerCase();if("{limit}"==t)i=[],s.push(i),r=!0;else if("{:limit}"==t)r=!1;else if(r)i.push(n);else{let t=e.exec(clean(n));if(t)if(a&&"extra"==t[1].toLowerCase()){const e=getcolonne(t[2]);for(const t of e){const e=t.indexOf("=");if(e>0){const s=clean(t.substring(0,e));"v"!=s&&(this.rows[a][s]=t.substring(e+1).trim())}}}else switch(t[1].toLowerCase()){case"alias":{const e=t[2].toLowerCase().split(";");if(e[0].trim()!=this.name)if(1==e.length)this.alias=e[0];else{let a;if(this.amb?a=await this.amb.getvariante(e[0]):(a=new Variante,await a.load(e[0],this.cat)),t=a?.rows,t){let a=Object.keys(t);if(a.length){e.splice(0,1);const addrows=e=>{e&&e.forEach((e=>this.rows[e]=t[e]))};for(const t of e){const e=/([ei])\s*:\s*(.*)\s*$/im.exec(t);if(e){const t=e[2].split(",");for(let e=0;e<t.length;e++)t[e]=t[e].trim();a="e"==e[1]?a.filter((e=>{for(const a of t)if(e.startsWith(a))return!1;return!0})):a.filter((e=>{for(const a of t)if(e.startsWith(a))return!0;return!1}))}}addrows(a)}}}}break;case"h":this.h=getcolonne(t[2]).map((t=>({des:t})));break;case"t":{const e=getcolonne(t[2]);if(this.h)for(let t=0;t<this.h.length;t++)this.h[t].t=e[t]||""}break;case"des":this.des=t[2];break;case"default":case"vdef":this.vdef=getcolonne(t[2]);break;case"obbligo":this.obbligo=!0;break;case"noerp":this.noerp=!0;break;case"noobbligo":this.obbligo=!1}else{const t=getcolonne(n),e=clean(t[0]);e&&(a=e,this.rows[a]={annulla:0,v:t})}}}const n=Object.keys(this.rows);for(const t of n)if(t.includes(".")){const e=t.split(".");for(let t=0;t<e.length-1;t++){const a=e.slice(0,t+1).join(".");this.rows[a]||(this.rows[a]={annulla:0,v:[a]})}}return this.limits=parselimitifromrule(s),!0}tovec(){const t=this.rows,e=[],a=Object.keys(t).sort();for(const t of a)this.rows[t].annulla<2&&e.push(this.#t(t,this.rows[t]));return e}#t(t,e){const a=[t];if(e)for(const t of e.v)"string"==typeof t&&(t.includes(",")||t.includes(";"))?a.push(quote(t)):a.push(t||"");return a.join(",")}tovar(t,e=""){const a=clean(t);if(!this.rows[a])return e||t;const s=this.rows[a];return 2==s.annulla?"":this.#t(e||t,s)}isvalidopz(t){const e=clean(t),a=this.rows[e];return!!a&&(1!=a.annulla&&!a.hasliv)}firstvalid(t,e=void 0){const a=t.indexOf(",");if(a>0&&(t=t.slice(0,a).trim()),t&&this.isvalidopz(t))return t;if(e&&e.length)for(const t of e)if(this.isvalidopz(t))return t;if(this.vdef&&this.vdef.length)for(const t of this.vdef)if(this.isvalidopz(t))return t;const s=Object.keys(this.rows).sort();for(let t=0;t<s.length;t++){const e=s[t];if(!(t<s.length-1&&s[t+1].startsWith(e+"."))&&this.isvalidopz(e))return e}}resetfilter(){delete this._valids;for(const t in this.rows)this.rows[t].annulla=0}validkeys(){let t=Object.keys(this.rows)||[];return t=t.filter((t=>0==this.rows[t].annulla)).sort(),t}limitaevo(t){if(!t||!this.amb||!this.amb.vari?.dictionary)return;if(!(t=muClComments(t.toLowerCase())).length)return;let e=this.amb.vari.dictionary[this.name];for(const e in this.rows){this.amb.vari.dictionary[this.name]=this.#t(e,this.rows[e]);let a=1;for(let e of t){if(a*=muCalc(this.amb.vari.valutasync(e)),!a)break}a||(this.rows[e].annulla=1)}this.amb.vari.dictionary[this.name]=e}limitfiltra(t){if(!t)return;t=muClComments(t.toLowerCase());const e=[];for(const a of t){const t=/^#(i|e|xe|xi|x\+|x-|x)(\d*)\s+(.+)$/i.exec(a);if(t){const a={ex:t[1],col:(parseInt(t[2])||1)-1,val:"x"==t[1]?t[3]:getcolonne(t[3])};a.val.length&&e.push(a)}}if(e.length)for(const t in this.rows){const a=this.rows[t];for(const t of e)if("e"==t.ex){if(_check((a.v[t.col]+"").toLowerCase(),t.val)){a.annulla=1;break}}else if(t.ex.startsWith("x")){const e=(a.v[t.col]+"").toLowerCase().split(/[,;]/).map((t=>t.trim()));if("xe"==t.ex){if(_check((t.val+"").toLowerCase(),e)){a.annulla=1;break}}else if("x+"==t.ex){if(parseFloat(a.v[t.col])<=parseFloat(t.val)){a.annulla=1;break}}else if("x-"==t.ex){if(parseFloat(a.v[t.col])>=parseFloat(t.val)){a.annulla=1;break}}else if(!_check((t.val+"").toLowerCase(),e)){a.annulla=1;break}}else if(!_check((a.v[t.col]+"").toLowerCase(),t.val)){a.annulla=1;break}}function _check(t,e){if(1==e?.length&&"."==e[0])return!!t;return!!e.find((e=>e.startsWith(t)))}}limita(t,e){if(e&&e.length){for(const t in this.rows)this.rows[t].annulla=e.includes(t)?0:1;return}if(this.resetfilter(),t&&t.length){if(t.includes("$"))return this.amb&&this.limitaevo(t),this;this.limitfiltra(t)}if(!this.limits||!this.amb)return this;const{item:a,rule:s,model:i,vari:r,data:n}=this.amb,valid=(t,e)=>!e||!e.length||!!t&&e.includes(t);let o=!1;const c=this.limits.filter((t=>{if(!valid(a,t.i))return!1;if(!valid(s,t.r))return!1;if(!valid(i,t.m))return!1;if(n&&t.datai&&n<t.datai)return!1;if(n&&t.dataf&&n>t.dataf)return!1;if(t.v&&t.v.length)for(const e of t.v){const t=clean(r.var(e.v).split(",")[0],!0);if(t&&!e.o.includes(t))return!1}return(t.valid?.length||t.v2?.length)&&(o=!0),t.ex?.length||t.ex2,!0}));if(!c||!c.length)return this;for(let[t,e]of Object.entries(this.rows))if(!e.annulla){let a=!0,s=!1;if(o)for(let e of c){let s=!1;if(e.valid?.length&&e.valid.includes(t)&&(s=!0),!s&&e.v2?.length)for(let a of e.v2)if(t.startsWith(a)){s=!0;break}if(!s){a=!1;break}}for(let e of c){if(e.ex?.length&&e.ex.includes(t)){s=!0;break}if(e.ex2?.length)for(let a of e.ex2)if(t.startsWith(a)){s=!0;break}if(s)break}e.annulla=a&&!s?0:1}return c}async loadContentExtended(t){if("object"==typeof t){for(const e in t)["rows","des","h","alias","obbligo"].includes(e)&&(this[e]=t[e]);"string"==typeof t.def&&t.def.length&&(this.vdef=getcolonne(t.def.trim().toLowerCase())),t.filter&&t.filter.length&&(this.limits=parselimitifromdb(t.filter))}else await this._loadContent(muClComments(t,!1))}todata(){return{name:this.name,des:this.des,alias:this.alias,obbligo:this.obbligo,h:this.h,rows:this.rows,limits:this.limits,key:this.key}}}const v={};async function getcbfunc(t,e,s,i,r,n){if(a){if(v[e])return"";let t=await a(e,s,i,r,n);return isObject(t)||(t=(t||"").trim(),"!"==t&&(v[e]=!0,t="")),t}return t}async function intvaluta(t,e,a){return t.vari.valuta(a,(async(a,s)=>{switch(a){case"dim":{let a=muCalc(s[1]),i=await dammivariante(t,e,s[2]),r=parseInt(s[3])||2;return i&&i.fromdim?i.fromdim(a,r):a}case"seed":{let t=s[1],e=getcolonne(s[2]);return e[seeder(e.length,t)]||""}case"seedvar":{let a=await dammivariante(t,e,s[2]),i=s[1],r=a.validkeys();if(s[3]&&s[4]){let t=muCalc(s[3])-1;if(t>=0){let e=getcolonne(s[4]);r=r.filter((s=>{let i=a.rows[s];if(i&&i.v&&i.v[t]){let a=getcolonne(i.v[t]);if(a)for(let t of e)if(a.includes(t))return!0}return!1}))}}let n=seeder(r.length,i);return n>=0&&a.tovar(r[n])||""}default:return await getcbfunc(`**fun:${a}**`,a,s,t.vari,t)}}))}async function dammivariante(t,e,a){let s;return s=e&&e?.localvar&&e.localvar[a]?e.localvar[a]:await t.getvariante(a),s}async function impostavariante(t,e,a,s,i){let r,n=a;if((s=s||"")&&"string"==typeof s){const t=s.indexOf(":");t>=0&&(t>0&&(n=clean(s.slice(0,t))),s=s.slice(t+1))}if(i&&i.alias&&(n=i.alias),e&&e.paralias&&e.paralias[a]&&(n=e.paralias[a]),r=await dammivariante(t,e,n),r)if(i&&i.t){i.des||(i.des=r.des);let e=i?.filtra||"";if(e.includes("$")&&e.startsWith("#")&&(e=await t.vari.valuta(e)),"m"===i.t){let t=2;if(s.includes(":")){const e=s.split(":");t=parseInt(e[1]),s=e[0]}r.limita(e),s=r.fromdim(parseFloat(s),t)}else{r.limita(e);const t=r.firstvalid(s,getcolonne(i.def));s=r.tovar(t)}}else r.resetfilter(),s=r.firstvalid(s),s=r.tovar(s);else i&&i.t&&i.t;return t.vari.add(a,s),s}async function pushpars(t,e,a,s){const i={},r=[];if(a)for(const s of a){const{v:a,o:n,fl:o}=getcouple(s);i[a]||(i[a]=!0,r.push({v:a,o:t.vari.var[a]}),o&&await impostavariante(t,e,a,n))}if(s)for(const a of s){const{v:s,o:n,fl:o}=getcouple(a);i[s]||(i[s]=!0,r.push({v:s,o:t.vari.var[s]}),o&&await impostavariante(t,e,s,n))}return r}function poppars(t,e){if(e)for(const a of e)t.vari.add(a.v,a.o)}const outpush=(t,e)=>{null!=e&&null!=e&&("object"==typeof e?t.push(JSON.stringify(e,null,2)):"string"==typeof e&&e.startsWith("_ ")&&t.length>0&&"string"==typeof t[t.length-1]?t[t.length-1]+=e.slice(2):t.push(...e.split("\n")))};async function muEval(t,e,a,s){if(!Array.isArray(a))return n.add("codice is not a valid parsed array"),[];const zeroval=()=>t&&t._managezero?"0":"";s||(s={}),s.id||(s.id="_"),s._stackmacro||(s._stackmacro=0),s.limited||(s.limited=!1),t||n.add("amb deve essere definito");const i=t.vari;t.maxdelays;const r=t.cat,o=[];let c;tk();for(let l=0;l<a.length;){let u=a[l];switch(u.tipo){case"IFDEF":case"IFNDEF":case"IF":{const h="IF"==u.tipo?muCalc(await intvaluta(t,e,u.contenuto)):"IFDEF"==u.tipo?""!=await intvaluta(t,e,u.contenuto):""==await intvaluta(t,e,u.contenuto);u.next?(a[u.next].jlast=h?1:0,h||(l=u.next-1)):n.add("Troppo tempo",u)}break;case"SELECT":u.next?(a[u.next].t1=await intvaluta(t,e,u.contenuto),l=u.next-1):n.add("manca endselect",u);break;case"CASE":case"CASES":case"DEFAULT":if(u.next)if(u.jlast)u.jlast=0,l=u.last-1;else{let f,d=1;const _getvv=async()=>{let a=await intvaluta(t,e,u.contenuto);return a=a.includes(":")&&!a.includes(",")?a.split(":").map((t=>(t||"").trim())):getcolonne(a),a};if("CASE"==u.tipo){d=0,f=await _getvv();const m=muCalc(u.t1||zeroval());f.find((t=>muCalc(t)==m))&&(d=1)}else if("CASES"==u.tipo){d=0,f=await _getvv();const p=u.t1||zeroval();f.find((t=>t==p))&&(d=1)}a[u.next].jlast=d?1:0,a[u.next].t1=u.t1,d||(l=u.next-1)}else n.add("manca select",u);break;case"ELSEIF":case"ELSEIFDEF":case"ELSEIFNDEF":case"ELSE":if(u.next)if(u.jlast)u.jlast=0,l=u.last-1;else{const v="ELSE"==u.tipo?1:"ELSEIF"==u.tipo?muCalc(await intvaluta(t,e,u.contenuto)):"ELSEIFDEF"==u.tipo?""!=await intvaluta(t,e,u.contenuto):""==await intvaluta(t,e,u.contenuto);a[u.next].jlast=v?1:0,v||(l=u.next-1)}else n.add("manca endif",u);break;case"ENDIF":case"ENDSELECT":case"CACHE":case"CVAR":break;case"PUSH":i.push();break;case"POP":i.pop();break;case"RET":{const g=await intvaluta(t,e,u.contenuto);t.vari.savevars(g)}break;case"MACRO":case"M":case"FUNC":case"F":case"INC":case"I":if(s._stackmacro>500)n.add("stack chiamate macro troppo profondo!",u);else{let{macro:b,pars:w,xid:y}=await t.getmacro(u)||{};if(b){const k=!!s.grafica||["F","FUNC"].includes(u.tipo),x=s.id||"",C=b.parametri?._,E={};if(["I","INC"].includes(u.tipo));else if(k)i.push();else{if(b.head)for(const $ of b.head)E[$.cod]=t.vari.var($.cod);if(C&&C.length)for(const O of C){const _=(O.split("=")[0]||"").trim().toLowerCase();_&&(E[_]=i.dictionary[_])}}if(b.codice.length){if(s._stackmacro++,s.grafica&&"function"==typeof s.grafica){let F="",I="";w&&w.length?(F=w.find((t=>t.startsWith("#id"))),F?(F=await i.valuta(F.slice(4)),F.startsWith("#")?s.id=F:s.id=hash(`${l}${b.name}${x}${F}`),w=w.filter((t=>!t.startsWith("#id"))),I=s.id):s.id=hash(`z${x}${l}`)):s.id=hash(`z${x}${l}`);let S=t.pick.key;t.pick.key=s.id;const L=await s.grafica({tipo:u.tipo,id:I,pars:w,parametri:C,macro:b,options:s,vari:t.vari,amb:t});t.pick.key=S,o.push(L)}else{await b.impostaparametri(C,w);let z=t.vari.var("_rootnode");t.vari.add("_rootnode","0");const A=await muEval(t,b,b.codice,s);t.vari.add("_rootnode",z),o.push(...A)}s._stackmacro--}if(["I","INC"].includes(u.tipo));else if(k)i.pop();else for(const M in E)E[M]?i.dictionary[M]=E[M]:delete i.dictionary[M];s.id=x}else n.add("Macro non trovata!",u)}break;case"SETDEF":{let j=getcolonne((u.contenuto||"").toLowerCase()),W=await dammivariante(t,c,j[0]),N=j[1]||"def_",T=j[2];if(N.endsWith("_")||(N+="_"),W&&W.rows){j=Object.keys(W.rows),T&&(j=j.filter((t=>t.startsWith(T))));for(let V of j){let D=`${N}${V}`;if(!i.dictionary[D]){function torow(t){const e=[];if(t)for(const a of t.v.slice(1))"string"==typeof a&&(a.includes(",")||a.includes(";"))?e.push(quote(a)):e.push(a||"");return e.join(",")}i.add(D,await intvaluta(t,e,torow(W.rows[V])))}}}}break;case"LET":case"LETS":{let R=u.contenuto.indexOf("="),P=-1;if(R>=0&&(P=u.contenuto.indexOf("=",R+1)),P<0){const J=u.contenuto;if(R=J.indexOf("="),R>0){const q=await intvaluta(t,e,J.slice(0,R).trim());let K=J.slice(R+1).trim();K="LET"==u.tipo?muCalc(await intvaluta(t,e,K))||zeroval():await intvaluta(t,e,K),i.add(q,K)}}else{const U=getcolonne(u.contenuto);for(const G of U)if(R=G.indexOf("="),R>0){const B=await intvaluta(t,e,G.slice(0,R));let Z=G.slice(R+1).trim();Z="LET"==u.tipo?muCalc(await intvaluta(t,e,Z))||zeroval():await intvaluta(t,e,Z),i.add(B,Z)}}}break;case"LETT":{const H=u.contenuto.indexOf("=");if(H>0){const X=await intvaluta(t,e,u.contenuto.slice(0,H).trim()),Q=await intvaluta(t,e,u.contenuto.slice(H+1).trim());i.add(X,Q)}}break;case"CZERO":"1"==u.contenuto?t._managezero=!0:t._managezero=!1;break;case"LOOK":case"LOOKB":{const Y=getcolonne(await intvaluta(t,e,u.contenuto)),tt=muCalc(Y[1]),et=muCalc(Y[3]),at=await dammivariante(t,c,Y[2]);if(at&&at.rows){const st=Object.values(at.rows).reduce(((t,e)=>{const a=parseInt(e.v[et?et-1:0]);return a&&("LOOKB"==u.tipo?a<=tt&&a>t.v&&(t.v=a,t.c=e.v[0]):a>=tt&&a<t.v&&(t.v=a,t.c=e.v[0])),t}),{v:"LOOKB"==u.tipo?0:1/0,c:""});st&&st.c&&(t.vari.add(Y[0],at.tovar(st.c)),s.checkheader&&"function"==typeof s.checkheader&&await s.checkheader({variante:Y[0],valore:at.tovar(st.c),riga:u}))}else t.vari.add(Y[0],`${tt},no,no`)}break;case"LETV":case"LETM":case"DEF":{const it=getcolonne(u.contenuto);if(it)for(const rt of it){let{v:nt,o:ot,fl:ct}=getcouple(rt);if(ct){nt=await i.valuta(nt),ot=await intvaluta(t,e,ot);const lt=await impostavariante(t,e,nt.trim().toLowerCase(),ot.trim().toLowerCase(),"LETM"==u.tipo?{t:"m"}:{t:"v"});s._stackmacro<=0&&s.checkheader&&"function"==typeof s.checkheader&&await s.checkheader({variante:nt,valore:lt,riga:u})}}}break;case"DO":{const ut=(u.contenuto||"").trim();let ht=!0;ut&&!muCalc(await intvaluta(t,e,ut))&&(ht=!1),u.next&&(ht||(l=u.next+1))}break;case"VARIANTE":case"FORVAR":case"FOR":{let ft,dt,mt,pt;if(s.oldstyle?(ft=u.contenuto.split(","),pt=ft[2]||"i",mt=ft[0],dt=ft[1]):(ft=getcolonne(u.contenuto||""),pt=ft[0]||"",mt=clean(ft[1],!0),dt=ft[2]||""),pt=pt.includes("$")?await intvaluta(t,e,pt):pt||"","FORVAR"==u.tipo||"VARIANTE"==u.tipo){const gt=await intvaluta(t,e,mt),bt=gt?await dammivariante(t,e,gt):void 0;bt?mt=bt.tovec():(mt=[],n.add("getvariante not found!",u))}else{const wt=await intvaluta(t,e,mt||"");mt=mt?getcolonne(wt):void 0}mt=mt||[];const vt=0;if(u.next){a[u.next].for={v:pt,elenco:mt,nc:vt,valido:dt};let yt,kt=!0;pt&&mt.length>0?vt>=mt.length?kt=!1:(yt=mt[vt],i.add(pt,yt),dt&&(kt=!muCalc(await intvaluta(t,e,dt)))):kt=!1,kt||(l=u.next-1)}else n.add("manca endfor/loop",u)}break;case"LOOP":{let xt=!0;u.contenuto&&!muCalc(await intvaluta(t,e,u.contenuto))&&(xt=!1),xt&&(l=u.prev-1);break}case"ENDFOR":if(!u.contenuto||muCalc(await intvaluta(t,e,u.contenuto)))if(u.for){const{v:Ct,elenco:Et,valido:$t}=u.for;if(Ct&&Et.length>0&&u.for.nc<500)for(;;){if(u.for.nc++,u.for.nc<Et.length){if(i.add(Ct,Et[u.for.nc]),$t&&muCalc(await intvaluta(t,e,$t)))continue;l=u.prev;break}break}}else n.add("manca istruzione for",u);break;case"BREAK":case"EXIT":case"EXITFOR":u.next?u.contenuto.trim()?muCalc(await intvaluta(t,e,u.contenuto))&&(l=u.next):l=u.next:n.add("break outside loop",u);break;case"CONTINUE":u.next?u.contenuto&&!muCalc(await intvaluta(t,e,u.contenuto))||(l=u.next-1):n.add("continue outside loop",u);break;case"MSG":case"LOG":{const Ot=await intvaluta(t,e,u.contenuto);logga(Ot),n.add(Ot)}break;case"T":{let _t=u.contenuto.indexOf(" ");const Ft=["lato","sl","sa","sp","l","a","p","ax","ay","az"];let It,St,Lt="";_t>0?(It=u.contenuto.slice(0,_t),Lt=u.contenuto.slice(_t+1)):It=u.contenuto,It=(It||"").trim(),St=It.split(".")[0];let zt=t.typos[r];if(zt){let At=zt[`t${St}`];if(At&&St!=It){let Mt=zt[`t${It}`];Mt&&(At={...At,...Mt})}if(At){At={...At};let jt=getcolonne(Lt);for(let Nt of jt){const{v:Tt,o:Vt}=getcouple(Nt);Vt&&(Vt.startsWith("+")&&Ft.includes(Tt)?At[Tt]=(At[Tt]||"")+Vt:At[Tt]=Vt)}let Wt=`.zevo${At.lato||"0"}`;At.fin&&(Wt=`${Wt}_${At.fin.split("|")[0]}`),Wt+=` tip=${It}`;for(let Dt of Object.keys(At)){let Rt=t.vari.valutasync(At[Dt]);Ft.includes(Dt)?Rt=muCalc(Rt):(Rt.includes(";")||Rt.includes(","))&&(Rt=quote(Rt)),Rt&&(Wt+=`;${Dt}=${Rt}`)}outpush(o,Wt)}else outpush(o,`.outerr err=m2,tip=${It},cont="${Lt}"`)}else outpush(o,`.outerr err=miss,tip=${It},cont="${Lt}"`)}break;default:{let Pt;if(u.contenuto.startsWith("!")){Pt=await intvaluta(t,e,u.contenuto);let Jt="";const qt=/^!(.\w+)[\s;,]\s*(.+)?$/gim.exec(Pt);if(qt)if(qt[1].startsWith("."))await getcbfunc(Pt,Pt.slice(1),[],i,t),Jt="";else{const Kt=(qt[1]||"").toLowerCase(),Ut=getcolonne(qt[2]||"");Jt=await getcbfunc(Pt,Kt,Ut,i,t)}Jt&&outpush(o,Jt)}else s.parsefnpunto&&"function"==typeof s.parsefnpunto&&u.contenuto.startsWith(".")?await s.parsefnpunto({dati:u.contenuto,output:o,id:s.id,vari:t.vari,amb:t}):(Pt=await intvaluta(t,e,u.contenuto),outpush(o,Pt))}}l++}return o}async function muGenerate(t,e,a,s,i=0){if(t.isgenera&&s){const r={counter:0,keys:{},isTestmode:i};if(a){if(!t.genera[a])return!1;await muGenerate_0(t,e,a,s,r)}else for(const a in t.genera)await muGenerate_0(t,e,a,s,r);return!0}}async function muGenerate_0(t,e,a,s,i){const r=t.genera[a];if(r){i.counter2=0;const n={};async function processavariante(o){if(i.isTestmode&&i.counter>i.isTestmode)return;if(o<r.vars.length){const a=r.vars[o];if(!n[a]){const s=await dammivariante(e,t,a),i=s?Object.keys(s.rows):void 0;if(i&&i.length>0){for(const t of i)e.vari.add(s.name,s.tovar(t)),n[a]=!0,await processavariante(o+1),n[a]=!1;return}logga("manca la variante",a)}}for(const a of r.calcola)t.formula[a]&&await muEval(e,t,t.formula[a],{limited:!0});for(const a of r.exclude)if(t.formula[a]){const s=await muEval(e,t,t.formula[a],{limited:!0});if(s)for(const t of s){if(muCalc(t))return}}const c=await muEval(e,t,r.codice,{limited:!0,localvar:t.localvar}),l={};for(const a of r.bom)if(t.formula[a]){let s=await muEval(e,t,t.formula[a],{limited:!0});s=s.join("\n").split("\n");for(const t of s)if(t){const e=getcolonne(t);l[a]||(l[a]=[]);const s={};for(let t=0;t<e.length;t++)s[`c${t}`]=e[t];l[a].push(s)}}await async function docallback(t,e,a,s,i,r){let n=!0;for(const o of e){const e=getcolonne(o);if(e[0]&&!r[e[0]]){r[e[0]]=1,r.counter++,r.counter2++;const o={__id:r.counter};for(let t=0;t<e.length;t++){let a=s.head[t]?s.head[t]:`c${t}`;"#"==a[0]?(a=a.substr(1),o[a]=Math.round(1e3*muCalc(e[t]))/1e3):o[a]=e[t]}await t(i,o,n?a:void 0,r.counter,r.counter2),n=!1}}}(s,c,l,r,a,i)}await processavariante(0)}}const g=["l","a","p"],b=/^\{(:?(var|valid|formula|genera|header|v|f|g|h))[\s|}]/im,w=["s","g","h","p","q"],y=[{cod:"t",des:"Variante"},{cod:"q",des:"V.Query"},{cod:"f",des:"Valore Fisso"},{cod:"g",des:"Gruppo"},{cod:"s",des:"Libero"},{cod:"m",des:"Misura"},{cod:"c",des:"Check (no/si)"},{cod:"z",des:"Check (si/no)"},{cod:"h",des:"Hidden"},{cod:"p",des:"Programmato"},{cod:"i",des:"Inclusione",base:!0},{cod:"a",des:"Aggiunta",base:!0}],k=[{cod:"",des:"Libero"},{cod:"a",des:"Area"},{cod:"t",des:"Thumb",folder:"thumbs"},{cod:"i",des:"Image",folder:"textures"},{cod:"x",des:"3D file",folder:"3d"},{cod:"f",des:"Funzione",folder:"script"}];function valutaCondizioniTestata(t,e){const a=e.split("\n");for(const e of a)if(e.trim()){if(muCalc(t.valutasync(e)))return!0}return!1}class Macro{constructor(t,e){const{name:a,cat:s}=checkmu(e,t.cat||"");this.name=a,this.cat=s,this.amb=t,this.azzera()}azzera(){this.key=`${this.cat}/${this.name}`,this.localvar={},this.head=[],this.frontend=!1,this.valid=[],this.parametri={},this.paralias={},this.formula={},this.settings={},this.errori=[],this.codice=[],this.genera={}}get isgenera(){return Object.keys(this.genera).length||0}get iscodice(){return this.codice.length||0}get isheader(){return this.head?.length||0}geterrori(){const t=[];return this.errori.forEach((e=>t.push({e:e}))),t}getparametri(t={}){const{noderiva:e}=t,a={};if(this.dims&&g.forEach((t=>{const e=muCalc(this.amb.vari.var(t));e&&(a[t]=String(e))})),this.head){for(const t of this.head)if(!t._h){if(e&&t._d&&t._d.cod)continue;let s=this.amb.vari.var(t.cod);w.includes(t.t)||"string"==typeof s&&(s=s.split(",")[0]),a[t.cod]=s}}else if(this.parametri?._)for(const t of this.parametri._){const e=(t.split("=")[0]||"").trim().toLowerCase();let s=this.amb.vari.var[e];s=(s||"").split(",")[0],a[e]=s}return a}setgallery(t,e){if(!t||!e)return;if(!e.length)return;let a=e.find((e=>e.id==t));if(a?.rows?.length)for(let t of a.rows){let e=this.head.find((e=>e.cod==t.cod));e&&("t"==e.t&&(t.v||"").includes(";")?e._limit3=getcolonne(t.v):e._h3=!0)}}async setparametri(t){const e={},a=this.amb.ruleset||{};t||(t={}),this.dims&&g.forEach((e=>{let a=t[e]||this.dims[e].val;a=parseFloat(a)||0,this.dims[e].visible&&(a<this.dims[e].min&&(a=this.dims[e].min),a>this.dims[e].max&&(a=this.dims[e].max)),t[e]=String(a)}));for(const s of this.head){delete s._h3,delete s._limit3;const i=a[s.cod];i&&(i.islock?(s.visible="0",t[s.cod]=i.opz,s._islock=!0):t[s.cod]||(t[s.cod]=i.opz)),"g"!=s.t&&("z"!=s.t||t[s.cod]||(t[s.cod]="1"),s._v=t[s.cod]||"",e[s.cod]=!0)}for(const a in t)e[a]||(e[a]=!0,await impostavariante(this.amb,this,a,t[a]));return this.head?.length>0&&await this.setparametro(this.head[0].cod,t[this.head[0].cod]||void 0,!0,t),this.getparametri()}async setparametro(t,e,a=!1,s={}){if(e&&"string"==typeof e&&e.includes("$")&&(e=await intvaluta(this.amb,this,e)),s||(s={}),this.head){const _imposta=async(t,e,a,i)=>{const r=t?.cod;if(t.valid&&!t._h1){const e=!valutaCondizioniTestata(this.amb.vari,t.valid);if(t._h!=e&&(t._h=e,["g","g1","g2"].includes(t.t)))for(let e=a+1;e<this.head.length;e++){const a=this.head[e];if(a){if(["g","g1","g2"].includes(a.t))break;a._h1=t._h}}}if(t._h||t._h1)return this.amb.vari.add(r,""),t._v=void 0,"";{if(delete t._h2,t.visible){const e=!valutaCondizioniTestata(this.amb.vari,t.visible);if(e&&(t._h2=e),["g","g1","g2"].includes(t.t))for(let e=a+1;e<this.head.length;e++){const a=this.head[e];if(a){if(["g","g1","g2"].includes(a.t))break;t._h2?a._h3=t._h2:delete a._h3}}}let i=this.amb.vari.var(r)||"";"thlm".includes(t.t)&&"string"==typeof i&&(i=i.split(",")[0]);let n=i;if("z"!=t.t||i||(this.amb.vari.add(r,"1"),i="1"),"m"==t.t&&t.spars){let e=t.spars;(e||"").includes("$")&&(e=await intvaluta(this.amb,this,e));const a=getcolonne(e);i=parseFloat(i||a[0])||0,(!a[1]||"").includes(";")&&(a[1]&&parseFloat(i)<a[1]&&(i=parseFloat(a[1])||0),a[2]&&parseFloat(i)>a[2]&&(i=parseFloat(a[2])||0)),i=String(i),this.amb.vari.add(r,i)}const o=await impostavariante(this.amb,this,r,e||t._v||i,t);if(t._v=void 0,i=this.amb.vari.var(r)||"","thl".includes(t.t)&&"string"==typeof i&&(i=i.split(",")[0],this.amb&&this.amb.deriva&&this.amb.deriva.length>0)){const e=this.amb.deriva.filter((t=>t.cod==r&&((!t.item||t.item==this.amb.item)&&((!t.model||t.model==this.amb.model)&&((!t.rule||t.rule==this.amb.rule)&&(!t.opz||t.opz==i))))));e.length&&e.forEach((e=>{let a=this.head.find((t=>t.cod==e.tocod));if(a){let r=this.amb.vari.var(a.cod);s&&s[a.cod]&&(r=s[a.cod]),"string"==typeof r&&(r=r.split(",")[0],r&&r!=n&&r!=i?delete a._d:(a._v=e.toopz||i,a._d={cod:t.cod,opz:e.toopz}))}}))}return o}};let i,r=-1;if("#dim"==t)a=1;else{if(r=this.head.findIndex((e=>e.cod===t)),r<0)return;const s=this.head[r];i=await _imposta(s,e,r),a&&delete s._d}if(a)for(let t=r+1;t<this.head.length;t++)await _imposta(this.head[t],void 0,t);return i}return await impostavariante(this.amb,this,t,e)}getmarker(){let t;if(this.head&&this.head.length){let e=this.head.find((t=>"marker"==(t.stipo||"").trim().toLowerCase().split(/[;,]/)[0].trim()));e&&e.cod&&(t=e.cod)}return t}isderivato(t){return"string"==typeof t&&(t=this.head.find((e=>e.cod==t))),!!(t&&t._d&&t._d.cod)}async impostaparametri(t,e,a=!1,s){if(this.head){this.paralias||(this.paralias={}),Array.isArray(this.head)||(this.head=[]);for(const t of this.head)t._v="",delete t._h,delete t._h1,delete t._h2,t.alias&&(this.paralias[t.cod]=t.alias)}s||(s={}),t||(t=[]),e||(e=[]);for(const a of[...t,...e]){const t=a.indexOf("=");if(t>0){let e=clean(a.substr(0,t));e.includes("$")&&(e=await intvaluta(this.amb,this,e));let s,i=a.substr(t+1);i.includes("$")&&(i=await intvaluta(this.amb,this,i)),this.head&&(s=this.head.find((t=>t.cod==e)))?s._v=i:await impostavariante(this.amb,this,e,i)}}if(this.head){let t=!0;for(const e of this.head){let i=await this.checkvalid(e.valid);a&&(i=!0),["g","g1","g2"].includes(e.t)?t=i:t&&i&&await this.setparametro(e.cod,s[e.cod]||e._v)}}}async checkvalid(t){if(!t)return!0;return!!muCalc(await intvaluta(this.amb,this,t))}getmacrostr(){return JSON.stringify(this.getmacro())}getmacro(){return getOggetto(this,["amb"])}setmacro(t){if(setOggetto(this,fromjson(t,{})),this.localvar)for(const t in this.localvar){const e=new Variante;setOggetto(e,this.localvar[t]),this.localvar[t]=e}}async load(t,a){let s,i;try{let r;if(({name:s,cat:i}=checkmu(t||this.name,a||this.cat||"")),this.name||(this.name=s),this.cat||(this.cat=i),this.azzera(),e&&(r=await e(i,s),"string"==typeof r&&(r.startsWith("{")||r.startsWith("["))&&(r=fromjson(r)),r&&r.head&&!Array.isArray(r.head)&&(r.head=[]),this.amb.checkscripts(r.linkscript),delete r.linkscript,r.head&&(r.dims=getheaddims(r.dims))),r){if("string"==typeof r)await this.parsedata(r);else for(const t in r)this[t]=r[t];return!0}n.add(`missing cbGetFile: ${i}/${s}`)}catch(t){n.add(geterrdes(t),`macro.load: ${s}/${i}`)}}async loadAndCompile(t,e,a=!1){let s;const{name:r,cat:o}=checkmu(t,this.cat||e);return this.azzera(),i&&(s=await i(o,r)),s?(await this.parsedata(s,a),this.getmacro()):void n.add(`missing cbGetFile: ${r}/${o}`)}async#e(t,e,a,s){let r;const{name:n,cat:o}=checkmu(t,this.cat);if(i&&(r=await i(o,n)),!r)return[];if(r.includes("$1")&&s&&s.length>0)for(let t=1;t<s.length;t++)r=r.replaceAll(`$${t}`,s[t]);let c=muClComments(r);const l=[];e&&(c=c.filter((t=>!/^\{(:?(var|valid|formula|header|genera|v|f|h))[\s|}]/im.test(t))));for(const t of c){const s=b.exec(t);if(s)e=!s[1].startsWith(":"),l.push(t);else{const s=/^\s*\{i\s(.+)?\}/im.exec(t);if(s){const t=getcolonne(s[1]);if(!a.includes(t[0])){a.push(t[0]);const s=await this.loadinclude(t[0],e,a,t);Array.isArray(s)&&l.push(...s),a.pop()}}else l.push(t)}}return l}async parsedata(t,e=!1){if(this.azzera(),!t)return;const a=[];let s=muClComments(t),i=!1;const r=[];for(const t of s){const e=b.exec(t);if(e)i=!e[1].startsWith(":"),a.push(t);else{const e=/^\s*\{i\s(.+)?\}/im.exec(t);if(e){const t=getcolonne(e[1]),s=await this.#e(t[0],i,[t[0]],t);Array.isArray(s)&&a.push(...s)}else a.push(t)}}i=!1;let n=this.codice;for(const t of a){const e=b.exec(t);if(e)if(e[1].startsWith(":"))n=this.codice;else switch(e[1]){case"genera":case"g":{let e=/^\s*\{(genera|g)\s+(.+)?\}/im.exec(t);if(e){const t=checkname(getcolonne(e[2])[0]);this.genera[t]=[],n=this.genera[t]}else n=this.errori,n.push(t)}break;case"valid":n=this.valid;break;case"var":case"v":{const e=/^\s*\{(var|v)\s+(.+)?\}/im.exec(t);if(e){const t=getcolonne(e[2]),a=checkname(t[0]);this.localvar[a]={name:a,des:t[1]||"",rows:[]},n=this.localvar[a].rows}else n=this.errori,n.push(t)}break;case"formula":case"f":{const e=/^\s*\{(formula|f)\s+(.+)?\}/im.exec(t);if(e){const t=checkname(e[2]);this.formula[t]=[],n=this.formula[t]}else n=this.errori,n.push(t)}break;case"h":case"header":n=r;break;default:this.errori.push(t),n=this.errori}else t.startsWith("{")&&(n=this.codice),n.push(t)}this.parametri={},this.codice=this.cleanfiltraparametri("_",this.codice,e);for(const t in this.formula)this.formula[t]=this.cleanfiltraparametri(t,this.formula[t],e);for(const t in this.localvar){const e=new Variante,a=this.localvar[t];e.setheader(t,this.cat),e.rows={};for(const t of a.rows){const a=getcolonne(t),s=a[0].trim().toLowerCase();e.rows[s]={annulla:0,v:a}}a.des&&(e.des=a.des),this.localvar[t]=e}s=this.valid,this.valid=[];for(const t of s){let e=getcouple(t,",");e={v:e.v,msg:e.o},e.v&&(e.v.startsWith("#")?this.formula[e.v.substring(1)]&&this.valid.push(e):this.valid.push(e))}s=r;const o=[];for(const t of s){const e=/^\s*([\w\-_]+)+[;,\s]\s*(.*)?$/im.exec(t);if(e){const t=getcolonne(e[2]),a=clean(e[1]);let s;if(a){s=o.find((t=>t.cod==a)),s||(s={cod:a,t:"t"},o.push(s));for(const e of t){const t=getcouple(e);switch(t.v){case"t":s.t=t.o;break;case"def":case"default":s.def=t.o;break;case"valid":case"colonna":case"hidden":t.o.startsWith("#")?this.formula[t.o.substring(1)]&&(s[t.v]=t.o):s[t.v]=t.o;break;default:s[t.v]=t.o}}}}}this.head=o,s=this.genera;const c={};for(const t in s)if(Array.isArray(s[t])){const e={codice:[],head:"",calcola:[],bom:[],vars:[],exclude:[]},a=/^\s*[!:]\s*(\w+)\s*(.*)$/i;for(const i of s[t]){const s=a.exec(clean(i));if(s)switch(s[1]){case"calcola":case"c":e.calcola=[...e.calcola,...getcolonne(s[2])];break;case"exclude":case"e":case"escludi":e.exclude=[...e.exclude,...getcolonne(s[2])];break;case"bom":case"db":e.bom=[...e.bom,...getcolonne(s[2])];break;case"vars":case"v":e.vars=[...e.vars,...getcolonne(s[2])];break;case"head":case"h":e.head=getcolonne(s[2]);break;default:this.errori.push(`genera ${t} => ${i}`)}else e.codice.push(i)}e.codice=muClean(e.codice,!0),c[t]=e}this.genera=c}cleanfiltraparametri(t,e,a){if(this.paralias||(this.paralias={}),e&&e.length){let a=!1;const getparalias=t=>{const e=[],a=getcolonne(t);for(const t of a)if(t.includes(":")){const a=t.split(":");this.paralias[a[0]]=a[1],e.push(a[0])}else e.push(t);return e};for(let s=0;s<e.length;s++){const i=/^:p[;,\s]+(.*)?$/im.exec(e[s]);if(i)e[s]=null,a=!0,this.parametri[t]=getparalias(i[1]);else{const i=/^!(parametri|pars|p)[;,\s]+(.*)?$/im.exec(e[s]);i&&(e[s]=null,a=!0,this.parametri[t]=getparalias(i[2]))}}a&&(e=e.filter((t=>null!=t)))}return e=muClean(e,a)}}function parsevariabili(t){let e=!1;const a=[];for(;;){const s=/\$([{[(])/m.exec(t);if(!s){t&&e&&a.push({class:"",text:t});break}{e=!0;const i="["==s[1]?"inline":"variabile";s.index>0&&a.push({class:"",text:t.substring(0,s.index)});const{i:r}=parsevar(t,s.index+2,s[1],null);if(!(r>s.index)){a.push({class:i,text:t.substring(s.index)});break}a.push({class:i,text:t.substring(s.index,r+1)}),t=t.substring(r+1)}}return{fl:e,tk:a}}function parseexp(t,e,a){if(!a)throw new Error("missing callback");let s=!1;const i=[];for(;;){const r=e.exec(t);if(!r){t&&s&&i.push({class:"",text:t});break}r.index>0&&i.push({class:"",text:t.substring(0,r.index)}),i.push(...a(r)),s=!0,t=t.substring(r.index+r[0].length)}return{fl:s,tk:i}}function muParsecode(t,e){t||(t=" "),t.endsWith("\n")&&(t+=" ");const a=[{class:"",text:t}];for(let t=0;t<a.length;t++)if(!a[t].class){{const{fl:e,tk:s}=parseexp(a[t].text,/(\/\*[^]+?\*\/)/im,(t=>[{class:"comment",text:t[1]}]));e&&a.splice(t,1,...s)}if(!a[t].class){{const{fl:e,tk:s}=parseexp(a[t].text,/(\/\/.*)$/im,(t=>[{class:"commento2",text:t[1]}]));e&&a.splice(t,1,...s)}if(!a[t].class){{const{fl:e,tk:s}=parseexp(a[t].text,/(^\s*\{.+?\})/m,(t=>[{class:"header",text:t[1]}]));e&&a.splice(t,1,...s)}if(!a[t].class){{const{fl:e,tk:s}=parseexp(a[t].text,/(^\s*:\w+)(.*?$)/m,(t=>[{class:"param",text:t[1]},{class:"param2",text:t[2]}]));e&&a.splice(t,1,...s)}if(!e){if(a[t].class)continue;{const{fl:e,tk:s}=parseexp(a[t].text,/(^\s*!\w+)/m,(t=>[{class:"function",text:t[1]}]));e&&a.splice(t,1,...s)}if(a[t].class)continue;{const{fl:e,tk:s}=parseexp(a[t].text,/(#let.? +)([\w_.]+)/im,(t=>[{class:"comando",text:t[1]},{class:"variabile",text:t[2]}]));e&&a.splice(t,1,...s)}if(a[t].class)continue;{const{fl:e,tk:s}=parseexp(a[t].text,/(#(push|pop|ret|select|cases|endselect|ifndef|elseifndef|ifdef|endif|elseifdef|variante|forvar|for|endfor|continue|break|inc|macro|default|letm|lets|letv|lett|leto|cat))/im,(t=>[{class:"comando",text:t[1]}]));e&&a.splice(t,1,...s)}if(a[t].class)continue;{const{fl:e,tk:s}=parseexp(a[t].text,/(#(if\s*|elseif\s*))/im,(t=>[{class:"comando",text:t[1]}]));e&&a.splice(t,1,...s)}if(a[t].class)continue;{const{fl:e,tk:s}=parseexp(a[t].text,/(#(else|i |m |f |j |case|def ))/im,(t=>[{class:"comando",text:t[1]}]));e&&a.splice(t,1,...s)}if(a[t].class)continue;{const{fl:e,tk:s}=parsevariabili(a[t].text);e&&a.splice(t,1,...s)}if(a[t].class)continue;{const{fl:e,tk:s}=parseexp(a[t].text,/(\$[\w_.]+)/im,(t=>[{class:"variabile",text:t[1]}]));e&&a.splice(t,1,...s)}}}}}}return a}class Pickers{constructor(){this.clear()}clear(){this.d={},this.keypics={},this.key="",this.keypics[this.key]=0}reset(){this.keypics={},this.key="";for(let t in this.d)this.d[t]._invalid=!0}pack(){let t=[];Object.entries(this.d).forEach((([e,a])=>{a._invalid&&t.push(e),delete a._invalid}));for(let e of t)delete this.d[e]}setkey(t){this.key=t,this.keypics[t]||(this.keypics[t]=0)}add(t){let e=this.keypics[this.key]||0,a=`${this.key}_${e}`;this.keypics[this.key]=e+1;let s=this.d[a]??{};return t=t??{},this.d[a]={...s,...t,_invalid:!1,_key:this.key,_id:e},a}}function toruleset(t){const e={};if(t&&t.length)for(const a of t)e[a.cod]=a;return e}function headerconvert(t){const e=muClComments(t,!1);t={};let a={r:[]},s=!1;for(const i of e){const e=/^\s*\{(h|head|header)\s+(\w+)\}/im.exec(i);if(e)a={cod:e[2],des:e[2],r:[]},s=!1,t[e[2]]=a;else if(!/^\s*:/.exec(i)){const t=i.split(","),e={cod:clean(t[0])};let r;r=(t[1]||"").trim(),r&&(e.des=r),r=clean(t[2]),r&&(e.tipo=r),r=clean(t[3]),r&&(e.alias=r),r=clean(t[4]),r&&(e.valid=r),r=clean(t[5]),r&&(e.visible=r),e.cod&&(s||"sep"!=e.tipo?a.r.push(e):(a.des=e.des,a.valid=e.valid,a.visible=e.visible,s=!0))}}return t}function aliasconvert(t){const e=muClComments((t+"").toLowerCase(),!1),a={};for(const t of e)if(!/^\s*:/.exec(t)){const e=getcolonne(t);e[0]&&e[1]&&(a[e[0]]={cod:e[1]})}return a}class Ambiente{#a=void 0;#s=void 0;#i=void 0;#r=void 0;constructor(t=".",e=100,a=!1){this.righevuote=a,this.maxdelays=e,this.setcatalog(t),this.fndotcallback=void 0,this.pick=new Pickers}setcatalog(t){return t=clean(t),this.cat!=t&&(this.cat=t,this.item=this.rule=this.model="",this.azzera(!0)),t}get muvalutatore(){return{getcolonne:getcolonne,getcouple:getcouple,muCalc:muCalc,muEval:muEval,tipifree:w}}azzera(t=!1){this.imgpreview={},this.vari=new Variabile,this.ruleset={},this.fndotcallback&&this.vari.setfndot(this.fndotcallback),this.ruleheader="",t&&(this.macro={},this.sqcache={},this.varianti={},this.varelenco={},this.typos={},this.macroelenco={},this.scripts={},this.#a=void 0,this.#s=void 0,this.#i=void 0,this.#r=void 0)}setimgpreview(t,e){e?this.imgpreview[t]=e:delete this.imgpreview[t]}getimgpreview(t){return this?.imgpreview[t||""]}setfndot(t){this.fndotcallback=t,this.vari.setfndot(t)}async#n(t){if(s&&!this.varelenco[t]){const e=await s("headers",t,"_varianti");Array.isArray(e)?this.varelenco[t]=e:e.vars&&(this.varelenco[t]=e.vars,e.alias&&(this.#s=e.alias)),this.varelenco[t]||(this.varelenco[t]=[]),this.typos[t]=e?.typos?e.typos:{}}}parseheaderfrominfo(t){if(t&&t.length>0)for(const e of t)switch(e.tipo){case"_headers":"string"==typeof e.value&&(e.value=headerconvert(e.value)),this.#a=e.value||{};break;case"_alias":"string"==typeof e.value&&(e.value=aliasconvert(e.value)),this.#s=e.value||{};break;case"_typos":if("string"==typeof e.value){const t=fromjson(e.value);for(const e in t){const a=t[e];a.db&&(a.db=muClean(muClComments(a.db))),a.list&&(a.list=muClean(muClComments(a.list)))}e.value=t}this.#r=e.value||{}}}setitem(t,e,a,s=[],i=0){this.item=clean(t,!0),this.rule=clean(e,!0),this.model=clean(a,!0),this.ruleset=toruleset(s),this.data=i||(new Date).toInt()}async getheader(t){let e;return!this.#a&&s&&(e=await s("headers",this.cat,"_headers"),this.parseheaderfrominfo(e)),this.#a||(this.#a={}),this.#a[t]}async getalias(){let t;return!this.#s&&s&&(t=await s("headers",this.cat,"_alias"),this.parseheaderfrominfo(t)),this.#s||(this.#s={}),this.#s}get deriva(){return this.#i,this.#i||[]}async getmacro(t){try{if("string"==typeof t&&(t={tipo:"M",contenuto:t}),!t||!t.contenuto)return;let e=t.contenuto;e.startsWith("$")&&(e=await this.vari.valuta(e));const a=/^([({}):$\w.\\/]+)[\s;,]*(.*)?$/im.exec(e);if(!a)return void n.add("Macro non valida:"+e,t);let s=clean(a[1],!0);s.includes("$")&&(s=await this.vari.valuta(s));const i=getcolonne(a[2]),{name:r,cat:o}=checkmu(s,this.cat);this.cat=o;const c=`${o}/${r}`;if(!this.macro[c]){const e=new Macro(this,r);await e.load()?this.macro[c]=e:n.add(`macro fail to load ${c}`,t)}return s=this.macro[c],s?{macro:s,pars:i}:(n.add(`macro non trovata ${c}`,t),{})}catch(e){n.add(geterrdes(e),`ambiente.getmacro: ${t?.contenuto}`)}}async getvariante(t){const{name:e,cat:a}=checkmu(t,this.cat);let s=e,i={};if(a==this.cat&&this.#s&&this.#s[e],await this.#n(a),this.varelenco[a]&&!this.varelenco[a].includes(e))return;const r=`${a}/${s}`;let n;return this.varianti[r]?n=this.varianti[r]:(n=new Variante(this),await n.load(r,a),this.varianti[r]=n),i&&(i.des&&(n.des=i.des),i.vdef&&(n.vdef=i.vdef)),n}async varcompila(t,e){const a=new Variante(this);if(await a.load(t,this.cat,!0),a.alias){(await this.getalias())[t]=a.alias}e("variants",{cod:t,des:a.des||"",alias:a.alias,info:a.alias?"":JSON.stringify(getOggetto(a,["amb"]))})}async macrocompila(t,e){const a=new Macro(this,t);await a.loadAndCompile(`${t}.mu`);const s=a.getmacro();e("macros",{cod:t,info:JSON.stringify(s),isgenera:a.isgenera,isheader:a.isheader,iscodice:a.iscodice})}async barrecompila(t,e,a){const s=new CodiceBarra;await s.compila(t,e);for(const t in s.barre){a("barcodes",{cod:t,des:"",info:JSON.stringify(s.barre[t])})}return s}async tojson(t){let e;return a&&(e=await a("json",t)),e}async compila(t,e){if(e){for(const a of t.var)await this.varcompila(a,e);for(const a of t.mu)await this.macrocompila(a,e);if(e("infos",{cod:"info",des:t.cat,info:JSON.stringify({cat:t.cat,md:t.info})}),this.#a=void 0,this.#s=void 0,this.#i=void 0,this.#r=void 0,s){const t=await s("headers",this.cat,["_headers","_alias","_deriva","_typos"]);this.parseheaderfrominfo(t)}this.#a?e("infos",{cod:"headers",des:"",info:JSON.stringify(this.#a)}):logga("missing headers"),this.#s&&e("infos",{cod:"alias",des:"",info:JSON.stringify(this.#s)}),this.#i&&e("infos",{cod:"deriva",des:"",info:JSON.stringify(this.#i)}),this.#r&&e("infos",{cod:"typos",des:"tipologie",info:JSON.stringify(this.#r)})}}async checkvarianti(e,a){if(!e||!a?.length)return;e=checkname(e),await this.#n(e);const s=this.varelenco[e],i=[];for(let t of a){t=clean(t,!0);const a=`${e}/${t}`;this.varianti[a]||s&&s.includes(t)&&i.push(t)}if(i.length&&t){const a=await t(e,i);if(a&&a.length)for(const t of a){const{name:a,content:s}=t,i=new Variante(this);i.setheader(a,e),s&&await i.loadContentExtended(s),this.varianti[i.key]=i}}}async getheaderfromdb(e){const a=await s("header",this.cat,e,!this.#i);let{head:i,rows:r,macros:n,deriva:o,llvars:c}=a;for(const t of r)t.cod=clean(t.cod),t.alias=clean(t.alias),t.t=clean(t.t);if(!c){c=new Set;for(const t of r)if("p"==t.tipo);else{const e=t.alias?t.alias:t.cod;c.add(e)}c=[...c]}this.#i||(this.#i=o),await this.#n(this.cat),i.cod=clean(i.cod),i.rule=clean(i.rule),i.ruledef=i.ruledef||[];const l=[],u=this.varelenco[this.cat];for(const t of c)this.varianti[`${this.cat}/${t}`]||u&&u.includes(t)&&l.push(t);if(l.length&&t){const e=await t(this.cat,l);if(e&&e.length)for(const t of e){const{name:e,content:a}=t,s=new Variante(this);s.setheader(e,this.cat),a&&await s.loadContentExtended(a),this.varianti[s.key]=s}}return{head:i,rows:r,macros:n}}async getlinkedmacros(t,a){const getkey=t=>t.includes("/")?t:`${this.cat}/${t}`,s=[];let i;if(t&&(i=getkey(t),this.macro[i]||s.push(t)),a&&"string"==typeof a){const t=a.split(";");for(const e of t)i=getkey(e),this.macro[i]||s.push(e)}if(s&&s.length>0&&e){const t=await e(this.cat,s);if(t&&t.length>0)for(const e of t){this.checkscripts(e.content?.linkscript),delete e.content?.linkscript;const t=new Macro(this,e.name);for(const a in e.content){const s=e.content[a];t[a]=s}this.macro[t.key]=t}}}checkscripts(t){if(Array.isArray(t)&&t.length)for(let e of t)this.scripts[e.name]||(this.scripts[e.name]=e.value)}async setruleheader(t,e,a){const{name:s,cat:i}=checkmu(t,this.cat);a&&a.length&&(this.ruleset=toruleset(a));const r=`${i}/${s}`;if(!this.macro[r]){const e=await this.getheaderfromdb(s),{head:a,rows:o,macros:c}=e;await this.getlinkedmacros(a.rule,c);const l=new Macro(this,s);if(!a)return void n.add("Missing rule: "+t);if(a.rule){const t=this.macro[`${i}/${a.rule}`];if(t)for(const e in t)["cat","name","key"].includes(e)||(l[e]=t[e])}o&&o.length&&(l.head=o),this.macro[r]=l}this.ruleheader=r;const o=this.macro[r];return n.azzera(),await o.setparametri(e),o}getruleheader(){return this.macro[this.ruleheader]}async setvariante(t,e){return await impostavariante(this,null,t,e)}async valuta(t){let e;return"string"==typeof t&&(t=muClean(muClComments(t,this.righevuote))),Array.isArray(t)&&(e=await muEval(this,null,t)),e}setinfos(t){t&&(this.#a=t.headers,this.#s=t.alias,this.#i=void 0,this.#r=t.typos)}async splitteroggetti(t){let e=await this.getvariante(t),a=[];return e?.rows&&Object.values(e.rows).forEach((t=>{a.push({tipo:t.v[2]||"",cod:t.v[0]||"",des:t.v[1]||"",macro:t.v[4]||"",sps:parseInt(t.v[3])||0,isshape:parseInt(t.v[5])})})),a.length||a.push({tipo:"avob",cod:"__",des:"Vuoto",macro:"",sps:0}),a}}function toJson(t){return JSON.stringify(t,null,2)}function clamp(t,e=-1/0,a=1/0){return(t=Number(t)||0)<e&&(t=e),t>a&&(t=a),t}function gettipocolonna(t){return k.find((e=>e.cod==t))?.des||k[0].des}function gettipofolder(t){return k.find((e=>e.cod==t))?.folder||""}function newVariabile(){return new Variabile}async function newVariante(t,e,a){const s=new Variante(a);return await s.load(t,e),s}function newAmbiente(t,e=100){return new Ambiente(t,e)}function newMacro(t,e){return new Macro(t,e)}function sanitize(t,e=!1,a=!1){if(!t)return"";let s=String(t).trim().replace(a?/[^a-zA-Z0-9-+_.]/g:/[^a-zA-Z0-9-+_]/g,"_");return e?s.toLowerCase():s}function muValuta(t,e,a){a&&t.azzera();return t.valuta(e)}function muInit(t,e,a,s,i,r,n){const o=new Ambiente(t);return setcallbacks(e,a,s,i,r,n),o}function muCompileScript(t){return t&&"object"==typeof t?t:t.startsWith("{")&&t.endsWith("}")||t.startsWith("[")&&t.endsWith("]")?JSON.stringify(t):muClean(muClComments(t))}async function muEvalScript(t,e,a,s=!0){if(e=muCompileScript(e),s&&t.azzera(),a)for(const e of a){const{v:a,o:s}=getcouple(e);t.vari.add(a,s)}return{output:await muEval(t,null,e,{}),vari:t.vari.dictionary,errori:n}}Date.prototype.toInt||(Date.prototype.toInt=function(){const t=this;return t.getDate()+100*(t.getMonth()+1)+1e4*t.getFullYear()}),Date.prototype.toFloat||(Date.prototype.toFloat=function(){return Math.floor(1e4*this.getDate()+1e6*(this.getMonth()+1)+1e8*this.getFullYear()+100*this.getHours()+this.getMinutes()+.5)/1e4});const x={mus:{variants:{cod:"s",des:"s",alias:"s",info:"s",md:"s",__pk:"cod"},extras:{tipo:"s",cod:"s",info:"s",__pk:"tipo, cod"},macros:{cod:"s",des:"s",info:"s",md:"s",def:"s",isgenera:"i",iscodice:"i",isheader:"i",__pk:"cod"},infos:{cod:"s",des:"s",info:"s",__pk:"cod"},barcodes:{cod:"s",des:"s",info:"s",__pk:"cod"}}};export{Ambiente,CodiceBarra,Macro,Variabile,Variante,checkmu,checkname,clamp,clean,dammivariante,n as errori,fromjson,getOggetto,getcolonne,getcouple,geterrdes,getheaddims,gettipocolonna,gettipofolder,hash,impostavariante,intvaluta,isJsonStr,isObject,muInit as jsTest,logga,muCalc,muClComments,muClean,muCompileScript,muEval,muEvalScript,muGenerate,muInit,muLimits,muParsecode,muValuta,x as mustr,newAmbiente,newMacro,newVariabile,newVariante,noquote,parselimitifromdb,parselimitifromrule,parsevar,poppars,pushpars,quote,round,sanitize,seedarray,seeder,setOggetto,sortrows,testsync,k as tipicolonna,w as tipifree,y as tipiheader,tk,toCadPars,toJson,tonum,xdt};
|