UNPKG

prisme-flow

Version:

prisme platform flow engine

9 lines 270 kB
/** * Created by prisme.io on 09/06/2017. * * @author (prisme.io) * * http://www.prisme.io **/ var RED={};RED.events=function(){function a(a,b){d[a]=d[a]||[],d[a].push(b)}function b(a,b){var c=d[a];if(c)for(var e=0;e<c.length;e++)if(c[e]===b)return void c.splice(e,1)}function c(a,b){if(d[a])for(var c=0;c<d[a].length;c++)try{d[a][c](b)}catch(b){console.log("prisme-flow.events.emit error: ["+a+"] "+b.toString()),console.log(b)}}var d={};return{on:a,off:b,emit:c}}(),RED.i18n=function(){return{init:function(a){i18n.init({resGetPath:"locales/__ns__",dynamicLoad:!1,load:"current",ns:{namespaces:["editor","node-red","jsonata","infotips"],defaultNs:"editor"},fallbackLng:["en-US"],useCookie:!1},function(){a()}),RED._=function(){return i18n.t.apply(null,arguments)}},loadCatalog:function(a,b){i18n.loadNamespace(a,b)}}}(),RED.settings=function(){function a(a,b){if(!RED.settings.editorTheme)return b;var c=a.split("."),d=RED.settings.editorTheme;try{for(var e=0;e<c.length;e++)d=d[c[e]];return void 0===d?b:d}catch(a){return b}}var b={},c=function(){try{return"localStorage"in window&&null!==window.localStorage}catch(a){return!1}},d=function(a,b){c()&&localStorage.setItem(a,JSON.stringify(b))},e=function(a){if(c())return JSON.parse(localStorage.getItem(a))},f=function(a){c()&&localStorage.removeItem(a)},g=function(a){for(var c in b)b.hasOwnProperty(c)&&RED.settings.hasOwnProperty(c)&&delete RED.settings[c];for(c in a)a.hasOwnProperty(c)&&(RED.settings[c]=a[c]);b=a},h=function(a){var b=/[?&]access_token=(.*?)(?:$|&)/.exec(window.location.search);if(b){var c=b[1];RED.settings.set("auth-tokens",{access_token:c}),window.location.search=""}$.ajaxSetup({beforeSend:function(a,b){if(!/^\s*(https?:|\/|\.)/.test(b.url)){var c=RED.settings.get("auth-tokens");c&&a.setRequestHeader("Authorization","Bearer "+c.access_token),a.setRequestHeader("Node-RED-API-Version","v2")}}}),i(a)},i=function(a){$.ajax({headers:{Accept:"application/json"},dataType:"json",cache:!1,url:"settings",success:function(b){g(b),RED.settings.user&&!RED.settings.user.anonymous||RED.settings.remove("auth-tokens"),console.log("Prisme-Flow: "+b.version),a()},error:function(b,c,d){401===b.status?(/[?&]access_token=(.*?)(?:$|&)/.test(window.location.search)&&(window.location.search=""),RED.user.login(function(){i(a)})):console.log("Unexpected error:",b.status,c)}})};return{init:h,load:i,set:d,get:e,remove:f,theme:a}}(),RED.user=function(){function a(a,b){"function"==typeof a&&(b=a,a={});var d=$('<div id="node-dialog-login" class="hide"><div style="display: inline-block;width: 250px; vertical-align: top; margin-right: 10px; margin-bottom: 20px;"><img id="node-dialog-login-image" src=""/></div><div style="display: inline-block; width: 250px; vertical-align: bottom; margin-left: 10px; margin-bottom: 20px;"><form id="node-dialog-login-fields" class="form-horizontal" style="margin-bottom: 0px;"></form></div></div>');d.dialog({autoOpen:!1,dialogClass:"ui-dialog-no-close",modal:!0,closeOnEscape:!1,width:600,resizable:!1,draggable:!1}),$("#node-dialog-login-fields").empty(),$.ajax({dataType:"json",url:"auth/login",success:function(e){if("credentials"==e.type){var f=0;for(e.image?$("#node-dialog-login-image").attr("src",e.image):$("#node-dialog-login-image").attr("src","red/images/node-red-256.png");f<e.prompts.length;f++){var g=e.prompts[f],h=$("<div/>",{id:"rrr"+f,class:"form-row"});$('<label for="node-dialog-login-'+g.id+'">'+g.label+":</label><br/>").appendTo(h);var i=$('<input style="width: 100%" id="node-dialog-login-'+g.id+'" type="'+g.type+'" tabIndex="'+(f+1)+'"/>').appendTo(h);f<e.prompts.length-1&&i.keypress(function(){var a=h;return function(b){13==b.keyCode&&(a.next("div").find("input").focus(),b.preventDefault())}}()),h.appendTo("#node-dialog-login-fields")}$('<div class="form-row" style="text-align: right; margin-top: 10px;"><span id="node-dialog-login-failed" style="line-height: 2em;float:left;" class="hide">'+RED._("user.loginFailed")+'</span><img src="flow/images/spin.svg" style="height: 30px; margin-right: 10px; " class="login-spinner hide"/>'+(a.cancelable?'<a href="#" id="node-dialog-login-cancel" style="margin-right: 20px;" tabIndex="'+(f+1)+'">'+RED._("common.label.cancel")+"</a>":"")+'<input type="submit" id="node-dialog-login-submit" style="width: auto;" tabIndex="'+(f+2)+'" value="'+RED._("user.login")+'"></div>').appendTo("#node-dialog-login-fields"),$("#node-dialog-login-submit").button(),$("#node-dialog-login-fields").submit(function(d){$("#node-dialog-login-submit").button("option","disabled",!0),$("#node-dialog-login-failed").hide(),$(".login-spinner").show();for(var f={client_id:"node-red-editor",grant_type:"password",scope:""},g=0;g<e.prompts.length;g++){var h=e.prompts[g];f[h.id]=$("#node-dialog-login-"+h.id).val()}$.ajax({url:"auth/token",type:"POST",data:f}).done(function(d,e,f){RED.settings.set("auth-tokens",d),$("#node-dialog-login").dialog("destroy").remove(),a.updateMenu&&c(),b()}).fail(function(a,b,c){RED.settings.remove("auth-tokens"),$("#node-dialog-login-failed").show()}).always(function(){$("#node-dialog-login-submit").button("option","disabled",!1),$(".login-spinner").hide()}),d.preventDefault()}),a.cancelable&&$("#node-dialog-login-cancel").button().click(function(a){$("#node-dialog-login").dialog("destroy").remove()})}d.dialog("open")}})}function b(){$.ajax({url:"auth/revoke",type:"POST",data:{token:RED.settings.get("auth-tokens").access_token},success:function(){RED.settings.remove("auth-tokens"),document.location.reload(!0)}})}function c(){$("#btn-usermenu-submenu li").remove(),RED.settings.user.anonymous?RED.menu.addItem("btn-usermenu",{id:"usermenu-item-login",label:RED._("menu.label.login"),onselect:function(){RED.user.login({cancelable:!0},function(){RED.settings.load(function(){RED.notify(RED._("user.loggedInAs",{name:RED.settings.user.username}),"success"),c()})})}}):(RED.menu.addItem("btn-usermenu",{id:"usermenu-item-username",label:"<b>"+RED.settings.user.username+"</b>"}),RED.menu.addItem("btn-usermenu",{id:"usermenu-item-logout",label:RED._("menu.label.logout"),onselect:function(){RED.user.logout()}}))}function d(){RED.settings.user&&(RED.settings.editorTheme&&RED.settings.editorTheme.hasOwnProperty("userMenu")||($('<li><a id="btn-usermenu" class="button hide" data-toggle="dropdown" href="#"><i class="fa fa-user"></i></a></li>').prependTo(".header-toolbar"),RED.menu.init({id:"btn-usermenu",options:[]}),c()))}return{init:d,login:a,logout:b}}(),RED.comms=function(){function a(){function b(){for(var a in i)i.hasOwnProperty(a)&&d.send(JSON.stringify({subscribe:a}))}l=!0;var c=location.hostname,m=location.port;0!==m.length&&(c=c+":"+m),c+=document.location.pathname,c=c+("/"==c.slice(-1)?"":"/")+"comms",c="ws"+("https:"==document.location.protocol?"s":"")+"://"+c;var n=RED.settings.get("auth-tokens");j=null!=n,d=new WebSocket(c),d.onopen=function(){k=0,e&&(f=setTimeout(function(){e.close(),e=null},1e3)),j?d.send(JSON.stringify({auth:n.access_token})):b()},d.onmessage=function(c){var d=JSON.parse(c.data);if(j&&d.auth)"ok"===d.auth?(j=!1,b()):"fail"===d.auth&&(l=!1,RED.user.login({updateMenu:!0},function(){a()}));else if(d.topic)for(var e in i)if(i.hasOwnProperty(e)){var f=new RegExp("^"+e.replace(/([\[\]\?\(\)\\\\$\^\*\.|])/g,"\\$1").replace(/\+/g,"[^/]+").replace(/\/#$/,"(/.*)?")+"$");if(f.test(d.topic)){var g=i[e];if(g)for(var h=0;h<g.length;h++)g[h](d.topic,d.data)}}},d.onclose=function(){l&&(f&&(clearTimeout(f),f=null),k++,k<10?(setTimeout(a,1e3),k>5&&null==e&&(e=RED.notify(RED._("notification.errors.lostConnection"),"error",!0))):k<20?setTimeout(a,2e3):(h=60,g=setInterval(function(){if(h--,0===h)e.update(RED._("notification.errors.lostConnection")),clearInterval(g),a();else{var b=RED._("notification.errors.lostConnectionReconnect",{time:h})+' <a href="#">'+RED._("notification.errors.lostConnectionTry")+"</a>";e.update(b),$(e).find("a").click(function(b){b.preventDefault(),e.update(RED._("notification.errors.lostConnection")),clearInterval(g),a()})}},1e3)))}}function b(a,b){null==i[a]&&(i[a]=[]),i[a].push(b),d&&1==d.readyState&&d.send(JSON.stringify({subscribe:a}))}function c(a,b){if(i[a]){for(var c=0;c<i[a].length;c++)if(i[a][c]===b){i[a].splice(c,1);break}0===i[a].length&&delete i[a]}}var d,e=null,f=null,g=null,h=10,i={},j=!1,k=0,l=!1;return{connect:a,subscribe:b,unsubscribe:c}}(),RED.text={},RED.text.bidi=function(){function a(a){for(var d=a.length,e=0;e<d;e++){if(b(a.charCodeAt(e)))return!0;if(c(a.charCodeAt(e)))return!1}return!1}function b(a){return a>=1488&&a<=1535||a>=1536&&a<=1631||a>=1642&&a<=1775||a>=1786&&a<=2047||a>=64285&&a<=65023||a>=65136&&a<=65276}function c(a){return a>64&&a<91||a>96&&a<123}function d(b){return"auto"==j?a(b)?"rtl":"ltr":j}function e(){$(this).attr("dir",d($(this).val()))}function f(a){a.on("keyup",e).on("paste",e).on("cut",e),e.call(a)}function g(a){if(a){var b=d(a);if("ltr"==b)return k+a+m;if("rtl"==b)return l+a+m}return a}function h(){$("#workspace").find("span.bidiAware").each(function(){$(this).attr("dir",d($(this).html()))}),$("#sidebar").find("span.bidiAware").each(function(){$(this).attr("dir",d($(this).text()))})}function i(a){j=a,RED.nodes.eachNode(function(a){a.dirty=!0}),RED.view.redraw(),RED.palette.refresh(),h()}var j="",k="‪",l="‫",m="‬";return{setTextDirection:i,enforceTextDirectionWithUCC:g,resolveBaseTextDir:d,prepareInput:f}}(),RED.text.format=function(){function a(a){switch(a){case"breadcrumb":return j;case"comma":return k;case"email":return l;case"filepath":return m;case"formula":return n;case"sql":return o;case"underscore":return p;case"url":return q;case"word":return r;case"xpath":return s;default:return t}}function b(a){var b=window.navigator.userAgent;if(b.indexOf("MSIE")>=0||b.indexOf("Trident")>=0||b.indexOf("Edge")>=0)return!1;var c=document.createElement(a.tagName);c.contentEditable=!0;var d="oninput"in c;return d||(c.setAttribute("oninput","return;"),d="function"==typeof c.oninput),c=null,d}function c(a,c,e,f,g){if(!a||1!=a.nodeType)return!1;u||(u=document.createEvent("Event"),u.initEvent("TF",!0,!0)),a.setAttribute("data-tf-type",c);var i="undefined"===e?"{}":JSON.stringify(Array.isArray(e)?e[0]:e);a.setAttribute("data-tf-args",i);var j="ltr";if("undefined"===f&&(a.dir?j=a.dir:a.style&&a.style.direction&&(j=a.style.direction),f="rtl"===j.toLowerCase()),a.setAttribute("data-tf-dir",f),a.setAttribute("data-tf-locale",h.getLocaleDetails(g).lang),b(a)){a.oninput;a.oninput=function(a){d(a.target)}}else a.onkeyup=function(b){d(b.target),a.dispatchEvent(u)},a.onmouseup=function(b){d(b.target),a.dispatchEvent(u)};return d(a),!0}function d(b){var c=b.textContent||"",d=document.getSelection();if(0===c.length||!d||d.rangeCount<=0)return void b.dispatchEvent(u);var e,f,g=d.getRangeAt(0),h=g.cloneRange();e=g.startContainer,f=g.startOffset;var i=0;3===e.nodeType&&(i+=f),h.setStart(b,0),h.setEndBefore(e);var j=document.createElement("div");j.appendChild(h.cloneContents()),i+=j.textContent.length,b.innerHTML=a(b.getAttribute("data-tf-type")).format(c,JSON.parse(b.getAttribute("data-tf-args")),"true"===b.getAttribute("data-tf-dir"),!0,b.getAttribute("data-tf-locale"));var k=b,l=b,m=0,n=!1;for(d.removeAllRanges(),g.setStart(b,0),g.setEnd(b,0);l;){if(3===l.nodeType){if(m+l.nodeValue.length>=i){g.setStart(l,i-m);break}m+=l.nodeValue.length,l=l.nextSibling}else{if(l.hasChildNodes()){k=l,l=k.firstChild;continue}l=l.nextSibling}for(;!l;){if(k===b){n=!0;break}l=k.nextSibling,k=k.parentNode}if(n)break}d.addRange(g),b.dispatchEvent(u)}var e=function(){var a=function(a){this.content="",this.actual="",this.textDirection="",this.localGui="",this.isVisible=!0,this.isSeparator=!1,this.isParsed=!1,this.keep=!1,this.inBounds=!1,this.inPoints=!1;var b="";for(b in a)a.hasOwnProperty(b)&&(this[b]=a[b])};return a}(),f=function(){function a(a){if(!a)return!1;"undefined"==typeof a.start&&(a.start=""),"undefined"==typeof a.end&&(a.end=""),"undefined"!=typeof a.startAfter?(a.start=a.startAfter,a.after=!0):a.after=!1,"undefined"!=typeof a.endBefore?(a.end=a.endBefore,a.before=!0):a.before=!1;var b=parseInt(a.startPos,10);isNaN(b)?a.usePos=!1:a.usePos=!0;var c=parseInt(a.length,10);return isNaN(c)?a.useLength=!1:a.useLength=!0,a.loops="undefined"==typeof a.loops||!!a.loops,!0}function b(a,b){var c={};for(var d in b)b.hasOwnProperty(d)&&(c[d]=b[d]);var e=a.content,f=c.usePos&&c.startPos<e.length;f&&(c.start="",c.loops=!1),c.bStart=f?c.startPos:c.start.length>0?e.indexOf(c.start):0;var g=c.useLength&&c.length>0&&c.bStart+c.length<e.length;return g&&(c.end=""),c.bEnd=g?c.bStart+c.length:c.end.length>0?e.indexOf(c.end,c.bStart+c.start.length)+1:e.length,c.after||(c.start=""),c.before||(c.end=""),c}return{handleSubcontents:function(a,b,c,d,f){if(!c.content||"string"!=typeof c.content||0===c.content.length)return a;var g=!0;"undefined"!=typeof c.loops&&(g=!!c.loops);for(var h=0;!0&&!(h>=a.length);h++)if(!(a[h].isParsed||a.keep||a[h].isSeparator)){var i=a[h].content,j=i.indexOf(c.content);if(!(j<0)){var k,l=0;if(c.continued){do l++,k=i.indexOf(c.content,j+l*c.content.length);while(0===k)}else l=1;if(k=j+l*c.content.length,a.splice(h,1),j>0&&(a.splice(h,0,new e({content:i.substring(0,j),localGui:b.dir,keep:!0})),h++),a.splice(h,0,new e({content:i.substring(j,k),textDirection:c.subDir,localGui:b.dir})),k<i.length&&a.splice(h+1,0,new e({content:i.substring(k,i.length),localGui:b.dir,keep:!0})),!g)break}}},handleBounds:function(c,d,f,g,h){for(var i=0;i<f.length;i++)if(a(f[i]))for(var j=0;!0&&!(j>=c.length);j++)if(!(c[j].isParsed||c[j].inBounds||c.keep||c[j].isSeparator)){var k=b(c[j],f[i]),l=k.bStart,m=k.bEnd;if(!(l<0||m<0)){var n=c[j].content;if(c.splice(j,1),l>0&&(c.splice(j,0,new e({content:n.substring(0,l),localGui:d.dir,keep:!0})),j++),k.start&&(c.splice(j,0,new e({content:k.start,localGui:d.dir,isSeparator:!0})),j++),c.splice(j,0,new e({content:n.substring(l+k.start.length,m-k.end.length),textDirection:k.subDir,localGui:d.dir,inBounds:!0})),k.end&&(j++,c.splice(j,0,new e({content:k.end,localGui:d.dir,isSeparator:!0}))),m+k.end.length<n.length&&c.splice(j+1,0,new e({content:n.substring(m+k.end.length,n.length),localGui:d.dir,keep:!0})),!k.loops)break}}for(i=0;i<c.length;i++)c[i].inBounds=!1;return c},handleCases:function(a,b,c,d,e){if(0===c.length)return a;var f={};for(var g in b)b.hasOwnProperty(g)&&(f[g]=b[g]);for(var h=0;h<c.length;h++)c[h].handler&&"function"==typeof c[h].handler.handle||(c[h].handler=b.commonHandler),c[h].args?(f.cases=c[h].args.cases,f.points=c[h].args.points,f.bounds=c[h].args.bounds,f.subs=c[h].args.subs):(f.cases=[],f.points=[],f.bounds=[],f.subs={}),c[h].handler.handle(d,a,f,e);return a},handlePoints:function(a,b,c,d,f){for(var g=0;g<c.length;g++)for(var h=0;!0&&!(h>=a.length);h++)if(!(a[h].isParsed||a[h].keep||a[h].isSeparator)){var i=a[h].content,j=i.indexOf(c[g]);j>=0&&(a.splice(h,1),j>0&&(a.splice(h,0,new e({content:i.substring(0,j),textDirection:b.subDir,localGui:b.dir,inPoints:!0})),h++),a.splice(h,0,new e({content:c[g],localGui:b.dir,isSeparator:!0})),j+c[g].length+1<=i.length&&a.splice(h+1,0,new e({content:i.substring(j+c[g].length),textDirection:b.subDir,localGui:b.dir,inPoints:!0})))}for(g=0;g<a.length;g++)a[g].keep?a[g].keep=!1:a[g].inPoints&&(a[g].isParsed=!0,a[g].inPoints=!1);return a}}}(),g=function(){return{handle:function(a,b,c,d){var e=[];Array.isArray(c.cases)&&(e=c.cases);var g=[];"undefined"!=typeof c.points&&(Array.isArray(c.points)?g=c.points:"string"==typeof c.points&&(g=c.points.split("")));var h={};"object"==typeof c.subs&&(h=c.subs);var i=[];return Array.isArray(c.bounds)&&(i=c.bounds),f.handleBounds(b,c,i,a,d),f.handleSubcontents(b,c,h,a,d),f.handleCases(b,c,e,a,d),f.handlePoints(b,c,g,a,d),b}}}(),h=function(){var a=function(a){var b=a?a.split("-")[0]:"";return!(!b||b.length<2)&&["iw","he","ar","fa","ur"].some(function(a){return a===b})},b="‪",c="‫",d="‬",e="‎",f="‏",g="‭",h="‮";return{LRE:b,RLE:c,PDF:d,LRM:e,RLM:f,LRO:g,RLO:h,getLocaleDetails:function(b){if(b||(b="undefined"==typeof navigator?"":navigator.language||navigator.userLanguage||""),b=b.toLowerCase(),a(b)){var c=b.split("-");return{lang:c[0],country:c[1]?c[1]:""}}return{lang:"not-bidi"}},removeUcc:function(a){return a?a.replace(/[\u200E\u200F\u202A-\u202E]/g,""):a},removeTags:function(a){return a?a.replace(/<[^<]*>/g,""):a},getDirection:function(a,b,c,d){if("auto"!==b&&/^(rtl|ltr)$/i.test(b))return b;c=/^(rtl|ltr)$/i.test(c)?c:"ltr";var e=d?a.split("").reverse().join(""):a,f=/[A-Za-z\u05d0-\u065f\u066a-\u06ef\u06fa-\u07ff\ufb1d-\ufdff\ufe70-\ufefc]/.exec(e);return f?f[0]<="z"?"ltr":"rtl":c},hasArabicChar:function(a){var b=/[\u0600-\u065f\u066a-\u06ef\u06fa-\u07ff\ufb1d-\ufdff\ufe70-\ufefc]/.exec(a);return!!b},showMarks:function(a,i){for(var j="",k=0;k<a.length;k++){var l=""+a.charAt(k);switch(l){case e:j+="<LRM>";break;case f:j+="<RLM>";break;case b:j+="<LRE>";break;case c:j+="<RLE>";break;case g:j+="<LRO>";break;case h:j+="<RLO>";break;case d:j+="<PDF>";break;default:j+=l}}var m="undefined"!=typeof i&&/^(rtl|ltr)$/i.test(i)?"rtl"===i?h:g:"";return m+j+(""===m?"":d)},hideMarks:function(a){var b=a.replace(/<LRM>/g,this.LRM).replace(/<RLM>/g,this.RLM).replace(/<LRE>/g,this.LRE);return b.replace(/<RLE>/g,this.RLE).replace(/<LRO>/g,this.LRO).replace(/<RLO>/g,this.RLO).replace(/<PDF>/g,this.PDF)},showTags:function(a){return"<xmp>"+a+"</xmp>"},hideTags:function(a){return a.replace(/<xmp>/g,"").replace(/<\/xmp>/g,"")}}}(),i=function(){function a(a,b,e,f){return a&&b?d(c(a,b,f),b,e):a}function b(a,b){var c=Array.isArray(a)?a[0]:a;return c.guiDir||(c.guiDir="ltr"),c.dir||(c.dir=c.guiDir),b?("undefined"==typeof c.points&&(c.points=[]),c.cases||(c.cases=[]),c.bounds||(c.bounds=[]),c.commonHandler=g,c):c}function c(a,c,d){if(!a||!c)return new e({content:""});var f=b(c,!0),h=[new e({content:a,actual:a,localGui:f.dir})],i=g.handle;return f.handler&&"function"==typeof f.handler&&(i=f.handler.handle),i(a,h,f,d),h}function d(a,c,d){var e=b(c,!1);return d?i(a,e):f(a,e)}function f(a,b,c){for(var d="",e="",f="",g=!1,i=0;i<a.length;i++)if(a[i].isVisible){var j=a[i].textDirection,k=a[i].localGui;if(""!==k&&""===f?d+="rtl"===k?h.RLE:h.LRE:""===f||""!==k&&k===f&&!g||(d+=h.PDF+(i==a.length-1&&""!==k?"":"rtl"===b.dir?h.RLM:h.LRM),""!==k&&(d+="rtl"===k?h.RLE:h.LRE)),"auto"===j&&(j=h.getDirection(a[i].content,j,b.guiDir)),/^(rtl|ltr)$/i.test(j)?(d+=("rtl"===j?h.RLE:h.LRE)+a[i].content+h.PDF,e=j):(d+=a[i].content,e=h.getDirection(a[i].content,j,b.guiDir,!0)),i<a.length-1){var l=k&&a[i+1].localGui?k:b.dir;d+="rtl"===l?h.RLM:h.LRM}else""!==f&&(d+=h.PDF);f=k,g=!1}else g=!0;var m="auto"===b.dir?h.getDirection(a[0].actual,b.dir,b.guiDir):b.dir;return m!==b.guiDir&&(d=("rtl"===m?h.RLE:h.LRE)+d+h.PDF),d}function i(a,b,c){for(var d="",e="",f="",g=0;g<a.length;g++)if(a[g].isVisible){var i=a[g].textDirection,j=a[g].localGui;if(""!==j&&""===f?d+="<bdi dir='"+("rtl"===j?"rtl":"ltr")+"'>":""===f||""!==j&&j===f&&!stop||(d+="</bdi>"+(g==a.length-1&&""!==j?"":"<span style='unicode-bidi: embed; direction: "+("rtl"===b.dir?"rtl":"ltr")+";'></span>"),""!==j&&(d+="<bdi dir='"+("rtl"===j?"rtl":"ltr")+"'>")),"auto"===i&&(i=h.getDirection(a[g].content,i,b.guiDir)),/^(rtl|ltr)$/i.test(i)?(d+="<bdi dir='"+("rtl"===i?"rtl":"ltr")+"'>"+a[g].content+"</bdi>",e=i):(d+=a[g].content,e=h.getDirection(a[g].content,i,b.guiDir,!0)),g<a.length-1){var k=j&&a[g+1].localGui?j:b.dir;d+="<span style='unicode-bidi: embed; direction: "+("rtl"===k?"rtl":"ltr")+";'></span>"}else""!==f&&(d+="</bdi>");f=j,stop=!1}else stop=!0;var l="auto"===b.dir?h.getDirection(a[0].actual,b.dir,b.guiDir):b.dir;return l!==b.guiDir&&(d="<bdi dir='"+("rtl"===l?"rtl":"ltr")+"'>"+d+"</bdi>"),d}function j(a,b){return a}var k={};return k.parseAndDisplayStructure=a,k.parseStructure=c,k.displayStructure=d,k.restore=j,k}(),j=function(){return{format:function(a,b,c,d,e,f){var g={guiDir:c?"rtl":"ltr",dir:b.dir?b.dir:c?"rtl":"ltr",subs:{content:">",continued:!0,subDir:c?"rtl":"ltr"},cases:[{args:{subs:{content:"<",continued:!0,subDir:c?"ltr":"rtl"}}}]};return f?i.parseStructure(a,g,!!d,e):i.parseAndDisplayStructure(a,g,!!d,e)}}}(),k=function(){return{format:function(a,b,c,d,e,f){var g={guiDir:c?"rtl":"ltr",dir:"ltr",points:","};return f?i.parseStructure(a,g,!!d,e):i.parseAndDisplayStructure(a,g,!!d,e)}}}(),l=function(){function a(a,b){if("ar"!==h.getLocaleDetails(b).lang)return"ltr";var c=a.indexOf("@");return c>0&&c<a.length-1&&h.hasArabicChar(a.substring(c+1))?"rtl":"ltr"}return{format:function(b,c,d,e,f,h){var j={guiDir:d?"rtl":"ltr",dir:a(b,f),points:"<>.:,;@",cases:[{handler:g,args:{bounds:[{startAfter:'"',endBefore:'"'},{startAfter:"(",endBefore:")"}],points:""}}]};return h?i.parseStructure(b,j,!!e,f):i.parseAndDisplayStructure(b,j,!!e,f)}}}(),m=function(){return{format:function(a,b,c,d,e,f){var g={guiDir:c?"rtl":"ltr",dir:"ltr",points:"/\\:."};return f?i.parseStructure(a,g,!!d,e):i.parseAndDisplayStructure(a,g,!!d,e)}}}(),n=function(){return{format:function(a,b,c,d,e,f){var g={guiDir:c?"rtl":"ltr",dir:"ltr",points:" /%^&[]<>=!?~:.,|()+-*{}"};return f?i.parseStructure(a,g,!!d,e):i.parseAndDisplayStructure(a,g,!!d,e)}}}(),o=function(){return{format:function(a,b,c,d,e,f){var h={guiDir:c?"rtl":"ltr",dir:"ltr",points:"\t!#%&()*+,-./:;<=>?|[]{}",cases:[{handler:g,args:{bounds:[{startAfter:"/*",endBefore:"*/"},{startAfter:"--",end:"\n"},{startAfter:"--"}]}},{handler:g,args:{subs:{content:" ",continued:!0}}},{handler:g,args:{bounds:[{startAfter:"'",endBefore:"'"},{startAfter:'"',endBefore:'"'}]}}]};return f?i.parseStructure(a,h,!!d,e):i.parseAndDisplayStructure(a,h,!!d,e)}}}(),p=function(){return{format:function(a,b,c,d,e,f){var g={guiDir:c?"rtl":"ltr",dir:"ltr",points:"_"};return f?i.parseStructure(a,g,!!d,e):i.parseAndDisplayStructure(a,g,!!d,e)}}}(),q=function(){return{format:function(a,b,c,d,e,f){var g={guiDir:c?"rtl":"ltr",dir:"ltr",points:":?#/@.[]="};return f?i.parseStructure(a,g,!!d,e):i.parseAndDisplayStructure(a,g,!!d,e)}}}(),r=function(){return{format:function(a,b,c,d,e,f){var g={guiDir:c?"rtl":"ltr",dir:b.dir?b.dir:c?"rtl":"ltr",points:" ,.!?;:"};return f?i.parseStructure(a,g,!!d,e):i.parseAndDisplayStructure(a,g,!!d,e)}}}(),s=function(){return{format:function(a,b,c,d,e,f){var h={guiDir:c?"rtl":"ltr",dir:"ltr",points:" /[]<>=!:@.|()+-*",cases:[{handler:g,args:{bounds:[{startAfter:'"',endBefore:'"'},{startAfter:"'",endBefore:"'"}],points:""}}]};return f?i.parseStructure(a,h,!!d,e):i.parseAndDisplayStructure(a,h,!!d,e)}}}(),t=function(){return{format:function(a,b,c,d,e,f){var g={},h="",j=Array.isArray(b)?b[0]:b;for(h in j)j.hasOwnProperty(h)&&(g[h]=j[h]);return g.guiDir=c?"rtl":"ltr",g.dir=g.dir?g.dir:g.guiDir,f?i.parseStructure(a,g,!!d,e):i.parseAndDisplayStructure(a,g,!!d,e)}}}(),u=(function(){function b(a){return"he"===a||"iw"===a||"ar"===a?"rtl":"ltr"}function c(a){0===a.msgDir.length&&(a.msgDir=b(a.msgLang)),a.msgDir="ltr"!==a.msgDir&&"rtl"!==a.msgDir&&"auto"!=a.msgDir?"ltr":a.msgDir,0===a.guiDir.length&&(a.guiDir=a.msgDir),a.guiDir="rtl"!==a.guiDir?"ltr":"rtl",0===a.phDir.length&&(a.phDir=0===a.phLang.length?a.msgDir:b(a.phLang)),a.phDir="ltr"!==a.phDir&&"rtl"!==a.phDir&&"auto"!=a.phDir?"ltr":a.phDir,"string"==typeof a.phPacking&&(a.phPacking=a.phPacking.split("")),a.phPacking.length<2&&(a.phPacking=["{","}"])}var d={msgLang:"en",msgDir:"",phLang:"",phDir:"",phPacking:["{","}"],phStt:{type:"none",args:{}},guiDir:""},f=!1;return{setDefaults:function(a){for(var b in a)d.hasOwnProperty(b)&&(d[b]=a[b]);c(d),f=!0},format:function(b){f||(c(d),f=!0);var g=!1,h=!1,j=d.phPacking[0].length,k=d.phPacking[1].length;if(arguments.length>0){var l=arguments[arguments.length-1];"boolean"==typeof l&&(g=l,h=!0)}for(var m,n=new RegExp(d.phPacking[0]+"\\d+"+d.phPacking[1]),o=[],p=0,q=b;null!=(m=n.exec(q));){var r=q.indexOf(m[0])+m[0].length;r>m[0].length&&o.push({text:q.substring(0,r-m[0].length),ph:!1}),o.push({text:m[0],ph:!0}),p+=r,q=q.substring(r,q.length)}p<b.length&&o.push({text:b.substring(p,b.length),ph:!1});for(var s=[],t=1;t<arguments.length-(h?1:0);t++){var u=arguments[t],v=u,w=!1,x=0;if(Array.isArray(v)){if(u=v[0],"undefined"==typeof u)continue;w=!0}do"string"==typeof u?s.push({text:u,dir:d.phDir,stt:d.stt}):"boolean"==typeof u?g=u:"object"==typeof u?(s.push(u),u.hasOwnProperty("text")||(s[s.length-1].text="{???}"),u.hasOwnProperty("dir")&&0!==u.dir.length||(s[s.length-1].dir=d.phDir),(!u.hasOwnProperty("stt")||"string"==typeof u.stt&&0===u.stt.length||"object"==typeof u.stt&&0===Object.keys(u.stt).length)&&(s[s.length-1].stt=d.phStt)):s.push({text:""+u,dir:d.phDir,stt:d.phStt}),w&&(x++,x==v.length?w=!1:u=v[x]);while(w)}var y=[];for(t=0;t<o.length;t++){var z=o[t];if(z.ph){var A=parseInt(z.text.substring(j,z.text.length-k));if(isNaN(A)||A>=s.length){y.push(new e({content:z.text,textDirection:d.msgDir}));continue}var B="none";if(s[A].stt||(s[A].stt=d.phStt),s[A].stt&&("string"==typeof s[A].stt?B=s[A].stt:s[A].stt.hasOwnProperty("type")&&(B=s[A].stt.type)),"none"!==B.toLowerCase()){for(var C=a(B).format(s[A].text,s[A].stt.args||{},"rtl"===d.msgDir,!1,d.msgLang,!0),D=0;D<C.length;D++)y.push(C[D]);y.push(new e({isVisible:!1}))}else y.push(new e({content:s[A].text,textDirection:s[A].dir?s[A].dir:d.phDir}))}else y.push(new e({content:z.text,textDirection:d.msgDir}))}var E=i.displayStructure(y,{guiDir:d.guiDir,dir:d.msgDir},g);return E}}}(),null);return{getHtml:function(b,c,d,e,f){return a(c).format(b,d,e,!0,f)},attach:function(a,b,d,e,f){return c(a,b,d,e,f)}}}(),RED.state={DEFAULT:0,MOVING:1,JOINING:2,MOVING_ACTIVE:3,ADDING:4,EDITING:5,EXPORT:6,IMPORT:7,IMPORT_DRAGGING:8,QUICK_JOINING:9},RED.nodes=function(){function a(a){N=a,RED.events.emit("nodes:change",{dirty:N})}function b(){return(1+4294967295*Math.random()).toString(16)}function c(a){if(0!==a.type.indexOf("subflow")&&(a._=a._def._),"config"==a._def.category)H[a.id]=a;else{if(a.ports=[],a.wires&&a.wires.length>a.outputs&&(a.outputs=a.wires.length),a.outputs)for(var b=0;b<a.outputs;b++)a.ports.push(b);if(a.dirty=!0,B(a),"subflows"==a._def.category&&"undefined"==typeof a.i){var c=0;RED.nodes.eachNode(function(a){c=Math.max(c,a.i||0)}),a.i=c+1}G.push(a)}RED.events.emit("nodes:add",a)}function d(a){I.push(a)}function e(a){if(a in H)return H[a];for(var b in G)if(G[b].id==a)return G[b];return null}function f(a){var b,c=[],d=[];if(a in H)b=H[a],delete H[a],RED.events.emit("nodes:remove",b),RED.workspaces.refresh();else if(b=e(a)){G.splice(G.indexOf(b),1),c=I.filter(function(a){return a.source===b||a.target===b}),c.forEach(function(a){I.splice(I.indexOf(a),1)});var g=!1;for(var h in b._def.defaults)if(b._def.defaults.hasOwnProperty(h)){var i=b._def.defaults[h];if(i.type){var j=O.getNodeType(i.type);if(j&&"config"==j.category){var k=H[b[h]];if(k)if(g=!0,k._def.exclusive)f(b[h]),d.push(k);else{var l=k.users;l.splice(l.indexOf(b),1)}}}}g&&RED.workspaces.refresh(),RED.events.emit("nodes:remove",b)}return b&&b._def.onremove&&b._def.onremove.call(n),{links:c,nodes:d}}function g(a){var b=I.indexOf(a);b!=-1&&I.splice(b,1)}function h(a){J[a.id]=a,a._def={defaults:{label:{value:""}}},K.push(a.id)}function j(a){return J[a]}function k(a){delete J[a],K.splice(K.indexOf(a),1);var b,c,d=[],e=[];for(b=0;b<G.length;b++)c=G[b],c.z==a&&d.push(c);for(b in H)H.hasOwnProperty(b)&&(c=H[b],c.z==a&&d.push(c));for(b=0;b<d.length;b++){var g=f(d[b].id);e=e.concat(g.links)}return{nodes:d,links:e}}function l(a,b){if(b){var c=Object.keys(L).map(function(a){return L[a].name});c.sort();var d=1,e=a.name;c.forEach(function(b){e==b&&(d++,e=a.name+" ("+d+")")}),a.name=e}a._def={defaults:{},icon:"subflow.png",category:"subflows",color:"#da9",inputs:a.in.length,outputs:a.out.length},L[a.id]=a,RED.nodes.registerType("subflow:"+a.id,{defaults:{name:{value:""}},info:a.info,icon:"subflow.png",category:"subflows",inputs:a.in.length,outputs:a.out.length,color:"#da9",label:function(){return this.name||RED.nodes.subflow(a.id).name},labelStyle:function(){return this.name?"node_label_italic":""},paletteLabel:function(){return RED.nodes.subflow(a.id).name},set:{module:"node-red"}})}function m(a){return L[a]}function o(a){delete L[a.id],O.removeNodeType("subflow:"+a.id)}function p(a,b){for(var c=0;c<G.length;c++){var d=G[c];if(d.z===a){var e=/^subflow:(.+)$/.exec(d.type);if(e){if(e[1]===b)return!0;var f=p(e[1],b);if(f)return!0}}}return!1}function q(a){var b={};b[a.id]=!0;for(var c=[a],d=[a];0!==d.length;)for(var e=d.shift(),f=I.filter(function(a){return a.source===e||a.target===e}),g=0;g<f.length;g++){var h=f[g].source===e?f[g].target:f[g].source,i=h.id;i||(i=h.direction+":"+h.i),b[i]||(b[i]=!0,c.push(h),d.push(h))}return c}function r(a){var b={};b.id=a.id,b.type=a.type;for(var c in a._def.defaults)a._def.defaults.hasOwnProperty(c)&&(b[c]=a[c]);return b}function s(a,b){if("tab"===a.type)return r(a);b=b||!1;var c={};if(c.id=a.id,c.type=a.type,c.z=a.z,"unknown"==c.type)for(var d in a._orig)a._orig.hasOwnProperty(d)&&(c[d]=a._orig[d]);else{for(var e in a._def.defaults)a._def.defaults.hasOwnProperty(e)&&(c[e]=a[e]);if(b&&a.credentials){var f={};c.credentials={};for(var g in a._def.credentials)a._def.credentials.hasOwnProperty(g)&&("password"==a._def.credentials[g].type?(!a.credentials._||a.credentials["has_"+g]!=a.credentials._["has_"+g]||a.credentials["has_"+g]&&a.credentials[g])&&(f[g]=a.credentials[g]):null==a.credentials[g]||a.credentials._&&a.credentials[g]==a.credentials._[g]||(f[g]=a.credentials[g]));Object.keys(f).length>0&&(c.credentials=f)}}if("config"!=a._def.category){c.x=a.x,c.y=a.y,c.wires=[];for(var h=0;h<a.outputs;h++)c.wires.push([]);for(var i=I.filter(function(b){return b.source===a}),j=0;j<i.length;j++){var k=i[j];"subflow"!=k.target.type&&c.wires[k.sourcePort].push(k.target.id)}}return c}function t(a){var b={};return b.id=a.id,b.type=a.type,b.name=a.name,b.info=a.info,b.in=[],b.out=[],a.in.forEach(function(a){for(var c={x:a.x,y:a.y,wires:[]},d=I.filter(function(b){return b.source===a}),e=0;e<d.length;e++){var f=d[e];"subflow"!=f.target.type&&c.wires.push({id:f.target.id})}b.in.push(c)}),a.out.forEach(function(c,d){var e={x:c.x,y:c.y,wires:[]},f=I.filter(function(a){return a.target===c});for(i=0;i<f.length;i++)"subflow"!=f[i].source.type?e.wires.push({id:f[i].source.id,port:f[i].sourcePort}):e.wires.push({id:a.id,port:0});b.out.push(e)}),b}function u(a){for(var b=[],c={},d={},e=0;e<a.length;e++){var f=a[e];if("subflow:"==f.type.substring(0,8)){var g=f.type.substring(8);if(!d[g]){d[g]=!0;var h=m(g),i=[h];RED.nodes.eachNode(function(a){a.z==g&&i.push(a)});var j=u(i);b=j.concat(b)}}if("subflow"!=f.type){var k=RED.nodes.convertNode(f);for(var l in f._def.defaults)if(f._def.defaults[l].type&&f[l]in H){var n=H[f[l]],o=O.getNodeType(f._def.defaults[l].type).exportable;null==o||o?f[l]in c||(c[f[l]]=!0,a.push(n)):k[l]=""}b.push(k)}else{var p=t(f);b.push(p)}}return b}function v(a){void 0===a&&(a=!0);var b,c=[];for(b=0;b<K.length;b++)"tab"==J[K[b]].type&&c.push(r(J[K[b]]));for(b in L)L.hasOwnProperty(b)&&c.push(t(L[b]));for(b in H)H.hasOwnProperty(b)&&c.push(s(H[b],a));for(b=0;b<G.length;b++){var d=G[b];c.push(s(d,a))}return c}function w(a,b){var c,d=null;try{RED.nodes.eachSubflow(function(e){if(e.name==a.name&&e.info==a.info&&e.in.length==a.in.length&&e.out.length==a.out.length){var f=RED.nodes.filterNodes({z:e.id});if(f.length==b.length){var g=[a].concat(b),h=[e].concat(f),i=JSON.stringify(g),j=JSON.stringify(u(h));for(c=0;c<f.length;c++)i=i.replace(new RegExp('"'+b[c].id+'"',"g"),'"'+f[c].id+'"');if(i=i.replace(new RegExp('"'+a.id+'"',"g"),'"'+e.id+'"'),i===j)throw d=e,new Error}}})}catch(a){console.log(a.stack)}return d}function x(a,b,c){if(c&&a.id!=b.id)return!1;if(a.type!=b.type)return!1;var d=a._def;for(var e in d.defaults)if(d.defaults.hasOwnProperty(e)){var f=a[e],g=b[e];if(typeof f!=typeof g)return!1;if(null===f||"string"==typeof f||"number"==typeof f){if(f!==g)return!1}else if(JSON.stringify(f)!==JSON.stringify(g))return!1}return!0}function y(a,e,f){var g,i,j,k={};if("string"==typeof a){if(""===a)return;try{j=JSON.parse(a)}catch(a){var n=new Error(RED._("clipboard.invalidFlow",{message:a.message}));throw n.code="NODE_RED",n}}else j=a;$.isArray(j)||(j=[j]),F||(F=JSON.parse(JSON.stringify(j)));var o=[];for(g=0;g<j.length;g++)i=j[g],"workspace"==i.type||"tab"==i.type||"subflow"==i.type||O.getNodeType(i.type)||"subflow:"==i.type.substring(0,8)||o.indexOf(i.type)!=-1||o.push(i.type), i.z&&(k[i.z]=k[i.z]||[],k[i.z].push(i));if(o.length>0){var q="<ul><li>"+o.join("</li><li>")+"</li></ul>";"type"+(o.length>1?"s":"");RED.notify("<strong>"+RED._("clipboard.importUnrecognised",{count:o.length})+"</strong>"+q,"error",!1,1e4)}var r=RED.workspaces.active(),s=m(r);for(g=0;g<j.length;g++){var t=/^subflow:(.+)$/.exec(j[g].type);if(t){var u=t[1],v=m(j[g].z||r);if(v){var y;if(u===v.id&&(y=new Error(RED._("notification.errors.cannotAddSubflowToItself"))),p(u,v.id)&&(y=new Error(RED._("notification.errors.cannotAddCircularReference"))),y)throw y.code="NODE_RED",y}}}var z,A,B,C,D=[],G={},I=[],K={},L={},M={},N=[],P=[],Q=null;for(g=0;g<j.length;g++)if(i=j[g],"workspace"===i.type||"tab"===i.type)"workspace"===i.type&&(i.type="tab"),null==E&&(E=i),e&&(z=b(),G[i.id]=z,i.id=z),h(i),RED.workspaces.add(i),D.push(i);else if("subflow"===i.type){var R=w(i,k[i.id]);R?L[i.id]=R:(K[i.id]=i,e&&(z=b(),i.id=z),i.in.forEach(function(a,c){a.type="subflow",a.direction="in",a.z=i.id,a.i=c,a.id=b()}),i.out.forEach(function(a,c){a.type="subflow",a.direction="out",a.z=i.id,a.i=c,a.id=b()}),I.push(i),l(i,e))}for(null==E&&(E={type:"tab",id:b(),label:RED._("workspace.defaultName",{number:1})},h(E),RED.workspaces.add(E),D.push(E),r=RED.workspaces.active()),g=0;g<j.length;g++)if(i=j[g],A=O.getNodeType(i.type),A&&"config"==A.category){var S=null;if(e){if(i.z){if(L[i.z])continue;K[i.z]?i.z=K[i.z].id:(i.z=G[i.z],J[i.z]||(f?(null===Q&&(Q=RED.workspaces.add(null,!0),D.push(Q)),i.z=Q.id):i.z=r))}if(S=RED.nodes.node(i.id),S&&i.z&&S.z!==i.z){S=null;for(var T in H)if(H.hasOwnProperty(T)&&H[T].z===i.z&&x(H[T],i,!1)){S=H[T],M[i.id]=H[T];break}}}if(!S){B={id:i.id,z:i.z,type:i.type,users:[],_config:{}};for(C in A.defaults)A.defaults.hasOwnProperty(C)&&(B[C]=i[C],B._config[C]=JSON.stringify(i[C]));if(A.hasOwnProperty("credentials")&&i.hasOwnProperty("credentials")){B.credentials={};for(C in A.credentials)A.credentials.hasOwnProperty(C)&&i.credentials.hasOwnProperty(C)&&(B.credentials[C]=i.credentials[C])}B.label=A.label,B._def=A,e&&(B.id=b()),M[i.id]=B,N.push(B),RED.nodes.add(B)}}for(g=0;g<j.length;g++)if(i=j[g],"workspace"!==i.type&&"tab"!==i.type&&"subflow"!==i.type&&(A=O.getNodeType(i.type),!A||"config"!=A.category)){var U={x:i.x,y:i.y,z:i.z,type:0,wires:i.wires,changed:!1,_config:{}};if(e){if(L[i.z])continue;K[U.z]?U.z=K[U.z].id:(U.z=G[U.z],J[U.z]||(f?(null===Q&&(Q=RED.workspaces.add(null,!0),D.push(Q)),U.z=Q.id):U.z=r)),U.id=b()}else U.id=i.id,null!=U.z&&(J[U.z]||K[U.z])||(f?(null===Q&&(Q=RED.workspaces.add(null,!0),D.push(Q)),U.z=Q.id):U.z=r);if(U.type=i.type,U._def=A,"subflow"===i.type.substring(0,7)){var V=i.type.split(":")[1],W=L[V]||K[V]||m(V);e&&(V=W.id,U.type="subflow:"+V,U._def=O.getNodeType(U.type),delete U.i),U.name=i.name,U.outputs=W.out.length,U.inputs=W.in.length}else{if(!U._def){U.x&&U.y?U._def={color:"#fee",defaults:{},label:"unknown: "+i.type,labelStyle:"node_label_italic",outputs:i.outputs||i.wires.length,set:O.getNodeSet("node-red/unknown")}:(U._def={category:"config",set:O.getNodeSet("node-red/unknown")},U.users=[]);var X={};for(var Y in i)i.hasOwnProperty(Y)&&"x"!=Y&&"y"!=Y&&"z"!=Y&&"id"!=Y&&"wires"!=Y&&(X[Y]=i[Y]);U._orig=X,U.name=i.type,U.type="unknown"}if("config"!=U._def.category){U.inputs=i.inputs||U._def.inputs,U.outputs=i.outputs||U._def.outputs;for(C in U._def.defaults)U._def.defaults.hasOwnProperty(C)&&(U[C]=i[C],U._config[C]=JSON.stringify(i[C]));if(U._config.x=U.x,U._config.y=U.y,U._def.hasOwnProperty("credentials")&&i.hasOwnProperty("credentials")){U.credentials={};for(C in U._def.credentials)U._def.credentials.hasOwnProperty(C)&&i.credentials.hasOwnProperty(C)&&(U.credentials[C]=i.credentials[C])}}}c(U),RED.editor.validateNode(U),M[i.id]=U,"config"!=U._def.category&&N.push(U)}var Z={catch:"scope",status:"scope","link in":"links","link out":"links"};for(g=0;g<N.length;g++){if(i=N[g],i.wires){for(var _=0;_<i.wires.length;_++)for(var aa=i.wires[_]instanceof Array?i.wires[_]:[i.wires[_]],ba=0;ba<aa.length;ba++)if(M.hasOwnProperty(aa[ba]))if(i.z===M[aa[ba]].z){var ca={source:i,sourcePort:_,target:M[aa[ba]]};d(ca),P.push(ca)}else console.log("Warning: dropping link that crosses tabs:",i.id,"->",M[aa[ba]].id);delete i.wires}for(var da in i._def.defaults)if(i._def.defaults.hasOwnProperty(da))if(i._def.defaults[da].type&&M[i[da]])i[da]=M[i[da]].id,B=RED.nodes.node(i[da]),B&&B.users.indexOf(i)===-1&&B.users.push(i);else if(Z.hasOwnProperty(i.type)&&Z[i.type]===da&&void 0!==i[da]&&null!==i[da])for(var ea=0;ea<i[da].length;ea++)M[i[da][ea]]&&(i[da][ea]=M[i[da][ea]].id);s&&/^link /.test(i.type)&&i.links&&(i.links=i.links.filter(function(a){var b=RED.nodes.node(a);return b&&b.z===r})),RED.editor.validateNode(i)}for(g=0;g<I.length;g++)i=I[g],i.in.forEach(function(a){a.wires.forEach(function(b){var c={source:a,sourcePort:0,target:M[b.id]};d(c),P.push(c)}),delete a.wires}),i.out.forEach(function(a){a.wires.forEach(function(b){var c;c=K[b.id]&&K[b.id].id==i.id?{source:i.in[b.port],sourcePort:b.port,target:a}:{source:M[b.id]||K[b.id],sourcePort:b.port,target:a},d(c),P.push(c)}),delete a.wires});return RED.workspaces.refresh(),[N,P,D,I,Q]}function z(a){for(var b=[],c=0;c<G.length;c++){var d=G[c];a.hasOwnProperty("z")&&d.z!==a.z||a.hasOwnProperty("type")&&d.type!==a.type||b.push(d)}return b}function A(a){for(var b=[],c=0;c<I.length;c++){var d=I[c];if(a.source){if(a.source.hasOwnProperty("id")&&d.source.id!==a.source.id)continue;if(a.source.hasOwnProperty("z")&&d.source.z!==a.source.z)continue}if(a.target){if(a.target.hasOwnProperty("id")&&d.target.id!==a.target.id)continue;if(a.target.hasOwnProperty("z")&&d.target.z!==a.target.z)continue}a.hasOwnProperty("sourcePort")&&d.sourcePort!==a.sourcePort||b.push(d)}return b}function B(a){for(var b in a._def.defaults)if(a._def.defaults.hasOwnProperty(b)){var c=a._def.defaults[b];if(c.type){var d=O.getNodeType(c.type);if(d&&"config"==d.category){var e=H[a[b]];e&&e.users.indexOf(a)===-1&&e.users.push(a)}}}}function C(a){return void 0===a?M:void(M=a)}function D(){G=[],I=[],H={},K=[];var a=Object.keys(L);a.forEach(function(a){RED.subflow.removeSubflow(a)});var b=Object.keys(J);b.forEach(function(a){RED.workspaces.remove(J[a])}),E=null,RED.nodes.dirty(!0),RED.view.redraw(!0),RED.palette.refresh(),RED.workspaces.refresh(),RED.sidebar.config.refresh()}var E,F,G=[],H={},I=[],J={},K=[],L={},M=null,N=!1,O=function(){var a={},b=[],c={},d={},e={},f={getModule:function(b){return a[b]},getNodeSetForType:function(a){return f.getNodeSet(d[a])},getModuleList:function(){return a},getNodeList:function(){return b},getNodeTypes:function(){return Object.keys(e)},setNodeList:function(a){b=[];for(var c=0;c<a.length;c++){var d=a[c];f.addNodeSet(d)}},addNodeSet:function(e){e.added=!1,c[e.id]=e;for(var f=0;f<e.types.length;f++)d[e.types[f]]=e.id;b.push(e),a[e.module]=a[e.module]||{name:e.module,version:e.version,local:e.local,sets:{}},a[e.module].sets[e.name]=e,RED.events.emit("registry:node-set-added",e)},removeNodeSet:function(e){for(var f=c[e],g=0;g<f.types.length;g++)delete d[f.types[g]];delete c[e];for(var h=0;h<b.length;h++)if(b[h].id===e){b.splice(h,1);break}return delete a[f.module].sets[f.name],0===Object.keys(a[f.module].sets).length&&delete a[f.module],RED.events.emit("registry:node-set-removed",f),f},getNodeSet:function(a){return c[a]},enableNodeSet:function(a){var b=c[a];b.enabled=!0,RED.events.emit("registry:node-set-enabled",b)},disableNodeSet:function(a){var b=c[a];b.enabled=!1,RED.events.emit("registry:node-set-disabled",b)},registerNodeType:function(a,b){if(e[a]=b,"subflows"!=b.category){b.set=c[d[a]],c[d[a]].added=!0,c[d[a]].enabled=!0;var f;f="node-red"===b.set.module?"node-red":b.set.id,b._=function(){var a=Array.prototype.slice.call(arguments,0);return a[0].indexOf(":")===-1&&(a[0]=f+":"+a[0]),RED._.apply(null,a)}}RED.events.emit("registry:node-type-added",a)},removeNodeType:function(a){if("subflow:"!=a.substring(0,8))throw new Error("this api is subflow only. called with:",a);delete e[a],RED.events.emit("registry:node-type-removed",a)},getNodeType:function(a){return e[a]}};return f}();return{registry:O,setNodeList:O.setNodeList,getNodeSet:O.getNodeSet,addNodeSet:O.addNodeSet,removeNodeSet:O.removeNodeSet,enableNodeSet:O.enableNodeSet,disableNodeSet:O.disableNodeSet,registerType:O.registerNodeType,getType:O.getNodeType,convertNode:s,add:c,remove:f,clear:D,addLink:d,removeLink:g,addWorkspace:h,removeWorkspace:k,getWorkspaceOrder:function(){return K},setWorkspaceOrder:function(a){K=a},workspace:j,addSubflow:l,removeSubflow:o,subflow:m,subflowContains:p,eachNode:function(a){for(var b=0;b<G.length;b++)a(G[b])},eachLink:function(a){for(var b=0;b<I.length;b++)a(I[b])},eachConfig:function(a){for(var b in H)H.hasOwnProperty(b)&&a(H[b])},eachSubflow:function(a){for(var b in L)L.hasOwnProperty(b)&&a(L[b])},eachWorkspace:function(a){for(var b=0;b<K.length;b++)a(J[K[b]])},node:e,version:C,originalFlow:function(a){return void 0===a?F:void(F=a)},filterNodes:z,filterLinks:A,import:y,getAllFlowNodes:q,createExportableNodeSet:u,createCompleteNodeSet:v,updateConfigNodeUsers:B,id:b,dirty:function(b){return null==b?N:void a(b)}}}(),RED.history=function(){function a(b){var c,d,e,f,g={};if(b){if("multi"==b.t)for(d=b.events.length,c=d-1;c>=0;c--)a(b.events[c]);else if("replace"==b.t){RED.nodes.clear();var h=RED.nodes.import(b.config);h[0].forEach(function(a){b.changed[a.id]&&(a.changed=!0)}),RED.nodes.version(b.rev)}else if("add"==b.t){if(b.nodes)for(c=0;c<b.nodes.length;c++)e=RED.nodes.node(b.nodes[c]),e.z&&(g[e.z]=!0),RED.nodes.remove(b.nodes[c]);if(b.links)for(c=0;c<b.links.length;c++)RED.nodes.removeLink(b.links[c]);if(b.workspaces)for(c=0;c<b.workspaces.length;c++)RED.nodes.removeWorkspace(b.workspaces[c].id),RED.workspaces.remove(b.workspaces[c]);if(b.subflows)for(c=0;c<b.subflows.length;c++)RED.nodes.removeSubflow(b.subflows[c]),RED.workspaces.remove(b.subflows[c]);if(b.subflow&&(b.subflow.instances&&b.subflow.instances.forEach(function(a){var b=RED.nodes.node(a.id);b&&(b.changed=a.changed,b.dirty=!0)}),b.subflow.hasOwnProperty("changed")&&(f=RED.nodes.subflow(b.subflow.id),f&&(f.changed=b.subflow.changed))),b.removedLinks)for(c=0;c<b.removedLinks.length;c++)RED.nodes.addLink(b.removedLinks[c])}else if("delete"==b.t){if(b.workspaces)for(c=0;c<b.workspaces.length;c++)RED.nodes.addWorkspace(b.workspaces[c]),RED.workspaces.add(b.workspaces[c]);if(b.subflow&&b.subflow.subflow&&RED.nodes.addSubflow(b.subflow.subflow),b.subflowInputs&&b.subflowInputs.length>0&&(f=RED.nodes.subflow(b.subflowInputs[0].z),f.in.push(b.subflowInputs[0]),f.in[0].dirty=!0),b.subflowOutputs&&b.subflowOutputs.length>0)for(f=RED.nodes.subflow(b.subflowOutputs[0].z),b.subflowOutputs.sort(function(a,b){return a.i-b.i}),c=0;c<b.subflowOutputs.length;c++){var i=b.subflowOutputs[c];f.out.splice(i.i,0,i);for(var j=i.i+1;j<f.out.length;j++)f.out[j].i++,f.out[j].dirty=!0;RED.nodes.eachLink(function(a){a.source.type=="subflow:"+f.id&&a.sourcePort>=i.i&&a.sourcePort++})}if(b.subflow&&b.subflow.hasOwnProperty("instances")&&b.subflow.instances.forEach(function(a){var b=RED.nodes.node(a.id);b&&(b.changed=a.changed,b.dirty=!0)}),f&&RED.nodes.filterNodes({type:"subflow:"+f.id}).forEach(function(a){for(a.inputs=f.in.length,a.outputs=f.out.length;a.outputs>a.ports.length;)a.ports.push(a.ports.length);a.resize=!0,a.dirty=!0}),b.nodes)for(c=0;c<b.nodes.length;c++)RED.nodes.add(b.nodes[c]),g[b.nodes[c].z]=!0;if(b.links)for(c=0;c<b.links.length;c++)RED.nodes.addLink(b.links[c]);if(b.changes)for(c in b.changes)if(b.changes.hasOwnProperty(c)&&(e=RED.nodes.node(c))){for(var k in b.changes[c])b.changes[c].hasOwnProperty(k)&&(e[k]=b.changes[c][k]);e.dirty=!0}}else if("move"==b.t){for(c=0;c<b.nodes.length;c++){var l=b.nodes[c];l.n.x=l.ox,l.n.y=l.oy,l.n.dirty=!0,l.n.changed=l.changed}if(b.links)for(c=0;c<b.links.length;c++)RED.nodes.removeLink(b.links[c]);if(b.removedLinks)for(c=0;c<b.removedLinks.length;c++)RED.nodes.addLink(b.removedLinks[c])}else if("edit"==b.t){for(c in b.changes)if(b.changes.hasOwnProperty(c)){if(b.node._def.defaults[c].type){var m=RED.nodes.node(b.node[c]);m&&m.users.splice(m.users.indexOf(b.node),1);var n=RED.nodes.node(b.changes[c]);n&&n.users.push(b.node)}b.node[c]=b.changes[c]}if(b.subflow)b.subflow.hasOwnProperty("inputCount")&&(b.node.in.length>b.subflow.inputCount?b.node.in.splice(b.subflow.inputCount):b.subflow.inputs.length>0&&(b.node.in=b.node.in.concat(b.subflow.inputs))),b.subflow.hasOwnProperty("outputCount")&&(b.node.out.length>b.subflow.outputCount?b.node.out.splice(b.subflow.outputCount):b.subflow.outputs.length>0&&(b.node.out=b.node.out.concat(b.subflow.outputs))),b.subflow.hasOwnProperty("instances")&&b.subflow.instances.forEach(function(a){var b=RED.nodes.node(a.id);b&&(b.changed=a.changed,b.dirty=!0)}),RED.nodes.filterNodes({type:"subflow:"+b.node.id}).forEach(function(a){a.inputs=b.node.in.length,a.outputs=b.node.out.length,RED.editor.updateNodeProperties(a)});else{var o;if(b.outputMap){o={};for(var p in b.outputMap)b.outputMap.hasOwnProperty(p)&&b.outputMap[p]!==-1&&(o[b.outputMap[p]]=p)}RED.editor.updateNodeProperties(b.node,o),RED.editor.validateNode(b.node)}if(b.links)for(c=0;c<b.links.length;c++)RED.nodes.addLink(b.links[c]);b.node.dirty=!0,b.node.changed=b.changed}else if("createSubflow"==b.t){if(b.nodes)for(RED.nodes.filterNodes({z:b.subflow.subflow.id}).forEach(function(a){a.z=b.activeWorkspace,a.dirty=!0}),c=0;c<b.nodes.length;c++)RED.nodes.remove(b.nodes[c]);if(b.links)for(c=0;c<b.links.length;c++)RED.nodes.removeLink(b.links[c]);if(RED.nodes.removeSubflow(b.subflow.subflow),RED.workspaces.remove(b.subflow.subflow),b.removedLinks)for(c=0;c<b.removedLinks.length;c++)RED.nodes.addLink(b.removedLinks[c])}else"reorder"==b.t&&b.order&&RED.workspaces.order(b.order);Object.keys(g).forEach(function(a){var b=RED.nodes.subflow(a);b&&RED.editor.validateNode(b)}),RED.nodes.dirty(b.dirty),RED.view.redraw(!0),RED.palette.refresh(),RED.workspaces.refresh(),RED.sidebar.config.refresh()}}var b=[];return{markAllDirty:function(){for(var a=0;a<b.length;a++)b[a].dirty=!0},list:function(){return b},depth:function(){return b.length},push:function(a){b.push(a)},pop:function(){var c=b.pop();a(c)},peek:function(){return b[b.length-1]}}}(),RED.validators={number:function(){return function(a){return""!==a&&!isNaN(a)}},regex:function(a){return function(b){return a.test(b)}},typedInput:function(a,b){return function(c){var d=$("#node-"+(b?"config-":"")+"input-"+a).val()||this[a];if("json"===d)try{return JSON.parse(c),!0}catch(a){return!1}else{if("msg"===d||"flow"===d||"global"===d)return RED.utils.validatePropertyExpression(c);if("num"===d)return/^[+-]?[0-9]*\.?[0-9]*([eE][-+]?[0-9]+)?$/.test(c)}return!0}}},RED.utils=function(){function a(a){return a.replace(/\r?\n/g,"&crarr;").replace(/\t/g,"&rarr;")}function b(a){return a.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function c(c){var d;if(Array.isArray(c))d=$('<span class="debug-message-object-value debug-message-type-meta"></span>').html("array["+c.length+"]");else if(null===c)d=$('<span class="debug-message-object-value debug-message-type-null">null</span>');else if("object"==typeof c)d=c.hasOwnProperty("type")&&"Buffer"===c.type&&c.hasOwnProperty("data")?$('<span class="debug-message-object-value debug-message-type-meta"></span>').html("buffer["+c.data.length+"]"):c.hasOwnProperty("type")&&"array"===c.type&&c.hasOwnProperty("data")?$('<span class="debug-message-object-value debug-message-type-meta"></span>').html("array["+c.length+"]"):$('<span class="debug-message-object-value debug-message-type-meta">object</span>');else if("string"==typeof c){var e;e=c.length>30?b(c.substring(0,30))+"&hellip;":b(c),d=$('<span class="debug-message-object-value debug-message-type-string"></span>').html('"'+a(e)+'"')}else d=$('<span class="debug-message-object-value debug-message-type-other"></span>').text(""+c);return d}function d(a,b){a.addClass("debug-message-expandable"),a.click(function(a){var c=$(this).parent();c.hasClass("collapsed")?(b&&!c.hasClass("built")&&(b(),c.addClass("built")),c.removeClass("collapsed")):c.addClass("collapsed"),a.preventDefault()})}function e(f,g,h,i){var j,k,l,m,n,o=$('<span class="debug-message-element"></span>');g||o.addClass("debug-message-top-level"),m=$("<span></span>").appendTo(o),g&&!i&&($('<span class="debug-message-object-key"></span>').text(g).appendTo(m),$("<span>: </span>").appendTo(m)),l=$('<span class="debug-message-object-value"></span>').appendTo(m);var p=Array.isArray(f),q=!1;if(f&&"object"==typeof f&&f.hasOwnProperty("type")&&f.hasOwnProperty("data")&&(f.__encoded__&&"array"===f.type||"Buffer"===f.type)&&(p=!0,q=!0),null===f||void 0===f)$('<span class="debug-message-type-null">'+f+"</span>").appendTo(l);else if("string"==typeof f)/[\t\n\r]/.test(f)&&(o.addClass("collapsed"),$('<i class="fa fa-caret-right debug-message-object-handle"></i> ').prependTo(m),d(m,function(){$('<span class="debug-message-type-meta debug-message-object-type-header"></span>').html(h||"string").appendTo(m);var a=$('<div class="debug-message-object-entry collapsed"></div>').appendTo(o);$('<pre class="debug-message-type-string"></pre>').text(f).appendTo(a)})),k=$('<span class="debug-message-type-string debug-message-object-header"></span>').html('"'+a(b(f))+'"').appendTo(l),/^#[0-9a-f]{6}$/i.test(f)&&$('<span class="debug-message-type-string-swatch"></span>').css("backgroundColor",f).appendTo(k);else if("number"==typeof f)k=$('<span class="debug-message-type-number"></span>').text(""+f).appendTo(l),Number.isInteger(f)&&f>=0&&(k.addClass("debug-message-type-number-toggle"),k.click(function(a){var b=$(this).data("format")||"date";"dec"===b?$(this).text(""+f).data("format","date"):"date"===b&&13===f.toString().length&&f<=2147483647e3?$(this).text(new Date(f).toISOString()).data("format"