astrXbian/www/FULLJS/gchange-web/dist_js/gchange.js

14 lines
1.2 MiB
JavaScript
Raw Normal View History

2021-05-21 01:25:57 +02:00
/* minified */
function e(e,n){"use strict";var t=this;n&&n.length?_.forEach(n,(function(n){t[n]=e[n]})):["currency","issuer","medianTime","number","version","powMin","dividend","membersCount","hash","identities","joiners","actives","leavers","revoked","excluded","certifications","transactions"].forEach((function(n){t[n]=e[n]})),t.identitiesCount=t.identities?t.identities.length:0,t.joinersCount=t.joiners?t.joiners.length:0,t.activesCount=t.actives?t.actives.length:0,t.leaversCount=t.leavers?t.leavers.length:0,t.revokedCount=t.revoked?t.revoked.length:0,t.excludedCount=t.excluded?t.excluded.length:0,t.certificationsCount=t.certifications?t.certifications.length:0,t.transactionsCount=t.transactions?t.transactions.length:0,t.empty=t.isEmpty()}function n(e,n){e.extensionPoint=n.extensions.points.current.get()}function t(e,n,t,a,i,o,s,r,l,c,d,u,p,m,E,g,f,h){e.walletData=p.data,e.search={},e.login=p.isLogin(),e.motion=d.motion.default,e.fullscreen=d.screen.fullscreen.isEnabled(),e.showHome=function(){return s.nextViewOptions({historyRoot:!0}),t.go("app.home").then(d.loading.hide)},e.createHelptipScope=function(t,a){if(t||!n.tour&&n.settings.helptip.enable&&!d.screen.isSmall()){a=a||"HelpTipCtrl";var i=e.$new();return r(a,{$scope:i}),i}},e.startHelpTour=function(t,a){if(t&&t.defaultPrevented)return!1;if(n.tour=!0,!a)return s.clearHistory(),s.clearCache().then((function(){e.startHelpTour(null,!0)}));var i=e.createHelptipScope(!0);return i.startHelpTour().then((function(){i.$destroy(),delete n.tour})).catch((function(e){delete n.tour}))},e.disableHelpTour=function(e){e&&(e.preventDefault(),e.stopPropagation()),g.data.helptip&&g.data.helptip.enable&&(n.settings.helptip.enable=!1,g.store())},e.isLogin=function(){return e.login},e.loadWalletData=function(e){return e=e||{},p.loadData(e).then((function(e){if(!e)throw"CANCELLED";return e}))},e.loadWallet=function(n){return c.isStarted()?(n=n||{},p.isLogin()?p.data.loaded?i.when(p.data):p.loadData(n):e.showLoginModal(n).then((function(e){if(e)return n&&n.minData&&(n.minData=!1),p.loadData(n)})).then((function(e){if(e)return e;throw"CANCELLED"}))):c.ready().then((function(){return e.loadWallet(n)}))},e.loginAndGo=function(n,a){if(e.closeProfilePopover(),n=n||"app.view_wallet",p.isLogin())return t.go(n,a);if(f.httpsMode&&l.location&&"https:"!==l.location.protocol){var i=l.location.href,o=i.indexOf("#"),s=-1!==o?i.substr(0,o):i;if(i=(s="https"+s.substr(4))+t.href(n),!f.httpsModeDebug)return void(l.location.href=i);console.debug("[httpsMode] --- Should redirect to: "+i)}return e.showLoginModal().then((function(e){if(e)return t.go(n,a).then(d.loading.hide)}))},e.showLoginModal=function(t){return(t=t||{}).templateUrl=t.templateUrl||f.login&&f.login.templateUrl,t.controller=t.controller||f.login&&f.login.controller,E.showLogin(t).then((function(e){if(e)return g.data.rememberMe!==e.rememberMe&&(g.data.rememberMe=e.rememberMe,g.data.useLocalStorage=!!g.data.rememberMe||g.data.useLocalStorage,g.store()),p.login(e.username,e.password)})).then((function(e){return e&&(n.walletData=e),e})).catch((function(n){if("RETRY"===n)return d.loading.hide(),e.showLoginModal(t);d.onError("ERROR.CRYPTO_UNKNOWN_ERROR")(n)}))},e.logout=function(n){return!(n=n||{}).force&&e.profilePopover?e.profilePopover.hide().then((function(){return n.force=!0,e.logout(n)})):n.askConfirm?d.alert.confirm("CONFIRM.LOGOUT").then((function(t){if(t)return n.askConfirm=!1,e.logout(n)})):(d.loading.show(),p.logout().then((function(){return a.isOpenLeft()&&a.toggleLeft(),s.clearHistory(),s.clearCache().then((function(){return e.showHome()}))})).catch(d.onError()))},e.isUserPubkey=function(e){return p.isUserPubkey(e)},p.api.data.on.login(e,(function(n,t){return e.login=!0,t?t.resolve():i.when()})),p.api.data.on.logout(e,(function(){e.login=!1})),e.showTransferModal=function(e){},e.showAboutModal=function(){return E.showAbout()},e.showJoinModal=function(){return e.closeProfilePopover(),E.showJoin()},e.showSettings=function(){return e.closeProfilePopover(),t.go("app.settings")},e.showHelpModal=function(e){return E.showHelp(e)},e.showProfilePopover=funct
n.size<10&&(n.size=10),e.search.loading=0===n.from,g.record.search(n).then((function(i){if(!t||t()){if(!i||!i.hits||!i.hits.length)return e.search.results=n.from>0?e.search.results:[],e.search.total=n.from>0?e.search.total:0,e.search.loading=!1,void(e.search.hasMore=!1);var o=a("formatSlug");_.forEach(i.hits,(function(e){e.urlTitle=o(e.title)})),n.from?e.search.results=e.search.results.concat(i.hits):(e.search.results=i.hits,e.search.total=i.total),e.search.hasMore=e.search.results.length<i.total,e.search.loading=!1,e.motion.show({selector:".list .item",ink:!0})}})).catch((function(t){e.search.loading=!1,e.search.results=n.from>0?e.search.results:[],e.search.total=n.from>0?e.search.total:0,e.search.hasMore=!1,c.onError("REGISTRY.ERROR.LOOKUP_RECORDS_FAILED")(t)}))},e.showMore=function(){var n=e.search.results?e.search.results.length:0;return e.search.loadingMore=!0,(e.search.lastRecords?e.doGetLastRecords:e.doSearch)(n).then((function(){e.search.loadingMore=!1,e.$broadcast("scroll.infiniteScrollComplete")})).catch((function(n){console.error(n),e.search.loadingMore=!1,e.search.hasMore=!1,e.$broadcast("scroll.infiniteScrollComplete")}))},e.removeText=function(){e.search.text=null,e.doSearch(),e.updateLocationHref()},e.removeType=function(){e.search.type=null,e.doSearch(),e.updateLocationHref()},e.removeCategory=function(){e.search.category=null,e.category=null,e.doSearch(),e.updateLocationHref()},e.removeLocation=function(){e.search.location=null,e.search.geoPoint=null,e.doSearch(),e.updateLocationHref()},e.updateLocationHref=function(n){n||t((function(){var n=e.search.text&&e.search.text.trim(),t=e.search.location&&e.search.location.trim(),a={location:t&&t.length?t:void 0,category:e.search.category?e.search.category.id:void 0,last:!!e.search.lastRecords||void 0,type:e.search.type?e.search.type:void 0,lat:e.search.geoPoint&&e.search.geoPoint.lat||void 0,lon:e.search.geoPoint&&e.search.geoPoint.lon||void 0,d:e.search.geoPoint&&e.search.geoDistance||void 0};n&&n.match(/^#\w+$/)?a.hash=n.substr(1):n&&n.length&&(a.q=n),o.search(a).replace()}))},e.onToggleAdvanced=function(){e.search.entered&&!e.search.lastRecords&&(e.doSearch(),e.updateLocationHref())},e.$watch("search.advanced",e.onToggleAdvanced,!0),e.toggleAdvanced=function(){e.search.advanced=!e.search.advanced,t(e.hidePopovers,200)},e.toggleCompactMode=function(){e.search.compactMode=!e.search.compactMode,e.options.description.show=!e.search.compactMode,e.updateSettings()},e.showRecordTypeModal=function(n){e.hidePopovers(),t((function(){n.isDefaultPrevented()||d.show("plugins/es/templates/registry/modal_record_type.html").then((function(n){n&&(e.search.type=n,e.doSearch(),e.updateLocationHref())}))}),350)},e.showCategoryModal=function(n){t((function(){n.isDefaultPrevented()||g.category.all().then((function(e){return d.show("plugins/es/templates/common/modal_category.html","ESCategoryModalCtrl as ctrl",{categories:e},{focusFirstInput:!0})})).then((function(n){n&&n.parent&&(e.search.category=n,e.doSearch(),e.updateLocationHref())}))}),350)},e.showNewPageModal=function(){return e.hidePopovers(),e.loadWallet().then((function(e){if(c.loading.hide(),e)return E.showNewPage()}))},e.showActionsPopover=function(n){e.actionsPopover?e.actionsPopover.show(n):r.fromTemplateUrl("plugins/es/templates/registry/lookup_popover_actions.html",{scope:e}).then((function(t){e.actionsPopover=t,e.$on("$destroy",(function(){e.actionsPopover.remove()})),e.actionsPopover.show(n)}))},e.hideActionsPopover=function(){e.actionsPopover&&e.actionsPopover.hide()},e.showFiltersPopover=function(n){e.filtersPopover?e.filtersPopover.show(n):r.fromTemplateUrl("plugins/es/templates/registry/lookup_popover_filters.html",{scope:e}).then((function(t){e.filtersPopover=t,e.$on("$destroy",(function(){e.filtersPopover.remove()})),e.filtersPopover.show(n)}))},e.hideFiltersPopover=function(){e.filtersPopover&&e.filtersPopover.hide()},e.hidePopovers=function(){e.hideActionsPopover(),e.hideFiltersPopover()}}function oe(e,n,t,a,i){angular.extend(this,n("ESRegistryLookupCtrl",{$scope:e})),e.searchTextId=void 0,e.enter=functi
return e.deferred.resolve(n),n}))},e.setForm=function(n,t){t?e[t]=n:e.form=n},e.getParameters=function(){return a},e.$on("modal.hidden",(function(){e.resolved||(e.resolved=!0,o((function(){return e.deferred.resolve(),e.modal.remove()}),(e.modal.hideDelay||320)+20))}))}return{show:function(a,o,r,l){var c,d,u,p=t.defer();if((l=l||{}).animation=l.animation||"slide-in-up",o){l.scope=l.scope?l.scope.$new():n.$new(),s.call({},l.scope,p,r);var m={$scope:l.scope,parameters:r},E=(d={isControllerAs:!1,controllerName:"",propName:""},u=((c=o)||"").trim().split(/\s+/),d.isControllerAs=3===u.length&&"as"===(u[1]||"").toLowerCase(),d.isControllerAs?(d.controllerName=u[0],d.propName=u[2]):d.controllerName=c,d),g=i(o,m);E.isControllerAs&&(g.openModal=l.scope.openModal,g.closeModal=l.scope.closeModal)}return e.fromTemplateUrl(a,l).then((function(e){if(o)e.scope.$parent.modal=e;else{var n=e.scope;s.call({},n,p,r),n.modal=e}return e.show()}),(function(e){p.reject(e)})),p.promise}}}]).factory("Modals",["ModalUtils",function(e){return{showTransfer:function(n){return e.show("templates/wallet/modal_transfer.html","TransferModalCtrl",n,{focusFirstInput:!0})},showLogin:function(n){var t=angular.copy(n||{});return delete t.templateUrl,delete t.controller,e.show(n&&n.templateUrl||"templates/login/modal_login.html",n&&n.controller||"LoginModalCtrl",t,{focusFirstInput:!0})},showWotLookup:function(n){return e.show("templates/wot/modal_lookup.html","WotLookupModalCtrl",n||{},{focusFirstInput:!0})},showNetworkLookup:function(n){return e.show("templates/network/modal_network.html","NetworkLookupModalCtrl",n,{focusFirstInput:!0})},showAbout:function(n){return e.show("templates/modal_about.html","AboutModalCtrl",n)},showJoin:function(n){return e.show("templates/join/modal_join.html","JoinModalCtrl",n)},showHelp:function(n){return e.show("templates/help/modal_help.html","HelpModalCtrl",n)},showAccountSecurity:function(n){return e.show("templates/wallet/modal_security.html","WalletSecurityModalCtrl",n)}}}]),angular.module("cesium.http.services",["cesium.cache.services"]).factory("csHttp",["$http","$q","$timeout","$window","csSettings","csCache","Device",function(e,n,t,a,i,o,s){var r=i.data.timeout,l=[],c={},d={POSITIVE_INTEGER:/^\d+$/,VERSION_PART_REGEXP:/^[0-9]+|alpha[0-9]+|beta[0-9]+|rc[0-9]+|[0-9]+-SNAPSHOT$/};function u(e,n){return e?e+(n&&80!=n&&443!=n?":"+n:""):null}function p(e,n,t,a){return(443==n||a?"https":"http")+"://"+u(e,n)+(t||"")}function m(e,n,t,a){n&&n.message?e(n):403==a?e({ucode:403,message:"Resource is forbidden"+(t?" ("+t+")":"")}):404==a?e({ucode:404,message:"Resource not found"+(t?" ("+t+")":"")}):n&&n.error?e({status:a,message:n.error}):t?(console.error("[http] Get HTTP error {status: "+a+"} on ["+t+"]"),e("Error while requesting ["+t+"]")):e("Unknown error from node")}function E(e,n,t,a){var i=[],o={},s=e;return"object"==typeof n&&(i=_.keys(n)),_.forEach(i,(function(e){s===(s=s.replace(":"+e,n[e]))&&(o[e]=n[e])})),t.params=o,a(s,t)}function g(e){var n,t;if(e.startsWith("june:")||e.startsWith("web+june:")){n="june:";var a=e.replace(/^(web\+june|june):(\/\/)?/,"");-1!==(t=a).indexOf("/")&&(t=t.substr(0,a.indexOf("/"))),-1!==t.indexOf("?")&&(t=t.substr(0,a.indexOf("?"))),e="http://"+a}var i=document.createElement("a");i.href=e;var o,s=i.pathname;s&&s.startsWith("/")&&(s=s.substring(1)),i.search&&i.search.startsWith("?")&&(o=i.search.substr(1).split("&").reduce((function(e,n){if(-1!==n.indexOf("=")){var t=n.substr(0,n.indexOf("=")),a=n.substr(n.indexOf("=")+1);e[t]=a}else e[n]=!0;return e}),{}));var r={protocol:n||i.protocol,hostname:t||i.hostname,host:i.host,port:i.port,username:i.username,password:i.password,pathname:s,pathSegments:s?s.split("/"):[],search:i.search,searchParams:o,hash:i.hash};return i.remove(),r}function f(e,n){var t=e.split("."),a=n.split(".");function i(e){for(var n=0;n<e.length;n++){var t=d.POSITIVE_INTEGER.test(e[n]);if(0===n&&!t)return!1;if(!t&&!d.VERSION_PART_REGEXP.test(e[n]))return!1;t&&(e[n]=parseInt(e[n]))}return!0}if(!i(t)||!i(a))return NaN;for(var o=0;o<t.length;++o){if(a.length===o)return 1;if(t[o]!==a[o]
e.put("templates/wot/lookup_form.html",'<div class="lookupForm"><div class="item no-padding"><div class="double-padding-x padding-top-xs item-text-wrap" ng-if="::allowMultiple" style="height: 36px;"><div class="gray padding-top" ng-if="!selection.length && parameters.help">{{::parameters.help|translate}}</div><div ng-repeat="identity in selection track by identity.id" class="button button-small button-text button-stable button-icon-event ink" ng-class="{\'button-text-positive\': identity.selected}"><span ng-bind-html="identity.name||identity.uid||(identity.pubkey|formatPubkey)"></span> <i class="icon ion-close" ng-click="removeSelection(identity, $event)">&nbsp;&nbsp;</i></div></div><div class="item-input"><i class="icon ion-search placeholder-icon"></i> <input type="text" class="visible-xs visible-sm" placeholder="{{\'WOT.SEARCH_HELP\'|translate}}" ng-model="search.text" ng-model-options="{ debounce: 650 }" ng-change="doSearch()"> <input type="text" class="hidden-xs hidden-sm" id="{{wotSearchTextId}}" placeholder="{{\'WOT.SEARCH_HELP\'|translate}}" ng-model="search.text" on-return="doSearchText()"><div class="helptip-anchor-center"><a id="helptip-wot-search-text"></a></div></div></div><div class="padding-top padding-xs" style="display: block; height: 60px;" ng-class="::{\'hidden-xs\': !showResultLabel}"><div class="pull-left" ng-if="!search.loading && showResultLabel"><h4 ng-if="search.type==\'newcomers\'" translate>WOT.LOOKUP.NEWCOMERS</h4><h4 ng-if="search.type==\'text\'" translate>COMMON.RESULTS_LIST</h4></div><div class="pull-right hidden-xs hidden-sm"><a ng-if="enableFilter" class="button button-text button-small ink" ng-class="{\'button-text-positive\': search.type==\'newcomers\'}" ng-click="doGetNewcomers()"><i class="icon ion-person-stalker"></i> {{\'WOT.LOOKUP.BTN_NEWCOMERS\' | translate}} </a>&nbsp; &nbsp; <button class="button button-small button-stable ink" ng-click="doSearch()">{{\'COMMON.BTN_SEARCH\' | translate}}</button> <button class="button button-small button-positive {{parameters.okType}} ink" ng-if="::allowMultiple" ng-disabled="!selection.length" ng-click="next()">{{parameters.okText||\'COMMON.BTN_NEXT\' | translate}}</button></div></div><div class="text-center" ng-if="search.loading"><p class="gray" ng-if="::$root.currency.initPhase" translate>WOT.SEARCH_INIT_PHASE_WARNING</p><ion-spinner icon="android"></ion-spinner></div><ng-if ng-if="!search.loading"><div class="assertive padding" ng-if="!search.results.length"><span ng-if="search.type==\'text\'" translate>COMMON.SEARCH_NO_RESULT</span> <span ng-if="search.type==\'newcomers\'" translate>WOT.LOOKUP.NO_NEWCOMERS</span></div><div ng-if="!allowMultiple" class="list {{::motion.ionListClass}}"><div ng-repeat="identity in search.results" id="helptip-wot-search-result-{{$index}}" class="item item-border-large item-avatar item-icon-right ink" ng-click="::select(identity)"><ng-include src="\'templates/wot/identity.html\'"></ng-include><i class="icon ion-ios-arrow-right"></i></div></div><div ng-if="::allowMultiple" class="list {{::motion.ionListClass}}"><ion-checkbox ng-repeat="identity in search.results" ng-model="identity.checked" class="item item-border-large item-avatar ink" ng-click="toggleCheck($index, $event)"><ng-include src="\'templates/wot/identity.html\'"></ng-include></ion-checkbox></div><ion-infinite-scroll ng-if="search.hasMore" spinner="android" on-infinite="showMore()" distance="2%"></ion-infinite-scroll></ng-if></div>'),e.put("templates/wot/lookup_popover_actions.html",'<ion-popover-view class="fit has-header visible-sm visible-xs"><ion-header-bar><h1 class="title" translate>COMMON.POPOVER_FILTER_TITLE</h1></ion-header-bar><ion-content scroll="false"><div class="list item-text-wrap"><a class="item item-icon-left ink" ng-click="doGetNewcomers()"><i class="icon ion-person"></i> {{\'WOT.LOOKUP.BTN_NEWCOMERS\' | translate}} </a><a class="item item-icon-left ink" ng-click="doGetPending()"><i class="icon ion-clock"></i> {{\'WOT.LOOKUP.BTN_PENDING\' | translate}}</a></div></ion-content></ion-popover-view>'),e.put("templates/wot/lookup.html",'<i
RECOVER_ID_HELP:"Si dispone de un <b>archivo de recuperación de sus credenciales</b>, las puede reobtener respondiendo correctamente a las preguntas personales elegidas en su momento.",REVOCATION_WALLET_HELP:"Pedir la revocación de vuestra identidad comporta la <b>salida de la red de confianza</b> (definitiva para el seudónimo y la llave pública asociada). La cuenta no producirá ya más el Dividendo Universal.<br/>Podrá seguir usándola como monedero simple.",SAVE_ID_HELP:"Creación de un archivo de recuperación, para <b>reobtener su contraseña</b> (e identificador) en caso de olvido. El archivo se <b>cifra</b> con ayuda de las preguntas personales elegidas."},FILE_NAME:"{{currency}}_HistorialDeCuenta_{{pubkey|formatPubkey}}_{{currentTime|formatDateForFile}}.csv",HEADERS:{TIME:"Fecha",AMOUNT:"Cantidad",COMMENT:"Comentario"}},TRANSFER:{TITLE:"Transferencia",SUB_TITLE:"Hacer una transferencia",FROM:"De",TO:"A",AMOUNT:"Importe",AMOUNT_HELP:"Importe",COMMENT:"Comentario",COMMENT_HELP:"Comentario",BTN_SEND:"Enviar",BTN_ADD_COMMENT:"Añadir un comentario",MODAL:{TITLE:"Transferencia"}},ERROR:{UNKNOWN_URI_FORMAT:"Formato URI desconocido",PUBKEY_INVALID_CHECKSUM:"Llave pública no válida (suma de comprobación incorrecta).",POPUP_TITLE:"Error",UNKNOWN_ERROR:"Error desconocido",CRYPTO_UNKNOWN_ERROR:"Su navegador parece incompatible con las funcionalidades de cryptografía.",DOWNLOAD_KEYFILE_FAILED:"Error al generar el archivo de llaves.",EQUALS_TO_PSEUDO:"Debe ser diferente del seudónimo.",EQUALS_TO_SALT:"Debe ser diferente del identificador.",FIELD_REQUIRED:"Campo obligatorio.",FIELD_TOO_SHORT:"Valor demasiado corta.",FIELD_TOO_SHORT_WITH_LENGTH:"Valor demasiado corta ({{minLength}} carácteres mín)",FIELD_TOO_LONG:"Valor demasiado largo",FIELD_TOO_LONG_WITH_LENGTH:"Valor demasiado largo, ({{maxLength}} carácteres máx)",FIELD_MIN:"Valor mínimo: {{min}}",FIELD_MAX:"Valor máximo: {{max}}",FIELD_ACCENT:"Caracteres acentuados y comas no autorizados",FIELD_NOT_NUMBER:"Valor numérico esperado",FIELD_NOT_INT:"Valor entero esperado",FIELD_NOT_EMAIL:"Correo electrónico no válido",PASSWORD_NOT_CONFIRMED:"No coincide con la contraseña anterior.",SALT_NOT_CONFIRMED:"No corresponde al identificador anterior.",SEND_IDENTITY_FAILED:"Error de la inscripción.",SEND_CERTIFICATION_FAILED:"Error de la certificación.",NEED_MEMBER_ACCOUNT_TO_CERTIFY:"No se puede certificar, porque su cuenta no <b>es miembro</b>.",NEED_MEMBER_ACCOUNT_TO_CERTIFY_HAS_SELF:"No se puede certificar, porque su cuenta todavía no es miembro.<br/><br/>Todavía faltan certificaciones para serlo.",IDENTITY_TO_CERTIFY_HAS_NO_SELF:"Esta cuenta no se pudo certificar. No se ha solicitado la membresía, o se necesita renovarla.",LOGIN_FAILED:"Error durante la autentificación.",LOAD_IDENTITY_FAILED:"Error de carga de la identidad.",LOAD_REQUIREMENTS_FAILED:"Error de carga de las condiciones de la identidad.",SEND_MEMBERSHIP_IN_FAILED:"Error en el intento de entrada en la comunidad.",SEND_MEMBERSHIP_OUT_FAILED:"Error en la interrupción de adhesión.",REFRESH_WALLET_DATA:"Error en la actualización del monedero.",GET_CURRENCY_PARAMETER:"Error en la recuperación de las reglas de moneda.",GET_CURRENCY_FAILED:"Carga de la moneda imposible. Por favor, intente más tarde.",SEND_TX_FAILED:"Error en la transferencia.",ALL_SOURCES_USED:"Por favor, espera el cálculo del bloque siguiente (Todas sus fuentes de moneda fueron utilizada).",NOT_ENOUGH_SOURCES:"No lo bastante cambio para mandar este importe en una sola transacción.<br/>Importe máximo: {{amount}} {{unit}}<sub>{{subUnit}}</sub>.",NOT_MEMBER_FOR_CERTIFICATION:"Su cuenta no es todavía de tipo miembro.",ACCOUNT_CREATION_FAILED:"Error en la creación de la cuenta miembro.",RESTORE_WALLET_DATA_ERROR:"Error en la recarga de los ajustes desde el almacenamiento local",LOAD_WALLET_DATA_ERROR:"Error en la carga de los datos del monedero.",COPY_CLIPBOARD_FAILED:"Copia de la valor imposible.",TAKE_PICTURE_FAILED:"Error en la recuperación de la foto.",SCAN_FAILED:"Error en el escán del Codigo QR",SCAN_UNKNOWN_FORMAT:"C
GEO_LOCATION_FAILED:"No se puede recuperar su ubicación Por favor usa el botón de búsqueda.",ADDRESS_LOCATION_FAILED:"No se puede recuperar la posición de la dirección."}},SUBSCRIPTION:{SUBSCRIPTION_DIVIDER:"Servicios en línea",SUBSCRIPTION_DIVIDER_HELP:"Los servicios en línea ofrecen servicios adicionales, proporcionados por un tercero.",BTN_ADD:"Agregar un servicio",BTN_EDIT:"Administrar mis servicios",NO_SUBSCRIPTION:"Ningún servicio definido",SUBSCRIPTION_COUNT:"Servicios / Suscripción",EDIT:{TITLE:"Servicios en línea",HELP_TEXT:"Gestione sus suscripciones y otros servicios en línea aquí",PROVIDER:"Proveedor:"},TYPE:{ENUM:{EMAIL:"Recibir notificaciones por correo electrónico"}},CONFIRM:{DELETE_SUBSCRIPTION:"¿ Deseas <b>eliminar</b> esta suscripción ?"},ERROR:{LOAD_SUBSCRIPTIONS_FAILED:"Error al cargar servicios en línea",ADD_SUBSCRIPTION_FAILED:"Error al agregar suscripción",UPDATE_SUBSCRIPTION_FAILED:"Error durante la actualización de la suscripción",DELETE_SUBSCRIPTION_FAILED:"Error al eliminar la suscripción"},MODAL_EMAIL:{TITLE:"Notificación por correo electrónico",HELP:"Rellene este formulario para <b>ser notificado por correo electrónico</b> de los eventos de su cuenta. <br/> Su dirección de correo electrónico se cifrará y únicamente será visible para el proveedor de servicios.",EMAIL_LABEL:"Su correo electrónico :",EMAIL_HELP:"maria@dominio.com",FREQUENCY_LABEL:"Frecuencia de las notificaciones :",FREQUENCY_DAILY:"Diaria",FREQUENCY_WEEKLY:"Semanal",PROVIDER:"Proveedor de servicio:"}},DOCUMENT:{HASH:"Hash: ",LOOKUP:{TITLE:"Búsqueda de documentos",BTN_ACTIONS:"Acciones",BTN_COMPACT:"Compactar",DOCUMENT_TITLE:"Título",DOCUMENT_TYPE:"Tipo",HAS_REGISTERED:"ha creado o modificado su perfil",SEARCH_HELP:"issuer:AAA*, time:1508406169",LAST_DOCUMENTS:"Últimos documentos",LAST_DOCUMENTS_DOTS:"Últimos documentos :",SHOW_QUERY:"Ver la búsqueda",HIDE_QUERY:"Esconder la búsqueda",HEADER_TIME:"Fecha/Hora",HEADER_ISSUER:"Emisor",HEADER_RECIPIENT:"Destinatario",READ:"Leído",BTN_REMOVE:"Sumprimer este documento",TYPE:{GROUP_COMMENT:"Comentario en un grupo",GROUP_RECORD:"Grupo",MARKET_COMMENT:"Comentario en un anuncio",MARKET_RECORD:"Anuncio",PAGE_COMMENT:"Comentario en una página",PAGE_RECORD:"Página",USER_PROFILE:"Perfil"},POPOVER_ACTIONS:{TITLE:"Acciones",REMOVE_ALL:"Suprimir estos documentos..."}},INFO:{REMOVED:"Documento suprimido"},CONFIRM:{REMOVE:"¿ Desea <b>suprimir este documento</b> ?",REMOVE_ALL:"¿ Desea <b>suprimer estos documentos</b> ?"},ERROR:{LOAD_DOCUMENTS_FAILED:"Error al buscar documentos",REMOVE_FAILED:"Error al suprimir el documento",REMOVE_ALL_FAILED:"Error al suprimir los documentos"}},ES_PEER:{DOCUMENT_COUNT:"Número de documentos",DOCUMENTS:"Documentos",EMAIL_SUBSCRIPTION_COUNT:"{{emailSubscription}} suscritas/os a notificaciones por correo",NAME:"Nombre",SOFTWARE:"Software"},ES_SETTINGS:{PLUGIN_NAME:"Cesium+",PLUGIN_NAME_HELP:"Perfiles, notificaciones, mensajes privados",ENABLE_TOGGLE:"Activar la extensión",ENABLE_MESSAGE_TOGGLE:"Activar los mensajes privados",ENABLE_SETTINGS_TOGGLE:"Activar el almacenamiento a distancia de los ajustes",PEER:"Dirección del nodo de datos",POPUP_PEER:{TITLE:"Nodo de datos",HELP:"Ingrese la dirección del nodo que quiere utilizar:",PEER_HELP:"servidor.dominio.com:puerto"},NOTIFICATIONS:{DIVIDER:"Notificaciones",HELP_TEXT:"Active los tipos de notificaciones que desea recibir:",ENABLE_TX_SENT:"Notificar la validación de los <b>pagos emitidos</b>",ENABLE_TX_RECEIVED:"Notificar la validación de los <b>pagos recibidos</b>",ENABLE_CERT_SENT:"Notificar la validación de las <b>certificaciones emitidas</b>",ENABLE_CERT_RECEIVED:"Notificar la validación de las <b>certificaciones recibidas</b>"},CONFIRM:{ASK_ENABLE_TITLE:"Otras funcionalidades",ASK_ENABLE:'La extensión de Cesium+ está deshabilitada en sus ajutes, desactivando ciertas funcionalidades: <ul><li>&nbsp;&nbsp;<b><i class="icon ion-person"></i> Perfiles de usuario/a</b>;<li>&nbsp;&nbsp;<b><i class="icon ion-android-notifications"></i> Notificaciones</b>;<li>&nbsp;&nbsp;<b><i
e.put("plugins/es/templates/common/edit_position.html",'<div class="item item-divider" translate>LOCATION.LOCATION_DIVIDER</div>\n\n\x3c!-- street --\x3e\n<ion-item class="item-input item-floating-label item-button-right">\n <span class="input-label">{{\'LOCATION.ADDRESS\' | translate}}</span>\n <textarea placeholder="{{\'LOCATION.ADDRESS_HELP\' | translate}}" ng-model="formData.address" ng-model-options="{ debounce: 350 }" rows="4" cols="10">\n </textarea>\n</ion-item>\n\n\x3c!-- city --\x3e\n<div class="item item-input item-floating-label" ng-class="{\'item-input-error\': form.$submitted && form.geoPoint.$invalid}">\n <span class="input-label" translate>LOCATION.CITY</span>\n <input type="text" placeholder="{{\'LOCATION.CITY_HELP\'|translate}}" name="city" ng-model="formData.city" ng-model-options="{ updateOn: \'blur\' }" required-if="formData.address" ng-change="onCityChanged()">\n</div>\n<input type="hidden" name="geoPoint" ng-model="formData.geoPoint" required-if="formPosition.enable" geo-point>\n<div class="form-errors" ng-show="form.$submitted && form.city.$error" ng-messages="form.city.$error">\n <div class="form-error" ng-message="required">\n <span translate="LOCATION.ERROR.CITY_REQUIRED_IF_STREET"></span>\n </div>\n</div>\n<div class="form-errors" ng-show="form.$submitted && form.geoPoint.$error" ng-messages="form.geoPoint.$error">\n <div class="form-error" ng-message="required">\n <span translate="LOCATION.ERROR.REQUIRED_FOR_LOCATION" ng-if="!formData.city"></span>\n <span translate="LOCATION.ERROR.INVALID_FOR_LOCATION" ng-if="formData.city"></span>\n </div>\n <div class="form-error" ng-message="geoPoint">\n <span translate="LOCATION.ERROR.REQUIRED_FOR_LOCATION" ng-if="!formData.city"></span>\n <span translate="LOCATION.ERROR.INVALID_FOR_LOCATION" ng-if="formData.city"></span>\n </div>\n</div>\n\n\n\x3c!-- Position (lat/lon) --\x3e\n<div class="item row item-text-wrap no-padding">\n\n <div class="col no-padding">\n\n \x3c!-- appear on map ? --\x3e\n <ion-checkbox ng-if="options.position.showCheckbox" ng-model="formPosition.enable" ng-change="onUseGeopointChanged()" class="item item-border-large done in">\n <div class="item-content">\n <span translate>LOCATION.USE_GEO_POINT</span>\n\n \x3c!-- warning if no position--\x3e\n <h4 class="assertive" ng-if="options.position.warningMessage && !formPosition.enable">\n <i class="icon ion-android-warning"></i>\n <span ng-bind-html="options.position.warningMessage|translate"></span>\n </h4>\n\n \x3c!-- loading --\x3e\n <h4 class="gray" ng-if="formPosition.loading">\n <ion-spinner class="icon ion-spinner-small" icon="android"></ion-spinner>\n <span translate>LOCATION.LOADING_LOCATION</span>\n </h4>\n </div>\n </ion-checkbox>\n </div>\n\n <div class="col col-10 no-padding" style="min-width: 60px;">\n <div class="row text-center">\n\n <a class="button button-stable button-small-padding" title="{{\'LOCATION.BTN_GEOLOC_ADDRESS\'|translate}}" ng-disabled="!formPosition.enable" ng-click="openSearchLocationModal()">\n <i class="icon ion-home" style="left: 15px;"></i>\n <b class="icon-secondary ion-search" style="top: -9px; left:32px; font-size: 18px;"></b>\n </a>\n\n </div>\n </div>\n</div>\n\n<cs-extension-point name="after-position"></cs-extension-point>\n'),e.put("plugins/es/templates/common/edit_socials.html",'<div class="list no-padding {{::motion.ionListClass}}">\n \x3c!-- divider --\x3e\n <div class="item item-divider">\n\n <span translate>PROFILE.SOCIAL_NETWORKS_DIVIDER</span>\n\n <a class="badge button button-text button-small button-small-padding" ng-class="{\'button-text-positive\': socialData.reorder}" ng-if="formData.socials && formData.socials.length &gt; 1" ng-click="socialData.reorder=!socialData.reorder">\n <span translate>PROFILE.BTN_REORDER</span>\n </a>\n </div>\n</div>\n\n<ion-list show-reorder="socialData.reorder">\n\n <ion-item class="item-icon-left item-social-edi
e.put("plugins/es/templates/registry/lookup_form.html",'\n<form ng-submit="doSearch()" class="light-bg">\n <div class="row no-padding responsive-lg">\n\n \x3c!-- search text --\x3e\n <div class="col no-padding no-margin">\n <div class="item no-padding">\n <div class="item-input light-bg">\n\n <div class="animate-show-hide selected-values ng-hide" ng-show="entered">\n\n \x3c!-- selected type --\x3e\n <div ng-show="search.type" class="button button-small button-text button-stable button-icon-event stable-900-bg">\n &nbsp;<i class="icon cion-page-{{search.type}}"></i>\n <span>{{\'REGISTRY.TYPE.ENUM.\'+search.type|uppercase|translate}}</span>\n <i class="icon ion-close" ng-click="removeType()">&nbsp;&nbsp;</i>\n </div>\n\n \x3c!-- selected category --\x3e\n <div ng-show="search.category.name" class="button button-small button-text button-stable button-icon-event stable-900-bg">\n &nbsp;<i class="icon ion-flag"></i>\n <span>{{search.category.name|truncText:40}}</span>\n <i class="icon ion-close" ng-click="removeCategory()">&nbsp;&nbsp;</i>\n </div>\n </div>\n\n <i class="icon ion-search placeholder-icon"></i>\n <input type="text" class="visible-xs visible-sm" placeholder="{{\'REGISTRY.SEARCH.SEARCH_HELP\'|translate}}" ng-model="search.text" ng-model-options="{ debounce: 650 }" ng-change="doSearch()" on-return="doSearchText()" select-on-click>\n <input type="text" class="hidden-xs hidden-sm" placeholder="{{\'REGISTRY.SEARCH.SEARCH_HELP\'|translate}}" id="registrySearchText" ng-model="search.text" on-return="doSearchText()">\n\n <button type="button" class="button button-icon button-small pull-left button-small-padding ink" ng-if="search.text" tabindex="-1" ng-click="removeText()">\n <i class="gray ion-close"></i>\n </button>\n </div>\n </div>\n\n </div>\n\n \x3c!-- location --\x3e\n <div class="col col-40 no-padding no-margin" ng-include="::\'plugins/es/templates/common/item_location_search.html\'" ng-controller="ESSearchPositionItemCtrl">\n </div>\n\n </div>\n\n \x3c!-- options --\x3e\n <ng-include src="::\'plugins/es/templates/registry/lookup_form_options.html\'"></ng-include>\n</form>\n\n<div class="padding-top hidden-xs hidden-sm disable-user-behavior" style="display: block; height: 60px;">\n <div class="pull-left">\n\n <a class="button button-text button-small ink" ng-class="{\'button-text-stable\': !search.advanced, \'button-text-positive\': search.advanced}" ng-click="search.advanced=!search.advanced">\n {{\'REGISTRY.SEARCH.BTN_ADVANCED_SEARCH\' | translate}}\n <i class="icon" ng-class="{\'ion-arrow-down-b\': !search.advanced, \'ion-arrow-up-b\': search.advanced}"></i>\n </a>\n\n &nbsp;\n\n </div>\n\n <div class="pull-right">\n\n <a ng-if="enableFilter" class="button button-text button-small ink" ng-class="{\'button-text-positive\': search.lastRecords}" ng-click="doGetLastRecords()">\n <i class="icon ion-clock"></i>\n {{\'REGISTRY.SEARCH.BTN_LAST_RECORDS\' | translate}}\n </a>\n &nbsp;\n\n \x3c!-- Allow extension here --\x3e\n <cs-extension-point name="filter-buttons"></cs-extension-point>\n\n &nbsp;\n\n <button class="button button-small button-stable ink" ng-click="doSearchText()">\n {{\'COMMON.BTN_SEARCH\' | translate}}\n </button>\n </div>\n</div>\n\n<div class="padding-xs padding-sm" style="display: block; height: 60px;">\n <div class="pull-left ng-hide" ng-show="!search.loading">\n <ng-if ng-if="search.lastRecords">\n <h4 translate>REGISTRY.SEARCH.LAST_RECORDS</h4>\n <small class="gray no-padding" ng-if="search.total">\n <span ng-if="search.geoPoint && search.total">{{\'REGISTRY.SEARCH.LAST_RECORD_COUNT_LOCATION\'|translate:{count: search.total, location: search.location} }}</span>\n <span ng-if="!search.geoPoint && search.total">{{\'REGISTRY.SEARCH.LAST_RECORD_COUN
e.put("plugins/market/templates/join/modal_join.html",'<ion-modal-view class="modal-full-height">\n\n <ion-header-bar class="bar-positive">\n\n <button class="button button-clear visible-xs" ng-if="!slides.slider.activeIndex" ng-click="closeModal()" translate>COMMON.BTN_CANCEL\n </button>\n <button class="button button-icon button-clear icon ion-ios-arrow-back buttons header-item" ng-click="slidePrev()" ng-if="slides.slider.activeIndex">\n </button>\n <button class="button button-icon button-clear icon ion-ios-help-outline visible-xs" ng-if="!isLastSlide" ng-click="showHelpModal()"></button>\n\n <h1 class="title" translate>ACCOUNT.NEW.TITLE</h1>\n\n <button class="button button-clear icon-right visible-xs" ng-if="!isLastSlide" ng-click="doNext()">\n <span translate>COMMON.BTN_NEXT</span>\n <i class="icon ion-ios-arrow-right"></i>\n </button>\n <button class="button button-clear icon-right visible-xs" ng-if="isLastSlide" ng-click="doNewAccount()">\n <i class="icon ion-android-send"></i>\n </button>\n </ion-header-bar>\n\n\n <ion-slides options="slides.options" slider="slides.slider">\n\n \x3c!-- STEP: salt --\x3e\n <ion-slide-page>\n <ion-content class="has-header" scroll="false">\n <form name="saltForm" novalidate="" ng-submit="doNext(\'saltForm\')">\n\n <div class="list" ng-init="setForm(saltForm, \'saltForm\')">\n\n <div class="item item-text-wrap text-center padding hidden-xs">\n <a class="pull-right icon-help" ng-click="showHelpModal(\'join-salt\')"></a>\n <span translate>ACCOUNT.NEW.SALT_WARNING</span>\n </div>\n\n \x3c!-- salt --\x3e\n <div class="item item-input" ng-class="{ \'item-input-error\': saltForm.$submitted && saltForm.username.$invalid}">\n <span class="input-label" translate>LOGIN.SALT</span>\n <input name="username" type="text" placeholder="{{\'LOGIN.SALT_HELP\' | translate}}" autocomplete="off" ng-change="formDataChanged()" ng-model="formData.username" ng-minlength="8" required>\n </div>\n <div class="form-errors" ng-show="saltForm.$submitted && saltForm.username.$error" ng-messages="saltForm.username.$error">\n <div class="form-error" ng-message="minlength">\n <span translate="ERROR.FIELD_TOO_SHORT_WITH_LENGTH" translate-values="{minLength: 8}"></span>\n </div>\n <div class="form-error" ng-message="required">\n <span translate="ERROR.FIELD_REQUIRED"></span>\n </div>\n </div>\n\n \x3c!-- confirm salt --\x3e\n <div class="item item-input" ng-class="{ \'item-input-error\': saltForm.$submitted && saltForm.confirmSalt.$invalid}">\n <span class="input-label pull-right" translate>ACCOUNT.NEW.SALT_CONFIRM</span>\n <input name="confirmUsername" type="text" autocomplete="off" placeholder="{{\'ACCOUNT.NEW.SALT_CONFIRM_HELP\' | translate}}" ng-model="formData.confirmUsername" compare-to="formData.username">\n </div>\n <div class="form-errors" ng-show="saltForm.$submitted && saltForm.confirmUsername.$error" ng-messages="saltForm.confirmUsername.$error">\n <div class="form-error" ng-message="compareTo">\n <span translate="ERROR.SALT_NOT_CONFIRMED"></span>\n </div>\n </div>\n\n <div class="padding hidden-xs text-right">\n <button class="button button-clear button-dark ink" ng-click="closeModal()" type="button" translate>COMMON.BTN_CANCEL\n </button>\n <button class="button button-calm icon-right ion-chevron-right ink" type="submit" translate>\n COMMON.BTN_NEXT\n <i class="icon ion-arrow-right-a"></i>\n </button>\n </div>\n </div>\n </form>\n </ion-content>\n </ion-slide-page>\n\n \x3c!-- STEP: p
return t._title&&(a.title=t._title),t._name&&(a.name=t._name),a}}},R.api.registerEvent("node","start"),R.api.registerEvent("node","stop");var x={getServer:d.getServer,node:{summary:R.get("/node/summary"),parseEndPoint:function(e){var n=N.API_ENDPOINT.exec(e);if(n)return{api:n[1]||"",dns:n[2]||"",ipv4:n[3]||"",ipv6:n[4]||"",port:n[5]||80,path:n[6]||"",useSsl:443==n[5]}},same:L,sameAsSettings:C,isFallback:function(){return R.data.isFallback}},websocket:{changes:R.wsChanges,block:R.ws("/ws/block"),peer:R.ws("/ws/peer")},wot:{member:{uids:R.get("/wot/members")}},network:{peering:{self:R.get("/network/peering")},peers:R.get("/network/peers")},record:{post:function(n,t){t=t||{};var a=R.post(n);return function(n,i){if(!g.isLogin())return e.reject("Wallet must be login before sending record to ES node");t.creationTime&&!n.creationTime&&(n.creationTime=moment().utc().unix());var o=moment().utc().unix();n.time=!n.time||n.time<o?o:n.time+1;var s=g.data.keypair,r=angular.copy(n);delete r.signature,delete r.hash,r.issuer=g.data.pubkey,r.version||(r.version=2),t.tagFields&&function(e,n){n=n||["title","description"],e.tags=n.reduce((function(n,t){var a=e[t],i=a&&w(a);return i?n.concat(i):n}),[])}(r,t.tagFields);var c=JSON.stringify(r);return l.util.hash(c).then((function(e){return l.sign(e,s).then((function(n){return c='{"hash":"{0}","signature":"{1}",'.format(e,n)+c.substring(1),a(c,i).then((function(e){return m.clear("esHttp-"),e})).catch((function(e){var n=R.byteCount(r);if(n>I.MAX_UPLOAD_BODY_SIZE)throw{message:"ERROR.ES_MAX_UPLOAD_BODY_SIZE",length:n};throw e}))}))}))}},remove:function(n,t){return function(a){if(!g.isLogin())return e.reject("Wallet must be login before sending record to ES node");var i={version:2,index:n,type:t,id:a,issuer:g.data.pubkey,time:moment().utc().unix()},o=JSON.stringify(i);return l.util.hash(o).then((function(e){return l.sign(e,g.data.keypair).then((function(n){return o='{"hash":"{0}","signature":"{1}",'.format(e,n)+o.substring(1),R.post("/history/delete")(o).then((function(e){return e}))}))}))}},count:function(e,n,t){var a=R.get("/{0}/{1}/_search?size=0".format(e,n),t);return function(e){return a(e).then((function(e){return e&&e.hits&&e.hits.total}))}}},image:{fromAttachment:function(e){if(!e||!e._content_type||!e._content||0===e._content.length)return null;var n={src:"data:"+e._content_type+";base64,"+e._content};return e._title&&(n.title=e._title),e._name&&(n.name=e._name),n},toAttachment:function(e){if(!e||!e.src)return null;var n=N.IMAGE_SRC.exec(e.src);if(!n)return null;var t={_content_type:n[1],_content:n[2]};return e.title&&(t._title=e.title),e.name&&(t._name=e.name),t}},hit:{empty:function(){return{_id:null,_index:null,_type:null,_version:null,_source:{}}}},util:{parseTags:w,parseAsHtml:function(e,n){var t=e?U(e.trim()):void 0;if(t){(n=n||{}).tagState=n.tagState||"app.user_lookup",n.nameState=n.nameState||"app.user_identity_name",!n.newLine&&angular.isDefined(n.newLine)||(t=t.replace(/\n/g,"<br>\n"));var a=function(e){for(var n=e&&N.URL.exec(e),t=n&&[];n;){var a=n[0];_.contains(t,a)||t.push(a),n=(e=e.substr(n.index+n[0].length+1))&&N.URL.exec(e)}return t}(t);_.forEach(a,(function(e){var n=e.startsWith("http://")||e.startsWith("https://")?e:"http://"+e,a='<a on-tap="openLink($event, \'{0}\')" href="{1}" target="_blank">{2}</a>'.format(n,n,A(e));t=t.replace(e,a)}));var i=w(t);_.forEach(i,(function(e){var a="<a ui-sref=\"{0}({hash: '{1}'})\">#{2}</a>".format(n.tagState,e,e);t=t.replace("#"+e,a)}));var o=w(t,"@");_.forEach(o,(function(e){var a="<a ui-sref=\"{0}({name: '{1}'})\">@{2}</a>".format(n.nameState,e,e);t=t.replace("@"+e,a)}));var s=function(e,n,t){for(var a=k("(?:^|[\\r\\s])("+(n=n||"##")+"([^#></]+)<br>)"),i=e&&a.exec(e),o=i&&[],s=i&&[];i;){var r=i[1];_.contains(o,r)||(o.push(r),s.push({line:r,title:i[2]})),i=(e=e.substr(i.index+i[1].length+1)).length>0&&a.exec(e)}return s}(t,"#+[ ]*");_.forEach(s,(function(e){var n=e.line.lastIndexOf("#",5)+1;t=t.replace(e.line,"<h{0}>{1}</h{2}>".format(n,e.title,n))}))}return t},escapeHtmlTags:U,findObjectInTree:function e(n,t){if(n)return n[t]?n[t]:Ar
t[e.key]=e.peer_count&&e.peer_count.value||0,d[e.key]||(d[e.key]=!0)})),e.concat(t)}),[])};a.isBefore(s);)if(r.push({from:a.unix(),to:a.add(1,e.rangeDuration).unix()}),r.length===e.maxRangeSize||!a.isBefore(s)){var c={size:0,aggs:{range:{range:{field:"time",ranges:r},aggs:{api:{terms:{field:"api",size:0},aggs:{peer_count:{cardinality:{field:"peer"}}}},duration:{sum:{field:"executionTime"}},result:{nested:{path:"result"},aggs:{inserts:{sum:{field:"result.inserts"}},updates:{sum:{field:"result.updates"}},deletes:{sum:{field:"result.deletes"}}}}}}}};r=[];var d={};10===t.length?(console.error("Too many parallel jobs!"),a=moment.unix(e.endTime).utc()):t.push(i.raw.synchro.search(c,{currency:e.currency}).then(l))}return n.all(t).then((function(e){e=e.reduce((function(e,n){return n&&n.length?e.concat(n):e}),[]),e=_.sortBy(e,"from");var n={times:_.pluck(e,"from"),inserts:_.pluck(e,"inserts"),updates:_.pluck(e,"updates"),deletes:_.pluck(e,"deletes"),duration:_.pluck(e,"duration")};return _.keys(d).forEach((function(t){n[t]=_.pluck(e,t)})),n}))},i}]),angular.module("cesium.graph.color.services",[]).factory("gpColor",(function(){var e={css2Rgb:{white:[255,255,255],assertive:[239,71,58],calm:[17,193,243],positive:[56,126,245],balanced:[51,205,95],energized:[255,201,0],royal:[136,106,234],gray:[150,150,150],stable:[248,248,248]}},n={scale:{}};return n.scale.custom=function(e,n,t,a){function i(e){switch(e){case 0:return 0;case 1:return-1;case 2:return 0;case 3:return 1}}n=n>0&&n||.55;for(var o=Math.round(e/2.5),s=t&&3==t.length?angular.copy(t):[255,0,0],r=a&&3==a.length?angular.copy(a):[0,2,3],l=t?[Math.round(255/o),Math.round(255/o),Math.round(255/o)]:[Math.round((s[0]-50)/o),Math.round((255-s[1])/o),Math.round((255-s[2])/o)],c=[i(r[0]),i(r[1]),i(r[2])],d=[0,0,0],u=[],p=0;p<e;p++){for(var m=0;m<3;m++)s[m]+=c[m]*l[m],d[m]++,((s[m]<=0||s[m]>=255)&&0!==c[m]||0===c[m]&&d[m]==o)&&(s[m]<=0?s[m]=0:s[m]>=255&&(s[m]=255),r[m]=(r[m]+1)%4,c[m]=i(r[m]),d[m]=0);u.push("rgba("+s[0]+","+s[1]+","+s[2]+","+n+")")}return u},n.scale.default=function(){return n.scale.custom(25)},n.scale.fix=function(e,t){return Array.apply(null,Array(e||25)).map(String.prototype.valueOf,t||n.rgba.calm(.5))},n.rgba=_.mapObject(e.css2Rgb,(function(e){var n="rgba("+e.join(",")+",";return function(t){return!t||t<0?"rgb("+e.join(",")+")":n+t+")"}})),n.rgba.translucent=function(){return"rgb(0,0,0,0)"},n.constants=e,n})),Ae.$inject=["$scope","$filter","$ionicPopover","$ionicHistory","$state","csSettings","csCurrency","UIUtils"],angular.module("cesium.graph.common.controllers",["cesium.services"]).controller("GpCurrencyAbstractCtrl",Ae),De.$inject=["$scope","$state","$controller","$q","$translate","gpColor","gpData","$filter"],angular.module("cesium.graph.docstats.controllers",["chart.js","cesium.graph.services","cesium.graph.common.controllers"]).config(["$stateProvider","PluginServiceProvider","csConfig",function(e,n,t){e.state("app.doc_stats_lg",{url:"/data/stats?stepUnit&t&hide&scale",views:{menuContent:{templateUrl:"plugins/graph/templates/docstats/view_stats.html",controller:"GpDocStatsCtrl"}}}),t.plugins&&t.plugins.es}]).controller("GpDocStatsCtrl",De),Ce.$inject=["$scope","$controller","$q","$translate","gpColor","gpData","$filter"],angular.module("cesium.graph.synchro.controllers",["chart.js","cesium.graph.services","cesium.graph.common.controllers"]).config(["$stateProvider","PluginServiceProvider","csConfig",function(e,n,t){e.state("app.doc_synchro_lg",{url:"/data/synchro?stepUnit&t&hide&scale",views:{menuContent:{templateUrl:"plugins/graph/templates/synchro/view_stats.html",controller:"GpSynchroCtrl"}}}),t.plugins&&t.plugins.es}]).controller("GpSynchroCtrl",Ce),Le.$inject=["$scope","PluginService","esSettings"],Pe.$inject=["$scope","$timeout","PluginService","esSettings","csCurrency","gpData"],angular.module("cesium.graph.network.controllers",["chart.js","cesium.graph.services"]).config(["$stateProvider","PluginServiceProvider","csConfig",function(e,n,t){t.plugins&&t.plugins.es&&n.extendState("app.es_network",{points:{buttons:{templateUrl:"plugins/graph/templates/n
//# sourceMappingURL=../maps/dist_js/gchange.js.map