From f7c3c7eda4cc50f56736521158a5fc4beb11ddba Mon Sep 17 00:00:00 2001
From: Taylor Gerring <taylor.gerring@gmail.com>
Date: Thu, 12 Mar 2015 10:03:35 -0500
Subject: [PATCH] Update ethereum.js

Added to git modules
---
 .gitmodules                                   |    3 +
 cmd/mist/assets/ext/ethereum.js               |    1 +
 cmd/mist/assets/ext/ethereum.js/.bowerrc      |    5 -
 cmd/mist/assets/ext/ethereum.js/.editorconfig |   12 -
 cmd/mist/assets/ext/ethereum.js/.gitignore    |   18 -
 cmd/mist/assets/ext/ethereum.js/.jshintrc     |   50 -
 cmd/mist/assets/ext/ethereum.js/.npmignore    |    9 -
 cmd/mist/assets/ext/ethereum.js/.travis.yml   |   13 -
 cmd/mist/assets/ext/ethereum.js/LICENSE       |   14 -
 cmd/mist/assets/ext/ethereum.js/README.md     |   96 -
 cmd/mist/assets/ext/ethereum.js/bower.json    |   51 -
 .../assets/ext/ethereum.js/dist/ethereum.js   | 2799 -----------------
 .../ext/ethereum.js/dist/ethereum.js.map      |   41 -
 .../ext/ethereum.js/dist/ethereum.min.js      |    1 -
 .../ext/ethereum.js/example/balance.html      |   43 -
 .../ext/ethereum.js/example/contract.html     |   74 -
 .../example/contract_with_array.html          |   76 -
 .../assets/ext/ethereum.js/example/event.html |  120 -
 .../ext/ethereum.js/example/event_inc.html    |   66 -
 .../ethereum.js/example/natspec_contract.html |   77 -
 .../ext/ethereum.js/example/node-app.js       |   12 -
 cmd/mist/assets/ext/ethereum.js/gulpfile.js   |  104 -
 cmd/mist/assets/ext/ethereum.js/index.js      |   11 -
 cmd/mist/assets/ext/ethereum.js/lib/abi.js    |  210 --
 cmd/mist/assets/ext/ethereum.js/lib/const.js  |   56 -
 .../assets/ext/ethereum.js/lib/contract.js    |  217 --
 cmd/mist/assets/ext/ethereum.js/lib/event.js  |  135 -
 cmd/mist/assets/ext/ethereum.js/lib/filter.js |  101 -
 .../assets/ext/ethereum.js/lib/formatters.js  |  154 -
 .../assets/ext/ethereum.js/lib/httpsync.js    |   46 -
 .../assets/ext/ethereum.js/lib/jsonrpc.js     |   65 -
 cmd/mist/assets/ext/ethereum.js/lib/local.js  |   18 -
 .../ext/ethereum.js/lib/providermanager.js    |  102 -
 cmd/mist/assets/ext/ethereum.js/lib/qtsync.js |   33 -
 cmd/mist/assets/ext/ethereum.js/lib/types.js  |   79 -
 cmd/mist/assets/ext/ethereum.js/lib/utils.js  |  142 -
 cmd/mist/assets/ext/ethereum.js/lib/web3.js   |  256 --
 cmd/mist/assets/ext/ethereum.js/package.json  |   69 -
 .../ext/ethereum.js/test/abi.parsers.js       |  860 -----
 .../assets/ext/ethereum.js/test/db.methods.js |   14 -
 .../ext/ethereum.js/test/eth.methods.js       |   34 -
 .../assets/ext/ethereum.js/test/mocha.opts    |    2 -
 .../ext/ethereum.js/test/shh.methods.js       |   14 -
 cmd/mist/assets/ext/ethereum.js/test/utils.js |   19 -
 .../ext/ethereum.js/test/web3.methods.js      |   10 -
 45 files changed, 4 insertions(+), 6328 deletions(-)
 create mode 160000 cmd/mist/assets/ext/ethereum.js
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/.bowerrc
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/.editorconfig
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/.gitignore
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/.jshintrc
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/.npmignore
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/.travis.yml
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/LICENSE
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/README.md
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/bower.json
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/dist/ethereum.js
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/dist/ethereum.js.map
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/dist/ethereum.min.js
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/example/balance.html
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/example/contract.html
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/example/contract_with_array.html
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/example/event.html
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/example/event_inc.html
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/example/natspec_contract.html
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/example/node-app.js
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/gulpfile.js
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/index.js
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/lib/abi.js
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/lib/const.js
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/lib/contract.js
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/lib/event.js
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/lib/filter.js
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/lib/formatters.js
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/lib/httpsync.js
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/lib/jsonrpc.js
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/lib/local.js
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/lib/providermanager.js
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/lib/qtsync.js
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/lib/types.js
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/lib/utils.js
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/lib/web3.js
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/package.json
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/test/abi.parsers.js
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/test/db.methods.js
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/test/eth.methods.js
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/test/mocha.opts
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/test/shh.methods.js
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/test/utils.js
 delete mode 100644 cmd/mist/assets/ext/ethereum.js/test/web3.methods.js

diff --git a/.gitmodules b/.gitmodules
index 324e7f6a7..461a5a748 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,6 @@
 [submodule "ethereal/assets/samplecoin"]
 	path = ethereal/assets/samplecoin
 	url = git@github.com:obscuren/SampleCoin.git
