Mobrovac has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/198648

Change subject: Update citoid submodule to master (b32713b)
......................................................................

Update citoid submodule to master (b32713b)

New changes:
168578b Fix global memory leak when scraping OG data
0a8a9df Update front page to use /api endpoint
01d8f6a Add field "websiteTitle" in itemType "webpage"
26ca7db Don't add openGraph 'locale' to language field
b32713b Validate language codes in mediawiki format

Change-Id: I601f005da53d845194280d9026b21031ef8e938c
---
M node_modules/body-parser/package.json
M node_modules/cheerio/node_modules/htmlparser2/package.json
M node_modules/cheerio/package.json
M node_modules/express/node_modules/cookie/package.json
M node_modules/express/node_modules/proxy-addr/HISTORY.md
M 
node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/ipaddr.min.js
M 
node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/lib/ipaddr.js
M 
node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/package.json
M 
node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/src/ipaddr.coffee
M 
node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/test/ipaddr.test.coffee
M node_modules/express/node_modules/proxy-addr/package.json
M node_modules/express/node_modules/send/node_modules/mime/package.json
M 
node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/package.json
M 
node_modules/grunt-simple-mocha/node_modules/mocha/node_modules/commander/package.json
M 
node_modules/grunt-simple-mocha/node_modules/mocha/node_modules/mkdirp/package.json
M node_modules/grunt/node_modules/dateformat/package.json
M node_modules/grunt/node_modules/findup-sync/node_modules/lodash/package.json
M 
node_modules/grunt/node_modules/grunt-legacy-log/node_modules/lodash/package.json
M node_modules/grunt/package.json
A node_modules/html-metadata/.jshintignore
A node_modules/html-metadata/.jshintrc
A node_modules/html-metadata/.npmignore
M node_modules/html-metadata/index.js
M 
node_modules/html-metadata/node_modules/microdata-node/node_modules/htmlparser2/package.json
M node_modules/html-metadata/package.json
A node_modules/html-metadata/test/index.js
M node_modules/node-txstatsd/package.json
M node_modules/path/package.json
M 
node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/package.json
M 
node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/package.json
M 
node_modules/request/node_modules/http-signature/node_modules/asn1/package.json
M 
node_modules/request/node_modules/http-signature/node_modules/ctype/package.json
M src
33 files changed, 150 insertions(+), 50 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/citoid/deploy 
refs/changes/48/198648/1

diff --git a/node_modules/body-parser/package.json 
b/node_modules/body-parser/package.json
index e602960..57d0158 100644
--- a/node_modules/body-parser/package.json
+++ b/node_modules/body-parser/package.json
@@ -92,5 +92,6 @@
     "tarball": "http://registry.npmjs.org/body-parser/-/body-parser-1.10.0.tgz";
   },
   "directories": {},
-  "_resolved": 
"https://registry.npmjs.org/body-parser/-/body-parser-1.10.0.tgz";
+  "_resolved": 
"https://registry.npmjs.org/body-parser/-/body-parser-1.10.0.tgz";,
+  "readme": "ERROR: No README data found!"
 }
diff --git a/node_modules/cheerio/node_modules/htmlparser2/package.json 
b/node_modules/cheerio/node_modules/htmlparser2/package.json
index c3374b0..7596b24 100644
--- a/node_modules/cheerio/node_modules/htmlparser2/package.json
+++ b/node_modules/cheerio/node_modules/htmlparser2/package.json
@@ -75,7 +75,7 @@
   "homepage": "https://github.com/fb55/htmlparser2";,
   "_id": "htmlparser2@3.8.2",
   "_shasum": "0d6bc3471d01e9766fc2c274cbac1d55b36c009c",
-  "_from": "htmlparser2@>=3.8.0 <3.9.0",
+  "_from": "htmlparser2@>=3.8.1 <3.9.0",
   "_npmVersion": "2.1.5",
   "_nodeVersion": "0.10.32",
   "_npmUser": {
diff --git a/node_modules/cheerio/package.json 
b/node_modules/cheerio/package.json
index 251cbf9..406cc0f 100644
--- a/node_modules/cheerio/package.json
+++ b/node_modules/cheerio/package.json
@@ -76,5 +76,6 @@
     "tarball": "http://registry.npmjs.org/cheerio/-/cheerio-0.18.0.tgz";
   },
   "directories": {},
-  "_resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.18.0.tgz";
+  "_resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.18.0.tgz";,
+  "readme": "ERROR: No README data found!"
 }
diff --git a/node_modules/express/node_modules/cookie/package.json 
b/node_modules/express/node_modules/cookie/package.json
index 80aecf4..7dbb395 100644
--- a/node_modules/express/node_modules/cookie/package.json
+++ b/node_modules/express/node_modules/cookie/package.json
@@ -49,5 +49,6 @@
   ],
   "directories": {},
   "_shasum": "72fec3d24e48a3432073d90c12642005061004b1",
-  "_resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.2.tgz";
+  "_resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.2.tgz";,
+  "readme": "ERROR: No README data found!"
 }
diff --git a/node_modules/express/node_modules/proxy-addr/HISTORY.md 
b/node_modules/express/node_modules/proxy-addr/HISTORY.md
index 319b2ad..0a695fd 100644
--- a/node_modules/express/node_modules/proxy-addr/HISTORY.md
+++ b/node_modules/express/node_modules/proxy-addr/HISTORY.md
@@ -1,3 +1,9 @@
+1.0.7 / 2015-03-16
+==================
+
+  * deps: ipaddr.js@0.1.9
+    - Fix OOM on certain inputs to `isValid`
+
 1.0.6 / 2015-02-01
 ==================
 
diff --git 
a/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/ipaddr.min.js
 
