Skip to content

Instantly share code, notes, and snippets.

@legastero
Last active August 29, 2015 14:13
Show Gist options
  • Save legastero/8e0436e22e09ce74310c to your computer and use it in GitHub Desktop.
Save legastero/8e0436e22e09ce74310c to your computer and use it in GitHub Desktop.
requirebin sketch
require('drag-drop-webkit-mobile');
var XMPP = require('stanza.io');
var dragDrop = require('drag-drop');
var mucRoom = window.prompt('Enter name for filedrop session:');
document.querySelector('body').innerHTML = '<div id="logs" style="height:100%;overflow:scroll"></div>';
document.querySelector('#logs').innerHTML = '<div id="droparea" style="color:green; font-weight:bold">Drop a file on this part of the page</div><div>Filedrop session: '+mucRoom+'</div><div style="color:red">BE CAREFUL WHAT YOU SHARE</div>';
function log() {
var args = Array.prototype.slice.call(arguments);
document.querySelector('#logs').innerHTML += '<p>' + args.join(' ') + '</p>';
}
var offeredFiles = [];
var peers = [];
var client = XMPP.createClient({
jid: 'anon.lance.im',
wsURL: 'wss://lance.im:5281/xmpp-websocket',
transport: 'websocket',
useStreamManagement: false
});
client.on('session:started', function () {
log('Connected as:', client.jid.full);
client.joinRoom(mucRoom + '@muc.lance.im', client.jid.local);
});
client.on('muc:join', function (pres) {
log('Joined room:', pres.from.bare);
});
client.on('muc:available', function (pres) {
if (pres.muc.codes && pres.muc.codes.indexOf('110') >= 0) {
// Ignore our own presence
return;
}
log('New peer detected');
peers.push(pres.from.full);
if (!offeredFiles.length) {
return;
}
log('Offering files to new peer');
offeredFiles.forEach(function (file) {
var session = client.jingle.createFileTransferSession(pres.from);
session.start(file);
});
});
client.on('jingle:incoming', function (session) {
log('Incoming file session request for:', session.receiver.metadata.name);
session.receiver.on('progress', function (recvd, total) {
log('Received from '+session.peerID+': ' + recvd + '/' + total);
});
session.on('receivedFile', function (session, file, metadata) {
log('Received file', metadata.name, metadata.size);
var downloadURL = URL.createObjectURL(file);
log('<a href="'+downloadURL+' download="'+metadata.name+'">Download '+metadata.name+' (' + metadata.size + ')</a>');
});
session.accept();
});
dragDrop(document.querySelector('body'), function (files) {
files.forEach(function (file) {
log('Offering:', file.name, file.size, file.type, file.lastModifiedDate);
offeredFiles.push(file);
peers.forEach(function (peer) {
var session = client.jingle.createFileTransferSession(peer);
session.sender.on('progress', function (sent, total) {
log('Sent to ' + peer + ': ' + sent + '/' + total);
});
session.start(file);
});
});
});
log('Starting...');
client.connect();
require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({b8vtvi:[function(require,module,exports){(function(doc){log=function(){};main();var coordinateSystemForElementFromPoint;function main(){coordinateSystemForElementFromPoint=navigator.userAgent.match(/OS 5(?:_\d+)+ like Mac/)?"client":"page";var div=doc.createElement("div");dragDiv="draggable"in div;evts="ondragstart"in div&&"ondrop"in div;var needsPatch=!(dragDiv||evts)||/iPad|iPhone|iPod/.test(navigator.userAgent);log((needsPatch?"":"not ")+"patching html5 drag drop");if(false&&!needsPatch)return;doc.addEventListener("touchstart",touchstart)}function DragDrop(event,el){this.touchPositions={};this.dragData={};this.el=el||event.target;event.preventDefault();log("dragstart");this.dispatchDragStart();this.elTranslation=readTransform(this.el);this.listen()}DragDrop.prototype={listen:function(){var move=onEvt(doc,"touchmove",this.move,this);var end=onEvt(doc,"touchend",ontouchend,this);var cancel=onEvt(doc,"touchcancel",cleanup,this);function ontouchend(event){this.dragend(event,event.target);cleanup()}function cleanup(){log("cleanup");this.touchPositions={};this.el=this.dragData=null;return[move,end,cancel].forEach(function(handler){return handler.off()})}},move:function(event){var deltas={x:[],y:[]};[].forEach.call(event.changedTouches,function(touch,index){var lastPosition=this.touchPositions[index];if(lastPosition){deltas.x.push(touch.pageX-lastPosition.x);deltas.y.push(touch.pageY-lastPosition.y)}else{this.touchPositions[index]=lastPosition={}}lastPosition.x=touch.pageX;lastPosition.y=touch.pageY}.bind(this));this.elTranslation.x+=average(deltas.x);this.elTranslation.y+=average(deltas.y);this.el.style["-webkit-transform"]="translate("+this.elTranslation.x+"px,"+this.elTranslation.y+"px)"},dragend:function(event){log("dragend");var target=elementFromTouchEvent(this.el,event);if(target){log("found drop target "+target.tagName);this.dispatchDrop()}else{log("no drop target, scheduling snapBack");once(doc,"dragend",this.snapBack,this)}var dragendEvt=doc.createEvent("Event");dragendEvt.initEvent("dragend",true,true);this.el.dispatchEvent(dragendEvt)},dispatchDrop:function(){var snapBack=true;var dropEvt=doc.createEvent("Event");dropEvt.initEvent("drop",true,true);dropEvt.dataTransfer={getData:function(type){return this.dragData[type]}.bind(this)};dropEvt.preventDefault=function(){snapBack=false;this.el.style["-webkit-transform"]="translate(0,0)"}.bind(this);once(doc,"drop",function(){log("drop event not canceled");if(snapBack)this.snapBack()},this);target.dispatchEvent(dropEvt)},snapBack:function(){once(this.el,"webkitTransitionEnd",function(){this.el.style["-webkit-transition"]="none"},this);setTimeout(function(){this.el.style["-webkit-transition"]="all 0.2s";this.el.style["-webkit-transform"]="translate(0,0)"}.bind(this))},dispatchDragStart:function(){var evt=doc.createEvent("Event");evt.initEvent("dragstart",true,true);evt.dataTransfer={setData:function(type,val){return this.dragData[type]=val}.bind(this),dropEffect:"move"};this.el.dispatchEvent(evt)}};function touchstart(evt){var el=evt.target;do{if(el.hasAttribute("draggable")){evt.preventDefault();new DragDrop(evt,el)}}while((el=el.parentNode)&&el!=doc.body)}function elementFromTouchEvent(el,event){var parent=el.parentElement;var next=el.nextSibling;parent.removeChild(el);var touch=event.changedTouches[0];target=doc.elementFromPoint(touch[coordinateSystemForElementFromPoint+"X"],touch[coordinateSystemForElementFromPoint+"Y"]);if(next){parent.insertBefore(el,next)}else{parent.appendChild(el)}return target}function readTransform(el){var transform=el.style["-webkit-transform"];var x=0;var y=0;var match=/translate\(\s*(\d+)[^,]*,\D*(\d+)/.exec(transform);if(match){x=parseInt(match[1],10);y=parseInt(match[2],10)}return{x:x,y:y}}function onEvt(el,event,handler,context){if(context)handler=handler.bind(context);el.addEventListener(event,handler);return{off:function(){return el.removeEventListener(event,handler)}}}function once(el,event,handler,context){if(context)handler=handler.bind(context);function listener(evt){handler(evt);return el.removeEventListener(event,listener)}return el.addEventListener(event,listener)}function log(msg){console.log(msg)}function average(arr){if(arr.length===0)return 0;return arr.reduce(function(s,v){return v+s},0)/arr.length}})(document)},{}],"drag-drop-webkit-mobile":[function(require,module,exports){module.exports=require("b8vtvi")},{}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({H8Bnai:[function(require,module,exports){"use strict";exports.VERSION="7.0.6";exports.JID=require("xmpp-jid").JID;exports.Client=require("./lib/client");exports.createClient=function(opts){var client=new exports.Client(opts);client.use(require("./lib/plugins"));return client}},{"./lib/client":3,"./lib/plugins":26,"xmpp-jid":347}],"stanza.io":[function(require,module,exports){module.exports=require("H8Bnai")},{}],3:[function(require,module,exports){"use strict";var _=require("underscore");var jxt=require("jxt");var WildEmitter=require("wildemitter");var util=require("util");var BPromise=require("bluebird");var uuid=require("node-uuid");var JID=require("xmpp-jid").JID;var StreamManagement=require("./sm");var getHostMeta=require("hostmeta");var SASLFactory=require("saslmechanisms");var SASL_MECHS={external:require("sasl-external"),"scram-sha-1":require("sasl-scram-sha-1"),"digest-md5":require("alt-sasl-digest-md5"),plain:require("sasl-plain"),anonymous:require("sasl-anonymous")};function Client(opts){var self=this;WildEmitter.call(this);opts=opts||{};this._initConfig(opts);this.stanzas=jxt.getGlobalJXT();this.jid=new JID;this.stanzas=jxt.createRegistry();this.stanzas.use(require("jxt-xmpp-types"));this.stanzas.use(require("./stanza/message"));this.stanzas.use(require("./stanza/presence"));this.stanzas.use(require("./stanza/iq"));this.stanzas.use(require("./stanza/error"));this.stanzas.use(require("./stanza/streamError"));this.use(require("./plugins/features"));this.use(require("./plugins/sasl"));this.use(require("./plugins/smacks"));this.use(require("./plugins/bind"));this.use(require("./plugins/session"));this.sm=new StreamManagement(this);this.transports={};this.use(require("./plugins/websocket"));this.use(require("./plugins/oldwebsocket"));this.use(require("./plugins/bosh"));this.on("stream:data",function(data){var json=data.toJSON();if(data._name==="iq"){json._xmlChildCount=0;_.each(data.xml.childNodes,function(child){if(child.nodeType===1){json._xmlChildCount+=1}})}self.emit(data._eventname||data._name,json);if(data._name==="message"||data._name==="presence"||data._name==="iq"){self.sm.handle(json);self.emit("stanza",json)}else if(data._name==="smAck"){return self.sm.process(json)}else if(data._name==="smRequest"){return self.sm.ack()}if(json.id){self.emit("id:"+json.id,json);self.emit(data._name+":id:"+json.id,json)}});this.on("disconnected",function(){if(self.transport){self.transport.off("*");delete self.transport}self.releaseGroup("connection")});this.on("iq",function(iq){var iqType=iq.type;var xmlChildCount=iq._xmlChildCount;delete iq._xmlChildCount;var exts=Object.keys(iq);if(iq.type==="get"||iq.type==="set"){if(xmlChildCount!==1){return self.sendIq(iq.errorReply({error:{type:"modify",condition:"bad-request"}}))}if(!exts.length){return self.sendIq(iq.errorReply({error:{type:"cancel",condition:"feature-not-implemented"}}))}var iqEvent="iq:"+iqType+":"+exts[0];if(self.callbacks[iqEvent]){self.emit(iqEvent,iq)}else{self.sendIq(iq.errorReply({error:{type:"cancel",condition:"feature-not-implemented"}}))}}});this.on("message",function(msg){if(Object.keys(msg.$body||{}).length){if(msg.type==="chat"||msg.type==="normal"){self.emit("chat",msg)}else if(msg.type==="groupchat"){self.emit("groupchat",msg)}}if(msg.type==="error"){self.emit("message:error",msg)}});this.on("presence",function(pres){var presType=pres.type||"available";if(presType==="error"){presType="presence:error"}self.emit(presType,pres)})}util.inherits(Client,WildEmitter);Object.defineProperty(Client.prototype,"stream",{get:function(){return this.transport?this.transport.stream:undefined}});Client.prototype._initConfig=function(opts){var self=this;var currConfig=this.config||{};this.config=_.extend({useStreamManagement:true,transports:["websocket","bosh"],sasl:["external","scram-sha-1","digest-md5","plain","anonymous"]},currConfig,opts);if(!_.isArray(this.config.sasl)){this.config.sasl=[this.config.sasl]}this.SASLFactory=new SASLFactory;this.config.sasl.forEach(function(mech){if(typeof mech==="string"){var existingMech=SASL_MECHS[mech.toLowerCase()];if(existingMech){self.SASLFactory.use(existingMech)}}else{self.SASLFactory.use(mech)}});this.config.jid=new JID(this.config.jid);if(!this.config.server){this.config.server=this.config.jid.domain}if(this.config.password){this.config.credentials=this.config.credentials||{};this.config.credentials.password=this.config.password;delete this.config.password}if(this.config.transport){this.config.transports=[this.config.transport]}if(!_.isArray(this.config.transports)){this.config.transports=[this.config.transports]}};Client.prototype.use=function(pluginInit){pluginInit(this,this.stanzas,this.config)};Client.prototype.nextId=function(){return uuid.v4()};Client.prototype.discoverBindings=function(server,cb){getHostMeta(server,function(err,data){if(err){return cb(err,[])}var results={websocket:[],bosh:[]};var links=data.links||[];links.forEach(function(link){if(link.href&&link.rel==="urn:xmpp:alt-connections:websocket"){results.websocket.push(link.href)}if(link.href&&link.rel==="urn:xmpp:altconnect:websocket"){results.websocket.push(link.href)}if(link.href&&link.rel==="urn:xmpp:alt-connections:xbosh"){results.bosh.push(link.href)}if(link.href&&link.rel==="urn:xmpp:altconnect:bosh"){results.bosh.push(link.href)}});cb(false,results)})};Client.prototype.getCredentials=function(){var creds=this.config.credentials||{};var requestedJID=new JID(this.config.jid);var username=creds.username||requestedJID.local;var server=creds.server||requestedJID.domain;var defaultCreds={username:username,password:this.config.password,server:server,host:server,realm:server,serviceType:"xmpp",serviceName:server};var result=_.extend(defaultCreds,creds);return result};Client.prototype.connect=function(opts,transInfo){var self=this;this._initConfig(opts);if(transInfo&&transInfo.name&&transInfo.url){var trans=self.transport=new self.transports[transInfo.name](self.sm,self.stanzas);trans.on("*",function(event,data){self.emit(event,data)});return trans.connect(self.config)}if(!transInfo&&self.config.transports.length===1){transInfo={};transInfo.name=self.config.transports[0];if(transInfo.name==="websocket"||transInfo.name==="old-websocket"){transInfo.url=self.config.wsURL}if(transInfo.name==="bosh"){transInfo.url=self.config.boshURL}if(transInfo.name&&transInfo.url){return self.connect(null,transInfo)}}return self.discoverBindings(self.config.server,function(err,endpoints){if(err){console.error("Could not find https://"+self.config.server+"/.well-known/host-meta file to discover connection endpoints for the requested transports.");return self.disconnect()}for(var t=0,tlen=self.config.transports.length;t<tlen;t++){var transport=self.config.transports[t];console.log("Checking for %s endpoints",transport);for(var i=0,len=(endpoints[transport]||[]).length;i<len;i++){var uri=endpoints[transport][i];if(uri.indexOf("wss://")===0||uri.indexOf("https://")===0){if(transport==="websocket"){self.config.wsURL=uri}else{self.config.boshURL=uri}console.log("Using %s endpoint: %s",transport,uri);return self.connect(null,{name:transport,url:uri})}else{console.warn("Discovered unencrypted %s endpoint (%s). Ignoring",transport,uri)}}}console.error("No endpoints found for the requested transports.");return self.disconnect()})};Client.prototype.disconnect=function(){if(this.sessionStarted){this.releaseGroup("session");if(!this.sm.started){this.emit("session:end")}}this.sessionStarted=false;this.releaseGroup("connection");if(this.transport){this.transport.disconnect()}else{this.emit("disconnected")}};Client.prototype.send=function(data){this.sm.track(data);if(this.transport){this.transport.send(data)}};Client.prototype.sendMessage=function(data){data=data||{};if(!data.id){data.id=this.nextId()}var Message=this.stanzas.getMessage();var msg=new Message(data);this.emit("message:sent",msg.toJSON());this.send(msg);return data.id};Client.prototype.sendPresence=function(data){data=data||{};if(!data.id){data.id=this.nextId()}var Presence=this.stanzas.getPresence();this.send(new Presence(data));return data.id};Client.prototype.sendIq=function(data,cb){var result,respEvent,allowed,dest;var self=this;data=data||{};if(!data.id){data.id=this.nextId()}var Iq=this.stanzas.getIq();var iq=!data.toJSON?new Iq(data):data;if(data.type==="error"||data.type==="result"){this.send(iq);return}dest=new JID(data.to);allowed={};allowed[""]=true;allowed[dest.full]=true;allowed[dest.bare]=true;allowed[dest.domain]=true;allowed[self.jid.bare]=true;allowed[self.jid.domain]=true;respEvent="iq:id:"+data.id;result=new BPromise(function(resolve,reject){var handler=function(res){if(!allowed[res.from.full]){return}if(res.type!=="result"&&res.type!=="error"){return}self.off(respEvent,handler);if(!res.error){resolve(res)}else{reject(res)}};self.on(respEvent,"session",handler)});this.send(iq);return result.timeout(self.config.timeout*1e3||15e3).catch(BPromise.TimeoutError,function(){throw{id:data.id,type:"error",error:{condition:"timeout"}}}).nodeify(cb)};Client.prototype.sendStreamError=function(data){data=data||{};var StreamError=this.stanzas.getStreamError();var error=new StreamError(data);this.emit("stream:error",error.toJSON());this.send(error);this.disconnect()};module.exports=Client},{"./plugins/bind":6,"./plugins/bosh":10,"./plugins/features":21,"./plugins/oldwebsocket":37,"./plugins/sasl":48,"./plugins/session":49,"./plugins/smacks":51,"./plugins/websocket":55,"./sm":56,"./stanza/error":70,"./stanza/iq":79,"./stanza/message":85,"./stanza/presence":91,"./stanza/streamError":109,"alt-sasl-digest-md5":118,bluebird:123,hostmeta:157,jxt:321,"jxt-xmpp-types":320,"node-uuid":332,"sasl-anonymous":334,"sasl-external":336,"sasl-plain":338,"sasl-scram-sha-1":339,saslmechanisms:344,underscore:345,util:372,wildemitter:346,"xmpp-jid":347}],4:[function(require,module,exports){"use strict";module.exports=function(client){client.disco.addFeature("urn:xmpp:attention:0");client.getAttention=function(jid,opts){opts=opts||{};opts.to=jid;opts.type="headline";opts.attention=true;client.sendMessage(opts)};client.on("message",function(msg){if(msg.attention){client.emit("attention",msg)}})}},{}],5:[function(require,module,exports){"use strict";module.exports=function(client,stanzas){stanzas.use(require("../stanza/avatar"));client.disco.addFeature("urn:xmpp:avatar:metadata+notify");client.on("pubsub:event",function(msg){if(!msg.event.updated){return}if(msg.event.updated.node!=="urn:xmpp:avatar:metadata"){return}client.emit("avatar",{jid:msg.from,source:"pubsub",avatars:msg.event.updated.published[0].avatars})});client.on("presence",function(pres){if(pres.avatarId){client.emit("avatar",{jid:pres.from,source:"vcard",avatars:[{id:pres.avatarId}]})}});client.publishAvatar=function(id,data,cb){return this.publish("","urn:xmpp:avatar:data",{id:id,avatarData:data},cb)};client.useAvatars=function(info,cb){return this.publish("","urn:xmpp:avatar:metadata",{id:"current",avatars:info},cb)};client.getAvatar=function(jid,id,cb){return this.getItem(jid,"urn:xmpp:avatar:data",id,cb)}}},{"../stanza/avatar":57}],6:[function(require,module,exports){"use strict";var JID=require("xmpp-jid").JID;module.exports=function(client,stanzas,config){stanzas.use(require("../stanza/bind"));client.registerFeature("bind",300,function(features,cb){var self=this;self.sendIq({type:"set",bind:{resource:config.resource}},function(err,resp){if(err){self.emit("session:error",err);return cb("disconnect","JID binding failed")}self.features.negotiated.bind=true;self.jid=new JID(resp.bind.jid);self.emit("session:bound",self.jid);var canStartSession=!features.session||features.session&&features.session.optional;if(!self.sessionStarted&&canStartSession){self.sessionStarted=true;self.emit("session:started",self.jid)}return cb()})});client.on("disconnected",function(){client.sessionStarted=false;client.features.negotiated.bind=false})}},{"../stanza/bind":58,"xmpp-jid":347}],7:[function(require,module,exports){"use strict";module.exports=function(client,stanzas){stanzas.use(require("../stanza/blocking"));client.disco.addFeature("urn:xmpp:blocking");client.block=function(jid,cb){return client.sendIq({type:"set",block:{jids:[jid]}},cb)};client.unblock=function(jid,cb){return client.sendIq({type:"set",unblock:{jids:[jid]}},cb)};client.getBlocked=function(cb){return client.sendIq({type:"get",blockList:true},cb)};client.on("iq:set:block",function(iq){client.emit("block",{jids:iq.block.jids||[]});client.sendIq(iq.resultReply())});client.on("iq:set:unblock",function(iq){client.emit("unblock",{jids:iq.unblock.jids||[]});client.sendIq(iq.resultReply())})}},{"../stanza/blocking":59}],8:[function(require,module,exports){"use strict";module.exports=function(client,stanzas){stanzas.use(require("../stanza/bob"));client.disco.addFeature("urn:xmpp:bob");client.getBits=function(jid,cid,cb){return client.sendIq({to:jid,type:"get",bob:{cid:cid}},cb)}}},{"../stanza/bob":60}],9:[function(require,module,exports){"use strict";var _=require("underscore");var JID=require("xmpp-jid").JID;module.exports=function(client,stanzas){stanzas.use(require("../stanza/bookmarks"));client.getBookmarks=function(cb){return this.getPrivateData({bookmarks:true},cb)};client.setBookmarks=function(opts,cb){return this.setPrivateData({bookmarks:opts},cb)};client.addBookmark=function(bookmark,cb){bookmark.jid=new JID(bookmark.jid);return this.getBookmarks().then(function(res){var bookmarks=res.privateStorage.bookmarks.conferences||[];var existing=_.filter(bookmarks,function(bm){return bm.jid.bare===bookmark.jid.bare});if(existing.length){_.extend(existing[0],bookmark)}else{bookmarks.push(bookmark)}return client.setBookmarks({conferences:bookmarks})}).nodeify(cb)};client.removeBookmark=function(jid,cb){jid=new JID(jid);return this.getBookmarks().then(function(res){var bookmarks=res.privateStorage.bookmarks.conferences||[];bookmarks=_.filter(bookmarks,function(bm){return jid.bare!==bm.jid.bare});return client.setBookmarks({conferences:bookmarks})}).nodeify(cb)}}},{"../stanza/bookmarks":61,underscore:345,"xmpp-jid":347}],10:[function(require,module,exports){"use strict";var BOSHConnection=require("../transports/bosh");module.exports=function(client,stanzas){stanzas.use(require("../stanza/bosh"));client.transports.bosh=BOSHConnection}},{"../stanza/bosh":62,"../transports/bosh":115}],11:[function(require,module,exports){"use strict";module.exports=function(client,stanzas){stanzas.use(require("../stanza/carbons"));client.disco.addFeature("urn:xmpp:carbons:2");client.enableCarbons=function(cb){return this.sendIq({type:"set",enableCarbons:true},cb)};client.disableCarbons=function(cb){return this.sendIq({type:"set",disableCarbons:true},cb)};client.on("message",function(msg){if(msg.carbonSent){return client.emit("carbon:sent",msg)}if(msg.carbonReceived){return client.emit("carbon:received",msg)}});client.on("carbon:*",function(name,carbon){var dir=name.split(":")[1];if(carbon.from.bare!==client.jid.bare){return}var msg,delay;if(dir==="received"){msg=carbon.carbonReceived.forwarded.message;delay=carbon.carbonReceived.forwarded.delay}else{msg=carbon.carbonSent.forwarded.message;delay=carbon.carbonSent.forwarded.delay}if(!msg.delay){if(delay){msg.delay.stamp=delay.stamp}else{msg.delay={stamp:new Date(Date.now())}}}msg.carbon=true;if(msg.from.bare===client.jid.bare){client.emit("message:sent",msg)}else{client.emit("message",msg)}})}},{"../stanza/carbons":64}],12:[function(require,module,exports){"use strict";module.exports=function(client){client.disco.addFeature("http://jabber.org/protocol/chatstates");client.on("message",function(msg){if(msg.chatState){client.emit("chat:state",{to:msg.to,from:msg.from,chatState:msg.chatState});client.emit("chatState",{to:msg.to,from:msg.from,chatState:msg.chatState})}})}},{}],13:[function(require,module,exports){"use strict";var NS="http://jabber.org/protocol/commands";module.exports=function(client,stanzas){stanzas.use(require("../stanza/command"));client.disco.addFeature(NS);client.disco.addItem({name:"Ad-Hoc Commands",node:NS});client.getCommands=function(jid,cb){return client.getDiscoItems(jid,NS,cb)}}},{"../stanza/command":65}],14:[function(require,module,exports){"use strict";module.exports=function(client){client.disco.addFeature("urn:xmpp:message-correct:0");client.on("message",function(msg){if(msg.replace){client.emit("replace",msg);client.emit("replace:"+msg.id,msg)}})}},{}],15:[function(require,module,exports){"use strict";module.exports=function(client,stanzas){stanzas.use(require("../stanza/csi"));var Active=stanzas.getDefinition("active","urn:xmpp:csi");var Inactive=stanzas.getDefinition("inactive","urn:xmpp:csi");client.registerFeature("clientStateIndication",400,function(features,cb){this.features.negotiated.clientStateIndication=true;cb()});client.markActive=function(){if(this.features.negotiated.clientStateIndication){this.send(new Active)}};client.markInactive=function(){if(this.features.negotiated.clientStateIndication){this.send(new Inactive)}}}},{"../stanza/csi":66}],16:[function(require,module,exports){"use strict";module.exports=function(client,stanzas){stanzas.use(require("../stanza/dataforms"));client.disco.addFeature("jabber:x:data");client.disco.addFeature("urn:xmpp:media-element");client.disco.addFeature("http://jabber.org/protocol/xdata-validate");client.disco.addFeature("http://jabber.org/protocol/xdata-layout");client.on("message",function(msg){if(msg.form){client.emit("dataform",msg)}})}},{"../stanza/dataforms":67}],17:[function(require,module,exports){"use strict";module.exports=function(client,stanzas){stanzas.use(require("../stanza/delayed"));client.disco.addFeature("urn:xmpp:delay")}},{"../stanza/delayed":68}],18:[function(require,module,exports){(function(Buffer){"use strict";var _=require("underscore");var JID=require("xmpp-jid").JID;var hashes=require("iana-hashes");function generateVerString(info,hash){var S="";var features=info.features.sort();var identities=[];var formTypes={};var formOrder=[];_.forEach(info.identities,function(identity){identities.push([identity.category||"",identity.type||"",identity.lang||"",identity.name||""].join("/"))});identities.sort();var idLen=identities.length;var featureLen=features.length;identities=_.unique(identities,true);features=_.unique(features,true);if(featureLen!==features.length||idLen!==identities.length){return false}S+=identities.join("<")+"<";S+=features.join("<")+"<";var illFormed=false;_.forEach(info.extensions,function(ext){var fields=ext.fields;for(var i=0,len=fields.length;i<len;i++){if(fields[i].name==="FORM_TYPE"&&fields[i].type==="hidden"){var name=fields[i].value;if(formTypes[name]){illFormed=true;return}formTypes[name]=ext;formOrder.push(name);return}}});if(illFormed){return false}formOrder.sort();_.forEach(formOrder,function(name){var ext=formTypes[name];var fields={};var fieldOrder=[];S+="<"+name;_.forEach(ext.fields,function(field){var fieldName=field.name;if(fieldName!=="FORM_TYPE"){var values=field.value||"";if(typeof values!=="object"){values=values.split("\n")}fields[fieldName]=values.sort();fieldOrder.push(fieldName)}});fieldOrder.sort();_.forEach(fieldOrder,function(fieldName){S+="<"+fieldName;_.forEach(fields[fieldName],function(val){S+="<"+val})})});var ver=hashes.createHash(hash).update(new Buffer(S,"utf8")).digest("base64");var padding=4-ver.length%4;if(padding===4){padding=0}for(var i=0;i<padding;i++){ver+="="}return ver}function verifyVerString(info,hash,check){var computed=generateVerString(info,hash);return computed&&computed===check}function Disco(){this.features={};this.identities={};this.extensions={};this.items={};this.caps={}}Disco.prototype={constructor:{value:Disco},addFeature:function(feature,node){node=node||"";if(!this.features[node]){this.features[node]=[]}this.features[node].push(feature)},addIdentity:function(identity,node){node=node||"";if(!this.identities[node]){this.identities[node]=[]}this.identities[node].push(identity)},addItem:function(item,node){node=node||"";if(!this.items[node]){this.items[node]=[]}this.items[node].push(item)},addExtension:function(form,node){node=node||"";if(!this.extensions[node]){this.extensions[node]=[]}this.extensions[node].push(form)}};module.exports=function(client,stanzas){stanzas.use(require("../stanza/disco"));stanzas.use(require("../stanza/caps"));stanzas.use(require("../stanza/rsm"));client.disco=new Disco(client);client.disco.addFeature("http://jabber.org/protocol/disco#info");client.disco.addFeature("http://jabber.org/protocol/disco#items");client.disco.addIdentity({category:"client",type:"web"});client.registerFeature("caps",100,function(features,cb){this.emit("disco:caps",{from:new JID(this.jid.domain),caps:features.caps});this.features.negotiated.caps=true;cb()});client.getDiscoInfo=function(jid,node,cb){return this.sendIq({to:jid,type:"get",discoInfo:{node:node}},cb)};client.getDiscoItems=function(jid,node,cb){return this.sendIq({to:jid,type:"get",discoItems:{node:node}},cb)};client.updateCaps=function(){var node=this.config.capsNode||"https://stanza.io";var data=JSON.parse(JSON.stringify({identities:this.disco.identities[""],features:this.disco.features[""],extensions:this.disco.extensions[""]}));var ver=generateVerString(data,"sha-1");this.disco.caps={node:node,hash:"sha-1",ver:ver};node=node+"#"+ver;this.disco.features[node]=data.features;this.disco.identities[node]=data.identities;this.disco.extensions[node]=data.extensions;return client.getCurrentCaps()};client.getCurrentCaps=function(){var caps=client.disco.caps;if(!caps.ver){return{ver:null,discoInfo:null}}var node=caps.node+"#"+caps.ver;return{ver:caps.ver,discoInfo:{identities:client.disco.identities[node],features:client.disco.features[node],extensions:client.disco.extensions[node]}}};client.on("presence",function(pres){if(pres.caps){client.emit("disco:caps",pres)}});client.on("iq:get:discoInfo",function(iq){var node=iq.discoInfo.node||"";var reportedNode=iq.discoInfo.node||"";if(node===client.disco.caps.node+"#"+client.disco.caps.ver){reportedNode=node;node=""}client.sendIq(iq.resultReply({discoInfo:{node:reportedNode,identities:client.disco.identities[node]||[],features:client.disco.features[node]||[],extensions:client.disco.extensions[node]||[]}}))});client.on("iq:get:discoItems",function(iq){var node=iq.discoItems.node;client.sendIq(iq.resultReply({discoItems:{node:node,items:client.disco.items[node]||[]}}))});client.verifyVerString=verifyVerString;client.generateVerString=generateVerString;client.updateCaps()}}).call(this,require("buffer").Buffer)},{"../stanza/caps":63,"../stanza/disco":69,"../stanza/rsm":101,buffer:350,"iana-hashes":160,underscore:345,"xmpp-jid":347}],19:[function(require,module,exports){"use strict";module.exports=function(client){client.disco.addFeature("jid\\20escaping")}},{}],20:[function(require,module,exports){"use strict";module.exports=function(client,stanzas){stanzas.use(require("../stanza/extdisco"));client.disco.addFeature("urn:xmpp:extdisco:1");client.getServices=function(jid,type,cb){return this.sendIq({type:"get",to:jid,services:{type:type}},cb)};client.getServiceCredentials=function(jid,host,cb){return this.sendIq({type:"get",to:jid,credentials:{service:{host:host}}},cb)}}},{"../stanza/extdisco":71}],21:[function(require,module,exports){"use strict";var async=require("async");module.exports=function(client,stanzas){stanzas.use(require("../stanza/streamFeatures"));client.features={negotiated:{},order:[],handlers:{}};client.registerFeature=function(name,priority,handler){this.features.order.push({priority:priority,name:name});this.features.order.sort(function(a,b){if(a.priority<b.priority){return-1}if(a.priority>b.priority){return 1}return 0});this.features.handlers[name]=handler.bind(client)};client.on("streamFeatures",function(features){var series=[];var negotiated=client.features.negotiated;var handlers=client.features.handlers;client.features.order.forEach(function(feature){var name=feature.name;if(features[name]&&handlers[name]&&!negotiated[name]){series.push(function(cb){if(!negotiated[name]){handlers[name](features,cb)}else{cb()}})}});async.series(series,function(cmd,msg){if(cmd==="restart"){client.transport.restart()}else if(cmd==="disconnect"){client.emit("stream:error",{condition:"policy-violation",text:"Failed to negotiate stream features: "+msg});client.disconnect()}})})}},{"../stanza/streamFeatures":110,async:119}],22:[function(require,module,exports){"use strict";module.exports=function(client,stanzas){stanzas.use(require("../stanza/forwarded"));client.disco.addFeature("urn:xmpp:forward:0")}},{"../stanza/forwarded":73}],23:[function(require,module,exports){"use strict";module.exports=function(client,stanzas){stanzas.use(require("../stanza/geoloc"));client.disco.addFeature("http://jabber.org/protocol/geoloc");client.disco.addFeature("http://jabber.org/protocol/geoloc+notify");client.on("pubsub:event",function(msg){if(!msg.event.updated){return}if(msg.event.updated.node!=="http://jabber.org/protocol/geoloc"){return}client.emit("geoloc",{jid:msg.from,geoloc:msg.event.updated.published[0].geoloc})});client.publishGeoLoc=function(data,cb){return this.publish("","http://jabber.org/protocol/geoloc",{geoloc:data},cb)}}},{"../stanza/geoloc":75}],24:[function(require,module,exports){"use strict";var hashes=require("iana-hashes");module.exports=function(client,stanzas){stanzas.use(require("../stanza/hash"));client.disco.addFeature("urn:xmpp:hashes:1");var names=hashes.getHashes();names.forEach(function(name){client.disco.addFeature("urn:xmpp:hash-function-text-names:"+name)})}},{"../stanza/hash":76,"iana-hashes":160}],25:[function(require,module,exports){"use strict";module.exports=function(client){client.disco.addFeature("urn:xmpp:idle:1")}},{}],26:[function(require,module,exports){"use strict";module.exports=function(client){client.use(require("./disco"));client.use(require("./attention"));client.use(require("./avatar"));client.use(require("./blocking"));client.use(require("./bob"));client.use(require("./bookmarks"));client.use(require("./carbons"));client.use(require("./chatstates"));client.use(require("./command"));client.use(require("./correction"));client.use(require("./csi"));client.use(require("./dataforms"));client.use(require("./delayed"));client.use(require("./escaping"));client.use(require("./extdisco"));client.use(require("./forwarding"));client.use(require("./geoloc"));client.use(require("./hashes"));client.use(require("./idle"));client.use(require("./invisible"));client.use(require("./jidprep"));client.use(require("./jingle"));client.use(require("./json"));client.use(require("./keepalive"));client.use(require("./logging"));client.use(require("./mam"));client.use(require("./muc"));client.use(require("./mood"));client.use(require("./nick"));client.use(require("./oob"));
client.use(require("./ping"));client.use(require("./private"));client.use(require("./psa"));client.use(require("./pubsub"));client.use(require("./reach"));client.use(require("./receipts"));client.use(require("./register"));client.use(require("./roster"));client.use(require("./rtt"));client.use(require("./shim"));client.use(require("./time"));client.use(require("./vcard"));client.use(require("./version"))}},{"./attention":4,"./avatar":5,"./blocking":7,"./bob":8,"./bookmarks":9,"./carbons":11,"./chatstates":12,"./command":13,"./correction":14,"./csi":15,"./dataforms":16,"./delayed":17,"./disco":18,"./escaping":19,"./extdisco":20,"./forwarding":22,"./geoloc":23,"./hashes":24,"./idle":25,"./invisible":27,"./jidprep":28,"./jingle":29,"./json":30,"./keepalive":31,"./logging":32,"./mam":33,"./mood":34,"./muc":35,"./nick":36,"./oob":38,"./ping":39,"./private":40,"./psa":41,"./pubsub":42,"./reach":43,"./receipts":44,"./register":45,"./roster":46,"./rtt":47,"./shim":50,"./time":52,"./vcard":53,"./version":54}],27:[function(require,module,exports){"use strict";module.exports=function(client,stanzas){stanzas.use(require("../stanza/visibility"));client.goInvisible=function(cb){return this.sendIq({type:"set",invisible:true},cb)};client.goVisible=function(cb){return this.sendIq({type:"set",visible:true},cb)}}},{"../stanza/visibility":114}],28:[function(require,module,exports){"use strict";module.exports=function(client,stanzas){stanzas.use(require("../stanza/jidprep"));client.prepJID=function(jid,cb){return client.sendIq({to:client.jid.domain,type:"get",jidPrep:jid},cb)}}},{"../stanza/jidprep":80}],29:[function(require,module,exports){"use strict";var Jingle=require("jingle");module.exports=function(client,stanzas){stanzas.use(require("../stanza/jingle"));stanzas.use(require("../stanza/rtp"));stanzas.use(require("../stanza/iceUdp"));stanzas.use(require("../stanza/file"));var jingle=client.jingle=new Jingle;jingle.capabilities.forEach(function(cap){client.disco.addFeature(cap)});var mappedEvents=["outgoing","incoming","accepted","terminated","ringing","mute","unmute","hold","resumed"];mappedEvents.forEach(function(event){jingle.on(event,function(session,arg1){client.emit("jingle:"+event,session,arg1)})});jingle.on("createdSession",function(session){client.emit("jingle:created",session)});jingle.on("peerStreamAdded",function(session,stream){client.emit("jingle:remotestream:added",session,stream)});jingle.on("peerStreamRemoved",function(session,stream){client.emit("jingle:remotestream:removed",session,stream)});jingle.on("send",function(data){client.sendIq(data,function(err){if(err){client.emit("jingle:error",err)}})});client.on("session:bound",function(jid){jingle.jid=jid;jingle.selfID=jid.full});client.on("iq:set:jingle",function(data){jingle.process(data)});client.on("unavailable",function(pres){var peer=pres.from.full;jingle.endPeerSessions(peer,true)});client.discoverICEServers=function(cb){return this.getServices(client.config.server).then(function(res){var services=res.services.services;var discovered=[];for(var i=0;i<services.length;i++){var service=services[i];var ice={};if(service.type==="stun"||service.type==="stuns"){ice.url=service.type+":"+service.host;if(service.port){ice.url+=":"+service.port}discovered.push(ice);client.jingle.addICEServer(ice)}else if(service.type==="turn"||service.type==="turns"){ice.url=service.type+":"+service.host;if(service.port){ice.url+=":"+service.port}if(service.transport&&service.transport!=="udp"){ice.url+="?transport="+service.transport}if(service.username){ice.username=service.username}if(service.password){ice.credential=service.password}discovered.push(ice);client.jingle.addICEServer(ice)}}return discovered}).nodeify(cb)}}},{"../stanza/file":72,"../stanza/iceUdp":78,"../stanza/jingle":81,"../stanza/rtp":102,jingle:300}],30:[function(require,module,exports){"use strict";module.exports=function(client,stanzas){stanzas.use(require("../stanza/json"));client.disco.addFeature("urn:xmpp:json:0")}},{"../stanza/json":82}],31:[function(require,module,exports){"use strict";var BPromise=require("bluebird");function checkConnection(client,timeout){return new BPromise(function(resolve,reject){if(client.sm.started){client.once("stream:management:ack",resolve);client.sm.request()}else{client.ping().then(resolve).catch(function(err){if(err.error&&err.error.condition!=="timeout"){resolve()}else{reject()}})}}).timeout(timeout*1e3||15e3)}module.exports=function(client){client.enableKeepAlive=function(opts){opts=opts||{};opts.interval=opts.interval||300;opts.timeout=opts.timeout||15;function keepalive(){if(client.sessionStarted){checkConnection(client,opts.timeout).catch(function(){client.sendStreamError({condition:"connection-timeout"})})}}client._keepAliveInterval=setInterval(keepalive,opts.interval*1e3)};client.disableKeepAlive=function(){if(client._keepAliveInterval){clearInterval(client._keepAliveInterval);delete client._keepAliveInterval}};client.on("disconnected",function(){client.disableKeepAlive()})}},{bluebird:123}],32:[function(require,module,exports){"use strict";module.exports=function(client,stanzas){stanzas.use(require("../stanza/logging"));client.disco.addFeature("","urn:xmpp:eventlog");client.sendLog=function(jid,logData){client.sendMessage({to:jid,type:"normal",log:logData})}}},{"../stanza/logging":83}],33:[function(require,module,exports){"use strict";var BPromise=require("bluebird");var JID=require("xmpp-jid").JID;module.exports=function(client,stanzas){stanzas.use(require("../stanza/mam"));client.disco.addFeature("urn:xmpp:mam:0");client.getHistorySearchForm=function(jid,cb){return client.sendIq({to:jid,type:"get",mam:true},cb)};client.searchHistory=function(opts,cb){var self=this;var queryid=this.nextId();opts=opts||{};opts.queryid=queryid;var to=opts.jid||opts.to||"";delete opts.jid;delete opts.to;if(!opts.form){opts.form={}}opts.form.type="submit";var fields=opts.form.fields=opts.form.fields||[];var defaultFields=["FORM_TYPE","with","start","end"];defaultFields.forEach(function(name){if(opts[name]||name==="FORM_TYPE"){var val=opts[name];var isDate=name==="start"||name==="end";if(isDate&&typeof val!=="string"){val=val.toISOString()}if(name==="FORM_TYPE"){val="urn:xmpp:mam:0"}var existing=false;for(var i=0,len=fields.length;i<len;i++){if(fields[i].name===name){continue}}if(!existing){fields.push({name:name,value:val})}delete opts[name]}});var dest=new JID(to||client.jid.bare);var allowed={};allowed[""]=true;allowed[dest.full]=true;allowed[dest.bare]=true;allowed[dest.domain]=true;allowed[client.jid.bare]=true;allowed[client.jid.domain]=true;var results=[];this.on("mam:item:"+queryid,"session",function(msg){if(!allowed[msg.from.full]){return}results.push(msg.mamItem)});var collectResults=new BPromise(function(resolve){self.once("mam:result:"+queryid,"session",function(msg){if(!allowed[msg.from.full]){return}msg.mamResult.items=results;resolve(msg)})});var mamQuery=this.sendIq({type:"set",to:to,id:queryid,mam:opts});return BPromise.all([mamQuery,collectResults]).spread(function(iqRes,mamRes){return mamRes}).timeout(self.config.timeout*1e3||15e3).catch(BPromise.TimeoutError,function(){throw{id:queryid,type:"error",error:{condition:"timeout"}}}).finally(function(){self.off("mam:item:"+queryid);self.off("mam:result:"+queryid)}).nodeify(cb)};client.getHistoryPreferences=function(cb){return this.sendIq({type:"get",mamPrefs:true},cb)};client.setHistoryPreferences=function(opts,cb){return this.sendIq({type:"set",mamPrefs:opts},cb)};client.on("message",function(msg){if(msg.mamItem){client.emit("mam:item:"+msg.mamItem.queryid,msg)}if(msg.mamResult){client.emit("mam:result:"+msg.mamResult.queryid,msg)}})}},{"../stanza/mam":84,bluebird:123,"xmpp-jid":347}],34:[function(require,module,exports){"use strict";var NS="http://jabber.org/protocol/mood";module.exports=function(client,stanzas){stanzas.use(require("../stanza/mood"));client.disco.addFeature(NS);client.disco.addFeature(NS+"+notify");client.on("pubsub:event",function(msg){if(!msg.event.updated){return}if(msg.event.updated.node!==NS){return}client.emit("mood",{jid:msg.from,mood:msg.event.updated.published[0].mood})});client.publishMood=function(mood,text,cb){return this.publish("",NS,{mood:{value:mood,text:text}},cb)}}},{"../stanza/mood":86}],35:[function(require,module,exports){"use strict";var _=require("underscore");var JID=require("xmpp-jid").JID;module.exports=function(client,stanzas){stanzas.use(require("../stanza/muc"));stanzas.use(require("../stanza/hats"));client.disco.addFeature("http://jabber.org/protocol/muc");client.disco.addFeature("jabber:x:conference");client.disco.addFeature("urn:xmpp:hats:0");client.joinedRooms={};function rejoinRooms(){_.each(client.joinedRooms,function(nick,room){client.joinedRooms[room]=false;client.joinRoom(room,nick)})}client.on("session:started",rejoinRooms);client.on("stream:management:resumed",rejoinRooms);client.on("message",function(msg){if(msg.muc){if(msg.muc.invite){client.emit("muc:invite",{from:msg.muc.invite.from,room:msg.from,reason:msg.muc.invite.reason,password:msg.muc.password,thread:msg.muc.invite.thread,type:"mediated"})}if(msg.muc.destroyed){client.emit("muc:destroyed",{room:msg.from,newRoom:msg.muc.destroyed.jid,reason:msg.muc.destroyed.reason,password:msg.muc.password})}if(msg.muc.decline){client.emit("muc:declined",{room:msg.from,from:msg.muc.decline.from,reason:msg.muc.decline.reason})}}else if(msg.mucInvite){client.emit("muc:invite",{from:msg.from,room:msg.mucInvite.jid,reason:msg.mucInvite.reason,password:msg.mucInvite.password,thread:msg.mucInvite.thread,type:"direct"})}if(msg.type==="groupchat"&&msg.subject){client.emit("muc:subject",msg)}});client.on("presence",function(pres){if(pres.joinMuc&&pres.type==="error"){client.emit("muc:error",pres)}else if(pres.muc){var isSelf=pres.muc.codes&&pres.muc.codes.indexOf("110")>=0;if(pres.type==="error"){client.emit("muc:error",pres)}else if(pres.type==="unavailable"){client.emit("muc:unavailable",pres);if(isSelf){client.emit("muc:leave",pres);delete client.joinedRooms[pres.from.bare]}}else{client.emit("muc:available",pres);if(isSelf&&!client.joinedRooms[pres.from.bare]){client.emit("muc:join",pres);client.joinedRooms[pres.from.bare]=pres.from.resource}}}});client.joinRoom=function(room,nick,opts){opts=opts||{};opts.to=room+"/"+nick;opts.caps=this.disco.caps;opts.joinMuc=opts.joinMuc||{};this.sendPresence(opts)};client.leaveRoom=function(room,nick,opts){opts=opts||{};opts.to=room+"/"+nick;opts.type="unavailable";this.sendPresence(opts)};client.ban=function(room,jid,reason,cb){client.setRoomAffiliation(room,jid,"outcast",reason,cb)};client.kick=function(room,nick,reason,cb){client.setRoomRole(room,nick,"none",reason,cb)};client.invite=function(room,opts){client.sendMessage({to:room,muc:{invites:opts}})};client.directInvite=function(room,opts){opts.jid=room;client.sendMessage({to:opts.to,mucInvite:opts})};client.declineInvite=function(room,sender,reason){client.sendMessage({to:room,muc:{decline:{to:sender,reason:reason}}})};client.changeNick=function(room,nick){client.sendPresence({to:new JID(room).bare+"/"+nick})};client.setSubject=function(room,subject){client.sendMessage({to:room,type:"groupchat",subject:subject})};client.discoverReservedNick=function(room,cb){client.getDiscoInfo(room,"x-roomuser-item",function(err,res){if(err){return cb(err)}var ident=res.discoInfo.identities[0]||{};cb(null,ident.name)})};client.requestRoomVoice=function(room){client.sendMessage({to:room,form:{fields:[{name:"FORM_TYPE",value:"http://jabber.org/protocol/muc#request"},{name:"muc#role",type:"text-single",value:"participant"}]}})};client.setRoomAffiliation=function(room,jid,affiliation,reason,cb){return this.sendIq({type:"set",to:room,mucAdmin:{jid:jid,affiliation:affiliation,reason:reason}},cb)};client.setRoomRole=function(room,nick,role,reason,cb){return this.sendIq({type:"set",to:room,mucAdmin:{nick:nick,role:role,reason:reason}},cb)};client.getRoomMembers=function(room,opts,cb){return this.sendIq({type:"get",to:room,mucAdmin:opts},cb)};client.getRoomConfig=function(jid,cb){return this.sendIq({to:jid,type:"get",mucOwner:true},cb)};client.configureRoom=function(jid,form,cb){if(!form.type){form.type="submit"}return this.sendIq({to:jid,type:"set",mucOwner:{form:form}},cb)};client.getUniqueRoomName=function(jid,cb){return this.sendIq({type:"get",to:jid,mucUnique:true},cb)}}},{"../stanza/hats":77,"../stanza/muc":87,underscore:345,"xmpp-jid":347}],36:[function(require,module,exports){"use strict";var NS="http://jabber.org/protocol/nick";module.exports=function(client,stanzas){stanzas.use(require("../stanza/nick"));client.disco.addFeature(NS);client.disco.addFeature(NS+"+notify");client.on("pubsub:event",function(msg){if(!msg.event.updated){return}if(msg.event.updated.node!==NS){return}client.emit("nick",{jid:msg.from,nick:msg.event.updated.published[0].nick})});client.publishNick=function(nick,cb){return this.publish("",NS,{nick:nick},cb)}}},{"../stanza/nick":88}],37:[function(require,module,exports){"use strict";var OldWSConnection=require("../transports/old-websocket");module.exports=function(client,stanzas){stanzas.use(require("../stanza/stream"));client.transports["old-websocket"]=OldWSConnection}},{"../stanza/stream":108,"../transports/old-websocket":116}],38:[function(require,module,exports){"use strict";module.exports=function(client,stanzas){stanzas.use(require("../stanza/oob"));client.disco.addFeature("jabber:x:oob")}},{"../stanza/oob":89}],39:[function(require,module,exports){"use strict";module.exports=function(client,stanzas){stanzas.use(require("../stanza/ping"));client.disco.addFeature("urn:xmpp:ping");client.on("iq:get:ping",function(iq){client.sendIq(iq.resultReply())});client.ping=function(jid,cb){return this.sendIq({to:jid,type:"get",ping:true},cb)}}},{"../stanza/ping":90}],40:[function(require,module,exports){"use strict";module.exports=function(client,stanzas){stanzas.use(require("../stanza/private"));client.getPrivateData=function(opts,cb){return this.sendIq({type:"get",privateStorage:opts},cb)};client.setPrivateData=function(opts,cb){return this.sendIq({type:"set",privateStorage:opts},cb)}}},{"../stanza/private":92}],41:[function(require,module,exports){"use strict";module.exports=function(client,stanzas){stanzas.use(require("../stanza/psa"));client.disco.addFeature("urn:xmpp:psa")}},{"../stanza/psa":93}],42:[function(require,module,exports){"use strict";module.exports=function(client,stanzas){stanzas.use(require("../stanza/pubsub"));stanzas.use(require("../stanza/pubsubOwner"));stanzas.use(require("../stanza/pubsubEvents"));stanzas.use(require("../stanza/pubsubError"));client.on("message",function(msg){if(msg.event){client.emit("pubsub:event",msg);client.emit("pubsubEvent",msg);if(msg.event.updated){var published=msg.event.updated.published;var retracted=msg.event.updated.retracted;if(published&&published.length){client.emit("pubsub:published",msg)}if(retracted&&retracted.length){client.emit("pubsub:retracted",msg)}}if(msg.event.purged){client.emit("pubsub:purged",msg)}if(msg.event.deleted){client.emit("pubsub:deleted",msg)}if(msg.event.subscriptionChanged){client.emit("pubsub:subscription",msg)}if(msg.event.configurationChanged){client.emit("pubsub:config",msg)}}if(msg.pubsub&&msg.pubsub.affiliations){client.emit("pubsub:affiliation",msg)}});client.subscribeToNode=function(jid,opts,cb){if(typeof opts==="string"){opts={node:opts}}opts.jid=opts.jid||client.jid;return this.sendIq({type:"set",to:jid,pubsub:{subscribe:opts}},cb)};client.unsubscribeFromNode=function(jid,opts,cb){if(typeof opts==="string"){opts={node:opts}}opts.jid=opts.jid||client.jid.bare;return this.sendIq({type:"set",to:jid,pubsub:{unsubscribe:opts}},cb)};client.publish=function(jid,node,item,cb){return this.sendIq({type:"set",to:jid,pubsub:{publish:{node:node,item:item}}},cb)};client.getItem=function(jid,node,id,cb){return this.sendIq({type:"get",to:jid,pubsub:{retrieve:{node:node,item:id}}},cb)};client.getItems=function(jid,node,opts,cb){opts=opts||{};opts.node=node;return this.sendIq({type:"get",to:jid,pubsub:{retrieve:{node:node,max:opts.max},rsm:opts.rsm}},cb)};client.retract=function(jid,node,id,notify,cb){return this.sendIq({type:"set",to:jid,pubsub:{retract:{node:node,notify:notify,id:id}}},cb)};client.purgeNode=function(jid,node,cb){return this.sendIq({type:"set",to:jid,pubsubOwner:{purge:node}},cb)};client.deleteNode=function(jid,node,cb){return this.sendIq({type:"set",to:jid,pubsubOwner:{del:node}},cb)};client.createNode=function(jid,node,config,cb){var cmd={type:"set",to:jid,pubsubOwner:{create:node}};if(config){cmd.pubsubOwner.config={form:config}}return this.sendIq(cmd,cb)};client.getSubscriptions=function(jid,opts,cb){opts=opts||{};return this.sendIq({type:"get",to:jid,pubsub:{subscriptions:opts}},cb)};client.getAffiliations=function(jid,opts,cb){opts=opts||{};return this.sendIq({type:"get",to:jid,pubsub:{affiliations:opts}},cb)};client.getNodeSubscribers=function(jid,node,opts,cb){opts=opts||{};opts.node=node;return this.sendIq({type:"get",to:jid,pubsubOwner:{subscriptions:opts}},cb)};client.updateNodeSubscriptions=function(jid,node,delta,cb){return this.sendIq({type:"set",to:jid,pubsubOwner:{subscriptions:{node:node,list:delta}}},cb)};client.getNodeAffiliations=function(jid,node,opts,cb){opts=opts||{};opts.node=node;return this.sendIq({type:"get",to:jid,pubsubOwner:{affiliations:opts}},cb)};client.updateNodeAffiliations=function(jid,node,delta,cb){return this.sendIq({type:"set",to:jid,pubsubOwner:{affiliations:{node:node,list:delta}}},cb)}}},{"../stanza/pubsub":94,"../stanza/pubsubError":95,"../stanza/pubsubEvents":96,"../stanza/pubsubOwner":97}],43:[function(require,module,exports){"use strict";module.exports=function(client,stanzas){stanzas.use(require("../stanza/reach"));client.disco.addFeature("urn:xmpp:reach:0");client.disco.addFeature("urn:xmpp:reach:0+notify");client.on("pubsub:event",function(msg){if(!msg.event.updated){return}if(msg.event.updated.node!=="urn:xmpp:reach:0"){return}client.emit("reachability",{jid:msg.from,addresses:msg.event.updated.published[0].reach})});client.on("presence",function(pres){if(!pres.reach||!pres.reach.length){return}client.emit("reachability",{jid:pres.from,addresses:pres.reach})});client.publishReachability=function(data,cb){return this.publish("","urn:xmpp:reach:0",{reach:data},cb)}}},{"../stanza/reach":98}],44:[function(require,module,exports){"use strict";module.exports=function(client){client.disco.addFeature("urn:xmpp:receipts");client.on("message",function(msg){var ackTypes={normal:true,chat:true,headline:true};if(ackTypes[msg.type]&&msg.requestReceipt&&!msg.receipt){client.sendMessage({to:msg.from,receipt:msg.id,id:msg.id})}if(msg.receipt){client.emit("receipt",msg);client.emit("receipt:"+msg.receipt)}})}},{}],45:[function(require,module,exports){"use strict";module.exports=function(client,stanzas){stanzas.use(require("../stanza/register"));client.getAccountInfo=function(jid,cb){return this.sendIq({type:"get",to:jid,register:true},cb)};client.updateAccount=function(jid,data,cb){return this.sendIq({type:"set",to:jid,register:data},cb)};client.deleteAccount=function(jid,cb){return this.sendIq({type:"set",to:jid,register:{remove:true}},cb)}}},{"../stanza/register":99}],46:[function(require,module,exports){"use strict";module.exports=function(client,stanzas){stanzas.use(require("../stanza/roster"));client.on("iq:set:roster",function(iq){var allowed={};allowed[""]=true;allowed[client.jid.bare]=true;allowed[client.jid.domain]=true;if(!allowed[iq.from.full]){return client.sendIq(iq.errorReply({error:{type:"cancel",condition:"service-unavailable"}}))}client.emit("roster:update",iq);client.sendIq({id:iq.id,type:"result"})});client.getRoster=function(cb){var self=this;cb=cb||function(){};return client.sendIq({type:"get",roster:{ver:self.config.rosterVer}}).then(function(resp){if(resp.roster){var ver=resp.roster.ver;if(ver){self.config.rosterVer=ver;self.emit("roster:ver",ver)}}return resp}).nodeify(cb)};client.updateRosterItem=function(item,cb){return client.sendIq({type:"set",roster:{items:[item]}},cb)};client.removeRosterItem=function(jid,cb){return client.updateRosterItem({jid:jid,subscription:"remove"},cb)};client.subscribe=function(jid){client.sendPresence({type:"subscribe",to:jid})};client.unsubscribe=function(jid){client.sendPresence({type:"unsubscribe",to:jid})};client.acceptSubscription=function(jid){client.sendPresence({type:"subscribed",to:jid})};client.denySubscription=function(jid){client.sendPresence({type:"unsubscribed",to:jid})}}},{"../stanza/roster":100}],47:[function(require,module,exports){"use strict";module.exports=function(client,stanzas){stanzas.use(require("../stanza/rtt"));client.disco.addFeature("urn:xmpp:rtt:0");client.on("message",function(msg){if(msg.rtt){client.emit("rtt",msg);client.emit("rtt:"+msg.rtt.event,msg)}})}},{"../stanza/rtt":103}],48:[function(require,module,exports){(function(Buffer){"use strict";var NS="urn:ietf:params:xml:ns:xmpp-sasl";module.exports=function(client,stanzas){stanzas.use(require("../stanza/sasl"));var Auth=stanzas.getDefinition("auth",NS);var Response=stanzas.getDefinition("response",NS);client.registerFeature("sasl",100,function(features,cb){var self=this;var mech=self.SASLFactory.create(features.sasl.mechanisms);if(!mech){self.releaseGroup("sasl");self.emit("auth:failed");return cb("disconnect","authentication failed")}self.on("sasl:success","sasl",function(){self.features.negotiated.sasl=true;self.releaseGroup("sasl");self.emit("auth:success",self.config.credentials);cb("restart")});self.on("sasl:challenge","sasl",function(challenge){mech.challenge(challenge.value);self.send(new Response({value:mech.response(self.getCredentials())}));if(mech.cache){Object.keys(mech.cache).forEach(function(key){if(!mech.cache[key]){return}self.config.credentials[key]=new Buffer(mech.cache[key])});self.emit("credentials:update",self.config.credentials)}});self.on("sasl:failure","sasl",function(){self.releaseGroup("sasl");self.emit("auth:failed");cb("disconnect","authentication failed")});self.on("sasl:abort","sasl",function(){self.releaseGroup("sasl");self.emit("auth:failed");cb("disconnect","authentication failed")});var auth={mechanism:mech.name};if(mech.clientFirst){auth.value=mech.response(self.getCredentials())}self.send(new Auth(auth))});client.on("disconnected",function(){client.features.negotiated.sasl=false})}}).call(this,require("buffer").Buffer)},{"../stanza/sasl":104,buffer:350}],49:[function(require,module,exports){"use strict";module.exports=function(client,stanzas){stanzas.use(require("../stanza/session"));client.registerFeature("session",1e3,function(features,cb){var self=this;if(features.session.optional||self.sessionStarted){self.features.negotiated.session=true;return cb()}self.sendIq({type:"set",session:{}},function(err){if(err){return cb("disconnect","session request failed")}self.features.negotiated.session=true;if(!self.sessionStarted){self.sessionStarted=true;self.emit("session:started",self.jid)}cb()})});client.on("disconnected",function(){client.sessionStarted=false;client.features.negotiated.session=false})}},{"../stanza/session":105}],50:[function(require,module,exports){"use strict";var NS="http://jabber.org/protocol/shim";module.exports=function(client,stanzas){stanzas.use(require("../stanza/shim"));client.disco.addFeature(NS);client.disco.addFeature(NS+"#SubID",NS)}},{"../stanza/shim":106}],51:[function(require,module,exports){"use strict";module.exports=function(client,stanzas,config){stanzas.use(require("../stanza/sm"));var smacks=function(features,cb){var self=this;if(!config.useStreamManagement){return cb()}self.on("stream:management:enabled","sm",function(enabled){self.sm.enabled(enabled);self.features.negotiated.streamManagement=true;self.releaseGroup("sm");cb()});self.on("stream:management:resumed","sm",function(resumed){self.sm.resumed(resumed);self.features.negotiated.streamManagement=true;self.features.negotiated.bind=true;self.sessionStarted=true;self.releaseGroup("sm");cb("break")});self.on("stream:management:failed","sm",function(){self.sm.failed();self.emit("session:end");self.releaseGroup("session");self.releaseGroup("sm");cb()});if(!self.sm.id){if(self.features.negotiated.bind){self.sm.enable()}else{cb()}}else if(self.sm.id&&self.sm.allowResume){self.sm.resume()}else{cb()}};client.on("disconnected",function(){client.features.negotiated.streamManagement=false});client.registerFeature("streamManagement",200,smacks);client.registerFeature("streamManagement",500,smacks)}},{"../stanza/sm":107}],52:[function(require,module,exports){"use strict";module.exports=function(client,stanzas){stanzas.use(require("../stanza/time"));client.disco.addFeature("urn:xmpp:time");client.getTime=function(jid,cb){return this.sendIq({to:jid,type:"get",time:true},cb)};client.on("iq:get:time",function(iq){var time=new Date;client.sendIq(iq.resultReply({time:{utc:time,tzo:time.getTimezoneOffset()}}))})}},{"../stanza/time":111}],53:[function(require,module,exports){"use strict";module.exports=function(client,stanzas){stanzas.use(require("../stanza/vcard"));client.disco.addFeature("vcard-temp");client.getVCard=function(jid,cb){return this.sendIq({to:jid,type:"get",vCardTemp:true},cb)};client.publishVCard=function(vcard,cb){return this.sendIq({type:"set",vCardTemp:vcard},cb)}}},{"../stanza/vcard":112}],54:[function(require,module,exports){"use strict";module.exports=function(client,stanzas){stanzas.use(require("../stanza/version"));client.disco.addFeature("jabber:iq:version");client.on("iq:get:version",function(iq){client.sendIq(iq.resultReply({version:client.config.softwareVersion||{name:"stanza.io"}}))});client.getSoftwareVersion=function(jid,cb){return this.sendIq({to:jid,type:"get",version:true},cb)}}},{"../stanza/version":113}],55:[function(require,module,exports){"use strict";var WSConnection=require("../transports/websocket");module.exports=function(client,stanzas){stanzas.use(require("../stanza/framing"));client.transports.websocket=WSConnection}},{"../stanza/framing":74,"../transports/websocket":117}],56:[function(require,module,exports){"use strict";var MAX_SEQ=Math.pow(2,32);function mod(v,n){return(v%n+n)%n}function StreamManagement(client){this.client=client;this.id=false;this.allowResume=true;this.started=false;this.inboundStarted=false;this.outboundStarted=false;this.lastAck=0;this.handled=0;this.windowSize=1;this.unacked=[];this.pendingAck=false;var NS="urn:xmpp:sm:3";this.stanzas={Enable:client.stanzas.getDefinition("enable",NS),Resume:client.stanzas.getDefinition("resume",NS),Ack:client.stanzas.getDefinition("a",NS),Request:client.stanzas.getDefinition("r",NS)}}StreamManagement.prototype={constructor:{value:StreamManagement},enable:function(){var enable=new this.stanzas.Enable;enable.resume=this.allowResume;this.client.send(enable);this.handled=0;this.outboundStarted=true},resume:function(){var resume=new this.stanzas.Resume({h:this.handled,previd:this.id});this.client.send(resume);this.outboundStarted=true},enabled:function(resp){this.id=resp.id;this.handled=0;this.inboundStarted=true},resumed:function(resp){this.id=resp.previd;if(resp.h){this.process(resp,true)}this.inboundStarted=true},failed:function(){this.inboundStarted=false;this.outboundStarted=false;this.id=false;this.lastAck=0;this.handled=0;this.unacked=[]},ack:function(){this.client.send(new this.stanzas.Ack({h:this.handled}))},request:function(){this.pendingAck=true;this.client.send(new this.stanzas.Request)},process:function(ack,resend){var self=this;var numAcked=mod(ack.h-this.lastAck,MAX_SEQ);this.pendingAck=false;for(var i=0;i<numAcked&&this.unacked.length>0;i++){this.client.emit("stanza:acked",this.unacked.shift())}this.lastAck=ack.h;if(resend){var resendUnacked=this.unacked;this.unacked=[];resendUnacked.forEach(function(stanza){self.client.send(stanza)})}if(this.needAck()){this.request()}},track:function(stanza){var name=stanza._name;var acceptable={message:true,presence:true,iq:true};if(this.outboundStarted&&acceptable[name]){this.unacked.push(stanza);if(this.needAck()){this.request()}}},handle:function(){if(this.inboundStarted){this.handled=mod(this.handled+1,MAX_SEQ)}},needAck:function(){return!this.pendingAck&&this.unacked.length>=this.windowSize}};Object.defineProperties(StreamManagement.prototype,{started:{get:function(){return this.outboundStarted&&this.inboundStarted},set:function(value){if(!value){this.outboundStarted=false;this.inboundStarted=false}}}});module.exports=StreamManagement},{}],57:[function(require,module,exports){"use strict";var _=require("underscore");module.exports=function(stanza){var types=stanza.utils;var Avatar=stanza.define({name:"avatar",namespace:"urn:xmpp:avatar:metadata",element:"info",fields:{id:types.attribute("id"),bytes:types.attribute("bytes"),height:types.attribute("height"),width:types.attribute("width"),type:types.attribute("type","image/png"),url:types.attribute("url")}});var avatars={get:function(){var metadata=types.find(this.xml,"urn:xmpp:avatar:metadata","metadata");var results=[];if(metadata.length){var avatars=types.find(metadata[0],"urn:xmpp:avatar:metadata","info");_.forEach(avatars,function(info){results.push(new Avatar({},info))})}return results},set:function(value){var metadata=types.findOrCreate(this.xml,"urn:xmpp:avatar:metadata","metadata");types.setAttribute(metadata,"xmlns","urn:xmpp:avatar:metadata");_.forEach(value,function(info){var avatar=new Avatar(info);metadata.appendChild(avatar.xml)})}};stanza.withPubsubItem(function(Item){stanza.add(Item,"avatars",avatars);stanza.add(Item,"avatarData",types.textSub("urn:xmpp:avatar:data","data"))})}},{underscore:345}],58:[function(require,module,exports){"use strict";var NS="urn:ietf:params:xml:ns:xmpp-bind";module.exports=function(stanza){var types=stanza.utils;var Bind=stanza.define({name:"bind",namespace:NS,element:"bind",fields:{resource:types.textSub(NS,"resource"),jid:types.jidSub(NS,"jid")}});stanza.withIq(function(Iq){stanza.extend(Iq,Bind)});stanza.withStreamFeatures(function(StreamFeatures){stanza.extend(StreamFeatures,Bind)})}},{}],59:[function(require,module,exports){"use strict";var JID=require("xmpp-jid").JID;var NS="urn:xmpp:blocking";module.exports=function(stanza){var types=stanza.utils;var jids={get:function(){var result=[];var items=types.find(this.xml,NS,"item");if(!items.length){return result}items.forEach(function(item){result.push(new JID(types.getAttribute(item,"jid","")))});return result},set:function(values){var self=this;values.forEach(function(value){var item=types.createElement(NS,"item",NS);types.setAttribute(item,"jid",value.toString());self.xml.appendChild(item)})}};var Block=stanza.define({name:"block",namespace:NS,element:"block",fields:{jids:jids}});var Unblock=stanza.define({name:"unblock",namespace:NS,element:"unblock",fields:{jids:jids}});var BlockList=stanza.define({name:"blockList",namespace:NS,element:"blocklist",fields:{jids:jids}});stanza.withIq(function(Iq){stanza.extend(Iq,Block);stanza.extend(Iq,Unblock);stanza.extend(Iq,BlockList)})}},{"xmpp-jid":347}],60:[function(require,module,exports){"use strict";var NS="urn:xmpp:bob";module.exports=function(stanza){var types=stanza.utils;var BOB=stanza.define({name:"bob",namespace:NS,element:"data",fields:{cid:types.attribute("cid"),maxAge:types.numberAttribute("max-age"),type:types.attribute("type"),data:types.text()}});stanza.withIq(function(Iq){stanza.extend(Iq,BOB)});stanza.withMessage(function(Message){stanza.extend(Message,BOB)});stanza.withPresence(function(Presence){stanza.extend(Presence,BOB)})}},{}],61:[function(require,module,exports){"use strict";module.exports=function(stanza){var types=stanza.utils;var Conference=stanza.define({name:"_conference",namespace:"storage:bookmarks",element:"conference",fields:{name:types.attribute("name"),autoJoin:types.boolAttribute("autojoin"),jid:types.jidAttribute("jid"),nick:types.textSub("storage:bookmarks","nick")}});var Bookmarks=stanza.define({name:"bookmarks",namespace:"storage:bookmarks",element:"storage"});
stanza.extend(Bookmarks,Conference,"conferences");stanza.withDefinition("query","jabber:iq:private",function(PrivateStorage){stanza.extend(PrivateStorage,Bookmarks)})}},{}],62:[function(require,module,exports){"use strict";var NS="http://jabber.org/protocol/httpbind";var XMPP_NS="urn:xmpp:xbosh";module.exports=function(stanza){var types=stanza.utils;stanza.define({name:"bosh",namespace:NS,element:"body",prefixes:{xmpp:XMPP_NS},fields:{accept:types.attribute("accept"),ack:types.numberAttribute("ack"),authid:types.attribute("authid"),charsets:types.attribute("charsets"),condition:types.attribute("condition"),content:types.attribute("content"),from:types.jidAttribute("from",true),hold:types.numberAttribute("hold"),inactivity:types.numberAttribute("inactivity"),key:types.attribute("key"),maxpause:types.numberAttribute("maxpause"),newKey:types.attribute("newkey"),pause:types.numberAttribute("pause"),polling:types.numberAttribute("polling"),resport:types.numberAttribute("report"),requests:types.numberAttribute("requests"),rid:types.numberAttribute("rid"),sid:types.attribute("sid"),stream:types.attribute("stream"),time:types.attribute("time"),to:types.jidAttribute("to",true),type:types.attribute("type"),ver:types.attribute("ver"),wait:types.numberAttribute("wait"),uri:types.textSub(NS,"uri"),lang:types.langAttribute(),version:types.attribute("xmpp:version","1.0"),restart:types.attribute("xmpp:restart"),restartLogic:types.boolAttribute("xmpp:restartLogic"),payload:{get:function(){var results=[];for(var i=0,len=this.xml.childNodes.length;i<len;i++){var obj=stanza.build(this.xml.childNodes[i]);if(obj!==undefined){results.push(obj)}}return results},set:function(values){var self=this;values.forEach(function(types){self.xml.appendChild(types.xml)})}}}})}},{}],63:[function(require,module,exports){"use strict";module.exports=function(stanza){var types=stanza.utils;var Caps=stanza.define({name:"caps",namespace:"http://jabber.org/protocol/caps",element:"c",fields:{ver:types.attribute("ver"),node:types.attribute("node"),hash:types.attribute("hash"),ext:types.attribute("ext")}});stanza.withPresence(function(Presence){stanza.extend(Presence,Caps)});stanza.withStreamFeatures(function(StreamFeatures){stanza.extend(StreamFeatures,Caps)})}},{}],64:[function(require,module,exports){"use strict";module.exports=function(stanza){var Sent=stanza.define({name:"carbonSent",eventName:"carbon:sent",namespace:"urn:xmpp:carbons:2",element:"sent"});var Received=stanza.define({name:"carbonReceived",eventName:"carbon:received",namespace:"urn:xmpp:carbons:2",element:"received"});var Private=stanza.define({name:"carbonPrivate",eventName:"carbon:private",namespace:"urn:xmpp:carbons:2",element:"private"});var Enable=stanza.define({name:"enableCarbons",namespace:"urn:xmpp:carbons:2",element:"enable"});var Disable=stanza.define({name:"disableCarbons",namespace:"urn:xmpp:carbons:2",element:"disable"});stanza.withDefinition("forwarded","urn:xmpp:forward:0",function(Forwarded){stanza.extend(Sent,Forwarded);stanza.extend(Received,Forwarded)});stanza.withMessage(function(Message){stanza.extend(Message,Sent);stanza.extend(Message,Received);stanza.extend(Message,Private)});stanza.withIq(function(Iq){stanza.extend(Iq,Enable);stanza.extend(Iq,Disable)})}},{}],65:[function(require,module,exports){"use strict";var NS="http://jabber.org/protocol/commands";var ACTIONS=["next","prev","complete","cancel"];var CONDITIONS=["bad-action","bad-locale","bad-payload","bad-sessionid","malformed-action","session-expired"];module.exports=function(stanza){var types=stanza.utils;var Command=stanza.define({name:"command",namespace:NS,element:"command",fields:{action:types.attribute("action"),node:types.attribute("node"),sessionid:types.attribute("sessionid"),status:types.attribute("status"),execute:types.subAttribute(NS,"actions","execute"),actions:{get:function(){var result=[];var actionSet=types.find(this.xml,NS,"actions");if(!actionSet.length){return[]}ACTIONS.forEach(function(action){var existing=types.find(actionSet[0],NS,action);if(existing.length){result.push(action)}});return result},set:function(values){var actionSet=types.findOrCreate(this.xml,NS,"actions");for(var i=0,len=actionSet.childNodes.length;i<len;i++){actionSet.removeChild(actionSet.childNodes[i])}values.forEach(function(value){actionSet.appendChild(types.createElement(NS,value.toLowerCase(),NS))})}}}});var Note=stanza.define({name:"_commandNote",namespace:NS,element:"note",fields:{type:types.attribute("type"),value:types.text()}});stanza.extend(Command,Note,"notes");stanza.withStanzaError(function(ErrorStanza){stanza.add(ErrorStanza,"adhocCommandCondition",types.enumSub(NS,CONDITIONS))});stanza.withDataForm(function(DataForm){stanza.extend(Command,DataForm)});stanza.withIq(function(Iq){stanza.extend(Iq,Command)})}},{}],66:[function(require,module,exports){"use strict";var NS="urn:xmpp:csi";module.exports=function(stanza){var CSIFeature=stanza.define({name:"clientStateIndication",namespace:NS,element:"csi"});stanza.define({name:"csiActive",eventName:"csi:active",namespace:NS,element:"active",topLevel:true});stanza.define({name:"csiInactive",eventName:"csi:inactive",namespace:NS,element:"inactive",topLevel:true});stanza.withStreamFeatures(function(StreamFeatures){stanza.extend(StreamFeatures,CSIFeature)})}},{}],67:[function(require,module,exports){"use strict";var JID=require("xmpp-jid").JID;var FORM_NS="jabber:x:data";var MEDIA_NS="urn:xmpp:media-element";var VALIDATE_NS="http://jabber.org/protocol/xdata-validate";var LAYOUT_NS="http://jabber.org/protocol/xdata-layout";var SINGLE_FIELDS=["text-single","text-private","list-single","jid-single"];module.exports=function(stanza){var types=stanza.utils;var Field=stanza.define({name:"_field",namespace:FORM_NS,element:"field",init:function(data){this._type=(data||{}).type||this.type},fields:{type:{get:function(){return types.getAttribute(this.xml,"type","text-single")},set:function(value){this._type=value;types.setAttribute(this.xml,"type",value)}},name:types.attribute("var"),desc:types.textSub(FORM_NS,"desc"),required:types.boolSub(FORM_NS,"required"),label:types.attribute("label"),value:{get:function(){var vals=types.getMultiSubText(this.xml,FORM_NS,"value");if(this._type==="boolean"){return vals[0]==="1"||vals[0]==="true"}if(vals.length>1){if(this._type==="text-multi"){return vals.join("\n")}if(this._type==="jid-multi"){return vals.map(function(jid){return new JID(jid)})}return vals}if(SINGLE_FIELDS.indexOf(this._type)>=0){if(this._type==="jid-single"){return new JID(vals[0])}return vals[0]}return vals},set:function(value){if(this._type==="boolean"){var truthy=value===true||value==="true"||value==="1";types.setSubText(this.xml,FORM_NS,"value",truthy?"1":"0")}else{if(this._type==="text-multi"&&typeof value==="string"){value=value.split("\n")}types.setMultiSubText(this.xml,FORM_NS,"value",value)}}}}});var Option=stanza.define({name:"_formoption",namespace:FORM_NS,element:"option",fields:{label:types.attribute("label"),value:types.textSub(FORM_NS,"value")}});var Item=stanza.define({name:"_formitem",namespace:FORM_NS,element:"item"});var Media=stanza.define({name:"media",element:"media",namespace:MEDIA_NS,fields:{height:types.numberAttribute("height"),width:types.numberAttribute("width")}});var MediaURI=stanza.define({name:"_mediaURI",element:"uri",namespace:MEDIA_NS,fields:{uri:types.text(),type:types.attribute("type")}});var Validation=stanza.define({name:"validation",element:"validate",namespace:VALIDATE_NS,fields:{dataType:types.attribute("datatype"),basic:types.boolSub(VALIDATE_NS,"basic"),open:types.boolSub(VALIDATE_NS,"open"),regex:types.textSub(VALIDATE_NS,"regex")}});var Range=stanza.define({name:"range",element:"range",namespace:VALIDATE_NS,fields:{min:types.attribute("min"),max:types.attribute("max")}});var ListRange=stanza.define({name:"select",element:"list-range",namespace:VALIDATE_NS,fields:{min:types.numberAttribute("min"),max:types.numberAttribute("max")}});var layoutContents={get:function(){var result=[];for(var i=0,len=this.xml.childNodes.length;i<len;i++){var child=this.xml.childNodes[i];if(child.namespaceURI!==LAYOUT_NS){continue}switch(child.localName){case"text":result.push({text:child.textContent});break;case"fieldref":result.push({field:child.getAttribute("var")});break;case"reportedref":result.push({reported:true});break;case"section":result.push({section:new Section(null,child,this).toJSON()});break}}return result},set:function(values){for(var i=0,len=values.length;i<len;i++){var value=values[i];if(value.text){var text=stanza.createElement(LAYOUT_NS,"text",LAYOUT_NS);text.textContent=value.text;this.xml.appendChild(text)}if(value.field){var field=stanza.createElement(LAYOUT_NS,"fieldref",LAYOUT_NS);field.setAttribute("var",value.field);this.xml.appendChild(field)}if(value.reported){this.xml.appendChild(stanza.createElement(LAYOUT_NS,"reportedref",LAYOUT_NS))}if(value.section){var sectionXML=stanza.createElement(LAYOUT_NS,"section",LAYOUT_NS);this.xml.appendChild(sectionXML);var section=new Section(null,sectionXML);section.label=value.section.label;section.contents=value.section.contents}}}};var Section=stanza.define({name:"_section",element:"section",namespace:LAYOUT_NS,fields:{label:types.attribute("label"),contents:layoutContents}});var Page=stanza.define({name:"_page",element:"page",namespace:LAYOUT_NS,fields:{label:types.attribute("label"),contents:layoutContents}});var DataForm=stanza.define({name:"form",namespace:FORM_NS,element:"x",init:function(){if(!this.reportedFields.length){return}var fieldTypes={};this.reportedFields.forEach(function(reported){fieldTypes[reported.name]=reported.type});this.items.forEach(function(item){item.fields.forEach(function(field){field.type=field._type=fieldTypes[field.name]})})},fields:{title:types.textSub(FORM_NS,"title"),instructions:types.multiTextSub(FORM_NS,"instructions"),type:types.attribute("type","form"),reportedFields:types.subMultiExtension(FORM_NS,"reported",Field)}});stanza.extend(DataForm,Field,"fields");stanza.extend(DataForm,Item,"items");stanza.extend(DataForm,Page,"layout");stanza.extend(Field,Media);stanza.extend(Field,Validation);stanza.extend(Field,Option,"options");stanza.extend(Item,Field,"fields");stanza.extend(Media,MediaURI,"uris");stanza.extend(Validation,Range);stanza.extend(Validation,ListRange);stanza.withMessage(function(Message){stanza.extend(Message,DataForm)})}},{"xmpp-jid":347}],68:[function(require,module,exports){"use strict";module.exports=function(stanza){var types=stanza.utils;var DelayedDelivery=stanza.define({name:"delay",namespace:"urn:xmpp:delay",element:"delay",fields:{from:types.jidAttribute("from"),stamp:types.dateAttribute("stamp"),reason:types.text()}});stanza.withMessage(function(Message){stanza.extend(Message,DelayedDelivery)});stanza.withPresence(function(Presence){stanza.extend(Presence,DelayedDelivery)})}},{}],69:[function(require,module,exports){"use strict";var NSInfo="http://jabber.org/protocol/disco#info";var NSItems="http://jabber.org/protocol/disco#items";module.exports=function(stanza){var types=stanza.utils;var DiscoInfo=stanza.define({name:"discoInfo",namespace:NSInfo,element:"query",fields:{node:types.attribute("node"),features:types.multiSubAttribute(NSInfo,"feature","var")}});var DiscoIdentity=stanza.define({name:"_discoIdentity",namespace:NSInfo,element:"identity",fields:{category:types.attribute("category"),type:types.attribute("type"),name:types.attribute("name"),lang:types.langAttribute()}});var DiscoItems=stanza.define({name:"discoItems",namespace:NSItems,element:"query",fields:{node:types.attribute("node")}});var DiscoItem=stanza.define({name:"_discoItem",namespace:NSItems,element:"item",fields:{jid:types.jidAttribute("jid"),node:types.attribute("node"),name:types.attribute("name")}});stanza.extend(DiscoItems,DiscoItem,"items");stanza.extend(DiscoInfo,DiscoIdentity,"identities");stanza.withIq(function(Iq){stanza.extend(Iq,DiscoInfo);stanza.extend(Iq,DiscoItems)});stanza.withDataForm(function(DataForm){stanza.extend(DiscoInfo,DataForm,"extensions")});stanza.withDefinition("set","http://jabber.org/protocol/rsm",function(RSM){stanza.extend(DiscoItems,RSM)})}},{}],70:[function(require,module,exports){"use strict";var ERR_NS="urn:ietf:params:xml:ns:xmpp-stanzas";var CONDITIONS=["bad-request","conflict","feature-not-implemented","forbidden","gone","internal-server-error","item-not-found","jid-malformed","not-acceptable","not-allowed","not-authorized","payment-required","recipient-unavailable","redirect","registration-required","remote-server-not-found","remote-server-timeout","resource-constraint","service-unavailable","subscription-required","undefined-condition","unexpected-request"];module.exports=function(stanza){var types=stanza.utils;var ErrorStanza=stanza.define({name:"error",namespace:"jabber:client",element:"error",fields:{lang:{get:function(){return(this.parent||{}).lang||""}},condition:types.enumSub(ERR_NS,CONDITIONS),gone:{get:function(){return types.getSubText(this.xml,ERR_NS,"gone")},set:function(value){this.condition="gone";types.setSubText(this.xml,ERR_NS,"gone",value)}},redirect:{get:function(){return types.getSubText(this.xml,ERR_NS,"redirect")},set:function(value){this.condition="redirect";types.setSubText(this.xml,ERR_NS,"redirect",value)}},code:types.attribute("code"),type:types.attribute("type"),by:types.jidAttribute("by"),$text:{get:function(){return types.getSubLangText(this.xml,ERR_NS,"text",this.lang)}},text:{get:function(){var text=this.$text;return text[this.lang]||""},set:function(value){types.setSubLangText(this.xml,ERR_NS,"text",value,this.lang)}}}});stanza.withMessage(function(Message){stanza.extend(Message,ErrorStanza)});stanza.withPresence(function(Presence){stanza.extend(Presence,ErrorStanza)});stanza.withIq(function(Iq){stanza.extend(Iq,ErrorStanza)})}},{}],71:[function(require,module,exports){"use strict";var NS="urn:xmpp:extdisco:1";module.exports=function(stanza){var types=stanza.utils;var Services=exports.Services=stanza.define({name:"services",namespace:NS,element:"services",fields:{type:types.attribute("type")}});var Credentials=exports.Credentials=stanza.define({name:"credentials",namespace:NS,element:"credentials"});var Service=stanza.define({name:"service",namespace:NS,element:"service",fields:{host:types.attribute("host"),port:types.attribute("port"),transport:types.attribute("transport"),type:types.attribute("type"),username:types.attribute("username"),password:types.attribute("password")}});stanza.extend(Services,Service,"services");stanza.extend(Credentials,Service);stanza.withDataForm(function(DataForm){stanza.extend(Service,DataForm)});stanza.withIq(function(Iq){stanza.extend(Iq,Services);stanza.extend(Iq,Credentials)})}},{}],72:[function(require,module,exports){"use strict";var NS="urn:xmpp:jingle:apps:file-transfer:3";var TB_NS="urn:xmpp:thumbs:0";module.exports=function(stanza){var types=stanza.utils;var File=stanza.define({name:"_file",namespace:NS,element:"file",fields:{name:types.textSub(NS,"name"),desc:types.textSub(NS,"desc"),size:types.numberSub(NS,"size"),date:types.dateSub(NS,"date")}});var Range=stanza.define({name:"range",namespace:NS,element:"range",fields:{offset:types.numberAttribute("offset")}});var Thumbnail=stanza.define({name:"thumbnail",namespace:TB_NS,element:"thumbnail",fields:{cid:types.attribute("cid"),mimeType:types.attribute("mime-type"),width:types.numberAttribute("width"),height:types.numberAttribute("height")}});var FileTransfer=stanza.define({name:"_filetransfer",namespace:NS,element:"description",tags:["jingle-description"],fields:{descType:{value:"filetransfer"},offer:types.subExtension("offer",NS,"offer",File),request:types.subExtension("request",NS,"request",File)}});stanza.extend(File,Range);stanza.extend(File,Thumbnail);stanza.withDefinition("hash","urn:xmpp:hashes:1",function(Hash){stanza.extend(File,Hash,"hashes")});stanza.withDefinition("content","urn:xmpp:jingle:1",function(Content){stanza.extend(Content,FileTransfer)})}},{}],73:[function(require,module,exports){"use strict";module.exports=function(stanza){var Forwarded=stanza.define({name:"forwarded",eventName:"forward",namespace:"urn:xmpp:forward:0",element:"forwarded"});stanza.withMessage(function(Message){stanza.extend(Message,Forwarded);stanza.extend(Forwarded,Message)});stanza.withPresence(function(Presence){stanza.extend(Forwarded,Presence)});stanza.withIq(function(Iq){stanza.extend(Forwarded,Iq)});stanza.withDefinition("delay","urn:xmpp:delay",function(Delayed){stanza.extend(Forwarded,Delayed)})}},{}],74:[function(require,module,exports){"use strict";var NS="urn:ietf:params:xml:ns:xmpp-framing";module.exports=function(stanza){var types=stanza.utils;stanza.define({name:"openStream",namespace:NS,element:"open",topLevel:true,fields:{lang:types.langAttribute(),id:types.attribute("id"),version:types.attribute("version","1.0"),to:types.jidAttribute("to",true),from:types.jidAttribute("from",true)}});stanza.define({name:"closeStream",namespace:NS,element:"close",topLevel:true,fields:{seeOtherURI:types.attribute("see-other-uri")}})}},{}],75:[function(require,module,exports){"use strict";var NS="http://jabber.org/protocol/geoloc";module.exports=function(stanza){var types=stanza.utils;var GeoLoc=stanza.define({name:"geoloc",namespace:NS,element:"geoloc",fields:{accuracy:types.numberSub(NS,"accuracy",true),altitude:types.numberSub(NS,"alt",true),area:types.textSub(NS,"area"),heading:types.numberSub(NS,"bearing",true),bearing:types.numberSub(NS,"bearing",true),building:types.textSub(NS,"building"),country:types.textSub(NS,"country"),countrycode:types.textSub(NS,"countrycode"),datum:types.textSub(NS,"datum"),description:types.textSub(NS,"description"),error:types.numberSub(NS,"error",true),floor:types.textSub(NS,"floor"),latitude:types.numberSub(NS,"lat",true),locality:types.textSub(NS,"locality"),longitude:types.numberSub(NS,"lon",true),postalcode:types.textSub(NS,"postalcode"),region:types.textSub(NS,"region"),room:types.textSub(NS,"room"),speed:types.numberSub(NS,"speed",true),street:types.textSub(NS,"street"),text:types.textSub(NS,"text"),timestamp:types.dateSub(NS,"timestamp"),tzo:types.tzoSub(NS,"tzo"),uri:types.textSub(NS,"uri")}});stanza.withPubsubItem(function(Item){stanza.extend(Item,GeoLoc)})}},{}],76:[function(require,module,exports){"use strict";module.exports=function(stanza){stanza.define({name:"hash",namespace:"urn:xmpp:hashes:1",element:"hash",fields:{algo:stanza.utils.attribute("algo"),value:stanza.utils.text()}})}},{}],77:[function(require,module,exports){"use strict";var NS="urn:xmpp:hats:0";module.exports=function(stanza){var types=stanza.utils;var Hat=stanza.define({name:"_hat",namespace:NS,element:"hat",fields:{lang:types.langAttribute(),name:types.attribute("name"),displayName:types.attribute("displayName")}});stanza.withPresence(function(Presence){stanza.add(Presence,"hats",types.subMultiExtension(NS,"hats",Hat))})}},{}],78:[function(require,module,exports){"use strict";var NS="urn:xmpp:jingle:transports:ice-udp:1";module.exports=function(stanza){var types=stanza.utils;var ICE=stanza.define({name:"_iceUdp",namespace:NS,element:"transport",tags:["jingle-transport"],fields:{transType:{value:"iceUdp"},pwd:types.attribute("pwd"),ufrag:types.attribute("ufrag")}});var RemoteCandidate=stanza.define({name:"remoteCandidate",namespace:NS,element:"remote-candidate",fields:{component:types.attribute("component"),ip:types.attribute("ip"),port:types.attribute("port")}});var Candidate=stanza.define({name:"_iceUdpCandidate",namespace:NS,element:"candidate",fields:{component:types.attribute("component"),foundation:types.attribute("foundation"),generation:types.attribute("generation"),id:types.attribute("id"),ip:types.attribute("ip"),network:types.attribute("network"),port:types.attribute("port"),priority:types.attribute("priority"),protocol:types.attribute("protocol"),relAddr:types.attribute("rel-addr"),relPort:types.attribute("rel-port"),tcpType:types.attribute("tcptype"),type:types.attribute("type")}});var Fingerprint=stanza.define({name:"_iceFingerprint",namespace:"urn:xmpp:jingle:apps:dtls:0",element:"fingerprint",fields:{hash:types.attribute("hash"),setup:types.attribute("setup"),value:types.text(),required:types.boolAttribute("required")}});var SctpMap=stanza.define({name:"_sctpMap",namespace:"urn:xmpp:jingle:transports:dtls-sctp:1",element:"sctpmap",fields:{number:types.attribute("number"),protocol:types.attribute("protocol"),streams:types.attribute("streams")}});stanza.extend(ICE,Candidate,"candidates");stanza.extend(ICE,RemoteCandidate);stanza.extend(ICE,Fingerprint,"fingerprints");stanza.extend(ICE,SctpMap,"sctp");stanza.withDefinition("content","urn:xmpp:jingle:1",function(Content){stanza.extend(Content,ICE)})}},{}],79:[function(require,module,exports){"use strict";module.exports=function(stanza){var types=stanza.utils;var Iq=stanza.define({name:"iq",namespace:"jabber:client",element:"iq",topLevel:true,fields:{lang:types.langAttribute(),id:types.attribute("id"),to:types.jidAttribute("to",true),from:types.jidAttribute("from",true),type:types.attribute("type")}});var toJSON=Iq.prototype.toJSON;Iq.prototype.toJSON=function(){var result=toJSON.call(this);result.resultReply=this.resultReply;result.errorReply=this.errorReply;return result};Iq.prototype.resultReply=function(data){data=data||{};data.to=this.from;data.id=this.id;data.type="result";return new Iq(data)};Iq.prototype.errorReply=function(data){data=data||{};data.to=this.from;data.id=this.id;data.type="error";return new Iq(data)}}},{}],80:[function(require,module,exports){"use strict";var JID=require("xmpp-jid").JID;var NS="urn:xmpp:jidprep:0";module.exports=function(stanza){var types=stanza.utils;stanza.withIq(function(Iq){stanza.add(Iq,"jidPrep",{get:function(){var data=types.getSubText(this.xml,NS,"jid");if(data){var jid=new JID(data);jid.prepped=true;return jid}},set:function(value){types.setSubText(this.xml,NS,"jid",(value||"").toString())}})})}},{"xmpp-jid":347}],81:[function(require,module,exports){"use strict";var NS="urn:xmpp:jingle:1";var ERRNS="urn:xmpp:jingle:errors:1";var CONDITIONS=["out-of-order","tie-break","unknown-session","unsupported-info"];var REASONS=["alternative-session","busy","cancel","connectivity-error","decline","expired","failed-application","failed-transport","general-error","gone","incompatible-parameters","media-error","security-error","success","timeout","unsupported-applications","unsupported-transports"];module.exports=function(stanza){var types=stanza.utils;var Jingle=stanza.define({name:"jingle",namespace:NS,element:"jingle",fields:{action:types.attribute("action"),initiator:types.attribute("initiator"),responder:types.attribute("responder"),sid:types.attribute("sid")}});var Content=stanza.define({name:"_jingleContent",namespace:NS,element:"content",fields:{creator:types.attribute("creator"),disposition:types.attribute("disposition","session"),name:types.attribute("name"),senders:types.attribute("senders","both"),description:{get:function(){var opts=stanza.tagged("jingle-description").map(function(Description){return Description.prototype._name});for(var i=0,len=opts.length;i<len;i++){if(this._extensions[opts[i]]){return this._extensions[opts[i]]}}},set:function(value){var ext="_"+value.descType;this[ext]=value}},transport:{get:function(){var opts=stanza.tagged("jingle-transport").map(function(Transport){return Transport.prototype._name});for(var i=0,len=opts.length;i<len;i++){if(this._extensions[opts[i]]){return this._extensions[opts[i]]}}},set:function(value){var ext="_"+value.transType;this[ext]=value}}}});var Reason=stanza.define({name:"reason",namespace:NS,element:"reason",fields:{condition:types.enumSub(NS,REASONS),alternativeSession:{get:function(){return types.getSubText(this.xml,NS,"alternative-session")},set:function(value){this.condition="alternative-session";types.setSubText(this.xml,NS,"alternative-session",value)}},text:types.textSub(NS,"text")}});stanza.extend(Jingle,Content,"contents");stanza.extend(Jingle,Reason);stanza.withStanzaError(function(ErrorStanza){stanza.add(ErrorStanza,"jingleCondition",types.enumSub(ERRNS,CONDITIONS))});stanza.withIq(function(Iq){stanza.extend(Iq,Jingle)})}},{}],82:[function(require,module,exports){"use strict";module.exports=function(stanza){var types=stanza.utils;var JSONExtension={get:function(){var data=types.getSubText(this.xml,"urn:xmpp:json:0","json");if(data){return JSON.parse(data)}},set:function(value){value=JSON.stringify(value);if(value){types.setSubText(this.xml,"urn:xmpp:json:0","json",value)}}};stanza.withMessage(function(Message){stanza.add(Message,"json",JSONExtension)});stanza.withPubsubItem(function(Item){stanza.add(Item,"json",JSONExtension)})}},{}],83:[function(require,module,exports){"use strict";var NS="urn:xmpp:eventlog";module.exports=function(stanza){var types=stanza.utils;var Log=stanza.define({name:"log",namespace:NS,element:"log",fields:{id:types.attribute("id"),timestamp:types.dateAttribute("timestamp"),type:types.attribute("type"),level:types.attribute("level"),object:types.attribute("object"),subject:types.attribute("subject"),facility:types.attribute("facility"),module:types.attribute("module"),message:types.textSub(NS,"message"),stackTrace:types.textSub(NS,"stackTrace")}});var Tag=stanza.define({name:"_logtag",namespace:NS,element:"tag",fields:{name:types.attribute("name"),value:types.attribute("value"),type:types.attribute("type")}});stanza.extend(Log,Tag,"tags");stanza.withMessage(function(Message){stanza.extend(Message,Log)});stanza.withPubsubItem(function(Item){stanza.extend(Item,Log)})}},{}],84:[function(require,module,exports){"use strict";var JID=require("xmpp-jid").JID;var NS="urn:xmpp:mam:0";module.exports=function(stanza){var types=stanza.utils;var MAMQuery=stanza.define({name:"mam",namespace:NS,element:"query",fields:{queryid:types.attribute("queryid")}});var Result=stanza.define({name:"mamItem",namespace:NS,element:"result",fields:{queryid:types.attribute("queryid"),id:types.attribute("id")}});var Fin=stanza.define({name:"mamResult",namespace:NS,element:"fin",fields:{queryid:types.attribute("queryid"),complete:types.boolAttribute("complete"),stable:types.boolAttribute("stable")}});var Prefs=stanza.define({name:"mamPrefs",namespace:NS,element:"prefs",fields:{defaultCondition:types.attribute("default"),always:{get:function(){var results=[];var container=types.find(this.xml,NS,"always");if(container.length===0){return results}container=container[0];var jids=types.getMultiSubText(container,NS,"jid");jids.forEach(function(jid){results.push(new JID(jid.textContent))});return results},set:function(value){if(value.length>0){var container=types.find(this.xml,NS,"always");types.setMultiSubText(container,NS,"jid",value)}}},never:{get:function(){var results=[];var container=types.find(this.xml,NS,"always");if(container.length===0){return results}container=container[0];var jids=types.getMultiSubText(container,NS,"jid");jids.forEach(function(jid){results.push(new JID(jid.textContent))});return results},set:function(value){if(value.length>0){var container=types.find(this.xml,NS,"never");types.setMultiSubText(container,NS,"jid",value)}}}}});stanza.withDefinition("forwarded","urn:xmpp:forward:0",function(Forwarded){stanza.extend(Result,Forwarded)});stanza.withDefinition("set","http://jabber.org/protocol/rsm",function(RSM){stanza.extend(MAMQuery,RSM);stanza.extend(Fin,RSM)});stanza.withDataForm(function(DataForm){stanza.extend(MAMQuery,DataForm)});stanza.withIq(function(Iq){stanza.extend(Iq,MAMQuery);stanza.extend(Iq,Prefs)});stanza.withMessage(function(Message){stanza.extend(Message,Result);stanza.extend(Message,Fin)})}},{"xmpp-jid":347}],85:[function(require,module,exports){"use strict";module.exports=function(stanza){var types=stanza.utils;stanza.define({name:"message",namespace:"jabber:client",element:"message",topLevel:true,fields:{lang:types.langAttribute(),id:types.attribute("id"),to:types.jidAttribute("to",true),from:types.jidAttribute("from",true),type:types.attribute("type","normal"),thread:types.textSub("jabber:client","thread"),parentThread:types.subAttribute("jabber:client","thread","parent"),subject:types.textSub("jabber:client","subject"),$body:{get:function(){return types.getSubLangText(this.xml,this._NS,"body",this.lang)}},body:{get:function(){var bodies=this.$body;return bodies[this.lang]||""},set:function(value){types.setSubLangText(this.xml,this._NS,"body",value,this.lang)}},attention:types.boolSub("urn:xmpp:attention:0","attention"),chatState:types.enumSub("http://jabber.org/protocol/chatstates",["active","composing","paused","inactive","gone"]),replace:types.subAttribute("urn:xmpp:message-correct:0","replace","id"),requestReceipt:types.boolSub("urn:xmpp:receipts","request"),receipt:types.subAttribute("urn:xmpp:receipts","received","id")}})}},{}],86:[function(require,module,exports){"use strict";var NS="http://jabber.org/protocol/mood";var MOODS=["afraid","amazed","amorous","angry","annoyed","anxious","aroused","ashamed","bored","brave","calm","cautious","cold","confident","confused","contemplative","contented","cranky","crazy","creative","curious","dejected","depressed","disappointed","disgusted","dismayed","distracted","embarrassed","envious","excited","flirtatious","frustrated","grateful","grieving","grumpy","guilty","happy","hopeful","hot","humbled","humiliated","hungry","hurt","impressed","in_awe","in_love","indignant","interested","intoxicated","invincible","jealous","lonely","lucky","mean","moody","nervous","neutral","offended","outraged","playful","proud","relaxed","relieved","remorseful","restless","sad","sarcastic","serious","shocked","shy","sick","sleepy","spontaneous","stressed","strong","surprised","thankful","thirsty","tired","undefined","weak","worried"];module.exports=function(stanza){var Mood=stanza.define({name:"mood",namespace:NS,element:"mood",fields:{text:stanza.utils.textSub(NS,"text"),value:stanza.utils.enumSub(NS,MOODS)}});stanza.withPubsubItem(function(Item){stanza.extend(Item,Mood)});stanza.withMessage(function(Message){stanza.extend(Message,Mood)})}},{}],87:[function(require,module,exports){"use strict";var NS="http://jabber.org/protocol/muc";var USER_NS=NS+"#user";var ADMIN_NS=NS+"#admin";var OWNER_NS=NS+"#owner";var UNIQ_NS=NS+"#unique";var proxy=function(child,field){return{get:function(){if(this._extensions[child]){return this[child][field]}},set:function(value){this[child][field]=value}}};module.exports=function(stanza){var types=stanza.utils;var UserItem=stanza.define({name:"_mucUserItem",namespace:USER_NS,element:"item",fields:{affiliation:types.attribute("affiliation"),nick:types.attribute("nick"),jid:types.jidAttribute("jid"),role:types.attribute("role"),reason:types.textSub(USER_NS,"reason")}});var UserActor=stanza.define({name:"_mucUserActor",namespace:USER_NS,element:"actor",fields:{nick:types.attribute("nick"),jid:types.jidAttribute("jid")}});var Destroyed=stanza.define({name:"destroyed",namespace:USER_NS,element:"destroy",fields:{jid:types.jidAttribute("jid"),reason:types.textSub(USER_NS,"reason")}});var Invite=stanza.define({name:"invite",namespace:USER_NS,element:"invite",fields:{to:types.jidAttribute("to"),from:types.jidAttribute("from"),reason:types.textSub(USER_NS,"reason"),thread:types.subAttribute(USER_NS,"continue","thread"),"continue":types.boolSub(USER_NS,"continue")}});var Decline=stanza.define({name:"decline",namespace:USER_NS,element:"decline",fields:{to:types.jidAttribute("to"),from:types.jidAttribute("from"),reason:types.textSub(USER_NS,"reason")}});var AdminItem=stanza.define({name:"_mucAdminItem",namespace:ADMIN_NS,element:"item",fields:{affiliation:types.attribute("affiliation"),nick:types.attribute("nick"),jid:types.jidAttribute("jid"),role:types.attribute("role"),reason:types.textSub(ADMIN_NS,"reason")}});var AdminActor=stanza.define({name:"actor",namespace:USER_NS,element:"actor",fields:{nick:types.attribute("nick"),jid:types.jidAttribute("jid")}});var Destroy=stanza.define({name:"destroy",namespace:OWNER_NS,element:"destroy",fields:{jid:types.jidAttribute("jid"),password:types.textSub(OWNER_NS,"password"),reason:types.textSub(OWNER_NS,"reason")}});
var MUC=stanza.define({name:"muc",namespace:USER_NS,element:"x",fields:{affiliation:proxy("_mucUserItem","affiliation"),nick:proxy("_mucUserItem","nick"),jid:proxy("_mucUserItem","jid"),role:proxy("_mucUserItem","role"),actor:proxy("_mucUserItem","_mucUserActor"),reason:proxy("_mucUserItem","reason"),password:types.textSub(USER_NS,"password"),codes:{get:function(){return types.getMultiSubText(this.xml,USER_NS,"status",function(sub){return types.getAttribute(sub,"code")})},set:function(value){var self=this;types.setMultiSubText(this.xml,USER_NS,"status",value,function(val){var child=types.createElement(USER_NS,"status",USER_NS);types.setAttribute(child,"code",val);self.xml.appendChild(child)})}}}});var MUCAdmin=stanza.define({name:"mucAdmin",namespace:ADMIN_NS,element:"query",fields:{affiliation:proxy("_mucAdminItem","affiliation"),nick:proxy("_mucAdminItem","nick"),jid:proxy("_mucAdminItem","jid"),role:proxy("_mucAdminItem","role"),actor:proxy("_mucAdminItem","_mucAdminActor"),reason:proxy("_mucAdminItem","reason")}});var MUCOwner=stanza.define({name:"mucOwner",namespace:OWNER_NS,element:"query"});var MUCJoin=stanza.define({name:"joinMuc",namespace:NS,element:"x",fields:{password:types.textSub(NS,"password"),history:{get:function(){var result={};var hist=types.find(this.xml,this._NS,"history");if(!hist.length){return{}}hist=hist[0];var maxchars=hist.getAttribute("maxchars")||"";var maxtypess=hist.getAttribute("maxstanas")||"";var seconds=hist.getAttribute("seconds")||"";var since=hist.getAttribute("since")||"";if(maxchars){result.maxchars=parseInt(maxchars,10)}if(maxtypess){result.maxtypess=parseInt(maxtypess,10)}if(seconds){result.seconds=parseInt(seconds,10)}if(since){result.since=new Date(since)}},set:function(opts){var existing=types.find(this.xml,this._NS,"history");if(existing.length){for(var i=0;i<existing.length;i++){this.xml.removeChild(existing[i])}}var hist=types.createElement(this._NS,"history",this._NS);this.xml.appendChild(hist);if(opts.maxchars){hist.setAttribute(""+opts.maxchars)}if(opts.maxtypess){hist.setAttribute(""+opts.maxtypess)}if(opts.seconds){hist.setAttribute(""+opts.seconds)}if(opts.since){hist.setAttribute(opts.since.toISOString())}}}}});var DirectInvite=stanza.define({name:"mucInvite",namespace:"jabber:x:conference",element:"x",fields:{jid:types.jidAttribute("jid"),password:types.attribute("password"),reason:types.attribute("reason"),thread:types.attribute("thread"),"continue":types.boolAttribute("continue")}});stanza.extend(UserItem,UserActor);stanza.extend(MUC,UserItem);stanza.extend(MUC,Invite,"invites");stanza.extend(MUC,Decline);stanza.extend(MUC,Destroyed);stanza.extend(AdminItem,AdminActor);stanza.extend(MUCAdmin,AdminItem,"items");stanza.extend(MUCOwner,Destroy);stanza.withDataForm(function(DataForm){stanza.extend(MUCOwner,DataForm)});stanza.withIq(function(Iq){stanza.add(Iq,"mucUnique",types.textSub(UNIQ_NS,"unique"));stanza.extend(Iq,MUCAdmin);stanza.extend(Iq,MUCOwner)});stanza.withPresence(function(Presence){stanza.extend(Presence,MUC);stanza.extend(Presence,MUCJoin)});stanza.withMessage(function(Message){stanza.extend(Message,MUC);stanza.extend(Message,DirectInvite)})}},{}],88:[function(require,module,exports){"use strict";module.exports=function(stanza){var nick=stanza.utils.textSub("http://jabber.org/protocol/nick","nick");stanza.withPubsubItem(function(Item){stanza.add(Item,"nick",nick)});stanza.withPresence(function(Presence){stanza.add(Presence,"nick",nick)});stanza.withMessage(function(Message){stanza.add(Message,"nick",nick)})}},{}],89:[function(require,module,exports){"use strict";var NS="jabber:x:oob";module.exports=function(stanza){var OOB=stanza.define({name:"oob",element:"x",namespace:NS,fields:{url:stanza.utils.textSub(NS,"url"),desc:stanza.utils.textSub(NS,"desc")}});stanza.withMessage(function(Message){stanza.extend(Message,OOB,"oobURIs")})}},{}],90:[function(require,module,exports){"use strict";var NS="urn:xmpp:ping";module.exports=function(stanza){var Ping=stanza.define({name:"ping",namespace:NS,element:"ping"});stanza.withIq(function(Iq){stanza.extend(Iq,Ping)})}},{}],91:[function(require,module,exports){"use strict";module.exports=function(stanza){var types=stanza.utils;stanza.define({name:"presence",namespace:"jabber:client",element:"presence",topLevel:true,fields:{lang:types.langAttribute(),id:types.attribute("id"),to:types.jidAttribute("to",true),from:types.jidAttribute("from",true),priority:types.numberSub("jabber:client","priority",false,0),show:types.textSub("jabber:client","show"),type:{get:function(){return types.getAttribute(this.xml,"type","available")},set:function(value){if(value==="available"){value=false}types.setAttribute(this.xml,"type",value)}},$status:{get:function(){return types.getSubLangText(this.xml,this._NS,"status",this.lang)}},status:{get:function(){var statuses=this.$status;return statuses[this.lang]||""},set:function(value){types.setSubLangText(this.xml,this._NS,"status",value,this.lang)}},idleSince:types.dateSubAttribute("urn:xmpp:idle:1","idle","since"),decloak:types.subAttribute("urn:xmpp:decloak:0","decloak","reason"),avatarId:{get:function(){var NS="vcard-temp:x:update";var update=types.find(this.xml,NS,"x");if(!update.length){return""}return types.getSubText(update[0],NS,"photo")},set:function(value){var NS="vcard-temp:x:update";var update=types.findOrCreate(this.xml,NS,"x");if(value===""){types.setBoolSub(update,NS,"photo",true)}else if(value===true){return}else if(value){types.setSubText(update,NS,"photo",value)}else{this.xml.removeChild(update)}}}}})}},{}],92:[function(require,module,exports){"use strict";module.exports=function(stanza){var PrivateStorage=stanza.define({name:"privateStorage",namespace:"jabber:iq:private",element:"query"});stanza.withIq(function(Iq){stanza.extend(Iq,PrivateStorage)})}},{}],93:[function(require,module,exports){"use strict";var NS="urn:xmpp:psa";var CONDITIONS=["server-unavailable","connection-paused"];module.exports=function(stanza){var types=stanza.utils;var PSA=stanza.define({name:"state",namespace:NS,element:"state-annotation",fields:{from:types.jidAttribute("from"),condition:types.enumSub(NS,CONDITIONS),description:types.textSub(NS,"description")}});stanza.withPresence(function(Presence){stanza.extend(Presence,PSA)})}},{}],94:[function(require,module,exports){"use strict";var NS="http://jabber.org/protocol/pubsub";module.exports=function(stanza){var types=stanza.utils;var Pubsub=stanza.define({name:"pubsub",namespace:"http://jabber.org/protocol/pubsub",element:"pubsub",fields:{publishOptions:{get:function(){var DataForm=stanza.getDefinition("x","jabber:x:data");var conf=types.find(this.xml,this._NS,"publish-options");if(conf.length&&conf[0].childNodes.length){return new DataForm({},conf[0].childNodes[0])}},set:function(value){var DataForm=stanza.getDefinition("x","jabber:x:data");var conf=types.findOrCreate(this.xml,this._NS,"publish-options");if(value){var form=new DataForm(value);conf.appendChild(form.xml)}}}}});var Subscribe=stanza.define({name:"subscribe",namespace:NS,element:"subscribe",fields:{node:types.attribute("node"),jid:types.jidAttribute("jid")}});var Subscription=stanza.define({name:"subscription",namespace:NS,element:"subscription",fields:{node:types.attribute("node"),jid:types.jidAttribute("jid"),subid:types.attribute("subid"),type:types.attribute("subscription"),configurable:types.boolSub("subscribe-options"),configurationRequired:{get:function(){var options=types.find(this.xml,NS,"subscribe-options");if(options.length){return types.getBoolSub(options[0],NS,"required")}return false}}}});var Subscriptions=stanza.define({name:"subscriptions",namespace:NS,element:"subscriptions",fields:{node:types.attribute("node"),jid:types.jidAttribute("jid")}});var Affiliation=stanza.define({name:"affiliation",namespace:NS,element:"affiliation",fields:{node:types.attribute("node"),jid:types.jidAttribute("jid"),type:types.attribute("affiliation")}});var Affiliations=stanza.define({name:"affiliations",namespace:NS,element:"affiliations",fields:{node:types.attribute("node"),jid:types.jidAttribute("jid")}});var SubscriptionOptions=stanza.define({name:"subscriptionOptions",namespace:NS,element:"options",fields:{node:types.attribute("node"),jid:types.jidAttribute("jid"),subid:types.attribute("subid")}});var Unsubscribe=stanza.define({name:"unsubscribe",namespace:NS,element:"unsubscribe",fields:{node:types.attribute("node"),jid:types.jidAttribute("jid")}});var Publish=stanza.define({name:"publish",namespace:NS,element:"publish",fields:{node:types.attribute("node")}});var Retract=stanza.define({name:"retract",namespace:NS,element:"retract",fields:{node:types.attribute("node"),notify:types.boolAttribute("notify"),id:types.subAttribute(NS,"item","id")}});var Retrieve=stanza.define({name:"retrieve",namespace:NS,element:"items",fields:{node:types.attribute("node"),max:types.attribute("max_items")}});var Item=stanza.define({name:"item",namespace:NS,element:"item",fields:{id:types.attribute("id")}});stanza.extend(Pubsub,Subscribe);stanza.extend(Pubsub,Unsubscribe);stanza.extend(Pubsub,Publish);stanza.extend(Pubsub,Retract);stanza.extend(Pubsub,Retrieve);stanza.extend(Pubsub,Subscription);stanza.extend(Pubsub,SubscriptionOptions);stanza.extend(Pubsub,Subscriptions);stanza.extend(Pubsub,Affiliations);stanza.extend(Publish,Item,"items");stanza.extend(Retrieve,Item,"items");stanza.extend(Subscriptions,Subscription,"list");stanza.extend(Affiliations,Affiliation,"list");stanza.withDataForm(function(DataForm){stanza.extend(SubscriptionOptions,DataForm);stanza.extend(Item,DataForm)});stanza.withIq(function(Iq){stanza.extend(Iq,Pubsub)});stanza.withDefinition("set","http://jabber.org/protocol/rsm",function(RSM){stanza.extend(Pubsub,RSM)})}},{}],95:[function(require,module,exports){"use strict";var ERRNS="http://jabber.org/protocol/pubsub#errors";var CONDITIONS=["closed-node","configuration-required","invalid-jid","invalid-options","invalid-payload","invalid-subid","item-forbidden","item-required","jid-required","max-items-exceeded","max-nodes-exceeded","nodeid-required","not-in-roster-group","not-subscribed","payload-too-big","payload-required","pending-subscription","presence-subscription-required","subid-required","too-many-subscriptions","unsupported","unsupported-access-model"];module.exports=function(stanza){stanza.withStanzaError(function(ErrorStanza){stanza.add(ErrorStanza,"pubsubCondition",stanza.utils.enumSub(ERRNS,CONDITIONS))})}},{}],96:[function(require,module,exports){"use strict";var NS="http://jabber.org/protocol/pubsub#event";module.exports=function(stanza){var types=stanza.utils;var Event=stanza.define({name:"event",namespace:NS,element:"event"});var EventPurge=stanza.define({name:"purged",namespace:NS,element:"purge",fields:{node:types.attribute("node")}});var EventDelete=stanza.define({name:"deleted",namespace:NS,element:"delete",fields:{node:types.attribute("node"),redirect:types.subAttribute(NS,"redirect","uri")}});var EventSubscription=stanza.define({name:"subscriptionChanged",namespace:NS,element:"subscription",fields:{node:types.attribute("node"),jid:types.jidAttribute("jid"),type:types.attribute("subscription"),subid:types.attribute("subid"),expiry:{get:function(){var text=types.getAttribute(this.xml,"expiry");if(text==="presence"){return text}else if(text){return new Date(text)}},set:function(value){if(!value){return}if(typeof value!=="string"){value=value.toISOString()}types.setAttribute(this.xml,"expiry",value)}}}});var EventConfiguration=stanza.define({name:"configurationChanged",namespace:NS,element:"configuration",fields:{node:types.attribute("node")}});var EventItems=stanza.define({name:"updated",namespace:NS,element:"items",fields:{node:types.attribute("node"),retracted:{get:function(){var results=[];var retracted=types.find(this.xml,this._NS,"retract");retracted.forEach(function(xml){results.push(xml.getAttribute("id"))});return results},set:function(value){var self=this;value.forEach(function(id){var retracted=types.createElement(self._NS,"retract",self._NS);retracted.setAttribute("id",id);this.xml.appendChild(retracted)})}}}});var EventItem=stanza.define({name:"_eventItem",namespace:NS,element:"item",fields:{id:types.attribute("id"),node:types.attribute("node"),publisher:types.jidAttribute("publisher")}});stanza.extend(EventItems,EventItem,"published");stanza.extend(Event,EventItems);stanza.extend(Event,EventSubscription);stanza.extend(Event,EventConfiguration);stanza.extend(Event,EventDelete);stanza.extend(Event,EventPurge);stanza.withMessage(function(Message){stanza.extend(Message,Event)});stanza.withDataForm(function(DataForm){stanza.extend(EventConfiguration,DataForm)})}},{}],97:[function(require,module,exports){"use strict";var NS="http://jabber.org/protocol/pubsub#owner";module.exports=function(stanza){var types=stanza.utils;var PubsubOwner=stanza.define({name:"pubsubOwner",namespace:NS,element:"pubsub",fields:{create:types.subAttribute(NS,"create","node"),purge:types.subAttribute(NS,"purge","node"),del:types.subAttribute(NS,"delete","node"),redirect:{get:function(){var del=types.find(this.xml,this._NS,"delete");if(del.length){return types.getSubAttribute(del[0],this._NS,"redirect","uri")}return""},set:function(value){var del=types.findOrCreate(this.xml,this._NS,"delete");types.setSubAttribute(del,this._NS,"redirect","uri",value)}}}});var Subscription=stanza.define({name:"subscription",namespace:NS,element:"subscription",fields:{node:types.attribute("node"),jid:types.jidAttribute("jid"),subid:types.attribute("subid"),type:types.attribute("subscription"),configurable:types.boolSub("subscribe-options"),configurationRequired:{get:function(){var options=types.find(this.xml,NS,"subscribe-options");if(options.length){return types.getBoolSub(options[0],NS,"required")}return false}}}});var Subscriptions=stanza.define({name:"subscriptions",namespace:NS,element:"subscriptions",fields:{node:types.attribute("node")}});var Affiliation=stanza.define({name:"affiliation",namespace:NS,element:"affiliation",fields:{node:types.attribute("node"),type:types.attribute("affiliation")}});var Affiliations=stanza.define({name:"affiliations",namespace:NS,element:"affiliations",fields:{node:types.attribute("node")}});var Configure=stanza.define({name:"config",namespace:NS,element:"configure",fields:{node:types.attribute("node")}});stanza.extend(PubsubOwner,Configure);stanza.extend(PubsubOwner,Subscriptions);stanza.extend(PubsubOwner,Affiliations);stanza.extend(Subscriptions,Subscription,"list");stanza.extend(Affiliations,Affiliation,"list");stanza.withDataForm(function(DataForm){stanza.extend(Configure,DataForm)});stanza.withIq(function(Iq){stanza.extend(Iq,PubsubOwner)})}},{}],98:[function(require,module,exports){"use strict";var _=require("underscore");var NS="urn:xmpp:reach:0";module.exports=function(stanza){var types=stanza.utils;var ReachURI=stanza.define({name:"_reachAddr",namespace:NS,element:"addr",fields:{uri:types.attribute("uri"),$desc:{get:function(){return types.getSubLangText(this.xml,NS,"desc",this.lang)}},desc:{get:function(){var descs=this.$desc;return descs[this.lang]||""},set:function(value){types.setSubLangText(this.xml,NS,"desc",value,this.lang)}}}});var reachability={get:function(){var reach=types.find(this.xml,NS,"reach");var results=[];if(reach.length){var addrs=types.find(reach[0],NS,"addr");_.forEach(addrs,function(addr){results.push(new ReachURI({},addr))})}return results},set:function(value){var reach=types.findOrCreate(this.xml,NS,"reach");types.setAttribute(reach,"xmlns",NS);_.forEach(value,function(info){var addr=new ReachURI(info);reach.appendChild(addr.xml)})}};stanza.withPubsubItem(function(Item){stanza.add(Item,"reach",reachability)});stanza.withPresence(function(Presence){stanza.add(Presence,"reach",reachability)})}},{underscore:345}],99:[function(require,module,exports){"use strict";var NS="jabber:iq:register";module.exports=function(stanza){var types=stanza.utils;var Register=stanza.define({name:"register",namespace:NS,element:"query",fields:{instructions:types.textSub(NS,"instructions"),registered:types.boolSub(NS,"registered"),remove:types.boolSub(NS,"remove"),username:types.textSub(NS,"username"),nick:types.textSub(NS,"nick"),password:types.textSub(NS,"password"),name:types.textSub(NS,"name"),first:types.textSub(NS,"first"),last:types.textSub(NS,"last"),email:types.textSub(NS,"email"),address:types.textSub(NS,"address"),city:types.textSub(NS,"city"),state:types.textSub(NS,"state"),zip:types.textSub(NS,"zip"),phone:types.textSub(NS,"phone"),url:types.textSub(NS,"url"),date:types.textSub(NS,"date"),misc:types.textSub(NS,"misc"),text:types.textSub(NS,"text"),key:types.textSub(NS,"key")}});stanza.withDefinition("x","jabber:x:oob",function(OOB){stanza.extend(Register,OOB)});stanza.withDataForm(function(DataForm){stanza.extend(Register,DataForm)});stanza.withIq(function(Iq){stanza.extend(Iq,Register)})}},{}],100:[function(require,module,exports){"use strict";var NS="jabber:iq:roster";module.exports=function(stanza){var types=stanza.utils;var Roster=stanza.define({name:"roster",namespace:NS,element:"query",fields:{ver:{get:function(){return types.getAttribute(this.xml,"ver")},set:function(value){var force=value==="";types.setAttribute(this.xml,"ver",value,force)}}}});var RosterItem=stanza.define({name:"_rosterItem",namespace:NS,element:"item",fields:{jid:types.jidAttribute("jid",true),name:types.attribute("name"),subscription:types.attribute("subscription","none"),subscriptionRequested:{get:function(){var ask=types.getAttribute(this.xml,"ask");return ask==="subscribe"}},preApproved:types.boolAttribute(NS,"approved"),groups:types.multiTextSub(NS,"group")}});stanza.extend(Roster,RosterItem,"items");stanza.withIq(function(Iq){stanza.extend(Iq,Roster)})}},{}],101:[function(require,module,exports){"use strict";var NS="http://jabber.org/protocol/rsm";module.exports=function(stanza){var types=stanza.utils;stanza.define({name:"rsm",namespace:NS,element:"set",fields:{after:types.textSub(NS,"after"),before:{get:function(){return types.getSubText(this.xml,this._NS,"before")},set:function(value){if(value===true){types.findOrCreate(this.xml,this._NS,"before")}else{types.setSubText(this.xml,this._NS,"before",value)}}},count:types.numberSub(NS,"count",false,0),first:types.textSub(NS,"first"),firstIndex:types.subAttribute(NS,"first","index"),index:types.textSub(NS,"index"),last:types.textSub(NS,"last"),max:types.textSub(NS,"max")}})}},{}],102:[function(require,module,exports){"use strict";var NS="urn:xmpp:jingle:apps:rtp:1";var FBNS="urn:xmpp:jingle:apps:rtp:rtcp-fb:0";var HDRNS="urn:xmpp:jingle:apps:rtp:rtp-hdrext:0";var INFONS="urn:xmpp:jingle:apps:rtp:info:1";var SSMANS="urn:xmpp:jingle:apps:rtp:ssma:0";var GROUPNS="urn:xmpp:jingle:apps:grouping:0";module.exports=function(stanza){var types=stanza.utils;var Feedback={get:function(){var existing=types.find(this.xml,FBNS,"rtcp-fb");var result=[];existing.forEach(function(xml){result.push({type:types.getAttribute(xml,"type"),subtype:types.getAttribute(xml,"subtype")})});existing=types.find(this.xml,FBNS,"rtcp-fb-trr-int");existing.forEach(function(xml){result.push({type:types.getAttribute(xml,"type"),value:types.getAttribute(xml,"value")})});return result},set:function(values){var self=this;var existing=types.find(this.xml,FBNS,"rtcp-fb");existing.forEach(function(item){self.xml.removeChild(item)});existing=types.find(this.xml,FBNS,"rtcp-fb-trr-int");existing.forEach(function(item){self.xml.removeChild(item)});values.forEach(function(value){var fb;if(value.type==="trr-int"){fb=types.createElement(FBNS,"rtcp-fb-trr-int",NS);types.setAttribute(fb,"type",value.type);types.setAttribute(fb,"value",value.value)}else{fb=types.createElement(FBNS,"rtcp-fb",NS);types.setAttribute(fb,"type",value.type);types.setAttribute(fb,"subtype",value.subtype)}self.xml.appendChild(fb)})}};var Bandwidth=stanza.define({name:"bandwidth",namespace:NS,element:"bandwidth",fields:{type:types.attribute("type"),bandwidth:types.text()}});var RTP=stanza.define({name:"_rtp",namespace:NS,element:"description",tags:["jingle-description"],fields:{descType:{value:"rtp"},media:types.attribute("media"),ssrc:types.attribute("ssrc"),mux:types.boolSub(NS,"rtcp-mux"),encryption:{get:function(){var enc=types.find(this.xml,NS,"encryption");if(!enc.length){return[]}enc=enc[0];var self=this;var data=types.find(enc,NS,"crypto");var results=[];data.forEach(function(xml){results.push(new Crypto({},xml,self).toJSON())});return results},set:function(values){var enc=types.find(this.xml,NS,"encryption");if(enc.length){this.xml.removeChild(enc)}if(!values.length){return}types.setBoolSubAttribute(this.xml,NS,"encryption","required",true);enc=types.find(this.xml,NS,"encryption")[0];var self=this;values.forEach(function(value){var content=new Crypto(value,null,self);enc.appendChild(content.xml)})}},feedback:Feedback,headerExtensions:{get:function(){var existing=types.find(this.xml,HDRNS,"rtp-hdrext");var result=[];existing.forEach(function(xml){result.push({id:types.getAttribute(xml,"id"),uri:types.getAttribute(xml,"uri"),senders:types.getAttribute(xml,"senders")})});return result},set:function(values){var self=this;var existing=types.find(this.xml,HDRNS,"rtp-hdrext");existing.forEach(function(item){self.xml.removeChild(item)});values.forEach(function(value){var hdr=types.createElement(HDRNS,"rtp-hdrext",NS);types.setAttribute(hdr,"id",value.id);types.setAttribute(hdr,"uri",value.uri);types.setAttribute(hdr,"senders",value.senders);self.xml.appendChild(hdr)})}}}});var PayloadType=stanza.define({name:"_payloadType",namespace:NS,element:"payload-type",fields:{channels:types.attribute("channels"),clockrate:types.attribute("clockrate"),id:types.attribute("id"),maxptime:types.attribute("maxptime"),name:types.attribute("name"),ptime:types.attribute("ptime"),feedback:Feedback,parameters:{get:function(){var result=[];var params=types.find(this.xml,NS,"parameter");params.forEach(function(param){result.push({key:types.getAttribute(param,"name"),value:types.getAttribute(param,"value")})});return result},set:function(values){var self=this;values.forEach(function(value){var param=types.createElement(NS,"parameter");types.setAttribute(param,"name",value.key);types.setAttribute(param,"value",value.value);self.xml.appendChild(param)})}}}});var Crypto=stanza.define({name:"crypto",namespace:NS,element:"crypto",fields:{cipherSuite:types.attribute("crypto-suite"),keyParams:types.attribute("key-params"),sessionParams:types.attribute("session-params"),tag:types.attribute("tag")}});var ContentGroup=stanza.define({name:"_group",namespace:GROUPNS,element:"group",fields:{semantics:types.attribute("semantics"),contents:types.multiSubAttribute(GROUPNS,"content","name")}});var SourceGroup=stanza.define({name:"_sourceGroup",namespace:SSMANS,element:"ssrc-group",fields:{semantics:types.attribute("semantics"),sources:types.multiSubAttribute(SSMANS,"source","ssrc")}});var Source=stanza.define({name:"_source",namespace:SSMANS,element:"source",fields:{ssrc:types.attribute("ssrc"),parameters:{get:function(){var result=[];var params=types.find(this.xml,SSMANS,"parameter");params.forEach(function(param){result.push({key:types.getAttribute(param,"name"),value:types.getAttribute(param,"value")})});return result},set:function(values){var self=this;values.forEach(function(value){var param=types.createElement(SSMANS,"parameter");types.setAttribute(param,"name",value.key);types.setAttribute(param,"value",value.value);self.xml.appendChild(param)})}}}});var Mute=stanza.define({name:"mute",namespace:INFONS,element:"mute",fields:{creator:types.attribute("creator"),name:types.attribute("name")}});var Unmute=stanza.define({name:"unmute",namespace:INFONS,element:"unmute",fields:{creator:types.attribute("creator"),name:types.attribute("name")}});stanza.extend(RTP,Bandwidth);stanza.extend(RTP,PayloadType,"payloads");stanza.extend(RTP,Source,"sources");stanza.extend(RTP,SourceGroup,"sourceGroups");stanza.withDefinition("content","urn:xmpp:jingle:1",function(Content){stanza.extend(Content,RTP)});stanza.withDefinition("jingle","urn:xmpp:jingle:1",function(Jingle){stanza.extend(Jingle,Mute);stanza.extend(Jingle,Unmute);stanza.extend(Jingle,ContentGroup,"groups");stanza.add(Jingle,"ringing",types.boolSub(INFONS,"ringing"));stanza.add(Jingle,"hold",types.boolSub(INFONS,"hold"));stanza.add(Jingle,"active",types.boolSub(INFONS,"active"))})}},{}],103:[function(require,module,exports){"use strict";var NS="urn:xmpp:rtt:0";var typemap={insert:"t",erase:"e",wait:"w"};var actionmap={t:"insert",e:"erase",w:"wait"};module.exports=function(stanza){var types=stanza.utils;var RTT=stanza.define({name:"rtt",namespace:NS,element:"rtt",fields:{id:types.attribute("id"),event:types.attribute("event","edit"),seq:types.numberAttribute("seq"),actions:{get:function(){var results=[];for(var i=0,len=this.xml.childNodes.length;i<len;i++){var child=this.xml.childNodes[i];var name=child.localName;var action={};if(child.namespaceURI!==NS){continue}if(actionmap[name]){action.type=actionmap[name]}else{continue}var pos=types.getAttribute(child,"p");if(pos){action.pos=parseInt(pos,10)}var n=types.getAttribute(child,"n");if(n){action.num=parseInt(n,10)}var t=types.getText(child);if(t&&name==="t"){action.text=t}results.push(action)}return results},set:function(actions){var self=this;for(var i=0,len=this.xml.childNodes.length;i<len;i++){this.xml.removeChild(this.xml.childNodes[i])}actions.forEach(function(action){if(!typemap[action.type]){return}var child=types.createElement(NS,typemap[action.type],NS);if(action.pos!==undefined){types.setAttribute(child,"p",action.pos.toString())}if(action.num){types.setAttribute(child,"n",action.num.toString())}if(action.text){types.setText(child,action.text)}self.xml.appendChild(child)})}}}});stanza.withMessage(function(Message){stanza.extend(Message,RTT)})}},{}],104:[function(require,module,exports){"use strict";var NS="urn:ietf:params:xml:ns:xmpp-sasl";var CONDITIONS=["aborted","account-disabled","credentials-expired","encryption-required","incorrect-encoding","invalid-authzid","invalid-mechanism","malformed-request","mechanism-too-weak","not-authorized","temporary-auth-failure"];module.exports=function(stanza){var types=stanza.utils;var Mechanisms=stanza.define({name:"sasl",namespace:NS,element:"mechanisms",fields:{mechanisms:types.multiTextSub(NS,"mechanism")}});stanza.define({name:"saslAuth",eventName:"sasl:auth",namespace:NS,element:"auth",topLevel:true,fields:{value:types.b64Text(),mechanism:types.attribute("mechanism")}});stanza.define({name:"saslChallenge",eventName:"sasl:challenge",namespace:NS,element:"challenge",topLevel:true,fields:{value:types.b64Text()}});stanza.define({name:"saslResponse",eventName:"sasl:response",namespace:NS,element:"response",topLevel:true,fields:{value:types.b64Text()}});stanza.define({name:"saslAbort",eventName:"sasl:abort",namespace:NS,element:"abort",topLevel:true});stanza.define({name:"saslSuccess",eventName:"sasl:success",namespace:NS,element:"success",topLevel:true,fields:{value:types.b64Text()}});stanza.define({name:"saslFailure",eventName:"sasl:failure",namespace:NS,element:"failure",topLevel:true,fields:{lang:{get:function(){return this._lang||""},set:function(value){this._lang=value}},condition:types.enumSub(NS,CONDITIONS),$text:{get:function(){return types.getSubLangText(this.xml,NS,"text",this.lang)}},text:{get:function(){var text=this.$text;return text[this.lang]||""},set:function(value){types.setSubLangText(this.xml,NS,"text",value,this.lang)}}}});stanza.withStreamFeatures(function(StreamFeatures){stanza.extend(StreamFeatures,Mechanisms)})}},{}],105:[function(require,module,exports){"use strict";var NS="urn:ietf:params:xml:ns:xmpp-session";module.exports=function(stanza){var types=stanza.utils;var Session=stanza.define({name:"session",namespace:NS,element:"session",fields:{required:types.boolSub(NS,"required"),optional:types.boolSub(NS,"optional")}});stanza.withIq(function(Iq){stanza.extend(Iq,Session)});stanza.withStreamFeatures(function(StreamFeatures){stanza.extend(StreamFeatures,Session)})}},{}],106:[function(require,module,exports){"use strict";var NS="http://jabber.org/protocol/shim";module.exports=function(stanza){var types=stanza.utils;var SHIM={get:function(){var headerSet=types.find(this.xml,NS,"headers");if(headerSet.length){return types.getMultiSubText(headerSet[0],NS,"header",function(header){var name=types.getAttribute(header,"name");if(name){return{name:name,value:types.getText(header)}}})}return[]},set:function(values){var headerSet=types.findOrCreate(this.xml,NS,"headers");stanza.setMultiSubText(headerSet,NS,"header",values,function(val){var header=types.createElement(NS,"header",NS);types.setAttribute(header,"name",val.name);types.setText(header,val.value);headerSet.appendChild(header)})}};stanza.withMessage(function(Message){stanza.add(Message,"headers",SHIM)});stanza.withPresence(function(Presence){stanza.add(Presence,"headers",SHIM)})}},{}],107:[function(require,module,exports){"use strict";var NS="urn:xmpp:sm:3";module.exports=function(stanza){var types=stanza.utils;var SMFeature=stanza.define({name:"streamManagement",namespace:NS,element:"sm"});stanza.define({name:"smEnable",eventName:"stream:management:enable",namespace:NS,element:"enable",topLevel:true,fields:{resume:types.boolAttribute("resume")}});stanza.define({name:"smEnabled",eventName:"stream:management:enabled",namespace:NS,element:"enabled",topLevel:true,fields:{id:types.attribute("id"),resume:types.boolAttribute("resume")}});stanza.define({name:"smResume",eventName:"stream:management:resume",namespace:NS,element:"resume",topLevel:true,fields:{h:types.numberAttribute("h",false,0),previd:types.attribute("previd")}});stanza.define({name:"smResumed",eventName:"stream:management:resumed",namespace:NS,element:"resumed",topLevel:true,fields:{h:types.numberAttribute("h",false,0),previd:types.attribute("previd")}});stanza.define({name:"smFailed",eventName:"stream:management:failed",namespace:NS,element:"failed",topLevel:true});stanza.define({name:"smAck",eventName:"stream:management:ack",namespace:NS,element:"a",topLevel:true,fields:{h:types.numberAttribute("h",false,0)}});stanza.define({name:"smRequest",eventName:"stream:management:request",namespace:NS,element:"r",topLevel:true});stanza.withStreamFeatures(function(StreamFeatures){stanza.extend(StreamFeatures,SMFeature)})}},{}],108:[function(require,module,exports){"use strict";module.exports=function(stanza){var types=stanza.utils;stanza.define({name:"stream",namespace:"http://etherx.jabber.org/streams",element:"stream",fields:{lang:types.langAttribute(),id:types.attribute("id"),version:types.attribute("version","1.0"),to:types.jidAttribute("to",true),from:types.jidAttribute("from",true)}})}},{}],109:[function(require,module,exports){"use strict";var ERR_NS="urn:ietf:params:xml:ns:xmpp-streams";var CONDITIONS=["bad-format","bad-namespace-prefix","conflict","connection-timeout","host-gone","host-unknown","improper-addressing","internal-server-error","invalid-from","invalid-namespace","invalid-xml","not-authorized","not-well-formed","policy-violation","remote-connection-failed","reset","resource-constraint","restricted-xml","see-other-host","system-shutdown","undefined-condition","unsupported-encoding","unsupported-feature","unsupported-stanza-type","unsupported-version"];module.exports=function(stanza){var types=stanza.utils;stanza.define({name:"streamError",namespace:"http://etherx.jabber.org/streams",element:"error",topLevel:true,fields:{lang:{get:function(){return this._lang||""},set:function(value){this._lang=value}},condition:types.enumSub(ERR_NS,CONDITIONS),seeOtherHost:{get:function(){return types.getSubText(this.xml,ERR_NS,"see-other-host")},set:function(value){this.condition="see-other-host";types.setSubText(this.xml,ERR_NS,"see-other-host",value)}},$text:{get:function(){return types.getSubLangText(this.xml,ERR_NS,"text",this.lang)}},text:{get:function(){var text=this.$text;return text[this.lang]||""},set:function(value){types.setSubLangText(this.xml,ERR_NS,"text",value,this.lang)
}}}})}},{}],110:[function(require,module,exports){"use strict";module.exports=function(stanza){var StreamFeatures=stanza.define({name:"streamFeatures",namespace:"http://etherx.jabber.org/streams",element:"features",topLevel:true});var RosterVerFeature=stanza.define({name:"rosterVersioning",namespace:"urn:xmpp:features:rosterver",element:"ver"});var SubscriptionPreApprovalFeature=stanza.define({name:"subscriptionPreApproval",namespace:"urn:xmpp:features:pre-approval",element:"sub"});stanza.extend(StreamFeatures,RosterVerFeature);stanza.extend(StreamFeatures,SubscriptionPreApprovalFeature)}},{}],111:[function(require,module,exports){"use strict";module.exports=function(stanza){var EntityTime=stanza.define({name:"time",namespace:"urn:xmpp:time",element:"time",fields:{utc:stanza.utils.dateSub("urn:xmpp:time","utc"),tzo:stanza.utils.tzoSub("urn:xmpp:time","tzo",0)}});stanza.withIq(function(Iq){stanza.extend(Iq,EntityTime)})}},{}],112:[function(require,module,exports){"use strict";var NS="vcard-temp";module.exports=function(stanza){var types=stanza.utils;var VCardTemp=stanza.define({name:"vCardTemp",namespace:NS,element:"vCard",fields:{role:types.textSub(NS,"ROLE"),website:types.textSub(NS,"URL"),title:types.textSub(NS,"TITLE"),description:types.textSub(NS,"DESC"),fullName:types.textSub(NS,"FN"),birthday:types.dateSub(NS,"BDAY"),nicknames:types.multiTextSub(NS,"NICKNAME"),jids:types.multiTextSub(NS,"JABBERID")}});var Email=stanza.define({name:"_email",namespace:NS,element:"EMAIL",fields:{email:types.textSub(NS,"USERID"),home:types.boolSub(NS,"HOME"),work:types.boolSub(NS,"WORK"),preferred:types.boolSub(NS,"PREF")}});var PhoneNumber=stanza.define({name:"_tel",namespace:NS,element:"TEL",fields:{number:types.textSub(NS,"NUMBER"),home:types.boolSub(NS,"HOME"),work:types.boolSub(NS,"WORK"),mobile:types.boolSub(NS,"CELL"),preferred:types.boolSub(NS,"PREF")}});var Address=stanza.define({name:"_address",namespace:NS,element:"ADR",fields:{street:types.textSub(NS,"STREET"),street2:types.textSub(NS,"EXTADD"),country:types.textSub(NS,"CTRY"),city:types.textSub(NS,"LOCALITY"),region:types.textSub(NS,"REGION"),postalCode:types.textSub(NS,"PCODE"),pobox:types.textSub(NS,"POBOX"),home:types.boolSub(NS,"HOME"),work:types.boolSub(NS,"WORK"),preferred:types.boolSub(NS,"PREF")}});var Organization=stanza.define({name:"organization",namespace:NS,element:"ORG",fields:{name:types.textSub(NS,"ORGNAME"),unit:types.textSub(NS,"ORGUNIT")}});var Name=stanza.define({name:"name",namespace:NS,element:"N",fields:{family:types.textSub(NS,"FAMILY"),given:types.textSub(NS,"GIVEN"),middle:types.textSub(NS,"MIDDLE"),prefix:types.textSub(NS,"PREFIX"),suffix:types.textSub(NS,"SUFFIX")}});var Photo=stanza.define({name:"photo",namespace:NS,element:"PHOTO",fields:{type:types.textSub(NS,"TYPE"),data:types.textSub(NS,"BINVAL"),url:types.textSub(NS,"EXTVAL")}});stanza.extend(VCardTemp,Email,"emails");stanza.extend(VCardTemp,Address,"addresses");stanza.extend(VCardTemp,PhoneNumber,"phoneNumbers");stanza.extend(VCardTemp,Organization);stanza.extend(VCardTemp,Name);stanza.extend(VCardTemp,Photo);stanza.withIq(function(Iq){stanza.extend(Iq,VCardTemp)})}},{}],113:[function(require,module,exports){"use strict";var NS="jabber:iq:version";module.exports=function(stanza){var types=stanza.utils;var Version=stanza.define({name:"version",namespace:NS,element:"query",fields:{name:types.textSub(NS,"name"),version:types.textSub(NS,"version"),os:types.textSub(NS,"os")}});stanza.withIq(function(Iq){stanza.extend(Iq,Version)})}},{}],114:[function(require,module,exports){"use strict";var NS="urn:xmpp:invisible:0";module.exports=function(stanza){stanza.withIq(function(Iq){stanza.add(Iq,"visible",stanza.utils.boolSub(NS,"visible"));stanza.add(Iq,"invisible",stanza.utils.boolSub(NS,"invisible"))})}},{}],115:[function(require,module,exports){(function(process,Buffer){"use strict";var _=require("underscore");var util=require("util");var BPromise=require("bluebird");var request=BPromise.promisify(require("request"));var WildEmitter=require("wildemitter");function ConnectionError(){}util.inherits(ConnectionError,Error);function retryRequest(opts,timeout,allowedRetries,retries){retries=retries||0;var req=request(opts).cancellable().timeout((timeout||20)*1e3);return req.spread(function(req,body){if(req.statusCode<200||req.statusCode>=400){throw new ConnectionError("HTTP Status Error")}return body}).catch(BPromise.TimeoutError,function(){throw new ConnectionError("Dead Connection, exceeded timeout limit")}).catch(function(){if(retries<allowedRetries){return BPromise.delay(100).then(function(){return retryRequest(opts,timeout,allowedRetries,retries+1)})}else{throw new ConnectionError("Dead Connection, exceeded retry limit")}})}function BOSHConnection(sm,stanzas){var self=this;WildEmitter.call(this);self.sm=sm;self.stanzas={BOSH:stanzas.getDefinition("body","http://jabber.org/protocol/httpbind"),StreamError:stanzas.getStreamError()};self.sendQueue=[];self.requests=[];self.maxRequests=2;self.sid="";self.on("raw:incoming",function(data){data=data.trim();if(data===""){return}var bosh,err;try{bosh=stanzas.parse(data,self.stanzas.BOSH)}catch(e){err=new self.stanzas.StreamError({condition:"invalid-xml"});self.emit("stream:error",err,e);self.send(err);return self.disconnect()}if(!self.hasStream){self.hasStream=true;self.stream={id:bosh.sid,lang:bosh.lang||"en",version:bosh.version||"1.0",to:bosh.to,from:bosh.from};self.sid=bosh.sid;self.maxRequests=bosh.requests}var payload=bosh.payload;payload.forEach(function(stanzaObj){if(!stanzaObj.lang){stanzaObj.lang=self.stream.lang}self.emit("stream:data",stanzaObj)});if(bosh.type==="terminate"){self.rid=undefined;self.sid=undefined;self.emit("bosh:terminate",bosh);self.emit("stream:end");self.emit("disconnected",self)}})}util.inherits(BOSHConnection,WildEmitter);BOSHConnection.prototype.connect=function(opts){var self=this;self.config=_.extend({rid:Math.ceil(Math.random()*9999999999),wait:30,maxRetries:5},opts);self.hasStream=false;self.sm.started=false;self.url=opts.boshURL;self.rid=self.config.rid;self.requests=[];self.rid++;self.request(new self.stanzas.BOSH({version:self.config.version||"1.0",to:self.config.server,lang:self.config.lang||"en",wait:self.config.wait,ver:"1.6",hold:1}))};BOSHConnection.prototype.disconnect=function(){if(this.hasStream){this.rid++;this.request(new this.stanzas.BOSH({type:"terminate"}))}else{this.requests.forEach(function(ticket){ticket.request.cancel()});this.stream=undefined;this.sid=undefined;this.rid=undefined;this.emit("disconnected",this)}};BOSHConnection.prototype.restart=function(){var self=this;self.rid++;self.request(new self.stanzas.BOSH({to:self.config.server,lang:self.config.lang||"en",restart:"true"}))};BOSHConnection.prototype.send=function(data){var self=this;if(self.hasStream){self.sendQueue.push(data);process.nextTick(self.longPoll.bind(self))}};BOSHConnection.prototype.longPoll=function(){var canReceive=this.requests.length===0;var canSend=this.sendQueue.length>0&&this.requests.length<this.maxRequests;if(!this.sid||!canReceive&&!canSend){return}var stanzas=this.sendQueue;this.sendQueue=[];this.rid++;this.request(new this.stanzas.BOSH({payload:stanzas}))};BOSHConnection.prototype.request=function(bosh){var self=this;var ticket={id:self.rid,request:null};bosh.rid=self.rid;bosh.sid=self.sid;var body=new Buffer(bosh.toString(),"utf8").toString();self.emit("raw:outgoing",body);self.requests.push(ticket);var req=retryRequest({uri:self.url,body:body,method:"POST",strictSSL:true},self.config.wait*1.5,this.config.maxRetries);ticket.request=req;return req.then(function(body){self.emit("raw:incoming",new Buffer(body,"utf8").toString())}).catch(ConnectionError,function(err){self.hasStream=false;var serr=new self.stanzas.StreamError({condition:"connection-timeout"});self.emit("stream:error",serr,err);self.disconnect()}).catch(BPromise.CancellationError,function(){return}).finally(function(){self.requests=_.filter(self.requests,function(item){return item.id!==ticket.id});if(bosh.type!=="terminate"){process.nextTick(function(){process.nextTick(self.longPoll.bind(self))})}})};module.exports=BOSHConnection}).call(this,require("/var/sites/requirebin-cdn/node_modules/browserify-cdn/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js"),require("buffer").Buffer)},{"/var/sites/requirebin-cdn/node_modules/browserify-cdn/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js":361,bluebird:123,buffer:350,request:155,underscore:345,util:372,wildemitter:346}],116:[function(require,module,exports){"use strict";var WSConnection=require("./websocket");var _=require("underscore");var util=require("util");function OldWSConnection(sm,stanzas){WSConnection.call(this,sm,stanzas);var self=this;function wrap(data){return[self.streamStart,data,self.streamEnd].join("")}self.on("connected",function(){self.streamStart='<stream:stream xmlns:stream="http://etherx.jabber.org/streams">';self.streamEnd="</stream:stream>"});self.off("raw:incoming");self.on("raw:incoming",function(data){var streamData,ended,err;data=data.trim();data=data.replace(/^(\s*<\?.*\?>\s*)*/,"");if(data===""){return}if(data.match(self.streamEnd)){return self.disconnect()}else if(self.hasStream){try{streamData=stanzas.parse(wrap(data))}catch(e){err=new this.stanzas.StreamError({condition:"invalid-xml"});self.emit("stream:error",err,e);self.send(err);return self.disconnect()}}else{var parts=data.match(/^<(\S+:)?(\S+) /);self.streamStart=data;self.streamEnd="</"+(parts[1]||"")+parts[2]+">";ended=false;try{streamData=stanzas.parse(data+self.streamEnd)}catch(e){try{streamData=stanzas.parse(data);ended=true}catch(e2){err=new this.stanzas.StreamError({condition:"invalid-xml"});self.emit("stream:error",err,e2);self.send(err);return self.disconnect()}}self.hasStream=true;self.stream=streamData;self.emit("stream:start",streamData)}_.each(streamData._extensions,function(stanzaObj){if(!stanzaObj.lang&&self.stream){stanzaObj.lang=self.stream.lang}self.emit("stream:data",stanzaObj)});if(ended){self.emit("stream:end")}})}util.inherits(OldWSConnection,WSConnection);OldWSConnection.prototype.startHeader=function(){return["<stream:stream",'xmlns:stream="http://etherx.jabber.org/streams"','xmlns="jabber:client"','version="'+(this.config.version||"1.0")+'"','xml:lang="'+(this.config.lang||"en")+'"','to="'+this.config.server+'">'].join(" ")};OldWSConnection.prototype.closeHeader=function(){return"</stream:stream>"};module.exports=OldWSConnection},{"./websocket":117,underscore:345,util:372}],117:[function(require,module,exports){(function(Buffer){"use strict";var util=require("util");var WildEmitter=require("wildemitter");var async=require("async");var WS=require("faye-websocket")&&require("faye-websocket").Client?require("faye-websocket").Client:window.WebSocket;var WS_OPEN=1;function WSConnection(sm,stanzas){var self=this;WildEmitter.call(this);self.sm=sm;self.closing=false;self.stanzas={Open:stanzas.getDefinition("open","urn:ietf:params:xml:ns:xmpp-framing",true),Close:stanzas.getDefinition("close","urn:ietf:params:xml:ns:xmpp-framing",true),StreamError:stanzas.getStreamError()};self.sendQueue=async.queue(function(data,cb){if(self.conn){if(typeof data!=="string"){data=data.toString()}data=new Buffer(data,"utf8").toString();self.emit("raw:outgoing",data);if(self.conn.readyState===WS_OPEN){self.conn.send(data)}}cb()},1);self.on("connected",function(){self.send(self.startHeader())});self.on("raw:incoming",function(data){var stanzaObj,err;data=data.trim();if(data===""){return}try{stanzaObj=stanzas.parse(data)}catch(e){err=new this.stanzas.StreamError({condition:"invalid-xml"});self.emit("stream:error",err,e);self.send(err);return self.disconnect()}if(stanzaObj._name==="openStream"){self.hasStream=true;self.stream=stanzaObj;return self.emit("stream:start",stanzaObj.toJSON())}if(stanzaObj._name==="closeStream"){self.emit("stream:end");return self.disconnect()}if(!stanzaObj.lang&&self.stream){stanzaObj.lang=self.stream.lang}self.emit("stream:data",stanzaObj)})}util.inherits(WSConnection,WildEmitter);WSConnection.prototype.connect=function(opts){var self=this;self.config=opts;self.hasStream=false;self.closing=false;self.conn=new WS(opts.wsURL,"xmpp");self.conn.onerror=function(e){e.preventDefault();self.emit("disconnected",self)};self.conn.onclose=function(){self.emit("disconnected",self)};self.conn.onopen=function(){self.sm.started=false;self.emit("connected",self)};self.conn.onmessage=function(wsMsg){self.emit("raw:incoming",new Buffer(wsMsg.data,"utf8").toString())}};WSConnection.prototype.startHeader=function(){return new this.stanzas.Open({version:this.config.version||"1.0",lang:this.config.lang||"en",to:this.config.server})};WSConnection.prototype.closeHeader=function(){return new this.stanzas.Close};WSConnection.prototype.disconnect=function(){if(this.conn&&!this.closing){this.closing=true;this.send(this.closeHeader())}else{this.hasStream=false;this.stream=undefined;if(this.conn.readyState===WS_OPEN){this.conn.close()}this.conn=undefined}};WSConnection.prototype.restart=function(){var self=this;self.hasStream=false;self.send(this.startHeader())};WSConnection.prototype.send=function(data){this.sendQueue.push(data)};module.exports=WSConnection}).call(this,require("buffer").Buffer)},{async:119,buffer:350,"faye-websocket":349,util:372,wildemitter:346}],118:[function(require,module,exports){var crypto=require("crypto");function parse(chal){var dtives={};var tokens=chal.split(/,(?=(?:[^"]|"[^"]*")*$)/);for(var i=0,len=tokens.length;i<len;i++){var dtiv=/(\w+)=["]?([^"]+)["]?$/.exec(tokens[i]);if(dtiv){dtives[dtiv[1]]=dtiv[2]}}return dtives}function genNonce(){return crypto.randomBytes(16).toString("hex")}function Mechanism(options){options=options||{};this._genNonce=options.genNonce||genNonce}Mechanism.Mechanism=Mechanism;Mechanism.prototype.name="DIGEST-MD5";Mechanism.prototype.clientFirst=false;Mechanism.prototype.response=function(cred){if(this._completed){return undefined}var uri=cred.serviceType+"/"+cred.host;if(cred.serviceName&&cred.host!==cred.serviceName){uri+="/"+cred.serviceName}var realm=cred.realm||this._realm||"";var cnonce=this._genNonce();var nc="00000001";var qop="auth";var str="";str+='username="'+cred.username+'"';if(realm){str+=',realm="'+realm+'"'}str+=',nonce="'+this._nonce+'"';str+=',cnonce="'+cnonce+'"';str+=",nc="+nc;str+=",qop="+qop;str+=',digest-uri="'+uri+'"';var base=crypto.createHash("md5").update(cred.username).update(":").update(realm).update(":").update(cred.password).digest();var ha1=crypto.createHash("md5").update(base).update(":").update(this._nonce).update(":").update(cnonce);if(cred.authzid){ha1.update(":").update(cred.authzid)}ha1=ha1.digest("hex");var ha2=crypto.createHash("md5").update("AUTHENTICATE:").update(uri);if(qop==="auth-int"||qop==="auth-conf"){ha2.update(":00000000000000000000000000000000")}ha2=ha2.digest("hex");var digest=crypto.createHash("md5").update(ha1).update(":").update(this._nonce).update(":").update(nc).update(":").update(cnonce).update(":").update(qop).update(":").update(ha2).digest("hex");str+=",response="+digest;if(this._charset==="utf-8"){str+=",charset=utf-8"}if(cred.authzid){str+='authzid="'+cred.authzid+'"'}return str};Mechanism.prototype.challenge=function(chal){var dtives=parse(chal);this._completed=!!dtives.rspauth;this._realm=dtives.realm;this._nonce=dtives.nonce;this._qop=(dtives.qop||"auth").split(",");this._stale=dtives.stale;this._maxbuf=parseInt(dtives.maxbuf)||65536;this._charset=dtives.charset;this._algo=dtives.algorithm;this._cipher=dtives.cipher;if(this._cipher){this._cipher.split(",")}return this};module.exports=Mechanism},{crypto:354}],119:[function(require,module,exports){(function(process){(function(){var async={};var root,previous_async;root=this;if(root!=null){previous_async=root.async}async.noConflict=function(){root.async=previous_async;return async};function only_once(fn){var called=false;return function(){if(called)throw new Error("Callback was already called.");called=true;fn.apply(root,arguments)}}var _toString=Object.prototype.toString;var _isArray=Array.isArray||function(obj){return _toString.call(obj)==="[object Array]"};var _each=function(arr,iterator){if(arr.forEach){return arr.forEach(iterator)}for(var i=0;i<arr.length;i+=1){iterator(arr[i],i,arr)}};var _map=function(arr,iterator){if(arr.map){return arr.map(iterator)}var results=[];_each(arr,function(x,i,a){results.push(iterator(x,i,a))});return results};var _reduce=function(arr,iterator,memo){if(arr.reduce){return arr.reduce(iterator,memo)}_each(arr,function(x,i,a){memo=iterator(memo,x,i,a)});return memo};var _keys=function(obj){if(Object.keys){return Object.keys(obj)}var keys=[];for(var k in obj){if(obj.hasOwnProperty(k)){keys.push(k)}}return keys};if(typeof process==="undefined"||!process.nextTick){if(typeof setImmediate==="function"){async.nextTick=function(fn){setImmediate(fn)};async.setImmediate=async.nextTick}else{async.nextTick=function(fn){setTimeout(fn,0)};async.setImmediate=async.nextTick}}else{async.nextTick=process.nextTick;if(typeof setImmediate!=="undefined"){async.setImmediate=function(fn){setImmediate(fn)}}else{async.setImmediate=async.nextTick}}async.each=function(arr,iterator,callback){callback=callback||function(){};if(!arr.length){return callback()}var completed=0;_each(arr,function(x){iterator(x,only_once(done))});function done(err){if(err){callback(err);callback=function(){}}else{completed+=1;if(completed>=arr.length){callback()}}}};async.forEach=async.each;async.eachSeries=function(arr,iterator,callback){callback=callback||function(){};if(!arr.length){return callback()}var completed=0;var iterate=function(){iterator(arr[completed],function(err){if(err){callback(err);callback=function(){}}else{completed+=1;if(completed>=arr.length){callback()}else{iterate()}}})};iterate()};async.forEachSeries=async.eachSeries;async.eachLimit=function(arr,limit,iterator,callback){var fn=_eachLimit(limit);fn.apply(null,[arr,iterator,callback])};async.forEachLimit=async.eachLimit;var _eachLimit=function(limit){return function(arr,iterator,callback){callback=callback||function(){};if(!arr.length||limit<=0){return callback()}var completed=0;var started=0;var running=0;(function replenish(){if(completed>=arr.length){return callback()}while(running<limit&&started<arr.length){started+=1;running+=1;iterator(arr[started-1],function(err){if(err){callback(err);callback=function(){}}else{completed+=1;running-=1;if(completed>=arr.length){callback()}else{replenish()}}})}})()}};var doParallel=function(fn){return function(){var args=Array.prototype.slice.call(arguments);return fn.apply(null,[async.each].concat(args))}};var doParallelLimit=function(limit,fn){return function(){var args=Array.prototype.slice.call(arguments);return fn.apply(null,[_eachLimit(limit)].concat(args))}};var doSeries=function(fn){return function(){var args=Array.prototype.slice.call(arguments);return fn.apply(null,[async.eachSeries].concat(args))}};var _asyncMap=function(eachfn,arr,iterator,callback){arr=_map(arr,function(x,i){return{index:i,value:x}});if(!callback){eachfn(arr,function(x,callback){iterator(x.value,function(err){callback(err)})})}else{var results=[];eachfn(arr,function(x,callback){iterator(x.value,function(err,v){results[x.index]=v;callback(err)})},function(err){callback(err,results)})}};async.map=doParallel(_asyncMap);async.mapSeries=doSeries(_asyncMap);async.mapLimit=function(arr,limit,iterator,callback){return _mapLimit(limit)(arr,iterator,callback)};var _mapLimit=function(limit){return doParallelLimit(limit,_asyncMap)};async.reduce=function(arr,memo,iterator,callback){async.eachSeries(arr,function(x,callback){iterator(memo,x,function(err,v){memo=v;callback(err)})},function(err){callback(err,memo)})};async.inject=async.reduce;async.foldl=async.reduce;async.reduceRight=function(arr,memo,iterator,callback){var reversed=_map(arr,function(x){return x}).reverse();async.reduce(reversed,memo,iterator,callback)};async.foldr=async.reduceRight;var _filter=function(eachfn,arr,iterator,callback){var results=[];arr=_map(arr,function(x,i){return{index:i,value:x}});eachfn(arr,function(x,callback){iterator(x.value,function(v){if(v){results.push(x)}callback()})},function(err){callback(_map(results.sort(function(a,b){return a.index-b.index}),function(x){return x.value}))})};async.filter=doParallel(_filter);async.filterSeries=doSeries(_filter);async.select=async.filter;async.selectSeries=async.filterSeries;var _reject=function(eachfn,arr,iterator,callback){var results=[];arr=_map(arr,function(x,i){return{index:i,value:x}});eachfn(arr,function(x,callback){iterator(x.value,function(v){if(!v){results.push(x)}callback()})},function(err){callback(_map(results.sort(function(a,b){return a.index-b.index}),function(x){return x.value}))})};async.reject=doParallel(_reject);async.rejectSeries=doSeries(_reject);var _detect=function(eachfn,arr,iterator,main_callback){eachfn(arr,function(x,callback){iterator(x,function(result){if(result){main_callback(x);main_callback=function(){}}else{callback()}})},function(err){main_callback()})};async.detect=doParallel(_detect);async.detectSeries=doSeries(_detect);async.some=function(arr,iterator,main_callback){async.each(arr,function(x,callback){iterator(x,function(v){if(v){main_callback(true);main_callback=function(){}}callback()})},function(err){main_callback(false)})};async.any=async.some;async.every=function(arr,iterator,main_callback){async.each(arr,function(x,callback){iterator(x,function(v){if(!v){main_callback(false);main_callback=function(){}}callback()})},function(err){main_callback(true)})};async.all=async.every;async.sortBy=function(arr,iterator,callback){async.map(arr,function(x,callback){iterator(x,function(err,criteria){if(err){callback(err)}else{callback(null,{value:x,criteria:criteria})}})},function(err,results){if(err){return callback(err)}else{var fn=function(left,right){var a=left.criteria,b=right.criteria;return a<b?-1:a>b?1:0};callback(null,_map(results.sort(fn),function(x){return x.value}))}})};async.auto=function(tasks,callback){callback=callback||function(){};var keys=_keys(tasks);var remainingTasks=keys.length;if(!remainingTasks){return callback()}var results={};var listeners=[];var addListener=function(fn){listeners.unshift(fn)};var removeListener=function(fn){for(var i=0;i<listeners.length;i+=1){if(listeners[i]===fn){listeners.splice(i,1);return}}};var taskComplete=function(){remainingTasks--;_each(listeners.slice(0),function(fn){fn()})};addListener(function(){if(!remainingTasks){var theCallback=callback;callback=function(){};theCallback(null,results)}});_each(keys,function(k){var task=_isArray(tasks[k])?tasks[k]:[tasks[k]];var taskCallback=function(err){var args=Array.prototype.slice.call(arguments,1);if(args.length<=1){args=args[0]}if(err){var safeResults={};_each(_keys(results),function(rkey){safeResults[rkey]=results[rkey]});safeResults[k]=args;callback(err,safeResults);callback=function(){}}else{results[k]=args;async.setImmediate(taskComplete)}};var requires=task.slice(0,Math.abs(task.length-1))||[];var ready=function(){return _reduce(requires,function(a,x){return a&&results.hasOwnProperty(x)},true)&&!results.hasOwnProperty(k)};if(ready()){task[task.length-1](taskCallback,results)}else{var listener=function(){if(ready()){removeListener(listener);task[task.length-1](taskCallback,results)}};addListener(listener)}})};async.retry=function(times,task,callback){var DEFAULT_TIMES=5;var attempts=[];if(typeof times==="function"){callback=task;task=times;times=DEFAULT_TIMES}times=parseInt(times,10)||DEFAULT_TIMES;var wrappedTask=function(wrappedCallback,wrappedResults){var retryAttempt=function(task,finalAttempt){return function(seriesCallback){task(function(err,result){seriesCallback(!err||finalAttempt,{err:err,result:result})},wrappedResults)}};while(times){attempts.push(retryAttempt(task,!(times-=1)))}async.series(attempts,function(done,data){data=data[data.length-1];(wrappedCallback||callback)(data.err,data.result)})};return callback?wrappedTask():wrappedTask};async.waterfall=function(tasks,callback){callback=callback||function(){};if(!_isArray(tasks)){var err=new Error("First argument to waterfall must be an array of functions");return callback(err)}if(!tasks.length){return callback()}var wrapIterator=function(iterator){return function(err){if(err){callback.apply(null,arguments);callback=function(){}}else{var args=Array.prototype.slice.call(arguments,1);var next=iterator.next();if(next){args.push(wrapIterator(next))}else{args.push(callback)}async.setImmediate(function(){iterator.apply(null,args)})}}};wrapIterator(async.iterator(tasks))()};var _parallel=function(eachfn,tasks,callback){callback=callback||function(){};if(_isArray(tasks)){eachfn.map(tasks,function(fn,callback){if(fn){fn(function(err){var args=Array.prototype.slice.call(arguments,1);if(args.length<=1){args=args[0]}callback.call(null,err,args)})}},callback)}else{var results={};eachfn.each(_keys(tasks),function(k,callback){tasks[k](function(err){var args=Array.prototype.slice.call(arguments,1);if(args.length<=1){args=args[0]}results[k]=args;callback(err)})},function(err){callback(err,results)})}};async.parallel=function(tasks,callback){_parallel({map:async.map,each:async.each},tasks,callback)};async.parallelLimit=function(tasks,limit,callback){_parallel({map:_mapLimit(limit),each:_eachLimit(limit)},tasks,callback)};async.series=function(tasks,callback){callback=callback||function(){};if(_isArray(tasks)){async.mapSeries(tasks,function(fn,callback){if(fn){fn(function(err){var args=Array.prototype.slice.call(arguments,1);if(args.length<=1){args=args[0]}callback.call(null,err,args)})}},callback)}else{var results={};async.eachSeries(_keys(tasks),function(k,callback){tasks[k](function(err){var args=Array.prototype.slice.call(arguments,1);if(args.length<=1){args=args[0]}results[k]=args;callback(err)})},function(err){callback(err,results)})}};async.iterator=function(tasks){var makeCallback=function(index){var fn=function(){if(tasks.length){tasks[index].apply(null,arguments)}return fn.next()};fn.next=function(){return index<tasks.length-1?makeCallback(index+1):null};return fn};return makeCallback(0)};async.apply=function(fn){var args=Array.prototype.slice.call(arguments,1);return function(){return fn.apply(null,args.concat(Array.prototype.slice.call(arguments)))}};var _concat=function(eachfn,arr,fn,callback){var r=[];eachfn(arr,function(x,cb){fn(x,function(err,y){r=r.concat(y||[]);cb(err)})},function(err){callback(err,r)})};async.concat=doParallel(_concat);async.concatSeries=doSeries(_concat);async.whilst=function(test,iterator,callback){if(test()){iterator(function(err){if(err){return callback(err)}async.whilst(test,iterator,callback)})}else{callback()}};async.doWhilst=function(iterator,test,callback){iterator(function(err){if(err){return callback(err)}var args=Array.prototype.slice.call(arguments,1);if(test.apply(null,args)){async.doWhilst(iterator,test,callback)}else{callback()}})};async.until=function(test,iterator,callback){if(!test()){iterator(function(err){if(err){return callback(err)}async.until(test,iterator,callback)})}else{callback()}};async.doUntil=function(iterator,test,callback){iterator(function(err){if(err){return callback(err)}var args=Array.prototype.slice.call(arguments,1);if(!test.apply(null,args)){async.doUntil(iterator,test,callback)}else{callback()}})};async.queue=function(worker,concurrency){if(concurrency===undefined){concurrency=1}function _insert(q,data,pos,callback){if(!q.started){q.started=true}if(!_isArray(data)){data=[data]}if(data.length==0){return async.setImmediate(function(){if(q.drain){q.drain()}})}_each(data,function(task){var item={data:task,callback:typeof callback==="function"?callback:null};if(pos){q.tasks.unshift(item)}else{q.tasks.push(item)}if(q.saturated&&q.tasks.length===q.concurrency){q.saturated()}async.setImmediate(q.process)})}var workers=0;var q={tasks:[],concurrency:concurrency,saturated:null,empty:null,drain:null,started:false,paused:false,push:function(data,callback){_insert(q,data,false,callback)},kill:function(){q.drain=null;q.tasks=[]},unshift:function(data,callback){_insert(q,data,true,callback)},process:function(){if(!q.paused&&workers<q.concurrency&&q.tasks.length){var task=q.tasks.shift();if(q.empty&&q.tasks.length===0){q.empty()}workers+=1;var next=function(){workers-=1;if(task.callback){task.callback.apply(task,arguments)}if(q.drain&&q.tasks.length+workers===0){q.drain()}q.process()};var cb=only_once(next);worker(task.data,cb)}},length:function(){return q.tasks.length},running:function(){return workers},idle:function(){return q.tasks.length+workers===0},pause:function(){if(q.paused===true){return}q.paused=true;q.process()},resume:function(){if(q.paused===false){return}q.paused=false;q.process()}};return q};async.priorityQueue=function(worker,concurrency){function _compareTasks(a,b){return a.priority-b.priority}function _binarySearch(sequence,item,compare){var beg=-1,end=sequence.length-1;while(beg<end){var mid=beg+(end-beg+1>>>1);if(compare(item,sequence[mid])>=0){beg=mid}else{end=mid-1}}return beg}function _insert(q,data,priority,callback){if(!q.started){q.started=true}if(!_isArray(data)){data=[data]}if(data.length==0){return async.setImmediate(function(){if(q.drain){q.drain()}})}_each(data,function(task){var item={data:task,priority:priority,callback:typeof callback==="function"?callback:null};q.tasks.splice(_binarySearch(q.tasks,item,_compareTasks)+1,0,item);if(q.saturated&&q.tasks.length===q.concurrency){q.saturated()}async.setImmediate(q.process)})}var q=async.queue(worker,concurrency);q.push=function(data,priority,callback){_insert(q,data,priority,callback)};delete q.unshift;return q};async.cargo=function(worker,payload){var working=false,tasks=[];var cargo={tasks:tasks,payload:payload,saturated:null,empty:null,drain:null,drained:true,push:function(data,callback){if(!_isArray(data)){data=[data]}_each(data,function(task){tasks.push({data:task,callback:typeof callback==="function"?callback:null});cargo.drained=false;if(cargo.saturated&&tasks.length===payload){cargo.saturated()}});async.setImmediate(cargo.process)},process:function process(){if(working)return;if(tasks.length===0){if(cargo.drain&&!cargo.drained)cargo.drain();cargo.drained=true;return}var ts=typeof payload==="number"?tasks.splice(0,payload):tasks.splice(0,tasks.length);var ds=_map(ts,function(task){return task.data});if(cargo.empty)cargo.empty();working=true;worker(ds,function(){working=false;var args=arguments;_each(ts,function(data){if(data.callback){data.callback.apply(null,args)}});process()})},length:function(){return tasks.length},running:function(){return working}};return cargo};var _console_fn=function(name){return function(fn){var args=Array.prototype.slice.call(arguments,1);fn.apply(null,args.concat([function(err){var args=Array.prototype.slice.call(arguments,1);if(typeof console!=="undefined"){if(err){if(console.error){console.error(err)}}else if(console[name]){_each(args,function(x){console[name](x)})}}}]))}};async.log=_console_fn("log");async.dir=_console_fn("dir");async.memoize=function(fn,hasher){var memo={};var queues={};hasher=hasher||function(x){return x};var memoized=function(){var args=Array.prototype.slice.call(arguments);var callback=args.pop();var key=hasher.apply(null,args);if(key in memo){async.nextTick(function(){callback.apply(null,memo[key])})}else if(key in queues){queues[key].push(callback)}else{queues[key]=[callback];fn.apply(null,args.concat([function(){memo[key]=arguments;var q=queues[key];delete queues[key];for(var i=0,l=q.length;i<l;i++){q[i].apply(null,arguments)}}]))}};memoized.memo=memo;memoized.unmemoized=fn;return memoized};async.unmemoize=function(fn){return function(){return(fn.unmemoized||fn).apply(null,arguments)}};async.times=function(count,iterator,callback){var counter=[];for(var i=0;i<count;i++){counter.push(i)}return async.map(counter,iterator,callback)};async.timesSeries=function(count,iterator,callback){var counter=[];
for(var i=0;i<count;i++){counter.push(i)}return async.mapSeries(counter,iterator,callback)};async.seq=function(){var fns=arguments;return function(){var that=this;var args=Array.prototype.slice.call(arguments);var callback=args.pop();async.reduce(fns,args,function(newargs,fn,cb){fn.apply(that,newargs.concat([function(){var err=arguments[0];var nextargs=Array.prototype.slice.call(arguments,1);cb(err,nextargs)}]))},function(err,results){callback.apply(that,[err].concat(results))})}};async.compose=function(){return async.seq.apply(null,Array.prototype.reverse.call(arguments))};var _applyEach=function(eachfn,fns){var go=function(){var that=this;var args=Array.prototype.slice.call(arguments);var callback=args.pop();return eachfn(fns,function(fn,cb){fn.apply(that,args.concat([cb]))},callback)};if(arguments.length>2){var args=Array.prototype.slice.call(arguments,2);return go.apply(this,args)}else{return go}};async.applyEach=doParallel(_applyEach);async.applyEachSeries=doSeries(_applyEach);async.forever=function(fn,callback){function next(err){if(err){if(callback){return callback(err)}throw err}fn(next)}next()};if(typeof module!=="undefined"&&module.exports){module.exports=async}else if(typeof define!=="undefined"&&define.amd){define([],function(){return async})}else{root.async=async}})()}).call(this,require("/var/sites/requirebin-cdn/node_modules/browserify-cdn/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js"))},{"/var/sites/requirebin-cdn/node_modules/browserify-cdn/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js":361}],120:[function(require,module,exports){(function(Buffer){(function(){"use strict";function atob(str){return new Buffer(str,"base64").toString("binary")}module.exports=atob})()}).call(this,require("buffer").Buffer)},{buffer:350}],121:[function(require,module,exports){"use strict";module.exports=function(Promise){var SomePromiseArray=Promise._SomePromiseArray;function any(promises){var ret=new SomePromiseArray(promises);var promise=ret.promise();if(promise.isRejected()){return promise}ret.setHowMany(1);ret.setUnwrap();ret.init();return promise}Promise.any=function(promises){return any(promises)};Promise.prototype.any=function(){return any(this)}}},{}],122:[function(require,module,exports){(function(process){"use strict";var firstLineError;try{throw new Error}catch(e){firstLineError=e}var schedule=require("./schedule.js");var Queue=require("./queue.js");var _process=typeof process!=="undefined"?process:undefined;function Async(){this._isTickUsed=false;this._lateQueue=new Queue(16);this._normalQueue=new Queue(16);var self=this;this.drainQueues=function(){self._drainQueues()};this._schedule=schedule.isStatic?schedule(this.drainQueues):schedule}Async.prototype.haveItemsQueued=function(){return this._normalQueue.length()>0};Async.prototype._withDomain=function(fn){if(_process!==undefined&&_process.domain!=null&&!fn.domain){fn=_process.domain.bind(fn)}return fn};Async.prototype.throwLater=function(fn,arg){if(arguments.length===1){arg=fn;fn=function(){throw arg}}fn=this._withDomain(fn);if(typeof setTimeout!=="undefined"){setTimeout(function(){fn(arg)},0)}else try{this._schedule(function(){fn(arg)})}catch(e){throw new Error("No async scheduler available\n\n See http://goo.gl/m3OTXk\n")}};Async.prototype.invokeLater=function(fn,receiver,arg){fn=this._withDomain(fn);this._lateQueue.push(fn,receiver,arg);this._queueTick()};Async.prototype.invokeFirst=function(fn,receiver,arg){fn=this._withDomain(fn);this._normalQueue.unshift(fn,receiver,arg);this._queueTick()};Async.prototype.invoke=function(fn,receiver,arg){fn=this._withDomain(fn);this._normalQueue.push(fn,receiver,arg);this._queueTick()};Async.prototype.settlePromises=function(promise){this._normalQueue._pushOne(promise);this._queueTick()};Async.prototype._drainQueue=function(queue){while(queue.length()>0){var fn=queue.shift();if(typeof fn!=="function"){fn._settlePromises();continue}var receiver=queue.shift();var arg=queue.shift();fn.call(receiver,arg)}};Async.prototype._drainQueues=function(){this._drainQueue(this._normalQueue);this._reset();this._drainQueue(this._lateQueue)};Async.prototype._queueTick=function(){if(!this._isTickUsed){this._isTickUsed=true;this._schedule(this.drainQueues)}};Async.prototype._reset=function(){this._isTickUsed=false};module.exports=new Async;module.exports.firstLineError=firstLineError}).call(this,require("/var/sites/requirebin-cdn/node_modules/browserify-cdn/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js"))},{"./queue.js":144,"./schedule.js":147,"/var/sites/requirebin-cdn/node_modules/browserify-cdn/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js":361}],123:[function(require,module,exports){"use strict";var old;if(typeof Promise!=="undefined")old=Promise;function noConflict(){try{if(Promise===bluebird)Promise=old}catch(e){}return bluebird}var bluebird=require("./promise.js")();bluebird.noConflict=noConflict;module.exports=bluebird},{"./promise.js":139}],124:[function(require,module,exports){"use strict";var cr=Object.create;if(cr){var callerCache=cr(null);var getterCache=cr(null);callerCache[" size"]=getterCache[" size"]=0}module.exports=function(Promise){var util=require("./util.js");var canEvaluate=util.canEvaluate;var isIdentifier=util.isIdentifier;function makeMethodCaller(methodName){return new Function("obj"," \n 'use strict' \n var len = this.length; \n switch(len) { \n case 1: return obj.methodName(this[0]); \n case 2: return obj.methodName(this[0], this[1]); \n case 3: return obj.methodName(this[0], this[1], this[2]); \n case 0: return obj.methodName(); \n default: return obj.methodName.apply(obj, this); \n } \n ".replace(/methodName/g,methodName))}function makeGetter(propertyName){return new Function("obj"," \n 'use strict'; \n return obj.propertyName; \n ".replace("propertyName",propertyName))}function getCompiled(name,compiler,cache){var ret=cache[name];if(typeof ret!=="function"){if(!isIdentifier(name)){return null}ret=compiler(name);cache[name]=ret;cache[" size"]++;if(cache[" size"]>512){var keys=Object.keys(cache);for(var i=0;i<256;++i)delete cache[keys[i]];cache[" size"]=keys.length-256}}return ret}function getMethodCaller(name){return getCompiled(name,makeMethodCaller,callerCache)}function getGetter(name){return getCompiled(name,makeGetter,getterCache)}function caller(obj){return obj[this.pop()].apply(obj,this)}Promise.prototype.call=function(methodName){var $_len=arguments.length;var args=new Array($_len-1);for(var $_i=1;$_i<$_len;++$_i){args[$_i-1]=arguments[$_i]}if(canEvaluate){var maybeCaller=getMethodCaller(methodName);if(maybeCaller!==null){return this._then(maybeCaller,undefined,undefined,args,undefined)}}args.push(methodName);return this._then(caller,undefined,undefined,args,undefined)};function namedGetter(obj){return obj[this]}function indexedGetter(obj){var index=+this;if(index<0)index=Math.max(0,index+obj.length);return obj[index]}Promise.prototype.get=function(propertyName){var isIndex=typeof propertyName==="number";var getter;if(!isIndex){if(canEvaluate){var maybeGetter=getGetter(propertyName);getter=maybeGetter!==null?maybeGetter:namedGetter}else{getter=namedGetter}}else{getter=indexedGetter}return this._then(getter,undefined,undefined,propertyName,undefined)}}},{"./util.js":154}],125:[function(require,module,exports){"use strict";module.exports=function(Promise,INTERNAL){var errors=require("./errors.js");var async=require("./async.js");var CancellationError=errors.CancellationError;Promise.prototype._cancel=function(reason){if(!this.isCancellable())return this;var parent;var promiseToReject=this;while((parent=promiseToReject._cancellationParent)!==undefined&&parent.isCancellable()){promiseToReject=parent}this._unsetCancellable();promiseToReject._target()._rejectCallback(reason,false,true)};Promise.prototype.cancel=function(reason){if(!this.isCancellable())return this;if(reason===undefined)reason=new CancellationError;async.invokeLater(this._cancel,this,reason);return this};Promise.prototype.cancellable=function(){if(this._cancellable())return this;this._setCancellable();this._cancellationParent=undefined;return this};Promise.prototype.uncancellable=function(){var ret=new Promise(INTERNAL);ret._propagateFrom(this,4);ret._follow(this);ret._unsetCancellable();return ret};Promise.prototype.fork=function(didFulfill,didReject,didProgress){var ret=this._then(didFulfill,didReject,didProgress,undefined,undefined);ret._setCancellable();ret._cancellationParent=undefined;return ret}}},{"./async.js":122,"./errors.js":130}],126:[function(require,module,exports){(function(process){"use strict";module.exports=function(){var async=require("./async.js");var inherits=require("./util.js").inherits;var bluebirdFramePattern=/[\\\/]bluebird[\\\/]js[\\\/](main|debug|zalgo)/;var stackFramePattern=null;var formatStack=null;function CapturedTrace(parent){this._parent=parent;var length=this._length=1+(parent===undefined?0:parent._length);captureStackTrace(this,CapturedTrace);if(length>32)this.uncycle()}inherits(CapturedTrace,Error);CapturedTrace.prototype.uncycle=function(){var length=this._length;if(length<2)return;var nodes=[];var stackToIndex={};for(var i=0,node=this;node!==undefined;++i){nodes.push(node);node=node._parent}length=this._length=i;for(var i=length-1;i>=0;--i){var stack=nodes[i].stack;if(stackToIndex[stack]===undefined){stackToIndex[stack]=i}}for(var i=0;i<length;++i){var currentStack=nodes[i].stack;var index=stackToIndex[currentStack];if(index!==undefined&&index!==i){if(index>0){nodes[index-1]._parent=undefined;nodes[index-1]._length=1}nodes[i]._parent=undefined;nodes[i]._length=1;var cycleEdgeNode=i>0?nodes[i-1]:this;if(index<length-1){cycleEdgeNode._parent=nodes[index+1];cycleEdgeNode._parent.uncycle();cycleEdgeNode._length=cycleEdgeNode._parent._length+1}else{cycleEdgeNode._parent=undefined;cycleEdgeNode._length=1}var currentChildLength=cycleEdgeNode._length+1;for(var j=i-2;j>=0;--j){nodes[j]._length=currentChildLength;currentChildLength++}return}}};CapturedTrace.prototype.parent=function(){return this._parent};CapturedTrace.prototype.hasParent=function(){return this._parent!==undefined};CapturedTrace.prototype.attachExtraTrace=function(error){if(error.__stackCleaned__)return;this.uncycle();var header=CapturedTrace.cleanHeaderStack(error,false);var stacks=[header.slice(1)];var trace=this;while(trace!==undefined){stacks.push(cleanStack(trace.stack.split("\n"),0));trace=trace._parent}removeCommonRoots(stacks);removeDuplicateOrEmptyJumps(stacks);var message=header[0].split("\x00").join("\n");error.stack=reconstructStack(message,stacks)};function reconstructStack(message,stacks){for(var i=0;i<stacks.length-1;++i){stacks[i].push("From previous event:");stacks[i]=stacks[i].join("\n")}stacks[i]=stacks[i].join("\n");return message+"\n"+stacks.join("\n")}function removeDuplicateOrEmptyJumps(stacks){for(var i=0;i<stacks.length;++i){if(stacks[i].length===0||i+1<stacks.length&&stacks[i][0]===stacks[i+1][0]){stacks.splice(i,1);i--}}}function removeCommonRoots(stacks){var current=stacks[0];for(var i=1;i<stacks.length;++i){var prev=stacks[i];var currentLastIndex=current.length-1;var currentLastLine=current[currentLastIndex];var commonRootMeetPoint=-1;for(var j=prev.length-1;j>=0;--j){if(prev[j]===currentLastLine){commonRootMeetPoint=j;break}}for(var j=commonRootMeetPoint;j>=0;--j){var line=prev[j];if(current[currentLastIndex]===line){current.pop();currentLastIndex--}else{break}}current=prev}}function protectErrorMessageNewlines(stack){for(var i=0;i<stack.length;++i){var line=stack[i];if(" (No stack trace)"===line||stackFramePattern.test(line)){break}}if(i<=1)return 1;var errorMessageLines=[];for(var j=0;j<i;++j){errorMessageLines.push(stack.shift())}stack.unshift(errorMessageLines.join("\x00"));return i}function unProtectNewlines(stack){if(stack.length>0){stack[0]=stack[0].split("\x00").join("\n")}return stack}function cleanStack(stack,initialIndex){var ret=stack.slice(0,initialIndex);for(var i=initialIndex;i<stack.length;++i){var line=stack[i];var isTraceLine=stackFramePattern.test(line)||" (No stack trace)"===line;var isInternalFrame=isTraceLine&&shouldIgnore(line);if(isTraceLine&&!isInternalFrame){ret.push(line)}}return ret}CapturedTrace.cleanHeaderStack=function(error,shouldUnProtectNewlines){if(error.__stackCleaned__)return;error.__stackCleaned__=true;var stack=error.stack;stack=typeof stack==="string"?stack.split("\n"):[error.toString()," (No stack trace)"];var initialIndex=protectErrorMessageNewlines(stack);stack=cleanStack(stack,initialIndex);if(shouldUnProtectNewlines)stack=unProtectNewlines(stack);error.stack=stack.join("\n");return stack};CapturedTrace.formatAndLogError=function(error,title){if(typeof console==="object"){var message;if(typeof error==="object"||typeof error==="function"){var stack=error.stack;message=title+formatStack(stack,error)}else{message=title+String(error)}if(typeof console.warn==="function"||typeof console.warn==="object"){console.warn(message)}else if(typeof console.log==="function"||typeof console.log==="object"){console.log(message)}}};CapturedTrace.unhandledRejection=function(reason){CapturedTrace.formatAndLogError(reason,"^--- With additional stack trace: ")};CapturedTrace.isSupported=function(){return typeof captureStackTrace==="function"};CapturedTrace.fireRejectionEvent=function(name,localHandler,reason,promise){var localEventFired=false;try{if(typeof localHandler==="function"){localEventFired=true;if(name==="rejectionHandled"){localHandler(promise)}else{localHandler(reason,promise)}}}catch(e){async.throwLater(e)}var globalEventFired=false;try{globalEventFired=fireGlobalEvent(name,reason,promise)}catch(e){globalEventFired=true;async.throwLater(e)}var domEventFired=false;if(fireDomEvent){try{domEventFired=fireDomEvent(name.toLowerCase(),{reason:reason,promise:promise})}catch(e){domEventFired=true;async.throwLater(e)}}if(!globalEventFired&&!localEventFired&&!domEventFired&&name==="unhandledRejection"){CapturedTrace.formatAndLogError(reason,"Possibly unhandled ")}};function formatNonError(obj){var str;if(typeof obj==="function"){str="[function "+(obj.name||"anonymous")+"]"}else{str=obj.toString();var ruselessToString=/\[object [a-zA-Z0-9$_]+\]/;if(ruselessToString.test(str)){try{var newStr=JSON.stringify(obj);str=newStr}catch(e){}}if(str.length===0){str="(empty array)"}}return"(<"+snip(str)+">, no stack trace)"}function snip(str){var maxChars=41;if(str.length<maxChars){return str}return str.substr(0,maxChars-3)+"..."}var shouldIgnore=function(){return false};var parseLineInfoRegex=/[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;function parseLineInfo(line){var matches=line.match(parseLineInfoRegex);if(matches){return{fileName:matches[1],line:parseInt(matches[2],10)}}}CapturedTrace.setBounds=function(firstLineError,lastLineError){if(!CapturedTrace.isSupported())return;var firstStackLines=firstLineError.stack.split("\n");var lastStackLines=lastLineError.stack.split("\n");var firstIndex=-1;var lastIndex=-1;var firstFileName;var lastFileName;for(var i=0;i<firstStackLines.length;++i){var result=parseLineInfo(firstStackLines[i]);if(result){firstFileName=result.fileName;firstIndex=result.line;break}}for(var i=0;i<lastStackLines.length;++i){var result=parseLineInfo(lastStackLines[i]);if(result){lastFileName=result.fileName;lastIndex=result.line;break}}if(firstIndex<0||lastIndex<0||!firstFileName||!lastFileName||firstFileName!==lastFileName||firstIndex>=lastIndex){return}shouldIgnore=function(line){if(bluebirdFramePattern.test(line))return true;var info=parseLineInfo(line);if(info){if(info.fileName===firstFileName&&(firstIndex<=info.line&&info.line<=lastIndex)){return true}}return false}};var captureStackTrace=function stackDetection(){var v8stackFramePattern=/^\s*at\s*/;var v8stackFormatter=function(stack,error){if(typeof stack==="string")return stack;if(error.name!==undefined&&error.message!==undefined){return error.name+". "+error.message}return formatNonError(error)};if(typeof Error.stackTraceLimit==="number"&&typeof Error.captureStackTrace==="function"){Error.stackTraceLimit=Error.stackTraceLimit+6;stackFramePattern=v8stackFramePattern;formatStack=v8stackFormatter;var captureStackTrace=Error.captureStackTrace;shouldIgnore=function(line){return bluebirdFramePattern.test(line)};return function(receiver,ignoreUntil){Error.stackTraceLimit=Error.stackTraceLimit+6;captureStackTrace(receiver,ignoreUntil);Error.stackTraceLimit=Error.stackTraceLimit-6}}var err=new Error;if(typeof err.stack==="string"&&typeof"".startsWith==="function"&&err.stack.startsWith("stackDetection@")&&stackDetection.name==="stackDetection"){stackFramePattern=/@/;var rline=/[@\n]/;formatStack=function(stack,error){if(typeof stack==="string"){return error.name+". "+error.message+"\n"+stack}if(error.name!==undefined&&error.message!==undefined){return error.name+". "+error.message}return formatNonError(error)};return function captureStackTrace(o){var stack=(new Error).stack;var split=stack.split(rline);var len=split.length;var ret="";for(var i=0;i<len;i+=2){ret+=split[i];ret+="@";ret+=split[i+1];ret+="\n"}o.stack=ret}}var hasStackAfterThrow;try{throw new Error}catch(e){hasStackAfterThrow="stack"in e}if(!("stack"in err)&&hasStackAfterThrow){stackFramePattern=v8stackFramePattern;formatStack=v8stackFormatter;return function captureStackTrace(o){try{throw new Error}catch(e){o.stack=e.stack}}}formatStack=function(stack,error){if(typeof stack==="string")return stack;if((typeof error==="object"||typeof error==="function")&&error.name!==undefined&&error.message!==undefined){return error.name+". "+error.message}return formatNonError(error)};return null}();var fireDomEvent;var fireGlobalEvent=function(){if(typeof process!=="undefined"&&typeof process.version==="string"&&typeof window==="undefined"){return function(name,reason,promise){if(name==="rejectionHandled"){return process.emit(name,promise)}else{return process.emit(name,reason,promise)}}}else{var customEventWorks=false;try{var ev=new self.CustomEvent("test");customEventWorks=ev instanceof CustomEvent}catch(e){}fireDomEvent=function(type,detail){var event;if(customEventWorks){event=new self.CustomEvent(type,{detail:detail,bubbles:false,cancelable:true})}else if(self.dispatchEvent){event=document.createEvent("CustomEvent");event.initCustomEvent(type,false,true,detail)}return event?!self.dispatchEvent(event):false};var toWindowMethodNameMap={};toWindowMethodNameMap["unhandledRejection"]=("on"+"unhandledRejection").toLowerCase();toWindowMethodNameMap["rejectionHandled"]=("on"+"rejectionHandled").toLowerCase();return function(name,reason,promise){var methodName=toWindowMethodNameMap[name];var method=self[methodName];if(!method)return false;if(name==="rejectionHandled"){method.call(self,promise)}else{method.call(self,reason,promise)}return true}}}();return CapturedTrace}}).call(this,require("/var/sites/requirebin-cdn/node_modules/browserify-cdn/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js"))},{"./async.js":122,"./util.js":154,"/var/sites/requirebin-cdn/node_modules/browserify-cdn/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js":361}],127:[function(require,module,exports){"use strict";module.exports=function(NEXT_FILTER){var util=require("./util.js");var errors=require("./errors.js");var tryCatch=util.tryCatch;var errorObj=util.errorObj;var keys=require("./es5.js").keys;var TypeError=errors.TypeError;function CatchFilter(instances,callback,promise){this._instances=instances;this._callback=callback;this._promise=promise}function safePredicate(predicate,e){var safeObject={};var retfilter=tryCatch(predicate).call(safeObject,e);if(retfilter===errorObj)return retfilter;var safeKeys=keys(safeObject);if(safeKeys.length){errorObj.e=new TypeError("Catch filter must inherit from Error or be a simple predicate function\n\n See http://goo.gl/o84o68\n");return errorObj}return retfilter}CatchFilter.prototype.doFilter=function(e){var cb=this._callback;var promise=this._promise;var boundTo=promise._boundTo;for(var i=0,len=this._instances.length;i<len;++i){var item=this._instances[i];var itemIsErrorType=item===Error||item!=null&&item.prototype instanceof Error;if(itemIsErrorType&&e instanceof item){var ret=tryCatch(cb).call(boundTo,e);if(ret===errorObj){NEXT_FILTER.e=ret.e;return NEXT_FILTER}return ret}else if(typeof item==="function"&&!itemIsErrorType){var shouldHandle=safePredicate(item,e);if(shouldHandle===errorObj){e=errorObj.e;break}else if(shouldHandle){var ret=tryCatch(cb).call(boundTo,e);if(ret===errorObj){NEXT_FILTER.e=ret.e;return NEXT_FILTER}return ret}}}NEXT_FILTER.e=e;return NEXT_FILTER};return CatchFilter}},{"./errors.js":130,"./es5.js":131,"./util.js":154}],128:[function(require,module,exports){"use strict";var util=require("./util.js");var isPrimitive=util.isPrimitive;var wrapsPrimitiveReceiver=util.wrapsPrimitiveReceiver;module.exports=function(Promise){var returner=function(){return this};var thrower=function(){throw this};var wrapper=function(value,action){if(action===1){return function(){throw value}}else if(action===2){return function(){return value}}};Promise.prototype["return"]=Promise.prototype.thenReturn=function(value){if(wrapsPrimitiveReceiver&&isPrimitive(value)){return this._then(wrapper(value,2),undefined,undefined,undefined,undefined)}return this._then(returner,undefined,undefined,value,undefined)};Promise.prototype["throw"]=Promise.prototype.thenThrow=function(reason){if(wrapsPrimitiveReceiver&&isPrimitive(reason)){return this._then(wrapper(reason,1),undefined,undefined,undefined,undefined)}return this._then(thrower,undefined,undefined,reason,undefined)}}},{"./util.js":154}],129:[function(require,module,exports){"use strict";module.exports=function(Promise,INTERNAL){var PromiseReduce=Promise.reduce;Promise.prototype.each=function(fn){return PromiseReduce(this,fn,null,INTERNAL)};Promise.each=function(promises,fn){return PromiseReduce(promises,fn,null,INTERNAL)}}},{}],130:[function(require,module,exports){"use strict";var Objectfreeze=require("./es5.js").freeze;var util=require("./util.js");var inherits=util.inherits;var notEnumerableProp=util.notEnumerableProp;function subError(nameProperty,defaultMessage){function SubError(message){if(!(this instanceof SubError))return new SubError(message);notEnumerableProp(this,"message",typeof message==="string"?message:defaultMessage);notEnumerableProp(this,"name",nameProperty);if(Error.captureStackTrace){Error.captureStackTrace(this,this.constructor)}}inherits(SubError,Error);return SubError}var _TypeError,_RangeError;var CancellationError=subError("CancellationError","cancellation error");var TimeoutError=subError("TimeoutError","timeout error");var AggregateError=subError("AggregateError","aggregate error");try{_TypeError=TypeError;_RangeError=RangeError}catch(e){_TypeError=subError("TypeError","type error");_RangeError=subError("RangeError","range error")}var methods=("join pop push shift unshift slice filter forEach some "+"every map indexOf lastIndexOf reduce reduceRight sort reverse").split(" ");for(var i=0;i<methods.length;++i){if(typeof Array.prototype[methods[i]]==="function"){AggregateError.prototype[methods[i]]=Array.prototype[methods[i]]}}AggregateError.prototype.length=0;AggregateError.prototype["isOperational"]=true;var level=0;AggregateError.prototype.toString=function(){var indent=Array(level*4+1).join(" ");var ret="\n"+indent+"AggregateError of:"+"\n";level++;indent=Array(level*4+1).join(" ");for(var i=0;i<this.length;++i){var str=this[i]===this?"[Circular AggregateError]":this[i]+"";var lines=str.split("\n");for(var j=0;j<lines.length;++j){lines[j]=indent+lines[j]}str=lines.join("\n");ret+=str+"\n"}level--;return ret};function OperationalError(message){notEnumerableProp(this,"name","OperationalError");notEnumerableProp(this,"message",message);this.cause=message;this["isOperational"]=true;if(message instanceof Error){notEnumerableProp(this,"message",message.message);notEnumerableProp(this,"stack",message.stack)}else if(Error.captureStackTrace){Error.captureStackTrace(this,this.constructor)}}inherits(OperationalError,Error);var errorTypes=Error["__BluebirdErrorTypes__"];if(!errorTypes){errorTypes=Objectfreeze({CancellationError:CancellationError,TimeoutError:TimeoutError,OperationalError:OperationalError,RejectionError:OperationalError,AggregateError:AggregateError});notEnumerableProp(Error,"__BluebirdErrorTypes__",errorTypes)}module.exports={Error:Error,TypeError:_TypeError,RangeError:_RangeError,CancellationError:errorTypes.CancellationError,OperationalError:errorTypes.OperationalError,TimeoutError:errorTypes.TimeoutError,AggregateError:errorTypes.AggregateError}},{"./es5.js":131,"./util.js":154}],131:[function(require,module,exports){var isES5=function(){"use strict";return this===undefined}();if(isES5){module.exports={freeze:Object.freeze,defineProperty:Object.defineProperty,keys:Object.keys,getPrototypeOf:Object.getPrototypeOf,isArray:Array.isArray,isES5:isES5,propertyIsWritable:function(obj,prop){var descriptor=Object.getOwnPropertyDescriptor(obj,prop);return!!(!descriptor||descriptor.writable||descriptor.set)}}}else{var has={}.hasOwnProperty;var str={}.toString;var proto={}.constructor.prototype;var ObjectKeys=function(o){var ret=[];for(var key in o){if(has.call(o,key)){ret.push(key)}}return ret};var ObjectDefineProperty=function(o,key,desc){o[key]=desc.value;return o};var ObjectFreeze=function(obj){return obj};var ObjectGetPrototypeOf=function(obj){try{return Object(obj).constructor.prototype}catch(e){return proto}};var ArrayIsArray=function(obj){try{return str.call(obj)==="[object Array]"}catch(e){return false}};module.exports={isArray:ArrayIsArray,keys:ObjectKeys,defineProperty:ObjectDefineProperty,freeze:ObjectFreeze,getPrototypeOf:ObjectGetPrototypeOf,isES5:isES5,propertyIsWritable:function(){return true}}}},{}],132:[function(require,module,exports){"use strict";module.exports=function(Promise,INTERNAL){var PromiseMap=Promise.map;Promise.prototype.filter=function(fn,options){return PromiseMap(this,fn,options,INTERNAL)};Promise.filter=function(promises,fn,options){return PromiseMap(promises,fn,options,INTERNAL)}}},{}],133:[function(require,module,exports){"use strict";module.exports=function(Promise,NEXT_FILTER,tryConvertToPromise){var util=require("./util.js");var wrapsPrimitiveReceiver=util.wrapsPrimitiveReceiver;var isPrimitive=util.isPrimitive;var thrower=util.thrower;function returnThis(){return this}function throwThis(){throw this}function return$(r){return function(){return r}}function throw$(r){return function(){throw r}}function promisedFinally(ret,reasonOrValue,isFulfilled){var then;if(wrapsPrimitiveReceiver&&isPrimitive(reasonOrValue)){then=isFulfilled?return$(reasonOrValue):throw$(reasonOrValue)}else{then=isFulfilled?returnThis:throwThis}return ret._then(then,thrower,undefined,reasonOrValue,undefined)}function finallyHandler(reasonOrValue){var promise=this.promise;var handler=this.handler;var ret=promise._isBound()?handler.call(promise._boundTo):handler();if(ret!==undefined){var maybePromise=tryConvertToPromise(ret,promise);if(maybePromise instanceof Promise){maybePromise=maybePromise._target();return promisedFinally(maybePromise,reasonOrValue,promise.isFulfilled())}}if(promise.isRejected()){NEXT_FILTER.e=reasonOrValue;return NEXT_FILTER}else{return reasonOrValue}}function tapHandler(value){var promise=this.promise;var handler=this.handler;var ret=promise._isBound()?handler.call(promise._boundTo,value):handler(value);if(ret!==undefined){var maybePromise=tryConvertToPromise(ret,promise);if(maybePromise instanceof Promise){maybePromise=maybePromise._target();return promisedFinally(maybePromise,value,true)}}return value}Promise.prototype._passThroughHandler=function(handler,isFinally){if(typeof handler!=="function")return this.then();var promiseAndHandler={promise:this,handler:handler};return this._then(isFinally?finallyHandler:tapHandler,isFinally?finallyHandler:undefined,undefined,promiseAndHandler,undefined)};Promise.prototype.lastly=Promise.prototype["finally"]=function(handler){return this._passThroughHandler(handler,true)};Promise.prototype.tap=function(handler){return this._passThroughHandler(handler,false)}}},{"./util.js":154}],134:[function(require,module,exports){"use strict";module.exports=function(Promise,apiRejection,INTERNAL,tryConvertToPromise){var errors=require("./errors.js");var TypeError=errors.TypeError;var deprecated=require("./util.js").deprecated;var util=require("./util.js");var errorObj=util.errorObj;var tryCatch=util.tryCatch;var yieldHandlers=[];function promiseFromYieldHandler(value,yieldHandlers,traceParent){for(var i=0;i<yieldHandlers.length;++i){traceParent._pushContext();var result=tryCatch(yieldHandlers[i])(value);traceParent._popContext();if(result===errorObj){traceParent._pushContext();var ret=Promise.reject(errorObj.e);traceParent._popContext();return ret}var maybePromise=tryConvertToPromise(result,traceParent);if(maybePromise instanceof Promise)return maybePromise}return null}function PromiseSpawn(generatorFunction,receiver,yieldHandler,stack){var promise=this._promise=new Promise(INTERNAL);promise._captureStackTrace();this._stack=stack;this._generatorFunction=generatorFunction;this._receiver=receiver;this._generator=undefined;this._yieldHandlers=typeof yieldHandler==="function"?[yieldHandler].concat(yieldHandlers):yieldHandlers}PromiseSpawn.prototype.promise=function(){return this._promise};PromiseSpawn.prototype._run=function(){this._generator=this._generatorFunction.call(this._receiver);this._receiver=this._generatorFunction=undefined;this._next(undefined)};PromiseSpawn.prototype._continue=function(result){if(result===errorObj){this._generator=undefined;var trace=util.canAttachTrace(result.e)?result.e:new Error(util.toString(result.e));this._promise._attachExtraTrace(trace);this._promise._reject(result.e,trace);return}var value=result.value;if(result.done===true){this._generator=undefined;if(!this._promise._tryFollow(value)){this._promise._fulfill(value)}}else{var maybePromise=tryConvertToPromise(value,this._promise);if(!(maybePromise instanceof Promise)){maybePromise=promiseFromYieldHandler(maybePromise,this._yieldHandlers,this._promise);if(maybePromise===null){this._throw(new TypeError("A value %s was yielded that could not be treated as a promise\n\n See http://goo.gl/4Y4pDk\n\n".replace("%s",value)+"From coroutine:\n"+this._stack.split("\n").slice(1,-7).join("\n")));return}}maybePromise._then(this._next,this._throw,undefined,this,null)}};PromiseSpawn.prototype._throw=function(reason){if(util.canAttachTrace(reason))this._promise._attachExtraTrace(reason);this._promise._pushContext();var result=tryCatch(this._generator["throw"]).call(this._generator,reason);this._promise._popContext();this._continue(result)};PromiseSpawn.prototype._next=function(value){this._promise._pushContext();var result=tryCatch(this._generator.next).call(this._generator,value);this._promise._popContext();this._continue(result)};Promise.coroutine=function(generatorFunction,options){if(typeof generatorFunction!=="function"){throw new TypeError("generatorFunction must be a function\n\n See http://goo.gl/6Vqhm0\n")}var yieldHandler=Object(options).yieldHandler;var PromiseSpawn$=PromiseSpawn;
var stack=(new Error).stack;return function(){var generator=generatorFunction.apply(this,arguments);var spawn=new PromiseSpawn$(undefined,undefined,yieldHandler,stack);spawn._generator=generator;spawn._next(undefined);return spawn.promise()}};Promise.coroutine.addYieldHandler=function(fn){if(typeof fn!=="function")throw new TypeError("fn must be a function\n\n See http://goo.gl/916lJJ\n");yieldHandlers.push(fn)};Promise.spawn=function(generatorFunction){deprecated("Promise.spawn is deprecated. Use Promise.coroutine instead.");if(typeof generatorFunction!=="function"){return apiRejection("generatorFunction must be a function\n\n See http://goo.gl/6Vqhm0\n")}var spawn=new PromiseSpawn(generatorFunction,this);var ret=spawn.promise();spawn._run(Promise.spawn);return ret}}},{"./errors.js":130,"./util.js":154}],135:[function(require,module,exports){"use strict";module.exports=function(Promise,PromiseArray,tryConvertToPromise,INTERNAL){var util=require("./util.js");var canEvaluate=util.canEvaluate;var tryCatch=util.tryCatch;var errorObj=util.errorObj;if(canEvaluate){var thenCallback=function(i){return new Function("value","holder"," \n 'use strict'; \n holder.pIndex = value; \n holder.checkFulfillment(this); \n ".replace(/Index/g,i))};var caller=function(count){var values=[];for(var i=1;i<=count;++i)values.push("holder.p"+i);return new Function("holder"," \n 'use strict'; \n var callback = holder.fn; \n return callback(values); \n ".replace(/values/g,values.join(", ")))};var thenCallbacks=[];var callers=[undefined];for(var i=1;i<=5;++i){thenCallbacks.push(thenCallback(i));callers.push(caller(i))}var Holder=function(total,fn){this.p1=this.p2=this.p3=this.p4=this.p5=null;this.fn=fn;this.total=total;this.now=0};Holder.prototype.callers=callers;Holder.prototype.checkFulfillment=function(promise){var now=this.now;now++;var total=this.total;if(now>=total){var handler=this.callers[total];promise._pushContext();var ret=tryCatch(handler)(this);promise._popContext();if(ret===errorObj){promise._rejectCallback(ret.e,false,true)}else if(!promise._tryFollow(ret)){promise._fulfillUnchecked(ret)}}else{this.now=now}}}function reject(reason){this._reject(reason)}Promise.join=function(){var last=arguments.length-1;var fn;if(last>0&&typeof arguments[last]==="function"){fn=arguments[last];if(last<6&&canEvaluate){var ret=new Promise(INTERNAL);ret._captureStackTrace();var holder=new Holder(last,fn);var callbacks=thenCallbacks;for(var i=0;i<last;++i){var maybePromise=tryConvertToPromise(arguments[i],ret);if(maybePromise instanceof Promise){maybePromise=maybePromise._target();if(maybePromise._isPending()){maybePromise._then(callbacks[i],reject,undefined,ret,holder)}else if(maybePromise._isFulfilled()){callbacks[i].call(ret,maybePromise._value(),holder)}else{ret._reject(maybePromise._reason())}}else{callbacks[i].call(ret,maybePromise,holder)}}return ret}}var $_len=arguments.length;var args=new Array($_len);for(var $_i=0;$_i<$_len;++$_i){args[$_i]=arguments[$_i]}var ret=new PromiseArray(args).promise();return fn!==undefined?ret.spread(fn):ret}}},{"./util.js":154}],136:[function(require,module,exports){"use strict";module.exports=function(Promise,PromiseArray,apiRejection,tryConvertToPromise,INTERNAL){var util=require("./util.js");var tryCatch=util.tryCatch;var errorObj=util.errorObj;var PENDING={};var EMPTY_ARRAY=[];function MappingPromiseArray(promises,fn,limit,_filter){this.constructor$(promises);this._promise._setIsSpreadable();this._promise._captureStackTrace();this._callback=fn;this._preservedValues=_filter===INTERNAL?new Array(this.length()):null;this._limit=limit;this._inFlight=0;this._queue=limit>=1?[]:EMPTY_ARRAY;this._init$(undefined,-2)}util.inherits(MappingPromiseArray,PromiseArray);MappingPromiseArray.prototype._init=function(){};MappingPromiseArray.prototype._promiseFulfilled=function(value,index){var values=this._values;var length=this.length();var preservedValues=this._preservedValues;var limit=this._limit;if(values[index]===PENDING){values[index]=value;if(limit>=1){this._inFlight--;this._drainQueue();if(this._isResolved())return}}else{if(limit>=1&&this._inFlight>=limit){values[index]=value;this._queue.push(index);return}if(preservedValues!==null)preservedValues[index]=value;var callback=this._callback;var receiver=this._promise._boundTo;this._promise._pushContext();var ret=tryCatch(callback).call(receiver,value,index,length);this._promise._popContext();if(ret===errorObj)return this._reject(ret.e);var maybePromise=tryConvertToPromise(ret,this._promise);if(maybePromise instanceof Promise){maybePromise=maybePromise._target();if(maybePromise._isPending()){if(limit>=1)this._inFlight++;values[index]=PENDING;return maybePromise._proxyPromiseArray(this,index)}else if(maybePromise._isFulfilled()){ret=maybePromise._value()}else{return this._reject(maybePromise._reason())}}values[index]=ret}var totalResolved=++this._totalResolved;if(totalResolved>=length){if(preservedValues!==null){this._filter(values,preservedValues)}else{this._resolve(values)}}};MappingPromiseArray.prototype._drainQueue=function(){var queue=this._queue;var limit=this._limit;var values=this._values;while(queue.length>0&&this._inFlight<limit){if(this._isResolved())return;var index=queue.pop();this._promiseFulfilled(values[index],index)}};MappingPromiseArray.prototype._filter=function(booleans,values){var len=values.length;var ret=new Array(len);var j=0;for(var i=0;i<len;++i){if(booleans[i])ret[j++]=values[i]}ret.length=j;this._resolve(ret)};MappingPromiseArray.prototype.preservedValues=function(){return this._preservedValues};function map(promises,fn,options,_filter){var limit=typeof options==="object"&&options!==null?options.concurrency:0;limit=typeof limit==="number"&&isFinite(limit)&&limit>=1?limit:0;return new MappingPromiseArray(promises,fn,limit,_filter)}Promise.prototype.map=function(fn,options){if(typeof fn!=="function")return apiRejection("fn must be a function\n\n See http://goo.gl/916lJJ\n");return map(this,fn,options,null).promise()};Promise.map=function(promises,fn,options,_filter){if(typeof fn!=="function")return apiRejection("fn must be a function\n\n See http://goo.gl/916lJJ\n");return map(promises,fn,options,_filter).promise()}}},{"./util.js":154}],137:[function(require,module,exports){"use strict";module.exports=function(Promise){var util=require("./util.js");var async=require("./async.js");var tryCatch=util.tryCatch;var errorObj=util.errorObj;function spreadAdapter(val,nodeback){var promise=this;if(!util.isArray(val))return successAdapter.call(promise,val,nodeback);var ret=tryCatch(nodeback).apply(promise._boundTo,[null].concat(val));if(ret===errorObj){async.throwLater(ret.e)}}function successAdapter(val,nodeback){var promise=this;var receiver=promise._boundTo;var ret=val===undefined?tryCatch(nodeback).call(receiver,null):tryCatch(nodeback).call(receiver,null,val);if(ret===errorObj){async.throwLater(ret.e)}}function errorAdapter(reason,nodeback){var promise=this;if(!reason){var target=promise._target();var newReason=target._getCarriedStackTrace();newReason.cause=reason;reason=newReason}var ret=tryCatch(nodeback).call(promise._boundTo,reason);if(ret===errorObj){async.throwLater(ret.e)}}Promise.prototype.nodeify=function(nodeback,options){if(typeof nodeback=="function"){var adapter=successAdapter;if(options!==undefined&&Object(options).spread){adapter=spreadAdapter}this._then(adapter,errorAdapter,undefined,this,nodeback)}return this}}},{"./async.js":122,"./util.js":154}],138:[function(require,module,exports){"use strict";module.exports=function(Promise,PromiseArray){var util=require("./util.js");var async=require("./async.js");var tryCatch=util.tryCatch;var errorObj=util.errorObj;Promise.prototype.progressed=function(handler){return this._then(undefined,undefined,handler,undefined,undefined)};Promise.prototype._progress=function(progressValue){if(this._isFollowingOrFulfilledOrRejected())return;this._target()._progressUnchecked(progressValue)};Promise.prototype._progressHandlerAt=function(index){return index===0?this._progressHandler0:this[(index<<2)+index-5+2]};Promise.prototype._doProgressWith=function(progression){var progressValue=progression.value;var handler=progression.handler;var promise=progression.promise;var receiver=progression.receiver;var ret=tryCatch(handler).call(receiver,progressValue);if(ret===errorObj){if(ret.e!=null&&ret.e.name!=="StopProgressPropagation"){var trace=util.canAttachTrace(ret.e)?ret.e:new Error(util.toString(ret.e));promise._attachExtraTrace(trace);promise._progress(ret.e)}}else if(ret instanceof Promise){ret._then(promise._progress,null,null,promise,undefined)}else{promise._progress(ret)}};Promise.prototype._progressUnchecked=function(progressValue){var len=this._length();var progress=this._progress;for(var i=0;i<len;i++){var handler=this._progressHandlerAt(i);var promise=this._promiseAt(i);if(!(promise instanceof Promise)){var receiver=this._receiverAt(i);if(typeof handler==="function"){handler.call(receiver,progressValue,promise)}else if(receiver instanceof PromiseArray&&!receiver._isResolved()){receiver._promiseProgressed(progressValue,promise)}continue}if(typeof handler==="function"){async.invoke(this._doProgressWith,this,{handler:handler,promise:promise,receiver:this._receiverAt(i),value:progressValue})}else{async.invoke(progress,promise,progressValue)}}}}},{"./async.js":122,"./util.js":154}],139:[function(require,module,exports){(function(process){"use strict";module.exports=function(){var makeSelfResolutionError=function(){return new TypeError("circular promise resolution chain\n\n See http://goo.gl/LhFpo0\n")};var reflect=function(){return new Promise.PromiseInspection(this._target())};var apiRejection=function(msg){return Promise.reject(new TypeError(msg))};var util=require("./util.js");var async=require("./async.js");var errors=require("./errors.js");var RangeError=errors.RangeError;var TypeError=errors.TypeError;var CancellationError=errors.CancellationError;var TimeoutError=errors.TimeoutError;var OperationalError=errors.OperationalError;var INTERNAL=function(){};var APPLY={};var NEXT_FILTER={e:null};var tryConvertToPromise=require("./thenables.js")(Promise,INTERNAL);var PromiseArray=require("./promise_array.js")(Promise,INTERNAL,tryConvertToPromise,apiRejection);var CapturedTrace=require("./captured_trace.js")();var CatchFilter=require("./catch_filter.js")(NEXT_FILTER);var PromiseResolver=require("./promise_resolver.js");var isArray=util.isArray;var errorObj=util.errorObj;var tryCatch=util.tryCatch;var originatesFromRejection=util.originatesFromRejection;var markAsOriginatingFromRejection=util.markAsOriginatingFromRejection;var canAttachTrace=util.canAttachTrace;var unhandledRejectionHandled;var possiblyUnhandledRejection;var debugging=false||!!(typeof process!=="undefined"&&typeof process.execPath==="string"&&typeof process.env==="object"&&(process.env["BLUEBIRD_DEBUG"]||process.env["NODE_ENV"]==="development"));function Promise(resolver){if(typeof resolver!=="function"){throw new TypeError("the promise constructor requires a resolver function\n\n See http://goo.gl/EC22Yn\n")}if(this.constructor!==Promise){throw new TypeError("the promise constructor cannot be invoked directly\n\n See http://goo.gl/KsIlge\n")}this._bitField=0;this._fulfillmentHandler0=undefined;this._rejectionHandler0=undefined;this._progressHandler0=undefined;this._promise0=undefined;this._receiver0=undefined;this._settledValue=undefined;this._boundTo=undefined;if(resolver!==INTERNAL)this._resolveFromResolver(resolver)}Promise.prototype.bind=function(thisArg){var maybePromise=tryConvertToPromise(thisArg);var ret=new Promise(INTERNAL);ret._propagateFrom(this,1);var target=this._target();if(maybePromise instanceof Promise){target._then(INTERNAL,ret._reject,ret._progress,ret,null);maybePromise._then(function(thisArg){if(ret._isPending()){ret._setBoundTo(thisArg);ret._follow(target)}},ret._reject,ret._progress,ret,null)}else{ret._setBoundTo(thisArg);ret._follow(target)}return ret};Promise.prototype.toString=function(){return"[object Promise]"};Promise.prototype.caught=Promise.prototype["catch"]=function(fn){var len=arguments.length;if(len>1){var catchInstances=new Array(len-1),j=0,i;for(i=0;i<len-1;++i){var item=arguments[i];if(typeof item==="function"){catchInstances[j++]=item}else{return Promise.reject(new TypeError("Catch filter must inherit from Error or be a simple predicate function\n\n See http://goo.gl/o84o68\n"))}}catchInstances.length=j;fn=arguments[i];var catchFilter=new CatchFilter(catchInstances,fn,this);return this._then(undefined,catchFilter.doFilter,undefined,catchFilter,undefined)}return this._then(undefined,fn,undefined,undefined,undefined)};Promise.prototype.reflect=function(){return this._then(reflect,reflect,undefined,this,undefined)};Promise.prototype.then=function(didFulfill,didReject,didProgress){return this._then(didFulfill,didReject,didProgress,undefined,undefined)};Promise.prototype.done=function(didFulfill,didReject,didProgress){var promise=this._then(didFulfill,didReject,didProgress,undefined,undefined);promise._setIsFinal()};Promise.prototype.spread=function(didFulfill,didReject){var followee=this._target();var target=followee._isSpreadable()?followee===this?this:this.then():this.all();return target._then(didFulfill,didReject,undefined,APPLY,undefined)};Promise.prototype.isCancellable=function(){return!this.isResolved()&&this._cancellable()};Promise.prototype.toJSON=function(){var ret={isFulfilled:false,isRejected:false,fulfillmentValue:undefined,rejectionReason:undefined};if(this.isFulfilled()){ret.fulfillmentValue=this.value();ret.isFulfilled=true}else if(this.isRejected()){ret.rejectionReason=this.reason();ret.isRejected=true}return ret};Promise.prototype.all=function(){var ret=new PromiseArray(this).promise();ret._setIsSpreadable();return ret};Promise.prototype.error=function(fn){return this.caught(originatesFromRejection,fn)};Promise.is=function(val){return val instanceof Promise};Promise.all=function(promises){var ret=new PromiseArray(promises).promise();ret._setIsSpreadable();return ret};Promise.method=function(fn){if(typeof fn!=="function"){throw new TypeError("fn must be a function\n\n See http://goo.gl/916lJJ\n")}return function(){var ret=new Promise(INTERNAL);ret._captureStackTrace();ret._pushContext();var value=tryCatch(fn).apply(this,arguments);ret._popContext();ret._resolveFromSyncValue(value);return ret}};Promise.attempt=Promise["try"]=function(fn,args,ctx){if(typeof fn!=="function"){return apiRejection("fn must be a function\n\n See http://goo.gl/916lJJ\n")}var ret=new Promise(INTERNAL);ret._captureStackTrace();ret._pushContext();var value=isArray(args)?tryCatch(fn).apply(ctx,args):tryCatch(fn).call(ctx,args);ret._popContext();ret._resolveFromSyncValue(value);return ret};Promise.defer=Promise.pending=function(){var promise=new Promise(INTERNAL);return new PromiseResolver(promise)};Promise.bind=function(thisArg){var maybePromise=tryConvertToPromise(thisArg);var ret=new Promise(INTERNAL);if(maybePromise instanceof Promise){maybePromise._then(function(thisArg){ret._setBoundTo(thisArg);ret._fulfill(undefined)},ret._reject,ret._progress,ret,null)}else{ret._setBoundTo(thisArg);ret._setFulfilled()}return ret};Promise.cast=function(obj){var ret=tryConvertToPromise(obj);if(!(ret instanceof Promise)){var val=ret;ret=new Promise(INTERNAL);ret._setFulfilled();ret._settledValue=val;ret._cleanValues()}return ret};Promise.resolve=Promise.fulfilled=Promise.cast;Promise.reject=Promise.rejected=function(reason){var ret=new Promise(INTERNAL);ret._captureStackTrace();ret._rejectCallback(reason,true);return ret};Promise.onPossiblyUnhandledRejection=function(fn){possiblyUnhandledRejection=typeof fn==="function"?fn:undefined};Promise.onUnhandledRejectionHandled=function(fn){unhandledRejectionHandled=typeof fn==="function"?fn:undefined};Promise.longStackTraces=function(){if(async.haveItemsQueued()&&debugging===false){throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/DT1qyG\n")}debugging=CapturedTrace.isSupported()};Promise.hasLongStackTraces=function(){return debugging&&CapturedTrace.isSupported()};Promise.setScheduler=function(fn){if(typeof fn!=="function")throw new TypeError("fn must be a function\n\n See http://goo.gl/916lJJ\n");async._schedule=fn};Promise.prototype._then=function(didFulfill,didReject,didProgress,receiver,internalData){var haveInternalData=internalData!==undefined;var ret=haveInternalData?internalData:new Promise(INTERNAL);if(!haveInternalData){ret._propagateFrom(this,4|1);ret._captureStackTrace()}var target=this._target();if(target!==this){if(receiver===undefined)receiver=this._boundTo;if(!haveInternalData)ret._setIsMigrated()}var callbackIndex=target._addCallbacks(didFulfill,didReject,didProgress,ret,receiver);if(target._isResolved()&&!target._isSettlePromisesQueued()){async.invoke(target._settlePromiseAtPostResolution,target,callbackIndex)}return ret};Promise.prototype._settlePromiseAtPostResolution=function(index){if(this._isRejectionUnhandled())this._unsetRejectionIsUnhandled();this._settlePromiseAt(index)};Promise.prototype._length=function(){return this._bitField&131071};Promise.prototype._isFollowingOrFulfilledOrRejected=function(){return(this._bitField&939524096)>0};Promise.prototype._isFollowing=function(){return(this._bitField&536870912)===536870912};Promise.prototype._setLength=function(len){this._bitField=this._bitField&-131072|len&131071};Promise.prototype._setFulfilled=function(){this._bitField=this._bitField|268435456};Promise.prototype._setRejected=function(){this._bitField=this._bitField|134217728};Promise.prototype._setFollowing=function(){this._bitField=this._bitField|536870912};Promise.prototype._setIsFinal=function(){this._bitField=this._bitField|33554432};Promise.prototype._isFinal=function(){return(this._bitField&33554432)>0};Promise.prototype._cancellable=function(){return(this._bitField&67108864)>0};Promise.prototype._setCancellable=function(){this._bitField=this._bitField|67108864};Promise.prototype._unsetCancellable=function(){this._bitField=this._bitField&~67108864};Promise.prototype._setRejectionIsUnhandled=function(){this._bitField=this._bitField|2097152};Promise.prototype._unsetRejectionIsUnhandled=function(){this._bitField=this._bitField&~2097152;if(this._isUnhandledRejectionNotified()){this._unsetUnhandledRejectionIsNotified();this._notifyUnhandledRejectionIsHandled()}};Promise.prototype._isRejectionUnhandled=function(){return(this._bitField&2097152)>0};Promise.prototype._isSpreadable=function(){return(this._bitField&131072)>0};Promise.prototype._setIsSpreadable=function(){this._bitField=this._bitField|131072};Promise.prototype._setIsMigrated=function(){this._bitField=this._bitField|4194304};Promise.prototype._unsetIsMigrated=function(){this._bitField=this._bitField&~4194304};Promise.prototype._isMigrated=function(){return(this._bitField&4194304)>0};Promise.prototype._setUnhandledRejectionIsNotified=function(){this._bitField=this._bitField|524288};Promise.prototype._unsetUnhandledRejectionIsNotified=function(){this._bitField=this._bitField&~524288};Promise.prototype._isUnhandledRejectionNotified=function(){return(this._bitField&524288)>0};Promise.prototype._setCarriedStackTrace=function(capturedTrace){this._bitField=this._bitField|1048576;this._fulfillmentHandler0=capturedTrace};Promise.prototype._isCarryingStackTrace=function(){return(this._bitField&1048576)>0};Promise.prototype._getCarriedStackTrace=function(){return this._isCarryingStackTrace()?this._fulfillmentHandler0:undefined};Promise.prototype._receiverAt=function(index){var ret=index===0?this._receiver0:this[index*5-5+4];if(this._isBound()&&ret===undefined){return this._boundTo}return ret};Promise.prototype._promiseAt=function(index){return index===0?this._promise0:this[index*5-5+3]};Promise.prototype._fulfillmentHandlerAt=function(index){return index===0?this._fulfillmentHandler0:this[index*5-5+0]};Promise.prototype._rejectionHandlerAt=function(index){return index===0?this._rejectionHandler0:this[index*5-5+1]};Promise.prototype._migrateCallbacks=function(fulfill,reject,progress,promise,receiver){if(promise instanceof Promise)promise._setIsMigrated();this._addCallbacks(fulfill,reject,progress,promise,receiver)};Promise.prototype._addCallbacks=function(fulfill,reject,progress,promise,receiver){var index=this._length();if(index>=131071-5){index=0;this._setLength(0)}if(index===0){this._promise0=promise;if(receiver!==undefined)this._receiver0=receiver;if(typeof fulfill==="function"&&!this._isCarryingStackTrace())this._fulfillmentHandler0=fulfill;if(typeof reject==="function")this._rejectionHandler0=reject;if(typeof progress==="function")this._progressHandler0=progress}else{var base=index*5-5;this[base+3]=promise;this[base+4]=receiver;if(typeof fulfill==="function")this[base+0]=fulfill;if(typeof reject==="function")this[base+1]=reject;if(typeof progress==="function")this[base+2]=progress}this._setLength(index+1);return index};Promise.prototype._setProxyHandlers=function(receiver,promiseSlotValue){var index=this._length();if(index>=131071-5){index=0;this._setLength(0)}if(index===0){this._promise0=promiseSlotValue;this._receiver0=receiver}else{var base=index*5-5;this[base+3]=promiseSlotValue;this[base+4]=receiver}this._setLength(index+1)};Promise.prototype._proxyPromiseArray=function(promiseArray,index){this._setProxyHandlers(promiseArray,index)};Promise.prototype._setBoundTo=function(obj){if(obj!==undefined){this._bitField=this._bitField|8388608;this._boundTo=obj}else{this._bitField=this._bitField&~8388608}};Promise.prototype._isBound=function(){return(this._bitField&8388608)===8388608};Promise.prototype._resolveCallback=function(value){if(this._tryFollow(value)){return}this._fulfill(value)};Promise.prototype._rejectCallback=function(reason,synchronous,shouldNotMarkOriginatingFromRejection){if(!shouldNotMarkOriginatingFromRejection){markAsOriginatingFromRejection(reason)}var trace=util.ensureErrorObject(reason);var hasStack=canAttachTrace(reason)&&typeof trace.stack==="string";this._attachExtraTrace(trace,synchronous?hasStack:false);this._reject(reason,trace===reason?undefined:trace)};Promise.prototype._resolveFromResolver=function(resolver){var promise=this;this._captureStackTrace();this._pushContext();var synchronous=true;var r=tryCatch(resolver)(function(value){promise._resolveCallback(value)},function(reason){promise._rejectCallback(reason,synchronous)});synchronous=false;this._popContext();if(r!==undefined&&r===errorObj){promise._rejectCallback(r.e,true,true)}};Promise.prototype._settlePromiseFromHandler=function(handler,receiver,value,promise){if(promise._isRejected())return;promise._pushContext();var x;if(receiver===APPLY&&!this._isRejected()){x=tryCatch(handler).apply(this._boundTo,value)}else{x=tryCatch(handler).call(receiver,value)}promise._popContext();if(x===errorObj||x===promise||x===NEXT_FILTER){var err=x===promise?makeSelfResolutionError():x.e;promise._rejectCallback(err,false,true)}else{promise._resolveCallback(x)}};Promise.prototype._target=function(){var ret=this;while(ret._isFollowing())ret=ret._followee();return ret};Promise.prototype._followee=function(){return this._rejectionHandler0};Promise.prototype._setFollowee=function(promise){this._rejectionHandler0=promise};Promise.prototype._follow=function(promise){if(promise._isPending()){var len=this._length();for(var i=0;i<len;++i){promise._migrateCallbacks(this._fulfillmentHandlerAt(i),this._rejectionHandlerAt(i),this._progressHandlerAt(i),this._promiseAt(i),this._receiverAt(i))}this._setFollowing();this._setLength(0);this._setFollowee(promise);this._propagateFrom(promise,1)}else if(promise._isFulfilled()){this._fulfillUnchecked(promise._value())}else{this._rejectUnchecked(promise._reason(),promise._getCarriedStackTrace())}if(promise._isRejectionUnhandled())promise._unsetRejectionIsUnhandled()};Promise.prototype._tryFollow=function(value){if(this._isFollowingOrFulfilledOrRejected()||value===this){return false}var maybePromise=tryConvertToPromise(value,this);if(!(maybePromise instanceof Promise)){return false}this._follow(maybePromise._target());return true};Promise.prototype._captureStackTrace=function(){if(debugging){this._trace=new CapturedTrace(this._peekContext())}return this};Promise.prototype._canAttachTrace=function(error){return debugging&&canAttachTrace(error)};Promise.prototype._attachExtraTraceIgnoreSelf=function(error){if(this._canAttachTrace(error)&&this._trace._parent!==undefined){this._trace._parent.attachExtraTrace(error)}};Promise.prototype._attachExtraTrace=function(error,ignoreSelf){if(debugging&&canAttachTrace(error)){var trace=this._trace;if(trace!==undefined){if(ignoreSelf)trace=trace._parent}if(trace!==undefined){trace.attachExtraTrace(error)}else{CapturedTrace.cleanHeaderStack(error,true)}}};Promise.prototype._cleanValues=function(){if(this._cancellable()){this._cancellationParent=undefined}};Promise.prototype._propagateFrom=function(parent,flags){if((flags&1)>0&&parent._cancellable()){this._setCancellable();this._cancellationParent=parent}if((flags&4)>0){this._setBoundTo(parent._boundTo)}};Promise.prototype._fulfill=function(value){if(this._isFollowingOrFulfilledOrRejected())return;this._fulfillUnchecked(value)};Promise.prototype._reject=function(reason,carriedStackTrace){if(this._isFollowingOrFulfilledOrRejected())return;this._rejectUnchecked(reason,carriedStackTrace)};Promise.prototype._settlePromiseAt=function(index){var promise=this._promiseAt(index);var isPromise=promise instanceof Promise;if(isPromise&&promise._isMigrated()){promise._unsetIsMigrated();return async.invoke(this._settlePromiseAt,this,index)}var handler=this._isFulfilled()?this._fulfillmentHandlerAt(index):this._rejectionHandlerAt(index);var carriedStackTrace=this._isCarryingStackTrace()?this._getCarriedStackTrace():undefined;var value=this._settledValue;var receiver=this._receiverAt(index);this._clearCallbackDataAtIndex(index);if(typeof handler==="function"){if(!isPromise){handler.call(receiver,value,promise)}else{this._settlePromiseFromHandler(handler,receiver,value,promise)}}else if(receiver instanceof PromiseArray){if(!receiver._isResolved()){if(this._isFulfilled()){receiver._promiseFulfilled(value,promise)}else{receiver._promiseRejected(value,promise)}}}else if(isPromise){if(this._isFulfilled()){promise._fulfill(value)}else{promise._reject(value,carriedStackTrace)}}if(index>=4&&(index&31)===4)async.invokeLater(this._setLength,this,0)};Promise.prototype._clearCallbackDataAtIndex=function(index){if(index===0){if(!this._isCarryingStackTrace()){this._fulfillmentHandler0=undefined}this._rejectionHandler0=this._progressHandler0=this._receiver0=this._promise0=undefined}else{var base=index*5-5;this[base+3]=this[base+4]=this[base+0]=this[base+1]=this[base+2]=undefined}};Promise.prototype._isSettlePromisesQueued=function(){return(this._bitField&-1073741824)===-1073741824};Promise.prototype._setSettlePromisesQueued=function(){this._bitField=this._bitField|-1073741824};Promise.prototype._unsetSettlePromisesQueued=function(){this._bitField=this._bitField&~-1073741824};Promise.prototype._queueSettlePromises=function(){if(!this._isSettlePromisesQueued()){async.settlePromises(this);this._setSettlePromisesQueued()}};Promise.prototype._fulfillUnchecked=function(value){if(value===this){var err=makeSelfResolutionError();this._attachExtraTrace(err);return this._rejectUnchecked(err,undefined)}this._setFulfilled();this._settledValue=value;this._cleanValues();if(this._length()>0){this._queueSettlePromises()}};Promise.prototype._rejectUncheckedCheckError=function(reason){var trace=util.ensureErrorObject(reason);this._rejectUnchecked(reason,trace===reason?undefined:trace)};Promise.prototype._rejectUnchecked=function(reason,trace){if(reason===this){var err=makeSelfResolutionError();this._attachExtraTrace(err);return this._rejectUnchecked(err)}this._setRejected();this._settledValue=reason;this._cleanValues();if(this._isFinal()){async.throwLater(function(e){if("stack"in e){async.invokeFirst(CapturedTrace.unhandledRejection,undefined,e)}throw e},trace===undefined?reason:trace);return}if(trace!==undefined&&trace!==reason){this._setCarriedStackTrace(trace)}if(this._length()>0){this._queueSettlePromises()}else{this._ensurePossibleRejectionHandled()}};Promise.prototype._settlePromises=function(){this._unsetSettlePromisesQueued();var len=this._length();for(var i=0;i<len;i++){this._settlePromiseAt(i)}};Promise.prototype._ensurePossibleRejectionHandled=function(){this._setRejectionIsUnhandled();async.invokeLater(this._notifyUnhandledRejection,this,undefined)};Promise.prototype._notifyUnhandledRejectionIsHandled=function(){CapturedTrace.fireRejectionEvent("rejectionHandled",unhandledRejectionHandled,undefined,this)};Promise.prototype._notifyUnhandledRejection=function(){if(this._isRejectionUnhandled()){var reason=this._getCarriedStackTrace()||this._settledValue;this._setUnhandledRejectionIsNotified();CapturedTrace.fireRejectionEvent("unhandledRejection",possiblyUnhandledRejection,reason,this)}};var contextStack=[];function Context(){this._trace=new CapturedTrace(peekContext())}Context.prototype._pushContext=function(){if(!debugging)return;if(this._trace!==undefined){contextStack.push(this._trace)}};Context.prototype._popContext=function(){if(!debugging)return;if(this._trace!==undefined){contextStack.pop()}};function createContext(){if(debugging)return new Context}function peekContext(){var lastIndex=contextStack.length-1;if(lastIndex>=0){return contextStack[lastIndex]}return undefined}Promise.prototype._peekContext=peekContext;Promise.prototype._pushContext=Context.prototype._pushContext;Promise.prototype._popContext=Context.prototype._popContext;Promise.prototype._resolveFromSyncValue=function(value){if(value===errorObj){this._setRejected();var reason=value.e;this._settledValue=reason;this._cleanValues();this._attachExtraTrace(reason);this._ensurePossibleRejectionHandled()}else{var maybePromise=tryConvertToPromise(value,this);if(maybePromise instanceof Promise){maybePromise=maybePromise._target();this._follow(maybePromise)}else{this._setFulfilled();this._settledValue=value;this._cleanValues()}}};if(!CapturedTrace.isSupported()){Promise.longStackTraces=function(){};debugging=false}Promise._makeSelfResolutionError=makeSelfResolutionError;require("./finally.js")(Promise,NEXT_FILTER,tryConvertToPromise);require("./direct_resolve.js")(Promise);require("./synchronous_inspection.js")(Promise);require("./join.js")(Promise,PromiseArray,tryConvertToPromise,INTERNAL);Promise.RangeError=RangeError;Promise.CancellationError=CancellationError;Promise.TimeoutError=TimeoutError;Promise.TypeError=TypeError;Promise.OperationalError=OperationalError;Promise.RejectionError=OperationalError;Promise.AggregateError=errors.AggregateError;util.toFastProperties(Promise);util.toFastProperties(Promise.prototype);Promise.Promise=Promise;CapturedTrace.setBounds(async.firstLineError,util.lastLineError);require("./nodeify.js")(Promise);require("./using.js")(Promise,apiRejection,tryConvertToPromise,createContext);require("./generators.js")(Promise,apiRejection,INTERNAL,tryConvertToPromise);require("./map.js")(Promise,PromiseArray,apiRejection,tryConvertToPromise,INTERNAL);require("./cancel.js")(Promise,INTERNAL);require("./promisify.js")(Promise,INTERNAL);require("./props.js")(Promise,PromiseArray,tryConvertToPromise,apiRejection);require("./race.js")(Promise,INTERNAL,tryConvertToPromise,apiRejection);require("./reduce.js")(Promise,PromiseArray,apiRejection,tryConvertToPromise,INTERNAL);require("./settle.js")(Promise,PromiseArray);
require("./call_get.js")(Promise);require("./some.js")(Promise,PromiseArray,apiRejection);require("./progress.js")(Promise,PromiseArray);require("./any.js")(Promise);require("./each.js")(Promise,INTERNAL);require("./timers.js")(Promise,INTERNAL,tryConvertToPromise);require("./filter.js")(Promise,INTERNAL);Promise.prototype=Promise.prototype;return Promise}}).call(this,require("/var/sites/requirebin-cdn/node_modules/browserify-cdn/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js"))},{"./any.js":121,"./async.js":122,"./call_get.js":124,"./cancel.js":125,"./captured_trace.js":126,"./catch_filter.js":127,"./direct_resolve.js":128,"./each.js":129,"./errors.js":130,"./filter.js":132,"./finally.js":133,"./generators.js":134,"./join.js":135,"./map.js":136,"./nodeify.js":137,"./progress.js":138,"./promise_array.js":140,"./promise_resolver.js":141,"./promisify.js":142,"./props.js":143,"./race.js":145,"./reduce.js":146,"./settle.js":148,"./some.js":149,"./synchronous_inspection.js":150,"./thenables.js":151,"./timers.js":152,"./using.js":153,"./util.js":154,"/var/sites/requirebin-cdn/node_modules/browserify-cdn/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js":361}],140:[function(require,module,exports){"use strict";module.exports=function(Promise,INTERNAL,tryConvertToPromise,apiRejection){var util=require("./util.js");var isArray=util.isArray;function toResolutionValue(val){switch(val){case-1:return undefined;case-2:return[];case-3:return{}}}function PromiseArray(values){var promise=this._promise=new Promise(INTERNAL);var parent;if(values instanceof Promise){parent=values;promise._propagateFrom(parent,1|4)}this._values=values;this._length=0;this._totalResolved=0;this._init(undefined,-2)}PromiseArray.prototype.length=function(){return this._length};PromiseArray.prototype.promise=function(){return this._promise};PromiseArray.prototype._init=function init(_,resolveValueIfEmpty){var values=tryConvertToPromise(this._values,this._promise);if(values instanceof Promise){values._setBoundTo(this._promise._boundTo);values=values._target();this._values=values;if(values._isFulfilled()){values=values._value();if(!isArray(values)){var err=new Promise.TypeError("expecting an array, a promise or a thenable\n\n See http://goo.gl/s8MMhc\n");this.__hardReject__(err);return}}else if(values._isPending()){values._then(init,this._reject,undefined,this,resolveValueIfEmpty);return}else{this._reject(values._reason());return}}else if(!isArray(values)){this._promise._follow(apiRejection("expecting an array, a promise or a thenable\n\n See http://goo.gl/s8MMhc\n"));return}if(values.length===0){if(resolveValueIfEmpty===-5){this._resolveEmptyArray()}else{this._resolve(toResolutionValue(resolveValueIfEmpty))}return}var len=this.getActualLength(values.length);this._length=len;this._values=this.shouldCopyValues()?new Array(len):this._values;var promise=this._promise;for(var i=0;i<len;++i){var isResolved=this._isResolved();var maybePromise=tryConvertToPromise(values[i],promise);if(maybePromise instanceof Promise){maybePromise=maybePromise._target();if(isResolved){maybePromise._unsetRejectionIsUnhandled()}else if(maybePromise._isPending()){maybePromise._proxyPromiseArray(this,i)}else if(maybePromise._isFulfilled()){this._promiseFulfilled(maybePromise._value(),i)}else{this._promiseRejected(maybePromise._reason(),i)}}else if(!isResolved){this._promiseFulfilled(maybePromise,i)}}};PromiseArray.prototype._isResolved=function(){return this._values===null};PromiseArray.prototype._resolve=function(value){this._values=null;this._promise._fulfill(value)};PromiseArray.prototype.__hardReject__=PromiseArray.prototype._reject=function(reason){this._values=null;this._promise._rejectCallback(reason,false,true)};PromiseArray.prototype._promiseProgressed=function(progressValue,index){this._promise._progress({index:index,value:progressValue})};PromiseArray.prototype._promiseFulfilled=function(value,index){this._values[index]=value;var totalResolved=++this._totalResolved;if(totalResolved>=this._length){this._resolve(this._values)}};PromiseArray.prototype._promiseRejected=function(reason,index){this._totalResolved++;this._reject(reason)};PromiseArray.prototype.shouldCopyValues=function(){return true};PromiseArray.prototype.getActualLength=function(len){return len};return PromiseArray}},{"./util.js":154}],141:[function(require,module,exports){"use strict";var util=require("./util.js");var maybeWrapAsError=util.maybeWrapAsError;var errors=require("./errors.js");var TimeoutError=errors.TimeoutError;var OperationalError=errors.OperationalError;var haveGetters=util.haveGetters;var es5=require("./es5.js");function isUntypedError(obj){return obj instanceof Error&&es5.getPrototypeOf(obj)===Error.prototype}var rErrorKey=/^(?:name|message|stack|cause)$/;function wrapAsOperationalError(obj){var ret;if(isUntypedError(obj)){ret=new OperationalError(obj);ret.name=obj.name;ret.message=obj.message;ret.stack=obj.stack;var keys=es5.keys(obj);for(var i=0;i<keys.length;++i){var key=keys[i];if(!rErrorKey.test(key)){ret[key]=obj[key]}}return ret}util.markAsOriginatingFromRejection(obj);return obj}function nodebackForPromise(promise){return function(err,value){if(promise===null)return;if(err){var wrapped=wrapAsOperationalError(maybeWrapAsError(err));promise._attachExtraTrace(wrapped);promise._reject(wrapped)}else if(arguments.length>2){var $_len=arguments.length;var args=new Array($_len-1);for(var $_i=1;$_i<$_len;++$_i){args[$_i-1]=arguments[$_i]}promise._fulfill(args)}else{promise._fulfill(value)}promise=null}}var PromiseResolver;if(!haveGetters){PromiseResolver=function(promise){this.promise=promise;this.asCallback=nodebackForPromise(promise);this.callback=this.asCallback}}else{PromiseResolver=function(promise){this.promise=promise}}if(haveGetters){var prop={get:function(){return nodebackForPromise(this.promise)}};es5.defineProperty(PromiseResolver.prototype,"asCallback",prop);es5.defineProperty(PromiseResolver.prototype,"callback",prop)}PromiseResolver._nodebackForPromise=nodebackForPromise;PromiseResolver.prototype.toString=function(){return"[object PromiseResolver]"};PromiseResolver.prototype.resolve=PromiseResolver.prototype.fulfill=function(value){if(!(this instanceof PromiseResolver)){throw new TypeError("Illegal invocation, resolver resolve/reject must be called within a resolver context. Consider using the promise constructor instead.\n\n See http://goo.gl/sdkXL9\n")}this.promise._resolveCallback(value)};PromiseResolver.prototype.reject=function(reason){if(!(this instanceof PromiseResolver)){throw new TypeError("Illegal invocation, resolver resolve/reject must be called within a resolver context. Consider using the promise constructor instead.\n\n See http://goo.gl/sdkXL9\n")}this.promise._rejectCallback(reason)};PromiseResolver.prototype.progress=function(value){if(!(this instanceof PromiseResolver)){throw new TypeError("Illegal invocation, resolver resolve/reject must be called within a resolver context. Consider using the promise constructor instead.\n\n See http://goo.gl/sdkXL9\n")}this.promise._progress(value)};PromiseResolver.prototype.cancel=function(){this.promise.cancel()};PromiseResolver.prototype.timeout=function(){this.reject(new TimeoutError("timeout"))};PromiseResolver.prototype.isResolved=function(){return this.promise.isResolved()};PromiseResolver.prototype.toJSON=function(){return this.promise.toJSON()};module.exports=PromiseResolver},{"./errors.js":130,"./es5.js":131,"./util.js":154}],142:[function(require,module,exports){"use strict";module.exports=function(Promise,INTERNAL){var THIS={};var util=require("./util.js");var nodebackForPromise=require("./promise_resolver.js")._nodebackForPromise;var withAppended=util.withAppended;var maybeWrapAsError=util.maybeWrapAsError;var canEvaluate=util.canEvaluate;var TypeError=require("./errors").TypeError;var defaultSuffix="Async";var defaultFilter=function(name,func){return util.isIdentifier(name)&&name.charAt(0)!=="_"&&!util.isClass(func)};var defaultPromisified={__isPromisified__:true};function escapeIdentRegex(str){return str.replace(/([$])/,"\\$")}function isPromisified(fn){try{return fn.__isPromisified__===true}catch(e){return false}}function hasPromisified(obj,key,suffix){var val=util.getDataPropertyOrDefault(obj,key+suffix,defaultPromisified);return val?isPromisified(val):false}function checkValid(ret,suffix,suffixRegexp){for(var i=0;i<ret.length;i+=2){var key=ret[i];if(suffixRegexp.test(key)){var keyWithoutAsyncSuffix=key.replace(suffixRegexp,"");for(var j=0;j<ret.length;j+=2){if(ret[j]===keyWithoutAsyncSuffix){throw new TypeError("Cannot promisify an API that has normal methods with '%s'-suffix\n\n See http://goo.gl/iWrZbw\n".replace("%s",suffix))}}}}}function promisifiableMethods(obj,suffix,suffixRegexp,filter){var keys=util.inheritedDataKeys(obj);var ret=[];for(var i=0;i<keys.length;++i){var key=keys[i];var value=obj[key];var passesDefaultFilter=filter===defaultFilter?true:defaultFilter(key,value,obj);if(typeof value==="function"&&!isPromisified(value)&&!hasPromisified(obj,key,suffix)&&filter(key,value,obj,passesDefaultFilter)){ret.push(key,value)}}checkValid(ret,suffix,suffixRegexp);return ret}function switchCaseArgumentOrder(likelyArgumentCount){var ret=[likelyArgumentCount];var min=Math.max(0,likelyArgumentCount-1-5);for(var i=likelyArgumentCount-1;i>=min;--i){if(i===likelyArgumentCount)continue;ret.push(i)}for(var i=likelyArgumentCount+1;i<=5;++i){ret.push(i)}return ret}function argumentSequence(argumentCount){return util.filledRange(argumentCount,"arguments[","]")}function parameterDeclaration(parameterCount){return util.filledRange(parameterCount,"_arg","")}function parameterCount(fn){if(typeof fn.length==="number"){return Math.max(Math.min(fn.length,1023+1),0)}return 0}function generatePropertyAccess(key){if(util.isIdentifier(key)){return"."+key}else return"['"+key.replace(/(['\\])/g,"\\$1")+"']"}function makeNodePromisifiedEval(callback,receiver,originalName,fn,suffix){var newParameterCount=Math.max(0,parameterCount(fn)-1);var argumentOrder=switchCaseArgumentOrder(newParameterCount);var callbackName=typeof originalName==="string"&&util.isIdentifier(originalName)?originalName+suffix:"promisified";function generateCallForArgumentCount(count){var args=argumentSequence(count).join(", ");var comma=count>0?", ":"";var ret;if(typeof callback==="string"){ret=" \n this.method({{args}}, fn); \n break; \n ".replace(".method",generatePropertyAccess(callback))}else if(receiver===THIS){ret=" \n callback.call(this, {{args}}, fn); \n break; \n "}else if(receiver!==undefined){ret=" \n callback.call(receiver, {{args}}, fn); \n break; \n "}else{ret=" \n callback({{args}}, fn); \n break; \n "}return ret.replace("{{args}}",args).replace(", ",comma)}function generateArgumentSwitchCase(){var ret="";for(var i=0;i<argumentOrder.length;++i){ret+="case "+argumentOrder[i]+":"+generateCallForArgumentCount(argumentOrder[i])}var codeForCall;if(typeof callback==="string"){codeForCall=" \n this.property.apply(this, args); \n ".replace(".property",generatePropertyAccess(callback))}else if(receiver===THIS){codeForCall=" \n callback.apply(this, args); \n "}else{codeForCall=" \n callback.apply(receiver, args); \n "}ret+=" \n default: \n var args = new Array(len + 1); \n var i = 0; \n for (var i = 0; i < len; ++i) { \n args[i] = arguments[i]; \n } \n args[i] = fn; \n [CodeForCall] \n break; \n ".replace("[CodeForCall]",codeForCall);return ret}return new Function("Promise","callback","receiver","withAppended","maybeWrapAsError","nodebackForPromise","INTERNAL"," \n var ret = function (Parameters) { \n 'use strict'; \n var len = arguments.length; \n var promise = new Promise(INTERNAL); \n promise._captureStackTrace(); \n promise._setIsSpreadable(); \n var fn = nodebackForPromise(promise); \n try { \n switch(len) { \n [CodeForSwitchCase] \n } \n } catch (e) { \n var wrapped = maybeWrapAsError(e); \n promise._attachExtraTrace(wrapped); \n promise._reject(wrapped); \n } \n return promise; \n }; \n ret.__isPromisified__ = true; \n return ret; \n ".replace("FunctionName",callbackName).replace("Parameters",parameterDeclaration(newParameterCount)).replace("[CodeForSwitchCase]",generateArgumentSwitchCase()))(Promise,callback,receiver,withAppended,maybeWrapAsError,nodebackForPromise,INTERNAL)}function makeNodePromisifiedClosure(callback,receiver){function promisified(){var _receiver=receiver;if(receiver===THIS)_receiver=this;if(typeof callback==="string"){callback=_receiver[callback]}var promise=new Promise(INTERNAL);promise._captureStackTrace();promise._setIsSpreadable();var fn=nodebackForPromise(promise);try{callback.apply(_receiver,withAppended(arguments,fn))}catch(e){var wrapped=maybeWrapAsError(e);promise._attachExtraTrace(wrapped);promise._reject(wrapped)}return promise}promisified.__isPromisified__=true;return promisified}var makeNodePromisified=canEvaluate?makeNodePromisifiedEval:makeNodePromisifiedClosure;function promisifyAll(obj,suffix,filter,promisifier){var suffixRegexp=new RegExp(escapeIdentRegex(suffix)+"$");var methods=promisifiableMethods(obj,suffix,suffixRegexp,filter);for(var i=0,len=methods.length;i<len;i+=2){var key=methods[i];var fn=methods[i+1];var promisifiedKey=key+suffix;obj[promisifiedKey]=promisifier===makeNodePromisified?makeNodePromisified(key,THIS,key,fn,suffix):promisifier(fn,function(){return makeNodePromisified(key,THIS,key,fn,suffix)})}util.toFastProperties(obj);return obj}function promisify(callback,receiver){return makeNodePromisified(callback,receiver,undefined,callback)}Promise.promisify=function(fn,receiver){if(typeof fn!=="function"){throw new TypeError("fn must be a function\n\n See http://goo.gl/916lJJ\n")}if(isPromisified(fn)){return fn}return promisify(fn,arguments.length<2?THIS:receiver)};Promise.promisifyAll=function(target,options){if(typeof target!=="function"&&typeof target!=="object"){throw new TypeError("the target of promisifyAll must be an object or a function\n\n See http://goo.gl/9ITlV0\n")}options=Object(options);var suffix=options.suffix;if(typeof suffix!=="string")suffix=defaultSuffix;var filter=options.filter;if(typeof filter!=="function")filter=defaultFilter;var promisifier=options.promisifier;if(typeof promisifier!=="function")promisifier=makeNodePromisified;if(!util.isIdentifier(suffix)){throw new RangeError("suffix must be a valid identifier\n\n See http://goo.gl/8FZo5V\n")}var keys=util.inheritedDataKeys(target,{includeHidden:true});for(var i=0;i<keys.length;++i){var value=target[keys[i]];if(keys[i]!=="constructor"&&util.isClass(value)){promisifyAll(value.prototype,suffix,filter,promisifier);promisifyAll(value,suffix,filter,promisifier)}}return promisifyAll(target,suffix,filter,promisifier)}}},{"./errors":130,"./promise_resolver.js":141,"./util.js":154}],143:[function(require,module,exports){"use strict";module.exports=function(Promise,PromiseArray,tryConvertToPromise,apiRejection){var util=require("./util.js");var isObject=util.isObject;var es5=require("./es5.js");function PropertiesPromiseArray(obj){var keys=es5.keys(obj);var len=keys.length;var values=new Array(len*2);for(var i=0;i<len;++i){var key=keys[i];values[i]=obj[key];values[i+len]=key}this.constructor$(values)}util.inherits(PropertiesPromiseArray,PromiseArray);PropertiesPromiseArray.prototype._init=function(){this._init$(undefined,-3)};PropertiesPromiseArray.prototype._promiseFulfilled=function(value,index){this._values[index]=value;var totalResolved=++this._totalResolved;if(totalResolved>=this._length){var val={};var keyOffset=this.length();for(var i=0,len=this.length();i<len;++i){val[this._values[i+keyOffset]]=this._values[i]}this._resolve(val)}};PropertiesPromiseArray.prototype._promiseProgressed=function(value,index){this._promise._progress({key:this._values[index+this.length()],value:value})};PropertiesPromiseArray.prototype.shouldCopyValues=function(){return false};PropertiesPromiseArray.prototype.getActualLength=function(len){return len>>1};function props(promises){var ret;var castValue=tryConvertToPromise(promises);if(!isObject(castValue)){return apiRejection("cannot await properties of a non-object\n\n See http://goo.gl/OsFKC8\n")}else if(castValue instanceof Promise){ret=castValue._then(Promise.props,undefined,undefined,undefined,undefined)}else{ret=new PropertiesPromiseArray(castValue).promise()}if(castValue instanceof Promise){ret._propagateFrom(castValue,4)}return ret}Promise.prototype.props=function(){return props(this)};Promise.props=function(promises){return props(promises)}}},{"./es5.js":131,"./util.js":154}],144:[function(require,module,exports){"use strict";function arrayMove(src,srcIndex,dst,dstIndex,len){for(var j=0;j<len;++j){dst[j+dstIndex]=src[j+srcIndex];src[j+srcIndex]=void 0}}function Queue(capacity){this._capacity=capacity;this._length=0;this._front=0}Queue.prototype._willBeOverCapacity=function(size){return this._capacity<size};Queue.prototype._pushOne=function(arg){var length=this.length();this._checkCapacity(length+1);var i=this._front+length&this._capacity-1;this[i]=arg;this._length=length+1};Queue.prototype._unshiftOne=function(value){var capacity=this._capacity;this._checkCapacity(this.length()+1);var front=this._front;var i=(front-1&capacity-1^capacity)-capacity;this[i]=value;this._front=i;this._length=this.length()+1};Queue.prototype.unshift=function(fn,receiver,arg){this._unshiftOne(arg);this._unshiftOne(receiver);this._unshiftOne(fn)};Queue.prototype.push=function(fn,receiver,arg){var length=this.length()+3;if(this._willBeOverCapacity(length)){this._pushOne(fn);this._pushOne(receiver);this._pushOne(arg);return}var j=this._front+length-3;this._checkCapacity(length);var wrapMask=this._capacity-1;this[j+0&wrapMask]=fn;this[j+1&wrapMask]=receiver;this[j+2&wrapMask]=arg;this._length=length};Queue.prototype.shift=function(){var front=this._front,ret=this[front];this[front]=undefined;this._front=front+1&this._capacity-1;this._length--;return ret};Queue.prototype.length=function(){return this._length};Queue.prototype._checkCapacity=function(size){if(this._capacity<size){this._resizeTo(this._capacity<<1)}};Queue.prototype._resizeTo=function(capacity){var oldCapacity=this._capacity;this._capacity=capacity;var front=this._front;var length=this._length;if(front+length>oldCapacity){var moveItemsCount=front+length&oldCapacity-1;arrayMove(this,0,this,oldCapacity,moveItemsCount)}};module.exports=Queue},{}],145:[function(require,module,exports){"use strict";module.exports=function(Promise,INTERNAL,tryConvertToPromise,apiRejection){var isArray=require("./util.js").isArray;var raceLater=function(promise){return promise.then(function(array){return race(array,promise)})};function race(promises,parent){var maybePromise=tryConvertToPromise(promises);if(maybePromise instanceof Promise){return raceLater(maybePromise)}else if(!isArray(promises)){return apiRejection("expecting an array, a promise or a thenable\n\n See http://goo.gl/s8MMhc\n")}var ret=new Promise(INTERNAL);if(parent!==undefined){ret._propagateFrom(parent,4|1)}var fulfill=ret._fulfill;var reject=ret._reject;for(var i=0,len=promises.length;i<len;++i){var val=promises[i];if(val===undefined&&!(i in promises)){continue}Promise.cast(val)._then(fulfill,reject,undefined,ret,null)}return ret}Promise.race=function(promises){return race(promises,undefined)};Promise.prototype.race=function(){return race(this,undefined)}}},{"./util.js":154}],146:[function(require,module,exports){"use strict";module.exports=function(Promise,PromiseArray,apiRejection,tryConvertToPromise,INTERNAL){var util=require("./util.js");var tryCatch=util.tryCatch;var errorObj=util.errorObj;function ReductionPromiseArray(promises,fn,accum,_each){this.constructor$(promises);this._promise._captureStackTrace();this._preservedValues=_each===INTERNAL?[]:null;this._zerothIsAccum=accum===undefined;this._gotAccum=false;this._reducingIndex=this._zerothIsAccum?1:0;this._valuesPhase=undefined;var maybePromise=tryConvertToPromise(accum,this._promise);var rejected=false;var isPromise=maybePromise instanceof Promise;if(isPromise){maybePromise=maybePromise._target();if(maybePromise._isPending()){maybePromise._proxyPromiseArray(this,-1)}else if(maybePromise._isFulfilled()){accum=maybePromise._value();this._gotAccum=true}else{this._reject(maybePromise._reason());rejected=true}}if(!(isPromise||this._zerothIsAccum))this._gotAccum=true;this._callback=fn;this._accum=accum;if(!rejected)this._init$(undefined,-5)}util.inherits(ReductionPromiseArray,PromiseArray);ReductionPromiseArray.prototype._init=function(){};ReductionPromiseArray.prototype._resolveEmptyArray=function(){if(this._gotAccum||this._zerothIsAccum){this._resolve(this._preservedValues!==null?[]:this._accum)}};ReductionPromiseArray.prototype._promiseFulfilled=function(value,index){var values=this._values;values[index]=value;var length=this.length();var preservedValues=this._preservedValues;var isEach=preservedValues!==null;var gotAccum=this._gotAccum;var valuesPhase=this._valuesPhase;var valuesPhaseIndex;if(!valuesPhase){valuesPhase=this._valuesPhase=Array(length);for(valuesPhaseIndex=0;valuesPhaseIndex<length;++valuesPhaseIndex){valuesPhase[valuesPhaseIndex]=0}}valuesPhaseIndex=valuesPhase[index];if(index===0&&this._zerothIsAccum){if(!gotAccum){this._accum=value;this._gotAccum=gotAccum=true}valuesPhase[index]=valuesPhaseIndex===0?1:2}else if(index===-1){if(!gotAccum){this._accum=value;this._gotAccum=gotAccum=true}}else{if(valuesPhaseIndex===0){valuesPhase[index]=1}else{valuesPhase[index]=2;if(gotAccum){this._accum=value}}}if(!gotAccum)return;var callback=this._callback;var receiver=this._promise._boundTo;var ret;for(var i=this._reducingIndex;i<length;++i){valuesPhaseIndex=valuesPhase[i];if(valuesPhaseIndex===2){this._reducingIndex=i+1;continue}if(valuesPhaseIndex!==1)return;value=values[i];if(value instanceof Promise){value=value._target();if(value._isFulfilled()){value=value._value()}else if(value._isPending()){return}else{return this._reject(value._reason())}}this._promise._pushContext();if(isEach){preservedValues.push(value);ret=tryCatch(callback).call(receiver,value,i,length)}else{ret=tryCatch(callback).call(receiver,this._accum,value,i,length)}this._promise._popContext();if(ret===errorObj)return this._reject(ret.e);var maybePromise=tryConvertToPromise(ret,this._promise);if(maybePromise instanceof Promise){maybePromise=maybePromise._target();if(maybePromise._isPending()){valuesPhase[i]=4;return maybePromise._proxyPromiseArray(this,i)}else if(maybePromise._isFulfilled()){ret=maybePromise._value()}else{return this._reject(maybePromise._reason())}}this._reducingIndex=i+1;this._accum=ret}if(this._reducingIndex<length)return;this._resolve(isEach?preservedValues:this._accum)};function reduce(promises,fn,initialValue,_each){if(typeof fn!=="function")return apiRejection("fn must be a function\n\n See http://goo.gl/916lJJ\n");var array=new ReductionPromiseArray(promises,fn,initialValue,_each);return array.promise()}Promise.prototype.reduce=function(fn,initialValue){return reduce(this,fn,initialValue,null)};Promise.reduce=function(promises,fn,initialValue,_each){return reduce(promises,fn,initialValue,_each)}}},{"./util.js":154}],147:[function(require,module,exports){(function(process){"use strict";var schedule;if(typeof process==="object"&&typeof process.version==="string"){schedule=parseInt(process.version.split(".")[1],10)>10?setImmediate:process.nextTick}else if(typeof MutationObserver!=="undefined"){schedule=function(fn){var div=document.createElement("div");var observer=new MutationObserver(fn);observer.observe(div,{attributes:true});return function(){div.classList.toggle("foo")}};schedule.isStatic=true}else if(typeof setTimeout!=="undefined"){schedule=function(fn){setTimeout(fn,0)}}else{schedule=function(){throw new Error("No async scheduler available\n\n See http://goo.gl/m3OTXk\n")}}module.exports=schedule}).call(this,require("/var/sites/requirebin-cdn/node_modules/browserify-cdn/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js"))},{"/var/sites/requirebin-cdn/node_modules/browserify-cdn/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js":361}],148:[function(require,module,exports){"use strict";module.exports=function(Promise,PromiseArray){var PromiseInspection=Promise.PromiseInspection;var util=require("./util.js");function SettledPromiseArray(values){this.constructor$(values);this._promise._setIsSpreadable()}util.inherits(SettledPromiseArray,PromiseArray);SettledPromiseArray.prototype._promiseResolved=function(index,inspection){this._values[index]=inspection;var totalResolved=++this._totalResolved;if(totalResolved>=this._length){this._resolve(this._values)}};SettledPromiseArray.prototype._promiseFulfilled=function(value,index){var ret=new PromiseInspection;ret._bitField=268435456;ret._settledValue=value;this._promiseResolved(index,ret)};SettledPromiseArray.prototype._promiseRejected=function(reason,index){var ret=new PromiseInspection;ret._bitField=134217728;ret._settledValue=reason;this._promiseResolved(index,ret)};Promise.settle=function(promises){return new SettledPromiseArray(promises).promise()};Promise.prototype.settle=function(){return new SettledPromiseArray(this).promise()}}},{"./util.js":154}],149:[function(require,module,exports){"use strict";module.exports=function(Promise,PromiseArray,apiRejection){var util=require("./util.js");var RangeError=require("./errors.js").RangeError;var AggregateError=require("./errors.js").AggregateError;var isArray=util.isArray;function SomePromiseArray(values){this.constructor$(values);this._howMany=0;this._unwrap=false;this._initialized=false}util.inherits(SomePromiseArray,PromiseArray);SomePromiseArray.prototype._init=function(){if(!this._initialized){return}this._promise._setIsSpreadable();if(this._howMany===0){this._resolve([]);return}this._init$(undefined,-5);var isArrayResolved=isArray(this._values);if(!this._isResolved()&&isArrayResolved&&this._howMany>this._canPossiblyFulfill()){this._reject(this._getRangeError(this.length()))}};SomePromiseArray.prototype.init=function(){this._initialized=true;this._init()};SomePromiseArray.prototype.setUnwrap=function(){this._unwrap=true};SomePromiseArray.prototype.howMany=function(){return this._howMany};SomePromiseArray.prototype.setHowMany=function(count){if(this._isResolved())return;this._howMany=count};SomePromiseArray.prototype._promiseFulfilled=function(value){this._addFulfilled(value);if(this._fulfilled()===this.howMany()){this._values.length=this.howMany();if(this.howMany()===1&&this._unwrap){this._resolve(this._values[0])}else{this._resolve(this._values)}}};SomePromiseArray.prototype._promiseRejected=function(reason){this._addRejected(reason);if(this.howMany()>this._canPossiblyFulfill()){var e=new AggregateError;for(var i=this.length();i<this._values.length;++i){e.push(this._values[i])}this._reject(e)}};SomePromiseArray.prototype._fulfilled=function(){return this._totalResolved};SomePromiseArray.prototype._rejected=function(){return this._values.length-this.length()};SomePromiseArray.prototype._addRejected=function(reason){this._values.push(reason)};SomePromiseArray.prototype._addFulfilled=function(value){this._values[this._totalResolved++]=value};SomePromiseArray.prototype._canPossiblyFulfill=function(){return this.length()-this._rejected()};SomePromiseArray.prototype._getRangeError=function(count){var message="Input array must contain at least "+this._howMany+" items but contains only "+count+" items";return new RangeError(message)};SomePromiseArray.prototype._resolveEmptyArray=function(){this._reject(this._getRangeError(0))};function some(promises,howMany){if((howMany|0)!==howMany||howMany<0){return apiRejection("expecting a positive integer\n\n See http://goo.gl/1wAmHx\n")}var ret=new SomePromiseArray(promises);var promise=ret.promise();if(promise.isRejected()){return promise}ret.setHowMany(howMany);ret.init();return promise}Promise.some=function(promises,howMany){return some(promises,howMany)};Promise.prototype.some=function(howMany){return some(this,howMany)};Promise._SomePromiseArray=SomePromiseArray}},{"./errors.js":130,"./util.js":154}],150:[function(require,module,exports){"use strict";module.exports=function(Promise){function PromiseInspection(promise){if(promise!==undefined){promise=promise._target();this._bitField=promise._bitField;this._settledValue=promise._settledValue}else{this._bitField=0;this._settledValue=undefined}}PromiseInspection.prototype.value=function(){if(!this.isFulfilled()){throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n See http://goo.gl/hc1DLj\n")}return this._settledValue};PromiseInspection.prototype.error=PromiseInspection.prototype.reason=function(){if(!this.isRejected()){throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n See http://goo.gl/hPuiwB\n")}return this._settledValue};PromiseInspection.prototype.isFulfilled=Promise.prototype._isFulfilled=function(){return(this._bitField&268435456)>0};PromiseInspection.prototype.isRejected=Promise.prototype._isRejected=function(){return(this._bitField&134217728)>0};PromiseInspection.prototype.isPending=Promise.prototype._isPending=function(){return(this._bitField&402653184)===0
};PromiseInspection.prototype.isResolved=Promise.prototype._isResolved=function(){return(this._bitField&402653184)>0};Promise.prototype.isPending=function(){return this._target()._isPending()};Promise.prototype.isRejected=function(){return this._target()._isRejected()};Promise.prototype.isFulfilled=function(){return this._target()._isFulfilled()};Promise.prototype.isResolved=function(){return this._target()._isResolved()};Promise.prototype._value=function(){return this._settledValue};Promise.prototype._reason=function(){this._unsetRejectionIsUnhandled();return this._settledValue};Promise.prototype.value=function(){var target=this._target();if(!target.isFulfilled()){throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n See http://goo.gl/hc1DLj\n")}return target._settledValue};Promise.prototype.reason=function(){var target=this._target();if(!target.isRejected()){throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n See http://goo.gl/hPuiwB\n")}return target._settledValue};Promise.PromiseInspection=PromiseInspection}},{}],151:[function(require,module,exports){"use strict";module.exports=function(Promise,INTERNAL){var util=require("./util.js");var errorObj=util.errorObj;var isObject=util.isObject;function tryConvertToPromise(obj,context){if(isObject(obj)){if(obj instanceof Promise){return obj}else if(isAnyBluebirdPromise(obj)){var ret=new Promise(INTERNAL);obj._then(ret._fulfillUnchecked,ret._rejectUncheckedCheckError,ret._progressUnchecked,ret,null);return ret}var then=util.tryCatch(getThen)(obj);if(then===errorObj){if(context)context._pushContext();var ret=Promise.reject(then.e);if(context)context._popContext();return ret}else if(typeof then==="function"){return doThenable(obj,then,context)}}return obj}function getThen(obj){return obj.then}var hasProp={}.hasOwnProperty;function isAnyBluebirdPromise(obj){return hasProp.call(obj,"_promise0")}function doThenable(x,then,context){var promise=new Promise(INTERNAL);if(context)context._pushContext();promise._captureStackTrace();if(context)context._popContext();var synchronous=true;var result=util.tryCatch(then).call(x,resolveFromThenable,rejectFromThenable,progressFromThenable);synchronous=false;if(result===errorObj){promise._rejectCallback(result.e,true,true)}function resolveFromThenable(value){if(x===value){return promise._rejectCallback(Promise._makeSelfResolutionError(),false,true)}promise._resolveCallback(value)}function rejectFromThenable(reason){promise._rejectCallback(reason,synchronous,true)}function progressFromThenable(value){if(typeof promise._progress==="function"){promise._progress(value)}}return promise}return tryConvertToPromise}},{"./util.js":154}],152:[function(require,module,exports){"use strict";module.exports=function(Promise,INTERNAL,tryConvertToPromise){var util=require("./util.js");var TimeoutError=Promise.TimeoutError;var afterTimeout=function(promise,message){if(!promise.isPending())return;if(typeof message!=="string"){message="operation timed out"}var err=new TimeoutError(message);util.markAsOriginatingFromRejection(err);promise._attachExtraTrace(err);promise._cancel(err)};var afterDelay=function(value,promise){promise._fulfill(value)};var delay=Promise.delay=function(value,ms){if(ms===undefined){ms=value;value=undefined}ms=+ms;var maybePromise=tryConvertToPromise(value);var promise=new Promise(INTERNAL);if(maybePromise instanceof Promise){promise._propagateFrom(maybePromise,4|1);promise._follow(maybePromise._target());return promise.then(function(value){return Promise.delay(value,ms)})}else{setTimeout(function delayTimeout(){afterDelay(value,promise)},ms)}return promise};Promise.prototype.delay=function(ms){return delay(this,ms)};function successClear(value){var handle=this;if(handle instanceof Number)handle=+handle;clearTimeout(handle);return value}function failureClear(reason){var handle=this;if(handle instanceof Number)handle=+handle;clearTimeout(handle);throw reason}Promise.prototype.timeout=function(ms,message){var target=this._target();ms=+ms;var ret=new Promise(INTERNAL).cancellable();ret._propagateFrom(this,4|1);ret._follow(target);var handle=setTimeout(function timeoutTimeout(){afterTimeout(ret,message)},ms);return ret._then(successClear,failureClear,undefined,handle,undefined)}}},{"./util.js":154}],153:[function(require,module,exports){"use strict";module.exports=function(Promise,apiRejection,tryConvertToPromise,createContext){var TypeError=require("./errors.js").TypeError;var inherits=require("./util.js").inherits;var PromiseInspection=Promise.PromiseInspection;function inspectionMapper(inspections){var len=inspections.length;for(var i=0;i<len;++i){var inspection=inspections[i];if(inspection.isRejected()){return Promise.reject(inspection.error())}inspections[i]=inspection._settledValue}return inspections}function thrower(e){setTimeout(function(){throw e},0)}function castPreservingDisposable(thenable){var maybePromise=tryConvertToPromise(thenable);if(maybePromise!==thenable&&typeof thenable._isDisposable==="function"&&typeof thenable._getDisposer==="function"&&thenable._isDisposable()){maybePromise._setDisposable(thenable._getDisposer())}return maybePromise}function dispose(resources,inspection){var i=0;var len=resources.length;var ret=Promise.defer();function iterator(){if(i>=len)return ret.resolve();var maybePromise=castPreservingDisposable(resources[i++]);if(maybePromise instanceof Promise&&maybePromise._isDisposable()){try{maybePromise=tryConvertToPromise(maybePromise._getDisposer().tryDispose(inspection),resources.promise)}catch(e){return thrower(e)}if(maybePromise instanceof Promise){return maybePromise._then(iterator,thrower,null,null,null)}}iterator()}iterator();return ret.promise}function disposerSuccess(value){var inspection=new PromiseInspection;inspection._settledValue=value;inspection._bitField=268435456;return dispose(this,inspection).thenReturn(value)}function disposerFail(reason){var inspection=new PromiseInspection;inspection._settledValue=reason;inspection._bitField=134217728;return dispose(this,inspection).thenThrow(reason)}function Disposer(data,promise,context){this._data=data;this._promise=promise;this._context=context}Disposer.prototype.data=function(){return this._data};Disposer.prototype.promise=function(){return this._promise};Disposer.prototype.resource=function(){if(this.promise().isFulfilled()){return this.promise().value()}return null};Disposer.prototype.tryDispose=function(inspection){var resource=this.resource();var context=this._context;if(context!==undefined)context._pushContext();var ret=resource!==null?this.doDispose(resource,inspection):null;if(context!==undefined)context._popContext();this._promise._unsetDisposable();this._data=null;return ret};Disposer.isDisposer=function(d){return d!=null&&typeof d.resource==="function"&&typeof d.tryDispose==="function"};function FunctionDisposer(fn,promise){this.constructor$(fn,promise)}inherits(FunctionDisposer,Disposer);FunctionDisposer.prototype.doDispose=function(resource,inspection){var fn=this.data();return fn.call(resource,resource,inspection)};function maybeUnwrapDisposer(value){if(Disposer.isDisposer(value)){this.resources[this.index]._setDisposable(value);return value.promise()}return value}Promise.using=function(){var len=arguments.length;if(len<2)return apiRejection("you must pass at least 2 arguments to Promise.using");var fn=arguments[len-1];if(typeof fn!=="function")return apiRejection("fn must be a function\n\n See http://goo.gl/916lJJ\n");len--;var resources=new Array(len);for(var i=0;i<len;++i){var resource=arguments[i];if(Disposer.isDisposer(resource)){var disposer=resource;resource=resource.promise();resource._setDisposable(disposer)}else{var maybePromise=tryConvertToPromise(resource);if(maybePromise instanceof Promise){resource=maybePromise._then(maybeUnwrapDisposer,null,null,{resources:resources,index:i},undefined)}}resources[i]=resource}var promise=Promise.settle(resources).then(inspectionMapper).then(function(vals){promise._pushContext();var ret;try{ret=fn.apply(undefined,vals)}finally{promise._popContext()}return ret})._then(disposerSuccess,disposerFail,undefined,resources,undefined);resources.promise=promise;return promise};Promise.prototype._setDisposable=function(disposer){this._bitField=this._bitField|262144;this._disposer=disposer};Promise.prototype._isDisposable=function(){return(this._bitField&262144)>0};Promise.prototype._getDisposer=function(){return this._disposer};Promise.prototype._unsetDisposable=function(){this._bitField=this._bitField&~262144;this._disposer=undefined};Promise.prototype.disposer=function(fn){if(typeof fn==="function"){return new FunctionDisposer(fn,this,createContext())}throw new TypeError}}},{"./errors.js":130,"./util.js":154}],154:[function(require,module,exports){"use strict";var es5=require("./es5.js");var canEvaluate=typeof navigator=="undefined";var haveGetters=function(){try{var o={};es5.defineProperty(o,"f",{get:function(){return 3}});return o.f===3}catch(e){return false}}();var errorObj={e:{}};var tryCatchTarget;function tryCatcher(){try{return tryCatchTarget.apply(this,arguments)}catch(e){errorObj.e=e;return errorObj}}function tryCatch(fn){tryCatchTarget=fn;return tryCatcher}var inherits=function(Child,Parent){var hasProp={}.hasOwnProperty;function T(){this.constructor=Child;this.constructor$=Parent;for(var propertyName in Parent.prototype){if(hasProp.call(Parent.prototype,propertyName)&&propertyName.charAt(propertyName.length-1)!=="$"){this[propertyName+"$"]=Parent.prototype[propertyName]}}}T.prototype=Parent.prototype;Child.prototype=new T;return Child.prototype};function asString(val){return typeof val==="string"?val:""+val}function isPrimitive(val){return val==null||val===true||val===false||typeof val==="string"||typeof val==="number"}function isObject(value){return!isPrimitive(value)}function maybeWrapAsError(maybeError){if(!isPrimitive(maybeError))return maybeError;return new Error(asString(maybeError))}function withAppended(target,appendee){var len=target.length;var ret=new Array(len+1);var i;for(i=0;i<len;++i){ret[i]=target[i]}ret[i]=appendee;return ret}function getDataPropertyOrDefault(obj,key,defaultValue){if(es5.isES5){var desc=Object.getOwnPropertyDescriptor(obj,key);if(desc!=null){return desc.get==null&&desc.set==null?desc.value:defaultValue}}else{return{}.hasOwnProperty.call(obj,key)?obj[key]:undefined}}function notEnumerableProp(obj,name,value){if(isPrimitive(obj))return obj;var descriptor={value:value,configurable:true,enumerable:false,writable:true};es5.defineProperty(obj,name,descriptor);return obj}var wrapsPrimitiveReceiver=function(){return this!=="string"}.call("string");function thrower(r){throw r}var inheritedDataKeys=function(){if(es5.isES5){return function(obj,opts){var ret=[];var visitedKeys=Object.create(null);var getKeys=Object(opts).includeHidden?Object.getOwnPropertyNames:Object.keys;while(obj!=null){var keys;try{keys=getKeys(obj)}catch(e){return ret}for(var i=0;i<keys.length;++i){var key=keys[i];if(visitedKeys[key])continue;visitedKeys[key]=true;var desc=Object.getOwnPropertyDescriptor(obj,key);if(desc!=null&&desc.get==null&&desc.set==null){ret.push(key)}}obj=es5.getPrototypeOf(obj)}return ret}}else{return function(obj){var ret=[];for(var key in obj){ret.push(key)}return ret}}}();function isClass(fn){try{if(typeof fn==="function"){var keys=es5.keys(fn.prototype);return keys.length>0&&!(keys.length===1&&keys[0]==="constructor")}return false}catch(e){return false}}function toFastProperties(obj){function f(){}f.prototype=obj;return f;eval(obj)}var rident=/^[a-z$_][a-z$_0-9]*$/i;function isIdentifier(str){return rident.test(str)}function filledRange(count,prefix,suffix){var ret=new Array(count);for(var i=0;i<count;++i){ret[i]=prefix+i+suffix}return ret}function safeToString(obj){try{return obj+""}catch(e){return"[no string representation]"}}function markAsOriginatingFromRejection(e){try{notEnumerableProp(e,"isOperational",true)}catch(ignore){}}function originatesFromRejection(e){if(e==null)return false;return e instanceof Error["__BluebirdErrorTypes__"].OperationalError||e["isOperational"]===true}function canAttachTrace(obj){return obj instanceof Error&&es5.propertyIsWritable(obj,"stack")}var ensureErrorObject=function(){if(!("stack"in new Error)){return function(value){if(canAttachTrace(value))return value;try{throw new Error(safeToString(value))}catch(err){return err}}}else{return function(value){if(canAttachTrace(value))return value;return new Error(safeToString(value))}}}();var ret={isClass:isClass,isIdentifier:isIdentifier,inheritedDataKeys:inheritedDataKeys,getDataPropertyOrDefault:getDataPropertyOrDefault,thrower:thrower,isArray:es5.isArray,haveGetters:haveGetters,notEnumerableProp:notEnumerableProp,isPrimitive:isPrimitive,isObject:isObject,canEvaluate:canEvaluate,errorObj:errorObj,tryCatch:tryCatch,inherits:inherits,withAppended:withAppended,asString:asString,maybeWrapAsError:maybeWrapAsError,wrapsPrimitiveReceiver:wrapsPrimitiveReceiver,toFastProperties:toFastProperties,filledRange:filledRange,toString:safeToString,canAttachTrace:canAttachTrace,ensureErrorObject:ensureErrorObject,originatesFromRejection:originatesFromRejection,markAsOriginatingFromRejection:markAsOriginatingFromRejection};try{throw new Error}catch(e){ret.lastLineError=e}module.exports=ret},{"./es5.js":131}],155:[function(require,module,exports){(function(root,factory){if(typeof define==="function"&&define.amd){define([],factory)}else if(typeof exports==="object"){module.exports=factory()}else{root.returnExports=factory()}})(this,function(){var XHR=XMLHttpRequest;if(!XHR)throw new Error("missing XMLHttpRequest");request.log={trace:noop,debug:noop,info:noop,warn:noop,error:noop};var DEFAULT_TIMEOUT=3*60*1e3;function request(options,callback){if(typeof callback!=="function")throw new Error("Bad callback given: "+callback);if(!options)throw new Error("No options given");var options_onResponse=options.onResponse;if(typeof options==="string")options={uri:options};else options=JSON.parse(JSON.stringify(options));options.onResponse=options_onResponse;if(options.verbose)request.log=getLogger();if(options.url){options.uri=options.url;delete options.url}if(!options.uri&&options.uri!=="")throw new Error("options.uri is a required argument");if(typeof options.uri!="string")throw new Error("options.uri must be a string");var unsupported_options=["proxy","_redirectsFollowed","maxRedirects","followRedirect"];for(var i=0;i<unsupported_options.length;i++)if(options[unsupported_options[i]])throw new Error("options."+unsupported_options[i]+" is not supported");options.callback=callback;options.method=options.method||"GET";options.headers=options.headers||{};options.body=options.body||null;options.timeout=options.timeout||request.DEFAULT_TIMEOUT;if(options.headers.host)throw new Error("Options.headers.host is not supported");if(options.json){options.headers.accept=options.headers.accept||"application/json";if(options.method!=="GET")options.headers["content-type"]="application/json";if(typeof options.json!=="boolean")options.body=JSON.stringify(options.json);else if(typeof options.body!=="string")options.body=JSON.stringify(options.body)}var serialize=function(obj){var str=[];for(var p in obj)if(obj.hasOwnProperty(p)){str.push(encodeURIComponent(p)+"="+encodeURIComponent(obj[p]))}return str.join("&")};if(options.qs){var qs=typeof options.qs=="string"?options.qs:serialize(options.qs);if(options.uri.indexOf("?")!==-1){options.uri=options.uri+"&"+qs}else{options.uri=options.uri+"?"+qs}}var multipart=function(obj){var result={};result.boundry="-------------------------------"+Math.floor(Math.random()*1e9);var lines=[];for(var p in obj){if(obj.hasOwnProperty(p)){lines.push("--"+result.boundry+"\n"+'Content-Disposition: form-data; name="'+p+'"'+"\n"+"\n"+obj[p]+"\n")}}lines.push("--"+result.boundry+"--");result.body=lines.join("");result.length=result.body.length;result.type="multipart/form-data; boundary="+result.boundry;return result};if(options.form){if(typeof options.form=="string")throw"form name unsupported";if(options.method==="POST"){var encoding=(options.encoding||"application/x-www-form-urlencoded").toLowerCase();options.headers["content-type"]=encoding;switch(encoding){case"application/x-www-form-urlencoded":options.body=serialize(options.form).replace(/%20/g,"+");break;case"multipart/form-data":var multi=multipart(options.form);options.body=multi.body;options.headers["content-type"]=multi.type;break;default:throw new Error("unsupported encoding:"+encoding)}}}options.onResponse=options.onResponse||noop;if(options.onResponse===true){options.onResponse=callback;options.callback=noop}if(!options.headers.authorization&&options.auth)options.headers.authorization="Basic "+b64_enc(options.auth.username+":"+options.auth.password);return run_xhr(options)}var req_seq=0;function run_xhr(options){var xhr=new XHR,timed_out=false,is_cors=is_crossDomain(options.uri),supports_cors="withCredentials"in xhr;req_seq+=1;xhr.seq_id=req_seq;xhr.id=req_seq+": "+options.method+" "+options.uri;xhr._id=xhr.id;if(is_cors&&!supports_cors){var cors_err=new Error("Browser does not support cross-origin request: "+options.uri);cors_err.cors="unsupported";return options.callback(cors_err,xhr)}xhr.timeoutTimer=setTimeout(too_late,options.timeout);function too_late(){timed_out=true;var er=new Error("ETIMEDOUT");er.code="ETIMEDOUT";er.duration=options.timeout;request.log.error("Timeout",{id:xhr._id,milliseconds:options.timeout});return options.callback(er,xhr)}var did={response:false,loading:false,end:false};xhr.onreadystatechange=on_state_change;xhr.open(options.method,options.uri,true);if(is_cors)xhr.withCredentials=!!options.withCredentials;xhr.send(options.body);return xhr;function on_state_change(event){if(timed_out)return request.log.debug("Ignoring timed out state change",{state:xhr.readyState,id:xhr.id});request.log.debug("State change",{state:xhr.readyState,id:xhr.id,timed_out:timed_out});if(xhr.readyState===XHR.OPENED){request.log.debug("Request started",{id:xhr.id});for(var key in options.headers)xhr.setRequestHeader(key,options.headers[key])}else if(xhr.readyState===XHR.HEADERS_RECEIVED)on_response();else if(xhr.readyState===XHR.LOADING){on_response();on_loading()}else if(xhr.readyState===XHR.DONE){on_response();on_loading();on_end()}}function on_response(){if(did.response)return;did.response=true;request.log.debug("Got response",{id:xhr.id,status:xhr.status});clearTimeout(xhr.timeoutTimer);xhr.statusCode=xhr.status;if(is_cors&&xhr.statusCode==0){var cors_err=new Error("CORS request rejected: "+options.uri);cors_err.cors="rejected";did.loading=true;did.end=true;return options.callback(cors_err,xhr)}options.onResponse(null,xhr)}function on_loading(){if(did.loading)return;did.loading=true;request.log.debug("Response body loading",{id:xhr.id})}function on_end(){if(did.end)return;did.end=true;request.log.debug("Request done",{id:xhr.id});xhr.body=xhr.responseText;if(options.json){try{xhr.body=JSON.parse(xhr.responseText)}catch(er){return options.callback(er,xhr)}}options.callback(null,xhr,xhr.body)}}request.withCredentials=false;request.DEFAULT_TIMEOUT=DEFAULT_TIMEOUT;request.defaults=function(options,requester){var def=function(method){var d=function(params,callback){if(typeof params==="string")params={uri:params};else{params=JSON.parse(JSON.stringify(params))}for(var i in options){if(params[i]===undefined)params[i]=options[i]}return method(params,callback)};return d};var de=def(request);de.get=def(request.get);de.post=def(request.post);de.put=def(request.put);de.head=def(request.head);return de};var shortcuts=["get","put","post","head"];shortcuts.forEach(function(shortcut){var method=shortcut.toUpperCase();var func=shortcut.toLowerCase();request[func]=function(opts){if(typeof opts==="string")opts={method:method,uri:opts};else{opts=JSON.parse(JSON.stringify(opts));opts.method=method}var args=[opts].concat(Array.prototype.slice.apply(arguments,[1]));return request.apply(this,args)}});request.couch=function(options,callback){if(typeof options==="string")options={uri:options};options.json=true;if(options.body)options.json=options.body;delete options.body;callback=callback||noop;var xhr=request(options,couch_handler);return xhr;function couch_handler(er,resp,body){if(er)return callback(er,resp,body);if((resp.statusCode<200||resp.statusCode>299)&&body.error){er=new Error("CouchDB error: "+(body.error.reason||body.error.error));for(var key in body)er[key]=body[key];return callback(er,resp,body)}return callback(er,resp,body)}};function noop(){}function getLogger(){var logger={},levels=["trace","debug","info","warn","error"],level,i;for(i=0;i<levels.length;i++){level=levels[i];logger[level]=noop;if(typeof console!=="undefined"&&console&&console[level])logger[level]=formatted(console,level)}return logger}function formatted(obj,method){return formatted_logger;function formatted_logger(str,context){if(typeof context==="object")str+=" "+JSON.stringify(context);return obj[method].call(obj,str)}}function is_crossDomain(url){var rurl=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/;var ajaxLocation;try{ajaxLocation=location.href}catch(e){ajaxLocation=document.createElement("a");ajaxLocation.href="";ajaxLocation=ajaxLocation.href}var ajaxLocParts=rurl.exec(ajaxLocation.toLowerCase())||[],parts=rurl.exec(url.toLowerCase());var result=!!(parts&&(parts[1]!=ajaxLocParts[1]||parts[2]!=ajaxLocParts[2]||(parts[3]||(parts[1]==="http:"?80:443))!=(ajaxLocParts[3]||(ajaxLocParts[1]==="http:"?80:443))));return result}function b64_enc(data){var b64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var o1,o2,o3,h1,h2,h3,h4,bits,i=0,ac=0,enc="",tmp_arr=[];if(!data){return data}do{o1=data.charCodeAt(i++);o2=data.charCodeAt(i++);o3=data.charCodeAt(i++);bits=o1<<16|o2<<8|o3;h1=bits>>18&63;h2=bits>>12&63;h3=bits>>6&63;h4=bits&63;tmp_arr[ac++]=b64.charAt(h1)+b64.charAt(h2)+b64.charAt(h3)+b64.charAt(h4)}while(i<data.length);enc=tmp_arr.join("");switch(data.length%3){case 1:enc=enc.slice(0,-2)+"==";break;case 2:enc=enc.slice(0,-1)+"=";break}return enc}return request})},{}],156:[function(require,module,exports){(function(Buffer){(function(){"use strict";function btoa(str){var buffer;if(str instanceof Buffer){buffer=str}else{buffer=new Buffer(str.toString(),"binary")}return buffer.toString("base64")}module.exports=btoa})()}).call(this,require("buffer").Buffer)},{buffer:350}],157:[function(require,module,exports){"use strict";var BPromise=require("bluebird");var request=BPromise.promisify(require("request"));var JXT=require("jxt").createRegistry();JXT.use(require("./lib/xrd"));module.exports=function(opts,cb){if(typeof opts==="string"){opts={host:opts}}var config={ssl:true,json:true,xrd:true};for(var prop in opts){config[prop]=opts[prop]}var scheme=config.ssl?"https://":"http://";var getJSON=new BPromise(function(resolve,reject){request(scheme+config.host+"/.well-known/host-meta.json").spread(function(req,body){resolve(JSON.parse(body))}).catch(reject)});var getXRD=new BPromise(function(resolve,reject){request(scheme+config.host+"/.well-known/host-meta").spread(function(req,body){var xrd=JXT.parse(body);resolve(xrd.toJSON())}).catch(reject)});return new BPromise(function(resolve,reject){BPromise.some([getJSON,getXRD],1).spread(resolve).catch(function(){reject("no-host-meta")})}).nodeify(cb)}},{"./lib/xrd":158,bluebird:123,jxt:321,request:159}],158:[function(require,module,exports){"use strict";var jxt=require("jxt");var NS="http://docs.oasis-open.org/ns/xri/xrd-1.0";module.exports=function(registry){var Properties={get:function(){var results={};var props=jxt.find(this.xml,NS,"Property");for(var i=0,len=props.length;i<len;i++){var property=props[i];var type=jxt.getAttribute(property,"type");results[type]=property.textContent}return results}};var XRD=registry.define({name:"xrd",namespace:NS,element:"XRD",fields:{subject:jxt.subText(NS,"Subject"),expires:jxt.dateSub(NS,"Expires"),aliases:jxt.multiSubText(NS,"Alias"),properties:Properties}});var Link=registry.define({name:"_xrdlink",namespace:NS,element:"Link",fields:{rel:jxt.attribute("rel"),href:jxt.attribute("href"),type:jxt.attribute("type"),template:jxt.attribute("template"),titles:jxt.subLangText(NS,"Title","default"),properties:Properties}});registry.extend(XRD,Link,"links");return XRD}},{jxt:321}],159:[function(require,module,exports){var XHR=XMLHttpRequest;if(!XHR)throw new Error("missing XMLHttpRequest");module.exports=request;request.log={trace:noop,debug:noop,info:noop,warn:noop,error:noop};var DEFAULT_TIMEOUT=3*60*1e3;function request(options,callback){if(typeof callback!=="function")throw new Error("Bad callback given: "+callback);if(!options)throw new Error("No options given");var options_onResponse=options.onResponse;if(typeof options==="string")options={uri:options};else options=JSON.parse(JSON.stringify(options));options.onResponse=options_onResponse;if(options.verbose)request.log=getLogger();if(options.url){options.uri=options.url;delete options.url}if(!options.uri&&options.uri!=="")throw new Error("options.uri is a required argument");if(typeof options.uri!="string")throw new Error("options.uri must be a string");var unsupported_options=["proxy","_redirectsFollowed","maxRedirects","followRedirect"];for(var i=0;i<unsupported_options.length;i++)if(options[unsupported_options[i]])throw new Error("options."+unsupported_options[i]+" is not supported");options.callback=callback;options.method=options.method||"GET";options.headers=options.headers||{};options.body=options.body||null;options.timeout=options.timeout||request.DEFAULT_TIMEOUT;if(options.headers.host)throw new Error("Options.headers.host is not supported");if(options.json){options.headers.accept=options.headers.accept||"application/json";if(options.method!=="GET")options.headers["content-type"]="application/json";if(typeof options.json!=="boolean")options.body=JSON.stringify(options.json);else if(typeof options.body!=="string")options.body=JSON.stringify(options.body)}options.onResponse=options.onResponse||noop;if(options.onResponse===true){options.onResponse=callback;options.callback=noop}if(!options.headers.authorization&&options.auth)options.headers.authorization="Basic "+b64_enc(options.auth.username+":"+options.auth.password);return run_xhr(options)}var req_seq=0;function run_xhr(options){var xhr=new XHR,timed_out=false,is_cors=is_crossDomain(options.uri),supports_cors="withCredentials"in xhr;req_seq+=1;xhr.seq_id=req_seq;xhr.id=req_seq+": "+options.method+" "+options.uri;xhr._id=xhr.id;if(is_cors&&!supports_cors){var cors_err=new Error("Browser does not support cross-origin request: "+options.uri);cors_err.cors="unsupported";return options.callback(cors_err,xhr)}xhr.timeoutTimer=setTimeout(too_late,options.timeout);function too_late(){timed_out=true;var er=new Error("ETIMEDOUT");er.code="ETIMEDOUT";er.duration=options.timeout;request.log.error("Timeout",{id:xhr._id,milliseconds:options.timeout});return options.callback(er,xhr)}var did={response:false,loading:false,end:false};xhr.onreadystatechange=on_state_change;xhr.open(options.method,options.uri,true);if(is_cors)xhr.withCredentials=!!options.withCredentials;xhr.send(options.body);return xhr;function on_state_change(event){if(timed_out)return request.log.debug("Ignoring timed out state change",{state:xhr.readyState,id:xhr.id});request.log.debug("State change",{state:xhr.readyState,id:xhr.id,timed_out:timed_out});if(xhr.readyState===XHR.OPENED){request.log.debug("Request started",{id:xhr.id});for(var key in options.headers)xhr.setRequestHeader(key,options.headers[key])}else if(xhr.readyState===XHR.HEADERS_RECEIVED)on_response();else if(xhr.readyState===XHR.LOADING){on_response();on_loading()}else if(xhr.readyState===XHR.DONE){on_response();on_loading();on_end()}}function on_response(){if(did.response)return;did.response=true;request.log.debug("Got response",{id:xhr.id,status:xhr.status});clearTimeout(xhr.timeoutTimer);xhr.statusCode=xhr.status;if(is_cors&&xhr.statusCode==0){var cors_err=new Error("CORS request rejected: "+options.uri);cors_err.cors="rejected";did.loading=true;did.end=true;return options.callback(cors_err,xhr)}options.onResponse(null,xhr)}function on_loading(){if(did.loading)return;did.loading=true;request.log.debug("Response body loading",{id:xhr.id})}function on_end(){if(did.end)return;did.end=true;request.log.debug("Request done",{id:xhr.id});xhr.body=xhr.responseText;if(options.json){try{xhr.body=JSON.parse(xhr.responseText)}catch(er){return options.callback(er,xhr)}}options.callback(null,xhr,xhr.body)}}request.withCredentials=false;request.DEFAULT_TIMEOUT=DEFAULT_TIMEOUT;request.defaults=function(options,requester){var def=function(method){var d=function(params,callback){if(typeof params==="string")params={uri:params};else{params=JSON.parse(JSON.stringify(params))}for(var i in options){if(params[i]===undefined)params[i]=options[i]}return method(params,callback)};return d};var de=def(request);de.get=def(request.get);de.post=def(request.post);de.put=def(request.put);de.head=def(request.head);return de};var shortcuts=["get","put","post","head"];shortcuts.forEach(function(shortcut){var method=shortcut.toUpperCase();var func=shortcut.toLowerCase();request[func]=function(opts){if(typeof opts==="string")opts={method:method,uri:opts};else{opts=JSON.parse(JSON.stringify(opts));opts.method=method}var args=[opts].concat(Array.prototype.slice.apply(arguments,[1]));return request.apply(this,args)}});request.couch=function(options,callback){if(typeof options==="string")options={uri:options};options.json=true;if(options.body)options.json=options.body;delete options.body;callback=callback||noop;var xhr=request(options,couch_handler);return xhr;function couch_handler(er,resp,body){if(er)return callback(er,resp,body);if((resp.statusCode<200||resp.statusCode>299)&&body.error){er=new Error("CouchDB error: "+(body.error.reason||body.error.error));for(var key in body)er[key]=body[key];return callback(er,resp,body)}return callback(er,resp,body)}};function noop(){}function getLogger(){var logger={},levels=["trace","debug","info","warn","error"],level,i;for(i=0;i<levels.length;i++){level=levels[i];logger[level]=noop;if(typeof console!=="undefined"&&console&&console[level])logger[level]=formatted(console,level)}return logger}function formatted(obj,method){return formatted_logger;function formatted_logger(str,context){if(typeof context==="object")str+=" "+JSON.stringify(context);return obj[method].call(obj,str)}}function is_crossDomain(url){var rurl=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/;var ajaxLocation;try{ajaxLocation=location.href}catch(e){ajaxLocation=document.createElement("a");ajaxLocation.href="";ajaxLocation=ajaxLocation.href}var ajaxLocParts=rurl.exec(ajaxLocation.toLowerCase())||[],parts=rurl.exec(url.toLowerCase());var result=!!(parts&&(parts[1]!=ajaxLocParts[1]||parts[2]!=ajaxLocParts[2]||(parts[3]||(parts[1]==="http:"?80:443))!=(ajaxLocParts[3]||(ajaxLocParts[1]==="http:"?80:443))));return result}function b64_enc(data){var b64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var o1,o2,o3,h1,h2,h3,h4,bits,i=0,ac=0,enc="",tmp_arr=[];if(!data){return data}do{o1=data.charCodeAt(i++);o2=data.charCodeAt(i++);o3=data.charCodeAt(i++);bits=o1<<16|o2<<8|o3;h1=bits>>18&63;h2=bits>>12&63;h3=bits>>6&63;h4=bits&63;tmp_arr[ac++]=b64.charAt(h1)+b64.charAt(h2)+b64.charAt(h3)+b64.charAt(h4)}while(i<data.length);enc=tmp_arr.join("");switch(data.length%3){case 1:enc=enc.slice(0,-2)+"==";break;case 2:enc=enc.slice(0,-1)+"=";break}return enc}},{}],160:[function(require,module,exports){var crypto=require("crypto");var mapping={md2:"md2",md5:"md5","sha-1":"sha1","sha-224":"sha224","sha-256":"sha256","sha-384":"sha384","sha-512":"sha512"};var names=Object.keys(mapping);exports.getHashes=function(){var result=[];var available=crypto.getHashes();for(var i=0,len=names.length;i<len;i++){if(available.indexOf(mapping[names[i]])>=0){result.push(names[i])}}return result};exports.createHash=function(algorithm){algorithm=algorithm.toLowerCase();
if(mapping[algorithm]){algorithm=mapping[algorithm]}return crypto.createHash(algorithm)};exports.createHmac=function(algorithm,key){algorithm=algorithm.toLowerCase();if(mapping[algorithm]){algorithm=mapping[algorithm]}return crypto.createHmac(algorithm,key)}},{crypto:161}],161:[function(require,module,exports){"use strict";exports.randomBytes=exports.rng=require("randombytes");var prng=exports.prng=require("./prng");function error(){var m=[].slice.call(arguments).join(" ");throw new Error([m,"we accept pull requests","http://github.com/dominictarr/crypto-browserify"].join("\n"))}exports.createHash=exports.Hash=require("create-hash");exports.createHmac=exports.Hmac=require("create-hmac");exports.pseudoRandomBytes=function(size,callback){if(callback&&callback.call){var res;try{res=prng(size)}catch(err){return callback(err)}callback.call(this,undefined,res)}else{return prng(size)}};function each(a,f){for(var i in a)f(a[i],i)}var hashes=["sha1","sha224","sha256","sha384","sha512","md5","rmd160"].concat(Object.keys(require("browserify-sign/algos")));exports.getHashes=function(){return hashes};var p=require("./pbkdf2")(exports);exports.pbkdf2=p.pbkdf2;exports.pbkdf2Sync=p.pbkdf2Sync;var aes=require("browserify-aes");["Cipher","createCipher","Cipheriv","createCipheriv","Decipher","createDecipher","Decipheriv","createDecipheriv","getCiphers","listCiphers"].forEach(function(key){exports[key]=aes[key]});require("browserify-sign/inject")(module.exports,exports);require("diffie-hellman/inject")(exports,module.exports);require("create-ecdh/inject")(module.exports,exports);require("public-encrypt/inject")(module.exports,exports);each(["createCredentials"],function(name){exports[name]=function(){error("sorry,",name,"is not implemented yet")}})},{"./pbkdf2":298,"./prng":299,"browserify-aes":165,"browserify-sign/algos":180,"browserify-sign/inject":181,"create-ecdh/inject":227,"create-hash":249,"create-hmac":260,"diffie-hellman/inject":263,"public-encrypt/inject":270,randombytes:297}],162:[function(require,module,exports){(function(Buffer){var md5=require("create-hash/md5");module.exports=EVP_BytesToKey;function EVP_BytesToKey(password,keyLen,ivLen){if(!Buffer.isBuffer(password)){password=new Buffer(password,"binary")}keyLen=keyLen/8;ivLen=ivLen||0;var ki=0;var ii=0;var key=new Buffer(keyLen);var iv=new Buffer(ivLen);var addmd=0;var md_buf;var i;var bufs=[];while(true){if(addmd++>0){bufs.push(md_buf)}bufs.push(password);md_buf=md5(Buffer.concat(bufs));bufs=[];i=0;if(keyLen>0){while(true){if(keyLen===0){break}if(i===md_buf.length){break}key[ki++]=md_buf[i];keyLen--;i++}}if(ivLen>0&&i!==md_buf.length){while(true){if(ivLen===0){break}if(i===md_buf.length){break}iv[ii++]=md_buf[i];ivLen--;i++}}if(keyLen===0&&ivLen===0){break}}for(i=0;i<md_buf.length;i++){md_buf[i]=0}return{key:key,iv:iv}}}).call(this,require("buffer").Buffer)},{buffer:350,"create-hash/md5":251}],163:[function(require,module,exports){(function(Buffer){var uint_max=Math.pow(2,32);function fixup_uint32(x){var ret,x_pos;ret=x>uint_max||x<0?(x_pos=Math.abs(x)%uint_max,x<0?uint_max-x_pos:x_pos):x;return ret}function scrub_vec(v){var i,_i,_ref;for(i=_i=0,_ref=v.length;0<=_ref?_i<_ref:_i>_ref;i=0<=_ref?++_i:--_i){v[i]=0}return false}function Global(){var i;this.SBOX=[];this.INV_SBOX=[];this.SUB_MIX=function(){var _i,_results;_results=[];for(i=_i=0;_i<4;i=++_i){_results.push([])}return _results}();this.INV_SUB_MIX=function(){var _i,_results;_results=[];for(i=_i=0;_i<4;i=++_i){_results.push([])}return _results}();this.init();this.RCON=[0,1,2,4,8,16,32,64,128,27,54]}Global.prototype.init=function(){var d,i,sx,t,x,x2,x4,x8,xi,_i;d=function(){var _i,_results;_results=[];for(i=_i=0;_i<256;i=++_i){if(i<128){_results.push(i<<1)}else{_results.push(i<<1^283)}}return _results}();x=0;xi=0;for(i=_i=0;_i<256;i=++_i){sx=xi^xi<<1^xi<<2^xi<<3^xi<<4;sx=sx>>>8^sx&255^99;this.SBOX[x]=sx;this.INV_SBOX[sx]=x;x2=d[x];x4=d[x2];x8=d[x4];t=d[sx]*257^sx*16843008;this.SUB_MIX[0][x]=t<<24|t>>>8;this.SUB_MIX[1][x]=t<<16|t>>>16;this.SUB_MIX[2][x]=t<<8|t>>>24;this.SUB_MIX[3][x]=t;t=x8*16843009^x4*65537^x2*257^x*16843008;this.INV_SUB_MIX[0][sx]=t<<24|t>>>8;this.INV_SUB_MIX[1][sx]=t<<16|t>>>16;this.INV_SUB_MIX[2][sx]=t<<8|t>>>24;this.INV_SUB_MIX[3][sx]=t;if(x===0){x=xi=1}else{x=x2^d[d[d[x8^x2]]];xi^=d[d[xi]]}}return true};var G=new Global;AES.blockSize=4*4;AES.prototype.blockSize=AES.blockSize;AES.keySize=256/8;AES.prototype.keySize=AES.keySize;function bufferToArray(buf){var len=buf.length/4;var out=new Array(len);var i=-1;while(++i<len){out[i]=buf.readUInt32BE(i*4)}return out}function AES(key){this._key=bufferToArray(key);this._doReset()}AES.prototype._doReset=function(){var invKsRow,keySize,keyWords,ksRow,ksRows,t,_i,_j;keyWords=this._key;keySize=keyWords.length;this._nRounds=keySize+6;ksRows=(this._nRounds+1)*4;this._keySchedule=[];for(ksRow=_i=0;0<=ksRows?_i<ksRows:_i>ksRows;ksRow=0<=ksRows?++_i:--_i){this._keySchedule[ksRow]=ksRow<keySize?keyWords[ksRow]:(t=this._keySchedule[ksRow-1],ksRow%keySize===0?(t=t<<8|t>>>24,t=G.SBOX[t>>>24]<<24|G.SBOX[t>>>16&255]<<16|G.SBOX[t>>>8&255]<<8|G.SBOX[t&255],t^=G.RCON[ksRow/keySize|0]<<24):keySize>6&&ksRow%keySize===4?t=G.SBOX[t>>>24]<<24|G.SBOX[t>>>16&255]<<16|G.SBOX[t>>>8&255]<<8|G.SBOX[t&255]:void 0,this._keySchedule[ksRow-keySize]^t)}this._invKeySchedule=[];for(invKsRow=_j=0;0<=ksRows?_j<ksRows:_j>ksRows;invKsRow=0<=ksRows?++_j:--_j){ksRow=ksRows-invKsRow;t=this._keySchedule[ksRow-(invKsRow%4?0:4)];this._invKeySchedule[invKsRow]=invKsRow<4||ksRow<=4?t:G.INV_SUB_MIX[0][G.SBOX[t>>>24]]^G.INV_SUB_MIX[1][G.SBOX[t>>>16&255]]^G.INV_SUB_MIX[2][G.SBOX[t>>>8&255]]^G.INV_SUB_MIX[3][G.SBOX[t&255]]}return true};AES.prototype.encryptBlock=function(M){M=bufferToArray(new Buffer(M));var out=this._doCryptBlock(M,this._keySchedule,G.SUB_MIX,G.SBOX);var buf=new Buffer(16);buf.writeUInt32BE(out[0],0);buf.writeUInt32BE(out[1],4);buf.writeUInt32BE(out[2],8);buf.writeUInt32BE(out[3],12);return buf};AES.prototype.decryptBlock=function(M){M=bufferToArray(new Buffer(M));var temp=[M[3],M[1]];M[1]=temp[0];M[3]=temp[1];var out=this._doCryptBlock(M,this._invKeySchedule,G.INV_SUB_MIX,G.INV_SBOX);var buf=new Buffer(16);buf.writeUInt32BE(out[0],0);buf.writeUInt32BE(out[3],4);buf.writeUInt32BE(out[2],8);buf.writeUInt32BE(out[1],12);return buf};AES.prototype.scrub=function(){scrub_vec(this._keySchedule);scrub_vec(this._invKeySchedule);scrub_vec(this._key)};AES.prototype._doCryptBlock=function(M,keySchedule,SUB_MIX,SBOX){var ksRow,round,s0,s1,s2,s3,t0,t1,t2,t3,_i,_ref;s0=M[0]^keySchedule[0];s1=M[1]^keySchedule[1];s2=M[2]^keySchedule[2];s3=M[3]^keySchedule[3];ksRow=4;for(round=_i=1,_ref=this._nRounds;1<=_ref?_i<_ref:_i>_ref;round=1<=_ref?++_i:--_i){t0=SUB_MIX[0][s0>>>24]^SUB_MIX[1][s1>>>16&255]^SUB_MIX[2][s2>>>8&255]^SUB_MIX[3][s3&255]^keySchedule[ksRow++];t1=SUB_MIX[0][s1>>>24]^SUB_MIX[1][s2>>>16&255]^SUB_MIX[2][s3>>>8&255]^SUB_MIX[3][s0&255]^keySchedule[ksRow++];t2=SUB_MIX[0][s2>>>24]^SUB_MIX[1][s3>>>16&255]^SUB_MIX[2][s0>>>8&255]^SUB_MIX[3][s1&255]^keySchedule[ksRow++];t3=SUB_MIX[0][s3>>>24]^SUB_MIX[1][s0>>>16&255]^SUB_MIX[2][s1>>>8&255]^SUB_MIX[3][s2&255]^keySchedule[ksRow++];s0=t0;s1=t1;s2=t2;s3=t3}t0=(SBOX[s0>>>24]<<24|SBOX[s1>>>16&255]<<16|SBOX[s2>>>8&255]<<8|SBOX[s3&255])^keySchedule[ksRow++];t1=(SBOX[s1>>>24]<<24|SBOX[s2>>>16&255]<<16|SBOX[s3>>>8&255]<<8|SBOX[s0&255])^keySchedule[ksRow++];t2=(SBOX[s2>>>24]<<24|SBOX[s3>>>16&255]<<16|SBOX[s0>>>8&255]<<8|SBOX[s1&255])^keySchedule[ksRow++];t3=(SBOX[s3>>>24]<<24|SBOX[s0>>>16&255]<<16|SBOX[s1>>>8&255]<<8|SBOX[s2&255])^keySchedule[ksRow++];return[fixup_uint32(t0),fixup_uint32(t1),fixup_uint32(t2),fixup_uint32(t3)]};exports.AES=AES}).call(this,require("buffer").Buffer)},{buffer:350}],164:[function(require,module,exports){(function(Buffer){var aes=require("./aes");var Transform=require("./cipherBase");var inherits=require("inherits");var GHASH=require("./ghash");var xor=require("./xor");inherits(StreamCipher,Transform);module.exports=StreamCipher;function StreamCipher(mode,key,iv,decrypt){if(!(this instanceof StreamCipher)){return new StreamCipher(mode,key,iv)}Transform.call(this);this._finID=Buffer.concat([iv,new Buffer([0,0,0,1])]);iv=Buffer.concat([iv,new Buffer([0,0,0,2])]);this._cipher=new aes.AES(key);this._prev=new Buffer(iv.length);this._cache=new Buffer("");this._secCache=new Buffer("");this._decrypt=decrypt;this._alen=0;this._len=0;iv.copy(this._prev);this._mode=mode;var h=new Buffer(4);h.fill(0);this._ghash=new GHASH(this._cipher.encryptBlock(h));this._authTag=null;this._called=false}StreamCipher.prototype._update=function(chunk){if(!this._called&&this._alen){var rump=16-this._alen%16;if(rump<16){rump=new Buffer(rump);rump.fill(0);this._ghash.update(rump)}}this._called=true;var out=this._mode.encrypt(this,chunk);if(this._decrypt){this._ghash.update(chunk)}else{this._ghash.update(out)}this._len+=chunk.length;return out};StreamCipher.prototype._final=function(){if(this._decrypt&&!this._authTag){throw new Error("Unsupported state or unable to authenticate data")}var tag=xor(this._ghash.final(this._alen*8,this._len*8),this._cipher.encryptBlock(this._finID));if(this._decrypt){if(xorTest(tag,this._authTag)){throw new Error("Unsupported state or unable to authenticate data")}}else{this._authTag=tag}this._cipher.scrub()};StreamCipher.prototype.getAuthTag=function getAuthTag(){if(!this._decrypt&&Buffer.isBuffer(this._authTag)){return this._authTag}else{throw new Error("Attempting to get auth tag in unsupported state")}};StreamCipher.prototype.setAuthTag=function setAuthTag(tag){if(this._decrypt){this._authTag=tag}else{throw new Error("Attempting to set auth tag in unsupported state")}};StreamCipher.prototype.setAAD=function setAAD(buf){if(!this._called){this._ghash.update(buf);this._alen+=buf.length}else{throw new Error("Attempting to set AAD in unsupported state")}};function xorTest(a,b){var out=0;if(a.length!==b.length){out++}var len=Math.min(a.length,b.length);var i=-1;while(++i<len){out+=a[i]^b[i]}return out}}).call(this,require("buffer").Buffer)},{"./aes":163,"./cipherBase":166,"./ghash":169,"./xor":179,buffer:350,inherits:268}],165:[function(require,module,exports){var ciphers=require("./encrypter");exports.createCipher=exports.Cipher=ciphers.createCipher;exports.createCipheriv=exports.Cipheriv=ciphers.createCipheriv;var deciphers=require("./decrypter");exports.createDecipher=exports.Decipher=deciphers.createDecipher;exports.createDecipheriv=exports.Decipheriv=deciphers.createDecipheriv;var modes=require("./modes");function getCiphers(){return Object.keys(modes)}exports.listCiphers=exports.getCiphers=getCiphers},{"./decrypter":167,"./encrypter":168,"./modes":170}],166:[function(require,module,exports){(function(Buffer){var Transform=require("stream").Transform;var inherits=require("inherits");module.exports=CipherBase;inherits(CipherBase,Transform);function CipherBase(){Transform.call(this)}CipherBase.prototype.update=function(data,inputEnc,outputEnc){if(typeof data==="string"){data=new Buffer(data,inputEnc)}var outData=this._update(data);if(outputEnc){outData=outData.toString(outputEnc)}return outData};CipherBase.prototype._transform=function(data,_,next){this.push(this._update(data));next()};CipherBase.prototype._flush=function(next){try{this.push(this._final())}catch(e){return next(e)}next()};CipherBase.prototype.final=function(outputEnc){var outData=this._final()||new Buffer("");if(outputEnc){outData=outData.toString(outputEnc)}return outData}}).call(this,require("buffer").Buffer)},{buffer:350,inherits:268,stream:364}],167:[function(require,module,exports){(function(Buffer){var aes=require("./aes");var Transform=require("./cipherBase");var inherits=require("inherits");var modes=require("./modes");var StreamCipher=require("./streamCipher");var AuthCipher=require("./authCipher");var ebtk=require("./EVP_BytesToKey");inherits(Decipher,Transform);function Decipher(mode,key,iv){if(!(this instanceof Decipher)){return new Decipher(mode,key,iv)}Transform.call(this);this._cache=new Splitter;this._last=void 0;this._cipher=new aes.AES(key);this._prev=new Buffer(iv.length);iv.copy(this._prev);this._mode=mode;this._autopadding=true}Decipher.prototype._update=function(data){this._cache.add(data);var chunk;var thing;var out=[];while(chunk=this._cache.get(this._autopadding)){thing=this._mode.decrypt(this,chunk);out.push(thing)}return Buffer.concat(out)};Decipher.prototype._final=function(){var chunk=this._cache.flush();if(this._autopadding){return unpad(this._mode.decrypt(this,chunk))}else if(chunk){throw new Error("data not multiple of block length")}};Decipher.prototype.setAutoPadding=function(setTo){this._autopadding=!!setTo};function Splitter(){if(!(this instanceof Splitter)){return new Splitter}this.cache=new Buffer("")}Splitter.prototype.add=function(data){this.cache=Buffer.concat([this.cache,data])};Splitter.prototype.get=function(autoPadding){var out;if(autoPadding){if(this.cache.length>16){out=this.cache.slice(0,16);this.cache=this.cache.slice(16);return out}}else{if(this.cache.length>=16){out=this.cache.slice(0,16);this.cache=this.cache.slice(16);return out}}return null};Splitter.prototype.flush=function(){if(this.cache.length){return this.cache}};function unpad(last){var padded=last[15];var i=-1;while(++i<padded){if(last[i+(16-padded)]!==padded){throw new Error("unable to decrypt data")}}if(padded===16){return}return last.slice(0,16-padded)}var modelist={ECB:require("./modes/ecb"),CBC:require("./modes/cbc"),CFB:require("./modes/cfb"),CFB8:require("./modes/cfb8"),CFB1:require("./modes/cfb1"),OFB:require("./modes/ofb"),CTR:require("./modes/ctr"),GCM:require("./modes/ctr")};function createDecipheriv(suite,password,iv){var config=modes[suite.toLowerCase()];if(!config){throw new TypeError("invalid suite type")}if(typeof iv==="string"){iv=new Buffer(iv)}if(typeof password==="string"){password=new Buffer(password)}if(password.length!==config.key/8){throw new TypeError("invalid key length "+password.length)}if(iv.length!==config.iv){throw new TypeError("invalid iv length "+iv.length)}if(config.type==="stream"){return new StreamCipher(modelist[config.mode],password,iv,true)}else if(config.type==="auth"){return new AuthCipher(modelist[config.mode],password,iv,true)}return new Decipher(modelist[config.mode],password,iv)}function createDecipher(suite,password){var config=modes[suite.toLowerCase()];if(!config){throw new TypeError("invalid suite type")}var keys=ebtk(password,config.key,config.iv);return createDecipheriv(suite,keys.key,keys.iv)}exports.createDecipher=createDecipher;exports.createDecipheriv=createDecipheriv}).call(this,require("buffer").Buffer)},{"./EVP_BytesToKey":162,"./aes":163,"./authCipher":164,"./cipherBase":166,"./modes":170,"./modes/cbc":171,"./modes/cfb":172,"./modes/cfb1":173,"./modes/cfb8":174,"./modes/ctr":175,"./modes/ecb":176,"./modes/ofb":177,"./streamCipher":178,buffer:350,inherits:268}],168:[function(require,module,exports){(function(Buffer){var aes=require("./aes");var Transform=require("./cipherBase");var inherits=require("inherits");var modes=require("./modes");var ebtk=require("./EVP_BytesToKey");var StreamCipher=require("./streamCipher");var AuthCipher=require("./authCipher");inherits(Cipher,Transform);function Cipher(mode,key,iv){if(!(this instanceof Cipher)){return new Cipher(mode,key,iv)}Transform.call(this);this._cache=new Splitter;this._cipher=new aes.AES(key);this._prev=new Buffer(iv.length);iv.copy(this._prev);this._mode=mode;this._autopadding=true}Cipher.prototype._update=function(data){this._cache.add(data);var chunk;var thing;var out=[];while(chunk=this._cache.get()){thing=this._mode.encrypt(this,chunk);out.push(thing)}return Buffer.concat(out)};Cipher.prototype._final=function(){var chunk=this._cache.flush();if(this._autopadding){chunk=this._mode.encrypt(this,chunk);this._cipher.scrub();return chunk}else if(chunk.toString("hex")!=="10101010101010101010101010101010"){this._cipher.scrub();throw new Error("data not multiple of block length")}};Cipher.prototype.setAutoPadding=function(setTo){this._autopadding=!!setTo};function Splitter(){if(!(this instanceof Splitter)){return new Splitter}this.cache=new Buffer("")}Splitter.prototype.add=function(data){this.cache=Buffer.concat([this.cache,data])};Splitter.prototype.get=function(){if(this.cache.length>15){var out=this.cache.slice(0,16);this.cache=this.cache.slice(16);return out}return null};Splitter.prototype.flush=function(){var len=16-this.cache.length;var padBuff=new Buffer(len);var i=-1;while(++i<len){padBuff.writeUInt8(len,i)}var out=Buffer.concat([this.cache,padBuff]);return out};var modelist={ECB:require("./modes/ecb"),CBC:require("./modes/cbc"),CFB:require("./modes/cfb"),CFB8:require("./modes/cfb8"),CFB1:require("./modes/cfb1"),OFB:require("./modes/ofb"),CTR:require("./modes/ctr"),GCM:require("./modes/ctr")};function createCipheriv(suite,password,iv){var config=modes[suite.toLowerCase()];if(!config){throw new TypeError("invalid suite type")}if(typeof iv==="string"){iv=new Buffer(iv)}if(typeof password==="string"){password=new Buffer(password)}if(password.length!==config.key/8){throw new TypeError("invalid key length "+password.length)}if(iv.length!==config.iv){throw new TypeError("invalid iv length "+iv.length)}if(config.type==="stream"){return new StreamCipher(modelist[config.mode],password,iv)}else if(config.type==="auth"){return new AuthCipher(modelist[config.mode],password,iv)}return new Cipher(modelist[config.mode],password,iv)}function createCipher(suite,password){var config=modes[suite.toLowerCase()];if(!config){throw new TypeError("invalid suite type")}var keys=ebtk(password,config.key,config.iv);return createCipheriv(suite,keys.key,keys.iv)}exports.createCipheriv=createCipheriv;exports.createCipher=createCipher}).call(this,require("buffer").Buffer)},{"./EVP_BytesToKey":162,"./aes":163,"./authCipher":164,"./cipherBase":166,"./modes":170,"./modes/cbc":171,"./modes/cfb":172,"./modes/cfb1":173,"./modes/cfb8":174,"./modes/ctr":175,"./modes/ecb":176,"./modes/ofb":177,"./streamCipher":178,buffer:350,inherits:268}],169:[function(require,module,exports){(function(Buffer){var zeros=new Buffer(16);zeros.fill(0);module.exports=GHASH;function GHASH(key){this.h=key;this.state=new Buffer(16);this.state.fill(0);this.cache=new Buffer("")}GHASH.prototype.ghash=function(block){var i=-1;while(++i<block.length){this.state[i]^=block[i]}this._multiply()};GHASH.prototype._multiply=function(){var Vi=toArray(this.h);var Zi=[0,0,0,0];var j,xi,lsb_Vi;var i=-1;while(++i<128){xi=(this.state[~~(i/8)]&1<<7-i%8)!==0;if(xi){Zi=xor(Zi,Vi)}lsb_Vi=(Vi[3]&1)!==0;for(j=3;j>0;j--){Vi[j]=Vi[j]>>>1|(Vi[j-1]&1)<<31}Vi[0]=Vi[0]>>>1;if(lsb_Vi){Vi[0]=Vi[0]^225<<24}}this.state=fromArray(Zi)};GHASH.prototype.update=function(buf){this.cache=Buffer.concat([this.cache,buf]);var chunk;while(this.cache.length>=16){chunk=this.cache.slice(0,16);this.cache=this.cache.slice(16);this.ghash(chunk)}};GHASH.prototype.final=function(abl,bl){if(this.cache.length){this.ghash(Buffer.concat([this.cache,zeros],16))}this.ghash(fromArray([0,abl,0,bl]));return this.state};function toArray(buf){return[buf.readUInt32BE(0),buf.readUInt32BE(4),buf.readUInt32BE(8),buf.readUInt32BE(12)]}function fromArray(out){out=out.map(fixup_uint32);var buf=new Buffer(16);buf.writeUInt32BE(out[0],0);buf.writeUInt32BE(out[1],4);buf.writeUInt32BE(out[2],8);buf.writeUInt32BE(out[3],12);return buf}var uint_max=Math.pow(2,32);function fixup_uint32(x){var ret,x_pos;ret=x>uint_max||x<0?(x_pos=Math.abs(x)%uint_max,x<0?uint_max-x_pos:x_pos):x;return ret}function xor(a,b){return[a[0]^b[0],a[1]^b[1],a[2]^b[2],a[3]^b[3]]}}).call(this,require("buffer").Buffer)},{buffer:350}],170:[function(require,module,exports){exports["aes-128-ecb"]={cipher:"AES",key:128,iv:0,mode:"ECB",type:"block"};exports["aes-192-ecb"]={cipher:"AES",key:192,iv:0,mode:"ECB",type:"block"};exports["aes-256-ecb"]={cipher:"AES",key:256,iv:0,mode:"ECB",type:"block"};exports["aes-128-cbc"]={cipher:"AES",key:128,iv:16,mode:"CBC",type:"block"};exports["aes-192-cbc"]={cipher:"AES",key:192,iv:16,mode:"CBC",type:"block"};exports["aes-256-cbc"]={cipher:"AES",key:256,iv:16,mode:"CBC",type:"block"};exports["aes128"]=exports["aes-128-cbc"];exports["aes192"]=exports["aes-192-cbc"];exports["aes256"]=exports["aes-256-cbc"];exports["aes-128-cfb"]={cipher:"AES",key:128,iv:16,mode:"CFB",type:"stream"};exports["aes-192-cfb"]={cipher:"AES",key:192,iv:16,mode:"CFB",type:"stream"};exports["aes-256-cfb"]={cipher:"AES",key:256,iv:16,mode:"CFB",type:"stream"};exports["aes-128-cfb8"]={cipher:"AES",key:128,iv:16,mode:"CFB8",type:"stream"};exports["aes-192-cfb8"]={cipher:"AES",key:192,iv:16,mode:"CFB8",type:"stream"};exports["aes-256-cfb8"]={cipher:"AES",key:256,iv:16,mode:"CFB8",type:"stream"};exports["aes-128-cfb1"]={cipher:"AES",key:128,iv:16,mode:"CFB1",type:"stream"};exports["aes-192-cfb1"]={cipher:"AES",key:192,iv:16,mode:"CFB1",type:"stream"};exports["aes-256-cfb1"]={cipher:"AES",key:256,iv:16,mode:"CFB1",type:"stream"};exports["aes-128-ofb"]={cipher:"AES",key:128,iv:16,mode:"OFB",type:"stream"};exports["aes-192-ofb"]={cipher:"AES",key:192,iv:16,mode:"OFB",type:"stream"};exports["aes-256-ofb"]={cipher:"AES",key:256,iv:16,mode:"OFB",type:"stream"};exports["aes-128-ctr"]={cipher:"AES",key:128,iv:16,mode:"CTR",type:"stream"};exports["aes-192-ctr"]={cipher:"AES",key:192,iv:16,mode:"CTR",type:"stream"};exports["aes-256-ctr"]={cipher:"AES",key:256,iv:16,mode:"CTR",type:"stream"};exports["aes-128-gcm"]={cipher:"AES",key:128,iv:12,mode:"GCM",type:"auth"};exports["aes-192-gcm"]={cipher:"AES",key:192,iv:12,mode:"GCM",type:"auth"};exports["aes-256-gcm"]={cipher:"AES",key:256,iv:12,mode:"GCM",type:"auth"}},{}],171:[function(require,module,exports){var xor=require("../xor");exports.encrypt=function(self,block){var data=xor(block,self._prev);self._prev=self._cipher.encryptBlock(data);return self._prev};exports.decrypt=function(self,block){var pad=self._prev;self._prev=block;var out=self._cipher.decryptBlock(block);return xor(out,pad)}},{"../xor":179}],172:[function(require,module,exports){(function(Buffer){var xor=require("../xor");exports.encrypt=function(self,data,decrypt){var out=new Buffer("");var len;while(data.length){if(self._cache.length===0){self._cache=self._cipher.encryptBlock(self._prev);self._prev=new Buffer("")}if(self._cache.length<=data.length){len=self._cache.length;out=Buffer.concat([out,encryptStart(self,data.slice(0,len),decrypt)]);data=data.slice(len)}else{out=Buffer.concat([out,encryptStart(self,data,decrypt)]);break}}return out};function encryptStart(self,data,decrypt){var len=data.length;var out=xor(data,self._cache);self._cache=self._cache.slice(len);self._prev=Buffer.concat([self._prev,decrypt?data:out]);return out}}).call(this,require("buffer").Buffer)},{"../xor":179,buffer:350}],173:[function(require,module,exports){(function(Buffer){function encryptByte(self,byte,decrypt){var pad;var i=-1;var len=8;var out=0;var bit,value;while(++i<len){pad=self._cipher.encryptBlock(self._prev);bit=byte&1<<7-i?128:0;value=pad[0]^bit;out+=(value&128)>>i%8;self._prev=shiftIn(self._prev,decrypt?bit:value)}return out}exports.encrypt=function(self,chunk,decrypt){var len=chunk.length;var out=new Buffer(len);var i=-1;while(++i<len){out[i]=encryptByte(self,chunk[i],decrypt)}return out};function shiftIn(buffer,value){var len=buffer.length;var i=-1;var out=new Buffer(buffer.length);buffer=Buffer.concat([buffer,new Buffer([value])]);while(++i<len){out[i]=buffer[i]<<1|buffer[i+1]>>7}return out}}).call(this,require("buffer").Buffer)},{buffer:350}],174:[function(require,module,exports){(function(Buffer){function encryptByte(self,byte,decrypt){var pad=self._cipher.encryptBlock(self._prev);var out=pad[0]^byte;self._prev=Buffer.concat([self._prev.slice(1),new Buffer([decrypt?byte:out])]);return out}exports.encrypt=function(self,chunk,decrypt){var len=chunk.length;var out=new Buffer(len);var i=-1;while(++i<len){out[i]=encryptByte(self,chunk[i],decrypt)}return out}}).call(this,require("buffer").Buffer)},{buffer:350}],175:[function(require,module,exports){(function(Buffer){var xor=require("../xor");function getBlock(self){var out=self._cipher.encryptBlock(self._prev);incr32(self._prev);return out}exports.encrypt=function(self,chunk){while(self._cache.length<chunk.length){self._cache=Buffer.concat([self._cache,getBlock(self)])}var pad=self._cache.slice(0,chunk.length);self._cache=self._cache.slice(chunk.length);return xor(chunk,pad)};function incr32(iv){var len=iv.length;var item;while(len--){item=iv.readUInt8(len);if(item===255){iv.writeUInt8(0,len)}else{item++;iv.writeUInt8(item,len);break}}}}).call(this,require("buffer").Buffer)},{"../xor":179,buffer:350}],176:[function(require,module,exports){exports.encrypt=function(self,block){return self._cipher.encryptBlock(block)};exports.decrypt=function(self,block){return self._cipher.decryptBlock(block)}},{}],177:[function(require,module,exports){(function(Buffer){var xor=require("../xor");function getBlock(self){self._prev=self._cipher.encryptBlock(self._prev);return self._prev}exports.encrypt=function(self,chunk){while(self._cache.length<chunk.length){self._cache=Buffer.concat([self._cache,getBlock(self)])}var pad=self._cache.slice(0,chunk.length);self._cache=self._cache.slice(chunk.length);return xor(chunk,pad)}}).call(this,require("buffer").Buffer)},{"../xor":179,buffer:350}],178:[function(require,module,exports){(function(Buffer){var aes=require("./aes");var Transform=require("./cipherBase");var inherits=require("inherits");inherits(StreamCipher,Transform);module.exports=StreamCipher;function StreamCipher(mode,key,iv,decrypt){if(!(this instanceof StreamCipher)){return new StreamCipher(mode,key,iv)}Transform.call(this);this._cipher=new aes.AES(key);this._prev=new Buffer(iv.length);this._cache=new Buffer("");this._secCache=new Buffer("");this._decrypt=decrypt;iv.copy(this._prev);this._mode=mode}StreamCipher.prototype._update=function(chunk){return this._mode.encrypt(this,chunk,this._decrypt)};StreamCipher.prototype._final=function(){this._cipher.scrub()}}).call(this,require("buffer").Buffer)},{"./aes":163,"./cipherBase":166,buffer:350,inherits:268}],179:[function(require,module,exports){(function(Buffer){module.exports=xor;function xor(a,b){var len=Math.min(a.length,b.length);var out=new Buffer(len);var i=-1;while(++i<len){out.writeUInt8(a[i]^b[i],i)}return out}}).call(this,require("buffer").Buffer)},{buffer:350}],180:[function(require,module,exports){(function(Buffer){exports["RSA-SHA224"]=exports.sha224WithRSAEncryption={sign:"rsa",hash:"sha224",id:new Buffer("302d300d06096086480165030402040500041c","hex")};exports["RSA-SHA256"]=exports.sha256WithRSAEncryption={sign:"rsa",hash:"sha256",id:new Buffer("3031300d060960864801650304020105000420","hex")};exports["RSA-SHA384"]=exports.sha384WithRSAEncryption={sign:"rsa",hash:"sha384",id:new Buffer("3041300d060960864801650304020205000430","hex")};exports["RSA-SHA512"]=exports.sha512WithRSAEncryption={sign:"rsa",hash:"sha512",id:new Buffer("3051300d060960864801650304020305000440","hex")};exports["RSA-SHA1"]={sign:"rsa",hash:"sha1",id:new Buffer("3021300906052b0e03021a05000414","hex")};exports["ecdsa-with-SHA1"]={sign:"ecdsa",hash:"sha1",id:new Buffer("","hex")};exports.DSA=exports["DSA-SHA1"]=exports["DSA-SHA"]={sign:"dsa",hash:"sha1",id:new Buffer("","hex")};exports["DSA-SHA224"]=exports["DSA-WITH-SHA224"]={sign:"dsa",hash:"sha224",id:new Buffer("","hex")};exports["DSA-SHA256"]=exports["DSA-WITH-SHA256"]={sign:"dsa",hash:"sha256",id:new Buffer("","hex")};exports["DSA-SHA384"]=exports["DSA-WITH-SHA384"]={sign:"dsa",hash:"sha384",id:new Buffer("","hex")};exports["DSA-SHA512"]=exports["DSA-WITH-SHA512"]={sign:"dsa",hash:"sha512",id:new Buffer("","hex")};exports["DSA-RIPEMD160"]={sign:"dsa",hash:"rmd160",id:new Buffer("","hex")};exports["RSA-RIPEMD160"]=exports.ripemd160WithRSA={sign:"rsa",hash:"rmd160",id:new Buffer("3021300906052b2403020105000414","hex")};exports["RSA-MD5"]=exports.md5WithRSAEncryption={sign:"rsa",hash:"md5",id:new Buffer("3020300c06082a864886f70d020505000410","hex")}}).call(this,require("buffer").Buffer)},{buffer:350}],181:[function(require,module,exports){(function(Buffer){var sign=require("./sign");var verify=require("./verify");var stream=require("stream");var inherits=require("inherits");var _algos=require("./algos");var algos={};Object.keys(_algos).forEach(function(key){algos[key]=algos[key.toLowerCase()]=_algos[key]});"use strict";module.exports=function(exports,crypto){exports.createSign=exports.Sign=createSign;function createSign(algorithm){return new Sign(algorithm,crypto)}exports.createVerify=exports.Verify=createVerify;function createVerify(algorithm){return new Verify(algorithm,crypto)}};inherits(Sign,stream.Writable);function Sign(algorithm,crypto){stream.Writable.call(this);var data=algos[algorithm];if(!data){throw new Error("Unknown message digest")}this._hashType=data.hash;this._hash=crypto.createHash(data.hash);this._tag=data.id;this._crypto=crypto}Sign.prototype._write=function _write(data,_,done){this._hash.update(data);done()};Sign.prototype.update=function update(data){this.write(data);return this};Sign.prototype.sign=function signMethod(key,enc){this.end();var hash=this._hash.digest();var sig=sign(Buffer.concat([this._tag,hash]),key,this._hashType,this._crypto);if(enc){sig=sig.toString(enc)}return sig};inherits(Verify,stream.Writable);function Verify(algorithm,crypto){stream.Writable.call(this);var data=algos[algorithm];if(!data){throw new Error("Unknown message digest")}this._hash=crypto.createHash(data.hash);this._tag=data.id}Verify.prototype._write=function _write(data,_,done){this._hash.update(data);done()};Verify.prototype.update=function update(data){this.write(data);return this};Verify.prototype.verify=function verifyMethod(key,sig,enc){this.end();var hash=this._hash.digest();if(!Buffer.isBuffer(sig)){sig=new Buffer(sig,enc)}return verify(sig,Buffer.concat([this._tag,hash]),key)}}).call(this,require("buffer").Buffer)},{"./algos":180,"./sign":224,"./verify":225,buffer:350,inherits:268,stream:364}],182:[function(require,module,exports){function assert(val,msg){if(!val)throw new Error(msg||"Assertion failed")}function assertEqual(l,r,msg){if(l!=r)throw new Error(msg||"Assertion failed: "+l+" != "+r)}function inherits(ctor,superCtor){ctor.super_=superCtor;var TempCtor=function(){};TempCtor.prototype=superCtor.prototype;ctor.prototype=new TempCtor;ctor.prototype.constructor=ctor}function BN(number,base,endian){if(number!==null&&typeof number==="object"&&Array.isArray(number.words)){return number}this.sign=false;this.words=null;this.length=0;this.red=null;if(base==="le"||base==="be"){endian=base;base=10}if(number!==null)this._init(number||0,base||10,endian||"be")}if(typeof module==="object")module.exports=BN;BN.BN=BN;BN.wordSize=26;BN.prototype._init=function init(number,base,endian){if(typeof number==="number"){if(number<0){this.sign=true;number=-number}if(number<67108864){this.words=[number&67108863];this.length=1}else{this.words=[number&67108863,number/67108864&67108863];this.length=2}return}else if(typeof number==="object"){return this._initArray(number,base,endian)}if(base==="hex")base=16;assert(base===(base|0)&&base>=2&&base<=36);number=number.toString().replace(/\s+/g,"");var start=0;if(number[0]==="-")start++;if(base===16)this._parseHex(number,start);else this._parseBase(number,base,start);if(number[0]==="-")this.sign=true;this.strip()};BN.prototype._initArray=function _initArray(number,base,endian){assert(typeof number.length==="number");this.length=Math.ceil(number.length/3);this.words=new Array(this.length);for(var i=0;i<this.length;i++)this.words[i]=0;var off=0;if(endian==="be"){for(var i=number.length-1,j=0;i>=0;i-=3){var w=number[i]|number[i-1]<<8|number[i-2]<<16;this.words[j]|=w<<off&67108863;this.words[j+1]=w>>>26-off&67108863;off+=24;if(off>=26){off-=26;j++}}}else if(endian==="le"){for(var i=0,j=0;i<number.length;i+=3){var w=number[i]|number[i+1]<<8|number[i+2]<<16;this.words[j]|=w<<off&67108863;this.words[j+1]=w>>>26-off&67108863;off+=24;if(off>=26){off-=26;
j++}}}return this.strip()};BN.prototype._parseHex=function parseHex(number,start){this.length=Math.ceil((number.length-start)/6);this.words=new Array(this.length);for(var i=0;i<this.length;i++)this.words[i]=0;var off=0;for(var i=number.length-6,j=0;i>=start;i-=6){var w=parseInt(number.slice(i,i+6),16);this.words[j]|=w<<off&67108863;this.words[j+1]|=w>>>26-off&4194303;off+=24;if(off>=26){off-=26;j++}}if(i+6!==start){var w=parseInt(number.slice(start,i+6),16);this.words[j]|=w<<off&67108863;this.words[j+1]|=w>>>26-off&4194303}this.strip()};BN.prototype._parseBase=function parseBase(number,base,start){this.words=[0];this.length=1;var word=0;var q=1;var p=0;var bigQ=null;for(var i=start;i<number.length;i++){var digit;var ch=number[i];if(base===10||ch<="9")digit=ch|0;else if(ch>="a")digit=ch.charCodeAt(0)-97+10;else digit=ch.charCodeAt(0)-65+10;word*=base;word+=digit;q*=base;p++;if(q>1048575){assert(q<=67108863);if(!bigQ)bigQ=new BN(q);this.mul(bigQ).copy(this);this.iadd(new BN(word));word=0;q=1;p=0}}if(p!==0){this.mul(new BN(q)).copy(this);this.iadd(new BN(word))}};BN.prototype.copy=function copy(dest){dest.words=new Array(this.length);for(var i=0;i<this.length;i++)dest.words[i]=this.words[i];dest.length=this.length;dest.sign=this.sign;dest.red=this.red};BN.prototype.clone=function clone(){var r=new BN(null);this.copy(r);return r};BN.prototype.strip=function strip(){while(this.length>1&&this.words[this.length-1]===0)this.length--;return this._normSign()};BN.prototype._normSign=function _normSign(){if(this.length===1&&this.words[0]===0)this.sign=false;return this};BN.prototype.inspect=function inspect(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"};var zeros=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"];var groupSizes=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5];var groupBases=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];BN.prototype.toString=function toString(base,padding){base=base||10;if(base===16||base==="hex"){var out="";var off=0;var padding=padding|0||1;var carry=0;for(var i=0;i<this.length;i++){var w=this.words[i];var word=((w<<off|carry)&16777215).toString(16);carry=w>>>24-off&16777215;if(carry!==0||i!==this.length-1)out=zeros[6-word.length]+word+out;else out=word+out;off+=2;if(off>=26){off-=26;i--}}if(carry!==0)out=carry.toString(16)+out;while(out.length%padding!==0)out="0"+out;if(this.sign)out="-"+out;return out}else if(base===(base|0)&&base>=2&&base<=36){var groupSize=groupSizes[base];var groupBase=groupBases[base];var out="";var c=this.clone();c.sign=false;while(c.cmpn(0)!==0){var r=c.modn(groupBase).toString(base);c=c.idivn(groupBase);if(c.cmpn(0)!==0)out=zeros[groupSize-r.length]+r+out;else out=r+out}if(this.cmpn(0)===0)out="0"+out;if(this.sign)out="-"+out;return out}else{assert(false,"Base should be between 2 and 36")}};BN.prototype.toJSON=function toJSON(){return this.toString(16)};BN.prototype.toArray=function toArray(){this.strip();var res=new Array(this.byteLength());res[0]=0;var q=this.clone();for(var i=0;q.cmpn(0)!==0;i++){var b=q.andln(255);q.ishrn(8);res[res.length-i-1]=b}return res};BN.prototype._countBits=function _countBits(w){return w>=33554432?26:w>=16777216?25:w>=8388608?24:w>=4194304?23:w>=2097152?22:w>=1048576?21:w>=524288?20:w>=262144?19:w>=131072?18:w>=65536?17:w>=32768?16:w>=16384?15:w>=8192?14:w>=4096?13:w>=2048?12:w>=1024?11:w>=512?10:w>=256?9:w>=128?8:w>=64?7:w>=32?6:w>=16?5:w>=8?4:w>=4?3:w>=2?2:w>=1?1:0};BN.prototype.bitLength=function bitLength(){var hi=0;var w=this.words[this.length-1];var hi=this._countBits(w);return(this.length-1)*26+hi};BN.prototype.byteLength=function byteLength(){var hi=0;var w=this.words[this.length-1];return Math.ceil(this.bitLength()/8)};BN.prototype.neg=function neg(){if(this.cmpn(0)===0)return this.clone();var r=this.clone();r.sign=!this.sign;return r};BN.prototype.iadd=function iadd(num){if(this.sign&&!num.sign){this.sign=false;var r=this.isub(num);this.sign=!this.sign;return this._normSign()}else if(!this.sign&&num.sign){num.sign=false;var r=this.isub(num);num.sign=true;return r._normSign()}var a;var b;if(this.length>num.length){a=this;b=num}else{a=num;b=this}var carry=0;for(var i=0;i<b.length;i++){var r=a.words[i]+b.words[i]+carry;this.words[i]=r&67108863;carry=r>>>26}for(;carry!==0&&i<a.length;i++){var r=a.words[i]+carry;this.words[i]=r&67108863;carry=r>>>26}this.length=a.length;if(carry!==0){this.words[this.length]=carry;this.length++}else if(a!==this){for(;i<a.length;i++)this.words[i]=a.words[i]}return this};BN.prototype.add=function add(num){if(num.sign&&!this.sign){num.sign=false;var res=this.sub(num);num.sign=true;return res}else if(!num.sign&&this.sign){this.sign=false;var res=num.sub(this);this.sign=true;return res}if(this.length>num.length)return this.clone().iadd(num);else return num.clone().iadd(this)};BN.prototype.isub=function isub(num){if(num.sign){num.sign=false;var r=this.iadd(num);num.sign=true;return r._normSign()}else if(this.sign){this.sign=false;this.iadd(num);this.sign=true;return this._normSign()}var cmp=this.cmp(num);if(cmp===0){this.sign=false;this.length=1;this.words[0]=0;return this}if(cmp>0){var a=this;var b=num}else{var a=num;var b=this}var carry=0;for(var i=0;i<b.length;i++){var r=a.words[i]-b.words[i]-carry;if(r<0){r+=67108864;carry=1}else{carry=0}this.words[i]=r}for(;carry!==0&&i<a.length;i++){var r=a.words[i]-carry;if(r<0){r+=67108864;carry=1}else{carry=0}this.words[i]=r}if(carry===0&&i<a.length&&a!==this)for(;i<a.length;i++)this.words[i]=a.words[i];this.length=Math.max(this.length,i);if(a!==this)this.sign=true;return this.strip()};BN.prototype.sub=function sub(num){return this.clone().isub(num)};BN.prototype._smallMulTo=function _smallMulTo(num,out){out.sign=num.sign!==this.sign;out.length=this.length+num.length;var carry=0;for(var k=0;k<out.length-1;k++){var ncarry=carry>>>26;var rword=carry&67108863;var maxJ=Math.min(k,num.length-1);for(var j=Math.max(0,k-this.length+1);j<=maxJ;j++){var i=k-j;var a=this.words[i]|0;var b=num.words[j]|0;var r=a*b;var lo=r&67108863;ncarry=ncarry+(r/67108864|0)|0;lo=lo+rword|0;rword=lo&67108863;ncarry=ncarry+(lo>>>26)|0}out.words[k]=rword;carry=ncarry}if(carry!==0){out.words[k]=carry}else{out.length--}return out.strip()};BN.prototype._bigMulTo=function _bigMulTo(num,out){out.sign=num.sign!==this.sign;out.length=this.length+num.length;var carry=0;var hncarry=0;for(var k=0;k<out.length-1;k++){var ncarry=hncarry;hncarry=0;var rword=carry&67108863;var maxJ=Math.min(k,num.length-1);for(var j=Math.max(0,k-this.length+1);j<=maxJ;j++){var i=k-j;var a=this.words[i]|0;var b=num.words[j]|0;var r=a*b;var lo=r&67108863;ncarry=ncarry+(r/67108864|0)|0;lo=lo+rword|0;rword=lo&67108863;ncarry=ncarry+(lo>>>26)|0;hncarry+=ncarry>>>26;ncarry&=67108863}out.words[k]=rword;carry=ncarry;ncarry=hncarry}if(carry!==0){out.words[k]=carry}else{out.length--}return out.strip()};BN.prototype.mulTo=function mulTo(num,out){var res;if(this.length+num.length<63)res=this._smallMulTo(num,out);else res=this._bigMulTo(num,out);return res};BN.prototype.mul=function mul(num){var out=new BN(null);out.words=new Array(this.length+num.length);return this.mulTo(num,out)};BN.prototype.imul=function imul(num){if(this.cmpn(0)===0||num.cmpn(0)===0){this.words[0]=0;this.length=1;return this}var tlen=this.length;var nlen=num.length;this.sign=num.sign!==this.sign;this.length=this.length+num.length;this.words[this.length-1]=0;var lastCarry=0;for(var k=this.length-2;k>=0;k--){var carry=0;var rword=0;var maxJ=Math.min(k,nlen-1);for(var j=Math.max(0,k-tlen+1);j<=maxJ;j++){var i=k-j;var a=this.words[i];var b=num.words[j];var r=a*b;var lo=r&67108863;carry+=r/67108864|0;lo+=rword;rword=lo&67108863;carry+=lo>>>26}this.words[k]=rword;this.words[k+1]+=carry;carry=0}var carry=0;for(var i=1;i<this.length;i++){var w=this.words[i]+carry;this.words[i]=w&67108863;carry=w>>>26}return this.strip()};BN.prototype.sqr=function sqr(){return this.mul(this)};BN.prototype.isqr=function isqr(){return this.mul(this)};BN.prototype.ishln=function ishln(bits){assert(typeof bits==="number"&&bits>=0);var r=bits%26;var s=(bits-r)/26;var carryMask=67108863>>>26-r<<26-r;var o=this.clone();if(r!==0){var carry=0;for(var i=0;i<this.length;i++){var newCarry=this.words[i]&carryMask;var c=this.words[i]-newCarry<<r;this.words[i]=c|carry;carry=newCarry>>>26-r}if(carry){this.words[i]=carry;this.length++}}if(s!==0){for(var i=this.length-1;i>=0;i--)this.words[i+s]=this.words[i];for(var i=0;i<s;i++)this.words[i]=0;this.length+=s}return this.strip()};BN.prototype.ishrn=function ishrn(bits,hint,extended){assert(typeof bits==="number"&&bits>=0);if(hint)hint=(hint-hint%26)/26;else hint=0;var r=bits%26;var s=Math.min((bits-r)/26,this.length);var mask=67108863^67108863>>>r<<r;var maskedWords=extended;hint-=s;hint=Math.max(0,hint);if(maskedWords){for(var i=0;i<s;i++)maskedWords.words[i]=this.words[i];maskedWords.length=s}if(s===0){}else if(this.length>s){this.length-=s;for(var i=0;i<this.length;i++)this.words[i]=this.words[i+s]}else{this.words[0]=0;this.length=1}var carry=0;for(var i=this.length-1;i>=0&&(carry!==0||i>=hint);i--){var word=this.words[i];this.words[i]=carry<<26-r|word>>>r;carry=word&mask}if(maskedWords&&carry!==0)maskedWords.words[maskedWords.length++]=carry;if(this.length===0){this.words[0]=0;this.length=1}this.strip();if(extended)return{hi:this,lo:maskedWords};return this};BN.prototype.shln=function shln(bits){return this.clone().ishln(bits)};BN.prototype.shrn=function shrn(bits){return this.clone().ishrn(bits)};BN.prototype.testn=function testn(bit){assert(typeof bit==="number"&&bit>=0);var r=bit%26;var s=(bit-r)/26;var q=1<<r;if(this.length<=s){return false}var w=this.words[s];return!!(w&q)};BN.prototype.imaskn=function imaskn(bits){assert(typeof bits==="number"&&bits>=0);var r=bits%26;var s=(bits-r)/26;assert(!this.sign,"imaskn works only with positive numbers");if(r!==0)s++;this.length=Math.min(s,this.length);if(r!==0){var mask=67108863^67108863>>>r<<r;this.words[this.length-1]&=mask}return this.strip()};BN.prototype.maskn=function maskn(bits){return this.clone().imaskn(bits)};BN.prototype.iaddn=function iaddn(num){assert(typeof num==="number");if(num<0)return this.isubn(-num);if(this.sign){if(this.length===1&&this.words[0]<num){this.words[0]=num-this.words[0];this.sign=false;return this}this.sign=false;this.isubn(num);this.sign=true;return this}this.words[0]+=num;for(var i=0;i<this.length&&this.words[i]>=67108864;i++){this.words[i]-=67108864;if(i===this.length-1)this.words[i+1]=1;else this.words[i+1]++}this.length=Math.max(this.length,i+1);return this};BN.prototype.isubn=function isubn(num){assert(typeof num==="number");if(num<0)return this.iaddn(-num);if(this.sign){this.sign=false;this.iaddn(num);this.sign=true;return this}this.words[0]-=num;for(var i=0;i<this.length&&this.words[i]<0;i++){this.words[i]+=67108864;this.words[i+1]-=1}return this.strip()};BN.prototype.addn=function addn(num){return this.clone().iaddn(num)};BN.prototype.subn=function subn(num){return this.clone().isubn(num)};BN.prototype.iabs=function iabs(){this.sign=false;return this};BN.prototype.abs=function abs(){return this.clone().iabs()};BN.prototype._wordDiv=function _wordDiv(num,mode){var shift=this.length-num.length;var a=this.clone();var b=num;var q=mode!=="mod"&&new BN(0);var sign=false;while(a.length>b.length){var hi=a.words[a.length-1]*67108864+a.words[a.length-2];var sq=hi/b.words[b.length-1];var sqhi=sq/67108864|0;var sqlo=sq&67108863;sq=new BN(null);sq.words=[sqlo,sqhi];sq.length=2;var shift=(a.length-b.length-1)*26;if(q){var t=sq.shln(shift);if(a.sign)q.isub(t);else q.iadd(t)}sq=sq.mul(b).ishln(shift);if(a.sign)a.iadd(sq);else a.isub(sq)}while(a.ucmp(b)>=0){var hi=a.words[a.length-1];var sq=new BN(hi/b.words[b.length-1]|0);var shift=(a.length-b.length)*26;if(q){var t=sq.shln(shift);if(a.sign)q.isub(t);else q.iadd(t)}sq=sq.mul(b).ishln(shift);if(a.sign)a.iadd(sq);else a.isub(sq)}if(a.sign){if(q)q.isubn(1);a.iadd(b)}return{div:q?q:null,mod:a}};BN.prototype.divmod=function divmod(num,mode){assert(num.cmpn(0)!==0);if(this.sign&&!num.sign){var res=this.neg().divmod(num,mode);var div;var mod;if(mode!=="mod")div=res.div.neg();if(mode!=="div")mod=res.mod.cmpn(0)===0?res.mod:num.sub(res.mod);return{div:div,mod:mod}}else if(!this.sign&&num.sign){var res=this.divmod(num.neg(),mode);var div;if(mode!=="mod")div=res.div.neg();return{div:div,mod:res.mod}}else if(this.sign&&num.sign){return this.neg().divmod(num.neg(),mode)}if(num.length>this.length||this.cmp(num)<0)return{div:new BN(0),mod:this};if(num.length===1){if(mode==="div")return{div:this.divn(num.words[0]),mod:null};else if(mode==="mod")return{div:null,mod:new BN(this.modn(num.words[0]))};return{div:this.divn(num.words[0]),mod:new BN(this.modn(num.words[0]))}}return this._wordDiv(num,mode)};BN.prototype.div=function div(num){return this.divmod(num,"div").div};BN.prototype.mod=function mod(num){return this.divmod(num,"mod").mod};BN.prototype.divRound=function divRound(num){var dm=this.divmod(num);if(dm.mod.cmpn(0)===0)return dm.div;var mod=dm.div.sign?dm.mod.isub(num):dm.mod;var half=num.shrn(1);var r2=num.andln(1);var cmp=mod.cmp(half);if(cmp<0||r2===1&&cmp===0)return dm.div;return dm.div.sign?dm.div.isubn(1):dm.div.iaddn(1)};BN.prototype.modn=function modn(num){assert(num<=67108863);var p=(1<<26)%num;var acc=0;for(var i=this.length-1;i>=0;i--)acc=(p*acc+this.words[i])%num;return acc};BN.prototype.idivn=function idivn(num){assert(num<=67108863);var carry=0;for(var i=this.length-1;i>=0;i--){var w=this.words[i]+carry*67108864;this.words[i]=w/num|0;carry=w%num}return this.strip()};BN.prototype.divn=function divn(num){return this.clone().idivn(num)};BN.prototype._egcd=function _egcd(x1,p){assert(!p.sign);assert(p.cmpn(0)!==0);var a=this;var b=p.clone();if(a.sign)a=a.mod(p);else a=a.clone();var x2=new BN(0);while(b.isEven())b.ishrn(1);var delta=b.clone();while(a.cmpn(1)>0&&b.cmpn(1)>0){while(a.isEven()){a.ishrn(1);if(x1.isEven())x1.ishrn(1);else x1.iadd(delta).ishrn(1)}while(b.isEven()){b.ishrn(1);if(x2.isEven())x2.ishrn(1);else x2.iadd(delta).ishrn(1)}if(a.cmp(b)>=0){a.isub(b);x1.isub(x2)}else{b.isub(a);x2.isub(x1)}}if(a.cmpn(1)===0)return x1;else return x2};BN.prototype.gcd=function gcd(num){if(this.cmpn(0)===0)return num.clone();if(num.cmpn(0)===0)return this.clone();var a=this.clone();var b=num.clone();a.sign=false;b.sign=false;for(var shift=0;a.isEven()&&b.isEven();shift++){a.ishrn(1);b.ishrn(1)}while(a.isEven())a.ishrn(1);do{while(b.isEven())b.ishrn(1);if(a.cmp(b)<0){var t=a;a=b;b=t}a.isub(a.div(b).mul(b))}while(a.cmpn(0)!==0&&b.cmpn(0)!==0);if(a.cmpn(0)===0)return b.ishln(shift);else return a.ishln(shift)};BN.prototype.invm=function invm(num){return this._egcd(new BN(1),num).mod(num)};BN.prototype.isEven=function isEven(num){return(this.words[0]&1)===0};BN.prototype.isOdd=function isOdd(num){return(this.words[0]&1)===1};BN.prototype.andln=function andln(num){return this.words[0]&num};BN.prototype.bincn=function bincn(bit){assert(typeof bit==="number");var r=bit%26;var s=(bit-r)/26;var q=1<<r;if(this.length<=s){for(var i=this.length;i<s+1;i++)this.words[i]=0;this.words[s]|=q;this.length=s+1;return this}var carry=q;for(var i=s;carry!==0&&i<this.length;i++){var w=this.words[i];w+=carry;carry=w>>>26;w&=67108863;this.words[i]=w}if(carry!==0){this.words[i]=carry;this.length++}return this};BN.prototype.cmpn=function cmpn(num){var sign=num<0;if(sign)num=-num;if(this.sign&&!sign)return-1;else if(!this.sign&&sign)return 1;num&=67108863;this.strip();var res;if(this.length>1){res=1}else{var w=this.words[0];res=w===num?0:w<num?-1:1}if(this.sign)res=-res;return res};BN.prototype.cmp=function cmp(num){if(this.sign&&!num.sign)return-1;else if(!this.sign&&num.sign)return 1;var res=this.ucmp(num);if(this.sign)return-res;else return res};BN.prototype.ucmp=function ucmp(num){if(this.length>num.length)return 1;else if(this.length<num.length)return-1;var res=0;for(var i=this.length-1;i>=0;i--){var a=this.words[i];var b=num.words[i];if(a===b)continue;if(a<b)res=-1;else if(a>b)res=1;break}return res};BN.red=function red(num){return new Red(num)};BN.prototype.toRed=function toRed(ctx){assert(!this.red,"Already a number in reduction context");assert(!this.sign,"red works only with positives");return ctx.convertTo(this)._forceRed(ctx)};BN.prototype.fromRed=function fromRed(){assert(this.red,"fromRed works only with numbers in reduction context");return this.red.convertFrom(this)};BN.prototype._forceRed=function _forceRed(ctx){this.red=ctx;return this};BN.prototype.forceRed=function forceRed(ctx){assert(!this.red,"Already a number in reduction context");return this._forceRed(ctx)};BN.prototype.redAdd=function redAdd(num){assert(this.red,"redAdd works only with red numbers");return this.red.add(this,num)};BN.prototype.redIAdd=function redIAdd(num){assert(this.red,"redIAdd works only with red numbers");return this.red.iadd(this,num)};BN.prototype.redSub=function redSub(num){assert(this.red,"redSub works only with red numbers");return this.red.sub(this,num)};BN.prototype.redISub=function redISub(num){assert(this.red,"redISub works only with red numbers");return this.red.isub(this,num)};BN.prototype.redShl=function redShl(num){assert(this.red,"redShl works only with red numbers");return this.red.shl(this,num)};BN.prototype.redMul=function redMul(num){assert(this.red,"redMul works only with red numbers");this.red._verify2(this,num);return this.red.mul(this,num)};BN.prototype.redIMul=function redIMul(num){assert(this.red,"redMul works only with red numbers");this.red._verify2(this,num);return this.red.imul(this,num)};BN.prototype.redSqr=function redSqr(){assert(this.red,"redSqr works only with red numbers");this.red._verify1(this);return this.red.sqr(this)};BN.prototype.redISqr=function redISqr(){assert(this.red,"redISqr works only with red numbers");this.red._verify1(this);return this.red.isqr(this)};BN.prototype.redSqrt=function redSqrt(){assert(this.red,"redSqrt works only with red numbers");this.red._verify1(this);return this.red.sqrt(this)};BN.prototype.redInvm=function redInvm(){assert(this.red,"redInvm works only with red numbers");this.red._verify1(this);return this.red.invm(this)};BN.prototype.redNeg=function redNeg(){assert(this.red,"redNeg works only with red numbers");this.red._verify1(this);return this.red.neg(this)};BN.prototype.redPow=function redPow(num){assert(this.red&&!num.red,"redPow(normalNum)");this.red._verify1(this);return this.red.pow(this,num)};var primes={k256:null,p224:null,p192:null,p25519:null};function MPrime(name,p){this.name=name;this.p=new BN(p,16);this.n=this.p.bitLength();this.k=new BN(1).ishln(this.n).isub(this.p);this.tmp=this._tmp()}MPrime.prototype._tmp=function _tmp(){var tmp=new BN(null);tmp.words=new Array(Math.ceil(this.n/13));return tmp};MPrime.prototype.ireduce=function ireduce(num){var r=num;var rlen;do{var pair=r.ishrn(this.n,0,this.tmp);r=this.imulK(pair.hi);r=r.iadd(pair.lo);rlen=r.bitLength()}while(rlen>this.n);var cmp=rlen<this.n?-1:r.cmp(this.p);if(cmp===0){r.words[0]=0;r.length=1}else if(cmp>0){r.isub(this.p)}else{r.strip()}return r};MPrime.prototype.imulK=function imulK(num){return num.imul(this.k)};function K256(){MPrime.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}inherits(K256,MPrime);K256.prototype.imulK=function imulK(num){num.words[num.length]=0;num.words[num.length+1]=0;num.length+=2;var uhi=0;var hi=0;var lo=0;for(var i=0;i<num.length;i++){var w=num.words[i];hi+=w*64;lo+=w*977;hi+=lo/67108864|0;uhi+=hi/67108864|0;hi&=67108863;lo&=67108863;num.words[i]=lo;lo=hi;hi=uhi;uhi=0}if(num.words[num.length-1]===0)num.length--;if(num.words[num.length-1]===0)num.length--;return num};function P224(){MPrime.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}inherits(P224,MPrime);function P192(){MPrime.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}inherits(P192,MPrime);function P25519(){MPrime.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}inherits(P25519,MPrime);P25519.prototype.imulK=function imulK(num){var carry=0;for(var i=0;i<num.length;i++){var hi=num.words[i]*19+carry;var lo=hi&67108863;hi>>>=26;num.words[i]=lo;carry=hi}if(carry!==0)num.words[num.length++]=carry;return num};BN._prime=function prime(name){if(primes[name])return primes[name];var prime;if(name==="k256")prime=new K256;else if(name==="p224")prime=new P224;else if(name==="p192")prime=new P192;else if(name==="p25519")prime=new P25519;else throw new Error("Unknown prime "+name);primes[name]=prime;return prime};function Red(m){if(typeof m==="string"){var prime=BN._prime(m);this.m=prime.p;this.prime=prime}else{this.m=m;this.prime=null}}Red.prototype._verify1=function _verify1(a){assert(!a.sign,"red works only with positives");assert(a.red,"red works only with red numbers")};Red.prototype._verify2=function _verify2(a,b){assert(!a.sign&&!b.sign,"red works only with positives");assert(a.red&&a.red===b.red,"red works only with red numbers")};Red.prototype.imod=function imod(a){if(this.prime)return this.prime.ireduce(a)._forceRed(this);return a.mod(this.m)._forceRed(this)};Red.prototype.neg=function neg(a){var r=a.clone();r.sign=!r.sign;return r.iadd(this.m)._forceRed(this)};Red.prototype.add=function add(a,b){this._verify2(a,b);var res=a.add(b);if(res.cmp(this.m)>=0)res.isub(this.m);return res._forceRed(this)};Red.prototype.iadd=function iadd(a,b){this._verify2(a,b);var res=a.iadd(b);if(res.cmp(this.m)>=0)res.isub(this.m);return res};Red.prototype.sub=function sub(a,b){this._verify2(a,b);var res=a.sub(b);if(res.cmpn(0)<0)res.iadd(this.m);return res._forceRed(this)};Red.prototype.isub=function isub(a,b){this._verify2(a,b);var res=a.isub(b);if(res.cmpn(0)<0)res.iadd(this.m);return res};Red.prototype.shl=function shl(a,num){this._verify1(a);return this.imod(a.shln(num))};Red.prototype.imul=function imul(a,b){this._verify2(a,b);return this.imod(a.imul(b))};Red.prototype.mul=function mul(a,b){this._verify2(a,b);return this.imod(a.mul(b))};Red.prototype.isqr=function isqr(a){return this.imul(a,a)};Red.prototype.sqr=function sqr(a){return this.mul(a,a)};Red.prototype.sqrt=function sqrt(a){if(a.cmpn(0)===0)return a.clone();var mod3=this.m.andln(3);assert(mod3%2===1);if(mod3===3){var pow=this.m.add(new BN(1)).ishrn(2);var r=this.pow(a,pow);return r}var q=this.m.subn(1);var s=0;while(q.cmpn(0)!==0&&q.andln(1)===0){s++;q.ishrn(1)}assert(q.cmpn(0)!==0);var one=new BN(1).toRed(this);var nOne=one.redNeg();var lpow=this.m.subn(1).ishrn(1);var z=this.m.bitLength();z=new BN(2*z*z).toRed(this);while(this.pow(z,lpow).cmp(nOne)!==0)z.redIAdd(nOne);var c=this.pow(z,q);var r=this.pow(a,q.addn(1).ishrn(1));var t=this.pow(a,q);var m=s;while(t.cmp(one)!==0){var tmp=t;for(var i=0;tmp.cmp(one)!==0;i++)tmp=tmp.redSqr();assert(i<m);var b=this.pow(c,new BN(1).ishln(m-i-1));r=r.redMul(b);c=b.redSqr();t=t.redMul(c);m=i}return r};Red.prototype.invm=function invm(a){var inv=a._egcd(new BN(1),this.m);if(inv.sign){inv.sign=false;return this.imod(inv).redNeg()}else{return this.imod(inv)}};Red.prototype.pow=function pow(a,num){var w=[];var q=num.clone();while(q.cmpn(0)!==0){w.push(q.andln(1));q.ishrn(1)}var res=a;for(var i=0;i<w.length;i++,res=this.sqr(res))if(w[i]!==0)break;if(++i<w.length){for(var q=this.sqr(res);i<w.length;i++,q=this.sqr(q)){if(w[i]===0)continue;res=this.mul(res,q)}}return res};Red.prototype.convertTo=function convertTo(num){return num.clone()};Red.prototype.convertFrom=function convertFrom(num){var res=num.clone();res.red=null;return res};BN.mont=function mont(num){return new Mont(num)};function Mont(m){Red.call(this,m);this.shift=this.m.bitLength();if(this.shift%26!==0)this.shift+=26-this.shift%26;this.r=new BN(1).ishln(this.shift);this.r2=this.imod(this.r.sqr());this.rinv=this.r.invm(this.m);this.minv=this.rinv.mul(this.r).sub(new BN(1)).div(this.m).neg().mod(this.r)}inherits(Mont,Red);Mont.prototype.convertTo=function convertTo(num){return this.imod(num.shln(this.shift))};Mont.prototype.convertFrom=function convertFrom(num){var r=this.imod(num.mul(this.rinv));r.red=null;return r};Mont.prototype.imul=function imul(a,b){if(a.cmpn(0)===0||b.cmpn(0)===0){a.words[0]=0;a.length=1;return a}var t=a.imul(b);var c=t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);var u=t.isub(c).ishrn(this.shift);var res=u;if(u.cmp(this.m)>=0)res=u.isub(this.m);else if(u.cmpn(0)<0)res=u.iadd(this.m);return res._forceRed(this)};Mont.prototype.mul=function mul(a,b){if(a.cmpn(0)===0||b.cmpn(0)===0)return new BN(0)._forceRed(this);var t=a.mul(b);var c=t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);var u=t.isub(c).ishrn(this.shift);var res=u;if(u.cmp(this.m)>=0)res=u.isub(this.m);else if(u.cmpn(0)<0)res=u.iadd(this.m);return res._forceRed(this)};Mont.prototype.invm=function invm(a){var res=this.imod(a.invm(this.m).mul(this.r2));return res._forceRed(this)}},{}],183:[function(require,module,exports){(function(Buffer){var bn=require("bn.js");module.exports=crt;function blind(priv,crypto){var r=getr(priv,crypto);var blinder=r.toRed(bn.mont(priv.modulus)).redPow(new bn(priv.publicExponent)).fromRed();return{blinder:blinder,unblinder:r.invm(priv.modulus)}}function crt(msg,priv,crypto){var blinds=blind(priv,crypto);var len=priv.modulus.byteLength();var mod=bn.mont(priv.modulus);var blinded=new bn(msg).mul(blinds.blinder).mod(priv.modulus);var c1=blinded.toRed(bn.mont(priv.prime1));var c2=blinded.toRed(bn.mont(priv.prime2));var qinv=priv.coefficient;var p=priv.prime1;var q=priv.prime2;var m1=c1.redPow(priv.exponent1);var m2=c2.redPow(priv.exponent2);m1=m1.fromRed();m2=m2.fromRed();var h=m1.isub(m2).imul(qinv).mod(p);h.imul(q);m2.iadd(h);var out=new Buffer(m2.imul(blinds.unblinder).mod(priv.modulus).toArray());if(out.length<len){var prefix=new Buffer(len-out.length);prefix.fill(0);out=Buffer.concat([prefix,out],len)}return out}crt.getr=getr;function getr(priv,crypto){var len=priv.modulus.byteLength();var r=new bn(crypto.randomBytes(len));while(r.cmp(priv.modulus)>=0||!r.mod(priv.prime1)||!r.mod(priv.prime2)){r=new bn(crypto.randomBytes(len))}return r}}).call(this,require("buffer").Buffer)},{"bn.js":182,buffer:350}],184:[function(require,module,exports){var elliptic=exports;elliptic.version=require("../package.json").version;elliptic.utils=require("./elliptic/utils");elliptic.rand=require("brorand");elliptic.hmacDRBG=require("./elliptic/hmac-drbg");elliptic.curve=require("./elliptic/curve");elliptic.curves=require("./elliptic/curves");elliptic.ec=require("./elliptic/ec")},{"../package.json":203,"./elliptic/curve":187,"./elliptic/curves":190,"./elliptic/ec":191,"./elliptic/hmac-drbg":194,"./elliptic/utils":195,brorand:196}],185:[function(require,module,exports){var bn=require("bn.js");var elliptic=require("../../elliptic");var getNAF=elliptic.utils.getNAF;var getJSF=elliptic.utils.getJSF;var assert=elliptic.utils.assert;function BaseCurve(type,conf){this.type=type;this.p=new bn(conf.p,16);this.red=conf.prime?bn.red(conf.prime):bn.mont(this.p);this.zero=new bn(0).toRed(this.red);this.one=new bn(1).toRed(this.red);this.two=new bn(2).toRed(this.red);this.n=conf.n&&new bn(conf.n,16);this.g=conf.g&&this.pointFromJSON(conf.g,conf.gRed);this._wnafT1=new Array(4);this._wnafT2=new Array(4);this._wnafT3=new Array(4);this._wnafT4=new Array(4)}module.exports=BaseCurve;BaseCurve.prototype.point=function point(){throw new Error("Not implemented")};BaseCurve.prototype.validate=function validate(point){throw new Error("Not implemented")};BaseCurve.prototype._fixedNafMul=function _fixedNafMul(p,k){var doubles=p._getDoubles();var naf=getNAF(k,1);var I=(1<<doubles.step+1)-(doubles.step%2===0?2:1);I/=3;var repr=[];for(var j=0;j<naf.length;j+=doubles.step){var nafW=0;for(var k=j+doubles.step-1;k>=j;k--)nafW=(nafW<<1)+naf[k];repr.push(nafW)}var a=this.jpoint(null,null,null);var b=this.jpoint(null,null,null);for(var i=I;i>0;i--){for(var j=0;j<repr.length;j++){var nafW=repr[j];if(nafW===i)b=b.mixedAdd(doubles.points[j]);else if(nafW===-i)b=b.mixedAdd(doubles.points[j].neg())}a=a.add(b)}return a.toP()};BaseCurve.prototype._wnafMul=function _wnafMul(p,k){var w=4;var nafPoints=p._getNAFPoints(w);w=nafPoints.wnd;var wnd=nafPoints.points;var naf=getNAF(k,w);var acc=this.jpoint(null,null,null);for(var i=naf.length-1;i>=0;i--){for(var k=0;i>=0&&naf[i]===0;i--)k++;if(i>=0)k++;acc=acc.dblp(k);if(i<0)break;var z=naf[i];assert(z!==0);if(p.type==="affine"){if(z>0)acc=acc.mixedAdd(wnd[z-1>>1]);else acc=acc.mixedAdd(wnd[-z-1>>1].neg())}else{if(z>0)acc=acc.add(wnd[z-1>>1]);else acc=acc.add(wnd[-z-1>>1].neg())}}return p.type==="affine"?acc.toP():acc};BaseCurve.prototype._wnafMulAdd=function _wnafMulAdd(defW,points,coeffs,len){var wndWidth=this._wnafT1;var wnd=this._wnafT2;var naf=this._wnafT3;var max=0;for(var i=0;i<len;i++){var p=points[i];var nafPoints=p._getNAFPoints(defW);wndWidth[i]=nafPoints.wnd;wnd[i]=nafPoints.points}for(var i=len-1;i>=1;i-=2){var a=i-1;var b=i;if(wndWidth[a]!==1||wndWidth[b]!==1){naf[a]=getNAF(coeffs[a],wndWidth[a]);naf[b]=getNAF(coeffs[b],wndWidth[b]);max=Math.max(naf[a].length,max);max=Math.max(naf[b].length,max);continue}var comb=[points[a],null,null,points[b]];if(points[a].y.cmp(points[b].y)===0){comb[1]=points[a].add(points[b]);comb[2]=points[a].toJ().mixedAdd(points[b].neg())}else if(points[a].y.cmp(points[b].y.redNeg())===0){comb[1]=points[a].toJ().mixedAdd(points[b]);comb[2]=points[a].add(points[b].neg())}else{comb[1]=points[a].toJ().mixedAdd(points[b]);comb[2]=points[a].toJ().mixedAdd(points[b].neg())}var index=[-3,-1,-5,-7,0,7,5,1,3];var jsf=getJSF(coeffs[a],coeffs[b]);max=Math.max(jsf[0].length,max);naf[a]=new Array(max);naf[b]=new Array(max);for(var j=0;j<max;j++){var ja=jsf[0][j]|0;var jb=jsf[1][j]|0;naf[a][j]=index[(ja+1)*3+(jb+1)];naf[b][j]=0;wnd[a]=comb}}var acc=this.jpoint(null,null,null);var tmp=this._wnafT4;for(var i=max;i>=0;i--){var k=0;while(i>=0){var zero=true;for(var j=0;j<len;j++){tmp[j]=naf[j][i]|0;if(tmp[j]!==0)zero=false}if(!zero)break;k++;i--}if(i>=0)k++;acc=acc.dblp(k);if(i<0)break;for(var j=0;j<len;j++){var z=tmp[j];var p;if(z===0)continue;else if(z>0)p=wnd[j][z-1>>1];else if(z<0)p=wnd[j][-z-1>>1].neg();if(p.type==="affine")acc=acc.mixedAdd(p);else acc=acc.add(p)}}for(var i=0;i<len;i++)wnd[i]=null;return acc.toP()};BaseCurve.BasePoint=BasePoint;function BasePoint(curve,type){this.curve=curve;this.type=type;this.precomputed=null}BasePoint.prototype.validate=function validate(){return this.curve.validate(this)};BasePoint.prototype.precompute=function precompute(power,_beta){if(this.precomputed)return this;var precomputed={doubles:null,naf:null,beta:null};precomputed.naf=this._getNAFPoints(8);precomputed.doubles=this._getDoubles(4,power);precomputed.beta=this._getBeta();this.precomputed=precomputed;return this};BasePoint.prototype._getDoubles=function _getDoubles(step,power){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;var doubles=[this];var acc=this;for(var i=0;i<power;i+=step){for(var j=0;j<step;j++)acc=acc.dbl();doubles.push(acc)}return{step:step,points:doubles}};BasePoint.prototype._getNAFPoints=function _getNAFPoints(wnd){if(this.precomputed&&this.precomputed.naf)return this.precomputed.naf;var res=[this];var max=(1<<wnd)-1;var dbl=max===1?null:this.dbl();for(var i=1;i<max;i++)res[i]=res[i-1].add(dbl);return{wnd:wnd,points:res}};BasePoint.prototype._getBeta=function _getBeta(){return null};BasePoint.prototype.dblp=function dblp(k){var r=this;
for(var i=0;i<k;i++)r=r.dbl();return r}},{"../../elliptic":184,"bn.js":182}],186:[function(require,module,exports){var curve=require("../curve");var elliptic=require("../../elliptic");var bn=require("bn.js");var inherits=require("inherits");var Base=curve.base;var getNAF=elliptic.utils.getNAF;var assert=elliptic.utils.assert;function EdwardsCurve(conf){this.twisted=conf.a!=1;this.mOneA=this.twisted&&conf.a==-1;this.extended=this.mOneA;Base.call(this,"mont",conf);this.a=new bn(conf.a,16).mod(this.red.m).toRed(this.red);this.c=new bn(conf.c,16).toRed(this.red);this.c2=this.c.redSqr();this.d=new bn(conf.d,16).toRed(this.red);this.dd=this.d.redAdd(this.d);assert(!this.twisted||this.c.fromRed().cmpn(1)===0);this.oneC=conf.c==1}inherits(EdwardsCurve,Base);module.exports=EdwardsCurve;EdwardsCurve.prototype._mulA=function _mulA(num){if(this.mOneA)return num.redNeg();else return this.a.redMul(num)};EdwardsCurve.prototype._mulC=function _mulC(num){if(this.oneC)return num;else return this.c.redMul(num)};EdwardsCurve.prototype.point=function point(x,y,z,t){return new Point(this,x,y,z,t)};EdwardsCurve.prototype.jpoint=function jpoint(x,y,z,t){return this.point(x,y,z,t)};EdwardsCurve.prototype.pointFromJSON=function pointFromJSON(obj){return Point.fromJSON(this,obj)};EdwardsCurve.prototype.pointFromX=function pointFromX(odd,x){x=new bn(x,16);if(!x.red)x=x.toRed(this.red);var x2=x.redSqr();var rhs=this.c2.redSub(this.a.redMul(x2));var lhs=this.one.redSub(this.c2.redMul(this.d).redMul(x2));var y=rhs.redMul(lhs.redInvm()).redSqrt();var isOdd=y.fromRed().isOdd();if(odd&&!isOdd||!odd&&isOdd)y=y.redNeg();return this.point(x,y,curve.one)};EdwardsCurve.prototype.validate=function validate(point){if(point.isInfinity())return true;point.normalize();var x2=point.x.redSqr();var y2=point.y.redSqr();var lhs=x2.redMul(this.a).redAdd(y2);var rhs=this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));return lhs.cmp(rhs)===0};function Point(curve,x,y,z,t){Base.BasePoint.call(this,curve,"projective");if(x===null&&y===null&&z===null){this.x=this.curve.zero;this.y=this.curve.one;this.z=this.curve.one;this.t=this.curve.zero;this.zOne=true}else{this.x=new bn(x,16);this.y=new bn(y,16);this.z=z?new bn(z,16):this.curve.one;this.t=t&&new bn(t,16);if(!this.x.red)this.x=this.x.toRed(this.curve.red);if(!this.y.red)this.y=this.y.toRed(this.curve.red);if(!this.z.red)this.z=this.z.toRed(this.curve.red);if(this.t&&!this.t.red)this.t=this.t.toRed(this.curve.red);this.zOne=this.z===this.curve.one;if(this.curve.extended&&!this.t){this.t=this.x.redMul(this.y);if(!this.zOne)this.t=this.t.redMul(this.z.redInvm())}}}inherits(Point,Base.BasePoint);Point.fromJSON=function fromJSON(curve,obj){return new Point(curve,obj[0],obj[1],obj[2])};Point.prototype.inspect=function inspect(){if(this.isInfinity())return"<EC Point Infinity>";return"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+" z: "+this.z.fromRed().toString(16,2)+">"};Point.prototype.isInfinity=function isInfinity(){return this.x.cmpn(0)===0&&this.y.cmp(this.z)===0};Point.prototype._extDbl=function _extDbl(){var a=this.x.redSqr();var b=this.y.redSqr();var c=this.z.redSqr();c=c.redIAdd(c);var d=this.curve._mulA(a);var e=this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);var g=d.redAdd(b);var f=g.redSub(c);var h=d.redSub(b);var nx=e.redMul(f);var ny=g.redMul(h);var nt=e.redMul(h);var nz=f.redMul(g);return this.curve.point(nx,ny,nz,nt)};Point.prototype._projDbl=function _projDbl(){var b=this.x.redAdd(this.y).redSqr();var c=this.x.redSqr();var d=this.y.redSqr();if(this.curve.twisted){var e=this.curve._mulA(c);var f=e.redAdd(d);if(this.zOne){var nx=b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));var ny=f.redMul(e.redSub(d));var nz=f.redSqr().redSub(f).redSub(f)}else{var h=this.z.redSqr();var j=f.redSub(h).redISub(h);var nx=b.redSub(c).redISub(d).redMul(j);var ny=f.redMul(e.redSub(d));var nz=f.redMul(j)}}else{var e=c.redAdd(d);var h=this.curve._mulC(redMul(this.z)).redSqr();var j=e.redSub(h).redSub(h);var nx=this.curve._mulC(b.redISub(e)).redMul(j);var ny=this.curve._mulC(e).redMul(c.redISub(d));var nz=e.redMul(j)}return this.curve.point(nx,ny,nz)};Point.prototype.dbl=function dbl(){if(this.isInfinity())return this;if(this.curve.extended)return this._extDbl();else return this._projDbl()};Point.prototype._extAdd=function _extAdd(p){var a=this.y.redSub(this.x).redMul(p.y.redSub(p.x));var b=this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));var c=this.t.redMul(this.curve.dd).redMul(p.t);var d=this.z.redMul(p.z.redAdd(p.z));var e=b.redSub(a);var f=d.redSub(c);var g=d.redAdd(c);var h=b.redAdd(a);var nx=e.redMul(f);var ny=g.redMul(h);var nt=e.redMul(h);var nz=f.redMul(g);return this.curve.point(nx,ny,nz,nt)};Point.prototype._projAdd=function _projAdd(p){var a=this.z.redMul(p.z);var b=a.redSqr();var c=this.x.redMul(p.x);var d=this.y.redMul(p.y);var e=this.curve.d.redMul(c).redMul(d);var f=b.redSub(e);var g=b.redAdd(e);var tmp=this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);var nx=a.redMul(f).redMul(tmp);if(this.curve.twisted){var ny=a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));var nz=f.redMul(g)}else{var ny=a.redMul(g).redMul(d.redSub(c));var nz=this.curve._mulC(f).redMul(g)}return this.curve.point(nx,ny,nz)};Point.prototype.add=function add(p){if(this.isInfinity())return p;if(p.isInfinity())return this;if(this.curve.extended)return this._extAdd(p);else return this._projAdd(p)};Point.prototype.mul=function mul(k){if(this.precomputed&&this.precomputed.doubles)return this.curve._fixedNafMul(this,k);else return this.curve._wnafMul(this,k)};Point.prototype.mulAdd=function mulAdd(k1,p,k2){return this.curve._wnafMulAdd(1,[this,p],[k1,k2],2)};Point.prototype.normalize=function normalize(){if(this.zOne)return this;var zi=this.z.redInvm();this.x=this.x.redMul(zi);this.y=this.y.redMul(zi);if(this.t)this.t=this.t.redMul(zi);this.z=this.curve.one;this.zOne=true;return this};Point.prototype.neg=function neg(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())};Point.prototype.getX=function getX(){this.normalize();return this.x.fromRed()};Point.prototype.getY=function getY(){this.normalize();return this.y.fromRed()};Point.prototype.toP=Point.prototype.normalize;Point.prototype.mixedAdd=Point.prototype.add},{"../../elliptic":184,"../curve":187,"bn.js":182,inherits:268}],187:[function(require,module,exports){var curve=exports;curve.base=require("./base");curve.short=require("./short");curve.mont=require("./mont");curve.edwards=require("./edwards")},{"./base":185,"./edwards":186,"./mont":188,"./short":189}],188:[function(require,module,exports){var curve=require("../curve");var elliptic=require("../../elliptic");var bn=require("bn.js");var inherits=require("inherits");var Base=curve.base;var getNAF=elliptic.utils.getNAF;var assert=elliptic.utils.assert;function MontCurve(conf){Base.call(this,"mont",conf);this.a=new bn(conf.a,16).toRed(this.red);this.b=new bn(conf.b,16).toRed(this.red);this.i4=new bn(4).toRed(this.red).redInvm();this.two=new bn(2).toRed(this.red);this.a24=this.i4.redMul(this.a.redAdd(this.two))}inherits(MontCurve,Base);module.exports=MontCurve;MontCurve.prototype.point=function point(x,z){return new Point(this,x,z)};MontCurve.prototype.pointFromJSON=function pointFromJSON(obj){return Point.fromJSON(this,obj)};MontCurve.prototype.validate=function validate(point){var x=point.normalize().x;var x2=x.redSqr();var rhs=x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);var y=rhs.redSqrt();return y.redSqr().cmp(rhs)===0};function Point(curve,x,z){Base.BasePoint.call(this,curve,"projective");if(x===null&&z===null){this.x=this.curve.one;this.z=this.curve.zero}else{this.x=new bn(x,16);this.z=new bn(z,16);if(!this.x.red)this.x=this.x.toRed(this.curve.red);if(!this.z.red)this.z=this.z.toRed(this.curve.red)}}inherits(Point,Base.BasePoint);Point.prototype.precompute=function precompute(){};Point.fromJSON=function fromJSON(curve,obj){return new Point(curve,obj[0],obj[1]||curve.one)};Point.prototype.inspect=function inspect(){if(this.isInfinity())return"<EC Point Infinity>";return"<EC Point x: "+this.x.fromRed().toString(16,2)+" z: "+this.z.fromRed().toString(16,2)+">"};Point.prototype.isInfinity=function isInfinity(){return this.z.cmpn(0)===0};Point.prototype.dbl=function dbl(){var a=this.x.redAdd(this.z);var aa=a.redSqr();var b=this.x.redSub(this.z);var bb=b.redSqr();var c=aa.redSub(bb);var nx=aa.redMul(bb);var nz=c.redMul(bb.redAdd(this.curve.a24.redMul(c)));return this.curve.point(nx,nz)};Point.prototype.add=function add(p){throw new Error("Not supported on Montgomery curve")};Point.prototype.diffAdd=function diffAdd(p,diff){var a=this.x.redAdd(this.z);var b=this.x.redSub(this.z);var c=p.x.redAdd(p.z);var d=p.x.redSub(p.z);var da=d.redMul(a);var cb=c.redMul(b);var nx=diff.z.redMul(da.redAdd(cb).redSqr());var nz=diff.x.redMul(da.redISub(cb).redSqr());return this.curve.point(nx,nz)};Point.prototype.mul=function mul(k){var t=k.clone();var a=this;var b=this.curve.point(null,null);var c=this;for(var bits=[];t.cmpn(0)!==0;t.ishrn(1))bits.push(t.andln(1));for(var i=bits.length-1;i>=0;i--){if(bits[i]===0){a=a.diffAdd(b,c);b=b.dbl()}else{b=a.diffAdd(b,c);a=a.dbl()}}return b};Point.prototype.mulAdd=function mulAdd(){throw new Error("Not supported on Montgomery curve")};Point.prototype.normalize=function normalize(){this.x=this.x.redMul(this.z.redInvm());this.z=this.curve.one;return this};Point.prototype.getX=function getX(){this.normalize();return this.x.fromRed()}},{"../../elliptic":184,"../curve":187,"bn.js":182,inherits:268}],189:[function(require,module,exports){var curve=require("../curve");var elliptic=require("../../elliptic");var bn=require("bn.js");var inherits=require("inherits");var Base=curve.base;var getNAF=elliptic.utils.getNAF;var assert=elliptic.utils.assert;function ShortCurve(conf){Base.call(this,"short",conf);this.a=new bn(conf.a,16).toRed(this.red);this.b=new bn(conf.b,16).toRed(this.red);this.tinv=this.two.redInvm();this.zeroA=this.a.fromRed().cmpn(0)===0;this.threeA=this.a.fromRed().sub(this.p).cmpn(-3)===0;this.endo=this._getEndomorphism(conf);this._endoWnafT1=new Array(4);this._endoWnafT2=new Array(4)}inherits(ShortCurve,Base);module.exports=ShortCurve;ShortCurve.prototype._getEndomorphism=function _getEndomorphism(conf){if(!this.zeroA||!this.g||!this.n||this.p.modn(3)!==1)return;var beta;var lambda;if(conf.beta){beta=new bn(conf.beta,16).toRed(this.red)}else{var betas=this._getEndoRoots(this.p);beta=betas[0].cmp(betas[1])<0?betas[0]:betas[1];beta=beta.toRed(this.red)}if(conf.lambda){lambda=new bn(conf.lambda,16)}else{var lambdas=this._getEndoRoots(this.n);if(this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta))===0){lambda=lambdas[0]}else{lambda=lambdas[1];assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta))===0)}}var basis;if(conf.basis){basis=conf.basis.map(function(vec){return{a:new bn(vec.a,16),b:new bn(vec.b,16)}})}else{basis=this._getEndoBasis(lambda)}return{beta:beta,lambda:lambda,basis:basis}};ShortCurve.prototype._getEndoRoots=function _getEndoRoots(num){var red=num===this.p?this.red:bn.mont(num);var tinv=new bn(2).toRed(red).redInvm();var ntinv=tinv.redNeg();var one=new bn(1).toRed(red);var s=new bn(3).toRed(red).redNeg().redSqrt().redMul(tinv);var l1=ntinv.redAdd(s).fromRed();var l2=ntinv.redSub(s).fromRed();return[l1,l2]};ShortCurve.prototype._getEndoBasis=function _getEndoBasis(lambda){var aprxSqrt=this.n.shrn(Math.floor(this.n.bitLength()/2));var u=lambda;var v=this.n.clone();var x1=new bn(1);var y1=new bn(0);var x2=new bn(0);var y2=new bn(1);var a0;var b0;var a1;var b1;var a2;var b2;var prevR;var i=0;while(u.cmpn(0)!==0){var q=v.div(u);var r=v.sub(q.mul(u));var x=x2.sub(q.mul(x1));var y=y2.sub(q.mul(y1));if(!a1&&r.cmp(aprxSqrt)<0){a0=prevR.neg();b0=x1;a1=r.neg();b1=x}else if(a1&&++i===2){break}prevR=r;v=u;u=r;x2=x1;x1=x;y2=y1;y1=y}a2=r.neg();b2=x;var len1=a1.sqr().add(b1.sqr());var len2=a2.sqr().add(b2.sqr());if(len2.cmp(len1)>=0){a2=a0;b2=b0}if(a1.sign){a1=a1.neg();b1=b1.neg()}if(a2.sign){a2=a2.neg();b2=b2.neg()}return[{a:a1,b:b1},{a:a2,b:b2}]};ShortCurve.prototype._endoSplit=function _endoSplit(k){var basis=this.endo.basis;var v1=basis[0];var v2=basis[1];var c1=v2.b.mul(k).divRound(this.n);var c2=v1.b.neg().mul(k).divRound(this.n);var p1=c1.mul(v1.a);var p2=c2.mul(v2.a);var q1=c1.mul(v1.b);var q2=c2.mul(v2.b);var k1=k.sub(p1).sub(p2);var k2=q1.add(q2).neg();return{k1:k1,k2:k2}};ShortCurve.prototype.point=function point(x,y,isRed){return new Point(this,x,y,isRed)};ShortCurve.prototype.pointFromX=function pointFromX(odd,x){x=new bn(x,16);if(!x.red)x=x.toRed(this.red);var y2=x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);var y=y2.redSqrt();var isOdd=y.fromRed().isOdd();if(odd&&!isOdd||!odd&&isOdd)y=y.redNeg();return this.point(x,y)};ShortCurve.prototype.jpoint=function jpoint(x,y,z){return new JPoint(this,x,y,z)};ShortCurve.prototype.pointFromJSON=function pointFromJSON(obj,red){return Point.fromJSON(this,obj,red)};ShortCurve.prototype.validate=function validate(point){if(point.inf)return true;var x=point.x;var y=point.y;var ax=this.a.redMul(x);var rhs=x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);return y.redSqr().redISub(rhs).cmpn(0)===0};ShortCurve.prototype._endoWnafMulAdd=function _endoWnafMulAdd(points,coeffs){var npoints=this._endoWnafT1;var ncoeffs=this._endoWnafT2;for(var i=0;i<points.length;i++){var split=this._endoSplit(coeffs[i]);var p=points[i];var beta=p._getBeta();if(split.k1.sign){split.k1.sign=!split.k1.sign;p=p.neg(true)}if(split.k2.sign){split.k2.sign=!split.k2.sign;beta=beta.neg(true)}npoints[i*2]=p;npoints[i*2+1]=beta;ncoeffs[i*2]=split.k1;ncoeffs[i*2+1]=split.k2}var res=this._wnafMulAdd(1,npoints,ncoeffs,i*2);for(var j=0;j<i*2;j++){npoints[j]=null;ncoeffs[j]=null}return res};function Point(curve,x,y,isRed){Base.BasePoint.call(this,curve,"affine");if(x===null&&y===null){this.x=null;this.y=null;this.inf=true}else{this.x=new bn(x,16);this.y=new bn(y,16);if(isRed){this.x.forceRed(this.curve.red);this.y.forceRed(this.curve.red)}if(!this.x.red)this.x=this.x.toRed(this.curve.red);if(!this.y.red)this.y=this.y.toRed(this.curve.red);this.inf=false}}inherits(Point,Base.BasePoint);Point.prototype._getBeta=function _getBeta(){if(!this.curve.endo)return;var pre=this.precomputed;if(pre&&pre.beta)return pre.beta;var beta=this.curve.point(this.x.redMul(this.curve.endo.beta),this.y);if(pre){var curve=this.curve;function endoMul(p){return curve.point(p.x.redMul(curve.endo.beta),p.y)}pre.beta=beta;beta.precomputed={beta:null,naf:pre.naf&&{wnd:pre.naf.wnd,points:pre.naf.points.map(endoMul)},doubles:pre.doubles&&{step:pre.doubles.step,points:pre.doubles.points.map(endoMul)}}}return beta};Point.prototype.toJSON=function toJSON(){if(!this.precomputed)return[this.x,this.y];return[this.x,this.y,this.precomputed&&{doubles:this.precomputed.doubles&&{step:this.precomputed.doubles.step,points:this.precomputed.doubles.points.slice(1)},naf:this.precomputed.naf&&{wnd:this.precomputed.naf.wnd,points:this.precomputed.naf.points.slice(1)}}]};Point.fromJSON=function fromJSON(curve,obj,red){if(typeof obj==="string")obj=JSON.parse(obj);var res=curve.point(obj[0],obj[1],red);if(!obj[2])return res;function obj2point(obj){return curve.point(obj[0],obj[1],red)}var pre=obj[2];res.precomputed={beta:null,doubles:pre.doubles&&{step:pre.doubles.step,points:[res].concat(pre.doubles.points.map(obj2point))},naf:pre.naf&&{wnd:pre.naf.wnd,points:[res].concat(pre.naf.points.map(obj2point))}};return res};Point.prototype.inspect=function inspect(){if(this.isInfinity())return"<EC Point Infinity>";return"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+">"};Point.prototype.isInfinity=function isInfinity(){return this.inf};Point.prototype.add=function add(p){if(this.inf)return p;if(p.inf)return this;if(this.eq(p))return this.dbl();if(this.neg().eq(p))return this.curve.point(null,null);if(this.x.cmp(p.x)===0)return this.curve.point(null,null);var c=this.y.redSub(p.y);if(c.cmpn(0)!==0)c=c.redMul(this.x.redSub(p.x).redInvm());var nx=c.redSqr().redISub(this.x).redISub(p.x);var ny=c.redMul(this.x.redSub(nx)).redISub(this.y);return this.curve.point(nx,ny)};Point.prototype.dbl=function dbl(){if(this.inf)return this;var ys1=this.y.redAdd(this.y);if(ys1.cmpn(0)===0)return this.curve.point(null,null);var a=this.curve.a;var x2=this.x.redSqr();var dyinv=ys1.redInvm();var c=x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);var nx=c.redSqr().redISub(this.x.redAdd(this.x));var ny=c.redMul(this.x.redSub(nx)).redISub(this.y);return this.curve.point(nx,ny)};Point.prototype.getX=function getX(){return this.x.fromRed()};Point.prototype.getY=function getY(){return this.y.fromRed()};Point.prototype.mul=function mul(k){k=new bn(k,16);if(this.precomputed&&this.precomputed.doubles)return this.curve._fixedNafMul(this,k);else if(this.curve.endo)return this.curve._endoWnafMulAdd([this],[k]);else return this.curve._wnafMul(this,k)};Point.prototype.mulAdd=function mulAdd(k1,p2,k2){var points=[this,p2];var coeffs=[k1,k2];if(this.curve.endo)return this.curve._endoWnafMulAdd(points,coeffs);else return this.curve._wnafMulAdd(1,points,coeffs,2)};Point.prototype.eq=function eq(p){return this===p||this.inf===p.inf&&(this.inf||this.x.cmp(p.x)===0&&this.y.cmp(p.y)===0)};Point.prototype.neg=function neg(_precompute){if(this.inf)return this;var res=this.curve.point(this.x,this.y.redNeg());if(_precompute&&this.precomputed){var pre=this.precomputed;function negate(p){return p.neg()}res.precomputed={naf:pre.naf&&{wnd:pre.naf.wnd,points:pre.naf.points.map(negate)},doubles:pre.doubles&&{step:pre.doubles.step,points:pre.doubles.points.map(negate)}}}return res};Point.prototype.toJ=function toJ(){if(this.inf)return this.curve.jpoint(null,null,null);var res=this.curve.jpoint(this.x,this.y,this.curve.one);return res};function JPoint(curve,x,y,z){Base.BasePoint.call(this,curve,"jacobian");if(x===null&&y===null&&z===null){this.x=this.curve.one;this.y=this.curve.one;this.z=new bn(0)}else{this.x=new bn(x,16);this.y=new bn(y,16);this.z=new bn(z,16)}if(!this.x.red)this.x=this.x.toRed(this.curve.red);if(!this.y.red)this.y=this.y.toRed(this.curve.red);if(!this.z.red)this.z=this.z.toRed(this.curve.red);this.zOne=this.z===this.curve.one}inherits(JPoint,Base.BasePoint);JPoint.prototype.toP=function toP(){if(this.isInfinity())return this.curve.point(null,null);var zinv=this.z.redInvm();var zinv2=zinv.redSqr();var ax=this.x.redMul(zinv2);var ay=this.y.redMul(zinv2).redMul(zinv);return this.curve.point(ax,ay)};JPoint.prototype.neg=function neg(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)};JPoint.prototype.add=function add(p){if(this.isInfinity())return p;if(p.isInfinity())return this;var pz2=p.z.redSqr();var z2=this.z.redSqr();var u1=this.x.redMul(pz2);var u2=p.x.redMul(z2);var s1=this.y.redMul(pz2.redMul(p.z));var s2=p.y.redMul(z2.redMul(this.z));var h=u1.redSub(u2);var r=s1.redSub(s2);if(h.cmpn(0)===0){if(r.cmpn(0)!==0)return this.curve.jpoint(null,null,null);else return this.dbl()}var h2=h.redSqr();var h3=h2.redMul(h);var v=u1.redMul(h2);var nx=r.redSqr().redIAdd(h3).redISub(v).redISub(v);var ny=r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));var nz=this.z.redMul(p.z).redMul(h);return this.curve.jpoint(nx,ny,nz)};JPoint.prototype.mixedAdd=function mixedAdd(p){if(this.isInfinity())return p.toJ();if(p.isInfinity())return this;var z2=this.z.redSqr();var u1=this.x;var u2=p.x.redMul(z2);var s1=this.y;var s2=p.y.redMul(z2).redMul(this.z);var h=u1.redSub(u2);var r=s1.redSub(s2);if(h.cmpn(0)===0){if(r.cmpn(0)!==0)return this.curve.jpoint(null,null,null);else return this.dbl()}var h2=h.redSqr();var h3=h2.redMul(h);var v=u1.redMul(h2);var nx=r.redSqr().redIAdd(h3).redISub(v).redISub(v);var ny=r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));var nz=this.z.redMul(h);return this.curve.jpoint(nx,ny,nz)};JPoint.prototype.dblp=function dblp(pow){if(pow===0)return this;if(this.isInfinity())return this;if(!pow)return this.dbl();if(this.curve.zeroA||this.curve.threeA){var r=this;for(var i=0;i<pow;i++)r=r.dbl();return r}var a=this.curve.a;var tinv=this.curve.tinv;var jx=this.x;var jy=this.y;var jz=this.z;var jz4=jz.redSqr().redSqr();var jyd=jy.redAdd(jy);for(var i=0;i<pow;i++){var jx2=jx.redSqr();var jyd2=jyd.redSqr();var jyd4=jyd2.redSqr();var c=jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));var t1=jx.redMul(jyd2);var nx=c.redSqr().redISub(t1.redAdd(t1));var t2=t1.redISub(nx);var dny=c.redMul(t2);dny=dny.redIAdd(dny).redISub(jyd4);var nz=jyd.redMul(jz);if(i+1<pow)jz4=jz4.redMul(jyd4);jx=nx;jz=nz;jyd=dny}return this.curve.jpoint(jx,jyd.redMul(tinv),jz)};JPoint.prototype.dbl=function dbl(){if(this.isInfinity())return this;if(this.curve.zeroA)return this._zeroDbl();else if(this.curve.threeA)return this._threeDbl();else return this._dbl()};JPoint.prototype._zeroDbl=function _zeroDbl(){if(this.zOne){var xx=this.x.redSqr();var yy=this.y.redSqr();var yyyy=yy.redSqr();var s=this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);s=s.redIAdd(s);var m=xx.redAdd(xx).redIAdd(xx);var t=m.redSqr().redISub(s).redISub(s);var yyyy8=yyyy.redIAdd(yyyy);yyyy8=yyyy8.redIAdd(yyyy8);yyyy8=yyyy8.redIAdd(yyyy8);var nx=t;var ny=m.redMul(s.redISub(t)).redISub(yyyy8);var nz=this.y.redAdd(this.y)}else{var a=this.x.redSqr();var b=this.y.redSqr();var c=b.redSqr();var d=this.x.redAdd(b).redSqr().redISub(a).redISub(c);d=d.redIAdd(d);var e=a.redAdd(a).redIAdd(a);var f=e.redSqr();var c8=c.redIAdd(c);c8=c8.redIAdd(c8);c8=c8.redIAdd(c8);var nx=f.redISub(d).redISub(d);var ny=e.redMul(d.redISub(nx)).redISub(c8);var nz=this.y.redMul(this.z);nz=nz.redIAdd(nz)}return this.curve.jpoint(nx,ny,nz)};JPoint.prototype._threeDbl=function _threeDbl(){if(this.zOne){var xx=this.x.redSqr();var yy=this.y.redSqr();var yyyy=yy.redSqr();var s=this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);s=s.redIAdd(s);var m=xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);var t=m.redSqr().redISub(s).redISub(s);var nx=t;var yyyy8=yyyy.redIAdd(yyyy);yyyy8=yyyy8.redIAdd(yyyy8);yyyy8=yyyy8.redIAdd(yyyy8);var ny=m.redMul(s.redISub(t)).redISub(yyyy8);var nz=this.y.redAdd(this.y)}else{var delta=this.z.redSqr();var gamma=this.y.redSqr();var beta=this.x.redMul(gamma);var alpha=this.x.redSub(delta).redMul(this.x.redAdd(delta));alpha=alpha.redAdd(alpha).redIAdd(alpha);var beta4=beta.redIAdd(beta);beta4=beta4.redIAdd(beta4);var beta8=beta4.redAdd(beta4);var nx=alpha.redSqr().redISub(beta8);var nz=this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);var ggamma8=gamma.redSqr();ggamma8=ggamma8.redIAdd(ggamma8);ggamma8=ggamma8.redIAdd(ggamma8);ggamma8=ggamma8.redIAdd(ggamma8);var ny=alpha.redMul(beta4.redISub(nx)).redISub(ggamma8)}return this.curve.jpoint(nx,ny,nz)};JPoint.prototype._dbl=function _dbl(){var a=this.curve.a;var tinv=this.curve.tinv;var jx=this.x;var jy=this.y;var jz=this.z;var jz4=jz.redSqr().redSqr();var jx2=jx.redSqr();var jy2=jy.redSqr();var c=jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));var jxd4=jx.redAdd(jx);jxd4=jxd4.redIAdd(jxd4);var t1=jxd4.redMul(jy2);var nx=c.redSqr().redISub(t1.redAdd(t1));var t2=t1.redISub(nx);var jyd8=jy2.redSqr();jyd8=jyd8.redIAdd(jyd8);jyd8=jyd8.redIAdd(jyd8);jyd8=jyd8.redIAdd(jyd8);var ny=c.redMul(t2).redISub(jyd8);var nz=jy.redAdd(jy).redMul(jz);return this.curve.jpoint(nx,ny,nz)};JPoint.prototype.trpl=function trpl(){if(!this.curve.zeroA)return this.dbl().add(this);var xx=this.x.redSqr();var yy=this.y.redSqr();var zz=this.z.redSqr();var yyyy=yy.redSqr();var m=xx.redAdd(xx).redIAdd(xx);var mm=m.redSqr();var e=this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);e=e.redIAdd(e);e=e.redAdd(e).redIAdd(e);e=e.redISub(mm);var ee=e.redSqr();var t=yyyy.redIAdd(yyyy);t=t.redIAdd(t);t=t.redIAdd(t);t=t.redIAdd(t);var u=m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);var yyu4=yy.redMul(u);yyu4=yyu4.redIAdd(yyu4);yyu4=yyu4.redIAdd(yyu4);var nx=this.x.redMul(ee).redISub(yyu4);nx=nx.redIAdd(nx);nx=nx.redIAdd(nx);var ny=this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));ny=ny.redIAdd(ny);ny=ny.redIAdd(ny);ny=ny.redIAdd(ny);var nz=this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);return this.curve.jpoint(nx,ny,nz)};JPoint.prototype.mul=function mul(k,kbase){k=new bn(k,kbase);return this.curve._wnafMul(this,k)};JPoint.prototype.eq=function eq(p){if(p.type==="affine")return this.eq(p.toJ());if(this===p)return true;var z2=this.z.redSqr();var pz2=p.z.redSqr();if(this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0)!==0)return false;var z3=z2.redMul(this.z);var pz3=pz2.redMul(p.z);return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0)===0};JPoint.prototype.inspect=function inspect(){if(this.isInfinity())return"<EC JPoint Infinity>";return"<EC JPoint x: "+this.x.toString(16,2)+" y: "+this.y.toString(16,2)+" z: "+this.z.toString(16,2)+">"};JPoint.prototype.isInfinity=function isInfinity(){return this.z.cmpn(0)===0}},{"../../elliptic":184,"../curve":187,"bn.js":182,inherits:268}],190:[function(require,module,exports){var curves=exports;var hash=require("hash.js");var bn=require("bn.js");var elliptic=require("../elliptic");var assert=elliptic.utils.assert;function PresetCurve(options){if(options.type==="short")this.curve=new elliptic.curve.short(options);else if(options.type==="edwards")this.curve=new elliptic.curve.edwards(options);else this.curve=new elliptic.curve.mont(options);this.g=this.curve.g;this.n=this.curve.n;this.hash=options.hash;assert(this.g.validate(),"Invalid curve");assert(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}curves.PresetCurve=PresetCurve;function defineCurve(name,options){Object.defineProperty(curves,name,{configurable:true,enumerable:true,get:function(){var curve=new PresetCurve(options);Object.defineProperty(curves,name,{configurable:true,enumerable:true,value:curve});return curve}})}defineCurve("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:hash.sha256,gRed:false,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]});defineCurve("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:hash.sha256,gRed:false,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]});defineCurve("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:hash.sha256,gRed:false,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]});defineCurve("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"0",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:hash.sha256,gRed:false,g:["9"]});defineCurve("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:hash.sha256,gRed:false,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});defineCurve("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:hash.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:false,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",{doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}]})
},{"../elliptic":184,"bn.js":182,"hash.js":197}],191:[function(require,module,exports){var bn=require("bn.js");var elliptic=require("../../elliptic");var utils=elliptic.utils;var assert=utils.assert;var KeyPair=require("./key");var Signature=require("./signature");function EC(options){if(!(this instanceof EC))return new EC(options);if(typeof options==="string"){assert(elliptic.curves.hasOwnProperty(options),"Unknown curve "+options);options=elliptic.curves[options]}if(options instanceof elliptic.curves.PresetCurve)options={curve:options};this.curve=options.curve.curve;this.n=this.curve.n;this.nh=this.n.shrn(1);this.g=this.curve.g;this.g=options.curve.g;this.g.precompute(options.curve.n.bitLength()+1);this.hash=options.hash||options.curve.hash}module.exports=EC;EC.prototype.keyPair=function keyPair(priv,pub){return new KeyPair(this,priv,pub)};EC.prototype.genKeyPair=function genKeyPair(options){if(!options)options={};var drbg=new elliptic.hmacDRBG({hash:this.hash,pers:options.pers,entropy:options.entropy||elliptic.rand(this.hash.hmacStrength),nonce:this.n.toArray()});var bytes=this.n.byteLength();var ns2=this.n.sub(new bn(2));do{var priv=new bn(drbg.generate(bytes));if(priv.cmp(ns2)>0)continue;priv.iaddn(1);return this.keyPair(priv)}while(true)};EC.prototype._truncateToN=function truncateToN(msg,truncOnly){var delta=msg.byteLength()*8-this.n.bitLength();if(delta>0)msg=msg.shrn(delta);if(!truncOnly&&msg.cmp(this.n)>=0)return msg.sub(this.n);else return msg};EC.prototype.sign=function sign(msg,key,options){key=this.keyPair(key,"hex");msg=this._truncateToN(new bn(msg,16));if(!options)options={};var bytes=this.n.byteLength();var bkey=key.getPrivate().toArray();for(var i=bkey.length;i<21;i++)bkey.unshift(0);var nonce=msg.toArray();for(var i=nonce.length;i<bytes;i++)nonce.unshift(0);var drbg=new elliptic.hmacDRBG({hash:this.hash,entropy:bkey,nonce:nonce});var ns1=this.n.sub(new bn(1));do{var k=new bn(drbg.generate(this.n.byteLength()));k=this._truncateToN(k,true);if(k.cmpn(1)<=0||k.cmp(ns1)>=0)continue;var kp=this.g.mul(k);if(kp.isInfinity())continue;var r=kp.getX().mod(this.n);if(r.cmpn(0)===0)continue;var s=k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg)).mod(this.n);if(s.cmpn(0)===0)continue;if(options.canonical&&s.cmp(this.nh)>0)s=this.n.sub(s);return new Signature(r,s)}while(true)};EC.prototype.verify=function verify(msg,signature,key){msg=this._truncateToN(new bn(msg,16));key=this.keyPair(key,"hex");signature=new Signature(signature,"hex");var r=signature.r;var s=signature.s;if(r.cmpn(1)<0||r.cmp(this.n)>=0)return false;if(s.cmpn(1)<0||s.cmp(this.n)>=0)return false;var sinv=s.invm(this.n);var u1=sinv.mul(msg).mod(this.n);var u2=sinv.mul(r).mod(this.n);var p=this.g.mulAdd(u1,key.getPublic(),u2);if(p.isInfinity())return false;return p.getX().mod(this.n).cmp(r)===0}},{"../../elliptic":184,"./key":192,"./signature":193,"bn.js":182}],192:[function(require,module,exports){var bn=require("bn.js");var elliptic=require("../../elliptic");var utils=elliptic.utils;var assert=utils.assert;function KeyPair(ec,priv,pub){if(priv instanceof KeyPair)return priv;if(pub instanceof KeyPair)return pub;if(!priv){priv=pub;pub=null}if(priv!==null&&typeof priv==="object"){if(priv.x){pub=priv;priv=null}else if(priv.priv||priv.pub){pub=priv.pub;priv=priv.priv}}this.ec=ec;this.priv=null;this.pub=null;if(this._importPublicHex(priv,pub))return;if(pub==="hex")pub=null;if(priv)this._importPrivate(priv);if(pub)this._importPublic(pub)}module.exports=KeyPair;KeyPair.prototype.validate=function validate(){var pub=this.getPublic();if(pub.isInfinity())return{result:false,reason:"Invalid public key"};if(!pub.validate())return{result:false,reason:"Public key is not a point"};if(!pub.mul(this.ec.curve.n).isInfinity())return{result:false,reason:"Public key * N != O"};return{result:true,reason:null}};KeyPair.prototype.getPublic=function getPublic(compact,enc){if(!this.pub)this.pub=this.ec.g.mul(this.priv);if(typeof compact==="string"){enc=compact;compact=null}if(!enc)return this.pub;var len=this.ec.curve.p.byteLength();var x=this.pub.getX().toArray();for(var i=x.length;i<len;i++)x.unshift(0);if(compact){var res=[this.pub.getY().isEven()?2:3].concat(x)}else{var y=this.pub.getY().toArray();for(var i=y.length;i<len;i++)y.unshift(0);var res=[4].concat(x,y)}return utils.encode(res,enc)};KeyPair.prototype.getPrivate=function getPrivate(enc){if(enc==="hex")return this.priv.toString(16,2);else return this.priv};KeyPair.prototype._importPrivate=function _importPrivate(key){this.priv=new bn(key,16);this.priv=this.priv.mod(this.ec.curve.n)};KeyPair.prototype._importPublic=function _importPublic(key){this.pub=this.ec.curve.point(key.x,key.y)};KeyPair.prototype._importPublicHex=function _importPublic(key,enc){key=utils.toArray(key,enc);var len=this.ec.curve.p.byteLength();if(key[0]===4&&key.length-1===2*len){this.pub=this.ec.curve.point(key.slice(1,1+len),key.slice(1+len,1+2*len))}else if((key[0]===2||key[0]===3)&&key.length-1===len){this.pub=this.ec.curve.pointFromX(key[0]===3,key.slice(1,1+len))}else{return false}return true};KeyPair.prototype.derive=function derive(pub){return pub.mul(this.priv).getX()};KeyPair.prototype.sign=function sign(msg){return this.ec.sign(msg,this)};KeyPair.prototype.verify=function verify(msg,signature){return this.ec.verify(msg,signature,this)};KeyPair.prototype.inspect=function inspect(){return"<Key priv: "+(this.priv&&this.priv.toString(16,2))+" pub: "+(this.pub&&this.pub.inspect())+" >"}},{"../../elliptic":184,"bn.js":182}],193:[function(require,module,exports){var bn=require("bn.js");var elliptic=require("../../elliptic");var utils=elliptic.utils;var assert=utils.assert;function Signature(r,s){if(r instanceof Signature)return r;if(this._importDER(r,s))return;assert(r&&s,"Signature without r or s");this.r=new bn(r,16);this.s=new bn(s,16)}module.exports=Signature;Signature.prototype._importDER=function _importDER(data,enc){data=utils.toArray(data,enc);if(data.length<6||data[0]!==48||data[2]!==2)return false;var total=data[1];if(1+total>data.length)return false;var rlen=data[3];if(rlen>=128)return false;if(4+rlen+2>=data.length)return false;if(data[4+rlen]!==2)return false;var slen=data[5+rlen];if(slen>=128)return false;if(4+rlen+2+slen>data.length)return false;this.r=new bn(data.slice(4,4+rlen));this.s=new bn(data.slice(4+rlen+2,4+rlen+2+slen));return true};Signature.prototype.toDER=function toDER(enc){var r=this.r.toArray();var s=this.s.toArray();if(r[0]&128)r=[0].concat(r);if(s[0]&128)s=[0].concat(s);var total=r.length+s.length+4;var res=[48,total,2,r.length];res=res.concat(r,[2,s.length],s);return utils.encode(res,enc)}},{"../../elliptic":184,"bn.js":182}],194:[function(require,module,exports){var hash=require("hash.js");var elliptic=require("../elliptic");var utils=elliptic.utils;var assert=utils.assert;function HmacDRBG(options){if(!(this instanceof HmacDRBG))return new HmacDRBG(options);this.hash=options.hash;this.predResist=!!options.predResist;this.outLen=this.hash.outSize;this.minEntropy=options.minEntropy||this.hash.hmacStrength;this.reseed=null;this.reseedInterval=null;this.K=null;this.V=null;var entropy=utils.toArray(options.entropy,options.entropyEnc);var nonce=utils.toArray(options.nonce,options.nonceEnc);var pers=utils.toArray(options.pers,options.persEnc);assert(entropy.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits");this._init(entropy,nonce,pers)}module.exports=HmacDRBG;HmacDRBG.prototype._init=function init(entropy,nonce,pers){var seed=entropy.concat(nonce).concat(pers);this.K=new Array(this.outLen/8);this.V=new Array(this.outLen/8);for(var i=0;i<this.V.length;i++){this.K[i]=0;this.V[i]=1}this._update(seed);this.reseed=1;this.reseedInterval=281474976710656};HmacDRBG.prototype._hmac=function hmac(){return new hash.hmac(this.hash,this.K)};HmacDRBG.prototype._update=function update(seed){var kmac=this._hmac().update(this.V).update([0]);if(seed)kmac=kmac.update(seed);this.K=kmac.digest();this.V=this._hmac().update(this.V).digest();if(!seed)return;this.K=this._hmac().update(this.V).update([1]).update(seed).digest();this.V=this._hmac().update(this.V).digest()};HmacDRBG.prototype.reseed=function reseed(entropy,entropyEnc,add,addEnc){if(typeof entropyEnc!=="string"){addEnc=add;add=entropyEnc;entropyEnc=null}entropy=utils.toBuffer(entropy,entropyEnc);add=utils.toBuffer(add,addEnc);assert(entropy.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits");this._update(entropy.concat(add||[]));this.reseed=1};HmacDRBG.prototype.generate=function generate(len,enc,add,addEnc){if(this.reseed>this.reseedInterval)throw new Error("Reseed is required");if(typeof enc!=="string"){addEnc=add;add=enc;enc=null}if(add){add=utils.toArray(add,addEnc);this._update(add)}var temp=[];while(temp.length<len){this.V=this._hmac().update(this.V).digest();temp=temp.concat(this.V)}var res=temp.slice(0,len);this._update(add);this.reseed++;return utils.encode(res,enc)}},{"../elliptic":184,"hash.js":197}],195:[function(require,module,exports){var bn=require("bn.js");var utils=exports;utils.assert=function assert(val,msg){if(!val)throw new Error(msg||"Assertion failed")};function toArray(msg,enc){if(Array.isArray(msg))return msg.slice();if(!msg)return[];var res=[];if(typeof msg==="string"){if(!enc){for(var i=0;i<msg.length;i++){var c=msg.charCodeAt(i);var hi=c>>8;var lo=c&255;if(hi)res.push(hi,lo);else res.push(lo)}}else if(enc==="hex"){msg=msg.replace(/[^a-z0-9]+/gi,"");if(msg.length%2!==0)msg="0"+msg;for(var i=0;i<msg.length;i+=2)res.push(parseInt(msg[i]+msg[i+1],16))}}else{for(var i=0;i<msg.length;i++)res[i]=msg[i]|0}return res}utils.toArray=toArray;function toHex(msg){var res="";for(var i=0;i<msg.length;i++)res+=zero2(msg[i].toString(16));return res}utils.toHex=toHex;utils.encode=function encode(arr,enc){if(enc==="hex")return toHex(arr);else return arr};function zero2(word){if(word.length===1)return"0"+word;else return word}utils.zero2=zero2;function getNAF(num,w){var naf=[];var ws=1<<w+1;var k=num.clone();while(k.cmpn(1)>=0){var z;if(k.isOdd()){var mod=k.andln(ws-1);if(mod>(ws>>1)-1)z=(ws>>1)-mod;else z=mod;k.isubn(z)}else{z=0}naf.push(z);var shift=k.cmpn(0)!==0&&k.andln(ws-1)===0?w+1:1;for(var i=1;i<shift;i++)naf.push(0);k.ishrn(shift)}return naf}utils.getNAF=getNAF;function getJSF(k1,k2){var jsf=[[],[]];k1=k1.clone();k2=k2.clone();var d1=0;var d2=0;while(k1.cmpn(-d1)>0||k2.cmpn(-d2)>0){var m14=k1.andln(3)+d1&3;var m24=k2.andln(3)+d2&3;if(m14===3)m14=-1;if(m24===3)m24=-1;var u1;if((m14&1)===0){u1=0}else{var m8=k1.andln(7)+d1&7;if((m8===3||m8===5)&&m24===2)u1=-m14;else u1=m14}jsf[0].push(u1);var u2;if((m24&1)===0){u2=0}else{var m8=k2.andln(7)+d2&7;if((m8===3||m8===5)&&m14===2)u2=-m24;else u2=m24}jsf[1].push(u2);if(2*d1===u1+1)d1=1-d1;if(2*d2===u2+1)d2=1-d2;k1.ishrn(1);k2.ishrn(1)}return jsf}utils.getJSF=getJSF},{"bn.js":182}],196:[function(require,module,exports){var r;module.exports=function rand(len){if(!r)r=new Rand(null);return r.generate(len)};function Rand(rand){this.rand=rand}module.exports.Rand=Rand;Rand.prototype.generate=function generate(len){return this._rand(len)};if(typeof window==="object"){if(window.crypto&&window.crypto.getRandomValues){Rand.prototype._rand=function _rand(n){var arr=new Uint8Array(n);window.crypto.getRandomValues(arr);return arr}}else if(window.msCrypto&&window.msCrypto.getRandomValues){Rand.prototype._rand=function _rand(n){var arr=new Uint8Array(n);window.msCrypto.getRandomValues(arr);return arr}}else{Rand.prototype._rand=function(){throw new Error("Not implemented yet")}}}else{try{var crypto=require("cry"+"pto");Rand.prototype._rand=function _rand(n){return crypto.randomBytes(n)}}catch(e){Rand.prototype._rand=function _rand(n){var res=new Uint8Array(n);for(var i=0;i<res.length;i++)res[i]=this.rand.getByte();return res}}}},{}],197:[function(require,module,exports){var hash=exports;hash.utils=require("./hash/utils");hash.common=require("./hash/common");hash.sha=require("./hash/sha");hash.ripemd=require("./hash/ripemd");hash.hmac=require("./hash/hmac");hash.sha1=hash.sha.sha1;hash.sha256=hash.sha.sha256;hash.sha224=hash.sha.sha224;hash.sha384=hash.sha.sha384;hash.sha512=hash.sha.sha512;hash.ripemd160=hash.ripemd.ripemd160},{"./hash/common":198,"./hash/hmac":199,"./hash/ripemd":200,"./hash/sha":201,"./hash/utils":202}],198:[function(require,module,exports){var hash=require("../hash");var utils=hash.utils;var assert=utils.assert;function BlockHash(){this.pending=null;this.pendingTotal=0;this.blockSize=this.constructor.blockSize;this.outSize=this.constructor.outSize;this.hmacStrength=this.constructor.hmacStrength;this.padLength=this.constructor.padLength/8;this.endian="big";this._delta8=this.blockSize/8;this._delta32=this.blockSize/32}exports.BlockHash=BlockHash;BlockHash.prototype.update=function update(msg,enc){msg=utils.toArray(msg,enc);if(!this.pending)this.pending=msg;else this.pending=this.pending.concat(msg);this.pendingTotal+=msg.length;if(this.pending.length>=this._delta8){msg=this.pending;var r=msg.length%this._delta8;this.pending=msg.slice(msg.length-r,msg.length);if(this.pending.length===0)this.pending=null;msg=utils.join32(msg,0,msg.length-r,this.endian);for(var i=0;i<msg.length;i+=this._delta32)this._update(msg,i,i+this._delta32)}return this};BlockHash.prototype.digest=function digest(enc){this.update(this._pad());assert(this.pending===null);return this._digest(enc)};BlockHash.prototype._pad=function pad(){var len=this.pendingTotal;var bytes=this._delta8;var k=bytes-(len+this.padLength)%bytes;var res=new Array(k+this.padLength);res[0]=128;for(var i=1;i<k;i++)res[i]=0;len<<=3;if(this.endian==="big"){for(var t=8;t<this.padLength;t++)res[i++]=0;res[i++]=0;res[i++]=0;res[i++]=0;res[i++]=0;res[i++]=len>>>24&255;res[i++]=len>>>16&255;res[i++]=len>>>8&255;res[i++]=len&255}else{res[i++]=len&255;res[i++]=len>>>8&255;res[i++]=len>>>16&255;res[i++]=len>>>24&255;res[i++]=0;res[i++]=0;res[i++]=0;res[i++]=0;for(var t=8;t<this.padLength;t++)res[i++]=0}return res}},{"../hash":197}],199:[function(require,module,exports){var hmac=exports;var hash=require("../hash");var utils=hash.utils;var assert=utils.assert;function Hmac(hash,key,enc){if(!(this instanceof Hmac))return new Hmac(hash,key,enc);this.Hash=hash;this.blockSize=hash.blockSize/8;this.outSize=hash.outSize/8;this.inner=null;this.outer=null;this._init(utils.toArray(key,enc))}module.exports=Hmac;Hmac.prototype._init=function init(key){if(key.length>this.blockSize)key=(new this.Hash).update(key).digest();assert(key.length<=this.blockSize);for(var i=key.length;i<this.blockSize;i++)key.push(0);for(var i=0;i<key.length;i++)key[i]^=54;this.inner=(new this.Hash).update(key);for(var i=0;i<key.length;i++)key[i]^=106;this.outer=(new this.Hash).update(key)};Hmac.prototype.update=function update(msg,enc){this.inner.update(msg,enc);return this};Hmac.prototype.digest=function digest(enc){this.outer.update(this.inner.digest());return this.outer.digest(enc)}},{"../hash":197}],200:[function(require,module,exports){var hash=require("../hash");var utils=hash.utils;var rotl32=utils.rotl32;var sum32=utils.sum32;var sum32_3=utils.sum32_3;var sum32_4=utils.sum32_4;var BlockHash=hash.common.BlockHash;function RIPEMD160(){if(!(this instanceof RIPEMD160))return new RIPEMD160;BlockHash.call(this);this.h=[1732584193,4023233417,2562383102,271733878,3285377520];this.endian="little"}utils.inherits(RIPEMD160,BlockHash);exports.ripemd160=RIPEMD160;RIPEMD160.blockSize=512;RIPEMD160.outSize=160;RIPEMD160.hmacStrength=192;RIPEMD160.padLength=64;RIPEMD160.prototype._update=function update(msg,start){var A=this.h[0];var B=this.h[1];var C=this.h[2];var D=this.h[3];var E=this.h[4];var Ah=A;var Bh=B;var Ch=C;var Dh=D;var Eh=E;for(var j=0;j<80;j++){var T=sum32(rotl32(sum32_4(A,f(j,B,C,D),msg[r[j]+start],K(j)),s[j]),E);A=E;E=D;D=rotl32(C,10);C=B;B=T;T=sum32(rotl32(sum32_4(Ah,f(79-j,Bh,Ch,Dh),msg[rh[j]+start],Kh(j)),sh[j]),Eh);Ah=Eh;Eh=Dh;Dh=rotl32(Ch,10);Ch=Bh;Bh=T}T=sum32_3(this.h[1],C,Dh);this.h[1]=sum32_3(this.h[2],D,Eh);this.h[2]=sum32_3(this.h[3],E,Ah);this.h[3]=sum32_3(this.h[4],A,Bh);this.h[4]=sum32_3(this.h[0],B,Ch);this.h[0]=T};RIPEMD160.prototype._digest=function digest(enc){if(enc==="hex")return utils.toHex32(this.h,"little");else return utils.split32(this.h,"little")};function f(j,x,y,z){if(j<=15)return x^y^z;else if(j<=31)return x&y|~x&z;else if(j<=47)return(x|~y)^z;else if(j<=63)return x&z|y&~z;else return x^(y|~z)}function K(j){if(j<=15)return 0;else if(j<=31)return 1518500249;else if(j<=47)return 1859775393;else if(j<=63)return 2400959708;else return 2840853838}function Kh(j){if(j<=15)return 1352829926;else if(j<=31)return 1548603684;else if(j<=47)return 1836072691;else if(j<=63)return 2053994217;else return 0}var r=[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 rh=[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 s=[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 sh=[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]},{"../hash":197}],201:[function(require,module,exports){var hash=require("../hash");var utils=hash.utils;var assert=utils.assert;var rotr32=utils.rotr32;var rotl32=utils.rotl32;var sum32=utils.sum32;var sum32_4=utils.sum32_4;var sum32_5=utils.sum32_5;var rotr64_hi=utils.rotr64_hi;var rotr64_lo=utils.rotr64_lo;var shr64_hi=utils.shr64_hi;var shr64_lo=utils.shr64_lo;var sum64=utils.sum64;var sum64_hi=utils.sum64_hi;var sum64_lo=utils.sum64_lo;var sum64_4_hi=utils.sum64_4_hi;var sum64_4_lo=utils.sum64_4_lo;var sum64_5_hi=utils.sum64_5_hi;var sum64_5_lo=utils.sum64_5_lo;var BlockHash=hash.common.BlockHash;var sha256_K=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];var sha512_K=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];var sha1_K=[1518500249,1859775393,2400959708,3395469782];function SHA256(){if(!(this instanceof SHA256))return new SHA256;BlockHash.call(this);this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225];this.k=sha256_K;this.W=new Array(64)}utils.inherits(SHA256,BlockHash);exports.sha256=SHA256;SHA256.blockSize=512;SHA256.outSize=256;SHA256.hmacStrength=192;SHA256.padLength=64;SHA256.prototype._update=function _update(msg,start){var W=this.W;for(var i=0;i<16;i++)W[i]=msg[start+i];for(;i<W.length;i++)W[i]=sum32_4(g1_256(W[i-2]),W[i-7],g0_256(W[i-15]),W[i-16]);var a=this.h[0];var b=this.h[1];var c=this.h[2];var d=this.h[3];var e=this.h[4];var f=this.h[5];var g=this.h[6];var h=this.h[7];assert(this.k.length===W.length);for(var i=0;i<W.length;i++){var T1=sum32_5(h,s1_256(e),ch32(e,f,g),this.k[i],W[i]);var T2=sum32(s0_256(a),maj32(a,b,c));h=g;g=f;f=e;e=sum32(d,T1);d=c;c=b;b=a;a=sum32(T1,T2)}this.h[0]=sum32(this.h[0],a);this.h[1]=sum32(this.h[1],b);this.h[2]=sum32(this.h[2],c);this.h[3]=sum32(this.h[3],d);this.h[4]=sum32(this.h[4],e);this.h[5]=sum32(this.h[5],f);this.h[6]=sum32(this.h[6],g);this.h[7]=sum32(this.h[7],h)};SHA256.prototype._digest=function digest(enc){if(enc==="hex")return utils.toHex32(this.h,"big");else return utils.split32(this.h,"big")};function SHA224(){if(!(this instanceof SHA224))return new SHA224;SHA256.call(this);this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}utils.inherits(SHA224,SHA256);exports.sha224=SHA224;SHA224.blockSize=512;SHA224.outSize=224;SHA224.hmacStrength=192;SHA224.padLength=64;SHA224.prototype._digest=function digest(enc){if(enc==="hex")return utils.toHex32(this.h.slice(0,7),"big");else return utils.split32(this.h.slice(0,7),"big")};function SHA512(){if(!(this instanceof SHA512))return new SHA512;BlockHash.call(this);this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209];this.k=sha512_K;this.W=new Array(160)}utils.inherits(SHA512,BlockHash);exports.sha512=SHA512;SHA512.blockSize=1024;SHA512.outSize=512;SHA512.hmacStrength=192;SHA512.padLength=128;SHA512.prototype._prepareBlock=function _prepareBlock(msg,start){var W=this.W;for(var i=0;i<32;i++)W[i]=msg[start+i];for(;i<W.length;i+=2){var c0_hi=g1_512_hi(W[i-4],W[i-3]);var c0_lo=g1_512_lo(W[i-4],W[i-3]);var c1_hi=W[i-14];var c1_lo=W[i-13];var c2_hi=g0_512_hi(W[i-30],W[i-29]);var c2_lo=g0_512_lo(W[i-30],W[i-29]);var c3_hi=W[i-32];var c3_lo=W[i-31];W[i]=sum64_4_hi(c0_hi,c0_lo,c1_hi,c1_lo,c2_hi,c2_lo,c3_hi,c3_lo);W[i+1]=sum64_4_lo(c0_hi,c0_lo,c1_hi,c1_lo,c2_hi,c2_lo,c3_hi,c3_lo)}};SHA512.prototype._update=function _update(msg,start){this._prepareBlock(msg,start);var W=this.W;var ah=this.h[0];var al=this.h[1];var bh=this.h[2];var bl=this.h[3];var ch=this.h[4];var cl=this.h[5];var dh=this.h[6];var dl=this.h[7];var eh=this.h[8];var el=this.h[9];var fh=this.h[10];var fl=this.h[11];var gh=this.h[12];var gl=this.h[13];var hh=this.h[14];var hl=this.h[15];assert(this.k.length===W.length);for(var i=0;i<W.length;i+=2){var c0_hi=hh;var c0_lo=hl;var c1_hi=s1_512_hi(eh,el);var c1_lo=s1_512_lo(eh,el);var c2_hi=ch64_hi(eh,el,fh,fl,gh,gl);var c2_lo=ch64_lo(eh,el,fh,fl,gh,gl);var c3_hi=this.k[i];var c3_lo=this.k[i+1];var c4_hi=W[i];var c4_lo=W[i+1];var T1_hi=sum64_5_hi(c0_hi,c0_lo,c1_hi,c1_lo,c2_hi,c2_lo,c3_hi,c3_lo,c4_hi,c4_lo);var T1_lo=sum64_5_lo(c0_hi,c0_lo,c1_hi,c1_lo,c2_hi,c2_lo,c3_hi,c3_lo,c4_hi,c4_lo);var c0_hi=s0_512_hi(ah,al);var c0_lo=s0_512_lo(ah,al);var c1_hi=maj64_hi(ah,al,bh,bl,ch,cl);var c1_lo=maj64_lo(ah,al,bh,bl,ch,cl);var T2_hi=sum64_hi(c0_hi,c0_lo,c1_hi,c1_lo);var T2_lo=sum64_lo(c0_hi,c0_lo,c1_hi,c1_lo);hh=gh;hl=gl;gh=fh;gl=fl;fh=eh;fl=el;eh=sum64_hi(dh,dl,T1_hi,T1_lo);el=sum64_lo(dl,dl,T1_hi,T1_lo);dh=ch;dl=cl;ch=bh;cl=bl;bh=ah;bl=al;ah=sum64_hi(T1_hi,T1_lo,T2_hi,T2_lo);al=sum64_lo(T1_hi,T1_lo,T2_hi,T2_lo)}sum64(this.h,0,ah,al);sum64(this.h,2,bh,bl);sum64(this.h,4,ch,cl);sum64(this.h,6,dh,dl);sum64(this.h,8,eh,el);sum64(this.h,10,fh,fl);sum64(this.h,12,gh,gl);sum64(this.h,14,hh,hl)};SHA512.prototype._digest=function digest(enc){if(enc==="hex")return utils.toHex32(this.h,"big");else return utils.split32(this.h,"big")};function SHA384(){if(!(this instanceof SHA384))return new SHA384;SHA512.call(this);this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}utils.inherits(SHA384,SHA512);exports.sha384=SHA384;SHA384.blockSize=1024;SHA384.outSize=384;SHA384.hmacStrength=192;SHA384.padLength=128;SHA384.prototype._digest=function digest(enc){if(enc==="hex")return utils.toHex32(this.h.slice(0,12),"big");else return utils.split32(this.h.slice(0,12),"big")};function SHA1(){if(!(this instanceof SHA1))return new SHA1;BlockHash.call(this);this.h=[1732584193,4023233417,2562383102,271733878,3285377520];this.W=new Array(80)}utils.inherits(SHA1,BlockHash);exports.sha1=SHA1;SHA1.blockSize=512;SHA1.outSize=160;SHA1.hmacStrength=80;SHA1.padLength=64;SHA1.prototype._update=function _update(msg,start){var W=this.W;for(var i=0;i<16;i++)W[i]=msg[start+i];for(;i<W.length;i++)W[i]=rotl32(W[i-3]^W[i-8]^W[i-14]^W[i-16],1);var a=this.h[0];var b=this.h[1];var c=this.h[2];var d=this.h[3];var e=this.h[4];for(var i=0;i<W.length;i++){var s=~~(i/20);var t=sum32_5(rotl32(a,5),ft_1(s,b,c,d),e,W[i],sha1_K[s]);e=d;d=c;c=rotl32(b,30);b=a;a=t}this.h[0]=sum32(this.h[0],a);this.h[1]=sum32(this.h[1],b);this.h[2]=sum32(this.h[2],c);this.h[3]=sum32(this.h[3],d);this.h[4]=sum32(this.h[4],e)};SHA1.prototype._digest=function digest(enc){if(enc==="hex")return utils.toHex32(this.h,"big");else return utils.split32(this.h,"big")};function ch32(x,y,z){return x&y^~x&z}function maj32(x,y,z){return x&y^x&z^y&z}function p32(x,y,z){return x^y^z}function s0_256(x){return rotr32(x,2)^rotr32(x,13)^rotr32(x,22)}function s1_256(x){return rotr32(x,6)^rotr32(x,11)^rotr32(x,25)}function g0_256(x){return rotr32(x,7)^rotr32(x,18)^x>>>3}function g1_256(x){return rotr32(x,17)^rotr32(x,19)^x>>>10}function ft_1(s,x,y,z){if(s===0)return ch32(x,y,z);if(s===1||s===3)return p32(x,y,z);if(s===2)return maj32(x,y,z)}function ch64_hi(xh,xl,yh,yl,zh,zl){var r=xh&yh^~xh&zh;if(r<0)r+=4294967296;return r}function ch64_lo(xh,xl,yh,yl,zh,zl){var r=xl&yl^~xl&zl;if(r<0)r+=4294967296;return r}function maj64_hi(xh,xl,yh,yl,zh,zl){var r=xh&yh^xh&zh^yh&zh;if(r<0)r+=4294967296;return r}function maj64_lo(xh,xl,yh,yl,zh,zl){var r=xl&yl^xl&zl^yl&zl;if(r<0)r+=4294967296;return r}function s0_512_hi(xh,xl){var c0_hi=rotr64_hi(xh,xl,28);var c1_hi=rotr64_hi(xl,xh,2);var c2_hi=rotr64_hi(xl,xh,7);var r=c0_hi^c1_hi^c2_hi;if(r<0)r+=4294967296;return r}function s0_512_lo(xh,xl){var c0_lo=rotr64_lo(xh,xl,28);var c1_lo=rotr64_lo(xl,xh,2);var c2_lo=rotr64_lo(xl,xh,7);var r=c0_lo^c1_lo^c2_lo;if(r<0)r+=4294967296;return r}function s1_512_hi(xh,xl){var c0_hi=rotr64_hi(xh,xl,14);var c1_hi=rotr64_hi(xh,xl,18);var c2_hi=rotr64_hi(xl,xh,9);var r=c0_hi^c1_hi^c2_hi;if(r<0)r+=4294967296;return r}function s1_512_lo(xh,xl){var c0_lo=rotr64_lo(xh,xl,14);var c1_lo=rotr64_lo(xh,xl,18);var c2_lo=rotr64_lo(xl,xh,9);var r=c0_lo^c1_lo^c2_lo;if(r<0)r+=4294967296;return r}function g0_512_hi(xh,xl){var c0_hi=rotr64_hi(xh,xl,1);var c1_hi=rotr64_hi(xh,xl,8);var c2_hi=shr64_hi(xh,xl,7);var r=c0_hi^c1_hi^c2_hi;if(r<0)r+=4294967296;return r}function g0_512_lo(xh,xl){var c0_lo=rotr64_lo(xh,xl,1);var c1_lo=rotr64_lo(xh,xl,8);var c2_lo=shr64_lo(xh,xl,7);var r=c0_lo^c1_lo^c2_lo;if(r<0)r+=4294967296;return r}function g1_512_hi(xh,xl){var c0_hi=rotr64_hi(xh,xl,19);var c1_hi=rotr64_hi(xl,xh,29);var c2_hi=shr64_hi(xh,xl,6);var r=c0_hi^c1_hi^c2_hi;if(r<0)r+=4294967296;return r}function g1_512_lo(xh,xl){var c0_lo=rotr64_lo(xh,xl,19);var c1_lo=rotr64_lo(xl,xh,29);var c2_lo=shr64_lo(xh,xl,6);var r=c0_lo^c1_lo^c2_lo;if(r<0)r+=4294967296;return r}},{"../hash":197}],202:[function(require,module,exports){var utils=exports;var inherits=require("inherits");function toArray(msg,enc){if(Array.isArray(msg))return msg.slice();if(!msg)return[];var res=[];if(typeof msg==="string"){if(!enc){for(var i=0;i<msg.length;i++){var c=msg.charCodeAt(i);var hi=c>>8;var lo=c&255;if(hi)res.push(hi,lo);else res.push(lo)}}else if(enc==="hex"){msg=msg.replace(/[^a-z0-9]+/gi,"");if(msg.length%2!==0)msg="0"+msg;for(var i=0;i<msg.length;i+=2)res.push(parseInt(msg[i]+msg[i+1],16))}}else{for(var i=0;i<msg.length;i++)res[i]=msg[i]|0}return res}utils.toArray=toArray;function toHex(msg){var res="";for(var i=0;i<msg.length;i++)res+=zero2(msg[i].toString(16));return res}utils.toHex=toHex;function htonl(w){var res=w>>>24|w>>>8&65280|w<<8&16711680|(w&255)<<24;return res>>>0}utils.htonl=htonl;function toHex32(msg,endian){var res="";for(var i=0;i<msg.length;i++){var w=msg[i];if(endian==="little")w=htonl(w);res+=zero8(w.toString(16))}return res}utils.toHex32=toHex32;function zero2(word){if(word.length===1)return"0"+word;else return word}utils.zero2=zero2;function zero8(word){if(word.length===7)return"0"+word;else if(word.length===6)return"00"+word;else if(word.length===5)return"000"+word;else if(word.length===4)return"0000"+word;else if(word.length===3)return"00000"+word;else if(word.length===2)return"000000"+word;else if(word.length===1)return"0000000"+word;else return word}utils.zero8=zero8;function join32(msg,start,end,endian){var len=end-start;assert(len%4===0);var res=new Array(len/4);for(var i=0,k=start;i<res.length;i++,k+=4){var w;if(endian==="big")w=msg[k]<<24|msg[k+1]<<16|msg[k+2]<<8|msg[k+3];else w=msg[k+3]<<24|msg[k+2]<<16|msg[k+1]<<8|msg[k];res[i]=w>>>0}return res}utils.join32=join32;function split32(msg,endian){var res=new Array(msg.length*4);for(var i=0,k=0;i<msg.length;i++,k+=4){var m=msg[i];if(endian==="big"){res[k]=m>>>24;res[k+1]=m>>>16&255;res[k+2]=m>>>8&255;res[k+3]=m&255}else{res[k+3]=m>>>24;res[k+2]=m>>>16&255;res[k+1]=m>>>8&255;res[k]=m&255}}return res}utils.split32=split32;function rotr32(w,b){return w>>>b|w<<32-b}utils.rotr32=rotr32;function rotl32(w,b){return w<<b|w>>>32-b}utils.rotl32=rotl32;function sum32(a,b){return a+b>>>0}utils.sum32=sum32;function sum32_3(a,b,c){return a+b+c>>>0}utils.sum32_3=sum32_3;function sum32_4(a,b,c,d){return a+b+c+d>>>0}utils.sum32_4=sum32_4;function sum32_5(a,b,c,d,e){return a+b+c+d+e>>>0}utils.sum32_5=sum32_5;function assert(cond,msg){if(!cond)throw new Error(msg||"Assertion failed")}utils.assert=assert;utils.inherits=inherits;function sum64(buf,pos,ah,al){var bh=buf[pos];var bl=buf[pos+1];var lo=al+bl>>>0;var hi=(lo<al?1:0)+ah+bh;buf[pos]=hi>>>0;buf[pos+1]=lo}exports.sum64=sum64;function sum64_hi(ah,al,bh,bl){var lo=al+bl>>>0;var hi=(lo<al?1:0)+ah+bh;return hi>>>0}exports.sum64_hi=sum64_hi;function sum64_lo(ah,al,bh,bl){var lo=al+bl;return lo>>>0}exports.sum64_lo=sum64_lo;function sum64_4_hi(ah,al,bh,bl,ch,cl,dh,dl){var carry=0;var lo=al;lo=lo+bl>>>0;carry+=lo<al?1:0;lo=lo+cl>>>0;carry+=lo<cl?1:0;lo=lo+dl>>>0;carry+=lo<dl?1:0;var hi=ah+bh+ch+dh+carry;return hi>>>0}exports.sum64_4_hi=sum64_4_hi;function sum64_4_lo(ah,al,bh,bl,ch,cl,dh,dl){var lo=al+bl+cl+dl;return lo>>>0}exports.sum64_4_lo=sum64_4_lo;function sum64_5_hi(ah,al,bh,bl,ch,cl,dh,dl,eh,el){var carry=0;var lo=al;lo=lo+bl>>>0;carry+=lo<al?1:0;lo=lo+cl>>>0;carry+=lo<cl?1:0;lo=lo+dl>>>0;carry+=lo<dl?1:0;lo=lo+el>>>0;carry+=lo<el?1:0;var hi=ah+bh+ch+dh+eh+carry;return hi>>>0
}exports.sum64_5_hi=sum64_5_hi;function sum64_5_lo(ah,al,bh,bl,ch,cl,dh,dl,eh,el){var lo=al+bl+cl+dl+el;return lo>>>0}exports.sum64_5_lo=sum64_5_lo;function rotr64_hi(ah,al,num){var r=al<<32-num|ah>>>num;return r>>>0}exports.rotr64_hi=rotr64_hi;function rotr64_lo(ah,al,num){var r=ah<<32-num|al>>>num;return r>>>0}exports.rotr64_lo=rotr64_lo;function shr64_hi(ah,al,num){return ah>>>num}exports.shr64_hi=shr64_hi;function shr64_lo(ah,al,num){var r=ah<<32-num|al>>>num;return r>>>0}exports.shr64_lo=shr64_lo},{inherits:268}],203:[function(require,module,exports){module.exports={name:"elliptic",version:"1.0.1",description:"EC cryptography",main:"lib/elliptic.js",scripts:{test:"mocha --reporter=spec test/*-test.js"},repository:{type:"git",url:"git@github.com:indutny/elliptic"},keywords:["EC","Elliptic","curve","Cryptography"],author:{name:"Fedor Indutny",email:"fedor@indutny.com"},license:"MIT",bugs:{url:"https://github.com/indutny/elliptic/issues"},homepage:"https://github.com/indutny/elliptic",devDependencies:{browserify:"^3.44.2",mocha:"^1.18.2","uglify-js":"^2.4.13"},dependencies:{"bn.js":"^1.0.0",brorand:"^1.0.1","hash.js":"^1.0.0",inherits:"^2.0.1"},readme:"# Elliptic [![Build Status](https://secure.travis-ci.org/indutny/elliptic.png)](http://travis-ci.org/indutny/elliptic)\n\nFast elliptic-curve cryptography in a plain javascript implementation.\n\nNOTE: Please take a look at http://safecurves.cr.yp.to/ before choosing a curve\nfor your cryptography operations.\n\n## Incentive\n\nECC is much slower than regular RSA cryptography, the JS implementations are\neven more slower.\n\n## Benchmarks\n\n```bash\n$ node benchmarks/index.js\nBenchmarking: sign\nelliptic#sign x 262 ops/sec ±0.51% (177 runs sampled)\neccjs#sign x 55.91 ops/sec ±0.90% (144 runs sampled)\n------------------------\nFastest is elliptic#sign\n========================\nBenchmarking: verify\nelliptic#verify x 113 ops/sec ±0.50% (166 runs sampled)\neccjs#verify x 48.56 ops/sec ±0.36% (125 runs sampled)\n------------------------\nFastest is elliptic#verify\n========================\nBenchmarking: gen\nelliptic#gen x 294 ops/sec ±0.43% (176 runs sampled)\neccjs#gen x 62.25 ops/sec ±0.63% (129 runs sampled)\n------------------------\nFastest is elliptic#gen\n========================\nBenchmarking: ecdh\nelliptic#ecdh x 136 ops/sec ±0.85% (156 runs sampled)\n------------------------\nFastest is elliptic#ecdh\n========================\n```\n\n## API\n\n### ECDSA\n\n```javascript\nvar EC = require('elliptic').ec;\n\n// Create and initialize EC context\n// (better do it once and reuse it)\nvar ec = new EC('secp256k1');\n\n// Generate keys\nvar key = ec.genKeyPair();\n\n// Sign message (must be an array, or it'll be treated as a hex sequence)\nvar msg = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ];\nvar signature = key.sign(msg);\n\n// Export DER encoded signature in Array\nvar derSign = signature.toDER();\n\n// Verify signature\nconsole.log(key.verify(msg, derSign));\n```\n\n### ECDH\n\n```javascript\n// Generate keys\nvar key1 = ec.genKeyPair();\nvar key2 = ec.genKeyPair();\n\nvar shared1 = key1.derive(key2.getPublic());\nvar shared2 = key2.derive(key1.getPublic());\n\nconsole.log('Both shared secrets are BN instances');\nconsole.log(shared1.toString(16));\nconsole.log(shared2.toString(16));\n```\n\nNOTE: `.derive()` returns a [BN][1] instance.\n\n## Supported curves\n\nElliptic.js support following curve types:\n\n* Short Weierstrass\n* Montgomery\n* Edwards\n* Twisted Edwards\n\nFollowing curve 'presets' are embedded into the library:\n\n* `secp256k1`\n* `p192`\n* `p224`\n* `p256`\n* `curve25519`\n* `ed25519`\n\nNOTE: That `curve25519` could not be used for ECDSA, use `ed25519` instead.\n\n### Implementation details\n\nECDSA is using deterministic `k` value generation as per [RFC6979][0]. Most of\nthe curve operations are performed on non-affine coordinates (either projective\nor extended), various windowing techniques are used for different cases.\n\nAll operations are performed in reduction context using [bn.js][1], hashing is\nprovided by [hash.js][2]\n\n#### LICENSE\n\nThis software is licensed under the MIT License.\n\nCopyright Fedor Indutny, 2014.\n\nPermission is hereby granted, free of charge, to any person obtaining a\ncopy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to permit\npersons to whom the Software is furnished to do so, subject to the\nfollowing conditions:\n\nThe above copyright notice and this permission notice shall be included\nin all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\nOR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\nNO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\nDAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\nOTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\nUSE OR OTHER DEALINGS IN THE SOFTWARE.\n\n[0]: http://tools.ietf.org/html/rfc6979\n[1]: https://github.com/indutny/bn.js\n[2]: https://github.com/indutny/hash.js\n",readmeFilename:"README.md",_id:"elliptic@1.0.1",dist:{shasum:"a29ec2dab62f611b1fa2a3ab8950f9101bc51bda"},_from:"elliptic@^1.0.0",_resolved:"https://registry.npmjs.org/elliptic/-/elliptic-1.0.1.tgz"}},{}],204:[function(require,module,exports){(function(Buffer){module.exports=function evp(crypto,password,salt,keyLen){keyLen=keyLen/8;var ki=0;var ii=0;var key=new Buffer(keyLen);var addmd=0;var md,md_buf;var i;while(true){md=crypto.createHash("md5");if(addmd++>0){md.update(md_buf)}md.update(password);md.update(salt);md_buf=md.digest();i=0;if(keyLen>0){while(true){if(keyLen===0){break}if(i===md_buf.length){break}key[ki++]=md_buf[i++];keyLen--}}if(keyLen===0){break}}for(i=0;i<md_buf.length;i++){md_buf[i]=0}return key}}).call(this,require("buffer").Buffer)},{buffer:350}],205:[function(require,module,exports){module.exports={"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}},{}],206:[function(require,module,exports){var asn1=require("asn1.js");var rfc3280=require("asn1.js-rfc3280");var RSAPrivateKey=asn1.define("RSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())});exports.RSAPrivateKey=RSAPrivateKey;var RSAPublicKey=asn1.define("RSAPublicKey",function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())});exports.RSAPublicKey=RSAPublicKey;var PublicKey=rfc3280.SubjectPublicKeyInfo;exports.PublicKey=PublicKey;var ECPublicKey=asn1.define("ECPublicKey",function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("curve").objid()),this.key("subjectPrivateKey").bitstr())});exports.ECPublicKey=ECPublicKey;var ECPrivateWrap=asn1.define("ECPrivateWrap",function(){this.seq().obj(this.key("version").int(),this.key("algorithm").seq().obj(this.key("id").objid(),this.key("curve").objid()),this.key("subjectPrivateKey").octstr())});exports.ECPrivateWrap=ECPrivateWrap;var PrivateKeyInfo=asn1.define("PrivateKeyInfo",function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(rfc3280.AlgorithmIdentifier),this.key("subjectPrivateKey").octstr())});exports.PrivateKey=PrivateKeyInfo;var EncryptedPrivateKeyInfo=asn1.define("EncryptedPrivateKeyInfo",function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(),this.key("kdeparams").seq().obj(this.key("salt").octstr(),this.key("iters").int())),this.key("cipher").seq().obj(this.key("algo").objid(),this.key("iv").octstr()))),this.key("subjectPrivateKey").octstr())});var dsaParams=asn1.define("dsaParams",function(){this.seq().obj(this.key("algorithm").objid(),this.key("parameters").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()))});exports.EncryptedPrivateKey=EncryptedPrivateKeyInfo;var DSAPublicKey=asn1.define("DSAPublicKey",function(){this.seq().obj(this.key("algorithm").use(dsaParams),this.key("subjectPublicKey").bitstr())});exports.DSAPublicKey=DSAPublicKey;var DSAPrivateWrap=asn1.define("DSAPrivateWrap",function(){this.seq().obj(this.key("version").int(),this.key("algorithm").seq().obj(this.key("id").objid(),this.key("parameters").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int())),this.key("subjectPrivateKey").octstr())});exports.DSAPrivateWrap=DSAPrivateWrap;var DSAPrivateKey=asn1.define("DSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("p").int(),this.key("q").int(),this.key("g").int(),this.key("pub_key").int(),this.key("priv_key").int())});exports.DSAPrivateKey=DSAPrivateKey;exports.DSAparam=asn1.define("DSAparam",function(){this.int()});var ECPrivateKey=asn1.define("ECPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(ECParameters),this.key("publicKey").optional().explicit(1).bitstr())});exports.ECPrivateKey=ECPrivateKey;var ECParameters=asn1.define("ECParameters",function(){this.choice({namedCurve:this.objid()})});var ECPrivateKey2=asn1.define("ECPrivateKey2",function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("publicKey").seq().obj(this.key("key").bitstr()))});exports.ECPrivateKey2=ECPrivateKey2;exports.signature=asn1.define("signature",function(){this.seq().obj(this.key("r").int(),this.key("s").int())})},{"asn1.js":210,"asn1.js-rfc3280":209}],207:[function(require,module,exports){(function(Buffer){var findProc=/Proc-Type: 4,ENCRYPTED\n\r?DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)\n\r?\n\r?([0-9A-z\n\r\+\/\=]+)\n\r?/m;var startRegex=/^-----BEGIN (.*)-----\n/;var evp=require("./EVP_BytesToKey");module.exports=function(okey,password,crypto){var key=okey.toString();var match=key.match(findProc);if(!match){return okey}var suite="aes"+match[1];var iv=new Buffer(match[2],"hex");var cipherText=new Buffer(match[3].replace(/\n\r?/g,""),"base64");var cipherKey=evp(crypto,password,iv.slice(0,8),parseInt(match[1]));var out=[];var cipher=crypto.createDecipheriv(suite,cipherKey,iv);out.push(cipher.update(cipherText));out.push(cipher.final());var decrypted=Buffer.concat(out).toString("base64");var tag=key.match(startRegex)[1];return"-----BEGIN "+tag+"-----\n"+wrap(decrypted)+"\n"+"-----END "+tag+"-----\n"};function wrap(str){var chunks=[];while(str){if(str.length<64){chunks.push(str);break}else{chunks.push(str.slice(0,64));str=str.slice(64)}}return chunks.join("\n")}}).call(this,require("buffer").Buffer)},{"./EVP_BytesToKey":204,buffer:350}],208:[function(require,module,exports){(function(Buffer){var pemstrip=require("pemstrip");var asn1=require("./asn1");var aesid=require("./aesid.json");var fixProc=require("./fixProc");module.exports=parseKeys;function parseKeys(buffer,crypto){var password;if(typeof buffer==="object"&&!Buffer.isBuffer(buffer)){password=buffer.passphrase;buffer=buffer.key}if(typeof buffer==="string"){buffer=new Buffer(buffer)}if(password){buffer=fixProc(buffer,password,crypto)}var stripped=pemstrip.strip(buffer);var type=stripped.tag;var data=new Buffer(stripped.base64,"base64");var subtype,ndata;switch(type){case"PUBLIC KEY":ndata=asn1.PublicKey.decode(data,"der");subtype=ndata.algorithm.algorithm.join(".");switch(subtype){case"1.2.840.113549.1.1.1":return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":return{type:"ec",data:asn1.ECPublicKey.decode(data,"der")};case"1.2.840.10040.4.1":ndata=asn1.DSAPublicKey.decode(data,"der");ndata.algorithm.parameters.pub_key=asn1.DSAparam.decode(ndata.subjectPublicKey.data,"der");return{type:"dsa",data:ndata.algorithm.parameters};default:throw new Error("unknown key id "+subtype)}throw new Error("unknown key type "+type);case"ENCRYPTED PRIVATE KEY":data=asn1.EncryptedPrivateKey.decode(data,"der");data=decrypt(crypto,data,password);case"PRIVATE KEY":ndata=asn1.PrivateKey.decode(data,"der");subtype=ndata.algorithm.algorithm.join(".");switch(subtype){case"1.2.840.113549.1.1.1":return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey,"der");case"1.2.840.10045.2.1":ndata=asn1.ECPrivateWrap.decode(data,"der");return{curve:ndata.algorithm.curve,privateKey:asn1.ECPrivateKey.decode(ndata.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":ndata=asn1.DSAPrivateWrap.decode(data,"der");ndata.algorithm.parameters.priv_key=asn1.DSAparam.decode(ndata.subjectPrivateKey,"der");return{type:"dsa",params:ndata.algorithm.parameters};default:throw new Error("unknown key id "+subtype)}throw new Error("unknown key type "+type);case"RSA PUBLIC KEY":return asn1.RSAPublicKey.decode(data,"der");case"RSA PRIVATE KEY":return asn1.RSAPrivateKey.decode(data,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:asn1.DSAPrivateKey.decode(data,"der")};case"EC PRIVATE KEY":data=asn1.ECPrivateKey.decode(data,"der");return{curve:data.parameters.value,privateKey:data.privateKey};default:throw new Error("unknown key type "+type)}}parseKeys.signature=asn1.signature;function decrypt(crypto,data,password){var salt=data.algorithm.decrypt.kde.kdeparams.salt;var iters=data.algorithm.decrypt.kde.kdeparams.iters;var algo=aesid[data.algorithm.decrypt.cipher.algo.join(".")];var iv=data.algorithm.decrypt.cipher.iv;var cipherText=data.subjectPrivateKey;var keylen=parseInt(algo.split("-")[1],10)/8;var key=crypto.pbkdf2Sync(password,salt,iters,keylen);var cipher=crypto.createDecipheriv(algo,key,iv);var out=[];out.push(cipher.update(cipherText));out.push(cipher.final());return Buffer.concat(out)}}).call(this,require("buffer").Buffer)},{"./aesid.json":205,"./asn1":206,"./fixProc":207,buffer:350,pemstrip:223}],209:[function(require,module,exports){try{var asn1=require("asn1.js")}catch(e){var asn1=require("../"+"..")}var CRLReason=asn1.define("CRLReason",function(){this.enum({0:"unspecified",1:"keyCompromise",2:"CACompromise",3:"affiliationChanged",4:"superseded",5:"cessationOfOperation",6:"certificateHold",8:"removeFromCRL",9:"privilegeWithdrawn",10:"AACompromise"})});exports.CRLReason=CRLReason;var AlgorithmIdentifier=asn1.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("parameters").optional().any())});exports.AlgorithmIdentifier=AlgorithmIdentifier;var Certificate=asn1.define("Certificate",function(){this.seq().obj(this.key("tbsCertificate").use(TBSCertificate),this.key("signatureAlgorithm").use(AlgorithmIdentifier),this.key("signature").bitstr())});exports.Certificate=Certificate;var TBSCertificate=asn1.define("TBSCertificate",function(){this.seq().obj(this.key("version").def("v1").explicit(0).use(Version),this.key("serialNumber").use(CertificateSerialNumber),this.key("signature").use(AlgorithmIdentifier),this.key("issuer").use(Name),this.key("validity").use(Validity),this.key("subject").use(Name),this.key("subjectPublicKeyInfo").use(SubjectPublicKeyInfo),this.key("issuerUniqueID").optional().explicit(1).use(UniqueIdentifier),this.key("subjectUniqueID").optional().explicit(2).use(UniqueIdentifier),this.key("extensions").optional().explicit(3).use(Extensions))});exports.TBSCertificate=TBSCertificate;var Version=asn1.define("Version",function(){this.int({0:"v1",1:"v2",2:"v3"})});exports.Version=Version;var CertificateSerialNumber=asn1.define("CertificateSerialNumber",function(){this.int()});exports.CertificateSerialNumber=CertificateSerialNumber;var Validity=asn1.define("Validity",function(){this.seq().obj(this.key("notBefore").use(Time),this.key("notAfter").use(Time))});exports.Validity=Validity;var Time=asn1.define("Time",function(){this.choice({utcTime:this.utctime(),genTime:this.gentime()})});exports.Time=Time;var UniqueIdentifier=asn1.define("UniqueIdentifier",function(){this.bitstr()});exports.UniqueIdentifier=UniqueIdentifier;var SubjectPublicKeyInfo=asn1.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(AlgorithmIdentifier),this.key("subjectPublicKey").bitstr())});exports.SubjectPublicKeyInfo=SubjectPublicKeyInfo;var Extensions=asn1.define("Extensions",function(){this.seqof(Extension)});exports.Extensions=Extensions;var Extension=asn1.define("Extension",function(){this.seq().obj(this.key("extnID").objid(),this.key("critical").bool().def(false),this.key("extnValue").octstr())});exports.Extension=Extension;var Name=asn1.define("Name",function(){this.choice({rdn:this.use(RDNSequence)})});exports.Name=Name;var RDNSequence=asn1.define("RDNSequence",function(){this.seqof(RelativeDistinguishedName)});exports.RDNSequence=RDNSequence;var RelativeDistinguishedName=asn1.define("RelativeDistinguishedName",function(){this.setof(AttributeTypeAndValue)});exports.RelativeDistinguishedName=RelativeDistinguishedName;var AttributeTypeAndValue=asn1.define("AttributeTypeAndValue",function(){this.seq().obj(this.key("type").use(AttributeType),this.key("value").use(AttributeValue))});exports.AttributeTypeAndValue=AttributeTypeAndValue;var AttributeType=asn1.define("AttributeType",function(){this.objid()});exports.AttributeType=AttributeType;var AttributeValue=asn1.define("AttributeValue",function(){this.any()});exports.AttributeValue=AttributeValue},{"asn1.js":210}],210:[function(require,module,exports){var asn1=exports;asn1.bignum=require("bn.js");asn1.define=require("./asn1/api").define;asn1.base=require("./asn1/base");asn1.constants=require("./asn1/constants");asn1.decoders=require("./asn1/decoders");asn1.encoders=require("./asn1/encoders")},{"./asn1/api":211,"./asn1/base":213,"./asn1/constants":217,"./asn1/decoders":219,"./asn1/encoders":221,"bn.js":182}],211:[function(require,module,exports){var asn1=require("../asn1");var inherits=require("inherits");var vm=require("vm");var api=exports;api.define=function define(name,body){return new Entity(name,body)};function Entity(name,body){this.name=name;this.body=body;this.decoders={};this.encoders={}}Entity.prototype._createNamed=function createNamed(base){var named=vm.runInThisContext("(function "+this.name+"(entity) {\n"+" this._initNamed(entity);\n"+"})");inherits(named,base);named.prototype._initNamed=function initnamed(entity){base.call(this,entity)};return new named(this)};Entity.prototype._getDecoder=function _getDecoder(enc){if(!this.decoders.hasOwnProperty(enc))this.decoders[enc]=this._createNamed(asn1.decoders[enc]);return this.decoders[enc]};Entity.prototype.decode=function decode(data,enc,options){return this._getDecoder(enc).decode(data,options)};Entity.prototype._getEncoder=function _getEncoder(enc){if(!this.encoders.hasOwnProperty(enc))this.encoders[enc]=this._createNamed(asn1.encoders[enc]);return this.encoders[enc]};Entity.prototype.encode=function encode(data,enc,reporter){return this._getEncoder(enc).encode(data,reporter)}},{"../asn1":210,inherits:268,vm:373}],212:[function(require,module,exports){var inherits=require("inherits");var Reporter=require("../base").Reporter;var Buffer=require("buffer").Buffer;function DecoderBuffer(base,options){Reporter.call(this,options);if(!Buffer.isBuffer(base)){this.error("Input not Buffer");return}this.base=base;this.offset=0;this.length=base.length}inherits(DecoderBuffer,Reporter);exports.DecoderBuffer=DecoderBuffer;DecoderBuffer.prototype.save=function save(){return{offset:this.offset}};DecoderBuffer.prototype.restore=function restore(save){var res=new DecoderBuffer(this.base);res.offset=save.offset;res.length=this.offset;this.offset=save.offset;return res};DecoderBuffer.prototype.isEmpty=function isEmpty(){return this.offset===this.length};DecoderBuffer.prototype.readUInt8=function readUInt8(fail){if(this.offset+1<=this.length)return this.base.readUInt8(this.offset++,true);else return this.error(fail||"DecoderBuffer overrun")};DecoderBuffer.prototype.skip=function skip(bytes,fail){if(!(this.offset+bytes<=this.length))return this.error(fail||"DecoderBuffer overrun");var res=new DecoderBuffer(this.base);res._reporterState=this._reporterState;res.offset=this.offset;res.length=this.offset+bytes;this.offset+=bytes;return res};DecoderBuffer.prototype.raw=function raw(save){return this.base.slice(save?save.offset:this.offset,this.length)};function EncoderBuffer(value,reporter){if(Array.isArray(value)){this.length=0;this.value=value.map(function(item){if(!(item instanceof EncoderBuffer))item=new EncoderBuffer(item,reporter);this.length+=item.length;return item},this)}else if(typeof value==="number"){if(!(0<=value&&value<=255))return reporter.error("non-byte EncoderBuffer value");this.value=value;this.length=1}else if(typeof value==="string"){this.value=value;this.length=Buffer.byteLength(value)}else if(Buffer.isBuffer(value)){this.value=value;this.length=value.length}else{return reporter.error("Unsupported type: "+typeof value)}}exports.EncoderBuffer=EncoderBuffer;EncoderBuffer.prototype.join=function join(out,offset){if(!out)out=new Buffer(this.length);if(!offset)offset=0;if(this.length===0)return out;if(Array.isArray(this.value)){this.value.forEach(function(item){item.join(out,offset);offset+=item.length})}else{if(typeof this.value==="number")out[offset]=this.value;else if(typeof this.value==="string")out.write(this.value,offset);else if(Buffer.isBuffer(this.value))this.value.copy(out,offset);offset+=this.length}return out}},{"../base":213,buffer:350,inherits:268}],213:[function(require,module,exports){var base=exports;base.Reporter=require("./reporter").Reporter;base.DecoderBuffer=require("./buffer").DecoderBuffer;base.EncoderBuffer=require("./buffer").EncoderBuffer;base.Node=require("./node")},{"./buffer":212,"./node":214,"./reporter":215}],214:[function(require,module,exports){var Reporter=require("../base").Reporter;var EncoderBuffer=require("../base").EncoderBuffer;var assert=require("minimalistic-assert");var tags=["seq","seqof","set","setof","octstr","bitstr","objid","bool","gentime","utctime","null_","enum","int","ia5str"];var methods=["key","obj","use","optional","explicit","implicit","def","choice","any"].concat(tags);var overrided=["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"];function Node(enc,parent){var state={};this._baseState=state;state.enc=enc;state.parent=parent||null;state.children=null;state.tag=null;state.args=null;state.reverseArgs=null;state.choice=null;state.optional=false;state.any=false;state.obj=false;state.use=null;state.useDecoder=null;state.key=null;state["default"]=null;state.explicit=null;state.implicit=null;if(!state.parent){state.children=[];this._wrap()}}module.exports=Node;var stateProps=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit"];Node.prototype.clone=function clone(){var state=this._baseState;var cstate={};stateProps.forEach(function(prop){cstate[prop]=state[prop]});var res=new this.constructor(cstate.parent);res._baseState=cstate;return res};Node.prototype._wrap=function wrap(){var state=this._baseState;methods.forEach(function(method){this[method]=function _wrappedMethod(){var clone=new this.constructor(this);state.children.push(clone);return clone[method].apply(clone,arguments)}},this)};Node.prototype._init=function init(body){var state=this._baseState;assert(state.parent===null);body.call(this);state.children=state.children.filter(function(child){return child._baseState.parent===this},this);assert.equal(state.children.length,1,"Root node can have only one child")};Node.prototype._useArgs=function useArgs(args){var state=this._baseState;var children=args.filter(function(arg){return arg instanceof this.constructor},this);args=args.filter(function(arg){return!(arg instanceof this.constructor)},this);if(children.length!==0){assert(state.children===null);state.children=children;children.forEach(function(child){child._baseState.parent=this},this)}if(args.length!==0){assert(state.args===null);state.args=args;state.reverseArgs=args.map(function(arg){if(typeof arg!=="object"||arg.constructor!==Object)return arg;var res={};Object.keys(arg).forEach(function(key){if(key==(key|0))key|=0;var value=arg[key];res[value]=key});return res})}};overrided.forEach(function(method){Node.prototype[method]=function _overrided(){var state=this._baseState;throw new Error(method+" not implemented for encoding: "+state.enc)}});tags.forEach(function(tag){Node.prototype[tag]=function _tagMethod(){var state=this._baseState;var args=Array.prototype.slice.call(arguments);assert(state.tag===null);state.tag=tag;this._useArgs(args);return this}});Node.prototype.use=function use(item){var state=this._baseState;assert(state.use===null);state.use=item;return this};Node.prototype.optional=function optional(){var state=this._baseState;state.optional=true;return this};Node.prototype.def=function def(val){var state=this._baseState;assert(state["default"]===null);state["default"]=val;state.optional=true;return this};Node.prototype.explicit=function explicit(num){var state=this._baseState;assert(state.explicit===null&&state.implicit===null);state.explicit=num;return this};Node.prototype.implicit=function implicit(num){var state=this._baseState;assert(state.explicit===null&&state.implicit===null);state.implicit=num;return this};Node.prototype.obj=function obj(){var state=this._baseState;var args=Array.prototype.slice.call(arguments);state.obj=true;if(args.length!==0)this._useArgs(args);return this};Node.prototype.key=function key(key){var state=this._baseState;assert(state.key===null);state.key=key;return this};Node.prototype.any=function any(){var state=this._baseState;state.any=true;return this};Node.prototype.choice=function choice(obj){var state=this._baseState;assert(state.choice===null);state.choice=obj;this._useArgs(Object.keys(obj).map(function(key){return obj[key]}));return this};Node.prototype._decode=function decode(input){var state=this._baseState;if(state.parent===null)return input.wrapResult(state.children[0]._decode(input));var result=state["default"];var present=true;var prevKey;if(state.key!==null)prevKey=input.enterKey(state.key);if(state.optional){present=this._peekTag(input,state.explicit!==null?state.explicit:state.implicit!==null?state.implicit:state.tag||0);if(input.isError(present))return present}var prevObj;if(state.obj&&present)prevObj=input.enterObject();if(present){if(state.explicit!==null){var explicit=this._decodeTag(input,state.explicit);if(input.isError(explicit))return explicit;input=explicit}if(state.use===null&&state.choice===null){if(state.any)var save=input.save();var body=this._decodeTag(input,state.implicit!==null?state.implicit:state.tag,state.any);if(input.isError(body))return body;if(state.any)result=input.raw(save);else input=body}if(state.any)result=result;else if(state.choice===null)result=this._decodeGeneric(state.tag,input);else result=this._decodeChoice(input);if(input.isError(result))return result;if(!state.any&&state.choice===null&&state.children!==null){var fail=state.children.some(function decodeChildren(child){child._decode(input)});if(fail)return err}}if(state.obj&&present)result=input.leaveObject(prevObj);if(state.key!==null&&(result!==null||present===true))input.leaveKey(prevKey,state.key,result);return result};Node.prototype._decodeGeneric=function decodeGeneric(tag,input){var state=this._baseState;if(tag==="seq"||tag==="set")return null;if(tag==="seqof"||tag==="setof")return this._decodeList(input,tag,state.args[0]);else if(tag==="octstr"||tag==="bitstr"||tag==="ia5str")return this._decodeStr(input,tag);else if(tag==="objid"&&state.args)return this._decodeObjid(input,state.args[0],state.args[1]);else if(tag==="objid")return this._decodeObjid(input,null,null);else if(tag==="gentime"||tag==="utctime")return this._decodeTime(input,tag);else if(tag==="null_")return this._decodeNull(input);else if(tag==="bool")return this._decodeBool(input);else if(tag==="int"||tag==="enum")return this._decodeInt(input,state.args&&state.args[0]);else if(state.use!==null)return this._getUse(state.use,input._reporterState.obj)._decode(input);else return input.error("unknown tag: "+tag);return null};Node.prototype._getUse=function _getUse(entity,obj){var state=this._baseState;state.useDecoder=this._use(entity,obj);assert(state.useDecoder._baseState.parent===null);state.useDecoder=state.useDecoder._baseState.children[0];if(state.implicit!==state.useDecoder._baseState.implicit){state.useDecoder=state.useDecoder.clone();state.useDecoder._baseState.implicit=state.implicit}return state.useDecoder};Node.prototype._decodeChoice=function decodeChoice(input){var state=this._baseState;var result=null;var match=false;Object.keys(state.choice).some(function(key){var save=input.save();var node=state.choice[key];try{var value=node._decode(input);if(input.isError(value))return false;result={type:key,value:value};match=true}catch(e){input.restore(save);return false}return true},this);if(!match)return input.error("Choice not matched");return result};Node.prototype._createEncoderBuffer=function createEncoderBuffer(data){return new EncoderBuffer(data,this.reporter)};Node.prototype._encode=function encode(data,reporter,parent){var state=this._baseState;if(state["default"]!==null&&state["default"]===data)return;var result=this._encodeValue(data,reporter,parent);if(result===undefined)return;if(this._skipDefault(result,reporter,parent))return;return result};Node.prototype._encodeValue=function encode(data,reporter,parent){var state=this._baseState;if(state.parent===null)return state.children[0]._encode(data,reporter||new Reporter);var result=null;var present=true;this.reporter=reporter;if(state.optional&&data===undefined){if(state["default"]!==null)data=state["default"];else return}var prevKey;var content=null;var primitive=false;if(state.any){result=this._createEncoderBuffer(data)}else if(state.choice){result=this._encodeChoice(data,reporter)}else if(state.children){content=state.children.map(function(child){if(child._baseState.tag==="null_")return child._encode(null,reporter,data);if(child._baseState.key===null)return reporter.error("Child should have a key");var prevKey=reporter.enterKey(child._baseState.key);if(typeof data!=="object")return reporter.error("Child expected, but input is not object");var res=child._encode(data[child._baseState.key],reporter,data);reporter.leaveKey(prevKey);return res},this).filter(function(child){return child});content=this._createEncoderBuffer(content)}else{if(state.tag==="seqof"||state.tag==="setof"){if(!(state.args&&state.args.length===1))return reporter.error("Too many args for : "+state.tag);if(!Array.isArray(data))return reporter.error("seqof/setof, but data is not Array");var child=this.clone();child._baseState.implicit=null;content=this._createEncoderBuffer(data.map(function(item){var state=this._baseState;return this._getUse(state.args[0],data)._encode(item,reporter)},child))}else if(state.use!==null){result=this._getUse(state.use,parent)._encode(data,reporter)}else{content=this._encodePrimitive(state.tag,data);primitive=true}}var result;if(!state.any&&state.choice===null){var tag=state.implicit!==null?state.implicit:state.tag;var cls=state.implicit===null?"universal":"context";
if(tag===null){if(state.use===null)reporter.error("Tag could be ommited only for .use()")}else{if(state.use===null)result=this._encodeComposite(tag,primitive,cls,content)}}if(state.explicit!==null)result=this._encodeComposite(state.explicit,false,"context",result);return result};Node.prototype._encodeChoice=function encodeChoice(data,reporter){var state=this._baseState;var node=state.choice[data.type];if(!node){assert(false,data.type+" not found in "+JSON.stringify(Object.keys(state.choice)))}return node._encode(data.value,reporter)};Node.prototype._encodePrimitive=function encodePrimitive(tag,data){var state=this._baseState;if(tag==="octstr"||tag==="bitstr"||tag==="ia5str")return this._encodeStr(data,tag);else if(tag==="objid"&&state.args)return this._encodeObjid(data,state.reverseArgs[0],state.args[1]);else if(tag==="objid")return this._encodeObjid(data,null,null);else if(tag==="gentime"||tag==="utctime")return this._encodeTime(data,tag);else if(tag==="null_")return this._encodeNull();else if(tag==="int"||tag==="enum")return this._encodeInt(data,state.args&&state.reverseArgs[0]);else if(tag==="bool")return this._encodeBool(data);else throw new Error("Unsupported tag: "+tag)}},{"../base":213,"minimalistic-assert":222}],215:[function(require,module,exports){var inherits=require("inherits");function Reporter(options){this._reporterState={obj:null,path:[],options:options||{},errors:[]}}exports.Reporter=Reporter;Reporter.prototype.isError=function isError(obj){return obj instanceof ReporterError};Reporter.prototype.enterKey=function enterKey(key){return this._reporterState.path.push(key)};Reporter.prototype.leaveKey=function leaveKey(index,key,value){var state=this._reporterState;state.path=state.path.slice(0,index-1);if(state.obj!==null)state.obj[key]=value};Reporter.prototype.enterObject=function enterObject(){var state=this._reporterState;var prev=state.obj;state.obj={};return prev};Reporter.prototype.leaveObject=function leaveObject(prev){var state=this._reporterState;var now=state.obj;state.obj=prev;return now};Reporter.prototype.error=function error(msg){var err;var state=this._reporterState;var inherited=msg instanceof ReporterError;if(inherited){err=msg}else{err=new ReporterError(state.path.map(function(elem){return"["+JSON.stringify(elem)+"]"}).join(""),msg.message||msg,msg.stack)}if(!state.options.partial)throw err;if(!inherited)state.errors.push(err);return err};Reporter.prototype.wrapResult=function wrapResult(result){var state=this._reporterState;if(!state.options.partial)return result;return{result:this.isError(result)?null:result,errors:state.errors}};function ReporterError(path,msg){this.path=path;this.rethrow(msg)}inherits(ReporterError,Error);ReporterError.prototype.rethrow=function rethrow(msg){this.message=msg+" at: "+(this.path||"(shallow)");Error.captureStackTrace(this,ReporterError);return this}},{inherits:268}],216:[function(require,module,exports){var constants=require("../constants");exports.tagClass={0:"universal",1:"application",2:"context",3:"private"};exports.tagClassByName=constants._reverse(exports.tagClass);exports.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"};exports.tagByName=constants._reverse(exports.tag)},{"../constants":217}],217:[function(require,module,exports){var constants=exports;constants._reverse=function reverse(map){var res={};Object.keys(map).forEach(function(key){if((key|0)==key)key=key|0;var value=map[key];res[value]=key});return res};constants.der=require("./der")},{"./der":216}],218:[function(require,module,exports){var inherits=require("inherits");var asn1=require("../../asn1");var base=asn1.base;var bignum=asn1.bignum;var der=asn1.constants.der;function DERDecoder(entity){this.enc="der";this.name=entity.name;this.entity=entity;this.tree=new DERNode;this.tree._init(entity.body)}module.exports=DERDecoder;DERDecoder.prototype.decode=function decode(data,options){if(!(data instanceof base.DecoderBuffer))data=new base.DecoderBuffer(data,options);return this.tree._decode(data,options)};function DERNode(parent){base.Node.call(this,"der",parent)}inherits(DERNode,base.Node);DERNode.prototype._peekTag=function peekTag(buffer,tag){if(buffer.isEmpty())return false;var state=buffer.save();var decodedTag=derDecodeTag(buffer,'Failed to peek tag: "'+tag+'"');if(buffer.isError(decodedTag))return decodedTag;buffer.restore(state);return decodedTag.tag===tag||decodedTag.tagStr===tag};DERNode.prototype._decodeTag=function decodeTag(buffer,tag,any){var decodedTag=derDecodeTag(buffer,'Failed to decode tag of "'+tag+'"');if(buffer.isError(decodedTag))return decodedTag;var len=derDecodeLen(buffer,decodedTag.primitive,'Failed to get length of "'+tag+'"');if(buffer.isError(len))return len;if(!any&&decodedTag.tag!==tag&&decodedTag.tagStr!==tag&&decodedTag.tagStr+"of"!==tag){return buffer.error('Failed to match tag: "'+tag+'"')}if(decodedTag.primitive||len!==null)return buffer.skip(len,'Failed to match body of: "'+tag+'"');var state=buffer.start();var res=this._skipUntilEnd(buffer,'Failed to skip indefinite length body: "'+this.tag+'"');if(buffer.isError(res))return res;return buffer.cut(state)};DERNode.prototype._skipUntilEnd=function skipUntilEnd(buffer,fail){while(true){var tag=derDecodeTag(buffer,fail);if(buffer.isError(tag))return tag;var len=derDecodeLen(buffer,tag.primitive,fail);if(buffer.isError(len))return len;var res;if(tag.primitive||len!==null)res=buffer.skip(len);else res=this._skipUntilEnd(buffer,fail);if(buffer.isError(res))return res;if(tag.tagStr==="end")break}};DERNode.prototype._decodeList=function decodeList(buffer,tag,decoder){var result=[];while(!buffer.isEmpty()){var possibleEnd=this._peekTag(buffer,"end");if(buffer.isError(possibleEnd))return possibleEnd;var res=decoder.decode(buffer,"der");if(buffer.isError(res)&&possibleEnd)break;result.push(res)}return result};DERNode.prototype._decodeStr=function decodeStr(buffer,tag){if(tag==="octstr"){return buffer.raw()}else if(tag==="bitstr"){var unused=buffer.readUInt8();if(buffer.isError(unused))return unused;return{unused:unused,data:buffer.raw()}}else if(tag==="ia5str"){return buffer.raw().toString()}else{return this.error("Decoding of string type: "+tag+" unsupported")}};DERNode.prototype._decodeObjid=function decodeObjid(buffer,values,relative){var identifiers=[];var ident=0;while(!buffer.isEmpty()){var subident=buffer.readUInt8();ident<<=7;ident|=subident&127;if((subident&128)===0){identifiers.push(ident);ident=0}}if(subident&128)identifiers.push(ident);var first=identifiers[0]/40|0;var second=identifiers[0]%40;if(relative)result=identifiers;else result=[first,second].concat(identifiers.slice(1));if(values)result=values[result.join(" ")];return result};DERNode.prototype._decodeTime=function decodeTime(buffer,tag){var str=buffer.raw().toString();if(tag==="gentime"){var year=str.slice(0,4)|0;var mon=str.slice(4,6)|0;var day=str.slice(6,8)|0;var hour=str.slice(8,10)|0;var min=str.slice(10,12)|0;var sec=str.slice(12,14)|0}else if(tag==="utctime"){var year=str.slice(0,2)|0;var mon=str.slice(2,4)|0;var day=str.slice(4,6)|0;var hour=str.slice(6,8)|0;var min=str.slice(8,10)|0;var sec=str.slice(10,12)|0;if(year<70)year=2e3+year;else year=1900+year}else{return this.error("Decoding "+tag+" time is not supported yet")}return Date.UTC(year,mon-1,day,hour,min,sec,0)};DERNode.prototype._decodeNull=function decodeNull(buffer){return null};DERNode.prototype._decodeBool=function decodeBool(buffer){var res=buffer.readUInt8();if(buffer.isError(res))return res;else return res!==0};DERNode.prototype._decodeInt=function decodeInt(buffer,values){var res=0;var raw=buffer.raw();if(raw.length>3)return new bignum(raw);while(!buffer.isEmpty()){res<<=8;var i=buffer.readUInt8();if(buffer.isError(i))return i;res|=i}if(values)res=values[res]||res;return res};DERNode.prototype._use=function use(entity,obj){if(typeof entity==="function")entity=entity(obj);return entity._getDecoder("der").tree};function derDecodeTag(buf,fail){var tag=buf.readUInt8(fail);if(buf.isError(tag))return tag;var cls=der.tagClass[tag>>6];var primitive=(tag&32)===0;if((tag&31)===31){var oct=tag;tag=0;while((oct&128)===128){oct=buf.readUInt8(fail);if(buf.isError(oct))return oct;tag<<=7;tag|=oct&127}}else{tag&=31}var tagStr=der.tag[tag];return{cls:cls,primitive:primitive,tag:tag,tagStr:tagStr}}function derDecodeLen(buf,primitive,fail){var len=buf.readUInt8(fail);if(buf.isError(len))return len;if(!primitive&&len===128)return null;if((len&128)===0){return len}var num=len&127;if(num>=4)return buf.error("length octect is too long");len=0;for(var i=0;i<num;i++){len<<=8;var j=buf.readUInt8(fail);if(buf.isError(j))return j;len|=j}return len}},{"../../asn1":210,inherits:268}],219:[function(require,module,exports){var decoders=exports;decoders.der=require("./der")},{"./der":218}],220:[function(require,module,exports){var inherits=require("inherits");var Buffer=require("buffer").Buffer;var asn1=require("../../asn1");var base=asn1.base;var bignum=asn1.bignum;var der=asn1.constants.der;function DEREncoder(entity){this.enc="der";this.name=entity.name;this.entity=entity;this.tree=new DERNode;this.tree._init(entity.body)}module.exports=DEREncoder;DEREncoder.prototype.encode=function encode(data,reporter){return this.tree._encode(data,reporter).join()};function DERNode(parent){base.Node.call(this,"der",parent)}inherits(DERNode,base.Node);DERNode.prototype._encodeComposite=function encodeComposite(tag,primitive,cls,content){var encodedTag=encodeTag(tag,primitive,cls,this.reporter);if(content.length<128){var header=new Buffer(2);header[0]=encodedTag;header[1]=content.length;return this._createEncoderBuffer([header,content])}var lenOctets=1;for(var i=content.length;i>=256;i>>=8)lenOctets++;var header=new Buffer(1+1+lenOctets);header[0]=encodedTag;header[1]=128|lenOctets;for(var i=1+lenOctets,j=content.length;j>0;i--,j>>=8)header[i]=j&255;return this._createEncoderBuffer([header,content])};DERNode.prototype._encodeStr=function encodeStr(str,tag){if(tag==="octstr")return this._createEncoderBuffer(str);else if(tag==="bitstr")return this._createEncoderBuffer([str.unused|0,str.data]);else if(tag==="ia5str")return this._createEncoderBuffer(str);return this.reporter.error("Encoding of string type: "+tag+" unsupported")};DERNode.prototype._encodeObjid=function encodeObjid(id,values,relative){if(typeof id==="string"){if(!values)return this.reporter.error("string objid given, but no values map found");if(!values.hasOwnProperty(id))return this.reporter.error("objid not found in values map");id=values[id].split(/\s+/g);for(var i=0;i<id.length;i++)id[i]|=0}else if(Array.isArray(id)){id=id.slice()}if(!Array.isArray(id)){return this.reporter.error("objid() should be either array or string, "+"got: "+JSON.stringify(id))}if(!relative){if(id[1]>=40)return this.reporter.error("Second objid identifier OOB");id.splice(0,2,id[0]*40+id[1])}var size=0;for(var i=0;i<id.length;i++){var ident=id[i];for(size++;ident>=128;ident>>=7)size++}var objid=new Buffer(size);var offset=objid.length-1;for(var i=id.length-1;i>=0;i--){var ident=id[i];objid[offset--]=ident&127;while((ident>>=7)>0)objid[offset--]=128|ident&127}return this._createEncoderBuffer(objid)};function two(num){if(num<=10)return"0"+num;else return num}DERNode.prototype._encodeTime=function encodeTime(time,tag){var str;var date=new Date(time);if(tag==="gentime"){str=[date.getFullYear(),two(date.getUTCMonth()+1),two(date.getUTCDate()),two(date.getUTCHours()),two(date.getUTCMinutes()),two(date.getUTCSeconds()),"Z"].join("")}else if(tag==="utctime"){str=[date.getFullYear()%100,two(date.getUTCMonth()+1),two(date.getUTCDate()),two(date.getUTCHours()),two(date.getUTCMinutes()),two(date.getUTCSeconds()),"Z"].join("")}else{this.reporter.error("Encoding "+tag+" time is not supported yet")}return this._encodeStr(str,"octstr")};DERNode.prototype._encodeNull=function encodeNull(){return this._createEncoderBuffer("")};DERNode.prototype._encodeInt=function encodeInt(num,values){if(typeof num==="string"){if(!values)return this.reporter.error("String int or enum given, but no values map");if(!values.hasOwnProperty(num)){return this.reporter.error("Values map doesn't contain: "+JSON.stringify(num))}num=values[num]}if(bignum!==null&&num instanceof bignum){var numArray=num.toArray();if(num.sign===false&&numArray[0]&128){numArray.unshift(0)}num=new Buffer(numArray)}if(Buffer.isBuffer(num)){var size=num.length;if(num.length===0)size++;var out=new Buffer(size);num.copy(out);if(num.length===0)out[0]=0;return this._createEncoderBuffer(out)}if(num<128)return this._createEncoderBuffer(num);if(num<256)return this._createEncoderBuffer([0,num]);var size=1;for(var i=num;i>=256;i>>=8)size++;var out=new Array(size);for(var i=out.length-1;i>=0;i--){out[i]=num&255;num>>=8}if(out[0]&128){out.unshift(0)}return this._createEncoderBuffer(new Buffer(out))};DERNode.prototype._encodeBool=function encodeBool(value){return this._createEncoderBuffer(value?255:0)};DERNode.prototype._use=function use(entity,obj){if(typeof entity==="function")entity=entity(obj);return entity._getEncoder("der").tree};DERNode.prototype._skipDefault=function skipDefault(dataBuffer,reporter,parent){var state=this._baseState;var i;if(state["default"]===null)return false;var data=dataBuffer.join();if(state.defaultBuffer===undefined)state.defaultBuffer=this._encodeValue(state["default"],reporter,parent).join();if(data.length!==state.defaultBuffer.length)return false;for(i=0;i<data.length;i++)if(data[i]!==state.defaultBuffer[i])return false;return true};function encodeTag(tag,primitive,cls,reporter){var res;if(tag==="seqof")tag="seq";else if(tag==="setof")tag="set";if(der.tagByName.hasOwnProperty(tag))res=der.tagByName[tag];else if(typeof tag==="number"&&(tag|0)===tag)res=tag;else return reporter.error("Unknown tag: "+tag);if(res>=31)return reporter.error("Multi-octet tag encoding unsupported");if(!primitive)res|=32;res|=der.tagClassByName[cls||"universal"]<<6;return res}},{"../../asn1":210,buffer:350,inherits:268}],221:[function(require,module,exports){var encoders=exports;encoders.der=require("./der")},{"./der":220}],222:[function(require,module,exports){module.exports=assert;function assert(val,msg){if(!val)throw new Error(msg||"Assertion failed")}assert.equal=function assertEqual(l,r,msg){if(l!=r)throw new Error(msg||"Assertion failed: "+l+" != "+r)}},{}],223:[function(require,module,exports){exports.strip=function strip(artifact){artifact=artifact.toString();var startRegex=/^-----BEGIN (.*)-----\n/;var match=startRegex.exec(artifact);var tag=match[1];var endRegex=new RegExp("\n-----END "+tag+"-----(\n*)$");var base64=artifact.slice(match[0].length).replace(endRegex,"").replace(/\n/g,"");return{tag:tag,base64:base64}};var wrap=function wrap(str,l){var chunks=[];while(str){if(str.length<l){chunks.push(str);break}else{chunks.push(str.substr(0,l));str=str.substr(l)}}return chunks.join("\n")};exports.assemble=function assemble(info){var tag=info.tag;var base64=info.base64;var startLine="-----BEGIN "+tag+"-----";var endLine="-----END "+tag+"-----";return startLine+"\n"+wrap(base64,64)+"\n"+endLine+"\n"}},{}],224:[function(require,module,exports){(function(Buffer){var parseKeys=require("parse-asn1");var bn=require("bn.js");var elliptic=require("elliptic");var crt=require("browserify-rsa");module.exports=sign;function sign(hash,key,hashType,crypto){var priv=parseKeys(key,crypto);if(priv.curve){return ecSign(hash,priv,crypto)}else if(priv.type==="dsa"){return dsaSign(hash,priv,hashType,crypto)}var len=priv.modulus.byteLength();var pad=[0,1];while(hash.length+pad.length+1<len){pad.push(255)}pad.push(0);var i=-1;while(++i<hash.length){pad.push(hash[i])}var out=crt(pad,priv,crypto);return out}function ecSign(hash,priv,crypto){elliptic.rand=crypto.randomBytes;var curve;if(priv.curve.join(".")==="1.3.132.0.10"){curve=new elliptic.ec("secp256k1")}var key=curve.genKeyPair();key._importPrivate(priv.privateKey);var out=key.sign(hash);return new Buffer(out.toDER())}function dsaSign(hash,priv,algo,crypto){var x=priv.params.priv_key;var p=priv.params.p;var q=priv.params.q;var montq=bn.mont(q);var g=priv.params.g;var r=new bn(0);var k;var H=bits2int(hash,q).mod(q);var s=false;var kv=getKay(x,q,hash,algo,crypto);while(s===false){k=makeKey(q,kv,algo,crypto);r=makeR(g,k,p,q);s=k.invm(q).imul(H.add(x.mul(r))).mod(q);if(!s.cmpn(0)){s=false;r=new bn(0)}}return toDER(r,s)}function toDER(r,s){r=r.toArray();s=s.toArray();if(r[0]&128)r=[0].concat(r);if(s[0]&128)s=[0].concat(s);var total=r.length+s.length+4;var res=[48,total,2,r.length];res=res.concat(r,[2,s.length],s);return new Buffer(res)}module.exports.getKay=getKay;function getKay(x,q,hash,algo,crypto){x=new Buffer(x.toArray());if(x.length<q.byteLength()){var zeros=new Buffer(q.byteLength()-x.length);zeros.fill(0);x=Buffer.concat([zeros,x])}var hlen=hash.length;var hbits=bits2octets(hash,q);var v=new Buffer(hlen);v.fill(1);var k=new Buffer(hlen);k.fill(0);k=crypto.createHmac(algo,k).update(v).update(new Buffer([0])).update(x).update(hbits).digest();v=crypto.createHmac(algo,k).update(v).digest();k=crypto.createHmac(algo,k).update(v).update(new Buffer([1])).update(x).update(hbits).digest();v=crypto.createHmac(algo,k).update(v).digest();return{k:k,v:v}}function bits2int(obits,q){bits=new bn(obits);var shift=obits.length*8-q.bitLength();if(shift>0){bits.ishrn(shift)}return bits}function bits2octets(bits,q){bits=bits2int(bits,q);bits=bits.mod(q);var out=new Buffer(bits.toArray());if(out.length<q.byteLength()){var zeros=new Buffer(q.byteLength()-out.length);zeros.fill(0);out=Buffer.concat([zeros,out])}return out}module.exports.makeKey=makeKey;function makeKey(q,kv,algo,crypto){var t;var k;while(true){t=new Buffer("");while(t.length*8<q.bitLength()){kv.v=crypto.createHmac(algo,kv.k).update(kv.v).digest();t=Buffer.concat([t,kv.v])}k=bits2int(t,q);kv.k=crypto.createHmac(algo,kv.k).update(kv.v).update(new Buffer([0])).digest();kv.v=crypto.createHmac(algo,kv.k).update(kv.v).digest();if(k.cmp(q)===-1){return k}}}function makeR(g,k,p,q){return g.toRed(bn.mont(p)).redPow(k).fromRed().mod(q)}}).call(this,require("buffer").Buffer)},{"bn.js":182,"browserify-rsa":183,buffer:350,elliptic:184,"parse-asn1":208}],225:[function(require,module,exports){(function(Buffer){var parseKeys=require("parse-asn1");var elliptic=require("elliptic");var bn=require("bn.js");module.exports=verify;function verify(sig,hash,key){var pub=parseKeys(key);if(pub.type==="ec"){return ecVerify(sig,hash,pub)}else if(pub.type==="dsa"){return dsaVerify(sig,hash,pub)}var len=pub.modulus.byteLength();var pad=[0,1];while(hash.length+pad.length+1<len){pad.push(255)}pad.push(0);var i=-1;while(++i<hash.length){pad.push(hash[i])}pad=hash;var red=bn.mont(pub.modulus);sig=new bn(sig).toRed(red);sig=sig.redPow(new bn(pub.publicExponent));sig=new Buffer(sig.fromRed().toArray());sig=sig.slice(sig.length-hash.length);var out=0;len=sig.length;i=-1;while(++i<len){out+=sig[i]^hash[i]}return!out}function ecVerify(sig,hash,pub){var curve;if(pub.data.algorithm.curve.join(".")==="1.3.132.0.10"){curve=new elliptic.ec("secp256k1")}var pubkey=pub.data.subjectPrivateKey.data;return curve.verify(hash.toString("hex"),sig.toString("hex"),pubkey.toString("hex"))}function dsaVerify(sig,hash,pub){var p=pub.data.p;var q=pub.data.q;var g=pub.data.g;var y=pub.data.pub_key;var unpacked=parseKeys.signature.decode(sig,"der");var s=unpacked.s;var r=unpacked.r;checkValue(s,q);checkValue(r,q);var montq=bn.mont(q);var montp=bn.mont(p);var w=s.invm(q);var v=g.toRed(montp).redPow(new bn(hash).mul(w).mod(q)).fromRed().mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed()).mod(p).mod(q);return!v.cmp(r)}function checkValue(b,q){if(b.cmpn(0)<=0){throw new Error("invalid sig")}if(b.cmp(q)>=q){throw new Error("invalid sig")}}}).call(this,require("buffer").Buffer)},{"bn.js":182,buffer:350,elliptic:184,"parse-asn1":208}],226:[function(require,module,exports){(function(Buffer){var elliptic=require("elliptic");var BN=require("bn.js");module.exports=ECDH;function ECDH(curve,crypto){elliptic.rand=crypto.randomBytes;this.curve=new elliptic.ec(curve);this.keys=void 0}ECDH.prototype.generateKeys=function(enc,format){this.keys=this.curve.genKeyPair();return this.getPublicKey(enc,format)};ECDH.prototype.computeSecret=function(other,inenc,enc){inenc=inenc||"utf8";if(!Buffer.isBuffer(other)){other=new Buffer(other,inenc)}other=new BN(other);other=other.toString(16);var otherPub=this.curve.keyPair(other,"hex").getPublic();var out=otherPub.mul(this.keys.getPrivate()).getX();return returnValue(out,enc)};ECDH.prototype.getPublicKey=function(enc,format){var key=this.keys.getPublic(format==="compressed",true);if(format==="hybrid"){if(key[key.length-1]%2){key[0]=7}else{key[0]=6}}return returnValue(key,enc)};ECDH.prototype.getPrivateKey=function(enc){return returnValue(this.keys.getPrivate(),enc)};ECDH.prototype.setPublicKey=function(pub,enc){enc=enc||"utf8";if(!Buffer.isBuffer(pub)){pub=new Buffer(pub,enc)}var pkey=new BN(pub);pkey=pkey.toArray();this.keys._importPublicHex(pkey)};ECDH.prototype.setPrivateKey=function(priv,enc){enc=enc||"utf8";if(!Buffer.isBuffer(priv)){priv=new Buffer(priv,enc)}var _priv=new BN(priv);_priv=_priv.toString(16);this.keys._importPrivate(_priv)};function returnValue(bn,enc){if(!Array.isArray(bn)){bn=bn.toArray()}var buf=new Buffer(bn);if(!enc){return buf}else{return buf.toString(enc)}}}).call(this,require("buffer").Buffer)},{"bn.js":228,buffer:350,elliptic:229}],227:[function(require,module,exports){var ECDH=require("./ecdh");module.exports=function(crypto,exports){exports.createECDH=function(curve){return new ECDH(curve,crypto)}}},{"./ecdh":226}],228:[function(require,module,exports){module.exports=require(182)},{}],229:[function(require,module,exports){arguments[4][184][0].apply(exports,arguments)},{"../package.json":248,"./elliptic/curve":232,"./elliptic/curves":235,"./elliptic/ec":236,"./elliptic/hmac-drbg":239,"./elliptic/utils":240,brorand:241}],230:[function(require,module,exports){arguments[4][185][0].apply(exports,arguments)},{"../../elliptic":229,"bn.js":228}],231:[function(require,module,exports){arguments[4][186][0].apply(exports,arguments)},{"../../elliptic":229,"../curve":232,"bn.js":228,inherits:268}],232:[function(require,module,exports){arguments[4][187][0].apply(exports,arguments)},{"./base":230,"./edwards":231,"./mont":233,"./short":234}],233:[function(require,module,exports){arguments[4][188][0].apply(exports,arguments)},{"../../elliptic":229,"../curve":232,"bn.js":228,inherits:268}],234:[function(require,module,exports){arguments[4][189][0].apply(exports,arguments)},{"../../elliptic":229,"../curve":232,"bn.js":228,inherits:268}],235:[function(require,module,exports){arguments[4][190][0].apply(exports,arguments)},{"../elliptic":229,"bn.js":228,"hash.js":242}],236:[function(require,module,exports){arguments[4][191][0].apply(exports,arguments)},{"../../elliptic":229,"./key":237,"./signature":238,"bn.js":228}],237:[function(require,module,exports){arguments[4][192][0].apply(exports,arguments)},{"../../elliptic":229,"bn.js":228}],238:[function(require,module,exports){arguments[4][193][0].apply(exports,arguments)},{"../../elliptic":229,"bn.js":228}],239:[function(require,module,exports){arguments[4][194][0].apply(exports,arguments)},{"../elliptic":229,"hash.js":242}],240:[function(require,module,exports){module.exports=require(195)},{"bn.js":228}],241:[function(require,module,exports){module.exports=require(196)},{}],242:[function(require,module,exports){arguments[4][197][0].apply(exports,arguments)},{"./hash/common":243,"./hash/hmac":244,"./hash/ripemd":245,"./hash/sha":246,"./hash/utils":247}],243:[function(require,module,exports){arguments[4][198][0].apply(exports,arguments)},{"../hash":242}],244:[function(require,module,exports){arguments[4][199][0].apply(exports,arguments)},{"../hash":242}],245:[function(require,module,exports){arguments[4][200][0].apply(exports,arguments)},{"../hash":242}],246:[function(require,module,exports){arguments[4][201][0].apply(exports,arguments)},{"../hash":242}],247:[function(require,module,exports){module.exports=require(202)},{inherits:268}],248:[function(require,module,exports){module.exports=require(203)},{}],249:[function(require,module,exports){(function(Buffer){"use strict";var createHash=require("sha.js");var md5=require("./md5");var rmd160=require("ripemd160");var Transform=require("stream").Transform;var inherits=require("inherits");module.exports=function(alg){if("md5"===alg)return new HashNoConstructor(md5);if("rmd160"===alg)return new HashNoConstructor(rmd160);return new Hash(createHash(alg))};inherits(HashNoConstructor,Transform);function HashNoConstructor(hash){Transform.call(this);this._hash=hash;this.buffers=[]}HashNoConstructor.prototype._transform=function(data,_,done){this.buffers.push(data);done()};HashNoConstructor.prototype._flush=function(done){var buf=Buffer.concat(this.buffers);var r=this._hash(buf);this.buffers=null;this.push(r);done()};HashNoConstructor.prototype.update=function(data,enc){this.write(data,enc);return this};HashNoConstructor.prototype.digest=function(enc){this.end();var outData=new Buffer("");var chunk;while(chunk=this.read()){outData=Buffer.concat([outData,chunk])}if(enc){outData=outData.toString(enc)}return outData};inherits(Hash,Transform);function Hash(hash){Transform.call(this);this._hash=hash}Hash.prototype._transform=function(data,_,done){this._hash.update(data);done()};Hash.prototype._flush=function(done){this.push(this._hash.digest());this._hash=null;done()};Hash.prototype.update=function(data,enc){this.write(data,enc);return this};Hash.prototype.digest=function(enc){this.end();var outData=new Buffer("");var chunk;while(chunk=this.read()){outData=Buffer.concat([outData,chunk])}if(enc){outData=outData.toString(enc)}return outData}}).call(this,require("buffer").Buffer)},{"./md5":251,buffer:350,inherits:268,ripemd160:252,"sha.js":254,stream:364}],250:[function(require,module,exports){(function(Buffer){"use strict";var intSize=4;var zeroBuffer=new Buffer(intSize);zeroBuffer.fill(0);var chrsz=8;function toArray(buf,bigEndian){if(buf.length%intSize!==0){var len=buf.length+(intSize-buf.length%intSize);buf=Buffer.concat([buf,zeroBuffer],len)}var arr=[];var fn=bigEndian?buf.readInt32BE:buf.readInt32LE;for(var i=0;i<buf.length;i+=intSize){arr.push(fn.call(buf,i))}return arr}function toBuffer(arr,size,bigEndian){var buf=new Buffer(size);var fn=bigEndian?buf.writeInt32BE:buf.writeInt32LE;for(var i=0;i<arr.length;i++){fn.call(buf,arr[i],i*4,true)}return buf}function hash(buf,fn,hashSize,bigEndian){if(!Buffer.isBuffer(buf))buf=new Buffer(buf);var arr=fn(toArray(buf,bigEndian),buf.length*chrsz);return toBuffer(arr,hashSize,bigEndian)}exports.hash=hash}).call(this,require("buffer").Buffer)},{buffer:350}],251:[function(require,module,exports){"use strict";var helpers=require("./helpers");function core_md5(x,len){x[len>>5]|=128<<len%32;x[(len+64>>>9<<4)+14]=len;var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;for(var i=0;i<x.length;i+=16){var olda=a;var oldb=b;var oldc=c;var oldd=d;a=md5_ff(a,b,c,d,x[i+0],7,-680876936);d=md5_ff(d,a,b,c,x[i+1],12,-389564586);c=md5_ff(c,d,a,b,x[i+2],17,606105819);b=md5_ff(b,c,d,a,x[i+3],22,-1044525330);a=md5_ff(a,b,c,d,x[i+4],7,-176418897);d=md5_ff(d,a,b,c,x[i+5],12,1200080426);c=md5_ff(c,d,a,b,x[i+6],17,-1473231341);b=md5_ff(b,c,d,a,x[i+7],22,-45705983);a=md5_ff(a,b,c,d,x[i+8],7,1770035416);d=md5_ff(d,a,b,c,x[i+9],12,-1958414417);c=md5_ff(c,d,a,b,x[i+10],17,-42063);b=md5_ff(b,c,d,a,x[i+11],22,-1990404162);a=md5_ff(a,b,c,d,x[i+12],7,1804603682);d=md5_ff(d,a,b,c,x[i+13],12,-40341101);c=md5_ff(c,d,a,b,x[i+14],17,-1502002290);b=md5_ff(b,c,d,a,x[i+15],22,1236535329);a=md5_gg(a,b,c,d,x[i+1],5,-165796510);d=md5_gg(d,a,b,c,x[i+6],9,-1069501632);c=md5_gg(c,d,a,b,x[i+11],14,643717713);b=md5_gg(b,c,d,a,x[i+0],20,-373897302);a=md5_gg(a,b,c,d,x[i+5],5,-701558691);d=md5_gg(d,a,b,c,x[i+10],9,38016083);c=md5_gg(c,d,a,b,x[i+15],14,-660478335);b=md5_gg(b,c,d,a,x[i+4],20,-405537848);a=md5_gg(a,b,c,d,x[i+9],5,568446438);d=md5_gg(d,a,b,c,x[i+14],9,-1019803690);c=md5_gg(c,d,a,b,x[i+3],14,-187363961);b=md5_gg(b,c,d,a,x[i+8],20,1163531501);a=md5_gg(a,b,c,d,x[i+13],5,-1444681467);d=md5_gg(d,a,b,c,x[i+2],9,-51403784);c=md5_gg(c,d,a,b,x[i+7],14,1735328473);b=md5_gg(b,c,d,a,x[i+12],20,-1926607734);a=md5_hh(a,b,c,d,x[i+5],4,-378558);d=md5_hh(d,a,b,c,x[i+8],11,-2022574463);c=md5_hh(c,d,a,b,x[i+11],16,1839030562);b=md5_hh(b,c,d,a,x[i+14],23,-35309556);a=md5_hh(a,b,c,d,x[i+1],4,-1530992060);d=md5_hh(d,a,b,c,x[i+4],11,1272893353);c=md5_hh(c,d,a,b,x[i+7],16,-155497632);b=md5_hh(b,c,d,a,x[i+10],23,-1094730640);a=md5_hh(a,b,c,d,x[i+13],4,681279174);d=md5_hh(d,a,b,c,x[i+0],11,-358537222);c=md5_hh(c,d,a,b,x[i+3],16,-722521979);b=md5_hh(b,c,d,a,x[i+6],23,76029189);a=md5_hh(a,b,c,d,x[i+9],4,-640364487);d=md5_hh(d,a,b,c,x[i+12],11,-421815835);c=md5_hh(c,d,a,b,x[i+15],16,530742520);b=md5_hh(b,c,d,a,x[i+2],23,-995338651);a=md5_ii(a,b,c,d,x[i+0],6,-198630844);d=md5_ii(d,a,b,c,x[i+7],10,1126891415);c=md5_ii(c,d,a,b,x[i+14],15,-1416354905);b=md5_ii(b,c,d,a,x[i+5],21,-57434055);a=md5_ii(a,b,c,d,x[i+12],6,1700485571);d=md5_ii(d,a,b,c,x[i+3],10,-1894986606);c=md5_ii(c,d,a,b,x[i+10],15,-1051523);b=md5_ii(b,c,d,a,x[i+1],21,-2054922799);a=md5_ii(a,b,c,d,x[i+8],6,1873313359);d=md5_ii(d,a,b,c,x[i+15],10,-30611744);c=md5_ii(c,d,a,b,x[i+6],15,-1560198380);b=md5_ii(b,c,d,a,x[i+13],21,1309151649);a=md5_ii(a,b,c,d,x[i+4],6,-145523070);d=md5_ii(d,a,b,c,x[i+11],10,-1120210379);c=md5_ii(c,d,a,b,x[i+2],15,718787259);b=md5_ii(b,c,d,a,x[i+9],21,-343485551);a=safe_add(a,olda);b=safe_add(b,oldb);c=safe_add(c,oldc);d=safe_add(d,oldd)}return Array(a,b,c,d)}function md5_cmn(q,a,b,x,s,t){return safe_add(bit_rol(safe_add(safe_add(a,q),safe_add(x,t)),s),b)}function md5_ff(a,b,c,d,x,s,t){return md5_cmn(b&c|~b&d,a,b,x,s,t)}function md5_gg(a,b,c,d,x,s,t){return md5_cmn(b&d|c&~d,a,b,x,s,t)}function md5_hh(a,b,c,d,x,s,t){return md5_cmn(b^c^d,a,b,x,s,t)}function md5_ii(a,b,c,d,x,s,t){return md5_cmn(c^(b|~d),a,b,x,s,t)}function safe_add(x,y){var lsw=(x&65535)+(y&65535);var msw=(x>>16)+(y>>16)+(lsw>>16);return msw<<16|lsw&65535}function bit_rol(num,cnt){return num<<cnt|num>>>32-cnt}module.exports=function md5(buf){return helpers.hash(buf,core_md5,16)}},{"./helpers":250}],252:[function(require,module,exports){(function(Buffer){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];var hl=[0,1518500249,1859775393,2400959708,2840853838];var hr=[1352829926,1548603684,1836072691,2053994217,0];function bytesToWords(bytes){var words=[];for(var i=0,b=0;i<bytes.length;i++,b+=8){words[b>>>5]|=bytes[i]<<24-b%32}return words}function wordsToBytes(words){var bytes=[];for(var b=0;b<words.length*32;b+=8){bytes.push(words[b>>>5]>>>24-b%32&255)}return bytes}function processBlock(H,M,offset){for(var i=0;i<16;i++){var offset_i=offset+i;var M_offset_i=M[offset_i];M[offset_i]=(M_offset_i<<8|M_offset_i>>>24)&16711935|(M_offset_i<<24|M_offset_i>>>8)&4278255360}var al,bl,cl,dl,el;var ar,br,cr,dr,er;ar=al=H[0];
br=bl=H[1];cr=cl=H[2];dr=dl=H[3];er=el=H[4];var t;for(var i=0;i<80;i+=1){t=al+M[offset+zl[i]]|0;if(i<16){t+=f1(bl,cl,dl)+hl[0]}else if(i<32){t+=f2(bl,cl,dl)+hl[1]}else if(i<48){t+=f3(bl,cl,dl)+hl[2]}else if(i<64){t+=f4(bl,cl,dl)+hl[3]}else{t+=f5(bl,cl,dl)+hl[4]}t=t|0;t=rotl(t,sl[i]);t=t+el|0;al=el;el=dl;dl=rotl(cl,10);cl=bl;bl=t;t=ar+M[offset+zr[i]]|0;if(i<16){t+=f5(br,cr,dr)+hr[0]}else if(i<32){t+=f4(br,cr,dr)+hr[1]}else if(i<48){t+=f3(br,cr,dr)+hr[2]}else if(i<64){t+=f2(br,cr,dr)+hr[3]}else{t+=f1(br,cr,dr)+hr[4]}t=t|0;t=rotl(t,sr[i]);t=t+er|0;ar=er;er=dr;dr=rotl(cr,10);cr=br;br=t}t=H[1]+cl+dr|0;H[1]=H[2]+dl+er|0;H[2]=H[3]+el+ar|0;H[3]=H[4]+al+br|0;H[4]=H[0]+bl+cr|0;H[0]=t}function f1(x,y,z){return x^y^z}function f2(x,y,z){return x&y|~x&z}function f3(x,y,z){return(x|~y)^z}function f4(x,y,z){return x&z|y&~z}function f5(x,y,z){return x^(y|~z)}function rotl(x,n){return x<<n|x>>>32-n}function ripemd160(message){var H=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof message=="string")message=new Buffer(message,"utf8");var m=bytesToWords(message);var nBitsLeft=message.length*8;var nBitsTotal=message.length*8;m[nBitsLeft>>>5]|=128<<24-nBitsLeft%32;m[(nBitsLeft+64>>>9<<4)+14]=(nBitsTotal<<8|nBitsTotal>>>24)&16711935|(nBitsTotal<<24|nBitsTotal>>>8)&4278255360;for(var i=0;i<m.length;i+=16){processBlock(H,m,i)}for(var i=0;i<5;i++){var H_i=H[i];H[i]=(H_i<<8|H_i>>>24)&16711935|(H_i<<24|H_i>>>8)&4278255360}var digestbytes=wordsToBytes(H);return new Buffer(digestbytes)}module.exports=ripemd160}).call(this,require("buffer").Buffer)},{buffer:350}],253:[function(require,module,exports){(function(Buffer){function Hash(blockSize,finalSize){this._block=new Buffer(blockSize);this._finalSize=finalSize;this._blockSize=blockSize;this._len=0;this._s=0}Hash.prototype.update=function(data,enc){if("string"===typeof data){enc=enc||"utf8";data=new Buffer(data,enc)}var l=this._len+=data.length;var s=this._s||0;var f=0;var buffer=this._block;while(s<l){var t=Math.min(data.length,f+this._blockSize-s%this._blockSize);var ch=t-f;for(var i=0;i<ch;i++){buffer[s%this._blockSize+i]=data[i+f]}s+=ch;f+=ch;if(s%this._blockSize===0){this._update(buffer)}}this._s=s;return this};Hash.prototype.digest=function(enc){var l=this._len*8;this._block[this._len%this._blockSize]=128;this._block.fill(0,this._len%this._blockSize+1);if(l%(this._blockSize*8)>=this._finalSize*8){this._update(this._block);this._block.fill(0)}this._block.writeInt32BE(l,this._blockSize-4);var hash=this._update(this._block)||this._hash();return enc?hash.toString(enc):hash};Hash.prototype._update=function(){throw new Error("_update must be implemented by subclass")};module.exports=Hash}).call(this,require("buffer").Buffer)},{buffer:350}],254:[function(require,module,exports){var exports=module.exports=function(alg){var Alg=exports[alg.toLowerCase()];if(!Alg)throw new Error(alg+" is not supported (we accept pull requests)");return new Alg};exports.sha1=require("./sha1");exports.sha224=require("./sha224");exports.sha256=require("./sha256");exports.sha384=require("./sha384");exports.sha512=require("./sha512")},{"./sha1":255,"./sha224":256,"./sha256":257,"./sha384":258,"./sha512":259}],255:[function(require,module,exports){(function(Buffer){var inherits=require("inherits");var Hash=require("./hash");var W=new Array(80);function Sha1(){this.init();this._w=W;Hash.call(this,64,56)}inherits(Sha1,Hash);Sha1.prototype.init=function(){this._a=1732584193;this._b=4023233417;this._c=2562383102;this._d=271733878;this._e=3285377520;return this};function rol(num,cnt){return num<<cnt|num>>>32-cnt}Sha1.prototype._update=function(M){var W=this._w;var a=this._a;var b=this._b;var c=this._c;var d=this._d;var e=this._e;var j=0,k;function calcW(){return rol(W[j-3]^W[j-8]^W[j-14]^W[j-16],1)}function loop(w,f){W[j]=w;var t=rol(a,5)+f+e+w+k;e=d;d=c;c=rol(b,30);b=a;a=t;j++}k=1518500249;while(j<16)loop(M.readInt32BE(j*4),b&c|~b&d);while(j<20)loop(calcW(),b&c|~b&d);k=1859775393;while(j<40)loop(calcW(),b^c^d);k=-1894007588;while(j<60)loop(calcW(),b&c|b&d|c&d);k=-899497514;while(j<80)loop(calcW(),b^c^d);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};Sha1.prototype._hash=function(){var H=new Buffer(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};module.exports=Sha1}).call(this,require("buffer").Buffer)},{"./hash":253,buffer:350,inherits:268}],256:[function(require,module,exports){(function(Buffer){var inherits=require("inherits");var SHA256=require("./sha256");var Hash=require("./hash");var W=new Array(64);function Sha224(){this.init();this._w=W;Hash.call(this,64,56)}inherits(Sha224,SHA256);Sha224.prototype.init=function(){this._a=3238371032|0;this._b=914150663|0;this._c=812702999|0;this._d=4144912697|0;this._e=4290775857|0;this._f=1750603025|0;this._g=1694076839|0;this._h=3204075428|0;return this};Sha224.prototype._hash=function(){var H=new Buffer(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};module.exports=Sha224}).call(this,require("buffer").Buffer)},{"./hash":253,"./sha256":257,buffer:350,inherits:268}],257:[function(require,module,exports){(function(Buffer){var inherits=require("inherits");var Hash=require("./hash");var K=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];var W=new Array(64);function Sha256(){this.init();this._w=W;Hash.call(this,64,56)}inherits(Sha256,Hash);Sha256.prototype.init=function(){this._a=1779033703|0;this._b=3144134277|0;this._c=1013904242|0;this._d=2773480762|0;this._e=1359893119|0;this._f=2600822924|0;this._g=528734635|0;this._h=1541459225|0;return this};function S(X,n){return X>>>n|X<<32-n}function R(X,n){return X>>>n}function Ch(x,y,z){return x&y^~x&z}function Maj(x,y,z){return x&y^x&z^y&z}function Sigma0256(x){return S(x,2)^S(x,13)^S(x,22)}function Sigma1256(x){return S(x,6)^S(x,11)^S(x,25)}function Gamma0256(x){return S(x,7)^S(x,18)^R(x,3)}function Gamma1256(x){return S(x,17)^S(x,19)^R(x,10)}Sha256.prototype._update=function(M){var W=this._w;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;var j=0;function calcW(){return Gamma1256(W[j-2])+W[j-7]+Gamma0256(W[j-15])+W[j-16]}function loop(w){W[j]=w;var T1=h+Sigma1256(e)+Ch(e,f,g)+K[j]+w;var T2=Sigma0256(a)+Maj(a,b,c);h=g;g=f;f=e;e=d+T1;d=c;c=b;b=a;a=T1+T2;j++}while(j<16)loop(M.readInt32BE(j*4));while(j<64)loop(calcW());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};Sha256.prototype._hash=function(){var H=new Buffer(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};module.exports=Sha256}).call(this,require("buffer").Buffer)},{"./hash":253,buffer:350,inherits:268}],258:[function(require,module,exports){(function(Buffer){var inherits=require("inherits");var SHA512=require("./sha512");var Hash=require("./hash");var W=new Array(160);function Sha384(){this.init();this._w=W;Hash.call(this,128,112)}inherits(Sha384,SHA512);Sha384.prototype.init=function(){this._a=3418070365|0;this._b=1654270250|0;this._c=2438529370|0;this._d=355462360|0;this._e=1731405415|0;this._f=2394180231|0;this._g=3675008525|0;this._h=1203062813|0;this._al=3238371032|0;this._bl=914150663|0;this._cl=812702999|0;this._dl=4144912697|0;this._el=4290775857|0;this._fl=1750603025|0;this._gl=1694076839|0;this._hl=3204075428|0;return this};Sha384.prototype._hash=function(){var H=new Buffer(48);function writeInt64BE(h,l,offset){H.writeInt32BE(h,offset);H.writeInt32BE(l,offset+4)}writeInt64BE(this._a,this._al,0);writeInt64BE(this._b,this._bl,8);writeInt64BE(this._c,this._cl,16);writeInt64BE(this._d,this._dl,24);writeInt64BE(this._e,this._el,32);writeInt64BE(this._f,this._fl,40);return H};module.exports=Sha384}).call(this,require("buffer").Buffer)},{"./hash":253,"./sha512":259,buffer:350,inherits:268}],259:[function(require,module,exports){(function(Buffer){var inherits=require("inherits");var Hash=require("./hash");var K=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];var W=new Array(160);function Sha512(){this.init();this._w=W;Hash.call(this,128,112)}inherits(Sha512,Hash);Sha512.prototype.init=function(){this._a=1779033703|0;this._b=3144134277|0;this._c=1013904242|0;this._d=2773480762|0;this._e=1359893119|0;this._f=2600822924|0;this._g=528734635|0;this._h=1541459225|0;this._al=4089235720|0;this._bl=2227873595|0;this._cl=4271175723|0;this._dl=1595750129|0;this._el=2917565137|0;this._fl=725511199|0;this._gl=4215389547|0;this._hl=327033209|0;return this};function S(X,Xl,n){return X>>>n|Xl<<32-n}function Ch(x,y,z){return x&y^~x&z}function Maj(x,y,z){return x&y^x&z^y&z}Sha512.prototype._update=function(M){var W=this._w;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;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;var i=0,j=0;var Wi,Wil;function calcW(){var x=W[j-15*2];var xl=W[j-15*2+1];var gamma0=S(x,xl,1)^S(x,xl,8)^x>>>7;var gamma0l=S(xl,x,1)^S(xl,x,8)^S(xl,x,7);x=W[j-2*2];xl=W[j-2*2+1];var gamma1=S(x,xl,19)^S(xl,x,29)^x>>>6;var gamma1l=S(xl,x,19)^S(x,xl,29)^S(xl,x,6);var Wi7=W[j-7*2];var Wi7l=W[j-7*2+1];var Wi16=W[j-16*2];var Wi16l=W[j-16*2+1];Wil=gamma0l+Wi7l;Wi=gamma0+Wi7+(Wil>>>0<gamma0l>>>0?1:0);Wil=Wil+gamma1l;Wi=Wi+gamma1+(Wil>>>0<gamma1l>>>0?1:0);Wil=Wil+Wi16l;Wi=Wi+Wi16+(Wil>>>0<Wi16l>>>0?1:0)}function loop(){W[j]=Wi;W[j+1]=Wil;var maj=Maj(a,b,c);var majl=Maj(al,bl,cl);var sigma0h=S(a,al,28)^S(al,a,2)^S(al,a,7);var sigma0l=S(al,a,28)^S(a,al,2)^S(a,al,7);var sigma1h=S(e,el,14)^S(e,el,18)^S(el,e,9);var sigma1l=S(el,e,14)^S(el,e,18)^S(e,el,9);var Ki=K[j];var Kil=K[j+1];var ch=Ch(e,f,g);var chl=Ch(el,fl,gl);var t1l=hl+sigma1l;var t1=h+sigma1h+(t1l>>>0<hl>>>0?1:0);t1l=t1l+chl;t1=t1+ch+(t1l>>>0<chl>>>0?1:0);t1l=t1l+Kil;t1=t1+Ki+(t1l>>>0<Kil>>>0?1:0);t1l=t1l+Wil;t1=t1+Wi+(t1l>>>0<Wil>>>0?1:0);var t2l=sigma0l+majl;var t2=sigma0h+maj+(t2l>>>0<sigma0l>>>0?1:0);h=g;hl=gl;g=f;gl=fl;f=e;fl=el;el=dl+t1l|0;e=d+t1+(el>>>0<dl>>>0?1:0)|0;d=c;dl=cl;c=b;cl=bl;b=a;bl=al;al=t1l+t2l|0;a=t1+t2+(al>>>0<t1l>>>0?1:0)|0;i++;j+=2}while(i<16){Wi=M.readInt32BE(j*4);Wil=M.readInt32BE(j*4+4);loop()}while(i<80){calcW();loop()}this._al=this._al+al|0;this._bl=this._bl+bl|0;this._cl=this._cl+cl|0;this._dl=this._dl+dl|0;this._el=this._el+el|0;this._fl=this._fl+fl|0;this._gl=this._gl+gl|0;this._hl=this._hl+hl|0;this._a=this._a+a+(this._al>>>0<al>>>0?1:0)|0;this._b=this._b+b+(this._bl>>>0<bl>>>0?1:0)|0;this._c=this._c+c+(this._cl>>>0<cl>>>0?1:0)|0;this._d=this._d+d+(this._dl>>>0<dl>>>0?1:0)|0;this._e=this._e+e+(this._el>>>0<el>>>0?1:0)|0;this._f=this._f+f+(this._fl>>>0<fl>>>0?1:0)|0;this._g=this._g+g+(this._gl>>>0<gl>>>0?1:0)|0;this._h=this._h+h+(this._hl>>>0<hl>>>0?1:0)|0};Sha512.prototype._hash=function(){var H=new Buffer(64);function writeInt64BE(h,l,offset){H.writeInt32BE(h,offset);H.writeInt32BE(l,offset+4)}writeInt64BE(this._a,this._al,0);writeInt64BE(this._b,this._bl,8);writeInt64BE(this._c,this._cl,16);writeInt64BE(this._d,this._dl,24);writeInt64BE(this._e,this._el,32);writeInt64BE(this._f,this._fl,40);writeInt64BE(this._g,this._gl,48);writeInt64BE(this._h,this._hl,56);return H};module.exports=Sha512}).call(this,require("buffer").Buffer)},{"./hash":253,buffer:350,inherits:268}],260:[function(require,module,exports){(function(Buffer){"use strict";var createHash=require("create-hash/browser");var Transform=require("stream").Transform;var inherits=require("inherits");var zeroBuffer=new Buffer(128);zeroBuffer.fill(0);module.exports=Hmac;inherits(Hmac,Transform);function Hmac(alg,key){if(!(this instanceof Hmac))return new Hmac(alg,key);Transform.call(this);this._opad=opad;this._alg=alg;var blocksize=alg==="sha512"||alg==="sha384"?128:64;key=this._key=!Buffer.isBuffer(key)?new Buffer(key):key;if(key.length>blocksize){key=createHash(alg).update(key).digest()}else if(key.length<blocksize){key=Buffer.concat([key,zeroBuffer],blocksize)}var ipad=this._ipad=new Buffer(blocksize);var opad=this._opad=new Buffer(blocksize);for(var i=0;i<blocksize;i++){ipad[i]=key[i]^54;opad[i]=key[i]^92}this._hash=createHash(alg).update(ipad)}Hmac.prototype.update=function(data,enc){this.write(data,enc);return this};Hmac.prototype._transform=function(data,_,next){this._hash.update(data);next()};Hmac.prototype._flush=function(next){var h=this._hash.digest();this.push(createHash(this._alg).update(this._opad).update(h).digest());next()};Hmac.prototype.digest=function(enc){this.end();var outData=new Buffer("");var chunk;while(chunk=this.read()){outData=Buffer.concat([outData,chunk])}if(enc){outData=outData.toString(enc)}return outData}}).call(this,require("buffer").Buffer)},{buffer:350,"create-hash/browser":249,inherits:268,stream:364}],261:[function(require,module,exports){(function(Buffer){var BN=require("bn.js");var MillerRabin=require("miller-rabin");var millerRabin=new MillerRabin;var TWENTYFOUR=new BN(24);var ELEVEN=new BN(11);var TEN=new BN(10);var THREE=new BN(3);var SEVEN=new BN(7);var primes=require("./generatePrime");module.exports=DH;function setPublicKey(pub,enc){enc=enc||"utf8";if(!Buffer.isBuffer(pub)){pub=new Buffer(pub,enc)}this._pub=new BN(pub)}function setPrivateKey(priv,enc){enc=enc||"utf8";if(!Buffer.isBuffer(priv)){priv=new Buffer(priv,enc)}this._priv=new BN(priv)}var primeCache={};function checkPrime(prime,generator){var gen=generator.toString("hex");var hex=[gen,prime.toString(16)].join("_");if(hex in primeCache){return primeCache[hex]}var error=0;if(prime.isEven()||!primes.simpleSieve||!primes.fermatTest(prime)||!millerRabin.test(prime)){error+=1;if(gen==="02"||gen==="05"){error+=8}else{error+=4}primeCache[hex]=error;return error}if(!millerRabin.test(prime.shrn(1))){error+=2}var gen=generator.toString("hex");var rem;switch(gen){case"02":if(prime.mod(TWENTYFOUR).cmp(ELEVEN)){error+=8}break;case"05":rem=prime.mod(TEN);if(rem.cmp(THREE)&&rem.cmp(SEVEN)){error+=8}break;default:error+=4}primeCache[hex]=error;return error}function defineError(self,error){try{Object.defineProperty(self,"verifyError",{enumerable:true,value:error,writable:false})}catch(e){self.verifyError=error}}function DH(prime,generator,crypto,malleable){this.setGenerator(generator);this.__prime=new BN(prime);this._prime=BN.mont(this.__prime);this._pub=void 0;this._priv=void 0;if(malleable){this.setPublicKey=setPublicKey;this.setPrivateKey=setPrivateKey;defineError(this,checkPrime(this.__prime,generator))}else{defineError(this,8)}this._makeNum=function makeNum(){return crypto.randomBytes(prime.length)}}DH.prototype.generateKeys=function(){if(!this._priv){this._priv=new BN(this._makeNum())}this._pub=this._gen.toRed(this._prime).redPow(this._priv).fromRed();return this.getPublicKey()};DH.prototype.computeSecret=function(other){other=new BN(other);other=other.toRed(this._prime);var secret=other.redPow(this._priv).fromRed();var out=new Buffer(secret.toArray());var prime=this.getPrime();if(out.length<prime.length){var front=new Buffer(prime.length-out.length);front.fill(0);out=Buffer.concat([front,out])}return out};DH.prototype.getPublicKey=function getPublicKey(enc){return returnValue(this._pub,enc)};DH.prototype.getPrivateKey=function getPrivateKey(enc){return returnValue(this._priv,enc)};DH.prototype.getPrime=function(enc){return returnValue(this.__prime,enc)};DH.prototype.getGenerator=function(enc){return returnValue(this._gen,enc)};DH.prototype.setGenerator=function(gen,enc){enc=enc||"utf8";if(!Buffer.isBuffer(gen)){gen=new Buffer(gen,enc)}this._gen=new BN(gen)};function returnValue(bn,enc){var buf=new Buffer(bn.toArray());if(!enc){return buf}else{return buf.toString(enc)}}}).call(this,require("buffer").Buffer)},{"./generatePrime":262,"bn.js":264,buffer:350,"miller-rabin":265}],262:[function(require,module,exports){module.exports=findPrime;findPrime.simpleSieve=simpleSieve;findPrime.fermatTest=fermatTest;var BN=require("bn.js");var TWENTYFOUR=new BN(24);var MillerRabin=require("miller-rabin");var millerRabin=new MillerRabin;var ONE=new BN(1);var TWO=new BN(2);var FIVE=new BN(5);var SIXTEEN=new BN(16);var EIGHT=new BN(8);var TEN=new BN(10);var THREE=new BN(3);var SEVEN=new BN(7);var ELEVEN=new BN(11);var FOUR=new BN(4);var TWELVE=new BN(12);var primes=null;function _getPrimes(){if(primes!==null)return primes;var limit=1048576;var res=[];res[0]=2;for(var i=1,k=3;k<limit;k+=2){var sqrt=Math.ceil(Math.sqrt(k));for(var j=0;j<i&&res[j]<=sqrt;j++)if(k%res[j]===0)break;if(i!==j&&res[j]<=sqrt)continue;res[i++]=k}primes=res;return res}function simpleSieve(p){var primes=_getPrimes();for(var i=0;i<primes.length;i++)if(p.modn(primes[i])===0){if(p.cmpn(primes[i])===0){return true}else{return false}}return true}function fermatTest(p){var red=BN.mont(p);return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1)===0}function findPrime(bits,gen,crypto){if(bits<16){if(gen===2||gen===5){return new BN([140,123])}else{return new BN([140,39])}}gen=new BN(gen);var runs,comp;function generateRandom(bits){runs=-1;var out=new BN(crypto.randomBytes(Math.ceil(bits/8)));while(out.bitLength()>bits){out.ishrn(1)}if(out.isEven()){out.iadd(ONE)}if(!out.testn(1)){out.iadd(TWO)}if(!gen.cmp(TWO)){while(out.mod(TWENTYFOUR).cmp(ELEVEN)){out.iadd(FOUR)}comp={major:[TWENTYFOUR],minor:[TWELVE]}}else if(!gen.cmp(FIVE)){rem=out.mod(TEN);while(rem.cmp(THREE)){out.iadd(FOUR);rem=out.mod(TEN)}comp={major:[FOUR,SIXTEEN],minor:[TWO,EIGHT]}}else{comp={major:[FOUR],minor:[TWO]}}return out}var num=generateRandom(bits);var n2=num.shrn(1);while(true){while(num.bitLength()>bits){num=generateRandom(bits);n2=num.shrn(1)}runs++;if(simpleSieve(n2)&&simpleSieve(num)&&fermatTest(n2)&&fermatTest(num)&&millerRabin.test(n2)&&millerRabin.test(num)){return num}num.iadd(comp.major[runs%comp.major.length]);n2.iadd(comp.minor[runs%comp.minor.length])}}},{"bn.js":264,"miller-rabin":265}],263:[function(require,module,exports){(function(Buffer){var primes=require("./primes.json");var DH=require("./dh");var generatePrime=require("./generatePrime");module.exports=function(crypto,exports){exports.DiffieHellmanGroup=exports.createDiffieHellmanGroup=exports.getDiffieHellman=DiffieHellmanGroup;function DiffieHellmanGroup(mod){return new DH(new Buffer(primes[mod].prime,"hex"),new Buffer(primes[mod].gen,"hex"),crypto)}exports.createDiffieHellman=exports.DiffieHellman=DiffieHellman;function DiffieHellman(prime,enc,generator,genc){if(Buffer.isBuffer(enc)||typeof enc==="string"&&["hex","binary","base64"].indexOf(enc)===-1){genc=generator;generator=enc;enc=void 0}enc=enc||"binary";genc=genc||"binary";generator=generator||new Buffer([2]);if(!Buffer.isBuffer(generator)){generator=new Buffer(generator,genc)}if(typeof prime==="number"){return new DH(generatePrime(prime,generator,crypto),generator,crypto,true)}if(!Buffer.isBuffer(prime)){prime=new Buffer(prime,enc)}return new DH(prime,generator,crypto,true)}}}).call(this,require("buffer").Buffer)},{"./dh":261,"./generatePrime":262,"./primes.json":267,buffer:350}],264:[function(require,module,exports){module.exports=require(182)},{}],265:[function(require,module,exports){var bn=require("bn.js");var brorand=require("brorand");function MillerRabin(rand){this.rand=rand||new brorand.Rand}module.exports=MillerRabin;MillerRabin.create=function create(rand){return new MillerRabin(rand)};MillerRabin.prototype._rand=function _rand(n){var len=n.bitLength();var buf=this.rand.generate(Math.ceil(len/8));buf[0]|=3;var mask=len&7;if(mask!==0)buf[buf.length-1]>>=7-mask;return new bn(buf)};MillerRabin.prototype.test=function test(n,k,cb){var len=n.bitLength();var red=bn.mont(n);var rone=new bn(1).toRed(red);if(!k)k=Math.max(1,len/48|0);var n1=n.subn(1);var n2=n1.subn(1);for(var s=0;!n1.testn(s);s++){}var d=n.shrn(s);var rn1=n1.toRed(red);var prime=true;for(;k>0;k--){var a=this._rand(n2);if(cb)cb(a);var x=a.toRed(red).redPow(d);if(x.cmp(rone)===0||x.cmp(rn1)===0)continue;for(var i=1;i<s;i++){x=x.redSqr();if(x.cmp(rone)===0)return false;if(x.cmp(rn1)===0)break}if(i===s)return false}return prime};MillerRabin.prototype.getDivisor=function getDivisor(n,k){var len=n.bitLength();var red=bn.mont(n);var rone=new bn(1).toRed(red);if(!k)k=Math.max(1,len/48|0);var n1=n.subn(1);var n2=n1.subn(1);for(var s=0;!n1.testn(s);s++){}var d=n.shrn(s);var rn1=n1.toRed(red);var prime=true;for(;k>0;k--){var a=this._rand(n2);var g=n.gcd(a);if(g.cmpn(1)!==0)return g;var x=a.toRed(red).redPow(d);if(x.cmp(rone)===0||x.cmp(rn1)===0)continue;for(var i=1;i<s;i++){x=x.redSqr();if(x.cmp(rone)===0)return x.fromRed().subn(1).gcd(n);if(x.cmp(rn1)===0)break}if(i===s){x=x.redSqr();return x.fromRed().subn(1).gcd(n)}}return prime}},{"bn.js":264,brorand:266}],266:[function(require,module,exports){module.exports=require(196)},{}],267:[function(require,module,exports){module.exports={modp1:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},modp2:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},modp5:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},modp14:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},modp15:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},modp16:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},modp17:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},modp18:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}},{}],268:[function(require,module,exports){if(typeof Object.create==="function"){module.exports=function inherits(ctor,superCtor){ctor.super_=superCtor;ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:false,writable:true,configurable:true}})}}else{module.exports=function inherits(ctor,superCtor){ctor.super_=superCtor;var TempCtor=function(){};TempCtor.prototype=superCtor.prototype;ctor.prototype=new TempCtor;ctor.prototype.constructor=ctor}}},{}],269:[function(require,module,exports){(function(Buffer){module.exports=function(crypto){function pbkdf2(password,salt,iterations,keylen,digest,callback){if("function"===typeof digest){callback=digest;digest=undefined}if("function"!==typeof callback)throw new Error("No callback provided to pbkdf2");setTimeout(function(){var result;try{result=pbkdf2Sync(password,salt,iterations,keylen,digest)}catch(e){return callback(e)}callback(undefined,result)})}function pbkdf2Sync(password,salt,iterations,keylen,digest){if("number"!==typeof iterations)throw new TypeError("Iterations not a number");if(iterations<0)throw new TypeError("Bad iterations");if("number"!==typeof keylen)throw new TypeError("Key length not a number");if(keylen<0)throw new TypeError("Bad key length");digest=digest||"sha1";if(!Buffer.isBuffer(password))password=new Buffer(password);if(!Buffer.isBuffer(salt))salt=new Buffer(salt);var hLen,l=1,r,T;var DK=new Buffer(keylen);var block1=new Buffer(salt.length+4);salt.copy(block1,0,0,salt.length);for(var i=1;i<=l;i++){block1.writeUInt32BE(i,salt.length);
var U=crypto.createHmac(digest,password).update(block1).digest();if(!hLen){hLen=U.length;T=new Buffer(hLen);l=Math.ceil(keylen/hLen);r=keylen-(l-1)*hLen;if(keylen>(Math.pow(2,32)-1)*hLen)throw new TypeError("keylen exceeds maximum length")}U.copy(T,0,0,hLen);for(var j=1;j<iterations;j++){U=crypto.createHmac(digest,password).update(U).digest();for(var k=0;k<hLen;k++){T[k]^=U[k]}}var destPos=(i-1)*hLen;var len=i==l?r:hLen;T.copy(DK,destPos,0,len)}return DK}return{pbkdf2:pbkdf2,pbkdf2Sync:pbkdf2Sync}}}).call(this,require("buffer").Buffer)},{buffer:350}],270:[function(require,module,exports){module.exports=function(exports,crypto){exports.publicEncrypt=require("./publicEncrypt")(crypto);exports.privateDecrypt=require("./privateDecrypt")(crypto)}},{"./privateDecrypt":294,"./publicEncrypt":295}],271:[function(require,module,exports){(function(Buffer){module.exports=function(seed,len,crypto){var t=new Buffer("");var i=0,c;while(t.length<len){c=i2ops(i++);t=Buffer.concat([t,crypto.createHash("sha1").update(seed).update(c).digest()])}return t.slice(0,len)};function i2ops(c){var out=new Buffer(4);out.writeUInt32BE(c,0);return out}}).call(this,require("buffer").Buffer)},{buffer:350}],272:[function(require,module,exports){module.exports=require(182)},{}],273:[function(require,module,exports){module.exports=require(183)},{"bn.js":272,buffer:350}],274:[function(require,module,exports){module.exports=require(204)},{buffer:350}],275:[function(require,module,exports){module.exports=require(205)},{}],276:[function(require,module,exports){arguments[4][206][0].apply(exports,arguments)},{"asn1.js":280,"asn1.js-rfc3280":279}],277:[function(require,module,exports){module.exports=require(207)},{"./EVP_BytesToKey":274,buffer:350}],278:[function(require,module,exports){arguments[4][208][0].apply(exports,arguments)},{"./aesid.json":275,"./asn1":276,"./fixProc":277,buffer:350,pemstrip:293}],279:[function(require,module,exports){arguments[4][209][0].apply(exports,arguments)},{"asn1.js":280}],280:[function(require,module,exports){arguments[4][210][0].apply(exports,arguments)},{"./asn1/api":281,"./asn1/base":283,"./asn1/constants":287,"./asn1/decoders":289,"./asn1/encoders":291,"bn.js":272}],281:[function(require,module,exports){arguments[4][211][0].apply(exports,arguments)},{"../asn1":280,inherits:268,vm:373}],282:[function(require,module,exports){arguments[4][212][0].apply(exports,arguments)},{"../base":283,buffer:350,inherits:268}],283:[function(require,module,exports){arguments[4][213][0].apply(exports,arguments)},{"./buffer":282,"./node":284,"./reporter":285}],284:[function(require,module,exports){arguments[4][214][0].apply(exports,arguments)},{"../base":283,"minimalistic-assert":292}],285:[function(require,module,exports){module.exports=require(215)},{inherits:268}],286:[function(require,module,exports){arguments[4][216][0].apply(exports,arguments)},{"../constants":287}],287:[function(require,module,exports){arguments[4][217][0].apply(exports,arguments)},{"./der":286}],288:[function(require,module,exports){arguments[4][218][0].apply(exports,arguments)},{"../../asn1":280,inherits:268}],289:[function(require,module,exports){arguments[4][219][0].apply(exports,arguments)},{"./der":288}],290:[function(require,module,exports){arguments[4][220][0].apply(exports,arguments)},{"../../asn1":280,buffer:350,inherits:268}],291:[function(require,module,exports){arguments[4][221][0].apply(exports,arguments)},{"./der":290}],292:[function(require,module,exports){module.exports=require(222)},{}],293:[function(require,module,exports){module.exports=require(223)},{}],294:[function(require,module,exports){(function(Buffer){var parseKeys=require("parse-asn1");var mgf=require("./mgf");var xor=require("./xor");var bn=require("bn.js");var crt=require("browserify-rsa");module.exports=function(crypto){return privateDecrypt;function privateDecrypt(private_key,enc){var padding;if(private_key.padding){padding=private_key.padding}else{padding=4}var key=parseKeys(private_key,crypto);var k=key.modulus.byteLength();if(enc.length>k||new bn(enc).cmp(key.modulus)>=0){throw new Error("decryption error")}var msg=crt(enc,key,crypto);var zBuffer=new Buffer(k-msg.length);zBuffer.fill(0);msg=Buffer.concat([zBuffer,msg],k);if(padding===4){return oaep(key,msg,crypto)}else if(padding===1){return pkcs1(key,msg,crypto)}else if(padding===3){return msg}else{throw new Error("unknown padding")}}};function oaep(key,msg,crypto){var n=key.modulus;var k=key.modulus.byteLength();var mLen=msg.length;var iHash=crypto.createHash("sha1").update(new Buffer("")).digest();var hLen=iHash.length;var hLen2=2*hLen;if(msg[0]!==0){throw new Error("decryption error")}var maskedSeed=msg.slice(1,hLen+1);var maskedDb=msg.slice(hLen+1);var seed=xor(maskedSeed,mgf(maskedDb,hLen,crypto));var db=xor(maskedDb,mgf(seed,k-hLen-1,crypto));if(compare(iHash,db.slice(0,hLen))){throw new Error("decryption error")}var i=hLen;while(db[i]===0){i++}if(db[i++]!==1){throw new Error("decryption error")}return db.slice(i)}function pkcs1(key,msg,crypto){var p1=msg.slice(0,2);var i=2;var status=0;while(msg[i++]!==0){if(i>=msg.length){status++;break}}var ps=msg.slice(2,i-1);var p2=msg.slice(i-1,i);if(p1.toString("hex")!=="0002"){status++}if(ps.length<8){status++}return msg.slice(i)}function compare(a,b){var dif=0;var len=a.length;if(a.length!==b.length){dif++;len=Math.min(a.length,b.length)}var i=-1;while(++i<len){dif+=a[i]^b[i]}return dif}}).call(this,require("buffer").Buffer)},{"./mgf":271,"./xor":296,"bn.js":272,"browserify-rsa":273,buffer:350,"parse-asn1":278}],295:[function(require,module,exports){(function(Buffer){var parseKeys=require("parse-asn1");var mgf=require("./mgf");var xor=require("./xor");var bn=require("bn.js");var constants={RSA_PKCS1_OAEP_PADDING:4,RSA_PKCS1_PADDIN:1,RSA_NO_PADDING:3};module.exports=function(crypto){return publicEncrypt;function publicEncrypt(public_key,msg){var padding;if(public_key.padding){padding=public_key.padding}else{padding=4}var key=parseKeys(public_key);var paddedMsg;if(padding===4){paddedMsg=oaep(key,msg,crypto)}else if(padding===1){paddedMsg=pkcs1(key,msg,crypto)}else if(padding===3){paddedMsg=new bn(msg);if(paddedMsg.cmp(key.modulus)>=0){throw new Error("data too long for modulus")}}else{throw new Error("unknown padding")}var enc=paddedMsg.toRed(bn.mont(key.modulus)).redPow(new bn(key.publicExponent)).fromRed().toArray();return new Buffer(enc)}};function oaep(key,msg,crypto){var k=key.modulus.byteLength();var mLen=msg.length;var iHash=crypto.createHash("sha1").update(new Buffer("")).digest();var hLen=iHash.length;var hLen2=2*hLen;if(mLen>k-hLen2-2){throw new Error("message too long")}var ps=new Buffer(k-mLen-hLen2-2);ps.fill(0);var dblen=k-hLen-1;var seed=crypto.randomBytes(hLen);var maskedDb=xor(Buffer.concat([iHash,ps,new Buffer([1]),msg],dblen),mgf(seed,dblen,crypto));var maskedSeed=xor(seed,mgf(maskedDb,hLen,crypto));return new bn(Buffer.concat([new Buffer([0]),maskedSeed,maskedDb],k))}function pkcs1(key,msg,crypto){var mLen=msg.length;var k=key.modulus.byteLength();if(mLen>k-11){throw new Error("message too long")}var ps=nonZero(k-mLen-3,crypto);return new bn(Buffer.concat([new Buffer([0,2]),ps,new Buffer([0]),msg],k))}function nonZero(len,crypto){var out=new Buffer(len);var i=0;var cache=crypto.randomBytes(len*2);var cur=0;var num;while(i<len){if(cur===cache.length){cache=crypto.randomBytes(len*2);cur=0}num=cache[cur++];if(num){out[i++]=num}}return out}}).call(this,require("buffer").Buffer)},{"./mgf":271,"./xor":296,"bn.js":272,buffer:350,"parse-asn1":278}],296:[function(require,module,exports){module.exports=function xor(a,b){var len=a.length;var i=-1;while(++i<len){a[i]^=b[i]}return a}},{}],297:[function(require,module,exports){(function(process,global,Buffer){"use strict";var crypto=global.crypto||global.msCrypto;if(crypto&&crypto.getRandomValues){module.exports=randomBytes}else{module.exports=oldBrowser}function randomBytes(size,cb){var bytes=new Buffer(size);crypto.getRandomValues(bytes);if(typeof cb==="function"){return process.nextTick(function(){cb(null,bytes)})}return bytes}function oldBrowser(){throw new Error("secure random number generation not supported by this browser\n"+"use chrome, FireFox or Internet Explorer 11")}}).call(this,require("/var/sites/requirebin-cdn/node_modules/browserify-cdn/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js"),typeof self!=="undefined"?self:typeof window!=="undefined"?window:{},require("buffer").Buffer)},{"/var/sites/requirebin-cdn/node_modules/browserify-cdn/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js":361,buffer:350}],298:[function(require,module,exports){"use strict";var pbkdf2Export=require("pbkdf2-compat/pbkdf2");module.exports=function(crypto,exports){exports=exports||{};var exported=pbkdf2Export(crypto);exports.pbkdf2=exported.pbkdf2;exports.pbkdf2Sync=exported.pbkdf2Sync;return exports}},{"pbkdf2-compat/pbkdf2":269}],299:[function(require,module,exports){(function(global,Buffer){"use strict";(function(){var g=("undefined"===typeof window?global:window)||{};var _crypto=g.crypto||g.msCrypto||require("crypto");module.exports=function(size){if(_crypto.getRandomValues){var bytes=new Buffer(size);_crypto.getRandomValues(bytes);return bytes}else if(_crypto.pseudoRandomBytes){return _crypto.pseudoRandomBytes(size)}else throw new Error("pseudo random number generation not yet implemented for this browser\n"+"use chrome, FireFox or Internet Explorer 11")}})()}).call(this,typeof self!=="undefined"?self:typeof window!=="undefined"?window:{},require("buffer").Buffer)},{buffer:350,crypto:349}],300:[function(require,module,exports){var util=require("util");var intersect=require("intersect");var WildEmitter=require("wildemitter");var webrtc=require("webrtcsupport");var BaseSession=require("jingle-session");var MediaSession=require("jingle-media-session");var FileSession=require("jingle-filetransfer-session");function SessionManager(conf){WildEmitter.call(this);conf=conf||{};this.jid=conf.jid;this.selfID=conf.selfID||this.jid&&this.jid.full||this.jid||"";this.sessions={};this.peers={};this.prepareSession=conf.prepareSession||function(opts){if(opts.descriptionTypes.indexOf("rtp")>=0){return new MediaSession(opts)}if(opts.descriptionTypes.indexOf("filetransfer")>=0){return new FileSession(opts)}};this.screenSharingSupport=webrtc.screenSharing;this.capabilities=["urn:xmpp:jingle:1"];if(webrtc.support){this.capabilities=["urn:xmpp:jingle:1","urn:xmpp:jingle:apps:rtp:1","urn:xmpp:jingle:apps:rtp:audio","urn:xmpp:jingle:apps:rtp:video","urn:xmpp:jingle:apps:rtp:rtcb-fb:0","urn:xmpp:jingle:apps:rtp:rtp-hdrext:0","urn:xmpp:jingle:apps:rtp:ssma:0","urn:xmpp:jingle:apps:dtls:0","urn:xmpp:jingle:apps:grouping:0","urn:xmpp:jingle:apps:file-transfer:3","urn:xmpp:jingle:transports:ice-udp:1","urn:xmpp:jingle:transports.dtls-sctp:1","urn:ietf:rfc:3264","urn:ietf:rfc:5576","urn:ietf:rfc:5888"]}this.config={debug:false,peerConnectionConfig:{iceServers:conf.iceServers||[{url:"stun:stun.l.google.com:19302"}]},peerConnectionConstraints:{optional:[{DtlsSrtpKeyAgreement:true},{RtpDataChannels:false}]},media:{audio:true,video:true}};for(var item in conf){this.config[item]=conf[item]}this.iceServers=this.config.peerConnectionConfig.iceServers}util.inherits(SessionManager,WildEmitter);SessionManager.prototype.addICEServer=function(server){if(typeof server==="string"){server={url:server}}this.iceServers.push(server)};SessionManager.prototype.addSession=function(session){var self=this;var sid=session.sid;var peer=session.peerID;this.sessions[sid]=session;if(!this.peers[peer]){this.peers[peer]=[]}this.peers[peer].push(session);session.on("terminated",function(){var peers=self.peers[peer]||[];if(peers.length){peers.splice(peers.indexOf(session),1)}delete self.sessions[sid]});session.on("*",function(name,data,extraData,extraData2){if(name==="send"){var action=data.jingle&&data.jingle.action;if(session.isInitiator&&action==="session-initiate"){self.emit("outgoing",session)}}if(self.config.debug&&(name==="log:debug"||name==="log:error")){console.log("Jingle:",data,extraData,extraData2)}if(name.indexOf("change")===0){return}self.emit(name,data,extraData,extraData2)});this.emit("createdSession",session);return session};SessionManager.prototype.createMediaSession=function(peer,sid,stream){var session=new MediaSession({sid:sid,peer:peer,initiator:true,stream:stream,parent:this,iceServers:this.iceServers,constraints:this.config.peerConnectionConstraints});this.addSession(session);return session};SessionManager.prototype.createFileTransferSession=function(peer,sid){var session=new FileSession({sid:sid,peer:peer,initiator:true,parent:this});this.addSession(session);return session};SessionManager.prototype.endPeerSessions=function(peer,reason,silent){peer=peer.full||peer;var sessions=this.peers[peer]||[];delete this.peers[peer];sessions.forEach(function(session){session.end(reason||"gone",silent)})};SessionManager.prototype.endAllSessions=function(reason,silent){var self=this;Object.keys(this.peers).forEach(function(peer){self.endPeerSessions(peer,reason,silent)})};SessionManager.prototype._createIncomingSession=function(meta,req){var session;if(this.prepareSession){session=this.prepareSession(meta,req)}if(!session){session=new BaseSession(meta)}this.addSession(session);return session};SessionManager.prototype._sendError=function(to,id,data){if(!data.type){data.type="cancel"}this.emit("send",{to:to,id:id,type:"error",error:data})};SessionManager.prototype._log=function(level,message){this.emit("log:"+level,message)};SessionManager.prototype.process=function(req){var self=this;var sid=!!req.jingle?req.jingle.sid:null;var session=this.sessions[sid]||null;var rid=req.id;var sender=req.from.full||req.from;if(req.type==="error"){var isTieBreak=req.error&&req.error.jingleCondition==="tie-break";if(session&&session.pending&&isTieBreak){return session.end("alternative-session",true)}else{if(session){session.pendingAction=false}return this.emit("error",req)}}if(req.type==="result"){if(session){session.pendingAction=false}return}var action=req.jingle.action;var contents=req.jingle.contents||[];var descriptionTypes=contents.map(function(content){if(content.description){return content.description.descType}});var transportTypes=contents.map(function(content){if(content.transport){return content.transport.transType}});if(action!=="session-initiate"){if(!session){this._log("error","Unknown session",sid);return this._sendError(sender,rid,{condition:"item-not-found",jingleCondition:"unknown-session"})}if(session.peerID!==sender||session.ended){this._log("error","Session has ended, or action has wrong sender");return this._sendError(sender,rid,{condition:"item-not-found",jingleCondition:"unknown-session"})}if(action==="session-accept"&&!session.pending){this._log("error","Tried to accept session twice",sid);return this._sendError(sender,rid,{condition:"unexpected-request",jingleCondition:"out-of-order"})}if(action!=="session-terminate"&&action===session.pendingAction){this._log("error","Tie break during pending request");if(session.isInitiator){return this._sendError(sender,rid,{condition:"conflict",jingleCondition:"tie-break"})}}}else if(session){if(session.peerID!==sender){this._log("error","Duplicate sid from new sender");return this._sendError(sender,rid,{condition:"service-unavailable"})}if(session.pending){if(this.selfID>session.peerID){this._log("error","Tie break new session because of duplicate sids");return this._sendError(sender,rid,{condition:"conflict",jingleCondition:"tie-break"})}}else{this._log("error","Someone is doing this wrong");return this._sendError(sender,rid,{condition:"unexpected-request",jingleCondition:"out-of-order"})}}else if(this.peers[sender]&&this.peers[sender].length){for(var i=0,len=this.peers[sender].length;i<len;i++){var sess=this.peers[sender][i];if(sess&&sess.pending){if(intersect(descriptionTypes,sess.pendingDescriptionTypes).length){if(sess.sid>sid){this._log("info","Tie break");return this._sendError(sender,rid,{condition:"conflict",jingleCondition:"tie-break"})}}}}}if(action==="session-initiate"){if(!contents.length){return self._sendError(sender,rid,{condition:"bad-request"})}session=this._createIncomingSession({sid:sid,peer:req.from,peerID:sender,initiator:false,parent:this,descriptionTypes:descriptionTypes,transportTypes:transportTypes,iceServers:this.iceServers,constraints:this.peerConnectionConstraints},req)}session.process(action,req.jingle,function(err){if(err){self._log("error","Could not process request",req,err);self._sendError(sender,rid,err)}else{self.emit("send",{to:sender,id:rid,type:"result"});if(action==="session-initiate"){self.emit("incoming",session)}}})};module.exports=SessionManager},{intersect:302,"jingle-filetransfer-session":303,"jingle-media-session":311,"jingle-session":318,util:372,webrtcsupport:319,wildemitter:346}],301:[function(require,module,exports){var arr=[];var each=arr.forEach;var slice=arr.slice;module.exports=function(obj){each.call(slice.call(arguments,1),function(source){if(source){for(var prop in source){obj[prop]=source[prop]}}});return obj}},{}],302:[function(require,module,exports){module.exports=intersect;function intersect(a,b){var res=[];for(var i=0;i<a.length;i++){if(indexOf(b,a[i])>-1)res.push(a[i])}return res}intersect.big=function(a,b){var ret=[];var temp={};for(var i=0;i<b.length;i++){temp[b[i]]=true}for(var i=0;i<a.length;i++){if(temp[a[i]])ret.push(a[i])}return ret};function indexOf(arr,el){for(var i=0;i<arr.length;i++){if(arr[i]===el)return i}return-1}},{}],303:[function(require,module,exports){var util=require("util");var extend=require("extend-object");var BaseSession=require("jingle-session");var RTCPeerConnection=require("rtcpeerconnection");var FileTransfer=require("filetransfer");function FileTransferSession(opts){BaseSession.call(this,opts);var self=this;this.pc=new RTCPeerConnection({iceServers:opts.iceServers||[],useJingle:true},opts.constraints||{});this.pc.on("ice",this.onIceCandidate.bind(this));this.pc.on("iceConnectionStateChange",this.onIceStateChange.bind(this));this.pc.on("addChannel",this.onChannelAdded.bind(this));this.sender=new FileTransfer.Sender;this.sender.on("progress",function(sent,size){self._log("info","Send progress "+sent+"/"+size)});this.sender.on("sentFile",function(meta){self._log("info","Sent file",meta.name);var content=self.pc.localDescription.contents[0];delete content.transport;content.description={descType:"filetransfer",offer:{hash:{algo:meta.algo,value:meta.hash}}};self.send("description-info",{contents:[content]});self.emit("sentFile",self,meta)});this.receiver=new FileTransfer.Receiver;this.receiver.on("progress",function(received,size){self._log("info","Receive progress "+received+"/"+size)});this.receiver.on("receivedFile",function(file){self.receivedFile=file;self.maybeReceivedFile()})}util.inherits(FileTransferSession,BaseSession);FileTransferSession.prototype=extend(FileTransferSession.prototype,{start:function(file){var self=this;this.state="pending";this.pc.isInitiator=true;var sendChannel=this.pc.createDataChannel("filetransfer");sendChannel.onopen=function(){self.sender.send(file,sendChannel)};var constraints={mandatory:{OfferToReceiveAudio:false,OfferToReceiveVideo:false}};this.pc.offer(constraints,function(err,offer){if(err){self._log("error","Could not create WebRTC offer",err);return self.end("failed-application",true)}offer.jingle.contents[0].description={descType:"filetransfer",offer:{date:file.lastModifiedDate,name:file.name,size:file.size,hash:{algo:"sha-1",value:""}}};self.send("session-initiate",offer.jingle)})},accept:function(){var self=this;this._log("info","Accepted incoming session");this.state="active";this.pc.answer(function(err,answer){if(err){self._log("error","Could not create WebRTC answer",err);return self.end("failed-application")}answer.jingle.contents[0].name="data";self.send("session-accept",answer.jingle)})},end:function(reason,silent){this.pc.close();BaseSession.prototype.end.call(this,reason,silent)},maybeReceivedFile:function(){if(!this.receiver.metadata.hash.value){}else if(this.receiver.metadata.hash.value===this.receiver.metadata.actualhash){this._log("info","File hash matches");this.emit("receivedFile",this,this.receivedFile,this.receiver.metadata);this.end("success")}else{this._log("error","File hash does not match");this.end("media-error")}},onIceCandidate:function(candidate){this._log("info","Discovered new ICE candidate",candidate.jingle);candidate.jingle.contents[0].name="data";this.send("transport-info",candidate.jingle)},onIceStateChange:function(){switch(this.pc.iceConnectionState){case"checking":this.connectionState="connecting";break;case"completed":case"connected":this.connectionState="connected";break;case"disconnected":if(this.pc.signalingState==="stable"){this.connectionState="interrupted"}else{this.connectionState="disconnected"}break;case"failed":this.connectionState="failed";if(this.pc.isInitiator){this.emit("iceFailed",this.session)}break;case"closed":this.connectionState="disconnected";break}},onChannelAdded:function(channel){this.receiver.receive(null,channel)},onSessionInitiate:function(changes,cb){var self=this;this._log("info","Initiating incoming session");this.state="pending";this.pc.isInitiator=false;var desc=changes.contents[0].description;this.receiver.metadata=desc.offer.toJSON();if(this.receiver.metadata.hash){this.receiver.config.hash=this.receiver.metadata.hash.algo}changes.contents[0].description={descType:"datachannel"};this.pc.handleOffer({type:"offer",jingle:changes},function(err){if(err){self._log("error","Could not create WebRTC answer");return cb({condition:"general-error"})}cb()})},onSessionAccept:function(changes,cb){var self=this;this.state="active";changes.contents[0].description={descType:"datachannel"};this.pc.handleAnswer({type:"answer",jingle:changes},function(err){if(err){self._log("error","Could not process WebRTC answer");return cb({condition:"general-error"})}self.emit("accepted",self);cb()})},onSessionTerminate:function(changes,cb){this._log("info","Terminating session");this.pc.close();BaseSession.prototype.end.call(this,changes.reason,true);cb()},onDescriptionInfo:function(info,cb){var hash=info.contents[0].description.offer.hash;this.receiver.metadata.hash=hash;if(this.receiver.metadata.actualhash){this.maybeReceivedFile()}cb()},onTransportInfo:function(changes,cb){this.pc.processIce(changes,function(){cb()})}});module.exports=FileTransferSession},{"extend-object":301,filetransfer:304,"jingle-session":318,rtcpeerconnection:310,util:372}],304:[function(require,module,exports){var async=require("async");var WildEmitter=require("wildemitter");var util=require("util");var hashes=require("iana-hashes");function Sender(opts){WildEmitter.call(this);var self=this;var options=opts||{};this.config={chunksize:16384,pacing:10,hash:"sha-1"};var item;for(item in options){this.config[item]=options[item]}this.file=null;this.channel=null;this.hash=null;this.processingQueue=async.queue(function(task,next){if(task.type=="chunk"){var reader=new window.FileReader;reader.onload=function(){return function(e){self.channel.send(e.target.result);self.hash.update(new Uint8Array(e.target.result));self.emit("progress",task.start,task.file.size);window.setTimeout(next,self.config.pacing)}}(task.file);var slice=task.file.slice(task.start,task.start+task.size);reader.readAsArrayBuffer(slice)}else if(task.type=="complete"){self.emit("sentFile",{hash:self.hash.digest("hex"),algo:self.config.hash});next()}})}util.inherits(Sender,WildEmitter);Sender.prototype.send=function(file,channel){this.file=file;this.hash=hashes.createHash(this.config.hash);this.channel=channel;for(var start=0;start<this.file.size;start+=this.config.chunksize){this.processingQueue.push({type:"chunk",file:file,start:start,size:this.config.chunksize})}this.processingQueue.push({type:"complete"})};function Receiver(opts){WildEmitter.call(this);var options=opts||{};this.config={hash:"sha-1"};var item;for(item in options){this.config[item]=options[item]}this.receiveBuffer=[];this.received=0;this.metadata={};this.channel=null;this.hash=null}util.inherits(Receiver,WildEmitter);Receiver.prototype.receive=function(metadata,channel){var self=this;if(metadata){this.metadata=metadata}this.hash=hashes.createHash(this.config.hash);this.channel=channel;channel.binaryType="arraybuffer";this.channel.onmessage=function(event){var len=event.data.byteLength;self.received+=len;self.receiveBuffer.push(event.data);self.hash.update(new Uint8Array(event.data));self.emit("progress",self.received,self.metadata.size);if(self.received==self.metadata.size){self.metadata.actualhash=self.hash.digest("hex");self.emit("receivedFile",new window.Blob(self.receiveBuffer),self.metadata);self.receiveBuffer=[]}else if(self.received>self.metadata.size){console.error("received more than expected, discarding...");self.receiveBuffer=[]}}};module.exports={};module.exports.support=window&&window.File&&window.FileReader&&window.Blob;module.exports.Sender=Sender;module.exports.Receiver=Receiver},{async:119,"iana-hashes":160,util:372,wildemitter:346}],305:[function(require,module,exports){var tosdp=require("./lib/tosdp");var tojson=require("./lib/tojson");exports.toSessionSDP=tosdp.toSessionSDP;exports.toMediaSDP=tosdp.toMediaSDP;exports.toCandidateSDP=tosdp.toCandidateSDP;exports.toSessionJSON=tojson.toSessionJSON;exports.toMediaJSON=tojson.toMediaJSON;exports.toCandidateJSON=tojson.toCandidateJSON},{"./lib/tojson":307,"./lib/tosdp":308}],306:[function(require,module,exports){exports.lines=function(sdp){return sdp.split("\r\n").filter(function(line){return line.length>0})};exports.findLine=function(prefix,mediaLines,sessionLines){var prefixLength=prefix.length;for(var i=0;i<mediaLines.length;i++){if(mediaLines[i].substr(0,prefixLength)===prefix){return mediaLines[i]}}if(!sessionLines){return false}for(var j=0;j<sessionLines.length;j++){if(sessionLines[j].substr(0,prefixLength)===prefix){return sessionLines[j]}}return false};exports.findLines=function(prefix,mediaLines,sessionLines){var results=[];var prefixLength=prefix.length;for(var i=0;i<mediaLines.length;i++){if(mediaLines[i].substr(0,prefixLength)===prefix){results.push(mediaLines[i])}}if(results.length||!sessionLines){return results}for(var j=0;j<sessionLines.length;j++){if(sessionLines[j].substr(0,prefixLength)===prefix){results.push(sessionLines[j])}}return results};exports.mline=function(line){var parts=line.substr(2).split(" ");var parsed={media:parts[0],port:parts[1],proto:parts[2],formats:[]};for(var i=3;i<parts.length;i++){if(parts[i]){parsed.formats.push(parts[i])}}return parsed};exports.rtpmap=function(line){var parts=line.substr(9).split(" ");var parsed={id:parts.shift()};parts=parts[0].split("/");parsed.name=parts[0];parsed.clockrate=parts[1];parsed.channels=parts.length==3?parts[2]:"1";return parsed};exports.sctpmap=function(line){var parts=line.substr(10).split(" ");var parsed={number:parts.shift(),protocol:parts.shift(),streams:parts.shift()};return parsed};exports.fmtp=function(line){var kv,key,value;var parts=line.substr(line.indexOf(" ")+1).split(";");var parsed=[];for(var i=0;i<parts.length;i++){kv=parts[i].split("=");key=kv[0].trim();value=kv[1];if(key&&value){parsed.push({key:key,value:value})}else if(key){parsed.push({key:"",value:key})}}return parsed};exports.crypto=function(line){var parts=line.substr(9).split(" ");var parsed={tag:parts[0],cipherSuite:parts[1],keyParams:parts[2],sessionParams:parts.slice(3).join(" ")};return parsed};exports.fingerprint=function(line){var parts=line.substr(14).split(" ");return{hash:parts[0],value:parts[1]}};exports.extmap=function(line){var parts=line.substr(9).split(" ");var parsed={};var idpart=parts.shift();var sp=idpart.indexOf("/");if(sp>=0){parsed.id=idpart.substr(0,sp);parsed.senders=idpart.substr(sp+1)}else{parsed.id=idpart;parsed.senders="sendrecv"}parsed.uri=parts.shift()||"";return parsed};exports.rtcpfb=function(line){var parts=line.substr(10).split(" ");var parsed={};parsed.id=parts.shift();parsed.type=parts.shift();if(parsed.type==="trr-int"){parsed.value=parts.shift()}else{parsed.subtype=parts.shift()||""}parsed.parameters=parts;return parsed};exports.candidate=function(line){var parts;if(line.indexOf("a=candidate:")===0){parts=line.substring(12).split(" ")}else{parts=line.substring(10).split(" ")}var candidate={foundation:parts[0],component:parts[1],protocol:parts[2].toLowerCase(),priority:parts[3],ip:parts[4],port:parts[5],type:parts[7],generation:"0"};for(var i=8;i<parts.length;i+=2){if(parts[i]==="raddr"){candidate.relAddr=parts[i+1]}else if(parts[i]==="rport"){candidate.relPort=parts[i+1]}else if(parts[i]==="generation"){candidate.generation=parts[i+1]}else if(parts[i]==="tcptype"){candidate.tcpType=parts[i+1]}}candidate.network="1";return candidate};exports.sourceGroups=function(lines){var parsed=[];for(var i=0;i<lines.length;i++){var parts=lines[i].substr(13).split(" ");parsed.push({semantics:parts.shift(),sources:parts})}return parsed};exports.sources=function(lines){var parsed=[];var sources={};for(var i=0;i<lines.length;i++){var parts=lines[i].substr(7).split(" ");var ssrc=parts.shift();if(!sources[ssrc]){var source={ssrc:ssrc,parameters:[]};parsed.push(source);sources[ssrc]=source}parts=parts.join(" ").split(":");var attribute=parts.shift();var value=parts.join(":")||null;sources[ssrc].parameters.push({key:attribute,value:value})}return parsed};exports.groups=function(lines){var parsed=[];var parts;for(var i=0;i<lines.length;i++){parts=lines[i].substr(8).split(" ");parsed.push({semantics:parts.shift(),contents:parts})}return parsed};exports.bandwidth=function(line){var parts=line.substr(2).split(":");var parsed={};parsed.type=parts.shift();parsed.bandwidth=parts.shift();return parsed}},{}],307:[function(require,module,exports){var parsers=require("./parsers");var idCounter=Math.random();exports._setIdCounter=function(counter){idCounter=counter};exports.toSessionJSON=function(sdp,creator){var media=sdp.split("\r\nm=");for(var i=1;i<media.length;i++){media[i]="m="+media[i];if(i!==media.length-1){media[i]+="\r\n"}}var session=media.shift()+"\r\n";var sessionLines=parsers.lines(session);var parsed={};var contents=[];media.forEach(function(m){contents.push(exports.toMediaJSON(m,session,creator))});parsed.contents=contents;var groupLines=parsers.findLines("a=group:",sessionLines);if(groupLines.length){parsed.groups=parsers.groups(groupLines)}return parsed};exports.toMediaJSON=function(media,session,creator){var lines=parsers.lines(media);var sessionLines=parsers.lines(session);var mline=parsers.mline(lines[0]);var content={creator:creator,name:mline.media,description:{descType:"rtp",media:mline.media,payloads:[],encryption:[],feedback:[],headerExtensions:[]},transport:{transType:"iceUdp",candidates:[],fingerprints:[]}};if(mline.media=="application"){content.description={descType:"datachannel"};content.transport.sctp=[]}var desc=content.description;var trans=content.transport;var mid=parsers.findLine("a=mid:",lines);if(mid){content.name=mid.substr(6)}if(parsers.findLine("a=sendrecv",lines,sessionLines)){content.senders="both"}else if(parsers.findLine("a=sendonly",lines,sessionLines)){content.senders="initiator"}else if(parsers.findLine("a=recvonly",lines,sessionLines)){content.senders="responder"}else if(parsers.findLine("a=inactive",lines,sessionLines)){content.senders="none"}if(desc.descType=="rtp"){var bandwidth=parsers.findLine("b=",lines);if(bandwidth){desc.bandwidth=parsers.bandwidth(bandwidth)}var ssrc=parsers.findLine("a=ssrc:",lines);if(ssrc){desc.ssrc=ssrc.substr(7).split(" ")[0]}var rtpmapLines=parsers.findLines("a=rtpmap:",lines);rtpmapLines.forEach(function(line){var payload=parsers.rtpmap(line);payload.feedback=[];var fmtpLines=parsers.findLines("a=fmtp:"+payload.id,lines);fmtpLines.forEach(function(line){payload.parameters=parsers.fmtp(line)});var fbLines=parsers.findLines("a=rtcp-fb:"+payload.id,lines);fbLines.forEach(function(line){payload.feedback.push(parsers.rtcpfb(line))
});desc.payloads.push(payload)});var cryptoLines=parsers.findLines("a=crypto:",lines,sessionLines);cryptoLines.forEach(function(line){desc.encryption.push(parsers.crypto(line))});if(parsers.findLine("a=rtcp-mux",lines)){desc.mux=true}var fbLines=parsers.findLines("a=rtcp-fb:*",lines);fbLines.forEach(function(line){desc.feedback.push(parsers.rtcpfb(line))});var extLines=parsers.findLines("a=extmap:",lines);extLines.forEach(function(line){var ext=parsers.extmap(line);var senders={sendonly:"responder",recvonly:"initiator",sendrecv:"both",inactive:"none"};ext.senders=senders[ext.senders];desc.headerExtensions.push(ext)});var ssrcGroupLines=parsers.findLines("a=ssrc-group:",lines);desc.sourceGroups=parsers.sourceGroups(ssrcGroupLines||[]);var ssrcLines=parsers.findLines("a=ssrc:",lines);desc.sources=parsers.sources(ssrcLines||[]);if(parsers.findLine("a=x-google-flag:conference",lines,sessionLines)){desc.googConferenceFlag=true}}var fingerprintLines=parsers.findLines("a=fingerprint:",lines,sessionLines);var setup=parsers.findLine("a=setup:",lines,sessionLines);fingerprintLines.forEach(function(line){var fp=parsers.fingerprint(line);if(setup){fp.setup=setup.substr(8)}trans.fingerprints.push(fp)});var ufragLine=parsers.findLine("a=ice-ufrag:",lines,sessionLines);var pwdLine=parsers.findLine("a=ice-pwd:",lines,sessionLines);if(ufragLine&&pwdLine){trans.ufrag=ufragLine.substr(12);trans.pwd=pwdLine.substr(10);trans.candidates=[];var candidateLines=parsers.findLines("a=candidate:",lines,sessionLines);candidateLines.forEach(function(line){trans.candidates.push(exports.toCandidateJSON(line))})}if(desc.descType=="datachannel"){var sctpmapLines=parsers.findLines("a=sctpmap:",lines);sctpmapLines.forEach(function(line){var sctp=parsers.sctpmap(line);trans.sctp.push(sctp)})}return content};exports.toCandidateJSON=function(line){var candidate=parsers.candidate(line.split("\r\n")[0]);candidate.id=(idCounter++).toString(36).substr(0,12);return candidate}},{"./parsers":306}],308:[function(require,module,exports){var senders={initiator:"sendonly",responder:"recvonly",both:"sendrecv",none:"inactive",sendonly:"initator",recvonly:"responder",sendrecv:"both",inactive:"none"};exports.toSessionSDP=function(session,sid,time){var sdp=["v=0","o=- "+(sid||session.sid||Date.now())+" "+(time||Date.now())+" IN IP4 0.0.0.0","s=-","t=0 0"];var groups=session.groups||[];groups.forEach(function(group){sdp.push("a=group:"+group.semantics+" "+group.contents.join(" "))});var contents=session.contents||[];contents.forEach(function(content){sdp.push(exports.toMediaSDP(content))});return sdp.join("\r\n")+"\r\n"};exports.toMediaSDP=function(content){var sdp=[];var desc=content.description;var transport=content.transport;var payloads=desc.payloads||[];var fingerprints=transport&&transport.fingerprints||[];var mline=[];if(desc.descType=="datachannel"){mline.push("application");mline.push("1");mline.push("DTLS/SCTP");if(transport.sctp){transport.sctp.forEach(function(map){mline.push(map.number)})}}else{mline.push(desc.media);mline.push("1");if(desc.encryption&&desc.encryption.length>0||fingerprints.length>0){mline.push("RTP/SAVPF")}else{mline.push("RTP/AVPF")}payloads.forEach(function(payload){mline.push(payload.id)})}sdp.push("m="+mline.join(" "));sdp.push("c=IN IP4 0.0.0.0");if(desc.bandwidth&&desc.bandwidth.type&&desc.bandwidth.bandwidth){sdp.push("b="+desc.bandwidth.type+":"+desc.bandwidth.bandwidth)}if(desc.descType=="rtp"){sdp.push("a=rtcp:1 IN IP4 0.0.0.0")}if(transport){if(transport.ufrag){sdp.push("a=ice-ufrag:"+transport.ufrag)}if(transport.pwd){sdp.push("a=ice-pwd:"+transport.pwd)}var pushedSetup=false;fingerprints.forEach(function(fingerprint){sdp.push("a=fingerprint:"+fingerprint.hash+" "+fingerprint.value);if(fingerprint.setup&&!pushedSetup){sdp.push("a=setup:"+fingerprint.setup)}});if(transport.sctp){transport.sctp.forEach(function(map){sdp.push("a=sctpmap:"+map.number+" "+map.protocol+" "+map.streams)})}}if(desc.descType=="rtp"){sdp.push("a="+(senders[content.senders]||"sendrecv"))}sdp.push("a=mid:"+content.name);if(desc.mux){sdp.push("a=rtcp-mux")}var encryption=desc.encryption||[];encryption.forEach(function(crypto){sdp.push("a=crypto:"+crypto.tag+" "+crypto.cipherSuite+" "+crypto.keyParams+(crypto.sessionParams?" "+crypto.sessionParams:""))});if(desc.googConferenceFlag){sdp.push("a=x-google-flag:conference")}payloads.forEach(function(payload){var rtpmap="a=rtpmap:"+payload.id+" "+payload.name+"/"+payload.clockrate;if(payload.channels&&payload.channels!="1"){rtpmap+="/"+payload.channels}sdp.push(rtpmap);if(payload.parameters&&payload.parameters.length){var fmtp=["a=fmtp:"+payload.id];var parameters=[];payload.parameters.forEach(function(param){parameters.push((param.key?param.key+"=":"")+param.value)});fmtp.push(parameters.join(";"));sdp.push(fmtp.join(" "))}if(payload.feedback){payload.feedback.forEach(function(fb){if(fb.type==="trr-int"){sdp.push("a=rtcp-fb:"+payload.id+" trr-int "+fb.value?fb.value:"0")}else{sdp.push("a=rtcp-fb:"+payload.id+" "+fb.type+(fb.subtype?" "+fb.subtype:""))}})}});if(desc.feedback){desc.feedback.forEach(function(fb){if(fb.type==="trr-int"){sdp.push("a=rtcp-fb:* trr-int "+fb.value?fb.value:"0")}else{sdp.push("a=rtcp-fb:* "+fb.type+(fb.subtype?" "+fb.subtype:""))}})}var hdrExts=desc.headerExtensions||[];hdrExts.forEach(function(hdr){sdp.push("a=extmap:"+hdr.id+(hdr.senders?"/"+senders[hdr.senders]:"")+" "+hdr.uri)});var ssrcGroups=desc.sourceGroups||[];ssrcGroups.forEach(function(ssrcGroup){sdp.push("a=ssrc-group:"+ssrcGroup.semantics+" "+ssrcGroup.sources.join(" "))});var ssrcs=desc.sources||[];ssrcs.forEach(function(ssrc){for(var i=0;i<ssrc.parameters.length;i++){var param=ssrc.parameters[i];sdp.push("a=ssrc:"+(ssrc.ssrc||desc.ssrc)+" "+param.key+(param.value?":"+param.value:""))}});var candidates=transport.candidates||[];candidates.forEach(function(candidate){sdp.push(exports.toCandidateSDP(candidate))});return sdp.join("\r\n")};exports.toCandidateSDP=function(candidate){var sdp=[];sdp.push(candidate.foundation);sdp.push(candidate.component);sdp.push(candidate.protocol.toUpperCase());sdp.push(candidate.priority);sdp.push(candidate.ip);sdp.push(candidate.port);var type=candidate.type;sdp.push("typ");sdp.push(type);if(type==="srflx"||type==="prflx"||type==="relay"){if(candidate.relAddr&&candidate.relPort){sdp.push("raddr");sdp.push(candidate.relAddr);sdp.push("rport");sdp.push(candidate.relPort)}}if(candidate.tcpType&&candidate.protocol.toUpperCase()=="TCP"){sdp.push("tcptype");sdp.push(candidate.tcpType)}sdp.push("generation");sdp.push(candidate.generation||"0");return"a=candidate:"+sdp.join(" ")}},{}],309:[function(require,module,exports){var util=require("util");var webrtc=require("webrtcsupport");var WildEmitter=require("wildemitter");function dumpSDP(description){return{type:description.type,sdp:description.sdp}}function dumpStream(stream){var info={label:stream.id};if(stream.getAudioTracks().length){info.audio=stream.getAudioTracks().map(function(track){return track.id})}if(stream.getVideoTracks().length){info.video=stream.getVideoTracks().map(function(track){return track.id})}return info}function TraceablePeerConnection(config,constraints){var self=this;WildEmitter.call(this);this.peerconnection=new webrtc.PeerConnection(config,constraints);this.trace=function(what,info){self.emit("PeerConnectionTrace",{time:new Date,type:what,value:info||""})};this.onicecandidate=null;this.peerconnection.onicecandidate=function(event){self.trace("onicecandidate",event.candidate);if(self.onicecandidate!==null){self.onicecandidate(event)}};this.onaddstream=null;this.peerconnection.onaddstream=function(event){self.trace("onaddstream",dumpStream(event.stream));if(self.onaddstream!==null){self.onaddstream(event)}};this.onremovestream=null;this.peerconnection.onremovestream=function(event){self.trace("onremovestream",dumpStream(event.stream));if(self.onremovestream!==null){self.onremovestream(event)}};this.onsignalingstatechange=null;this.peerconnection.onsignalingstatechange=function(event){self.trace("onsignalingstatechange",self.signalingState);if(self.onsignalingstatechange!==null){self.onsignalingstatechange(event)}};this.oniceconnectionstatechange=null;this.peerconnection.oniceconnectionstatechange=function(event){self.trace("oniceconnectionstatechange",self.iceConnectionState);if(self.oniceconnectionstatechange!==null){self.oniceconnectionstatechange(event)}};this.onnegotiationneeded=null;this.peerconnection.onnegotiationneeded=function(event){self.trace("onnegotiationneeded");if(self.onnegotiationneeded!==null){self.onnegotiationneeded(event)}};self.ondatachannel=null;this.peerconnection.ondatachannel=function(event){self.trace("ondatachannel",event);if(self.ondatachannel!==null){self.ondatachannel(event)}};this.getLocalStreams=this.peerconnection.getLocalStreams.bind(this.peerconnection);this.getRemoteStreams=this.peerconnection.getRemoteStreams.bind(this.peerconnection)}util.inherits(TraceablePeerConnection,WildEmitter);Object.defineProperty(TraceablePeerConnection.prototype,"signalingState",{get:function(){return this.peerconnection.signalingState}});Object.defineProperty(TraceablePeerConnection.prototype,"iceConnectionState",{get:function(){return this.peerconnection.iceConnectionState}});Object.defineProperty(TraceablePeerConnection.prototype,"localDescription",{get:function(){return this.peerconnection.localDescription}});Object.defineProperty(TraceablePeerConnection.prototype,"remoteDescription",{get:function(){return this.peerconnection.remoteDescription}});TraceablePeerConnection.prototype.addStream=function(stream){this.trace("addStream",dumpStream(stream));this.peerconnection.addStream(stream)};TraceablePeerConnection.prototype.removeStream=function(stream){this.trace("removeStream",dumpStream(stream));this.peerconnection.removeStream(stream)};TraceablePeerConnection.prototype.createDataChannel=function(label,opts){this.trace("createDataChannel",label,opts);return this.peerconnection.createDataChannel(label,opts)};TraceablePeerConnection.prototype.setLocalDescription=function(description,successCallback,failureCallback){var self=this;this.trace("setLocalDescription",dumpSDP(description));this.peerconnection.setLocalDescription(description,function(){self.trace("setLocalDescriptionOnSuccess");successCallback()},function(err){self.trace("setLocalDescriptionOnFailure",err);failureCallback(err)})};TraceablePeerConnection.prototype.setRemoteDescription=function(description,successCallback,failureCallback){var self=this;this.trace("setRemoteDescription",dumpSDP(description));this.peerconnection.setRemoteDescription(description,function(){self.trace("setRemoteDescriptionOnSuccess");successCallback()},function(err){self.trace("setRemoteDescriptionOnFailure",err);failureCallback(err)})};TraceablePeerConnection.prototype.close=function(){this.trace("stop");if(this.statsinterval!==null){window.clearInterval(this.statsinterval);this.statsinterval=null}if(this.peerconnection.signalingState!="closed"){this.peerconnection.close()}};TraceablePeerConnection.prototype.createOffer=function(successCallback,failureCallback,constraints){var self=this;this.trace("createOffer",constraints);this.peerconnection.createOffer(function(offer){self.trace("createOfferOnSuccess",dumpSDP(offer));successCallback(offer)},function(err){self.trace("createOfferOnFailure",err);failureCallback(err)},constraints)};TraceablePeerConnection.prototype.createAnswer=function(successCallback,failureCallback,constraints){var self=this;this.trace("createAnswer",constraints);this.peerconnection.createAnswer(function(answer){self.trace("createAnswerOnSuccess",dumpSDP(answer));successCallback(answer)},function(err){self.trace("createAnswerOnFailure",err);failureCallback(err)},constraints)};TraceablePeerConnection.prototype.addIceCandidate=function(candidate,successCallback,failureCallback){var self=this;this.trace("addIceCandidate",candidate);this.peerconnection.addIceCandidate(candidate,function(){if(successCallback)successCallback()},function(err){self.trace("addIceCandidateOnFailure",err);if(failureCallback)failureCallback(err)})};TraceablePeerConnection.prototype.getStats=function(callback,errback){if(navigator.mozGetUserMedia){this.peerconnection.getStats(null,callback,errback)}else{this.peerconnection.getStats(callback)}};module.exports=TraceablePeerConnection},{util:372,webrtcsupport:319,wildemitter:346}],310:[function(require,module,exports){var _=require("underscore");var util=require("util");var webrtc=require("webrtcsupport");var SJJ=require("sdp-jingle-json");var WildEmitter=require("wildemitter");var peerconn=require("traceablepeerconnection");function PeerConnection(config,constraints){var self=this;var item;WildEmitter.call(this);config=config||{};config.iceServers=config.iceServers||[];this.enableChromeNativeSimulcast=false;if(constraints&&constraints.optional&&webrtc.prefix==="webkit"&&navigator.appVersion.match(/Chromium\//)===null){constraints.optional.forEach(function(constraint,idx){if(constraint.enableChromeNativeSimulcast){self.enableChromeNativeSimulcast=true}})}this.enableMultiStreamHacks=false;if(constraints&&constraints.optional){constraints.optional.forEach(function(constraint,idx){if(constraint.enableMultiStreamHacks){self.enableMultiStreamHacks=true}})}this.pc=new peerconn(config,constraints);this.getLocalStreams=this.pc.getLocalStreams.bind(this.pc);this.getRemoteStreams=this.pc.getRemoteStreams.bind(this.pc);this.addStream=this.pc.addStream.bind(this.pc);this.removeStream=this.pc.removeStream.bind(this.pc);this.pc.on("*",function(){self.emit.apply(self,arguments)});this.pc.onremovestream=this.emit.bind(this,"removeStream");this.pc.onnegotiationneeded=this.emit.bind(this,"negotiationNeeded");this.pc.oniceconnectionstatechange=this.emit.bind(this,"iceConnectionStateChange");this.pc.onsignalingstatechange=this.emit.bind(this,"signalingStateChange");this.pc.onaddstream=this._onAddStream.bind(this);this.pc.onicecandidate=this._onIce.bind(this);this.pc.ondatachannel=this._onDataChannel.bind(this);this.localDescription={contents:[]};this.remoteDescription={contents:[]};this.localStream=null;this.remoteStreams=[];this.config={debug:false,ice:{},sid:"",isInitiator:true,sdpSessionID:Date.now(),useJingle:false};for(item in config){this.config[item]=config[item]}if(this.config.debug){this.on("*",function(eventName,event){var logger=config.logger||console;logger.log("PeerConnection event:",arguments)})}this.hadLocalStunCandidate=false;this.hadRemoteStunCandidate=false;this.hadLocalRelayCandidate=false;this.hadRemoteRelayCandidate=false;this.hadLocalIPv6Candidate=false;this.hadRemoteIPv6Candidate=false;this._remoteDataChannels=[];this._localDataChannels=[]}util.inherits(PeerConnection,WildEmitter);Object.defineProperty(PeerConnection.prototype,"signalingState",{get:function(){return this.pc.signalingState}});Object.defineProperty(PeerConnection.prototype,"iceConnectionState",{get:function(){return this.pc.iceConnectionState}});PeerConnection.prototype.addStream=function(stream){this.localStream=stream;this.pc.addStream(stream)};PeerConnection.prototype._checkLocalCandidate=function(candidate){var cand=SJJ.toCandidateJSON(candidate);if(cand.type=="srflx"){this.hadLocalStunCandidate=true}else if(cand.type=="relay"){this.hadLocalRelayCandidate=true}if(cand.ip.indexOf(":")!=-1){this.hadLocalIPv6Candidate=true}};PeerConnection.prototype._checkRemoteCandidate=function(candidate){var cand=SJJ.toCandidateJSON(candidate);if(cand.type=="srflx"){this.hadRemoteStunCandidate=true}else if(cand.type=="relay"){this.hadRemoteRelayCandidate=true}if(cand.ip.indexOf(":")!=-1){this.hadRemoteIPv6Candidate=true}};PeerConnection.prototype.processIce=function(update,cb){cb=cb||function(){};var self=this;if(update.contents){var contentNames=_.pluck(this.remoteDescription.contents,"name");var contents=update.contents;contents.forEach(function(content){var transport=content.transport||{};var candidates=transport.candidates||[];var mline=contentNames.indexOf(content.name);var mid=content.name;candidates.forEach(function(candidate){var iceCandidate=SJJ.toCandidateSDP(candidate)+"\r\n";self.pc.addIceCandidate(new webrtc.IceCandidate({candidate:iceCandidate,sdpMLineIndex:mline,sdpMid:mid}));self._checkRemoteCandidate(iceCandidate)})})}else{if(update.candidate.candidate.indexOf("a=")!==0){update.candidate.candidate="a="+update.candidate.candidate}self.pc.addIceCandidate(new webrtc.IceCandidate(update.candidate));self._checkRemoteCandidate(update.candidate.candidate)}cb()};PeerConnection.prototype.offer=function(constraints,cb){var self=this;var hasConstraints=arguments.length===2;var mediaConstraints=hasConstraints?constraints:{mandatory:{OfferToReceiveAudio:true,OfferToReceiveVideo:true}};cb=hasConstraints?cb:constraints;cb=cb||function(){};this.pc.createOffer(function(offer){self.pc.setLocalDescription(offer,function(){var jingle;var expandedOffer={type:"offer",sdp:offer.sdp};if(self.config.useJingle){jingle=SJJ.toSessionJSON(offer.sdp,self.config.isInitiator?"initiator":"responder");jingle.sid=self.config.sid;self.localDescription=jingle;_.each(jingle.contents,function(content){var transport=content.transport||{};if(transport.ufrag){self.config.ice[content.name]={ufrag:transport.ufrag,pwd:transport.pwd}}});expandedOffer.jingle=jingle}expandedOffer.sdp.split("\r\n").forEach(function(line){if(line.indexOf("a=candidate:")===0){self._checkLocalCandidate(line)}});self.emit("offer",expandedOffer);cb(null,expandedOffer)},function(err){self.emit("error",err);cb(err)})},function(err){self.emit("error",err);cb(err)},mediaConstraints)};PeerConnection.prototype.handleOffer=function(offer,cb){cb=cb||function(){};var self=this;offer.type="offer";if(offer.jingle){if(this.enableChromeNativeSimulcast){offer.jingle.contents.forEach(function(content){if(content.name==="video"){content.description.googConferenceFlag=true}})}offer.sdp=SJJ.toSessionSDP(offer.jingle,self.config.sdpSessionID);self.remoteDescription=offer.jingle}offer.sdp.split("\r\n").forEach(function(line){if(line.indexOf("a=candidate:")===0){self._checkRemoteCandidate(line)}});self.pc.setRemoteDescription(new webrtc.SessionDescription(offer),function(){cb()},cb)};PeerConnection.prototype.answerAudioOnly=function(cb){var mediaConstraints={mandatory:{OfferToReceiveAudio:true,OfferToReceiveVideo:false}};this._answer(mediaConstraints,cb)};PeerConnection.prototype.answerBroadcastOnly=function(cb){var mediaConstraints={mandatory:{OfferToReceiveAudio:false,OfferToReceiveVideo:false}};this._answer(mediaConstraints,cb)};PeerConnection.prototype.answer=function(constraints,cb){var self=this;var hasConstraints=arguments.length===2;var callback=hasConstraints?cb:constraints;var mediaConstraints=hasConstraints?constraints:{mandatory:{OfferToReceiveAudio:true,OfferToReceiveVideo:true}};this._answer(mediaConstraints,callback)};PeerConnection.prototype.handleAnswer=function(answer,cb){cb=cb||function(){};var self=this;if(answer.jingle){answer.sdp=SJJ.toSessionSDP(answer.jingle,self.config.sdpSessionID);self.remoteDescription=answer.jingle}answer.sdp.split("\r\n").forEach(function(line){if(line.indexOf("a=candidate:")===0){self._checkRemoteCandidate(line)}});self.pc.setRemoteDescription(new webrtc.SessionDescription(answer),function(){cb(null)},cb)};PeerConnection.prototype.close=function(){this.pc.close();this._localDataChannels=[];this._remoteDataChannels=[];this.emit("close")};PeerConnection.prototype._answer=function(constraints,cb){cb=cb||function(){};var self=this;if(!this.pc.remoteDescription){throw new Error("remoteDescription not set")}self.pc.createAnswer(function(answer){var sim=[];var rtx=[];if(self.enableChromeNativeSimulcast){answer.jingle=SJJ.toSessionJSON(answer.sdp);if(answer.jingle.contents.length>=2&&answer.jingle.contents[1].name==="video"){var hasSimgroup=false;var groups=answer.jingle.contents[1].description.sourceGroups||[];var hasSim=false;groups.forEach(function(group){if(group.semantics=="SIM")hasSim=true});if(!hasSim&&answer.jingle.contents[1].description.sources.length){var newssrc=JSON.parse(JSON.stringify(answer.jingle.contents[1].description.sources[0]));newssrc.ssrc=""+Math.floor(Math.random()*4294967295);answer.jingle.contents[1].description.sources.push(newssrc);sim.push(answer.jingle.contents[1].description.sources[0].ssrc);sim.push(newssrc.ssrc);groups.push({semantics:"SIM",sources:sim});var rtxssrc=JSON.parse(JSON.stringify(newssrc));rtxssrc.ssrc=""+Math.floor(Math.random()*4294967295);answer.jingle.contents[1].description.sources.push(rtxssrc);groups.push({semantics:"FID",sources:[newssrc.ssrc,rtxssrc.ssrc]});answer.jingle.contents[1].description.sourceGroups=groups;answer.sdp=SJJ.toSessionSDP(answer.jingle,self.config.sdpSessionID)}}}self.pc.setLocalDescription(answer,function(){var expandedAnswer={type:"answer",sdp:answer.sdp};if(self.config.useJingle){var jingle=SJJ.toSessionJSON(answer.sdp);jingle.sid=self.config.sid;self.localDescription=jingle;expandedAnswer.jingle=jingle}if(self.enableChromeNativeSimulcast){if(!expandedAnswer.jingle){expandedAnswer.jingle=SJJ.toSessionJSON(answer.sdp)}var groups=expandedAnswer.jingle.contents[1].description.sourceGroups||[];expandedAnswer.jingle.contents[1].description.sources.forEach(function(source,idx){source.parameters=source.parameters.map(function(parameter){if(parameter.key==="msid"){parameter.value+="-"+Math.floor(idx/2)}return parameter})});expandedAnswer.sdp=SJJ.toSessionSDP(expandedAnswer.jingle)}expandedAnswer.sdp.split("\r\n").forEach(function(line){if(line.indexOf("a=candidate:")===0){self._checkLocalCandidate(line)}});self.emit("answer",expandedAnswer);cb(null,expandedAnswer)},function(err){self.emit("error",err);cb(err)})},function(err){self.emit("error",err);cb(err)},constraints)};PeerConnection.prototype._onIce=function(event){var self=this;if(event.candidate){var ice=event.candidate;var expandedCandidate={candidate:event.candidate};var cand=SJJ.toCandidateJSON(ice.candidate);if(self.config.useJingle){if(!ice.sdpMid){ice.sdpMid=self.localDescription.contents[ice.sdpMLineIndex].name}if(!self.config.ice[ice.sdpMid]){var jingle=SJJ.toSessionJSON(self.pc.localDescription.sdp,self.config.isInitiator?"initiator":"responder");_.each(jingle.contents,function(content){var transport=content.transport||{};if(transport.ufrag){self.config.ice[content.name]={ufrag:transport.ufrag,pwd:transport.pwd}}})}expandedCandidate.jingle={contents:[{name:ice.sdpMid,creator:self.config.isInitiator?"initiator":"responder",transport:{transType:"iceUdp",ufrag:self.config.ice[ice.sdpMid].ufrag,pwd:self.config.ice[ice.sdpMid].pwd,candidates:[cand]}}]}}this._checkLocalCandidate(ice.candidate);this.emit("ice",expandedCandidate)}else{this.emit("endOfCandidates")}};PeerConnection.prototype._onDataChannel=function(event){var channel=event.channel;this._remoteDataChannels.push(channel);this.emit("addChannel",channel)};PeerConnection.prototype._onAddStream=function(event){this.remoteStreams.push(event.stream);this.emit("addStream",event)};PeerConnection.prototype.createDataChannel=function(name,opts){var channel=this.pc.createDataChannel(name,opts);this._localDataChannels.push(channel);return channel};PeerConnection.prototype.getStats=function(cb){if(webrtc.prefix==="moz"){this.pc.getStats(function(res){var items=[];for(var result in res){if(typeof res[result]==="object"){items.push(res[result])}}cb(null,items)},cb)}else{this.pc.getStats(function(res){var items=[];res.result().forEach(function(result){var item={};result.names().forEach(function(name){item[name]=result.stat(name)});item.id=result.id;item.type=result.type;item.timestamp=result.timestamp;items.push(item)});cb(null,items)})}};module.exports=PeerConnection},{"sdp-jingle-json":305,traceablepeerconnection:309,underscore:345,util:372,webrtcsupport:319,wildemitter:346}],311:[function(require,module,exports){var util=require("util");var extend=require("extend-object");var BaseSession=require("jingle-session");var RTCPeerConnection=require("rtcpeerconnection");function filterContentSources(content,stream){delete content.transport;delete content.description.payloads;if(content.description.sources){content.description.sources=content.description.sources.filter(function(source){return stream.id===source.parameters[1].value.split(" ")[0]})}}function filterUnusedLabels(content){var sources=content.description.sources||[];sources.forEach(function(source){source.parameters=source.parameters.filter(function(parameter){return!(parameter.key==="mslabel"||parameter.key==="label")})})}function MediaSession(opts){BaseSession.call(this,opts);this.pc=new RTCPeerConnection({iceServers:opts.iceServers||[],useJingle:true},opts.constraints||{});this.pc.on("ice",this.onIceCandidate.bind(this));this.pc.on("iceConnectionStateChange",this.onIceStateChange.bind(this));this.pc.on("addStream",this.onAddStream.bind(this));this.pc.on("removeStream",this.onRemoveStream.bind(this));this._ringing=false}util.inherits(MediaSession,BaseSession);Object.defineProperties(MediaSession.prototype,{ringing:{get:function(){return this._ringing},set:function(value){if(value!==this._ringing){this._ringing=value;this.emit("change:ringing",value)}}},streams:{get:function(){return this.pc.remoteStreams}}});MediaSession.prototype=extend(MediaSession.prototype,{start:function(constraints){var self=this;this.state="pending";this.pc.isInitiator=true;this.pc.offer(constraints,function(err,offer){if(err){self._log("error","Could not create WebRTC offer",err);return self.end("failed-application",true)}if(constraints&&constraints.mandatory){offer.jingle.contents.forEach(function(content){var mediaType=content.description.media;if(!content.description||content.description.descType!=="rtp"){return}if(!constraints.mandatory.OfferToReceiveAudio&&mediaType==="audio"){content.senders="initiator"}if(!constraints.mandatory.OfferToReceiveVideo&&mediaType==="video"){content.senders="initiator"}})}offer.jingle.contents.forEach(filterUnusedLabels);self.send("session-initiate",offer.jingle)})},accept:function(){var self=this;this._log("info","Accepted incoming session");this.state="active";this.pc.answer(function(err,answer){if(err){self._log("error","Could not create WebRTC answer",err);return self.end("failed-application")}answer.jingle.contents.forEach(filterUnusedLabels);self.send("session-accept",answer.jingle)})},end:function(reason,silent){var self=this;this.pc.close();this.streams.forEach(function(stream){self.onRemoveStream({stream:stream})});BaseSession.prototype.end.call(this,reason,silent)},ring:function(){this._log("info","Ringing on incoming session");this.ringing=true;this.send("session-info",{ringing:true})},mute:function(creator,name){this._log("info","Muting",name);this.send("session-info",{mute:{creator:creator,name:name}})},unmute:function(creator,name){this._log("info","Unmuting",name);this.send("session-info",{unmute:{creator:creator,name:name}})},hold:function(){this._log("info","Placing on hold");this.send("session-info",{hold:true})},resume:function(){this._log("info","Resuming from hold");this.send("session-info",{active:true})},addStream:function(stream,renegotiate,cb){var self=this;cb=cb||function(){};this.pc.addStream(stream);if(!renegotiate){return}this.pc.handleOffer({type:"offer",jingle:this.pc.remoteDescription},function(err){if(err){self._log("error","Could not create offer for adding new stream");return cb(err)}self.pc.answer(function(err,answer){if(err){self._log("error","Could not create answer for adding new stream");return cb(err)}answer.jingle.contents.forEach(function(content){filterContentSources(content,stream)});self.send("source-add",answer.jingle);cb()})})},addStream2:function(stream,cb){this.addStream(stream,true,cb)},removeStream:function(stream,renegotiate,cb){var self=this;cb=cb||function(){};if(!renegotiate){this.pc.removeStream(stream);return}var desc=this.pc.localDescription;desc.contents.forEach(function(content){filterContentSources(content,stream)});this.send("source-remove",desc);this.pc.removeStream(stream);this.pc.handleOffer({type:"offer",jingle:this.pc.remoteDescription},function(err){if(err){self._log("error","Could not process offer for removing stream");return cb(err)}self.pc.answer(function(err){if(err){self._log("error","Could not process answer for removing stream");return cb(err)}cb()})})},removeStream2:function(stream,cb){this.removeStream(stream,true,cb)},switchStream:function(oldStream,newStream,cb){var self=this;cb=cb||function(){};var desc=this.pc.localDescription;desc.contents.forEach(function(content){delete content.transport;delete content.description.payloads});this.pc.removeStream(oldStream);this.send("source-remove",desc);var audioTracks=oldStream.getAudioTracks();if(audioTracks.length){newStream.addTrack(audioTracks[0])}this.pc.addStream(newStream);this.pc.handleOffer({type:"offer",jingle:this.pc.remoteDescription},function(err){if(err){self._log("error","Could not process offer for switching streams");return cb(err)}self.pc.answer(function(err,answer){if(err){self._log("error","Could not process answer for switching streams");return cb(err)}answer.jingle.contents.forEach(function(content){delete content.transport;delete content.description.payloads});self.send("source-add",answer.jingle);cb()})})},onIceCandidate:function(candidate){this._log("info","Discovered new ICE candidate",candidate.jingle);this.send("transport-info",candidate.jingle)},onIceStateChange:function(){switch(this.pc.iceConnectionState){case"checking":this.connectionState="connecting";break;case"completed":case"connected":this.connectionState="connected";break;case"disconnected":if(this.pc.signalingState==="stable"){this.connectionState="interrupted"}else{this.connectionState="disconnected"}break;case"failed":this.connectionState="failed";if(this.pc.isInitiator){this.emit("iceFailed",this.session)}break;case"closed":this.connectionState="disconnected";break}},onAddStream:function(event){this._log("info","Stream added");this.emit("peerStreamAdded",this,event.stream)},onRemoveStream:function(event){this._log("info","Stream removed");this.emit("peerStreamRemoved",this,event.stream)},onSessionInitiate:function(changes,cb){var self=this;this._log("info","Initiating incoming session");this.state="pending";this.pc.isInitiator=false;this.pc.handleOffer({type:"offer",jingle:changes},function(err){if(err){self._log("error","Could not create WebRTC answer");return cb({condition:"general-error"})}cb()})},onSessionAccept:function(changes,cb){var self=this;this.state="active";this.pc.handleAnswer({type:"answer",jingle:changes},function(err){if(err){self._log("error","Could not process WebRTC answer");return cb({condition:"general-error"})}self.emit("accepted",self);cb()})},onSessionTerminate:function(changes,cb){var self=this;this._log("info","Terminating session");this.pc.close();this.streams.forEach(function(stream){self.onRemoveStream({stream:stream})});BaseSession.prototype.end.call(this,changes.reason,true);cb()},onSessionInfo:function(info,cb){if(info.ringing){this._log("info","Outgoing session is ringing");this.ringing=true;this.emit("ringing",this);return cb()}if(info.hold){this._log("info","On hold");this.emit("hold",this);return cb()}if(info.active){this._log("info","Resuming from hold");this.emit("resumed",this);return cb()}if(info.mute){this._log("info","Muting",info.unmute);this.emit("mute",this,info.mute);return cb()}if(info.unmute){this._log("info","Unmuting",info.unmute);this.emit("unmute",this,info.unmute);return cb()}cb()},onTransportInfo:function(changes,cb){this.pc.processIce(changes,function(){cb()})},onSourceAdd:function(changes,cb){var self=this;this._log("info","Adding new stream source");var newDesc=this.pc.remoteDescription;this.pc.remoteDescription.contents.forEach(function(content,idx){var desc=content.description;var ssrcs=desc.sources||[];var groups=desc.sourceGroups||[];changes.contents.forEach(function(newContent){if(content.name!==newContent.name){return}var newContentDesc=newContent.description;var newSSRCs=newContentDesc.sources||[];
ssrcs=ssrcs.concat(newSSRCs);newDesc.contents[idx].description.sources=JSON.parse(JSON.stringify(ssrcs));var newGroups=newDesc.sourceGroups||[];groups=groups.concat(newGroups);newDesc.contents[idx].description.sourceGroups=JSON.parse(JSON.stringify(groups))})});this.pc.handleOffer({type:"offer",jingle:newDesc},function(err){if(err){self._log("error","Error adding new stream source");return cb({condition:"general-error"})}self.pc.answer(function(err){if(err){self._log("error","Error adding new stream source");return cb({condition:"general-error"})}cb()})})},onSourceRemove:function(changes,cb){var self=this;this._log("info","Removing stream source");var newDesc=this.pc.remoteDescription;this.pc.remoteDescription.contents.forEach(function(content,idx){var desc=content.description;var ssrcs=desc.sources||[];var groups=desc.sourceGroups||[];changes.contents.forEach(function(newContent){if(content.name!==newContent.name){return}var newContentDesc=newContent.description;var newSSRCs=newContentDesc.sources||[];var newGroups=newContentDesc.sourceGroups||[];var found,i,j,k;for(i=0;i<newSSRCs.length;i++){found=-1;for(j=0;j<ssrcs.length;j++){if(newSSRCs[i].ssrc===ssrcs[j].ssrc){found=j;break}}if(found>-1){ssrcs.splice(found,1);newDesc.contents[idx].description.sources=JSON.parse(JSON.stringify(ssrcs))}}for(i=0;i<newGroups.length;i++){found=-1;for(j=0;i<groups.length;j++){if(newGroups[i].semantics===groups[j].semantics&&newGroups[i].sources.length===groups[j].sources.length){var same=true;for(k=0;k<newGroups[i].sources.length;k++){if(newGroups[i].sources[k]!==groups[j].sources[k]){same=false;break}}if(same){found=j;break}}}if(found>-1){groups.splice(found,1);newDesc.contents[idx].description.sourceGroups=JSON.parse(JSON.stringify(groups))}}})});this.pc.handleOffer({type:"offer",jingle:newDesc},function(err){if(err){self._log("error","Error removing stream source");return cb({condition:"general-error"})}self.pc.answer(function(err){if(err){self._log("error","Error removing stream source");return cb({condition:"general-error"})}cb()})})}});module.exports=MediaSession},{"extend-object":301,"jingle-session":318,rtcpeerconnection:317,util:372}],312:[function(require,module,exports){arguments[4][305][0].apply(exports,arguments)},{"./lib/tojson":314,"./lib/tosdp":315}],313:[function(require,module,exports){module.exports=require(306)},{}],314:[function(require,module,exports){module.exports=require(307)},{"./parsers":313}],315:[function(require,module,exports){module.exports=require(308)},{}],316:[function(require,module,exports){module.exports=require(309)},{util:372,webrtcsupport:319,wildemitter:346}],317:[function(require,module,exports){arguments[4][310][0].apply(exports,arguments)},{"sdp-jingle-json":312,traceablepeerconnection:316,underscore:345,util:372,webrtcsupport:319,wildemitter:346}],318:[function(require,module,exports){var util=require("util");var async=require("async");var extend=require("extend-object");var WildEmitter=require("wildemitter");var ACTIONS={"content-accept":"onContentAccept","content-add":"onContentAdd","content-modify":"onConentModify","content-reject":"onContentReject","content-remove":"onContentRemove","description-info":"onDescriptionInfo","security-info":"onSecurityInfo","session-accept":"onSessionAccept","session-info":"onSessionInfo","session-initiate":"onSessionInitiate","session-terminate":"onSessionTerminate","transport-accept":"onTransportAccept","transport-info":"onTransportInfo","transport-reject":"onTransportReject","transport-replace":"onTransportReplace","source-add":"onSourceAdd","source-remove":"onSourceRemove"};function JingleSession(opts){WildEmitter.call(this);var self=this;this.sid=opts.sid||Date.now().toString();this.peer=opts.peer;this.peerID=opts.peerID||this.peer.full||this.peer;this.isInitiator=opts.initiator||false;this.parent=opts.parent;this.state="starting";this.connectionState="starting";this.pendingDescriptionTypes=opts.descriptionTypes||[];this.pendingAction=false;this.processingQueue=async.queue(function(task,next){var action=task.action;var changes=task.changes;var cb=task.cb;self._log("debug",action);if(!ACTIONS[action]){self._log("error","Invalid action: "+action);cb({condition:"bad-request"});return next()}self[ACTIONS[action]](changes,function(err,result){cb(err,result);return next()})})}util.inherits(JingleSession,WildEmitter);Object.keys(ACTIONS).forEach(function(action){var method=ACTIONS[action];JingleSession.prototype[method]=function(changes,cb){this._log("error","Unsupported action: "+action);cb()}});Object.defineProperties(JingleSession.prototype,{state:{get:function(){return this._sessionState},set:function(value){if(value!==this._sessionState){var prev=this._sessionState;this._log("info","Changing session state to: "+value);this._sessionState=value;this.emit("change:sessionState",this,value);this.emit("change:"+value,this,true);if(prev){this.emit("change:"+prev,this,false)}}}},connectionState:{get:function(){return this._connectionState},set:function(value){if(value!==this._connectionState){var prev=this._connectionState;this._log("info","Changing connection state to: "+value);this._connectionState=value;this.emit("change:connectionState",this,value);this.emit("change:"+value,this,true);if(prev){this.emit("change:"+prev,this,false)}}}},starting:{get:function(){return this._sessionState==="starting"}},pending:{get:function(){return this._sessionState==="pending"}},active:{get:function(){return this._sessionState==="active"}},ended:{get:function(){return this._sessionState==="ended"}},connected:{get:function(){return this._connectionState==="connected"}},connecting:{get:function(){return this._connectionState==="connecting"}},disconnected:{get:function(){return this._connectionState==="disconnected"}},interrupted:{get:function(){return this._connectionState==="interrupted"}}});JingleSession.prototype=extend(JingleSession.prototype,{_log:function(level,message){message=this.sid+": "+message;this.emit("log:"+level,message)},send:function(action,data){data=data||{};data.sid=this.sid;data.action=action;var requirePending={"session-inititate":true,"session-accept":true,"content-add":true,"content-remove":true,"content-reject":true,"content-accept":true,"content-modify":true,"transport-replace":true,"transport-reject":true,"transport-accept":true,"source-add":true,"source-remove":true};if(requirePending[action]){this.pendingAction=action}else{this.pendingAction=false}this.emit("send",{to:this.peer,type:"set",jingle:data})},process:function(action,changes,cb){this.processingQueue.push({action:action,changes:changes,cb:cb})},start:function(){this._log("error","Can not start base sessions");this.end("unsupported-applications",true)},accept:function(){this._log("error","Can not accept base sessions");this.end("unsupported-applications")},cancel:function(){this.end("cancel")},decline:function(){this.end("decline")},end:function(reason,silent){this.state="ended";if(!reason){reason="success"}if(typeof reason==="string"){reason={condition:reason}}if(!silent){this.send("session-terminate",{reason:reason})}this.emit("terminated",this,reason)},onSessionInfo:function(changes,cb){var okKeys={sid:true,action:true,initiator:true,responder:true};var unknownPayload=false;Object.keys(changes).forEach(function(key){if(!okKeys[key]){unknownPayload=true}});if(unknownPayload){cb({type:"modify",condition:"feature-not-implemented",jingleCondition:"unsupported-info"})}else{cb()}},onDescriptionInfo:function(changes,cb){cb({type:"modify",condition:"feature-not-implemented",jingleCondition:"unsupported-info"})},onTransportInfo:function(changes,cb){cb({type:"modify",condition:"feature-not-implemented",jingleCondition:"unsupported-info"})},onContentAdd:function(changes,cb){cb();this.send("content-reject",{reason:{condition:"failed-application",text:"content-add is not supported"}})},onTransportReplace:function(changes,cb){cb();this.send("transport-reject",{reason:{condition:"failed-application",text:"transport-replace is not supported"}})}});module.exports=JingleSession},{async:119,"extend-object":301,util:372,wildemitter:346}],319:[function(require,module,exports){var prefix;if(window.mozRTCPeerConnection||navigator.mozGetUserMedia){prefix="moz"}else if(window.webkitRTCPeerConnection||navigator.webkitGetUserMedia){prefix="webkit"}var PC=window.mozRTCPeerConnection||window.webkitRTCPeerConnection;var IceCandidate=window.mozRTCIceCandidate||window.RTCIceCandidate;var SessionDescription=window.mozRTCSessionDescription||window.RTCSessionDescription;var MediaStream=window.webkitMediaStream||window.MediaStream;var screenSharing=window.location.protocol==="https:"&&(window.navigator.userAgent.match("Chrome")&&parseInt(window.navigator.userAgent.match(/Chrome\/(.*) /)[1],10)>=26||window.navigator.userAgent.match("Firefox")&&parseInt(window.navigator.userAgent.match(/Firefox\/(.*)/)[1],10)>=33);var AudioContext=window.webkitAudioContext||window.AudioContext;var supportVp8=document.createElement("video").canPlayType('video/webm; codecs="vp8", vorbis')==="probably";var getUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.msGetUserMedia||navigator.mozGetUserMedia;module.exports={support:!!PC&&supportVp8&&!!getUserMedia,supportRTCPeerConnection:!!PC,supportVp8:supportVp8,supportGetUserMedia:!!getUserMedia,supportDataChannel:PC&&PC.prototype&&PC.prototype.createDataChannel,supportWebAudio:!!(AudioContext&&AudioContext.prototype.createMediaStreamSource),supportMediaStream:!!(MediaStream&&MediaStream.prototype.removeTrack),supportScreenSharing:!!screenSharing,prefix:prefix,AudioContext:AudioContext,PeerConnection:PC,SessionDescription:SessionDescription,IceCandidate:IceCandidate,MediaStream:MediaStream,getUserMedia:getUserMedia}},{}],320:[function(require,module,exports){"use strict";var JID=require("xmpp-jid").JID;module.exports=function(JXT){var types=JXT.utils;JXT.withIq=function(cb){this.withDefinition("iq","jabber:client",cb);this.withDefinition("iq","jabber:component:accept",cb)};JXT.withMessage=function(cb){this.withDefinition("message","jabber:client",cb);this.withDefinition("message","jabber:component:accept",cb)};JXT.withPresence=function(cb){this.withDefinition("presence","jabber:client",cb);this.withDefinition("presence","jabber:component:accept",cb)};JXT.withStreamFeatures=function(cb){this.withDefinition("features","http://etherx.jabber.org/streams",cb)};JXT.withStanzaError=function(cb){this.withDefinition("error","jabber:client",cb);this.withDefinition("error","jabber:component:accept",cb)};JXT.withDataForm=function(cb){this.withDefinition("x","jabber:x:data",cb)};JXT.withPubsubItem=function(cb){this.withDefinition("item","http://jabber.org/protocol/pubsub",cb);this.withDefinition("item","http://jabber.org/protocol/pubsub#event",cb)};JXT.getMessage=function(){return this.getDefinition("message","jabber:client")};JXT.getPresence=function(){return this.getDefinition("presence","jabber:client")};JXT.getIq=function(){return this.getDefinition("iq","jabber:client")};JXT.getStreamError=function(){return this.getDefinition("error","http://etherx.jabber.org/streams")};JXT.getComponentMessage=function(){return this.getDefinition("message","jabber:component:accept")};JXT.getComponentPresence=function(){return this.getDefinition("presence","jabber:component:accept")};JXT.getComponentIq=function(){return this.getDefinition("iq","jabber:component:accept")};JXT.utils.jidAttribute=function(attr,prepped){return{get:function(){var jid=new JID(types.getAttribute(this.xml,attr));if(prepped){jid.prepped=true}return jid},set:function(value){types.setAttribute(this.xml,attr,(value||"").toString())}}};JXT.utils.jidSub=function(NS,sub,prepped){return{get:function(){var jid=new JID(types.getSubText(this.xml,NS,sub));if(prepped){jid.prepped=true}return jid},set:function(value){types.setSubText(this.xml,NS,sub,(value||"").toString())}}};JXT.utils.tzoSub=types.field(function(xml,NS,sub,defaultVal){var split,hrs,min;var sign=-1;var formatted=types.getSubText(xml,NS,sub);if(!formatted){return defaultVal}if(formatted.charAt(0)==="-"){sign=1;formatted=formatted.slice(1)}split=formatted.split(":");hrs=parseInt(split[0],10);min=parseInt(split[1],10);return(hrs*60+min)*sign},function(xml,NS,sub,value){var hrs,min;var formatted="-";if(typeof value==="number"){if(value<0){value=-value;formatted="+"}hrs=value/60;min=value%60;formatted+=(hrs<10?"0":"")+hrs+":"+(min<10?"0":"")+min}else{formatted=value}types.setSubText(xml,NS,sub,formatted)})}},{"xmpp-jid":347}],321:[function(require,module,exports){"use strict";var ltx=require("ltx");var extend=require("extend-object");var uuid=require("node-uuid");var types=require("./lib/types");var helpers=require("./lib/helpers");var stanzaConstructor=require("./lib/stanza");function JXT(){this._LOOKUP={};this._LOOKUP_EXT={};this._TAGS={};this._CB_DEFINITION={};this._CB_TAG={};this._ID=uuid.v4();this.utils=extend({},types,helpers)}JXT.prototype.use=function(init){if(!init["__JXT_LOADED_"+this._ID]){init(this)}init["__JXT_LOADED_"+this._ID]=true;return this};JXT.prototype.getDefinition=function(el,ns,required){var JXTClass=this._LOOKUP[ns+"|"+el];if(required&&!JXTClass){throw new Error("Could not find definition for <"+el+' xmlns="'+ns+'" />')}return JXTClass};JXT.prototype.getExtensions=function(el,ns){return this._LOOKUP_EXT[ns+"|"+el]||{}};JXT.prototype.withDefinition=function(el,ns,cb){var name=ns+"|"+el;if(!this._CB_DEFINITION[name]){this._CB_DEFINITION[name]=[]}this._CB_DEFINITION[name].push(cb);if(this._LOOKUP[name]){cb(this._LOOKUP[name])}};JXT.prototype.withTag=function(tag,cb){if(!this._CB_TAG[tag]){this._CB_TAG[tag]=[]}this._CB_TAG[tag].push(cb);this.tagged(tag).forEach(function(stanza){cb(stanza)})};JXT.prototype.tagged=function(tag){return this._TAGS[tag]||[]};JXT.prototype.build=function(xml){var JXTClass=this._LOOKUP[xml.namespaceURI+"|"+xml.localName];if(JXTClass){return new JXTClass(null,xml)}};JXT.prototype.parse=function(str){var xml=ltx.parse(str);if(xml.nodeType!==1){return}var JXTClass=this.getDefinition(xml.localName,xml.namespaceURI);if(JXTClass){return new JXTClass(null,xml)}};JXT.prototype.extend=function(ParentJXT,ChildJXT,multiName){var parentName=ParentJXT.prototype._NS+"|"+ParentJXT.prototype._EL;var name=ChildJXT.prototype._name;var qName=ChildJXT.prototype._NS+"|"+ChildJXT.prototype._EL;this._LOOKUP[qName]=ChildJXT;if(!this._LOOKUP_EXT[qName]){this._LOOKUP_EXT[qName]={}}if(!this._LOOKUP_EXT[parentName]){this._LOOKUP_EXT[parentName]={}}this._LOOKUP_EXT[parentName][name]=ChildJXT;this.add(ParentJXT,name,types.extension(ChildJXT));if(multiName){this.add(ParentJXT,multiName,types.multiExtension(ChildJXT))}};JXT.prototype.add=function(ParentJXT,fieldName,field){field.enumerable=true;Object.defineProperty(ParentJXT.prototype,fieldName,field)};JXT.prototype.define=function(opts){var self=this;var Stanza=stanzaConstructor(this,opts);var ns=Stanza.prototype._NS;var el=Stanza.prototype._EL;var tags=Stanza.prototype._TAGS;var name=ns+"|"+el;this._LOOKUP[name]=Stanza;tags.forEach(function(tag){if(!self._TAGS[tag]){self._TAGS[tag]=[]}self._TAGS[tag].push(Stanza)});var fieldNames=Object.keys(opts.fields||{});fieldNames.forEach(function(fieldName){self.add(Stanza,fieldName,opts.fields[fieldName])});if(this._CB_DEFINITION[name]){this._CB_DEFINITION[name].forEach(function(handler){handler(Stanza)})}tags.forEach(function(tag){if(self._CB_TAG[tag]){self._CB_TAG[tag].forEach(function(handler){handler(Stanza)})}});return Stanza};JXT.createRegistry=function(){return new JXT};extend(JXT,helpers);extend(JXT,types);var globalJXT=new JXT;JXT.define=globalJXT.define.bind(globalJXT);JXT.extend=globalJXT.extend.bind(globalJXT);JXT.add=globalJXT.add.bind(globalJXT);JXT.parse=globalJXT.parse.bind(globalJXT);JXT.build=globalJXT.build.bind(globalJXT);JXT.getExtensions=globalJXT.getExtensions.bind(globalJXT);JXT.getDefinition=globalJXT.getDefinition.bind(globalJXT);JXT.withDefinition=globalJXT.withDefinition.bind(globalJXT);JXT.withTag=globalJXT.withTag.bind(globalJXT);JXT.tagged=globalJXT.tagged.bind(globalJXT);JXT.getGlobalJXT=function(){return globalJXT};module.exports=JXT},{"./lib/helpers":322,"./lib/stanza":323,"./lib/types":324,"extend-object":325,ltx:328,"node-uuid":332}],322:[function(require,module,exports){"use strict";var ltx=require("ltx");var XML_NS=exports.XML_NS="http://www.w3.org/XML/1998/namespace";exports.createElement=function(NS,name,parentNS){var el=new ltx.Element(name);if(!parentNS||parentNS!==NS){exports.setAttribute(el,"xmlns",NS)}return el};var find=exports.find=function(xml,NS,selector){var results=[];var children=xml.getElementsByTagName(selector);for(var i=0,len=children.length;i<len;i++){var child=children[i];if(child.namespaceURI===NS&&child.parentNode===xml){results.push(child)}}return results};exports.findOrCreate=function(xml,NS,selector){var existing=exports.find(xml,NS,selector);if(existing.length){return existing[0]}else{var created=exports.createElement(NS,selector,xml.namespaceURI);xml.appendChild(created);return created}};exports.getAttribute=function(xml,attr,defaultVal){return xml.getAttribute(attr)||defaultVal||""};exports.getAttributeNS=function(xml,NS,attr,defaultVal){return xml.getAttributeNS(NS,attr)||defaultVal||""};exports.setAttribute=function(xml,attr,value,force){if(value||force){xml.setAttribute(attr,value)}else{xml.removeAttribute(attr)}};exports.setAttributeNS=function(xml,NS,attr,value,force){if(value||force){xml.setAttributeNS(NS,attr,value)}else{xml.removeAttributeNS(NS,attr)}};exports.getBoolAttribute=function(xml,attr,defaultVal){var val=xml.getAttribute(attr)||defaultVal||"";return val==="true"||val==="1"};exports.setBoolAttribute=function(xml,attr,value){if(value){xml.setAttribute(attr,"1")}else{xml.removeAttribute(attr)}};exports.getSubAttribute=function(xml,NS,sub,attr,defaultVal){var subs=find(xml,NS,sub);if(!subs){return""}for(var i=0;i<subs.length;i++){return subs[i].getAttribute(attr)||defaultVal||""}return""};exports.setSubAttribute=function(xml,NS,sub,attr,value){var subs=find(xml,NS,sub);if(!subs.length){if(value){sub=exports.createElement(NS,sub,xml.namespaceURI);sub.setAttribute(attr,value);xml.appendChild(sub)}}else{for(var i=0;i<subs.length;i++){if(value){subs[i].setAttribute(attr,value);return}else{subs[i].removeAttribute(attr)}}}};exports.getBoolSubAttribute=function(xml,NS,sub,attr,defaultVal){var val=xml.getSubAttribute(NS,sub,attr)||defaultVal||"";return val==="true"||val==="1"};exports.setBoolSubAttribute=function(xml,NS,sub,attr,value){value=value?"1":"";exports.setSubAttribute(xml,NS,sub,attr,value)};exports.getText=function(xml){return xml.textContent};exports.setText=function(xml,value){xml.textContent=value};exports.getSubText=exports.getTextSub=function(xml,NS,element,defaultVal){var subs=find(xml,NS,element);defaultVal=defaultVal||"";if(!subs.length){return defaultVal}return subs[0].textContent||defaultVal};exports.setSubText=exports.setTextSub=function(xml,NS,element,value){var subs=find(xml,NS,element);if(subs.length){for(var i=0;i<subs.length;i++){xml.removeChild(subs[i])}}if(value){var sub=exports.createElement(NS,element,xml.namespaceURI);if(value!==true){sub.textContent=value}xml.appendChild(sub)}};exports.getMultiSubText=function(xml,NS,element,extractor){var subs=find(xml,NS,element);var results=[];extractor=extractor||function(sub){return sub.textContent||""};for(var i=0;i<subs.length;i++){results.push(extractor(subs[i]))}return results};exports.setMultiSubText=function(xml,NS,element,value,builder){var subs=find(xml,NS,element);var values=[];builder=builder||function(value){if(value){var sub=exports.createElement(NS,element,xml.namespaceURI);sub.textContent=value;xml.appendChild(sub)}};if(typeof value==="string"){values=(value||"").split("\n")}else{values=value}var i,len;for(i=0,len=subs.length;i<len;i++){xml.removeChild(subs[i])}for(i=0,len=values.length;i<len;i++){builder(values[i])}};exports.getMultiSubAttribute=function(xml,NS,element,attr){return exports.getMultiSubText(xml,NS,element,function(sub){return exports.getAttribute(sub,attr)})};exports.setMultiSubAttribute=function(xml,NS,element,attr,value){exports.setMultiSubText(xml,NS,element,value,function(val){var sub=exports.createElement(NS,element,xml.namespaceURI);exports.setAttribute(sub,attr,val);xml.appendChild(sub)})};exports.getSubLangText=function(xml,NS,element,defaultLang){var subs=find(xml,NS,element);if(!subs.length){return{}}var lang,sub;var results={};var langs=[];for(var i=0;i<subs.length;i++){sub=subs[i];lang=sub.getAttributeNS(XML_NS,"lang")||defaultLang;langs.push(lang);results[lang]=sub.textContent||""}return results};exports.setSubLangText=function(xml,NS,element,value,defaultLang){var sub,lang;var subs=find(xml,NS,element);if(subs.length){for(var i=0;i<subs.length;i++){xml.removeChild(subs[i])}}if(typeof value==="string"){sub=exports.createElement(NS,element,xml.namespaceURI);sub.textContent=value;xml.appendChild(sub)}else if(typeof value==="object"){for(lang in value){if(value.hasOwnProperty(lang)){sub=exports.createElement(NS,element,xml.namespaceURI);if(lang!==defaultLang){sub.setAttributeNS(XML_NS,"lang",lang)}sub.textContent=value[lang];xml.appendChild(sub)}}}};exports.getBoolSub=function(xml,NS,element){var subs=find(xml,NS,element);return!!subs.length};exports.setBoolSub=function(xml,NS,element,value){var subs=find(xml,NS,element);if(!subs.length){if(value){var sub=exports.createElement(NS,element,xml.namespaceURI);xml.appendChild(sub)}}else{for(var i=0;i<subs.length;i++){if(value){return}else{xml.removeChild(subs[i])}}}}},{ltx:328}],323:[function(require,module,exports){"use strict";var helpers=require("./helpers");var extend=require("extend-object");var EXCLUDE={constructor:true,parent:true,prototype:true,toJSON:true,toString:true,xml:true};module.exports=function(JXT,opts){function Stanza(data,xml,parent){var self=this;var parentNode=(xml||{}).parentNode||(parent||{}).xml;var parentNS=(parentNode||{}).namespaceURI;self.xml=xml||helpers.createElement(self._NS,self._EL,parentNS);Object.keys(self._PREFIXES).forEach(function(prefix){var namespace=self._PREFIXES[prefix];self.xml.setAttribute("xmlns:"+prefix,namespace)});self._extensions={};for(var i=0,len=self.xml.childNodes.length;i<len;i++){var child=self.xml.childNodes[i];var ChildJXT=JXT.getDefinition(child.localName,child.namespaceURI);if(ChildJXT!==undefined){var name=ChildJXT.prototype._name;self._extensions[name]=new ChildJXT(null,child);self._extensions[name].parent=self}}extend(self,data);if(opts.init){opts.init.apply(self,[data])}return self}Stanza.prototype._name=opts.name;Stanza.prototype._eventname=opts.eventName;Stanza.prototype._NS=opts.namespace;Stanza.prototype._EL=opts.element||opts.name;Stanza.prototype._PREFIXES=opts.prefixes||{};Stanza.prototype._TAGS=opts.tags||[];Stanza.prototype.toString=function(){return this.xml.toString()};Stanza.prototype.toJSON=function(){var prop;var result={};for(prop in this._extensions){if(this._extensions[prop].toJSON&&prop[0]!=="_"){result[prop]=this._extensions[prop].toJSON()}}for(prop in this){var allowedName=!EXCLUDE[prop]&&prop[0]!=="_";var isExtensionName=JXT.getExtensions(this._EL,this._NS)[prop];if(allowedName&&!isExtensionName){var val=this[prop];if(typeof val==="function"){continue}var type=Object.prototype.toString.call(val);if(type.indexOf("Object")>=0){if(Object.keys(val).length>0){result[prop]=val}}else if(type.indexOf("Array")>=0){if(val.length>0){var vals=[];for(var n in val){var nval=val[n];if(nval.toJSON!==undefined){vals.push(nval.toJSON())}else{vals.push(nval)}}result[prop]=vals}}else if(val!==undefined&&val!==false&&val!==""){result[prop]=val}}}return result};return Stanza}},{"./helpers":322,"extend-object":325}],324:[function(require,module,exports){"use strict";var fromB64=require("atob");var toB64=require("btoa");var helpers=require("./helpers");var extend=require("extend-object");var find=helpers.find;var createElement=helpers.createElement;var field=exports.field=function(getter,setter){return function(){var args=Array.prototype.slice.call(arguments);return{get:function(){return getter.apply(null,[this.xml].concat(args))},set:function(value){setter.apply(null,[this.xml].concat(args).concat([value]))}}}};exports.boolAttribute=field(helpers.getBoolAttribute,helpers.setBoolAttribute);exports.subAttribute=field(helpers.getSubAttribute,helpers.setSubAttribute);exports.boolSubAttribute=field(helpers.getSubBoolAttribute,helpers.setSubBoolAttribute);exports.text=field(helpers.getText,helpers.setText);exports.textSub=exports.subText=field(helpers.getSubText,helpers.setSubText);exports.multiTextSub=exports.multiSubText=field(helpers.getMultiSubText,helpers.setMultiSubText);exports.multiSubAttribute=field(helpers.getMultiSubAttribute,helpers.setMultiSubAttribute);exports.langTextSub=exports.subLangText=field(helpers.getSubLangText,helpers.setSubLangText);exports.boolSub=field(helpers.getBoolSub,helpers.setBoolSub);exports.langAttribute=field(function(xml){return xml.getAttributeNS(helpers.XML_NS,"lang")||""},function(xml,value){xml.setAttributeNS(helpers.XML_NS,"lang",value)});exports.b64Text=field(function(xml){if(xml.textContent&&xml.textContent!=="="){return fromB64(xml.textContent)}return""},function(xml,value){if(typeof value==="string"){xml.textContent=toB64(value)||"="}else{xml.textContent=""}});exports.dateAttribute=function(attr,now){return{get:function(){var data=helpers.getAttribute(this.xml,attr);if(data){return new Date(data)}if(now){return new Date(Date.now())}},set:function(value){if(!value){return}if(typeof value!=="string"){value=value.toISOString()}helpers.setAttribute(this.xml,attr,value)}}};exports.dateSub=function(NS,sub,now){return{get:function(){var data=helpers.getSubText(this.xml,NS,sub);if(data){return new Date(data)}if(now){return new Date(Date.now())}},set:function(value){if(!value){return}if(typeof value!=="string"){value=value.toISOString()}helpers.setSubText(this.xml,NS,sub,value)}}};exports.dateSubAttribute=function(NS,sub,attr,now){return{get:function(){var data=helpers.getSubAttribute(this.xml,NS,sub,attr);if(data){return new Date(data)}if(now){return new Date(Date.now())}},set:function(value){if(!value){return}if(typeof value!=="string"){value=value.toISOString()}helpers.setSubAttribute(this.xml,NS,sub,attr,value)}}};exports.numberAttribute=function(attr,isFloat,defaultVal){return{get:function(){var parse=isFloat?parseFloat:parseInt;var data=helpers.getAttribute(this.xml,attr,"");if(!data){return defaultVal}var parsed=parse(data,10);if(isNaN(parsed)){return defaultVal}return parsed},set:function(value){helpers.setAttribute(this.xml,attr,value.toString())}}};exports.numberSub=function(NS,sub,isFloat,defaultVal){return{get:function(){var parse=isFloat?parseFloat:parseInt;var data=helpers.getSubText(this.xml,NS,sub,"");if(!data){return defaultVal}var parsed=parse(data,10);if(isNaN(parsed)){return defaultVal}return parsed},set:function(value){helpers.setSubText(this.xml,NS,sub,value.toString())}}};exports.attribute=function(name,defaultVal){return{get:function(){return helpers.getAttribute(this.xml,name,defaultVal)},set:function(value){helpers.setAttribute(this.xml,name,value)}}};exports.attributeNS=function(NS,name,defaultVal){return{get:function(){return helpers.getAttributeNS(this.xml,NS,name,defaultVal)},set:function(value){helpers.setAttributeNS(this.xml,NS,name,value)}}};exports.extension=function(ChildJXT){return{get:function(){var self=this;var name=ChildJXT.prototype._name;if(!this._extensions[name]){var existing=find(this.xml,ChildJXT.prototype._NS,ChildJXT.prototype._EL);if(!existing.length){this._extensions[name]=new ChildJXT({},null,self);this.xml.appendChild(this._extensions[name].xml)}else{this._extensions[name]=new ChildJXT(null,existing[0],self)}this._extensions[name].parent=this}return this._extensions[name]},set:function(value){if(value){var child=this[ChildJXT.prototype._name];if(value===true){value={}}extend(child,value)}}}};exports.multiExtension=function(ChildJXT){return{get:function(){var self=this;var data=find(this.xml,ChildJXT.prototype._NS,ChildJXT.prototype._EL);var results=[];for(var i=0,len=data.length;i<len;i++){results.push(new ChildJXT({},data[i],self))}return results},set:function(value){value=value||[];var self=this;var existing=find(this.xml,ChildJXT.prototype._NS,ChildJXT.prototype._EL);var i,len;for(i=0,len=existing.length;i<len;i++){self.xml.removeChild(existing[i])}for(i=0,len=value.length;i<len;i++){var content=new ChildJXT(value[i],null,self);self.xml.appendChild(content.xml)}}}};exports.enumSub=function(NS,enumValues){return{get:function(){var self=this;var result=[];enumValues.forEach(function(enumVal){var exists=find(self.xml,NS,enumVal);if(exists.length){result.push(exists[0].nodeName)}});return result[0]||""},set:function(value){var self=this;enumValues.forEach(function(enumVal){var exists=find(self.xml,NS,enumVal);if(exists.length){self.xml.removeChild(exists[0])}});if(value){var condition=createElement(NS,value);this.xml.appendChild(condition)}}}};exports.subExtension=function(name,NS,sub,ChildJXT){return{get:function(){if(!this._extensions[name]){var wrapper=find(this.xml,NS,sub);if(!wrapper.length){wrapper=createElement(NS,sub,this._NS);this.xml.appendChild(wrapper)}else{wrapper=wrapper[0]}var existing=find(wrapper,ChildJXT.prototype._NS,ChildJXT.prototype._EL);if(!existing.length){this._extensions[name]=new ChildJXT({},null,{xml:wrapper});wrapper.appendChild(this._extensions[name].xml)}else{this._extensions[name]=new ChildJXT(null,existing[0],{xml:wrapper})}this._extensions[name].parent=this}return this._extensions[name]},set:function(value){var wrapper=find(this.xml,NS,sub);if(wrapper.length&&!value){this.xml.removeChild(wrapper[0])}if(value){var child=this[name];if(value===true){value={}}extend(child,value)}}}};exports.subMultiExtension=function(NS,sub,ChildJXT){return{get:function(){var self=this;var results=[];var existing=find(this.xml,NS,sub);if(!existing.length){return results}existing=existing[0];var data=find(existing,ChildJXT.prototype._NS,ChildJXT.prototype._EL);data.forEach(function(xml){results.push(new ChildJXT({},xml,self))});return results},set:function(values){var self=this;var existing=find(this.xml,NS,sub);if(existing.length){self.xml.removeChild(existing[0])}if(!values.length){return}existing=createElement(NS,sub,this._NS);values.forEach(function(value){var content=new ChildJXT(value,null,self);existing.appendChild(content.xml)});self.xml.appendChild(existing)}}}},{"./helpers":322,atob:120,btoa:156,"extend-object":325}],325:[function(require,module,exports){module.exports=require(301)},{}],326:[function(require,module,exports){"use strict";var util=require("util"),Element=require("./element").Element;function DOMElement(name,attrs){Element.call(this,name,attrs);this.nodeType=1;this.nodeName=this.localName}util.inherits(DOMElement,Element);DOMElement.prototype._getElement=function(name,attrs){var element=new DOMElement(name,attrs);return element};Object.defineProperty(DOMElement.prototype,"localName",{get:function(){return this.getName()}});Object.defineProperty(DOMElement.prototype,"namespaceURI",{get:function(){return this.getNS()}});Object.defineProperty(DOMElement.prototype,"parentNode",{get:function(){return this.parent}});Object.defineProperty(DOMElement.prototype,"childNodes",{get:function(){return this.children}});Object.defineProperty(DOMElement.prototype,"textContent",{get:function(){return this.getText()},set:function(value){this.children.push(value)}});DOMElement.prototype.getElementsByTagName=function(name){return this.getChildren(name)};DOMElement.prototype.getAttribute=function(name){return this.getAttr(name)};DOMElement.prototype.setAttribute=function(name,value){this.attr(name,value)};DOMElement.prototype.getAttributeNS=function(ns,name){if(ns==="http://www.w3.org/XML/1998/namespace"){return this.getAttr(["xml",name].join(":"))}return this.getAttr(name,ns)};DOMElement.prototype.setAttributeNS=function(ns,name,value){var prefix;
if(ns==="http://www.w3.org/XML/1998/namespace"){prefix="xml"}else{var nss=this.getXmlns();prefix=nss[ns]||""}if(prefix){this.attr([prefix,name].join(":"),value)}};DOMElement.prototype.removeAttribute=function(name){this.attr(name,null)};DOMElement.prototype.removeAttributeNS=function(ns,name){var prefix;if(ns==="http://www.w3.org/XML/1998/namespace"){prefix="xml"}else{var nss=this.getXmlns();prefix=nss[ns]||""}if(prefix){this.attr([prefix,name].join(":"),null)}};DOMElement.prototype.appendChild=function(el){this.cnode(el)};DOMElement.prototype.removeChild=function(el){this.remove(el)};module.exports=DOMElement},{"./element":327,util:372}],327:[function(require,module,exports){"use strict";function Element(name,attrs){this.name=name;this.parent=null;this.attrs=attrs||{};this.children=[]}Element.prototype.is=function(name,xmlns){return this.getName()===name&&(!xmlns||this.getNS()===xmlns)};Element.prototype.getName=function(){if(this.name.indexOf(":")>=0)return this.name.substr(this.name.indexOf(":")+1);else return this.name};Element.prototype.getNS=function(){if(this.name.indexOf(":")>=0){var prefix=this.name.substr(0,this.name.indexOf(":"));return this.findNS(prefix)}else{return this.findNS()}};Element.prototype.findNS=function(prefix){if(!prefix){if(this.attrs.xmlns)return this.attrs.xmlns;else if(this.parent)return this.parent.findNS()}else{var attr="xmlns:"+prefix;if(this.attrs[attr])return this.attrs[attr];else if(this.parent)return this.parent.findNS(prefix)}};Element.prototype.getXmlns=function(){var namespaces={};if(this.parent)namespaces=this.parent.getXmlns();for(var attr in this.attrs){var m=attr.match("xmlns:?(.*)");if(this.attrs.hasOwnProperty(attr)&&m){namespaces[this.attrs[attr]]=m[1]}}return namespaces};Element.prototype.getAttr=function(name,xmlns){if(!xmlns)return this.attrs[name];var namespaces=this.getXmlns();if(!namespaces[xmlns])return null;return this.attrs[[namespaces[xmlns],name].join(":")]};Element.prototype.getChild=function(name,xmlns){return this.getChildren(name,xmlns)[0]};Element.prototype.getChildren=function(name,xmlns){var result=[];for(var i=0;i<this.children.length;i++){var child=this.children[i];if(child.getName&&child.getName()===name&&(!xmlns||child.getNS()===xmlns))result.push(child)}return result};Element.prototype.getChildByAttr=function(attr,val,xmlns,recursive){return this.getChildrenByAttr(attr,val,xmlns,recursive)[0]};Element.prototype.getChildrenByAttr=function(attr,val,xmlns,recursive){var result=[];for(var i=0;i<this.children.length;i++){var child=this.children[i];if(child.attrs&&child.attrs[attr]===val&&(!xmlns||child.getNS()===xmlns))result.push(child);if(recursive&&child.getChildrenByAttr){result.push(child.getChildrenByAttr(attr,val,xmlns,true))}}if(recursive)result=[].concat.apply([],result);return result};Element.prototype.getChildrenByFilter=function(filter,recursive){var result=[];for(var i=0;i<this.children.length;i++){var child=this.children[i];if(filter(child))result.push(child);if(recursive&&child.getChildrenByFilter){result.push(child.getChildrenByFilter(filter,true))}}if(recursive){result=[].concat.apply([],result)}return result};Element.prototype.getText=function(){var text="";for(var i=0;i<this.children.length;i++){var child=this.children[i];if(typeof child==="string"||typeof child==="number"){text+=child}}return text};Element.prototype.getChildText=function(name,xmlns){var child=this.getChild(name,xmlns);return child?child.getText():null};Element.prototype.getChildElements=function(){return this.getChildrenByFilter(function(child){return child instanceof Element})};Element.prototype.root=function(){if(this.parent)return this.parent.root();else return this};Element.prototype.tree=Element.prototype.root;Element.prototype.up=function(){if(this.parent)return this.parent;else return this};Element.prototype._getElement=function(name,attrs){var element=new Element(name,attrs);return element};Element.prototype.c=function(name,attrs){return this.cnode(this._getElement(name,attrs))};Element.prototype.cnode=function(child){this.children.push(child);child.parent=this;return child};Element.prototype.t=function(text){this.children.push(text);return this};Element.prototype.remove=function(el,xmlns){var filter;if(typeof el==="string"){filter=function(child){return!(child.is&&child.is(el,xmlns))}}else{filter=function(child){return child!==el}}this.children=this.children.filter(filter);return this};Element.prototype.clone=function(){var clone=this._getElement(this.name,{});for(var k in this.attrs){if(this.attrs.hasOwnProperty(k))clone.attrs[k]=this.attrs[k]}for(var i=0;i<this.children.length;i++){var child=this.children[i];clone.cnode(child.clone?child.clone():child)}return clone};Element.prototype.text=function(val){if(val&&this.children.length===1){this.children[0]=val;return this}return this.getText()};Element.prototype.attr=function(attr,val){if(typeof val!=="undefined"||val===null){if(!this.attrs){this.attrs={}}this.attrs[attr]=val;return this}return this.attrs[attr]};Element.prototype.toString=function(){var s="";this.write(function(c){s+=c});return s};Element.prototype.toJSON=function(){return{name:this.name,attrs:this.attrs,children:this.children.map(function(child){return child&&child.toJSON?child.toJSON():child})}};Element.prototype._addChildren=function(writer){writer(">");for(var i=0;i<this.children.length;i++){var child=this.children[i];if(child||child===0){if(child.write){child.write(writer)}else if(typeof child==="string"){writer(escapeXmlText(child))}else if(child.toString){writer(escapeXmlText(child.toString(10)))}}}writer("</");writer(this.name);writer(">")};Element.prototype.write=function(writer){writer("<");writer(this.name);for(var k in this.attrs){var v=this.attrs[k];if(v||v===""||v===0){writer(" ");writer(k);writer('="');if(typeof v!=="string"){v=v.toString(10)}writer(escapeXml(v));writer('"')}}if(this.children.length===0){writer("/>")}else{this._addChildren(writer)}};function escapeXml(s){return s.replace(/\&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/"/g,"&apos;")}function escapeXmlText(s){return s.replace(/\&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}exports.Element=Element;exports.escapeXml=escapeXml},{}],328:[function(require,module,exports){"use strict";var parse=require("./parse");parse.availableSaxParsers.push(parse.bestSaxParser=require("./sax/sax_ltx"));module.exports=require("./index")},{"./index":329,"./parse":330,"./sax/sax_ltx":331}],329:[function(require,module,exports){"use strict";var parse=require("./parse");exports.Element=require("./dom-element");exports.escapeXml=require("./element").escapeXml;exports.parse=parse.parse;exports.Parser=parse.Parser;exports.availableSaxParsers=parse.availableSaxParsers;exports.bestSaxParser=parse.bestSaxParser},{"./dom-element":326,"./element":327,"./parse":330}],330:[function(require,module,exports){"use strict";var events=require("events"),util=require("util"),DOMElement=require("./dom-element");exports.availableSaxParsers=[];exports.bestSaxParser=null;var saxParsers=["./sax/sax_expat.js","./sax/sax_ltx.js","./sax/sax_saxjs.js"];saxParsers.forEach(function(modName){var mod;try{mod=require(modName)}catch(e){}if(mod){exports.availableSaxParsers.push(mod);if(!exports.bestSaxParser){exports.bestSaxParser=mod}}});exports.Parser=function(saxParser){events.EventEmitter.call(this);var self=this;var ParserMod=saxParser||exports.bestSaxParser;if(!ParserMod){throw new Error("No SAX parser available")}this.parser=new ParserMod;var el;this.parser.addListener("startElement",function(name,attrs){var child=new DOMElement(name,attrs);if(!el){el=child}else{el=el.cnode(child)}});this.parser.addListener("endElement",function(name){if(!el){}else if(name===el.name){if(el.parent){el=el.parent}else if(!self.tree){self.tree=el;el=undefined}}});this.parser.addListener("text",function(str){if(el){el.t(str)}});this.parser.addListener("error",function(e){self.error=e;self.emit("error",e)})};util.inherits(exports.Parser,events.EventEmitter);exports.Parser.prototype.write=function(data){this.parser.write(data)};exports.Parser.prototype.end=function(data){this.parser.end(data);if(!this.error){if(this.tree){this.emit("tree",this.tree)}else{this.emit("error",new Error("Incomplete document"))}}};exports.parse=function(data,saxParser){var p=new exports.Parser(saxParser);var result=null,error=null;p.on("tree",function(tree){result=tree});p.on("error",function(e){error=e});p.write(data);p.end();if(error){throw error}else{return result}}},{"./dom-element":326,events:359,util:372}],331:[function(require,module,exports){"use strict";var util=require("util"),events=require("events");var STATE_TEXT=0,STATE_IGNORE_TAG=1,STATE_TAG_NAME=2,STATE_TAG=3,STATE_ATTR_NAME=4,STATE_ATTR_EQ=5,STATE_ATTR_QUOT=6,STATE_ATTR_VALUE=7;var SaxLtx=module.exports=function SaxLtx(){events.EventEmitter.call(this);var state=STATE_TEXT,remainder;var tagName,attrs,endTag,selfClosing,attrQuote;var recordStart=0;var attrName;this._handleTagOpening=function(endTag,tagName,attrs){if(!endTag){this.emit("startElement",tagName,attrs);if(selfClosing){this.emit("endElement",tagName)}}else{this.emit("endElement",tagName)}};this.write=function(data){if(typeof data!=="string"){data=data.toString()}var pos=0;if(remainder){data=remainder+data;pos+=remainder.length;remainder=null}function endRecording(){if(typeof recordStart==="number"){var recorded=data.slice(recordStart,pos);recordStart=undefined;return recorded}}for(;pos<data.length;pos++){var c=data.charCodeAt(pos);switch(state){case STATE_TEXT:if(c===60){var text=endRecording();if(text){this.emit("text",unescapeXml(text))}state=STATE_TAG_NAME;recordStart=pos+1;attrs={}}break;case STATE_TAG_NAME:if(c===47&&recordStart===pos){recordStart=pos+1;endTag=true}else if(c===33||c===63){recordStart=undefined;state=STATE_IGNORE_TAG}else if(c<=32||c===47||c===62){tagName=endRecording();pos--;state=STATE_TAG}break;case STATE_IGNORE_TAG:if(c===62){state=STATE_TEXT}break;case STATE_TAG:if(c===62){this._handleTagOpening(endTag,tagName,attrs);tagName=undefined;attrs=undefined;endTag=undefined;selfClosing=undefined;state=STATE_TEXT;recordStart=pos+1}else if(c===47){selfClosing=true}else if(c>32){recordStart=pos;state=STATE_ATTR_NAME}break;case STATE_ATTR_NAME:if(c<=32||c===61){attrName=endRecording();pos--;state=STATE_ATTR_EQ}break;case STATE_ATTR_EQ:if(c===61){state=STATE_ATTR_QUOT}break;case STATE_ATTR_QUOT:if(c===34||c===39){attrQuote=c;state=STATE_ATTR_VALUE;recordStart=pos+1}break;case STATE_ATTR_VALUE:if(c===attrQuote){var value=unescapeXml(endRecording());attrs[attrName]=value;attrName=undefined;state=STATE_TAG}break}}if(typeof recordStart==="number"&&recordStart<=data.length){remainder=data.slice(recordStart);recordStart=0}}};util.inherits(SaxLtx,events.EventEmitter);SaxLtx.prototype.end=function(data){if(data){this.write(data)}this.write=function(){}};function unescapeXml(s){return s.replace(/\&(amp|#38);/g,"&").replace(/\&(lt|#60);/g,"<").replace(/\&(gt|#62);/g,">").replace(/\&(quot|#34);/g,'"').replace(/\&(apos|#39);/g,"'").replace(/\&(nbsp|#160);/g,"\n")}},{events:359,util:372}],332:[function(require,module,exports){(function(){var _global=this;var _rng;if(typeof _global.require=="function"){try{var _rb=_global.require("crypto").randomBytes;_rng=_rb&&function(){return _rb(16)}}catch(e){}}if(!_rng&&_global.crypto&&crypto.getRandomValues){var _rnds8=new Uint8Array(16);_rng=function whatwgRNG(){crypto.getRandomValues(_rnds8);return _rnds8}}if(!_rng){var _rnds=new Array(16);_rng=function(){for(var i=0,r;i<16;i++){if((i&3)===0)r=Math.random()*4294967296;_rnds[i]=r>>>((i&3)<<3)&255}return _rnds}}var BufferClass=typeof _global.Buffer=="function"?_global.Buffer:Array;var _byteToHex=[];var _hexToByte={};for(var i=0;i<256;i++){_byteToHex[i]=(i+256).toString(16).substr(1);_hexToByte[_byteToHex[i]]=i}function parse(s,buf,offset){var i=buf&&offset||0,ii=0;buf=buf||[];s.toLowerCase().replace(/[0-9a-f]{2}/g,function(oct){if(ii<16){buf[i+ii++]=_hexToByte[oct]}});while(ii<16){buf[i+ii++]=0}return buf}function unparse(buf,offset){var i=offset||0,bth=_byteToHex;return bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+"-"+bth[buf[i++]]+bth[buf[i++]]+"-"+bth[buf[i++]]+bth[buf[i++]]+"-"+bth[buf[i++]]+bth[buf[i++]]+"-"+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]}var _seedBytes=_rng();var _nodeId=[_seedBytes[0]|1,_seedBytes[1],_seedBytes[2],_seedBytes[3],_seedBytes[4],_seedBytes[5]];var _clockseq=(_seedBytes[6]<<8|_seedBytes[7])&16383;var _lastMSecs=0,_lastNSecs=0;function v1(options,buf,offset){var i=buf&&offset||0;var b=buf||[];options=options||{};var clockseq=options.clockseq!=null?options.clockseq:_clockseq;var msecs=options.msecs!=null?options.msecs:(new Date).getTime();var nsecs=options.nsecs!=null?options.nsecs:_lastNSecs+1;var dt=msecs-_lastMSecs+(nsecs-_lastNSecs)/1e4;if(dt<0&&options.clockseq==null){clockseq=clockseq+1&16383}if((dt<0||msecs>_lastMSecs)&&options.nsecs==null){nsecs=0}if(nsecs>=1e4){throw new Error("uuid.v1(): Can't create more than 10M uuids/sec")}_lastMSecs=msecs;_lastNSecs=nsecs;_clockseq=clockseq;msecs+=122192928e5;var tl=((msecs&268435455)*1e4+nsecs)%4294967296;b[i++]=tl>>>24&255;b[i++]=tl>>>16&255;b[i++]=tl>>>8&255;b[i++]=tl&255;var tmh=msecs/4294967296*1e4&268435455;b[i++]=tmh>>>8&255;b[i++]=tmh&255;b[i++]=tmh>>>24&15|16;b[i++]=tmh>>>16&255;b[i++]=clockseq>>>8|128;b[i++]=clockseq&255;var node=options.node||_nodeId;for(var n=0;n<6;n++){b[i+n]=node[n]}return buf?buf:unparse(b)}function v4(options,buf,offset){var i=buf&&offset||0;if(typeof options=="string"){buf=options=="binary"?new BufferClass(16):null;options=null}options=options||{};var rnds=options.random||(options.rng||_rng)();rnds[6]=rnds[6]&15|64;rnds[8]=rnds[8]&63|128;if(buf){for(var ii=0;ii<16;ii++){buf[i+ii]=rnds[ii]}}return buf||unparse(rnds)}var uuid=v4;uuid.v1=v1;uuid.v4=v4;uuid.parse=parse;uuid.unparse=unparse;uuid.BufferClass=BufferClass;if(typeof define==="function"&&define.amd){define(function(){return uuid})}else if(typeof module!="undefined"&&module.exports){module.exports=uuid}else{var _previousRoot=_global.uuid;uuid.noConflict=function(){_global.uuid=_previousRoot;return uuid};_global.uuid=uuid}}).call(this)},{}],333:[function(require,module,exports){(function(root,factory){if(typeof exports==="object"){factory(exports,module)}else if(typeof define==="function"&&define.amd){define(["exports","module"],factory)}})(this,function(exports,module){function Mechanism(){}Mechanism.prototype.name="ANONYMOUS";Mechanism.prototype.clientFirst=true;Mechanism.prototype.response=function(cred){return cred.trace||""};Mechanism.prototype.challenge=function(chal){};exports=module.exports=Mechanism})},{}],334:[function(require,module,exports){(function(root,factory){if(typeof exports==="object"){factory(exports,module,require("./lib/mechanism"))}else if(typeof define==="function"&&define.amd){define(["exports","module","./lib/mechanism"],factory)}})(this,function(exports,module,Mechanism){exports=module.exports=Mechanism;exports.Mechanism=Mechanism})},{"./lib/mechanism":333}],335:[function(require,module,exports){(function(root,factory){if(typeof exports==="object"){factory(exports,module)}else if(typeof define==="function"&&define.amd){define(["exports","module"],factory)}})(this,function(exports,module){function Mechanism(){}Mechanism.prototype.name="EXTERNAL";Mechanism.prototype.clientFirst=true;Mechanism.prototype.response=function(cred){return cred.authzid||""};Mechanism.prototype.challenge=function(chal){};exports=module.exports=Mechanism})},{}],336:[function(require,module,exports){arguments[4][334][0].apply(exports,arguments)},{"./lib/mechanism":335}],337:[function(require,module,exports){(function(root,factory){if(typeof exports==="object"){factory(exports,module)}else if(typeof define==="function"&&define.amd){define(["exports","module"],factory)}})(this,function(exports,module){function Mechanism(){}Mechanism.prototype.name="PLAIN";Mechanism.prototype.clientFirst=true;Mechanism.prototype.response=function(cred){var str="";str+=cred.authzid||"";str+="\x00";str+=cred.username;str+="\x00";str+=cred.password;return str};Mechanism.prototype.challenge=function(chal){return this};exports=module.exports=Mechanism})},{}],338:[function(require,module,exports){arguments[4][334][0].apply(exports,arguments)},{"./lib/mechanism":337}],339:[function(require,module,exports){(function(Buffer){var bitops=require("./lib/bitops");var utils=require("./lib/utils");var RESP={};function Mechanism(options){options=options||{};this._genNonce=options.genNonce||utils.genNonce;this._stage="initial"}Mechanism.Mechanism=Mechanism;Mechanism.prototype.name="SCRAM-SHA-1";Mechanism.prototype.clientFirst=true;Mechanism.prototype.response=function(cred){return RESP[this._stage](this,cred)};Mechanism.prototype.challenge=function(chal){var values=utils.parse(chal);this._salt=new Buffer(values.s||"","base64");this._iterationCount=parseInt(values.i,10);this._nonce=values.r;this._verifier=values.v;this._error=values.e;this._challenge=chal;return this};RESP.initial=function(mech,cred){mech._cnonce=mech._genNonce();var authzid="";if(cred.authzid){authzid="a="+utils.saslname(cred.authzid)}mech._gs2Header="n,"+authzid+",";var nonce="r="+mech._cnonce;var username="n="+utils.saslname(cred.username);mech._clientFirstMessageBare=username+","+nonce;var result=mech._gs2Header+mech._clientFirstMessageBare;mech._stage="challenge";return result};RESP.challenge=function(mech,cred){var gs2Header=new Buffer(mech._gs2Header).toString("base64");mech._clientFinalMessageWithoutProof="c="+gs2Header+",r="+mech._nonce;var saltedPassword,clientKey,serverKey;if(cred.clientKey&&cred.serverKey){clientKey=cred.clientKey;serverKey=cred.serverKey}else{saltedPassword=cred.saltedPassword||bitops.Hi(cred.password,mech._salt,mech._iterationCount);clientKey=bitops.HMAC(saltedPassword,"Client Key");serverKey=bitops.HMAC(saltedPassword,"Server Key")}var storedKey=bitops.H(clientKey);var authMessage=mech._clientFirstMessageBare+","+mech._challenge+","+mech._clientFinalMessageWithoutProof;var clientSignature=bitops.HMAC(storedKey,authMessage);var clientProof=bitops.XOR(clientKey,clientSignature).toString("base64");mech._serverSignature=bitops.HMAC(serverKey,authMessage);var result=mech._clientFinalMessageWithoutProof+",p="+clientProof;mech._stage="final";mech.cache={saltedPassword:saltedPassword,clientKey:clientKey,serverKey:serverKey};return result};RESP.final=function(){return""};module.exports=Mechanism}).call(this,require("buffer").Buffer)},{"./lib/bitops":340,"./lib/utils":341,buffer:350}],340:[function(require,module,exports){(function(Buffer){var crypto=require("crypto");var xor=require("bitwise-xor");exports.XOR=xor;exports.H=function(text){return crypto.createHash("sha1").update(text).digest()};exports.HMAC=function(key,msg){return crypto.createHmac("sha1",key).update(msg).digest()};exports.Hi=function(text,salt,iterations){var ui1=exports.HMAC(text,Buffer.concat([salt,new Buffer([0,0,0,1],"binary")]));var ui=ui1;for(var i=0;i<iterations-1;i++){ui1=exports.HMAC(text,ui1);ui=exports.XOR(ui,ui1)}return ui}}).call(this,require("buffer").Buffer)},{"bitwise-xor":342,buffer:350,crypto:354}],341:[function(require,module,exports){var crypto=require("crypto");exports.parse=function(chal){var dtives={};var tokens=chal.split(/,(?=(?:[^"]|"[^"]*")*$)/);for(var i=0,len=tokens.length;i<len;i++){var dtiv=/(\w+)=["]?([^"]+)["]?$/.exec(tokens[i]);if(dtiv){dtives[dtiv[1]]=dtiv[2]}}return dtives};exports.saslname=function(name){var escaped=[];var curr="";for(var i=0;i<name.length;i++){curr=name[i];if(curr===","){escaped.push("=2C")}else if(curr==="="){escaped.push("=3D")}else{escaped.push(curr)}}return escaped.join("")};exports.genNonce=function(len){return crypto.randomBytes((len||32)/2).toString("hex")}},{crypto:354}],342:[function(require,module,exports){(function(Buffer){module.exports=xor;function xor(a,b){if(!Buffer.isBuffer(a))a=new Buffer(a);if(!Buffer.isBuffer(b))b=new Buffer(b);var res=[];if(a.length>b.length){for(var i=0;i<b.length;i++){res.push(a[i]^b[i])}}else{for(var i=0;i<a.length;i++){res.push(a[i]^b[i])}}return new Buffer(res)}}).call(this,require("buffer").Buffer)},{buffer:350}],343:[function(require,module,exports){(function(root,factory){if(typeof exports==="object"){factory(exports,module)}else if(typeof define==="function"&&define.amd){define(["exports","module"],factory)}})(this,function(exports,module){function Factory(){this._mechs=[]}Factory.prototype.use=function(name,mech){if(!mech){mech=name;name=mech.prototype.name}this._mechs.push({name:name,mech:mech});return this};Factory.prototype.create=function(mechs){for(var i=0,len=this._mechs.length;i<len;i++){for(var j=0,jlen=mechs.length;j<jlen;j++){var entry=this._mechs[i];if(entry.name==mechs[j]){return new entry.mech}}}return null};exports=module.exports=Factory})},{}],344:[function(require,module,exports){(function(root,factory){if(typeof exports==="object"){factory(exports,module,require("./lib/factory"))}else if(typeof define==="function"&&define.amd){define(["exports","module","./lib/factory"],factory)}})(this,function(exports,module,Factory){exports=module.exports=Factory;exports.Factory=Factory})},{"./lib/factory":343}],345:[function(require,module,exports){(function(){var root=this;var previousUnderscore=root._;var breaker={};var ArrayProto=Array.prototype,ObjProto=Object.prototype,FuncProto=Function.prototype;var push=ArrayProto.push,slice=ArrayProto.slice,concat=ArrayProto.concat,toString=ObjProto.toString,hasOwnProperty=ObjProto.hasOwnProperty;var nativeForEach=ArrayProto.forEach,nativeMap=ArrayProto.map,nativeReduce=ArrayProto.reduce,nativeReduceRight=ArrayProto.reduceRight,nativeFilter=ArrayProto.filter,nativeEvery=ArrayProto.every,nativeSome=ArrayProto.some,nativeIndexOf=ArrayProto.indexOf,nativeLastIndexOf=ArrayProto.lastIndexOf,nativeIsArray=Array.isArray,nativeKeys=Object.keys,nativeBind=FuncProto.bind;var _=function(obj){if(obj instanceof _)return obj;if(!(this instanceof _))return new _(obj);this._wrapped=obj};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports){exports=module.exports=_}exports._=_}else{root._=_}_.VERSION="1.6.0";var each=_.each=_.forEach=function(obj,iterator,context){if(obj==null)return obj;if(nativeForEach&&obj.forEach===nativeForEach){obj.forEach(iterator,context)}else if(obj.length===+obj.length){for(var i=0,length=obj.length;i<length;i++){if(iterator.call(context,obj[i],i,obj)===breaker)return}}else{var keys=_.keys(obj);for(var i=0,length=keys.length;i<length;i++){if(iterator.call(context,obj[keys[i]],keys[i],obj)===breaker)return}}return obj};_.map=_.collect=function(obj,iterator,context){var results=[];if(obj==null)return results;if(nativeMap&&obj.map===nativeMap)return obj.map(iterator,context);each(obj,function(value,index,list){results.push(iterator.call(context,value,index,list))});return results};var reduceError="Reduce of empty array with no initial value";_.reduce=_.foldl=_.inject=function(obj,iterator,memo,context){var initial=arguments.length>2;if(obj==null)obj=[];if(nativeReduce&&obj.reduce===nativeReduce){if(context)iterator=_.bind(iterator,context);return initial?obj.reduce(iterator,memo):obj.reduce(iterator)}each(obj,function(value,index,list){if(!initial){memo=value;initial=true}else{memo=iterator.call(context,memo,value,index,list)}});if(!initial)throw new TypeError(reduceError);return memo};_.reduceRight=_.foldr=function(obj,iterator,memo,context){var initial=arguments.length>2;if(obj==null)obj=[];if(nativeReduceRight&&obj.reduceRight===nativeReduceRight){if(context)iterator=_.bind(iterator,context);return initial?obj.reduceRight(iterator,memo):obj.reduceRight(iterator)}var length=obj.length;if(length!==+length){var keys=_.keys(obj);length=keys.length}each(obj,function(value,index,list){index=keys?keys[--length]:--length;if(!initial){memo=obj[index];initial=true}else{memo=iterator.call(context,memo,obj[index],index,list)}});if(!initial)throw new TypeError(reduceError);return memo};_.find=_.detect=function(obj,predicate,context){var result;any(obj,function(value,index,list){if(predicate.call(context,value,index,list)){result=value;return true}});return result};_.filter=_.select=function(obj,predicate,context){var results=[];if(obj==null)return results;if(nativeFilter&&obj.filter===nativeFilter)return obj.filter(predicate,context);each(obj,function(value,index,list){if(predicate.call(context,value,index,list))results.push(value)});return results};_.reject=function(obj,predicate,context){return _.filter(obj,function(value,index,list){return!predicate.call(context,value,index,list)},context)};_.every=_.all=function(obj,predicate,context){predicate||(predicate=_.identity);var result=true;if(obj==null)return result;if(nativeEvery&&obj.every===nativeEvery)return obj.every(predicate,context);each(obj,function(value,index,list){if(!(result=result&&predicate.call(context,value,index,list)))return breaker});return!!result};var any=_.some=_.any=function(obj,predicate,context){predicate||(predicate=_.identity);var result=false;if(obj==null)return result;if(nativeSome&&obj.some===nativeSome)return obj.some(predicate,context);each(obj,function(value,index,list){if(result||(result=predicate.call(context,value,index,list)))return breaker});return!!result};_.contains=_.include=function(obj,target){if(obj==null)return false;if(nativeIndexOf&&obj.indexOf===nativeIndexOf)return obj.indexOf(target)!=-1;return any(obj,function(value){return value===target})};_.invoke=function(obj,method){var args=slice.call(arguments,2);var isFunc=_.isFunction(method);return _.map(obj,function(value){return(isFunc?method:value[method]).apply(value,args)})};_.pluck=function(obj,key){return _.map(obj,_.property(key))};_.where=function(obj,attrs){return _.filter(obj,_.matches(attrs))};_.findWhere=function(obj,attrs){return _.find(obj,_.matches(attrs))};_.max=function(obj,iterator,context){if(!iterator&&_.isArray(obj)&&obj[0]===+obj[0]&&obj.length<65535){return Math.max.apply(Math,obj)}var result=-Infinity,lastComputed=-Infinity;each(obj,function(value,index,list){var computed=iterator?iterator.call(context,value,index,list):value;if(computed>lastComputed){result=value;lastComputed=computed}});return result};_.min=function(obj,iterator,context){if(!iterator&&_.isArray(obj)&&obj[0]===+obj[0]&&obj.length<65535){return Math.min.apply(Math,obj)}var result=Infinity,lastComputed=Infinity;each(obj,function(value,index,list){var computed=iterator?iterator.call(context,value,index,list):value;if(computed<lastComputed){result=value;lastComputed=computed}});return result};_.shuffle=function(obj){var rand;var index=0;var shuffled=[];each(obj,function(value){rand=_.random(index++);shuffled[index-1]=shuffled[rand];shuffled[rand]=value});return shuffled};_.sample=function(obj,n,guard){if(n==null||guard){if(obj.length!==+obj.length)obj=_.values(obj);return obj[_.random(obj.length-1)]}return _.shuffle(obj).slice(0,Math.max(0,n))};var lookupIterator=function(value){if(value==null)return _.identity;if(_.isFunction(value))return value;return _.property(value)};_.sortBy=function(obj,iterator,context){iterator=lookupIterator(iterator);return _.pluck(_.map(obj,function(value,index,list){return{value:value,index:index,criteria:iterator.call(context,value,index,list)}}).sort(function(left,right){var a=left.criteria;var b=right.criteria;if(a!==b){if(a>b||a===void 0)return 1;if(a<b||b===void 0)return-1}return left.index-right.index}),"value")};var group=function(behavior){return function(obj,iterator,context){var result={};iterator=lookupIterator(iterator);each(obj,function(value,index){var key=iterator.call(context,value,index,obj);behavior(result,key,value)});return result}};_.groupBy=group(function(result,key,value){_.has(result,key)?result[key].push(value):result[key]=[value]});_.indexBy=group(function(result,key,value){result[key]=value});_.countBy=group(function(result,key){_.has(result,key)?result[key]++:result[key]=1});_.sortedIndex=function(array,obj,iterator,context){iterator=lookupIterator(iterator);var value=iterator.call(context,obj);var low=0,high=array.length;while(low<high){var mid=low+high>>>1;iterator.call(context,array[mid])<value?low=mid+1:high=mid}return low};_.toArray=function(obj){if(!obj)return[];if(_.isArray(obj))return slice.call(obj);if(obj.length===+obj.length)return _.map(obj,_.identity);return _.values(obj)};_.size=function(obj){if(obj==null)return 0;return obj.length===+obj.length?obj.length:_.keys(obj).length};_.first=_.head=_.take=function(array,n,guard){if(array==null)return void 0;if(n==null||guard)return array[0];if(n<0)return[];return slice.call(array,0,n)};_.initial=function(array,n,guard){return slice.call(array,0,array.length-(n==null||guard?1:n))};_.last=function(array,n,guard){if(array==null)return void 0;if(n==null||guard)return array[array.length-1];return slice.call(array,Math.max(array.length-n,0))};_.rest=_.tail=_.drop=function(array,n,guard){return slice.call(array,n==null||guard?1:n)};_.compact=function(array){return _.filter(array,_.identity)};var flatten=function(input,shallow,output){if(shallow&&_.every(input,_.isArray)){return concat.apply(output,input)}each(input,function(value){if(_.isArray(value)||_.isArguments(value)){shallow?push.apply(output,value):flatten(value,shallow,output)}else{output.push(value)}});return output};_.flatten=function(array,shallow){return flatten(array,shallow,[])};_.without=function(array){return _.difference(array,slice.call(arguments,1))};_.partition=function(array,predicate){var pass=[],fail=[];each(array,function(elem){(predicate(elem)?pass:fail).push(elem)});return[pass,fail]};_.uniq=_.unique=function(array,isSorted,iterator,context){if(_.isFunction(isSorted)){context=iterator;iterator=isSorted;isSorted=false}var initial=iterator?_.map(array,iterator,context):array;var results=[];var seen=[];each(initial,function(value,index){if(isSorted?!index||seen[seen.length-1]!==value:!_.contains(seen,value)){seen.push(value);results.push(array[index])}});return results};_.union=function(){return _.uniq(_.flatten(arguments,true))};_.intersection=function(array){var rest=slice.call(arguments,1);return _.filter(_.uniq(array),function(item){return _.every(rest,function(other){return _.contains(other,item)})})};_.difference=function(array){var rest=concat.apply(ArrayProto,slice.call(arguments,1));return _.filter(array,function(value){return!_.contains(rest,value)})};_.zip=function(){var length=_.max(_.pluck(arguments,"length").concat(0));var results=new Array(length);for(var i=0;i<length;i++){results[i]=_.pluck(arguments,""+i)}return results};_.object=function(list,values){if(list==null)return{};var result={};for(var i=0,length=list.length;i<length;i++){if(values){result[list[i]]=values[i]}else{result[list[i][0]]=list[i][1]}}return result};_.indexOf=function(array,item,isSorted){if(array==null)return-1;var i=0,length=array.length;if(isSorted){if(typeof isSorted=="number"){i=isSorted<0?Math.max(0,length+isSorted):isSorted}else{i=_.sortedIndex(array,item);return array[i]===item?i:-1}}if(nativeIndexOf&&array.indexOf===nativeIndexOf)return array.indexOf(item,isSorted);for(;i<length;i++)if(array[i]===item)return i;return-1};_.lastIndexOf=function(array,item,from){if(array==null)return-1;var hasIndex=from!=null;if(nativeLastIndexOf&&array.lastIndexOf===nativeLastIndexOf){return hasIndex?array.lastIndexOf(item,from):array.lastIndexOf(item)}var i=hasIndex?from:array.length;while(i--)if(array[i]===item)return i;return-1};_.range=function(start,stop,step){if(arguments.length<=1){stop=start||0;start=0}step=arguments[2]||1;var length=Math.max(Math.ceil((stop-start)/step),0);var idx=0;var range=new Array(length);while(idx<length){range[idx++]=start;start+=step}return range};var ctor=function(){};_.bind=function(func,context){var args,bound;if(nativeBind&&func.bind===nativeBind)return nativeBind.apply(func,slice.call(arguments,1));if(!_.isFunction(func))throw new TypeError;
args=slice.call(arguments,2);return bound=function(){if(!(this instanceof bound))return func.apply(context,args.concat(slice.call(arguments)));ctor.prototype=func.prototype;var self=new ctor;ctor.prototype=null;var result=func.apply(self,args.concat(slice.call(arguments)));if(Object(result)===result)return result;return self}};_.partial=function(func){var boundArgs=slice.call(arguments,1);return function(){var position=0;var args=boundArgs.slice();for(var i=0,length=args.length;i<length;i++){if(args[i]===_)args[i]=arguments[position++]}while(position<arguments.length)args.push(arguments[position++]);return func.apply(this,args)}};_.bindAll=function(obj){var funcs=slice.call(arguments,1);if(funcs.length===0)throw new Error("bindAll must be passed function names");each(funcs,function(f){obj[f]=_.bind(obj[f],obj)});return obj};_.memoize=function(func,hasher){var memo={};hasher||(hasher=_.identity);return function(){var key=hasher.apply(this,arguments);return _.has(memo,key)?memo[key]:memo[key]=func.apply(this,arguments)}};_.delay=function(func,wait){var args=slice.call(arguments,2);return setTimeout(function(){return func.apply(null,args)},wait)};_.defer=function(func){return _.delay.apply(_,[func,1].concat(slice.call(arguments,1)))};_.throttle=function(func,wait,options){var context,args,result;var timeout=null;var previous=0;options||(options={});var later=function(){previous=options.leading===false?0:_.now();timeout=null;result=func.apply(context,args);context=args=null};return function(){var now=_.now();if(!previous&&options.leading===false)previous=now;var remaining=wait-(now-previous);context=this;args=arguments;if(remaining<=0){clearTimeout(timeout);timeout=null;previous=now;result=func.apply(context,args);context=args=null}else if(!timeout&&options.trailing!==false){timeout=setTimeout(later,remaining)}return result}};_.debounce=function(func,wait,immediate){var timeout,args,context,timestamp,result;var later=function(){var last=_.now()-timestamp;if(last<wait){timeout=setTimeout(later,wait-last)}else{timeout=null;if(!immediate){result=func.apply(context,args);context=args=null}}};return function(){context=this;args=arguments;timestamp=_.now();var callNow=immediate&&!timeout;if(!timeout){timeout=setTimeout(later,wait)}if(callNow){result=func.apply(context,args);context=args=null}return result}};_.once=function(func){var ran=false,memo;return function(){if(ran)return memo;ran=true;memo=func.apply(this,arguments);func=null;return memo}};_.wrap=function(func,wrapper){return _.partial(wrapper,func)};_.compose=function(){var funcs=arguments;return function(){var args=arguments;for(var i=funcs.length-1;i>=0;i--){args=[funcs[i].apply(this,args)]}return args[0]}};_.after=function(times,func){return function(){if(--times<1){return func.apply(this,arguments)}}};_.keys=function(obj){if(!_.isObject(obj))return[];if(nativeKeys)return nativeKeys(obj);var keys=[];for(var key in obj)if(_.has(obj,key))keys.push(key);return keys};_.values=function(obj){var keys=_.keys(obj);var length=keys.length;var values=new Array(length);for(var i=0;i<length;i++){values[i]=obj[keys[i]]}return values};_.pairs=function(obj){var keys=_.keys(obj);var length=keys.length;var pairs=new Array(length);for(var i=0;i<length;i++){pairs[i]=[keys[i],obj[keys[i]]]}return pairs};_.invert=function(obj){var result={};var keys=_.keys(obj);for(var i=0,length=keys.length;i<length;i++){result[obj[keys[i]]]=keys[i]}return result};_.functions=_.methods=function(obj){var names=[];for(var key in obj){if(_.isFunction(obj[key]))names.push(key)}return names.sort()};_.extend=function(obj){each(slice.call(arguments,1),function(source){if(source){for(var prop in source){obj[prop]=source[prop]}}});return obj};_.pick=function(obj){var copy={};var keys=concat.apply(ArrayProto,slice.call(arguments,1));each(keys,function(key){if(key in obj)copy[key]=obj[key]});return copy};_.omit=function(obj){var copy={};var keys=concat.apply(ArrayProto,slice.call(arguments,1));for(var key in obj){if(!_.contains(keys,key))copy[key]=obj[key]}return copy};_.defaults=function(obj){each(slice.call(arguments,1),function(source){if(source){for(var prop in source){if(obj[prop]===void 0)obj[prop]=source[prop]}}});return obj};_.clone=function(obj){if(!_.isObject(obj))return obj;return _.isArray(obj)?obj.slice():_.extend({},obj)};_.tap=function(obj,interceptor){interceptor(obj);return obj};var eq=function(a,b,aStack,bStack){if(a===b)return a!==0||1/a==1/b;if(a==null||b==null)return a===b;if(a instanceof _)a=a._wrapped;if(b instanceof _)b=b._wrapped;var className=toString.call(a);if(className!=toString.call(b))return false;switch(className){case"[object String]":return a==String(b);case"[object Number]":return a!=+a?b!=+b:a==0?1/a==1/b:a==+b;case"[object Date]":case"[object Boolean]":return+a==+b;case"[object RegExp]":return a.source==b.source&&a.global==b.global&&a.multiline==b.multiline&&a.ignoreCase==b.ignoreCase}if(typeof a!="object"||typeof b!="object")return false;var length=aStack.length;while(length--){if(aStack[length]==a)return bStack[length]==b}var aCtor=a.constructor,bCtor=b.constructor;if(aCtor!==bCtor&&!(_.isFunction(aCtor)&&aCtor instanceof aCtor&&_.isFunction(bCtor)&&bCtor instanceof bCtor)&&("constructor"in a&&"constructor"in b)){return false}aStack.push(a);bStack.push(b);var size=0,result=true;if(className=="[object Array]"){size=a.length;result=size==b.length;if(result){while(size--){if(!(result=eq(a[size],b[size],aStack,bStack)))break}}}else{for(var key in a){if(_.has(a,key)){size++;if(!(result=_.has(b,key)&&eq(a[key],b[key],aStack,bStack)))break}}if(result){for(key in b){if(_.has(b,key)&&!size--)break}result=!size}}aStack.pop();bStack.pop();return result};_.isEqual=function(a,b){return eq(a,b,[],[])};_.isEmpty=function(obj){if(obj==null)return true;if(_.isArray(obj)||_.isString(obj))return obj.length===0;for(var key in obj)if(_.has(obj,key))return false;return true};_.isElement=function(obj){return!!(obj&&obj.nodeType===1)};_.isArray=nativeIsArray||function(obj){return toString.call(obj)=="[object Array]"};_.isObject=function(obj){return obj===Object(obj)};each(["Arguments","Function","String","Number","Date","RegExp"],function(name){_["is"+name]=function(obj){return toString.call(obj)=="[object "+name+"]"}});if(!_.isArguments(arguments)){_.isArguments=function(obj){return!!(obj&&_.has(obj,"callee"))}}if(typeof/./!=="function"){_.isFunction=function(obj){return typeof obj==="function"}}_.isFinite=function(obj){return isFinite(obj)&&!isNaN(parseFloat(obj))};_.isNaN=function(obj){return _.isNumber(obj)&&obj!=+obj};_.isBoolean=function(obj){return obj===true||obj===false||toString.call(obj)=="[object Boolean]"};_.isNull=function(obj){return obj===null};_.isUndefined=function(obj){return obj===void 0};_.has=function(obj,key){return hasOwnProperty.call(obj,key)};_.noConflict=function(){root._=previousUnderscore;return this};_.identity=function(value){return value};_.constant=function(value){return function(){return value}};_.property=function(key){return function(obj){return obj[key]}};_.matches=function(attrs){return function(obj){if(obj===attrs)return true;for(var key in attrs){if(attrs[key]!==obj[key])return false}return true}};_.times=function(n,iterator,context){var accum=Array(Math.max(0,n));for(var i=0;i<n;i++)accum[i]=iterator.call(context,i);return accum};_.random=function(min,max){if(max==null){max=min;min=0}return min+Math.floor(Math.random()*(max-min+1))};_.now=Date.now||function(){return(new Date).getTime()};var entityMap={escape:{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;"}};entityMap.unescape=_.invert(entityMap.escape);var entityRegexes={escape:new RegExp("["+_.keys(entityMap.escape).join("")+"]","g"),unescape:new RegExp("("+_.keys(entityMap.unescape).join("|")+")","g")};_.each(["escape","unescape"],function(method){_[method]=function(string){if(string==null)return"";return(""+string).replace(entityRegexes[method],function(match){return entityMap[method][match]})}});_.result=function(object,property){if(object==null)return void 0;var value=object[property];return _.isFunction(value)?value.call(object):value};_.mixin=function(obj){each(_.functions(obj),function(name){var func=_[name]=obj[name];_.prototype[name]=function(){var args=[this._wrapped];push.apply(args,arguments);return result.call(this,func.apply(_,args))}})};var idCounter=0;_.uniqueId=function(prefix){var id=++idCounter+"";return prefix?prefix+id:id};_.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var noMatch=/(.)^/;var escapes={"'":"'","\\":"\\","\r":"r","\n":"n"," ":"t","\u2028":"u2028","\u2029":"u2029"};var escaper=/\\|'|\r|\n|\t|\u2028|\u2029/g;_.template=function(text,data,settings){var render;settings=_.defaults({},settings,_.templateSettings);var matcher=new RegExp([(settings.escape||noMatch).source,(settings.interpolate||noMatch).source,(settings.evaluate||noMatch).source].join("|")+"|$","g");var index=0;var source="__p+='";text.replace(matcher,function(match,escape,interpolate,evaluate,offset){source+=text.slice(index,offset).replace(escaper,function(match){return"\\"+escapes[match]});if(escape){source+="'+\n((__t=("+escape+"))==null?'':_.escape(__t))+\n'"}if(interpolate){source+="'+\n((__t=("+interpolate+"))==null?'':__t)+\n'"}if(evaluate){source+="';\n"+evaluate+"\n__p+='"}index=offset+match.length;return match});source+="';\n";if(!settings.variable)source="with(obj||{}){\n"+source+"}\n";source="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+source+"return __p;\n";try{render=new Function(settings.variable||"obj","_",source)}catch(e){e.source=source;throw e}if(data)return render(data,_);var template=function(data){return render.call(this,data,_)};template.source="function("+(settings.variable||"obj")+"){\n"+source+"}";return template};_.chain=function(obj){return _(obj).chain()};var result=function(obj){return this._chain?_(obj).chain():obj};_.mixin(_);each(["pop","push","reverse","shift","sort","splice","unshift"],function(name){var method=ArrayProto[name];_.prototype[name]=function(){var obj=this._wrapped;method.apply(obj,arguments);if((name=="shift"||name=="splice")&&obj.length===0)delete obj[0];return result.call(this,obj)}});each(["concat","join","slice"],function(name){var method=ArrayProto[name];_.prototype[name]=function(){return result.call(this,method.apply(this._wrapped,arguments))}});_.extend(_.prototype,{chain:function(){this._chain=true;return this},value:function(){return this._wrapped}});if(typeof define==="function"&&define.amd){define("underscore",[],function(){return _})}}).call(this)},{}],346:[function(require,module,exports){module.exports=WildEmitter;function WildEmitter(){this.callbacks={}}WildEmitter.prototype.on=function(event,groupName,fn){var hasGroup=arguments.length===3,group=hasGroup?arguments[1]:undefined,func=hasGroup?arguments[2]:arguments[1];func._groupName=group;(this.callbacks[event]=this.callbacks[event]||[]).push(func);return this};WildEmitter.prototype.once=function(event,groupName,fn){var self=this,hasGroup=arguments.length===3,group=hasGroup?arguments[1]:undefined,func=hasGroup?arguments[2]:arguments[1];function on(){self.off(event,on);func.apply(this,arguments)}this.on(event,group,on);return this};WildEmitter.prototype.releaseGroup=function(groupName){var item,i,len,handlers;for(item in this.callbacks){handlers=this.callbacks[item];for(i=0,len=handlers.length;i<len;i++){if(handlers[i]._groupName===groupName){handlers.splice(i,1);i--;len--}}}return this};WildEmitter.prototype.off=function(event,fn){var callbacks=this.callbacks[event],i;if(!callbacks)return this;if(arguments.length===1){delete this.callbacks[event];return this}i=callbacks.indexOf(fn);callbacks.splice(i,1);return this};WildEmitter.prototype.emit=function(event){var args=[].slice.call(arguments,1),callbacks=this.callbacks[event],specialCallbacks=this.getWildcardCallbacks(event),i,len,item,listeners;if(callbacks){listeners=callbacks.slice();for(i=0,len=listeners.length;i<len;++i){if(listeners[i]){listeners[i].apply(this,args)}else{break}}}if(specialCallbacks){len=specialCallbacks.length;listeners=specialCallbacks.slice();for(i=0,len=listeners.length;i<len;++i){if(listeners[i]){listeners[i].apply(this,[event].concat(args))}else{break}}}return this};WildEmitter.prototype.getWildcardCallbacks=function(eventName){var item,split,result=[];for(item in this.callbacks){split=item.split("*");if(item==="*"||split.length===2&&eventName.slice(0,split[0].length)===split[0]){result=result.concat(this.callbacks[item])}}return result}},{}],347:[function(require,module,exports){"use strict";var StringPrep=require("./lib/stringprep");function bareJID(local,domain){if(local){return local+"@"+domain}return domain}function fullJID(local,domain,resource){if(resource){return bareJID(local,domain)+"/"+resource}return bareJID(local,domain)}exports.prep=function(data){var local=data.local;var domain=data.domain;var resource=data.resource;var unescapedLocal=local;if(local){local=StringPrep.nodeprep(local);unescapedLocal=exports.unescape(local)}if(resource){resource=StringPrep.resourceprep(resource)}if(domain[domain.length-1]==="."){domain=domain.slice(0,domain.length-1)}domain=StringPrep.nameprep(domain.split(".").map(StringPrep.toUnicode).join("."));return{prepped:data.prepped||StringPrep.available,local:local,domain:domain,resource:resource,bare:bareJID(local,domain),full:fullJID(local,domain,resource),unescapedLocal:unescapedLocal,unescapedBare:bareJID(unescapedLocal,domain),unescapedFull:fullJID(unescapedLocal,domain,resource)}};exports.parse=function(jid,trusted){var local="";var domain="";var resource="";trusted=/^[\x00-\x7F]*$/.test(jid);var resourceStart=jid.indexOf("/");if(resourceStart>0){resource=jid.slice(resourceStart+1);jid=jid.slice(0,resourceStart)}var localEnd=jid.indexOf("@");if(localEnd>0){local=jid.slice(0,localEnd);jid=jid.slice(localEnd+1)}domain=jid;var preppedJID=exports.prep({local:local,domain:domain,resource:resource});preppedJID.prepped=preppedJID.prepped||trusted;return preppedJID};exports.equal=function(jid1,jid2,requirePrep){jid1=new exports.JID(jid1);jid2=new exports.JID(jid2);if(arguments.length===2){requirePrep=true}return jid1.local===jid2.local&&jid1.domain===jid2.domain&&jid1.resource===jid2.resource&&(requirePrep?jid1.prepped&&jid2.prepped:true)};exports.equalBare=function(jid1,jid2,requirePrep){jid1=new exports.JID(jid1);jid2=new exports.JID(jid2);if(arguments.length===2){requirePrep=true}return jid1.local===jid2.local&&jid1.domain===jid2.domain&&(requirePrep?jid1.prepped&&jid2.prepped:true)};exports.escape=function(val){return val.replace(/^\s+|\s+$/g,"").replace(/\\5c/g,"\\5c5c").replace(/\\20/g,"\\5c20").replace(/\\22/g,"\\5c22").replace(/\\26/g,"\\5c26").replace(/\\27/g,"\\5c27").replace(/\\2f/g,"\\5c2f").replace(/\\3a/g,"\\5c3a").replace(/\\3c/g,"\\5c3c").replace(/\\3e/g,"\\5c3e").replace(/\\40/g,"\\5c40").replace(/ /g,"\\20").replace(/\"/g,"\\22").replace(/\&/g,"\\26").replace(/\'/g,"\\27").replace(/\//g,"\\2f").replace(/:/g,"\\3a").replace(/</g,"\\3c").replace(/>/g,"\\3e").replace(/@/g,"\\40")};exports.unescape=function(val){return val.replace(/\\20/g," ").replace(/\\22/g,'"').replace(/\\26/g,"&").replace(/\\27/g,"'").replace(/\\2f/g,"/").replace(/\\3a/g,":").replace(/\\3c/g,"<").replace(/\\3e/g,">").replace(/\\40/g,"@").replace(/\\5c/g,"\\")};exports.create=function(local,domain,resource){return new exports.JID(local,domain,resource)};exports.JID=function JID(localOrJID,domain,resource){var parsed={};if(localOrJID&&!domain&&!resource){if(typeof localOrJID==="string"){parsed=exports.parse(localOrJID)}else if(localOrJID instanceof exports.JID){parsed=localOrJID}else{throw new Error("Invalid argument type")}}else if(domain){parsed=exports.prep({local:exports.escape(localOrJID),domain:domain,resource:resource})}else{parsed={}}this.local=parsed.local||"";this.domain=parsed.domain||"";this.resource=parsed.resource||"";this.bare=parsed.bare||"";this.full=parsed.full||"";this.unescapedLocal=parsed.unescapedLocal||"";this.unescapedBare=parsed.unescapedBare||"";this.unescapedFull=parsed.unescapedFull||"";this.prepped=parsed.prepped};exports.JID.prototype.toString=function(){return this.full};exports.JID.prototype.toJSON=function(){return this.full}},{"./lib/stringprep":348}],348:[function(require,module,exports){"use strict";var punycode=require("punycode");exports.available=false;exports.toUnicode=punycode.toUnicode;exports.nameprep=function(str){return str.toLowerCase()};exports.nodeprep=function(str){return str.toLowerCase()};exports.resourceprep=function(str){return str}},{punycode:362}],349:[function(require,module,exports){},{}],350:[function(require,module,exports){var base64=require("base64-js");var ieee754=require("ieee754");exports.Buffer=Buffer;exports.SlowBuffer=Buffer;exports.INSPECT_MAX_BYTES=50;Buffer.poolSize=8192;Buffer._useTypedArrays=function(){try{var buf=new ArrayBuffer(0);var arr=new Uint8Array(buf);arr.foo=function(){return 42};return 42===arr.foo()&&typeof arr.subarray==="function"}catch(e){return false}}();function Buffer(subject,encoding,noZero){if(!(this instanceof Buffer))return new Buffer(subject,encoding,noZero);var type=typeof subject;if(encoding==="base64"&&type==="string"){subject=stringtrim(subject);while(subject.length%4!==0){subject=subject+"="}}var length;if(type==="number")length=coerce(subject);else if(type==="string")length=Buffer.byteLength(subject,encoding);else if(type==="object")length=coerce(subject.length);else throw new Error("First argument needs to be a number, array or string.");var buf;if(Buffer._useTypedArrays){buf=Buffer._augment(new Uint8Array(length))}else{buf=this;buf.length=length;buf._isBuffer=true}var i;if(Buffer._useTypedArrays&&typeof subject.byteLength==="number"){buf._set(subject)}else if(isArrayish(subject)){for(i=0;i<length;i++){if(Buffer.isBuffer(subject))buf[i]=subject.readUInt8(i);else buf[i]=subject[i]}}else if(type==="string"){buf.write(subject,0,encoding)}else if(type==="number"&&!Buffer._useTypedArrays&&!noZero){for(i=0;i<length;i++){buf[i]=0}}return buf}Buffer.isEncoding=function(encoding){switch(String(encoding).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"raw":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return true;default:return false}};Buffer.isBuffer=function(b){return!!(b!==null&&b!==undefined&&b._isBuffer)};Buffer.byteLength=function(str,encoding){var ret;str=str+"";switch(encoding||"utf8"){case"hex":ret=str.length/2;break;case"utf8":case"utf-8":ret=utf8ToBytes(str).length;break;case"ascii":case"binary":case"raw":ret=str.length;break;case"base64":ret=base64ToBytes(str).length;break;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":ret=str.length*2;break;default:throw new Error("Unknown encoding")}return ret};Buffer.concat=function(list,totalLength){assert(isArray(list),"Usage: Buffer.concat(list, [totalLength])\n"+"list should be an Array.");if(list.length===0){return new Buffer(0)}else if(list.length===1){return list[0]}var i;if(typeof totalLength!=="number"){totalLength=0;for(i=0;i<list.length;i++){totalLength+=list[i].length}}var buf=new Buffer(totalLength);var pos=0;for(i=0;i<list.length;i++){var item=list[i];item.copy(buf,pos);pos+=item.length}return buf};function _hexWrite(buf,string,offset,length){offset=Number(offset)||0;var remaining=buf.length-offset;if(!length){length=remaining}else{length=Number(length);if(length>remaining){length=remaining}}var strLen=string.length;assert(strLen%2===0,"Invalid hex string");if(length>strLen/2){length=strLen/2}for(var i=0;i<length;i++){var byte=parseInt(string.substr(i*2,2),16);assert(!isNaN(byte),"Invalid hex string");buf[offset+i]=byte}Buffer._charsWritten=i*2;return i}function _utf8Write(buf,string,offset,length){var charsWritten=Buffer._charsWritten=blitBuffer(utf8ToBytes(string),buf,offset,length);return charsWritten}function _asciiWrite(buf,string,offset,length){var charsWritten=Buffer._charsWritten=blitBuffer(asciiToBytes(string),buf,offset,length);return charsWritten}function _binaryWrite(buf,string,offset,length){return _asciiWrite(buf,string,offset,length)}function _base64Write(buf,string,offset,length){var charsWritten=Buffer._charsWritten=blitBuffer(base64ToBytes(string),buf,offset,length);return charsWritten}function _utf16leWrite(buf,string,offset,length){var charsWritten=Buffer._charsWritten=blitBuffer(utf16leToBytes(string),buf,offset,length);return charsWritten}Buffer.prototype.write=function(string,offset,length,encoding){if(isFinite(offset)){if(!isFinite(length)){encoding=length;length=undefined}}else{var swap=encoding;encoding=offset;offset=length;length=swap}offset=Number(offset)||0;var remaining=this.length-offset;if(!length){length=remaining}else{length=Number(length);if(length>remaining){length=remaining}}encoding=String(encoding||"utf8").toLowerCase();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 Error("Unknown encoding")}return ret};Buffer.prototype.toString=function(encoding,start,end){var self=this;encoding=String(encoding||"utf8").toLowerCase();start=Number(start)||0;end=end!==undefined?Number(end):end=self.length;if(end===start)return"";var ret;switch(encoding){case"hex":ret=_hexSlice(self,start,end);break;case"utf8":case"utf-8":ret=_utf8Slice(self,start,end);break;case"ascii":ret=_asciiSlice(self,start,end);break;case"binary":ret=_binarySlice(self,start,end);break;case"base64":ret=_base64Slice(self,start,end);break;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":ret=_utf16leSlice(self,start,end);break;default:throw new Error("Unknown encoding")}return ret};Buffer.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};Buffer.prototype.copy=function(target,target_start,start,end){var source=this;if(!start)start=0;if(!end&&end!==0)end=this.length;if(!target_start)target_start=0;if(end===start)return;if(target.length===0||source.length===0)return;assert(end>=start,"sourceEnd < sourceStart");assert(target_start>=0&&target_start<target.length,"targetStart out of bounds");assert(start>=0&&start<source.length,"sourceStart out of bounds");assert(end>=0&&end<=source.length,"sourceEnd out of bounds");if(end>this.length)end=this.length;if(target.length-target_start<end-start)end=target.length-target_start+start;var len=end-start;if(len<100||!Buffer._useTypedArrays){for(var i=0;i<len;i++)target[i+target_start]=this[i+start]}else{target._set(this.subarray(start,start+len),target_start)}};function _base64Slice(buf,start,end){if(start===0&&end===buf.length){return base64.fromByteArray(buf)}else{return base64.fromByteArray(buf.slice(start,end))}}function _utf8Slice(buf,start,end){var res="";var tmp="";end=Math.min(buf.length,end);for(var i=start;i<end;i++){if(buf[i]<=127){res+=decodeUtf8Char(tmp)+String.fromCharCode(buf[i]);tmp=""}else{tmp+="%"+buf[i].toString(16)}}return res+decodeUtf8Char(tmp)}function _asciiSlice(buf,start,end){var ret="";end=Math.min(buf.length,end);for(var i=start;i<end;i++)ret+=String.fromCharCode(buf[i]);return ret}function _binarySlice(buf,start,end){return _asciiSlice(buf,start,end)}function _hexSlice(buf,start,end){var len=buf.length;if(!start||start<0)start=0;if(!end||end<0||end>len)end=len;var out="";for(var i=start;i<end;i++){out+=toHex(buf[i])}return out}function _utf16leSlice(buf,start,end){var bytes=buf.slice(start,end);var res="";for(var i=0;i<bytes.length;i+=2){res+=String.fromCharCode(bytes[i]+bytes[i+1]*256)}return res}Buffer.prototype.slice=function(start,end){var len=this.length;start=clamp(start,len,0);end=clamp(end,len,len);if(Buffer._useTypedArrays){return Buffer._augment(this.subarray(start,end))}else{var sliceLen=end-start;var newBuf=new Buffer(sliceLen,undefined,true);for(var i=0;i<sliceLen;i++){newBuf[i]=this[i+start]}return newBuf}};Buffer.prototype.get=function(offset){console.log(".get() is deprecated. Access using array indexes instead.");return this.readUInt8(offset)};Buffer.prototype.set=function(v,offset){console.log(".set() is deprecated. Access using array indexes instead.");return this.writeUInt8(v,offset)};Buffer.prototype.readUInt8=function(offset,noAssert){if(!noAssert){assert(offset!==undefined&&offset!==null,"missing offset");assert(offset<this.length,"Trying to read beyond buffer length")}if(offset>=this.length)return;return this[offset]};function _readUInt16(buf,offset,littleEndian,noAssert){if(!noAssert){assert(typeof littleEndian==="boolean","missing or invalid endian");assert(offset!==undefined&&offset!==null,"missing offset");assert(offset+1<buf.length,"Trying to read beyond buffer length")}var len=buf.length;if(offset>=len)return;var val;if(littleEndian){val=buf[offset];if(offset+1<len)val|=buf[offset+1]<<8}else{val=buf[offset]<<8;if(offset+1<len)val|=buf[offset+1]}return val}Buffer.prototype.readUInt16LE=function(offset,noAssert){return _readUInt16(this,offset,true,noAssert)};Buffer.prototype.readUInt16BE=function(offset,noAssert){return _readUInt16(this,offset,false,noAssert)};function _readUInt32(buf,offset,littleEndian,noAssert){if(!noAssert){assert(typeof littleEndian==="boolean","missing or invalid endian");assert(offset!==undefined&&offset!==null,"missing offset");assert(offset+3<buf.length,"Trying to read beyond buffer length")}var len=buf.length;if(offset>=len)return;var val;if(littleEndian){if(offset+2<len)val=buf[offset+2]<<16;if(offset+1<len)val|=buf[offset+1]<<8;val|=buf[offset];if(offset+3<len)val=val+(buf[offset+3]<<24>>>0)}else{if(offset+1<len)val=buf[offset+1]<<16;if(offset+2<len)val|=buf[offset+2]<<8;if(offset+3<len)val|=buf[offset+3];val=val+(buf[offset]<<24>>>0)}return val}Buffer.prototype.readUInt32LE=function(offset,noAssert){return _readUInt32(this,offset,true,noAssert)};Buffer.prototype.readUInt32BE=function(offset,noAssert){return _readUInt32(this,offset,false,noAssert)};Buffer.prototype.readInt8=function(offset,noAssert){if(!noAssert){assert(offset!==undefined&&offset!==null,"missing offset");assert(offset<this.length,"Trying to read beyond buffer length")}if(offset>=this.length)return;var neg=this[offset]&128;if(neg)return(255-this[offset]+1)*-1;else return this[offset]};function _readInt16(buf,offset,littleEndian,noAssert){if(!noAssert){assert(typeof littleEndian==="boolean","missing or invalid endian");assert(offset!==undefined&&offset!==null,"missing offset");assert(offset+1<buf.length,"Trying to read beyond buffer length")}var len=buf.length;if(offset>=len)return;var val=_readUInt16(buf,offset,littleEndian,true);var neg=val&32768;if(neg)return(65535-val+1)*-1;else return val}Buffer.prototype.readInt16LE=function(offset,noAssert){return _readInt16(this,offset,true,noAssert)};Buffer.prototype.readInt16BE=function(offset,noAssert){return _readInt16(this,offset,false,noAssert)};function _readInt32(buf,offset,littleEndian,noAssert){if(!noAssert){assert(typeof littleEndian==="boolean","missing or invalid endian");assert(offset!==undefined&&offset!==null,"missing offset");assert(offset+3<buf.length,"Trying to read beyond buffer length")}var len=buf.length;if(offset>=len)return;var val=_readUInt32(buf,offset,littleEndian,true);var neg=val&2147483648;if(neg)return(4294967295-val+1)*-1;else return val}Buffer.prototype.readInt32LE=function(offset,noAssert){return _readInt32(this,offset,true,noAssert)};Buffer.prototype.readInt32BE=function(offset,noAssert){return _readInt32(this,offset,false,noAssert)};function _readFloat(buf,offset,littleEndian,noAssert){if(!noAssert){assert(typeof littleEndian==="boolean","missing or invalid endian");assert(offset+3<buf.length,"Trying to read beyond buffer length")}return ieee754.read(buf,offset,littleEndian,23,4)}Buffer.prototype.readFloatLE=function(offset,noAssert){return _readFloat(this,offset,true,noAssert)};Buffer.prototype.readFloatBE=function(offset,noAssert){return _readFloat(this,offset,false,noAssert)};function _readDouble(buf,offset,littleEndian,noAssert){if(!noAssert){assert(typeof littleEndian==="boolean","missing or invalid endian");assert(offset+7<buf.length,"Trying to read beyond buffer length")}return ieee754.read(buf,offset,littleEndian,52,8)}Buffer.prototype.readDoubleLE=function(offset,noAssert){return _readDouble(this,offset,true,noAssert)};Buffer.prototype.readDoubleBE=function(offset,noAssert){return _readDouble(this,offset,false,noAssert)};Buffer.prototype.writeUInt8=function(value,offset,noAssert){if(!noAssert){assert(value!==undefined&&value!==null,"missing value");assert(offset!==undefined&&offset!==null,"missing offset");assert(offset<this.length,"trying to write beyond buffer length");verifuint(value,255)}if(offset>=this.length)return;this[offset]=value};function _writeUInt16(buf,value,offset,littleEndian,noAssert){if(!noAssert){assert(value!==undefined&&value!==null,"missing value");assert(typeof littleEndian==="boolean","missing or invalid endian");assert(offset!==undefined&&offset!==null,"missing offset");assert(offset+1<buf.length,"trying to write beyond buffer length");verifuint(value,65535)}var len=buf.length;if(offset>=len)return;for(var i=0,j=Math.min(len-offset,2);i<j;i++){buf[offset+i]=(value&255<<8*(littleEndian?i:1-i))>>>(littleEndian?i:1-i)*8}}Buffer.prototype.writeUInt16LE=function(value,offset,noAssert){_writeUInt16(this,value,offset,true,noAssert)};Buffer.prototype.writeUInt16BE=function(value,offset,noAssert){_writeUInt16(this,value,offset,false,noAssert)};function _writeUInt32(buf,value,offset,littleEndian,noAssert){if(!noAssert){assert(value!==undefined&&value!==null,"missing value");assert(typeof littleEndian==="boolean","missing or invalid endian");assert(offset!==undefined&&offset!==null,"missing offset");assert(offset+3<buf.length,"trying to write beyond buffer length");verifuint(value,4294967295)}var len=buf.length;if(offset>=len)return;for(var i=0,j=Math.min(len-offset,4);i<j;i++){buf[offset+i]=value>>>(littleEndian?i:3-i)*8&255}}Buffer.prototype.writeUInt32LE=function(value,offset,noAssert){_writeUInt32(this,value,offset,true,noAssert)};Buffer.prototype.writeUInt32BE=function(value,offset,noAssert){_writeUInt32(this,value,offset,false,noAssert)};Buffer.prototype.writeInt8=function(value,offset,noAssert){if(!noAssert){assert(value!==undefined&&value!==null,"missing value");assert(offset!==undefined&&offset!==null,"missing offset");assert(offset<this.length,"Trying to write beyond buffer length");verifsint(value,127,-128)}if(offset>=this.length)return;if(value>=0)this.writeUInt8(value,offset,noAssert);else this.writeUInt8(255+value+1,offset,noAssert)};function _writeInt16(buf,value,offset,littleEndian,noAssert){if(!noAssert){assert(value!==undefined&&value!==null,"missing value");assert(typeof littleEndian==="boolean","missing or invalid endian");assert(offset!==undefined&&offset!==null,"missing offset");assert(offset+1<buf.length,"Trying to write beyond buffer length");verifsint(value,32767,-32768)}var len=buf.length;if(offset>=len)return;if(value>=0)_writeUInt16(buf,value,offset,littleEndian,noAssert);else _writeUInt16(buf,65535+value+1,offset,littleEndian,noAssert)}Buffer.prototype.writeInt16LE=function(value,offset,noAssert){_writeInt16(this,value,offset,true,noAssert)};Buffer.prototype.writeInt16BE=function(value,offset,noAssert){_writeInt16(this,value,offset,false,noAssert)};function _writeInt32(buf,value,offset,littleEndian,noAssert){if(!noAssert){assert(value!==undefined&&value!==null,"missing value");assert(typeof littleEndian==="boolean","missing or invalid endian");assert(offset!==undefined&&offset!==null,"missing offset");assert(offset+3<buf.length,"Trying to write beyond buffer length");verifsint(value,2147483647,-2147483648)
}var len=buf.length;if(offset>=len)return;if(value>=0)_writeUInt32(buf,value,offset,littleEndian,noAssert);else _writeUInt32(buf,4294967295+value+1,offset,littleEndian,noAssert)}Buffer.prototype.writeInt32LE=function(value,offset,noAssert){_writeInt32(this,value,offset,true,noAssert)};Buffer.prototype.writeInt32BE=function(value,offset,noAssert){_writeInt32(this,value,offset,false,noAssert)};function _writeFloat(buf,value,offset,littleEndian,noAssert){if(!noAssert){assert(value!==undefined&&value!==null,"missing value");assert(typeof littleEndian==="boolean","missing or invalid endian");assert(offset!==undefined&&offset!==null,"missing offset");assert(offset+3<buf.length,"Trying to write beyond buffer length");verifIEEE754(value,3.4028234663852886e38,-3.4028234663852886e38)}var len=buf.length;if(offset>=len)return;ieee754.write(buf,value,offset,littleEndian,23,4)}Buffer.prototype.writeFloatLE=function(value,offset,noAssert){_writeFloat(this,value,offset,true,noAssert)};Buffer.prototype.writeFloatBE=function(value,offset,noAssert){_writeFloat(this,value,offset,false,noAssert)};function _writeDouble(buf,value,offset,littleEndian,noAssert){if(!noAssert){assert(value!==undefined&&value!==null,"missing value");assert(typeof littleEndian==="boolean","missing or invalid endian");assert(offset!==undefined&&offset!==null,"missing offset");assert(offset+7<buf.length,"Trying to write beyond buffer length");verifIEEE754(value,1.7976931348623157e308,-1.7976931348623157e308)}var len=buf.length;if(offset>=len)return;ieee754.write(buf,value,offset,littleEndian,52,8)}Buffer.prototype.writeDoubleLE=function(value,offset,noAssert){_writeDouble(this,value,offset,true,noAssert)};Buffer.prototype.writeDoubleBE=function(value,offset,noAssert){_writeDouble(this,value,offset,false,noAssert)};Buffer.prototype.fill=function(value,start,end){if(!value)value=0;if(!start)start=0;if(!end)end=this.length;if(typeof value==="string"){value=value.charCodeAt(0)}assert(typeof value==="number"&&!isNaN(value),"value is not a number");assert(end>=start,"end < start");if(end===start)return;if(this.length===0)return;assert(start>=0&&start<this.length,"start out of bounds");assert(end>=0&&end<=this.length,"end out of bounds");for(var i=start;i<end;i++){this[i]=value}};Buffer.prototype.inspect=function(){var out=[];var len=this.length;for(var i=0;i<len;i++){out[i]=toHex(this[i]);if(i===exports.INSPECT_MAX_BYTES){out[i+1]="...";break}}return"<Buffer "+out.join(" ")+">"};Buffer.prototype.toArrayBuffer=function(){if(typeof Uint8Array!=="undefined"){if(Buffer._useTypedArrays){return new Buffer(this).buffer}else{var buf=new Uint8Array(this.length);for(var i=0,len=buf.length;i<len;i+=1)buf[i]=this[i];return buf.buffer}}else{throw new Error("Buffer.toArrayBuffer not supported in this browser")}};function stringtrim(str){if(str.trim)return str.trim();return str.replace(/^\s+|\s+$/g,"")}var BP=Buffer.prototype;Buffer._augment=function(arr){arr._isBuffer=true;arr._get=arr.get;arr._set=arr.set;arr.get=BP.get;arr.set=BP.set;arr.write=BP.write;arr.toString=BP.toString;arr.toLocaleString=BP.toString;arr.toJSON=BP.toJSON;arr.copy=BP.copy;arr.slice=BP.slice;arr.readUInt8=BP.readUInt8;arr.readUInt16LE=BP.readUInt16LE;arr.readUInt16BE=BP.readUInt16BE;arr.readUInt32LE=BP.readUInt32LE;arr.readUInt32BE=BP.readUInt32BE;arr.readInt8=BP.readInt8;arr.readInt16LE=BP.readInt16LE;arr.readInt16BE=BP.readInt16BE;arr.readInt32LE=BP.readInt32LE;arr.readInt32BE=BP.readInt32BE;arr.readFloatLE=BP.readFloatLE;arr.readFloatBE=BP.readFloatBE;arr.readDoubleLE=BP.readDoubleLE;arr.readDoubleBE=BP.readDoubleBE;arr.writeUInt8=BP.writeUInt8;arr.writeUInt16LE=BP.writeUInt16LE;arr.writeUInt16BE=BP.writeUInt16BE;arr.writeUInt32LE=BP.writeUInt32LE;arr.writeUInt32BE=BP.writeUInt32BE;arr.writeInt8=BP.writeInt8;arr.writeInt16LE=BP.writeInt16LE;arr.writeInt16BE=BP.writeInt16BE;arr.writeInt32LE=BP.writeInt32LE;arr.writeInt32BE=BP.writeInt32BE;arr.writeFloatLE=BP.writeFloatLE;arr.writeFloatBE=BP.writeFloatBE;arr.writeDoubleLE=BP.writeDoubleLE;arr.writeDoubleBE=BP.writeDoubleBE;arr.fill=BP.fill;arr.inspect=BP.inspect;arr.toArrayBuffer=BP.toArrayBuffer;return arr};function clamp(index,len,defaultValue){if(typeof index!=="number")return defaultValue;index=~~index;if(index>=len)return len;if(index>=0)return index;index+=len;if(index>=0)return index;return 0}function coerce(length){length=~~Math.ceil(+length);return length<0?0:length}function isArray(subject){return(Array.isArray||function(subject){return Object.prototype.toString.call(subject)==="[object Array]"})(subject)}function isArrayish(subject){return isArray(subject)||Buffer.isBuffer(subject)||subject&&typeof subject==="object"&&typeof subject.length==="number"}function toHex(n){if(n<16)return"0"+n.toString(16);return n.toString(16)}function utf8ToBytes(str){var byteArray=[];for(var i=0;i<str.length;i++){var b=str.charCodeAt(i);if(b<=127)byteArray.push(str.charCodeAt(i));else{var start=i;if(b>=55296&&b<=57343)i++;var h=encodeURIComponent(str.slice(start,i+1)).substr(1).split("%");for(var j=0;j<h.length;j++)byteArray.push(parseInt(h[j],16))}}return byteArray}function asciiToBytes(str){var byteArray=[];for(var i=0;i<str.length;i++){byteArray.push(str.charCodeAt(i)&255)}return byteArray}function utf16leToBytes(str){var c,hi,lo;var byteArray=[];for(var i=0;i<str.length;i++){c=str.charCodeAt(i);hi=c>>8;lo=c%256;byteArray.push(lo);byteArray.push(hi)}return byteArray}function base64ToBytes(str){return base64.toByteArray(str)}function blitBuffer(src,dst,offset,length){var pos;for(var i=0;i<length;i++){if(i+offset>=dst.length||i>=src.length)break;dst[i+offset]=src[i]}return i}function decodeUtf8Char(str){try{return decodeURIComponent(str)}catch(err){return String.fromCharCode(65533)}}function verifuint(value,max){assert(typeof value==="number","cannot write a non-number as a number");assert(value>=0,"specified a negative value for writing an unsigned value");assert(value<=max,"value is larger than maximum value for type");assert(Math.floor(value)===value,"value has a fractional component")}function verifsint(value,max,min){assert(typeof value==="number","cannot write a non-number as a number");assert(value<=max,"value larger than maximum allowed value");assert(value>=min,"value smaller than minimum allowed value");assert(Math.floor(value)===value,"value has a fractional component")}function verifIEEE754(value,max,min){assert(typeof value==="number","cannot write a non-number as a number");assert(value<=max,"value larger than maximum allowed value");assert(value>=min,"value smaller than minimum allowed value")}function assert(test,message){if(!test)throw new Error(message||"Failed assertion")}},{"base64-js":351,ieee754:352}],351:[function(require,module,exports){var lookup="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";(function(exports){"use strict";var Arr=typeof Uint8Array!=="undefined"?Uint8Array:Array;var PLUS="+".charCodeAt(0);var SLASH="/".charCodeAt(0);var NUMBER="0".charCodeAt(0);var LOWER="a".charCodeAt(0);var UPPER="A".charCodeAt(0);var PLUS_URL_SAFE="-".charCodeAt(0);var SLASH_URL_SAFE="_".charCodeAt(0);function decode(elt){var code=elt.charCodeAt(0);if(code===PLUS||code===PLUS_URL_SAFE)return 62;if(code===SLASH||code===SLASH_URL_SAFE)return 63;if(code<NUMBER)return-1;if(code<NUMBER+10)return code-NUMBER+26+26;if(code<UPPER+26)return code-UPPER;if(code<LOWER+26)return code-LOWER+26}function b64ToByteArray(b64){var i,j,l,tmp,placeHolders,arr;if(b64.length%4>0){throw new Error("Invalid string. Length must be a multiple of 4")}var len=b64.length;placeHolders="="===b64.charAt(len-2)?2:"="===b64.charAt(len-1)?1:0;arr=new Arr(b64.length*3/4-placeHolders);l=placeHolders>0?b64.length-4:b64.length;var L=0;function push(v){arr[L++]=v}for(i=0,j=0;i<l;i+=4,j+=3){tmp=decode(b64.charAt(i))<<18|decode(b64.charAt(i+1))<<12|decode(b64.charAt(i+2))<<6|decode(b64.charAt(i+3));push((tmp&16711680)>>16);push((tmp&65280)>>8);push(tmp&255)}if(placeHolders===2){tmp=decode(b64.charAt(i))<<2|decode(b64.charAt(i+1))>>4;push(tmp&255)}else if(placeHolders===1){tmp=decode(b64.charAt(i))<<10|decode(b64.charAt(i+1))<<4|decode(b64.charAt(i+2))>>2;push(tmp>>8&255);push(tmp&255)}return arr}function uint8ToBase64(uint8){var i,extraBytes=uint8.length%3,output="",temp,length;function encode(num){return lookup.charAt(num)}function tripletToBase64(num){return encode(num>>18&63)+encode(num>>12&63)+encode(num>>6&63)+encode(num&63)}for(i=0,length=uint8.length-extraBytes;i<length;i+=3){temp=(uint8[i]<<16)+(uint8[i+1]<<8)+uint8[i+2];output+=tripletToBase64(temp)}switch(extraBytes){case 1:temp=uint8[uint8.length-1];output+=encode(temp>>2);output+=encode(temp<<4&63);output+="==";break;case 2:temp=(uint8[uint8.length-2]<<8)+uint8[uint8.length-1];output+=encode(temp>>10);output+=encode(temp>>4&63);output+=encode(temp<<2&63);output+="=";break}return output}exports.toByteArray=b64ToByteArray;exports.fromByteArray=uint8ToBase64})(typeof exports==="undefined"?this.base64js={}:exports)},{}],352:[function(require,module,exports){exports.read=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;e=s&(1<<-nBits)-1;s>>=-nBits;nBits+=eLen;for(;nBits>0;e=e*256+buffer[offset+i],i+=d,nBits-=8);m=e&(1<<-nBits)-1;e>>=-nBits;nBits+=mLen;for(;nBits>0;m=m*256+buffer[offset+i],i+=d,nBits-=8);if(e===0){e=1-eBias}else if(e===eMax){return m?NaN:(s?-1:1)*Infinity}else{m=m+Math.pow(2,mLen);e=e-eBias}return(s?-1:1)*m*Math.pow(2,e-mLen)};exports.write=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?Math.pow(2,-24)-Math.pow(2,-77):0,i=isLE?0:nBytes-1,d=isLE?1:-1,s=value<0||value===0&&1/value<0?1:0;value=Math.abs(value);if(isNaN(value)||value===Infinity){m=isNaN(value)?1:0;e=eMax}else{e=Math.floor(Math.log(value)/Math.LN2);if(value*(c=Math.pow(2,-e))<1){e--;c*=2}if(e+eBias>=1){value+=rt/c}else{value+=rt*Math.pow(2,1-eBias)}if(value*c>=2){e++;c/=2}if(e+eBias>=eMax){m=0;e=eMax}else if(e+eBias>=1){m=(value*c-1)*Math.pow(2,mLen);e=e+eBias}else{m=value*Math.pow(2,eBias-1)*Math.pow(2,mLen);e=0}}for(;mLen>=8;buffer[offset+i]=m&255,i+=d,m/=256,mLen-=8);e=e<<mLen|m;eLen+=mLen;for(;eLen>0;buffer[offset+i]=e&255,i+=d,e/=256,eLen-=8);buffer[offset+i-d]|=s*128}},{}],353:[function(require,module,exports){var Buffer=require("buffer").Buffer;var intSize=4;var zeroBuffer=new Buffer(intSize);zeroBuffer.fill(0);var chrsz=8;function toArray(buf,bigEndian){if(buf.length%intSize!==0){var len=buf.length+(intSize-buf.length%intSize);buf=Buffer.concat([buf,zeroBuffer],len)}var arr=[];var fn=bigEndian?buf.readInt32BE:buf.readInt32LE;for(var i=0;i<buf.length;i+=intSize){arr.push(fn.call(buf,i))}return arr}function toBuffer(arr,size,bigEndian){var buf=new Buffer(size);var fn=bigEndian?buf.writeInt32BE:buf.writeInt32LE;for(var i=0;i<arr.length;i++){fn.call(buf,arr[i],i*4,true)}return buf}function hash(buf,fn,hashSize,bigEndian){if(!Buffer.isBuffer(buf))buf=new Buffer(buf);var arr=fn(toArray(buf,bigEndian),buf.length*chrsz);return toBuffer(arr,hashSize,bigEndian)}module.exports={hash:hash}},{buffer:350}],354:[function(require,module,exports){var Buffer=require("buffer").Buffer;var sha=require("./sha");var sha256=require("./sha256");var rng=require("./rng");var md5=require("./md5");var algorithms={sha1:sha,sha256:sha256,md5:md5};var blocksize=64;var zeroBuffer=new Buffer(blocksize);zeroBuffer.fill(0);function hmac(fn,key,data){if(!Buffer.isBuffer(key))key=new Buffer(key);if(!Buffer.isBuffer(data))data=new Buffer(data);if(key.length>blocksize){key=fn(key)}else if(key.length<blocksize){key=Buffer.concat([key,zeroBuffer],blocksize)}var ipad=new Buffer(blocksize),opad=new Buffer(blocksize);for(var i=0;i<blocksize;i++){ipad[i]=key[i]^54;opad[i]=key[i]^92}var hash=fn(Buffer.concat([ipad,data]));return fn(Buffer.concat([opad,hash]))}function hash(alg,key){alg=alg||"sha1";var fn=algorithms[alg];var bufs=[];var length=0;if(!fn)error("algorithm:",alg,"is not yet supported");return{update:function(data){if(!Buffer.isBuffer(data))data=new Buffer(data);bufs.push(data);length+=data.length;return this},digest:function(enc){var buf=Buffer.concat(bufs);var r=key?hmac(fn,key,buf):fn(buf);bufs=null;return enc?r.toString(enc):r}}}function error(){var m=[].slice.call(arguments).join(" ");throw new Error([m,"we accept pull requests","http://github.com/dominictarr/crypto-browserify"].join("\n"))}exports.createHash=function(alg){return hash(alg)};exports.createHmac=function(alg,key){return hash(alg,key)};exports.randomBytes=function(size,callback){if(callback&&callback.call){try{callback.call(this,undefined,new Buffer(rng(size)))}catch(err){callback(err)}}else{return new Buffer(rng(size))}};function each(a,f){for(var i in a)f(a[i],i)}each(["createCredentials","createCipher","createCipheriv","createDecipher","createDecipheriv","createSign","createVerify","createDiffieHellman","pbkdf2"],function(name){exports[name]=function(){error("sorry,",name,"is not implemented yet")}})},{"./md5":355,"./rng":356,"./sha":357,"./sha256":358,buffer:350}],355:[function(require,module,exports){var helpers=require("./helpers");function md5_vm_test(){return hex_md5("abc")=="900150983cd24fb0d6963f7d28e17f72"}function core_md5(x,len){x[len>>5]|=128<<len%32;x[(len+64>>>9<<4)+14]=len;var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;for(var i=0;i<x.length;i+=16){var olda=a;var oldb=b;var oldc=c;var oldd=d;a=md5_ff(a,b,c,d,x[i+0],7,-680876936);d=md5_ff(d,a,b,c,x[i+1],12,-389564586);c=md5_ff(c,d,a,b,x[i+2],17,606105819);b=md5_ff(b,c,d,a,x[i+3],22,-1044525330);a=md5_ff(a,b,c,d,x[i+4],7,-176418897);d=md5_ff(d,a,b,c,x[i+5],12,1200080426);c=md5_ff(c,d,a,b,x[i+6],17,-1473231341);b=md5_ff(b,c,d,a,x[i+7],22,-45705983);a=md5_ff(a,b,c,d,x[i+8],7,1770035416);d=md5_ff(d,a,b,c,x[i+9],12,-1958414417);c=md5_ff(c,d,a,b,x[i+10],17,-42063);b=md5_ff(b,c,d,a,x[i+11],22,-1990404162);a=md5_ff(a,b,c,d,x[i+12],7,1804603682);d=md5_ff(d,a,b,c,x[i+13],12,-40341101);c=md5_ff(c,d,a,b,x[i+14],17,-1502002290);b=md5_ff(b,c,d,a,x[i+15],22,1236535329);a=md5_gg(a,b,c,d,x[i+1],5,-165796510);d=md5_gg(d,a,b,c,x[i+6],9,-1069501632);c=md5_gg(c,d,a,b,x[i+11],14,643717713);b=md5_gg(b,c,d,a,x[i+0],20,-373897302);a=md5_gg(a,b,c,d,x[i+5],5,-701558691);d=md5_gg(d,a,b,c,x[i+10],9,38016083);c=md5_gg(c,d,a,b,x[i+15],14,-660478335);b=md5_gg(b,c,d,a,x[i+4],20,-405537848);a=md5_gg(a,b,c,d,x[i+9],5,568446438);d=md5_gg(d,a,b,c,x[i+14],9,-1019803690);c=md5_gg(c,d,a,b,x[i+3],14,-187363961);b=md5_gg(b,c,d,a,x[i+8],20,1163531501);a=md5_gg(a,b,c,d,x[i+13],5,-1444681467);d=md5_gg(d,a,b,c,x[i+2],9,-51403784);c=md5_gg(c,d,a,b,x[i+7],14,1735328473);b=md5_gg(b,c,d,a,x[i+12],20,-1926607734);a=md5_hh(a,b,c,d,x[i+5],4,-378558);d=md5_hh(d,a,b,c,x[i+8],11,-2022574463);c=md5_hh(c,d,a,b,x[i+11],16,1839030562);b=md5_hh(b,c,d,a,x[i+14],23,-35309556);a=md5_hh(a,b,c,d,x[i+1],4,-1530992060);d=md5_hh(d,a,b,c,x[i+4],11,1272893353);c=md5_hh(c,d,a,b,x[i+7],16,-155497632);b=md5_hh(b,c,d,a,x[i+10],23,-1094730640);a=md5_hh(a,b,c,d,x[i+13],4,681279174);d=md5_hh(d,a,b,c,x[i+0],11,-358537222);c=md5_hh(c,d,a,b,x[i+3],16,-722521979);b=md5_hh(b,c,d,a,x[i+6],23,76029189);a=md5_hh(a,b,c,d,x[i+9],4,-640364487);d=md5_hh(d,a,b,c,x[i+12],11,-421815835);c=md5_hh(c,d,a,b,x[i+15],16,530742520);b=md5_hh(b,c,d,a,x[i+2],23,-995338651);a=md5_ii(a,b,c,d,x[i+0],6,-198630844);d=md5_ii(d,a,b,c,x[i+7],10,1126891415);c=md5_ii(c,d,a,b,x[i+14],15,-1416354905);b=md5_ii(b,c,d,a,x[i+5],21,-57434055);a=md5_ii(a,b,c,d,x[i+12],6,1700485571);d=md5_ii(d,a,b,c,x[i+3],10,-1894986606);c=md5_ii(c,d,a,b,x[i+10],15,-1051523);b=md5_ii(b,c,d,a,x[i+1],21,-2054922799);a=md5_ii(a,b,c,d,x[i+8],6,1873313359);d=md5_ii(d,a,b,c,x[i+15],10,-30611744);c=md5_ii(c,d,a,b,x[i+6],15,-1560198380);b=md5_ii(b,c,d,a,x[i+13],21,1309151649);a=md5_ii(a,b,c,d,x[i+4],6,-145523070);d=md5_ii(d,a,b,c,x[i+11],10,-1120210379);c=md5_ii(c,d,a,b,x[i+2],15,718787259);b=md5_ii(b,c,d,a,x[i+9],21,-343485551);a=safe_add(a,olda);b=safe_add(b,oldb);c=safe_add(c,oldc);d=safe_add(d,oldd)}return Array(a,b,c,d)}function md5_cmn(q,a,b,x,s,t){return safe_add(bit_rol(safe_add(safe_add(a,q),safe_add(x,t)),s),b)}function md5_ff(a,b,c,d,x,s,t){return md5_cmn(b&c|~b&d,a,b,x,s,t)}function md5_gg(a,b,c,d,x,s,t){return md5_cmn(b&d|c&~d,a,b,x,s,t)}function md5_hh(a,b,c,d,x,s,t){return md5_cmn(b^c^d,a,b,x,s,t)}function md5_ii(a,b,c,d,x,s,t){return md5_cmn(c^(b|~d),a,b,x,s,t)}function safe_add(x,y){var lsw=(x&65535)+(y&65535);var msw=(x>>16)+(y>>16)+(lsw>>16);return msw<<16|lsw&65535}function bit_rol(num,cnt){return num<<cnt|num>>>32-cnt}module.exports=function md5(buf){return helpers.hash(buf,core_md5,16)}},{"./helpers":353}],356:[function(require,module,exports){(function(){var _global=this;var mathRNG,whatwgRNG;mathRNG=function(size){var bytes=new Array(size);var r;for(var i=0,r;i<size;i++){if((i&3)==0)r=Math.random()*4294967296;bytes[i]=r>>>((i&3)<<3)&255}return bytes};if(_global.crypto&&crypto.getRandomValues){whatwgRNG=function(size){var bytes=new Uint8Array(size);crypto.getRandomValues(bytes);return bytes}}module.exports=whatwgRNG||mathRNG})()},{}],357:[function(require,module,exports){var helpers=require("./helpers");function core_sha1(x,len){x[len>>5]|=128<<24-len%32;x[(len+64>>9<<4)+15]=len;var w=Array(80);var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;var e=-1009589776;for(var i=0;i<x.length;i+=16){var olda=a;var oldb=b;var oldc=c;var oldd=d;var olde=e;for(var j=0;j<80;j++){if(j<16)w[j]=x[i+j];else w[j]=rol(w[j-3]^w[j-8]^w[j-14]^w[j-16],1);var t=safe_add(safe_add(rol(a,5),sha1_ft(j,b,c,d)),safe_add(safe_add(e,w[j]),sha1_kt(j)));e=d;d=c;c=rol(b,30);b=a;a=t}a=safe_add(a,olda);b=safe_add(b,oldb);c=safe_add(c,oldc);d=safe_add(d,oldd);e=safe_add(e,olde)}return Array(a,b,c,d,e)}function sha1_ft(t,b,c,d){if(t<20)return b&c|~b&d;if(t<40)return b^c^d;if(t<60)return b&c|b&d|c&d;return b^c^d}function sha1_kt(t){return t<20?1518500249:t<40?1859775393:t<60?-1894007588:-899497514}function safe_add(x,y){var lsw=(x&65535)+(y&65535);var msw=(x>>16)+(y>>16)+(lsw>>16);return msw<<16|lsw&65535}function rol(num,cnt){return num<<cnt|num>>>32-cnt}module.exports=function sha1(buf){return helpers.hash(buf,core_sha1,20,true)}},{"./helpers":353}],358:[function(require,module,exports){var helpers=require("./helpers");var safe_add=function(x,y){var lsw=(x&65535)+(y&65535);var msw=(x>>16)+(y>>16)+(lsw>>16);return msw<<16|lsw&65535};var S=function(X,n){return X>>>n|X<<32-n};var R=function(X,n){return X>>>n};var Ch=function(x,y,z){return x&y^~x&z};var Maj=function(x,y,z){return x&y^x&z^y&z};var Sigma0256=function(x){return S(x,2)^S(x,13)^S(x,22)};var Sigma1256=function(x){return S(x,6)^S(x,11)^S(x,25)};var Gamma0256=function(x){return S(x,7)^S(x,18)^R(x,3)};var Gamma1256=function(x){return S(x,17)^S(x,19)^R(x,10)};var core_sha256=function(m,l){var K=new Array(1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298);var HASH=new Array(1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225);var W=new Array(64);var a,b,c,d,e,f,g,h,i,j;var T1,T2;m[l>>5]|=128<<24-l%32;m[(l+64>>9<<4)+15]=l;for(var i=0;i<m.length;i+=16){a=HASH[0];b=HASH[1];c=HASH[2];d=HASH[3];e=HASH[4];f=HASH[5];g=HASH[6];h=HASH[7];for(var j=0;j<64;j++){if(j<16){W[j]=m[j+i]}else{W[j]=safe_add(safe_add(safe_add(Gamma1256(W[j-2]),W[j-7]),Gamma0256(W[j-15])),W[j-16])}T1=safe_add(safe_add(safe_add(safe_add(h,Sigma1256(e)),Ch(e,f,g)),K[j]),W[j]);T2=safe_add(Sigma0256(a),Maj(a,b,c));h=g;g=f;f=e;e=safe_add(d,T1);d=c;c=b;b=a;a=safe_add(T1,T2)}HASH[0]=safe_add(a,HASH[0]);HASH[1]=safe_add(b,HASH[1]);HASH[2]=safe_add(c,HASH[2]);HASH[3]=safe_add(d,HASH[3]);HASH[4]=safe_add(e,HASH[4]);HASH[5]=safe_add(f,HASH[5]);HASH[6]=safe_add(g,HASH[6]);HASH[7]=safe_add(h,HASH[7])}return HASH};module.exports=function sha256(buf){return helpers.hash(buf,core_sha256,32,true)}},{"./helpers":353}],359:[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}throw TypeError('Uncaught, unspecified "error" event.')}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];handler.apply(this,args)}}else if(isObject(handler)){len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];listeners=handler.slice();len=listeners.length;for(i=0;i<len;i++)listeners[i].apply(this,args)}return true};EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events)this._events={};if(this._events.newListener)this.emit("newListener",type,isFunction(listener.listener)?listener.listener:listener);if(!this._events[type])this._events[type]=listener;else if(isObject(this._events[type]))this._events[type].push(listener);else this._events[type]=[this._events[type],listener];if(isObject(this._events[type])&&!this._events[type].warned){var m;if(!isUndefined(this._maxListeners)){m=this._maxListeners}else{m=EventEmitter.defaultMaxListeners}if(m&&m>0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}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(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else{while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=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};EventEmitter.listenerCount=function(emitter,type){var ret;if(!emitter._events||!emitter._events[type])ret=0;else if(isFunction(emitter._events[type]))ret=1;else ret=emitter._events[type].length;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}},{}],360:[function(require,module,exports){module.exports=require(268)},{}],361:[function(require,module,exports){var process=module.exports={};process.nextTick=function(){var canSetImmediate=typeof window!=="undefined"&&window.setImmediate;var canPost=typeof window!=="undefined"&&window.postMessage&&window.addEventListener;if(canSetImmediate){return function(f){return window.setImmediate(f)}}if(canPost){var queue=[];window.addEventListener("message",function(ev){var source=ev.source;if((source===window||source===null)&&ev.data==="process-tick"){ev.stopPropagation();if(queue.length>0){var fn=queue.shift();fn()}}},true);return function nextTick(fn){queue.push(fn);window.postMessage("process-tick","*")}}return function nextTick(fn){setTimeout(fn,0)}}();process.title="browser";process.browser=true;process.env={};process.argv=[];process.binding=function(name){throw new Error("process.binding is not supported")};process.cwd=function(){return"/"};process.chdir=function(dir){throw new Error("process.chdir is not supported")}},{}],362:[function(require,module,exports){(function(global){(function(root){var freeExports=typeof exports=="object"&&exports;var freeModule=typeof module=="object"&&module&&module.exports==freeExports&&module;var freeGlobal=typeof global=="object"&&global;if(freeGlobal.global===freeGlobal||freeGlobal.window===freeGlobal){root=freeGlobal}var punycode,maxInt=2147483647,base=36,tMin=1,tMax=26,skew=38,damp=700,initialBias=72,initialN=128,delimiter="-",regexPunycode=/^xn--/,regexNonASCII=/[^ -~]/,regexSeparators=/\x2E|\u3002|\uFF0E|\uFF61/g,errors={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},baseMinusTMin=base-tMin,floor=Math.floor,stringFromCharCode=String.fromCharCode,key;function error(type){throw RangeError(errors[type])}function map(array,fn){var length=array.length;while(length--){array[length]=fn(array[length])}return array}function mapDomain(string,fn){return map(string.split(regexSeparators),fn).join(".")}function ucs2decode(string){var output=[],counter=0,length=string.length,value,extra;while(counter<length){value=string.charCodeAt(counter++);if(value>=55296&&value<=56319&&counter<length){extra=string.charCodeAt(counter++);if((extra&64512)==56320){output.push(((value&1023)<<10)+(extra&1023)+65536)}else{output.push(value);counter--}}else{output.push(value)}}return output}function ucs2encode(array){return map(array,function(value){var output="";if(value>65535){value-=65536;output+=stringFromCharCode(value>>>10&1023|55296);value=56320|value&1023}output+=stringFromCharCode(value);return output}).join("")}function basicToDigit(codePoint){if(codePoint-48<10){return codePoint-22}if(codePoint-65<26){return codePoint-65}if(codePoint-97<26){return codePoint-97}return base}function digitToBasic(digit,flag){return digit+22+75*(digit<26)-((flag!=0)<<5)}function adapt(delta,numPoints,firstTime){var k=0;delta=firstTime?floor(delta/damp):delta>>1;delta+=floor(delta/numPoints);for(;delta>baseMinusTMin*tMax>>1;k+=base){delta=floor(delta/baseMinusTMin)}return floor(k+(baseMinusTMin+1)*delta/(delta+skew))}function decode(input){var output=[],inputLength=input.length,out,i=0,n=initialN,bias=initialBias,basic,j,index,oldi,w,k,digit,t,baseMinusT;basic=input.lastIndexOf(delimiter);if(basic<0){basic=0}for(j=0;j<basic;++j){if(input.charCodeAt(j)>=128){error("not-basic")}output.push(input.charCodeAt(j))}for(index=basic>0?basic+1:0;index<inputLength;){for(oldi=i,w=1,k=base;;k+=base){if(index>=inputLength){error("invalid-input")}digit=basicToDigit(input.charCodeAt(index++));if(digit>=base||digit>floor((maxInt-i)/w)){error("overflow")}i+=digit*w;t=k<=bias?tMin:k>=bias+tMax?tMax:k-bias;if(digit<t){break}baseMinusT=base-t;if(w>floor(maxInt/baseMinusT)){error("overflow")}w*=baseMinusT}out=output.length+1;bias=adapt(i-oldi,out,oldi==0);if(floor(i/out)>maxInt-n){error("overflow")}n+=floor(i/out);i%=out;output.splice(i++,0,n)}return ucs2encode(output)}function encode(input){var n,delta,handledCPCount,basicLength,bias,j,m,q,k,t,currentValue,output=[],inputLength,handledCPCountPlusOne,baseMinusT,qMinusT;input=ucs2decode(input);inputLength=input.length;n=initialN;delta=0;bias=initialBias;for(j=0;j<inputLength;++j){currentValue=input[j];if(currentValue<128){output.push(stringFromCharCode(currentValue))}}handledCPCount=basicLength=output.length;if(basicLength){output.push(delimiter)}while(handledCPCount<inputLength){for(m=maxInt,j=0;j<inputLength;++j){currentValue=input[j];if(currentValue>=n&&currentValue<m){m=currentValue}}handledCPCountPlusOne=handledCPCount+1;if(m-n>floor((maxInt-delta)/handledCPCountPlusOne)){error("overflow")}delta+=(m-n)*handledCPCountPlusOne;n=m;for(j=0;j<inputLength;++j){currentValue=input[j];if(currentValue<n&&++delta>maxInt){error("overflow")}if(currentValue==n){for(q=delta,k=base;;k+=base){t=k<=bias?tMin:k>=bias+tMax?tMax:k-bias;if(q<t){break}qMinusT=q-t;baseMinusT=base-t;output.push(stringFromCharCode(digitToBasic(t+qMinusT%baseMinusT,0)));q=floor(qMinusT/baseMinusT)}output.push(stringFromCharCode(digitToBasic(q,0)));bias=adapt(delta,handledCPCountPlusOne,handledCPCount==basicLength);delta=0;++handledCPCount}}++delta;++n}return output.join("")}function toUnicode(domain){return mapDomain(domain,function(string){return regexPunycode.test(string)?decode(string.slice(4).toLowerCase()):string})}function toASCII(domain){return mapDomain(domain,function(string){return regexNonASCII.test(string)?"xn--"+encode(string):string})}punycode={version:"1.2.4",ucs2:{decode:ucs2decode,encode:ucs2encode},decode:decode,encode:encode,toASCII:toASCII,toUnicode:toUnicode};if(typeof define=="function"&&typeof define.amd=="object"&&define.amd){define("punycode",function(){return punycode})}else if(freeExports&&!freeExports.nodeType){if(freeModule){freeModule.exports=punycode}else{for(key in punycode){punycode.hasOwnProperty(key)&&(freeExports[key]=punycode[key])}}}else{root.punycode=punycode}})(this)}).call(this,typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],363:[function(require,module,exports){module.exports=Duplex;var inherits=require("inherits");var setImmediate=require("process/browser.js").nextTick;var Readable=require("./readable.js");var Writable=require("./writable.js");inherits(Duplex,Readable);Duplex.prototype.write=Writable.prototype.write;Duplex.prototype.end=Writable.prototype.end;Duplex.prototype._write=Writable.prototype._write;function Duplex(options){if(!(this instanceof Duplex))return new Duplex(options);Readable.call(this,options);Writable.call(this,options);if(options&&options.readable===false)this.readable=false;if(options&&options.writable===false)this.writable=false;this.allowHalfOpen=true;
if(options&&options.allowHalfOpen===false)this.allowHalfOpen=false;this.once("end",onend)}function onend(){if(this.allowHalfOpen||this._writableState.ended)return;var self=this;setImmediate(function(){self.end()})}},{"./readable.js":367,"./writable.js":369,inherits:360,"process/browser.js":365}],364:[function(require,module,exports){module.exports=Stream;var EE=require("events").EventEmitter;var inherits=require("inherits");inherits(Stream,EE);Stream.Readable=require("./readable.js");Stream.Writable=require("./writable.js");Stream.Duplex=require("./duplex.js");Stream.Transform=require("./transform.js");Stream.PassThrough=require("./passthrough.js");Stream.Stream=Stream;function Stream(){EE.call(this)}Stream.prototype.pipe=function(dest,options){var source=this;function ondata(chunk){if(dest.writable){if(false===dest.write(chunk)&&source.pause){source.pause()}}}source.on("data",ondata);function ondrain(){if(source.readable&&source.resume){source.resume()}}dest.on("drain",ondrain);if(!dest._isStdio&&(!options||options.end!==false)){source.on("end",onend);source.on("close",onclose)}var didOnEnd=false;function onend(){if(didOnEnd)return;didOnEnd=true;dest.end()}function onclose(){if(didOnEnd)return;didOnEnd=true;if(typeof dest.destroy==="function")dest.destroy()}function onerror(er){cleanup();if(EE.listenerCount(this,"error")===0){throw er}}source.on("error",onerror);dest.on("error",onerror);function cleanup(){source.removeListener("data",ondata);dest.removeListener("drain",ondrain);source.removeListener("end",onend);source.removeListener("close",onclose);source.removeListener("error",onerror);dest.removeListener("error",onerror);source.removeListener("end",cleanup);source.removeListener("close",cleanup);dest.removeListener("close",cleanup)}source.on("end",cleanup);source.on("close",cleanup);dest.on("close",cleanup);dest.emit("pipe",source);return dest}},{"./duplex.js":363,"./passthrough.js":366,"./readable.js":367,"./transform.js":368,"./writable.js":369,events:359,inherits:360}],365:[function(require,module,exports){module.exports=require(361)},{}],366:[function(require,module,exports){module.exports=PassThrough;var Transform=require("./transform.js");var inherits=require("inherits");inherits(PassThrough,Transform);function PassThrough(options){if(!(this instanceof PassThrough))return new PassThrough(options);Transform.call(this,options)}PassThrough.prototype._transform=function(chunk,encoding,cb){cb(null,chunk)}},{"./transform.js":368,inherits:360}],367:[function(require,module,exports){(function(process){module.exports=Readable;Readable.ReadableState=ReadableState;var EE=require("events").EventEmitter;var Stream=require("./index.js");var Buffer=require("buffer").Buffer;var setImmediate=require("process/browser.js").nextTick;var StringDecoder;var inherits=require("inherits");inherits(Readable,Stream);function ReadableState(options,stream){options=options||{};var hwm=options.highWaterMark;this.highWaterMark=hwm||hwm===0?hwm:16*1024;this.highWaterMark=~~this.highWaterMark;this.buffer=[];this.length=0;this.pipes=null;this.pipesCount=0;this.flowing=false;this.ended=false;this.endEmitted=false;this.reading=false;this.calledRead=false;this.sync=true;this.needReadable=false;this.emittedReadable=false;this.readableListening=false;this.objectMode=!!options.objectMode;this.defaultEncoding=options.defaultEncoding||"utf8";this.ranOut=false;this.awaitDrain=0;this.readingMore=false;this.decoder=null;this.encoding=null;if(options.encoding){if(!StringDecoder)StringDecoder=require("string_decoder").StringDecoder;this.decoder=new StringDecoder(options.encoding);this.encoding=options.encoding}}function Readable(options){if(!(this instanceof Readable))return new Readable(options);this._readableState=new ReadableState(options,this);this.readable=true;Stream.call(this)}Readable.prototype.push=function(chunk,encoding){var state=this._readableState;if(typeof chunk==="string"&&!state.objectMode){encoding=encoding||state.defaultEncoding;if(encoding!==state.encoding){chunk=new Buffer(chunk,encoding);encoding=""}}return readableAddChunk(this,state,chunk,encoding,false)};Readable.prototype.unshift=function(chunk){var state=this._readableState;return readableAddChunk(this,state,chunk,"",true)};function readableAddChunk(stream,state,chunk,encoding,addToFront){var er=chunkInvalid(state,chunk);if(er){stream.emit("error",er)}else if(chunk===null||chunk===undefined){state.reading=false;if(!state.ended)onEofChunk(stream,state)}else if(state.objectMode||chunk&&chunk.length>0){if(state.ended&&!addToFront){var e=new Error("stream.push() after EOF");stream.emit("error",e)}else if(state.endEmitted&&addToFront){var e=new Error("stream.unshift() after end event");stream.emit("error",e)}else{if(state.decoder&&!addToFront&&!encoding)chunk=state.decoder.write(chunk);state.length+=state.objectMode?1:chunk.length;if(addToFront){state.buffer.unshift(chunk)}else{state.reading=false;state.buffer.push(chunk)}if(state.needReadable)emitReadable(stream);maybeReadMore(stream,state)}}else if(!addToFront){state.reading=false}return needMoreData(state)}function needMoreData(state){return!state.ended&&(state.needReadable||state.length<state.highWaterMark||state.length===0)}Readable.prototype.setEncoding=function(enc){if(!StringDecoder)StringDecoder=require("string_decoder").StringDecoder;this._readableState.decoder=new StringDecoder(enc);this._readableState.encoding=enc};var MAX_HWM=8388608;function roundUpToNextPowerOf2(n){if(n>=MAX_HWM){n=MAX_HWM}else{n--;for(var p=1;p<32;p<<=1)n|=n>>p;n++}return n}function howMuchToRead(n,state){if(state.length===0&&state.ended)return 0;if(state.objectMode)return n===0?0:1;if(isNaN(n)||n===null){if(state.flowing&&state.buffer.length)return state.buffer[0].length;else return state.length}if(n<=0)return 0;if(n>state.highWaterMark)state.highWaterMark=roundUpToNextPowerOf2(n);if(n>state.length){if(!state.ended){state.needReadable=true;return 0}else return state.length}return n}Readable.prototype.read=function(n){var state=this._readableState;state.calledRead=true;var nOrig=n;if(typeof n!=="number"||n>0)state.emittedReadable=false;if(n===0&&state.needReadable&&(state.length>=state.highWaterMark||state.ended)){emitReadable(this);return null}n=howMuchToRead(n,state);if(n===0&&state.ended){if(state.length===0)endReadable(this);return null}var doRead=state.needReadable;if(state.length-n<=state.highWaterMark)doRead=true;if(state.ended||state.reading)doRead=false;if(doRead){state.reading=true;state.sync=true;if(state.length===0)state.needReadable=true;this._read(state.highWaterMark);state.sync=false}if(doRead&&!state.reading)n=howMuchToRead(nOrig,state);var ret;if(n>0)ret=fromList(n,state);else ret=null;if(ret===null){state.needReadable=true;n=0}state.length-=n;if(state.length===0&&!state.ended)state.needReadable=true;if(state.ended&&!state.endEmitted&&state.length===0)endReadable(this);return ret};function chunkInvalid(state,chunk){var er=null;if(!Buffer.isBuffer(chunk)&&"string"!==typeof chunk&&chunk!==null&&chunk!==undefined&&!state.objectMode&&!er){er=new TypeError("Invalid non-string/buffer chunk")}return er}function onEofChunk(stream,state){if(state.decoder&&!state.ended){var chunk=state.decoder.end();if(chunk&&chunk.length){state.buffer.push(chunk);state.length+=state.objectMode?1:chunk.length}}state.ended=true;if(state.length>0)emitReadable(stream);else endReadable(stream)}function emitReadable(stream){var state=stream._readableState;state.needReadable=false;if(state.emittedReadable)return;state.emittedReadable=true;if(state.sync)setImmediate(function(){emitReadable_(stream)});else emitReadable_(stream)}function emitReadable_(stream){stream.emit("readable")}function maybeReadMore(stream,state){if(!state.readingMore){state.readingMore=true;setImmediate(function(){maybeReadMore_(stream,state)})}}function maybeReadMore_(stream,state){var len=state.length;while(!state.reading&&!state.flowing&&!state.ended&&state.length<state.highWaterMark){stream.read(0);if(len===state.length)break;else len=state.length}state.readingMore=false}Readable.prototype._read=function(n){this.emit("error",new Error("not implemented"))};Readable.prototype.pipe=function(dest,pipeOpts){var src=this;var state=this._readableState;switch(state.pipesCount){case 0:state.pipes=dest;break;case 1:state.pipes=[state.pipes,dest];break;default:state.pipes.push(dest);break}state.pipesCount+=1;var doEnd=(!pipeOpts||pipeOpts.end!==false)&&dest!==process.stdout&&dest!==process.stderr;var endFn=doEnd?onend:cleanup;if(state.endEmitted)setImmediate(endFn);else src.once("end",endFn);dest.on("unpipe",onunpipe);function onunpipe(readable){if(readable!==src)return;cleanup()}function onend(){dest.end()}var ondrain=pipeOnDrain(src);dest.on("drain",ondrain);function cleanup(){dest.removeListener("close",onclose);dest.removeListener("finish",onfinish);dest.removeListener("drain",ondrain);dest.removeListener("error",onerror);dest.removeListener("unpipe",onunpipe);src.removeListener("end",onend);src.removeListener("end",cleanup);if(!dest._writableState||dest._writableState.needDrain)ondrain()}var errListeners=EE.listenerCount(dest,"error");function onerror(er){unpipe();if(errListeners===0&&EE.listenerCount(dest,"error")===0)dest.emit("error",er)}dest.once("error",onerror);function onclose(){dest.removeListener("finish",onfinish);unpipe()}dest.once("close",onclose);function onfinish(){dest.removeListener("close",onclose);unpipe()}dest.once("finish",onfinish);function unpipe(){src.unpipe(dest)}dest.emit("pipe",src);if(!state.flowing){this.on("readable",pipeOnReadable);state.flowing=true;setImmediate(function(){flow(src)})}return dest};function pipeOnDrain(src){return function(){var dest=this;var state=src._readableState;state.awaitDrain--;if(state.awaitDrain===0)flow(src)}}function flow(src){var state=src._readableState;var chunk;state.awaitDrain=0;function write(dest,i,list){var written=dest.write(chunk);if(false===written){state.awaitDrain++}}while(state.pipesCount&&null!==(chunk=src.read())){if(state.pipesCount===1)write(state.pipes,0,null);else forEach(state.pipes,write);src.emit("data",chunk);if(state.awaitDrain>0)return}if(state.pipesCount===0){state.flowing=false;if(EE.listenerCount(src,"data")>0)emitDataEvents(src);return}state.ranOut=true}function pipeOnReadable(){if(this._readableState.ranOut){this._readableState.ranOut=false;flow(this)}}Readable.prototype.unpipe=function(dest){var state=this._readableState;if(state.pipesCount===0)return this;if(state.pipesCount===1){if(dest&&dest!==state.pipes)return this;if(!dest)dest=state.pipes;state.pipes=null;state.pipesCount=0;this.removeListener("readable",pipeOnReadable);state.flowing=false;if(dest)dest.emit("unpipe",this);return this}if(!dest){var dests=state.pipes;var len=state.pipesCount;state.pipes=null;state.pipesCount=0;this.removeListener("readable",pipeOnReadable);state.flowing=false;for(var i=0;i<len;i++)dests[i].emit("unpipe",this);return this}var i=indexOf(state.pipes,dest);if(i===-1)return this;state.pipes.splice(i,1);state.pipesCount-=1;if(state.pipesCount===1)state.pipes=state.pipes[0];dest.emit("unpipe",this);return this};Readable.prototype.on=function(ev,fn){var res=Stream.prototype.on.call(this,ev,fn);if(ev==="data"&&!this._readableState.flowing)emitDataEvents(this);if(ev==="readable"&&this.readable){var state=this._readableState;if(!state.readableListening){state.readableListening=true;state.emittedReadable=false;state.needReadable=true;if(!state.reading){this.read(0)}else if(state.length){emitReadable(this,state)}}}return res};Readable.prototype.addListener=Readable.prototype.on;Readable.prototype.resume=function(){emitDataEvents(this);this.read(0);this.emit("resume")};Readable.prototype.pause=function(){emitDataEvents(this,true);this.emit("pause")};function emitDataEvents(stream,startPaused){var state=stream._readableState;if(state.flowing){throw new Error("Cannot switch to old mode now.")}var paused=startPaused||false;var readable=false;stream.readable=true;stream.pipe=Stream.prototype.pipe;stream.on=stream.addListener=Stream.prototype.on;stream.on("readable",function(){readable=true;var c;while(!paused&&null!==(c=stream.read()))stream.emit("data",c);if(c===null){readable=false;stream._readableState.needReadable=true}});stream.pause=function(){paused=true;this.emit("pause")};stream.resume=function(){paused=false;if(readable)setImmediate(function(){stream.emit("readable")});else this.read(0);this.emit("resume")};stream.emit("readable")}Readable.prototype.wrap=function(stream){var state=this._readableState;var paused=false;var self=this;stream.on("end",function(){if(state.decoder&&!state.ended){var chunk=state.decoder.end();if(chunk&&chunk.length)self.push(chunk)}self.push(null)});stream.on("data",function(chunk){if(state.decoder)chunk=state.decoder.write(chunk);if(!chunk||!state.objectMode&&!chunk.length)return;var ret=self.push(chunk);if(!ret){paused=true;stream.pause()}});for(var i in stream){if(typeof stream[i]==="function"&&typeof this[i]==="undefined"){this[i]=function(method){return function(){return stream[method].apply(stream,arguments)}}(i)}}var events=["error","close","destroy","pause","resume"];forEach(events,function(ev){stream.on(ev,function(x){return self.emit.apply(self,ev,x)})});self._read=function(n){if(paused){paused=false;stream.resume()}};return self};Readable._fromList=fromList;function fromList(n,state){var list=state.buffer;var length=state.length;var stringMode=!!state.decoder;var objectMode=!!state.objectMode;var ret;if(list.length===0)return null;if(length===0)ret=null;else if(objectMode)ret=list.shift();else if(!n||n>=length){if(stringMode)ret=list.join("");else ret=Buffer.concat(list,length);list.length=0}else{if(n<list[0].length){var buf=list[0];ret=buf.slice(0,n);list[0]=buf.slice(n)}else if(n===list[0].length){ret=list.shift()}else{if(stringMode)ret="";else ret=new Buffer(n);var c=0;for(var i=0,l=list.length;i<l&&c<n;i++){var buf=list[0];var cpy=Math.min(n-c,buf.length);if(stringMode)ret+=buf.slice(0,cpy);else buf.copy(ret,c,0,cpy);if(cpy<buf.length)list[0]=buf.slice(cpy);else list.shift();c+=cpy}}}return ret}function endReadable(stream){var state=stream._readableState;if(state.length>0)throw new Error("endReadable called on non-empty stream");if(!state.endEmitted&&state.calledRead){state.ended=true;setImmediate(function(){if(!state.endEmitted&&state.length===0){state.endEmitted=true;stream.readable=false;stream.emit("end")}})}}function forEach(xs,f){for(var i=0,l=xs.length;i<l;i++){f(xs[i],i)}}function indexOf(xs,x){for(var i=0,l=xs.length;i<l;i++){if(xs[i]===x)return i}return-1}}).call(this,require("/var/sites/requirebin-cdn/node_modules/browserify-cdn/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js"))},{"./index.js":364,"/var/sites/requirebin-cdn/node_modules/browserify-cdn/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js":361,buffer:350,events:359,inherits:360,"process/browser.js":365,string_decoder:370}],368:[function(require,module,exports){module.exports=Transform;var Duplex=require("./duplex.js");var inherits=require("inherits");inherits(Transform,Duplex);function TransformState(options,stream){this.afterTransform=function(er,data){return afterTransform(stream,er,data)};this.needTransform=false;this.transforming=false;this.writecb=null;this.writechunk=null}function afterTransform(stream,er,data){var ts=stream._transformState;ts.transforming=false;var cb=ts.writecb;if(!cb)return stream.emit("error",new Error("no writecb in Transform class"));ts.writechunk=null;ts.writecb=null;if(data!==null&&data!==undefined)stream.push(data);if(cb)cb(er);var rs=stream._readableState;rs.reading=false;if(rs.needReadable||rs.length<rs.highWaterMark){stream._read(rs.highWaterMark)}}function Transform(options){if(!(this instanceof Transform))return new Transform(options);Duplex.call(this,options);var ts=this._transformState=new TransformState(options,this);var stream=this;this._readableState.needReadable=true;this._readableState.sync=false;this.once("finish",function(){if("function"===typeof this._flush)this._flush(function(er){done(stream,er)});else done(stream)})}Transform.prototype.push=function(chunk,encoding){this._transformState.needTransform=false;return Duplex.prototype.push.call(this,chunk,encoding)};Transform.prototype._transform=function(chunk,encoding,cb){throw new Error("not implemented")};Transform.prototype._write=function(chunk,encoding,cb){var ts=this._transformState;ts.writecb=cb;ts.writechunk=chunk;ts.writeencoding=encoding;if(!ts.transforming){var rs=this._readableState;if(ts.needTransform||rs.needReadable||rs.length<rs.highWaterMark)this._read(rs.highWaterMark)}};Transform.prototype._read=function(n){var ts=this._transformState;if(ts.writechunk&&ts.writecb&&!ts.transforming){ts.transforming=true;this._transform(ts.writechunk,ts.writeencoding,ts.afterTransform)}else{ts.needTransform=true}};function done(stream,er){if(er)return stream.emit("error",er);var ws=stream._writableState;var rs=stream._readableState;var ts=stream._transformState;if(ws.length)throw new Error("calling transform done when ws.length != 0");if(ts.transforming)throw new Error("calling transform done when still transforming");return stream.push(null)}},{"./duplex.js":363,inherits:360}],369:[function(require,module,exports){module.exports=Writable;Writable.WritableState=WritableState;var isUint8Array=typeof Uint8Array!=="undefined"?function(x){return x instanceof Uint8Array}:function(x){return x&&x.constructor&&x.constructor.name==="Uint8Array"};var isArrayBuffer=typeof ArrayBuffer!=="undefined"?function(x){return x instanceof ArrayBuffer}:function(x){return x&&x.constructor&&x.constructor.name==="ArrayBuffer"};var inherits=require("inherits");var Stream=require("./index.js");var setImmediate=require("process/browser.js").nextTick;var Buffer=require("buffer").Buffer;inherits(Writable,Stream);function WriteReq(chunk,encoding,cb){this.chunk=chunk;this.encoding=encoding;this.callback=cb}function WritableState(options,stream){options=options||{};var hwm=options.highWaterMark;this.highWaterMark=hwm||hwm===0?hwm:16*1024;this.objectMode=!!options.objectMode;this.highWaterMark=~~this.highWaterMark;this.needDrain=false;this.ending=false;this.ended=false;this.finished=false;var noDecode=options.decodeStrings===false;this.decodeStrings=!noDecode;this.defaultEncoding=options.defaultEncoding||"utf8";this.length=0;this.writing=false;this.sync=true;this.bufferProcessing=false;this.onwrite=function(er){onwrite(stream,er)};this.writecb=null;this.writelen=0;this.buffer=[]}function Writable(options){if(!(this instanceof Writable)&&!(this instanceof Stream.Duplex))return new Writable(options);this._writableState=new WritableState(options,this);this.writable=true;Stream.call(this)}Writable.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe. Not readable."))};function writeAfterEnd(stream,state,cb){var er=new Error("write after end");stream.emit("error",er);setImmediate(function(){cb(er)})}function validChunk(stream,state,chunk,cb){var valid=true;if(!Buffer.isBuffer(chunk)&&"string"!==typeof chunk&&chunk!==null&&chunk!==undefined&&!state.objectMode){var er=new TypeError("Invalid non-string/buffer chunk");stream.emit("error",er);setImmediate(function(){cb(er)});valid=false}return valid}Writable.prototype.write=function(chunk,encoding,cb){var state=this._writableState;var ret=false;if(typeof encoding==="function"){cb=encoding;encoding=null}if(!Buffer.isBuffer(chunk)&&isUint8Array(chunk))chunk=new Buffer(chunk);if(isArrayBuffer(chunk)&&typeof Uint8Array!=="undefined")chunk=new Buffer(new Uint8Array(chunk));if(Buffer.isBuffer(chunk))encoding="buffer";else if(!encoding)encoding=state.defaultEncoding;if(typeof cb!=="function")cb=function(){};if(state.ended)writeAfterEnd(this,state,cb);else if(validChunk(this,state,chunk,cb))ret=writeOrBuffer(this,state,chunk,encoding,cb);return ret};function decodeChunk(state,chunk,encoding){if(!state.objectMode&&state.decodeStrings!==false&&typeof chunk==="string"){chunk=new Buffer(chunk,encoding)}return chunk}function writeOrBuffer(stream,state,chunk,encoding,cb){chunk=decodeChunk(state,chunk,encoding);var len=state.objectMode?1:chunk.length;state.length+=len;var ret=state.length<state.highWaterMark;state.needDrain=!ret;if(state.writing)state.buffer.push(new WriteReq(chunk,encoding,cb));else doWrite(stream,state,len,chunk,encoding,cb);return ret}function doWrite(stream,state,len,chunk,encoding,cb){state.writelen=len;state.writecb=cb;state.writing=true;state.sync=true;stream._write(chunk,encoding,state.onwrite);state.sync=false}function onwriteError(stream,state,sync,er,cb){if(sync)setImmediate(function(){cb(er)});else cb(er);stream.emit("error",er)}function onwriteStateUpdate(state){state.writing=false;state.writecb=null;state.length-=state.writelen;state.writelen=0}function onwrite(stream,er){var state=stream._writableState;var sync=state.sync;var cb=state.writecb;onwriteStateUpdate(state);if(er)onwriteError(stream,state,sync,er,cb);else{var finished=needFinish(stream,state);if(!finished&&!state.bufferProcessing&&state.buffer.length)clearBuffer(stream,state);if(sync){setImmediate(function(){afterWrite(stream,state,finished,cb)})}else{afterWrite(stream,state,finished,cb)}}}function afterWrite(stream,state,finished,cb){if(!finished)onwriteDrain(stream,state);cb();if(finished)finishMaybe(stream,state)}function onwriteDrain(stream,state){if(state.length===0&&state.needDrain){state.needDrain=false;stream.emit("drain")}}function clearBuffer(stream,state){state.bufferProcessing=true;for(var c=0;c<state.buffer.length;c++){var entry=state.buffer[c];var chunk=entry.chunk;var encoding=entry.encoding;var cb=entry.callback;var len=state.objectMode?1:chunk.length;doWrite(stream,state,len,chunk,encoding,cb);if(state.writing){c++;break}}state.bufferProcessing=false;if(c<state.buffer.length)state.buffer=state.buffer.slice(c);else state.buffer.length=0}Writable.prototype._write=function(chunk,encoding,cb){cb(new Error("not implemented"))};Writable.prototype.end=function(chunk,encoding,cb){var state=this._writableState;if(typeof chunk==="function"){cb=chunk;chunk=null;encoding=null}else if(typeof encoding==="function"){cb=encoding;encoding=null}if(typeof chunk!=="undefined"&&chunk!==null)this.write(chunk,encoding);if(!state.ending&&!state.finished)endWritable(this,state,cb)};function needFinish(stream,state){return state.ending&&state.length===0&&!state.finished&&!state.writing}function finishMaybe(stream,state){var need=needFinish(stream,state);if(need){state.finished=true;stream.emit("finish")}return need}function endWritable(stream,state,cb){state.ending=true;finishMaybe(stream,state);if(cb){if(state.finished)setImmediate(cb);else stream.once("finish",cb)}state.ended=true}},{"./index.js":364,buffer:350,inherits:360,"process/browser.js":365}],370:[function(require,module,exports){var Buffer=require("buffer").Buffer;function assertEncoding(encoding){if(encoding&&!Buffer.isEncoding(encoding)){throw new Error("Unknown encoding: "+encoding)}}var StringDecoder=exports.StringDecoder=function(encoding){this.encoding=(encoding||"utf8").toLowerCase().replace(/[-_]/,"");assertEncoding(encoding);switch(this.encoding){case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2;this.detectIncompleteChar=utf16DetectIncompleteChar;break;case"base64":this.surrogateSize=3;this.detectIncompleteChar=base64DetectIncompleteChar;break;default:this.write=passThroughWrite;return}this.charBuffer=new Buffer(6);this.charReceived=0;this.charLength=0};StringDecoder.prototype.write=function(buffer){var charStr="";var offset=0;while(this.charLength){var i=buffer.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:buffer.length;buffer.copy(this.charBuffer,this.charReceived,offset,i);this.charReceived+=i-offset;offset=i;if(this.charReceived<this.charLength){return""}charStr=this.charBuffer.slice(0,this.charLength).toString(this.encoding);var charCode=charStr.charCodeAt(charStr.length-1);if(charCode>=55296&&charCode<=56319){this.charLength+=this.surrogateSize;charStr="";continue}this.charReceived=this.charLength=0;if(i==buffer.length)return charStr;buffer=buffer.slice(i,buffer.length);break}var lenIncomplete=this.detectIncompleteChar(buffer);var end=buffer.length;if(this.charLength){buffer.copy(this.charBuffer,0,buffer.length-lenIncomplete,end);this.charReceived=lenIncomplete;end-=lenIncomplete}charStr+=buffer.toString(this.encoding,0,end);var end=charStr.length-1;var charCode=charStr.charCodeAt(end);if(charCode>=55296&&charCode<=56319){var size=this.surrogateSize;this.charLength+=size;this.charReceived+=size;this.charBuffer.copy(this.charBuffer,size,0,size);this.charBuffer.write(charStr.charAt(charStr.length-1),this.encoding);return charStr.substring(0,end)}return charStr};StringDecoder.prototype.detectIncompleteChar=function(buffer){var i=buffer.length>=3?3:buffer.length;for(;i>0;i--){var c=buffer[buffer.length-i];if(i==1&&c>>5==6){this.charLength=2;break}if(i<=2&&c>>4==14){this.charLength=3;break}if(i<=3&&c>>3==30){this.charLength=4;break}}return i};StringDecoder.prototype.end=function(buffer){var res="";if(buffer&&buffer.length)res=this.write(buffer);if(this.charReceived){var cr=this.charReceived;var buf=this.charBuffer;var enc=this.encoding;res+=buf.slice(0,cr).toString(enc)}return res};function passThroughWrite(buffer){return buffer.toString(this.encoding)}function utf16DetectIncompleteChar(buffer){var incomplete=this.charReceived=buffer.length%2;this.charLength=incomplete?2:0;return incomplete}function base64DetectIncompleteChar(buffer){var incomplete=this.charReceived=buffer.length%3;this.charLength=incomplete?3:0;return incomplete}},{buffer:350}],371:[function(require,module,exports){module.exports=function isBuffer(arg){return arg&&typeof arg==="object"&&typeof arg.copy==="function"&&typeof arg.fill==="function"&&typeof arg.readUInt8==="function"}},{}],372:[function(require,module,exports){(function(process,global){var formatRegExp=/%[sdj%]/g;exports.format=function(f){if(!isString(f)){var objects=[];for(var i=0;i<arguments.length;i++){objects.push(inspect(arguments[i]))}return objects.join(" ")}var i=1;var args=arguments;var len=args.length;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 JSON.stringify(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};exports.deprecate=function(fn,msg){if(isUndefined(global.process)){return function(){return exports.deprecate(fn,msg).apply(this,arguments)}}if(process.noDeprecation===true){return fn}var warned=false;function deprecated(){if(!warned){if(process.throwDeprecation){throw new Error(msg)}else if(process.traceDeprecation){console.trace(msg)}else{console.error(msg)}warned=true}return fn.apply(this,arguments)}return deprecated};var debugs={};var debugEnviron;exports.debuglog=function(set){if(isUndefined(debugEnviron))debugEnviron=process.env.NODE_DEBUG||"";set=set.toUpperCase();if(!debugs[set]){if(new RegExp("\\b"+set+"\\b","i").test(debugEnviron)){var pid=process.pid;debugs[set]=function(){var msg=exports.format.apply(exports,arguments);console.error("%s %d: %s",set,pid,msg)}}else{debugs[set]=function(){}}}return debugs[set]};function inspect(obj,opts){var ctx={seen:[],stylize:stylizeNoColor};if(arguments.length>=3)ctx.depth=arguments[2];if(arguments.length>=4)ctx.colors=arguments[3];if(isBoolean(opts)){ctx.showHidden=opts}else if(opts){exports._extend(ctx,opts)}if(isUndefined(ctx.showHidden))ctx.showHidden=false;if(isUndefined(ctx.depth))ctx.depth=2;if(isUndefined(ctx.colors))ctx.colors=false;if(isUndefined(ctx.customInspect))ctx.customInspect=true;if(ctx.colors)ctx.stylize=stylizeWithColor;return formatValue(ctx,obj,ctx.depth)}exports.inspect=inspect;inspect.colors={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]};inspect.styles={special:"cyan",number:"yellow","boolean":"yellow",undefined:"grey","null":"bold",string:"green",date:"magenta",regexp:"red"};function stylizeWithColor(str,styleType){var style=inspect.styles[styleType];if(style){return"["+inspect.colors[style][0]+"m"+str+"["+inspect.colors[style][1]+"m"}else{return str}}function stylizeNoColor(str,styleType){return str}function arrayToHash(array){var hash={};array.forEach(function(val,idx){hash[val]=true});return hash}function formatValue(ctx,value,recurseTimes){if(ctx.customInspect&&value&&isFunction(value.inspect)&&value.inspect!==exports.inspect&&!(value.constructor&&value.constructor.prototype===value)){var ret=value.inspect(recurseTimes,ctx);if(!isString(ret)){ret=formatValue(ctx,ret,recurseTimes)}return ret}var primitive=formatPrimitive(ctx,value);if(primitive){return primitive}var keys=Object.keys(value);var visibleKeys=arrayToHash(keys);if(ctx.showHidden){keys=Object.getOwnPropertyNames(value)}if(isError(value)&&(keys.indexOf("message")>=0||keys.indexOf("description")>=0)){return formatError(value)}if(keys.length===0){if(isFunction(value)){var name=value.name?": "+value.name:"";return ctx.stylize("[Function"+name+"]","special")}if(isRegExp(value)){return ctx.stylize(RegExp.prototype.toString.call(value),"regexp")}if(isDate(value)){return ctx.stylize(Date.prototype.toString.call(value),"date")}if(isError(value)){return formatError(value)}}var base="",array=false,braces=["{","}"];if(isArray(value)){array=true;braces=["[","]"]}if(isFunction(value)){var n=value.name?": "+value.name:"";base=" [Function"+n+"]"}if(isRegExp(value)){base=" "+RegExp.prototype.toString.call(value)}if(isDate(value)){base=" "+Date.prototype.toUTCString.call(value)}if(isError(value)){base=" "+formatError(value)}if(keys.length===0&&(!array||value.length==0)){return braces[0]+base+braces[1]}if(recurseTimes<0){if(isRegExp(value)){return ctx.stylize(RegExp.prototype.toString.call(value),"regexp")}else{return ctx.stylize("[Object]","special")}}ctx.seen.push(value);var output;if(array){output=formatArray(ctx,value,recurseTimes,visibleKeys,keys)}else{output=keys.map(function(key){return formatProperty(ctx,value,recurseTimes,visibleKeys,key,array)})}ctx.seen.pop();return reduceToSingleString(output,base,braces)}function formatPrimitive(ctx,value){if(isUndefined(value))return ctx.stylize("undefined","undefined");if(isString(value)){var simple="'"+JSON.stringify(value).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return ctx.stylize(simple,"string")}if(isNumber(value))return ctx.stylize(""+value,"number");if(isBoolean(value))return ctx.stylize(""+value,"boolean");if(isNull(value))return ctx.stylize("null","null")}function formatError(value){return"["+Error.prototype.toString.call(value)+"]"}function formatArray(ctx,value,recurseTimes,visibleKeys,keys){var output=[];for(var i=0,l=value.length;i<l;++i){if(hasOwnProperty(value,String(i))){output.push(formatProperty(ctx,value,recurseTimes,visibleKeys,String(i),true))}else{output.push("")}}keys.forEach(function(key){if(!key.match(/^\d+$/)){output.push(formatProperty(ctx,value,recurseTimes,visibleKeys,key,true))}});return output}function formatProperty(ctx,value,recurseTimes,visibleKeys,key,array){var name,str,desc;desc=Object.getOwnPropertyDescriptor(value,key)||{value:value[key]};if(desc.get){if(desc.set){str=ctx.stylize("[Getter/Setter]","special")}else{str=ctx.stylize("[Getter]","special")}}else{if(desc.set){str=ctx.stylize("[Setter]","special")}}if(!hasOwnProperty(visibleKeys,key)){name="["+key+"]"}if(!str){if(ctx.seen.indexOf(desc.value)<0){if(isNull(recurseTimes)){str=formatValue(ctx,desc.value,null)}else{str=formatValue(ctx,desc.value,recurseTimes-1)}if(str.indexOf("\n")>-1){if(array){str=str.split("\n").map(function(line){return" "+line}).join("\n").substr(2)
}else{str="\n"+str.split("\n").map(function(line){return" "+line}).join("\n")}}}else{str=ctx.stylize("[Circular]","special")}}if(isUndefined(name)){if(array&&key.match(/^\d+$/)){return str}name=JSON.stringify(""+key);if(name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)){name=name.substr(1,name.length-2);name=ctx.stylize(name,"name")}else{name=name.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'");name=ctx.stylize(name,"string")}}return name+": "+str}function reduceToSingleString(output,base,braces){var numLinesEst=0;var length=output.reduce(function(prev,cur){numLinesEst++;if(cur.indexOf("\n")>=0)numLinesEst++;return prev+cur.replace(/\u001b\[\d\d?m/g,"").length+1},0);if(length>60){return braces[0]+(base===""?"":base+"\n ")+" "+output.join(",\n ")+" "+braces[1]}return braces[0]+base+" "+output.join(", ")+" "+braces[1]}function isArray(ar){return Array.isArray(ar)}exports.isArray=isArray;function isBoolean(arg){return typeof arg==="boolean"}exports.isBoolean=isBoolean;function isNull(arg){return arg===null}exports.isNull=isNull;function isNullOrUndefined(arg){return arg==null}exports.isNullOrUndefined=isNullOrUndefined;function isNumber(arg){return typeof arg==="number"}exports.isNumber=isNumber;function isString(arg){return typeof arg==="string"}exports.isString=isString;function isSymbol(arg){return typeof arg==="symbol"}exports.isSymbol=isSymbol;function isUndefined(arg){return arg===void 0}exports.isUndefined=isUndefined;function isRegExp(re){return isObject(re)&&objectToString(re)==="[object RegExp]"}exports.isRegExp=isRegExp;function isObject(arg){return typeof arg==="object"&&arg!==null}exports.isObject=isObject;function isDate(d){return isObject(d)&&objectToString(d)==="[object Date]"}exports.isDate=isDate;function isError(e){return isObject(e)&&(objectToString(e)==="[object Error]"||e instanceof Error)}exports.isError=isError;function isFunction(arg){return typeof arg==="function"}exports.isFunction=isFunction;function isPrimitive(arg){return arg===null||typeof arg==="boolean"||typeof arg==="number"||typeof arg==="string"||typeof arg==="symbol"||typeof arg==="undefined"}exports.isPrimitive=isPrimitive;exports.isBuffer=require("./support/isBuffer");function objectToString(o){return Object.prototype.toString.call(o)}function pad(n){return n<10?"0"+n.toString(10):n.toString(10)}var months=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function timestamp(){var d=new Date;var time=[pad(d.getHours()),pad(d.getMinutes()),pad(d.getSeconds())].join(":");return[d.getDate(),months[d.getMonth()],time].join(" ")}exports.log=function(){console.log("%s - %s",timestamp(),exports.format.apply(exports,arguments))};exports.inherits=require("inherits");exports._extend=function(origin,add){if(!add||!isObject(add))return origin;var keys=Object.keys(add);var i=keys.length;while(i--){origin[keys[i]]=add[keys[i]]}return origin};function hasOwnProperty(obj,prop){return Object.prototype.hasOwnProperty.call(obj,prop)}}).call(this,require("/var/sites/requirebin-cdn/node_modules/browserify-cdn/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js"),typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./support/isBuffer":371,"/var/sites/requirebin-cdn/node_modules/browserify-cdn/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js":361,inherits:360}],373:[function(require,module,exports){var indexOf=require("indexof");var Object_keys=function(obj){if(Object.keys)return Object.keys(obj);else{var res=[];for(var key in obj)res.push(key);return res}};var forEach=function(xs,fn){if(xs.forEach)return xs.forEach(fn);else for(var i=0;i<xs.length;i++){fn(xs[i],i,xs)}};var defineProp=function(){try{Object.defineProperty({},"_",{});return function(obj,name,value){Object.defineProperty(obj,name,{writable:true,enumerable:false,configurable:true,value:value})}}catch(e){return function(obj,name,value){obj[name]=value}}}();var globals=["Array","Boolean","Date","Error","EvalError","Function","Infinity","JSON","Math","NaN","Number","Object","RangeError","ReferenceError","RegExp","String","SyntaxError","TypeError","URIError","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","eval","isFinite","isNaN","parseFloat","parseInt","undefined","unescape"];function Context(){}Context.prototype={};var Script=exports.Script=function NodeScript(code){if(!(this instanceof Script))return new Script(code);this.code=code};Script.prototype.runInContext=function(context){if(!(context instanceof Context)){throw new TypeError("needs a 'context' argument.")}var iframe=document.createElement("iframe");if(!iframe.style)iframe.style={};iframe.style.display="none";document.body.appendChild(iframe);var win=iframe.contentWindow;var wEval=win.eval,wExecScript=win.execScript;if(!wEval&&wExecScript){wExecScript.call(win,"null");wEval=win.eval}forEach(Object_keys(context),function(key){win[key]=context[key]});forEach(globals,function(key){if(context[key]){win[key]=context[key]}});var winKeys=Object_keys(win);var res=wEval.call(win,this.code);forEach(Object_keys(win),function(key){if(key in context||indexOf(winKeys,key)===-1){context[key]=win[key]}});forEach(globals,function(key){if(!(key in context)){defineProp(context,key,win[key])}});document.body.removeChild(iframe);return res};Script.prototype.runInThisContext=function(){return eval(this.code)};Script.prototype.runInNewContext=function(context){var ctx=Script.createContext(context);var res=this.runInContext(ctx);forEach(Object_keys(ctx),function(key){context[key]=ctx[key]});return res};forEach(Object_keys(Script.prototype),function(name){exports[name]=Script[name]=function(code){var s=Script(code);return s[name].apply(s,[].slice.call(arguments,1))}});exports.createScript=function(code){return exports.Script(code)};exports.createContext=Script.createContext=function(context){var copy=new Context;if(typeof context==="object"){forEach(Object_keys(context),function(key){copy[key]=context[key]})}return copy}},{indexof:374}],374:[function(require,module,exports){var indexOf=[].indexOf;module.exports=function(arr,obj){if(indexOf)return arr.indexOf(obj);for(var i=0;i<arr.length;++i){if(arr[i]===obj)return i}return-1}},{}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({"3bDYxh":[function(require,module,exports){module.exports=DragDrop;var throttle=require("lodash.throttle");function DragDrop(elem,cb){if(typeof elem==="string")elem=document.querySelector(elem);elem.addEventListener("dragenter",killEvent,false);elem.addEventListener("dragover",makeOnDragOver(elem),false);elem.addEventListener("drop",onDrop.bind(undefined,elem,cb),false)}function killEvent(e){e.stopPropagation();e.preventDefault();return false}function makeOnDragOver(elem){var fn=throttle(function(){elem.classList.add("drag");if(elem.timeout)clearTimeout(elem.timeout);elem.timeout=setTimeout(function(){elem.classList.remove("drag")},150)},100,{trailing:false});return function(e){e.stopPropagation();e.preventDefault();e.dataTransfer.dropEffect="copy";fn()}}function onDrop(elem,cb,e){e.stopPropagation();e.preventDefault();elem.classList.remove("drag");cb(Array.prototype.slice.call(e.dataTransfer.files),{x:e.clientX,y:e.clientY});return false}},{"lodash.throttle":3}],"drag-drop":[function(require,module,exports){module.exports=require("3bDYxh")},{}],3:[function(require,module,exports){var debounce=require("lodash.debounce"),isFunction=require("lodash.isfunction"),isObject=require("lodash.isobject");var debounceOptions={leading:false,maxWait:0,trailing:false};function throttle(func,wait,options){var leading=true,trailing=true;if(!isFunction(func)){throw new TypeError}if(options===false){leading=false}else if(isObject(options)){leading="leading"in options?options.leading:leading;trailing="trailing"in options?options.trailing:trailing}debounceOptions.leading=leading;debounceOptions.maxWait=wait;debounceOptions.trailing=trailing;return debounce(func,wait,debounceOptions)}module.exports=throttle},{"lodash.debounce":4,"lodash.isfunction":7,"lodash.isobject":8}],4:[function(require,module,exports){var isFunction=require("lodash.isfunction"),isObject=require("lodash.isobject"),now=require("lodash.now");var nativeMax=Math.max;function debounce(func,wait,options){var args,maxTimeoutId,result,stamp,thisArg,timeoutId,trailingCall,lastCalled=0,maxWait=false,trailing=true;if(!isFunction(func)){throw new TypeError}wait=nativeMax(0,wait)||0;if(options===true){var leading=true;trailing=false}else if(isObject(options)){leading=options.leading;maxWait="maxWait"in options&&(nativeMax(wait,options.maxWait)||0);trailing="trailing"in options?options.trailing:trailing}var delayed=function(){var remaining=wait-(now()-stamp);if(remaining<=0){if(maxTimeoutId){clearTimeout(maxTimeoutId)}var isCalled=trailingCall;maxTimeoutId=timeoutId=trailingCall=undefined;if(isCalled){lastCalled=now();result=func.apply(thisArg,args);if(!timeoutId&&!maxTimeoutId){args=thisArg=null}}}else{timeoutId=setTimeout(delayed,remaining)}};var maxDelayed=function(){if(timeoutId){clearTimeout(timeoutId)}maxTimeoutId=timeoutId=trailingCall=undefined;if(trailing||maxWait!==wait){lastCalled=now();result=func.apply(thisArg,args);if(!timeoutId&&!maxTimeoutId){args=thisArg=null}}};return function(){args=arguments;stamp=now();thisArg=this;trailingCall=trailing&&(timeoutId||!leading);if(maxWait===false){var leadingCall=leading&&!timeoutId}else{if(!maxTimeoutId&&!leading){lastCalled=stamp}var remaining=maxWait-(stamp-lastCalled),isCalled=remaining<=0;if(isCalled){if(maxTimeoutId){maxTimeoutId=clearTimeout(maxTimeoutId)}lastCalled=stamp;result=func.apply(thisArg,args)}else if(!maxTimeoutId){maxTimeoutId=setTimeout(maxDelayed,remaining)}}if(isCalled&&timeoutId){timeoutId=clearTimeout(timeoutId)}else if(!timeoutId&&wait!==maxWait){timeoutId=setTimeout(delayed,wait)}if(leadingCall){isCalled=true;result=func.apply(thisArg,args)}if(isCalled&&!timeoutId&&!maxTimeoutId){args=thisArg=null}return result}}module.exports=debounce},{"lodash.isfunction":7,"lodash.isobject":8,"lodash.now":5}],5:[function(require,module,exports){var isNative=require("lodash._isnative");var now=isNative(now=Date.now)&&now||function(){return(new Date).getTime()};module.exports=now},{"lodash._isnative":6}],6:[function(require,module,exports){var objectProto=Object.prototype;var toString=objectProto.toString;var reNative=RegExp("^"+String(toString).replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/toString| for [^\]]+/g,".*?")+"$");function isNative(value){return typeof value=="function"&&reNative.test(value)}module.exports=isNative},{}],7:[function(require,module,exports){function isFunction(value){return typeof value=="function"}module.exports=isFunction},{}],8:[function(require,module,exports){var objectTypes=require("lodash._objecttypes");function isObject(value){return!!(value&&objectTypes[typeof value])}module.exports=isObject},{"lodash._objecttypes":9}],9:[function(require,module,exports){var objectTypes={"boolean":false,"function":true,object:true,number:false,string:false,undefined:false};module.exports=objectTypes},{}]},{},[]);require("drag-drop-webkit-mobile");var XMPP=require("stanza.io");var dragDrop=require("drag-drop");var mucRoom=window.prompt("Enter name for filedrop session:");document.querySelector("body").innerHTML='<div id="logs" style="height:100%;overflow:scroll"></div>';document.querySelector("#logs").innerHTML='<div id="droparea" style="color:green; font-weight:bold">Drop a file on this part of the page</div><div>Filedrop session: '+mucRoom+'</div><div style="color:red">BE CAREFUL WHAT YOU SHARE</div>';function log(){var args=Array.prototype.slice.call(arguments);document.querySelector("#logs").innerHTML+="<p>"+args.join(" ")+"</p>"}var offeredFiles=[];var peers=[];var client=XMPP.createClient({jid:"anon.lance.im",wsURL:"wss://lance.im:5281/xmpp-websocket",transport:"websocket",useStreamManagement:false});client.on("session:started",function(){log("Connected as:",client.jid.full);client.joinRoom(mucRoom+"@muc.lance.im",client.jid.local)});client.on("muc:join",function(pres){log("Joined room:",pres.from.bare)});client.on("muc:available",function(pres){if(pres.muc.codes&&pres.muc.codes.indexOf("110")>=0){return}log("New peer detected");peers.push(pres.from.full);if(!offeredFiles.length){return}log("Offering files to new peer");offeredFiles.forEach(function(file){var session=client.jingle.createFileTransferSession(pres.from);session.start(file)})});client.on("jingle:incoming",function(session){log("Incoming file session request for:",session.receiver.metadata.name);session.receiver.on("progress",function(recvd,total){log("Received from "+session.peerID+": "+recvd+"/"+total)});session.on("receivedFile",function(session,file,metadata){log("Received file",metadata.name,metadata.size);var downloadURL=URL.createObjectURL(file);log('<a href="'+downloadURL+' download="'+metadata.name+'">Download '+metadata.name+" ("+metadata.size+")</a>")});session.accept()});dragDrop(document.querySelector("body"),function(files){files.forEach(function(file){log("Offering:",file.name,file.size,file.type,file.lastModifiedDate);offeredFiles.push(file);peers.forEach(function(peer){var session=client.jingle.createFileTransferSession(peer);session.sender.on("progress",function(sent,total){log("Sent to "+peer+": "+sent+"/"+total)});session.start(file)})})});log("Starting...");client.connect();
{
"name": "requirebin-sketch",
"version": "1.0.0",
"dependencies": {
"drag-drop-webkit-mobile": "0.2.4",
"stanza.io": "7.0.6",
"drag-drop": "2.0.0"
}
}
<style type='text/css'>html, body { margin: 0; padding: 0; border: 0; }
body, html { height: 100%; width: 100%; }</style>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment