"use strict";
							 | 
						|
								
							 | 
						|
								var BOMChar = '\uFEFF';
							 | 
						|
								
							 | 
						|
								exports.PrependBOM = PrependBOMWrapper
							 | 
						|
								function PrependBOMWrapper(encoder, options) {
							 | 
						|
								    this.encoder = encoder;
							 | 
						|
								    this.addBOM = true;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								PrependBOMWrapper.prototype.write = function(str) {
							 | 
						|
								    if (this.addBOM) {
							 | 
						|
								        str = BOMChar + str;
							 | 
						|
								        this.addBOM = false;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    return this.encoder.write(str);
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								PrependBOMWrapper.prototype.end = function() {
							 | 
						|
								    return this.encoder.end();
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								//------------------------------------------------------------------------------
							 | 
						|
								
							 | 
						|
								exports.StripBOM = StripBOMWrapper;
							 | 
						|
								function StripBOMWrapper(decoder, options) {
							 | 
						|
								    this.decoder = decoder;
							 | 
						|
								    this.pass = false;
							 | 
						|
								    this.options = options || {};
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								StripBOMWrapper.prototype.write = function(buf) {
							 | 
						|
								    var res = this.decoder.write(buf);
							 | 
						|
								    if (this.pass || !res)
							 | 
						|
								        return res;
							 | 
						|
								
							 | 
						|
								    if (res[0] === BOMChar) {
							 | 
						|
								        res = res.slice(1);
							 | 
						|
								        if (typeof this.options.stripBOM === 'function')
							 | 
						|
								            this.options.stripBOM();
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    this.pass = true;
							 | 
						|
								    return res;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								StripBOMWrapper.prototype.end = function() {
							 | 
						|
								    return this.decoder.end();
							 | 
						|
								}
							 | 
						|
								
							 |