+[submodule "cmd/mist/assets/ext/ethereum.js"]
+	path = cmd/mist/assets/ext/ethereum.js
+	url = https://github.com/ethereum/ethereum.js
diff --git a/cmd/mist/assets/ext/ethereum.js b/cmd/mist/assets/ext/ethereum.js
new file mode 160000
index 000000000..d50936069
--- /dev/null
+++ b/cmd/mist/assets/ext/ethereum.js
@@ -0,0 +1 @@
+Subproject commit d5093606945fd871bc62f5d6adade3a903b0533c
diff --git a/cmd/mist/assets/ext/ethereum.js/.bowerrc b/cmd/mist/assets/ext/ethereum.js/.bowerrc
deleted file mode 100644
index c3a8813e8..000000000
--- a/cmd/mist/assets/ext/ethereum.js/.bowerrc
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "directory": "example/js/",
-  "cwd": "./",
-  "analytics": false
-}
\ No newline at end of file
diff --git a/cmd/mist/assets/ext/ethereum.js/.editorconfig b/cmd/mist/assets/ext/ethereum.js/.editorconfig
deleted file mode 100644
index 60a2751d3..000000000
--- a/cmd/mist/assets/ext/ethereum.js/.editorconfig
+++ /dev/null
@@ -1,12 +0,0 @@
-root = true
-
-[*]
-indent_style = space
-indent_size = 4
-end_of_line = lf
-charset = utf-8
-trim_trailing_whitespace = true
-insert_final_newline = true
-
-[*.md]
-trim_trailing_whitespace = false
\ No newline at end of file
diff --git a/cmd/mist/assets/ext/ethereum.js/.gitignore b/cmd/mist/assets/ext/ethereum.js/.gitignore
deleted file mode 100644
index 399b6dc88..000000000
--- a/cmd/mist/assets/ext/ethereum.js/.gitignore
+++ /dev/null
@@ -1,18 +0,0 @@
-# See http://help.github.com/ignore-files/ for more about ignoring files.
-#
-# If you find yourself ignoring temporary files generated by your text editor
-# or operating system, you probably want to add a global ignore instead:
-#   git config --global core.excludesfile ~/.gitignore_global
-
-*.swp
-/tmp
-*/**/*un~
-*un~
-.DS_Store
-*/**/.DS_Store
-ethereum/ethereum
-ethereal/ethereal
-example/js
-node_modules
-bower_components
-npm-debug.log
diff --git a/cmd/mist/assets/ext/ethereum.js/.jshintrc b/cmd/mist/assets/ext/ethereum.js/.jshintrc
deleted file mode 100644
index c0ec5f89d..000000000
--- a/cmd/mist/assets/ext/ethereum.js/.jshintrc
+++ /dev/null
@@ -1,50 +0,0 @@
-{
-    "predef": [
-        "console",
-        "require",
-        "equal",
-        "test",
-        "testBoth",
-        "testWithDefault",
-        "raises",
-        "deepEqual",
-        "start",
-        "stop",
-        "ok",
-        "strictEqual",
-        "module",
-        "expect",
-        "reject",
-        "impl"
-    ],
-
-    "esnext": true,
-    "proto": true,
-    "node" : true,
-    "browser" : true,
-    "browserify" : true,
-
-    "boss" : true,
-    "curly": false,
-    "debug": true,
-    "devel": true,
-    "eqeqeq": true,
-    "evil": true,
-    "forin": false,
-    "immed": false,
-    "laxbreak": false,
-    "newcap": true,
-    "noarg": true,
-    "noempty": false,
-    "nonew": false,
-    "nomen": false,
-    "onevar": false,
-    "plusplus": false,
-    "regexp": false,
-    "undef": true,
-    "sub": true,
-    "strict": false,
-    "white": false,
-    "shadow": true,
-    "eqnull": true
-}
\ No newline at end of file
diff --git a/cmd/mist/assets/ext/ethereum.js/.npmignore b/cmd/mist/assets/ext/ethereum.js/.npmignore
deleted file mode 100644
index 5bbffe4fd..000000000
--- a/cmd/mist/assets/ext/ethereum.js/.npmignore
+++ /dev/null
@@ -1,9 +0,0 @@
-example/js
-node_modules
-test
-.gitignore
-.editorconfig
-.travis.yml
-.npmignore
-component.json
-testling.html
\ No newline at end of file
diff --git a/cmd/mist/assets/ext/ethereum.js/.travis.yml b/cmd/mist/assets/ext/ethereum.js/.travis.yml
deleted file mode 100644
index 83b21d840..000000000
--- a/cmd/mist/assets/ext/ethereum.js/.travis.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-language: node_js
-node_js:
-  - "0.11"
-  - "0.10"
-before_script:
-  - npm install
-  - npm install jshint
-script:
-   - "jshint *.js lib"
-after_script:
-  - npm run-script build
-  - npm test
-
diff --git a/cmd/mist/assets/ext/ethereum.js/LICENSE b/cmd/mist/assets/ext/ethereum.js/LICENSE
deleted file mode 100644
index 0f187b873..000000000
--- a/cmd/mist/assets/ext/ethereum.js/LICENSE
+++ /dev/null
@@ -1,14 +0,0 @@
-This file is part of ethereum.js.
-
-ethereum.js is free software: you can redistribute it and/or modify
-it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-ethereum.js is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public License
-along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
\ No newline at end of file
diff --git a/cmd/mist/assets/ext/ethereum.js/README.md b/cmd/mist/assets/ext/ethereum.js/README.md
deleted file mode 100644
index 02988fe73..000000000
--- a/cmd/mist/assets/ext/ethereum.js/README.md
+++ /dev/null
@@ -1,96 +0,0 @@
-# Ethereum JavaScript API
-
-This is the Ethereum compatible [JavaScript API](https://github.com/ethereum/wiki/wiki/JavaScript-API)
-which implements the [Generic JSON RPC](https://github.com/ethereum/wiki/wiki/Generic-JSON-RPC) spec. It's available on npm as a node module and also for bower and component as an embeddable js
-
-[![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![dependency status][dep-image]][dep-url] [![dev dependency status][dep-dev-image]][dep-dev-url]
-
-<!-- [![browser support](https://ci.testling.com/ethereum/ethereum.js.png)](https://ci.testling.com/ethereum/ethereum.js) -->
-
-## Installation
-
-### Node.js
-
-    npm install ethereum.js
-
-### For browser
-Bower
-
-	bower install ethereum.js
-
-Component
-
-	component install ethereum/ethereum.js
-
-* Include `ethereum.min.js` in your html file.
-* Include [bignumber.js](https://github.com/MikeMcl/bignumber.js/)
-
-## Usage
-Require the library:
-
-	var web3 = require('web3');
-
-Set a provider (QtProvider, WebSocketProvider, HttpRpcProvider)
-
-	var web3.setProvider(new web3.providers.WebSocketProvider('ws://localhost:40404/eth'));
-
-There you go, now you can use it:
-
-```
-var coinbase = web3.eth.coinbase;
-var balance = web3.eth.balanceAt(coinbase);
-```
-
-
-For another example see `example/index.html`.
-
-## Contribute!
-
-### Requirements
-
-* Node.js
-* npm
-* gulp (build)
-* mocha (tests)
-
-```bash
-sudo apt-get update
-sudo apt-get install nodejs
-sudo apt-get install npm
-sudo apt-get install nodejs-legacy
-```
-
-### Building (gulp)
-
-```bash
-npm run-script build
-```
-
-
-### Testing (mocha)
-
-```bash
-npm test
-```
-
-**Please note this repo is in it's early stage.**
-
-If you'd like to run a WebSocket ethereum node check out
-[go-ethereum](https://github.com/ethereum/go-ethereum).
-
-To install ethereum and spawn a node:
-
-```
-go get github.com/ethereum/go-ethereum/ethereum
-ethereum -ws -loglevel=4
-```
-
-[npm-image]: https://badge.fury.io/js/ethereum.js.png
-[npm-url]: https://npmjs.org/package/ethereum.js
-[travis-image]: https://travis-ci.org/ethereum/ethereum.js.svg
-[travis-url]: https://travis-ci.org/ethereum/ethereum.js
-[dep-image]: https://david-dm.org/ethereum/ethereum.js.svg
-[dep-url]: https://david-dm.org/ethereum/ethereum.js
-[dep-dev-image]: https://david-dm.org/ethereum/ethereum.js/dev-status.svg
-[dep-dev-url]: https://david-dm.org/ethereum/ethereum.js#info=devDependencies
-
diff --git a/cmd/mist/assets/ext/ethereum.js/bower.json b/cmd/mist/assets/ext/ethereum.js/bower.json
deleted file mode 100644
index 168f1b39a..000000000
--- a/cmd/mist/assets/ext/ethereum.js/bower.json
+++ /dev/null
@@ -1,51 +0,0 @@
-{
-  "name": "ethereum.js",
-  "namespace": "ethereum",
-  "version": "0.0.13",
-  "description": "Ethereum Compatible JavaScript API",
-  "main": ["./dist/ethereum.js", "./dist/ethereum.min.js"],
-  "dependencies": {
-    "bignumber.js": ">=2.0.0"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/ethereum/ethereum.js.git"
-  },
-  "homepage": "https://github.com/ethereum/ethereum.js",
-  "bugs": {
-    "url": "https://github.com/ethereum/ethereum.js/issues"
-  },
-  "keywords": [
-    "ethereum",
-    "javascript",
-    "API"
-  ],
-  "authors": [
-    {
-      "name": "Marek Kotewicz",
-      "email": "marek@ethdev.com",
-      "homepage": "https://github.com/debris"
-    },
-    {
-      "name": "Marian Oancea",
-      "email": "marian@ethdev.com",
-      "homepage": "https://github.com/cubedro"
-    }
-  ],
-  "license": "LGPL-3.0",
-  "ignore": [
-    "example",
-    "lib",
-    "node_modules",
-    "package.json",
-    ".bowerrc",
-    ".editorconfig",
-    ".gitignore",
-    ".jshintrc",
-    ".npmignore",
-    ".travis.yml",
-    "gulpfile.js",
-    "index.js",
-    "**/*.txt"
-  ]
-}
diff --git a/cmd/mist/assets/ext/ethereum.js/dist/ethereum.js b/cmd/mist/assets/ext/ethereum.js/dist/ethereum.js
deleted file mode 100644
index c0b37641c..000000000
--- a/cmd/mist/assets/ext/ethereum.js/dist/ethereum.js
+++ /dev/null
@@ -1,2799 +0,0 @@
-require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file abi.js
- * @authors:
- *   Marek Kotewicz <marek@ethdev.com>
- *   Gav Wood <g@ethdev.com>
- * @date 2014
- */
-
-var utils = require('../utils/utils');
-var c = require('../utils/config');
-var types = require('./types');
-var f = require('./formatters');
-
-/**
- * throw incorrect type error
- *
- * @method throwTypeError
- * @param {String} type
- * @throws incorrect type error
- */
-var throwTypeError = function (type) {
-    throw new Error('parser does not support type: ' + type);
-};
-
-/** This method should be called if we want to check if givent type is an array type
- *
- * @method isArrayType
- * @param {String} type name
- * @returns {Boolean} true if it is, otherwise false
- */
-var isArrayType = function (type) {
-    return type.slice(-2) === '[]';
-};
-
-/**
- * This method should be called to return dynamic type length in hex
- *
- * @method dynamicTypeBytes
- * @param {String} type
- * @param {String|Array} dynamic type
- * @return {String} length of dynamic type in hex or empty string if type is not dynamic
- */
-var dynamicTypeBytes = function (type, value) {
-    // TODO: decide what to do with array of strings
-    if (isArrayType(type) || type === 'string')    // only string itself that is dynamic; stringX is static length.
-        return f.formatInputInt(value.length);
-    return "";
-};
-
-var inputTypes = types.inputTypes();
-
-/**
- * Formats input params to bytes
- *
- * @method formatInput
- * @param {Array} abi inputs of method
- * @param {Array} params that will be formatted to bytes
- * @returns bytes representation of input params
- */
-var formatInput = function (inputs, params) {
-    var bytes = "";
-    var toAppendConstant = "";
-    var toAppendArrayContent = "";
-
-    /// first we iterate in search for dynamic
-    inputs.forEach(function (input, index) {
-        bytes += dynamicTypeBytes(input.type, params[index]);
-    });
-
-    inputs.forEach(function (input, i) {
-        /*jshint maxcomplexity:5 */
-        var typeMatch = false;
-        for (var j = 0; j < inputTypes.length && !typeMatch; j++) {
-            typeMatch = inputTypes[j].type(inputs[i].type, params[i]);
-        }
-        if (!typeMatch) {
-            throwTypeError(inputs[i].type);
-        }
-
-        var formatter = inputTypes[j - 1].format;
-
-        if (isArrayType(inputs[i].type))
-            toAppendArrayContent += params[i].reduce(function (acc, curr) {
-                return acc + formatter(curr);
-            }, "");
-        else if (inputs[i].type === 'string')
-            toAppendArrayContent += formatter(params[i]);
-        else
-            toAppendConstant += formatter(params[i]);
-    });
-
-    bytes += toAppendConstant + toAppendArrayContent;
-
-    return bytes;
-};
-
-/**
- * This method should be called to predict the length of dynamic type
- *
- * @method dynamicBytesLength
- * @param {String} type
- * @returns {Number} length of dynamic type, 0 or multiplication of ETH_PADDING (32)
- */
-var dynamicBytesLength = function (type) {
-    if (isArrayType(type) || type === 'string')   // only string itself that is dynamic; stringX is static length.
-        return c.ETH_PADDING * 2;
-    return 0;
-};
-
-var outputTypes = types.outputTypes();
-
-/** 
- * Formats output bytes back to param list
- *
- * @method formatOutput
- * @param {Array} abi outputs of method
- * @param {String} bytes represention of output
- * @returns {Array} output params
- */
-var formatOutput = function (outs, output) {
-
-    output = output.slice(2);
-    var result = [];
-    var padding = c.ETH_PADDING * 2;
-
-    var dynamicPartLength = outs.reduce(function (acc, curr) {
-        return acc + dynamicBytesLength(curr.type);
-    }, 0);
-
-    var dynamicPart = output.slice(0, dynamicPartLength);
-    output = output.slice(dynamicPartLength);
-
-    outs.forEach(function (out, i) {
-        /*jshint maxcomplexity:6 */
-        var typeMatch = false;
-        for (var j = 0; j < outputTypes.length && !typeMatch; j++) {
-            typeMatch = outputTypes[j].type(outs[i].type);
-        }
-
-        if (!typeMatch) {
-            throwTypeError(outs[i].type);
-        }
-
-        var formatter = outputTypes[j - 1].format;
-        if (isArrayType(outs[i].type)) {
-            var size = f.formatOutputUInt(dynamicPart.slice(0, padding));
-            dynamicPart = dynamicPart.slice(padding);
-            var array = [];
-            for (var k = 0; k < size; k++) {
-                array.push(formatter(output.slice(0, padding)));
-                output = output.slice(padding);
-            }
-            result.push(array);
-        }
-        else if (types.prefixedType('string')(outs[i].type)) {
-            dynamicPart = dynamicPart.slice(padding);
-            result.push(formatter(output.slice(0, padding)));
-            output = output.slice(padding);
-        } else {
-            result.push(formatter(output.slice(0, padding)));
-            output = output.slice(padding);
-        }
-    });
-
-    return result;
-};
-
-/**
- * Should be called to create input parser for contract with given abi
- *
- * @method inputParser
- * @param {Array} contract abi
- * @returns {Object} input parser object for given json abi
- * TODO: refactor creating the parser, do not double logic from contract
- */
-var inputParser = function (json) {
-    var parser = {};
-    json.forEach(function (method) {
-        var displayName = utils.extractDisplayName(method.name);
-        var typeName = utils.extractTypeName(method.name);
-
-        var impl = function () {
-            var params = Array.prototype.slice.call(arguments);
-            return formatInput(method.inputs, params);
-        };
-
-        if (parser[displayName] === undefined) {
-            parser[displayName] = impl;
-        }
-
-        parser[displayName][typeName] = impl;
-    });
-
-    return parser;
-};
-
-/**
- * Should be called to create output parser for contract with given abi
- *
- * @method outputParser
- * @param {Array} contract abi
- * @returns {Object} output parser for given json abi
- */
-var outputParser = function (json) {
-    var parser = {};
-    json.forEach(function (method) {
-
-        var displayName = utils.extractDisplayName(method.name);
-        var typeName = utils.extractTypeName(method.name);
-
-        var impl = function (output) {
-            return formatOutput(method.outputs, output);
-        };
-
-        if (parser[displayName] === undefined) {
-            parser[displayName] = impl;
-        }
-
-        parser[displayName][typeName] = impl;
-    });
-
-    return parser;
-};
-
-module.exports = {
-    inputParser: inputParser,
-    outputParser: outputParser,
-    formatInput: formatInput,
-    formatOutput: formatOutput
-};
-
-},{"../utils/config":4,"../utils/utils":5,"./formatters":2,"./types":3}],2:[function(require,module,exports){
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file formatters.js
- * @authors:
- *   Marek Kotewicz <marek@ethdev.com>
- * @date 2015
- */
-
-if ("build" !== 'build') {/*
-    var BigNumber = require('bignumber.js'); // jshint ignore:line
-*/}
-
-var utils = require('../utils/utils');
-var c = require('../utils/config');
-
-/**
- * Should be called to pad string to expected length
- *
- * @method padLeft
- * @param {String} string to be padded
- * @param {Number} characters that result string should have
- * @param {String} sign, by default 0
- * @returns {String} right aligned string
- */
-var padLeft = function (string, chars, sign) {
-    return new Array(chars - string.length + 1).join(sign ? sign : "0") + string;
-};
-
-/**
- * Formats input value to byte representation of int
- * If value is negative, return it's two's complement
- * If the value is floating point, round it down
- *
- * @method formatInputInt
- * @param {String|Number|BigNumber} value that needs to be formatted
- * @returns {String} right-aligned byte representation of int
- */
-var formatInputInt = function (value) {
-    var padding = c.ETH_PADDING * 2;
-    BigNumber.config(c.ETH_BIGNUMBER_ROUNDING_MODE);
-    return padLeft(utils.toTwosComplement(value).round().toString(16), padding);
-};
-
-/**
- * Formats input value to byte representation of string
- *
- * @method formatInputString
- * @param {String}
- * @returns {String} left-algined byte representation of string
- */
-var formatInputString = function (value) {
-    return utils.fromAscii(value, c.ETH_PADDING).substr(2);
-};
-
-/**
- * Formats input value to byte representation of bool
- *
- * @method formatInputBool
- * @param {Boolean}
- * @returns {String} right-aligned byte representation bool
- */
-var formatInputBool = function (value) {
-    return '000000000000000000000000000000000000000000000000000000000000000' + (value ?  '1' : '0');
-};
-
-/**
- * Formats input value to byte representation of real
- * Values are multiplied by 2^m and encoded as integers
- *
- * @method formatInputReal
- * @param {String|Number|BigNumber}
- * @returns {String} byte representation of real
- */
-var formatInputReal = function (value) {
-    return formatInputInt(new BigNumber(value).times(new BigNumber(2).pow(128))); 
-};
-
-/**
- * Check if input value is negative
- *
- * @method signedIsNegative
- * @param {String} value is hex format
- * @returns {Boolean} true if it is negative, otherwise false
- */
-var signedIsNegative = function (value) {
-    return (new BigNumber(value.substr(0, 1), 16).toString(2).substr(0, 1)) === '1';
-};
-
-/**
- * Formats right-aligned output bytes to int
- *
- * @method formatOutputInt
- * @param {String} bytes
- * @returns {BigNumber} right-aligned output bytes formatted to big number
- */
-var formatOutputInt = function (value) {
-
-    value = value || "0";
-
-    // check if it's negative number
-    // it it is, return two's complement
-    if (signedIsNegative(value)) {
-        return new BigNumber(value, 16).minus(new BigNumber('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16)).minus(1);
-    }
-    return new BigNumber(value, 16);
-};
-
-/**
- * Formats right-aligned output bytes to uint
- *
- * @method formatOutputUInt
- * @param {String} bytes
- * @returns {BigNumeber} right-aligned output bytes formatted to uint
- */
-var formatOutputUInt = function (value) {
-    value = value || "0";
-    return new BigNumber(value, 16);
-};
-
-/**
- * Formats right-aligned output bytes to real
- *
- * @method formatOutputReal
- * @param {String}
- * @returns {BigNumber} input bytes formatted to real
- */
-var formatOutputReal = function (value) {
-    return formatOutputInt(value).dividedBy(new BigNumber(2).pow(128)); 
-};
-
-/**
- * Formats right-aligned output bytes to ureal
- *
- * @method formatOutputUReal
- * @param {String}
- * @returns {BigNumber} input bytes formatted to ureal
- */
-var formatOutputUReal = function (value) {
-    return formatOutputUInt(value).dividedBy(new BigNumber(2).pow(128)); 
-};
-
-/**
- * Should be used to format output hash
- *
- * @method formatOutputHash
- * @param {String}
- * @returns {String} right-aligned output bytes formatted to hex
- */
-var formatOutputHash = function (value) {
-    return "0x" + value;
-};
-
-/**
- * Should be used to format output bool
- *
- * @method formatOutputBool
- * @param {String}
- * @returns {Boolean} right-aligned input bytes formatted to bool
- */
-var formatOutputBool = function (value) {
-    return value === '0000000000000000000000000000000000000000000000000000000000000001' ? true : false;
-};
-
-/**
- * Should be used to format output string
- *
- * @method formatOutputString
- * @param {Sttring} left-aligned hex representation of string
- * @returns {String} ascii string
- */
-var formatOutputString = function (value) {
-    return utils.toAscii(value);
-};
-
-/**
- * Should be used to format output address
- *
- * @method formatOutputAddress
- * @param {String} right-aligned input bytes
- * @returns {String} address
- */
-var formatOutputAddress = function (value) {
-    return "0x" + value.slice(value.length - 40, value.length);
-};
-
-module.exports = {
-    formatInputInt: formatInputInt,
-    formatInputString: formatInputString,
-    formatInputBool: formatInputBool,
-    formatInputReal: formatInputReal,
-    formatOutputInt: formatOutputInt,
-    formatOutputUInt: formatOutputUInt,
-    formatOutputReal: formatOutputReal,
-    formatOutputUReal: formatOutputUReal,
-    formatOutputHash: formatOutputHash,
-    formatOutputBool: formatOutputBool,
-    formatOutputString: formatOutputString,
-    formatOutputAddress: formatOutputAddress
-};
-
-
-},{"../utils/config":4,"../utils/utils":5}],3:[function(require,module,exports){
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file types.js
- * @authors:
- *   Marek Kotewicz <marek@ethdev.com>
- * @date 2015
- */
-
-var f = require('./formatters');
-
-/// @param expected type prefix (string)
-/// @returns function which checks if type has matching prefix. if yes, returns true, otherwise false
-var prefixedType = function (prefix) {
-    return function (type) {
-        return type.indexOf(prefix) === 0;
-    };
-};
-
-/// @param expected type name (string)
-/// @returns function which checks if type is matching expected one. if yes, returns true, otherwise false
-var namedType = function (name) {
-    return function (type) {
-        return name === type;
-    };
-};
-
-/// Setups input formatters for solidity types
-/// @returns an array of input formatters 
-var inputTypes = function () {
-    
-    return [
-        { type: prefixedType('uint'), format: f.formatInputInt },
-        { type: prefixedType('int'), format: f.formatInputInt },
-        { type: prefixedType('hash'), format: f.formatInputInt },
-        { type: prefixedType('string'), format: f.formatInputString }, 
-        { type: prefixedType('real'), format: f.formatInputReal },
-        { type: prefixedType('ureal'), format: f.formatInputReal },
-        { type: namedType('address'), format: f.formatInputInt },
-        { type: namedType('bool'), format: f.formatInputBool }
-    ];
-};
-
-/// Setups output formaters for solidity types
-/// @returns an array of output formatters
-var outputTypes = function () {
-
-    return [
-        { type: prefixedType('uint'), format: f.formatOutputUInt },
-        { type: prefixedType('int'), format: f.formatOutputInt },
-        { type: prefixedType('hash'), format: f.formatOutputHash },
-        { type: prefixedType('string'), format: f.formatOutputString },
-        { type: prefixedType('real'), format: f.formatOutputReal },
-        { type: prefixedType('ureal'), format: f.formatOutputUReal },
-        { type: namedType('address'), format: f.formatOutputAddress },
-        { type: namedType('bool'), format: f.formatOutputBool }
-    ];
-};
-
-module.exports = {
-    prefixedType: prefixedType,
-    namedType: namedType,
-    inputTypes: inputTypes,
-    outputTypes: outputTypes
-};
-
-
-},{"./formatters":2}],4:[function(require,module,exports){
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file config.js
- * @authors:
- *   Marek Kotewicz <marek@ethdev.com>
- * @date 2015
- */
-
-/**
- * Utils
- * 
- * @module utils
- */
-
-/**
- * Utility functions
- * 
- * @class [utils] config
- * @constructor
- */
-
-/// required to define ETH_BIGNUMBER_ROUNDING_MODE
-if ("build" !== 'build') {/*
-    var BigNumber = require('bignumber.js'); // jshint ignore:line
-*/}
-
-var ETH_UNITS = [ 
-    'wei', 
-    'Kwei', 
-    'Mwei', 
-    'Gwei', 
-    'szabo', 
-    'finney', 
-    'ether', 
-    'grand', 
-    'Mether', 
-    'Gether', 
-    'Tether', 
-    'Pether', 
-    'Eether', 
-    'Zether', 
-    'Yether', 
-    'Nether', 
-    'Dether', 
-    'Vether', 
-    'Uether' 
-];
-
-module.exports = {
-    ETH_PADDING: 32,
-    ETH_SIGNATURE_LENGTH: 4,
-    ETH_UNITS: ETH_UNITS,
-    ETH_BIGNUMBER_ROUNDING_MODE: { ROUNDING_MODE: BigNumber.ROUND_DOWN },
-    ETH_POLLING_TIMEOUT: 1000,
-    ETH_DEFAULTBLOCK: 'latest'
-};
-
-
-},{}],5:[function(require,module,exports){
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file utils.js
- * @authors:
- *   Marek Kotewicz <marek@ethdev.com>
- * @date 2015
- */
-
-/**
- * Utils
- * 
- * @module utils
- */
-
-/**
- * Utility functions
- * 
- * @class [utils] utils
- * @constructor
- */
-
-if ("build" !== 'build') {/*
-    var BigNumber = require('bignumber.js'); // jshint ignore:line
-*/}
-
-var unitMap = {
-    'wei':      '1',
-    'kwei':     '1000',
-    'ada':      '1000',
-    'mwei':     '1000000',
-    'babbage':  '1000000',
-    'gwei':     '1000000000',
-    'shannon':  '1000000000',
-    'szabo':    '1000000000000',
-    'finney':   '1000000000000000',
-    'ether':    '1000000000000000000',
-    'kether':   '1000000000000000000000',
-    'grand':    '1000000000000000000000',
-    'einstein': '1000000000000000000000',
-    'mether':   '1000000000000000000000000',
-    'gether':   '1000000000000000000000000000',
-    'tether':   '1000000000000000000000000000000'
-};
-
-
-/** Finds first index of array element matching pattern
- *
- * @method findIndex
- * @param {Array}
- * @param {Function} pattern
- * @returns {Number} index of element
- */
-var findIndex = function (array, callback) {
-    var end = false;
-    var i = 0;
-    for (; i < array.length && !end; i++) {
-        end = callback(array[i]);
-    }
-    return end ? i - 1 : -1;
-};
-
-/** 
- * Should be called to get sting from it's hex representation
- *
- * @method toAscii
- * @param {String} string in hex
- * @returns {String} ascii string representation of hex value
- */
-var toAscii = function(hex) {
-// Find termination
-    var str = "";
-    var i = 0, l = hex.length;
-    if (hex.substring(0, 2) === '0x') {
-        i = 2;
-    }
-    for (; i < l; i+=2) {
-        var code = parseInt(hex.substr(i, 2), 16);
-        if (code === 0) {
-            break;
-        }
-
-        str += String.fromCharCode(code);
-    }
-
-    return str;
-};
-    
-/**
- * Shold be called to get hex representation (prefixed by 0x) of ascii string 
- *
- * @method fromAscii
- * @param {String} string
- * @returns {String} hex representation of input string
- */
-var toHexNative = function(str) {
-    var hex = "";
-    for(var i = 0; i < str.length; i++) {
-        var n = str.charCodeAt(i).toString(16);
-        hex += n.length < 2 ? '0' + n : n;
-    }
-
-    return hex;
-};
-
-/**
- * Shold be called to get hex representation (prefixed by 0x) of ascii string 
- *
- * @method fromAscii
- * @param {String} string
- * @param {Number} optional padding
- * @returns {String} hex representation of input string
- */
-var fromAscii = function(str, pad) {
-    pad = pad === undefined ? 0 : pad;
-    var hex = toHexNative(str);
-    while (hex.length < pad*2)
-        hex += "00";
-    return "0x" + hex;
-};
-
-/**
- * Should be called to get display name of contract function
- * 
- * @method extractDisplayName
- * @param {String} name of function/event
- * @returns {String} display name for function/event eg. multiply(uint256) -> multiply
- */
-var extractDisplayName = function (name) {
-    var length = name.indexOf('('); 
-    return length !== -1 ? name.substr(0, length) : name;
-};
-
-/// @returns overloaded part of function/event name
-var extractTypeName = function (name) {
-    /// TODO: make it invulnerable
-    var length = name.indexOf('(');
-    return length !== -1 ? name.substr(length + 1, name.length - 1 - (length + 1)).replace(' ', '') : "";
-};
-
-/**
- * Filters all functions from input abi
- *
- * @method filterFunctions
- * @param {Array} abi
- * @returns {Array} abi array with filtered objects of type 'function'
- */
-var filterFunctions = function (json) {
-    return json.filter(function (current) {
-        return current.type === 'function'; 
-    }); 
-};
-
-/**
- * Filters all events from input abi
- *
- * @method filterEvents
- * @param {Array} abi
- * @returns {Array} abi array with filtered objects of type 'event'
- */
-var filterEvents = function (json) {
-    return json.filter(function (current) {
-        return current.type === 'event';
-    });
-};
-
-/**
- * Converts value to it's decimal representation in string
- *
- * @method toDecimal
- * @param {String|Number|BigNumber}
- * @return {String}
- */
-var toDecimal = function (value) {
-    return toBigNumber(value).toNumber();
-};
-
-/**
- * Converts value to it's hex representation
- *
- * @method fromDecimal
- * @param {String|Number|BigNumber}
- * @return {String}
- */
-var fromDecimal = function (value) {
-    var number = toBigNumber(value);
-    var result = number.toString(16);
-
-    return (number.lessThan(0))
-        ? '-0x' + result.substr(1)
-        : '0x' + result;
-};
-
-/**
- * Auto converts any given value into it's hex representation.
- *
- * And even stringifys objects before.
- *
- * @method toHex
- * @param {String|Number|BigNumber|Object}
- * @return {String}
- */
-var toHex = function (val) {
-    /*jshint maxcomplexity:5 */
-
-    if(typeof val === 'boolean')
-        return val;
-
-    if(isBigNumber(val))
-        return fromDecimal(val);
-
-    if(typeof val === 'object')
-        return fromAscii(JSON.stringify(val));
-
-    if(isString(val) && val.indexOf('0x') === 0)
-        return val;
-    // if its a negative number, pass it through fromDecimal
-    if(isString(val) && val.indexOf('-0x') === 0)
-        return fromDecimal(val);
-
-    if(isString(val) && !isFinite(val))
-        return fromAscii(val);
-
-    if(isFinite(val))
-        return fromDecimal(val);
-
-    return val;
-};
-
-/**
- * Returns value of unit in Wei
- *
- * @method getValueOfUnit
- * @param {String} unit the unit to convert to, default ether
- * @returns {BigNumber} value of the unit (in Wei)
- * @throws error if the unit is not correct:w
- */
-var getValueOfUnit = function (unit) {
-    unit = unit ? unit.toLowerCase() : 'ether';
-    var unitValue = unitMap[unit];
-    if (unitValue === undefined) {
-        throw new Error('This unit doesn\'t exists, please use the one of the following units' + JSON.stringify(unitMap, null, 2));
-    }
-    return new BigNumber(unitValue, 10);
-};
-
-/**
- * Takes a number of wei and converts it to any other ether unit.
- *
- * Possible units are:
- * - kwei/ada
- * - mwei/babbage
- * - gwei/shannon
- * - szabo
- * - finney
- * - ether
- * - kether/grand/einstein
- * - mether
- * - gether
- * - tether
- *
- * @method fromWei
- * @param {Number|String} number can be a number, number string or a HEX of a decimal
- * @param {String} unit the unit to convert to, default ether
- * @return {String|Object} When given a BigNumber object it returns one as well, otherwise a number
-*/
-var fromWei = function(number, unit) {
-    var returnValue = toBigNumber(number).dividedBy(getValueOfUnit(unit));
-
-    return (isBigNumber(number))
-        ? returnValue : returnValue.toString(10); 
-};
-
-/**
- * Takes a number of a unit and converts it to wei.
- *
- * Possible units are:
- * - kwei/ada
- * - mwei/babbage
- * - gwei/shannon
- * - szabo
- * - finney
- * - ether
- * - kether/grand/einstein
- * - mether
- * - gether
- * - tether
- *
- * @method toWei
- * @param {Number|String|BigNumber} number can be a number, number string or a HEX of a decimal
- * @param {String} unit the unit to convert from, default ether
- * @return {String|Object} When given a BigNumber object it returns one as well, otherwise a number
-*/
-var toWei = function(number, unit) {
-    var returnValue = toBigNumber(number).times(getValueOfUnit(unit));
-
-    return (isBigNumber(number))
-        ? returnValue : returnValue.toString(10); 
-};
-
-/**
- * Takes an input and transforms it into an bignumber
- *
- * @method toBigNumber
- * @param {Number|String|BigNumber} a number, string, HEX string or BigNumber
- * @return {BigNumber} BigNumber
-*/
-var toBigNumber = function(number) {
-    number = number || 0;
-    if (isBigNumber(number))
-        return number;
-
-    return (isString(number) && (number.indexOf('0x') === 0 || number.indexOf('-0x') === 0))
-        ? new BigNumber(number.replace('0x',''), 16)
-        : new BigNumber(number.toString(10), 10);
-};
-
-/**
- * Takes and input transforms it into bignumber and if it is negative value, into two's complement
- *
- * @method toTwosComplement
- * @param {Number|String|BigNumber}
- * @return {BigNumber}
- */
-var toTwosComplement = function (number) {
-    var bigNumber = toBigNumber(number);
-    if (bigNumber.lessThan(0)) {
-        return new BigNumber("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 16).plus(bigNumber).plus(1);
-    }
-    return bigNumber;
-};
-
-/**
- * Checks if the given string has proper length
- *
- * @method isAddress
- * @param {String} address the given HEX adress
- * @return {Boolean}
-*/
-var isAddress = function(address) {
-    if (!isString(address)) {
-        return false;
-    }
-
-    return ((address.indexOf('0x') === 0 && address.length === 42) ||
-            (address.indexOf('0x') === -1 && address.length === 40));
-};
-
-/**
- * Returns true if object is BigNumber, otherwise false
- *
- * @method isBigNumber
- * @param {Object}
- * @return {Boolean} 
- */
-var isBigNumber = function (object) {
-    return object instanceof BigNumber ||
-        (object && object.constructor && object.constructor.name === 'BigNumber');
-};
-
-/**
- * Returns true if object is string, otherwise false
- * 
- * @method isString
- * @param {Object}
- * @return {Boolean}
- */
-var isString = function (object) {
-    return typeof object === 'string' ||
-        (object && object.constructor && object.constructor.name === 'String');
-};
-
-/**
- * Returns true if object is function, otherwise false
- *
- * @method isFunction
- * @param {Object}
- * @return {Boolean}
- */
-var isFunction = function (object) {
-    return typeof object === 'function';
-};
-
-module.exports = {
-    findIndex: findIndex,
-    toHex: toHex,
-    toDecimal: toDecimal,
-    fromDecimal: fromDecimal,
-    toAscii: toAscii,
-    fromAscii: fromAscii,
-    extractDisplayName: extractDisplayName,
-    extractTypeName: extractTypeName,
-    filterFunctions: filterFunctions,
-    filterEvents: filterEvents,
-    toWei: toWei,
-    fromWei: fromWei,
-    toBigNumber: toBigNumber,
-    toTwosComplement: toTwosComplement,
-    isBigNumber: isBigNumber,
-    isAddress: isAddress,
-    isFunction: isFunction,
-    isString: isString
-};
-
-
-},{}],6:[function(require,module,exports){
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file web3.js
- * @authors:
- *   Jeffrey Wilcke <jeff@ethdev.com>
- *   Marek Kotewicz <marek@ethdev.com>
- *   Marian Oancea <marian@ethdev.com>
- *   Gav Wood <g@ethdev.com>
- * @date 2014
- */
-
-var net = require('./web3/net');
-var eth = require('./web3/eth');
-var db = require('./web3/db');
-var shh = require('./web3/shh');
-var watches = require('./web3/watches');
-var filter = require('./web3/filter');
-var utils = require('./utils/utils');
-var formatters = require('./solidity/formatters');
-var requestManager = require('./web3/requestmanager');
-var c = require('./utils/config');
-
-/// @returns an array of objects describing web3 api methods
-var web3Methods = function () {
-    return [
-    { name: 'sha3', call: 'web3_sha3' }
-    ];
-};
-
-/// creates methods in a given object based on method description on input
-/// setups api calls for these methods
-var setupMethods = function (obj, methods) {
-    methods.forEach(function (method) {
-        // allow for object methods 'myObject.method'
-        var objectMethods = method.name.split('.'),
-            callFunction = function () {
-                /*jshint maxcomplexity:8 */
-                
-                var callback = null,
-                    args = Array.prototype.slice.call(arguments),
-                    call = typeof method.call === 'function' ? method.call(args) : method.call;
-
-                // get the callback if one is available
-                if(typeof args[args.length-1] === 'function'){
-                    callback = args[args.length-1];
-                    Array.prototype.pop.call(args);
-                }
-
-                // add the defaultBlock if not given
-                if(method.addDefaultblock) {
-                    if(args.length !== method.addDefaultblock)
-                        Array.prototype.push.call(args, (isFinite(c.ETH_DEFAULTBLOCK) ? utils.fromDecimal(c.ETH_DEFAULTBLOCK) : c.ETH_DEFAULTBLOCK));
-                    else
-                        args[args.length-1] = isFinite(args[args.length-1]) ? utils.fromDecimal(args[args.length-1]) : args[args.length-1];
-                }
-
-                // show deprecated warning
-                if(method.newMethod)
-                    console.warn('This method is deprecated please use web3.'+ method.newMethod +'() instead.');
-
-                return web3.manager.send({
-                    method: call,
-                    params: args,
-                    outputFormatter: method.outputFormatter,
-                    inputFormatter: method.inputFormatter,
-                    addDefaultblock: method.addDefaultblock
-                }, callback);
-            };
-
-        if(objectMethods.length > 1) {
-            if(!obj[objectMethods[0]])
-                obj[objectMethods[0]] = {};
-
-            obj[objectMethods[0]][objectMethods[1]] = callFunction;
-        
-        } else {
-
-            obj[objectMethods[0]] = callFunction;
-        }
-
-    });
-};
-
-/// creates properties in a given object based on properties description on input
-/// setups api calls for these properties
-var setupProperties = function (obj, properties) {
-    properties.forEach(function (property) {
-        var proto = {};
-        proto.get = function () {
-
-            // show deprecated warning
-            if(property.newProperty)
-                console.warn('This property is deprecated please use web3.'+ property.newProperty +' instead.');
-
-
-            return web3.manager.send({
-                method: property.getter,
-                outputFormatter: property.outputFormatter
-            });
-        };
-
-        if (property.setter) {
-            proto.set = function (val) {
-
-                // show deprecated warning
-                if(property.newProperty)
-                    console.warn('This property is deprecated please use web3.'+ property.newProperty +' instead.');
-
-                return web3.manager.send({
-                    method: property.setter,
-                    params: [val],
-                    inputFormatter: property.inputFormatter
-                });
-            };
-        }
-
-        proto.enumerable = !property.newProperty;
-        Object.defineProperty(obj, property.name, proto);
-
-    });
-};
-
-/*jshint maxparams:4 */
-var startPolling = function (method, id, callback, uninstall) {
-    web3.manager.startPolling({
-        method: method, 
-        params: [id]
-    }, id,  callback, uninstall); 
-};
-/*jshint maxparams:3 */
-
-var stopPolling = function (id) {
-    web3.manager.stopPolling(id);
-};
-
-var ethWatch = {
-    startPolling: startPolling.bind(null, 'eth_getFilterChanges'), 
-    stopPolling: stopPolling
-};
-
-var shhWatch = {
-    startPolling: startPolling.bind(null, 'shh_getFilterChanges'), 
-    stopPolling: stopPolling
-};
-
-/// setups web3 object, and it's in-browser executed methods
-var web3 = {
-    manager: requestManager(),
-    providers: {},
-
-    setProvider: function (provider) {
-        web3.manager.setProvider(provider);
-    },
-    
-    /// Should be called to reset state of web3 object
-    /// Resets everything except manager
-    reset: function () {
-        web3.manager.reset(); 
-    },
-
-    /// @returns hex string of the input
-    toHex: utils.toHex,
-
-    /// @returns ascii string representation of hex value prefixed with 0x
-    toAscii: utils.toAscii,
-
-    /// @returns hex representation (prefixed by 0x) of ascii string
-    fromAscii: utils.fromAscii,
-
-    /// @returns decimal representaton of hex value prefixed by 0x
-    toDecimal: utils.toDecimal,
-
-    /// @returns hex representation (prefixed by 0x) of decimal value
-    fromDecimal: utils.fromDecimal,
-
-    /// @returns a BigNumber object
-    toBigNumber: utils.toBigNumber,
-
-    toWei: utils.toWei,
-    fromWei: utils.fromWei,
-    isAddress: utils.isAddress,
-
-    // provide network information
-    net: {
-        // peerCount: 
-    },
-
-
-    /// eth object prototype
-    eth: {
-        // DEPRECATED
-        contractFromAbi: function (abi) {
-            console.warn('Initiating a contract like this is deprecated please use var MyContract = eth.contract(abi); new MyContract(address); instead.');
-
-            return function(addr) {
-                // Default to address of Config. TODO: rremove prior to genesis.
-                addr = addr || '0xc6d9d2cd449a754c494264e1809c50e34d64562b';
-                var ret = web3.eth.contract(addr, abi);
-                ret.address = addr;
-                return ret;
-            };
-        },
-
-        /// @param filter may be a string, object or event
-        /// @param eventParams is optional, this is an object with optional event eventParams params
-        /// @param options is optional, this is an object with optional event options ('max'...)
-        /*jshint maxparams:4 */
-        filter: function (fil, eventParams, options) {
-
-            // if its event, treat it differently
-            if (fil._isEvent)
-                return fil(eventParams, options);
-
-            return filter(fil, ethWatch, formatters.outputLogFormatter);
-        },
-        // DEPRECATED
-        watch: function (fil, eventParams, options) {
-            console.warn('eth.watch() is deprecated please use eth.filter() instead.');
-            return this.filter(fil, eventParams, options);
-        }
-        /*jshint maxparams:3 */
-    },
-
-    /// db object prototype
-    db: {},
-
-    /// shh object prototype
-    shh: {
-        /// @param filter may be a string, object or event
-        filter: function (fil) {
-            return filter(fil, shhWatch, formatters.outputPostFormatter);
-        },
-        // DEPRECATED
-        watch: function (fil) {
-            console.warn('shh.watch() is deprecated please use shh.filter() instead.');
-            return this.filter(fil);
-        }
-    }
-};
-
-
-// ADD defaultblock
-Object.defineProperty(web3.eth, 'defaultBlock', {
-    get: function () {
-        return c.ETH_DEFAULTBLOCK;
-    },
-    set: function (val) {
-        c.ETH_DEFAULTBLOCK = val;
-        return c.ETH_DEFAULTBLOCK;
-    }
-});
-
-
-/// setups all api methods
-setupMethods(web3, web3Methods());
-setupMethods(web3.net, net.methods);
-setupProperties(web3.net, net.properties);
-setupMethods(web3.eth, eth.methods);
-setupProperties(web3.eth, eth.properties);
-setupMethods(web3.db, db.methods());
-setupMethods(web3.shh, shh.methods());
-setupMethods(ethWatch, watches.eth());
-setupMethods(shhWatch, watches.shh());
-
-module.exports = web3;
-
-
-},{"./solidity/formatters":2,"./utils/config":4,"./utils/utils":5,"./web3/db":8,"./web3/eth":9,"./web3/filter":11,"./web3/net":15,"./web3/requestmanager":17,"./web3/shh":18,"./web3/watches":20}],7:[function(require,module,exports){
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file contract.js
- * @authors:
- *   Marek Kotewicz <marek@ethdev.com>
- * @date 2014
- */
-
-var web3 = require('../web3'); 
-var abi = require('../solidity/abi');
-var utils = require('../utils/utils');
-var eventImpl = require('./event');
-var signature = require('./signature');
-
-var exportNatspecGlobals = function (vars) {
-    // it's used byt natspec.js
-    // TODO: figure out better way to solve this
-    web3._currentContractAbi = vars.abi;
-    web3._currentContractAddress = vars.address;
-    web3._currentContractMethodName = vars.method;
-    web3._currentContractMethodParams = vars.params;
-};
-
-var addFunctionRelatedPropertiesToContract = function (contract) {
-    
-    contract.call = function (options) {
-        contract._isTransaction = false;
-        contract._options = options;
-        return contract;
-    };
-
-
-    contract.sendTransaction = function (options) {
-        contract._isTransaction = true;
-        contract._options = options;
-        return contract;
-    };
-    // DEPRECATED
-    contract.transact = function (options) {
-
-        console.warn('myContract.transact() is deprecated please use myContract.sendTransaction() instead.');
-
-        return contract.sendTransaction(options);
-    };
-
-    contract._options = {};
-    ['gas', 'gasPrice', 'value', 'from'].forEach(function(p) {
-        contract[p] = function (v) {
-            contract._options[p] = v;
-            return contract;
-        };
-    });
-
-};
-
-var addFunctionsToContract = function (contract, desc, address) {
-    var inputParser = abi.inputParser(desc);
-    var outputParser = abi.outputParser(desc);
-
-    // create contract functions
-    utils.filterFunctions(desc).forEach(function (method) {
-
-        var displayName = utils.extractDisplayName(method.name);
-        var typeName = utils.extractTypeName(method.name);
-
-        var impl = function () {
-            /*jshint maxcomplexity:7 */
-            var params = Array.prototype.slice.call(arguments);
-            var sign = signature.functionSignatureFromAscii(method.name);
-            var parsed = inputParser[displayName][typeName].apply(null, params);
-
-            var options = contract._options || {};
-            options.to = address;
-            options.data = sign + parsed;
-            
-            var isTransaction = contract._isTransaction === true || (contract._isTransaction !== false && !method.constant);
-            var collapse = options.collapse !== false;
-            
-            // reset
-            contract._options = {};
-            contract._isTransaction = null;
-
-            if (isTransaction) {
-                
-                exportNatspecGlobals({
-                    abi: desc,
-                    address: address,
-                    method: method.name,
-                    params: params
-                });
-
-                // transactions do not have any output, cause we do not know, when they will be processed
-                web3.eth.sendTransaction(options);
-                return;
-            }
-            
-            var output = web3.eth.call(options);
-            var ret = outputParser[displayName][typeName](output);
-            if (collapse)
-            {
-                if (ret.length === 1)
-                    ret = ret[0];
-                else if (ret.length === 0)
-                    ret = null;
-            }
-            return ret;
-        };
-
-        if (contract[displayName] === undefined) {
-            contract[displayName] = impl;
-        }
-
-        contract[displayName][typeName] = impl;
-    });
-};
-
-var addEventRelatedPropertiesToContract = function (contract, desc, address) {
-    contract.address = address;
-    contract._onWatchEventResult = function (data) {
-        var matchingEvent = event.getMatchingEvent(utils.filterEvents(desc));
-        var parser = eventImpl.outputParser(matchingEvent);
-        return parser(data);
-    };
-    
-    Object.defineProperty(contract, 'topic', {
-        get: function() {
-            return utils.filterEvents(desc).map(function (e) {
-                return signature.eventSignatureFromAscii(e.name);
-            });
-        }
-    });
-
-};
-
-var addEventsToContract = function (contract, desc, address) {
-    // create contract events
-    utils.filterEvents(desc).forEach(function (e) {
-
-        var impl = function () {
-            var params = Array.prototype.slice.call(arguments);
-            var sign = signature.eventSignatureFromAscii(e.name);
-            var event = eventImpl.inputParser(address, sign, e);
-            var o = event.apply(null, params);
-            var outputFormatter = function (data) {
-                var parser = eventImpl.outputParser(e);
-                return parser(data);
-            };
-            return web3.eth.filter(o, undefined, undefined, outputFormatter);
-        };
-        
-        // this property should be used by eth.filter to check if object is an event
-        impl._isEvent = true;
-
-        var displayName = utils.extractDisplayName(e.name);
-        var typeName = utils.extractTypeName(e.name);
-
-        if (contract[displayName] === undefined) {
-            contract[displayName] = impl;
-        }
-
-        contract[displayName][typeName] = impl;
-
-    });
-};
-
-
-/**
- * This method should be called when we want to call / transact some solidity method from javascript
- * it returns an object which has same methods available as solidity contract description
- * usage example: 
- *
- * var abi = [{
- *      name: 'myMethod',
- *      inputs: [{ name: 'a', type: 'string' }],
- *      outputs: [{name: 'd', type: 'string' }]
- * }];  // contract abi
- *
- * var MyContract = web3.eth.contract(abi); // creation of contract prototype
- *
- * var contractInstance = new MyContract('0x0123123121');
- *
- * contractInstance.myMethod('this is test string param for call'); // myMethod call (implicit, default)
- * contractInstance.call().myMethod('this is test string param for call'); // myMethod call (explicit)
- * contractInstance.sendTransaction().myMethod('this is test string param for transact'); // myMethod sendTransaction
- *
- * @param abi - abi json description of the contract, which is being created
- * @returns contract object
- */
-var contract = function (abi) {
-
-    // return prototype
-    if(abi instanceof Array && arguments.length === 1) {
-        return Contract.bind(null, abi);
-
-    // deprecated: auto initiate contract
-    } else {
-
-        console.warn('Initiating a contract like this is deprecated please use var MyContract = eth.contract(abi); new MyContract(address); instead.');
-
-        return new Contract(arguments[1], arguments[0]);
-    }
-
-};
-
-function Contract(abi, address) {
-
-    // workaround for invalid assumption that method.name is the full anonymous prototype of the method.
-    // it's not. it's just the name. the rest of the code assumes it's actually the anonymous
-    // prototype, so we make it so as a workaround.
-    // TODO: we may not want to modify input params, maybe use copy instead?
-    abi.forEach(function (method) {
-        if (method.name.indexOf('(') === -1) {
-            var displayName = method.name;
-            var typeName = method.inputs.map(function(i){return i.type; }).join();
-            method.name = displayName + '(' + typeName + ')';
-        }
-    });
-
-    var result = {};
-    addFunctionRelatedPropertiesToContract(result);
-    addFunctionsToContract(result, abi, address);
-    addEventRelatedPropertiesToContract(result, abi, address);
-    addEventsToContract(result, abi, address);
-
-    return result;
-}
-
-module.exports = contract;
-
-
-},{"../solidity/abi":1,"../utils/utils":5,"../web3":6,"./event":10,"./signature":19}],8:[function(require,module,exports){
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file db.js
- * @authors:
- *   Marek Kotewicz <marek@ethdev.com>
- * @date 2015
- */
-
-/// @returns an array of objects describing web3.db api methods
-var methods = function () {
-    return [
-    { name: 'put', call: 'db_put' },
-    { name: 'get', call: 'db_get' },
-    { name: 'putString', call: 'db_putString' },
-    { name: 'getString', call: 'db_getString' }
-    ];
-};
-
-module.exports = {
-    methods: methods
-};
-
-},{}],9:[function(require,module,exports){
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file eth.js
- * @authors:
- *   Marek Kotewicz <marek@ethdev.com>
- * @date 2015
- */
-
-/**
- * Web3
- * 
- * @module web3
- */
-
-/**
- * Eth methods and properties
- *
- * An example method object can look as follows:
- *
- *      {
- *      name: 'getBlock',
- *      call: blockCall,
- *      outputFormatter: formatters.outputBlockFormatter,
- *      inputFormatter: [ // can be a formatter funciton or an array of functions. Where each item in the array will be used for one parameter
- *           utils.toHex, // formats paramter 1
- *           function(param){ if(!param) return false; } // formats paramter 2
- *         ]
- *       },
- *
- * @class [web3] eth
- * @constructor
- */
-
-
-var formatters = require('./formatters');
-var utils = require('../utils/utils');
-
-
-var blockCall = function (args) {
-    return (utils.isString(args[0]) && args[0].indexOf('0x') === 0) ? "eth_getBlockByHash" : "eth_getBlockByNumber";
-};
-
-var transactionFromBlockCall = function (args) {
-    return (utils.isString(args[0]) && args[0].indexOf('0x') === 0) ? 'eth_getTransactionByBlockHashAndIndex' : 'eth_getTransactionByBlockNumberAndIndex';
-};
-
-var uncleCall = function (args) {
-    return (utils.isString(args[0]) && args[0].indexOf('0x') === 0) ? 'eth_getUncleByBlockHashAndIndex' : 'eth_getUncleByBlockNumberAndIndex';
-};
-
-var getBlockTransactionCountCall = function (args) {
-    return (utils.isString(args[0]) && args[0].indexOf('0x') === 0) ? 'eth_getBlockTransactionCountByHash' : 'eth_getBlockTransactionCountByNumber';
-};
-
-var uncleCountCall = function (args) {
-    return (utils.isString(args[0]) && args[0].indexOf('0x') === 0) ? 'eth_getUncleCountByBlockHash' : 'eth_getUncleCountByBlockNumber';
-};
-
-/// @returns an array of objects describing web3.eth api methods
-var methods = [
-    { name: 'getBalance', call: 'eth_getBalance', addDefaultblock: 2,
-        outputFormatter: formatters.convertToBigNumber},
-    { name: 'getStorage', call: 'eth_getStorage', addDefaultblock: 2},
-    { name: 'getStorageAt', call: 'eth_getStorageAt', addDefaultblock: 3,
-        inputFormatter: utils.toHex},
-    { name: 'getData', call: 'eth_getData', addDefaultblock: 2},
-    { name: 'getBlock', call: blockCall,
-        outputFormatter: formatters.outputBlockFormatter,
-        inputFormatter: [utils.toHex, function(param){ return (!param) ? false : true; }]},
-    { name: 'getUncle', call: uncleCall,
-        outputFormatter: formatters.outputBlockFormatter,
-        inputFormatter: [utils.toHex, utils.toHex, function(param){ return (!param) ? false : true; }]},
-    { name: 'getCompilers', call: 'eth_getCompilers' },
-    { name: 'getBlockTransactionCount', call: getBlockTransactionCountCall,
-        outputFormatter: utils.toDecimal,
-        inputFormatter: utils.toHex },
-    { name: 'getBlockUncleCount', call: uncleCountCall,
-        outputFormatter: utils.toDecimal,
-        inputFormatter: utils.toHex },
-    { name: 'getTransaction', call: 'eth_getTransactionByHash',
-        outputFormatter: formatters.outputTransactionFormatter },
-    { name: 'getTransactionFromBlock', call: transactionFromBlockCall,
-        outputFormatter: formatters.outputTransactionFormatter,
-        inputFormatter: utils.toHex },
-    { name: 'getTransactionCount', call: 'eth_getTransactionCount', addDefaultblock: 2,
-        outputFormatter: utils.toDecimal},
-    { name: 'sendTransaction', call: 'eth_sendTransaction',
-        inputFormatter: formatters.inputTransactionFormatter },
-    { name: 'call', call: 'eth_call', addDefaultblock: 2,
-        inputFormatter: formatters.inputCallFormatter },
-    { name: 'compile.solidity', call: 'eth_compileSolidity', inputFormatter: utils.toHex },
-    { name: 'compile.lll', call: 'eth_compileLLL', inputFormatter: utils.toHex },
-    { name: 'compile.serpent', call: 'eth_compileSerpent', inputFormatter: utils.toHex },
-    { name: 'flush', call: 'eth_flush' },
-
-    // deprecated methods
-    { name: 'balanceAt', call: 'eth_balanceAt', newMethod: 'eth.getBalance' },
-    { name: 'stateAt', call: 'eth_stateAt', newMethod: 'eth.getStorageAt' },
-    { name: 'storageAt', call: 'eth_storageAt', newMethod: 'eth.getStorage' },
-    { name: 'countAt', call: 'eth_countAt', newMethod: 'eth.getTransactionCount' },
-    { name: 'codeAt', call: 'eth_codeAt', newMethod: 'eth.getData' },
-    { name: 'transact', call: 'eth_transact', newMethod: 'eth.sendTransaction' },
-    { name: 'block', call: blockCall, newMethod: 'eth.getBlock' },
-    { name: 'transaction', call: transactionFromBlockCall, newMethod: 'eth.getTransaction' },
-    { name: 'uncle', call: uncleCall, newMethod: 'eth.getUncle' },
-    { name: 'compilers', call: 'eth_compilers', newMethod: 'eth.getCompilers' },
-    { name: 'solidity', call: 'eth_solidity', newMethod: 'eth.compile.solidity' },
-    { name: 'lll', call: 'eth_lll', newMethod: 'eth.compile.lll' },
-    { name: 'serpent', call: 'eth_serpent', newMethod: 'eth.compile.serpent' },
-    { name: 'transactionCount', call: getBlockTransactionCountCall, newMethod: 'eth.getBlockTransactionCount' },
-    { name: 'uncleCount', call: uncleCountCall, newMethod: 'eth.getBlockUncleCount' },
-    { name: 'logs', call: 'eth_logs' }
-];
-
-/// @returns an array of objects describing web3.eth api properties
-var properties = [
-    { name: 'coinbase', getter: 'eth_coinbase'},
-    { name: 'mining', getter: 'eth_mining'},
-    { name: 'gasPrice', getter: 'eth_gasPrice', outputFormatter: formatters.convertToBigNumber},
-    { name: 'accounts', getter: 'eth_accounts' },
-    { name: 'blockNumber', getter: 'eth_blockNumber', outputFormatter: utils.toDecimal},
-
-    // deprecated properties
-    { name: 'listening', getter: 'net_listening', setter: 'eth_setListening', newProperty: 'net.listening'},
-    { name: 'peerCount', getter: 'net_peerCount', newProperty: 'net.peerCount'},
-    { name: 'number', getter: 'eth_number', newProperty: 'eth.blockNumber'}
-];
-
-
-module.exports = {
-    methods: methods,
-    properties: properties
-};
-
-
-},{"../utils/utils":5,"./formatters":12}],10:[function(require,module,exports){
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file event.js
- * @authors:
- *   Marek Kotewicz <marek@ethdev.com>
- * @date 2014
- */
-
-var abi = require('../solidity/abi');
-var utils = require('../utils/utils');
-var signature = require('./signature');
-
-/// filter inputs array && returns only indexed (or not) inputs
-/// @param inputs array
-/// @param bool if result should be an array of indexed params on not
-/// @returns array of (not?) indexed params
-var filterInputs = function (inputs, indexed) {
-    return inputs.filter(function (current) {
-        return current.indexed === indexed;
-    });
-};
-
-var inputWithName = function (inputs, name) {
-    var index = utils.findIndex(inputs, function (input) {
-        return input.name === name;
-    });
-    
-    if (index === -1) {
-        console.error('indexed param with name ' + name + ' not found');
-        return undefined;
-    }
-    return inputs[index];
-};
-
-var indexedParamsToTopics = function (event, indexed) {
-    // sort keys?
-    return Object.keys(indexed).map(function (key) {
-        var inputs = [inputWithName(filterInputs(event.inputs, true), key)];
-
-        var value = indexed[key];
-        if (value instanceof Array) {
-            return value.map(function (v) {
-                return abi.formatInput(inputs, [v]);
-            }); 
-        }
-        return abi.formatInput(inputs, [value]);
-    });
-};
-
-var inputParser = function (address, sign, event) {
-    
-    // valid options are 'earliest', 'latest', 'offset' and 'max', as defined for 'eth.filter'
-    return function (indexed, options) {
-        var o = options || {};
-        o.address = address;
-        o.topic = [];
-        o.topic.push(sign);
-        if (indexed) {
-            o.topic = o.topic.concat(indexedParamsToTopics(event, indexed));
-        }
-        return o;
-    };
-};
-
-var getArgumentsObject = function (inputs, indexed, notIndexed) {
-    var indexedCopy = indexed.slice();
-    var notIndexedCopy = notIndexed.slice();
-    return inputs.reduce(function (acc, current) {
-        var value;
-        if (current.indexed)
-            value = indexedCopy.splice(0, 1)[0];
-        else
-            value = notIndexedCopy.splice(0, 1)[0];
-
-        acc[current.name] = value;
-        return acc;
-    }, {}); 
-};
- 
-var outputParser = function (event) {
-    
-    return function (output) {
-        var result = {
-            event: utils.extractDisplayName(event.name),
-            number: output.number,
-            hash: output.hash,
-            args: {}
-        };
-
-        output.topics = output.topic; // fallback for go-ethereum
-        if (!output.topic) {
-            return result;
-        }
-       
-        var indexedOutputs = filterInputs(event.inputs, true);
-        var indexedData = "0x" + output.topic.slice(1, output.topic.length).map(function (topic) { return topic.slice(2); }).join("");
-        var indexedRes = abi.formatOutput(indexedOutputs, indexedData);
-
-        var notIndexedOutputs = filterInputs(event.inputs, false);
-        var notIndexedRes = abi.formatOutput(notIndexedOutputs, output.data);
-
-        result.args = getArgumentsObject(event.inputs, indexedRes, notIndexedRes);
-
-        return result;
-    };
-};
-
-var getMatchingEvent = function (events, payload) {
-    for (var i = 0; i < events.length; i++) {
-        var sign = signature.eventSignatureFromAscii(events[i].name); 
-        if (sign === payload.topic[0]) {
-            return events[i];
-        }
-    }
-    return undefined;
-};
-
-
-module.exports = {
-    inputParser: inputParser,
-    outputParser: outputParser,
-    getMatchingEvent: getMatchingEvent
-};
-
-
-},{"../solidity/abi":1,"../utils/utils":5,"./signature":19}],11:[function(require,module,exports){
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file filter.js
- * @authors:
- *   Jeffrey Wilcke <jeff@ethdev.com>
- *   Marek Kotewicz <marek@ethdev.com>
- *   Marian Oancea <marian@ethdev.com>
- *   Gav Wood <g@ethdev.com>
- * @date 2014
- */
-
-var utils = require('../utils/utils');
-
-/// Should be called to check if filter implementation is valid
-/// @returns true if it is, otherwise false
-var implementationIsValid = function (i) {
-    return !!i && 
-        typeof i.newFilter === 'function' && 
-        typeof i.getLogs === 'function' && 
-        typeof i.uninstallFilter === 'function' &&
-        typeof i.startPolling === 'function' &&
-        typeof i.stopPolling === 'function';
-};
-
-/// This method should be called on options object, to verify deprecated properties && lazy load dynamic ones
-/// @param should be string or object
-/// @returns options string or object
-var getOptions = function (options) {
-    /*jshint maxcomplexity:5 */
-
-    if (typeof options === 'string') {
-        return options;
-    } 
-
-    options = options || {};
-
-    if (options.topic) {
-        console.warn('"topic" is deprecated, is "topics" instead');
-        options.topics = options.topic;
-    }
-
-    if (options.earliest) {
-        console.warn('"earliest" is deprecated, is "fromBlock" instead');
-        options.fromBlock = options.earliest;
-    }
-
-    if (options.latest) {
-        console.warn('"latest" is deprecated, is "toBlock" instead');
-        options.toBlock = options.latest;
-    }
-
-    if (options.skip) {
-        console.warn('"skip" is deprecated, is "offset" instead');
-        options.offset = options.skip;
-    }
-
-    if (options.max) {
-        console.warn('"max" is deprecated, is "limit" instead');
-        options.limit = options.max;
-    }
-
-    // make sure topics, get converted to hex
-    if(options.topics instanceof Array) {
-        options.topics = options.topics.map(function(topic){
-            return utils.toHex(topic);
-        });
-    }
-
-
-    // evaluate lazy properties
-    return {
-        fromBlock: utils.toHex(options.fromBlock),
-        toBlock: utils.toHex(options.toBlock),
-        limit: utils.toHex(options.limit),
-        offset: utils.toHex(options.offset),
-        to: options.to,
-        address: options.address,
-        topics: options.topics
-    };
-};
-
-/// Should be used when we want to watch something
-/// it's using inner polling mechanism and is notified about changes
-/// @param options are filter options
-/// @param implementation, an abstract polling implementation
-/// @param formatter (optional), callback function which formats output before 'real' callback 
-var filter = function(options, implementation, formatter) {
-    if (!implementationIsValid(implementation)) {
-        console.error('filter implemenation is invalid');
-        return;
-    }
-
-    options = getOptions(options);
-    var callbacks = [];
-    var filterId = implementation.newFilter(options);
-
-    // call the callbacks
-    var onMessages = function (messages) {
-        messages.forEach(function (message) {
-            message = formatter ? formatter(message) : message;
-            callbacks.forEach(function (callback) {
-                callback(message);
-            });
-        });
-    };
-
-    implementation.startPolling(filterId, onMessages, implementation.uninstallFilter);
-
-    var watch = function(callback) {
-        callbacks.push(callback);
-    };
-
-    var stopWatching = function() {
-        implementation.stopPolling(filterId);
-        implementation.uninstallFilter(filterId);
-        callbacks = [];
-    };
-
-    var get = function () {
-        return implementation.getLogs(filterId);
-    };
-    
-    return {
-        watch: watch,
-        stopWatching: stopWatching,
-        get: get,
-
-        // DEPRECATED methods
-        changed:  function(){
-            console.warn('watch().changed() is deprecated please use filter().watch() instead.');
-            return watch.apply(this, arguments);
-        },
-        arrived:  function(){
-            console.warn('watch().arrived() is deprecated please use filter().watch() instead.');
-            return watch.apply(this, arguments);
-        },
-        happened:  function(){
-            console.warn('watch().happened() is deprecated please use filter().watch() instead.');
-            return watch.apply(this, arguments);
-        },
-        uninstall: function(){
-            console.warn('watch().uninstall() is deprecated please use filter().stopWatching() instead.');
-            return stopWatching.apply(this, arguments);
-        },
-        messages: function(){
-            console.warn('watch().messages() is deprecated please use filter().get() instead.');
-            return get.apply(this, arguments);
-        },
-        logs: function(){
-            console.warn('watch().logs() is deprecated please use filter().get() instead.');
-            return get.apply(this, arguments);
-        }
-    };
-};
-
-module.exports = filter;
-
-
-},{"../utils/utils":5}],12:[function(require,module,exports){
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file formatters.js
- * @authors:
- *   Marek Kotewicz <marek@ethdev.com>
- *   Fabian Vogelsteller <fabian@ethdev.com>
- * @date 2015
- */
-
-var utils = require('../utils/utils');
-
-/**
- * Should the input to a big number
- *
- * @method convertToBigNumber
- * @param {String|Number|BigNumber}
- * @returns {BigNumber} object
- */
-var convertToBigNumber = function (value) {
-    return utils.toBigNumber(value);
-};
-
-/**
- * Formats the input of a transaction and converts all values to HEX
- *
- * @method inputTransactionFormatter
- * @param {Object} transaction options
- * @returns object
-*/
-var inputTransactionFormatter = function (options){
-
-    // make code -> data
-    if (options.code) {
-        options.data = options.code;
-        delete options.code;
-    }
-
-    ['gasPrice', 'gas', 'value'].forEach(function(key){
-        options[key] = utils.fromDecimal(options[key]);
-    });
-
-    return options;
-};
-
-/**
- * Formats the output of a transaction to its proper values
- * 
- * @method outputTransactionFormatter
- * @param {Object} transaction
- * @returns {Object} transaction
-*/
-var outputTransactionFormatter = function (tx){
-    tx.gas = utils.toDecimal(tx.gas);
-    tx.gasPrice = utils.toBigNumber(tx.gasPrice);
-    tx.value = utils.toBigNumber(tx.value);
-    return tx;
-};
-
-/**
- * Formats the input of a call and converts all values to HEX
- *
- * @method inputCallFormatter
- * @param {Object} transaction options
- * @returns object
-*/
-var inputCallFormatter = function (options){
-
-    // make code -> data
-    if (options.code) {
-        options.data = options.code;
-        delete options.code;
-    }
-
-    return options;
-};
-
-
-/**
- * Formats the output of a block to its proper values
- *
- * @method outputBlockFormatter
- * @param {Object} block object 
- * @returns {Object} block object
-*/
-var outputBlockFormatter = function(block){
-
-    // transform to number
-    block.gasLimit = utils.toDecimal(block.gasLimit);
-    block.gasUsed = utils.toDecimal(block.gasUsed);
-    block.size = utils.toDecimal(block.size);
-    block.timestamp = utils.toDecimal(block.timestamp);
-    block.number = utils.toDecimal(block.number);
-
-    block.minGasPrice = utils.toBigNumber(block.minGasPrice);
-    block.difficulty = utils.toBigNumber(block.difficulty);
-    block.totalDifficulty = utils.toBigNumber(block.totalDifficulty);
-
-    if(block.transactions instanceof Array) {
-        block.transactions.forEach(function(item){
-            if(!utils.isString(item))
-                return outputTransactionFormatter(item);
-        });
-    }
-
-    return block;
-};
-
-/**
- * Formats the output of a log
- * 
- * @method outputLogFormatter
- * @param {Object} log object
- * @returns {Object} log
-*/
-var outputLogFormatter = function(log){
-    log.number = utils.toDecimal(log.number);
-    return log;
-};
-
-
-/**
- * Formats the input of a whisper post and converts all values to HEX
- *
- * @method inputPostFormatter
- * @param {Object} transaction object
- * @returns {Object}
-*/
-var inputPostFormatter = function(post){
-
-    post.payload = utils.toHex(post.payload);
-    post.ttl = utils.fromDecimal(post.ttl);
-    post.workToProve = utils.fromDecimal(post.workToProve);
-
-    if(!(post.topic instanceof Array))
-        post.topic = [post.topic];
-
-
-    // format the following options
-    post.topic = post.topic.map(function(topic){
-        return utils.fromAscii(topic);
-    });
-
-    return post;
-};
-
-/**
- * Formats the output of a received post message
- *
- * @method outputPostFormatter
- * @param {Object}
- * @returns {Object}
- */
-var outputPostFormatter = function(post){
-
-    post.expiry = utils.toDecimal(post.expiry);
-    post.sent = utils.toDecimal(post.sent);
-    post.ttl = utils.toDecimal(post.ttl);
-    post.payloadRaw = post.payload;
-    post.payload = utils.toAscii(post.payload);
-
-    if(post.payload.indexOf('{') === 0 || post.payload.indexOf('[') === 0) {
-        try {
-            post.payload = JSON.parse(post.payload);
-        } catch (e) { }
-    }
-
-    // format the following options
-    post.topic = post.topic.map(function(topic){
-        return utils.toAscii(topic);
-    });
-
-    return post;
-};
-
-module.exports = {
-    convertToBigNumber: convertToBigNumber,
-    inputTransactionFormatter: inputTransactionFormatter,
-    outputTransactionFormatter: outputTransactionFormatter,
-    inputCallFormatter: inputCallFormatter,
-    outputBlockFormatter: outputBlockFormatter,
-    outputLogFormatter: outputLogFormatter,
-    inputPostFormatter: inputPostFormatter,
-    outputPostFormatter: outputPostFormatter
-};
-
-
-},{"../utils/utils":5}],13:[function(require,module,exports){
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file httpprovider.js
- * @authors:
- *   Marek Kotewicz <marek@ethdev.com>
- *   Marian Oancea <marian@ethdev.com>
- * @date 2014
- */
-
-if ("build" !== 'build') {/*
-        var XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest; // jshint ignore:line
-*/}
-
-var HttpProvider = function (host) {
-    this.name  = 'HTTP';
-    this.handlers = [];
-    this.host = host || 'http://localhost:8080';
-};
-
-HttpProvider.prototype.send = function (payload, callback) {
-    var request = new XMLHttpRequest();
-    request.open('POST', this.host, false);
-
-    // ASYNC
-    if(typeof callback === 'function') {
-        request.onreadystatechange = function() {
-            if(request.readyState === 4) {
-                var result = '';
-                try {
-                    result = JSON.parse(request.responseText)
-                } catch(error) {
-                    result = error;
-                }
-                callback(result, request.status);
-            }
-        };
-
-        request.open('POST', this.host, true);
-        request.send(JSON.stringify(payload));
-
-    // SYNC
-    } else {
-        request.open('POST', this.host, false);
-        request.send(JSON.stringify(payload));
-
-        // check request.status
-        if(request.status !== 200)
-            return;
-        return JSON.parse(request.responseText);
-        
-    }
-};
-
-module.exports = HttpProvider;
-
-
-},{}],14:[function(require,module,exports){
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file jsonrpc.js
- * @authors:
- *   Marek Kotewicz <marek@ethdev.com>
- * @date 2015
- */
-
-var messageId = 1;
-
-/// Should be called to valid json create payload object
-/// @param method of jsonrpc call, required
-/// @param params, an array of method params, optional
-/// @returns valid jsonrpc payload object
-var toPayload = function (method, params) {
-    if (!method)
-        console.error('jsonrpc method should be specified!');
-
-    return {
-        jsonrpc: '2.0',
-        method: method,
-        params: params || [],
-        id: messageId++
-    }; 
-};
-
-/// Should be called to check if jsonrpc response is valid
-/// @returns true if response is valid, otherwise false 
-var isValidResponse = function (response) {
-    return !!response &&
-        !response.error &&
-        response.jsonrpc === '2.0' &&
-        typeof response.id === 'number' &&
-        response.result !== undefined; // only undefined is not valid json object
-};
-
-/// Should be called to create batch payload object
-/// @param messages, an array of objects with method (required) and params (optional) fields
-var toBatchPayload = function (messages) {
-    return messages.map(function (message) {
-        return toPayload(message.method, message.params);
-    }); 
-};
-
-module.exports = {
-    toPayload: toPayload,
-    isValidResponse: isValidResponse,
-    toBatchPayload: toBatchPayload
-};
-
-
-
-},{}],15:[function(require,module,exports){
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file eth.js
- * @authors:
- *   Marek Kotewicz <marek@ethdev.com>
- * @date 2015
- */
-
-var utils = require('../utils/utils');
-
-/// @returns an array of objects describing web3.eth api methods
-var methods = [
-    // { name: 'getBalance', call: 'eth_balanceAt', outputFormatter: formatters.convertToBigNumber},
-];
-
-/// @returns an array of objects describing web3.eth api properties
-var properties = [
-    { name: 'listening', getter: 'net_listening'},
-    { name: 'peerCount', getter: 'net_peerCount', outputFormatter: utils.toDecimal },
-];
-
-
-module.exports = {
-    methods: methods,
-    properties: properties
-};
-
-
-},{"../utils/utils":5}],16:[function(require,module,exports){
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file qtsync.js
- * @authors:
- *   Marek Kotewicz <marek@ethdev.com>
- *   Marian Oancea <marian@ethdev.com>
- * @date 2014
- */
-
-var QtSyncProvider = function () {
-};
-
-QtSyncProvider.prototype.send = function (payload) {
-    var result = navigator.qt.callMethod(JSON.stringify(payload));
-    return JSON.parse(result);
-};
-
-module.exports = QtSyncProvider;
-
-
-},{}],17:[function(require,module,exports){
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file requestmanager.js
- * @authors:
- *   Jeffrey Wilcke <jeff@ethdev.com>
- *   Marek Kotewicz <marek@ethdev.com>
- *   Marian Oancea <marian@ethdev.com>
- *   Gav Wood <g@ethdev.com>
- * @date 2014
- */
-
-var jsonrpc = require('./jsonrpc');
-var c = require('../utils/config');
-
-/**
- * It's responsible for passing messages to providers
- * It's also responsible for polling the ethereum node for incoming messages
- * Default poll timeout is 1 second
- */
-var requestManager = function() {
-    var polls = [];
-    var timeout = null;
-    var provider;
-
-    var send = function (data, callback) {
-        /*jshint maxcomplexity: 7 */
-
-        // FORMAT BASED ON ONE FORMATTER function
-        if(typeof data.inputFormatter === 'function') {
-            data.params = Array.prototype.map.call(data.params, function(item, index){
-                // format everything besides the defaultblock, which is already formated
-                return (!data.addDefaultblock || index+1 < data.addDefaultblock)
-                    ? data.inputFormatter(item)
-                    : item;
-            });
-
-        // FORMAT BASED ON the input FORMATTER ARRAY
-        } else if(data.inputFormatter instanceof Array) {
-            data.params = Array.prototype.map.call(data.inputFormatter, function(formatter, index){
-                // format everything besides the defaultblock, which is already formated
-                return (!data.addDefaultblock || index+1 < data.addDefaultblock)
-                    ? formatter(data.params[index])
-                    : data.params[index];
-            });
-        }
-
-
-        var payload = jsonrpc.toPayload(data.method, data.params);
-        
-        if (!provider) {
-            console.error('provider is not set');
-            return null;
-        }
-
-        // HTTP ASYNC (only when callback is given, and it a HttpProvidor)
-        if(typeof callback === 'function' && provider.name === 'HTTP'){
-            provider.send(payload, function(result, status){
-
-                if (!jsonrpc.isValidResponse(result)) {
-                    if(typeof result === 'object' && result.error && result.error.message) {
-                        console.error(result.error.message);
-                        callback(result.error);
-                    } else {
-                        callback(new Error({
-                            status: status,
-                            error: result,
-                            message: 'Bad Request'
-                        }));
-                    }
-                    return null;
-                }
-
-                // format the output
-                callback(null, (typeof data.outputFormatter === 'function') ? data.outputFormatter(result.result) : result.result);
-            });
-
-        // SYNC
-        } else {
-            var result = provider.send(payload);
-
-            if (!jsonrpc.isValidResponse(result)) {
-                console.log(result);
-                if(typeof result === 'object' && result.error && result.error.message)
-                    console.error(result.error.message);
-                return null;
-            }
-
-            // format the output
-            return (typeof data.outputFormatter === 'function') ? data.outputFormatter(result.result) : result.result;
-        }
-        
-    };
-
-    var setProvider = function (p) {
-        provider = p;
-    };
-
-    /*jshint maxparams:4 */
-    var startPolling = function (data, pollId, callback, uninstall) {
-        polls.push({data: data, id: pollId, callback: callback, uninstall: uninstall});
-    };
-    /*jshint maxparams:3 */
-
-    var stopPolling = function (pollId) {
-        for (var i = polls.length; i--;) {
-            var poll = polls[i];
-            if (poll.id === pollId) {
-                polls.splice(i, 1);
-            }
-        }
-    };
-
-    var reset = function () {
-        polls.forEach(function (poll) {
-            poll.uninstall(poll.id); 
-        });
-        polls = [];
-
-        if (timeout) {
-            clearTimeout(timeout);
-            timeout = null;
-        }
-        poll();
-    };
-
-    var poll = function () {
-        polls.forEach(function (data) {
-            // send async
-            send(data.data, function(result){
-                if (!(result instanceof Array) || result.length === 0) {
-                    return;
-                }
-                data.callback(result);
-            });
-        });
-        timeout = setTimeout(poll, c.ETH_POLLING_TIMEOUT);
-    };
-    
-    poll();
-
-    return {
-        send: send,
-        setProvider: setProvider,
-        startPolling: startPolling,
-        stopPolling: stopPolling,
-        reset: reset
-    };
-};
-
-module.exports = requestManager;
-
-
-},{"../utils/config":4,"./jsonrpc":14}],18:[function(require,module,exports){
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file shh.js
- * @authors:
- *   Marek Kotewicz <marek@ethdev.com>
- * @date 2015
- */
-
-var formatters = require('./formatters');
-
-/// @returns an array of objects describing web3.shh api methods
-var methods = function () {
-    return [
-    { name: 'post', call: 'shh_post', inputFormatter: formatters.inputPostFormatter },
-    { name: 'newIdentity', call: 'shh_newIdentity' },
-    { name: 'hasIdentity', call: 'shh_hasIdentity' },
-    { name: 'newGroup', call: 'shh_newGroup' },
-    { name: 'addToGroup', call: 'shh_addToGroup' },
-
-    // deprecated
-    { name: 'haveIdentity', call: 'shh_haveIdentity', newMethod: 'shh.hasIdentity' },
-    ];
-};
-
-module.exports = {
-    methods: methods
-};
-
-
-},{"./formatters":12}],19:[function(require,module,exports){
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file signature.js
- * @authors:
- *   Marek Kotewicz <marek@ethdev.com>
- * @date 2015
- */
-
-var web3 = require('../web3'); 
-var c = require('../utils/config');
-
-/// @param function name for which we want to get signature
-/// @returns signature of function with given name
-var functionSignatureFromAscii = function (name) {
-    return web3.sha3(web3.fromAscii(name)).slice(0, 2 + c.ETH_SIGNATURE_LENGTH * 2);
-};
-
-/// @param event name for which we want to get signature
-/// @returns signature of event with given name
-var eventSignatureFromAscii = function (name) {
-    return web3.sha3(web3.fromAscii(name));
-};
-
-module.exports = {
-    functionSignatureFromAscii: functionSignatureFromAscii,
-    eventSignatureFromAscii: eventSignatureFromAscii
-};
-
-
-},{"../utils/config":4,"../web3":6}],20:[function(require,module,exports){
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file watches.js
- * @authors:
- *   Marek Kotewicz <marek@ethdev.com>
- * @date 2015
- */
-
-/// @returns an array of objects describing web3.eth.filter api methods
-var eth = function () {
-    var newFilter = function (args) {
-        return typeof args[0] === 'string' ? 'eth_newBlockFilter' : 'eth_newFilter';
-    };
-
-    return [
-    { name: 'newFilter', call: newFilter },
-    { name: 'uninstallFilter', call: 'eth_uninstallFilter' },
-    { name: 'getLogs', call: 'eth_getFilterLogs' }
-    ];
-};
-
-/// @returns an array of objects describing web3.shh.watch api methods
-var shh = function () {
-    return [
-    { name: 'newFilter', call: 'shh_newFilter' },
-    { name: 'uninstallFilter', call: 'shh_uninstallFilter' },
-    { name: 'getLogs', call: 'shh_getMessages' }
-    ];
-};
-
-module.exports = {
-    eth: eth,
-    shh: shh
-};
-
-
-},{}],"web3":[function(require,module,exports){
-var web3 = require('./lib/web3');
-web3.providers.HttpProvider = require('./lib/web3/httpprovider');
-web3.providers.QtSyncProvider = require('./lib/web3/qtsync');
-web3.eth.contract = require('./lib/web3/contract');
-web3.abi = require('./lib/solidity/abi');
-
-module.exports = web3;
-
-},{"./lib/solidity/abi":1,"./lib/web3":6,"./lib/web3/contract":7,"./lib/web3/httpprovider":13,"./lib/web3/qtsync":16}]},{},["web3"])
-
-
-//# sourceMappingURL=ethereum.js.map
diff --git a/cmd/mist/assets/ext/ethereum.js/dist/ethereum.js.map b/cmd/mist/assets/ext/ethereum.js/dist/ethereum.js.map
deleted file mode 100644
index e441da86c..000000000
--- a/cmd/mist/assets/ext/ethereum.js/dist/ethereum.js.map
+++ /dev/null
@@ -1,41 +0,0 @@
-{
-  "version": 3,
-  "sources": [
-    "node_modules/browserify/node_modules/browser-pack/_prelude.js",
-    "lib/abi.js",
-    "lib/const.js",
-    "lib/contract.js",
-    "lib/event.js",
-    "lib/filter.js",
-    "lib/formatters.js",
-    "lib/httpsync.js",
-    "lib/jsonrpc.js",
-    "lib/providermanager.js",
-    "lib/qtsync.js",
-    "lib/types.js",
-    "lib/utils.js",
-    "lib/web3.js",
-    "index.js"
-  ],
-  "names": [],
-  "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA",
-  "file": "generated.js",
-  "sourceRoot": "",
-  "sourcesContent": [
-    "(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})",
-    "/*\n    This file is part of ethereum.js.\n\n    ethereum.js is free software: you can redistribute it and/or modify\n    it under the terms of the GNU Lesser General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    ethereum.js is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU Lesser General Public License for more details.\n\n    You should have received a copy of the GNU Lesser General Public License\n    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.\n*/\n/** @file abi.js\n * @authors:\n *   Marek Kotewicz <marek@ethdev.com>\n *   Gav Wood <g@ethdev.com>\n * @date 2014\n */\n\nvar web3 = require('./web3'); \nvar utils = require('./utils');\nvar types = require('./types');\nvar c = require('./const');\nvar f = require('./formatters');\n\nvar displayTypeError = function (type) {\n    console.error('parser does not support type: ' + type);\n};\n\n/// This method should be called if we want to check if givent type is an array type\n/// @returns true if it is, otherwise false\nvar arrayType = function (type) {\n    return type.slice(-2) === '[]';\n};\n\nvar dynamicTypeBytes = function (type, value) {\n    // TODO: decide what to do with array of strings\n    if (arrayType(type) || type === 'string')    // only string itself that is dynamic; stringX is static length.\n        return f.formatInputInt(value.length); \n    return \"\";\n};\n\nvar inputTypes = types.inputTypes(); \n\n/// Formats input params to bytes\n/// @param abi contract method inputs\n/// @param array of params that will be formatted to bytes\n/// @returns bytes representation of input params\nvar formatInput = function (inputs, params) {\n    var bytes = \"\";\n    var padding = c.ETH_PADDING * 2;\n\n    /// first we iterate in search for dynamic \n    inputs.forEach(function (input, index) {\n        bytes += dynamicTypeBytes(input.type, params[index]);\n    });\n\n    inputs.forEach(function (input, i) {\n        var typeMatch = false;\n        for (var j = 0; j < inputTypes.length && !typeMatch; j++) {\n            typeMatch = inputTypes[j].type(inputs[i].type, params[i]);\n        }\n        if (!typeMatch) {\n            displayTypeError(inputs[i].type);\n        }\n\n        var formatter = inputTypes[j - 1].format;\n        var toAppend = \"\";\n\n        if (arrayType(inputs[i].type))\n            toAppend = params[i].reduce(function (acc, curr) {\n                return acc + formatter(curr);\n            }, \"\");\n        else\n            toAppend = formatter(params[i]);\n\n        bytes += toAppend; \n    });\n    return bytes;\n};\n\nvar dynamicBytesLength = function (type) {\n    if (arrayType(type) || type === 'string')   // only string itself that is dynamic; stringX is static length.\n        return c.ETH_PADDING * 2;\n    return 0;\n};\n\nvar outputTypes = types.outputTypes(); \n\n/// Formats output bytes back to param list\n/// @param contract abi method outputs\n/// @param bytes representtion of output \n/// @returns array of output params \nvar formatOutput = function (outs, output) {\n    \n    output = output.slice(2);\n    var result = [];\n    var padding = c.ETH_PADDING * 2;\n\n    var dynamicPartLength = outs.reduce(function (acc, curr) {\n        return acc + dynamicBytesLength(curr.type);\n    }, 0);\n    \n    var dynamicPart = output.slice(0, dynamicPartLength);\n    output = output.slice(dynamicPartLength);\n\n    outs.forEach(function (out, i) {\n        var typeMatch = false;\n        for (var j = 0; j < outputTypes.length && !typeMatch; j++) {\n            typeMatch = outputTypes[j].type(outs[i].type);\n        }\n\n        if (!typeMatch) {\n            displayTypeError(outs[i].type);\n        }\n\n        var formatter = outputTypes[j - 1].format;\n        if (arrayType(outs[i].type)) {\n            var size = f.formatOutputUInt(dynamicPart.slice(0, padding));\n            dynamicPart = dynamicPart.slice(padding);\n            var array = [];\n            for (var k = 0; k < size; k++) {\n                array.push(formatter(output.slice(0, padding))); \n                output = output.slice(padding);\n            }\n            result.push(array);\n        }\n        else if (types.prefixedType('string')(outs[i].type)) {\n            dynamicPart = dynamicPart.slice(padding); \n            result.push(formatter(output.slice(0, padding)));\n            output = output.slice(padding);\n        } else {\n            result.push(formatter(output.slice(0, padding)));\n            output = output.slice(padding);\n        }\n    });\n\n    return result;\n};\n\n/// @param json abi for contract\n/// @returns input parser object for given json abi\n/// TODO: refactor creating the parser, do not double logic from contract\nvar inputParser = function (json) {\n    var parser = {};\n    json.forEach(function (method) {\n        var displayName = utils.extractDisplayName(method.name); \n        var typeName = utils.extractTypeName(method.name);\n\n        var impl = function () {\n            var params = Array.prototype.slice.call(arguments);\n            return formatInput(method.inputs, params);\n        };\n       \n        if (parser[displayName] === undefined) {\n            parser[displayName] = impl;\n        }\n\n        parser[displayName][typeName] = impl;\n    });\n\n    return parser;\n};\n\n/// @param json abi for contract\n/// @returns output parser for given json abi\nvar outputParser = function (json) {\n    var parser = {};\n    json.forEach(function (method) {\n\n        var displayName = utils.extractDisplayName(method.name); \n        var typeName = utils.extractTypeName(method.name);\n\n        var impl = function (output) {\n            return formatOutput(method.outputs, output);\n        };\n\n        if (parser[displayName] === undefined) {\n            parser[displayName] = impl;\n        }\n\n        parser[displayName][typeName] = impl;\n    });\n\n    return parser;\n};\n\n/// @param function/event name for which we want to get signature\n/// @returns signature of function/event with given name\nvar signatureFromAscii = function (name) {\n    return web3.sha3(web3.fromAscii(name)).slice(0, 2 + c.ETH_SIGNATURE_LENGTH * 2);\n};\n\nvar eventSignatureFromAscii = function (name) {\n    return web3.sha3(web3.fromAscii(name));\n};\n\nmodule.exports = {\n    inputParser: inputParser,\n    outputParser: outputParser,\n    formatInput: formatInput,\n    formatOutput: formatOutput,\n    signatureFromAscii: signatureFromAscii,\n    eventSignatureFromAscii: eventSignatureFromAscii\n};\n\n",
-    "/*\n    This file is part of ethereum.js.\n\n    ethereum.js is free software: you can redistribute it and/or modify\n    it under the terms of the GNU Lesser General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    ethereum.js is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU Lesser General Public License for more details.\n\n    You should have received a copy of the GNU Lesser General Public License\n    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.\n*/\n/** @file const.js\n * @authors:\n *   Marek Kotewicz <marek@ethdev.com>\n * @date 2015\n */\n\n/// required to define ETH_BIGNUMBER_ROUNDING_MODE\nif (\"build\" !== 'build') {/*\n    var BigNumber = require('bignumber.js'); // jshint ignore:line\n*/}\n\nvar ETH_UNITS = [ \n    'wei', \n    'Kwei', \n    'Mwei', \n    'Gwei', \n    'szabo', \n    'finney', \n    'ether', \n    'grand', \n    'Mether', \n    'Gether', \n    'Tether', \n    'Pether', \n    'Eether', \n    'Zether', \n    'Yether', \n    'Nether', \n    'Dether', \n    'Vether', \n    'Uether' \n];\n\nmodule.exports = {\n    ETH_PADDING: 32,\n    ETH_SIGNATURE_LENGTH: 4,\n    ETH_UNITS: ETH_UNITS,\n    ETH_BIGNUMBER_ROUNDING_MODE: { ROUNDING_MODE: BigNumber.ROUND_DOWN }\n};\n\n",
-    "/*\n    This file is part of ethereum.js.\n\n    ethereum.js is free software: you can redistribute it and/or modify\n    it under the terms of the GNU Lesser General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    ethereum.js is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU Lesser General Public License for more details.\n\n    You should have received a copy of the GNU Lesser General Public License\n    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.\n*/\n/** @file contract.js\n * @authors:\n *   Marek Kotewicz <marek@ethdev.com>\n * @date 2014\n */\n\nvar web3 = require('./web3'); \nvar abi = require('./abi');\nvar utils = require('./utils');\nvar eventImpl = require('./event');\n\nvar exportNatspecGlobals = function (vars) {\n    // it's used byt natspec.js\n    // TODO: figure out better way to solve this\n    web3._currentContractAbi = vars.abi;\n    web3._currentContractAddress = vars.address;\n    web3._currentContractMethodName = vars.method;\n    web3._currentContractMethodParams = vars.params;\n};\n\nvar addFunctionRelatedPropertiesToContract = function (contract) {\n    \n    contract.call = function (options) {\n        contract._isTransact = false;\n        contract._options = options;\n        return contract;\n    };\n\n    contract.transact = function (options) {\n        contract._isTransact = true;\n        contract._options = options;\n        return contract;\n    };\n\n    contract._options = {};\n    ['gas', 'gasPrice', 'value', 'from'].forEach(function(p) {\n        contract[p] = function (v) {\n            contract._options[p] = v;\n            return contract;\n        };\n    });\n\n};\n\nvar addFunctionsToContract = function (contract, desc, address) {\n    var inputParser = abi.inputParser(desc);\n    var outputParser = abi.outputParser(desc);\n\n    // create contract functions\n    utils.filterFunctions(desc).forEach(function (method) {\n\n        var displayName = utils.extractDisplayName(method.name);\n        var typeName = utils.extractTypeName(method.name);\n\n        var impl = function () {\n            var params = Array.prototype.slice.call(arguments);\n            var signature = abi.signatureFromAscii(method.name);\n            var parsed = inputParser[displayName][typeName].apply(null, params);\n\n            var options = contract._options || {};\n            options.to = address;\n            options.data = signature + parsed;\n            \n            var isTransact = contract._isTransact === true || (contract._isTransact !== false && !method.constant);\n            var collapse = options.collapse !== false;\n            \n            // reset\n            contract._options = {};\n            contract._isTransact = null;\n\n            if (isTransact) {\n                \n                exportNatspecGlobals({\n                    abi: desc,\n                    address: address,\n                    method: method.name,\n                    params: params\n                });\n\n                // transactions do not have any output, cause we do not know, when they will be processed\n                web3.eth.transact(options);\n                return;\n            }\n            \n            var output = web3.eth.call(options);\n            var ret = outputParser[displayName][typeName](output);\n            if (collapse)\n            {\n                if (ret.length === 1)\n                    ret = ret[0];\n                else if (ret.length === 0)\n                    ret = null;\n            }\n            return ret;\n        };\n\n        if (contract[displayName] === undefined) {\n            contract[displayName] = impl;\n        }\n\n        contract[displayName][typeName] = impl;\n    });\n};\n\nvar addEventRelatedPropertiesToContract = function (contract, desc, address) {\n    contract.address = address;\n    contract._onWatchEventResult = function (data) {\n        var matchingEvent = event.getMatchingEvent(utils.filterEvents(desc));\n        var parser = eventImpl.outputParser(matchingEvent);\n        return parser(data);\n    };\n    \n    Object.defineProperty(contract, 'topic', {\n        get: function() {\n            return utils.filterEvents(desc).map(function (e) {\n                return abi.eventSignatureFromAscii(e.name);\n            });\n        }\n    });\n\n};\n\nvar addEventsToContract = function (contract, desc, address) {\n    // create contract events\n    utils.filterEvents(desc).forEach(function (e) {\n\n        var impl = function () {\n            var params = Array.prototype.slice.call(arguments);\n            var signature = abi.eventSignatureFromAscii(e.name);\n            var event = eventImpl.inputParser(address, signature, e);\n            var o = event.apply(null, params);\n            o._onWatchEventResult = function (data) {\n                var parser = eventImpl.outputParser(e);\n                return parser(data);\n            };\n            return web3.eth.watch(o);  \n        };\n        \n        // this property should be used by eth.filter to check if object is an event\n        impl._isEvent = true;\n\n        var displayName = utils.extractDisplayName(e.name);\n        var typeName = utils.extractTypeName(e.name);\n\n        if (contract[displayName] === undefined) {\n            contract[displayName] = impl;\n        }\n\n        contract[displayName][typeName] = impl;\n\n    });\n};\n\n\n/**\n * This method should be called when we want to call / transact some solidity method from javascript\n * it returns an object which has same methods available as solidity contract description\n * usage example: \n *\n * var abi = [{\n *      name: 'myMethod',\n *      inputs: [{ name: 'a', type: 'string' }],\n *      outputs: [{name: 'd', type: 'string' }]\n * }];  // contract abi\n *\n * var myContract = web3.eth.contract('0x0123123121', abi); // creation of contract object\n *\n * myContract.myMethod('this is test string param for call'); // myMethod call (implicit, default)\n * myContract.call().myMethod('this is test string param for call'); // myMethod call (explicit)\n * myContract.transact().myMethod('this is test string param for transact'); // myMethod transact\n *\n * @param address - address of the contract, which should be called\n * @param desc - abi json description of the contract, which is being created\n * @returns contract object\n */\n\nvar contract = function (address, desc) {\n\n    // workaround for invalid assumption that method.name is the full anonymous prototype of the method.\n    // it's not. it's just the name. the rest of the code assumes it's actually the anonymous\n    // prototype, so we make it so as a workaround.\n    // TODO: we may not want to modify input params, maybe use copy instead?\n    desc.forEach(function (method) {\n        if (method.name.indexOf('(') === -1) {\n            var displayName = method.name;\n            var typeName = method.inputs.map(function(i){return i.type; }).join();\n            method.name = displayName + '(' + typeName + ')';\n        }\n    });\n\n    var result = {};\n    addFunctionRelatedPropertiesToContract(result);\n    addFunctionsToContract(result, desc, address);\n    addEventRelatedPropertiesToContract(result, desc, address);\n    addEventsToContract(result, desc, address);\n\n    return result;\n};\n\nmodule.exports = contract;\n\n",
-    "/*\n    This file is part of ethereum.js.\n\n    ethereum.js is free software: you can redistribute it and/or modify\n    it under the terms of the GNU Lesser General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    ethereum.js is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU Lesser General Public License for more details.\n\n    You should have received a copy of the GNU Lesser General Public License\n    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.\n*/\n/** @file event.js\n * @authors:\n *   Marek Kotewicz <marek@ethdev.com>\n * @date 2014\n */\n\nvar abi = require('./abi');\nvar utils = require('./utils');\n\n/// filter inputs array && returns only indexed (or not) inputs\n/// @param inputs array\n/// @param bool if result should be an array of indexed params on not\n/// @returns array of (not?) indexed params\nvar filterInputs = function (inputs, indexed) {\n    return inputs.filter(function (current) {\n        return current.indexed === indexed;\n    });\n};\n\nvar inputWithName = function (inputs, name) {\n    var index = utils.findIndex(inputs, function (input) {\n        return input.name === name;\n    });\n    \n    if (index === -1) {\n        console.error('indexed param with name ' + name + ' not found');\n        return undefined;\n    }\n    return inputs[index];\n};\n\nvar indexedParamsToTopics = function (event, indexed) {\n    // sort keys?\n    return Object.keys(indexed).map(function (key) {\n        var inputs = [inputWithName(filterInputs(event.inputs, true), key)];\n\n        var value = indexed[key];\n        if (value instanceof Array) {\n            return value.map(function (v) {\n                return abi.formatInput(inputs, [v]);\n            }); \n        }\n        return abi.formatInput(inputs, [value]);\n    });\n};\n\nvar inputParser = function (address, signature, event) {\n    \n    // valid options are 'earliest', 'latest', 'offset' and 'max', as defined for 'eth.watch'\n    return function (indexed, options) {\n        var o = options || {};\n        o.address = address;\n        o.topic = [];\n        o.topic.push(signature);\n        if (indexed) {\n            o.topic = o.topic.concat(indexedParamsToTopics(event, indexed));\n        }\n        return o;\n    };\n};\n\nvar getArgumentsObject = function (inputs, indexed, notIndexed) {\n    var indexedCopy = indexed.slice();\n    var notIndexedCopy = notIndexed.slice();\n    return inputs.reduce(function (acc, current) {\n        var value;\n        if (current.indexed)\n            value = indexed.splice(0, 1)[0];\n        else\n            value = notIndexed.splice(0, 1)[0];\n\n        acc[current.name] = value;\n        return acc;\n    }, {}); \n};\n \nvar outputParser = function (event) {\n    \n    return function (output) {\n        var result = {\n            event: utils.extractDisplayName(event.name),\n            number: output.number,\n            args: {}\n        };\n\n        if (!output.topic) {\n            return result;\n        }\n       \n        var indexedOutputs = filterInputs(event.inputs, true);\n        var indexedData = \"0x\" + output.topic.slice(1, output.topic.length).map(function (topic) { return topic.slice(2); }).join(\"\");\n        var indexedRes = abi.formatOutput(indexedOutputs, indexedData);\n\n        var notIndexedOutputs = filterInputs(event.inputs, false);\n        var notIndexedRes = abi.formatOutput(notIndexedOutputs, output.data);\n\n        result.args = getArgumentsObject(event.inputs, indexedRes, notIndexedRes);\n\n        return result;\n    };\n};\n\nvar getMatchingEvent = function (events, payload) {\n    for (var i = 0; i < events.length; i++) {\n        var signature = abi.eventSignatureFromAscii(events[i].name); \n        if (signature === payload.topic[0]) {\n            return events[i];\n        }\n    }\n    return undefined;\n};\n\n\nmodule.exports = {\n    inputParser: inputParser,\n    outputParser: outputParser,\n    getMatchingEvent: getMatchingEvent\n};\n\n",
-    "/*\n    This file is part of ethereum.js.\n\n    ethereum.js is free software: you can redistribute it and/or modify\n    it under the terms of the GNU Lesser General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    ethereum.js is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU Lesser General Public License for more details.\n\n    You should have received a copy of the GNU Lesser General Public License\n    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.\n*/\n/** @file filter.js\n * @authors:\n *   Jeffrey Wilcke <jeff@ethdev.com>\n *   Marek Kotewicz <marek@ethdev.com>\n *   Marian Oancea <marian@ethdev.com>\n *   Gav Wood <g@ethdev.com>\n * @date 2014\n */\n\nvar web3 = require('./web3'); // jshint ignore:line\n\n/// should be used when we want to watch something\n/// it's using inner polling mechanism and is notified about changes\n/// TODO: change 'options' name cause it may be not the best matching one, since we have events\nvar Filter = function(options, impl) {\n\n    if (typeof options !== \"string\") {\n\n        // topics property is deprecated, warn about it!\n        if (options.topics) {\n            console.warn('\"topics\" is deprecated, use \"topic\" instead');\n        }\n        \n        this._onWatchResult = options._onWatchEventResult;\n\n        // evaluate lazy properties\n        options = {\n            to: options.to,\n            topic: options.topic,\n            earliest: options.earliest,\n            latest: options.latest,\n            max: options.max,\n            skip: options.skip,\n            address: options.address\n        };\n\n    }\n    \n    this.impl = impl;\n    this.callbacks = [];\n\n    this.id = impl.newFilter(options);\n    web3.provider.startPolling({method: impl.changed, params: [this.id]}, this.id, this.trigger.bind(this));\n};\n\n/// alias for changed*\nFilter.prototype.arrived = function(callback) {\n    this.changed(callback);\n};\nFilter.prototype.happened = function(callback) {\n    this.changed(callback);\n};\n\n/// gets called when there is new eth/shh message\nFilter.prototype.changed = function(callback) {\n    this.callbacks.push(callback);\n};\n\n/// trigger calling new message from people\nFilter.prototype.trigger = function(messages) {\n    for (var i = 0; i < this.callbacks.length; i++) {\n        for (var j = 0; j < messages.length; j++) {\n            var message = this._onWatchResult ? this._onWatchResult(messages[j]) : messages[j];\n            this.callbacks[i].call(this, message);\n        }\n    }\n};\n\n/// should be called to uninstall current filter\nFilter.prototype.uninstall = function() {\n    this.impl.uninstallFilter(this.id);\n    web3.provider.stopPolling(this.id);\n};\n\n/// should be called to manually trigger getting latest messages from the client\nFilter.prototype.messages = function() {\n    return this.impl.getMessages(this.id);\n};\n\n/// alias for messages\nFilter.prototype.logs = function () {\n    return this.messages();\n};\n\nmodule.exports = Filter;\n",
-    "/*\n    This file is part of ethereum.js.\n\n    ethereum.js is free software: you can redistribute it and/or modify\n    it under the terms of the GNU Lesser General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    ethereum.js is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU Lesser General Public License for more details.\n\n    You should have received a copy of the GNU Lesser General Public License\n    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.\n*/\n/** @file formatters.js\n * @authors:\n *   Marek Kotewicz <marek@ethdev.com>\n * @date 2015\n */\n\nif (\"build\" !== 'build') {/*\n    var BigNumber = require('bignumber.js'); // jshint ignore:line\n*/}\n\nvar utils = require('./utils');\nvar c = require('./const');\n\n/// @param string string to be padded\n/// @param number of characters that result string should have\n/// @param sign, by default 0\n/// @returns right aligned string\nvar padLeft = function (string, chars, sign) {\n    return new Array(chars - string.length + 1).join(sign ? sign : \"0\") + string;\n};\n\n/// Formats input value to byte representation of int\n/// If value is negative, return it's two's complement\n/// If the value is floating point, round it down\n/// @returns right-aligned byte representation of int\nvar formatInputInt = function (value) {\n    var padding = c.ETH_PADDING * 2;\n    if (value instanceof BigNumber || typeof value === 'number') {\n        if (typeof value === 'number')\n            value = new BigNumber(value);\n        BigNumber.config(c.ETH_BIGNUMBER_ROUNDING_MODE);\n        value = value.round();\n\n        if (value.lessThan(0)) \n            value = new BigNumber(\"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\", 16).plus(value).plus(1);\n        value = value.toString(16);\n    }\n    else if (value.indexOf('0x') === 0)\n        value = value.substr(2);\n    else if (typeof value === 'string')\n        value = formatInputInt(new BigNumber(value));\n    else\n        value = (+value).toString(16);\n    return padLeft(value, padding);\n};\n\n/// Formats input value to byte representation of string\n/// @returns left-algined byte representation of string\nvar formatInputString = function (value) {\n    return utils.fromAscii(value, c.ETH_PADDING).substr(2);\n};\n\n/// Formats input value to byte representation of bool\n/// @returns right-aligned byte representation bool\nvar formatInputBool = function (value) {\n    return '000000000000000000000000000000000000000000000000000000000000000' + (value ?  '1' : '0');\n};\n\n/// Formats input value to byte representation of real\n/// Values are multiplied by 2^m and encoded as integers\n/// @returns byte representation of real\nvar formatInputReal = function (value) {\n    return formatInputInt(new BigNumber(value).times(new BigNumber(2).pow(128))); \n};\n\n\n/// Check if input value is negative\n/// @param value is hex format\n/// @returns true if it is negative, otherwise false\nvar signedIsNegative = function (value) {\n    return (new BigNumber(value.substr(0, 1), 16).toString(2).substr(0, 1)) === '1';\n};\n\n/// Formats input right-aligned input bytes to int\n/// @returns right-aligned input bytes formatted to int\nvar formatOutputInt = function (value) {\n    value = value || \"0\";\n    // check if it's negative number\n    // it it is, return two's complement\n    if (signedIsNegative(value)) {\n        return new BigNumber(value, 16).minus(new BigNumber('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16)).minus(1);\n    }\n    return new BigNumber(value, 16);\n};\n\n/// Formats big right-aligned input bytes to uint\n/// @returns right-aligned input bytes formatted to uint\nvar formatOutputUInt = function (value) {\n    value = value || \"0\";\n    return new BigNumber(value, 16);\n};\n\n/// @returns input bytes formatted to real\nvar formatOutputReal = function (value) {\n    return formatOutputInt(value).dividedBy(new BigNumber(2).pow(128)); \n};\n\n/// @returns input bytes formatted to ureal\nvar formatOutputUReal = function (value) {\n    return formatOutputUInt(value).dividedBy(new BigNumber(2).pow(128)); \n};\n\n/// @returns right-aligned input bytes formatted to hex\nvar formatOutputHash = function (value) {\n    return \"0x\" + value;\n};\n\n/// @returns right-aligned input bytes formatted to bool\nvar formatOutputBool = function (value) {\n    return value === '0000000000000000000000000000000000000000000000000000000000000001' ? true : false;\n};\n\n/// @returns left-aligned input bytes formatted to ascii string\nvar formatOutputString = function (value) {\n    return utils.toAscii(value);\n};\n\n/// @returns right-aligned input bytes formatted to address\nvar formatOutputAddress = function (value) {\n    return \"0x\" + value.slice(value.length - 40, value.length);\n};\n\n\nmodule.exports = {\n    formatInputInt: formatInputInt,\n    formatInputString: formatInputString,\n    formatInputBool: formatInputBool,\n    formatInputReal: formatInputReal,\n    formatOutputInt: formatOutputInt,\n    formatOutputUInt: formatOutputUInt,\n    formatOutputReal: formatOutputReal,\n    formatOutputUReal: formatOutputUReal,\n    formatOutputHash: formatOutputHash,\n    formatOutputBool: formatOutputBool,\n    formatOutputString: formatOutputString,\n    formatOutputAddress: formatOutputAddress\n};\n\n",
-    "/*\n    This file is part of ethereum.js.\n\n    ethereum.js is free software: you can redistribute it and/or modify\n    it under the terms of the GNU Lesser General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    ethereum.js is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU Lesser General Public License for more details.\n\n    You should have received a copy of the GNU Lesser General Public License\n    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.\n*/\n/** @file httpsync.js\n * @authors:\n *   Marek Kotewicz <marek@ethdev.com>\n *   Marian Oancea <marian@ethdev.com>\n * @date 2014\n */\n\nif (\"build\" !== 'build') {/*\n        var XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest; // jshint ignore:line\n*/}\n\nvar HttpSyncProvider = function (host) {\n    this.handlers = [];\n    this.host = host || 'http://localhost:8080';\n};\n\nHttpSyncProvider.prototype.send = function (payload) {\n    //var data = formatJsonRpcObject(payload);\n    \n    var request = new XMLHttpRequest();\n    request.open('POST', this.host, false);\n    request.send(JSON.stringify(payload));\n    \n    // check request.status\n    var result = request.responseText;\n    return JSON.parse(result);\n};\n\nmodule.exports = HttpSyncProvider;\n\n",
-    "/*\n    This file is part of ethereum.js.\n\n    ethereum.js is free software: you can redistribute it and/or modify\n    it under the terms of the GNU Lesser General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    ethereum.js is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU Lesser General Public License for more details.\n\n    You should have received a copy of the GNU Lesser General Public License\n    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.\n*/\n/** @file jsonrpc.js\n * @authors:\n *   Marek Kotewicz <marek@ethdev.com>\n * @date 2015\n */\n\nvar messageId = 1;\n\n/// Should be called to valid json create payload object\n/// @param method of jsonrpc call, required\n/// @param params, an array of method params, optional\n/// @returns valid jsonrpc payload object\nvar toPayload = function (method, params) {\n    if (!method)\n        console.error('jsonrpc method should be specified!');\n\n    return {\n        jsonrpc: '2.0',\n        method: method,\n        params: params || [],\n        id: messageId++\n    }; \n};\n\n/// Should be called to check if jsonrpc response is valid\n/// @returns true if response is valid, otherwise false \nvar isValidResponse = function (response) {\n    return !!response &&\n        !response.error &&\n        response.jsonrpc === '2.0' &&\n        typeof response.id === 'number' &&\n        response.result !== undefined; // only undefined is not valid json object\n};\n\n/// Should be called to create batch payload object\n/// @param messages, an array of objects with method (required) and params (optional) fields\nvar toBatchPayload = function (messages) {\n    return messages.map(function (message) {\n        return toPayload(message.method, message.params);\n    }); \n};\n\nmodule.exports = {\n    toPayload: toPayload,\n    isValidResponse: isValidResponse,\n    toBatchPayload: toBatchPayload\n};\n\n\n",
-    "/*\n    This file is part of ethereum.js.\n\n    ethereum.js is free software: you can redistribute it and/or modify\n    it under the terms of the GNU Lesser General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    ethereum.js is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU Lesser General Public License for more details.\n\n    You should have received a copy of the GNU Lesser General Public License\n    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.\n*/\n/** @file providermanager.js\n * @authors:\n *   Jeffrey Wilcke <jeff@ethdev.com>\n *   Marek Kotewicz <marek@ethdev.com>\n *   Marian Oancea <marian@ethdev.com>\n *   Gav Wood <g@ethdev.com>\n * @date 2014\n */\n\nvar web3 = require('./web3'); \nvar jsonrpc = require('./jsonrpc');\n\n\n/**\n * Provider manager object prototype\n * It's responsible for passing messages to providers\n * If no provider is set it's responsible for queuing requests\n * It's also responsible for polling the ethereum node for incoming messages\n * Default poll timeout is 12 seconds\n * If we are running ethereum.js inside ethereum browser, there are backend based tools responsible for polling,\n * and provider manager polling mechanism is not used\n */\nvar ProviderManager = function() {\n    this.polls = [];\n    this.provider = undefined;\n\n    var self = this;\n    var poll = function () {\n        self.polls.forEach(function (data) {\n            var result = self.send(data.data);\n\n            if (!(result instanceof Array) || result.length === 0) {\n                return;\n            }\n\n            data.callback(result);\n        });\n\n        setTimeout(poll, 1000);\n    };\n    poll();\n};\n\n/// sends outgoing requests\n/// @params data - an object with at least 'method' property\nProviderManager.prototype.send = function(data) {\n    var payload = jsonrpc.toPayload(data.method, data.params);\n\n    if (this.provider === undefined) {\n        console.error('provider is not set');\n        return null; \n    }\n\n    var result = this.provider.send(payload);\n\n    if (!jsonrpc.isValidResponse(result)) {\n        console.log(result);\n        return null;\n    }\n\n    return result.result;\n};\n\n/// setups provider, which will be used for sending messages\nProviderManager.prototype.set = function(provider) {\n    this.provider = provider;\n};\n\n/// this method is only used, when we do not have native qt bindings and have to do polling on our own\n/// should be callled, on start watching for eth/shh changes\nProviderManager.prototype.startPolling = function (data, pollId, callback) {\n    this.polls.push({data: data, id: pollId, callback: callback});\n};\n\n/// should be called to stop polling for certain watch changes\nProviderManager.prototype.stopPolling = function (pollId) {\n    for (var i = this.polls.length; i--;) {\n        var poll = this.polls[i];\n        if (poll.id === pollId) {\n            this.polls.splice(i, 1);\n        }\n    }\n};\n\nmodule.exports = ProviderManager;\n\n",
-    "/*\n    This file is part of ethereum.js.\n\n    ethereum.js is free software: you can redistribute it and/or modify\n    it under the terms of the GNU Lesser General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    ethereum.js is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU Lesser General Public License for more details.\n\n    You should have received a copy of the GNU Lesser General Public License\n    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.\n*/\n/** @file qtsync.js\n * @authors:\n *   Marek Kotewicz <marek@ethdev.com>\n *   Marian Oancea <marian@ethdev.com>\n * @date 2014\n */\n\nvar QtSyncProvider = function () {\n};\n\nQtSyncProvider.prototype.send = function (payload) {\n    var result = navigator.qt.callMethod(JSON.stringify(payload));\n    return JSON.parse(result);\n};\n\nmodule.exports = QtSyncProvider;\n\n",
-    "/*\n    This file is part of ethereum.js.\n\n    ethereum.js is free software: you can redistribute it and/or modify\n    it under the terms of the GNU Lesser General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    ethereum.js is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU Lesser General Public License for more details.\n\n    You should have received a copy of the GNU Lesser General Public License\n    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.\n*/\n/** @file types.js\n * @authors:\n *   Marek Kotewicz <marek@ethdev.com>\n * @date 2015\n */\n\nvar f = require('./formatters');\n\n/// @param expected type prefix (string)\n/// @returns function which checks if type has matching prefix. if yes, returns true, otherwise false\nvar prefixedType = function (prefix) {\n    return function (type) {\n        return type.indexOf(prefix) === 0;\n    };\n};\n\n/// @param expected type name (string)\n/// @returns function which checks if type is matching expected one. if yes, returns true, otherwise false\nvar namedType = function (name) {\n    return function (type) {\n        return name === type;\n    };\n};\n\n/// Setups input formatters for solidity types\n/// @returns an array of input formatters \nvar inputTypes = function () {\n    \n    return [\n        { type: prefixedType('uint'), format: f.formatInputInt },\n        { type: prefixedType('int'), format: f.formatInputInt },\n        { type: prefixedType('hash'), format: f.formatInputInt },\n        { type: prefixedType('string'), format: f.formatInputString }, \n        { type: prefixedType('real'), format: f.formatInputReal },\n        { type: prefixedType('ureal'), format: f.formatInputReal },\n        { type: namedType('address'), format: f.formatInputInt },\n        { type: namedType('bool'), format: f.formatInputBool }\n    ];\n};\n\n/// Setups output formaters for solidity types\n/// @returns an array of output formatters\nvar outputTypes = function () {\n\n    return [\n        { type: prefixedType('uint'), format: f.formatOutputUInt },\n        { type: prefixedType('int'), format: f.formatOutputInt },\n        { type: prefixedType('hash'), format: f.formatOutputHash },\n        { type: prefixedType('string'), format: f.formatOutputString },\n        { type: prefixedType('real'), format: f.formatOutputReal },\n        { type: prefixedType('ureal'), format: f.formatOutputUReal },\n        { type: namedType('address'), format: f.formatOutputAddress },\n        { type: namedType('bool'), format: f.formatOutputBool }\n    ];\n};\n\nmodule.exports = {\n    prefixedType: prefixedType,\n    namedType: namedType,\n    inputTypes: inputTypes,\n    outputTypes: outputTypes\n};\n\n",
-    "/*\n    This file is part of ethereum.js.\n\n    ethereum.js is free software: you can redistribute it and/or modify\n    it under the terms of the GNU Lesser General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    ethereum.js is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU Lesser General Public License for more details.\n\n    You should have received a copy of the GNU Lesser General Public License\n    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.\n*/\n/** @file utils.js\n * @authors:\n *   Marek Kotewicz <marek@ethdev.com>\n * @date 2015\n */\n\nvar c = require('./const');\n\n/// Finds first index of array element matching pattern\n/// @param array\n/// @param callback pattern\n/// @returns index of element\nvar findIndex = function (array, callback) {\n    var end = false;\n    var i = 0;\n    for (; i < array.length && !end; i++) {\n        end = callback(array[i]);\n    }\n    return end ? i - 1 : -1;\n};\n\n/// @returns ascii string representation of hex value prefixed with 0x\nvar toAscii = function(hex) {\n// Find termination\n    var str = \"\";\n    var i = 0, l = hex.length;\n    if (hex.substring(0, 2) === '0x') {\n        i = 2;\n    }\n    for (; i < l; i+=2) {\n        var code = parseInt(hex.substr(i, 2), 16);\n        if (code === 0) {\n            break;\n        }\n\n        str += String.fromCharCode(code);\n    }\n\n    return str;\n};\n    \nvar toHex = function(str) {\n    var hex = \"\";\n    for(var i = 0; i < str.length; i++) {\n        var n = str.charCodeAt(i).toString(16);\n        hex += n.length < 2 ? '0' + n : n;\n    }\n\n    return hex;\n};\n\n/// @returns hex representation (prefixed by 0x) of ascii string\nvar fromAscii = function(str, pad) {\n    pad = pad === undefined ? 0 : pad;\n    var hex = toHex(str);\n    while (hex.length < pad*2)\n        hex += \"00\";\n    return \"0x\" + hex;\n};\n\n/// @returns display name for function/event eg. multiply(uint256) -> multiply\nvar extractDisplayName = function (name) {\n    var length = name.indexOf('('); \n    return length !== -1 ? name.substr(0, length) : name;\n};\n\n/// @returns overloaded part of function/event name\nvar extractTypeName = function (name) {\n    /// TODO: make it invulnerable\n    var length = name.indexOf('(');\n    return length !== -1 ? name.substr(length + 1, name.length - 1 - (length + 1)).replace(' ', '') : \"\";\n};\n\n/// Filters all function from input abi\n/// @returns abi array with filtered objects of type 'function'\nvar filterFunctions = function (json) {\n    return json.filter(function (current) {\n        return current.type === 'function'; \n    }); \n};\n\n/// Filters all events form input abi\n/// @returns abi array with filtered objects of type 'event'\nvar filterEvents = function (json) {\n    return json.filter(function (current) {\n        return current.type === 'event';\n    });\n};\n\n/// used to transform value/string to eth string\n/// TODO: use BigNumber.js to parse int\n/// TODO: add tests for it!\nvar toEth = function (str) {\n    var val = typeof str === \"string\" ? str.indexOf('0x') === 0 ? parseInt(str.substr(2), 16) : parseInt(str) : str;\n    var unit = 0;\n    var units = c.ETH_UNITS;\n    while (val > 3000 && unit < units.length - 1)\n    {\n        val /= 1000;\n        unit++;\n    }\n    var s = val.toString().length < val.toFixed(2).length ? val.toString() : val.toFixed(2);\n    var replaceFunction = function($0, $1, $2) {\n        return $1 + ',' + $2;\n    };\n\n    while (true) {\n        var o = s;\n        s = s.replace(/(\\d)(\\d\\d\\d[\\.\\,])/, replaceFunction);\n        if (o === s)\n            break;\n    }\n    return s + ' ' + units[unit];\n};\n\nmodule.exports = {\n    findIndex: findIndex,\n    toAscii: toAscii,\n    fromAscii: fromAscii,\n    extractDisplayName: extractDisplayName,\n    extractTypeName: extractTypeName,\n    filterFunctions: filterFunctions,\n    filterEvents: filterEvents,\n    toEth: toEth\n};\n\n",
-    "/*\n    This file is part of ethereum.js.\n\n    ethereum.js is free software: you can redistribute it and/or modify\n    it under the terms of the GNU Lesser General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    ethereum.js is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU Lesser General Public License for more details.\n\n    You should have received a copy of the GNU Lesser General Public License\n    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.\n*/\n/** @file web3.js\n * @authors:\n *   Jeffrey Wilcke <jeff@ethdev.com>\n *   Marek Kotewicz <marek@ethdev.com>\n *   Marian Oancea <marian@ethdev.com>\n *   Gav Wood <g@ethdev.com>\n * @date 2014\n */\n\nif (\"build\" !== 'build') {/*\n    var BigNumber = require('bignumber.js');\n*/}\n\nvar utils = require('./utils');\n\n/// @returns an array of objects describing web3 api methods\nvar web3Methods = function () {\n    return [\n    { name: 'sha3', call: 'web3_sha3' }\n    ];\n};\n\n/// @returns an array of objects describing web3.eth api methods\nvar ethMethods = function () {\n    var blockCall = function (args) {\n        return typeof args[0] === \"string\" ? \"eth_blockByHash\" : \"eth_blockByNumber\";\n    };\n\n    var transactionCall = function (args) {\n        return typeof args[0] === \"string\" ? 'eth_transactionByHash' : 'eth_transactionByNumber';\n    };\n\n    var uncleCall = function (args) {\n        return typeof args[0] === \"string\" ? 'eth_uncleByHash' : 'eth_uncleByNumber';\n    };\n\n    var methods = [\n    { name: 'balanceAt', call: 'eth_balanceAt' },\n    { name: 'stateAt', call: 'eth_stateAt' },\n    { name: 'storageAt', call: 'eth_storageAt' },\n    { name: 'countAt', call: 'eth_countAt'},\n    { name: 'codeAt', call: 'eth_codeAt' },\n    { name: 'transact', call: 'eth_transact' },\n    { name: 'call', call: 'eth_call' },\n    { name: 'block', call: blockCall },\n    { name: 'transaction', call: transactionCall },\n    { name: 'uncle', call: uncleCall },\n    { name: 'compilers', call: 'eth_compilers' },\n    { name: 'flush', call: 'eth_flush' },\n    { name: 'lll', call: 'eth_lll' },\n    { name: 'solidity', call: 'eth_solidity' },\n    { name: 'serpent', call: 'eth_serpent' },\n    { name: 'logs', call: 'eth_logs' }\n    ];\n    return methods;\n};\n\n/// @returns an array of objects describing web3.eth api properties\nvar ethProperties = function () {\n    return [\n    { name: 'coinbase', getter: 'eth_coinbase', setter: 'eth_setCoinbase' },\n    { name: 'listening', getter: 'eth_listening', setter: 'eth_setListening' },\n    { name: 'mining', getter: 'eth_mining', setter: 'eth_setMining' },\n    { name: 'gasPrice', getter: 'eth_gasPrice' },\n    { name: 'accounts', getter: 'eth_accounts' },\n    { name: 'peerCount', getter: 'eth_peerCount' },\n    { name: 'defaultBlock', getter: 'eth_defaultBlock', setter: 'eth_setDefaultBlock' },\n    { name: 'number', getter: 'eth_number'}\n    ];\n};\n\n/// @returns an array of objects describing web3.db api methods\nvar dbMethods = function () {\n    return [\n    { name: 'put', call: 'db_put' },\n    { name: 'get', call: 'db_get' },\n    { name: 'putString', call: 'db_putString' },\n    { name: 'getString', call: 'db_getString' }\n    ];\n};\n\n/// @returns an array of objects describing web3.shh api methods\nvar shhMethods = function () {\n    return [\n    { name: 'post', call: 'shh_post' },\n    { name: 'newIdentity', call: 'shh_newIdentity' },\n    { name: 'haveIdentity', call: 'shh_haveIdentity' },\n    { name: 'newGroup', call: 'shh_newGroup' },\n    { name: 'addToGroup', call: 'shh_addToGroup' }\n    ];\n};\n\n/// @returns an array of objects describing web3.eth.watch api methods\nvar ethWatchMethods = function () {\n    var newFilter = function (args) {\n        return typeof args[0] === 'string' ? 'eth_newFilterString' : 'eth_newFilter';\n    };\n\n    return [\n    { name: 'newFilter', call: newFilter },\n    { name: 'uninstallFilter', call: 'eth_uninstallFilter' },\n    { name: 'getMessages', call: 'eth_filterLogs' }\n    ];\n};\n\n/// @returns an array of objects describing web3.shh.watch api methods\nvar shhWatchMethods = function () {\n    return [\n    { name: 'newFilter', call: 'shh_newFilter' },\n    { name: 'uninstallFilter', call: 'shh_uninstallFilter' },\n    { name: 'getMessages', call: 'shh_getMessages' }\n    ];\n};\n\n/// creates methods in a given object based on method description on input\n/// setups api calls for these methods\nvar setupMethods = function (obj, methods) {\n    methods.forEach(function (method) {\n        obj[method.name] = function () {\n            var args = Array.prototype.slice.call(arguments);\n            var call = typeof method.call === 'function' ? method.call(args) : method.call;\n            return web3.provider.send({\n                method: call,\n                params: args\n            });\n        };\n    });\n};\n\n/// creates properties in a given object based on properties description on input\n/// setups api calls for these properties\nvar setupProperties = function (obj, properties) {\n    properties.forEach(function (property) {\n        var proto = {};\n        proto.get = function () {\n            return web3.provider.send({\n                method: property.getter\n            });\n        };\n\n        if (property.setter) {\n            proto.set = function (val) {\n                return web3.provider.send({\n                    method: property.setter,\n                    params: [val]\n                });\n            };\n        }\n        Object.defineProperty(obj, property.name, proto);\n    });\n};\n\n/// setups web3 object, and it's in-browser executed methods\nvar web3 = {\n    _callbacks: {},\n    _events: {},\n    providers: {},\n\n    /// @returns ascii string representation of hex value prefixed with 0x\n    toAscii: utils.toAscii,\n\n    /// @returns hex representation (prefixed by 0x) of ascii string\n    fromAscii: utils.fromAscii,\n\n    /// @returns decimal representaton of hex value prefixed by 0x\n    toDecimal: function (val) {\n        // remove 0x and place 0, if it's required\n        val = val.length > 2 ? val.substring(2) : \"0\";\n        return (new BigNumber(val, 16).toString(10));\n    },\n\n    /// @returns hex representation (prefixed by 0x) of decimal value\n    fromDecimal: function (val) {\n        return \"0x\" + (new BigNumber(val).toString(16));\n    },\n\n    /// used to transform value/string to eth string\n    toEth: utils.toEth,\n\n    /// eth object prototype\n    eth: {\n        contractFromAbi: function (abi) {\n            return function(addr) {\n                // Default to address of Config. TODO: rremove prior to genesis.\n                addr = addr || '0xc6d9d2cd449a754c494264e1809c50e34d64562b';\n                var ret = web3.eth.contract(addr, abi);\n                ret.address = addr;\n                return ret;\n            };\n        },\n\n        /// @param filter may be a string, object or event\n        /// @param indexed is optional, this is an object with optional event indexed params\n        /// @param options is optional, this is an object with optional event options ('max'...)\n        watch: function (filter, indexed, options) {\n            if (filter._isEvent) {\n                return filter(indexed, options);\n            }\n            return new web3.filter(filter, ethWatch);\n        }\n    },\n\n    /// db object prototype\n    db: {},\n\n    /// shh object prototype\n    shh: {\n        \n        /// @param filter may be a string, object or event\n        watch: function (filter, indexed) {\n            return new web3.filter(filter, shhWatch);\n        }\n    },\n};\n\n/// setups all api methods\nsetupMethods(web3, web3Methods());\nsetupMethods(web3.eth, ethMethods());\nsetupProperties(web3.eth, ethProperties());\nsetupMethods(web3.db, dbMethods());\nsetupMethods(web3.shh, shhMethods());\n\nvar ethWatch = {\n    changed: 'eth_changed'\n};\n\nsetupMethods(ethWatch, ethWatchMethods());\n\nvar shhWatch = {\n    changed: 'shh_changed'\n};\n\nsetupMethods(shhWatch, shhWatchMethods());\n\nweb3.setProvider = function(provider) {\n    web3.provider.set(provider);\n};\n\nmodule.exports = web3;\n\n",
-    "var web3 = require('./lib/web3');\nvar ProviderManager = require('./lib/providermanager');\nweb3.provider = new ProviderManager();\nweb3.filter = require('./lib/filter');\nweb3.providers.HttpSyncProvider = require('./lib/httpsync');\nweb3.providers.QtSyncProvider = require('./lib/qtsync');\nweb3.eth.contract = require('./lib/contract');\nweb3.abi = require('./lib/abi');\n\n\nmodule.exports = web3;\n"
-  ]
-}
\ No newline at end of file
diff --git a/cmd/mist/assets/ext/ethereum.js/dist/ethereum.min.js b/cmd/mist/assets/ext/ethereum.js/dist/ethereum.min.js
deleted file mode 100644
index df408d3e4..000000000
--- a/cmd/mist/assets/ext/ethereum.js/dist/ethereum.min.js
+++ /dev/null
@@ -1 +0,0 @@
-require=function t(e,n,r){function i(a,u){if(!n[a]){if(!e[a]){var s="function"==typeof require&&require;if(!u&&s)return s(a,!0);if(o)return o(a,!0);var f=new Error("Cannot find module '"+a+"'");throw f.code="MODULE_NOT_FOUND",f}var c=n[a]={exports:{}};e[a][0].call(c.exports,function(t){var n=e[a][1][t];return i(n?n:t)},c,c.exports,t,e,n,r)}return n[a].exports}for(var o="function"==typeof require&&require,a=0;a<r.length;a++)i(r[a]);return i}({1:[function(t,e){var n=t("./web3"),r=t("./utils"),i=t("./types"),o=t("./const"),a=t("./formatters"),u=function(t){console.error("parser does not support type: "+t)},s=function(t){return"[]"===t.slice(-2)},f=function(t,e){return s(t)||"string"===t?a.formatInputInt(e.length):""},c=i.inputTypes(),l=function(t,e){{var n="";2*o.ETH_PADDING}return t.forEach(function(t,r){n+=f(t.type,e[r])}),t.forEach(function(r,i){for(var o=!1,a=0;a<c.length&&!o;a++)o=c[a].type(t[i].type,e[i]);o||u(t[i].type);var f=c[a-1].format,l="";l=s(t[i].type)?e[i].reduce(function(t,e){return t+f(e)},""):f(e[i]),n+=l}),n},p=function(t){return s(t)||"string"===t?2*o.ETH_PADDING:0},m=i.outputTypes(),h=function(t,e){e=e.slice(2);var n=[],r=2*o.ETH_PADDING,f=t.reduce(function(t,e){return t+p(e.type)},0),c=e.slice(0,f);return e=e.slice(f),t.forEach(function(o,f){for(var l=!1,p=0;p<m.length&&!l;p++)l=m[p].type(t[f].type);l||u(t[f].type);var h=m[p-1].format;if(s(t[f].type)){var d=a.formatOutputUInt(c.slice(0,r));c=c.slice(r);for(var g=[],v=0;d>v;v++)g.push(h(e.slice(0,r))),e=e.slice(r);n.push(g)}else i.prefixedType("string")(t[f].type)?(c=c.slice(r),n.push(h(e.slice(0,r))),e=e.slice(r)):(n.push(h(e.slice(0,r))),e=e.slice(r))}),n},d=function(t){var e={};return t.forEach(function(t){var n=r.extractDisplayName(t.name),i=r.extractTypeName(t.name),o=function(){var e=Array.prototype.slice.call(arguments);return l(t.inputs,e)};void 0===e[n]&&(e[n]=o),e[n][i]=o}),e},g=function(t){var e={};return t.forEach(function(t){var n=r.extractDisplayName(t.name),i=r.extractTypeName(t.name),o=function(e){return h(t.outputs,e)};void 0===e[n]&&(e[n]=o),e[n][i]=o}),e},v=function(t){return n.sha3(n.fromAscii(t)).slice(0,2+2*o.ETH_SIGNATURE_LENGTH)},y=function(t){return n.sha3(n.fromAscii(t))};e.exports={inputParser:d,outputParser:g,formatInput:l,formatOutput:h,signatureFromAscii:v,eventSignatureFromAscii:y}},{"./const":2,"./formatters":6,"./types":11,"./utils":12,"./web3":13}],2:[function(t,e){var n=["wei","Kwei","Mwei","Gwei","szabo","finney","ether","grand","Mether","Gether","Tether","Pether","Eether","Zether","Yether","Nether","Dether","Vether","Uether"];e.exports={ETH_PADDING:32,ETH_SIGNATURE_LENGTH:4,ETH_UNITS:n,ETH_BIGNUMBER_ROUNDING_MODE:{ROUNDING_MODE:BigNumber.ROUND_DOWN}}},{}],3:[function(t,e){var n=t("./web3"),r=t("./abi"),i=t("./utils"),o=t("./event"),a=function(t){n._currentContractAbi=t.abi,n._currentContractAddress=t.address,n._currentContractMethodName=t.method,n._currentContractMethodParams=t.params},u=function(t){t.call=function(e){return t._isTransact=!1,t._options=e,t},t.transact=function(e){return t._isTransact=!0,t._options=e,t},t._options={},["gas","gasPrice","value","from"].forEach(function(e){t[e]=function(n){return t._options[e]=n,t}})},s=function(t,e,o){var u=r.inputParser(e),s=r.outputParser(e);i.filterFunctions(e).forEach(function(f){var c=i.extractDisplayName(f.name),l=i.extractTypeName(f.name),p=function(){var i=Array.prototype.slice.call(arguments),p=r.signatureFromAscii(f.name),m=u[c][l].apply(null,i),h=t._options||{};h.to=o,h.data=p+m;var d=t._isTransact===!0||t._isTransact!==!1&&!f.constant,g=h.collapse!==!1;if(t._options={},t._isTransact=null,d)return a({abi:e,address:o,method:f.name,params:i}),void n.eth.transact(h);var v=n.eth.call(h),y=s[c][l](v);return g&&(1===y.length?y=y[0]:0===y.length&&(y=null)),y};void 0===t[c]&&(t[c]=p),t[c][l]=p})},f=function(t,e,n){t.address=n,t._onWatchEventResult=function(t){var n=event.getMatchingEvent(i.filterEvents(e)),r=o.outputParser(n);return r(t)},Object.defineProperty(t,"topic",{get:function(){return i.filterEvents(e).map(function(t){return r.eventSignatureFromAscii(t.name)})}})},c=function(t,e,a){i.filterEvents(e).forEach(function(e){var u=function(){var t=Array.prototype.slice.call(arguments),i=r.eventSignatureFromAscii(e.name),u=o.inputParser(a,i,e),s=u.apply(null,t);return s._onWatchEventResult=function(t){var n=o.outputParser(e);return n(t)},n.eth.watch(s)};u._isEvent=!0;var s=i.extractDisplayName(e.name),f=i.extractTypeName(e.name);void 0===t[s]&&(t[s]=u),t[s][f]=u})},l=function(t,e){e.forEach(function(t){if(-1===t.name.indexOf("(")){var e=t.name,n=t.inputs.map(function(t){return t.type}).join();t.name=e+"("+n+")"}});var n={};return u(n),s(n,e,t),f(n,e,t),c(n,e,t),n};e.exports=l},{"./abi":1,"./event":4,"./utils":12,"./web3":13}],4:[function(t,e){var n=t("./abi"),r=t("./utils"),i=function(t,e){return t.filter(function(t){return t.indexed===e})},o=function(t,e){var n=r.findIndex(t,function(t){return t.name===e});return-1===n?void console.error("indexed param with name "+e+" not found"):t[n]},a=function(t,e){return Object.keys(e).map(function(r){var a=[o(i(t.inputs,!0),r)],u=e[r];return u instanceof Array?u.map(function(t){return n.formatInput(a,[t])}):n.formatInput(a,[u])})},u=function(t,e,n){return function(r,i){var o=i||{};return o.address=t,o.topic=[],o.topic.push(e),r&&(o.topic=o.topic.concat(a(n,r))),o}},s=function(t,e,n){e.slice(),n.slice();return t.reduce(function(t,r){var i;return i=r.indexed?e.splice(0,1)[0]:n.splice(0,1)[0],t[r.name]=i,t},{})},f=function(t){return function(e){var o={event:r.extractDisplayName(t.name),number:e.number,args:{}};if(!e.topic)return o;var a=i(t.inputs,!0),u="0x"+e.topic.slice(1,e.topic.length).map(function(t){return t.slice(2)}).join(""),f=n.formatOutput(a,u),c=i(t.inputs,!1),l=n.formatOutput(c,e.data);return o.args=s(t.inputs,f,l),o}},c=function(t,e){for(var r=0;r<t.length;r++){var i=n.eventSignatureFromAscii(t[r].name);if(i===e.topic[0])return t[r]}return void 0};e.exports={inputParser:u,outputParser:f,getMatchingEvent:c}},{"./abi":1,"./utils":12}],5:[function(t,e){var n=t("./web3"),r=function(t,e){"string"!=typeof t&&(t.topics&&console.warn('"topics" is deprecated, use "topic" instead'),this._onWatchResult=t._onWatchEventResult,t={to:t.to,topic:t.topic,earliest:t.earliest,latest:t.latest,max:t.max,skip:t.skip,address:t.address}),this.impl=e,this.callbacks=[],this.id=e.newFilter(t),n.provider.startPolling({method:e.changed,params:[this.id]},this.id,this.trigger.bind(this))};r.prototype.arrived=function(t){this.changed(t)},r.prototype.happened=function(t){this.changed(t)},r.prototype.changed=function(t){this.callbacks.push(t)},r.prototype.trigger=function(t){for(var e=0;e<this.callbacks.length;e++)for(var n=0;n<t.length;n++){var r=this._onWatchResult?this._onWatchResult(t[n]):t[n];this.callbacks[e].call(this,r)}},r.prototype.uninstall=function(){this.impl.uninstallFilter(this.id),n.provider.stopPolling(this.id)},r.prototype.messages=function(){return this.impl.getMessages(this.id)},r.prototype.logs=function(){return this.messages()},e.exports=r},{"./web3":13}],6:[function(t,e){var n=t("./utils"),r=t("./const"),i=function(t,e,n){return new Array(e-t.length+1).join(n?n:"0")+t},o=function(t){var e=2*r.ETH_PADDING;return t instanceof BigNumber||"number"==typeof t?("number"==typeof t&&(t=new BigNumber(t)),BigNumber.config(r.ETH_BIGNUMBER_ROUNDING_MODE),t=t.round(),t.lessThan(0)&&(t=new BigNumber("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",16).plus(t).plus(1)),t=t.toString(16)):t=0===t.indexOf("0x")?t.substr(2):"string"==typeof t?o(new BigNumber(t)):(+t).toString(16),i(t,e)},a=function(t){return n.fromAscii(t,r.ETH_PADDING).substr(2)},u=function(t){return"000000000000000000000000000000000000000000000000000000000000000"+(t?"1":"0")},s=function(t){return o(new BigNumber(t).times(new BigNumber(2).pow(128)))},f=function(t){return"1"===new BigNumber(t.substr(0,1),16).toString(2).substr(0,1)},c=function(t){return t=t||"0",f(t)?new BigNumber(t,16).minus(new BigNumber("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",16)).minus(1):new BigNumber(t,16)},l=function(t){return t=t||"0",new BigNumber(t,16)},p=function(t){return c(t).dividedBy(new BigNumber(2).pow(128))},m=function(t){return l(t).dividedBy(new BigNumber(2).pow(128))},h=function(t){return"0x"+t},d=function(t){return"0000000000000000000000000000000000000000000000000000000000000001"===t?!0:!1},g=function(t){return n.toAscii(t)},v=function(t){return"0x"+t.slice(t.length-40,t.length)};e.exports={formatInputInt:o,formatInputString:a,formatInputBool:u,formatInputReal:s,formatOutputInt:c,formatOutputUInt:l,formatOutputReal:p,formatOutputUReal:m,formatOutputHash:h,formatOutputBool:d,formatOutputString:g,formatOutputAddress:v}},{"./const":2,"./utils":12}],7:[function(t,e){var n=function(t){this.handlers=[],this.host=t||"http://localhost:8080"};n.prototype.send=function(t){var e=new XMLHttpRequest;e.open("POST",this.host,!1),e.send(JSON.stringify(t));var n=e.responseText;return JSON.parse(n)},e.exports=n},{}],8:[function(t,e){var n=1,r=function(t,e){return t||console.error("jsonrpc method should be specified!"),{jsonrpc:"2.0",method:t,params:e||[],id:n++}},i=function(t){return!!t&&!t.error&&"2.0"===t.jsonrpc&&"number"==typeof t.id&&void 0!==t.result},o=function(t){return t.map(function(t){return r(t.method,t.params)})};e.exports={toPayload:r,isValidResponse:i,toBatchPayload:o}},{}],9:[function(t,e){var n=(t("./web3"),t("./jsonrpc")),r=function(){this.polls=[],this.provider=void 0;var t=this,e=function(){t.polls.forEach(function(e){var n=t.send(e.data);n instanceof Array&&0!==n.length&&e.callback(n)}),setTimeout(e,1e3)};e()};r.prototype.send=function(t){var e=n.toPayload(t.method,t.params);if(void 0===this.provider)return console.error("provider is not set"),null;var r=this.provider.send(e);return n.isValidResponse(r)?r.result:(console.log(r),null)},r.prototype.set=function(t){this.provider=t},r.prototype.startPolling=function(t,e,n){this.polls.push({data:t,id:e,callback:n})},r.prototype.stopPolling=function(t){for(var e=this.polls.length;e--;){var n=this.polls[e];n.id===t&&this.polls.splice(e,1)}},e.exports=r},{"./jsonrpc":8,"./web3":13}],10:[function(t,e){var n=function(){};n.prototype.send=function(t){var e=navigator.qt.callMethod(JSON.stringify(t));return JSON.parse(e)},e.exports=n},{}],11:[function(t,e){var n=t("./formatters"),r=function(t){return function(e){return 0===e.indexOf(t)}},i=function(t){return function(e){return t===e}},o=function(){return[{type:r("uint"),format:n.formatInputInt},{type:r("int"),format:n.formatInputInt},{type:r("hash"),format:n.formatInputInt},{type:r("string"),format:n.formatInputString},{type:r("real"),format:n.formatInputReal},{type:r("ureal"),format:n.formatInputReal},{type:i("address"),format:n.formatInputInt},{type:i("bool"),format:n.formatInputBool}]},a=function(){return[{type:r("uint"),format:n.formatOutputUInt},{type:r("int"),format:n.formatOutputInt},{type:r("hash"),format:n.formatOutputHash},{type:r("string"),format:n.formatOutputString},{type:r("real"),format:n.formatOutputReal},{type:r("ureal"),format:n.formatOutputUReal},{type:i("address"),format:n.formatOutputAddress},{type:i("bool"),format:n.formatOutputBool}]};e.exports={prefixedType:r,namedType:i,inputTypes:o,outputTypes:a}},{"./formatters":6}],12:[function(t,e){var n=t("./const"),r=function(t,e){for(var n=!1,r=0;r<t.length&&!n;r++)n=e(t[r]);return n?r-1:-1},i=function(t){var e="",n=0,r=t.length;for("0x"===t.substring(0,2)&&(n=2);r>n;n+=2){var i=parseInt(t.substr(n,2),16);if(0===i)break;e+=String.fromCharCode(i)}return e},o=function(t){for(var e="",n=0;n<t.length;n++){var r=t.charCodeAt(n).toString(16);e+=r.length<2?"0"+r:r}return e},a=function(t,e){e=void 0===e?0:e;for(var n=o(t);n.length<2*e;)n+="00";return"0x"+n},u=function(t){var e=t.indexOf("(");return-1!==e?t.substr(0,e):t},s=function(t){var e=t.indexOf("(");return-1!==e?t.substr(e+1,t.length-1-(e+1)).replace(" ",""):""},f=function(t){return t.filter(function(t){return"function"===t.type})},c=function(t){return t.filter(function(t){return"event"===t.type})},l=function(t){for(var e="string"==typeof t?0===t.indexOf("0x")?parseInt(t.substr(2),16):parseInt(t):t,r=0,i=n.ETH_UNITS;e>3e3&&r<i.length-1;)e/=1e3,r++;for(var o=e.toString().length<e.toFixed(2).length?e.toString():e.toFixed(2),a=function(t,e,n){return e+","+n};;){var u=o;if(o=o.replace(/(\d)(\d\d\d[\.\,])/,a),u===o)break}return o+" "+i[r]};e.exports={findIndex:r,toAscii:i,fromAscii:a,extractDisplayName:u,extractTypeName:s,filterFunctions:f,filterEvents:c,toEth:l}},{"./const":2}],13:[function(t,e){var n=t("./utils"),r=function(){return[{name:"sha3",call:"web3_sha3"}]},i=function(){var t=function(t){return"string"==typeof t[0]?"eth_blockByHash":"eth_blockByNumber"},e=function(t){return"string"==typeof t[0]?"eth_transactionByHash":"eth_transactionByNumber"},n=function(t){return"string"==typeof t[0]?"eth_uncleByHash":"eth_uncleByNumber"},r=[{name:"balanceAt",call:"eth_balanceAt"},{name:"stateAt",call:"eth_stateAt"},{name:"storageAt",call:"eth_storageAt"},{name:"countAt",call:"eth_countAt"},{name:"codeAt",call:"eth_codeAt"},{name:"transact",call:"eth_transact"},{name:"call",call:"eth_call"},{name:"block",call:t},{name:"transaction",call:e},{name:"uncle",call:n},{name:"compilers",call:"eth_compilers"},{name:"flush",call:"eth_flush"},{name:"lll",call:"eth_lll"},{name:"solidity",call:"eth_solidity"},{name:"serpent",call:"eth_serpent"},{name:"logs",call:"eth_logs"}];return r},o=function(){return[{name:"coinbase",getter:"eth_coinbase",setter:"eth_setCoinbase"},{name:"listening",getter:"eth_listening",setter:"eth_setListening"},{name:"mining",getter:"eth_mining",setter:"eth_setMining"},{name:"gasPrice",getter:"eth_gasPrice"},{name:"accounts",getter:"eth_accounts"},{name:"peerCount",getter:"eth_peerCount"},{name:"defaultBlock",getter:"eth_defaultBlock",setter:"eth_setDefaultBlock"},{name:"number",getter:"eth_number"}]},a=function(){return[{name:"put",call:"db_put"},{name:"get",call:"db_get"},{name:"putString",call:"db_putString"},{name:"getString",call:"db_getString"}]},u=function(){return[{name:"post",call:"shh_post"},{name:"newIdentity",call:"shh_newIdentity"},{name:"haveIdentity",call:"shh_haveIdentity"},{name:"newGroup",call:"shh_newGroup"},{name:"addToGroup",call:"shh_addToGroup"}]},s=function(){var t=function(t){return"string"==typeof t[0]?"eth_newFilterString":"eth_newFilter"};return[{name:"newFilter",call:t},{name:"uninstallFilter",call:"eth_uninstallFilter"},{name:"getMessages",call:"eth_filterLogs"}]},f=function(){return[{name:"newFilter",call:"shh_newFilter"},{name:"uninstallFilter",call:"shh_uninstallFilter"},{name:"getMessages",call:"shh_getMessages"}]},c=function(t,e){e.forEach(function(e){t[e.name]=function(){var t=Array.prototype.slice.call(arguments),n="function"==typeof e.call?e.call(t):e.call;return p.provider.send({method:n,params:t})}})},l=function(t,e){e.forEach(function(e){var n={};n.get=function(){return p.provider.send({method:e.getter})},e.setter&&(n.set=function(t){return p.provider.send({method:e.setter,params:[t]})}),Object.defineProperty(t,e.name,n)})},p={_callbacks:{},_events:{},providers:{},toAscii:n.toAscii,fromAscii:n.fromAscii,toDecimal:function(t){return t=t.length>2?t.substring(2):"0",new BigNumber(t,16).toString(10)},fromDecimal:function(t){return"0x"+new BigNumber(t).toString(16)},toEth:n.toEth,eth:{contractFromAbi:function(t){return function(e){e=e||"0xc6d9d2cd449a754c494264e1809c50e34d64562b";var n=p.eth.contract(e,t);return n.address=e,n}},watch:function(t,e,n){return t._isEvent?t(e,n):new p.filter(t,m)}},db:{},shh:{watch:function(t){return new p.filter(t,h)}}};c(p,r()),c(p.eth,i()),l(p.eth,o()),c(p.db,a()),c(p.shh,u());var m={changed:"eth_changed"};c(m,s());var h={changed:"shh_changed"};c(h,f()),p.setProvider=function(t){p.provider.set(t)},e.exports=p},{"./utils":12}],web3:[function(t,e){var n=t("./lib/web3"),r=t("./lib/providermanager");n.provider=new r,n.filter=t("./lib/filter"),n.providers.HttpSyncProvider=t("./lib/httpsync"),n.providers.QtSyncProvider=t("./lib/qtsync"),n.eth.contract=t("./lib/contract"),n.abi=t("./lib/abi"),e.exports=n},{"./lib/abi":1,"./lib/contract":3,"./lib/filter":5,"./lib/httpsync":7,"./lib/providermanager":9,"./lib/qtsync":10,"./lib/web3":13}]},{},["web3"]);
\ No newline at end of file
diff --git a/cmd/mist/assets/ext/ethereum.js/example/balance.html b/cmd/mist/assets/ext/ethereum.js/example/balance.html
deleted file mode 100644
index 616d4eb6f..000000000
--- a/cmd/mist/assets/ext/ethereum.js/example/balance.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!doctype>
-<html>
-
-<head>
-<script type="text/javascript" src="js/bignumber.js/bignumber.min.js"></script>
-<script type="text/javascript" src="../dist/ethereum.js"></script>
-<script type="text/javascript">
-   
-    var web3 = require('web3');
-    web3.setProvider(new web3.providers.HttpSyncProvider('http://localhost:8080'));
-
-    function watchBalance() {
-        var coinbase = web3.eth.coinbase;
-        var originalBalance = 0;
-
-        var balance = web3.eth.balanceAt(coinbase);
-        var originalBalance = web3.toDecimal(balance);
-        document.getElementById('original').innerText = 'original balance: ' + originalBalance + '    watching...';
-
-<<<<<<< HEAD:cmd/mist/assets/ext/ethereum.js/example/balance.html
-        var filter = web3.eth.watch({address: coinbase}).changed(function() {
-=======
-        web3.eth.watch('pending').changed(function() {
->>>>>>> 859a1999cb204d2c6fcb08d6569c738c5af5cd86:example/balance.html
-            balance = web3.eth.balanceAt(coinbase)
-            var currentBalance = web3.toDecimal(balance);
-            document.getElementById("current").innerText = 'current: ' + currentBalance;
-            document.getElementById("diff").innerText = 'diff:    ' + (currentBalance - originalBalance);
-        });
-    }
-
-</script>
-</head>
-<body>
-    <h1>coinbase balance</h1>
-    <button type="button" onClick="watchBalance();">watch balance</button>
-    <div></div>
-    <div id="original"></div>
-    <div id="current"></div>
-    <div id="diff"></div>
-</body>
-</html>
-
diff --git a/cmd/mist/assets/ext/ethereum.js/example/contract.html b/cmd/mist/assets/ext/ethereum.js/example/contract.html
deleted file mode 100644
index a534f68d8..000000000
--- a/cmd/mist/assets/ext/ethereum.js/example/contract.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!doctype>
-<html>
-
-<head>
-<script type="text/javascript" src="js/bignumber.js/bignumber.min.js"></script>
-<script type="text/javascript" src="../dist/ethereum.js"></script>
-<script type="text/javascript">
-
-    var web3 = require('web3');
-    web3.setProvider(new web3.providers.HttpSyncProvider());
-
-    // solidity source code
-    var source = "" + 
-    "contract test {\n" +
-    "   function multiply(uint a) returns(uint d) {\n" +
-    "       return a * 7;\n" +
-    "   }\n" +
-    "}\n";
-
-    // contract description, this will be autogenerated somehow
-    var desc =  [{
-        "name": "multiply(uint256)",
-        "type": "function",
-        "inputs": [
-        {
-            "name": "a",
-            "type": "uint256"
-        }
-        ],
-        "outputs": [
-        {
-            "name": "d",
-            "type": "uint256"
-        }
-        ]
-    }];
-
-    var contract;
-
-    function createExampleContract() {
-        // hide create button
-        document.getElementById('create').style.visibility = 'hidden'; 
-        document.getElementById('source').innerText = source;
-
-        // create contract
-        var address = web3.eth.transact({code: web3.eth.solidity(source)});
-        contract = web3.eth.contract(address, desc);
-        document.getElementById('call').style.visibility = 'visible';
-    }
-
-    function callExampleContract() {
-        // this should be generated by ethereum
-        var param = parseInt(document.getElementById('value').value);
-
-        // call the contract
-        var res = contract.call().multiply(param);
-        document.getElementById('result').innerText = res.toString(10);
-    }
-
-</script>
-</head>
-<body>
-    <h1>contract</h1>
-    <div id="source"></div> 
-    <div id='create'>
-        <button type="button" onClick="createExampleContract();">create example contract</button>
-    </div>
-    <div id='call' style='visibility: hidden;'>
-        <input type="number" id="value" onkeyup='callExampleContract()'></input>
-    </div>
-    <div id="result"></div>
-</body>
-</html>
-
diff --git a/cmd/mist/assets/ext/ethereum.js/example/contract_with_array.html b/cmd/mist/assets/ext/ethereum.js/example/contract_with_array.html
deleted file mode 100644
index a3dfc8a24..000000000
--- a/cmd/mist/assets/ext/ethereum.js/example/contract_with_array.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!doctype>
-<html>
-
-<head>
-<script type="text/javascript" src="js/bignumber.js/bignumber.min.js"></script>
-<script type="text/javascript" src="../dist/ethereum.js"></script>
-<script type="text/javascript">
-
-    var web3 = require('web3');
-    web3.setProvider(new web3.providers.HttpSyncProvider());
-
-    // solidity source code
-    var source = "" + 
-    "contract test {\n" +
-    "   function multiply(uint[] a) returns(uint d) {\n" +
-    "       return a[0] + a[1];\n" +
-    "   }\n" +
-    "}\n";
-
-    // contract description, this will be autogenerated somehow
-    var desc =  [{
-        "name": "multiply(uint256[])",
-        "type": "function",
-        "inputs": [
-        {
-            "name": "a",
-            "type": "uint256[]"
-        }
-        ],
-        "outputs": [
-        {
-            "name": "d",
-            "type": "uint256"
-        }
-        ]
-    }];
-
-    var contract;
-
-    function createExampleContract() {
-        // hide create button
-        document.getElementById('create').style.visibility = 'hidden'; 
-        document.getElementById('source').innerText = source;
-
-        // create contract
-        var address = web3.eth.transact({code: web3.eth.solidity(source)});
-        contract = web3.eth.contract(address, desc);
-        document.getElementById('call').style.visibility = 'visible';
-    }
-
-    function callExampleContract() {
-        // this should be generated by ethereum
-        var param = parseInt(document.getElementById('value').value);
-        var param2 = parseInt(document.getElementById('value2').value);
-
-        // call the contract
-        var res = contract.call().multiply([param, param2]);
-        document.getElementById('result').innerText = res.toString(10);
-    }
-
-</script>
-</head>
-<body>
-    <h1>contract</h1>
-    <div id="source"></div> 
-    <div id='create'>
-        <button type="button" onClick="createExampleContract();">create example contract</button>
-    </div>
-    <div id='call' style='visibility: hidden;'>
-        <input type="number" id="value" onkeyup='callExampleContract()'></input>
-        <input type="number" id="value2" onkeyup='callExampleContract()'></input>
-    </div>
-    <div id="result"></div>
-</body>
-</html>
-
diff --git a/cmd/mist/assets/ext/ethereum.js/example/event.html b/cmd/mist/assets/ext/ethereum.js/example/event.html
deleted file mode 100644
index 84d302437..000000000
--- a/cmd/mist/assets/ext/ethereum.js/example/event.html
+++ /dev/null
@@ -1,120 +0,0 @@
-<!doctype>
-<html>
-    <head>
-    <script type="text/javascript" src="js/bignumber.js/bignumber.min.js"></script>
-    <script type="text/javascript" src="../dist/ethereum.js"></script>
-    <script type="text/javascript">
-        var web3 = require('web3');
-        web3.setProvider(new web3.providers.HttpSyncProvider('http://localhost:8080'));
-
-        var desc = [{
-            "type":"event",
-            "inputs": [{"name":"a","type":"uint256","indexed":true},{"name":"b","type":"hash256","indexed":false}],
-            "name":"Event"
-        }, {
-            "type":"event",
-            "inputs": [{"name":"a","type":"uint256","indexed":true},{"name":"b","type":"hash256","indexed":false}],
-            "name":"Event2"
-        }, {
-            "type":"function",
-            "inputs": [{"name":"a","type":"uint256"}],
-            "name":"foo",
-            "outputs": []
-        }];
-
-        var address = '0x01';
-
-        var contract = web3.eth.contract(address, desc); 
-
-        function test1() {
-            // "{"topic":["0x83c9849c","0xc4d76332"],"address":"0x01"}"
-            web3.eth.watch(contract).changed(function (res) {
-                
-            });
-        };
-
-        function test2() {
-            // "{"topic":["0x83c9849c"],"address":"0x01"}"
-            web3.eth.watch(contract.Event).changed(function (res) {
-                
-            });
-        };
-
-        function test3() {
-            // "{"topic":["0x83c9849c"],"address":"0x01"}"
-            contract.Event().changed(function (res) {
-                
-            });
-        };
-
-        function test4() {
-            // "{"topic":["0x83c9849c","0000000000000000000000000000000000000000000000000000000000000045"],"address":"0x01"}"
-            contract.Event({a: 69}).changed(function (res) {
-                
-            });
-        };
-
-        function test5() {
-            // "{"topic":["0x83c9849c",["0000000000000000000000000000000000000000000000000000000000000045","000000000000000000000000000000000000000000000000000000000000002a"]],"address":"0x01"}"
-            contract.Event({a: [69, 42]}).changed(function (res) {
-                
-            });
-        };
-
-        function test6() {
-            // "{"topic":["0x83c9849c","000000000000000000000000000000000000000000000000000000000000001e"],"max":100,"address":"0x01"}"
-            contract.Event({a: 30}, {max: 100}).changed(function (res) {
-                
-            });
-        };
-
-        function test7() {
-            // "{"topic":["0x83c9849c","000000000000000000000000000000000000000000000000000000000000001e"],"address":"0x01"}"
-            web3.eth.watch(contract.Event, {a: 30}).changed(function (res) {
-
-            });
-        };
-
-        function test8() {
-            // "{"topic":["0x83c9849c","000000000000000000000000000000000000000000000000000000000000001e"],"max":100,"address":"0x01"}"
-            web3.eth.watch(contract.Event, {a: 30}, {max: 100}).changed(function (res) {
-
-            });
-        };
-        
-        // not valid
-        // function testX() {
-        //    web3.eth.watch([contract.Event, contract.Event2]).changed(function (res) {
-        //    });
-        // };
-
-    </script>
-    </head>
-
-    <body>
-        <div>
-            <button type="button" onClick="test1();">test1</button>
-        </div>
-        <div>
-            <button type="button" onClick="test2();">test2</button>
-        </div>
-        <div>
-            <button type="button" onClick="test3();">test3</button>
-        </div>
-        <div>
-            <button type="button" onClick="test4();">test4</button>
-        </div>
-        <div>
-            <button type="button" onClick="test5();">test5</button>
-        </div>
-        <div>
-            <button type="button" onClick="test6();">test6</button>
-        </div>
-        <div>
-            <button type="button" onClick="test7();">test7</button>
-        </div>
-        <div>
-            <button type="button" onClick="test8();">test8</button>
-        </div>
-    </body>
-</html>
diff --git a/cmd/mist/assets/ext/ethereum.js/example/event_inc.html b/cmd/mist/assets/ext/ethereum.js/example/event_inc.html
deleted file mode 100644
index 17df9d681..000000000
--- a/cmd/mist/assets/ext/ethereum.js/example/event_inc.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!doctype>
-<html>
-    <head>
-    <script type="text/javascript" src="js/bignumber.js/bignumber.min.js"></script>
-    <script type="text/javascript" src="../dist/ethereum.js"></script>
-    <script type="text/javascript">
-        var web3 = require('web3');
-        web3.setProvider(new web3.providers.HttpSyncProvider('http://localhost:8080'));
-
-        var source = "" + 
-        "contract Contract { " +
-        "   event Incremented(bool indexed odd, uint x); " +
-        "   function Contract() { " +
-        "        x = 69; " +
-        "    } " +
-        "    function inc() { " +
-        "        ++x; " +
-        "        Incremented(x % 2 == 1, x); " +
-        "    } " +
-        "    uint x; " +
-        "}";
-
-        var desc = [{
-            "type":"event",
-            "name":"Incremented",
-            "inputs": [{"name":"odd","type":"bool","indexed":true},{"name":"x","type":"uint","indexed":false}],
-        }, {
-            "type":"function",
-            "name":"inc",
-            "inputs": [],
-            "outputs": []
-        }];
-
-        var address;
-        var contract;
-
-        var update = function (x) {
-            document.getElementById('result').innerText = JSON.stringify(x);
-        };
-    
-        var createContract = function () {
-            address = web3.eth.transact({code: web3.eth.solidity(source)});
-            contract = web3.eth.contract(address, desc); 
-            contract.Incremented({odd: true}).changed(update);
-            
-        };
-
-        var callContract = function () {
-            contract.call().inc();
-        };
-
-
-    </script>
-    </head>
-
-    <body>
-        <div>
-            <button type="button" onClick="createContract();">create contract</button>
-        </div>
-        <div>
-            <button type="button" onClick="callContract();">test1</button>
-        </div>
-        <div id="result">
-        </div>
-    </body>
-</html>
diff --git a/cmd/mist/assets/ext/ethereum.js/example/natspec_contract.html b/cmd/mist/assets/ext/ethereum.js/example/natspec_contract.html
deleted file mode 100644
index 212e582dc..000000000
--- a/cmd/mist/assets/ext/ethereum.js/example/natspec_contract.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<!doctype>
-<html>
-
-<head>
-<script type="text/javascript" src="js/bignumber.js/bignumber.min.js"></script>
-<script type="text/javascript" src="../dist/ethereum.js"></script>
-<script type="text/javascript">
-
-    var web3 = require('web3');
-    web3.setProvider(new web3.providers.QtSyncProvider());
-
-    // solidity source code
-    var source = "" + 
-    "contract test {\n" +
-    "   /// @notice Will multiply `a` by 7. \n" +
-    "   function multiply(uint a) returns(uint d) {\n" +
-    "       return a * 7;\n" +
-    "   }\n" +
-    "}\n";
-
-    // contract description, this will be autogenerated somehow
-    var desc =  [{
-        "name": "multiply(uint256)",
-        "type": "function",
-        "inputs": [
-        {
-            "name": "a",
-            "type": "uint256"
-        }
-        ],
-        "outputs": [
-        {
-            "name": "d",
-            "type": "uint256"
-        }
-        ]
-    }];
-
-    var contract;
-
-    function createExampleContract() {
-        // hide create button
-        document.getElementById('create').style.visibility = 'hidden'; 
-        document.getElementById('source').innerText = source;
-
-        // create contract
-        var address = web3.eth.transact({code: web3.eth.solidity(source)});
-        contract = web3.eth.contract(address, desc);
-        document.getElementById('call').style.visibility = 'visible';
-    }
-
-    function callExampleContract() {
-        // this should be generated by ethereum
-        var param = parseInt(document.getElementById('value').value);
-
-        // transaction does not return any result, cause it's not synchronous and we don't know,
-        // when it will be processed
-        contract.transact().multiply(param);
-        document.getElementById('result').innerText = 'transaction made';
-    }
-
-</script>
-</head>
-<body>
-    <h1>contract</h1>
-    <div id="source"></div> 
-    <div id='create'>
-        <button type="button" onClick="createExampleContract();">create example contract</button>
-    </div>
-    <div id='call' style='visibility: hidden;'>
-        <input type="number" id="value"></input>
-		<button type="button" onClick="callExampleContract()">Call Contract</button>
-    </div>
-    <div id="result"></div>
-</body>
-</html>
-
diff --git a/cmd/mist/assets/ext/ethereum.js/example/node-app.js b/cmd/mist/assets/ext/ethereum.js/example/node-app.js
deleted file mode 100644
index 8c2fc0ba3..000000000
--- a/cmd/mist/assets/ext/ethereum.js/example/node-app.js
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/env node
-
-var web3 = require("../index.js");
-
-web3.setProvider(new web3.providers.HttpSyncProvider('http://localhost:8080'));
-
-var coinbase = web3.eth.coinbase;
-console.log(coinbase);
-
-var balance = web3.eth.balanceAt(coinbase);
-console.log(balance);
-
diff --git a/cmd/mist/assets/ext/ethereum.js/gulpfile.js b/cmd/mist/assets/ext/ethereum.js/gulpfile.js
deleted file mode 100644
index f8f6c96ce..000000000
--- a/cmd/mist/assets/ext/ethereum.js/gulpfile.js
+++ /dev/null
@@ -1,104 +0,0 @@
-#!/usr/bin/env node
-
-'use strict';
-
-var path = require('path');
-
-var del = require('del');
-var gulp = require('gulp');
-var browserify = require('browserify');
-var jshint = require('gulp-jshint');
-var uglify = require('gulp-uglify');
-var rename = require('gulp-rename');
-var envify = require('envify/custom');
-var unreach = require('unreachable-branch-transform');
-var source = require('vinyl-source-stream');
-var exorcist = require('exorcist');
-var bower = require('bower');
-
-var DEST = './dist/';
-
-var build = function(src, dst, ugly) {
-  var result = browserify({
-      debug: true,
-      insert_global_vars: false,
-      detectGlobals: false,
-      bundleExternal: false
-    })
-    .require('./' + src + '.js', {expose: 'web3'})
-    .add('./' + src + '.js')
-    .transform('envify', {
-      NODE_ENV: 'build'
-    })
-    .transform('unreachable-branch-transform');
-
-    if (ugly) {
-      result = result.transform('uglifyify', {
-        mangle: false,
-        compress: {
-          dead_code: false,
-          conditionals: true,
-          unused: false,
-          hoist_funs: true,
-          hoist_vars: true,
-          negate_iife: false
-        },
-        beautify: true,
-        warnings: true
-      });
-    }
-
-    return result.bundle()
-    .pipe(exorcist(path.join( DEST, dst + '.js.map')))
-    .pipe(source(dst + '.js'))
-    .pipe(gulp.dest( DEST ));
-};
-
-var uglifyFile = function(file) {
-  return gulp.src( DEST + file + '.js')
-    .pipe(uglify())
-    .pipe(rename(file + '.min.js'))
-    .pipe(gulp.dest( DEST ));
-};
-
-gulp.task('bower', function(cb){
-  bower.commands.install().on('end', function (installed){
-    console.log(installed);
-    cb();
-  });
-});
-
-gulp.task('clean', ['lint'], function(cb) {
-  del([ DEST ], cb);
-});
-
-gulp.task('lint', function(){
-  return gulp.src(['./*.js', './lib/*.js'])
-    .pipe(jshint())
-    .pipe(jshint.reporter('default'));
-});
-
-gulp.task('build', ['clean'], function () {
-    return build('index', 'ethereum', true);
-});
-
-gulp.task('buildDev', ['clean'], function () {
-    return build('index', 'ethereum', false);
-});
-
-gulp.task('uglify', ['build'], function(){
-    return uglifyFile('ethereum');
-});
-
-gulp.task('uglifyDev', ['buildDev'], function(){
-    return uglifyFile('ethereum');
-});
-
-gulp.task('watch', function() {
-  gulp.watch(['./lib/*.js'], ['lint', 'prepare', 'build']);
-});
-
-gulp.task('release', ['bower', 'lint', 'build', 'uglify']);
-gulp.task('dev', ['bower', 'lint', 'buildDev', 'uglifyDev']);
-gulp.task('default', ['dev']);
-
diff --git a/cmd/mist/assets/ext/ethereum.js/index.js b/cmd/mist/assets/ext/ethereum.js/index.js
deleted file mode 100644
index 76c923722..000000000
--- a/cmd/mist/assets/ext/ethereum.js/index.js
+++ /dev/null
@@ -1,11 +0,0 @@
-var web3 = require('./lib/web3');
-var ProviderManager = require('./lib/providermanager');
-web3.provider = new ProviderManager();
-web3.filter = require('./lib/filter');
-web3.providers.HttpSyncProvider = require('./lib/httpsync');
-web3.providers.QtSyncProvider = require('./lib/qtsync');
-web3.eth.contract = require('./lib/contract');
-web3.abi = require('./lib/abi');
-
-
-module.exports = web3;
diff --git a/cmd/mist/assets/ext/ethereum.js/lib/abi.js b/cmd/mist/assets/ext/ethereum.js/lib/abi.js
deleted file mode 100644
index 1a92bf5e6..000000000
--- a/cmd/mist/assets/ext/ethereum.js/lib/abi.js
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file abi.js
- * @authors:
- *   Marek Kotewicz <marek@ethdev.com>
- *   Gav Wood <g@ethdev.com>
- * @date 2014
- */
-
-var web3 = require('./web3'); 
-var utils = require('./utils');
-var types = require('./types');
-var c = require('./const');
-var f = require('./formatters');
-
-var displayTypeError = function (type) {
-    console.error('parser does not support type: ' + type);
-};
-
-/// This method should be called if we want to check if givent type is an array type
-/// @returns true if it is, otherwise false
-var arrayType = function (type) {
-    return type.slice(-2) === '[]';
-};
-
-var dynamicTypeBytes = function (type, value) {
-    // TODO: decide what to do with array of strings
-    if (arrayType(type) || type === 'string')    // only string itself that is dynamic; stringX is static length.
-        return f.formatInputInt(value.length); 
-    return "";
-};
-
-var inputTypes = types.inputTypes(); 
-
-/// Formats input params to bytes
-/// @param abi contract method inputs
-/// @param array of params that will be formatted to bytes
-/// @returns bytes representation of input params
-var formatInput = function (inputs, params) {
-    var bytes = "";
-    var padding = c.ETH_PADDING * 2;
-
-    /// first we iterate in search for dynamic 
-    inputs.forEach(function (input, index) {
-        bytes += dynamicTypeBytes(input.type, params[index]);
-    });
-
-    inputs.forEach(function (input, i) {
-        var typeMatch = false;
-        for (var j = 0; j < inputTypes.length && !typeMatch; j++) {
-            typeMatch = inputTypes[j].type(inputs[i].type, params[i]);
-        }
-        if (!typeMatch) {
-            displayTypeError(inputs[i].type);
-        }
-
-        var formatter = inputTypes[j - 1].format;
-        var toAppend = "";
-
-        if (arrayType(inputs[i].type))
-            toAppend = params[i].reduce(function (acc, curr) {
-                return acc + formatter(curr);
-            }, "");
-        else
-            toAppend = formatter(params[i]);
-
-        bytes += toAppend; 
-    });
-    return bytes;
-};
-
-var dynamicBytesLength = function (type) {
-    if (arrayType(type) || type === 'string')   // only string itself that is dynamic; stringX is static length.
-        return c.ETH_PADDING * 2;
-    return 0;
-};
-
-var outputTypes = types.outputTypes(); 
-
-/// Formats output bytes back to param list
-/// @param contract abi method outputs
-/// @param bytes representtion of output 
-/// @returns array of output params 
-var formatOutput = function (outs, output) {
-    
-    output = output.slice(2);
-    var result = [];
-    var padding = c.ETH_PADDING * 2;
-
-    var dynamicPartLength = outs.reduce(function (acc, curr) {
-        return acc + dynamicBytesLength(curr.type);
-    }, 0);
-    
-    var dynamicPart = output.slice(0, dynamicPartLength);
-    output = output.slice(dynamicPartLength);
-
-    outs.forEach(function (out, i) {
-        var typeMatch = false;
-        for (var j = 0; j < outputTypes.length && !typeMatch; j++) {
-            typeMatch = outputTypes[j].type(outs[i].type);
-        }
-
-        if (!typeMatch) {
-            displayTypeError(outs[i].type);
-        }
-
-        var formatter = outputTypes[j - 1].format;
-        if (arrayType(outs[i].type)) {
-            var size = f.formatOutputUInt(dynamicPart.slice(0, padding));
-            dynamicPart = dynamicPart.slice(padding);
-            var array = [];
-            for (var k = 0; k < size; k++) {
-                array.push(formatter(output.slice(0, padding))); 
-                output = output.slice(padding);
-            }
-            result.push(array);
-        }
-        else if (types.prefixedType('string')(outs[i].type)) {
-            dynamicPart = dynamicPart.slice(padding); 
-            result.push(formatter(output.slice(0, padding)));
-            output = output.slice(padding);
-        } else {
-            result.push(formatter(output.slice(0, padding)));
-            output = output.slice(padding);
-        }
-    });
-
-    return result;
-};
-
-/// @param json abi for contract
-/// @returns input parser object for given json abi
-/// TODO: refactor creating the parser, do not double logic from contract
-var inputParser = function (json) {
-    var parser = {};
-    json.forEach(function (method) {
-        var displayName = utils.extractDisplayName(method.name); 
-        var typeName = utils.extractTypeName(method.name);
-
-        var impl = function () {
-            var params = Array.prototype.slice.call(arguments);
-            return formatInput(method.inputs, params);
-        };
-       
-        if (parser[displayName] === undefined) {
-            parser[displayName] = impl;
-        }
-
-        parser[displayName][typeName] = impl;
-    });
-
-    return parser;
-};
-
-/// @param json abi for contract
-/// @returns output parser for given json abi
-var outputParser = function (json) {
-    var parser = {};
-    json.forEach(function (method) {
-
-        var displayName = utils.extractDisplayName(method.name); 
-        var typeName = utils.extractTypeName(method.name);
-
-        var impl = function (output) {
-            return formatOutput(method.outputs, output);
-        };
-
-        if (parser[displayName] === undefined) {
-            parser[displayName] = impl;
-        }
-
-        parser[displayName][typeName] = impl;
-    });
-
-    return parser;
-};
-
-/// @param function/event name for which we want to get signature
-/// @returns signature of function/event with given name
-var signatureFromAscii = function (name) {
-    return web3.sha3(web3.fromAscii(name)).slice(0, 2 + c.ETH_SIGNATURE_LENGTH * 2);
-};
-
-var eventSignatureFromAscii = function (name) {
-    return web3.sha3(web3.fromAscii(name));
-};
-
-module.exports = {
-    inputParser: inputParser,
-    outputParser: outputParser,
-    formatInput: formatInput,
-    formatOutput: formatOutput,
-    signatureFromAscii: signatureFromAscii,
-    eventSignatureFromAscii: eventSignatureFromAscii
-};
-
diff --git a/cmd/mist/assets/ext/ethereum.js/lib/const.js b/cmd/mist/assets/ext/ethereum.js/lib/const.js
deleted file mode 100644
index 8a17b794d..000000000
--- a/cmd/mist/assets/ext/ethereum.js/lib/const.js
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file const.js
- * @authors:
- *   Marek Kotewicz <marek@ethdev.com>
- * @date 2015
- */
-
-/// required to define ETH_BIGNUMBER_ROUNDING_MODE
-if (process.env.NODE_ENV !== 'build') {
-    var BigNumber = require('bignumber.js'); // jshint ignore:line
-}
-
-var ETH_UNITS = [ 
-    'wei', 
-    'Kwei', 
-    'Mwei', 
-    'Gwei', 
-    'szabo', 
-    'finney', 
-    'ether', 
-    'grand', 
-    'Mether', 
-    'Gether', 
-    'Tether', 
-    'Pether', 
-    'Eether', 
-    'Zether', 
-    'Yether', 
-    'Nether', 
-    'Dether', 
-    'Vether', 
-    'Uether' 
-];
-
-module.exports = {
-    ETH_PADDING: 32,
-    ETH_SIGNATURE_LENGTH: 4,
-    ETH_UNITS: ETH_UNITS,
-    ETH_BIGNUMBER_ROUNDING_MODE: { ROUNDING_MODE: BigNumber.ROUND_DOWN }
-};
-
diff --git a/cmd/mist/assets/ext/ethereum.js/lib/contract.js b/cmd/mist/assets/ext/ethereum.js/lib/contract.js
deleted file mode 100644
index a0525bd9d..000000000
--- a/cmd/mist/assets/ext/ethereum.js/lib/contract.js
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file contract.js
- * @authors:
- *   Marek Kotewicz <marek@ethdev.com>
- * @date 2014
- */
-
-var web3 = require('./web3'); 
-var abi = require('./abi');
-var utils = require('./utils');
-var eventImpl = require('./event');
-
-var exportNatspecGlobals = function (vars) {
-    // it's used byt natspec.js
-    // TODO: figure out better way to solve this
-    web3._currentContractAbi = vars.abi;
-    web3._currentContractAddress = vars.address;
-    web3._currentContractMethodName = vars.method;
-    web3._currentContractMethodParams = vars.params;
-};
-
-var addFunctionRelatedPropertiesToContract = function (contract) {
-    
-    contract.call = function (options) {
-        contract._isTransact = false;
-        contract._options = options;
-        return contract;
-    };
-
-    contract.transact = function (options) {
-        contract._isTransact = true;
-        contract._options = options;
-        return contract;
-    };
-
-    contract._options = {};
-    ['gas', 'gasPrice', 'value', 'from'].forEach(function(p) {
-        contract[p] = function (v) {
-            contract._options[p] = v;
-            return contract;
-        };
-    });
-
-};
-
-var addFunctionsToContract = function (contract, desc, address) {
-    var inputParser = abi.inputParser(desc);
-    var outputParser = abi.outputParser(desc);
-
-    // create contract functions
-    utils.filterFunctions(desc).forEach(function (method) {
-
-        var displayName = utils.extractDisplayName(method.name);
-        var typeName = utils.extractTypeName(method.name);
-
-        var impl = function () {
-            var params = Array.prototype.slice.call(arguments);
-            var signature = abi.signatureFromAscii(method.name);
-            var parsed = inputParser[displayName][typeName].apply(null, params);
-
-            var options = contract._options || {};
-            options.to = address;
-            options.data = signature + parsed;
-            
-            var isTransact = contract._isTransact === true || (contract._isTransact !== false && !method.constant);
-            var collapse = options.collapse !== false;
-            
-            // reset
-            contract._options = {};
-            contract._isTransact = null;
-
-            if (isTransact) {
-                
-                exportNatspecGlobals({
-                    abi: desc,
-                    address: address,
-                    method: method.name,
-                    params: params
-                });
-
-                // transactions do not have any output, cause we do not know, when they will be processed
-                web3.eth.transact(options);
-                return;
-            }
-            
-            var output = web3.eth.call(options);
-            var ret = outputParser[displayName][typeName](output);
-            if (collapse)
-            {
-                if (ret.length === 1)
-                    ret = ret[0];
-                else if (ret.length === 0)
-                    ret = null;
-            }
-            return ret;
-        };
-
-        if (contract[displayName] === undefined) {
-            contract[displayName] = impl;
-        }
-
-        contract[displayName][typeName] = impl;
-    });
-};
-
-var addEventRelatedPropertiesToContract = function (contract, desc, address) {
-    contract.address = address;
-    contract._onWatchEventResult = function (data) {
-        var matchingEvent = event.getMatchingEvent(utils.filterEvents(desc));
-        var parser = eventImpl.outputParser(matchingEvent);
-        return parser(data);
-    };
-    
-    Object.defineProperty(contract, 'topic', {
-        get: function() {
-            return utils.filterEvents(desc).map(function (e) {
-                return abi.eventSignatureFromAscii(e.name);
-            });
-        }
-    });
-
-};
-
-var addEventsToContract = function (contract, desc, address) {
-    // create contract events
-    utils.filterEvents(desc).forEach(function (e) {
-
-        var impl = function () {
-            var params = Array.prototype.slice.call(arguments);
-            var signature = abi.eventSignatureFromAscii(e.name);
-            var event = eventImpl.inputParser(address, signature, e);
-            var o = event.apply(null, params);
-            o._onWatchEventResult = function (data) {
-                var parser = eventImpl.outputParser(e);
-                return parser(data);
-            };
-            return web3.eth.watch(o);  
-        };
-        
-        // this property should be used by eth.filter to check if object is an event
-        impl._isEvent = true;
-
-        var displayName = utils.extractDisplayName(e.name);
-        var typeName = utils.extractTypeName(e.name);
-
-        if (contract[displayName] === undefined) {
-            contract[displayName] = impl;
-        }
-
-        contract[displayName][typeName] = impl;
-
-    });
-};
-
-
-/**
- * This method should be called when we want to call / transact some solidity method from javascript
- * it returns an object which has same methods available as solidity contract description
- * usage example: 
- *
- * var abi = [{
- *      name: 'myMethod',
- *      inputs: [{ name: 'a', type: 'string' }],
- *      outputs: [{name: 'd', type: 'string' }]
- * }];  // contract abi
- *
- * var myContract = web3.eth.contract('0x0123123121', abi); // creation of contract object
- *
- * myContract.myMethod('this is test string param for call'); // myMethod call (implicit, default)
- * myContract.call().myMethod('this is test string param for call'); // myMethod call (explicit)
- * myContract.transact().myMethod('this is test string param for transact'); // myMethod transact
- *
- * @param address - address of the contract, which should be called
- * @param desc - abi json description of the contract, which is being created
- * @returns contract object
- */
-
-var contract = function (address, desc) {
-
-    // workaround for invalid assumption that method.name is the full anonymous prototype of the method.
-    // it's not. it's just the name. the rest of the code assumes it's actually the anonymous
-    // prototype, so we make it so as a workaround.
-    // TODO: we may not want to modify input params, maybe use copy instead?
-    desc.forEach(function (method) {
-        if (method.name.indexOf('(') === -1) {
-            var displayName = method.name;
-            var typeName = method.inputs.map(function(i){return i.type; }).join();
-            method.name = displayName + '(' + typeName + ')';
-        }
-    });
-
-    var result = {};
-    addFunctionRelatedPropertiesToContract(result);
-    addFunctionsToContract(result, desc, address);
-    addEventRelatedPropertiesToContract(result, desc, address);
-    addEventsToContract(result, desc, address);
-
-    return result;
-};
-
-module.exports = contract;
-
diff --git a/cmd/mist/assets/ext/ethereum.js/lib/event.js b/cmd/mist/assets/ext/ethereum.js/lib/event.js
deleted file mode 100644
index 0c41e0a39..000000000
--- a/cmd/mist/assets/ext/ethereum.js/lib/event.js
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file event.js
- * @authors:
- *   Marek Kotewicz <marek@ethdev.com>
- * @date 2014
- */
-
-var abi = require('./abi');
-var utils = require('./utils');
-
-/// filter inputs array && returns only indexed (or not) inputs
-/// @param inputs array
-/// @param bool if result should be an array of indexed params on not
-/// @returns array of (not?) indexed params
-var filterInputs = function (inputs, indexed) {
-    return inputs.filter(function (current) {
-        return current.indexed === indexed;
-    });
-};
-
-var inputWithName = function (inputs, name) {
-    var index = utils.findIndex(inputs, function (input) {
-        return input.name === name;
-    });
-    
-    if (index === -1) {
-        console.error('indexed param with name ' + name + ' not found');
-        return undefined;
-    }
-    return inputs[index];
-};
-
-var indexedParamsToTopics = function (event, indexed) {
-    // sort keys?
-    return Object.keys(indexed).map(function (key) {
-        var inputs = [inputWithName(filterInputs(event.inputs, true), key)];
-
-        var value = indexed[key];
-        if (value instanceof Array) {
-            return value.map(function (v) {
-                return abi.formatInput(inputs, [v]);
-            }); 
-        }
-        return abi.formatInput(inputs, [value]);
-    });
-};
-
-var inputParser = function (address, signature, event) {
-    
-    // valid options are 'earliest', 'latest', 'offset' and 'max', as defined for 'eth.watch'
-    return function (indexed, options) {
-        var o = options || {};
-        o.address = address;
-        o.topic = [];
-        o.topic.push(signature);
-        if (indexed) {
-            o.topic = o.topic.concat(indexedParamsToTopics(event, indexed));
-        }
-        return o;
-    };
-};
-
-var getArgumentsObject = function (inputs, indexed, notIndexed) {
-    var indexedCopy = indexed.slice();
-    var notIndexedCopy = notIndexed.slice();
-    return inputs.reduce(function (acc, current) {
-        var value;
-        if (current.indexed)
-            value = indexed.splice(0, 1)[0];
-        else
-            value = notIndexed.splice(0, 1)[0];
-
-        acc[current.name] = value;
-        return acc;
-    }, {}); 
-};
- 
-var outputParser = function (event) {
-    
-    return function (output) {
-        var result = {
-            event: utils.extractDisplayName(event.name),
-            number: output.number,
-            args: {}
-        };
-
-        if (!output.topic) {
-            return result;
-        }
-       
-        var indexedOutputs = filterInputs(event.inputs, true);
-        var indexedData = "0x" + output.topic.slice(1, output.topic.length).map(function (topic) { return topic.slice(2); }).join("");
-        var indexedRes = abi.formatOutput(indexedOutputs, indexedData);
-
-        var notIndexedOutputs = filterInputs(event.inputs, false);
-        var notIndexedRes = abi.formatOutput(notIndexedOutputs, output.data);
-
-        result.args = getArgumentsObject(event.inputs, indexedRes, notIndexedRes);
-
-        return result;
-    };
-};
-
-var getMatchingEvent = function (events, payload) {
-    for (var i = 0; i < events.length; i++) {
-        var signature = abi.eventSignatureFromAscii(events[i].name); 
-        if (signature === payload.topic[0]) {
-            return events[i];
-        }
-    }
-    return undefined;
-};
-
-
-module.exports = {
-    inputParser: inputParser,
-    outputParser: outputParser,
-    getMatchingEvent: getMatchingEvent
-};
-
diff --git a/cmd/mist/assets/ext/ethereum.js/lib/filter.js b/cmd/mist/assets/ext/ethereum.js/lib/filter.js
deleted file mode 100644
index 6ab2b7edc..000000000
--- a/cmd/mist/assets/ext/ethereum.js/lib/filter.js
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file filter.js
- * @authors:
- *   Jeffrey Wilcke <jeff@ethdev.com>
- *   Marek Kotewicz <marek@ethdev.com>
- *   Marian Oancea <marian@ethdev.com>
- *   Gav Wood <g@ethdev.com>
- * @date 2014
- */
-
-var web3 = require('./web3'); // jshint ignore:line
-
-/// should be used when we want to watch something
-/// it's using inner polling mechanism and is notified about changes
-/// TODO: change 'options' name cause it may be not the best matching one, since we have events
-var Filter = function(options, impl) {
-
-    if (typeof options !== "string") {
-
-        // topics property is deprecated, warn about it!
-        if (options.topics) {
-            console.warn('"topics" is deprecated, use "topic" instead');
-        }
-        
-        this._onWatchResult = options._onWatchEventResult;
-
-        // evaluate lazy properties
-        options = {
-            to: options.to,
-            topic: options.topic,
-            earliest: options.earliest,
-            latest: options.latest,
-            max: options.max,
-            skip: options.skip,
-            address: options.address
-        };
-
-    }
-    
-    this.impl = impl;
-    this.callbacks = [];
-
-    this.id = impl.newFilter(options);
-    web3.provider.startPolling({method: impl.changed, params: [this.id]}, this.id, this.trigger.bind(this));
-};
-
-/// alias for changed*
-Filter.prototype.arrived = function(callback) {
-    this.changed(callback);
-};
-Filter.prototype.happened = function(callback) {
-    this.changed(callback);
-};
-
-/// gets called when there is new eth/shh message
-Filter.prototype.changed = function(callback) {
-    this.callbacks.push(callback);
-};
-
-/// trigger calling new message from people
-Filter.prototype.trigger = function(messages) {
-    for (var i = 0; i < this.callbacks.length; i++) {
-        for (var j = 0; j < messages.length; j++) {
-            var message = this._onWatchResult ? this._onWatchResult(messages[j]) : messages[j];
-            this.callbacks[i].call(this, message);
-        }
-    }
-};
-
-/// should be called to uninstall current filter
-Filter.prototype.uninstall = function() {
-    this.impl.uninstallFilter(this.id);
-    web3.provider.stopPolling(this.id);
-};
-
-/// should be called to manually trigger getting latest messages from the client
-Filter.prototype.messages = function() {
-    return this.impl.getMessages(this.id);
-};
-
-/// alias for messages
-Filter.prototype.logs = function () {
-    return this.messages();
-};
-
-module.exports = Filter;
diff --git a/cmd/mist/assets/ext/ethereum.js/lib/formatters.js b/cmd/mist/assets/ext/ethereum.js/lib/formatters.js
deleted file mode 100644
index 857a01a40..000000000
--- a/cmd/mist/assets/ext/ethereum.js/lib/formatters.js
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file formatters.js
- * @authors:
- *   Marek Kotewicz <marek@ethdev.com>
- * @date 2015
- */
-
-if (process.env.NODE_ENV !== 'build') {
-    var BigNumber = require('bignumber.js'); // jshint ignore:line
-}
-
-var utils = require('./utils');
-var c = require('./const');
-
-/// @param string string to be padded
-/// @param number of characters that result string should have
-/// @param sign, by default 0
-/// @returns right aligned string
-var padLeft = function (string, chars, sign) {
-    return new Array(chars - string.length + 1).join(sign ? sign : "0") + string;
-};
-
-/// Formats input value to byte representation of int
-/// If value is negative, return it's two's complement
-/// If the value is floating point, round it down
-/// @returns right-aligned byte representation of int
-var formatInputInt = function (value) {
-    var padding = c.ETH_PADDING * 2;
-    if (value instanceof BigNumber || typeof value === 'number') {
-        if (typeof value === 'number')
-            value = new BigNumber(value);
-        BigNumber.config(c.ETH_BIGNUMBER_ROUNDING_MODE);
-        value = value.round();
-
-        if (value.lessThan(0)) 
-            value = new BigNumber("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 16).plus(value).plus(1);
-        value = value.toString(16);
-    }
-    else if (value.indexOf('0x') === 0)
-        value = value.substr(2);
-    else if (typeof value === 'string')
-        value = formatInputInt(new BigNumber(value));
-    else
-        value = (+value).toString(16);
-    return padLeft(value, padding);
-};
-
-/// Formats input value to byte representation of string
-/// @returns left-algined byte representation of string
-var formatInputString = function (value) {
-    return utils.fromAscii(value, c.ETH_PADDING).substr(2);
-};
-
-/// Formats input value to byte representation of bool
-/// @returns right-aligned byte representation bool
-var formatInputBool = function (value) {
-    return '000000000000000000000000000000000000000000000000000000000000000' + (value ?  '1' : '0');
-};
-
-/// Formats input value to byte representation of real
-/// Values are multiplied by 2^m and encoded as integers
-/// @returns byte representation of real
-var formatInputReal = function (value) {
-    return formatInputInt(new BigNumber(value).times(new BigNumber(2).pow(128))); 
-};
-
-
-/// Check if input value is negative
-/// @param value is hex format
-/// @returns true if it is negative, otherwise false
-var signedIsNegative = function (value) {
-    return (new BigNumber(value.substr(0, 1), 16).toString(2).substr(0, 1)) === '1';
-};
-
-/// Formats input right-aligned input bytes to int
-/// @returns right-aligned input bytes formatted to int
-var formatOutputInt = function (value) {
-    value = value || "0";
-    // check if it's negative number
-    // it it is, return two's complement
-    if (signedIsNegative(value)) {
-        return new BigNumber(value, 16).minus(new BigNumber('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16)).minus(1);
-    }
-    return new BigNumber(value, 16);
-};
-
-/// Formats big right-aligned input bytes to uint
-/// @returns right-aligned input bytes formatted to uint
-var formatOutputUInt = function (value) {
-    value = value || "0";
-    return new BigNumber(value, 16);
-};
-
-/// @returns input bytes formatted to real
-var formatOutputReal = function (value) {
-    return formatOutputInt(value).dividedBy(new BigNumber(2).pow(128)); 
-};
-
-/// @returns input bytes formatted to ureal
-var formatOutputUReal = function (value) {
-    return formatOutputUInt(value).dividedBy(new BigNumber(2).pow(128)); 
-};
-
-/// @returns right-aligned input bytes formatted to hex
-var formatOutputHash = function (value) {
-    return "0x" + value;
-};
-
-/// @returns right-aligned input bytes formatted to bool
-var formatOutputBool = function (value) {
-    return value === '0000000000000000000000000000000000000000000000000000000000000001' ? true : false;
-};
-
-/// @returns left-aligned input bytes formatted to ascii string
-var formatOutputString = function (value) {
-    return utils.toAscii(value);
-};
-
-/// @returns right-aligned input bytes formatted to address
-var formatOutputAddress = function (value) {
-    return "0x" + value.slice(value.length - 40, value.length);
-};
-
-
-module.exports = {
-    formatInputInt: formatInputInt,
-    formatInputString: formatInputString,
-    formatInputBool: formatInputBool,
-    formatInputReal: formatInputReal,
-    formatOutputInt: formatOutputInt,
-    formatOutputUInt: formatOutputUInt,
-    formatOutputReal: formatOutputReal,
-    formatOutputUReal: formatOutputUReal,
-    formatOutputHash: formatOutputHash,
-    formatOutputBool: formatOutputBool,
-    formatOutputString: formatOutputString,
-    formatOutputAddress: formatOutputAddress
-};
-
diff --git a/cmd/mist/assets/ext/ethereum.js/lib/httpsync.js b/cmd/mist/assets/ext/ethereum.js/lib/httpsync.js
deleted file mode 100644
index 06e410ca8..000000000
--- a/cmd/mist/assets/ext/ethereum.js/lib/httpsync.js
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file httpsync.js
- * @authors:
- *   Marek Kotewicz <marek@ethdev.com>
- *   Marian Oancea <marian@ethdev.com>
- * @date 2014
- */
-
-if (process.env.NODE_ENV !== 'build') {
-        var XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest; // jshint ignore:line
-}
-
-var HttpSyncProvider = function (host) {
-    this.handlers = [];
-    this.host = host || 'http://localhost:8080';
-};
-
-HttpSyncProvider.prototype.send = function (payload) {
-    //var data = formatJsonRpcObject(payload);
-    
-    var request = new XMLHttpRequest();
-    request.open('POST', this.host, false);
-    request.send(JSON.stringify(payload));
-    
-    // check request.status
-    var result = request.responseText;
-    return JSON.parse(result);
-};
-
-module.exports = HttpSyncProvider;
-
diff --git a/cmd/mist/assets/ext/ethereum.js/lib/jsonrpc.js b/cmd/mist/assets/ext/ethereum.js/lib/jsonrpc.js
deleted file mode 100644
index b2d6922c0..000000000
--- a/cmd/mist/assets/ext/ethereum.js/lib/jsonrpc.js
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file jsonrpc.js
- * @authors:
- *   Marek Kotewicz <marek@ethdev.com>
- * @date 2015
- */
-
-var messageId = 1;
-
-/// Should be called to valid json create payload object
-/// @param method of jsonrpc call, required
-/// @param params, an array of method params, optional
-/// @returns valid jsonrpc payload object
-var toPayload = function (method, params) {
-    if (!method)
-        console.error('jsonrpc method should be specified!');
-
-    return {
-        jsonrpc: '2.0',
-        method: method,
-        params: params || [],
-        id: messageId++
-    }; 
-};
-
-/// Should be called to check if jsonrpc response is valid
-/// @returns true if response is valid, otherwise false 
-var isValidResponse = function (response) {
-    return !!response &&
-        !response.error &&
-        response.jsonrpc === '2.0' &&
-        typeof response.id === 'number' &&
-        response.result !== undefined; // only undefined is not valid json object
-};
-
-/// Should be called to create batch payload object
-/// @param messages, an array of objects with method (required) and params (optional) fields
-var toBatchPayload = function (messages) {
-    return messages.map(function (message) {
-        return toPayload(message.method, message.params);
-    }); 
-};
-
-module.exports = {
-    toPayload: toPayload,
-    isValidResponse: isValidResponse,
-    toBatchPayload: toBatchPayload
-};
-
-
diff --git a/cmd/mist/assets/ext/ethereum.js/lib/local.js b/cmd/mist/assets/ext/ethereum.js/lib/local.js
deleted file mode 100644
index 30cd14df2..000000000
--- a/cmd/mist/assets/ext/ethereum.js/lib/local.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var addressName = {"0x12378912345789": "Gav", "0x57835893478594739854": "Jeff"};
-var nameAddress = {};
-
-for (var prop in addressName) {
-  if (addressName.hasOwnProperty(prop)) {
-    nameAddress[addressName[prop]]  = prop;
-  }
-}
-
-var local = {
-  addressBook:{
-    byName: addressName,
-    byAddress: nameAddress
-  }
-};
-
-if (typeof(module) !== "undefined")
-    module.exports = local;
diff --git a/cmd/mist/assets/ext/ethereum.js/lib/providermanager.js b/cmd/mist/assets/ext/ethereum.js/lib/providermanager.js
deleted file mode 100644
index 55b072634..000000000
--- a/cmd/mist/assets/ext/ethereum.js/lib/providermanager.js
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file providermanager.js
- * @authors:
- *   Jeffrey Wilcke <jeff@ethdev.com>
- *   Marek Kotewicz <marek@ethdev.com>
- *   Marian Oancea <marian@ethdev.com>
- *   Gav Wood <g@ethdev.com>
- * @date 2014
- */
-
-var web3 = require('./web3'); 
-var jsonrpc = require('./jsonrpc');
-
-
-/**
- * Provider manager object prototype
- * It's responsible for passing messages to providers
- * If no provider is set it's responsible for queuing requests
- * It's also responsible for polling the ethereum node for incoming messages
- * Default poll timeout is 12 seconds
- * If we are running ethereum.js inside ethereum browser, there are backend based tools responsible for polling,
- * and provider manager polling mechanism is not used
- */
-var ProviderManager = function() {
-    this.polls = [];
-    this.provider = undefined;
-
-    var self = this;
-    var poll = function () {
-        self.polls.forEach(function (data) {
-            var result = self.send(data.data);
-
-            if (!(result instanceof Array) || result.length === 0) {
-                return;
-            }
-
-            data.callback(result);
-        });
-
-        setTimeout(poll, 1000);
-    };
-    poll();
-};
-
-/// sends outgoing requests
-/// @params data - an object with at least 'method' property
-ProviderManager.prototype.send = function(data) {
-    var payload = jsonrpc.toPayload(data.method, data.params);
-
-    if (this.provider === undefined) {
-        console.error('provider is not set');
-        return null; 
-    }
-
-    var result = this.provider.send(payload);
-
-    if (!jsonrpc.isValidResponse(result)) {
-        console.log(result);
-        return null;
-    }
-
-    return result.result;
-};
-
-/// setups provider, which will be used for sending messages
-ProviderManager.prototype.set = function(provider) {
-    this.provider = provider;
-};
-
-/// this method is only used, when we do not have native qt bindings and have to do polling on our own
-/// should be callled, on start watching for eth/shh changes
-ProviderManager.prototype.startPolling = function (data, pollId, callback) {
-    this.polls.push({data: data, id: pollId, callback: callback});
-};
-
-/// should be called to stop polling for certain watch changes
-ProviderManager.prototype.stopPolling = function (pollId) {
-    for (var i = this.polls.length; i--;) {
-        var poll = this.polls[i];
-        if (poll.id === pollId) {
-            this.polls.splice(i, 1);
-        }
-    }
-};
-
-module.exports = ProviderManager;
-
diff --git a/cmd/mist/assets/ext/ethereum.js/lib/qtsync.js b/cmd/mist/assets/ext/ethereum.js/lib/qtsync.js
deleted file mode 100644
index 75dcb43ab..000000000
--- a/cmd/mist/assets/ext/ethereum.js/lib/qtsync.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file qtsync.js
- * @authors:
- *   Marek Kotewicz <marek@ethdev.com>
- *   Marian Oancea <marian@ethdev.com>
- * @date 2014
- */
-
-var QtSyncProvider = function () {
-};
-
-QtSyncProvider.prototype.send = function (payload) {
-    var result = navigator.qt.callMethod(JSON.stringify(payload));
-    return JSON.parse(result);
-};
-
-module.exports = QtSyncProvider;
-
diff --git a/cmd/mist/assets/ext/ethereum.js/lib/types.js b/cmd/mist/assets/ext/ethereum.js/lib/types.js
deleted file mode 100644
index a39f2f1fc..000000000
--- a/cmd/mist/assets/ext/ethereum.js/lib/types.js
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file types.js
- * @authors:
- *   Marek Kotewicz <marek@ethdev.com>
- * @date 2015
- */
-
-var f = require('./formatters');
-
-/// @param expected type prefix (string)
-/// @returns function which checks if type has matching prefix. if yes, returns true, otherwise false
-var prefixedType = function (prefix) {
-    return function (type) {
-        return type.indexOf(prefix) === 0;
-    };
-};
-
-/// @param expected type name (string)
-/// @returns function which checks if type is matching expected one. if yes, returns true, otherwise false
-var namedType = function (name) {
-    return function (type) {
-        return name === type;
-    };
-};
-
-/// Setups input formatters for solidity types
-/// @returns an array of input formatters 
-var inputTypes = function () {
-    
-    return [
-        { type: prefixedType('uint'), format: f.formatInputInt },
-        { type: prefixedType('int'), format: f.formatInputInt },
-        { type: prefixedType('hash'), format: f.formatInputInt },
-        { type: prefixedType('string'), format: f.formatInputString }, 
-        { type: prefixedType('real'), format: f.formatInputReal },
-        { type: prefixedType('ureal'), format: f.formatInputReal },
-        { type: namedType('address'), format: f.formatInputInt },
-        { type: namedType('bool'), format: f.formatInputBool }
-    ];
-};
-
-/// Setups output formaters for solidity types
-/// @returns an array of output formatters
-var outputTypes = function () {
-
-    return [
-        { type: prefixedType('uint'), format: f.formatOutputUInt },
-        { type: prefixedType('int'), format: f.formatOutputInt },
-        { type: prefixedType('hash'), format: f.formatOutputHash },
-        { type: prefixedType('string'), format: f.formatOutputString },
-        { type: prefixedType('real'), format: f.formatOutputReal },
-        { type: prefixedType('ureal'), format: f.formatOutputUReal },
-        { type: namedType('address'), format: f.formatOutputAddress },
-        { type: namedType('bool'), format: f.formatOutputBool }
-    ];
-};
-
-module.exports = {
-    prefixedType: prefixedType,
-    namedType: namedType,
-    inputTypes: inputTypes,
-    outputTypes: outputTypes
-};
-
diff --git a/cmd/mist/assets/ext/ethereum.js/lib/utils.js b/cmd/mist/assets/ext/ethereum.js/lib/utils.js
deleted file mode 100644
index 7cc1917e1..000000000
--- a/cmd/mist/assets/ext/ethereum.js/lib/utils.js
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file utils.js
- * @authors:
- *   Marek Kotewicz <marek@ethdev.com>
- * @date 2015
- */
-
-var c = require('./const');
-
-/// Finds first index of array element matching pattern
-/// @param array
-/// @param callback pattern
-/// @returns index of element
-var findIndex = function (array, callback) {
-    var end = false;
-    var i = 0;
-    for (; i < array.length && !end; i++) {
-        end = callback(array[i]);
-    }
-    return end ? i - 1 : -1;
-};
-
-/// @returns ascii string representation of hex value prefixed with 0x
-var toAscii = function(hex) {
-// Find termination
-    var str = "";
-    var i = 0, l = hex.length;
-    if (hex.substring(0, 2) === '0x') {
-        i = 2;
-    }
-    for (; i < l; i+=2) {
-        var code = parseInt(hex.substr(i, 2), 16);
-        if (code === 0) {
-            break;
-        }
-
-        str += String.fromCharCode(code);
-    }
-
-    return str;
-};
-    
-var toHex = function(str) {
-    var hex = "";
-    for(var i = 0; i < str.length; i++) {
-        var n = str.charCodeAt(i).toString(16);
-        hex += n.length < 2 ? '0' + n : n;
-    }
-
-    return hex;
-};
-
-/// @returns hex representation (prefixed by 0x) of ascii string
-var fromAscii = function(str, pad) {
-    pad = pad === undefined ? 0 : pad;
-    var hex = toHex(str);
-    while (hex.length < pad*2)
-        hex += "00";
-    return "0x" + hex;
-};
-
-/// @returns display name for function/event eg. multiply(uint256) -> multiply
-var extractDisplayName = function (name) {
-    var length = name.indexOf('('); 
-    return length !== -1 ? name.substr(0, length) : name;
-};
-
-/// @returns overloaded part of function/event name
-var extractTypeName = function (name) {
-    /// TODO: make it invulnerable
-    var length = name.indexOf('(');
-    return length !== -1 ? name.substr(length + 1, name.length - 1 - (length + 1)).replace(' ', '') : "";
-};
-
-/// Filters all function from input abi
-/// @returns abi array with filtered objects of type 'function'
-var filterFunctions = function (json) {
-    return json.filter(function (current) {
-        return current.type === 'function'; 
-    }); 
-};
-
-/// Filters all events form input abi
-/// @returns abi array with filtered objects of type 'event'
-var filterEvents = function (json) {
-    return json.filter(function (current) {
-        return current.type === 'event';
-    });
-};
-
-/// used to transform value/string to eth string
-/// TODO: use BigNumber.js to parse int
-/// TODO: add tests for it!
-var toEth = function (str) {
-    var val = typeof str === "string" ? str.indexOf('0x') === 0 ? parseInt(str.substr(2), 16) : parseInt(str) : str;
-    var unit = 0;
-    var units = c.ETH_UNITS;
-    while (val > 3000 && unit < units.length - 1)
-    {
-        val /= 1000;
-        unit++;
-    }
-    var s = val.toString().length < val.toFixed(2).length ? val.toString() : val.toFixed(2);
-    var replaceFunction = function($0, $1, $2) {
-        return $1 + ',' + $2;
-    };
-
-    while (true) {
-        var o = s;
-        s = s.replace(/(\d)(\d\d\d[\.\,])/, replaceFunction);
-        if (o === s)
-            break;
-    }
-    return s + ' ' + units[unit];
-};
-
-module.exports = {
-    findIndex: findIndex,
-    toAscii: toAscii,
-    fromAscii: fromAscii,
-    extractDisplayName: extractDisplayName,
-    extractTypeName: extractTypeName,
-    filterFunctions: filterFunctions,
-    filterEvents: filterEvents,
-    toEth: toEth
-};
-
diff --git a/cmd/mist/assets/ext/ethereum.js/lib/web3.js b/cmd/mist/assets/ext/ethereum.js/lib/web3.js
deleted file mode 100644
index 41df75051..000000000
--- a/cmd/mist/assets/ext/ethereum.js/lib/web3.js
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
-    This file is part of ethereum.js.
-
-    ethereum.js is free software: you can redistribute it and/or modify
-    it under the terms of the GNU Lesser General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    ethereum.js is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public License
-    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/** @file web3.js
- * @authors:
- *   Jeffrey Wilcke <jeff@ethdev.com>
- *   Marek Kotewicz <marek@ethdev.com>
- *   Marian Oancea <marian@ethdev.com>
- *   Gav Wood <g@ethdev.com>
- * @date 2014
- */
-
-if (process.env.NODE_ENV !== 'build') {
-    var BigNumber = require('bignumber.js');
-}
-
-var utils = require('./utils');
-
-/// @returns an array of objects describing web3 api methods
-var web3Methods = function () {
-    return [
-    { name: 'sha3', call: 'web3_sha3' }
-    ];
-};
-
-/// @returns an array of objects describing web3.eth api methods
-var ethMethods = function () {
-    var blockCall = function (args) {
-        return typeof args[0] === "string" ? "eth_blockByHash" : "eth_blockByNumber";
-    };
-
-    var transactionCall = function (args) {
-        return typeof args[0] === "string" ? 'eth_transactionByHash' : 'eth_transactionByNumber';
-    };
-
-    var uncleCall = function (args) {
-        return typeof args[0] === "string" ? 'eth_uncleByHash' : 'eth_uncleByNumber';
-    };
-
-    var methods = [
-    { name: 'balanceAt', call: 'eth_balanceAt' },
-    { name: 'stateAt', call: 'eth_stateAt' },
-    { name: 'storageAt', call: 'eth_storageAt' },
-    { name: 'countAt', call: 'eth_countAt'},
-    { name: 'codeAt', call: 'eth_codeAt' },
-    { name: 'transact', call: 'eth_transact' },
-    { name: 'call', call: 'eth_call' },
-    { name: 'block', call: blockCall },
-    { name: 'transaction', call: transactionCall },
-    { name: 'uncle', call: uncleCall },
-    { name: 'compilers', call: 'eth_compilers' },
-    { name: 'flush', call: 'eth_flush' },
-    { name: 'lll', call: 'eth_lll' },
-    { name: 'solidity', call: 'eth_solidity' },
-    { name: 'serpent', call: 'eth_serpent' },
-    { name: 'logs', call: 'eth_logs' }
-    ];
-    return methods;
-};
-
-/// @returns an array of objects describing web3.eth api properties
-var ethProperties = function () {
-    return [
-    { name: 'coinbase', getter: 'eth_coinbase', setter: 'eth_setCoinbase' },
-    { name: 'listening', getter: 'eth_listening', setter: 'eth_setListening' },
-    { name: 'mining', getter: 'eth_mining', setter: 'eth_setMining' },
-    { name: 'gasPrice', getter: 'eth_gasPrice' },
-    { name: 'accounts', getter: 'eth_accounts' },
-    { name: 'peerCount', getter: 'eth_peerCount' },
-    { name: 'defaultBlock', getter: 'eth_defaultBlock', setter: 'eth_setDefaultBlock' },
-    { name: 'number', getter: 'eth_number'}
-    ];
-};
-
-/// @returns an array of objects describing web3.db api methods
-var dbMethods = function () {
-    return [
-    { name: 'put', call: 'db_put' },
-    { name: 'get', call: 'db_get' },
-    { name: 'putString', call: 'db_putString' },
-    { name: 'getString', call: 'db_getString' }
-    ];
-};
-
-/// @returns an array of objects describing web3.shh api methods
-var shhMethods = function () {
-    return [
-    { name: 'post', call: 'shh_post' },
-    { name: 'newIdentity', call: 'shh_newIdentity' },
-    { name: 'haveIdentity', call: 'shh_haveIdentity' },
-    { name: 'newGroup', call: 'shh_newGroup' },
-    { name: 'addToGroup', call: 'shh_addToGroup' }
-    ];
-};
-
-/// @returns an array of objects describing web3.eth.watch api methods
-var ethWatchMethods = function () {
-    var newFilter = function (args) {
-        return typeof args[0] === 'string' ? 'eth_newFilterString' : 'eth_newFilter';
-    };
-
-    return [
-    { name: 'newFilter', call: newFilter },
-    { name: 'uninstallFilter', call: 'eth_uninstallFilter' },
-    { name: 'getMessages', call: 'eth_filterLogs' }
-    ];
-};
-
-/// @returns an array of objects describing web3.shh.watch api methods
-var shhWatchMethods = function () {
-    return [
-    { name: 'newFilter', call: 'shh_newFilter' },
-    { name: 'uninstallFilter', call: 'shh_uninstallFilter' },
-    { name: 'getMessages', call: 'shh_getMessages' }
-    ];
-};
-
-/// creates methods in a given object based on method description on input
-/// setups api calls for these methods
-var setupMethods = function (obj, methods) {
-    methods.forEach(function (method) {
-        obj[method.name] = function () {
-            var args = Array.prototype.slice.call(arguments);
-            var call = typeof method.call === 'function' ? method.call(args) : method.call;
-            return web3.provider.send({
-                method: call,
-                params: args
-            });
-        };
-    });
-};
-
-/// creates properties in a given object based on properties description on input
-/// setups api calls for these properties
-var setupProperties = function (obj, properties) {
-    properties.forEach(function (property) {
-        var proto = {};
-        proto.get = function () {
-            return web3.provider.send({
-                method: property.getter
-            });
-        };
-
-        if (property.setter) {
-            proto.set = function (val) {
-                return web3.provider.send({
-                    method: property.setter,
-                    params: [val]
-                });
-            };
-        }
-        Object.defineProperty(obj, property.name, proto);
-    });
-};
-
-/// setups web3 object, and it's in-browser executed methods
-var web3 = {
-    _callbacks: {},
-    _events: {},
-    providers: {},
-
-    /// @returns ascii string representation of hex value prefixed with 0x
-    toAscii: utils.toAscii,
-
-    /// @returns hex representation (prefixed by 0x) of ascii string
-    fromAscii: utils.fromAscii,
-
-    /// @returns decimal representaton of hex value prefixed by 0x
-    toDecimal: function (val) {
-        // remove 0x and place 0, if it's required
-        val = val.length > 2 ? val.substring(2) : "0";
-        return (new BigNumber(val, 16).toString(10));
-    },
-
-    /// @returns hex representation (prefixed by 0x) of decimal value
-    fromDecimal: function (val) {
-        return "0x" + (new BigNumber(val).toString(16));
-    },
-
-    /// used to transform value/string to eth string
-    toEth: utils.toEth,
-
-    /// eth object prototype
-    eth: {
-        contractFromAbi: function (abi) {
-            return function(addr) {
-                // Default to address of Config. TODO: rremove prior to genesis.
-                addr = addr || '0xc6d9d2cd449a754c494264e1809c50e34d64562b';
-                var ret = web3.eth.contract(addr, abi);
-                ret.address = addr;
-                return ret;
-            };
-        },
-
-        /// @param filter may be a string, object or event
-        /// @param indexed is optional, this is an object with optional event indexed params
-        /// @param options is optional, this is an object with optional event options ('max'...)
-        watch: function (filter, indexed, options) {
-            if (filter._isEvent) {
-                return filter(indexed, options);
-            }
-            return new web3.filter(filter, ethWatch);
-        }
-    },
-
-    /// db object prototype
-    db: {},
-
-    /// shh object prototype
-    shh: {
-        
-        /// @param filter may be a string, object or event
-        watch: function (filter, indexed) {
-            return new web3.filter(filter, shhWatch);
-        }
-    },
-};
-
-/// setups all api methods
-setupMethods(web3, web3Methods());
-setupMethods(web3.eth, ethMethods());
-setupProperties(web3.eth, ethProperties());
-setupMethods(web3.db, dbMethods());
-setupMethods(web3.shh, shhMethods());
-
-var ethWatch = {
-    changed: 'eth_changed'
-};
-
-setupMethods(ethWatch, ethWatchMethods());
-
-var shhWatch = {
-    changed: 'shh_changed'
-};
-
-setupMethods(shhWatch, shhWatchMethods());
-
-web3.setProvider = function(provider) {
-    web3.provider.set(provider);
-};
-
-module.exports = web3;
-
diff --git a/cmd/mist/assets/ext/ethereum.js/package.json b/cmd/mist/assets/ext/ethereum.js/package.json
deleted file mode 100644
index 8102a2592..000000000
--- a/cmd/mist/assets/ext/ethereum.js/package.json
+++ /dev/null
@@ -1,69 +0,0 @@
-{
-  "name": "ethereum.js",
-  "namespace": "ethereum",
-  "version": "0.0.13",
-  "description": "Ethereum Compatible JavaScript API",
-  "main": "./index.js",
-  "directories": {
-    "lib": "./lib"
-  },
-  "dependencies": {
-    "ws": "*",
-    "xmlhttprequest": "*",
-    "bignumber.js": ">=2.0.0"
-  },
-  "devDependencies": {
-    "bower": ">=1.3.0",
-    "browserify": ">=6.0",
-    "del": ">=0.1.1",
-    "envify": "^3.0.0",
-    "exorcist": "^0.1.6",
-    "gulp": ">=3.4.0",
-    "gulp-jshint": ">=1.5.0",
-    "gulp-rename": ">=1.2.0",
-    "gulp-uglify": ">=1.0.0",
-    "jshint": ">=2.5.0",
-    "uglifyify": "^2.6.0",
-    "unreachable-branch-transform": "^0.1.0",
-    "vinyl-source-stream": "^1.0.0",
-    "mocha": ">=2.1.0"
-  },
-  "scripts": {
-    "build": "gulp",
-    "watch": "gulp watch",
-    "lint": "gulp lint",
-    "test": "mocha"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/ethereum/ethereum.js.git"
-  },
-  "homepage": "https://github.com/ethereum/ethereum.js",
-  "bugs": {
-    "url": "https://github.com/ethereum/ethereum.js/issues"
-  },
-  "keywords": [
-    "ethereum",
-    "javascript",
-    "API"
-  ],
-  "author": "ethdev.com",
-  "authors": [
-    {
-      "name": "Jeffery Wilcke",
-      "email": "jeff@ethdev.com",
-      "url": "https://github.com/obscuren"
-    },
-    {
-      "name": "Marek Kotewicz",
-      "email": "marek@ethdev.com",
-      "url": "https://github.com/debris"
-    },
-    {
-      "name": "Marian Oancea",
-      "email": "marian@ethdev.com",
-      "url": "https://github.com/cubedro"
-    }
-  ],
-  "license": "LGPL-3.0"
-}
diff --git a/cmd/mist/assets/ext/ethereum.js/test/abi.parsers.js b/cmd/mist/assets/ext/ethereum.js/test/abi.parsers.js
deleted file mode 100644
index b7a05cea3..000000000
--- a/cmd/mist/assets/ext/ethereum.js/test/abi.parsers.js
+++ /dev/null
@@ -1,860 +0,0 @@
-var assert = require('assert');
-var BigNumber = require('bignumber.js');
-var abi = require('../lib/abi.js');
-var clone = function (object) { return JSON.parse(JSON.stringify(object)); };
-
-var description =  [{
-    "name": "test",
-    "inputs": [{
-        "name": "a",
-        "type": "uint256"
-    }
-    ],
-    "outputs": [
-    {
-        "name": "d",
-        "type": "uint256"
-    }
-    ]
-}];
-
-describe('abi', function() {
-    describe('inputParser', function() {
-        it('should parse input uint', function() {
-
-            // given
-            var d = clone(description);
-
-            d[0].inputs = [
-                { type: "uint" }
-            ];
-            
-            // when
-            var parser = abi.inputParser(d);
-
-            // then
-            assert.equal(parser.test(1), "0000000000000000000000000000000000000000000000000000000000000001");
-            assert.equal(parser.test(10), "000000000000000000000000000000000000000000000000000000000000000a");
-            assert.equal(
-                parser.test("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), 
-                "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
-                );
-            assert.equal(
-                parser.test(new BigNumber("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 16)),
-                "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
-                );
-            assert.equal(parser.test(0.1), "0000000000000000000000000000000000000000000000000000000000000000");
-            assert.equal(parser.test(3.9), "0000000000000000000000000000000000000000000000000000000000000003");
-            assert.equal(parser.test('0.1'), "0000000000000000000000000000000000000000000000000000000000000000");
-            assert.equal(parser.test('3.9'), "0000000000000000000000000000000000000000000000000000000000000003");
-
-        });
-
-        it('should parse input uint128', function() {
-
-            // given
-            var d = clone(description);
-
-            d[0].inputs = [
-                { type: "uint128" }
-            ];
-
-            // when
-            var parser = abi.inputParser(d);
-
-            // then
-            assert.equal(parser.test(1), "0000000000000000000000000000000000000000000000000000000000000001");
-            assert.equal(parser.test(10), "000000000000000000000000000000000000000000000000000000000000000a");
-            assert.equal(
-                parser.test("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), 
-                "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
-                );
-            assert.equal(
-                parser.test(new BigNumber("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 16)),
-                "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
-                );
-            assert.equal(parser.test(0.1), "0000000000000000000000000000000000000000000000000000000000000000");
-            assert.equal(parser.test(3.9), "0000000000000000000000000000000000000000000000000000000000000003");
-            assert.equal(parser.test('0.1'), "0000000000000000000000000000000000000000000000000000000000000000");
-            assert.equal(parser.test('3.9'), "0000000000000000000000000000000000000000000000000000000000000003");
-
-        });
-        
-        it('should parse input uint256', function() {
-
-            // given
-            var d = clone(description);
-
-            d[0].inputs = [
-                { type: "uint256" }
-            ];
-
-            // when
-            var parser = abi.inputParser(d);
-
-            // then
-            assert.equal(parser.test(1), "0000000000000000000000000000000000000000000000000000000000000001");
-            assert.equal(parser.test(10), "000000000000000000000000000000000000000000000000000000000000000a");
-            assert.equal(
-                parser.test("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), 
-                "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
-                );
-            assert.equal(
-                parser.test(new BigNumber("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 16)),
-                "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
-                );
-            assert.equal(parser.test(0.1), "0000000000000000000000000000000000000000000000000000000000000000");
-            assert.equal(parser.test(3.9), "0000000000000000000000000000000000000000000000000000000000000003");
-            assert.equal(parser.test('0.1'), "0000000000000000000000000000000000000000000000000000000000000000");
-            assert.equal(parser.test('3.9'), "0000000000000000000000000000000000000000000000000000000000000003");
-            
-        });
-
-        it('should parse input int', function() {
-
-            // given
-            var d = clone(description);
-
-            d[0].inputs = [
-                { type: "int" }
-            ];
-            
-            // when
-            var parser = abi.inputParser(d);
-
-            // then
-            assert.equal(parser.test(1), "0000000000000000000000000000000000000000000000000000000000000001");
-            assert.equal(parser.test(10), "000000000000000000000000000000000000000000000000000000000000000a");
-            assert.equal(parser.test(-1), "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
-            assert.equal(parser.test(-2), "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe");
-            assert.equal(parser.test(-16), "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0");
-            assert.equal(
-                parser.test("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), 
-                "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
-                );
-            assert.equal(
-                parser.test(new BigNumber("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 16)),
-                "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
-                );
-            assert.equal(parser.test(0.1), "0000000000000000000000000000000000000000000000000000000000000000");
-            assert.equal(parser.test(3.9), "0000000000000000000000000000000000000000000000000000000000000003");
-            assert.equal(parser.test('0.1'), "0000000000000000000000000000000000000000000000000000000000000000");
-            assert.equal(parser.test('3.9'), "0000000000000000000000000000000000000000000000000000000000000003");
-        });
-
-        it('should parse input int128', function() {
-
-            // given
-            var d = clone(description);
-
-            d[0].inputs = [
-                { type: "int128" }
-            ];
-
-            // when
-            var parser = abi.inputParser(d);
-
-            // then
-            assert.equal(parser.test(1), "0000000000000000000000000000000000000000000000000000000000000001");
-            assert.equal(parser.test(10), "000000000000000000000000000000000000000000000000000000000000000a");
-            assert.equal(parser.test(-1), "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
-            assert.equal(parser.test(-2), "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe");
-            assert.equal(parser.test(-16), "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0");
-            assert.equal(
-                parser.test("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), 
-                "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
-                );
-            assert.equal(
-                parser.test(new BigNumber("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 16)),
-                "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
-                );
-            assert.equal(parser.test(0.1), "0000000000000000000000000000000000000000000000000000000000000000");
-            assert.equal(parser.test(3.9), "0000000000000000000000000000000000000000000000000000000000000003");
-            assert.equal(parser.test('0.1'), "0000000000000000000000000000000000000000000000000000000000000000");
-            assert.equal(parser.test('3.9'), "0000000000000000000000000000000000000000000000000000000000000003");
-
-        });
-
-        it('should parse input int256', function() {
-        
-            // given
-            var d = clone(description);
-
-            d[0].inputs = [
-                { type: "int256" }
-            ];
-
-            // when
-            var parser = abi.inputParser(d);
-
-            // then
-            assert.equal(parser.test(1), "0000000000000000000000000000000000000000000000000000000000000001");
-            assert.equal(parser.test(10), "000000000000000000000000000000000000000000000000000000000000000a");
-            assert.equal(parser.test(-1), "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
-            assert.equal(parser.test(-2), "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe");
-            assert.equal(parser.test(-16), "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0");
-            assert.equal(
-                parser.test("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), 
-                "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
-                );
-            assert.equal(
-                parser.test(new BigNumber("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 16)),
-                "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
-                );
-            assert.equal(parser.test(0.1), "0000000000000000000000000000000000000000000000000000000000000000");
-            assert.equal(parser.test(3.9), "0000000000000000000000000000000000000000000000000000000000000003");
-            assert.equal(parser.test('0.1'), "0000000000000000000000000000000000000000000000000000000000000000");
-            assert.equal(parser.test('3.9'), "0000000000000000000000000000000000000000000000000000000000000003");
-            
-        });
-
-        it('should parse input bool', function() {
-            
-            // given
-            var d = clone(description);
-
-            d[0].inputs = [
-                { type: 'bool' }
-            ];
-
-            // when
-            var parser = abi.inputParser(d);
-
-            // then
-            assert.equal(parser.test(true), "0000000000000000000000000000000000000000000000000000000000000001");
-            assert.equal(parser.test(false), "0000000000000000000000000000000000000000000000000000000000000000");
-
-        });
-
-        it('should parse input hash', function() {
-
-            // given
-            var d = clone(description);
-
-            d[0].inputs = [
-                { type: "hash" }
-            ];
-            
-            // when
-            var parser = abi.inputParser(d);
-
-            // then
-            assert.equal(parser.test("0x407d73d8a49eeb85d32cf465507dd71d507100c1"), "000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1");
-
-        }); 
-
-        it('should parse input hash256', function() {
-
-            // given
-            var d = clone(description);
-
-            d[0].inputs = [
-                { type: "hash256" }
-            ];
-
-            // when
-            var parser = abi.inputParser(d);
-
-            // then
-            assert.equal(parser.test("0x407d73d8a49eeb85d32cf465507dd71d507100c1"), "000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1");
-
-        });
-
-
-        it('should parse input hash160', function() {
-            // given
-            var d = clone(description);
-
-            d[0].inputs = [
-                { type: "hash160" }
-            ];
-
-            // when
-            var parser = abi.inputParser(d);
-            
-            // then
-            assert.equal(parser.test("0x407d73d8a49eeb85d32cf465507dd71d507100c1"), "000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1");
-        });
-
-        it('should parse input address', function () {
-
-            // given
-            var d = clone(description);
-
-            d[0].inputs = [
-                { type: "address" }
-            ];
-            
-            // when
-            var parser = abi.inputParser(d)
-            
-            // then
-            assert.equal(parser.test("0x407d73d8a49eeb85d32cf465507dd71d507100c1"), "000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1");
-
-        });
-
-        it('should parse input string', function () {
-            
-            // given
-            var d = clone(description);
-
-            d[0].inputs = [
-                { type: "string" }
-            ];
-
-            // when
-            var parser = abi.inputParser(d);
-
-            // then
-            assert.equal(
-                parser.test('hello'), 
-                "000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000"
-                );
-            assert.equal(
-                parser.test('world'),
-                "0000000000000000000000000000000000000000000000000000000000000005776f726c64000000000000000000000000000000000000000000000000000000"
-                );
-        });
-
-        it('should use proper method name', function () {
-        
-            // given
-            var d = clone(description);
-            d[0].name = 'helloworld(int)';
-            d[0].inputs = [
-                { type: "int" }
-            ];
-
-            // when
-            var parser = abi.inputParser(d);
-
-            // then
-            assert.equal(parser.helloworld(1), "0000000000000000000000000000000000000000000000000000000000000001");
-            assert.equal(parser.helloworld['int'](1), "0000000000000000000000000000000000000000000000000000000000000001");
-
-        });
-        
-        it('should parse multiple methods', function () {
-            
-            // given
-            var d =  [{
-                name: "test",
-                inputs: [{ type: "int" }],
-                outputs: [{ type: "int" }]
-            },{
-                name: "test2",
-                inputs: [{ type: "string" }],
-                outputs: [{ type: "string" }]
-            }];
-
-            // when
-            var parser = abi.inputParser(d);
-
-            //then
-            assert.equal(parser.test(1), "0000000000000000000000000000000000000000000000000000000000000001");
-            assert.equal(
-                parser.test2('hello'), 
-                "000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000"
-                );
-
-        });
-
-        it('should parse input array of ints', function () {
-            
-            // given
-            var d = clone(description);
-
-            d[0].inputs = [
-                { type: "int[]" }
-            ];
-
-            // when
-            var parser = abi.inputParser(d);
-
-            // then
-            assert.equal(
-                parser.test([5, 6]),
-                "0000000000000000000000000000000000000000000000000000000000000002" + 
-                "0000000000000000000000000000000000000000000000000000000000000005" + 
-                "0000000000000000000000000000000000000000000000000000000000000006"
-                );
-        });
-
-        it('should parse input real', function () {
-            
-            // given
-            var d = clone(description);
-
-            d[0].inputs = [
-                { type: 'real' }
-            ];
-
-            // when
-            var parser = abi.inputParser(d);
-
-            // then
-            assert.equal(parser.test([1]),      "0000000000000000000000000000000100000000000000000000000000000000"); 
-            assert.equal(parser.test([2.125]),  "0000000000000000000000000000000220000000000000000000000000000000"); 
-            assert.equal(parser.test([8.5]),    "0000000000000000000000000000000880000000000000000000000000000000"); 
-            assert.equal(parser.test([-1]),     "ffffffffffffffffffffffffffffffff00000000000000000000000000000000"); 
-                
-        });
-        
-        it('should parse input ureal', function () {
-            
-            // given
-            var d = clone(description);
-
-            d[0].inputs = [
-                { type: 'ureal' }
-            ];
-
-            // when
-            var parser = abi.inputParser(d);
-
-            // then
-            assert.equal(parser.test([1]),      "0000000000000000000000000000000100000000000000000000000000000000"); 
-            assert.equal(parser.test([2.125]),  "0000000000000000000000000000000220000000000000000000000000000000"); 
-            assert.equal(parser.test([8.5]),    "0000000000000000000000000000000880000000000000000000000000000000"); 
-                
-        });
-
-    });
-
-    describe('outputParser', function() {
-        it('should parse output string', function() {
-
-            // given
-            var d = clone(description);
-
-            d[0].outputs = [
-                { type: "string" }
-            ];
-
-            // when
-            var parser = abi.outputParser(d);
-            
-            // then
-            assert.equal(
-                parser.test("0x" + 
-                    "0000000000000000000000000000000000000000000000000000000000000005" +
-                    "68656c6c6f000000000000000000000000000000000000000000000000000000")[0],
-                'hello'
-                );
-            assert.equal(
-                parser.test("0x" + 
-                    "0000000000000000000000000000000000000000000000000000000000000005" +
-                    "776f726c64000000000000000000000000000000000000000000000000000000")[0], 
-                'world'
-                );
-
-        });
-
-        it('should parse output uint', function() {
-
-            // given
-            var d = clone(description);
-
-            d[0].outputs = [
-                { type: 'uint' }
-            ];
-
-            // when
-            var parser = abi.outputParser(d);
-
-            // then
-            assert.equal(parser.test("0x0000000000000000000000000000000000000000000000000000000000000001")[0], 1);
-            assert.equal(parser.test("0x000000000000000000000000000000000000000000000000000000000000000a")[0], 10);
-            assert.equal(
-                parser.test("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")[0].toString(10), 
-                new BigNumber("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 16).toString(10)
-                );
-            assert.equal(
-                parser.test("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0")[0].toString(10), 
-                new BigNumber("fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0", 16).toString(10)
-                );
-        });
-        
-        it('should parse output uint256', function() {
-
-            // given
-            var d = clone(description);
-
-            d[0].outputs = [
-                { type: 'uint256' }
-            ];
-
-            // when
-            var parser = abi.outputParser(d);
-
-            // then
-            assert.equal(parser.test("0x0000000000000000000000000000000000000000000000000000000000000001")[0], 1);
-            assert.equal(parser.test("0x000000000000000000000000000000000000000000000000000000000000000a")[0], 10);
-            assert.equal(
-                parser.test("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")[0].toString(10), 
-                new BigNumber("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 16).toString(10)
-                );
-            assert.equal(
-                parser.test("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0")[0].toString(10), 
-                new BigNumber("fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0", 16).toString(10)
-                );
-        });
-
-        it('should parse output uint128', function() {
-
-            // given
-            var d = clone(description);
-
-            d[0].outputs = [
-                { type: 'uint128' }
-            ];
-
-            // when
-            var parser = abi.outputParser(d);
-
-            // then
-            assert.equal(parser.test("0x0000000000000000000000000000000000000000000000000000000000000001")[0], 1);
-            assert.equal(parser.test("0x000000000000000000000000000000000000000000000000000000000000000a")[0], 10);
-            assert.equal(
-                parser.test("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")[0].toString(10), 
-                new BigNumber("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 16).toString(10)
-                );
-            assert.equal(
-                parser.test("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0")[0].toString(10), 
-                new BigNumber("fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0", 16).toString(10)
-                );
-        });
-
-        it('should parse output int', function() {
-
-            // given
-            var d = clone(description);
-
-            d[0].outputs = [
-                { type: 'int' }
-            ];
-
-            // when
-            var parser = abi.outputParser(d);
-
-            // then
-            assert.equal(parser.test("0x0000000000000000000000000000000000000000000000000000000000000001")[0], 1);
-            assert.equal(parser.test("0x000000000000000000000000000000000000000000000000000000000000000a")[0], 10);
-            assert.equal(parser.test("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")[0], -1);
-            assert.equal(parser.test("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0")[0], -16);
-        });
-        
-        it('should parse output int256', function() {
-
-            // given
-            var d = clone(description);
-
-            d[0].outputs = [
-                { type: 'int256' }
-            ];
-
-            // when
-            var parser = abi.outputParser(d);
-
-            // then
-            assert.equal(parser.test("0x0000000000000000000000000000000000000000000000000000000000000001")[0], 1);
-            assert.equal(parser.test("0x000000000000000000000000000000000000000000000000000000000000000a")[0], 10);
-            assert.equal(parser.test("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")[0], -1);
-            assert.equal(parser.test("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0")[0], -16);
-        });
-
-        it('should parse output int128', function() {
-
-            // given
-            var d = clone(description);
-
-            d[0].outputs = [
-                { type: 'int128' }
-            ];
-
-            // when
-            var parser = abi.outputParser(d);
-
-            // then
-            assert.equal(parser.test("0x0000000000000000000000000000000000000000000000000000000000000001")[0], 1);
-            assert.equal(parser.test("0x000000000000000000000000000000000000000000000000000000000000000a")[0], 10);
-            assert.equal(parser.test("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")[0], -1);
-            assert.equal(parser.test("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0")[0], -16);
-        });
-
-        it('should parse output hash', function() {
-            
-            // given
-            var d = clone(description);
-
-            d[0].outputs = [
-                { type: 'hash' }
-            ];
-
-            // when
-            var parser = abi.outputParser(d);
-
-            // then
-            assert.equal(
-                parser.test("0x000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1")[0],
-                "0x000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1"
-                );
-        });
-        
-        it('should parse output hash256', function() {
-        
-            // given
-            var d = clone(description);
-
-            d[0].outputs = [
-                { type: 'hash256' }
-            ];
-
-            // when
-            var parser = abi.outputParser(d);
-
-            // then
-            assert.equal(
-                parser.test("0x000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1")[0],
-                "0x000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1"
-                );
-        });
-
-        it('should parse output hash160', function() {
-            
-            // given
-            var d = clone(description);
-
-            d[0].outputs = [
-                { type: 'hash160' }
-            ];
-
-            // when
-            var parser = abi.outputParser(d);
-
-            // then
-            assert.equal(
-                parser.test("0x000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1")[0],
-                "0x000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1"
-                );
-            // TODO shouldnt' the expected hash be shorter?
-        });
-
-        it('should parse output address', function() {
-            
-            // given
-            var d = clone(description);
-
-            d[0].outputs = [
-                { type: 'address' }
-            ];
-
-            // when
-            var parser = abi.outputParser(d);
-
-            // then
-            assert.equal(
-                parser.test("0x000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1")[0],
-                "0x407d73d8a49eeb85d32cf465507dd71d507100c1"
-                );
-        });
-
-        it('should parse output bool', function() {
-            
-            // given
-            var d = clone(description);
-
-            d[0].outputs = [
-                { type: 'bool' }
-            ];
-
-            // when
-            var parser = abi.outputParser(d);
-
-            // then
-            assert.equal(parser.test("0x0000000000000000000000000000000000000000000000000000000000000001")[0], true);
-            assert.equal(parser.test("0x0000000000000000000000000000000000000000000000000000000000000000")[0], false);
-            
-
-        });
-
-        it('should parse output real', function() {
-            
-            // given
-            var d = clone(description); 
-
-            d[0].outputs = [
-                { type: 'real' }
-            ];
-
-            // when
-            var parser = abi.outputParser(d);
-
-            // then
-            assert.equal(parser.test("0x0000000000000000000000000000000100000000000000000000000000000000")[0], 1);
-            assert.equal(parser.test("0x0000000000000000000000000000000220000000000000000000000000000000")[0], 2.125); 
-            assert.equal(parser.test("0x0000000000000000000000000000000880000000000000000000000000000000")[0], 8.5); 
-            assert.equal(parser.test("0xffffffffffffffffffffffffffffffff00000000000000000000000000000000")[0], -1); 
-            
-        });
-
-        it('should parse output ureal', function() {
-
-            // given
-            var d = clone(description); 
-
-            d[0].outputs = [
-                { type: 'ureal' }
-            ];
-
-            // when
-            var parser = abi.outputParser(d);
-
-            // then
-            assert.equal(parser.test("0x0000000000000000000000000000000100000000000000000000000000000000")[0], 1);
-            assert.equal(parser.test("0x0000000000000000000000000000000220000000000000000000000000000000")[0], 2.125); 
-            assert.equal(parser.test("0x0000000000000000000000000000000880000000000000000000000000000000")[0], 8.5); 
-
-        });
-        
-
-        it('should parse multiple output strings', function() {
-
-            // given
-            var d = clone(description);
-
-            d[0].outputs = [
-                { type: "string" },
-                { type: "string" }
-            ];
-
-            // when
-            var parser = abi.outputParser(d);
-
-            // then
-            assert.equal(
-                parser.test("0x" +
-                    "0000000000000000000000000000000000000000000000000000000000000005" +
-                    "0000000000000000000000000000000000000000000000000000000000000005" +
-                    "68656c6c6f000000000000000000000000000000000000000000000000000000" + 
-                    "776f726c64000000000000000000000000000000000000000000000000000000")[0],
-                'hello'
-                );
-            assert.equal(
-                parser.test("0x" +
-                    "0000000000000000000000000000000000000000000000000000000000000005" +
-                    "0000000000000000000000000000000000000000000000000000000000000005" +
-                    "68656c6c6f000000000000000000000000000000000000000000000000000000" + 
-                    "776f726c64000000000000000000000000000000000000000000000000000000")[1],
-                'world'
-                );
-
-        });
-        
-        it('should use proper method name', function () {
-        
-            // given
-            var d = clone(description);
-            d[0].name = 'helloworld(int)';
-            d[0].outputs = [
-                { type: "int" }
-            ];
-
-            // when
-            var parser = abi.outputParser(d);
-
-            // then
-            assert.equal(parser.helloworld("0x0000000000000000000000000000000000000000000000000000000000000001")[0], 1);
-            assert.equal(parser.helloworld['int']("0x0000000000000000000000000000000000000000000000000000000000000001")[0], 1);
-
-        });
-
-
-        it('should parse multiple methods', function () {
-            
-            // given
-            var d =  [{
-                name: "test",
-                inputs: [{ type: "int" }],
-                outputs: [{ type: "int" }]
-            },{
-                name: "test2",
-                inputs: [{ type: "string" }],
-                outputs: [{ type: "string" }]
-            }];
-
-            // when
-            var parser = abi.outputParser(d);
-
-            //then
-            assert.equal(parser.test("0000000000000000000000000000000000000000000000000000000000000001")[0], 1);
-            assert.equal(parser.test2("0x" + 
-                    "0000000000000000000000000000000000000000000000000000000000000005" +
-                    "68656c6c6f000000000000000000000000000000000000000000000000000000")[0],
-                "hello"
-                );
-
-        });
-
-        it('should parse output array', function () {
-            
-            // given
-            var d = clone(description);
-            d[0].outputs = [
-                { type: 'int[]' }
-            ];
-
-            // when
-            var parser = abi.outputParser(d);
-
-            // then
-            assert.equal(parser.test("0x" +
-                    "0000000000000000000000000000000000000000000000000000000000000002" + 
-                    "0000000000000000000000000000000000000000000000000000000000000005" + 
-                    "0000000000000000000000000000000000000000000000000000000000000006")[0][0],
-                5
-                );
-            assert.equal(parser.test("0x" +
-                    "0000000000000000000000000000000000000000000000000000000000000002" + 
-                    "0000000000000000000000000000000000000000000000000000000000000005" + 
-                    "0000000000000000000000000000000000000000000000000000000000000006")[0][1],
-                6
-                );
-
-        });
-
-        it('should parse 0x value', function () {
-        
-            // given
-            var d = clone(description);
-            d[0].outputs = [
-                { type: 'int' }
-            ];
-
-            // when
-            var parser = abi.outputParser(d);
-
-            // then
-            assert.equal(parser.test("0x")[0], 0);
-
-        });
-        
-        it('should parse 0x value', function () {
-        
-            // given
-            var d = clone(description);
-            d[0].outputs = [
-                { type: 'uint' }
-            ];
-
-            // when
-            var parser = abi.outputParser(d);
-
-            // then
-            assert.equal(parser.test("0x")[0], 0);
-
-        });
-
-    });
-});
-
diff --git a/cmd/mist/assets/ext/ethereum.js/test/db.methods.js b/cmd/mist/assets/ext/ethereum.js/test/db.methods.js
deleted file mode 100644
index 2ad384579..000000000
--- a/cmd/mist/assets/ext/ethereum.js/test/db.methods.js
+++ /dev/null
@@ -1,14 +0,0 @@
-
-var assert = require('assert');
-var web3 = require('../index.js');
-var u = require('./test.utils.js');
-
-describe('web3', function() {
-    describe('db', function() {
-        u.methodExists(web3.db, 'put');
-        u.methodExists(web3.db, 'get');
-        u.methodExists(web3.db, 'putString');
-        u.methodExists(web3.db, 'getString');
-    });
-});
-
diff --git a/cmd/mist/assets/ext/ethereum.js/test/eth.methods.js b/cmd/mist/assets/ext/ethereum.js/test/eth.methods.js
deleted file mode 100644
index 8f10b441d..000000000
--- a/cmd/mist/assets/ext/ethereum.js/test/eth.methods.js
+++ /dev/null
@@ -1,34 +0,0 @@
-var assert = require('assert');
-var web3 = require('../index.js');
-var u = require('./test.utils.js');
-
-describe('web3', function() {
-    describe('eth', function() {
-        u.methodExists(web3.eth, 'balanceAt');
-        u.methodExists(web3.eth, 'stateAt');
-        u.methodExists(web3.eth, 'storageAt');
-        u.methodExists(web3.eth, 'countAt');
-        u.methodExists(web3.eth, 'codeAt');
-        u.methodExists(web3.eth, 'transact');
-        u.methodExists(web3.eth, 'call');
-        u.methodExists(web3.eth, 'block');
-        u.methodExists(web3.eth, 'transaction');
-        u.methodExists(web3.eth, 'uncle');
-        u.methodExists(web3.eth, 'compilers');
-        u.methodExists(web3.eth, 'lll');
-        u.methodExists(web3.eth, 'solidity');
-        u.methodExists(web3.eth, 'serpent');
-        u.methodExists(web3.eth, 'logs');
-
-        u.propertyExists(web3.eth, 'coinbase');
-        u.propertyExists(web3.eth, 'listening');
-        u.propertyExists(web3.eth, 'mining');
-        u.propertyExists(web3.eth, 'gasPrice');
-        u.propertyExists(web3.eth, 'accounts');
-        u.propertyExists(web3.eth, 'peerCount');
-        u.propertyExists(web3.eth, 'defaultBlock');
-        u.propertyExists(web3.eth, 'number');
-    });
-});
-
-
diff --git a/cmd/mist/assets/ext/ethereum.js/test/mocha.opts b/cmd/mist/assets/ext/ethereum.js/test/mocha.opts
deleted file mode 100644
index c4a633d64..000000000
--- a/cmd/mist/assets/ext/ethereum.js/test/mocha.opts
+++ /dev/null
@@ -1,2 +0,0 @@
---reporter spec 
-
diff --git a/cmd/mist/assets/ext/ethereum.js/test/shh.methods.js b/cmd/mist/assets/ext/ethereum.js/test/shh.methods.js
deleted file mode 100644
index 91ca3caba..000000000
--- a/cmd/mist/assets/ext/ethereum.js/test/shh.methods.js
+++ /dev/null
@@ -1,14 +0,0 @@
-var assert = require('assert');
-var web3 = require('../index.js');
-var u = require('./test.utils.js');
-
-describe('web3', function() {
-    describe('shh', function() {
-        u.methodExists(web3.shh, 'post');
-        u.methodExists(web3.shh, 'newIdentity');
-        u.methodExists(web3.shh, 'haveIdentity');
-        u.methodExists(web3.shh, 'newGroup');
-        u.methodExists(web3.shh, 'addToGroup');
-    });
-});
-
diff --git a/cmd/mist/assets/ext/ethereum.js/test/utils.js b/cmd/mist/assets/ext/ethereum.js/test/utils.js
deleted file mode 100644
index 8a1e9a0b6..000000000
--- a/cmd/mist/assets/ext/ethereum.js/test/utils.js
+++ /dev/null
@@ -1,19 +0,0 @@
-var assert = require('assert');
-
-var methodExists = function (object, method) {
-    it('should have method ' + method + ' implemented', function() {
-        assert.equal('function', typeof object[method], 'method ' + method + ' is not implemented');
-    });
-};
-
-var propertyExists = function (object, property) {
-    it('should have property ' + property + ' implemented', function() {
-        assert.notEqual('undefined', typeof object[property], 'property ' + property + ' is not implemented');
-    });
-};
-
-module.exports = {
-    methodExists: methodExists,
-    propertyExists: propertyExists
-};
-
diff --git a/cmd/mist/assets/ext/ethereum.js/test/web3.methods.js b/cmd/mist/assets/ext/ethereum.js/test/web3.methods.js
deleted file mode 100644
index 06de41da4..000000000
--- a/cmd/mist/assets/ext/ethereum.js/test/web3.methods.js
+++ /dev/null
@@ -1,10 +0,0 @@
-var assert = require('assert');
-var web3 = require('../index.js');
-var u = require('./test.utils.js');
-
-describe('web3', function() {
-    u.methodExists(web3, 'sha3');
-    u.methodExists(web3, 'toAscii');
-    u.methodExists(web3, 'fromAscii');
-});
-
-- 
GitLab