Last active
January 2, 2023 01:38
-
-
Save animetosho/e1f26ea6f213f8808d1cabebbb91460e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"use strict"; | |
// arguments: | |
// dummy-nntp-server.js [-S] [-d=delay|0] [port/socket|119/563] | |
const DEBUG = false; | |
var delay = 0; // in miliseconds | |
var y; | |
var junkArticle, junkArticleCrc, junkFileCrc; | |
try { | |
y = require('yencode'); | |
} catch(x) { | |
console.log('Could not load yencode - non-random article will be served'); | |
} | |
junkArticle = new Buffer(768000); | |
junkArticle.fill(64); | |
if(y) { | |
var cipher = require('crypto').createCipher('rc4', 'gimme somewhat random data'); | |
var rand = Buffer.concat([cipher.update(junkArticle), cipher.final()]).slice(0, 768000); | |
junkArticleCrc = y.crc32(rand); | |
junkArticle = y.encode(rand); | |
junkFileCrc = junkArticleCrc; | |
for(var i=1; i<256; i++) | |
junkFileCrc = y.crc32_combine(junkFileCrc, junkArticleCrc, 768000); | |
junkArticleCrc = junkArticleCrc.toString('hex'); | |
junkFileCrc = junkFileCrc.toString('hex'); | |
} else { | |
// can't yEnc, just do the best we can... | |
junkArticleCrc = 'c1727bea'; | |
junkFileCrc = '645b7755'; | |
} | |
// simple dummy NNTP server | |
function NNTPServer(opts) { | |
this.opts = opts || {}; | |
this.server = require(opts && opts.ssl ? 'tls' : 'net').createServer(opts.opts||{}, function(c) { | |
new NNTPConnection(c); | |
}); | |
} | |
NNTPServer.prototype = { | |
listen: function(port, cb) { | |
this.server.listen(port, cb); | |
}, | |
address: function() { | |
return this.server.address(); | |
}, | |
close: function(cb) { | |
this.server.close(cb); | |
} | |
}; | |
function NNTPConnection(conn) { | |
this.dataQueue = ''; | |
this.conn = conn; | |
this.write('200 host test server\r\n'); | |
conn.on('data', this.onData.bind(this)); | |
var self = this; | |
conn.on('end', function() { | |
self.write = function(){}; // disable writing after close | |
}); | |
conn.on('error', function(err) { | |
if(err.code == 'ERR_STREAM_WRITE_AFTER_END') return; // ignore these | |
console.log('Test server error:', err); | |
}); | |
} | |
var postCounter = 0; | |
NNTPConnection.prototype = { | |
postMode: false, | |
postBuf: null, | |
group: '', | |
_writeDelayed: function(data) { | |
setTimeout(this.conn.write.bind(this.conn, data), delay); | |
}, | |
write: function(data) { | |
this.conn.write(data); | |
}, | |
onData: function(chunk) { | |
// grab incomming lines | |
if(this.postMode) { | |
return this.onPostData(chunk); | |
} | |
this.dataQueue += chunk.toString(); | |
var p; | |
while((p = this.dataQueue.indexOf('\n')) >= 0) { | |
var line = this.dataQueue.substr(0, p).trim(); | |
this.dataQueue = this.dataQueue.substr(p+1); | |
var m = line.match(/^([A-Za-z]+) ?/); | |
if(!m) throw new Error('Unexpected message format: ' + line); | |
this.onRequest(m[1].toUpperCase(), line.substr(m[0].length)); | |
if(this.postMode && this.dataQueue.length) { | |
return this.onPostData(new Buffer(this.dataQueue)); | |
} | |
} | |
}, | |
onPostData: function(data) { | |
/* | |
var p = data.indexOf('\r\n.\r\n'); | |
if(p >= 0) { | |
// post received | |
this.write('240 <' + (postCounter++) + '> Article received ok\r\n'); | |
this.postMode = false; | |
return this.onData(data.slice(p+5)); | |
} | |
*/ | |
if(!data.length) return; | |
var slicePos = 0; | |
if(this.postBuf) { | |
var tmp = Buffer.concat([this.postBuf, data.slice(0, 4)]); | |
var p = tmp.indexOf('\r\n.\r\n'); | |
if(p >= 0) { | |
slicePos = p - this.postBuf.length + 5; | |
} | |
} | |
if(!slicePos) { | |
var p = data.indexOf('\r\n.\r\n'); | |
if(p >= 0) { | |
slicePos = p+5; | |
} | |
} | |
if(slicePos) { | |
// post received | |
this.write('240 <' + (postCounter++) + '> Article received ok\r\n'); | |
this.postBuf = null; | |
this.dataQueue = []; | |
this.postMode = false; | |
return this.onData(data.slice(slicePos)); | |
} | |
if(data.length < 4) { | |
if(this.postBuf) { | |
this.postBuf = Buffer.concat([this.postBuf, data]); | |
if(this.postBuf.length > 4) | |
this.postBuf = this.postBuf.slice(this.postBuf.length - 4); | |
} else | |
this.postBuf = data; | |
} else { | |
this.postBuf = data.slice(data.length-4); | |
} | |
}, | |
sendArticle: function(id, part, head, body) { | |
var chunks = []; | |
// handle 256*750KB parts per file (=187.5MB) | |
var realPart = (part & 0xff) + 1; | |
if(head) { | |
chunks.push(new Buffer([ | |
'Path: pathost!demo!whitehouse!not-for-mail', | |
'From: "Demo User" <[email protected]>', | |
'Newsgroups: '+this.group, | |
'Subject: "'+id+'" yEnc ('+realPart+'/256)', | |
'Date: 6 Oct 1998 04:38:40 -0500', | |
'Message-ID: <' + id + '.' + part + '>', | |
body ? '' : '.', | |
'' | |
].join('\r\n'))); | |
} | |
if(body) { | |
var endPos = realPart*768000; | |
chunks.push( | |
new Buffer('=ybegin part='+realPart+' total=256 line=128 size=196608000 name='+id | |
+'\r\n=ypart begin='+(endPos-768000+1)+' end='+endPos+'\r\n'), | |
junkArticle, | |
new Buffer('\r\n=yend size=768000 part='+realPart+' pcrc32='+junkArticleCrc+' crc32='+junkFileCrc + '\r\n.\r\n') | |
); | |
} | |
// TODO: writev to socket? | |
this.write(Buffer.concat(chunks)); | |
}, | |
onRequest: function(req, data) { | |
switch(req) { | |
case 'AUTHINFO': | |
var m; | |
if(m = data.match(/^(USER|PASS) (.*)$/i)) { | |
// accept any user/pass | |
if(m[1].toUpperCase() == 'USER') { | |
this.write('381 Give AUTHINFO PASS command\r\n'); | |
} else { | |
this.write('281 User logged in\r\n'); | |
} | |
} else { | |
throw new Error('Command AUTHINFO ' + data + ' not supported'); | |
} | |
break; | |
case 'DATE': | |
this.write('111 20101122013344\r\n'); | |
break; | |
case 'STAT': | |
this.write('223 0 <abc> article retrieved - request text separately\r\n'); | |
break; | |
case 'GROUP': | |
this.group = data; | |
this.write('211 0 1 0\r\n'); | |
break; | |
case 'MODE': // assume MODE READER | |
this.write('200 Posting allowed\r\n'); | |
break; | |
case 'POST': | |
if(data != 'READER') { // sent by Sanguinews - doesn't seem to be valid in NNTP spec... | |
if(data) throw new Error('Unexpected POST params: ' + data); | |
} | |
this.postMode = true; | |
this.write('340 Send article\r\n'); | |
break; | |
case 'ARTICLE': | |
case 'HEAD': | |
case 'BODY': | |
var m; | |
if(!data) | |
this.write('420 Invalid article\r\n'); | |
else if(m = data.match(/^\<(.*)\.([0-9]+)\>$/)) { | |
this.write({ARTICLE:220, HEAD:221, BODY:222}[req] + ' 0 ' + data + '\r\n'); | |
this.sendArticle(m[1], m[2], req != 'BODY', req != 'HEAD'); | |
} else | |
this.write('423 Invalid article\r\n'); | |
break; | |
case 'QUIT': | |
this.write('205 bye\r\n'); | |
this.conn.end(); | |
break; | |
default: | |
throw new Error('Command ' + req + ' ' + data + ' not supported'); | |
} | |
} | |
}; | |
if(DEBUG) { | |
NNTPConnection.prototype._onPostData = NNTPConnection.prototype.onPostData; | |
NNTPConnection.prototype.onPostData = function(data) { | |
console.log('< [' + data.length + ' bytes recieved]'); | |
return this._onPostData(data); | |
}; | |
NNTPConnection.prototype._onRequest = NNTPConnection.prototype.onRequest; | |
NNTPConnection.prototype.onRequest = function(req, data) { | |
console.log('< ' + req + ' ' + data); | |
return this._onRequest(req, data); | |
}; | |
NNTPConnection.prototype._write = NNTPConnection.prototype.write; | |
NNTPConnection.prototype.write = function(data) { | |
console.log('> ' + data.replace(/[\r\n]/g, '')); | |
return this._write(data); | |
}; | |
} | |
// Run the server | |
var cluster = require('cluster'); | |
if (cluster.isMaster) { | |
// Fork workers. | |
//var numCPUs = require('os').cpus().length; | |
var numCPUs = 2; | |
for (var i = 0; i < numCPUs; i++) { | |
cluster.fork(); | |
} | |
cluster.on('exit', function(worker, code, signal) { | |
console.log('worker ' + worker.process.pid + ' died'); | |
}); | |
} else { | |
var fs = require('fs'); | |
var argv = process.argv; | |
var port; | |
var opts = {}; | |
argv.shift(); | |
argv.shift(); | |
if(argv[0] == '-S') { | |
opts.ssl = true; | |
opts.opts = { | |
key: new Buffer(`-----BEGIN PRIVATE KEY----- | |
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDC3ksN0uSU2CN1 | |
5pU3D0Ne0sXF/ag+UXm5anDRolEY0PtN1tRCTc0ImLKllMPk+17lK2vIB4ZmcYxr | |
nBl8bsU1XEONXIlmrnGxGqVBuwCcMgra19XaoO2N76p/JCPSKrxW7gxDNXsdVhLt | |
3CTTW/xIrTLN2gsaH4mfiKkBX0LcP3uyC7YTxUQP1xeNA7/CM4hU+5IcO6ALo5jc | |
hDV7OMJGLe749dIIew157H13hzZ/Due/xgpzFYCJNbDUdWXqzyJmqIW5A0cbIALg | |
q3wngIFuHMD0/O7R0uR6OUPLQ5ZfY9+s9ATuTnE78XciW+jFa8qmrVequCq3BUpa | |
7fFJx4FPAgMBAAECggEBAJv/ODYozbQaEskfffRF07jlIk4NcdHxh3BXNVmchy9G | |
nOcDQ4iQn8Jx+xFyth9o2965k97dp0n7PF4o6H4kbtr4sVtI6PW6UGlm20RzX1mq | |
9eWbQydyDLnDUsnVNJfafktY5ZgoCBbEAQNJaHGLAbtsa28/TgPrm1CLJkBi8jM9 | |
dy6Me9dsDcbMRbHCIMHBT+jrUnUG5TnoYccem3paNmO8w7ncmZNbJoToSqSIYb9q | |
4J92d+fgX/66KaUyOaXcOrYuX0mTaEZEZ9hLlZnArFUsijDbyP+g12UKXO6RVzlW | |
AL7GfekOGwJaOvm2ur6sKD3v8t5c+TDk6uTCMd6BWYECgYEA+KUh+snznvt9c4fD | |
nWJ03GuDBECOZPPZYDED6/yzr8bYWO4NZ0bnxKshVRVN18LqAadZ6wm2VVzOoug+ | |
166RQy3+MUPgHOjxXoYanZWBA8a7+Tc30QSv6K6cvsQ6oq5bnOJBH6b5rY6t+2Gu | |
XzZEFMd3lWWZPhOAwRtpREll/pMCgYEAyKHviU2HI2MTjHPDXKze1E29R9NG+9mn | |
4/au4j0RNXviPIoCKgjBJJTylitTBnmQj4pfrFc38BOumyi9UIS+EHkv4qrClHvS | |
Ipz9KpZC6nVeSPbP16Lt8CJDbd/Z2IxaCCLOtKRBxdxQ2MvBgI3zSj0XYnuxvfY0 | |
sDy4y8I4K9UCgYBBh4PFDKRgKfeOEyHCwMf7r3oADON6R6nqaACYmSjiEo3CIjr2 | |
FQHQGynVup+hVYVGmkxgXVboeGUdGgg135P5GI39fd36wImcV8t77ILr89xmed8D | |
/zA9Koe03xJ0/W63kgmHxgHXc9r2fW/vN+YJc+hYP0Z7zbgJLKg5jv6KcQKBgB3S | |
G/VvhY+X8Vbl+fqzYydxKpobaCiU8GRszQ+pff5SHI1dAfdXd8XFMc1qQRvsQ7Vi | |
HthR2mmfs0syofju0gVGzfxF30gMo24roWGMFgQdT9dOgBQQDoerwBP7urh6HAOr | |
kMe+xlvvZEDlACzobGnzbJ9hvUh76NbtH5aBlrHFAoGAI6lHTuDuma2glymbTFBx | |
n0we8xkmHOQ8wkFHHh9AG+BWc451+VK1KrxzRNshFyk2bV78zm5L5juMbOGsaKL2 | |
7SIHVuZPdFOSeiWiZacdwfVMJaRET8G3uSrVSHzutQAkOIxp0lAbSW0FabF12NqX | |
9J0RH794AZh9QnJDgqgfrMk= | |
-----END PRIVATE KEY-----`), | |
cert: new Buffer(`-----BEGIN CERTIFICATE----- | |
MIICsjCCAZqgAwIBAgIJAP/ow1pGKqFyMA0GCSqGSIb3DQEBCwUAMBExDzANBgNV | |
BAMMBnVidW50dTAeFw0xNjA1MDUxMDQ2NTRaFw0yNjA1MDMxMDQ2NTRaMBExDzAN | |
BgNVBAMMBnVidW50dTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMLe | |
Sw3S5JTYI3XmlTcPQ17SxcX9qD5ReblqcNGiURjQ+03W1EJNzQiYsqWUw+T7XuUr | |
a8gHhmZxjGucGXxuxTVcQ41ciWaucbEapUG7AJwyCtrX1dqg7Y3vqn8kI9IqvFbu | |
DEM1ex1WEu3cJNNb/EitMs3aCxofiZ+IqQFfQtw/e7ILthPFRA/XF40Dv8IziFT7 | |
khw7oAujmNyENXs4wkYt7vj10gh7DXnsfXeHNn8O57/GCnMVgIk1sNR1ZerPImao | |
hbkDRxsgAuCrfCeAgW4cwPT87tHS5Ho5Q8tDll9j36z0BO5OcTvxdyJb6MVryqat | |
V6q4KrcFSlrt8UnHgU8CAwEAAaMNMAswCQYDVR0TBAIwADANBgkqhkiG9w0BAQsF | |
AAOCAQEArFDaYJAglNQr6/TgtZEmB1P7579B104c2vBM03ESibHvSFdw7O5urtRk | |
0d4GlbhoAByIBJw4h2F5M4M96CRo4Sr9tETW0uC9a9weLWRQcSi8cwCXCfDNOAs+ | |
+EbKVhU865veQWvOgBRyWfrPLFixnbFzIHJjJ5I1B9M10jD2fc19asRDQ8ofxjhs | |
BfddQnOKa/jpHy7uzEh58ja+Ton4QNcP/YDfs2YdpSiGEi6CsErBwlsUdlDDyZ14 | |
azBRuO45h8bPEAPRMXX2ixppx7124Pzjz1jfkse2kkdkRO67kmEj/i2IG2H2lqjJ | |
3xHoEnsHoeVeBhbJjD9H5Q56YYvOaQ== | |
-----END CERTIFICATE-----`) | |
}; | |
argv.shift(); | |
} | |
if(argv[0] && argv[0].startsWith('-d')) { | |
delay = argv.shift().substr(3); | |
NNTPConnection.prototype.write = DEBUG ? function(data) { | |
if(Buffer.isBuffer(data)) | |
console.log('> [' + data.length + ' bytes]'); | |
else | |
console.log('> ' + data.toString().replace(/[\r\n]/g, '')); | |
this._writeDelayed(data); | |
} : NNTPConnection.prototype._writeDelayed; | |
} | |
if(argv[0]) { | |
port = argv.shift(); | |
if(/^\d+$/.test(port)) | |
port |= 0; // numeric port (not socket) | |
else { | |
/* problem with auto delete + cluster because second process will delete first's socket, so need to manually handle this or fix it later | |
try { | |
fs.unlinkSync(port); | |
} catch(x) {} | |
*/ | |
} | |
} else { | |
port = opts.ssl ? 563 : 119; | |
} | |
var srv = new NNTPServer(opts); | |
// if the following line gives an EACCESS error when not running as root, try a port > 1024 | |
srv.listen(port, function(err) { | |
if(err) throw err; | |
var addr = srv.address(); | |
if(addr.port) addr = addr.port; | |
console.log('Server listening on ' + addr) | |
}); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="iso-8859-1" ?> | |
<!DOCTYPE nzb PUBLIC "-//newzBin//DTD NZB 1.1//EN" "http://www.newzbin.com/DTD/nzb/nzb-1.1.dtd"> | |
<nzb xmlns="http://www.newzbin.com/DTD/2003/nzb"> | |
<!-- copy/paste the following (changing the file name) for more files --> | |
<file poster="Joe Bloggs <[email protected]>" date="1071674882" subject=""bigfile.001" yEnc (1/256)"> | |
<groups> | |
<group>alt.binaries.test</group> | |
</groups> | |
<segments> | |
<segment bytes="768000" number="1">bigfile.001.0</segment> | |
<segment bytes="768000" number="2">bigfile.001.1</segment> | |
<segment bytes="768000" number="3">bigfile.001.2</segment> | |
<segment bytes="768000" number="4">bigfile.001.3</segment> | |
<segment bytes="768000" number="5">bigfile.001.4</segment> | |
<segment bytes="768000" number="6">bigfile.001.5</segment> | |
<segment bytes="768000" number="7">bigfile.001.6</segment> | |
<segment bytes="768000" number="8">bigfile.001.7</segment> | |
<segment bytes="768000" number="9">bigfile.001.8</segment> | |
<segment bytes="768000" number="10">bigfile.001.9</segment> | |
<segment bytes="768000" number="11">bigfile.001.10</segment> | |
<segment bytes="768000" number="12">bigfile.001.11</segment> | |
<segment bytes="768000" number="13">bigfile.001.12</segment> | |
<segment bytes="768000" number="14">bigfile.001.13</segment> | |
<segment bytes="768000" number="15">bigfile.001.14</segment> | |
<segment bytes="768000" number="16">bigfile.001.15</segment> | |
<segment bytes="768000" number="17">bigfile.001.16</segment> | |
<segment bytes="768000" number="18">bigfile.001.17</segment> | |
<segment bytes="768000" number="19">bigfile.001.18</segment> | |
<segment bytes="768000" number="20">bigfile.001.19</segment> | |
<segment bytes="768000" number="21">bigfile.001.20</segment> | |
<segment bytes="768000" number="22">bigfile.001.21</segment> | |
<segment bytes="768000" number="23">bigfile.001.22</segment> | |
<segment bytes="768000" number="24">bigfile.001.23</segment> | |
<segment bytes="768000" number="25">bigfile.001.24</segment> | |
<segment bytes="768000" number="26">bigfile.001.25</segment> | |
<segment bytes="768000" number="27">bigfile.001.26</segment> | |
<segment bytes="768000" number="28">bigfile.001.27</segment> | |
<segment bytes="768000" number="29">bigfile.001.28</segment> | |
<segment bytes="768000" number="30">bigfile.001.29</segment> | |
<segment bytes="768000" number="31">bigfile.001.30</segment> | |
<segment bytes="768000" number="32">bigfile.001.31</segment> | |
<segment bytes="768000" number="33">bigfile.001.32</segment> | |
<segment bytes="768000" number="34">bigfile.001.33</segment> | |
<segment bytes="768000" number="35">bigfile.001.34</segment> | |
<segment bytes="768000" number="36">bigfile.001.35</segment> | |
<segment bytes="768000" number="37">bigfile.001.36</segment> | |
<segment bytes="768000" number="38">bigfile.001.37</segment> | |
<segment bytes="768000" number="39">bigfile.001.38</segment> | |
<segment bytes="768000" number="40">bigfile.001.39</segment> | |
<segment bytes="768000" number="41">bigfile.001.40</segment> | |
<segment bytes="768000" number="42">bigfile.001.41</segment> | |
<segment bytes="768000" number="43">bigfile.001.42</segment> | |
<segment bytes="768000" number="44">bigfile.001.43</segment> | |
<segment bytes="768000" number="45">bigfile.001.44</segment> | |
<segment bytes="768000" number="46">bigfile.001.45</segment> | |
<segment bytes="768000" number="47">bigfile.001.46</segment> | |
<segment bytes="768000" number="48">bigfile.001.47</segment> | |
<segment bytes="768000" number="49">bigfile.001.48</segment> | |
<segment bytes="768000" number="50">bigfile.001.49</segment> | |
<segment bytes="768000" number="51">bigfile.001.50</segment> | |
<segment bytes="768000" number="52">bigfile.001.51</segment> | |
<segment bytes="768000" number="53">bigfile.001.52</segment> | |
<segment bytes="768000" number="54">bigfile.001.53</segment> | |
<segment bytes="768000" number="55">bigfile.001.54</segment> | |
<segment bytes="768000" number="56">bigfile.001.55</segment> | |
<segment bytes="768000" number="57">bigfile.001.56</segment> | |
<segment bytes="768000" number="58">bigfile.001.57</segment> | |
<segment bytes="768000" number="59">bigfile.001.58</segment> | |
<segment bytes="768000" number="60">bigfile.001.59</segment> | |
<segment bytes="768000" number="61">bigfile.001.60</segment> | |
<segment bytes="768000" number="62">bigfile.001.61</segment> | |
<segment bytes="768000" number="63">bigfile.001.62</segment> | |
<segment bytes="768000" number="64">bigfile.001.63</segment> | |
<segment bytes="768000" number="65">bigfile.001.64</segment> | |
<segment bytes="768000" number="66">bigfile.001.65</segment> | |
<segment bytes="768000" number="67">bigfile.001.66</segment> | |
<segment bytes="768000" number="68">bigfile.001.67</segment> | |
<segment bytes="768000" number="69">bigfile.001.68</segment> | |
<segment bytes="768000" number="70">bigfile.001.69</segment> | |
<segment bytes="768000" number="71">bigfile.001.70</segment> | |
<segment bytes="768000" number="72">bigfile.001.71</segment> | |
<segment bytes="768000" number="73">bigfile.001.72</segment> | |
<segment bytes="768000" number="74">bigfile.001.73</segment> | |
<segment bytes="768000" number="75">bigfile.001.74</segment> | |
<segment bytes="768000" number="76">bigfile.001.75</segment> | |
<segment bytes="768000" number="77">bigfile.001.76</segment> | |
<segment bytes="768000" number="78">bigfile.001.77</segment> | |
<segment bytes="768000" number="79">bigfile.001.78</segment> | |
<segment bytes="768000" number="80">bigfile.001.79</segment> | |
<segment bytes="768000" number="81">bigfile.001.80</segment> | |
<segment bytes="768000" number="82">bigfile.001.81</segment> | |
<segment bytes="768000" number="83">bigfile.001.82</segment> | |
<segment bytes="768000" number="84">bigfile.001.83</segment> | |
<segment bytes="768000" number="85">bigfile.001.84</segment> | |
<segment bytes="768000" number="86">bigfile.001.85</segment> | |
<segment bytes="768000" number="87">bigfile.001.86</segment> | |
<segment bytes="768000" number="88">bigfile.001.87</segment> | |
<segment bytes="768000" number="89">bigfile.001.88</segment> | |
<segment bytes="768000" number="90">bigfile.001.89</segment> | |
<segment bytes="768000" number="91">bigfile.001.90</segment> | |
<segment bytes="768000" number="92">bigfile.001.91</segment> | |
<segment bytes="768000" number="93">bigfile.001.92</segment> | |
<segment bytes="768000" number="94">bigfile.001.93</segment> | |
<segment bytes="768000" number="95">bigfile.001.94</segment> | |
<segment bytes="768000" number="96">bigfile.001.95</segment> | |
<segment bytes="768000" number="97">bigfile.001.96</segment> | |
<segment bytes="768000" number="98">bigfile.001.97</segment> | |
<segment bytes="768000" number="99">bigfile.001.98</segment> | |
<segment bytes="768000" number="100">bigfile.001.99</segment> | |
<segment bytes="768000" number="101">bigfile.001.100</segment> | |
<segment bytes="768000" number="102">bigfile.001.101</segment> | |
<segment bytes="768000" number="103">bigfile.001.102</segment> | |
<segment bytes="768000" number="104">bigfile.001.103</segment> | |
<segment bytes="768000" number="105">bigfile.001.104</segment> | |
<segment bytes="768000" number="106">bigfile.001.105</segment> | |
<segment bytes="768000" number="107">bigfile.001.106</segment> | |
<segment bytes="768000" number="108">bigfile.001.107</segment> | |
<segment bytes="768000" number="109">bigfile.001.108</segment> | |
<segment bytes="768000" number="110">bigfile.001.109</segment> | |
<segment bytes="768000" number="111">bigfile.001.110</segment> | |
<segment bytes="768000" number="112">bigfile.001.111</segment> | |
<segment bytes="768000" number="113">bigfile.001.112</segment> | |
<segment bytes="768000" number="114">bigfile.001.113</segment> | |
<segment bytes="768000" number="115">bigfile.001.114</segment> | |
<segment bytes="768000" number="116">bigfile.001.115</segment> | |
<segment bytes="768000" number="117">bigfile.001.116</segment> | |
<segment bytes="768000" number="118">bigfile.001.117</segment> | |
<segment bytes="768000" number="119">bigfile.001.118</segment> | |
<segment bytes="768000" number="120">bigfile.001.119</segment> | |
<segment bytes="768000" number="121">bigfile.001.120</segment> | |
<segment bytes="768000" number="122">bigfile.001.121</segment> | |
<segment bytes="768000" number="123">bigfile.001.122</segment> | |
<segment bytes="768000" number="124">bigfile.001.123</segment> | |
<segment bytes="768000" number="125">bigfile.001.124</segment> | |
<segment bytes="768000" number="126">bigfile.001.125</segment> | |
<segment bytes="768000" number="127">bigfile.001.126</segment> | |
<segment bytes="768000" number="128">bigfile.001.127</segment> | |
<segment bytes="768000" number="129">bigfile.001.128</segment> | |
<segment bytes="768000" number="130">bigfile.001.129</segment> | |
<segment bytes="768000" number="131">bigfile.001.130</segment> | |
<segment bytes="768000" number="132">bigfile.001.131</segment> | |
<segment bytes="768000" number="133">bigfile.001.132</segment> | |
<segment bytes="768000" number="134">bigfile.001.133</segment> | |
<segment bytes="768000" number="135">bigfile.001.134</segment> | |
<segment bytes="768000" number="136">bigfile.001.135</segment> | |
<segment bytes="768000" number="137">bigfile.001.136</segment> | |
<segment bytes="768000" number="138">bigfile.001.137</segment> | |
<segment bytes="768000" number="139">bigfile.001.138</segment> | |
<segment bytes="768000" number="140">bigfile.001.139</segment> | |
<segment bytes="768000" number="141">bigfile.001.140</segment> | |
<segment bytes="768000" number="142">bigfile.001.141</segment> | |
<segment bytes="768000" number="143">bigfile.001.142</segment> | |
<segment bytes="768000" number="144">bigfile.001.143</segment> | |
<segment bytes="768000" number="145">bigfile.001.144</segment> | |
<segment bytes="768000" number="146">bigfile.001.145</segment> | |
<segment bytes="768000" number="147">bigfile.001.146</segment> | |
<segment bytes="768000" number="148">bigfile.001.147</segment> | |
<segment bytes="768000" number="149">bigfile.001.148</segment> | |
<segment bytes="768000" number="150">bigfile.001.149</segment> | |
<segment bytes="768000" number="151">bigfile.001.150</segment> | |
<segment bytes="768000" number="152">bigfile.001.151</segment> | |
<segment bytes="768000" number="153">bigfile.001.152</segment> | |
<segment bytes="768000" number="154">bigfile.001.153</segment> | |
<segment bytes="768000" number="155">bigfile.001.154</segment> | |
<segment bytes="768000" number="156">bigfile.001.155</segment> | |
<segment bytes="768000" number="157">bigfile.001.156</segment> | |
<segment bytes="768000" number="158">bigfile.001.157</segment> | |
<segment bytes="768000" number="159">bigfile.001.158</segment> | |
<segment bytes="768000" number="160">bigfile.001.159</segment> | |
<segment bytes="768000" number="161">bigfile.001.160</segment> | |
<segment bytes="768000" number="162">bigfile.001.161</segment> | |
<segment bytes="768000" number="163">bigfile.001.162</segment> | |
<segment bytes="768000" number="164">bigfile.001.163</segment> | |
<segment bytes="768000" number="165">bigfile.001.164</segment> | |
<segment bytes="768000" number="166">bigfile.001.165</segment> | |
<segment bytes="768000" number="167">bigfile.001.166</segment> | |
<segment bytes="768000" number="168">bigfile.001.167</segment> | |
<segment bytes="768000" number="169">bigfile.001.168</segment> | |
<segment bytes="768000" number="170">bigfile.001.169</segment> | |
<segment bytes="768000" number="171">bigfile.001.170</segment> | |
<segment bytes="768000" number="172">bigfile.001.171</segment> | |
<segment bytes="768000" number="173">bigfile.001.172</segment> | |
<segment bytes="768000" number="174">bigfile.001.173</segment> | |
<segment bytes="768000" number="175">bigfile.001.174</segment> | |
<segment bytes="768000" number="176">bigfile.001.175</segment> | |
<segment bytes="768000" number="177">bigfile.001.176</segment> | |
<segment bytes="768000" number="178">bigfile.001.177</segment> | |
<segment bytes="768000" number="179">bigfile.001.178</segment> | |
<segment bytes="768000" number="180">bigfile.001.179</segment> | |
<segment bytes="768000" number="181">bigfile.001.180</segment> | |
<segment bytes="768000" number="182">bigfile.001.181</segment> | |
<segment bytes="768000" number="183">bigfile.001.182</segment> | |
<segment bytes="768000" number="184">bigfile.001.183</segment> | |
<segment bytes="768000" number="185">bigfile.001.184</segment> | |
<segment bytes="768000" number="186">bigfile.001.185</segment> | |
<segment bytes="768000" number="187">bigfile.001.186</segment> | |
<segment bytes="768000" number="188">bigfile.001.187</segment> | |
<segment bytes="768000" number="189">bigfile.001.188</segment> | |
<segment bytes="768000" number="190">bigfile.001.189</segment> | |
<segment bytes="768000" number="191">bigfile.001.190</segment> | |
<segment bytes="768000" number="192">bigfile.001.191</segment> | |
<segment bytes="768000" number="193">bigfile.001.192</segment> | |
<segment bytes="768000" number="194">bigfile.001.193</segment> | |
<segment bytes="768000" number="195">bigfile.001.194</segment> | |
<segment bytes="768000" number="196">bigfile.001.195</segment> | |
<segment bytes="768000" number="197">bigfile.001.196</segment> | |
<segment bytes="768000" number="198">bigfile.001.197</segment> | |
<segment bytes="768000" number="199">bigfile.001.198</segment> | |
<segment bytes="768000" number="200">bigfile.001.199</segment> | |
<segment bytes="768000" number="201">bigfile.001.200</segment> | |
<segment bytes="768000" number="202">bigfile.001.201</segment> | |
<segment bytes="768000" number="203">bigfile.001.202</segment> | |
<segment bytes="768000" number="204">bigfile.001.203</segment> | |
<segment bytes="768000" number="205">bigfile.001.204</segment> | |
<segment bytes="768000" number="206">bigfile.001.205</segment> | |
<segment bytes="768000" number="207">bigfile.001.206</segment> | |
<segment bytes="768000" number="208">bigfile.001.207</segment> | |
<segment bytes="768000" number="209">bigfile.001.208</segment> | |
<segment bytes="768000" number="210">bigfile.001.209</segment> | |
<segment bytes="768000" number="211">bigfile.001.210</segment> | |
<segment bytes="768000" number="212">bigfile.001.211</segment> | |
<segment bytes="768000" number="213">bigfile.001.212</segment> | |
<segment bytes="768000" number="214">bigfile.001.213</segment> | |
<segment bytes="768000" number="215">bigfile.001.214</segment> | |
<segment bytes="768000" number="216">bigfile.001.215</segment> | |
<segment bytes="768000" number="217">bigfile.001.216</segment> | |
<segment bytes="768000" number="218">bigfile.001.217</segment> | |
<segment bytes="768000" number="219">bigfile.001.218</segment> | |
<segment bytes="768000" number="220">bigfile.001.219</segment> | |
<segment bytes="768000" number="221">bigfile.001.220</segment> | |
<segment bytes="768000" number="222">bigfile.001.221</segment> | |
<segment bytes="768000" number="223">bigfile.001.222</segment> | |
<segment bytes="768000" number="224">bigfile.001.223</segment> | |
<segment bytes="768000" number="225">bigfile.001.224</segment> | |
<segment bytes="768000" number="226">bigfile.001.225</segment> | |
<segment bytes="768000" number="227">bigfile.001.226</segment> | |
<segment bytes="768000" number="228">bigfile.001.227</segment> | |
<segment bytes="768000" number="229">bigfile.001.228</segment> | |
<segment bytes="768000" number="230">bigfile.001.229</segment> | |
<segment bytes="768000" number="231">bigfile.001.230</segment> | |
<segment bytes="768000" number="232">bigfile.001.231</segment> | |
<segment bytes="768000" number="233">bigfile.001.232</segment> | |
<segment bytes="768000" number="234">bigfile.001.233</segment> | |
<segment bytes="768000" number="235">bigfile.001.234</segment> | |
<segment bytes="768000" number="236">bigfile.001.235</segment> | |
<segment bytes="768000" number="237">bigfile.001.236</segment> | |
<segment bytes="768000" number="238">bigfile.001.237</segment> | |
<segment bytes="768000" number="239">bigfile.001.238</segment> | |
<segment bytes="768000" number="240">bigfile.001.239</segment> | |
<segment bytes="768000" number="241">bigfile.001.240</segment> | |
<segment bytes="768000" number="242">bigfile.001.241</segment> | |
<segment bytes="768000" number="243">bigfile.001.242</segment> | |
<segment bytes="768000" number="244">bigfile.001.243</segment> | |
<segment bytes="768000" number="245">bigfile.001.244</segment> | |
<segment bytes="768000" number="246">bigfile.001.245</segment> | |
<segment bytes="768000" number="247">bigfile.001.246</segment> | |
<segment bytes="768000" number="248">bigfile.001.247</segment> | |
<segment bytes="768000" number="249">bigfile.001.248</segment> | |
<segment bytes="768000" number="250">bigfile.001.249</segment> | |
<segment bytes="768000" number="251">bigfile.001.250</segment> | |
<segment bytes="768000" number="252">bigfile.001.251</segment> | |
<segment bytes="768000" number="253">bigfile.001.252</segment> | |
<segment bytes="768000" number="254">bigfile.001.253</segment> | |
<segment bytes="768000" number="255">bigfile.001.254</segment> | |
<segment bytes="768000" number="256">bigfile.001.255</segment> | |
</segments> | |
</file> | |
</nzb> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment