diff --git a/lnbits/core/static/js/service-worker.js b/lnbits/core/static/js/service-worker.js index cf89ca896..f82238a0e 100644 --- a/lnbits/core/static/js/service-worker.js +++ b/lnbits/core/static/js/service-worker.js @@ -1,6 +1,6 @@ // update cache version every time there is a new deployment // so the service worker reinitializes the cache -const CACHE_VERSION = 6 +const CACHE_VERSION = 7 const CURRENT_CACHE = `lnbits-${CACHE_VERSION}-` const getApiKey = request => { diff --git a/lnbits/static/bundle.min.js b/lnbits/static/bundle.min.js index 82c5ee10d..6e11f9721 100644 --- a/lnbits/static/bundle.min.js +++ b/lnbits/static/bundle.min.js @@ -52,4 +52,4 @@ function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.export * (c) 2022 kazuya kawaguchi * Released under the MIT License. */ -function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.VueI18n=e()}(this,(function(){"use strict";var t=["compactDisplay","currency","currencyDisplay","currencySign","localeMatcher","notation","numberingSystem","signDisplay","style","unit","unitDisplay","useGrouping","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","minimumSignificantDigits","maximumSignificantDigits"],e=["dateStyle","timeStyle","calendar","localeMatcher","hour12","hourCycle","timeZone","formatMatcher","weekday","era","year","month","day","hour","minute","second","timeZoneName"];function n(t,e){"undefined"!=typeof console&&(console.warn("[vue-i18n] "+t),e&&console.warn(e.stack))}function i(t,e){"undefined"!=typeof console&&(console.error("[vue-i18n] "+t),e&&console.error(e.stack))}var r=Array.isArray;function o(t){return null!==t&&"object"==typeof t}function a(t){return"string"==typeof t}var s=Object.prototype.toString,l="[object Object]";function c(t){return s.call(t)===l}function u(t){return null==t}function d(t){return"function"==typeof t}function h(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n=null,i=null;return 1===t.length?o(t[0])||r(t[0])?i=t[0]:"string"==typeof t[0]&&(n=t[0]):2===t.length&&("string"==typeof t[0]&&(n=t[0]),(o(t[1])||r(t[1]))&&(i=t[1])),{locale:n,params:i}}function f(t){return JSON.parse(JSON.stringify(t))}function p(t,e){return!!~t.indexOf(e)}var m=Object.prototype.hasOwnProperty;function v(t,e){return m.call(t,e)}function g(t){for(var e=arguments,n=Object(t),i=1;i0;)e[n]=arguments[n+1];var i=this.$i18n;return i._t.apply(i,[t,i.locale,i._getMessages(),this].concat(e))},t.prototype.$tc=function(t,e){for(var n=[],i=arguments.length-2;i-- >0;)n[i]=arguments[i+2];var r=this.$i18n;return r._tc.apply(r,[t,r.locale,r._getMessages(),this,e].concat(n))},t.prototype.$te=function(t,e){var n=this.$i18n;return n._te(t,n.locale,n._getMessages(),e)},t.prototype.$d=function(t){for(var e,n=[],i=arguments.length-1;i-- >0;)n[i]=arguments[i+1];return(e=this.$i18n).d.apply(e,[t].concat(n))},t.prototype.$n=function(t){for(var e,n=[],i=arguments.length-1;i-- >0;)n[i]=arguments[i+1];return(e=this.$i18n).n.apply(e,[t].concat(n))}}(x),x.mixin(function(t){function e(){this!==this.$root&&this.$options.__INTLIFY_META__&&this.$el&&this.$el.setAttribute("data-intlify",this.$options.__INTLIFY_META__)}return void 0===t&&(t=!1),t?{mounted:e}:{beforeCreate:function(){var t=this.$options;if(t.i18n=t.i18n||(t.__i18nBridge||t.__i18n?{}:null),t.i18n)if(t.i18n instanceof Y){if(t.__i18nBridge||t.__i18n)try{var e=t.i18n&&t.i18n.messages?t.i18n.messages:{};(t.__i18nBridge||t.__i18n).forEach((function(t){e=g(e,JSON.parse(t))})),Object.keys(e).forEach((function(n){t.i18n.mergeLocaleMessage(n,e[n])}))}catch(t){i("Cannot parse locale messages via custom blocks.",t)}this._i18n=t.i18n,this._i18nWatcher=this._i18n.watchI18nData()}else if(c(t.i18n)){var r=this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof Y?this.$root.$i18n:null;if(r&&(t.i18n.root=this.$root,t.i18n.formatter=r.formatter,t.i18n.fallbackLocale=r.fallbackLocale,t.i18n.formatFallbackMessages=r.formatFallbackMessages,t.i18n.silentTranslationWarn=r.silentTranslationWarn,t.i18n.silentFallbackWarn=r.silentFallbackWarn,t.i18n.pluralizationRules=r.pluralizationRules,t.i18n.preserveDirectiveContent=r.preserveDirectiveContent),t.__i18nBridge||t.__i18n)try{var o=t.i18n&&t.i18n.messages?t.i18n.messages:{};(t.__i18nBridge||t.__i18n).forEach((function(t){o=g(o,JSON.parse(t))})),t.i18n.messages=o}catch(t){n("Cannot parse locale messages via custom blocks.",t)}var a=t.i18n.sharedMessages;a&&c(a)&&(t.i18n.messages=g(t.i18n.messages,a)),this._i18n=new Y(t.i18n),this._i18nWatcher=this._i18n.watchI18nData(),(void 0===t.i18n.sync||t.i18n.sync)&&(this._localeWatcher=this.$i18n.watchLocale()),r&&r.onComponentInstanceCreated(this._i18n)}else n("Cannot be interpreted 'i18n' option.");else this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof Y?this._i18n=this.$root.$i18n:t.parent&&t.parent.$i18n&&t.parent.$i18n instanceof Y&&(this._i18n=t.parent.$i18n)},beforeMount:function(){var t=this.$options;t.i18n=t.i18n||(t.__i18nBridge||t.__i18n?{}:null),t.i18n?t.i18n instanceof Y||c(t.i18n)?(this._i18n.subscribeDataChanging(this),this._subscribing=!0):n("Cannot be interpreted 'i18n' option."):(this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof Y||t.parent&&t.parent.$i18n&&t.parent.$i18n instanceof Y)&&(this._i18n.subscribeDataChanging(this),this._subscribing=!0)},mounted:e,beforeDestroy:function(){if(this._i18n){var t=this;this.$nextTick((function(){t._subscribing&&(t._i18n.unsubscribeDataChanging(t),delete t._subscribing),t._i18nWatcher&&(t._i18nWatcher(),t._i18n.destroyVM(),delete t._i18nWatcher),t._localeWatcher&&(t._localeWatcher(),delete t._localeWatcher)}))}}}}(e.bridge)),x.directive("t",{bind:S,update:M,unbind:T}),x.component(_.name,_),x.component(C.name,C),x.config.optionMergeStrategies.i18n=function(t,e){return void 0===e?t:e}))}var A=function(){this._caches=Object.create(null)};A.prototype.interpolate=function(t,e){if(!e)return[t];var i=this._caches[t];return i||(i=function(t){var e=[],n=0,i="";for(;n0)d--,u=4,h[0]();else{if(d=0,void 0===n)return!1;if(!1===(n=N(n)))return!1;h[1]()}};null!==u;)if(c++,"\\"!==(e=t[c])||!f()){if(r=I(e),8===(o=(s=q[u])[r]||s.else||8))return;if(u=o[0],(a=h[o[1]])&&(i=void 0===(i=o[2])?e:i,!1===a()))return;if(7===u)return l}}(t),e&&(this._cache[t]=e)),e||[]},F.prototype.getPathValue=function(t,e){if(!o(t))return null;var n=this.parsePath(e);if(0===n.length)return null;for(var i=n.length,r=t,a=0;a/,z=/(?:@(?:\.[a-zA-Z]+)?:(?:[\w\-_|./]+|\([\w\-_:|./]+\)))/g,V=/^@(?:\.([a-zA-Z]+))?:/,H=/[()]/g,W={upper:function(t){return t.toLocaleUpperCase()},lower:function(t){return t.toLocaleLowerCase()},capitalize:function(t){return""+t.charAt(0).toLocaleUpperCase()+t.substr(1)}},U=new A,Y=function(t){var e=this;void 0===t&&(t={}),!x&&"undefined"!=typeof window&&window.Vue&&E(window.Vue);var n=t.locale||"en-US",i=!1!==t.fallbackLocale&&(t.fallbackLocale||"en-US"),r=t.messages||{},o=t.dateTimeFormats||t.datetimeFormats||{},a=t.numberFormats||{};this._vm=null,this._formatter=t.formatter||U,this._modifiers=t.modifiers||{},this._missing=t.missing||null,this._root=t.root||null,this._sync=void 0===t.sync||!!t.sync,this._fallbackRoot=void 0===t.fallbackRoot||!!t.fallbackRoot,this._fallbackRootWithEmptyString=void 0===t.fallbackRootWithEmptyString||!!t.fallbackRootWithEmptyString,this._formatFallbackMessages=void 0!==t.formatFallbackMessages&&!!t.formatFallbackMessages,this._silentTranslationWarn=void 0!==t.silentTranslationWarn&&t.silentTranslationWarn,this._silentFallbackWarn=void 0!==t.silentFallbackWarn&&!!t.silentFallbackWarn,this._dateTimeFormatters={},this._numberFormatters={},this._path=new F,this._dataListeners=new Set,this._componentInstanceCreatedListener=t.componentInstanceCreatedListener||null,this._preserveDirectiveContent=void 0!==t.preserveDirectiveContent&&!!t.preserveDirectiveContent,this.pluralizationRules=t.pluralizationRules||{},this._warnHtmlInMessage=t.warnHtmlInMessage||"off",this._postTranslation=t.postTranslation||null,this._escapeParameterHtml=t.escapeParameterHtml||!1,"__VUE_I18N_BRIDGE__"in t&&(this.__VUE_I18N_BRIDGE__=t.__VUE_I18N_BRIDGE__),this.getChoiceIndex=function(t,n){var i=Object.getPrototypeOf(e);if(i&&i.getChoiceIndex)return i.getChoiceIndex.call(e,t,n);var r,o;return e.locale in e.pluralizationRules?e.pluralizationRules[e.locale].apply(e,[t,n]):(r=t,o=n,r=Math.abs(r),2===o?r?r>1?1:0:1:r?Math.min(r,2):0)},this._exist=function(t,n){return!(!t||!n)&&(!u(e._path.getPathValue(t,n))||!!t[n])},"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||Object.keys(r).forEach((function(t){e._checkLocaleMessage(t,e._warnHtmlInMessage,r[t])})),this._initVM({locale:n,fallbackLocale:i,messages:r,dateTimeFormats:o,numberFormats:a})},Q={vm:{configurable:!0},messages:{configurable:!0},dateTimeFormats:{configurable:!0},numberFormats:{configurable:!0},availableLocales:{configurable:!0},locale:{configurable:!0},fallbackLocale:{configurable:!0},formatFallbackMessages:{configurable:!0},missing:{configurable:!0},formatter:{configurable:!0},silentTranslationWarn:{configurable:!0},silentFallbackWarn:{configurable:!0},preserveDirectiveContent:{configurable:!0},warnHtmlInMessage:{configurable:!0},postTranslation:{configurable:!0},sync:{configurable:!0}};return Y.prototype._checkLocaleMessage=function(t,e,o){var s=function(t,e,o,l){if(c(o))Object.keys(o).forEach((function(n){var i=o[n];c(i)?(l.push(n),l.push("."),s(t,e,i,l),l.pop(),l.pop()):(l.push(n),s(t,e,i,l),l.pop())}));else if(r(o))o.forEach((function(n,i){c(n)?(l.push("["+i+"]"),l.push("."),s(t,e,n,l),l.pop(),l.pop()):(l.push("["+i+"]"),s(t,e,n,l),l.pop())}));else if(a(o)){if(j.test(o)){var u="Detected HTML in message '"+o+"' of keypath '"+l.join("")+"' at '"+e+"'. Consider component interpolation with '' to avoid XSS. See https://bit.ly/2ZqJzkp";"warn"===t?n(u):"error"===t&&i(u)}}};s(e,t,o,[])},Y.prototype._initVM=function(t){var e=x.config.silent;x.config.silent=!0,this._vm=new x({data:t,__VUE18N__INSTANCE__:!0}),x.config.silent=e},Y.prototype.destroyVM=function(){this._vm.$destroy()},Y.prototype.subscribeDataChanging=function(t){this._dataListeners.add(t)},Y.prototype.unsubscribeDataChanging=function(t){!function(t,e){if(t.delete(e));}(this._dataListeners,t)},Y.prototype.watchI18nData=function(){var t=this;return this._vm.$watch("$data",(function(){for(var e,n,i=(e=t._dataListeners,n=[],e.forEach((function(t){return n.push(t)})),n),r=i.length;r--;)x.nextTick((function(){i[r]&&i[r].$forceUpdate()}))}),{deep:!0})},Y.prototype.watchLocale=function(t){if(t){if(!this.__VUE_I18N_BRIDGE__)return null;var e=this,n=this._vm;return this.vm.$watch("locale",(function(i){n.$set(n,"locale",i),e.__VUE_I18N_BRIDGE__&&t&&(t.locale.value=i),n.$forceUpdate()}),{immediate:!0})}if(!this._sync||!this._root)return null;var i=this._vm;return this._root.$i18n.vm.$watch("locale",(function(t){i.$set(i,"locale",t),i.$forceUpdate()}),{immediate:!0})},Y.prototype.onComponentInstanceCreated=function(t){this._componentInstanceCreatedListener&&this._componentInstanceCreatedListener(t,this)},Q.vm.get=function(){return this._vm},Q.messages.get=function(){return f(this._getMessages())},Q.dateTimeFormats.get=function(){return f(this._getDateTimeFormats())},Q.numberFormats.get=function(){return f(this._getNumberFormats())},Q.availableLocales.get=function(){return Object.keys(this.messages).sort()},Q.locale.get=function(){return this._vm.locale},Q.locale.set=function(t){this._vm.$set(this._vm,"locale",t)},Q.fallbackLocale.get=function(){return this._vm.fallbackLocale},Q.fallbackLocale.set=function(t){this._localeChainCache={},this._vm.$set(this._vm,"fallbackLocale",t)},Q.formatFallbackMessages.get=function(){return this._formatFallbackMessages},Q.formatFallbackMessages.set=function(t){this._formatFallbackMessages=t},Q.missing.get=function(){return this._missing},Q.missing.set=function(t){this._missing=t},Q.formatter.get=function(){return this._formatter},Q.formatter.set=function(t){this._formatter=t},Q.silentTranslationWarn.get=function(){return this._silentTranslationWarn},Q.silentTranslationWarn.set=function(t){this._silentTranslationWarn=t},Q.silentFallbackWarn.get=function(){return this._silentFallbackWarn},Q.silentFallbackWarn.set=function(t){this._silentFallbackWarn=t},Q.preserveDirectiveContent.get=function(){return this._preserveDirectiveContent},Q.preserveDirectiveContent.set=function(t){this._preserveDirectiveContent=t},Q.warnHtmlInMessage.get=function(){return this._warnHtmlInMessage},Q.warnHtmlInMessage.set=function(t){var e=this,n=this._warnHtmlInMessage;if(this._warnHtmlInMessage=t,n!==t&&("warn"===t||"error"===t)){var i=this._getMessages();Object.keys(i).forEach((function(t){e._checkLocaleMessage(t,e._warnHtmlInMessage,i[t])}))}},Q.postTranslation.get=function(){return this._postTranslation},Q.postTranslation.set=function(t){this._postTranslation=t},Q.sync.get=function(){return this._sync},Q.sync.set=function(t){this._sync=t},Y.prototype._getMessages=function(){return this._vm.messages},Y.prototype._getDateTimeFormats=function(){return this._vm.dateTimeFormats},Y.prototype._getNumberFormats=function(){return this._vm.numberFormats},Y.prototype._warnDefault=function(t,e,i,r,o,s){if(!u(i))return i;if(this._missing){var l=this._missing.apply(null,[t,e,r,o]);if(a(l))return l}else this._isSilentTranslationWarn(e)||n("Cannot translate the value of keypath '"+e+"'. Use the value of keypath as default.");if(this._formatFallbackMessages){var c=h.apply(void 0,o);return this._render(e,s,c.params,e)}return e},Y.prototype._isFallbackRoot=function(t){return(this._fallbackRootWithEmptyString?!t:u(t))&&!u(this._root)&&this._fallbackRoot},Y.prototype._isSilentFallbackWarn=function(t){return this._silentFallbackWarn instanceof RegExp?this._silentFallbackWarn.test(t):this._silentFallbackWarn},Y.prototype._isSilentFallback=function(t,e){return this._isSilentFallbackWarn(e)&&(this._isFallbackRoot()||t!==this.fallbackLocale)},Y.prototype._isSilentTranslationWarn=function(t){return this._silentTranslationWarn instanceof RegExp?this._silentTranslationWarn.test(t):this._silentTranslationWarn},Y.prototype._interpolate=function(t,e,i,o,s,l,h){if(!e)return null;var f,p=this._path.getPathValue(e,i);if(r(p)||c(p))return p;if(u(p)){if(!c(e))return null;if(!a(f=e[i])&&!d(f))return this._isSilentTranslationWarn(i)||this._isSilentFallback(t,i)||n("Value of key '"+i+"' is not a string or function !"),null}else{if(!a(p)&&!d(p))return this._isSilentTranslationWarn(i)||this._isSilentFallback(t,i)||n("Value of key '"+i+"' is not a string or function!"),null;f=p}return a(f)&&(f.indexOf("@:")>=0||f.indexOf("@.")>=0)&&(f=this._link(t,e,f,o,"raw",l,h)),this._render(f,s,l,i)},Y.prototype._link=function(t,e,i,o,a,s,l){var c=i,u=c.match(z);for(var d in u)if(u.hasOwnProperty(d)){var h=u[d],f=h.match(V),m=f[0],v=f[1],g=h.replace(m,"").replace(H,"");if(p(l,g))return n('Circular reference found. "'+h+'" is already visited in the chain of '+l.reverse().join(" <- ")),c;l.push(g);var y=this._interpolate(t,e,g,o,"raw"===a?"string":a,"raw"===a?void 0:s,l);if(this._isFallbackRoot(y)){if(this._isSilentTranslationWarn(g)||n("Fall back to translate the link placeholder '"+g+"' with root locale."),!this._root)throw Error("unexpected error");var _=this._root.$i18n;y=_._translate(_._getMessages(),_.locale,_.fallbackLocale,g,o,a,s)}y=this._warnDefault(t,g,y,o,r(s)?s:[s],a),this._modifiers.hasOwnProperty(v)?y=this._modifiers[v](y):W.hasOwnProperty(v)&&(y=W[v](y)),l.pop(),c=y?c.replace(h,y):c}return c},Y.prototype._createMessageContext=function(t,e,n,i){var a=this,s=r(t)?t:[],l=o(t)?t:{},c=this._getMessages(),u=this.locale;return{list:function(t){return s[t]},named:function(t){return l[t]},values:t,formatter:e,path:n,messages:c,locale:u,linked:function(t){return a._interpolate(u,c[u]||{},t,null,i,void 0,[t])}}},Y.prototype._render=function(t,e,n,i){if(d(t))return t(this._createMessageContext(n,this._formatter||U,i,e));var r=this._formatter.interpolate(t,n,i);return r||(r=U.interpolate(t,n,i)),"string"!==e||a(r)?r:r.join("")},Y.prototype._appendItemToChain=function(t,e,n){var i=!1;return p(t,e)||(i=!0,e&&(i="!"!==e[e.length-1],e=e.replace(/!/g,""),t.push(e),n&&n[e]&&(i=n[e]))),i},Y.prototype._appendLocaleToChain=function(t,e,n){var i,r=e.split("-");do{var o=r.join("-");i=this._appendItemToChain(t,o,n),r.splice(-1,1)}while(r.length&&!0===i);return i},Y.prototype._appendBlockToChain=function(t,e,n){for(var i=!0,r=0;r0;)a[s]=arguments[s+4];if(!t)return"";var l,c=h.apply(void 0,a);this._escapeParameterHtml&&(c.params=(null!=(l=c.params)&&Object.keys(l).forEach((function(t){"string"==typeof l[t]&&(l[t]=l[t].replace(//g,">").replace(/"/g,""").replace(/'/g,"'"))})),l));var u=c.locale||e,d=this._translate(i,u,this.fallbackLocale,t,r,"string",c.params);if(this._isFallbackRoot(d)){if(this._isSilentTranslationWarn(t)||this._isSilentFallbackWarn(t)||n("Fall back to translate the keypath '"+t+"' with root locale."),!this._root)throw Error("unexpected error");return(o=this._root).$t.apply(o,[t].concat(a))}return d=this._warnDefault(u,t,d,r,a,"string"),this._postTranslation&&null!=d&&(d=this._postTranslation(d,t)),d},Y.prototype.t=function(t){for(var e,n=[],i=arguments.length-1;i-- >0;)n[i]=arguments[i+1];return(e=this)._t.apply(e,[t,this.locale,this._getMessages(),null].concat(n))},Y.prototype._i=function(t,e,i,r,o){var a=this._translate(i,e,this.fallbackLocale,t,r,"raw",o);if(this._isFallbackRoot(a)){if(this._isSilentTranslationWarn(t)||n("Fall back to interpolate the keypath '"+t+"' with root locale."),!this._root)throw Error("unexpected error");return this._root.$i18n.i(t,e,o)}return this._warnDefault(e,t,a,r,[o],"raw")},Y.prototype.i=function(t,e,n){return t?(a(e)||(e=this.locale),this._i(t,e,this._getMessages(),null,n)):""},Y.prototype._tc=function(t,e,n,i,r){for(var o,a=[],s=arguments.length-5;s-- >0;)a[s]=arguments[s+5];if(!t)return"";void 0===r&&(r=1);var l={count:r,n:r},c=h.apply(void 0,a);return c.params=Object.assign(l,c.params),a=null===c.locale?[c.params]:[c.locale,c.params],this.fetchChoice((o=this)._t.apply(o,[t,e,n,i].concat(a)),r)},Y.prototype.fetchChoice=function(t,e){if(!t||!a(t))return null;var n=t.split("|");return n[e=this.getChoiceIndex(e,n.length)]?n[e].trim():t},Y.prototype.tc=function(t,e){for(var n,i=[],r=arguments.length-2;r-- >0;)i[r]=arguments[r+2];return(n=this)._tc.apply(n,[t,this.locale,this._getMessages(),null,e].concat(i))},Y.prototype._te=function(t,e,n){for(var i=[],r=arguments.length-3;r-- >0;)i[r]=arguments[r+3];var o=h.apply(void 0,i).locale||e;return this._exist(n[o],t)},Y.prototype.te=function(t,e){return this._te(t,this.locale,this._getMessages(),e)},Y.prototype.getLocaleMessage=function(t){return f(this._vm.messages[t]||{})},Y.prototype.setLocaleMessage=function(t,e){"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||this._checkLocaleMessage(t,this._warnHtmlInMessage,e),this._vm.$set(this._vm.messages,t,e)},Y.prototype.mergeLocaleMessage=function(t,e){"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||this._checkLocaleMessage(t,this._warnHtmlInMessage,e),this._vm.$set(this._vm.messages,t,g(void 0!==this._vm.messages[t]&&Object.keys(this._vm.messages[t]).length?Object.assign({},this._vm.messages[t]):{},e))},Y.prototype.getDateTimeFormat=function(t){return f(this._vm.dateTimeFormats[t]||{})},Y.prototype.setDateTimeFormat=function(t,e){this._vm.$set(this._vm.dateTimeFormats,t,e),this._clearDateTimeFormat(t,e)},Y.prototype.mergeDateTimeFormat=function(t,e){this._vm.$set(this._vm.dateTimeFormats,t,g(this._vm.dateTimeFormats[t]||{},e)),this._clearDateTimeFormat(t,e)},Y.prototype._clearDateTimeFormat=function(t,e){for(var n in e){var i=t+"__"+n;this._dateTimeFormatters.hasOwnProperty(i)&&delete this._dateTimeFormatters[i]}},Y.prototype._localizeDateTime=function(t,e,i,r,o,a){for(var s=e,l=r[s],c=this._getLocaleChain(e,i),d=0;d0;)n[i]=arguments[i+1];var r=this.locale,s=null,l=null;return 1===n.length?(a(n[0])?s=n[0]:o(n[0])&&(n[0].locale&&(r=n[0].locale),n[0].key&&(s=n[0].key)),l=Object.keys(n[0]).reduce((function(t,i){var r;return p(e,i)?Object.assign({},t,((r={})[i]=n[0][i],r)):t}),null)):2===n.length&&(a(n[0])&&(s=n[0]),a(n[1])&&(r=n[1])),this._d(t,r,s,l)},Y.prototype.getNumberFormat=function(t){return f(this._vm.numberFormats[t]||{})},Y.prototype.setNumberFormat=function(t,e){this._vm.$set(this._vm.numberFormats,t,e),this._clearNumberFormat(t,e)},Y.prototype.mergeNumberFormat=function(t,e){this._vm.$set(this._vm.numberFormats,t,g(this._vm.numberFormats[t]||{},e)),this._clearNumberFormat(t,e)},Y.prototype._clearNumberFormat=function(t,e){for(var n in e){var i=t+"__"+n;this._numberFormatters.hasOwnProperty(i)&&delete this._numberFormatters[i]}},Y.prototype._getNumberFormatter=function(t,e,i,r,o,a){for(var s=e,l=r[s],c=this._getLocaleChain(e,i),d=0;d0;)n[i]=arguments[i+1];var r=this.locale,s=null,l=null;return 1===n.length?a(n[0])?s=n[0]:o(n[0])&&(n[0].locale&&(r=n[0].locale),n[0].key&&(s=n[0].key),l=Object.keys(n[0]).reduce((function(e,i){var r;return p(t,i)?Object.assign({},e,((r={})[i]=n[0][i],r)):e}),null)):2===n.length&&(a(n[0])&&(s=n[0]),a(n[1])&&(r=n[1])),this._n(e,r,s,l)},Y.prototype._ntp=function(t,e,i,r){if(!Y.availabilities.numberFormat)return n("Cannot format to parts a Number value due to not supported Intl.NumberFormat."),[];if(!i)return(r?new Intl.NumberFormat(e,r):new Intl.NumberFormat(e)).formatToParts(t);var o=this._getNumberFormatter(t,e,this.fallbackLocale,this._getNumberFormats(),i,r),a=o&&o.formatToParts(t);if(this._isFallbackRoot(a)){if(this._isSilentTranslationWarn(i)||n("Fall back to format number to parts of root: key '"+i+"' ."),!this._root)throw Error("unexpected error");return this._root.$i18n._ntp(t,e,i,r)}return a||[]},Object.defineProperties(Y.prototype,Q),Object.defineProperty(Y,"availabilities",{get:function(){if(!$){var t="undefined"!=typeof Intl;$={dateTimeFormat:t&&void 0!==Intl.DateTimeFormat,numberFormat:t&&void 0!==Intl.NumberFormat}}return $}}),Y.install=E,Y.version="8.28.2",Y})),window.localisation={},window.localisation.en={server:"Server",theme:"Theme",funding:"Funding",users:"Users",restart:"Restart server",save:"Save",save_tooltip:"Save your changes",topup:"Topup",topup_wallet:"Topup a wallet",topup_hint:"Use the wallet ID to topup any wallet",restart_tooltip:"Restart the server for changes to take effect",add_funds_tooltip:"Add funds to a wallet.",reset_defaults:"Reset to defaults",reset_defaults_tooltip:"Delete all settings and reset to defaults.",download_backup:"Download database backup",name_your_wallet:"Name your %{name} wallet",paste_invoice_label:"Paste an invoice, payment request or lnurl code *",lnbits_description:"Easy to set up and lightweight, LNbits can run on any lightning-network funding source, currently supporting LND, c-lightning, OpenNode, LNPay and even LNbits itself! You can run LNbits for yourself, or easily offer a custodian solution for others. Each wallet has its own API keys and there is no limit to the number of wallets you can make. Being able to partition funds makes LNbits a useful tool for money management and as a development tool. Extensions add extra functionality to LNbits so you can experiment with a range of cutting-edge technologies on the lightning network. We have made developing extensions as easy as possible, and as a free and open-source project, we encourage people to develop and submit their own.",export_to_phone:"Export to Phone with QR Code",export_to_phone_desc:"This QR code contains your wallet URL with full access. You can scan it from your phone to open your wallet from there.",wallets:"Wallets",add_wallet:"Add a new wallet",delete_wallet:"Delete wallet",delete_wallet_desc:"This whole wallet will be deleted, the funds will be UNRECOVERABLE.",rename_wallet:"Rename wallet",update_name:"Update name",press_to_claim:"Press to claim bitcoin",donate:"Donate",view_github:"View on GitHub",voidwallet_active:"VoidWallet is active! Payments disabled",use_with_caution:"USE WITH CAUTION - %{name} wallet is still in BETA",toggle_darkmode:"Toggle Dark Mode",view_swagger_docs:"View LNbits Swagger API docs",api_docs:"Api docs",commit_version:"Commit version",lnbits_version:"LNbits version",runs_on:"Runs on",credit_hint:"Press Enter to credit account",credit_label:"%{denomination} to credit",paste_request:"Paste Request",create_invoice:"Create Invoice",camera_tooltip:"Use camera to scan an invoice/QR",export_csv:"Export to CSV",transactions:"Transactions",chart_tooltip:"Show chart",pending:"Pending",copy_invoice:"Copy invoice",close:"Close",cancel:"Cancel",scan:"Scan",read:"Read",pay:"Pay",memo:"Memo",date:"Date",processing_payment:"Processing payment...",not_enough_funds:"Not enough funds!",search_by_tag_memo_amount:"Search by tag, memo, amount",invoice_waiting:"Invoice waiting to be paid",payment_received:"Payment Received",payment_sent:"Payment Sent",outgoing_payment_pending:"Outgoing payment pending",drain_funds:"Drain Funds",drain_funds_desc:"This is an LNURL-withdraw QR code for slurping everything from this wallet. Do not share with anyone. It is compatible with balanceCheck and balanceNotify so your wallet may keep pulling the funds continuously from here after the first withdraw.",i_understand:"I understand",copy_wallet_url:"Copy wallet URL",disclaimer_dialog:"Login functionality to be released in a future update, for now, make sure you bookmark this page for future access to your wallet! This service is in BETA, and we hold no responsibility for people losing access to funds.",no_transactions:"No transactions made yet",manage_extensions:"Manage Extensions",manage_server:"Manage Server",extensions:"Extensions",no_extensions:"You don't have any extensions installed :(",created:"Created",payment_hash:"Payment Hash",fee:"Fee",amount:"Amount",unit:"Unit",description:"Description",expiry:"Expiry",webhook:"Webhook",payment_proof:"Payment Proof"},window.localisation.de={server:"Server",theme:"Theme",funding:"Funding",users:"Benutzer",unit:"Einheit",restart:"Server neu starten",save:"Speichern",save_tooltip:"Änderungen speichern",topup:"Aufladen",topup_wallet:"Wallet aufladen",topup_hint:"Nutze die Wallet-ID um eine beliebige Wallet aufzuladen",restart_tooltip:"Starte den Server neu um die Änderungen zu übernehmen",add_funds_tooltip:"Füge Geld zu einer Wallet hinzu.",reset_defaults:"Zurücksetzen",reset_defaults_tooltip:"Lösche alle Einstellungen und setze auf die Standardeinstellungen zurück.",download_backup:"Datenbank-Backup herunterladen",name_your_wallet:"Benenne deine %{name} Wallet",paste_invoice_label:"Füge eine Rechnung, Zahlungsanforderung oder lnurl ein *",lnbits_description:"Einfach zu installieren und leichtgewichtig, LNbits kann auf jeder Lightning-Netzwerk-Funding-Quelle laufen, derzeit unterstützt LND, c-lightning, OpenNode, LNPay und sogar LNbits selbst! Du kannst LNbits für dich selbst laufen lassen oder anderen eine kundige Lösung anbieten. Jede Wallet hat ihre eigenen API-Schlüssel und es gibt keine Begrenzung für die Anzahl der Wallets, die du erstellen kannst. Die Möglichkeit, Gelder zu partitionieren, macht LNbits zu einem nützlichen Werkzeug für die Geldverwaltung und als Entwicklungswerkzeug. Erweiterungen fügen der LNbits zusätzliche Funktionalität hinzu, so dass du mit einer Reihe von vorderen Technologien auf dem Lightning-Netzwerk experimentieren kannst. Wir haben es so einfach wie möglich gemacht, Erweiterungen zu entwickeln, und als freies und Open-Source-Projekt ermutigen wir Menschen, sich selbst zu entwickeln und ihre eigenen Beiträge einzureichen.",export_to_phone:"Exportieren Sie auf das Telefon mit QR-Code",export_to_phone_desc:"Dieser QR-Code enthält Ihre Wallet-URL mit vollständigem Zugriff. Sie können es von Ihrem Telefon aus scannen, um Ihre Wallet dort zu öffnen.",wallets:"Wallets",add_wallet:"Füge eine neue Wallet hinzu",delete_wallet:"Wallet löschen",delete_wallet_desc:"Diese ganze Wallet wird gelöscht, die Mittel sind UNWIEDERBRINGLICH.",rename_wallet:"Wallet umbenennen",update_name:"Name aktualisieren",press_to_claim:"Drücken Sie, um Bitcoin zu beanspruchen",donate:"Spenden",view_github:"Auf GitHub anzeigen",voidwallet_active:"VoidWallet ist aktiv! Zahlungen deaktiviert",use_with_caution:"VERWENDEN SIE MIT VORSICHT - %{name} Wallet ist noch in der BETA",toggle_darkmode:"Dark Mode umschalten",view_swagger_docs:"LNbits Swagger API-Dokumente anzeigen",api_docs:"Api docs",commit_version:"Commit version",runs_on:"Läuft auf",credit_hint:"Drücken Sie Enter, um das Konto zu belasten",credit_label:"%{denomination} zu belasten",paste_request:"Anfrage einfügen",create_invoice:"Rechnung erstellen",camera_tooltip:"Verwenden Sie die Kamera, um eine Rechnung / QR-Code zu scannen",export_csv:"Exportieren Sie nach CSV",transactions:"Transaktionen",chart_tooltip:"Diagramm anzeigen",pending:"Ausstehend",copy_invoice:"Rechnung kopieren",close:"Schließen",cancel:"Stornieren",scan:"Scannen",read:"Lesen",pay:"Zahlen",memo:"Memo",date:"Datum",processing_payment:"Zahlung wird bearbeitet ...",not_enough_funds:"Nicht genug Geld!",search_by_tag_memo_amount:"Suche nach Tag, Memo, Betrag",invoice_waiting:"Rechnung wartet auf Zahlung",payment_received:"Zahlung erhalten",payment_sent:"Zahlung gesendet",outgoing_payment_pending:"Ausgehende Zahlung ausstehend",drain_funds:"Leeren Sie die Mittel",drain_funds_desc:"Dies ist ein LNURL-withdraw QR-Code zum Absaugen aller Mittel aus dieser Brieftasche. Teilen Sie es nicht mit jemandem. Es ist mit balanceCheck und balanceNotify kompatibel, so dass Ihre Brieftasche die Mittel nach dem ersten Abzug kontinuierlich von hier ziehen kann.",i_understand:"Ich verstehe",copy_wallet_url:"Wallet-URL kopieren",disclaimer_dialog:"Login-Funktionalität wird in einem zukünftigen Update veröffentlicht, für jetzt, stellen Sie sicher, dass Sie diese Seite als Lesezeichen speichern, um zukünftigen Zugriff auf Ihre Wallet zu erhalten! Dieser Service ist in BETA und wir übernehmen keine Verantwortung für Personen, die den Zugriff auf ihre Mittel verlieren.",no_transactions:"Noch keine Transaktionen",manage_extensions:"Erweiterungen verwalten",manage_server:"Server verwalten",extensions:"Erweiterungen",no_extensions:"Sie haben keine Erweiterungen installiert :(",created:"Erstellt",payment_hash:"Zahlungs-Hash",fee:"Gebühr",amount:"Menge",description:"Beschreibung",expiry:"Ablauf",webhook:"Webhook",payment_proof:"Zahlungsbeleg"},window.localisation.es={server:"Servidor",theme:"Tema",funding:"Financiación",unit:"Unidad",users:"Usuarios",restart:"Reiniciar el servidor",save:"Guardar",save_tooltip:"Guardar cambios",topup:"Recargar",topup_wallet:"Recargar billetera",topup_hint:"Utilice el ID de billetera para recargar cualquier billetera",restart_tooltip:"Reinicie el servidor para aplicar los cambios",add_funds_tooltip:"Agregue fondos a una billetera.",reset_defaults:"Restablecer",reset_defaults_tooltip:"Borrar todas las configuraciones y restablecer a los valores predeterminados.",download_backup:"Descargar copia de seguridad de la base de datos",name_your_wallet:"Nombre de su billetera %{name}",paste_invoice_label:"Pegue la factura aquí",lnbits_description:"Fácil de instalar y liviano, LNbits puede ejecutarse en cualquier fuente de financiación de la red Lightning, actualmente compatible con LND, c-lightning, OpenNode, LNPay y hasta LNbits mismo! Puede ejecutar LNbits para usted mismo o ofrecer una solución competente a otros. Cada billetera tiene su propia clave API y no hay límite para la cantidad de billeteras que puede crear. La capacidad de particionar fondos hace de LNbits una herramienta útil para la administración de fondos y como herramienta de desarrollo. Las extensiones agregan funcionalidad adicional a LNbits, por lo que puede experimentar con una variedad de tecnologías de vanguardia en la red Lightning. Lo hemos hecho lo más simple posible para desarrollar extensiones y, como un proyecto gratuito y de código abierto, animamos a las personas a que se desarrollen a sí mismas y envíen sus propios contribuciones.",export_to_phone:"Exportar a teléfono con código QR",export_to_phone_desc:"Este código QR contiene su URL de billetera con acceso completo. Puede escanearlo desde su teléfono para abrir su billetera allí.",wallets:"Billeteras",add_wallet:"Agregar nueva billetera",delete_wallet:"Eliminar billetera",delete_wallet_desc:"Esta billetera completa se eliminará, los fondos son IRREVERSIBLES.",rename_wallet:"Cambiar el nombre de la billetera",update_name:"Actualizar nombre",press_to_claim:"Presione para reclamar Bitcoin",donate:"Donar",view_github:"Ver en GitHub",voidwallet_active:"¡VoidWallet está activo! Pagos desactivados",use_with_caution:"USAR CON CUIDADO - %{name} Wallet aún está en BETA",toggle_darkmode:"Cambiar modo oscuro",view_swagger_docs:"Ver documentos de API de LNbits Swagger",api_docs:"Documentos de API",commit_version:"Versión de compromiso",runs_on:"Corre en",credit_hint:"Presione Enter para cargar la cuenta",credit_label:"Cargar %{denomination}",paste_request:"Pegar solicitud",create_invoice:"Crear factura",camera_tooltip:"Utilice la cámara para escanear una factura / código QR",export_csv:"Exportar a CSV",transactions:"Transacciones",chart_tooltip:"Mostrar gráfico",pending:"Pendiente",copy_invoice:"Copiar factura",close:"Cerrar",cancel:"Cancelar",scan:"Escanear",read:"Leer",pay:"Pagar",memo:"Memo",date:"Fecha",processing_payment:"Procesando pago ...",not_enough_funds:"¡No hay suficientes fondos!",search_by_tag_memo_amount:"Buscar por etiqueta, memo, cantidad",invoice_waiting:"Factura esperando pago",payment_received:"Pago recibido",payment_sent:"Pago enviado",outgoing_payment_pending:"Pago saliente pendiente",drain_funds:"Drenar fondos",drain_funds_desc:"Este es un código QR LNURL-withdraw para drenar todos los fondos de esta billetera. No lo comparta con nadie. Es compatible con balanceCheck y balanceNotify, por lo que su billetera puede continuar drenando los fondos de aquí después del primer drenaje.",i_understand:"Lo entiendo",copy_wallet_url:"Copiar URL de billetera",disclaimer_dialog:"La funcionalidad de inicio de sesión se lanzará en una actualización futura, por ahora, asegúrese de guardar esta página como marcador para acceder a su billetera en el futuro. Este servicio está en BETA y no asumimos ninguna responsabilidad por personas que pierdan el acceso a sus fondos.",no_transactions:"No hay transacciones todavía",manage_extensions:"Administrar extensiones",manage_server:"Administrar servidor",extensions:"Extensiones",no_extensions:"No tienes extensiones instaladas :(",created:"Creado",payment_hash:"Hash de pago",fee:"Cuota",amount:"Cantidad",description:"Descripción",expiry:"Expiración",webhook:"Webhook",payment_proof:"Prueba de pago"},window.localisation.jp={server:"サーバー",theme:"テーマ",funding:"資金調達",users:"ユーザー",restart:"サーバーを再起動する",save:"保存",unit:"単位",save_tooltip:"変更を保存する",topup:"トップアップ",topup_wallet:"ウォレットをトップアップする",topup_hint:"ウォレットIDを使用して、任意のウォレットをトップアップできます",restart_tooltip:"サーバーを再起動して変更を適用します",add_funds_tooltip:"ウォレットに資金を追加します。",reset_defaults:"リセット",reset_defaults_tooltip:"すべての設定を削除してデフォルトに戻します。",download_backup:"データベースのバックアップをダウンロードする",name_your_wallet:"あなたのウォレットの名前 %{name}",paste_invoice_label:"請求書を貼り付けてください",lnbits_description:"簡単にインストールでき、軽量で、LNbitsは現在LND、c-lightning、OpenNode、LNPay、さらにLNbits自身で動作する任意のLightningネットワークの資金源で実行できます! LNbitsを自分で実行することも、他の人に優れたソリューションを提供することもできます。各ウォレットには独自のAPIキーがあり、作成できるウォレットの数に制限はありません。資金を分割する機能は、LNbitsを資金管理ツールとして使用したり、開発ツールとして使用したりするための便利なツールです。拡張機能は、LNbitsに追加の機能を追加します。そのため、LNbitsは最先端の技術をネットワークLightningで試すことができます。拡張機能を開発するのは簡単で、無料でオープンソースのプロジェクトであるため、人々が自分で開発し、自分の貢献を送信することを奨励しています。",export_to_phone:"電話にエクスポート",export_to_phone_desc:"ウォレットを電話にエクスポートすると、ウォレットを削除する前にウォレットを復元できます。ウォレットを削除すると、ウォレットの秘密鍵が削除され、ウォレットを復元することはできません。",wallets:"ウォレット",add_wallet:"ウォレットを追加",delete_wallet:"ウォレットを削除",delete_wallet_desc:"ウォレットを削除すると、ウォレットの秘密鍵が削除され、ウォレットを復元することはできません。",rename_wallet:"ウォレットの名前を変更",update_name:"名前を更新",press_to_claim:"クレームするには押してください",donate:"寄付",voidwallet_active:"Voidwalletアクティブ",use_with_caution:"注意して使用してください",toggle_dark_mode:"ダークモードを切り替える",view_swagger_docs:"Swaggerドキュメントを表示",api_docs:"APIドキュメント",commit_version:"コミットバージョン",runs_on:"で実行",credit_hint:"クレジットカードを使用して資金を追加するには、LNbitsを使用してください。",credit_label:"クレジットカード",paste_request:"リクエストを貼り付ける",create_invoice:"請求書を作成する",camera_tooltip:"QRコードを読み取る",export_csv:"CSVでエクスポート",transactions:"トランザクション",chart_tooltip:"チャートを表示するには、グラフの上にカーソルを合わせます",pending:"保留中",copy_invoice:"請求書をコピー",close:"閉じる",cancel:"キャンセル",scan:"スキャン",read:"読む",pay:"支払う",memo:"メモ",date:"日付",processing_payment:"支払い処理中",not_enough_funds:"資金が不足しています",search_by_tag_memo_amount:"タグ、メモ、金額で検索",invoice_waiting:"請求書を待っています",payment_received:"お支払いありがとうございます",payment_sent:"支払いが完了しました",outgoing_payment_pending:"支払い保留中",drain_funds:"資金を排出する",drain_funds_desc:"ウォレットの残高をすべて他のウォレットに送金します",i_understand:"理解した",copy_wallet_url:"ウォレットURLをコピー",disclaimer_dialog:"ウォレットを削除すると、ウォレットの秘密鍵が削除され、ウォレットを復元することはできません。ウォレットを削除する前に、ウォレットをエクスポートしてください。",no_transactions:"トランザクションはありません",manage_extensions:"拡張機能を管理する",manage_server:"サーバーを管理する",extensions:"拡張機能",no_extensions:"拡張機能はありません",created:"作成済み",payment_hash:"支払いハッシュ",fee:"料金",amount:"量",description:"説明",expiry:"有効期限",webhook:"ウェブフック",payment_proof:"支払い証明"},Vue.use(VueI18n),window.LOCALE="en",window.i18n=new VueI18n({locale:window.LOCALE,fallbackLocale:window.LOCALE,messages:window.localisation}),window.EventHub=new Vue,window.LNbits={api:{request:function(t,e,n,i){return axios({method:t,url:e,headers:{"X-Api-Key":n},data:i})},createInvoice:async function(t,e,n,i="sat",r=null){return this.request("post","/api/v1/payments",t.inkey,{out:!1,amount:e,memo:n,unit:i,lnurl_callback:r})},payInvoice:function(t,e){return this.request("post","/api/v1/payments",t.adminkey,{out:!0,bolt11:e})},payLnurl:function(t,e,n,i,r="",o=""){return this.request("post","/api/v1/payments/lnurl",t.adminkey,{callback:e,description_hash:n,amount:i,comment:o,description:r})},authLnurl:function(t,e){return this.request("post","/api/v1/lnurlauth",t.adminkey,{callback:e})},getWallet:function(t){return this.request("get","/api/v1/wallet",t.inkey)},getPayments:function(t,e){const n=new URLSearchParams(e);return this.request("get","/api/v1/payments/paginated?"+n,t.inkey)},getPayment:function(t,e){return this.request("get","/api/v1/payments/"+e,t.inkey)}},events:{onInvoicePaid:function(t,e){let n=t=>{e(JSON.parse(t.data))};return this.listenersCount=this.listenersCount||{[t.inkey]:0},this.listenersCount[t.inkey]++,this.listeners=this.listeners||{},t.inkey in this.listeners||(this.listeners[t.inkey]=new EventSource("/api/v1/payments/sse?api-key="+t.inkey)),this.listeners[t.inkey].addEventListener("payment-received",n),()=>{this.listeners[t.inkey].removeEventListener("payment-received",n),this.listenersCount[t.inkey]--,this.listenersCount[t.inkey]<=0&&(this.listeners[t.inkey].close(),delete this.listeners[t.inkey])}}},href:{createWallet:function(t,e){window.location.href="/wallet?"+(e?"usr="+e+"&":"")+"nme="+t},updateWallet:function(t,e,n){window.location.href=`/wallet?usr=${e}&wal=${n}&nme=${t}`},deleteWallet:function(t,e){window.location.href="/deletewallet?usr="+e+"&wal="+t}},map:{extension:function(t){var e=_.object(["code","isValid","isAdminOnly","name","shortDescription","tile","contributors","hidden"],t);return e.url=["/",e.code,"/"].join(""),e},user:function(t){var e={id:t.id,admin:t.admin,email:t.email,extensions:t.extensions,wallets:t.wallets,admin:t.admin},n=this.wallet;return e.wallets=e.wallets.map((function(t){return n(t)})).sort((function(t,e){return t.name.localeCompare(e.name)})),e.walletOptions=e.wallets.map((function(t){return{label:[t.name," - ",t.id].join(""),value:t.id}})),e},wallet:function(t){return newWallet={id:t.id,name:t.name,adminkey:t.adminkey,inkey:t.inkey},newWallet.msat=t.balance_msat,newWallet.sat=Math.round(t.balance_msat/1e3),newWallet.fsat=new Intl.NumberFormat(window.LOCALE).format(newWallet.sat),newWallet.url=["/wallet?usr=",t.user,"&wal=",t.id].join(""),newWallet},payment:function(t){return obj={checking_id:t.checking_id,pending:t.pending,amount:t.amount,fee:t.fee,memo:t.memo,time:t.time,bolt11:t.bolt11,preimage:t.preimage,payment_hash:t.payment_hash,expiry:t.expiry,extra:t.extra,wallet_id:t.wallet_id,webhook:t.webhook,webhook_status:t.webhook_status},obj.date=Quasar.utils.date.formatDate(new Date(1e3*obj.time),"YYYY-MM-DD HH:mm"),obj.dateFrom=moment(obj.date).fromNow(),obj.expirydate=Quasar.utils.date.formatDate(new Date(1e3*obj.expiry),"YYYY-MM-DD HH:mm"),obj.expirydateFrom=moment(obj.expirydate).fromNow(),obj.msat=obj.amount,obj.sat=obj.msat/1e3,obj.tag=obj.extra.tag,obj.fsat=new Intl.NumberFormat(window.LOCALE).format(obj.sat),obj.isIn=obj.amount>0,obj.isOut=obj.amount<0,obj.isPaid=!obj.pending,obj._q=[obj.memo,obj.sat].join(" ").toLowerCase(),obj}},utils:{confirmDialog:function(t){return Quasar.plugins.Dialog.create({message:t,ok:{flat:!0,color:"orange"},cancel:{flat:!0,color:"grey"}})},formatCurrency:function(t,e){return new Intl.NumberFormat(window.LOCALE,{style:"currency",currency:e}).format(t)},formatSat:function(t){return new Intl.NumberFormat(window.LOCALE).format(t)},notifyApiError:function(t){Quasar.plugins.Notify.create({timeout:5e3,type:{400:"warning",401:"warning",500:"negative"}[t.response.status]||"warning",message:t.response.data.message||t.response.data.detail||null,caption:[t.response.status," ",t.response.statusText].join("").toUpperCase()||null,icon:null})},search:function(t,e,n,i){try{var r=e.toLowerCase().split(i||" ");return t.filter((function(t){var e=0;return _.each(r,(function(i){-1!==t[n].indexOf(i)&&e++})),e===r.length}))}catch(e){return t}},exportCSV:function(t,e,n){var i=function(t,e){var n=void 0!==e?e(t):t;return`"${n=(n=null==n?"":String(n)).split('"').join('""')}"`},r=[t.map((function(t){return i(t.label)}))].concat(e.map((function(e){return t.map((function(t){return i("function"==typeof t.field?t.field(e):e[void 0===t.field?t.name:t.field],t.format)})).join(",")}))).join("\r\n");!0!==Quasar.utils.exportFile(`${n||"table-export"}.csv`,r,"text/csv")&&Quasar.plugins.Notify.create({message:"Browser denied file download...",color:"negative",icon:null})}}},window.windowMixin={i18n:window.i18n,data:function(){return{g:{offline:!navigator.onLine,visibleDrawer:!1,extensions:[],user:null,wallet:null,payments:[],allowedThemes:null}}},methods:{changeLanguage:function(t){window.i18n.locale=t,this.$q.localStorage.set("lnbits.lang",t)},changeColor:function(t){document.body.setAttribute("data-theme",t),this.$q.localStorage.set("lnbits.theme",t)},toggleDarkMode:function(){this.$q.dark.toggle(),this.$q.localStorage.set("lnbits.darkMode",this.$q.dark.isActive)},copyText:function(t,e,n){var i=this.$q.notify;Quasar.utils.copyToClipboard(t).then((function(){i({message:e||"Copied to clipboard!",position:n||"bottom"})}))}},created:function(){1==this.$q.localStorage.getItem("lnbits.darkMode")||0==this.$q.localStorage.getItem("lnbits.darkMode")?this.$q.dark.set(this.$q.localStorage.getItem("lnbits.darkMode")):this.$q.dark.set(!0),this.g.allowedThemes=window.allowedThemes??["bitcoin"];let t=this.$q.localStorage.getItem("lnbits.lang");if(t&&(window.LOCALE=t,window.i18n.locale=t),addEventListener("offline",(t=>{this.g.offline=!0})),addEventListener("online",(t=>{this.g.offline=!1})),this.$q.localStorage.getItem("lnbits.theme")||this.changeColor(this.g.allowedThemes[0]),this.$q.localStorage.getItem("lnbits.theme")&&!this.g.allowedThemes.includes(this.$q.localStorage.getItem("lnbits.theme"))&&this.changeColor(this.g.allowedThemes[0]),this.$q.localStorage.getItem("lnbits.theme")&&document.body.setAttribute("data-theme",this.$q.localStorage.getItem("lnbits.theme")),window.user&&(this.g.user=Object.freeze(window.LNbits.map.user(window.user))),window.wallet&&(this.g.wallet=Object.freeze(window.LNbits.map.wallet(window.wallet))),window.extensions){var e=this.g.user;const t=Object.freeze(window.extensions.map((function(t){return window.LNbits.map.extension(t)})).filter((function(t){return!t.hidden})).filter((function(t){return window.user.admin?t:!t.isAdminOnly})).map((function(t){return t.isEnabled=!!e&&-1!==e.extensions.indexOf(t.code),t})).sort((function(t,e){const n=t.name.toUpperCase(),i=e.name.toUpperCase();return ni?1:0})));this.g.extensions=t}}},window.decryptLnurlPayAES=function(t,e){let n=new Uint8Array(e.match(/[\da-f]{2}/gi).map((t=>parseInt(t,16))));return crypto.subtle.importKey("raw",n,{name:"AES-CBC",length:256},!1,["decrypt"]).then((e=>{let n=Uint8Array.from(window.atob(t.iv),(t=>t.charCodeAt(0))),i=Uint8Array.from(window.atob(t.ciphertext),(t=>t.charCodeAt(0)));return crypto.subtle.decrypt({name:"AES-CBC",iv:n},e,i)})).then((t=>new TextDecoder("utf-8").decode(t)))},Vue.component("lnbits-fsat",{props:{amount:{type:Number,default:0}},template:"{{ fsat }}",computed:{fsat:function(){return LNbits.utils.formatSat(this.amount)}}}),Vue.component("lnbits-wallet-list",{data:function(){return{user:null,activeWallet:null,activeBalance:[],showForm:!1,walletName:"",LNBITS_DENOMINATION:LNBITS_DENOMINATION}},template:'\n \n \n \n \n \n \n \n \n \n {{ wallet.name }}\n {{ parseFloat(String(wallet.live_fsat).replaceAll(",", "")) / 100 }} {{ LNBITS_DENOMINATION }}\n {{ wallet.live_fsat }} {{ LNBITS_DENOMINATION }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ',computed:{wallets:function(){var t=this.activeBalance;return this.user.wallets.map((function(e){return e.live_fsat=t.length&&t[0]===e.id?LNbits.utils.formatSat(t[1]):e.fsat,e}))}},methods:{createWallet:function(){LNbits.href.createWallet(this.walletName,this.user.id)},updateWalletBalance:function(t){this.activeBalance=t}},created:function(){window.user&&(this.user=LNbits.map.user(window.user)),window.wallet&&(this.activeWallet=LNbits.map.wallet(window.wallet)),EventHub.$on("update-wallet-balance",this.updateWalletBalance)}}),Vue.component("lnbits-extension-list",{data:function(){return{extensions:[],user:null}},template:'\n \n \n \n \n \n \n \n \n \n {{ extension.name }} \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ',computed:{userExtensions:function(){if(!this.user)return[];var t=window.location.pathname,e=this.user.extensions;return this.extensions.filter((function(t){return-1!==e.indexOf(t.code)})).map((function(e){return e.isActive=t.startsWith(e.url),e}))}},created:function(){window.extensions&&(this.extensions=window.extensions.map((function(t){return LNbits.map.extension(t)})).sort((function(t,e){return t.name.localeCompare(e.name)}))),window.user&&(this.user=LNbits.map.user(window.user))}}),Vue.component("lnbits-admin-ui",{data:function(){return{extensions:[],user:null}},template:'\n \n Admin\n \n \n \n \n \n \n \n \n \n ',created:function(){window.user&&(this.user=LNbits.map.user(window.user))}}),Vue.component("lnbits-payment-details",{props:["payment"],mixins:[windowMixin],data:function(){return{LNBITS_DENOMINATION:LNBITS_DENOMINATION}},template:'\n
\n
\n \n #{{ payment.tag }}\n \n
\n
\n
:
\n
{{ payment.date }} ({{ payment.dateFrom }})
\n
\n
\n
:
\n
{{ payment.expirydate }} ({{ payment.expirydateFrom }})
\n
\n
\n
:
\n
{{ payment.memo }}
\n
\n
\n
:
\n
{{ (payment.amount / 1000).toFixed(3) }} {{LNBITS_DENOMINATION}}
\n
\n
\n
:
\n
{{ (payment.fee / 1000).toFixed(3) }} {{LNBITS_DENOMINATION}}
\n
\n
\n
:
\n
\n {{ payment.payment_hash }}\n \n
\n
\n
\n
:
\n
\n {{ payment.webhook }}\n \n {{ webhookStatusText }}\n \n
\n
\n
\n
:
\n
{{ payment.preimage }}
\n
\n
\n
\n \n extra\n \n {{ entry.key }}:\n
\n
{{ entry.value }}
\n
\n
\n
Success action:
\n
\n \n
\n
\n
\n ',computed:{hasPreimage(){return this.payment.preimage&&"0000000000000000000000000000000000000000000000000000000000000000"!==this.payment.preimage},hasSuccessAction(){return this.hasPreimage&&this.payment.extra&&this.payment.extra.success_action},webhookStatusColor(){return this.payment.webhook_status>=300||this.payment.webhook_status<0?"red-10":this.payment.webhook_status?"green-10":"cyan-7"},webhookStatusText(){return this.payment.webhook_status?this.payment.webhook_status:"not sent yet"},hasTag(){return this.payment.extra&&!!this.payment.extra.tag},extras(){if(!this.payment.extra)return[];let t=_.omit(this.payment.extra,["tag","success_action"]);return Object.keys(t).map((e=>({key:e,value:t[e]})))}}}),Vue.component("lnbits-lnurlpay-success-action",{props:["payment","success_action"],data(){return{decryptedValue:this.success_action.ciphertext}},template:'\n
\n

{{ success_action.message || success_action.description }}

\n \n {{ decryptedValue }}\n \n

\n {{ success_action.url }}\n

\n
\n ',mounted:function(){if("aes"!==this.success_action.tag)return null;decryptLnurlPayAES(this.success_action,this.payment.preimage).then((t=>{this.decryptedValue=t}))}});const bech32CharValues="qpzry9x8gf2tvdw0s3jn54khce6mua7l";function byteArrayToInt(t){let e=0;for(let n=0;n{i=(i<<5)+t,n+=5,n>=8&&(r.push(i>>n-8&255),n-=8)})),e&&n>0&&r.push(i<<8-n&255),r}function bech32ToUTF8String(t){let e=fiveBitArrayTo8BitArray(bech32ToFiveBitArray(t)),n="";for(let t=0;t20&&(e-=20,t/=Math.pow(10,e),t+=new Array(e+1).join("0"));return t} +function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.VueI18n=e()}(this,(function(){"use strict";var t=["compactDisplay","currency","currencyDisplay","currencySign","localeMatcher","notation","numberingSystem","signDisplay","style","unit","unitDisplay","useGrouping","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","minimumSignificantDigits","maximumSignificantDigits"],e=["dateStyle","timeStyle","calendar","localeMatcher","hour12","hourCycle","timeZone","formatMatcher","weekday","era","year","month","day","hour","minute","second","timeZoneName"];function n(t,e){"undefined"!=typeof console&&(console.warn("[vue-i18n] "+t),e&&console.warn(e.stack))}function i(t,e){"undefined"!=typeof console&&(console.error("[vue-i18n] "+t),e&&console.error(e.stack))}var r=Array.isArray;function o(t){return null!==t&&"object"==typeof t}function a(t){return"string"==typeof t}var s=Object.prototype.toString,l="[object Object]";function c(t){return s.call(t)===l}function u(t){return null==t}function d(t){return"function"==typeof t}function h(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n=null,i=null;return 1===t.length?o(t[0])||r(t[0])?i=t[0]:"string"==typeof t[0]&&(n=t[0]):2===t.length&&("string"==typeof t[0]&&(n=t[0]),(o(t[1])||r(t[1]))&&(i=t[1])),{locale:n,params:i}}function f(t){return JSON.parse(JSON.stringify(t))}function p(t,e){return!!~t.indexOf(e)}var m=Object.prototype.hasOwnProperty;function v(t,e){return m.call(t,e)}function g(t){for(var e=arguments,n=Object(t),i=1;i0;)e[n]=arguments[n+1];var i=this.$i18n;return i._t.apply(i,[t,i.locale,i._getMessages(),this].concat(e))},t.prototype.$tc=function(t,e){for(var n=[],i=arguments.length-2;i-- >0;)n[i]=arguments[i+2];var r=this.$i18n;return r._tc.apply(r,[t,r.locale,r._getMessages(),this,e].concat(n))},t.prototype.$te=function(t,e){var n=this.$i18n;return n._te(t,n.locale,n._getMessages(),e)},t.prototype.$d=function(t){for(var e,n=[],i=arguments.length-1;i-- >0;)n[i]=arguments[i+1];return(e=this.$i18n).d.apply(e,[t].concat(n))},t.prototype.$n=function(t){for(var e,n=[],i=arguments.length-1;i-- >0;)n[i]=arguments[i+1];return(e=this.$i18n).n.apply(e,[t].concat(n))}}(x),x.mixin(function(t){function e(){this!==this.$root&&this.$options.__INTLIFY_META__&&this.$el&&this.$el.setAttribute("data-intlify",this.$options.__INTLIFY_META__)}return void 0===t&&(t=!1),t?{mounted:e}:{beforeCreate:function(){var t=this.$options;if(t.i18n=t.i18n||(t.__i18nBridge||t.__i18n?{}:null),t.i18n)if(t.i18n instanceof Y){if(t.__i18nBridge||t.__i18n)try{var e=t.i18n&&t.i18n.messages?t.i18n.messages:{};(t.__i18nBridge||t.__i18n).forEach((function(t){e=g(e,JSON.parse(t))})),Object.keys(e).forEach((function(n){t.i18n.mergeLocaleMessage(n,e[n])}))}catch(t){i("Cannot parse locale messages via custom blocks.",t)}this._i18n=t.i18n,this._i18nWatcher=this._i18n.watchI18nData()}else if(c(t.i18n)){var r=this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof Y?this.$root.$i18n:null;if(r&&(t.i18n.root=this.$root,t.i18n.formatter=r.formatter,t.i18n.fallbackLocale=r.fallbackLocale,t.i18n.formatFallbackMessages=r.formatFallbackMessages,t.i18n.silentTranslationWarn=r.silentTranslationWarn,t.i18n.silentFallbackWarn=r.silentFallbackWarn,t.i18n.pluralizationRules=r.pluralizationRules,t.i18n.preserveDirectiveContent=r.preserveDirectiveContent),t.__i18nBridge||t.__i18n)try{var o=t.i18n&&t.i18n.messages?t.i18n.messages:{};(t.__i18nBridge||t.__i18n).forEach((function(t){o=g(o,JSON.parse(t))})),t.i18n.messages=o}catch(t){n("Cannot parse locale messages via custom blocks.",t)}var a=t.i18n.sharedMessages;a&&c(a)&&(t.i18n.messages=g(t.i18n.messages,a)),this._i18n=new Y(t.i18n),this._i18nWatcher=this._i18n.watchI18nData(),(void 0===t.i18n.sync||t.i18n.sync)&&(this._localeWatcher=this.$i18n.watchLocale()),r&&r.onComponentInstanceCreated(this._i18n)}else n("Cannot be interpreted 'i18n' option.");else this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof Y?this._i18n=this.$root.$i18n:t.parent&&t.parent.$i18n&&t.parent.$i18n instanceof Y&&(this._i18n=t.parent.$i18n)},beforeMount:function(){var t=this.$options;t.i18n=t.i18n||(t.__i18nBridge||t.__i18n?{}:null),t.i18n?t.i18n instanceof Y||c(t.i18n)?(this._i18n.subscribeDataChanging(this),this._subscribing=!0):n("Cannot be interpreted 'i18n' option."):(this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof Y||t.parent&&t.parent.$i18n&&t.parent.$i18n instanceof Y)&&(this._i18n.subscribeDataChanging(this),this._subscribing=!0)},mounted:e,beforeDestroy:function(){if(this._i18n){var t=this;this.$nextTick((function(){t._subscribing&&(t._i18n.unsubscribeDataChanging(t),delete t._subscribing),t._i18nWatcher&&(t._i18nWatcher(),t._i18n.destroyVM(),delete t._i18nWatcher),t._localeWatcher&&(t._localeWatcher(),delete t._localeWatcher)}))}}}}(e.bridge)),x.directive("t",{bind:S,update:M,unbind:T}),x.component(_.name,_),x.component(C.name,C),x.config.optionMergeStrategies.i18n=function(t,e){return void 0===e?t:e}))}var A=function(){this._caches=Object.create(null)};A.prototype.interpolate=function(t,e){if(!e)return[t];var i=this._caches[t];return i||(i=function(t){var e=[],n=0,i="";for(;n0)d--,u=4,h[0]();else{if(d=0,void 0===n)return!1;if(!1===(n=N(n)))return!1;h[1]()}};null!==u;)if(c++,"\\"!==(e=t[c])||!f()){if(r=I(e),8===(o=(s=q[u])[r]||s.else||8))return;if(u=o[0],(a=h[o[1]])&&(i=void 0===(i=o[2])?e:i,!1===a()))return;if(7===u)return l}}(t),e&&(this._cache[t]=e)),e||[]},F.prototype.getPathValue=function(t,e){if(!o(t))return null;var n=this.parsePath(e);if(0===n.length)return null;for(var i=n.length,r=t,a=0;a/,z=/(?:@(?:\.[a-zA-Z]+)?:(?:[\w\-_|./]+|\([\w\-_:|./]+\)))/g,V=/^@(?:\.([a-zA-Z]+))?:/,H=/[()]/g,W={upper:function(t){return t.toLocaleUpperCase()},lower:function(t){return t.toLocaleLowerCase()},capitalize:function(t){return""+t.charAt(0).toLocaleUpperCase()+t.substr(1)}},U=new A,Y=function(t){var e=this;void 0===t&&(t={}),!x&&"undefined"!=typeof window&&window.Vue&&E(window.Vue);var n=t.locale||"en-US",i=!1!==t.fallbackLocale&&(t.fallbackLocale||"en-US"),r=t.messages||{},o=t.dateTimeFormats||t.datetimeFormats||{},a=t.numberFormats||{};this._vm=null,this._formatter=t.formatter||U,this._modifiers=t.modifiers||{},this._missing=t.missing||null,this._root=t.root||null,this._sync=void 0===t.sync||!!t.sync,this._fallbackRoot=void 0===t.fallbackRoot||!!t.fallbackRoot,this._fallbackRootWithEmptyString=void 0===t.fallbackRootWithEmptyString||!!t.fallbackRootWithEmptyString,this._formatFallbackMessages=void 0!==t.formatFallbackMessages&&!!t.formatFallbackMessages,this._silentTranslationWarn=void 0!==t.silentTranslationWarn&&t.silentTranslationWarn,this._silentFallbackWarn=void 0!==t.silentFallbackWarn&&!!t.silentFallbackWarn,this._dateTimeFormatters={},this._numberFormatters={},this._path=new F,this._dataListeners=new Set,this._componentInstanceCreatedListener=t.componentInstanceCreatedListener||null,this._preserveDirectiveContent=void 0!==t.preserveDirectiveContent&&!!t.preserveDirectiveContent,this.pluralizationRules=t.pluralizationRules||{},this._warnHtmlInMessage=t.warnHtmlInMessage||"off",this._postTranslation=t.postTranslation||null,this._escapeParameterHtml=t.escapeParameterHtml||!1,"__VUE_I18N_BRIDGE__"in t&&(this.__VUE_I18N_BRIDGE__=t.__VUE_I18N_BRIDGE__),this.getChoiceIndex=function(t,n){var i=Object.getPrototypeOf(e);if(i&&i.getChoiceIndex)return i.getChoiceIndex.call(e,t,n);var r,o;return e.locale in e.pluralizationRules?e.pluralizationRules[e.locale].apply(e,[t,n]):(r=t,o=n,r=Math.abs(r),2===o?r?r>1?1:0:1:r?Math.min(r,2):0)},this._exist=function(t,n){return!(!t||!n)&&(!u(e._path.getPathValue(t,n))||!!t[n])},"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||Object.keys(r).forEach((function(t){e._checkLocaleMessage(t,e._warnHtmlInMessage,r[t])})),this._initVM({locale:n,fallbackLocale:i,messages:r,dateTimeFormats:o,numberFormats:a})},Q={vm:{configurable:!0},messages:{configurable:!0},dateTimeFormats:{configurable:!0},numberFormats:{configurable:!0},availableLocales:{configurable:!0},locale:{configurable:!0},fallbackLocale:{configurable:!0},formatFallbackMessages:{configurable:!0},missing:{configurable:!0},formatter:{configurable:!0},silentTranslationWarn:{configurable:!0},silentFallbackWarn:{configurable:!0},preserveDirectiveContent:{configurable:!0},warnHtmlInMessage:{configurable:!0},postTranslation:{configurable:!0},sync:{configurable:!0}};return Y.prototype._checkLocaleMessage=function(t,e,o){var s=function(t,e,o,l){if(c(o))Object.keys(o).forEach((function(n){var i=o[n];c(i)?(l.push(n),l.push("."),s(t,e,i,l),l.pop(),l.pop()):(l.push(n),s(t,e,i,l),l.pop())}));else if(r(o))o.forEach((function(n,i){c(n)?(l.push("["+i+"]"),l.push("."),s(t,e,n,l),l.pop(),l.pop()):(l.push("["+i+"]"),s(t,e,n,l),l.pop())}));else if(a(o)){if(j.test(o)){var u="Detected HTML in message '"+o+"' of keypath '"+l.join("")+"' at '"+e+"'. Consider component interpolation with '' to avoid XSS. See https://bit.ly/2ZqJzkp";"warn"===t?n(u):"error"===t&&i(u)}}};s(e,t,o,[])},Y.prototype._initVM=function(t){var e=x.config.silent;x.config.silent=!0,this._vm=new x({data:t,__VUE18N__INSTANCE__:!0}),x.config.silent=e},Y.prototype.destroyVM=function(){this._vm.$destroy()},Y.prototype.subscribeDataChanging=function(t){this._dataListeners.add(t)},Y.prototype.unsubscribeDataChanging=function(t){!function(t,e){if(t.delete(e));}(this._dataListeners,t)},Y.prototype.watchI18nData=function(){var t=this;return this._vm.$watch("$data",(function(){for(var e,n,i=(e=t._dataListeners,n=[],e.forEach((function(t){return n.push(t)})),n),r=i.length;r--;)x.nextTick((function(){i[r]&&i[r].$forceUpdate()}))}),{deep:!0})},Y.prototype.watchLocale=function(t){if(t){if(!this.__VUE_I18N_BRIDGE__)return null;var e=this,n=this._vm;return this.vm.$watch("locale",(function(i){n.$set(n,"locale",i),e.__VUE_I18N_BRIDGE__&&t&&(t.locale.value=i),n.$forceUpdate()}),{immediate:!0})}if(!this._sync||!this._root)return null;var i=this._vm;return this._root.$i18n.vm.$watch("locale",(function(t){i.$set(i,"locale",t),i.$forceUpdate()}),{immediate:!0})},Y.prototype.onComponentInstanceCreated=function(t){this._componentInstanceCreatedListener&&this._componentInstanceCreatedListener(t,this)},Q.vm.get=function(){return this._vm},Q.messages.get=function(){return f(this._getMessages())},Q.dateTimeFormats.get=function(){return f(this._getDateTimeFormats())},Q.numberFormats.get=function(){return f(this._getNumberFormats())},Q.availableLocales.get=function(){return Object.keys(this.messages).sort()},Q.locale.get=function(){return this._vm.locale},Q.locale.set=function(t){this._vm.$set(this._vm,"locale",t)},Q.fallbackLocale.get=function(){return this._vm.fallbackLocale},Q.fallbackLocale.set=function(t){this._localeChainCache={},this._vm.$set(this._vm,"fallbackLocale",t)},Q.formatFallbackMessages.get=function(){return this._formatFallbackMessages},Q.formatFallbackMessages.set=function(t){this._formatFallbackMessages=t},Q.missing.get=function(){return this._missing},Q.missing.set=function(t){this._missing=t},Q.formatter.get=function(){return this._formatter},Q.formatter.set=function(t){this._formatter=t},Q.silentTranslationWarn.get=function(){return this._silentTranslationWarn},Q.silentTranslationWarn.set=function(t){this._silentTranslationWarn=t},Q.silentFallbackWarn.get=function(){return this._silentFallbackWarn},Q.silentFallbackWarn.set=function(t){this._silentFallbackWarn=t},Q.preserveDirectiveContent.get=function(){return this._preserveDirectiveContent},Q.preserveDirectiveContent.set=function(t){this._preserveDirectiveContent=t},Q.warnHtmlInMessage.get=function(){return this._warnHtmlInMessage},Q.warnHtmlInMessage.set=function(t){var e=this,n=this._warnHtmlInMessage;if(this._warnHtmlInMessage=t,n!==t&&("warn"===t||"error"===t)){var i=this._getMessages();Object.keys(i).forEach((function(t){e._checkLocaleMessage(t,e._warnHtmlInMessage,i[t])}))}},Q.postTranslation.get=function(){return this._postTranslation},Q.postTranslation.set=function(t){this._postTranslation=t},Q.sync.get=function(){return this._sync},Q.sync.set=function(t){this._sync=t},Y.prototype._getMessages=function(){return this._vm.messages},Y.prototype._getDateTimeFormats=function(){return this._vm.dateTimeFormats},Y.prototype._getNumberFormats=function(){return this._vm.numberFormats},Y.prototype._warnDefault=function(t,e,i,r,o,s){if(!u(i))return i;if(this._missing){var l=this._missing.apply(null,[t,e,r,o]);if(a(l))return l}else this._isSilentTranslationWarn(e)||n("Cannot translate the value of keypath '"+e+"'. Use the value of keypath as default.");if(this._formatFallbackMessages){var c=h.apply(void 0,o);return this._render(e,s,c.params,e)}return e},Y.prototype._isFallbackRoot=function(t){return(this._fallbackRootWithEmptyString?!t:u(t))&&!u(this._root)&&this._fallbackRoot},Y.prototype._isSilentFallbackWarn=function(t){return this._silentFallbackWarn instanceof RegExp?this._silentFallbackWarn.test(t):this._silentFallbackWarn},Y.prototype._isSilentFallback=function(t,e){return this._isSilentFallbackWarn(e)&&(this._isFallbackRoot()||t!==this.fallbackLocale)},Y.prototype._isSilentTranslationWarn=function(t){return this._silentTranslationWarn instanceof RegExp?this._silentTranslationWarn.test(t):this._silentTranslationWarn},Y.prototype._interpolate=function(t,e,i,o,s,l,h){if(!e)return null;var f,p=this._path.getPathValue(e,i);if(r(p)||c(p))return p;if(u(p)){if(!c(e))return null;if(!a(f=e[i])&&!d(f))return this._isSilentTranslationWarn(i)||this._isSilentFallback(t,i)||n("Value of key '"+i+"' is not a string or function !"),null}else{if(!a(p)&&!d(p))return this._isSilentTranslationWarn(i)||this._isSilentFallback(t,i)||n("Value of key '"+i+"' is not a string or function!"),null;f=p}return a(f)&&(f.indexOf("@:")>=0||f.indexOf("@.")>=0)&&(f=this._link(t,e,f,o,"raw",l,h)),this._render(f,s,l,i)},Y.prototype._link=function(t,e,i,o,a,s,l){var c=i,u=c.match(z);for(var d in u)if(u.hasOwnProperty(d)){var h=u[d],f=h.match(V),m=f[0],v=f[1],g=h.replace(m,"").replace(H,"");if(p(l,g))return n('Circular reference found. "'+h+'" is already visited in the chain of '+l.reverse().join(" <- ")),c;l.push(g);var y=this._interpolate(t,e,g,o,"raw"===a?"string":a,"raw"===a?void 0:s,l);if(this._isFallbackRoot(y)){if(this._isSilentTranslationWarn(g)||n("Fall back to translate the link placeholder '"+g+"' with root locale."),!this._root)throw Error("unexpected error");var _=this._root.$i18n;y=_._translate(_._getMessages(),_.locale,_.fallbackLocale,g,o,a,s)}y=this._warnDefault(t,g,y,o,r(s)?s:[s],a),this._modifiers.hasOwnProperty(v)?y=this._modifiers[v](y):W.hasOwnProperty(v)&&(y=W[v](y)),l.pop(),c=y?c.replace(h,y):c}return c},Y.prototype._createMessageContext=function(t,e,n,i){var a=this,s=r(t)?t:[],l=o(t)?t:{},c=this._getMessages(),u=this.locale;return{list:function(t){return s[t]},named:function(t){return l[t]},values:t,formatter:e,path:n,messages:c,locale:u,linked:function(t){return a._interpolate(u,c[u]||{},t,null,i,void 0,[t])}}},Y.prototype._render=function(t,e,n,i){if(d(t))return t(this._createMessageContext(n,this._formatter||U,i,e));var r=this._formatter.interpolate(t,n,i);return r||(r=U.interpolate(t,n,i)),"string"!==e||a(r)?r:r.join("")},Y.prototype._appendItemToChain=function(t,e,n){var i=!1;return p(t,e)||(i=!0,e&&(i="!"!==e[e.length-1],e=e.replace(/!/g,""),t.push(e),n&&n[e]&&(i=n[e]))),i},Y.prototype._appendLocaleToChain=function(t,e,n){var i,r=e.split("-");do{var o=r.join("-");i=this._appendItemToChain(t,o,n),r.splice(-1,1)}while(r.length&&!0===i);return i},Y.prototype._appendBlockToChain=function(t,e,n){for(var i=!0,r=0;r0;)a[s]=arguments[s+4];if(!t)return"";var l,c=h.apply(void 0,a);this._escapeParameterHtml&&(c.params=(null!=(l=c.params)&&Object.keys(l).forEach((function(t){"string"==typeof l[t]&&(l[t]=l[t].replace(//g,">").replace(/"/g,""").replace(/'/g,"'"))})),l));var u=c.locale||e,d=this._translate(i,u,this.fallbackLocale,t,r,"string",c.params);if(this._isFallbackRoot(d)){if(this._isSilentTranslationWarn(t)||this._isSilentFallbackWarn(t)||n("Fall back to translate the keypath '"+t+"' with root locale."),!this._root)throw Error("unexpected error");return(o=this._root).$t.apply(o,[t].concat(a))}return d=this._warnDefault(u,t,d,r,a,"string"),this._postTranslation&&null!=d&&(d=this._postTranslation(d,t)),d},Y.prototype.t=function(t){for(var e,n=[],i=arguments.length-1;i-- >0;)n[i]=arguments[i+1];return(e=this)._t.apply(e,[t,this.locale,this._getMessages(),null].concat(n))},Y.prototype._i=function(t,e,i,r,o){var a=this._translate(i,e,this.fallbackLocale,t,r,"raw",o);if(this._isFallbackRoot(a)){if(this._isSilentTranslationWarn(t)||n("Fall back to interpolate the keypath '"+t+"' with root locale."),!this._root)throw Error("unexpected error");return this._root.$i18n.i(t,e,o)}return this._warnDefault(e,t,a,r,[o],"raw")},Y.prototype.i=function(t,e,n){return t?(a(e)||(e=this.locale),this._i(t,e,this._getMessages(),null,n)):""},Y.prototype._tc=function(t,e,n,i,r){for(var o,a=[],s=arguments.length-5;s-- >0;)a[s]=arguments[s+5];if(!t)return"";void 0===r&&(r=1);var l={count:r,n:r},c=h.apply(void 0,a);return c.params=Object.assign(l,c.params),a=null===c.locale?[c.params]:[c.locale,c.params],this.fetchChoice((o=this)._t.apply(o,[t,e,n,i].concat(a)),r)},Y.prototype.fetchChoice=function(t,e){if(!t||!a(t))return null;var n=t.split("|");return n[e=this.getChoiceIndex(e,n.length)]?n[e].trim():t},Y.prototype.tc=function(t,e){for(var n,i=[],r=arguments.length-2;r-- >0;)i[r]=arguments[r+2];return(n=this)._tc.apply(n,[t,this.locale,this._getMessages(),null,e].concat(i))},Y.prototype._te=function(t,e,n){for(var i=[],r=arguments.length-3;r-- >0;)i[r]=arguments[r+3];var o=h.apply(void 0,i).locale||e;return this._exist(n[o],t)},Y.prototype.te=function(t,e){return this._te(t,this.locale,this._getMessages(),e)},Y.prototype.getLocaleMessage=function(t){return f(this._vm.messages[t]||{})},Y.prototype.setLocaleMessage=function(t,e){"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||this._checkLocaleMessage(t,this._warnHtmlInMessage,e),this._vm.$set(this._vm.messages,t,e)},Y.prototype.mergeLocaleMessage=function(t,e){"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||this._checkLocaleMessage(t,this._warnHtmlInMessage,e),this._vm.$set(this._vm.messages,t,g(void 0!==this._vm.messages[t]&&Object.keys(this._vm.messages[t]).length?Object.assign({},this._vm.messages[t]):{},e))},Y.prototype.getDateTimeFormat=function(t){return f(this._vm.dateTimeFormats[t]||{})},Y.prototype.setDateTimeFormat=function(t,e){this._vm.$set(this._vm.dateTimeFormats,t,e),this._clearDateTimeFormat(t,e)},Y.prototype.mergeDateTimeFormat=function(t,e){this._vm.$set(this._vm.dateTimeFormats,t,g(this._vm.dateTimeFormats[t]||{},e)),this._clearDateTimeFormat(t,e)},Y.prototype._clearDateTimeFormat=function(t,e){for(var n in e){var i=t+"__"+n;this._dateTimeFormatters.hasOwnProperty(i)&&delete this._dateTimeFormatters[i]}},Y.prototype._localizeDateTime=function(t,e,i,r,o,a){for(var s=e,l=r[s],c=this._getLocaleChain(e,i),d=0;d0;)n[i]=arguments[i+1];var r=this.locale,s=null,l=null;return 1===n.length?(a(n[0])?s=n[0]:o(n[0])&&(n[0].locale&&(r=n[0].locale),n[0].key&&(s=n[0].key)),l=Object.keys(n[0]).reduce((function(t,i){var r;return p(e,i)?Object.assign({},t,((r={})[i]=n[0][i],r)):t}),null)):2===n.length&&(a(n[0])&&(s=n[0]),a(n[1])&&(r=n[1])),this._d(t,r,s,l)},Y.prototype.getNumberFormat=function(t){return f(this._vm.numberFormats[t]||{})},Y.prototype.setNumberFormat=function(t,e){this._vm.$set(this._vm.numberFormats,t,e),this._clearNumberFormat(t,e)},Y.prototype.mergeNumberFormat=function(t,e){this._vm.$set(this._vm.numberFormats,t,g(this._vm.numberFormats[t]||{},e)),this._clearNumberFormat(t,e)},Y.prototype._clearNumberFormat=function(t,e){for(var n in e){var i=t+"__"+n;this._numberFormatters.hasOwnProperty(i)&&delete this._numberFormatters[i]}},Y.prototype._getNumberFormatter=function(t,e,i,r,o,a){for(var s=e,l=r[s],c=this._getLocaleChain(e,i),d=0;d0;)n[i]=arguments[i+1];var r=this.locale,s=null,l=null;return 1===n.length?a(n[0])?s=n[0]:o(n[0])&&(n[0].locale&&(r=n[0].locale),n[0].key&&(s=n[0].key),l=Object.keys(n[0]).reduce((function(e,i){var r;return p(t,i)?Object.assign({},e,((r={})[i]=n[0][i],r)):e}),null)):2===n.length&&(a(n[0])&&(s=n[0]),a(n[1])&&(r=n[1])),this._n(e,r,s,l)},Y.prototype._ntp=function(t,e,i,r){if(!Y.availabilities.numberFormat)return n("Cannot format to parts a Number value due to not supported Intl.NumberFormat."),[];if(!i)return(r?new Intl.NumberFormat(e,r):new Intl.NumberFormat(e)).formatToParts(t);var o=this._getNumberFormatter(t,e,this.fallbackLocale,this._getNumberFormats(),i,r),a=o&&o.formatToParts(t);if(this._isFallbackRoot(a)){if(this._isSilentTranslationWarn(i)||n("Fall back to format number to parts of root: key '"+i+"' ."),!this._root)throw Error("unexpected error");return this._root.$i18n._ntp(t,e,i,r)}return a||[]},Object.defineProperties(Y.prototype,Q),Object.defineProperty(Y,"availabilities",{get:function(){if(!$){var t="undefined"!=typeof Intl;$={dateTimeFormat:t&&void 0!==Intl.DateTimeFormat,numberFormat:t&&void 0!==Intl.NumberFormat}}return $}}),Y.install=E,Y.version="8.28.2",Y})),window.localisation={},window.localisation.en={server:"Server",theme:"Theme",funding:"Funding",users:"Users",restart:"Restart server",save:"Save",save_tooltip:"Save your changes",topup:"Topup",topup_wallet:"Topup a wallet",topup_hint:"Use the wallet ID to topup any wallet",restart_tooltip:"Restart the server for changes to take effect",add_funds_tooltip:"Add funds to a wallet.",reset_defaults:"Reset to defaults",reset_defaults_tooltip:"Delete all settings and reset to defaults.",download_backup:"Download database backup",name_your_wallet:"Name your %{name} wallet",paste_invoice_label:"Paste an invoice, payment request or lnurl code *",lnbits_description:"Easy to set up and lightweight, LNbits can run on any lightning-network funding source, currently supporting LND, c-lightning, OpenNode, LNPay and even LNbits itself! You can run LNbits for yourself, or easily offer a custodian solution for others. Each wallet has its own API keys and there is no limit to the number of wallets you can make. Being able to partition funds makes LNbits a useful tool for money management and as a development tool. Extensions add extra functionality to LNbits so you can experiment with a range of cutting-edge technologies on the lightning network. We have made developing extensions as easy as possible, and as a free and open-source project, we encourage people to develop and submit their own.",export_to_phone:"Export to Phone with QR Code",export_to_phone_desc:"This QR code contains your wallet URL with full access. You can scan it from your phone to open your wallet from there.",wallets:"Wallets",add_wallet:"Add a new wallet",delete_wallet:"Delete wallet",delete_wallet_desc:"This whole wallet will be deleted, the funds will be UNRECOVERABLE.",rename_wallet:"Rename wallet",update_name:"Update name",press_to_claim:"Press to claim bitcoin",donate:"Donate",view_github:"View on GitHub",voidwallet_active:"VoidWallet is active! Payments disabled",use_with_caution:"USE WITH CAUTION - %{name} wallet is still in BETA",toggle_darkmode:"Toggle Dark Mode",view_swagger_docs:"View LNbits Swagger API docs",api_docs:"Api docs",commit_version:"Commit version",lnbits_version:"LNbits version",runs_on:"Runs on",credit_hint:"Press Enter to credit account",credit_label:"%{denomination} to credit",paste_request:"Paste Request",create_invoice:"Create Invoice",camera_tooltip:"Use camera to scan an invoice/QR",export_csv:"Export to CSV",transactions:"Transactions",chart_tooltip:"Show chart",pending:"Pending",copy_invoice:"Copy invoice",close:"Close",cancel:"Cancel",scan:"Scan",read:"Read",pay:"Pay",memo:"Memo",date:"Date",processing_payment:"Processing payment...",not_enough_funds:"Not enough funds!",search_by_tag_memo_amount:"Search by tag, memo, amount",invoice_waiting:"Invoice waiting to be paid",payment_received:"Payment Received",payment_sent:"Payment Sent",outgoing_payment_pending:"Outgoing payment pending",drain_funds:"Drain Funds",drain_funds_desc:"This is an LNURL-withdraw QR code for slurping everything from this wallet. Do not share with anyone. It is compatible with balanceCheck and balanceNotify so your wallet may keep pulling the funds continuously from here after the first withdraw.",i_understand:"I understand",copy_wallet_url:"Copy wallet URL",disclaimer_dialog:"Login functionality to be released in a future update, for now, make sure you bookmark this page for future access to your wallet! This service is in BETA, and we hold no responsibility for people losing access to funds.",no_transactions:"No transactions made yet",manage_extensions:"Manage Extensions",manage_server:"Manage Server",extensions:"Extensions",no_extensions:"You don't have any extensions installed :(",created:"Created",payment_hash:"Payment Hash",fee:"Fee",amount:"Amount",unit:"Unit",description:"Description",expiry:"Expiry",webhook:"Webhook",payment_proof:"Payment Proof"},window.localisation.de={server:"Server",theme:"Theme",funding:"Funding",users:"Benutzer",unit:"Einheit",restart:"Server neu starten",save:"Speichern",save_tooltip:"Änderungen speichern",topup:"Aufladen",topup_wallet:"Wallet aufladen",topup_hint:"Nutze die Wallet-ID, um eine beliebige Wallet aufzuladen",restart_tooltip:"Starte den Server neu, um die Änderungen zu übernehmen",add_funds_tooltip:"Füge Geld zu einer Wallet hinzu.",reset_defaults:"Zurücksetzen",reset_defaults_tooltip:"Alle Einstellungen zurücksetzen auf die Standardeinstellungen.",download_backup:"Datenbank-Backup herunterladen",name_your_wallet:"Vergib deiner %{name} Wallet einen Namen",paste_invoice_label:"Füge eine Rechnung, Zahlungsanforderung oder lnurl ein *",lnbits_description:"Einfach zu installieren und kompakt, LNbits kann auf jeder Funding-Quelle im Lightning Netzwerk aufsetzen. Derzeit unterstützt: LND, c-lightning, OpenNode, LNPay und sogar LNbits selbst! Du kannst LNbits für dich selbst betreiben oder anderen die Verwaltung durch dich anbieten. Jede Wallet hat ihre eigenen API-Schlüssel und die Anzahl der Wallets ist unbegrenzt. Die Möglichkeit, Gelder auf verschiedene Accounts mit unterschiedlicher Logik aufteilen zu können macht LNbits zu einem nützlichen Werkzeug für deine Buchhaltung - aber auch als Entwicklungswerkzeug. Erweiterungen bereichern LNbits Accounts um zusätzliche Funktionalität, so dass du mit einer Reihe von neuartigen Technologien auf dem Lightning-Netzwerk experimentieren kannst. Wir haben es so einfach wie möglich gemacht, Erweiterungen zu entwickeln, und als freies und Open-Source-Projekt möchten wir Menschen ermutigen, sich selbst hieran zu versuchen und gemeinsam mit uns neue Funktionalitäten zu entwickeln.",export_to_phone:"Auf dem Telefon öffnen",export_to_phone_desc:"Dieser QR-Code beinhaltet vollständige Rechte auf deine Wallet. Du kannste den QR-Code mit Deinem Telefon scannen, um deine Wallet dort zu öffnen.",wallets:"Wallets",add_wallet:"Wallet hinzufügen",delete_wallet:"Wallet löschen",delete_wallet_desc:"Die Wallet wird gelöscht, die hierin beinhalteten Daten hierin oder innerhalb einer Erweiterung sind UNWIEDERBRINGLICH.",rename_wallet:"Wallet umbenennen",update_name:"Namen aktualisieren",press_to_claim:"Klicken, um Bitcoin einzufordern.",donate:"Spenden",view_github:"Auf GitHub anzeigen",voidwallet_active:"VoidWallet ist aktiv! Zahlungen deaktiviert",use_with_caution:"BITTE MIT VORSICHT BENUTZEN- %{name} Wallet ist noch BETA",toggle_darkmode:"Auf Dark Mode umschalten",view_swagger_docs:"LNbits Swagger API-Dokumente",api_docs:"API docs",commit_version:"Commit Version",runs_on:"Läuft auf",credit_hint:"Klicke Enter, um das Konto zu belasten",credit_label:"%{denomination} zu belasten",paste_request:"Anfrage einfügen",create_invoice:"Rechnung erstellen",camera_tooltip:"Verwenden Sie die Kamera, um eine Rechnung oder einen QR-Code zu scannen",export_csv:"Exportieren als CSV",transactions:"Transaktionen",chart_tooltip:"Diagramm anzeigen",pending:"Ausstehend",copy_invoice:"Rechnung kopieren",close:"Schließen",cancel:"Stornieren",scan:"Scannen",read:"Lesen",pay:"Zahlen",memo:"Memo",date:"Datum",processing_payment:"Zahlung wird verarbeitet ...",not_enough_funds:"Geldmittel sind erschöpft!",search_by_tag_memo_amount:"Suche nach Tag, Memo, Betrag",invoice_waiting:"Rechnung wartend auf Zahlung",payment_received:"Zahlung erhalten",payment_sent:"Zahlung gesendet",outgoing_payment_pending:"Ausgehende Zahlung wartend",drain_funds:"Sats abziehen",drain_funds_desc:"LNURL-withdraw QR-Code, der das Abziehen aller Geldmittel aus dieser Wallet erlaubt. Teile ihn mit niemandem! Kompatibel mit balanceCheck und balanceNotify, so dass deine Brieftasche die Sats nach dem ersten Abzug kontinuierlich von hier abziehen kann.",i_understand:"Ich verstehe",copy_wallet_url:"Wallet-URL kopieren",disclaimer_dialog:"Login-Funktionalität wird in einem zukünftigen Update veröffentlicht. Bis dahin ist die Speicherung der Wallet-URL als Lesezeichen absolut notwendig, um Zugriff auf die Wallet zu erhalten! Dieser Service ist in BETA und wir übernehmen keine Verantwortung für Verluste durch verlorene Zugriffe.",no_transactions:"Keine Transaktionen",manage_extensions:"Erweiterungen verwalten",manage_server:"Server verwalten",extensions:"Erweiterungen",no_extensions:"Du hast noch keine Erweiterungen installiert :(",created:"Erstellt",payment_hash:"Zahlungs-Hash",fee:"Gebühr",amount:"Menge",description:"Beschreibung",expiry:"Ablauf",webhook:"Webhook",payment_proof:"Beleg"},window.localisation.es={server:"Servidor",theme:"Tema",funding:"Financiación",unit:"Unidad",users:"Usuarios",restart:"Reiniciar el servidor",save:"Guardar",save_tooltip:"Guardar cambios",topup:"Recargar",topup_wallet:"Recargar billetera",topup_hint:"Utilice el ID de billetera para recargar cualquier billetera",restart_tooltip:"Reinicie el servidor para aplicar los cambios",add_funds_tooltip:"Agregue fondos a una billetera.",reset_defaults:"Restablecer",reset_defaults_tooltip:"Borrar todas las configuraciones y restablecer a los valores predeterminados.",download_backup:"Descargar copia de seguridad de la base de datos",name_your_wallet:"Nombre de su billetera %{name}",paste_invoice_label:"Pegue la factura aquí",lnbits_description:"Fácil de instalar y liviano, LNbits puede ejecutarse en cualquier fuente de financiación de la red Lightning, actualmente compatible con LND, c-lightning, OpenNode, LNPay y hasta LNbits mismo! Puede ejecutar LNbits para usted mismo o ofrecer una solución competente a otros. Cada billetera tiene su propia clave API y no hay límite para la cantidad de billeteras que puede crear. La capacidad de particionar fondos hace de LNbits una herramienta útil para la administración de fondos y como herramienta de desarrollo. Las extensiones agregan funcionalidad adicional a LNbits, por lo que puede experimentar con una variedad de tecnologías de vanguardia en la red Lightning. Lo hemos hecho lo más simple posible para desarrollar extensiones y, como un proyecto gratuito y de código abierto, animamos a las personas a que se desarrollen a sí mismas y envíen sus propios contribuciones.",export_to_phone:"Exportar a teléfono con código QR",export_to_phone_desc:"Este código QR contiene su URL de billetera con acceso completo. Puede escanearlo desde su teléfono para abrir su billetera allí.",wallets:"Billeteras",add_wallet:"Agregar nueva billetera",delete_wallet:"Eliminar billetera",delete_wallet_desc:"Esta billetera completa se eliminará, los fondos son IRREVERSIBLES.",rename_wallet:"Cambiar el nombre de la billetera",update_name:"Actualizar nombre",press_to_claim:"Presione para reclamar Bitcoin",donate:"Donar",view_github:"Ver en GitHub",voidwallet_active:"¡VoidWallet está activo! Pagos desactivados",use_with_caution:"USAR CON CUIDADO - %{name} Wallet aún está en BETA",toggle_darkmode:"Cambiar modo oscuro",view_swagger_docs:"Ver documentos de API de LNbits Swagger",api_docs:"Documentos de API",commit_version:"Versión de compromiso",runs_on:"Corre en",credit_hint:"Presione Enter para cargar la cuenta",credit_label:"Cargar %{denomination}",paste_request:"Pegar solicitud",create_invoice:"Crear factura",camera_tooltip:"Utilice la cámara para escanear una factura / código QR",export_csv:"Exportar a CSV",transactions:"Transacciones",chart_tooltip:"Mostrar gráfico",pending:"Pendiente",copy_invoice:"Copiar factura",close:"Cerrar",cancel:"Cancelar",scan:"Escanear",read:"Leer",pay:"Pagar",memo:"Memo",date:"Fecha",processing_payment:"Procesando pago ...",not_enough_funds:"¡No hay suficientes fondos!",search_by_tag_memo_amount:"Buscar por etiqueta, memo, cantidad",invoice_waiting:"Factura esperando pago",payment_received:"Pago recibido",payment_sent:"Pago enviado",outgoing_payment_pending:"Pago saliente pendiente",drain_funds:"Drenar fondos",drain_funds_desc:"Este es un código QR LNURL-withdraw para drenar todos los fondos de esta billetera. No lo comparta con nadie. Es compatible con balanceCheck y balanceNotify, por lo que su billetera puede continuar drenando los fondos de aquí después del primer drenaje.",i_understand:"Lo entiendo",copy_wallet_url:"Copiar URL de billetera",disclaimer_dialog:"La funcionalidad de inicio de sesión se lanzará en una actualización futura, por ahora, asegúrese de guardar esta página como marcador para acceder a su billetera en el futuro. Este servicio está en BETA y no asumimos ninguna responsabilidad por personas que pierdan el acceso a sus fondos.",no_transactions:"No hay transacciones todavía",manage_extensions:"Administrar extensiones",manage_server:"Administrar servidor",extensions:"Extensiones",no_extensions:"No tienes extensiones instaladas :(",created:"Creado",payment_hash:"Hash de pago",fee:"Cuota",amount:"Cantidad",description:"Descripción",expiry:"Expiración",webhook:"Webhook",payment_proof:"Prueba de pago"},window.localisation.jp={server:"サーバー",theme:"テーマ",funding:"資金調達",users:"ユーザー",restart:"サーバーを再起動する",save:"保存",unit:"単位",save_tooltip:"変更を保存する",topup:"トップアップ",topup_wallet:"ウォレットをトップアップする",topup_hint:"ウォレットIDを使用して、任意のウォレットをトップアップできます",restart_tooltip:"サーバーを再起動して変更を適用します",add_funds_tooltip:"ウォレットに資金を追加します。",reset_defaults:"リセット",reset_defaults_tooltip:"すべての設定を削除してデフォルトに戻します。",download_backup:"データベースのバックアップをダウンロードする",name_your_wallet:"あなたのウォレットの名前 %{name}",paste_invoice_label:"請求書を貼り付けてください",lnbits_description:"簡単にインストールでき、軽量で、LNbitsは現在LND、c-lightning、OpenNode、LNPay、さらにLNbits自身で動作する任意のLightningネットワークの資金源で実行できます! LNbitsを自分で実行することも、他の人に優れたソリューションを提供することもできます。各ウォレットには独自のAPIキーがあり、作成できるウォレットの数に制限はありません。資金を分割する機能は、LNbitsを資金管理ツールとして使用したり、開発ツールとして使用したりするための便利なツールです。拡張機能は、LNbitsに追加の機能を追加します。そのため、LNbitsは最先端の技術をネットワークLightningで試すことができます。拡張機能を開発するのは簡単で、無料でオープンソースのプロジェクトであるため、人々が自分で開発し、自分の貢献を送信することを奨励しています。",export_to_phone:"電話にエクスポート",export_to_phone_desc:"ウォレットを電話にエクスポートすると、ウォレットを削除する前にウォレットを復元できます。ウォレットを削除すると、ウォレットの秘密鍵が削除され、ウォレットを復元することはできません。",wallets:"ウォレット",add_wallet:"ウォレットを追加",delete_wallet:"ウォレットを削除",delete_wallet_desc:"ウォレットを削除すると、ウォレットの秘密鍵が削除され、ウォレットを復元することはできません。",rename_wallet:"ウォレットの名前を変更",update_name:"名前を更新",press_to_claim:"クレームするには押してください",donate:"寄付",voidwallet_active:"Voidwalletアクティブ",use_with_caution:"注意して使用してください",toggle_dark_mode:"ダークモードを切り替える",view_swagger_docs:"Swaggerドキュメントを表示",api_docs:"APIドキュメント",commit_version:"コミットバージョン",runs_on:"で実行",credit_hint:"クレジットカードを使用して資金を追加するには、LNbitsを使用してください。",credit_label:"クレジットカード",paste_request:"リクエストを貼り付ける",create_invoice:"請求書を作成する",camera_tooltip:"QRコードを読み取る",export_csv:"CSVでエクスポート",transactions:"トランザクション",chart_tooltip:"チャートを表示するには、グラフの上にカーソルを合わせます",pending:"保留中",copy_invoice:"請求書をコピー",close:"閉じる",cancel:"キャンセル",scan:"スキャン",read:"読む",pay:"支払う",memo:"メモ",date:"日付",processing_payment:"支払い処理中",not_enough_funds:"資金が不足しています",search_by_tag_memo_amount:"タグ、メモ、金額で検索",invoice_waiting:"請求書を待っています",payment_received:"お支払いありがとうございます",payment_sent:"支払いが完了しました",outgoing_payment_pending:"支払い保留中",drain_funds:"資金を排出する",drain_funds_desc:"ウォレットの残高をすべて他のウォレットに送金します",i_understand:"理解した",copy_wallet_url:"ウォレットURLをコピー",disclaimer_dialog:"ウォレットを削除すると、ウォレットの秘密鍵が削除され、ウォレットを復元することはできません。ウォレットを削除する前に、ウォレットをエクスポートしてください。",no_transactions:"トランザクションはありません",manage_extensions:"拡張機能を管理する",manage_server:"サーバーを管理する",extensions:"拡張機能",no_extensions:"拡張機能はありません",created:"作成済み",payment_hash:"支払いハッシュ",fee:"料金",amount:"量",description:"説明",expiry:"有効期限",webhook:"ウェブフック",payment_proof:"支払い証明"},Vue.use(VueI18n),window.LOCALE="en",window.i18n=new VueI18n({locale:window.LOCALE,fallbackLocale:window.LOCALE,messages:window.localisation}),window.EventHub=new Vue,window.LNbits={api:{request:function(t,e,n,i){return axios({method:t,url:e,headers:{"X-Api-Key":n},data:i})},createInvoice:async function(t,e,n,i="sat",r=null){return this.request("post","/api/v1/payments",t.inkey,{out:!1,amount:e,memo:n,unit:i,lnurl_callback:r})},payInvoice:function(t,e){return this.request("post","/api/v1/payments",t.adminkey,{out:!0,bolt11:e})},payLnurl:function(t,e,n,i,r="",o=""){return this.request("post","/api/v1/payments/lnurl",t.adminkey,{callback:e,description_hash:n,amount:i,comment:o,description:r})},authLnurl:function(t,e){return this.request("post","/api/v1/lnurlauth",t.adminkey,{callback:e})},getWallet:function(t){return this.request("get","/api/v1/wallet",t.inkey)},getPayments:function(t,e){const n=new URLSearchParams(e);return this.request("get","/api/v1/payments/paginated?"+n,t.inkey)},getPayment:function(t,e){return this.request("get","/api/v1/payments/"+e,t.inkey)}},events:{onInvoicePaid:function(t,e){let n=t=>{e(JSON.parse(t.data))};return this.listenersCount=this.listenersCount||{[t.inkey]:0},this.listenersCount[t.inkey]++,this.listeners=this.listeners||{},t.inkey in this.listeners||(this.listeners[t.inkey]=new EventSource("/api/v1/payments/sse?api-key="+t.inkey)),this.listeners[t.inkey].addEventListener("payment-received",n),()=>{this.listeners[t.inkey].removeEventListener("payment-received",n),this.listenersCount[t.inkey]--,this.listenersCount[t.inkey]<=0&&(this.listeners[t.inkey].close(),delete this.listeners[t.inkey])}}},href:{createWallet:function(t,e){window.location.href="/wallet?"+(e?"usr="+e+"&":"")+"nme="+t},updateWallet:function(t,e,n){window.location.href=`/wallet?usr=${e}&wal=${n}&nme=${t}`},deleteWallet:function(t,e){window.location.href="/deletewallet?usr="+e+"&wal="+t}},map:{extension:function(t){var e=_.object(["code","isValid","isAdminOnly","name","shortDescription","tile","contributors","hidden"],t);return e.url=["/",e.code,"/"].join(""),e},user:function(t){var e={id:t.id,admin:t.admin,email:t.email,extensions:t.extensions,wallets:t.wallets,admin:t.admin},n=this.wallet;return e.wallets=e.wallets.map((function(t){return n(t)})).sort((function(t,e){return t.name.localeCompare(e.name)})),e.walletOptions=e.wallets.map((function(t){return{label:[t.name," - ",t.id].join(""),value:t.id}})),e},wallet:function(t){return newWallet={id:t.id,name:t.name,adminkey:t.adminkey,inkey:t.inkey},newWallet.msat=t.balance_msat,newWallet.sat=Math.round(t.balance_msat/1e3),newWallet.fsat=new Intl.NumberFormat(window.LOCALE).format(newWallet.sat),newWallet.url=["/wallet?usr=",t.user,"&wal=",t.id].join(""),newWallet},payment:function(t){return obj={checking_id:t.checking_id,pending:t.pending,amount:t.amount,fee:t.fee,memo:t.memo,time:t.time,bolt11:t.bolt11,preimage:t.preimage,payment_hash:t.payment_hash,expiry:t.expiry,extra:t.extra,wallet_id:t.wallet_id,webhook:t.webhook,webhook_status:t.webhook_status},obj.date=Quasar.utils.date.formatDate(new Date(1e3*obj.time),"YYYY-MM-DD HH:mm"),obj.dateFrom=moment(obj.date).fromNow(),obj.expirydate=Quasar.utils.date.formatDate(new Date(1e3*obj.expiry),"YYYY-MM-DD HH:mm"),obj.expirydateFrom=moment(obj.expirydate).fromNow(),obj.msat=obj.amount,obj.sat=obj.msat/1e3,obj.tag=obj.extra.tag,obj.fsat=new Intl.NumberFormat(window.LOCALE).format(obj.sat),obj.isIn=obj.amount>0,obj.isOut=obj.amount<0,obj.isPaid=!obj.pending,obj._q=[obj.memo,obj.sat].join(" ").toLowerCase(),obj}},utils:{confirmDialog:function(t){return Quasar.plugins.Dialog.create({message:t,ok:{flat:!0,color:"orange"},cancel:{flat:!0,color:"grey"}})},formatCurrency:function(t,e){return new Intl.NumberFormat(window.LOCALE,{style:"currency",currency:e}).format(t)},formatSat:function(t){return new Intl.NumberFormat(window.LOCALE).format(t)},notifyApiError:function(t){Quasar.plugins.Notify.create({timeout:5e3,type:{400:"warning",401:"warning",500:"negative"}[t.response.status]||"warning",message:t.response.data.message||t.response.data.detail||null,caption:[t.response.status," ",t.response.statusText].join("").toUpperCase()||null,icon:null})},search:function(t,e,n,i){try{var r=e.toLowerCase().split(i||" ");return t.filter((function(t){var e=0;return _.each(r,(function(i){-1!==t[n].indexOf(i)&&e++})),e===r.length}))}catch(e){return t}},exportCSV:function(t,e,n){var i=function(t,e){var n=void 0!==e?e(t):t;return`"${n=(n=null==n?"":String(n)).split('"').join('""')}"`},r=[t.map((function(t){return i(t.label)}))].concat(e.map((function(e){return t.map((function(t){return i("function"==typeof t.field?t.field(e):e[void 0===t.field?t.name:t.field],t.format)})).join(",")}))).join("\r\n");!0!==Quasar.utils.exportFile(`${n||"table-export"}.csv`,r,"text/csv")&&Quasar.plugins.Notify.create({message:"Browser denied file download...",color:"negative",icon:null})}}},window.windowMixin={i18n:window.i18n,data:function(){return{g:{offline:!navigator.onLine,visibleDrawer:!1,extensions:[],user:null,wallet:null,payments:[],allowedThemes:null}}},methods:{changeLanguage:function(t){window.i18n.locale=t,this.$q.localStorage.set("lnbits.lang",t)},changeColor:function(t){document.body.setAttribute("data-theme",t),this.$q.localStorage.set("lnbits.theme",t)},toggleDarkMode:function(){this.$q.dark.toggle(),this.$q.localStorage.set("lnbits.darkMode",this.$q.dark.isActive)},copyText:function(t,e,n){var i=this.$q.notify;Quasar.utils.copyToClipboard(t).then((function(){i({message:e||"Copied to clipboard!",position:n||"bottom"})}))}},created:function(){1==this.$q.localStorage.getItem("lnbits.darkMode")||0==this.$q.localStorage.getItem("lnbits.darkMode")?this.$q.dark.set(this.$q.localStorage.getItem("lnbits.darkMode")):this.$q.dark.set(!0),this.g.allowedThemes=window.allowedThemes??["bitcoin"];let t=this.$q.localStorage.getItem("lnbits.lang");if(t&&(window.LOCALE=t,window.i18n.locale=t),addEventListener("offline",(t=>{this.g.offline=!0})),addEventListener("online",(t=>{this.g.offline=!1})),this.$q.localStorage.getItem("lnbits.theme")||this.changeColor(this.g.allowedThemes[0]),this.$q.localStorage.getItem("lnbits.theme")&&!this.g.allowedThemes.includes(this.$q.localStorage.getItem("lnbits.theme"))&&this.changeColor(this.g.allowedThemes[0]),this.$q.localStorage.getItem("lnbits.theme")&&document.body.setAttribute("data-theme",this.$q.localStorage.getItem("lnbits.theme")),window.user&&(this.g.user=Object.freeze(window.LNbits.map.user(window.user))),window.wallet&&(this.g.wallet=Object.freeze(window.LNbits.map.wallet(window.wallet))),window.extensions){var e=this.g.user;const t=Object.freeze(window.extensions.map((function(t){return window.LNbits.map.extension(t)})).filter((function(t){return!t.hidden})).filter((function(t){return window.user.admin?t:!t.isAdminOnly})).map((function(t){return t.isEnabled=!!e&&-1!==e.extensions.indexOf(t.code),t})).sort((function(t,e){const n=t.name.toUpperCase(),i=e.name.toUpperCase();return ni?1:0})));this.g.extensions=t}}},window.decryptLnurlPayAES=function(t,e){let n=new Uint8Array(e.match(/[\da-f]{2}/gi).map((t=>parseInt(t,16))));return crypto.subtle.importKey("raw",n,{name:"AES-CBC",length:256},!1,["decrypt"]).then((e=>{let n=Uint8Array.from(window.atob(t.iv),(t=>t.charCodeAt(0))),i=Uint8Array.from(window.atob(t.ciphertext),(t=>t.charCodeAt(0)));return crypto.subtle.decrypt({name:"AES-CBC",iv:n},e,i)})).then((t=>new TextDecoder("utf-8").decode(t)))},Vue.component("lnbits-fsat",{props:{amount:{type:Number,default:0}},template:"{{ fsat }}",computed:{fsat:function(){return LNbits.utils.formatSat(this.amount)}}}),Vue.component("lnbits-wallet-list",{data:function(){return{user:null,activeWallet:null,activeBalance:[],showForm:!1,walletName:"",LNBITS_DENOMINATION:LNBITS_DENOMINATION}},template:'\n \n \n \n \n \n \n \n \n \n {{ wallet.name }}\n {{ parseFloat(String(wallet.live_fsat).replaceAll(",", "")) / 100 }} {{ LNBITS_DENOMINATION }}\n {{ wallet.live_fsat }} {{ LNBITS_DENOMINATION }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ',computed:{wallets:function(){var t=this.activeBalance;return this.user.wallets.map((function(e){return e.live_fsat=t.length&&t[0]===e.id?LNbits.utils.formatSat(t[1]):e.fsat,e}))}},methods:{createWallet:function(){LNbits.href.createWallet(this.walletName,this.user.id)},updateWalletBalance:function(t){this.activeBalance=t}},created:function(){window.user&&(this.user=LNbits.map.user(window.user)),window.wallet&&(this.activeWallet=LNbits.map.wallet(window.wallet)),EventHub.$on("update-wallet-balance",this.updateWalletBalance)}}),Vue.component("lnbits-extension-list",{data:function(){return{extensions:[],user:null}},template:'\n \n \n \n \n \n \n \n \n \n {{ extension.name }} \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ',computed:{userExtensions:function(){if(!this.user)return[];var t=window.location.pathname,e=this.user.extensions;return this.extensions.filter((function(t){return-1!==e.indexOf(t.code)})).map((function(e){return e.isActive=t.startsWith(e.url),e}))}},created:function(){window.extensions&&(this.extensions=window.extensions.map((function(t){return LNbits.map.extension(t)})).sort((function(t,e){return t.name.localeCompare(e.name)}))),window.user&&(this.user=LNbits.map.user(window.user))}}),Vue.component("lnbits-admin-ui",{data:function(){return{extensions:[],user:null}},template:'\n \n Admin\n \n \n \n \n \n \n \n \n \n ',created:function(){window.user&&(this.user=LNbits.map.user(window.user))}}),Vue.component("lnbits-payment-details",{props:["payment"],mixins:[windowMixin],data:function(){return{LNBITS_DENOMINATION:LNBITS_DENOMINATION}},template:'\n
\n
\n \n #{{ payment.tag }}\n \n
\n
\n
:
\n
{{ payment.date }} ({{ payment.dateFrom }})
\n
\n
\n
:
\n
{{ payment.expirydate }} ({{ payment.expirydateFrom }})
\n
\n
\n
:
\n
{{ payment.memo }}
\n
\n
\n
:
\n
{{ (payment.amount / 1000).toFixed(3) }} {{LNBITS_DENOMINATION}}
\n
\n
\n
:
\n
{{ (payment.fee / 1000).toFixed(3) }} {{LNBITS_DENOMINATION}}
\n
\n
\n
:
\n
\n {{ payment.payment_hash }}\n \n
\n
\n
\n
:
\n
\n {{ payment.webhook }}\n \n {{ webhookStatusText }}\n \n
\n
\n
\n
:
\n
{{ payment.preimage }}
\n
\n
\n
\n \n extra\n \n {{ entry.key }}:\n
\n
{{ entry.value }}
\n
\n
\n
Success action:
\n
\n \n
\n
\n
\n ',computed:{hasPreimage(){return this.payment.preimage&&"0000000000000000000000000000000000000000000000000000000000000000"!==this.payment.preimage},hasSuccessAction(){return this.hasPreimage&&this.payment.extra&&this.payment.extra.success_action},webhookStatusColor(){return this.payment.webhook_status>=300||this.payment.webhook_status<0?"red-10":this.payment.webhook_status?"green-10":"cyan-7"},webhookStatusText(){return this.payment.webhook_status?this.payment.webhook_status:"not sent yet"},hasTag(){return this.payment.extra&&!!this.payment.extra.tag},extras(){if(!this.payment.extra)return[];let t=_.omit(this.payment.extra,["tag","success_action"]);return Object.keys(t).map((e=>({key:e,value:t[e]})))}}}),Vue.component("lnbits-lnurlpay-success-action",{props:["payment","success_action"],data(){return{decryptedValue:this.success_action.ciphertext}},template:'\n
\n

{{ success_action.message || success_action.description }}

\n \n {{ decryptedValue }}\n \n

\n {{ success_action.url }}\n

\n
\n ',mounted:function(){if("aes"!==this.success_action.tag)return null;decryptLnurlPayAES(this.success_action,this.payment.preimage).then((t=>{this.decryptedValue=t}))}});const bech32CharValues="qpzry9x8gf2tvdw0s3jn54khce6mua7l";function byteArrayToInt(t){let e=0;for(let n=0;n{i=(i<<5)+t,n+=5,n>=8&&(r.push(i>>n-8&255),n-=8)})),e&&n>0&&r.push(i<<8-n&255),r}function bech32ToUTF8String(t){let e=fiveBitArrayTo8BitArray(bech32ToFiveBitArray(t)),n="";for(let t=0;t20&&(e-=20,t/=Math.pow(10,e),t+=new Array(e+1).join("0"));return t} diff --git a/lnbits/static/i18n/de.js b/lnbits/static/i18n/de.js index c1ab5aee2..5e66630cc 100644 --- a/lnbits/static/i18n/de.js +++ b/lnbits/static/i18n/de.js @@ -9,46 +9,45 @@ window.localisation.de = { save_tooltip: 'Änderungen speichern', topup: 'Aufladen', topup_wallet: 'Wallet aufladen', - topup_hint: 'Nutze die Wallet-ID um eine beliebige Wallet aufzuladen', - restart_tooltip: 'Starte den Server neu um die Änderungen zu übernehmen', + topup_hint: 'Nutze die Wallet-ID, um eine beliebige Wallet aufzuladen', + restart_tooltip: 'Starte den Server neu, um die Änderungen zu übernehmen', add_funds_tooltip: 'Füge Geld zu einer Wallet hinzu.', reset_defaults: 'Zurücksetzen', reset_defaults_tooltip: - 'Lösche alle Einstellungen und setze auf die Standardeinstellungen zurück.', + 'Alle Einstellungen zurücksetzen auf die Standardeinstellungen.', download_backup: 'Datenbank-Backup herunterladen', - name_your_wallet: 'Benenne deine %{name} Wallet', + name_your_wallet: 'Vergib deiner %{name} Wallet einen Namen', paste_invoice_label: 'Füge eine Rechnung, Zahlungsanforderung oder lnurl ein *', lnbits_description: - 'Einfach zu installieren und leichtgewichtig, LNbits kann auf jeder Lightning-Netzwerk-Funding-Quelle laufen, derzeit unterstützt LND, c-lightning, OpenNode, LNPay und sogar LNbits selbst! Du kannst LNbits für dich selbst laufen lassen oder anderen eine kundige Lösung anbieten. Jede Wallet hat ihre eigenen API-Schlüssel und es gibt keine Begrenzung für die Anzahl der Wallets, die du erstellen kannst. Die Möglichkeit, Gelder zu partitionieren, macht LNbits zu einem nützlichen Werkzeug für die Geldverwaltung und als Entwicklungswerkzeug. Erweiterungen fügen der LNbits zusätzliche Funktionalität hinzu, so dass du mit einer Reihe von vorderen Technologien auf dem Lightning-Netzwerk experimentieren kannst. Wir haben es so einfach wie möglich gemacht, Erweiterungen zu entwickeln, und als freies und Open-Source-Projekt ermutigen wir Menschen, sich selbst zu entwickeln und ihre eigenen Beiträge einzureichen.', - export_to_phone: 'Exportieren Sie auf das Telefon mit QR-Code', + 'Einfach zu installieren und kompakt, LNbits kann auf jeder Funding-Quelle im Lightning Netzwerk aufsetzen. Derzeit unterstützt: LND, c-lightning, OpenNode, LNPay und sogar LNbits selbst! Du kannst LNbits für dich selbst betreiben oder anderen die Verwaltung durch dich anbieten. Jede Wallet hat ihre eigenen API-Schlüssel und die Anzahl der Wallets ist unbegrenzt. Die Möglichkeit, Gelder auf verschiedene Accounts mit unterschiedlicher Logik aufteilen zu können macht LNbits zu einem nützlichen Werkzeug für deine Buchhaltung - aber auch als Entwicklungswerkzeug. Erweiterungen bereichern LNbits Accounts um zusätzliche Funktionalität, so dass du mit einer Reihe von neuartigen Technologien auf dem Lightning-Netzwerk experimentieren kannst. Wir haben es so einfach wie möglich gemacht, Erweiterungen zu entwickeln, und als freies und Open-Source-Projekt möchten wir Menschen ermutigen, sich selbst hieran zu versuchen und gemeinsam mit uns neue Funktionalitäten zu entwickeln.', + export_to_phone: 'Auf dem Telefon öffnen', export_to_phone_desc: - 'Dieser QR-Code enthält Ihre Wallet-URL mit vollständigem Zugriff. Sie können es von Ihrem Telefon aus scannen, um Ihre Wallet dort zu öffnen.', + 'Dieser QR-Code beinhaltet vollständige Rechte auf deine Wallet. Du kannste den QR-Code mit Deinem Telefon scannen, um deine Wallet dort zu öffnen.', wallets: 'Wallets', - add_wallet: 'Füge eine neue Wallet hinzu', + add_wallet: 'Wallet hinzufügen', delete_wallet: 'Wallet löschen', delete_wallet_desc: - 'Diese ganze Wallet wird gelöscht, die Mittel sind UNWIEDERBRINGLICH.', + 'Die Wallet wird gelöscht, die hierin beinhalteten Daten hierin oder innerhalb einer Erweiterung sind UNWIEDERBRINGLICH.', rename_wallet: 'Wallet umbenennen', - update_name: 'Name aktualisieren', - press_to_claim: 'Drücken Sie, um Bitcoin zu beanspruchen', + update_name: 'Namen aktualisieren', + press_to_claim: 'Klicken, um Bitcoin einzufordern.', donate: 'Spenden', view_github: 'Auf GitHub anzeigen', voidwallet_active: 'VoidWallet ist aktiv! Zahlungen deaktiviert', - use_with_caution: - 'VERWENDEN SIE MIT VORSICHT - %{name} Wallet ist noch in der BETA', - toggle_darkmode: 'Dark Mode umschalten', - view_swagger_docs: 'LNbits Swagger API-Dokumente anzeigen', - api_docs: 'Api docs', - commit_version: 'Commit version', + use_with_caution: 'BITTE MIT VORSICHT BENUTZEN- %{name} Wallet ist noch BETA', + toggle_darkmode: 'Auf Dark Mode umschalten', + view_swagger_docs: 'LNbits Swagger API-Dokumente', + api_docs: 'API docs', + commit_version: 'Commit Version', runs_on: 'Läuft auf', - credit_hint: 'Drücken Sie Enter, um das Konto zu belasten', + credit_hint: 'Klicke Enter, um das Konto zu belasten', credit_label: '%{denomination} zu belasten', paste_request: 'Anfrage einfügen', create_invoice: 'Rechnung erstellen', camera_tooltip: - 'Verwenden Sie die Kamera, um eine Rechnung / QR-Code zu scannen', - export_csv: 'Exportieren Sie nach CSV', + 'Verwenden Sie die Kamera, um eine Rechnung oder einen QR-Code zu scannen', + export_csv: 'Exportieren als CSV', transactions: 'Transaktionen', chart_tooltip: 'Diagramm anzeigen', pending: 'Ausstehend', @@ -60,25 +59,25 @@ window.localisation.de = { pay: 'Zahlen', memo: 'Memo', date: 'Datum', - processing_payment: 'Zahlung wird bearbeitet ...', - not_enough_funds: 'Nicht genug Geld!', + processing_payment: 'Zahlung wird verarbeitet ...', + not_enough_funds: 'Geldmittel sind erschöpft!', search_by_tag_memo_amount: 'Suche nach Tag, Memo, Betrag', - invoice_waiting: 'Rechnung wartet auf Zahlung', + invoice_waiting: 'Rechnung wartend auf Zahlung', payment_received: 'Zahlung erhalten', payment_sent: 'Zahlung gesendet', - outgoing_payment_pending: 'Ausgehende Zahlung ausstehend', - drain_funds: 'Leeren Sie die Mittel', + outgoing_payment_pending: 'Ausgehende Zahlung wartend', + drain_funds: 'Sats abziehen', drain_funds_desc: - 'Dies ist ein LNURL-withdraw QR-Code zum Absaugen aller Mittel aus dieser Brieftasche. Teilen Sie es nicht mit jemandem. Es ist mit balanceCheck und balanceNotify kompatibel, so dass Ihre Brieftasche die Mittel nach dem ersten Abzug kontinuierlich von hier ziehen kann.', + 'LNURL-withdraw QR-Code, der das Abziehen aller Geldmittel aus dieser Wallet erlaubt. Teile ihn mit niemandem! Kompatibel mit balanceCheck und balanceNotify, so dass deine Brieftasche die Sats nach dem ersten Abzug kontinuierlich von hier abziehen kann.', i_understand: 'Ich verstehe', copy_wallet_url: 'Wallet-URL kopieren', disclaimer_dialog: - 'Login-Funktionalität wird in einem zukünftigen Update veröffentlicht, für jetzt, stellen Sie sicher, dass Sie diese Seite als Lesezeichen speichern, um zukünftigen Zugriff auf Ihre Wallet zu erhalten! Dieser Service ist in BETA und wir übernehmen keine Verantwortung für Personen, die den Zugriff auf ihre Mittel verlieren.', - no_transactions: 'Noch keine Transaktionen', + 'Login-Funktionalität wird in einem zukünftigen Update veröffentlicht. Bis dahin ist die Speicherung der Wallet-URL als Lesezeichen absolut notwendig, um Zugriff auf die Wallet zu erhalten! Dieser Service ist in BETA und wir übernehmen keine Verantwortung für Verluste durch verlorene Zugriffe.', + no_transactions: 'Keine Transaktionen', manage_extensions: 'Erweiterungen verwalten', manage_server: 'Server verwalten', extensions: 'Erweiterungen', - no_extensions: 'Sie haben keine Erweiterungen installiert :(', + no_extensions: 'Du hast noch keine Erweiterungen installiert :(', created: 'Erstellt', payment_hash: 'Zahlungs-Hash', fee: 'Gebühr', @@ -86,5 +85,5 @@ window.localisation.de = { description: 'Beschreibung', expiry: 'Ablauf', webhook: 'Webhook', - payment_proof: 'Zahlungsbeleg' + payment_proof: 'Beleg' } diff --git a/lnbits/static/i18n/nl.js b/lnbits/static/i18n/nl.js new file mode 100644 index 000000000..3ddeb70e1 --- /dev/null +++ b/lnbits/static/i18n/nl.js @@ -0,0 +1,90 @@ +window.localisation.nl = { + server: 'Server', + theme: 'Thema', + funding: 'Financiering', + users: 'Gebruikers', + restart: 'Server opnieuw opstarten', + save: 'Opslaan', + save_tooltip: 'Sla uw wijzigingen op', + topup: 'Bijvullen', + topup_wallet: 'Een portemonnee bijvullen', + topup_hint: 'Gebruik de portemonnee-ID om elke portemonnee bij te vullen', + restart_tooltip: + 'Start de server opnieuw op zodat wijzigingen van kracht worden', + add_funds_tooltip: 'Voeg geld toe aan een portemonnee.', + reset_defaults: 'Standaardinstellingen herstellen', + reset_defaults_tooltip: + 'Wis alle instellingen en herstel de standaardinstellingen.', + download_backup: 'Databaseback-up downloaden', + name_your_wallet: 'Geef je %{name} portemonnee een naam', + paste_invoice_label: 'Plak een factuur, betalingsverzoek of lnurl-code*', + lnbits_description: + 'Gemakkelijk in te stellen en lichtgewicht, LNbits kan op elke lightning-netwerkfinancieringsbron draaien, ondersteunt op dit moment LND, c-lightning, OpenNode, LNPay en zelfs LNbits zelf! U kunt LNbits voor uzelf laten draaien of gemakkelijk een bewaardersoplossing voor anderen bieden. Elke portemonnee heeft zijn eigen API-sleutels en er is geen limiet aan het aantal portemonnees dat u kunt maken. Het kunnen partitioneren van fondsen maakt LNbits een nuttige tool voor geldbeheer en als ontwikkelingstool. Extensies voegen extra functionaliteit toe aan LNbits, zodat u kunt experimenteren met een reeks toonaangevende technologieën op het bliksemschichtnetwerk. We hebben het ontwikkelen van extensies zo eenvoudig mogelijk gemaakt en als een gratis en opensource-project moedigen we mensen aan om hun eigen ontwikkelingen in te dienen.', + export_to_phone: 'Exporteren naar telefoon met QR-code', + export_to_phone_desc: + 'Deze QR-code bevat uw portemonnee-URL met volledige toegang. U kunt het vanaf uw telefoon scannen om uw portemonnee van daaruit te openen.', + wallets: 'Portemonnees', + add_wallet: 'Een nieuwe portemonnee toevoegen', + delete_wallet: 'Portemonnee verwijderen', + delete_wallet_desc: + 'Deze hele portemonnee wordt verwijderd, de fondsen worden NIET TERUGGEVONDEN.', + rename_wallet: 'Portemonnee hernoemen', + update_name: 'Naam bijwerken', + press_to_claim: 'Druk om bitcoin te claimen', + donate: 'Doneren', + view_github: 'Bekijken op GitHub', + voidwallet_active: 'VoidWallet is actief! Betalingen uitgeschakeld', + use_with_caution: + 'GEBRUIK MET VOORZICHTIGHEID - %{name} portemonnee is nog in BETA', + toggle_darkmode: 'Donkere modus aan/uit', + view_swagger_docs: 'Bekijk LNbits Swagger API-documentatie', + api_docs: 'API-documentatie', + commit_version: 'Commit-versie', + lnbits_version: 'LNbits-versie', + runs_on: 'Draait op', + credit_hint: 'Druk op Enter om de rekening te crediteren', + credit_label: '%{denomination} te crediteren', + paste_request: 'Verzoek plakken', + create_invoice: 'Factuur aanmaken', + camera_tooltip: 'Gebruik de camera om een factuur/QR-code te scannen', + export_csv: 'Exporteer naar CSV', + transactions: 'Transacties', + chart_tooltip: 'Toon grafiek', + pending: 'In behandeling', + copy_invoice: 'Kopieer factuur', + close: 'Sluiten', + cancel: 'Annuleren', + scan: 'Scannen', + read: 'Lezen', + pay: 'Betalen', + memo: 'Memo', + date: 'Datum', + processing_payment: 'Verwerking betaling...', + not_enough_funds: 'Onvoldoende saldo!', + search_by_tag_memo_amount: 'Zoeken op tag, memo, bedrag', + invoice_waiting: 'Factuur wachtend op betaling', + payment_received: 'Betaling ontvangen', + payment_sent: 'Betaling verzonden', + voutgoing_payment_pending: 'Uitgaande betaling in behandeling', + drain_funds: 'Geld opnemen', + drain_funds_desc: + 'Dit is een LNURL-withdraw QR-code om alles uit deze portemonnee te halen. Deel deze code niet met anderen. Het is compatibel met balanceCheck en balanceNotify zodat jouw portemonnee continu geld kan blijven opnemen vanaf hier na de eerste opname.', + i_understand: 'Ik begrijp het', + copy_wallet_url: 'Kopieer portemonnee-URL', + disclaimer_dialog: + 'Inlogfunctionaliteit wordt uitgebracht in een toekomstige update. Zorg er nu voor dat je deze pagina als favoriet markeert om in de toekomst toegang te krijgen tot je portemonnee! Deze service is in BETA en we zijn niet verantwoordelijk voor mensen die de toegang tot hun fondsen verliezen.', + no_transactions: 'Er zijn nog geen transacties gedaan', + manage_extensions: 'Beheer extensies', + manage_server: 'Beheer server', + extensions: 'Extensies', + no_extensions: 'Je hebt geen extensies geïnstalleerd :(', + created: 'Aangemaakt', + payment_hash: 'Betalings-hash', + fee: 'Kosten', + amount: 'Bedrag', + unit: 'Eenheid', + description: 'Beschrijving', + expiry: 'Vervaldatum', + webhook: 'Webhook', + payment_proof: 'Betalingsbewijs' +} diff --git a/lnbits/static/i18n/pi.js b/lnbits/static/i18n/pi.js new file mode 100644 index 000000000..97a66d501 --- /dev/null +++ b/lnbits/static/i18n/pi.js @@ -0,0 +1,91 @@ +window.localisation.pi = { + server: 'Cap`n', + theme: 'Theme', + funding: 'Funding', + users: 'Buccaneers', + restart: 'Arr, restart Cap`n', + save: 'Bury Treasure', + save_tooltip: 'Bury yer changes, matey', + topup: 'Top up the Chest', + topup_wallet: 'Add more doubloons to the chest', + topup_hint: 'Use the chest ID to top up any chest', + restart_tooltip: 'Restart the Cap`n for changes to take effect, arr!', + add_funds_tooltip: 'Add doubloons to a chest and make it heavier', + reset_defaults: 'Reset to Davy Jones Locker', + reset_defaults_tooltip: + 'Scuttle all settings and reset to Davy Jones Locker. Aye, start anew!', + download_backup: 'Download database booty', + name_your_wallet: 'Name yer %{name} treasure chest', + paste_invoice_label: 'Paste a booty, payment request or lnurl code, matey!', + lnbits_description: + 'Arr, easy to set up and lightweight, LNbits can run on any lightning-network funding source, currently supporting LND, c-lightning, OpenNode, LNPay and even LNbits itself! Ye can run LNbits for yourself, or easily offer a custodian solution for others. Each chest has its own API keys and there be no limit to the number of chests ye can make. Being able to partition booty makes LNbits a useful tool for money management and as a development tool. Arr, extensions add extra functionality to LNbits so ye can experiment with a range of cutting-edge technologies on the lightning network. We have made developing extensions as easy as possible, and as a free and open-source project, we encourage scallywags to develop and submit their own.', + export_to_phone: 'Export to Phone with QR Code, me hearties', + export_to_phone_desc: + 'This QR code contains yer chest URL with full access. Ye can scan it from yer phone to open yer chest from there, arr!', + wallets: 'Treasure Chests', + add_wallet: 'Add a new chest and fill it with doubloons!', + delete_wallet: 'Scuttle the Chest', + delete_wallet_desc: + 'This whole chest will be scuttled, the booty will be UNRECOVERABLE. Aye, be warned!', + rename_wallet: 'Rename the Chest, me hearty', + update_name: 'Update name like a captain', + press_to_claim: 'Press to claim gold doubloons, matey!', + donate: 'Donate like a true pirate!', + view_github: 'View on GitHub and find treasures', + voidwallet_active: 'VoidWallet be active! Payments disabled', + use_with_caution: + 'USE WITH CAUTION - %{name} chest be still in BETA. Aye, be careful!', + toggle_darkmode: 'Toggle Dark Mode, arr!', + view_swagger_docs: 'View LNbits Swagger API docs and learn the secrets', + api_docs: 'API docs for the scallywags', + commit_version: 'Commit version like a true pirate', + lnbits_version: 'LNbits version, arr!', + runs_on: 'Runs on, matey', + credit_hint: 'Press Enter to credit account and make it richer', + credit_label: '%{denomination} to credit, arr!', + paste_request: 'Paste Request and find treasures', + create_invoice: 'Create Booty Request and get rich, me hearties!', + camera_tooltip: 'Use spyglass to scan a booty/QR, arr!', + export_csv: 'Export to CSV and keep track of the booty', + transactions: 'Pirate Transactions and loot', + chart_tooltip: 'Show ye chart, me hearty', + pending: 'Pendin like a ship at anchor', + copy_invoice: 'Copy booty request, arrr', + close: 'Batten down the hatches, we be closin', + cancel: 'Abandon ship! We be retreatin', + scan: 'Avast! Scan me beauty, arrr', + read: 'Read it, if ye dare', + pay: 'Pay up or walk the plank, ye scallywag', + memo: 'Message in a bottle, argh', + date: 'Date of the map, me matey', + processing_payment: 'Processing yer payment... don´t make me say it again', + not_enough_funds: 'Arrr, ye don´t have enough doubloons! Walk the plank!', + search_by_tag_memo_amount: 'Search by tag, message, or booty amount, savvy', + invoice_waiting: 'Invoice waiting to be plundered, arrr', + payment_received: 'Payment Received like a treasure, argh', + payment_sent: 'Payment Sent, hoist the colors! We´ve got some doubloons!', + outgoing_payment_pending: + 'Outgoing payment pending in the port, ye scurvy dog', + drain_funds: 'Plunder all the doubloons, ye buccaneer', + drain_funds_desc: + 'This be an LNURL-withdraw QR code for slurpin everything from this wallet. Don`t share with anyone. It be compatible with balanceCheck and balanceNotify so yer wallet may keep pullin` the funds continuously from here after the first withdraw.', + i_understand: 'I understand, yo ho ho and a bottle of rum!', + copy_wallet_url: 'Copy wallet URL like a map, savvy', + disclaimer_dialog: + 'Login functionality to be released in a future update, for now, make sure ye bookmark this page for future access to your booty! This service be in BETA, and we hold no responsibility for people losing access to doubloons.', + no_transactions: 'No transactions made yet, me hearties. Belay that!', + manage_extensions: 'Manage Yer Extensions, ye landlubber', + manage_server: 'Manage Yer Server, me hearty', + extensions: 'Yer Extensions, ye scurvy dog', + no_extensions: + "Ye don't have any extensions installed, ye scallywag :(. Where be yer loot?", + created: 'Created like a legend, savvy', + payment_hash: 'Payment Hash like a treasure map, arrr', + fee: 'Fee like a toll to cross a strait, matey', + amount: 'Amount of doubloons, arrr', + unit: 'Unit of measurement like a fathom, ye buccaneer', + description: 'Description like a tale of adventure, arrr', + expiry: 'Expiry like the food on a ship, ye landlubber', + webhook: 'Webhook like a fishing line, arrr', + payment_proof: 'Payment Proof like a seal of authenticity, argh' +} diff --git a/lnbits/templates/base.html b/lnbits/templates/base.html index 3429cece7..635439426 100644 --- a/lnbits/templates/base.html +++ b/lnbits/templates/base.html @@ -95,6 +95,16 @@ FR + + + PI + + + + + NL + +