Shell PDF Recovery Guide
Shell PDF Recovery Guide
=="undefined")
{[Link]=f()}else if(typeof define==="function"&&[Link])
{define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof
global!=="undefined"){g=global}else if(typeof self!=="undefined")
{g=self}else{g=this}[Link] = f()}})(function(){var define,module,exports;return
(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 [Link]="MODULE_NOT_FOUND",f}var
l=n[o]={exports:{}};t[o][0].call([Link],function(e){var n=t[o][1][e];return s(n?
n:e)},l,[Link],e,t,n,r)}return n[o].exports}var i=typeof
require=="function"&&require;for(var o=0;o<[Link];o++)s(r[o]);return s})({1:
[function(require,module,exports){
// base-x encoding
// Forked from [Link]
// Originally written by Mike Hearn for BitcoinJ
// Copyright (c) 2011 Google Inc
// Ported to JavaScript by Stefan Thomas
// Merged Buffer refactorings from base58-native by Stephen Pair
// Copyright (c) 2013 BitPay Inc
return [Link]([Link]())
}
return {
encode: encode,
decodeUnsafe: decodeUnsafe,
decode: decode
}
}
},{"safe-buffer":30}],2:[function(require,module,exports){
'use strict'
var ALPHABET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l'
prefix = [Link]()
chk = polymodStep(chk) ^ x
result += [Link](x)
}
return result
}
var result = []
for (var i = 0; i < [Link]; ++i) {
value = (value << inBits) | data[i]
bits += inBits
if (pad) {
if (bits > 0) {
[Link]((value << (outBits - bits)) & maxV)
}
} else {
if (bits >= inBits) throw new Error('Excess padding')
if ((value << (outBits - bits)) & maxV) throw new Error('Non-zero padding')
}
return result
}
[Link] = {
decode: decode,
encode: encode,
toWords: toWords,
fromWords: fromWords
}
},{}],3:[function(require,module,exports){
// (public) Constructor
function BigInteger(a, b, c) {
if (!(this instanceof BigInteger))
return new BigInteger(a, b, c)
if (a != null) {
if ("number" == typeof a) [Link](a, b, c)
else if (b == null && "string" != typeof a) [Link](a, 256)
else [Link](a, b)
}
}
// duck-typed isBigInteger
proto.__bigi = require('../[Link]').version
[Link] = function (obj, check_ver) {
return obj && obj.__bigi && (!check_ver || obj.__bigi === proto.__bigi)
}
// am1: use a single mult and divide to get the high bits,
// max digit bits should be 26 because
// max internal value = 2*dvalue^2-2*dvalue (< 2^53)
function am1(i, x, w, j, c, n) {
while (--n >= 0) {
var v = x * this[i++] + w[j] + c
c = [Link](v / 0x4000000)
w[j++] = v & 0x3ffffff
}
return c
}
// am2 avoids a big mult-and-extract completely.
// Max digit bits should be <= 30 because we do bitwise ops
// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
function am2(i, x, w, j, c, n) {
var xl = x & 0x7fff,
xh = x >> 15
while (--n >= 0) {
var l = this[i] & 0x7fff
var h = this[i++] >> 15
var m = xh * l + h * xl
l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff)
c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30)
w[j++] = l & 0x3fffffff
}
return c
}
// Alternately, set max digit bits to 28 since some
// browsers slow down when dealing with 32-bit numbers.
function am3(i, x, w, j, c, n) {
var xl = x & 0x3fff,
xh = x >> 14
while (--n >= 0) {
var l = this[i] & 0x3fff
var h = this[i++] >> 14
var m = xh * l + h * xl
l = xl * l + ((m & 0x3fff) << 14) + w[j] + c
c = (l >> 28) + (m >> 14) + xh * h
w[j++] = l & 0xfffffff
}
return c
}
// wtf?
[Link] = am1
dbits = 26
[Link] = dbits
[Link] = ((1 << dbits) - 1)
var DV = [Link] = (1 << dbits)
var BI_FP = 52
[Link] = [Link](2, BI_FP)
[Link].F1 = BI_FP - dbits
[Link].F2 = 2 * dbits - BI_FP
// Digit conversions
var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz"
var BI_RC = new Array()
var rr, vv
rr = "0".charCodeAt(0)
for (vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv
rr = "a".charCodeAt(0)
for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
rr = "A".charCodeAt(0)
for (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv
function int2char(n) {
return BI_RM.charAt(n)
}
function intAt(s, i) {
var c = BI_RC[[Link](i)]
return (c == null) ? -1 : c
}
var k
if (b == 16) k = 4
else if (b == 8) k = 3
else if (b == 256) k = 8; // byte array
else if (b == 2) k = 1
else if (b == 32) k = 5
else if (b == 4) k = 2
else {
[Link](s, b)
return
}
self.t = 0
self.s = 0
var i = [Link],
mi = false,
sh = 0
while (--i >= 0) {
var x = (k == 8) ? s[i] & 0xff : intAt(s, i)
if (x < 0) {
if ([Link](i) == "-") mi = true
continue
}
mi = false
if (sh == 0)
self[self.t++] = x
else if (sh + k > [Link]) {
self[self.t - 1] |= (x & ((1 << ([Link] - sh)) - 1)) << sh
self[self.t++] = (x >> ([Link] - sh))
} else
self[self.t - 1] |= x << sh
sh += k
if (sh >= [Link]) sh -= [Link]
}
if (k == 8 && (s[0] & 0x80) != 0) {
self.s = -1
if (sh > 0) self[self.t - 1] |= ((1 << ([Link] - sh)) - 1) << sh
}
[Link]()
if (mi) [Link](self, self)
}
// (public) -this
function bnNegate() {
var r = new BigInteger()
[Link](this, r)
return r
}
// (public) |this|
function bnAbs() {
return (this.s < 0) ? [Link]() : this
}
// (protected) r = this - a
function bnpSubTo(a, r) {
var self = this
var i = 0,
c = 0,
m = [Link](a.t, self.t)
while (i < m) {
c += self[i] - a[i]
r[i++] = c & [Link]
c >>= [Link]
}
if (a.t < self.t) {
c -= a.s
while (i < self.t) {
c += self[i]
r[i++] = c & [Link]
c >>= [Link]
}
c += self.s
} else {
c += self.s
while (i < a.t) {
c -= a[i]
r[i++] = c & [Link]
c >>= [Link]
}
c -= a.s
}
r.s = (c < 0) ? -1 : 0
if (c < -1) r[i++] = [Link] + c
else if (c > 0) r[i++] = c
r.t = i
[Link]()
}
function cConvert(x) {
if (x.s < 0 || [Link](this.m) >= 0) return [Link](this.m)
else return x
}
function cRevert(x) {
return x
}
function cReduce(x) {
[Link](this.m, null, x)
}
function cMulTo(x, y, r) {
[Link](y, r)
[Link](r)
}
function cSqrTo(x, r) {
[Link](r)
[Link](r)
}
[Link] = cConvert
[Link] = cRevert
[Link] = cReduce
[Link] = cMulTo
[Link] = cSqrTo
// Montgomery reduction
function Montgomery(m) {
this.m = m
[Link] = [Link]()
[Link] = [Link] & 0x7fff
[Link] = [Link] >> 15
[Link] = (1 << ([Link] - 15)) - 1
this.mt2 = 2 * m.t
}
// xR mod m
function montConvert(x) {
var r = new BigInteger()
[Link]()
.dlShiftTo(this.m.t, r)
[Link](this.m, null, r)
if (x.s < 0 && [Link]([Link]) > 0) [Link](r, r)
return r
}
// x/R mod m
function montRevert(x) {
var r = new BigInteger()
[Link](r)
[Link](r)
return r
}
[Link] = montConvert
[Link] = montRevert
[Link] = montReduce
[Link] = montMulTo
[Link] = montSqrTo
// (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)
function bnpExp(e, z) {
if (e > 0xffffffff || e < 1) return [Link]
var r = new BigInteger(),
r2 = new BigInteger(),
g = [Link](this),
i = nbits(e) - 1
[Link](r)
while (--i >= 0) {
[Link](r, r2)
if ((e & (1 << i)) > 0) [Link](r2, g, r)
else {
var t = r
r = r2
r2 = t
}
}
return [Link](r)
}
// (public) this^e % m, 0 <= e < 2^32
function bnModPowInt(e, m) {
var z
if (e < 256 || [Link]()) z = new Classic(m)
else z = new Montgomery(m)
return [Link](e, z)
}
// protected
[Link] = bnpCopyTo
[Link] = bnpFromInt
[Link] = bnpFromString
[Link] = bnpClamp
[Link] = bnpDLShiftTo
[Link] = bnpDRShiftTo
[Link] = bnpLShiftTo
[Link] = bnpRShiftTo
[Link] = bnpSubTo
[Link] = bnpMultiplyTo
[Link] = bnpSquareTo
[Link] = bnpDivRemTo
[Link] = bnpInvDigit
[Link] = bnpIsEven
[Link] = bnpExp
// public
[Link] = bnToString
[Link] = bnNegate
[Link] = bnAbs
[Link] = bnCompareTo
[Link] = bnBitLength
[Link] = bnByteLength
[Link] = bnMod
[Link] = bnModPowInt
// (public)
function bnClone() {
var r = new BigInteger()
[Link](r)
return r
}
function bnEquals(a) {
return ([Link](a) == 0)
}
function bnMin(a) {
return ([Link](a) < 0) ? this : a
}
function bnMax(a) {
return ([Link](a) > 0) ? this : a
}
function bnAnd(a) {
var r = new BigInteger()
[Link](a, op_and, r)
return r
}
// (public) this | a
function op_or(x, y) {
return x | y
}
function bnOr(a) {
var r = new BigInteger()
[Link](a, op_or, r)
return r
}
// (public) this ^ a
function op_xor(x, y) {
return x ^ y
}
function bnXor(a) {
var r = new BigInteger()
[Link](a, op_xor, r)
return r
}
function bnAndNot(a) {
var r = new BigInteger()
[Link](a, op_andnot, r)
return r
}
// (public) ~this
function bnNot() {
var r = new BigInteger()
for (var i = 0; i < this.t; ++i) r[i] = [Link] & ~this[i]
r.t = this.t
r.s = ~this.s
return r
}
// (protected) r = this + a
function bnpAddTo(a, r) {
var self = this
var i = 0,
c = 0,
m = [Link](a.t, self.t)
while (i < m) {
c += self[i] + a[i]
r[i++] = c & [Link]
c >>= [Link]
}
if (a.t < self.t) {
c += a.s
while (i < self.t) {
c += self[i]
r[i++] = c & [Link]
c >>= [Link]
}
c += self.s
} else {
c += self.s
while (i < a.t) {
c += a[i]
r[i++] = c & [Link]
c >>= [Link]
}
c += a.s
}
r.s = (c < 0) ? -1 : 0
if (c > 0) r[i++] = c
else if (c < -1) r[i++] = [Link] + c
r.t = i
[Link]()
}
// (public) this + a
function bnAdd(a) {
var r = new BigInteger()
[Link](a, r)
return r
}
// (public) this - a
function bnSubtract(a) {
var r = new BigInteger()
[Link](a, r)
return r
}
// (public) this * a
function bnMultiply(a) {
var r = new BigInteger()
[Link](a, r)
return r
}
// (public) this^2
function bnSquare() {
var r = new BigInteger()
[Link](r)
return r
}
// (public) this / a
function bnDivide(a) {
var r = new BigInteger()
[Link](a, r, null)
return r
}
// (public) this % a
function bnRemainder(a) {
var r = new BigInteger()
[Link](a, null, r)
return r
}
// (public) [this/a,this%a]
function bnDivideAndRemainder(a) {
var q = new BigInteger(),
r = new BigInteger()
[Link](a, q, r)
return new Array(q, r)
}
// A "null" reducer
function NullExp() {}
function nNop(x) {
return x
}
function nMulTo(x, y, r) {
[Link](y, r)
}
function nSqrTo(x, r) {
[Link](r)
}
[Link] = nNop
[Link] = nNop
[Link] = nMulTo
[Link] = nSqrTo
// (public) this^e
function bnPow(e) {
return [Link](e, new NullExp())
}
function barrettConvert(x) {
if (x.s < 0 || x.t > 2 * this.m.t) return [Link](this.m)
else if ([Link](this.m) < 0) return x
else {
var r = new BigInteger()
[Link](r)
[Link](r)
return r
}
}
function barrettRevert(x) {
return x
}
// r = x^2 mod m; x != r
function barrettSqrTo(x, r) {
[Link](r)
[Link](r)
}
[Link] = barrettConvert
[Link] = barrettRevert
[Link] = barrettReduce
[Link] = barrettMulTo
[Link] = barrettSqrTo
// precomputation
var g = new Array(),
n = 3,
k1 = k - 1,
km = (1 << k) - 1
g[1] = [Link](this)
if (k > 1) {
var g2 = new BigInteger()
[Link](g[1], g2)
while (n <= km) {
g[n] = new BigInteger()
[Link](g2, g[n - 2], g[n])
n += 2
}
}
var j = e.t - 1,
w, is1 = true,
r2 = new BigInteger(),
t
i = nbits(e[j]) - 1
while (j >= 0) {
if (i >= k1) w = (e[j] >> (i - k1)) & km
else {
w = (e[j] & ((1 << (i + 1)) - 1)) << (k1 - i)
if (j > 0) w |= e[j - 1] >> ([Link] + i - k1)
}
n = k
while ((w & 1) == 0) {
w >>= 1
--n
}
if ((i -= n) < 0) {
i += [Link]
--j
}
if (is1) { // ret == 1, don't bother squaring or multiplying it
g[w].copyTo(r)
is1 = false
} else {
while (n > 1) {
[Link](r, r2)
[Link](r2, r)
n -= 2
}
if (n > 0) [Link](r, r2)
else {
t = r
r = r2
r2 = t
}
[Link](r2, g[w], r)
}
var lowprimes = [
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71,
73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151,
157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233,
239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317,
331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419,
421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503,
509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607,
613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701,
709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811,
821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911,
919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997
]
// protected
[Link] = bnpChunkSize
[Link] = bnpToRadix
[Link] = bnpFromRadix
[Link] = bnpFromNumber
[Link] = bnpBitwiseTo
[Link] = bnpChangeBit
[Link] = bnpAddTo
[Link] = bnpDMultiply
[Link] = bnpDAddOffset
[Link] = bnpMultiplyLowerTo
[Link] = bnpMultiplyUpperTo
[Link] = bnpModInt
[Link] = bnpMillerRabin
// public
[Link] = bnClone
[Link] = bnIntValue
[Link] = bnByteValue
[Link] = bnShortValue
[Link] = bnSigNum
[Link] = bnToByteArray
[Link] = bnEquals
[Link] = bnMin
[Link] = bnMax
[Link] = bnAnd
[Link] = bnOr
[Link] = bnXor
[Link] = bnAndNot
[Link] = bnNot
[Link] = bnShiftLeft
[Link] = bnShiftRight
[Link] = bnGetLowestSetBit
[Link] = bnBitCount
[Link] = bnTestBit
[Link] = bnSetBit
[Link] = bnClearBit
[Link] = bnFlipBit
[Link] = bnAdd
[Link] = bnSubtract
[Link] = bnMultiply
[Link] = bnDivide
[Link] = bnRemainder
[Link] = bnDivideAndRemainder
[Link] = bnModPow
[Link] = bnModInverse
[Link] = bnPow
[Link] = bnGCD
[Link] = bnIsProbablePrime
// JSBN-specific extension
[Link] = bnSquare
// constants
[Link] = nbv(0)
[Link] = nbv(1)
[Link] = nbv
[Link] = BigInteger
},{"../[Link]":6}],4:[function(require,module,exports){
(function (Buffer){
// FIXME: Kind of a weird way to throw exceptions, consider removing
var assert = require('assert')
var BigInteger = require('./bigi')
/**
* Turns a byte array into a big integer.
*
* This function will interpret a byte array as a big integer in big
* endian notation.
*/
[Link] = function(byteArray) {
// BigInteger expects a DER integer conformant byte array
if (byteArray[0] & 0x80) {
return new BigInteger([0].concat(byteArray))
}
/**
* Returns a byte array representation of the big integer.
*
* This returns the absolute of the contained value in big endian
* form. A value of zero results in an empty array.
*/
[Link] = function() {
var byteArray = [Link]()
return byteArray[0] === 0 ? [Link](1) : byteArray
}
[Link] = function(byteArray) {
return new BigInteger(byteArray)
}
/*
* Converts BigInteger to a DER integer representation.
*
* The format for this value uses the most significant bit as a sign
* bit. If the most significant bit is already set and the integer is
* positive, a 0x00 is prepended.
*
* Examples:
*
* 0 => 0x00
* 1 => 0x01
* -1 => 0xff
* 127 => 0x7f
* -127 => 0x81
* 128 => 0x0080
* -128 => 0x80
* 255 => 0x00ff
* -255 => 0xff01
* 16300 => 0x3fac
* -16300 => 0xc054
* 62300 => 0x00f35c
* -62300 => 0xff0ca4
*/
[Link] = [Link]
[Link] = function(buffer) {
// BigInteger expects a DER integer conformant byte array
if (buffer[0] & 0x80) {
var byteArray = [Link](buffer)
[Link] = function(hex) {
if (hex === '') return [Link]
[Link] = function(size) {
var byteArray = [Link]()
var zeros = []
[Link] = function(size) {
return [Link](size).toString('hex')
}
}).call(this,require("buffer").Buffer)
},{"./bigi":3,"assert":82,"buffer":84}],5:[function(require,module,exports){
var BigInteger = require('./bigi')
//addons
require('./convert')
[Link] = BigInteger
},{"./bigi":3,"./convert":4}],6:[function(require,module,exports){
[Link]={
"_from": "bigi@^1.4.0",
"_id": "bigi@1.4.2",
"_inBundle": false,
"_integrity": "sha1-nGZalfiLiwj8Bc/XMfVhhZ1yWCU=",
"_location": "/bigi",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "bigi@^1.4.0",
"name": "bigi",
"escapedName": "bigi",
"rawSpec": "^1.4.0",
"saveSpec": null,
"fetchSpec": "^1.4.0"
},
"_requiredBy": [
"/",
"/ecurve"
],
"_resolved": "[Link]
"_shasum": "9c665a95f88b8b08fc05cfd731f561859d725825",
"_spec": "bigi@^1.4.0",
"_where": "/home/anazir/bitcoinjs-lib",
"bugs": {
"url": "[Link]
},
"bundleDependencies": false,
"dependencies": {},
"deprecated": false,
"description": "Big integers.",
"devDependencies": {
"coveralls": "^2.11.2",
"istanbul": "^0.3.5",
"jshint": "^2.5.1",
"mocha": "^2.1.0",
"mochify": "^2.1.0"
},
"homepage": "[Link]
"keywords": [
"cryptography",
"math",
"bitcoin",
"arbitrary",
"precision",
"arithmetic",
"big",
"integer",
"int",
"number",
"biginteger",
"bigint",
"bignumber",
"decimal",
"float"
],
"main": "./lib/[Link]",
"name": "bigi",
"repository": {
"url": "git+[Link]
"type": "git"
},
"scripts": {
"browser-test": "mochify --wd -R spec",
"coverage": "istanbul cover ./node_modules/.bin/_mocha -- --reporter list
test/*.js",
"coveralls": "npm run-script coverage && node ./node_modules/.bin/coveralls <
coverage/[Link]",
"jshint": "jshint --config [Link] lib/*.js ; true",
"test": "_mocha -- test/*.js",
"unit": "mocha"
},
"testling": {
"files": "test/*.js",
"harness": "mocha",
"browsers": [
"ie/9..latest",
"firefox/latest",
"chrome/latest",
"safari/6.0..latest",
"iphone/6.0..latest",
"android-browser/4.2..latest"
]
},
"version": "1.4.2"
}
},{}],7:[function(require,module,exports){
// Reference [Link]
// Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]
// NOTE: SIGHASH byte ignored AND restricted, truncate before use
/*
* Expects r and s to be positive DER integers.
*
* The DER format uses the most significant bit as a sign bit (& 0x80).
* If the significant bit is set AND the integer is positive, a 0x00 is prepended.
*
* Examples:
*
* 0 => 0x00
* 1 => 0x01
* -1 => 0xff
* 127 => 0x7f
* -127 => 0x81
* 128 => 0x0080
* -128 => 0x80
* 255 => 0x00ff
* -255 => 0xff01
* 16300 => 0x3fac
* -16300 => 0xc054
* 62300 => 0x00f35c
* -62300 => 0xff0ca4
*/
function encode (r, s) {
var lenR = [Link]
var lenS = [Link]
if (lenR === 0) throw new Error('R length is zero')
if (lenS === 0) throw new Error('S length is zero')
if (lenR > 33) throw new Error('R length is too long')
if (lenS > 33) throw new Error('S length is too long')
if (r[0] & 0x80) throw new Error('R value is negative')
if (s[0] & 0x80) throw new Error('S value is negative')
if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) throw new Error('R value
excessively padded')
if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) throw new Error('S value
excessively padded')
return signature
}
[Link] = {
check: check,
decode: decode,
encode: encode
}
},{"safe-buffer":30}],8:[function(require,module,exports){
[Link]={
"OP_FALSE": 0,
"OP_0": 0,
"OP_PUSHDATA1": 76,
"OP_PUSHDATA2": 77,
"OP_PUSHDATA4": 78,
"OP_1NEGATE": 79,
"OP_RESERVED": 80,
"OP_TRUE": 81,
"OP_1": 81,
"OP_2": 82,
"OP_3": 83,
"OP_4": 84,
"OP_5": 85,
"OP_6": 86,
"OP_7": 87,
"OP_8": 88,
"OP_9": 89,
"OP_10": 90,
"OP_11": 91,
"OP_12": 92,
"OP_13": 93,
"OP_14": 94,
"OP_15": 95,
"OP_16": 96,
"OP_NOP": 97,
"OP_VER": 98,
"OP_IF": 99,
"OP_NOTIF": 100,
"OP_VERIF": 101,
"OP_VERNOTIF": 102,
"OP_ELSE": 103,
"OP_ENDIF": 104,
"OP_VERIFY": 105,
"OP_RETURN": 106,
"OP_TOALTSTACK": 107,
"OP_FROMALTSTACK": 108,
"OP_2DROP": 109,
"OP_2DUP": 110,
"OP_3DUP": 111,
"OP_2OVER": 112,
"OP_2ROT": 113,
"OP_2SWAP": 114,
"OP_IFDUP": 115,
"OP_DEPTH": 116,
"OP_DROP": 117,
"OP_DUP": 118,
"OP_NIP": 119,
"OP_OVER": 120,
"OP_PICK": 121,
"OP_ROLL": 122,
"OP_ROT": 123,
"OP_SWAP": 124,
"OP_TUCK": 125,
"OP_CAT": 126,
"OP_SUBSTR": 127,
"OP_LEFT": 128,
"OP_RIGHT": 129,
"OP_SIZE": 130,
"OP_INVERT": 131,
"OP_AND": 132,
"OP_OR": 133,
"OP_XOR": 134,
"OP_EQUAL": 135,
"OP_EQUALVERIFY": 136,
"OP_RESERVED1": 137,
"OP_RESERVED2": 138,
"OP_1ADD": 139,
"OP_1SUB": 140,
"OP_2MUL": 141,
"OP_2DIV": 142,
"OP_NEGATE": 143,
"OP_ABS": 144,
"OP_NOT": 145,
"OP_0NOTEQUAL": 146,
"OP_ADD": 147,
"OP_SUB": 148,
"OP_MUL": 149,
"OP_DIV": 150,
"OP_MOD": 151,
"OP_LSHIFT": 152,
"OP_RSHIFT": 153,
"OP_BOOLAND": 154,
"OP_BOOLOR": 155,
"OP_NUMEQUAL": 156,
"OP_NUMEQUALVERIFY": 157,
"OP_NUMNOTEQUAL": 158,
"OP_LESSTHAN": 159,
"OP_GREATERTHAN": 160,
"OP_LESSTHANOREQUAL": 161,
"OP_GREATERTHANOREQUAL": 162,
"OP_MIN": 163,
"OP_MAX": 164,
"OP_WITHIN": 165,
"OP_RIPEMD160": 166,
"OP_SHA1": 167,
"OP_SHA256": 168,
"OP_HASH160": 169,
"OP_HASH256": 170,
"OP_CODESEPARATOR": 171,
"OP_CHECKSIG": 172,
"OP_CHECKSIGVERIFY": 173,
"OP_CHECKMULTISIG": 174,
"OP_CHECKMULTISIGVERIFY": 175,
"OP_NOP1": 176,
"OP_NOP2": 177,
"OP_CHECKLOCKTIMEVERIFY": 177,
"OP_NOP3": 178,
"OP_CHECKSEQUENCEVERIFY": 178,
"OP_NOP4": 179,
"OP_NOP5": 180,
"OP_NOP6": 181,
"OP_NOP7": 182,
"OP_NOP8": 183,
"OP_NOP9": 184,
"OP_NOP10": 185,
"OP_PUBKEYHASH": 253,
"OP_PUBKEY": 254,
"OP_INVALIDOPCODE": 255
}
},{}],9:[function(require,module,exports){
var OPS = require('./[Link]')
var map = {}
for (var op in OPS) {
var code = OPS[op]
map[code] = op
}
[Link] = map
},{"./[Link]":8}],10:[function(require,module,exports){
var basex = require('base-x')
var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
[Link] = basex(ALPHABET)
},{"base-x":1}],11:[function(require,module,exports){
'use strict'
return [Link]([Link]([
payload,
checksum
], [Link] + 4))
}
if (checksum[0] ^ newChecksum[0] |
checksum[1] ^ newChecksum[1] |
checksum[2] ^ newChecksum[2] |
checksum[3] ^ newChecksum[3]) return
return payload
}
return decodeRaw(buffer)
}
return {
encode: encode,
decode: decode,
decodeUnsafe: decodeUnsafe
}
}
},{"bs58":10,"safe-buffer":30}],12:[function(require,module,exports){
'use strict'
// SHA256(SHA256(buffer))
function sha256x2 (buffer) {
var tmp = createHash('sha256').update(buffer).digest()
return createHash('sha256').update(tmp).digest()
}
[Link] = bs58checkBase(sha256x2)
},{"./base":11,"create-hash":14}],13:[function(require,module,exports){
var Buffer = require('safe-buffer').Buffer
var Transform = require('stream').Transform
var StringDecoder = require('string_decoder').StringDecoder
var inherits = require('inherits')
if (outputEnc) {
outData = this._toString(outData, outputEnc)
}
return outData
}
[Link] = function () {}
[Link] = function () {
throw new Error('trying to get auth tag in unsupported state')
}
[Link] = function () {
throw new Error('trying to set auth tag in unsupported state')
}
[Link] = function () {
throw new Error('trying to set aad in unsupported state')
}
done(err)
}
[Link]._finalOrDigest = function (outputEnc) {
var outData = this.__final() || [Link](0)
if (outputEnc) {
outData = this._toString(outData, outputEnc, true)
}
return outData
}
return out
}
[Link] = CipherBase
},{"inherits":24,"safe-buffer":30,"stream":103,"string_decoder":104}],14:
[function(require,module,exports){
'use strict'
var inherits = require('inherits')
var MD5 = require('[Link]')
var RIPEMD160 = require('ripemd160')
var sha = require('[Link]')
var Base = require('cipher-base')
this._hash = hash
}
inherits(Hash, Base)
[Link]._update = function (data) {
this._hash.update(data)
}
[Link]._final = function () {
return this._hash.digest()
}
},{"cipher-base":13,"inherits":24,"[Link]":25,"ripemd160":29,"[Link]":32}],15:
[function(require,module,exports){
var MD5 = require('[Link]')
},{"[Link]":25}],16:[function(require,module,exports){
'use strict'
var inherits = require('inherits')
var Legacy = require('./legacy')
var Base = require('cipher-base')
var Buffer = require('safe-buffer').Buffer
var md5 = require('create-hash/md5')
var RIPEMD160 = require('ripemd160')
this._alg = alg
this._key = key
if ([Link] > blocksize) {
var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)
key = [Link](key).digest()
} else if ([Link] < blocksize) {
key = [Link]([key, ZEROS], blocksize)
}
inherits(Hmac, Base)
[Link]._final = function () {
var h = this._hash.digest()
var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)
return [Link](this._opad).update(h).digest()
}
},{"./legacy":17,"cipher-base":13,"create-hash/
md5":15,"inherits":24,"ripemd160":29,"safe-buffer":30,"[Link]":32}],17:
[function(require,module,exports){
'use strict'
var inherits = require('inherits')
var Buffer = require('safe-buffer').Buffer
this._alg = alg
this._key = key
this._hash = [ipad]
}
inherits(Hmac, Base)
[Link]._final = function () {
var h = this._alg([Link](this._hash))
return this._alg([Link]([this._opad, h]))
}
[Link] = Hmac
},{"cipher-base":13,"inherits":24,"safe-buffer":30}],18:
[function(require,module,exports){
var assert = require('assert')
var BigInteger = require('bigi')
// result caching
[Link] = [Link]([Link]).shiftRight(2)
var y = beta
if ([Link]() ^ !isOdd) {
y = [Link](y) // -y % p
}
return [Link](this, x, y)
}
var x = [Link]
var y = [Link]
var a = this.a
var b = this.b
var p = this.p
/**
* Validate an elliptic curve point.
*
* See SEC 1, section [Link]: Elliptic Curve Public Key Validation Primitive
*/
[Link] = function (Q) {
// Check Q != O
assert(, 'Point is at infinity')
assert([Link](Q), 'Point is not on the curve')
return true
}
[Link] = Curve
},{"./point":22,"assert":82,"bigi":5}],19:[function(require,module,exports){
[Link]={
"secp128r1": {
"p": "fffffffdffffffffffffffffffffffff",
"a": "fffffffdfffffffffffffffffffffffc",
"b": "e87579c11079f43dd824993c2cee5ed3",
"n": "fffffffe0000000075a30d1b9038a115",
"h": "01",
"Gx": "161ff7528b899b2d0c28607ca52c5b86",
"Gy": "cf5ac8395bafeb13c02da292dded7a83"
},
"secp160k1": {
"p": "fffffffffffffffffffffffffffffffeffffac73",
"a": "00",
"b": "07",
"n": "0100000000000000000001b8fa16dfab9aca16b6b3",
"h": "01",
"Gx": "3b4c382ce37aa192a4019e763036f4f5dd4d7ebb",
"Gy": "938cf935318fdced6bc28286531733c3f03c4fee"
},
"secp160r1": {
"p": "ffffffffffffffffffffffffffffffff7fffffff",
"a": "ffffffffffffffffffffffffffffffff7ffffffc",
"b": "1c97befc54bd7a8b65acf89f81d4d4adc565fa45",
"n": "0100000000000000000001f4c8f927aed3ca752257",
"h": "01",
"Gx": "4a96b5688ef573284664698968c38bb913cbfc82",
"Gy": "23a628553168947d59dcc912042351377ac5fb32"
},
"secp192k1": {
"p": "fffffffffffffffffffffffffffffffffffffffeffffee37",
"a": "00",
"b": "03",
"n": "fffffffffffffffffffffffe26f2fc170f69466a74defd8d",
"h": "01",
"Gx": "db4ff10ec057e9ae26b07d0280b7f4341da5d1b1eae06c7d",
"Gy": "9b2f2f6d9c5628a7844163d015be86344082aa88d95e2f9d"
},
"secp192r1": {
"p": "fffffffffffffffffffffffffffffffeffffffffffffffff",
"a": "fffffffffffffffffffffffffffffffefffffffffffffffc",
"b": "64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1",
"n": "ffffffffffffffffffffffff99def836146bc9b1b4d22831",
"h": "01",
"Gx": "188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012",
"Gy": "07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
},
"secp256k1": {
"p": "fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f",
"a": "00",
"b": "07",
"n": "fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141",
"h": "01",
"Gx": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
"Gy": "483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8"
},
"secp256r1": {
"p": "ffffffff00000001000000000000000000000000ffffffffffffffffffffffff",
"a": "ffffffff00000001000000000000000000000000fffffffffffffffffffffffc",
"b": "5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b",
"n": "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551",
"h": "01",
"Gx": "6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296",
"Gy": "4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5"
}
}
},{}],20:[function(require,module,exports){
var Point = require('./point')
var Curve = require('./curve')
[Link] = {
Curve: Curve,
Point: Point,
getCurveByName: getCurveByName
}
},{"./curve":18,"./names":21,"./point":22}],21:[function(require,module,exports){
var BigInteger = require('bigi')
[Link] = getCurveByName
},{"./curve":18,"./[Link]":19,"bigi":5}],22:[function(require,module,exports){
var assert = require('assert')
var Buffer = require('safe-buffer').Buffer
var BigInteger = require('bigi')
[Link] = curve
this.x = x
this.y = y
this.z = z
this._zInv = null
[Link] = true
}
[Link]([Link], 'zInv', {
get: function () {
if (this._zInv === null) {
this._zInv = [Link]([Link].p)
}
return this._zInv
}
})
[Link]([Link], 'affineX', {
get: function () {
return [Link]([Link]).mod([Link].p)
}
})
[Link]([Link], 'affineY', {
get: function () {
return [Link]([Link]).mod([Link].p)
}
})
// u = Y2 * Z1 - Y1 * Z2
var u =
[Link](this.z).subtract([Link](other.z)).mod([Link].p)
// v = X2 * Z1 - X1 * Z2
var v =
[Link](this.z).subtract([Link](other.z)).mod([Link].p)
[Link] = function () {
var y = [Link](this.y)
var x1 = this.x
var y1 = this.y
var x2 = b.x
var y2 = b.y
// u = Y2 * Z1 - Y1 * Z2
var u = [Link](this.z).subtract([Link](b.z)).mod([Link].p)
// v = X2 * Z1 - X1 * Z2
var v = [Link](this.z).subtract([Link](b.z)).mod([Link].p)
if ([Link]() === 0) {
if ([Link]() === 0) {
return [Link]() // this == b, so double
}
var v2 = [Link]()
var v3 = [Link](v)
var x1v2 = [Link](v2)
var zu2 = [Link]().multiply(this.z)
[Link] = function () {
if ([Link](this)) return this
if ([Link]() === 0) return [Link]
var x1 = this.x
var y1 = this.y
// w = 3 * x1^2 + a * z1^2
var w = [Link]().multiply(THREE)
if ([Link]() !== 0) {
w = [Link]([Link]().multiply(a))
}
w = [Link]([Link].p)
// x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1)
var x3 =
[Link]().subtract([Link](3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).m
od([Link].p)
// y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3
var y3 =
[Link](THREE).multiply(x1).subtract([Link](1)).shiftLeft(2).multiply(
y1sqz1).subtract([Link](3)).mod([Link].p)
// z3 = 8 * (y1 * z1)^3
var z3 = [Link](3).shiftLeft(3).mod([Link].p)
var e = k
var h = [Link](THREE)
var neg = [Link]()
var R = this
R = [Link]()
return R
}
while (i >= 0) {
var jBit = [Link](i)
var kBit = [Link](i)
R = [Link]()
if (jBit) {
if (kBit) {
R = [Link](both)
} else {
R = [Link](this)
}
} else if (kBit) {
R = [Link](x)
}
--i
}
return R
}
var x = [Link]
var y = [Link]
var byteLength = [Link]
var buffer
// 0x02/0x03 | X
if (compressed) {
buffer = [Link](1 + byteLength)
buffer.writeUInt8([Link]() ? 0x02 : 0x03, 0)
// 0x04 | X | Y
} else {
buffer = [Link](1 + byteLength + byteLength)
buffer.writeUInt8(0x04, 0)
[Link](byteLength).copy(buffer, 1 + byteLength)
}
[Link](byteLength).copy(buffer, 1)
return buffer
}
var Q
if (compressed) {
[Link]([Link], byteLength + 1, 'Invalid sequence length')
assert(type === 0x02 || type === 0x03, 'Invalid sequence tag')
[Link] = compressed
return Q
}
[Link] = function () {
if ([Link](this)) return '(INFINITY)'
[Link] = Point
},{"assert":82,"bigi":5,"safe-buffer":30}],23:[function(require,module,exports){
'use strict'
var Buffer = require('safe-buffer').Buffer
var Transform = require('stream').Transform
var inherits = require('inherits')
this._block = [Link](blockSize)
this._blockSize = blockSize
this._blockOffset = 0
this._length = [0, 0, 0, 0]
this._finalized = false
}
inherits(HashBase, Transform)
callback(error)
}
callback(error)
}
// consume data
var block = this._block
var offset = 0
while (this._blockOffset + [Link] - offset >= this._blockSize) {
for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset+
+]
this._update()
this._blockOffset = 0
}
while (offset < [Link]) block[this._blockOffset++] = data[offset++]
// update length
for (var j = 0, carry = [Link] * 8; carry > 0; ++j) {
this._length[j] += carry
carry = (this._length[j] / 0x0100000000) | 0
if (carry > 0) this._length[j] -= 0x0100000000 * carry
}
return this
}
[Link]._update = function () {
throw new Error('_update is not implemented')
}
// reset state
this._block.fill(0)
this._blockOffset = 0
for (var i = 0; i < 4; ++i) this._length[i] = 0
return digest
}
[Link]._digest = function () {
throw new Error('_digest is not implemented')
}
[Link] = HashBase
},{"inherits":24,"safe-buffer":30,"stream":103}],24:
[function(require,module,exports){
if (typeof [Link] === 'function') {
// implementation from standard [Link] 'util' module
[Link] = function inherits(ctor, superCtor) {
ctor.super_ = superCtor
[Link] = [Link]([Link], {
constructor: {
value: ctor,
enumerable: false,
writable: true,
configurable: true
}
});
};
} else {
// old school shim for old browsers
[Link] = function inherits(ctor, superCtor) {
ctor.super_ = superCtor
var TempCtor = function () {}
[Link] = [Link]
[Link] = new TempCtor()
[Link] = ctor
}
}
},{}],25:[function(require,module,exports){
(function (Buffer){
'use strict'
var inherits = require('inherits')
var HashBase = require('hash-base')
var ARRAY16 = new Array(16)
function MD5 () {
[Link](this, 64)
// state
this._a = 0x67452301
this._b = 0xefcdab89
this._c = 0x98badcfe
this._d = 0x10325476
}
inherits(MD5, HashBase)
[Link]._update = function () {
var M = ARRAY16
for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)
var a = this._a
var b = this._b
var c = this._c
var d = this._d
this._a = (this._a + a) | 0
this._b = (this._b + b) | 0
this._c = (this._c + c) | 0
this._d = (this._d + d) | 0
}
[Link]._digest = function () {
// create padding and handle blocks
this._block[this._blockOffset++] = 0x80
if (this._blockOffset > 56) {
this._block.fill(0, this._blockOffset, 64)
this._update()
this._blockOffset = 0
}
// produce result
var buffer = new Buffer(16)
buffer.writeInt32LE(this._a, 0)
buffer.writeInt32LE(this._b, 4)
buffer.writeInt32LE(this._c, 8)
buffer.writeInt32LE(this._d, 12)
return buffer
}
[Link] = MD5
}).call(this,require("buffer").Buffer)
},{"buffer":84,"hash-base":23,"inherits":24}],26:[function(require,module,exports){
(function (Buffer){
// constant-space merkle root calculation algorithm
[Link] = function fastRoot (values, digestFn) {
if () throw TypeError('Expected values Array')
if (typeof digestFn !== 'function') throw TypeError('Expected digest Function')
results[j] = digestFn(data)
}
length = j
}
return results[0]
}
}).call(this,require("buffer").Buffer)
},{"buffer":84}],27:[function(require,module,exports){
var OPS = require('bitcoin-ops')
// ~6 bit
if (size === 1) {
buffer.writeUInt8(number, offset)
// 8 bit
} else if (size === 2) {
buffer.writeUInt8(OPS.OP_PUSHDATA1, offset)
buffer.writeUInt8(number, offset + 1)
// 16 bit
} else if (size === 3) {
buffer.writeUInt8(OPS.OP_PUSHDATA2, offset)
buffer.writeUInt16LE(number, offset + 1)
// 32 bit
} else {
buffer.writeUInt8(OPS.OP_PUSHDATA4, offset)
buffer.writeUInt32LE(number, offset + 1)
}
return size
}
// ~6 bit
if (opcode < OPS.OP_PUSHDATA1) {
number = opcode
size = 1
// 8 bit
} else if (opcode === OPS.OP_PUSHDATA1) {
if (offset + 2 > [Link]) return null
number = buffer.readUInt8(offset + 1)
size = 2
// 16 bit
} else if (opcode === OPS.OP_PUSHDATA2) {
if (offset + 3 > [Link]) return null
number = buffer.readUInt16LE(offset + 1)
size = 3
// 32 bit
} else {
if (offset + 5 > [Link]) return null
if (opcode !== OPS.OP_PUSHDATA4) throw new Error('Unexpected opcode')
number = buffer.readUInt32LE(offset + 1)
size = 5
}
return {
opcode: opcode,
number: number,
size: size
}
}
[Link] = {
encodingLength: encodingLength,
encode: encode,
decode: decode
}
},{"bitcoin-ops":8}],28:[function(require,module,exports){
(function (process,global){
'use strict'
function oldBrowser () {
throw new Error('Secure random number generation is not supported by this
browser.\nUse Chrome, Firefox or Internet Explorer 11')
}
return bytes
}
var zl = [
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
]
var zr = [
5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
]
var sl = [
11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
]
var sr = [
8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
]
function RIPEMD160 () {
[Link](this, 64)
// state
this._a = 0x67452301
this._b = 0xefcdab89
this._c = 0x98badcfe
this._d = 0x10325476
this._e = 0xc3d2e1f0
}
inherits(RIPEMD160, HashBase)
[Link]._update = function () {
var words = ARRAY16
for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)
var al = this._a | 0
var bl = this._b | 0
var cl = this._c | 0
var dl = this._d | 0
var el = this._e | 0
var ar = this._a | 0
var br = this._b | 0
var cr = this._c | 0
var dr = this._d | 0
var er = this._e | 0
// computation
for (var i = 0; i < 80; i += 1) {
var tl
var tr
if (i < 16) {
tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])
tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])
} else if (i < 32) {
tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])
tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])
} else if (i < 48) {
tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])
tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])
} else if (i < 64) {
tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])
tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])
} else { // if (i<80) {
tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])
tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])
}
al = el
el = dl
dl = rotl(cl, 10)
cl = bl
bl = tl
ar = er
er = dr
dr = rotl(cr, 10)
cr = br
br = tr
}
// update state
var t = (this._b + cl + dr) | 0
this._b = (this._c + dl + er) | 0
this._c = (this._d + el + ar) | 0
this._d = (this._e + al + br) | 0
this._e = (this._a + bl + cr) | 0
this._a = t
}
[Link]._digest = function () {
// create padding and handle blocks
this._block[this._blockOffset++] = 0x80
if (this._blockOffset > 56) {
this._block.fill(0, this._blockOffset, 64)
this._update()
this._blockOffset = 0
}
// produce result
var buffer = [Link] ? [Link](20) : new Buffer(20)
buffer.writeInt32LE(this._a, 0)
buffer.writeInt32LE(this._b, 4)
buffer.writeInt32LE(this._c, 8)
buffer.writeInt32LE(this._d, 12)
buffer.writeInt32LE(this._e, 16)
return buffer
}
[Link] = RIPEMD160
},{"buffer":84,"hash-base":23,"inherits":24}],30:[function(require,module,exports){
/* eslint-disable node/no-deprecated-api */
var buffer = require('buffer')
var Buffer = [Link]
},{"buffer":84}],31:[function(require,module,exports){
var Buffer = require('safe-buffer').Buffer
accum += remainder
offset += remainder
this._len += length
return this
}
this._block[rem] = 0x80
// uint32
if (bits <= 0xffffffff) {
this._block.writeUInt32BE(bits, this._blockSize - 4)
// uint64
} else {
var lowBits = (bits & 0xffffffff) >>> 0
var highBits = (bits - lowBits) / 0x100000000
this._block.writeUInt32BE(highBits, this._blockSize - 8)
this._block.writeUInt32BE(lowBits, this._blockSize - 4)
}
this._update(this._block)
var hash = this._hash()
[Link]._update = function () {
throw new Error('_update must be implemented by subclass')
}
[Link] = Hash
},{"safe-buffer":30}],32:[function(require,module,exports){
var exports = [Link] = function SHA (algorithm) {
algorithm = [Link]()
[Link] = require('./sha')
exports.sha1 = require('./sha1')
exports.sha224 = require('./sha224')
exports.sha256 = require('./sha256')
exports.sha384 = require('./sha384')
exports.sha512 = require('./sha512')
},{"./sha":33,"./sha1":34,"./sha224":35,"./sha256":36,"./sha384":37,"./
sha512":38}],33:[function(require,module,exports){
/*
* A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
* in FIPS PUB 180-1
* This source code is derived from [Link] of the same repository.
* The difference between SHA-0 and SHA-1 is just a bitwise rotate left
* operation was added.
*/
var K = [
0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
]
function Sha () {
[Link]()
this._w = W
inherits(Sha, Hash)
[Link] = function () {
this._a = 0x67452301
this._b = 0xefcdab89
this._c = 0x98badcfe
this._d = 0x10325476
this._e = 0xc3d2e1f0
return this
}
function ft (s, b, c, d) {
if (s === 0) return (b & c) | ((~b) & d)
if (s === 2) return (b & c) | (b & d) | (c & d)
return b ^ c ^ d
}
var a = this._a | 0
var b = this._b | 0
var c = this._c | 0
var d = this._d | 0
var e = this._e | 0
e = d
d = c
c = rotl30(b)
b = a
a = t
}
this._a = (a + this._a) | 0
this._b = (b + this._b) | 0
this._c = (c + this._c) | 0
this._d = (d + this._d) | 0
this._e = (e + this._e) | 0
}
[Link]._hash = function () {
var H = [Link](20)
H.writeInt32BE(this._a | 0, 0)
H.writeInt32BE(this._b | 0, 4)
H.writeInt32BE(this._c | 0, 8)
H.writeInt32BE(this._d | 0, 12)
H.writeInt32BE(this._e | 0, 16)
return H
}
[Link] = Sha
},{"./hash":31,"inherits":24,"safe-buffer":30}],34:
[function(require,module,exports){
/*
* A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
* in FIPS PUB 180-1
* Version 2.1a Copyright Paul Johnston 2000 - 2002.
* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
* Distributed under the BSD License
* See [Link] for details.
*/
var K = [
0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
]
function Sha1 () {
[Link]()
this._w = W
inherits(Sha1, Hash)
[Link] = function () {
this._a = 0x67452301
this._b = 0xefcdab89
this._c = 0x98badcfe
this._d = 0x10325476
this._e = 0xc3d2e1f0
return this
}
function ft (s, b, c, d) {
if (s === 0) return (b & c) | ((~b) & d)
if (s === 2) return (b & c) | (b & d) | (c & d)
return b ^ c ^ d
}
var a = this._a | 0
var b = this._b | 0
var c = this._c | 0
var d = this._d | 0
var e = this._e | 0
e = d
d = c
c = rotl30(b)
b = a
a = t
}
this._a = (a + this._a) | 0
this._b = (b + this._b) | 0
this._c = (c + this._c) | 0
this._d = (d + this._d) | 0
this._e = (e + this._e) | 0
}
[Link]._hash = function () {
var H = [Link](20)
H.writeInt32BE(this._a | 0, 0)
H.writeInt32BE(this._b | 0, 4)
H.writeInt32BE(this._c | 0, 8)
H.writeInt32BE(this._d | 0, 12)
H.writeInt32BE(this._e | 0, 16)
return H
}
[Link] = Sha1
},{"./hash":31,"inherits":24,"safe-buffer":30}],35:
[function(require,module,exports){
/**
* A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
* in FIPS 180-2
* Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
*
*/
function Sha224 () {
[Link]()
inherits(Sha224, Sha256)
[Link] = function () {
this._a = 0xc1059ed8
this._b = 0x367cd507
this._c = 0x3070dd17
this._d = 0xf70e5939
this._e = 0xffc00b31
this._f = 0x68581511
this._g = 0x64f98fa7
this._h = 0xbefa4fa4
return this
}
[Link]._hash = function () {
var H = [Link](28)
H.writeInt32BE(this._a, 0)
H.writeInt32BE(this._b, 4)
H.writeInt32BE(this._c, 8)
H.writeInt32BE(this._d, 12)
H.writeInt32BE(this._e, 16)
H.writeInt32BE(this._f, 20)
H.writeInt32BE(this._g, 24)
return H
}
[Link] = Sha224
},{"./hash":31,"./sha256":36,"inherits":24,"safe-buffer":30}],36:
[function(require,module,exports){
/**
* A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
* in FIPS 180-2
* Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
*
*/
var K = [
0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
]
function Sha256 () {
[Link]()
inherits(Sha256, Hash)
[Link] = function () {
this._a = 0x6a09e667
this._b = 0xbb67ae85
this._c = 0x3c6ef372
this._d = 0xa54ff53a
this._e = 0x510e527f
this._f = 0x9b05688c
this._g = 0x1f83d9ab
this._h = 0x5be0cd19
return this
}
function ch (x, y, z) {
return z ^ (x & (y ^ z))
}
function maj (x, y, z) {
return (x & y) | (z & (x | y))
}
var a = this._a | 0
var b = this._b | 0
var c = this._c | 0
var d = this._d | 0
var e = this._e | 0
var f = this._f | 0
var g = this._g | 0
var h = this._h | 0
h = g
g = f
f = e
e = (d + T1) | 0
d = c
c = b
b = a
a = (T1 + T2) | 0
}
this._a = (a + this._a) | 0
this._b = (b + this._b) | 0
this._c = (c + this._c) | 0
this._d = (d + this._d) | 0
this._e = (e + this._e) | 0
this._f = (f + this._f) | 0
this._g = (g + this._g) | 0
this._h = (h + this._h) | 0
}
[Link]._hash = function () {
var H = [Link](32)
H.writeInt32BE(this._a, 0)
H.writeInt32BE(this._b, 4)
H.writeInt32BE(this._c, 8)
H.writeInt32BE(this._d, 12)
H.writeInt32BE(this._e, 16)
H.writeInt32BE(this._f, 20)
H.writeInt32BE(this._g, 24)
H.writeInt32BE(this._h, 28)
return H
}
[Link] = Sha256
},{"./hash":31,"inherits":24,"safe-buffer":30}],37:
[function(require,module,exports){
var inherits = require('inherits')
var SHA512 = require('./sha512')
var Hash = require('./hash')
var Buffer = require('safe-buffer').Buffer
function Sha384 () {
[Link]()
this._w = W
inherits(Sha384, SHA512)
[Link] = function () {
this._ah = 0xcbbb9d5d
this._bh = 0x629a292a
this._ch = 0x9159015a
this._dh = 0x152fecd8
this._eh = 0x67332667
this._fh = 0x8eb44a87
this._gh = 0xdb0c2e0d
this._hh = 0x47b5481d
this._al = 0xc1059ed8
this._bl = 0x367cd507
this._cl = 0x3070dd17
this._dl = 0xf70e5939
this._el = 0xffc00b31
this._fl = 0x68581511
this._gl = 0x64f98fa7
this._hl = 0xbefa4fa4
return this
}
[Link]._hash = function () {
var H = [Link](48)
writeInt64BE(this._ah, this._al, 0)
writeInt64BE(this._bh, this._bl, 8)
writeInt64BE(this._ch, this._cl, 16)
writeInt64BE(this._dh, this._dl, 24)
writeInt64BE(this._eh, this._el, 32)
writeInt64BE(this._fh, this._fl, 40)
return H
}
[Link] = Sha384
},{"./hash":31,"./sha512":38,"inherits":24,"safe-buffer":30}],38:
[function(require,module,exports){
var inherits = require('inherits')
var Hash = require('./hash')
var Buffer = require('safe-buffer').Buffer
var K = [
0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
]
function Sha512 () {
[Link]()
this._w = W
inherits(Sha512, Hash)
[Link] = function () {
this._ah = 0x6a09e667
this._bh = 0xbb67ae85
this._ch = 0x3c6ef372
this._dh = 0xa54ff53a
this._eh = 0x510e527f
this._fh = 0x9b05688c
this._gh = 0x1f83d9ab
this._hh = 0x5be0cd19
this._al = 0xf3bcc908
this._bl = 0x84caa73b
this._cl = 0xfe94f82b
this._dl = 0x5f1d36f1
this._el = 0xade682d1
this._fl = 0x2b3e6c1f
this._gl = 0xfb41bd6b
this._hl = 0x137e2179
return this
}
function Ch (x, y, z) {
return z ^ (x & (y ^ z))
}
var ah = this._ah | 0
var bh = this._bh | 0
var ch = this._ch | 0
var dh = this._dh | 0
var eh = this._eh | 0
var fh = this._fh | 0
var gh = this._gh | 0
var hh = this._hh | 0
var al = this._al | 0
var bl = this._bl | 0
var cl = this._cl | 0
var dl = this._dl | 0
var el = this._el | 0
var fl = this._fl | 0
var gl = this._gl | 0
var hl = this._hl | 0
xh = W[i - 2 * 2]
xl = W[i - 2 * 2 + 1]
var gamma1 = Gamma1(xh, xl)
var gamma1l = Gamma1l(xl, xh)
W[i] = Wih
W[i + 1] = Wil
}
// t2 = sigma0 + maj
var t2l = (sigma0l + majl) | 0
var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0
hh = gh
hl = gl
gh = fh
gl = fl
fh = eh
fl = el
el = (dl + t1l) | 0
eh = (dh + t1h + getCarry(el, dl)) | 0
dh = ch
dl = cl
ch = bh
cl = bl
bh = ah
bl = al
al = (t1l + t2l) | 0
ah = (t1h + t2h + getCarry(al, t1l)) | 0
}
[Link]._hash = function () {
var H = [Link](64)
writeInt64BE(this._ah, this._al, 0)
writeInt64BE(this._bh, this._bl, 8)
writeInt64BE(this._ch, this._cl, 16)
writeInt64BE(this._dh, this._dl, 24)
writeInt64BE(this._eh, this._el, 32)
writeInt64BE(this._fh, this._fl, 40)
writeInt64BE(this._gh, this._gl, 48)
writeInt64BE(this._hh, this._hl, 56)
return H
}
[Link] = Sha512
},{"./hash":31,"inherits":24,"safe-buffer":30}],39:
[function(require,module,exports){
var native = require('./native')
[Link](this, TfTypeError)
this.__type = type
this.__value = value
this.__valueTypeName = valueTypeName
}
[Link] = [Link]([Link])
[Link] = TfTypeError
[Link](this, TfTypeError)
this.__label = label
this.__property = property
this.__type = type
this.__value = value
this.__valueTypeName = valueTypeName
}
[Link] = [Link]([Link])
[Link] = TfTypeError
e = new TfPropertyTypeError(
e.__type, property, e.__label, e.__value, e.__valueTypeName
)
// child?
} else if (e instanceof TfTypeError) {
e = new TfPropertyTypeError(
e.__type, property, label, e.__value, e.__valueTypeName
)
}
[Link](e)
return e
}
[Link] = {
TfTypeError: TfTypeError,
TfPropertyTypeError: TfPropertyTypeError,
tfCustomError: tfCustomError,
tfSubError: tfSubError,
tfJSON: tfJSON,
getValueTypeName: getValueTypeName
}
},{"./native":42}],40:[function(require,module,exports){
(function (Buffer){
var NATIVE = require('./native')
var ERRORS = require('./errors')
return Length
}
var types = {
ArrayN: _ArrayN,
Buffer: _Buffer,
BufferN: _BufferN,
Finite: Finite,
Hex: Hex,
HexN: _HexN,
Int8: Int8,
Int16: Int16,
Int32: Int32,
StringN: _StringN,
UInt8: UInt8,
UInt16: UInt16,
UInt32: UInt32,
UInt53: UInt53
}
[Link] = types
}).call(this,require("buffer").Buffer)
},{"./errors":39,"./native":42,"buffer":84}],41:[function(require,module,exports){
var ERRORS = require('./errors')
var NATIVE = require('./native')
// short-hand
var tfJSON = [Link]
var TfTypeError = [Link]
var TfPropertyTypeError = [Link]
var tfSubError = [Link]
var getValueTypeName = [Link]
var TYPES = {
arrayOf: function arrayOf (type) {
type = compile(type)
return _arrayOf
},
return _maybe
},
try {
var propertyValue = value[propertyName]
typeforce(propertyType, propertyValue, strict)
} catch (e) {
throw tfSubError(e, propertyName)
}
}
return true
}
if (propertyKeyType) {
_map.toJSON = function () {
return '{' + tfJSON(propertyKeyType) + ': ' + tfJSON(propertyType) + '}'
}
} else {
_map.toJSON = function () { return '{' + tfJSON(propertyType) + '}' }
}
return _map
},
var propertyName
try {
for (propertyName in type) {
var propertyType = type[propertyName]
var propertyValue = value[propertyName]
if (strict) {
for (propertyName in value) {
if (type[propertyName]) continue
return true
}
_object.toJSON = function () { return tfJSON(type) }
return _object
},
return _oneOf
},
return _quacksLike
},
return _tuple
},
return _value
}
}
return [Link](type)
} else if ([Link](type)) {
return type
}
return [Link](type)
}
// JIT
return typeforce(compile(type), value, strict)
}
// async wrapper
function __async (type, value, strict, callback) {
// default to falsy strict if using shorthand overload
if (typeof strict === 'function') return __async(type, value, false, strict)
try {
typeforce(type, value, strict)
} catch (e) {
return callback(e)
}
callback()
}
[Link] = __async
[Link] = compile
[Link] = TfTypeError
[Link] = TfPropertyTypeError
[Link] = typeforce
},{"./errors":39,"./extra":40,"./native":42}],42:[function(require,module,exports){
var types = {
Array: function (value) { return value !== null && value !== undefined &&
[Link] === Array },
Boolean: function (value) { return typeof value === 'boolean' },
Function: function (value) { return typeof value === 'function' },
Nil: function (value) { return value === undefined || value === null },
Number: function (value) { return typeof value === 'number' },
Object: function (value) { return typeof value === 'object' },
String: function (value) { return typeof value === 'string' },
'': function () { return true }
}
// TODO: deprecate
[Link] = [Link]
[Link] = types
},{}],43:[function(require,module,exports){
'use strict'
var Buffer = require('safe-buffer').Buffer
// Number.MAX_SAFE_INTEGER
var MAX_SAFE_INTEGER = 9007199254740991
// 8 bit
if (number < 0xfd) {
buffer.writeUInt8(number, offset)
[Link] = 1
// 16 bit
} else if (number <= 0xffff) {
buffer.writeUInt8(0xfd, offset)
buffer.writeUInt16LE(number, offset + 1)
[Link] = 3
// 32 bit
} else if (number <= 0xffffffff) {
buffer.writeUInt8(0xfe, offset)
buffer.writeUInt32LE(number, offset + 1)
[Link] = 5
// 64 bit
} else {
buffer.writeUInt8(0xff, offset)
buffer.writeUInt32LE(number >>> 0, offset + 1)
buffer.writeUInt32LE((number / 0x100000000) | 0, offset + 5)
[Link] = 9
}
return buffer
}
// 8 bit
if (first < 0xfd) {
[Link] = 1
return first
// 16 bit
} else if (first === 0xfd) {
[Link] = 3
return buffer.readUInt16LE(offset + 1)
// 32 bit
} else if (first === 0xfe) {
[Link] = 5
return buffer.readUInt32LE(offset + 1)
// 64 bit
} else {
[Link] = 9
var lo = buffer.readUInt32LE(offset + 1)
var hi = buffer.readUInt32LE(offset + 5)
var number = hi * 0x0100000000 + lo
checkUInt53(number)
return number
}
}
return (
number < 0xfd ? 1
: number <= 0xffff ? 3
: number <= 0xffffffff ? 5
: 9
)
}
// uncompressed
if ([Link] === 33) {
return {
version: buffer[0],
privateKey: [Link](1, 33),
compressed: false
}
}
// invalid length
if ([Link] !== 34) throw new Error('Invalid WIF length')
return {
version: buffer[0],
privateKey: [Link](1, 33),
compressed: true
}
}
result.writeUInt8(version, 0)
[Link](result, 1)
if (compressed) {
result[33] = 0x01
}
return result
}
return [Link](
encodeRaw(
[Link],
[Link],
[Link]
)
)
}
[Link] = {
decode: decode,
decodeRaw: decodeRaw,
encode: encode,
encodeRaw: encodeRaw
}
}).call(this,require("buffer").Buffer)
},{"bs58check":12,"buffer":84}],45:[function(require,module,exports){
var Buffer = require('safe-buffer').Buffer
var bech32 = require('bech32')
var bs58check = require('bs58check')
var bscript = require('./script')
var btemplates = require('./templates')
var networks = require('./networks')
var typeforce = require('typeforce')
var types = require('./types')
return {
version: [Link][0],
prefix: [Link],
data: [Link](data)
}
}
return [Link](payload)
}
if ([Link](outputScript)) return
toBase58Check([Link](outputScript).slice(3, 23), [Link])
if ([Link](outputScript)) return
toBase58Check([Link](outputScript).slice(2, 22), [Link])
if ([Link](outputScript)) return
toBech32([Link](outputScript).slice(2, 22), 0, network.bech32)
if ([Link](outputScript)) return
toBech32([Link](outputScript).slice(2, 34), 0, network.bech32)
var decode
try {
decode = fromBase58Check(address)
} catch (e) {}
if (decode) {
if ([Link] === [Link]) return
[Link]([Link])
if ([Link] === [Link]) return
[Link]([Link])
} else {
try {
decode = fromBech32(address)
} catch (e) {}
if (decode) {
if ([Link] !== network.bech32) throw new Error(address + ' has an
invalid prefix')
if ([Link] === 0) {
if ([Link] === 20) return
[Link]([Link])
if ([Link] === 32) return
[Link]([Link])
}
}
}
[Link] = {
fromBase58Check: fromBase58Check,
fromBech32: fromBech32,
fromOutputScript: fromOutputScript,
toBase58Check: toBase58Check,
toBech32: toBech32,
toOutputScript: toOutputScript
}
},{"./networks":54,"./script":55,"./templates":57,"./
types":81,"bech32":2,"bs58check":12,"safe-buffer":30,"typeforce":41}],46:
[function(require,module,exports){
var Buffer = require('safe-buffer').Buffer
var bcrypto = require('./crypto')
var fastMerkleRoot = require('merkle-lib/fastRoot')
var typeforce = require('typeforce')
var types = require('./types')
var varuint = require('varuint-bitcoin')
function Block () {
[Link] = 1
[Link] = null
[Link] = null
[Link] = 0
[Link] = 0
[Link] = 0
}
var offset = 0
function readSlice (n) {
offset += n
return [Link](offset - n, offset)
}
function readUInt32 () {
var i = buffer.readUInt32LE(offset)
offset += 4
return i
}
function readInt32 () {
var i = buffer.readInt32LE(offset)
offset += 4
return i
}
function readVarInt () {
var vi = [Link](buffer, offset)
offset += [Link]
return vi
}
function readTransaction () {
var tx = [Link]([Link](offset), true)
offset += [Link]()
return tx
}
return block
}
return 80 + [Link]([Link]) +
[Link](function (a, x) {
return a + [Link]()
}, 0)
}
[Link] = function () {
return bcrypto.hash256([Link](true))
}
[Link] = function () {
return [Link]().reverse().toString('hex')
}
[Link] = function () {
var date = new Date(0) // epoch
[Link]([Link])
return date
}
var offset = 0
function writeSlice (slice) {
[Link](buffer, offset)
offset += [Link]
}
writeInt32([Link])
writeSlice([Link])
writeSlice([Link])
writeUInt32([Link])
writeUInt32([Link])
writeUInt32([Link])
[Link](function (tx) {
var txSize = [Link]() // TODO: extract from toBuffer?
[Link](buffer, offset)
offset += txSize
})
return buffer
}
[Link] = function () {
if (![Link]) return false
[Link] = function () {
var hash = [Link]().reverse()
var target = [Link]([Link])
[Link] = Block
},{"./crypto":48,"./transaction":79,"./types":81,"merkle-lib/fastRoot":26,"safe-
buffer":30,"typeforce":41,"varuint-bitcoin":43}],47:
[function(require,module,exports){
var pushdata = require('pushdata-bitcoin')
var varuint = require('varuint-bitcoin')
// [Link]
function verifuint (value, max) {
if (typeof value !== 'number') throw new Error('cannot write a non-number as a
number')
if (value < 0) throw new Error('specified a negative value for writing an
unsigned value')
if (value > max) throw new Error('RangeError: value out of range')
if ([Link](value) !== value) throw new Error('value has a fractional
component')
}
verifuint(b + a, 0x001fffffffffffff)
return b + a
}
return {
number: result,
size: [Link]
}
}
[Link] = {
pushDataSize: [Link],
readPushDataInt: [Link],
readUInt64LE: readUInt64LE,
readVarInt: readVarInt,
varIntBuffer: [Link],
varIntSize: [Link],
writePushDataInt: [Link],
writeUInt64LE: writeUInt64LE,
writeVarInt: writeVarInt
}
},{"pushdata-bitcoin":27,"varuint-bitcoin":43}],48:
[function(require,module,exports){
var createHash = require('create-hash')
[Link] = {
hash160: hash160,
hash256: hash256,
ripemd160: ripemd160,
sha1: sha1,
sha256: sha256
}
},{"create-hash":14}],49:[function(require,module,exports){
var Buffer = require('safe-buffer').Buffer
var createHmac = require('create-hmac')
var typeforce = require('typeforce')
var types = require('./types')
// [Link]
function deterministicGenerateK (hash, x, checkSig) {
typeforce([Link](
types.Hash256bit,
types.Buffer256bit,
[Link]
), arguments)
// Step D
k = createHmac('sha256', k)
.update(v)
.update(ZERO)
.update(x)
.update(hash)
.digest()
// Step E
v = createHmac('sha256', k).update(v).digest()
// Step F
k = createHmac('sha256', k)
.update(v)
.update(ONE)
.update(x)
.update(hash)
.digest()
// Step G
v = createHmac('sha256', k).update(v).digest()
var T = [Link](v)
// Step H3, repeat until T is within the interval [1, n - 1] and is suitable for
ECDSA
while ([Link]() <= 0 || [Link](secp256k1.n) >= 0 || !checkSig(T)) {
k = createHmac('sha256', k)
.update(v)
.update(ZERO)
.digest()
v = createHmac('sha256', k).update(v).digest()
return T
}
var N_OVER_TWO = [Link](1)
var x = [Link](32)
var e = [Link](hash)
var n = secp256k1.n
var G = secp256k1.G
var r, s
deterministicGenerateK(hash, x, function (k) {
var Q = [Link](k)
r = [Link](n)
if ([Link]() === 0) return false
s = [Link](n).multiply([Link]([Link](r))).mod(n)
if ([Link]() === 0) return false
return true
})
var n = secp256k1.n
var G = secp256k1.G
var r = signature.r
var s = signature.s
// Compute s^-1
var sInv = [Link](n)
[Link] = {
deterministicGenerateK: deterministicGenerateK,
sign: sign,
verify: verify,
// TODO: remove
__curve: secp256k1
}
},{"./ecsignature":51,"./types":81,"bigi":5,"create-hmac":16,"ecurve":20,"safe-
buffer":30,"typeforce":41}],50:[function(require,module,exports){
var baddress = require('./address')
var bcrypto = require('./crypto')
var ecdsa = require('./ecdsa')
var randomBytes = require('randombytes')
var typeforce = require('typeforce')
var types = require('./types')
var wif = require('wif')
options = options || {}
if (d) {
if ([Link]() <= 0) throw new Error('Private key must be greater than 0')
if ([Link](secp256k1.n) >= 0) throw new Error('Private key must be less
than the curve order')
if (Q) throw new TypeError('Unexpected publicKey parameter')
this.d = d
} else {
typeforce([Link], Q)
this.__Q = Q
}
[Link]([Link], 'Q', {
get: function () {
if (!this.__Q && this.d) {
this.__Q = [Link](this.d)
}
return this.__Q
}
})
// list of networks?
if ([Link](network)) {
network = [Link](function (x) {
return version === [Link]
}).pop()
var d = [Link]([Link])
var d
do {
var buffer = rng(32)
typeforce(types.Buffer256bit, buffer)
d = [Link](buffer)
} while ([Link]() <= 0 || [Link](secp256k1.n) >= 0)
[Link] = function () {
return baddress.toBase58Check(bcrypto.hash160([Link]()),
[Link]().pubKeyHash)
}
[Link] = function () {
return [Link]
}
[Link] = function () {
return [Link]([Link])
}
[Link] = function () {
if (!this.d) throw new Error('Missing private key')
[Link] = ECPair
},{"./address":45,"./crypto":48,"./ecdsa":49,"./networks":54,"./
types":81,"bigi":5,"ecurve":20,"randombytes":28,"safe-
buffer":30,"typeforce":41,"wif":44}],51:[function(require,module,exports){
var bip66 = require('bip66')
var typeforce = require('typeforce')
var types = require('./types')
this.r = r
this.s = s
}
return {
compressed: compressed,
i: recoveryParam,
signature: signature
}
}
// BIP62: 1 byte hashType flag (only 0x01, 0x02, 0x03, 0x81, 0x82 and 0x83 are
allowed)
[Link] = function (buffer) {
var hashType = buffer.readUInt8([Link] - 1)
var hashTypeMod = hashType & ~0x80
if (hashTypeMod <= 0x00 || hashTypeMod >= 0x04) throw new Error('Invalid hashType
' + hashType)
return {
signature: [Link]([Link](0, -1)),
hashType: hashType
}
}
i += 27
[Link] = function () {
var r = [Link]([Link]())
var s = [Link]([Link]())
return [Link](r, s)
}
[Link] = ECSignature
},{"./types":81,"bigi":5,"bip66":7,"safe-buffer":30,"typeforce":41}],52:
[function(require,module,exports){
var Buffer = require('safe-buffer').Buffer
var base58check = require('bs58check')
var bcrypto = require('./crypto')
var createHmac = require('create-hmac')
var typeforce = require('typeforce')
var types = require('./types')
var NETWORKS = require('./networks')
var BigInteger = require('bigi')
var ECPair = require('./ecpair')
[Link] = keyPair
[Link] = chainCode
[Link] = 0
[Link] = 0
[Link] = 0x00000000
}
HDNode.HIGHEST_BIT = 0x80000000
[Link] = 78
HDNode.MASTER_SECRET = [Link]('Bitcoin seed', 'utf8')
if ([Link] < 16) throw new TypeError('Seed should be at least 128 bits')
if ([Link] > 64) throw new TypeError('Seed should be at most 512 bits')
// list of networks?
if ([Link](networks)) {
network = [Link](function (x) {
return version === [Link] ||
version === [Link]
}).pop()
// 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ...
var depth = buffer[4]
// 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key
being serialized.
// This is encoded in MSB order. (0x00000000 if master key)
var index = buffer.readUInt32BE(9)
if (depth === 0 && index !== 0) throw new Error('Invalid index')
[Link] = function () {
return [Link]()
}
[Link] = function () {
return bcrypto.hash160([Link]())
}
[Link] = function () {
return [Link]().slice(0, 4)
}
[Link] = function () {
return [Link]()
}
[Link] = function () {
return [Link]()
}
[Link] = function () {
var neuteredKeyPair = new ECPair(null, [Link].Q, {
network: [Link]
})
return neutered
}
// Version
var network = [Link]
var version = (![Link]()) ? [Link] : [Link]
var buffer = [Link](78)
// 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ....
buffer.writeUInt8([Link], 4)
// 4 bytes: the fingerprint of the parent's key (0x00000000 if master key)
buffer.writeUInt32BE([Link], 5)
// 4 bytes: child number. This is the number i in xi = xpar/i, with xi the key
being serialized.
// This is encoded in big endian. (0x00000000 if master key)
buffer.writeUInt32BE([Link], 9)
return [Link](buffer)
}
// [Link]
derivation-ckd-functions
[Link] = function (index) {
typeforce(types.UInt32, index)
// Hardened child
if (isHardened) {
if ([Link]()) throw new TypeError('Could not derive hardened child
key')
// Normal child
} else {
// data = serP(point(kpar)) || ser32(index)
// = serP(Kpar) || ser32(index)
[Link]().copy(data, 0)
data.writeUInt32BE(index, 33)
}
// In case Ki is the point at infinity, proceed with the next value for i
if ([Link](Ki)) {
return [Link](index + 1)
}
return hd
}
splitPath = [Link](1)
}
[Link] = HDNode
},{"./crypto":48,"./ecpair":50,"./networks":54,"./
types":81,"bigi":5,"bs58check":12,"create-hmac":16,"ecurve":20,"safe-
buffer":30,"typeforce":41}],53:[function(require,module,exports){
var script = require('./script')
[Link] = {
bufferutils: require('./bufferutils'), // TODO: remove in 4.0.0
Block: require('./block'),
ECPair: require('./ecpair'),
ECSignature: require('./ecsignature'),
HDNode: require('./hdnode'),
Transaction: require('./transaction'),
TransactionBuilder: require('./transaction_builder'),
address: require('./address'),
crypto: require('./crypto'),
networks: require('./networks'),
opcodes: require('bitcoin-ops'),
script: script
}
},{"./address":45,"./block":46,"./bufferutils":47,"./crypto":48,"./ecpair":50,"./
ecsignature":51,"./hdnode":52,"./networks":54,"./script":55,"./templates":57,"./
transaction":79,"./transaction_builder":80,"bitcoin-ops":8}],54:
[function(require,module,exports){
// [Link]
// Dogecoin BIP32 is a proposed standard: [Link]
topic=409731
[Link] = {
bitcoin: {
messagePrefix: '\x18Bitcoin Signed Message:\n',
bech32: 'bc',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4
},
pubKeyHash: 0x00,
scriptHash: 0x05,
wif: 0x80
},
litecoin: {
messagePrefix: '\x19Litecoin Signed Message:\n',
bech32: 'ltc',
bip32: {
public: 0x019da462,
private: 0x019d9cfe
},
pubKeyHash: 0x30,
scriptHash: 0x32,
wif: 0xb0
},
dogecoin: {
messagePrefix: '\x19Dogecoin Signed Message:\n',
bech32: undefined,
bip32: {
public: 0x02facafd,
private: 0x02fac398
},
pubKeyHash: 0x1e,
scriptHash: 0x16,
wif: 0x9e
},
bitcoin_testnet: {
messagePrefix: '\x18Bitcoin Signed Message:\n',
bech32: 'tb',
bip32: {
public: 0x043587cf,
private: 0x04358394
},
pubKeyHash: 0x6f,
scriptHash: 0xc4,
wif: 0xef
},
dogecoin_testnet: {
messagePrefix: '\x18Dogecoin Signed Message:\n',
bech32: undefined,
bip32: {
public: 0x0432a9a8,
private: 0x0432a243
},
pubKeyHash: 0x71,
scriptHash: 0xc4,
wif: 0xf1
},
litecoin_testnet: {
messagePrefix: '\x18Litecoin Signed Message:\n',
bech32: 'tltc',
bip32: {
public: 0x0436ef7d,
private: 0x0436f6e1
},
pubKeyHash: 0x6f,
scriptHash: 0xc4,
wif: 0xef
}
}
},{}],55:[function(require,module,exports){
var Buffer = require('safe-buffer').Buffer
var bip66 = require('bip66')
var pushdata = require('pushdata-bitcoin')
var typeforce = require('typeforce')
var types = require('./types')
var scriptNumber = require('./script_number')
typeforce([Link], chunks)
// opcode
return accum + 1
}, 0.0)
[Link](function (chunk) {
// data chunk
if ([Link](chunk)) {
// adhere to BIP62.3, minimal push policy
var opcode = asMinimalOP(chunk)
if (opcode !== undefined) {
buffer.writeUInt8(opcode, offset)
offset += 1
return
}
// opcode
} else {
buffer.writeUInt8(chunk, offset)
offset += 1
}
})
typeforce([Link], buffer)
var chunks = []
var i = 0
// data chunk
if ((opcode > OPS.OP_0) && (opcode <= OPS.OP_PUSHDATA4)) {
var d = [Link](buffer, i)
// decompile minimally
var op = asMinimalOP(data)
if (op !== undefined) {
[Link](op)
} else {
[Link](data)
}
// opcode
} else {
[Link](opcode)
i += 1
}
}
return chunks
}
// opcode!
return REVERSE_OPS[chunk]
}).join(' ')
}
// data!
return [Link](chunkStr, 'hex')
}))
}
switch (buffer[0]) {
case 0x02:
case 0x03:
return [Link] === 33
case 0x04:
return [Link] === 65
}
return false
}
[Link] = {
compile: compile,
decompile: decompile,
fromASM: fromASM,
toASM: toASM,
toStack: toStack,
number: require('./script_number'),
isCanonicalPubKey: isCanonicalPubKey,
isCanonicalSignature: isCanonicalSignature,
isPushOnly: isPushOnly,
isDefinedHashType: isDefinedHashType
}
},{"./script_number":56,"./types":81,"bip66":7,"bitcoin-ops":8,"bitcoin-ops/
map":9,"pushdata-bitcoin":27,"safe-buffer":30,"typeforce":41}],56:
[function(require,module,exports){
var Buffer = require('safe-buffer').Buffer
// 40-bit
if (length === 5) {
var a = buffer.readUInt32LE(0)
var b = buffer.readUInt8(4)
var result = 0
if (buffer[length - 1] & 0x80) return -(result & ~(0x80 << (8 * (length - 1))))
return result
}
return buffer
}
[Link] = {
decode: decode,
encode: encode
}
},{"safe-buffer":30}],57:[function(require,module,exports){
var decompile = require('../script').decompile
var multisig = require('./multisig')
var nullData = require('./nulldata')
var pubKey = require('./pubkey')
var pubKeyHash = require('./pubkeyhash')
var scriptHash = require('./scripthash')
var witnessPubKeyHash = require('./witnesspubkeyhash')
var witnessScriptHash = require('./witnessscripthash')
var witnessCommitment = require('./witnesscommitment')
var types = {
MULTISIG: 'multisig',
NONSTANDARD: 'nonstandard',
NULLDATA: 'nulldata',
P2PK: 'pubkey',
P2PKH: 'pubkeyhash',
P2SH: 'scripthash',
P2WPKH: 'witnesspubkeyhash',
P2WSH: 'witnessscripthash',
WITNESS_COMMITMENT: 'witnesscommitment'
}
return [Link]
}
return [Link]
}
return [Link]
}
[Link] = {
classifyInput: classifyInput,
classifyOutput: classifyOutput,
classifyWitness: classifyWitness,
multisig: multisig,
nullData: nullData,
pubKey: pubKey,
pubKeyHash: pubKeyHash,
scriptHash: scriptHash,
witnessPubKeyHash: witnessPubKeyHash,
witnessScriptHash: witnessScriptHash,
witnessCommitment: witnessCommitment,
types: types
}
},{"../script":55,"./multisig":58,"./nulldata":61,"./pubkey":62,"./
pubkeyhash":65,"./scripthash":68,"./witnesscommitment":71,"./
witnesspubkeyhash":73,"./witnessscripthash":76}],58:
[function(require,module,exports){
[Link] = {
input: require('./input'),
output: require('./output')
}
},{"./input":59,"./output":60}],59:[function(require,module,exports){
// OP_0 [signatures ...]
if (allowIncomplete) {
return [Link](1).every(partialSignature)
}
return [Link](1).every([Link])
}
[Link] = function () { return 'multisig input' }
if (scriptPubKey) {
var scriptData = [Link](scriptPubKey)
[Link] = {
check: check,
decode: decode,
decodeStack: decodeStack,
encode: encode,
encodeStack: encodeStack
}
},{"../../script":55,"./output":60,"bitcoin-ops":8,"safe-
buffer":30,"typeforce":41}],60:[function(require,module,exports){
// m [pubKeys ...] n OP_CHECKMULTISIG
var n = [Link]
if (n < m) throw new TypeError('Not enough pubKeys provided')
return [Link]([].concat(
OP_INT_BASE + m,
pubKeys,
OP_INT_BASE + n,
OPS.OP_CHECKMULTISIG
))
}
return {
m: chunks[0] - OP_INT_BASE,
pubKeys: [Link](1, -2)
}
}
[Link] = {
check: check,
decode: decode,
encode: encode
}
},{"../../script":55,"../../types":81,"bitcoin-ops":8,"typeforce":41}],61:
[function(require,module,exports){
// OP_RETURN {data}
return [Link](2)
}
[Link] = {
output: {
check: check,
decode: decode,
encode: encode
}
}
},{"../script":55,"../types":81,"bitcoin-ops":8,"typeforce":41}],62:
[function(require,module,exports){
arguments[4][58][0].apply(exports,arguments)
},{"./input":63,"./output":64,"dup":58}],63:[function(require,module,exports){
// {signature}
[Link] = {
check: check,
decode: decode,
decodeStack: decodeStack,
encode: encode,
encodeStack: encodeStack
}
},{"../../script":55,"typeforce":41}],64:[function(require,module,exports){
// {pubKey} OP_CHECKSIG
return chunks[0]
}
[Link] = {
check: check,
decode: decode,
encode: encode
}
},{"../../script":55,"bitcoin-ops":8,"typeforce":41}],65:
[function(require,module,exports){
arguments[4][58][0].apply(exports,arguments)
},{"./input":66,"./output":67,"dup":58}],66:[function(require,module,exports){
// {signature} {pubKey}
return {
signature: stack[0],
pubKey: stack[1]
}
}
[Link] = {
check: check,
decode: decode,
decodeStack: decodeStack,
encode: encode,
encodeStack: encodeStack
}
},{"../../script":55,"typeforce":41}],67:[function(require,module,exports){
// OP_DUP OP_HASH160 {pubKeyHash} OP_EQUALVERIFY OP_CHECKSIG
return [Link]([
OPS.OP_DUP,
OPS.OP_HASH160,
pubKeyHash,
OPS.OP_EQUALVERIFY,
OPS.OP_CHECKSIG
])
}
[Link] = {
check: check,
decode: decode,
encode: encode
}
},{"../../script":55,"../../types":81,"bitcoin-ops":8,"typeforce":41}],68:
[function(require,module,exports){
arguments[4][58][0].apply(exports,arguments)
},{"./input":69,"./output":70,"dup":58}],69:[function(require,module,exports){
// <scriptSig> {serialized scriptPubKey script}
// is witness?
if ([Link] === 1) {
return [Link](redeemScriptChunks) ||
[Link](redeemScriptChunks)
}
// match types
if ([Link](scriptSigChunks) &&
[Link](redeemScriptChunks)) return true
if ([Link](scriptSigChunks) &&
[Link](redeemScriptChunks)) return true
return false
}
[Link] = function () { return 'scriptHash input' }
return {
redeemScriptStack: [Link](0, -1),
redeemScript: stack[[Link] - 1]
}
}
[Link] = {
check: check,
decode: decode,
decodeStack: decodeStack,
encode: encode,
encodeStack: encodeStack
}
},{"../../script":55,"../multisig/":58,"../pubkey/":62,"../pubkeyhash/":65,"../
witnesspubkeyhash/output":75,"../witnessscripthash/output":78,"safe-
buffer":30,"typeforce":41}],70:[function(require,module,exports){
// OP_HASH160 {scriptHash} OP_EQUAL
[Link] = {
check: check,
decode: decode,
encode: encode
}
},{"../../script":55,"../../types":81,"bitcoin-ops":8,"typeforce":41}],71:
[function(require,module,exports){
[Link] = {
output: require('./output')
}
},{"./output":72}],72:[function(require,module,exports){
// OP_RETURN {aa21a9ed} {commitment}
[Link] = {
check: check,
decode: decode,
encode: encode
}
},{"../../script":55,"../../types":81,"bitcoin-ops":8,"safe-
buffer":30,"typeforce":41}],73:[function(require,module,exports){
arguments[4][58][0].apply(exports,arguments)
},{"./input":74,"./output":75,"dup":58}],74:[function(require,module,exports){
// {signature} {pubKey}
return {
signature: stack[0],
pubKey: stack[1]
}
}
[Link] = {
check: check,
decodeStack: decodeStack,
encodeStack: encodeStack
}
},{"../../script":55,"typeforce":41}],75:[function(require,module,exports){
// OP_0 {pubKeyHash}
return [Link](2)
}
[Link] = {
check: check,
decode: decode,
encode: encode
}
},{"../../script":55,"../../types":81,"bitcoin-ops":8,"typeforce":41}],76:
[function(require,module,exports){
arguments[4][58][0].apply(exports,arguments)
},{"./input":77,"./output":78,"dup":58}],77:[function(require,module,exports){
(function (Buffer){
// <scriptSig> {serialized scriptPubKey script}
// match types
if ([Link](witnessRawScriptSig) &&
[Link](witnessScriptChunks)) return true
if ([Link](witnessRawScriptSig) &&
[Link](witnessScriptChunks)) return true
return false
}
[Link] = function () { return 'witnessScriptHash input' }
[Link] = {
check: check,
decodeStack: decodeStack,
encodeStack: encodeStack
}
}).call(this,require("buffer").Buffer)
},{"../../script":55,"../../types":81,"../multisig/":58,"../pubkey/":62,"../
pubkeyhash/":65,"buffer":84,"typeforce":41}],78:[function(require,module,exports){
// OP_0 {scriptHash}
return [Link](2)
}
[Link] = {
check: check,
decode: decode,
encode: encode
}
},{"../../script":55,"../../types":81,"bitcoin-ops":8,"typeforce":41}],79:
[function(require,module,exports){
var Buffer = require('safe-buffer').Buffer
var bcrypto = require('./crypto')
var bscript = require('./script')
var bufferutils = require('./bufferutils')
var opcodes = require('bitcoin-ops')
var typeforce = require('typeforce')
var types = require('./types')
var varuint = require('varuint-bitcoin')
function Transaction () {
[Link] = 1
[Link] = 0
[Link] = []
[Link] = []
}
Transaction.DEFAULT_SEQUENCE = 0xffffffff
Transaction.SIGHASH_ALL = 0x01
Transaction.SIGHASH_NONE = 0x02
Transaction.SIGHASH_SINGLE = 0x03
Transaction.SIGHASH_ANYONECANPAY = 0x80
Transaction.ADVANCED_TRANSACTION_MARKER = 0x00
Transaction.ADVANCED_TRANSACTION_FLAG = 0x01
function readUInt32 () {
var i = buffer.readUInt32LE(offset)
offset += 4
return i
}
function readInt32 () {
var i = buffer.readInt32LE(offset)
offset += 4
return i
}
function readUInt64 () {
var i = bufferutils.readUInt64LE(buffer, offset)
offset += 8
return i
}
function readVarInt () {
var vi = [Link](buffer, offset)
offset += [Link]
return vi
}
function readVarSlice () {
return readSlice(readVarInt())
}
function readVector () {
var count = readVarInt()
var vector = []
for (var i = 0; i < count; i++) [Link](readVarSlice())
return vector
}
if (hasWitnesses) {
for (i = 0; i < vinLen; ++i) {
[Link][i].witness = readVector()
}
[Link] = readUInt32()
if (__noStrict) return tx
if (offset !== [Link]) throw new Error('Transaction has unexpected data')
return tx
}
[Link] = function () {
return [Link] === 1 && [Link]([Link][0].hash)
}
if ([Link](sequence)) {
sequence = Transaction.DEFAULT_SEQUENCE
}
[Link] = function () {
return [Link](function (x) {
return [Link] !== 0
})
}
[Link] = function () {
var base = this.__byteLength(false)
var total = this.__byteLength(true)
return base * 3 + total
}
[Link] = function () {
return [Link]([Link]() / 4)
}
[Link] = function () {
return this.__byteLength(true)
}
return (
(hasWitnesses ? 10 : 8) +
[Link]([Link]) +
[Link]([Link]) +
[Link](function (sum, input) { return sum + 40 +
varSliceSize([Link]) }, 0) +
[Link](function (sum, output) { return sum + 8 +
varSliceSize([Link]) }, 0) +
(hasWitnesses ? [Link](function (sum, input) { return sum +
vectorSize([Link]) }, 0) : 0)
)
}
[Link] = function () {
var newTx = new Transaction()
[Link] = [Link]
[Link] = [Link]
return newTx
}
/**
* Hash transaction for signing a specific input.
*
* Bitcoin uses a different hash for each signed transaction input.
* This method copies the transaction, makes the necessary changes based on the
* hashType, and then hashes the result.
* This hash can then be used to sign the provided transaction input.
*/
[Link] = function (inIndex, prevOutScript,
hashType) {
typeforce([Link](types.UInt32, [Link], /* types.UInt8 */
[Link]), arguments)
// [Link]
if (inIndex >= [Link]) return ONE
// ignore OP_CODESEPARATOR
var ourScript = [Link]([Link](prevOutScript).filter(function
(x) {
return x !== opcodes.OP_CODESEPARATOR
}))
[Link] = 0
})
[Link] = 0
})
}
return bcrypto.hash256(buffer)
}
[Link](function (txIn) {
writeSlice([Link])
writeUInt32([Link])
})
hashPrevouts = bcrypto.hash256(tbuffer)
}
[Link](function (txIn) {
writeUInt32([Link])
})
hashSequence = bcrypto.hash256(tbuffer)
}
tbuffer = [Link](txOutsSize)
toffset = 0
[Link](function (out) {
writeUInt64([Link])
writeVarSlice([Link])
})
hashOutputs = bcrypto.hash256(tbuffer)
} else if ((hashType & 0x1f) === Transaction.SIGHASH_SINGLE && inIndex <
[Link]) {
var output = [Link][inIndex]
hashOutputs = bcrypto.hash256(tbuffer)
}
[Link] = function () {
return bcrypto.hash256(this.__toBuffer(undefined, undefined, false))
}
[Link] = function () {
// transaction hash's are displayed in reverse order
return [Link]().reverse().toString('hex')
}
writeInt32([Link])
if (hasWitnesses) {
writeUInt8(Transaction.ADVANCED_TRANSACTION_MARKER)
writeUInt8(Transaction.ADVANCED_TRANSACTION_FLAG)
}
writeVarInt([Link])
[Link](function (txIn) {
writeSlice([Link])
writeUInt32([Link])
writeVarSlice([Link])
writeUInt32([Link])
})
writeVarInt([Link])
[Link](function (txOut) {
if (![Link]) {
writeUInt64([Link])
} else {
writeSlice([Link])
}
writeVarSlice([Link])
})
if (hasWitnesses) {
[Link](function (input) {
writeVector([Link])
})
}
writeUInt32([Link])
[Link] = function () {
return [Link]().toString('hex')
}
[Link][index].script = scriptSig
}
[Link][index].witness = witness
}
[Link] = Transaction
},{"./bufferutils":47,"./crypto":48,"./script":55,"./types":81,"bitcoin-
ops":8,"safe-buffer":30,"typeforce":41,"varuint-bitcoin":43}],80:
[function(require,module,exports){
var Buffer = require('safe-buffer').Buffer
var baddress = require('./address')
var bcrypto = require('./crypto')
var bscript = require('./script')
var btemplates = require('./templates')
var networks = require('./networks')
var ops = require('bitcoin-ops')
var typeforce = require('typeforce')
var types = require('./types')
var scriptTypes = [Link]
var SIGNABLE = [[Link].P2PKH, [Link].P2PK,
[Link]]
var P2SH = [Link]([[Link].P2WPKH, [Link].P2WSH])
case scriptTypes.P2PK:
pubKeys[0] = script ? [Link](script) : undefined
signatures = [Link](0, 1)
break
case [Link]:
if (script) {
var multisig = [Link](script)
pubKeys = [Link]
}
return {
pubKeys: pubKeys,
signatures: signatures
}
}
function expandInput (scriptSig, witnessStack) {
if ([Link] === 0 && [Link] === 0) return {}
var prevOutScript
var prevOutType
var scriptType
var script
var redeemScript
var witnessScript
var witnessScriptType
var redeemScriptType
var witness = false
var p2wsh = false
var p2sh = false
var witnessProgram
var chunks
if (!supportedType([Link](witnessScript))) {
throw new Error('unsupported witness script')
}
script = witnessScript
scriptType = witnessScriptType
chunks = [Link](0, -1)
} else if (classifyWitness === scriptTypes.P2WPKH) {
witness = true
var key = witnessStack[[Link] - 1]
var keyHash = bcrypto.hash160(key)
if ([Link] === 0) {
prevOutScript = [Link](keyHash)
prevOutType = scriptTypes.P2WPKH
if (typeof redeemScript !== 'undefined') {
throw new Error('Redeem script given when unnecessary')
}
} else {
if (!redeemScript) {
throw new Error('No redeemScript provided for P2WPKH, but scriptSig wasn\'t
empty')
}
witnessProgram = [Link](keyHash)
if () {
throw new Error('Redeem script did not have the right witness program')
}
}
scriptType = scriptTypes.P2PKH
chunks = witnessStack
} else if (redeemScript) {
if (!supportedP2SHType(redeemScriptType)) {
throw new Error('Bad redeemscript!')
}
script = redeemScript
scriptType = redeemScriptType
chunks = [Link](0, -1)
} else {
prevOutType = scriptType = [Link](scriptSig)
chunks = scriptSigChunks
}
var result = {
pubKeys: [Link],
signatures: [Link],
prevOutScript: prevOutScript,
prevOutType: prevOutType,
signType: scriptType,
signScript: script,
witness: Boolean(witness)
}
if (p2sh) {
[Link] = redeemScript
[Link] = redeemScriptType
}
if (p2wsh) {
[Link] = witnessScript
[Link] = witnessScriptType
}
return result
}
return true
})
return match
})
}
var pubKeys = []
switch (scriptType) {
// does our hash160(pubKey) match the output scripts?
case scriptTypes.P2PKH:
if (!ourPubKey) break
case scriptTypes.P2PK:
pubKeys = [Link](0, 1)
break
case [Link]:
pubKeys = [Link](1, -2)
break
var signType
var signScript
if (!
[Link]([Link](witnessScriptHash)))
throw new Error('Witness script inconsistent with redeem script')
prevOutType = [Link].P2SH
prevOutScript = [Link](redeemScriptHash)
p2sh = witness = p2wsh = true
p2shType = [Link].P2WSH
signType = witnessType = [Link]
signScript = witnessScript
} else if (redeemScript) {
redeemScriptHash = bcrypto.hash160(redeemScript)
checkP2SHInput(input, redeemScriptHash)
prevOutType = [Link].P2SH
prevOutScript = [Link](redeemScriptHash)
p2sh = true
signType = p2shType = [Link]
signScript = redeemScript
witness = signType === [Link].P2WPKH
} else if (witnessScript) {
witnessScriptHash = bcrypto.sha256(witnessScript)
checkP2WSHInput(input, witnessScriptHash)
prevOutType = [Link].P2WSH
prevOutScript = [Link](witnessScriptHash)
witness = p2wsh = true
signType = witnessType = [Link]
signScript = witnessScript
} else if ([Link]) {
// embedded scripts are not possible without a redeemScript
if ([Link] === scriptTypes.P2SH ||
[Link] === scriptTypes.P2WSH) {
throw new Error('PrevOutScript is ' + [Link] + ', requires
redeemScript')
}
prevOutType = [Link]
prevOutScript = [Link]
expanded = expandOutput([Link], [Link], kpPubKey)
if (![Link]) return
prevOutType = scriptTypes.P2PKH
witness = false
signType = prevOutType
signScript = prevOutScript
}
if (p2sh) {
[Link] = redeemScript
[Link] = p2shType
}
if (p2wsh) {
[Link] = witnessScript
[Link] = witnessType
}
[Link] = [Link]
[Link] = [Link]
[Link] = signScript
[Link] = signType
[Link] = prevOutScript
[Link] = prevOutType
[Link] = witness
}
return [Link](signatures)
}
} else {
throw new Error('Not yet supported')
}
if (supportedType([Link])) {
sig = buildStack([Link], [Link], [Link],
allowIncomplete)
}
switch (scriptType) {
// P2WPKH is a special case of P2PKH
case [Link].P2WPKH:
witness = buildStack([Link].P2PKH, [Link], [Link],
allowIncomplete)
break
case [Link].P2WSH:
// We can remove this check later
if (!allowIncomplete && !supportedType([Link])) {
throw new Error('Impossible to sign this type')
}
if (supportedType([Link])) {
witness = buildStack([Link], [Link],
[Link], allowIncomplete)
[Link]([Link])
scriptType = [Link]
}
break
}
return {
type: scriptType,
script: [Link](sig),
witness: witness
}
}
function TransactionBuilder (network, maximumFeeRate) {
[Link] = {}
[Link] = network || [Link]
// WARNING: This is __NOT__ to be relied on, its just another potential safety
mechanism (safety in-depth)
[Link] = maximumFeeRate || 2500
[Link] = []
[Link] = new Transaction()
}
[Link] = locktime
}
// XXX: this might eventually become more complex depending on what the versions
represent
[Link] = version
}
// Copy inputs
[Link](function (txIn) {
txb.__addInputUnsafe([Link], [Link], {
sequence: [Link],
script: [Link],
witness: [Link]
})
})
return txb
}
var value
// is it a hex string?
if (typeof txHash === 'string') {
// transaction hashs's are displayed in reverse order, un-reverse it
txHash = [Link](txHash, 'hex').reverse()
// is it a Transaction object?
} else if (txHash instanceof Transaction) {
var txOut = [Link][vout]
prevOutScript = [Link]
value = [Link]
txHash = [Link]()
}
var input = {}
if ([Link]) {
[Link] = [Link]
[Link] = [Link]
}
prevOutType = [Link]
}
[Link] = [Link]
[Link] = prevOutType ||
[Link]([Link])
}
[Link] = function () {
return this.__build(false)
}
[Link] = function () {
return this.__build(true)
}
var tx = [Link]()
// Create script signatures from inputs
[Link](function (input, i) {
var scriptType = [Link] || [Link] ||
[Link]
if (!scriptType && !allowIncomplete) throw new Error('Transaction is not
complete')
var result = buildInput(input, allowIncomplete)
// skip if no result
if (!allowIncomplete) {
if (!supportedType([Link]) && [Link] !== [Link].P2WPKH) {
throw new Error([Link] + ' not supported')
}
}
[Link](i, [Link])
[Link](i, [Link])
})
if (!allowIncomplete) {
// do not rely on this, its merely a last resort
if (this.__overMaximumFees([Link]())) {
throw new Error('Transaction has absurd fees')
}
}
return tx
}
// ready to sign
var signatureHash
if ([Link]) {
signatureHash = [Link].hashForWitnessV0(vin, [Link], [Link],
hashType)
} else {
signatureHash = [Link](vin, [Link], hashType)
}
[Link][i] = [Link](hashType)
return true
})
if (!signed) throw new Error('Key pair cannot sign for this input')
}
[Link].__canModifyInputs = function () {
return [Link](function (input) {
// any signatures?
if ([Link] === undefined) return true
[Link].__canModifyOutputs = function () {
var nInputs = [Link]
var nOutputs = [Link]
[Link] = TransactionBuilder
},{"./address":45,"./crypto":48,"./ecpair":50,"./ecsignature":51,"./
networks":54,"./script":55,"./templates":57,"./transaction":79,"./
types":81,"bitcoin-ops":8,"safe-buffer":30,"typeforce":41}],81:
[function(require,module,exports){
var typeforce = require('typeforce')
[Link] = types
},{"typeforce":41}],82:[function(require,module,exports){
// [Link]
//
// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
//
// Originally from [Link] ([Link]
// Copyright (c) 2009 Thomas Robinson <[Link]>
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the 'Software'), to
// deal in the Software without restriction, including without limitation the
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
// sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// when used in node, this will actually load the util module we depend on
// versus loading the builtin util module as happens otherwise
// this is a bug in node module loading as far as I am concerned
var util = require('util/');
var pSlice = [Link];
var hasOwn = [Link];
if ([Link]) {
[Link](this, stackStartFunction);
}
else {
// non v8 browsers so we can have a stacktrace
var err = new Error();
if ([Link]) {
var out = [Link];
[Link] = out;
}
}
};
function truncate(s, n) {
if ([Link](s)) {
return [Link] < n ? s : [Link](0, n);
} else {
return s;
}
}
function getMessage(self) {
return truncate([Link]([Link], replacer), 128) + ' ' +
[Link] + ' ' +
truncate([Link]([Link], replacer), 128);
}
// At present only the three keys mentioned above are used and
// understood by the spec. Implementations or sub modules can pass
// other keys to the AssertionError's constructor - they will be
// ignored.
// 6. The non-equality assertion tests for whether two objects are not equal
// with != [Link](actual, expected, message_opt);
return true;
// 7.4. Other pairs that do not both pass typeof value == 'object',
// equivalence is determined by ==.
} else if ( && ) {
return actual == expected;
// 7.5 For all other Object pairs, including Array objects, equivalence is
// determined by having the same number of owned properties (as verified
// with [Link]), the same set of keys
// (although not necessarily the same order), equivalent values for every
// corresponding key, and an identical 'prototype' property. Note: this
// accounts for both named and indexed properties on Arrays.
} else {
return objEquiv(actual, expected);
}
}
function isArguments(object) {
return [Link](object) == '[object Arguments]';
}
function objEquiv(a, b) {
if ([Link](a) || [Link](b))
return false;
// an identical 'prototype' property.
if ([Link] !== [Link]) return false;
// if one is a primitive, the other must be same
if ([Link](a) || [Link](b)) {
return a === b;
}
var aIsArgs = isArguments(a),
bIsArgs = isArguments(b);
if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
return false;
if (aIsArgs) {
a = [Link](a);
b = [Link](b);
return _deepEqual(a, b);
}
var ka = objectKeys(a),
kb = objectKeys(b),
key, i;
// having the same number of owned properties (keys incorporates
// hasOwnProperty)
if ([Link] != [Link])
return false;
//the same set of keys (although not necessarily the same order),
[Link]();
[Link]();
//~~~cheap key test
for (i = [Link] - 1; i >= 0; i--) {
if (ka[i] != kb[i])
return false;
}
//equivalent values for every corresponding key, and
//~~~possibly expensive deep test
for (i = [Link] - 1; i >= 0; i--) {
key = ka[i];
if (!_deepEqual(a[key], b[key])) return false;
}
return true;
}
// 8. The non-equivalence assertion tests for any deep inequality.
// [Link](actual, expected, message_opt);
return false;
}
if ([Link](expected)) {
message = expected;
expected = null;
}
try {
block();
} catch (e) {
actual = e;
}
},{"util/":106}],83:[function(require,module,exports){
},{}],84:[function(require,module,exports){
/*!
* The buffer module from [Link], for the browser.
*
* @author Feross Aboukhadijeh <feross@[Link]> <[Link]
* @license MIT
*/
[Link] = Buffer
[Link] = SlowBuffer
exports.INSPECT_MAX_BYTES = 50
[Link] = 8192 // not used by this implementation
/**
* Class: Buffer
* =============
*
* The Buffer constructor returns instances of `Uint8Array` that are augmented
* with function properties for all the node `Buffer` API functions. We use
* `Uint8Array` so that square bracket notation works as expected -- it returns
* a single octet.
*
* By augmenting the instances, we can avoid modifying the `Uint8Array`
* prototype.
*/
function Buffer (subject, encoding, noZero) {
if (!(this instanceof Buffer))
return new Buffer(subject, encoding, noZero)
if (length < 0)
length = 0
else
length >>>= 0 // Coerce to uint32.
var i
if (Buffer.TYPED_ARRAY_SUPPORT && typeof [Link] === 'number') {
// Speed optimization -- use set if we're copying from a typed array
self._set(subject)
} else if (isArrayish(subject)) {
// Treat array-ish objects as a byte array
if ([Link](subject)) {
for (i = 0; i < length; i++)
self[i] = subject.readUInt8(i)
} else {
for (i = 0; i < length; i++)
self[i] = ((subject[i] % 256) + 256) % 256
}
} else if (type === 'string') {
[Link](subject, 0, encoding)
} else if (type === 'number' && !Buffer.TYPED_ARRAY_SUPPORT && !noZero) {
for (i = 0; i < length; i++) {
self[i] = 0
}
}
return self
}
if (a === b) return 0
var x = [Link]
var y = [Link]
for (var i = 0, len = [Link](x, y); i < len && a[i] === b[i]; i++) {}
if (i !== len) {
x = a[i]
y = b[i]
}
if (x < y) return -1
if (y < x) return 1
return 0
}
if ([Link] === 0) {
return new Buffer(0)
} else if ([Link] === 1) {
return list[0]
}
var i
if (totalLength === undefined) {
totalLength = 0
for (i = 0; i < [Link]; i++) {
totalLength += list[i].length
}
}
while (true) {
switch (encoding) {
case 'hex':
return hexSlice(this, start, end)
case 'utf8':
case 'utf-8':
return utf8Slice(this, start, end)
case 'ascii':
return asciiSlice(this, start, end)
case 'binary':
return binarySlice(this, start, end)
case 'base64':
return base64Slice(this, start, end)
case 'ucs2':
case 'ucs-2':
case 'utf16le':
case 'utf-16le':
return utf16leSlice(this, start, end)
default:
if (loweredCase)
throw new TypeError('Unknown encoding: ' + encoding)
encoding = (encoding + '').toLowerCase()
loweredCase = true
}
}
}
[Link] = function () {
var str = ''
var max = exports.INSPECT_MAX_BYTES
if ([Link] > 0) {
str = [Link]('hex', 0, max).match(/.{2}/g).join(' ')
if ([Link] > max)
str += ' ... '
}
return '<Buffer ' + str + '>'
}
offset = Number(offset) || 0
var ret
switch (encoding) {
case 'hex':
ret = hexWrite(this, string, offset, length)
break
case 'utf8':
case 'utf-8':
ret = utf8Write(this, string, offset, length)
break
case 'ascii':
ret = asciiWrite(this, string, offset, length)
break
case 'binary':
ret = binaryWrite(this, string, offset, length)
break
case 'base64':
ret = base64Write(this, string, offset, length)
break
case 'ucs2':
case 'ucs-2':
case 'utf16le':
case 'utf-16le':
ret = utf16leWrite(this, string, offset, length)
break
default:
throw new TypeError('Unknown encoding: ' + encoding)
}
return ret
}
[Link] = function () {
return {
type: 'Buffer',
data: [Link](this._arr || this, 0)
}
}
if (start < 0) {
start += len
if (start < 0)
start = 0
} else if (start > len) {
start = len
}
if (end < 0) {
end += len
if (end < 0)
end = 0
} else if (end > len) {
end = len
}
var newBuf
if (Buffer.TYPED_ARRAY_SUPPORT) {
newBuf = Buffer._augment([Link](start, end))
} else {
var sliceLen = end - start
newBuf = new Buffer(sliceLen, undefined, true)
for (var i = 0; i < sliceLen; i++) {
newBuf[i] = this[i + start]
}
}
if ([Link])
[Link] = [Link] || this
return newBuf
}
/*
* Need to make sure that buffer isn't trying to write out of bounds.
*/
function checkOffset (offset, ext, length) {
if ((offset % 1) !== 0 || offset < 0)
throw new RangeError('offset is not uint')
if (offset + ext > length)
throw new RangeError('Trying to access beyond buffer length')
}
return val
}
return val
}
return ((this[offset]) |
(this[offset + 1] << 8) |
(this[offset + 2] << 16)) +
(this[offset + 3] * 0x1000000)
}
return val
}
var i = byteLength
var mul = 1
var val = this[offset + --i]
while (i > 0 && (mul *= 0x100))
val += this[offset + --i] * mul
mul *= 0x80
if (val >= mul)
val -= [Link](2, 8 * byteLength)
return val
}
return (this[offset]) |
(this[offset + 1] << 8) |
(this[offset + 2] << 16) |
(this[offset + 3] << 24)
}
var mul = 1
var i = 0
this[offset] = value & 0xFF
while (++i < byteLength && (mul *= 0x100))
this[offset + i] = (value / mul) >>> 0 & 0xFF
var i = byteLength - 1
var mul = 1
this[offset + i] = value & 0xFF
while (--i >= 0 && (mul *= 0x100))
this[offset + i] = (value / mul) >>> 0 & 0xFF
var i = 0
var mul = 1
var sub = value < 0 ? 1 : 0
this[offset] = value & 0xFF
while (++i < byteLength && (mul *= 0x100))
this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
var i = byteLength - 1
var mul = 1
var sub = value < 0 ? 1 : 0
this[offset + i] = value & 0xFF
while (--i >= 0 && (mul *= 0x100))
this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
if (!start) start = 0
if (!end && end !== 0) end = [Link]
if (target_start >= [Link]) target_start = [Link]
if (!target_start) target_start = 0
if (end > 0 && end < start) end = start
// Are we oob?
if (end > [Link])
end = [Link]
if ([Link] - target_start < end - start)
end = [Link] - target_start + start
return len
}
var i
if (typeof value === 'number') {
for (i = start; i < end; i++) {
this[i] = value
}
} else {
var bytes = utf8ToBytes([Link]())
var len = [Link]
for (i = start; i < end; i++) {
this[i] = bytes[i % len]
}
}
return this
}
/**
* Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance.
* Added in Node 0.12. Only available in browsers that support ArrayBuffer.
*/
[Link] = function () {
if (typeof Uint8Array !== 'undefined') {
if (Buffer.TYPED_ARRAY_SUPPORT) {
return (new Buffer(this)).buffer
} else {
var buf = new Uint8Array([Link])
for (var i = 0, len = [Link]; i < len; i += 1) {
buf[i] = this[i]
}
return [Link]
}
} else {
throw new TypeError('[Link] not supported in this browser')
}
}
// HELPER FUNCTIONS
// ================
var BP = [Link]
/**
* Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods
*/
Buffer._augment = function (arr) {
[Link] = Buffer
arr._isBuffer = true
[Link] = [Link]
[Link] = [Link]
[Link] = [Link]
[Link] = [Link]
[Link] = [Link]
[Link] = [Link]
[Link] = [Link]
[Link] = [Link]
[Link] = [Link]
[Link] = [Link]
arr.readUInt8 = BP.readUInt8
arr.readUInt16LE = BP.readUInt16LE
arr.readUInt16BE = BP.readUInt16BE
arr.readUInt32LE = BP.readUInt32LE
arr.readUInt32BE = BP.readUInt32BE
[Link] = [Link]
[Link] = [Link]
arr.readInt8 = BP.readInt8
arr.readInt16LE = BP.readInt16LE
arr.readInt16BE = BP.readInt16BE
arr.readInt32LE = BP.readInt32LE
arr.readInt32BE = BP.readInt32BE
[Link] = [Link]
[Link] = [Link]
[Link] = [Link]
[Link] = [Link]
arr.writeUInt8 = BP.writeUInt8
[Link] = [Link]
[Link] = [Link]
arr.writeUInt16LE = BP.writeUInt16LE
arr.writeUInt16BE = BP.writeUInt16BE
arr.writeUInt32LE = BP.writeUInt32LE
arr.writeUInt32BE = BP.writeUInt32BE
[Link] = [Link]
[Link] = [Link]
arr.writeInt8 = BP.writeInt8
arr.writeInt16LE = BP.writeInt16LE
arr.writeInt16BE = BP.writeInt16BE
arr.writeInt32LE = BP.writeInt32LE
arr.writeInt32BE = BP.writeInt32BE
[Link] = [Link]
[Link] = [Link]
[Link] = [Link]
[Link] = [Link]
[Link] = [Link]
[Link] = [Link]
[Link] = [Link]
return arr
}
// is surrogate component
if (codePoint > 0xD7FF && codePoint < 0xE000) {
// last char was a lead
if (leadSurrogate) {
// 2 leads in a row
if (codePoint < 0xDC00) {
if ((units -= 3) > -1) [Link](0xEF, 0xBF, 0xBD)
leadSurrogate = codePoint
continue
} else {
// valid surrogate pair
codePoint = leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00 | 0x10000
leadSurrogate = null
}
} else {
// no lead yet
// encode utf8
if (codePoint < 0x80) {
if ((units -= 1) < 0) break
[Link](codePoint)
} else if (codePoint < 0x800) {
if ((units -= 2) < 0) break
[Link](
codePoint >> 0x6 | 0xC0,
codePoint & 0x3F | 0x80
)
} else if (codePoint < 0x10000) {
if ((units -= 3) < 0) break
[Link](
codePoint >> 0xC | 0xE0,
codePoint >> 0x6 & 0x3F | 0x80,
codePoint & 0x3F | 0x80
)
} else if (codePoint < 0x200000) {
if ((units -= 4) < 0) break
[Link](
codePoint >> 0x12 | 0xF0,
codePoint >> 0xC & 0x3F | 0x80,
codePoint >> 0x6 & 0x3F | 0x80,
codePoint & 0x3F | 0x80
)
} else {
throw new Error('Invalid code point')
}
}
return bytes
}
c = [Link](i)
hi = c >> 8
lo = c % 256
[Link](lo)
[Link](hi)
}
return byteArray
}
},{"base64-js":85,"ieee754":86,"is-array":87}],85:[function(require,module,exports)
{
var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
;(function (exports) {
'use strict';
if ([Link] % 4 > 0) {
throw new Error('Invalid string. Length must be a multiple of 4')
}
var L = 0
for (i = 0, j = 0; i < l; i += 4, j += 3) {
tmp = (decode([Link](i)) << 18) | (decode([Link](i + 1))
<< 12) | (decode([Link](i + 2)) << 6) | decode([Link](i + 3))
push((tmp & 0xFF0000) >> 16)
push((tmp & 0xFF00) >> 8)
push(tmp & 0xFF)
}
if (placeHolders === 2) {
tmp = (decode([Link](i)) << 2) | (decode([Link](i + 1))
>> 4)
push(tmp & 0xFF)
} else if (placeHolders === 1) {
tmp = (decode([Link](i)) << 10) | (decode([Link](i + 1))
<< 4) | (decode([Link](i + 2)) >> 2)
push((tmp >> 8) & 0xFF)
push(tmp & 0xFF)
}
return arr
}
// go through the array every three bytes, we'll deal with trailing
stuff later
for (i = 0, length = [Link] - extraBytes; i < length; i += 3) {
temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
output += tripletToBase64(temp)
}
// pad the end with zeros, but make sure to not forget the extra bytes
switch (extraBytes) {
case 1:
temp = uint8[[Link] - 1]
output += encode(temp >> 2)
output += encode((temp << 4) & 0x3F)
output += '=='
break
case 2:
temp = (uint8[[Link] - 2] << 8) + (uint8[[Link]
- 1])
output += encode(temp >> 10)
output += encode((temp >> 4) & 0x3F)
output += encode((temp << 2) & 0x3F)
output += '='
break
}
return output
}
[Link] = b64ToByteArray
[Link] = uint8ToBase64
}(typeof exports === 'undefined' ? (this.base64js = {}) : exports))
},{}],86:[function(require,module,exports){
[Link] = function(buffer, offset, isLE, mLen, nBytes) {
var e, m,
eLen = nBytes * 8 - mLen - 1,
eMax = (1 << eLen) - 1,
eBias = eMax >> 1,
nBits = -7,
i = isLE ? (nBytes - 1) : 0,
d = isLE ? -1 : 1,
s = buffer[offset + i];
i += d;
if (e === 0) {
e = 1 - eBias;
} else if (e === eMax) {
return m ? NaN : ((s ? -1 : 1) * Infinity);
} else {
m = m + [Link](2, mLen);
e = e - eBias;
}
return (s ? -1 : 1) * m * [Link](2, e - mLen);
};
[Link] = function(buffer, value, offset, isLE, mLen, nBytes) {
var e, m, c,
eLen = nBytes * 8 - mLen - 1,
eMax = (1 << eLen) - 1,
eBias = eMax >> 1,
rt = (mLen === 23 ? [Link](2, -24) - [Link](2, -77) : 0),
i = isLE ? 0 : (nBytes - 1),
d = isLE ? 1 : -1,
s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;
value = [Link](value);
e = (e << mLen) | m;
eLen += mLen;
for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8);
buffer[offset + i - d] |= s * 128;
};
},{}],87:[function(require,module,exports){
/**
* isArray
*/
var isArray = [Link];
/**
* toString
*/
/**
* Whether or not the given `val`
* is an array.
*
* example:
*
* isArray([]);
* // > true
* isArray(arguments);
* // > false
* isArray('');
* // > false
*
* @param {mixed} val
* @return {bool}
*/
},{}],88:[function(require,module,exports){
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
function EventEmitter() {
this._events = this._events || {};
this._maxListeners = this._maxListeners || undefined;
}
[Link] = EventEmitter;
// Obviously not all Emitters should be limited to 10. This function allows
// that to be increased. Set to zero for unlimited.
[Link] = function(n) {
if (!isNumber(n) || n < 0 || isNaN(n))
throw TypeError('n must be a positive number');
this._maxListeners = n;
return this;
};
[Link] = function(type) {
var er, handler, len, args, i, listeners;
if (!this._events)
this._events = {};
handler = this._events[type];
if (isUndefined(handler))
return false;
if (isFunction(handler)) {
switch ([Link]) {
// fast cases
case 1:
[Link](this);
break;
case 2:
[Link](this, arguments[1]);
break;
case 3:
[Link](this, arguments[1], arguments[2]);
break;
// slower
default:
len = [Link];
args = new Array(len - 1);
for (i = 1; i < len; i++)
args[i - 1] = arguments[i];
[Link](this, args);
}
} else if (isObject(handler)) {
len = [Link];
args = new Array(len - 1);
for (i = 1; i < len; i++)
args[i - 1] = arguments[i];
listeners = [Link]();
len = [Link];
for (i = 0; i < len; i++)
listeners[i].apply(this, args);
}
return true;
};
if (!isFunction(listener))
throw TypeError('listener must be a function');
if (!this._events)
this._events = {};
if (!this._events[type])
// Optimize the case of one listener. Don't need the extra array object.
this._events[type] = listener;
else if (isObject(this._events[type]))
// If we've already got an array, just append.
this._events[type].push(listener);
else
// Adding the second element, need to change to array.
this._events[type] = [this._events[type], listener];
return this;
};
[Link] = [Link];
function g() {
[Link](type, g);
if (!fired) {
fired = true;
[Link](this, arguments);
}
}
[Link] = listener;
[Link](type, g);
return this;
};
if (!isFunction(listener))
throw TypeError('listener must be a function');
if (!this._events || !this._events[type])
return this;
list = this._events[type];
length = [Link];
position = -1;
} else if (isObject(list)) {
for (i = length; i-- > 0;) {
if (list[i] === listener ||
(list[i].listener && list[i].listener === listener)) {
position = i;
break;
}
}
if (position < 0)
return this;
if ([Link] === 1) {
[Link] = 0;
delete this._events[type];
} else {
[Link](position, 1);
}
if (this._events.removeListener)
[Link]('removeListener', type, listener);
}
return this;
};
[Link] = function(type) {
var key, listeners;
if (!this._events)
return this;
listeners = this._events[type];
if (isFunction(listeners)) {
[Link](type, listeners);
} else {
// LIFO order
while ([Link])
[Link](type, listeners[[Link] - 1]);
}
delete this._events[type];
return this;
};
[Link] = function(type) {
var ret;
if (!this._events || !this._events[type])
ret = [];
else if (isFunction(this._events[type]))
ret = [this._events[type]];
else
ret = this._events[type].slice();
return ret;
};
function isFunction(arg) {
return typeof arg === 'function';
}
function isNumber(arg) {
return typeof arg === 'number';
}
function isObject(arg) {
return typeof arg === 'object' && arg !== null;
}
function isUndefined(arg) {
return arg === void 0;
}
},{}],89:[function(require,module,exports){
arguments[4][24][0].apply(exports,arguments)
},{"dup":24}],90:[function(require,module,exports){
[Link] = [Link] || function (arr) {
return [Link](arr) == '[object Array]';
};
},{}],91:[function(require,module,exports){
// shim for using process in browser
function drainQueue() {
if (draining) {
return;
}
draining = true;
var currentQueue;
var len = [Link];
while(len) {
currentQueue = queue;
queue = [];
var i = -1;
while (++i < len) {
currentQueue[i]();
}
len = [Link];
}
draining = false;
}
[Link] = function (fun) {
[Link](fun);
if (!draining) {
setTimeout(drainQueue, 0);
}
};
[Link] = 'browser';
[Link] = true;
[Link] = {};
[Link] = [];
[Link] = ''; // empty string to avoid regexp issues
function noop() {}
[Link] = noop;
[Link] = noop;
[Link] = noop;
[Link] = noop;
[Link] = noop;
[Link] = noop;
[Link] = noop;
// TODO(shtylman)
[Link] = function () { return '/' };
[Link] = function (dir) {
throw new Error('[Link] is not supported');
};
[Link] = function() { return 0; };
},{}],92:[function(require,module,exports){
[Link] = require("./lib/_stream_duplex.js")
},{"./lib/_stream_duplex.js":93}],93:[function(require,module,exports){
(function (process){
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
[Link] = Duplex;
/*<replacement>*/
var objectKeys = [Link] || function (obj) {
var keys = [];
for (var key in obj) [Link](key);
return keys;
}
/*</replacement>*/
/*<replacement>*/
var util = require('core-util-is');
[Link] = require('inherits');
/*</replacement>*/
[Link](Duplex, Readable);
forEach(objectKeys([Link]), function(method) {
if (![Link][method])
[Link][method] = [Link][method];
});
function Duplex(options) {
if (!(this instanceof Duplex))
return new Duplex(options);
[Link](this, options);
[Link](this, options);
[Link] = true;
if (options && [Link] === false)
[Link] = false;
[Link]('end', onend);
}
}).call(this,require('_process'))
},{"./_stream_readable":95,"./_stream_writable":97,"_process":91,"core-util-
is":98,"inherits":89}],94:[function(require,module,exports){
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
// a passthrough stream.
// basically just the most minimal sort of Transform stream.
// Every written chunk gets output as-is.
[Link] = PassThrough;
/*<replacement>*/
var util = require('core-util-is');
[Link] = require('inherits');
/*</replacement>*/
[Link](PassThrough, Transform);
function PassThrough(options) {
if (!(this instanceof PassThrough))
return new PassThrough(options);
[Link](this, options);
}
},{"./_stream_transform":96,"core-util-is":98,"inherits":89}],95:
[function(require,module,exports){
(function (process){
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
[Link] = Readable;
/*<replacement>*/
var isArray = require('isarray');
/*</replacement>*/
/*<replacement>*/
var Buffer = require('buffer').Buffer;
/*</replacement>*/
[Link] = ReadableState;
var EE = require('events').EventEmitter;
/*<replacement>*/
if (![Link]) [Link] = function(emitter, type) {
return [Link](type).length;
};
/*</replacement>*/
var StringDecoder;
/*<replacement>*/
var debug = require('util');
if (debug && [Link]) {
debug = [Link]('stream');
} else {
debug = function () {};
}
/*</replacement>*/
[Link](Readable, Stream);
// cast to ints.
[Link] = ~~[Link];
[Link] = [];
[Link] = 0;
[Link] = null;
[Link] = 0;
[Link] = null;
[Link] = false;
[Link] = false;
[Link] = false;
[Link] = null;
[Link] = null;
if ([Link]) {
if (!StringDecoder)
StringDecoder = require('string_decoder/').StringDecoder;
[Link] = new StringDecoder([Link]);
[Link] = [Link];
}
}
function Readable(options) {
var Duplex = require('./_stream_duplex');
// legacy
[Link] = true;
[Link](this);
}
if (!addToFront)
[Link] = false;
if ([Link])
emitReadable(stream);
}
maybeReadMore(stream, state);
}
} else if (!addToFront) {
[Link] = false;
}
return needMoreData(state);
}
// if it's past the high water mark, we can push in some more.
// Also, if we have no data yet, we can stand some
// more bytes. This is to work around cases where hwm=0,
// such as the repl. Also, if the push() triggered a
// readable event, and the user called read(largeNumber) such that
// needReadable was set, then we ought to push more, so that another
// 'readable' event will be triggered.
function needMoreData(state) {
return ![Link] &&
([Link] ||
[Link] < [Link] ||
[Link] === 0);
}
// backwards compatibility.
[Link] = function(enc) {
if (!StringDecoder)
StringDecoder = require('string_decoder/').StringDecoder;
this._readableState.decoder = new StringDecoder(enc);
this._readableState.encoding = enc;
return this;
};
if ([Link])
return n === 0 ? 0 : 1;
if (isNaN(n) || [Link](n)) {
// only flow one buffer at a time
if ([Link] && [Link])
return [Link][0].length;
else
return [Link];
}
if (n <= 0)
return 0;
return n;
}
// you can override either this method, or the async _read(n) below.
[Link] = function(n) {
debug('read', n);
var state = this._readableState;
var nOrig = n;
if ( || n > 0)
[Link] = false;
n = howMuchToRead(n, state);
// if we currently have less than the highWaterMark, then also read some
if ([Link] === 0 || [Link] - n < [Link]) {
doRead = true;
debug('length less than watermark', doRead);
}
if (doRead) {
debug('do read');
[Link] = true;
[Link] = true;
// if the length is currently zero, then we *need* a readable event.
if ([Link] === 0)
[Link] = true;
// call internal read method
this._read([Link]);
[Link] = false;
}
var ret;
if (n > 0)
ret = fromList(n, state);
else
ret = null;
if ([Link](ret)) {
[Link] = true;
n = 0;
}
[Link] -= n;
if ()
[Link]('data', ret);
return ret;
};
// Don't emit readable right away in sync mode, because this can trigger
// another read() call => stack overflow. This way, it might trigger
// a nextTick recursion warning, but that's not so bad.
function emitReadable(stream) {
var state = stream._readableState;
[Link] = false;
if (![Link]) {
debug('emitReadable', [Link]);
[Link] = true;
if ([Link])
[Link](function() {
emitReadable_(stream);
});
else
emitReadable_(stream);
}
}
function emitReadable_(stream) {
debug('emit readable');
[Link]('readable');
flow(stream);
}
// at this point, the user has presumably seen the 'readable' event,
// and called read() to consume some data. that may have triggered
// in turn another _read(n) call, in which case reading = true if
// it's in progress.
// However, if we're not ended, or reading, and the length < hwm,
// then go ahead and try to read some more preemptively.
function maybeReadMore(stream, state) {
if (![Link]) {
[Link] = true;
[Link](function() {
maybeReadMore_(stream, state);
});
}
}
switch ([Link]) {
case 0:
[Link] = dest;
break;
case 1:
[Link] = [[Link], dest];
break;
default:
[Link](dest);
break;
}
[Link] += 1;
debug('pipe count=%d opts=%j', [Link], pipeOpts);
var doEnd = (!pipeOpts || [Link] !== false) &&
dest !== [Link] &&
dest !== [Link];
[Link]('unpipe', onunpipe);
function onunpipe(readable) {
debug('onunpipe');
if (readable === src) {
cleanup();
}
}
function onend() {
debug('onend');
[Link]();
}
function cleanup() {
debug('cleanup');
// cleanup event handlers once the pipe is broken
[Link]('close', onclose);
[Link]('finish', onfinish);
[Link]('drain', ondrain);
[Link]('error', onerror);
[Link]('unpipe', onunpipe);
[Link]('end', onend);
[Link]('end', cleanup);
[Link]('data', ondata);
[Link]('data', ondata);
function ondata(chunk) {
debug('ondata');
var ret = [Link](chunk);
if (false === ret) {
debug('false write response, pause',
src._readableState.awaitDrain);
src._readableState.awaitDrain++;
[Link]();
}
}
// Both close and finish should trigger unpipe, but only once.
function onclose() {
[Link]('finish', onfinish);
unpipe();
}
[Link]('close', onclose);
function onfinish() {
debug('onfinish');
[Link]('close', onclose);
unpipe();
}
[Link]('finish', onfinish);
function unpipe() {
debug('unpipe');
[Link](dest);
}
return dest;
};
function pipeOnDrain(src) {
return function() {
var state = src._readableState;
debug('pipeOnDrain', [Link]);
if ([Link])
[Link]--;
if ([Link] === 0 && [Link](src, 'data')) {
[Link] = true;
flow(src);
}
};
}
[Link] = function(dest) {
var state = this._readableState;
if (!dest)
dest = [Link];
// got a match.
[Link] = null;
[Link] = 0;
[Link] = false;
if (dest)
[Link]('unpipe', this);
return this;
}
if (!dest) {
// remove all.
var dests = [Link];
var len = [Link];
[Link] = null;
[Link] = 0;
[Link] = false;
[Link](i, 1);
[Link] -= 1;
if ([Link] === 1)
[Link] = [Link][0];
[Link]('unpipe', this);
return this;
};
return res;
};
[Link] = [Link];
// pause() and resume() are remnants of the legacy readable stream API
// If the user uses them, then switch into old mode.
[Link] = function() {
var state = this._readableState;
if (![Link]) {
debug('resume');
[Link] = true;
if (![Link]) {
debug('resume read 0');
[Link](0);
}
resume(this, state);
}
return this;
};
[Link] = function() {
debug('call pause flowing=%j', this._readableState.flowing);
if (false !== this._readableState.flowing) {
debug('pause');
this._readableState.flowing = false;
[Link]('pause');
}
return this;
};
function flow(stream) {
var state = stream._readableState;
debug('flow', [Link]);
if ([Link]) {
do {
var chunk = [Link]();
} while (null !== chunk && [Link]);
}
}
[Link](null);
});
[Link]('data', function(chunk) {
debug('wrapped data');
if ([Link])
chunk = [Link](chunk);
if (!chunk || ![Link] && ![Link])
return;
var ret = [Link](chunk);
if (!ret) {
paused = true;
[Link]();
}
});
return self;
};
if (length === 0)
ret = null;
else if (objectMode)
ret = [Link]();
else if (!n || n >= length) {
// read it all, truncate the array.
if (stringMode)
ret = [Link]('');
else
ret = [Link](list, length);
[Link] = 0;
} else {
// read just some of it.
if (n < list[0].length) {
// just take a part of the first list item.
// slice is the same for buffers and strings.
var buf = list[0];
ret = [Link](0, n);
list[0] = [Link](n);
} else if (n === list[0].length) {
// first list is a perfect match
ret = [Link]();
} else {
// complex case.
// we have enough to cover it, but it spans past the first buffer.
if (stringMode)
ret = '';
else
ret = new Buffer(n);
var c = 0;
for (var i = 0, l = [Link]; i < l && c < n; i++) {
var buf = list[0];
var cpy = [Link](n - c, [Link]);
if (stringMode)
ret += [Link](0, cpy);
else
[Link](ret, c, 0, cpy);
c += cpy;
}
}
}
return ret;
}
function endReadable(stream) {
var state = stream._readableState;
if (![Link]) {
[Link] = true;
[Link](function() {
// Check that we didn't get one last unshift.
if (![Link] && [Link] === 0) {
[Link] = true;
[Link] = false;
[Link]('end');
}
});
}
}
}).call(this,require('_process'))
},{"./_stream_duplex":93,"_process":91,"buffer":84,"core-util-
is":98,"events":88,"inherits":89,"isarray":90,"stream":103,"string_decoder/":104,"u
til":83}],96:[function(require,module,exports){
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
[Link] = Transform;
/*<replacement>*/
var util = require('core-util-is');
[Link] = require('inherits');
/*</replacement>*/
[Link](Transform, Duplex);
[Link] = false;
[Link] = false;
[Link] = null;
[Link] = null;
}
if (!cb)
return [Link]('error', new Error('no writecb in Transform class'));
[Link] = null;
[Link] = null;
if ()
[Link](data);
if (cb)
cb(er);
var rs = stream._readableState;
[Link] = false;
if ([Link] || [Link] < [Link]) {
stream._read([Link]);
}
}
function Transform(options) {
if (!(this instanceof Transform))
return new Transform(options);
[Link](this, options);
// when the writable side finishes, then flush out anything remaining.
var stream = this;
// we have implemented the _read method, and done the other things
// that Readable wants before the first _read call, so unset the
// sync guard flag.
this._readableState.sync = false;
[Link]('prefinish', function() {
if ([Link](this._flush))
this._flush(function(er) {
done(stream, er);
});
else
done(stream);
});
}
if ([Link])
throw new Error('calling transform done when [Link] != 0');
if ([Link])
throw new Error('calling transform done when still transforming');
return [Link](null);
}
},{"./_stream_duplex":93,"core-util-is":98,"inherits":89}],97:
[function(require,module,exports){
(function (process){
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
[Link] = Writable;
/*<replacement>*/
var Buffer = require('buffer').Buffer;
/*</replacement>*/
[Link] = WritableState;
/*<replacement>*/
var util = require('core-util-is');
[Link] = require('inherits');
/*</replacement>*/
[Link](Writable, Stream);
// cast to ints.
[Link] = ~~[Link];
[Link] = false;
// at the start of calling end()
[Link] = false;
// when end() has been called, and returned
[Link] = false;
// when 'finish' is emitted
[Link] = false;
[Link] = [];
// emit prefinish if the only thing we're waiting for is _write cbs
// This is relevant for synchronous Transform streams
[Link] = false;
// True if the error was already emitted and should not be thrown again
[Link] = false;
}
function Writable(options) {
var Duplex = require('./_stream_duplex');
// legacy.
[Link] = true;
[Link](this);
}
if ([Link](encoding)) {
cb = encoding;
encoding = null;
}
if ([Link](chunk))
encoding = 'buffer';
else if (!encoding)
encoding = [Link];
if ()
cb = function() {};
if ([Link])
writeAfterEnd(this, state, cb);
else if (validChunk(this, state, chunk, cb)) {
[Link]++;
ret = writeOrBuffer(this, state, chunk, encoding, cb);
}
return ret;
};
[Link] = function() {
var state = this._writableState;
[Link]++;
};
[Link] = function() {
var state = this._writableState;
if ([Link]) {
[Link]--;
if (![Link] &&
![Link] &&
![Link] &&
![Link] &&
[Link])
clearBuffer(this, state);
}
};
[Link] += len;
if ([Link] || [Link])
[Link](new WriteReq(chunk, encoding, cb));
else
doWrite(stream, state, false, len, chunk, encoding, cb);
return ret;
}
stream._writableState.errorEmitted = true;
[Link]('error', er);
}
function onwriteStateUpdate(state) {
[Link] = false;
[Link] = null;
[Link] -= [Link];
[Link] = 0;
}
onwriteStateUpdate(state);
if (er)
onwriteError(stream, state, sync, er, cb);
else {
// Check if we're actually ready to finish, but don't emit yet
var finished = needFinish(stream, state);
if (!finished &&
![Link] &&
![Link] &&
[Link]) {
clearBuffer(stream, state);
}
if (sync) {
[Link](function() {
afterWrite(stream, state, finished, cb);
});
} else {
afterWrite(stream, state, finished, cb);
}
}
}
// Clear buffer
[Link] = [];
} else {
// Slow case, write chunks one-by-one
for (var c = 0; c < [Link]; c++) {
var entry = [Link][c];
var chunk = [Link];
var encoding = [Link];
var cb = [Link];
var len = [Link] ? 1 : [Link];
if (c < [Link])
[Link] = [Link](c);
else
[Link] = 0;
}
[Link] = false;
}
};
[Link]._writev = null;
if ([Link](chunk)) {
cb = chunk;
chunk = null;
encoding = null;
} else if ([Link](encoding)) {
cb = encoding;
encoding = null;
}
if ()
[Link](chunk, encoding);
}).call(this,require('_process'))
},{"./_stream_duplex":93,"_process":91,"buffer":84,"core-util-
is":98,"inherits":89,"stream":103}],98:[function(require,module,exports){
(function (Buffer){
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
function isBoolean(arg) {
return typeof arg === 'boolean';
}
[Link] = isBoolean;
function isNull(arg) {
return arg === null;
}
[Link] = isNull;
function isNullOrUndefined(arg) {
return arg == null;
}
[Link] = isNullOrUndefined;
function isNumber(arg) {
return typeof arg === 'number';
}
[Link] = isNumber;
function isString(arg) {
return typeof arg === 'string';
}
[Link] = isString;
function isSymbol(arg) {
return typeof arg === 'symbol';
}
[Link] = isSymbol;
function isUndefined(arg) {
return arg === void 0;
}
[Link] = isUndefined;
function isRegExp(re) {
return isObject(re) && objectToString(re) === '[object RegExp]';
}
[Link] = isRegExp;
function isObject(arg) {
return typeof arg === 'object' && arg !== null;
}
[Link] = isObject;
function isDate(d) {
return isObject(d) && objectToString(d) === '[object Date]';
}
[Link] = isDate;
function isError(e) {
return isObject(e) &&
(objectToString(e) === '[object Error]' || e instanceof Error);
}
[Link] = isError;
function isFunction(arg) {
return typeof arg === 'function';
}
[Link] = isFunction;
function isPrimitive(arg) {
return arg === null ||
typeof arg === 'boolean' ||
typeof arg === 'number' ||
typeof arg === 'string' ||
typeof arg === 'symbol' || // ES6 symbol
typeof arg === 'undefined';
}
[Link] = isPrimitive;
function isBuffer(arg) {
return [Link](arg);
}
[Link] = isBuffer;
function objectToString(o) {
return [Link](o);
}
}).call(this,require("buffer").Buffer)
},{"buffer":84}],99:[function(require,module,exports){
[Link] = require("./lib/_stream_passthrough.js")
},{"./lib/_stream_passthrough.js":94}],100:[function(require,module,exports){
exports = [Link] = require('./lib/_stream_readable.js');
[Link] = require('stream');
[Link] = exports;
[Link] = require('./lib/_stream_writable.js');
[Link] = require('./lib/_stream_duplex.js');
[Link] = require('./lib/_stream_transform.js');
[Link] = require('./lib/_stream_passthrough.js');
},{"./lib/_stream_duplex.js":93,"./lib/_stream_passthrough.js":94,"./lib/
_stream_readable.js":95,"./lib/_stream_transform.js":96,"./lib/
_stream_writable.js":97,"stream":103}],101:[function(require,module,exports){
[Link] = require("./lib/_stream_transform.js")
},{"./lib/_stream_transform.js":96}],102:[function(require,module,exports){
[Link] = require("./lib/_stream_writable.js")
},{"./lib/_stream_writable.js":97}],103:[function(require,module,exports){
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
[Link] = Stream;
var EE = require('events').EventEmitter;
var inherits = require('inherits');
inherits(Stream, EE);
[Link] = require('readable-stream/[Link]');
[Link] = require('readable-stream/[Link]');
[Link] = require('readable-stream/[Link]');
[Link] = require('readable-stream/[Link]');
[Link] = require('readable-stream/[Link]');
// old-style streams. Note that the pipe method (the only relevant
// part of this class) is overridden in the Readable class.
function Stream() {
[Link](this);
}
function ondata(chunk) {
if ([Link]) {
if (false === [Link](chunk) && [Link]) {
[Link]();
}
}
}
[Link]('data', ondata);
function ondrain() {
if ([Link] && [Link]) {
[Link]();
}
}
[Link]('drain', ondrain);
[Link]();
}
function onclose() {
if (didOnEnd) return;
didOnEnd = true;
[Link]('error', onerror);
[Link]('error', onerror);
[Link]('end', onend);
[Link]('close', onclose);
[Link]('error', onerror);
[Link]('error', onerror);
[Link]('end', cleanup);
[Link]('close', cleanup);
[Link]('close', cleanup);
}
[Link]('end', cleanup);
[Link]('close', cleanup);
[Link]('close', cleanup);
[Link]('pipe', source);
},{"events":88,"inherits":89,"readable-stream/[Link]":92,"readable-stream/
[Link]":99,"readable-stream/[Link]":100,"readable-stream/
[Link]":101,"readable-stream/[Link]":102}],104:
[function(require,module,exports){
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
var Buffer = require('buffer').Buffer;
function assertEncoding(encoding) {
if (encoding && !isBufferEncoding(encoding)) {
throw new Error('Unknown encoding: ' + encoding);
}
}
// if there are no more bytes in this buffer, just emit our char
if ([Link] === 0) {
return charStr;
}
break;
}
// See [Link]
// 110XXXXX
if (i == 1 && c >> 5 == 0x06) {
[Link] = 2;
break;
}
// 1110XXXX
if (i <= 2 && c >> 4 == 0x0E) {
[Link] = 3;
break;
}
// 11110XXX
if (i <= 3 && c >> 3 == 0x1E) {
[Link] = 4;
break;
}
}
[Link] = i;
};
[Link] = function(buffer) {
var res = '';
if (buffer && [Link])
res = [Link](buffer);
if ([Link]) {
var cr = [Link];
var buf = [Link];
var enc = [Link];
res += [Link](0, cr).toString(enc);
}
return res;
};
function passThroughWrite(buffer) {
return [Link]([Link]);
}
function utf16DetectIncompleteChar(buffer) {
[Link] = [Link] % 2;
[Link] = [Link] ? 2 : 0;
}
function base64DetectIncompleteChar(buffer) {
[Link] = [Link] % 3;
[Link] = [Link] ? 3 : 0;
}
},{"buffer":84}],105:[function(require,module,exports){
[Link] = function isBuffer(arg) {
return arg && typeof arg === 'object'
&& typeof [Link] === 'function'
&& typeof [Link] === 'function'
&& typeof arg.readUInt8 === 'function';
}
},{}],106:[function(require,module,exports){
(function (process,global){
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
var i = 1;
var args = arguments;
var len = [Link];
var str = String(f).replace(formatRegExp, function(x) {
if (x === '%%') return '%';
if (i >= len) return x;
switch (x) {
case '%s': return String(args[i++]);
case '%d': return Number(args[i++]);
case '%j':
try {
return [Link](args[i++]);
} catch (_) {
return '[Circular]';
}
default:
return x;
}
});
for (var x = args[i]; i < len; x = args[++i]) {
if (isNull(x) || !isObject(x)) {
str += ' ' + x;
} else {
str += ' ' + inspect(x);
}
}
return str;
};
return deprecated;
};
/**
* Echos the value of a value. Trys to print the value out
* in the best way possible given the different types.
*
* @param {Object} obj The object to print out.
* @param {Object} opts Optional options object that alters the output.
*/
/* legacy: obj, showHidden, depth, colors*/
function inspect(obj, opts) {
// default options
var ctx = {
seen: [],
stylize: stylizeNoColor
};
// legacy...
if ([Link] >= 3) [Link] = arguments[2];
if ([Link] >= 4) [Link] = arguments[3];
if (isBoolean(opts)) {
// legacy...
[Link] = opts;
} else if (opts) {
// got an "options" object
exports._extend(ctx, opts);
}
// set default options
if (isUndefined([Link])) [Link] = false;
if (isUndefined([Link])) [Link] = 2;
if (isUndefined([Link])) [Link] = false;
if (isUndefined([Link])) [Link] = true;
if ([Link]) [Link] = stylizeWithColor;
return formatValue(ctx, obj, [Link]);
}
[Link] = inspect;
// [Link]
[Link] = {
'bold' : [1, 22],
'italic' : [3, 23],
'underline' : [4, 24],
'inverse' : [7, 27],
'white' : [37, 39],
'grey' : [90, 39],
'black' : [30, 39],
'blue' : [34, 39],
'cyan' : [36, 39],
'green' : [32, 39],
'magenta' : [35, 39],
'red' : [31, 39],
'yellow' : [33, 39]
};
if (style) {
return '\u001b[' + [Link][style][0] + 'm' + str +
'\u001b[' + [Link][style][1] + 'm';
} else {
return str;
}
}
function arrayToHash(array) {
var hash = {};
[Link](function(val, idx) {
hash[val] = true;
});
return hash;
}
if ([Link]) {
keys = [Link](value);
}
if (recurseTimes < 0) {
if (isRegExp(value)) {
return [Link]([Link](value), 'regexp');
} else {
return [Link]('[Object]', 'special');
}
}
[Link](value);
var output;
if (array) {
output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
} else {
output = [Link](function(key) {
return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
});
}
[Link]();
return reduceToSingleString(output, base, braces);
}
function formatError(value) {
return '[' + [Link](value) + ']';
}
return braces[0] + base + ' ' + [Link](', ') + ' ' + braces[1];
}
function isBoolean(arg) {
return typeof arg === 'boolean';
}
[Link] = isBoolean;
function isNull(arg) {
return arg === null;
}
[Link] = isNull;
function isNullOrUndefined(arg) {
return arg == null;
}
[Link] = isNullOrUndefined;
function isNumber(arg) {
return typeof arg === 'number';
}
[Link] = isNumber;
function isString(arg) {
return typeof arg === 'string';
}
[Link] = isString;
function isSymbol(arg) {
return typeof arg === 'symbol';
}
[Link] = isSymbol;
function isUndefined(arg) {
return arg === void 0;
}
[Link] = isUndefined;
function isRegExp(re) {
return isObject(re) && objectToString(re) === '[object RegExp]';
}
[Link] = isRegExp;
function isObject(arg) {
return typeof arg === 'object' && arg !== null;
}
[Link] = isObject;
function isDate(d) {
return isObject(d) && objectToString(d) === '[object Date]';
}
[Link] = isDate;
function isError(e) {
return isObject(e) &&
(objectToString(e) === '[object Error]' || e instanceof Error);
}
[Link] = isError;
function isFunction(arg) {
return typeof arg === 'function';
}
[Link] = isFunction;
function isPrimitive(arg) {
return arg === null ||
typeof arg === 'boolean' ||
typeof arg === 'number' ||
typeof arg === 'string' ||
typeof arg === 'symbol' || // ES6 symbol
typeof arg === 'undefined';
}
[Link] = isPrimitive;
[Link] = require('./support/isBuffer');
function objectToString(o) {
return [Link](o);
}
function pad(n) {
return n < 10 ? '0' + [Link](10) : [Link](10);
}
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
'Oct', 'Nov', 'Dec'];
// 26 Feb 16:19:34
function timestamp() {
var d = new Date();
var time = [pad([Link]()),
pad([Link]()),
pad([Link]())].join(':');
return [[Link](), months[[Link]()], time].join(' ');
}
In the provided constructors, a BigInteger is considered prime through multiple checks in the `bnpFromNumber` function. If the number is greater than 1, the constructor begins by ensuring it starts as an odd number and sets its most significant bit. It then enters a loop where it adds 2 to visit consecutive odd candidates unless the bit length falls below the original parameter. The number is tested for primality using the `isProbablePrime` method, which relies on probabilistic methods like the Miller-Rabin test. If these conditions are met, that number can be regarded as prime in a probabilistic sense .
The functions `bnByteValue` and `bnShortValue` extract the least significant parts of a BigInteger into platform-compatible sizes. These conversions enable interfacing between the BigInteger library and systems expecting native 8-bit and 16-bit integers, such as lower-level hardware or software components. For instance, `bnByteValue` takes the least significant byte after ensuring sign extension to fit into the byte range, and similarly, `bnShortValue` extracts and sign-extends a 16-bit short value. These operations are crucial when BigInteger needs to interact with protocols, networks, or APIs that require data in these formats .
The `bnCompareTo` method is crucial for BigInteger operations as it provides a detailed mechanism to compare two BigInteger instances taking into account both magnitude and sign. Unlike standard comparison operations which may only consider values up to the limitations of primitive types, `bnCompareTo` allows comparison across arbitrarily large integer values. It starts by comparing the sign, then the length (number of significant words), and finally, compares each word starting from the most significant end to ensure an accurate result. This methodology enables precise operations on potentially very large integers typical in applications like cryptography .
The `bnpClamp` function is designed to manage BigInteger objects by removing excess high words that are not needed for representing the number. It achieves this by iteratively checking the highest words against a condition, which combines the sign bit and a mask (`DM`), and reduces the total count (`t`) of valid words as long as they match. This ensures the internal representation of the number remains efficient and compact, reflecting only the necessary digits of the value .
The `bnToByteArray` function converts a BigInteger instance into a big-endian byte array. It handles both the sign and magnitude of the number. During conversion, it sequentially processes each word, adjusting for the current byte-level offset (`p`), and assigns each calculated byte (`d`) to an array. If the instance is negative, the function ensures a two's complement representation by manipulating the sign bits correctly until the end of the number is reached. This ensures negative numbers are accurately represented in the byte array form for usage in further binary operations, serialization, or transmission .
The `bnModPowInt` handles modular exponentiation by efficiently calculating exponent power using modular arithmetic techniques. This function is valuable because it allows computations of large powers (mod large modulus) without directly involving very large numbers that exceed standard data representations. This operation likely uses optimized methods like repeated squaring and modular reductions to manage the variable scope, utilizing properties of modulus to reduce intermediate result sizes. These operations are essential in cryptographic algorithms where modular exponentiation with large numbers is common .
Integrating bitwise operations like `bnAnd`, `bnOr`, and `bnXor` into a BigInteger framework offers significant benefits, such as enhanced manipulation capabilities for cryptography and data encoding. These operations enable efficient handling of bit-level data structures. Challenges include ensuring that these operations handle sign bits correctly for negative numbers and managing potential performance overhead with very large numbers or numerous bitwise operations. Nonetheless, their inclusion supports a broader array of computational algorithms and provides robust tools for bitwise logic directly on large integers, which is crucial in applications like encryption, hashing, and digital signatures .
The `bnpFromRadix` function converts strings representing numbers in various bases into their BigInteger form. The function begins with the number set to zero and processes each character in the string to retrieve its corresponding base value. It accumulates these into an integer using base multiplication. It uses a variable `cs` determined by the chunk size and completes conversion by incrementally building the number bitwise starting from zero, adjusting for negative notation as necessary. This capability allows the use of BigInteger objects for non-decimal base systems, widening their applicability in computation .
Conversion methods such as `bnToRadix` and `bnpFromNumber` significantly enhance the numerical versatility of BigInteger by allowing representation changes across various numerical bases and ensuring adaptation from basic number types to complex BigIntegers. `bnToRadix` lets a BigInteger convert to a string in any base from binary to base-36, thus enabling diverse format exchanges. `bnpFromNumber` allows creation of BigIntegers from numeric and random sources, accommodating use cases like generating random keys or primes for security applications. Such methods make the library functional across applications requiring different numeric bases and adaptation to various data types .
The `bnToString` function converts a BigInteger to its string representation in a specified radix. The function determines the number of bits per character (`k`) based on the radix: 4 for hexadecimal (16), 3 for octal (8), 2 for base 4, 1 for binary (2), and 5 for base 32. If the radix is not one of these, it defaults to using the `toRadix` function for the conversion. The function iteratively processes each word of the BigInteger, shifting and masking bits as required, and translates these to characters, ensuring the final string accurately represents the number .