b/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/ipaddr.min.js
index 9d5c657..59634ff 100644
--- 
a/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/ipaddr.min.js
+++ 
b/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/ipaddr.min.js
@@ -1 +1 @@
-(function(){var t,r,n,e,i,o,a,s;r={},s=this,"undefined"!=typeof 
module&&null!==module&&module.exports?module.exports=r:s.ipaddr=r,a=function(t,r,n,e){var
 i,o;if(t.length!==r.length)throw new Error("ipaddr: cannot match CIDR for 
objects with different 
lengths");for(i=0;e>0;){if(o=n-e,0>o&&(o=0),t[i]>>o!==r[i]>>o)return!1;e-=n,i+=1}return!0},r.subnetMatch=function(t,r,n){var
 e,i,o,a,s;null==n&&(n="unicast");for(e in r)for(i=r[e],"[object 
Array]"!==toString.call(i[0])&&(i=[i]),a=0,s=i.length;s>a;a++)if(o=i[a],t.match.apply(t,o))return
 e;return n},r.IPv4=function(){function t(t){var r,n,e;if(4!==t.length)throw 
new Error("ipaddr: ipv4 octet count should be 
4");for(n=0,e=t.length;e>n;n++)if(r=t[n],!(r>=0&&255>=r))throw new 
Error("ipaddr: ipv4 octet is a byte");this.octets=t}return 
t.prototype.kind=function(){return"ipv4"},t.prototype.toString=function(){return
 this.octets.join(".")},t.prototype.toByteArray=function(){return 
this.octets.slice(0)},t.prototype.match=function(t,r){if("ipv4"!==t.kind())throw
 new Error("ipaddr: cannot match ipv4 address with non-ipv4 one");return 
a(this.octets,t.octets,8,r)},t.prototype.SpecialRanges={unspecified:[[new 
t([0,0,0,0]),8]],broadcast:[[new t([255,255,255,255]),32]],multicast:[[new 
t([224,0,0,0]),4]],linkLocal:[[new t([169,254,0,0]),16]],loopback:[[new 
t([127,0,0,0]),8]],"private":[[new t([10,0,0,0]),8],[new 
t([172,16,0,0]),12],[new t([192,168,0,0]),16]],reserved:[[new 
t([192,0,0,0]),24],[new t([192,0,2,0]),24],[new t([192,88,99,0]),24],[new 
t([198,51,100,0]),24],[new t([203,0,113,0]),24],[new 
t([240,0,0,0]),4]]},t.prototype.range=function(){return 
r.subnetMatch(this,this.SpecialRanges)},t.prototype.toIPv4MappedAddress=function(){return
 
r.IPv6.parse("::ffff:"+this.toString())},t}(),n="(0?\\d+|0x[a-f0-9]+)",e={fourOctet:new
 RegExp("^"+n+"\\."+n+"\\."+n+"\\."+n+"$","i"),longValue:new 
RegExp("^"+n+"$","i")},r.IPv4.parser=function(t){var 
r,n,i,o,a;if(n=function(t){return"0"===t[0]&&"x"!==t[1]?parseInt(t,8):parseInt(t)},r=t.match(e.fourOctet))return
 function(){var 
t,e,o,a;for(o=r.slice(1,6),a=[],t=0,e=o.length;e>t;t++)i=o[t],a.push(n(i));return
 a}();if(r=t.match(e.longValue)){if(a=n(r[1]),a>4294967295||0>a)throw new 
Error("ipaddr: address outside defined range");return function(){var 
t,r;for(r=[],o=t=0;24>=t;o=t+=8)r.push(a>>o&255);return r}().reverse()}return 
null},r.IPv6=function(){function t(t){var r,n,e;if(8!==t.length)throw new 
Error("ipaddr: ipv6 part count should be 
8");for(n=0,e=t.length;e>n;n++)if(r=t[n],!(r>=0&&65535>=r))throw new 
Error("ipaddr: ipv6 part should fit to two octets");this.parts=t}return 
t.prototype.kind=function(){return"ipv6"},t.prototype.toString=function(){var 
t,r,n,e,i,o,a;for(i=function(){var 
t,n,e,i;for(e=this.parts,i=[],t=0,n=e.length;n>t;t++)r=e[t],i.push(r.toString(16));return
 i}.call(this),t=[],n=function(r){return 
t.push(r)},e=0,o=0,a=i.length;a>o;o++)switch(r=i[o],e){case 
0:n("0"===r?"":r),e=1;break;case 1:"0"===r?e=2:n(r);break;case 
2:"0"!==r&&(n(""),n(r),e=3);break;case 3:n(r)}return 
2===e&&(n(""),n("")),t.join(":")},t.prototype.toByteArray=function(){var 
t,r,n,e,i;for(t=[],i=this.parts,n=0,e=i.length;e>n;n++)r=i[n],t.push(r>>8),t.push(255&r);return
 t},t.prototype.toNormalizedString=function(){var t;return function(){var 
r,n,e,i;for(e=this.parts,i=[],r=0,n=e.length;n>r;r++)t=e[r],i.push(t.toString(16));return
 
i}.call(this).join(":")},t.prototype.match=function(t,r){if("ipv6"!==t.kind())throw
 new Error("ipaddr: cannot match ipv6 address with non-ipv6 one");return 
a(this.parts,t.parts,16,r)},t.prototype.SpecialRanges={unspecified:[new 
t([0,0,0,0,0,0,0,0]),128],linkLocal:[new 
t([65152,0,0,0,0,0,0,0]),10],multicast:[new 
t([65280,0,0,0,0,0,0,0]),8],loopback:[new 
t([0,0,0,0,0,0,0,1]),128],uniqueLocal:[new 
t([64512,0,0,0,0,0,0,0]),7],ipv4Mapped:[new 
t([0,0,0,0,0,65535,0,0]),96],rfc6145:[new 
t([0,0,0,0,65535,0,0,0]),96],rfc6052:[new 
t([100,65435,0,0,0,0,0,0]),96],"6to4":[new 
t([8194,0,0,0,0,0,0,0]),16],teredo:[new 
t([8193,0,0,0,0,0,0,0]),32],reserved:[[new 
t([8193,3512,0,0,0,0,0,0]),32]]},t.prototype.range=function(){return 
r.subnetMatch(this,this.SpecialRanges)},t.prototype.isIPv4MappedAddress=function(){return"ipv4Mapped"===this.range()},t.prototype.toIPv4Address=function(){var
 t,n,e;if(!this.isIPv4MappedAddress())throw new Error("ipaddr: trying to 
convert a generic ipv6 address to ipv4");return 
e=this.parts.slice(-2),t=e[0],n=e[1],new 
r.IPv4([t>>8,255&t,n>>8,255&n])},t}(),i="(?:[0-9a-f]+::?)+",o={"native":new 
RegExp("^(::)?("+i+")?([0-9a-f]+)?(::)?$","i"),transitional:new 
RegExp("^((?:"+i+")|(?:::)(?:"+i+")?)"+(""+n+"\\."+n+"\\."+n+"\\."+n+"$"),"i")},t=function(t,r){var
 n,e,i,o,a;if(t.indexOf("::")!==t.lastIndexOf("::"))return 
null;for(n=0,e=-1;(e=t.indexOf(":",e+1))>=0;)n++;for(":"===t[0]&&n--,":"===t[t.length-1]&&n--,a=r-n,o=":";a--;)o+="0:";return
 
t=t.replace("::",o),":"===t[0]&&(t=t.slice(1)),":"===t[t.length-1]&&(t=t.slice(0,-1)),function(){var
 
r,n,e,o;for(e=t.split(":"),o=[],r=0,n=e.length;n>r;r++)i=e[r],o.push(parseInt(i,16));return
 o}()},r.IPv6.parser=function(r){var n,e;return 
r.match(o["native"])?t(r,8):(n=r.match(o.transitional))&&(e=t(n[1].slice(0,-1),6))?(e.push(parseInt(n[2])<<8|parseInt(n[3])),e.push(parseInt(n[4])<<8|parseInt(n[5])),e):null},r.IPv4.isIPv4=r.IPv6.isIPv6=function(t){return
 null!==this.parser(t)},r.IPv4.isValid=r.IPv6.isValid=function(t){var 
r;try{return new this(this.parser(t)),!0}catch(n){return 
r=n,!1}},r.IPv4.parse=r.IPv6.parse=function(t){var 
r;if(r=this.parser(t),null===r)throw new Error("ipaddr: string is not formatted 
like ip address");return new this(r)},r.isValid=function(t){return 
r.IPv6.isValid(t)||r.IPv4.isValid(t)},r.parse=function(t){if(r.IPv6.isValid(t))return
 r.IPv6.parse(t);if(r.IPv4.isValid(t))return r.IPv4.parse(t);throw new 
Error("ipaddr: the address has neither IPv6 nor IPv4 
format")},r.process=function(t){var r;return 
r=this.parse(t),"ipv6"===r.kind()&&r.isIPv4MappedAddress()?r.toIPv4Address():r}}).call(this);
\ No newline at end of file
+(function(){var t,r,n,e,i,o,a,s;r={},s=this,"undefined"!=typeof 
module&&null!==module&&module.exports?module.exports=r:s.ipaddr=r,a=function(t,r,n,e){var
 i,o;if(t.length!==r.length)throw new Error("ipaddr: cannot match CIDR for 
objects with different 
lengths");for(i=0;e>0;){if(o=n-e,0>o&&(o=0),t[i]>>o!==r[i]>>o)return!1;e-=n,i+=1}return!0},r.subnetMatch=function(t,r,n){var
 e,i,o,a,s;null==n&&(n="unicast");for(e in r)for(i=r[e],"[object 
Array]"!==toString.call(i[0])&&(i=[i]),a=0,s=i.length;s>a;a++)if(o=i[a],t.match.apply(t,o))return
 e;return n},r.IPv4=function(){function t(t){var r,n,e;if(4!==t.length)throw 
new Error("ipaddr: ipv4 octet count should be 
4");for(n=0,e=t.length;e>n;n++)if(r=t[n],!(r>=0&&255>=r))throw new 
Error("ipaddr: ipv4 octet is a byte");this.octets=t}return 
t.prototype.kind=function(){return"ipv4"},t.prototype.toString=function(){return
 this.octets.join(".")},t.prototype.toByteArray=function(){return 
this.octets.slice(0)},t.prototype.match=function(t,r){if("ipv4"!==t.kind())throw
 new Error("ipaddr: cannot match ipv4 address with non-ipv4 one");return 
a(this.octets,t.octets,8,r)},t.prototype.SpecialRanges={unspecified:[[new 
t([0,0,0,0]),8]],broadcast:[[new t([255,255,255,255]),32]],multicast:[[new 
t([224,0,0,0]),4]],linkLocal:[[new t([169,254,0,0]),16]],loopback:[[new 
t([127,0,0,0]),8]],"private":[[new t([10,0,0,0]),8],[new 
t([172,16,0,0]),12],[new t([192,168,0,0]),16]],reserved:[[new 
t([192,0,0,0]),24],[new t([192,0,2,0]),24],[new t([192,88,99,0]),24],[new 
t([198,51,100,0]),24],[new t([203,0,113,0]),24],[new 
t([240,0,0,0]),4]]},t.prototype.range=function(){return 
r.subnetMatch(this,this.SpecialRanges)},t.prototype.toIPv4MappedAddress=function(){return
 
r.IPv6.parse("::ffff:"+this.toString())},t}(),n="(0?\\d+|0x[a-f0-9]+)",e={fourOctet:new
 RegExp("^"+n+"\\."+n+"\\."+n+"\\."+n+"$","i"),longValue:new 
RegExp("^"+n+"$","i")},r.IPv4.parser=function(t){var 
r,n,i,o,a;if(n=function(t){return"0"===t[0]&&"x"!==t[1]?parseInt(t,8):parseInt(t)},r=t.match(e.fourOctet))return
 function(){var 
t,e,o,a;for(o=r.slice(1,6),a=[],t=0,e=o.length;e>t;t++)i=o[t],a.push(n(i));return
 a}();if(r=t.match(e.longValue)){if(a=n(r[1]),a>4294967295||0>a)throw new 
Error("ipaddr: address outside defined range");return function(){var 
t,r;for(r=[],o=t=0;24>=t;o=t+=8)r.push(a>>o&255);return r}().reverse()}return 
null},r.IPv6=function(){function t(t){var r,n,e;if(8!==t.length)throw new 
Error("ipaddr: ipv6 part count should be 
8");for(n=0,e=t.length;e>n;n++)if(r=t[n],!(r>=0&&65535>=r))throw new 
Error("ipaddr: ipv6 part should fit to two octets");this.parts=t}return 
t.prototype.kind=function(){return"ipv6"},t.prototype.toString=function(){var 
t,r,n,e,i,o,a;for(i=function(){var 
t,n,e,i;for(e=this.parts,i=[],t=0,n=e.length;n>t;t++)r=e[t],i.push(r.toString(16));return
 i}.call(this),t=[],n=function(r){return 
t.push(r)},e=0,o=0,a=i.length;a>o;o++)switch(r=i[o],e){case 
0:n("0"===r?"":r),e=1;break;case 1:"0"===r?e=2:n(r);break;case 
2:"0"!==r&&(n(""),n(r),e=3);break;case 3:n(r)}return 
2===e&&(n(""),n("")),t.join(":")},t.prototype.toByteArray=function(){var 
t,r,n,e,i;for(t=[],i=this.parts,n=0,e=i.length;e>n;n++)r=i[n],t.push(r>>8),t.push(255&r);return
 t},t.prototype.toNormalizedString=function(){var t;return function(){var 
r,n,e,i;for(e=this.parts,i=[],r=0,n=e.length;n>r;r++)t=e[r],i.push(t.toString(16));return
 
i}.call(this).join(":")},t.prototype.match=function(t,r){if("ipv6"!==t.kind())throw
 new Error("ipaddr: cannot match ipv6 address with non-ipv6 one");return 
a(this.parts,t.parts,16,r)},t.prototype.SpecialRanges={unspecified:[new 
t([0,0,0,0,0,0,0,0]),128],linkLocal:[new 
t([65152,0,0,0,0,0,0,0]),10],multicast:[new 
t([65280,0,0,0,0,0,0,0]),8],loopback:[new 
t([0,0,0,0,0,0,0,1]),128],uniqueLocal:[new 
t([64512,0,0,0,0,0,0,0]),7],ipv4Mapped:[new 
t([0,0,0,0,0,65535,0,0]),96],rfc6145:[new 
t([0,0,0,0,65535,0,0,0]),96],rfc6052:[new 
t([100,65435,0,0,0,0,0,0]),96],"6to4":[new 
t([8194,0,0,0,0,0,0,0]),16],teredo:[new 
t([8193,0,0,0,0,0,0,0]),32],reserved:[[new 
t([8193,3512,0,0,0,0,0,0]),32]]},t.prototype.range=function(){return 
r.subnetMatch(this,this.SpecialRanges)},t.prototype.isIPv4MappedAddress=function(){return"ipv4Mapped"===this.range()},t.prototype.toIPv4Address=function(){var
 t,n,e;if(!this.isIPv4MappedAddress())throw new Error("ipaddr: trying to 
convert a generic ipv6 address to ipv4");return 
e=this.parts.slice(-2),t=e[0],n=e[1],new 
r.IPv4([t>>8,255&t,n>>8,255&n])},t}(),i="(?:[0-9a-f]+::?)+",o={"native":new 
RegExp("^(::)?("+i+")?([0-9a-f]+)?(::)?$","i"),transitional:new 
RegExp("^((?:"+i+")|(?:::)(?:"+i+")?)"+(""+n+"\\."+n+"\\."+n+"\\."+n+"$"),"i")},t=function(t,r){var
 n,e,i,o,a;if(t.indexOf("::")!==t.lastIndexOf("::"))return 
null;for(n=0,e=-1;(e=t.indexOf(":",e+1))>=0;)n++;if(":"===t[0]&&n--,":"===t[t.length-1]&&n--,n>r)return
 null;for(a=r-n,o=":";a--;)o+="0:";return 
t=t.replace("::",o),":"===t[0]&&(t=t.slice(1)),":"===t[t.length-1]&&(t=t.slice(0,-1)),function(){var
 
r,n,e,o;for(e=t.split(":"),o=[],r=0,n=e.length;n>r;r++)i=e[r],o.push(parseInt(i,16));return
 o}()},r.IPv6.parser=function(r){var n,e;return 
r.match(o["native"])?t(r,8):(n=r.match(o.transitional))&&(e=t(n[1].slice(0,-1),6))?(e.push(parseInt(n[2])<<8|parseInt(n[3])),e.push(parseInt(n[4])<<8|parseInt(n[5])),e):null},r.IPv4.isIPv4=r.IPv6.isIPv6=function(t){return
 null!==this.parser(t)},r.IPv4.isValid=r.IPv6.isValid=function(t){var 
r;try{return new this(this.parser(t)),!0}catch(n){return 
r=n,!1}},r.IPv4.parse=r.IPv6.parse=function(t){var 
r;if(r=this.parser(t),null===r)throw new Error("ipaddr: string is not formatted 
like ip address");return new this(r)},r.isValid=function(t){return 
r.IPv6.isValid(t)||r.IPv4.isValid(t)},r.parse=function(t){if(r.IPv6.isValid(t))return
 r.IPv6.parse(t);if(r.IPv4.isValid(t))return r.IPv4.parse(t);throw new 
Error("ipaddr: the address has neither IPv6 nor IPv4 
format")},r.process=function(t){var r;return 
r=this.parse(t),"ipv6"===r.kind()&&r.isIPv4MappedAddress()?r.toIPv4Address():r}}).call(this);
\ No newline at end of file
diff --git 
a/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/lib/ipaddr.js
 
b/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/lib/ipaddr.js
index 8b1ed5d..00620a8 100644
--- 
a/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/lib/ipaddr.js
+++ 
b/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/lib/ipaddr.js
@@ -315,6 +315,9 @@
     if (string[string.length - 1] === ':') {
       colonCount--;
     }
+    if (colonCount > parts) {
+      return null;
+    }
     replacementCount = parts - colonCount;
     replacement = ':';
     while (replacementCount--) {
diff --git 
a/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/package.json
 
b/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/package.json
index 929d45a..90ba8b5 100644
--- 
a/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/package.json
+++ 
b/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/package.json
@@ -1,7 +1,7 @@
 {
   "name": "ipaddr.js",
   "description": "A library for manipulating IPv4 and IPv6 addresses in 
JavaScript.",
-  "version": "0.1.8",
+  "version": "0.1.9",
   "author": {
     "name": "Peter Zotov",
     "email": "whitequ...@whitequark.org"
@@ -32,13 +32,13 @@
     "node": ">= 0.2.5"
   },
   "license": "MIT",
-  "gitHead": "3099dba20984caa73a83864ee582548413a425d8",
+  "gitHead": "d51df7aa41ef1875215ae4ffbd324c486f8c2799",
   "bugs": {
     "url": "https://github.com/whitequark/ipaddr.js/issues";
   },
-  "_id": "ipaddr.js@0.1.8",
-  "_shasum": "27442eda77b626c44724b4aa8a1867e8410579ee",
-  "_from": "ipaddr.js@0.1.8",
+  "_id": "ipaddr.js@0.1.9",
+  "_shasum": "a9c78ccc12dc9010f296ab9aef2f61f432d69efa",
+  "_from": "ipaddr.js@0.1.9",
   "_npmVersion": "1.4.21",
   "_npmUser": {
     "name": "whitequark",
@@ -51,10 +51,10 @@
     }
   ],
   "dist": {
-    "shasum": "27442eda77b626c44724b4aa8a1867e8410579ee",
-    "tarball": "http://registry.npmjs.org/ipaddr.js/-/ipaddr.js-0.1.8.tgz";
+    "shasum": "a9c78ccc12dc9010f296ab9aef2f61f432d69efa",
+    "tarball": "http://registry.npmjs.org/ipaddr.js/-/ipaddr.js-0.1.9.tgz";
   },
-  "_resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-0.1.8.tgz";,
+  "_resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-0.1.9.tgz";,
   "readme": "ERROR: No README data found!",
   "homepage": "https://github.com/whitequark/ipaddr.js";
 }
diff --git 
a/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/src/ipaddr.coffee
 
b/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/src/ipaddr.coffee
index 0172bfd..a6d358e 100644
--- 
a/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/src/ipaddr.coffee
+++ 
b/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/src/ipaddr.coffee
@@ -276,6 +276,10 @@
   colonCount-- if string[0] == ':'
   colonCount-- if string[string.length-1] == ':'
 
+  # The following loop would hang if colonCount > parts
+  if colonCount > parts
+    return null
+
   # replacement = ':' + '0:' * (parts - colonCount)
   replacementCount = parts - colonCount
   replacement = ':'
diff --git 
a/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/test/ipaddr.test.coffee
 
b/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/test/ipaddr.test.coffee
index c6ba1a9..627503d 100644
--- 
a/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/test/ipaddr.test.coffee
+++ 
b/node_modules/express/node_modules/proxy-addr/node_modules/ipaddr.js/test/ipaddr.test.coffee
@@ -220,3 +220,7 @@
     test.equal(ipaddr.isValid('4999999999'), false)
     test.equal(ipaddr.isValid('-1'), false)
     test.done()
+
+  'does not hang on ::8:8:8:8:8:8:8:8:8': (test) ->
+    test.equal(ipaddr.IPv6.isValid('::8:8:8:8:8:8:8:8:8'), false)
+    test.done()
diff --git a/node_modules/express/node_modules/proxy-addr/package.json 
b/node_modules/express/node_modules/proxy-addr/package.json
index bbc4f21..ad8fa6f 100644
--- a/node_modules/express/node_modules/proxy-addr/package.json
+++ b/node_modules/express/node_modules/proxy-addr/package.json
@@ -1,7 +1,7 @@
 {
   "name": "proxy-addr",
   "description": "Determine address of proxied request",
-  "version": "1.0.6",
+  "version": "1.0.7",
   "author": {
     "name": "Douglas Christopher Wilson",
     "email": "d...@somethingdoug.com"
@@ -18,12 +18,12 @@
   },
   "dependencies": {
     "forwarded": "~0.1.0",
-    "ipaddr.js": "0.1.8"
+    "ipaddr.js": "0.1.9"
   },
   "devDependencies": {
     "benchmark": "1.0.0",
     "beautify-benchmark": "0.2.4",
-    "istanbul": "0.3.5",
+    "istanbul": "0.3.8",
     "mocha": "~1.21.5"
   },
   "files": [
@@ -41,13 +41,13 @@
     "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter 
dot --check-leaks test/",
     "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report 
lcovonly -- --reporter spec --check-leaks test/"
   },
-  "gitHead": "550cade433f7a7d7cbcdebbd0f9e1cb94aed5e26",
+  "gitHead": "917fa69ae1a4c3e2962d89461b6945538b763b28",
   "bugs": {
     "url": "https://github.com/jshttp/proxy-addr/issues";
   },
   "homepage": "https://github.com/jshttp/proxy-addr";,
-  "_id": "proxy-addr@1.0.6",
-  "_shasum": "fce3a4c486bf2e188ad1e76e18399a79d02c0e72",
+  "_id": "proxy-addr@1.0.7",
+  "_shasum": "6e2655aa9c56b014f09734a7e6d558cc77751939",
   "_from": "proxy-addr@>=1.0.4 <1.1.0",
   "_npmVersion": "1.4.28",
   "_npmUser": {
@@ -81,10 +81,10 @@
     }
   ],
   "dist": {
-    "shasum": "fce3a4c486bf2e188ad1e76e18399a79d02c0e72",
-    "tarball": "http://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.6.tgz";
+    "shasum": "6e2655aa9c56b014f09734a7e6d558cc77751939",
+    "tarball": "http://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.7.tgz";
   },
   "directories": {},
-  "_resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.6.tgz";,
+  "_resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.7.tgz";,
   "readme": "ERROR: No README data found!"
 }
diff --git 
a/node_modules/express/node_modules/send/node_modules/mime/package.json 
b/node_modules/express/node_modules/send/node_modules/mime/package.json
index ab6beca..b666b72 100644
--- a/node_modules/express/node_modules/send/node_modules/mime/package.json
+++ b/node_modules/express/node_modules/send/node_modules/mime/package.json
@@ -35,7 +35,7 @@
     "shasum": "58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10",
     "tarball": "http://registry.npmjs.org/mime/-/mime-1.2.11.tgz";
   },
-  "_from": "mime@1.2.11",
+  "_from": "mime@>=1.2.11 <1.3.0",
   "_npmVersion": "1.3.6",
   "_npmUser": {
     "name": "broofa",
diff --git 
a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/package.json
 
b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/package.json
index c3374b0..7596b24 100644
--- 
a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/package.json
+++ 
b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/package.json
@@ -75,7 +75,7 @@
   "homepage": "https://github.com/fb55/htmlparser2";,
   "_id": "htmlparser2@3.8.2",
   "_shasum": "0d6bc3471d01e9766fc2c274cbac1d55b36c009c",
-  "_from": "htmlparser2@>=3.8.0 <3.9.0",
+  "_from": "htmlparser2@>=3.8.1 <3.9.0",
   "_npmVersion": "2.1.5",
   "_nodeVersion": "0.10.32",
   "_npmUser": {
diff --git 
a/node_modules/grunt-simple-mocha/node_modules/mocha/node_modules/commander/package.json
 
b/node_modules/grunt-simple-mocha/node_modules/mocha/node_modules/commander/package.json
index f2b43dd..de917f5 100644
--- 
a/node_modules/grunt-simple-mocha/node_modules/mocha/node_modules/commander/package.json
+++ 
b/node_modules/grunt-simple-mocha/node_modules/mocha/node_modules/commander/package.json
@@ -66,5 +66,6 @@
     "tarball": "http://registry.npmjs.org/commander/-/commander-2.3.0.tgz";
   },
   "directories": {},
-  "_resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz";
+  "_resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz";,
+  "readme": "ERROR: No README data found!"
 }
diff --git 
a/node_modules/grunt-simple-mocha/node_modules/mocha/node_modules/mkdirp/package.json
 
b/node_modules/grunt-simple-mocha/node_modules/mocha/node_modules/mkdirp/package.json
index 54d87e7..a915c51 100644
--- 
a/node_modules/grunt-simple-mocha/node_modules/mocha/node_modules/mkdirp/package.json
+++ 
b/node_modules/grunt-simple-mocha/node_modules/mocha/node_modules/mkdirp/package.json
@@ -39,7 +39,7 @@
     "shasum": "1d73076a6df986cd9344e15e71fcc05a4c9abf12",
     "tarball": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz";
   },
-  "_from": "mkdirp@>=0.5.0 <0.6.0",
+  "_from": "mkdirp@0.5.0",
   "_npmVersion": "1.4.3",
   "_npmUser": {
     "name": "substack",
diff --git a/node_modules/grunt/node_modules/dateformat/package.json 
b/node_modules/grunt/node_modules/dateformat/package.json
index 47cf725..288716e 100644
--- a/node_modules/grunt/node_modules/dateformat/package.json
+++ b/node_modules/grunt/node_modules/dateformat/package.json
@@ -36,7 +36,7 @@
   "scripts": {},
   "directories": {},
   "_shasum": "b0220c02de98617433b72851cf47de3df2cdbee9",
-  "_from": "dateformat@1.0.2-1.2.3",
   "_resolved": 
"https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz";,
+  "_from": "dateformat@1.0.2-1.2.3",
   "readme": "ERROR: No README data found!"
 }
diff --git 
a/node_modules/grunt/node_modules/findup-sync/node_modules/lodash/package.json 
b/node_modules/grunt/node_modules/findup-sync/node_modules/lodash/package.json
index 85045f1..44f3f21 100644
--- 
a/node_modules/grunt/node_modules/findup-sync/node_modules/lodash/package.json
+++ 
b/node_modules/grunt/node_modules/findup-sync/node_modules/lodash/package.json
@@ -127,5 +127,6 @@
   "directories": {},
   "_shasum": "5b7723034dda4d262e5a46fb2c58d7cc22f71420",
   "_resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.1.tgz";,
-  "readme": "ERROR: No README data found!"
+  "readme": "ERROR: No README data found!",
+  "scripts": {}
 }
diff --git 
a/node_modules/grunt/node_modules/grunt-legacy-log/node_modules/lodash/package.json
 
b/node_modules/grunt/node_modules/grunt-legacy-log/node_modules/lodash/package.json
index 85045f1..44f3f21 100644
--- 
a/node_modules/grunt/node_modules/grunt-legacy-log/node_modules/lodash/package.json
+++ 
b/node_modules/grunt/node_modules/grunt-legacy-log/node_modules/lodash/package.json
@@ -127,5 +127,6 @@
   "directories": {},
   "_shasum": "5b7723034dda4d262e5a46fb2c58d7cc22f71420",
   "_resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.1.tgz";,
-  "readme": "ERROR: No README data found!"
+  "readme": "ERROR: No README data found!",
+  "scripts": {}
 }
diff --git a/node_modules/grunt/package.json b/node_modules/grunt/package.json
index d3ffc10..2e76065 100644
--- a/node_modules/grunt/package.json
+++ b/node_modules/grunt/package.json
@@ -100,5 +100,6 @@
   ],
   "directories": {},
   "_shasum": "56937cd5194324adff6d207631832a9d6ba4e7f0",
-  "_resolved": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz";
+  "_resolved": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz";,
+  "readme": "ERROR: No README data found!"
 }
diff --git a/node_modules/html-metadata/.jshintignore 
b/node_modules/html-metadata/.jshintignore
new file mode 100644
index 0000000..1c69eee
--- /dev/null
+++ b/node_modules/html-metadata/.jshintignore
@@ -0,0 +1,3 @@
+coverage
+node_modules
+test
diff --git a/node_modules/html-metadata/.jshintrc 
b/node_modules/html-metadata/.jshintrc
new file mode 100644
index 0000000..1a71ddb
--- /dev/null
+++ b/node_modules/html-metadata/.jshintrc
@@ -0,0 +1,22 @@
+{
+       "bitwise": true,
+       "laxbreak": true,
+       "curly": true,
+       "eqeqeq": true,
+       "immed": true,
+       "latedef": "nofunc",
+       "newcap": true,
+       "noarg": true,
+       "noempty": true,
+       "nonew": true,
+       "regexp": false,
+       "undef": true,
+       "strict": true,
+       "trailing": true,
+       "smarttabs": true,
+       "multistr": true,
+       "node": true,
+       "nomen": false,
+       "loopfunc": true,
+       "esnext": true
+}
diff --git a/node_modules/html-metadata/.npmignore 
b/node_modules/html-metadata/.npmignore
new file mode 100644
index 0000000..df9af16
--- /dev/null
+++ b/node_modules/html-metadata/.npmignore
@@ -0,0 +1,3 @@
+coverage
+node_modules
+npm-debug.log
diff --git a/node_modules/html-metadata/index.js 
b/node_modules/html-metadata/index.js
index 4876d0d..6fd96fa 100644
--- a/node_modules/html-metadata/index.js
+++ b/node_modules/html-metadata/index.js
@@ -3,6 +3,8 @@
  * https://github.com/wikimedia/html-metadata
  */
 
+'use strict';
+
 var async = require('async'),
        cheerio = require('cheerio'),
        request = require('request'),
@@ -11,7 +13,7 @@
 // Default exported function
 exports = module.exports = function(urlOrOpts, callback){
        request(urlOrOpts, function(error, response, html){
-               chtml = cheerio.load(html);
+               var chtml = cheerio.load(html);
                exports.parseAll(chtml, function(err, results){
                        callback(err, results);
                });
@@ -40,7 +42,7 @@
                                // Merge results into larger object
                                for (var key in results){
                                        merged = allMetadata[key];
-                                       value = results[key];
+                                       var value = results[key];
 
                                        if (!merged){
                                                merged = [];
@@ -178,9 +180,9 @@
                }
 
                // If the element isn't in namespace, exit
-               if (!typeof namespace.indexOf(propertyValue[0]) === 
'number'){return; }
+               if (typeof namespace.indexOf(propertyValue[0]) !== 
'number'){return; }
 
-               content = element.attr('content');
+               var content = element.attr('content');
 
                if (propertyValue.length === 2){
                        property = propertyValue[1]; // Set property to value 
after namespace
@@ -260,7 +262,7 @@
                scrape = exports;
 
        console.log('Parser running on test file');
-       $ = cheerio.load(fs.readFileSync('./test_files/turtle_movie.html'));
+       var $ = cheerio.load(fs.readFileSync('./test_files/turtle_movie.html'));
        exports.parseAll($, function(err, results){
                console.log(JSON.stringify(results));
        });
diff --git 
a/node_modules/html-metadata/node_modules/microdata-node/node_modules/htmlparser2/package.json
 
b/node_modules/html-metadata/node_modules/microdata-node/node_modules/htmlparser2/package.json
index c3374b0..7596b24 100644
--- 
a/node_modules/html-metadata/node_modules/microdata-node/node_modules/htmlparser2/package.json
+++ 
b/node_modules/html-metadata/node_modules/microdata-node/node_modules/htmlparser2/package.json
@@ -75,7 +75,7 @@
   "homepage": "https://github.com/fb55/htmlparser2";,
   "_id": "htmlparser2@3.8.2",
   "_shasum": "0d6bc3471d01e9766fc2c274cbac1d55b36c009c",
-  "_from": "htmlparser2@>=3.8.0 <3.9.0",
+  "_from": "htmlparser2@>=3.8.1 <3.9.0",
   "_npmVersion": "2.1.5",
   "_nodeVersion": "0.10.32",
   "_npmUser": {
diff --git a/node_modules/html-metadata/package.json 
b/node_modules/html-metadata/package.json
index bf129d8..7ebb095 100644
--- a/node_modules/html-metadata/package.json
+++ b/node_modules/html-metadata/package.json
@@ -1,6 +1,6 @@
 {
   "name": "html-metadata",
-  "version": "0.1.0",
+  "version": "0.1.1",
   "description": "Scrapes metadata of several different standards",
   "main": "index.js",
   "dependencies": {
@@ -9,8 +9,15 @@
     "microdata-node": "0.1.2",
     "request": "2.49.0"
   },
+  "devDependencies": {
+    "mocha": "~1.x.x",
+    "mocha-jshint": "0.0.9",
+    "istanbul": "0.3.5",
+    "mocha-lcov-reporter": "0.0.1"
+  },
   "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
+    "test": "mocha",
+    "coverage": "istanbul cover _mocha -- -R spec"
   },
   "keywords": [
     "open graph",
@@ -32,12 +39,12 @@
     "url": "https://github.com/wikimedia/html-metadata/issues";
   },
   "homepage": "https://github.com/wikimedia/html-metadata";,
-  "_id": "html-metadata@0.1.0",
+  "_id": "html-metadata@0.1.1",
   "dist": {
-    "shasum": "7891ddba1c8189da94a0a59d4c553ad3bab27703",
-    "tarball": 
"http://registry.npmjs.org/html-metadata/-/html-metadata-0.1.0.tgz";
+    "shasum": "7b9f7db93f5e14fac4e51b292c6fb12a68447bfc",
+    "tarball": 
"http://registry.npmjs.org/html-metadata/-/html-metadata-0.1.1.tgz";
   },
-  "_from": "html-metadata@0.1.0",
+  "_from": "html-metadata@0.1.1",
   "_npmVersion": "1.4.3",
   "_npmUser": {
     "name": "mvolz",
@@ -50,7 +57,7 @@
     }
   ],
   "directories": {},
-  "_shasum": "7891ddba1c8189da94a0a59d4c553ad3bab27703",
-  "_resolved": 
"https://registry.npmjs.org/html-metadata/-/html-metadata-0.1.0.tgz";,
+  "_shasum": "7b9f7db93f5e14fac4e51b292c6fb12a68447bfc",
+  "_resolved": 
"https://registry.npmjs.org/html-metadata/-/html-metadata-0.1.1.tgz";,
   "readme": "ERROR: No README data found!"
 }
diff --git a/node_modules/html-metadata/test/index.js 
b/node_modules/html-metadata/test/index.js
new file mode 100644
index 0000000..a82a854
--- /dev/null
+++ b/node_modules/html-metadata/test/index.js
@@ -0,0 +1,33 @@
+'use strict';
+
+var meta = require('../index');
+var cheerio = require('cheerio');
+var request = require('request');
+
+// Run jshint as part of normal testing
+require('mocha-jshint')();
+
+// mocha defines to avoid JSHint breakage
+/* global describe, it, before, beforeEach, after, afterEach */
+
+describe('scraping', function() {
+
+       var url = 
'http://fortune.com/2015/02/20/nobel-prize-economics-for-sale/';
+
+       it('should get OpenGraph info', function(done) {
+               request(url, function(error, response) {
+                       var ch = cheerio.load(response.body);
+                       meta.parseOpenGraph(ch, function(res) {
+                               // check for some properties
+                               ['title', 'description', 
'author'].forEach(function(key) {
+                                       if(!res[key]) {
+                                               throw new Error('Expected to 
find the ' + key + ' key in the reponse!');
+                                       }
+                               });
+                               done();
+                       });
+               });
+       });
+
+});
+
diff --git a/node_modules/node-txstatsd/package.json 
b/node_modules/node-txstatsd/package.json
index 6648d11..5074d5a 100644
--- a/node_modules/node-txstatsd/package.json
+++ b/node_modules/node-txstatsd/package.json
@@ -43,5 +43,7 @@
     "tarball": 
"http://registry.npmjs.org/node-txstatsd/-/node-txstatsd-0.1.5.tgz";
   },
   "directories": {},
-  "_resolved": 
"https://registry.npmjs.org/node-txstatsd/-/node-txstatsd-0.1.5.tgz";
+  "_resolved": 
"https://registry.npmjs.org/node-txstatsd/-/node-txstatsd-0.1.5.tgz";,
+  "readme": "ERROR: No README data found!",
+  "homepage": "https://github.com/wikimedia/node-txstatsd";
 }
diff --git a/node_modules/path/package.json b/node_modules/path/package.json
index 084ec9e..d6788f2 100644
--- a/node_modules/path/package.json
+++ b/node_modules/path/package.json
@@ -43,5 +43,9 @@
   "scripts": {},
   "_shasum": "380c68d01273e43f9368d7ad50fee5e3e8d477f0",
   "_resolved": "https://registry.npmjs.org/path/-/path-0.4.9.tgz";,
-  "_from": "path@0.4.9"
+  "_from": "path@0.4.9",
+  "bugs": {
+    "url": "https://github.com/coolaj86/nodejs-libs-4-browser/issues";
+  },
+  "readme": "ERROR: No README data found!"
 }
diff --git 
a/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/package.json
 
b/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/package.json
index 15d6b42..235833b 100644
--- 
a/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/package.json
+++ 
b/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/package.json
@@ -32,7 +32,7 @@
     "shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1",
     "tarball": "http://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz";
   },
-  "_from": "inherits@>=2.0.1 <2.1.0",
+  "_from": "inherits@>=2.0.0 <3.0.0",
   "_npmVersion": "1.3.8",
   "_npmUser": {
     "name": "isaacs",
diff --git 
a/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/package.json
 
b/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/package.json
index cbafd00..3324a13 100644
--- 
a/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/package.json
+++ 
b/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/package.json
@@ -33,8 +33,8 @@
   "scripts": {},
   "directories": {},
   "_shasum": "d4b1f43a93e8296dfe02694f4680bc37a313c73f",
-  "_from": "delayed-stream@0.0.5",
   "_resolved": 
"https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz";,
+  "_from": "delayed-stream@0.0.5",
   "bugs": {
     "url": "https://github.com/felixge/node-delayed-stream/issues";
   },
diff --git 
a/node_modules/request/node_modules/http-signature/node_modules/asn1/package.json
 
b/node_modules/request/node_modules/http-signature/node_modules/asn1/package.json
index ad8294e..8c68193 100644
--- 
a/node_modules/request/node_modules/http-signature/node_modules/asn1/package.json
+++ 
b/node_modules/request/node_modules/http-signature/node_modules/asn1/package.json
@@ -53,8 +53,8 @@
   ],
   "directories": {},
   "_shasum": "559be18376d08a4ec4dbe80877d27818639b2df7",
-  "_from": "asn1@0.1.11",
   "_resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz";,
+  "_from": "asn1@0.1.11",
   "bugs": {
     "url": "https://github.com/mcavage/node-asn1/issues";
   },
diff --git 
a/node_modules/request/node_modules/http-signature/node_modules/ctype/package.json
 
b/node_modules/request/node_modules/http-signature/node_modules/ctype/package.json
index 2d6990c..30321c9 100644
--- 
a/node_modules/request/node_modules/http-signature/node_modules/ctype/package.json
+++ 
b/node_modules/request/node_modules/http-signature/node_modules/ctype/package.json
@@ -33,8 +33,8 @@
   ],
   "directories": {},
   "_shasum": "82c18c2461f74114ef16c135224ad0b9144ca12f",
-  "_from": "ctype@0.5.3",
   "_resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz";,
+  "_from": "ctype@0.5.3",
   "bugs": {
     "url": "https://github.com/rmustacc/node-ctype/issues";
   },
diff --git a/src b/src
index 6152c80..b32713b 160000
--- a/src
+++ b/src
-Subproject commit 6152c80c5ca28022ac0e4aed0003139e6ebf6efe
+Subproject commit b32713ba196a25a763eb65cbcff24e93bd1a7ede

-- 
To view, visit https://gerrit.wikimedia.org/r/198648
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I601f005da53d845194280d9026b21031ef8e938c
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/citoid/deploy
Gerrit-Branch: master
Gerrit-Owner: Mobrovac <mobro...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to