@primafuture/systemd-tasks 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -0
- package/README.md +86 -8
- package/THIRD_PARTY_NOTICES.md +1 -1
- package/dist/guardian.mjs +212 -0
- package/dist/guardian.mjs.map +1 -0
- package/dist/index.cjs +9 -13287
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -316
- package/dist/index.d.ts +1 -316
- package/dist/index.mjs +2 -13304
- package/dist/index.mjs.map +1 -1
- package/dist/observed.cjs +35 -0
- package/dist/observed.cjs.map +1 -0
- package/dist/observed.d.cts +1 -0
- package/dist/observed.d.ts +1 -0
- package/dist/observed.mjs +8 -0
- package/dist/observed.mjs.map +1 -0
- package/dist/runtime.cjs +14229 -0
- package/dist/runtime.cjs.map +1 -0
- package/dist/runtime.d.cts +467 -0
- package/docs/implementation-decisions.md +137 -0
- package/package.json +27 -7
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../node_modules/jsbi/dist/jsbi.mjs","../node_modules/dbus-next/lib/constants.js","../node_modules/dbus-next/lib/variant.js","../node_modules/dbus-next/lib/validators.js","../node_modules/dbus-next/lib/message-type.js","../node_modules/dbus-next/lib/signature.js","../node_modules/dbus-next/lib/service/interface.js","../node_modules/dbus-next/lib/errors.js","../node_modules/dbus-next/lib/service/handlers.js","../node_modules/dbus-next/lib/service/object.js","../node_modules/xml2js/lib/defaults.js","../node_modules/xmlbuilder/lib/Utility.js","../node_modules/xmlbuilder/lib/XMLDOMImplementation.js","../node_modules/xmlbuilder/lib/XMLDOMErrorHandler.js","../node_modules/xmlbuilder/lib/XMLDOMStringList.js","../node_modules/xmlbuilder/lib/XMLDOMConfiguration.js","../node_modules/xmlbuilder/lib/NodeType.js","../node_modules/xmlbuilder/lib/XMLAttribute.js","../node_modules/xmlbuilder/lib/XMLNamedNodeMap.js","../node_modules/xmlbuilder/lib/XMLElement.js","../node_modules/xmlbuilder/lib/XMLCharacterData.js","../node_modules/xmlbuilder/lib/XMLCData.js","../node_modules/xmlbuilder/lib/XMLComment.js","../node_modules/xmlbuilder/lib/XMLDeclaration.js","../node_modules/xmlbuilder/lib/XMLDTDAttList.js","../node_modules/xmlbuilder/lib/XMLDTDEntity.js","../node_modules/xmlbuilder/lib/XMLDTDElement.js","../node_modules/xmlbuilder/lib/XMLDTDNotation.js","../node_modules/xmlbuilder/lib/XMLDocType.js","../node_modules/xmlbuilder/lib/XMLRaw.js","../node_modules/xmlbuilder/lib/XMLText.js","../node_modules/xmlbuilder/lib/XMLProcessingInstruction.js","../node_modules/xmlbuilder/lib/XMLDummy.js","../node_modules/xmlbuilder/lib/XMLNodeList.js","../node_modules/xmlbuilder/lib/DocumentPosition.js","../node_modules/xmlbuilder/lib/XMLNode.js","../node_modules/xmlbuilder/lib/XMLStringifier.js","../node_modules/xmlbuilder/lib/WriterState.js","../node_modules/xmlbuilder/lib/XMLWriterBase.js","../node_modules/xmlbuilder/lib/XMLStringWriter.js","../node_modules/xmlbuilder/lib/XMLDocument.js","../node_modules/xmlbuilder/lib/XMLDocumentCB.js","../node_modules/xmlbuilder/lib/XMLStreamWriter.js","../node_modules/xmlbuilder/lib/index.js","../node_modules/xml2js/lib/builder.js","../node_modules/sax/lib/sax.js","../node_modules/xml2js/lib/bom.js","../node_modules/xml2js/lib/processors.js","../node_modules/xml2js/lib/parser.js","../node_modules/xml2js/lib/xml2js.js","../node_modules/dbus-next/lib/client/proxy-interface.js","../node_modules/dbus-next/lib/client/proxy-object.js","../node_modules/dbus-next/lib/bus.js","../node_modules/safe-buffer/index.js","../node_modules/@nornagon/put/index.js","../node_modules/dbus-next/lib/align.js","../node_modules/long/src/long.js","../node_modules/dbus-next/lib/library-options.js","../node_modules/dbus-next/lib/marshallers.js","../node_modules/dbus-next/lib/marshall.js","../node_modules/dbus-next/lib/dbus-buffer.js","../node_modules/dbus-next/lib/header-signature.json","../node_modules/dbus-next/lib/message.js","../node_modules/dbus-next/lib/readline.js","../node_modules/dbus-next/lib/handshake.js","../node_modules/dbus-next/lib/address-x11.js","../node_modules/dbus-next/lib/marshall-compat.js","../node_modules/through/index.js","../node_modules/from/index.js","../node_modules/duplexer/index.js","../node_modules/map-stream/index.js","../node_modules/pause-stream/index.js","../node_modules/split/index.js","../node_modules/stream-combiner/index.js","../node_modules/event-stream/index.js","../node_modules/dbus-next/lib/connection.js","../node_modules/dbus-next/index.js","../src/index.ts","../src/client.ts","../src/diagnostics.ts","../src/errors.ts","../src/io.ts","../src/systemd.ts","../src/validation.ts","../src/transport.ts","../src/waiting.ts","../src/types.ts"],"sourcesContent":["class JSBI extends Array{constructor(a,b){if(a>JSBI.__kMaxLength)throw new RangeError(\"Maximum BigInt size exceeded\");super(a),this.sign=b}static BigInt(a){var b=Math.floor,c=Number.isFinite;if(\"number\"==typeof a){if(0===a)return JSBI.__zero();if((0|a)===a)return 0>a?JSBI.__oneDigit(-a,!0):JSBI.__oneDigit(a,!1);if(!c(a)||b(a)!==a)throw new RangeError(\"The number \"+a+\" cannot be converted to BigInt because it is not an integer\");return JSBI.__fromDouble(a)}if(\"string\"==typeof a){const b=JSBI.__fromString(a);if(null===b)throw new SyntaxError(\"Cannot convert \"+a+\" to a BigInt\");return b}if(\"boolean\"==typeof a)return!0===a?JSBI.__oneDigit(1,!1):JSBI.__zero();if(\"object\"==typeof a){if(a.constructor===JSBI)return a;const b=JSBI.__toPrimitive(a);return JSBI.BigInt(b)}throw new TypeError(\"Cannot convert \"+a+\" to a BigInt\")}toDebugString(){const a=[\"BigInt[\"];for(const b of this)a.push((b?(b>>>0).toString(16):b)+\", \");return a.push(\"]\"),a.join(\"\")}toString(a=10){if(2>a||36<a)throw new RangeError(\"toString() radix argument must be between 2 and 36\");return 0===this.length?\"0\":0==(a&a-1)?JSBI.__toStringBasePowerOfTwo(this,a):JSBI.__toStringGeneric(this,a,!1)}static toNumber(a){var b=Math.clz32;const c=a.length;if(0===c)return 0;if(1===c){const b=a.__unsignedDigit(0);return a.sign?-b:b}const d=a.__digit(c-1),e=b(d),f=32*c-e;if(1024<f)return a.sign?-Infinity:1/0;let g=f-1,h=d,i=c-1;const j=e+1;let k=32===j?0:h<<j;k>>>=12;const l=j-12;let m=12<=j?0:h<<20+j,n=20+j;0<l&&0<i&&(i--,h=a.__digit(i),k|=h>>>32-l,m=h<<l,n=l),0<n&&0<i&&(i--,h=a.__digit(i),m|=h>>>32-n,n-=32);const o=JSBI.__decideRounding(a,n,i,h);if((1===o||0===o&&1==(1&m))&&(m=m+1>>>0,0==m&&(k++,0!=k>>>20&&(k=0,g++,1023<g))))return a.sign?-Infinity:1/0;const p=a.sign?-2147483648:0;return g=g+1023<<20,JSBI.__kBitConversionInts[1]=p|g|k,JSBI.__kBitConversionInts[0]=m,JSBI.__kBitConversionDouble[0]}static unaryMinus(a){if(0===a.length)return a;const b=a.__copy();return b.sign=!a.sign,b}static bitwiseNot(a){return a.sign?JSBI.__absoluteSubOne(a).__trim():JSBI.__absoluteAddOne(a,!0)}static exponentiate(a,b){if(b.sign)throw new RangeError(\"Exponent must be positive\");if(0===b.length)return JSBI.__oneDigit(1,!1);if(0===a.length)return a;if(1===a.length&&1===a.__digit(0))return a.sign&&0==(1&b.__digit(0))?JSBI.unaryMinus(a):a;if(1<b.length)throw new RangeError(\"BigInt too big\");let c=b.__unsignedDigit(0);if(1===c)return a;if(c>=JSBI.__kMaxLengthBits)throw new RangeError(\"BigInt too big\");if(1===a.length&&2===a.__digit(0)){const b=1+(c>>>5),d=a.sign&&0!=(1&c),e=new JSBI(b,d);e.__initializeDigits();const f=1<<(31&c);return e.__setDigit(b-1,f),e}let d=null,e=a;for(0!=(1&c)&&(d=a),c>>=1;0!==c;c>>=1)e=JSBI.multiply(e,e),0!=(1&c)&&(null===d?d=e:d=JSBI.multiply(d,e));return d}static multiply(a,b){if(0===a.length)return a;if(0===b.length)return b;let c=a.length+b.length;32<=a.__clzmsd()+b.__clzmsd()&&c--;const d=new JSBI(c,a.sign!==b.sign);d.__initializeDigits();for(let c=0;c<a.length;c++)JSBI.__multiplyAccumulate(b,a.__digit(c),d,c);return d.__trim()}static divide(a,b){if(0===b.length)throw new RangeError(\"Division by zero\");if(0>JSBI.__absoluteCompare(a,b))return JSBI.__zero();const c=a.sign!==b.sign,d=b.__unsignedDigit(0);let e;if(1===b.length&&65535>=d){if(1===d)return c===a.sign?a:JSBI.unaryMinus(a);e=JSBI.__absoluteDivSmall(a,d,null)}else e=JSBI.__absoluteDivLarge(a,b,!0,!1);return e.sign=c,e.__trim()}static remainder(a,b){if(0===b.length)throw new RangeError(\"Division by zero\");if(0>JSBI.__absoluteCompare(a,b))return a;const c=b.__unsignedDigit(0);if(1===b.length&&65535>=c){if(1===c)return JSBI.__zero();const b=JSBI.__absoluteModSmall(a,c);return 0===b?JSBI.__zero():JSBI.__oneDigit(b,a.sign)}const d=JSBI.__absoluteDivLarge(a,b,!1,!0);return d.sign=a.sign,d.__trim()}static add(a,b){const c=a.sign;return c===b.sign?JSBI.__absoluteAdd(a,b,c):0<=JSBI.__absoluteCompare(a,b)?JSBI.__absoluteSub(a,b,c):JSBI.__absoluteSub(b,a,!c)}static subtract(a,b){const c=a.sign;return c===b.sign?0<=JSBI.__absoluteCompare(a,b)?JSBI.__absoluteSub(a,b,c):JSBI.__absoluteSub(b,a,!c):JSBI.__absoluteAdd(a,b,c)}static leftShift(a,b){return 0===b.length||0===a.length?a:b.sign?JSBI.__rightShiftByAbsolute(a,b):JSBI.__leftShiftByAbsolute(a,b)}static signedRightShift(a,b){return 0===b.length||0===a.length?a:b.sign?JSBI.__leftShiftByAbsolute(a,b):JSBI.__rightShiftByAbsolute(a,b)}static unsignedRightShift(){throw new TypeError(\"BigInts have no unsigned right shift; use >> instead\")}static lessThan(a,b){return 0>JSBI.__compareToBigInt(a,b)}static lessThanOrEqual(a,b){return 0>=JSBI.__compareToBigInt(a,b)}static greaterThan(a,b){return 0<JSBI.__compareToBigInt(a,b)}static greaterThanOrEqual(a,b){return 0<=JSBI.__compareToBigInt(a,b)}static equal(a,b){if(a.sign!==b.sign)return!1;if(a.length!==b.length)return!1;for(let c=0;c<a.length;c++)if(a.__digit(c)!==b.__digit(c))return!1;return!0}static bitwiseAnd(a,b){var c=Math.max;if(!a.sign&&!b.sign)return JSBI.__absoluteAnd(a,b).__trim();if(a.sign&&b.sign){const d=c(a.length,b.length)+1;let e=JSBI.__absoluteSubOne(a,d);const f=JSBI.__absoluteSubOne(b);return e=JSBI.__absoluteOr(e,f,e),JSBI.__absoluteAddOne(e,!0,e).__trim()}return a.sign&&([a,b]=[b,a]),JSBI.__absoluteAndNot(a,JSBI.__absoluteSubOne(b)).__trim()}static bitwiseXor(a,b){var c=Math.max;if(!a.sign&&!b.sign)return JSBI.__absoluteXor(a,b).__trim();if(a.sign&&b.sign){const d=c(a.length,b.length),e=JSBI.__absoluteSubOne(a,d),f=JSBI.__absoluteSubOne(b);return JSBI.__absoluteXor(e,f,e).__trim()}const d=c(a.length,b.length)+1;a.sign&&([a,b]=[b,a]);let e=JSBI.__absoluteSubOne(b,d);return e=JSBI.__absoluteXor(e,a,e),JSBI.__absoluteAddOne(e,!0,e).__trim()}static bitwiseOr(a,b){var c=Math.max;const d=c(a.length,b.length);if(!a.sign&&!b.sign)return JSBI.__absoluteOr(a,b).__trim();if(a.sign&&b.sign){let c=JSBI.__absoluteSubOne(a,d);const e=JSBI.__absoluteSubOne(b);return c=JSBI.__absoluteAnd(c,e,c),JSBI.__absoluteAddOne(c,!0,c).__trim()}a.sign&&([a,b]=[b,a]);let e=JSBI.__absoluteSubOne(b,d);return e=JSBI.__absoluteAndNot(e,a,e),JSBI.__absoluteAddOne(e,!0,e).__trim()}static ADD(a,b){if(a=JSBI.__toPrimitive(a),b=JSBI.__toPrimitive(b),\"string\"==typeof a)return\"string\"!=typeof b&&(b=b.toString()),a+b;if(\"string\"==typeof b)return a.toString()+b;if(a=JSBI.__toNumeric(a),b=JSBI.__toNumeric(b),JSBI.__isBigInt(a)&&JSBI.__isBigInt(b))return JSBI.add(a,b);if(\"number\"==typeof a&&\"number\"==typeof b)return a+b;throw new TypeError(\"Cannot mix BigInt and other types, use explicit conversions\")}static LT(a,b){return JSBI.__compare(a,b,0)}static LE(a,b){return JSBI.__compare(a,b,1)}static GT(a,b){return JSBI.__compare(a,b,2)}static GE(a,b){return JSBI.__compare(a,b,3)}static EQ(a,b){for(;;){if(JSBI.__isBigInt(a))return JSBI.__isBigInt(b)?JSBI.equal(a,b):JSBI.EQ(b,a);if(\"number\"==typeof a){if(JSBI.__isBigInt(b))return JSBI.__equalToNumber(b,a);if(\"object\"!=typeof b)return a==b;b=JSBI.__toPrimitive(b)}else if(\"string\"==typeof a){if(JSBI.__isBigInt(b))return a=JSBI.__fromString(a),null!==a&&JSBI.equal(a,b);if(\"object\"!=typeof b)return a==b;b=JSBI.__toPrimitive(b)}else if(\"boolean\"==typeof a){if(JSBI.__isBigInt(b))return JSBI.__equalToNumber(b,+a);if(\"object\"!=typeof b)return a==b;b=JSBI.__toPrimitive(b)}else if(\"symbol\"==typeof a){if(JSBI.__isBigInt(b))return!1;if(\"object\"!=typeof b)return a==b;b=JSBI.__toPrimitive(b)}else if(\"object\"==typeof a){if(\"object\"==typeof b&&b.constructor!==JSBI)return a==b;a=JSBI.__toPrimitive(a)}else return a==b}}static __zero(){return new JSBI(0,!1)}static __oneDigit(a,b){const c=new JSBI(1,b);return c.__setDigit(0,a),c}__copy(){const a=new JSBI(this.length,this.sign);for(let b=0;b<this.length;b++)a[b]=this[b];return a}__trim(){let a=this.length,b=this[a-1];for(;0===b;)a--,b=this[a-1],this.pop();return 0===a&&(this.sign=!1),this}__initializeDigits(){for(let a=0;a<this.length;a++)this[a]=0}static __decideRounding(a,b,c,d){if(0<b)return-1;let e;if(0>b)e=-b-1;else{if(0===c)return-1;c--,d=a.__digit(c),e=31}let f=1<<e;if(0==(d&f))return-1;if(f-=1,0!=(d&f))return 1;for(;0<c;)if(c--,0!==a.__digit(c))return 1;return 0}static __fromDouble(a){JSBI.__kBitConversionDouble[0]=a;const b=2047&JSBI.__kBitConversionInts[1]>>>20,c=b-1023,d=(c>>>5)+1,e=new JSBI(d,0>a);let f=1048575&JSBI.__kBitConversionInts[1]|1048576,g=JSBI.__kBitConversionInts[0];const h=20,i=31&c;let j,k=0;if(i<20){const a=h-i;k=a+32,j=f>>>a,f=f<<32-a|g>>>a,g<<=32-a}else if(i===20)k=32,j=f,f=g;else{const a=i-h;k=32-a,j=f<<a|g>>>32-a,f=g<<a}e.__setDigit(d-1,j);for(let b=d-2;0<=b;b--)0<k?(k-=32,j=f,f=g):j=0,e.__setDigit(b,j);return e.__trim()}static __isWhitespace(a){return!!(13>=a&&9<=a)||(159>=a?32==a:131071>=a?160==a||5760==a:196607>=a?(a&=131071,10>=a||40==a||41==a||47==a||95==a||4096==a):65279==a)}static __fromString(a,b=0){let c=0;const e=a.length;let f=0;if(f===e)return JSBI.__zero();let g=a.charCodeAt(f);for(;JSBI.__isWhitespace(g);){if(++f===e)return JSBI.__zero();g=a.charCodeAt(f)}if(43===g){if(++f===e)return null;g=a.charCodeAt(f),c=1}else if(45===g){if(++f===e)return null;g=a.charCodeAt(f),c=-1}if(0===b){if(b=10,48===g){if(++f===e)return JSBI.__zero();if(g=a.charCodeAt(f),88===g||120===g){if(b=16,++f===e)return null;g=a.charCodeAt(f)}else if(79===g||111===g){if(b=8,++f===e)return null;g=a.charCodeAt(f)}else if(66===g||98===g){if(b=2,++f===e)return null;g=a.charCodeAt(f)}}}else if(16===b&&48===g){if(++f===e)return JSBI.__zero();if(g=a.charCodeAt(f),88===g||120===g){if(++f===e)return null;g=a.charCodeAt(f)}}for(;48===g;){if(++f===e)return JSBI.__zero();g=a.charCodeAt(f)}const h=e-f;let i=JSBI.__kMaxBitsPerChar[b],j=JSBI.__kBitsPerCharTableMultiplier-1;if(h>1073741824/i)return null;const k=i*h+j>>>JSBI.__kBitsPerCharTableShift,l=new JSBI(k+31>>>5,!1),n=10>b?b:10,o=10<b?b-10:0;if(0==(b&b-1)){i>>=JSBI.__kBitsPerCharTableShift;const b=[],c=[];let d=!1;do{let h=0,j=0;for(;;){let b;if(g-48>>>0<n)b=g-48;else if((32|g)-97>>>0<o)b=(32|g)-87;else{d=!0;break}if(j+=i,h=h<<i|b,++f===e){d=!0;break}if(g=a.charCodeAt(f),32<j+i)break}b.push(h),c.push(j)}while(!d);JSBI.__fillFromParts(l,b,c)}else{l.__initializeDigits();let c=!1,h=0;do{let k=0,p=1;for(;;){let i;if(g-48>>>0<n)i=g-48;else if((32|g)-97>>>0<o)i=(32|g)-87;else{c=!0;break}const d=p*b;if(4294967295<d)break;if(p=d,k=k*b+i,h++,++f===e){c=!0;break}g=a.charCodeAt(f)}j=32*JSBI.__kBitsPerCharTableMultiplier-1;const q=i*h+j>>>JSBI.__kBitsPerCharTableShift+5;l.__inplaceMultiplyAdd(p,k,q)}while(!c)}for(;f!==e;){if(!JSBI.__isWhitespace(g))return null;g=a.charCodeAt(f++)}return 0!=c&&10!==b?null:(l.sign=-1==c,l.__trim())}static __fillFromParts(a,b,c){let d=0,e=0,f=0;for(let g=b.length-1;0<=g;g--){const h=b[g],i=c[g];e|=h<<f,f+=i,32===f?(a.__setDigit(d++,e),f=0,e=0):32<f&&(a.__setDigit(d++,e),f-=32,e=h>>>i-f)}if(0!==e){if(d>=a.length)throw new Error(\"implementation bug\");a.__setDigit(d++,e)}for(;d<a.length;d++)a.__setDigit(d,0)}static __toStringBasePowerOfTwo(a,b){var c=Math.clz32;const d=a.length;let e=b-1;e=(85&e>>>1)+(85&e),e=(51&e>>>2)+(51&e),e=(15&e>>>4)+(15&e);const f=e,g=b-1,h=a.__digit(d-1),i=c(h);let j=0|(32*d-i+f-1)/f;if(a.sign&&j++,268435456<j)throw new Error(\"string too long\");const k=Array(j);let l=j-1,m=0,n=0;for(let c=0;c<d-1;c++){const b=a.__digit(c),d=(m|b<<n)&g;k[l--]=JSBI.__kConversionChars[d];const e=f-n;for(m=b>>>e,n=32-e;n>=f;)k[l--]=JSBI.__kConversionChars[m&g],m>>>=f,n-=f}const o=(m|h<<n)&g;for(k[l--]=JSBI.__kConversionChars[o],m=h>>>f-n;0!==m;)k[l--]=JSBI.__kConversionChars[m&g],m>>>=f;if(a.sign&&(k[l--]=\"-\"),-1!=l)throw new Error(\"implementation bug\");return k.join(\"\")}static __toStringGeneric(a,b,c){var d=Math.clz32;const e=a.length;if(0===e)return\"\";if(1===e){let d=a.__unsignedDigit(0).toString(b);return!1===c&&a.sign&&(d=\"-\"+d),d}const f=32*e-d(a.__digit(e-1)),g=JSBI.__kMaxBitsPerChar[b],h=g-1;let i=f*JSBI.__kBitsPerCharTableMultiplier;i+=h-1,i=0|i/h;const j=i+1>>1,k=JSBI.exponentiate(JSBI.__oneDigit(b,!1),JSBI.__oneDigit(j,!1));let l,m;const n=k.__unsignedDigit(0);if(1===k.length&&65535>=n){l=new JSBI(a.length,!1),l.__initializeDigits();let c=0;for(let b=2*a.length-1;0<=b;b--){const d=c<<16|a.__halfDigit(b);l.__setHalfDigit(b,0|d/n),c=0|d%n}m=c.toString(b)}else{const c=JSBI.__absoluteDivLarge(a,k,!0,!0);l=c.quotient;const d=c.remainder.__trim();m=JSBI.__toStringGeneric(d,b,!0)}l.__trim();let o=JSBI.__toStringGeneric(l,b,!0);for(;m.length<j;)m=\"0\"+m;return!1===c&&a.sign&&(o=\"-\"+o),o+m}static __unequalSign(a){return a?-1:1}static __absoluteGreater(a){return a?-1:1}static __absoluteLess(a){return a?1:-1}static __compareToBigInt(a,b){const c=a.sign;if(c!==b.sign)return JSBI.__unequalSign(c);const d=JSBI.__absoluteCompare(a,b);return 0<d?JSBI.__absoluteGreater(c):0>d?JSBI.__absoluteLess(c):0}static __compareToNumber(a,b){if(b|!0){const c=a.sign,d=0>b;if(c!==d)return JSBI.__unequalSign(c);if(0===a.length){if(d)throw new Error(\"implementation bug\");return 0===b?0:-1}if(1<a.length)return JSBI.__absoluteGreater(c);const e=Math.abs(b),f=a.__unsignedDigit(0);return f>e?JSBI.__absoluteGreater(c):f<e?JSBI.__absoluteLess(c):0}return JSBI.__compareToDouble(a,b)}static __compareToDouble(a,b){var c=Math.clz32;if(b!==b)return b;if(b===1/0)return-1;if(b===-Infinity)return 1;const d=a.sign;if(d!==0>b)return JSBI.__unequalSign(d);if(0===b)throw new Error(\"implementation bug: should be handled elsewhere\");if(0===a.length)return-1;JSBI.__kBitConversionDouble[0]=b;const e=2047&JSBI.__kBitConversionInts[1]>>>20;if(2047==e)throw new Error(\"implementation bug: handled elsewhere\");const f=e-1023;if(0>f)return JSBI.__absoluteGreater(d);const g=a.length;let h=a.__digit(g-1);const i=c(h),j=32*g-i,k=f+1;if(j<k)return JSBI.__absoluteLess(d);if(j>k)return JSBI.__absoluteGreater(d);let l=1048576|1048575&JSBI.__kBitConversionInts[1],m=JSBI.__kBitConversionInts[0];const n=20,o=31-i;if(o!==(j-1)%31)throw new Error(\"implementation bug\");let p,q=0;if(20>o){const a=n-o;q=a+32,p=l>>>a,l=l<<32-a|m>>>a,m<<=32-a}else if(20===o)q=32,p=l,l=m;else{const a=o-n;q=32-a,p=l<<a|m>>>32-a,l=m<<a}if(h>>>=0,p>>>=0,h>p)return JSBI.__absoluteGreater(d);if(h<p)return JSBI.__absoluteLess(d);for(let c=g-2;0<=c;c--){0<q?(q-=32,p=l>>>0,l=m,m=0):p=0;const b=a.__unsignedDigit(c);if(b>p)return JSBI.__absoluteGreater(d);if(b<p)return JSBI.__absoluteLess(d)}if(0!==l||0!==m){if(0===q)throw new Error(\"implementation bug\");return JSBI.__absoluteLess(d)}return 0}static __equalToNumber(a,b){var c=Math.abs;return b|0===b?0===b?0===a.length:1===a.length&&a.sign===0>b&&a.__unsignedDigit(0)===c(b):0===JSBI.__compareToDouble(a,b)}static __comparisonResultToBool(a,b){switch(b){case 0:return 0>a;case 1:return 0>=a;case 2:return 0<a;case 3:return 0<=a;}throw new Error(\"unreachable\")}static __compare(a,b,c){if(a=JSBI.__toPrimitive(a),b=JSBI.__toPrimitive(b),\"string\"==typeof a&&\"string\"==typeof b)switch(c){case 0:return a<b;case 1:return a<=b;case 2:return a>b;case 3:return a>=b;}if(JSBI.__isBigInt(a)&&\"string\"==typeof b)return b=JSBI.__fromString(b),null!==b&&JSBI.__comparisonResultToBool(JSBI.__compareToBigInt(a,b),c);if(\"string\"==typeof a&&JSBI.__isBigInt(b))return a=JSBI.__fromString(a),null!==a&&JSBI.__comparisonResultToBool(JSBI.__compareToBigInt(a,b),c);if(a=JSBI.__toNumeric(a),b=JSBI.__toNumeric(b),JSBI.__isBigInt(a)){if(JSBI.__isBigInt(b))return JSBI.__comparisonResultToBool(JSBI.__compareToBigInt(a,b),c);if(\"number\"!=typeof b)throw new Error(\"implementation bug\");return JSBI.__comparisonResultToBool(JSBI.__compareToNumber(a,b),c)}if(\"number\"!=typeof a)throw new Error(\"implementation bug\");if(JSBI.__isBigInt(b))return JSBI.__comparisonResultToBool(JSBI.__compareToNumber(b,a),2^c);if(\"number\"!=typeof b)throw new Error(\"implementation bug\");return 0===c?a<b:1===c?a<=b:2===c?a>b:3===c?a>=b:void 0}__clzmsd(){return Math.clz32(this[this.length-1])}static __absoluteAdd(a,b,c){if(a.length<b.length)return JSBI.__absoluteAdd(b,a,c);if(0===a.length)return a;if(0===b.length)return a.sign===c?a:JSBI.unaryMinus(a);let d=a.length;(0===a.__clzmsd()||b.length===a.length&&0===b.__clzmsd())&&d++;const e=new JSBI(d,c);let f=0,g=0;for(;g<b.length;g++){const c=b.__digit(g),d=a.__digit(g),h=(65535&d)+(65535&c)+f,i=(d>>>16)+(c>>>16)+(h>>>16);f=i>>>16,e.__setDigit(g,65535&h|i<<16)}for(;g<a.length;g++){const b=a.__digit(g),c=(65535&b)+f,d=(b>>>16)+(c>>>16);f=d>>>16,e.__setDigit(g,65535&c|d<<16)}return g<e.length&&e.__setDigit(g,f),e.__trim()}static __absoluteSub(a,b,c){if(0===a.length)return a;if(0===b.length)return a.sign===c?a:JSBI.unaryMinus(a);const d=new JSBI(a.length,c);let e=0,f=0;for(;f<b.length;f++){const c=a.__digit(f),g=b.__digit(f),h=(65535&c)-(65535&g)-e;e=1&h>>>16;const i=(c>>>16)-(g>>>16)-e;e=1&i>>>16,d.__setDigit(f,65535&h|i<<16)}for(;f<a.length;f++){const b=a.__digit(f),c=(65535&b)-e;e=1&c>>>16;const g=(b>>>16)-e;e=1&g>>>16,d.__setDigit(f,65535&c|g<<16)}return d.__trim()}static __absoluteAddOne(a,b,c=null){const d=a.length;null===c?c=new JSBI(d,b):c.sign=b;let e=!0;for(let f,g=0;g<d;g++){f=a.__digit(g);const b=-1===f;e&&(f=0|f+1),e=b,c.__setDigit(g,f)}return e&&c.__setDigitGrow(d,1),c}static __absoluteSubOne(a,b){const c=a.length;b=b||c;const d=new JSBI(b,!1);let e=!0;for(let f,g=0;g<c;g++){f=a.__digit(g);const b=0===f;e&&(f=0|f-1),e=b,d.__setDigit(g,f)}for(let e=c;e<b;e++)d.__setDigit(e,0);return d}static __absoluteAnd(a,b,c=null){let d=a.length,e=b.length,f=e;if(d<e){f=d;const c=a,g=d;a=b,d=e,b=c,e=g}let g=f;null===c?c=new JSBI(g,!1):g=c.length;let h=0;for(;h<f;h++)c.__setDigit(h,a.__digit(h)&b.__digit(h));for(;h<g;h++)c.__setDigit(h,0);return c}static __absoluteAndNot(a,b,c=null){const d=a.length,e=b.length;let f=e;d<e&&(f=d);let g=d;null===c?c=new JSBI(g,!1):g=c.length;let h=0;for(;h<f;h++)c.__setDigit(h,a.__digit(h)&~b.__digit(h));for(;h<d;h++)c.__setDigit(h,a.__digit(h));for(;h<g;h++)c.__setDigit(h,0);return c}static __absoluteOr(a,b,c=null){let d=a.length,e=b.length,f=e;if(d<e){f=d;const c=a,g=d;a=b,d=e,b=c,e=g}let g=d;null===c?c=new JSBI(g,!1):g=c.length;let h=0;for(;h<f;h++)c.__setDigit(h,a.__digit(h)|b.__digit(h));for(;h<d;h++)c.__setDigit(h,a.__digit(h));for(;h<g;h++)c.__setDigit(h,0);return c}static __absoluteXor(a,b,c=null){let d=a.length,e=b.length,f=e;if(d<e){f=d;const c=a,g=d;a=b,d=e,b=c,e=g}let g=d;null===c?c=new JSBI(g,!1):g=c.length;let h=0;for(;h<f;h++)c.__setDigit(h,a.__digit(h)^b.__digit(h));for(;h<d;h++)c.__setDigit(h,a.__digit(h));for(;h<g;h++)c.__setDigit(h,0);return c}static __absoluteCompare(a,b){const c=a.length-b.length;if(0!=c)return c;let d=a.length-1;for(;0<=d&&a.__digit(d)===b.__digit(d);)d--;return 0>d?0:a.__unsignedDigit(d)>b.__unsignedDigit(d)?1:-1}static __multiplyAccumulate(a,b,c,d){var e=Math.imul;if(0===b)return;const f=65535&b,g=b>>>16;let h=0,j=0,k=0;for(let l=0;l<a.length;l++,d++){let b=c.__digit(d),i=65535&b,m=b>>>16;const n=a.__digit(l),o=65535&n,p=n>>>16,q=e(o,f),r=e(o,g),s=e(p,f),t=e(p,g);i+=j+(65535&q),m+=k+h+(i>>>16)+(q>>>16)+(65535&r)+(65535&s),h=m>>>16,j=(r>>>16)+(s>>>16)+(65535&t)+h,h=j>>>16,j&=65535,k=t>>>16,b=65535&i|m<<16,c.__setDigit(d,b)}for(;0!=h||0!==j||0!==k;d++){let a=c.__digit(d);const b=(65535&a)+j,e=(a>>>16)+(b>>>16)+k+h;j=0,k=0,h=e>>>16,a=65535&b|e<<16,c.__setDigit(d,a)}}static __internalMultiplyAdd(a,b,c,d,e){var f=Math.imul;let g=c,h=0;for(let j=0;j<d;j++){const c=a.__digit(j),d=f(65535&c,b),i=(65535&d)+h+g;g=i>>>16;const k=f(c>>>16,b),l=(65535&k)+(d>>>16)+g;g=l>>>16,h=k>>>16,e.__setDigit(j,l<<16|65535&i)}if(e.length>d)for(e.__setDigit(d++,g+h);d<e.length;)e.__setDigit(d++,0);else if(0!==g+h)throw new Error(\"implementation bug\")}__inplaceMultiplyAdd(a,b,c){var e=Math.imul;c>this.length&&(c=this.length);const f=65535&a,g=a>>>16;let h=0,j=65535&b,k=b>>>16;for(let l=0;l<c;l++){const a=this.__digit(l),b=65535&a,c=a>>>16,d=e(b,f),i=e(b,g),m=e(c,f),n=e(c,g),o=j+(65535&d),p=k+h+(o>>>16)+(d>>>16)+(65535&i)+(65535&m);j=(i>>>16)+(m>>>16)+(65535&n)+(p>>>16),h=j>>>16,j&=65535,k=n>>>16;this.__setDigit(l,65535&o|p<<16)}if(0!=h||0!==j||0!==k)throw new Error(\"implementation bug\")}static __absoluteDivSmall(a,b,c){null===c&&(c=new JSBI(a.length,!1));let d=0;for(let e,f=2*a.length-1;0<=f;f-=2){e=(d<<16|a.__halfDigit(f))>>>0;const g=0|e/b;d=0|e%b,e=(d<<16|a.__halfDigit(f-1))>>>0;const h=0|e/b;d=0|e%b,c.__setDigit(f>>>1,g<<16|h)}return c}static __absoluteModSmall(a,b){let c=0;for(let d=2*a.length-1;0<=d;d--){const e=(c<<16|a.__halfDigit(d))>>>0;c=0|e%b}return c}static __absoluteDivLarge(a,b,d,e){var f=Math.imul;const g=b.__halfDigitLength(),h=b.length,c=a.__halfDigitLength()-g;let i=null;d&&(i=new JSBI(c+2>>>1,!1),i.__initializeDigits());const k=new JSBI(g+2>>>1,!1);k.__initializeDigits();const l=JSBI.__clz16(b.__halfDigit(g-1));0<l&&(b=JSBI.__specialLeftShift(b,l,0));const m=JSBI.__specialLeftShift(a,l,1),n=b.__halfDigit(g-1);let o=0;for(let l,p=c;0<=p;p--){l=65535;const a=m.__halfDigit(p+g);if(a!==n){const c=(a<<16|m.__halfDigit(p+g-1))>>>0;l=0|c/n;let d=0|c%n;const e=b.__halfDigit(g-2),h=m.__halfDigit(p+g-2);for(;f(l,e)>>>0>(d<<16|h)>>>0&&(l--,d+=n,!(65535<d)););}JSBI.__internalMultiplyAdd(b,l,0,h,k);let e=m.__inplaceSub(k,p,g+1);0!==e&&(e=m.__inplaceAdd(b,p,g),m.__setHalfDigit(p+g,m.__halfDigit(p+g)+e),l--),d&&(1&p?o=l<<16:i.__setDigit(p>>>1,o|l))}return e?(m.__inplaceRightShift(l),d?{quotient:i,remainder:m}:m):d?i:void 0}static __clz16(a){return Math.clz32(a)-16}__inplaceAdd(a,b,c){let d=0;for(let e=0;e<c;e++){const c=this.__halfDigit(b+e)+a.__halfDigit(e)+d;d=c>>>16,this.__setHalfDigit(b+e,c)}return d}__inplaceSub(a,b,c){let d=0;if(1&b){b>>=1;let e=this.__digit(b),f=65535&e,g=0;for(;g<c-1>>>1;g++){const c=a.__digit(g),h=(e>>>16)-(65535&c)-d;d=1&h>>>16,this.__setDigit(b+g,h<<16|65535&f),e=this.__digit(b+g+1),f=(65535&e)-(c>>>16)-d,d=1&f>>>16}const h=a.__digit(g),i=(e>>>16)-(65535&h)-d;d=1&i>>>16,this.__setDigit(b+g,i<<16|65535&f);if(b+g+1>=this.length)throw new RangeError(\"out of bounds\");0==(1&c)&&(e=this.__digit(b+g+1),f=(65535&e)-(h>>>16)-d,d=1&f>>>16,this.__setDigit(b+a.length,4294901760&e|65535&f))}else{b>>=1;let e=0;for(;e<a.length-1;e++){const c=this.__digit(b+e),f=a.__digit(e),g=(65535&c)-(65535&f)-d;d=1&g>>>16;const h=(c>>>16)-(f>>>16)-d;d=1&h>>>16,this.__setDigit(b+e,h<<16|65535&g)}const f=this.__digit(b+e),g=a.__digit(e),h=(65535&f)-(65535&g)-d;d=1&h>>>16;let i=0;0==(1&c)&&(i=(f>>>16)-(g>>>16)-d,d=1&i>>>16),this.__setDigit(b+e,i<<16|65535&h)}return d}__inplaceRightShift(a){if(0===a)return;let b=this.__digit(0)>>>a;const c=this.length-1;for(let e=0;e<c;e++){const c=this.__digit(e+1);this.__setDigit(e,c<<32-a|b),b=c>>>a}this.__setDigit(c,b)}static __specialLeftShift(a,b,c){const d=a.length,e=new JSBI(d+c,!1);if(0===b){for(let b=0;b<d;b++)e.__setDigit(b,a.__digit(b));return 0<c&&e.__setDigit(d,0),e}let f=0;for(let g=0;g<d;g++){const c=a.__digit(g);e.__setDigit(g,c<<b|f),f=c>>>32-b}return 0<c&&e.__setDigit(d,f),e}static __leftShiftByAbsolute(a,b){const c=JSBI.__toShiftAmount(b);if(0>c)throw new RangeError(\"BigInt too big\");const e=c>>>5,f=31&c,g=a.length,h=0!==f&&0!=a.__digit(g-1)>>>32-f,j=g+e+(h?1:0),k=new JSBI(j,a.sign);if(0===f){let b=0;for(;b<e;b++)k.__setDigit(b,0);for(;b<j;b++)k.__setDigit(b,a.__digit(b-e))}else{let b=0;for(let a=0;a<e;a++)k.__setDigit(a,0);for(let c=0;c<g;c++){const g=a.__digit(c);k.__setDigit(c+e,g<<f|b),b=g>>>32-f}if(h)k.__setDigit(g+e,b);else if(0!=b)throw new Error(\"implementation bug\")}return k.__trim()}static __rightShiftByAbsolute(a,b){const c=a.length,d=a.sign,e=JSBI.__toShiftAmount(b);if(0>e)return JSBI.__rightShiftByMaximum(d);const f=e>>>5,g=31&e;let h=c-f;if(0>=h)return JSBI.__rightShiftByMaximum(d);let i=!1;if(d){if(0!=(a.__digit(f)&(1<<g)-1))i=!0;else for(let b=0;b<f;b++)if(0!==a.__digit(b)){i=!0;break}}if(i&&0===g){const b=a.__digit(c-1);0==~b&&h++}let j=new JSBI(h,d);if(0===g)for(let b=f;b<c;b++)j.__setDigit(b-f,a.__digit(b));else{let b=a.__digit(f)>>>g;const d=c-f-1;for(let c=0;c<d;c++){const e=a.__digit(c+f+1);j.__setDigit(c,e<<32-g|b),b=e>>>g}j.__setDigit(d,b)}return i&&(j=JSBI.__absoluteAddOne(j,!0,j)),j.__trim()}static __rightShiftByMaximum(a){return a?JSBI.__oneDigit(1,!0):JSBI.__zero()}static __toShiftAmount(a){if(1<a.length)return-1;const b=a.__unsignedDigit(0);return b>JSBI.__kMaxLengthBits?-1:b}static __toPrimitive(a,b=\"default\"){if(\"object\"!=typeof a)return a;if(a.constructor===JSBI)return a;const c=a[Symbol.toPrimitive];if(c){const a=c(b);if(\"object\"!=typeof a)return a;throw new TypeError(\"Cannot convert object to primitive value\")}const d=a.valueOf;if(d){const b=d.call(a);if(\"object\"!=typeof b)return b}const e=a.toString;if(e){const b=e.call(a);if(\"object\"!=typeof b)return b}throw new TypeError(\"Cannot convert object to primitive value\")}static __toNumeric(a){return JSBI.__isBigInt(a)?a:+a}static __isBigInt(a){return\"object\"==typeof a&&a.constructor===JSBI}__digit(a){return this[a]}__unsignedDigit(a){return this[a]>>>0}__setDigit(a,b){this[a]=0|b}__setDigitGrow(a,b){this[a]=0|b}__halfDigitLength(){const a=this.length;return 65535>=this.__unsignedDigit(a-1)?2*a-1:2*a}__halfDigit(a){return 65535&this[a>>>1]>>>((1&a)<<4)}__setHalfDigit(a,b){const c=a>>>1,d=this.__digit(c),e=1&a?65535&d|b<<16:4294901760&d|65535&b;this.__setDigit(c,e)}static __digitPow(a,b){let c=1;for(;0<b;)1&b&&(c*=a),b>>>=1,a*=a;return c}}JSBI.__kMaxLength=33554432,JSBI.__kMaxLengthBits=JSBI.__kMaxLength<<5,JSBI.__kMaxBitsPerChar=[0,0,32,51,64,75,83,90,96,102,107,111,115,119,122,126,128,131,134,136,139,141,143,145,147,149,151,153,154,156,158,159,160,162,163,165,166],JSBI.__kBitsPerCharTableShift=5,JSBI.__kBitsPerCharTableMultiplier=1<<JSBI.__kBitsPerCharTableShift,JSBI.__kConversionChars=[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\",\"h\",\"i\",\"j\",\"k\",\"l\",\"m\",\"n\",\"o\",\"p\",\"q\",\"r\",\"s\",\"t\",\"u\",\"v\",\"w\",\"x\",\"y\",\"z\"],JSBI.__kBitConversionBuffer=new ArrayBuffer(8),JSBI.__kBitConversionDouble=new Float64Array(JSBI.__kBitConversionBuffer),JSBI.__kBitConversionInts=new Int32Array(JSBI.__kBitConversionBuffer);export default JSBI;\n","/**\n * @class\n *\n * A flag enum for {@link MessageBus#requestName} to configure the name request\n * options.\n *\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#bus-messages-request-name}\n */\nclass NameFlag {}\n\n/**\n * This name allows other clients to replace it as the name owner on a request.\n *\n * @memberof NameFlag\n * @static\n * @constant\n */\nNameFlag.ALLOW_REPLACEMENT = 1;\n\n/**\n * This request should replace an existing name if that name allows\n * replacement.\n *\n * @memberof NameFlag\n * @static\n * @constant\n */\nNameFlag.REPLACE_EXISTING = 2;\n\n/**\n * This request should not enter the queue of clients requesting this name if\n * it is taken.\n *\n * @memberof NameFlag\n * @static\n * @constant\n */\nNameFlag.DO_NOT_QUEUE = 4;\n\n/**\n * @class\n *\n * An enum for the return value of {@link MessageBus#requestName} to indicate\n * the status of the name request.\n *\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#bus-messages-request-name}\n */\nclass RequestNameReply {}\n\n/**\n * The application trying to request ownership of a name is already the owner\n * of it.\n *\n * @memberof RequestNameReply\n * @static\n * @constant\n */\nRequestNameReply.PRIMARY_OWNER = 1;\n\n/**\n * The name already had an owner, `DBUS_NAME_FLAG_DO_NOT_QUEUE` was not\n * specified, and either the current owner did not specify\n * `DBUS_NAME_FLAG_ALLOW_REPLACEMENT` or the requesting application did not\n * specify `DBUS_NAME_FLAG_REPLACE_EXISTING`.\n *\n * @memberof RequestNameReply\n * @static\n * @constant\n */\nRequestNameReply.IN_QUEUE = 2;\n\n/**\n * The name already has an owner, `DBUS_NAME_FLAG_DO_NOT_QUEUE` was specified,\n * and either `DBUS_NAME_FLAG_ALLOW_REPLACEMENT` was not specified by the\n * current owner, or `DBUS_NAME_FLAG_REPLACE_EXISTING` was not specified by the\n * requesting application.\n *\n * @memberof RequestNameReply\n * @static\n * @constant\n */\nRequestNameReply.EXISTS = 3;\n\n/**\n * The application trying to request ownership of a name is already the owner\n * of it.\n *\n * @memberof RequestNameReply\n * @static\n * @constant\n */\nRequestNameReply.ALREADY_OWNER = 4;\n\n/**\n * @class\n *\n * An enum for the return value of {@link MessageBus#releaseName} to indicate\n * the status of the release name request.\n *\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#bus-messages-release-name}\n */\nclass ReleaseNameReply {}\n\n/**\n * The caller has released his claim on the given name. Either the caller was\n * the primary owner of the name, and the name is now unused or taken by\n * somebody waiting in the queue for the name, or the caller was waiting in the\n * queue for the name and has now been removed from the queue.\n *\n * @memberof ReleaseNameReply\n * @static\n * @constant\n */\nReleaseNameReply.RELEASED = 1;\n\n/**\n * The given name does not exist on this bus.\n *\n * @memberof ReleaseNameReply\n * @static\n * @constant\n */\nReleaseNameReply.NON_EXISTENT = 2;\n\n/**\n * The caller was not the primary owner of this name, and was also not waiting\n * in the queue to own this name.\n *\n * @memberof ReleaseNameReply\n * @static\n * @constant\n */\nReleaseNameReply.NOT_OWNER = 3;\n\n/**\n * @class\n *\n * An enum value for the {@link Message} `type` member to indicate the type of message.\n *\n * @see https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol\n */\nclass MessageType {}\n\n/**\n * The message is a method call.\n *\n * @memberof MessageType\n * @static\n * @constant\n */\nMessageType.METHOD_CALL = 1;\n\n/**\n * The message is a method return to a previous call.\n *\n * @memberof MessageType\n * @static\n * @constant\n */\nMessageType.METHOD_RETURN = 2;\n\n/**\n * The message is an error reply.\n *\n * @memberof MessageType\n * @static\n * @constant\n */\nMessageType.ERROR = 3;\n\n/**\n * The message is a signal.\n *\n * @memberof MessageType\n * @static\n * @constant\n */\nMessageType.SIGNAL = 4;\n\n/**\n * @class\n *\n * An flag enum for the {@link Message} `flags` member to configure behavior\n * for message processing.\n *\n * @see https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol\n */\nclass MessageFlag {}\n\n/**\n * No reply is expected from this message.\n *\n * @memberof MessageFlag\n * @static\n * @constant\n */\nMessageFlag.NO_REPLY_EXPECTED = 1;\n\n/**\n * This message should not autostart a service.\n *\n * @memberof MessageFlag\n * @static\n * @constant\n */\nMessageFlag.NO_AUTO_START = 2;\n\nconst MAX_INT64_STR = '9223372036854775807';\nconst MIN_INT64_STR = '-9223372036854775807';\nconst MAX_UINT64_STR = '18446744073709551615';\nconst MIN_UINT64_STR = '0';\n\nconst _JSBIConstants = {};\n\nfunction _getJSBIConstants () {\n if (Object.keys(_JSBIConstants).length !== 0) {\n return _JSBIConstants;\n }\n\n const JSBI = require('jsbi');\n\n _JSBIConstants.MAX_INT64 = JSBI.BigInt(MAX_INT64_STR);\n _JSBIConstants.MIN_INT64 = JSBI.BigInt(MIN_INT64_STR);\n _JSBIConstants.MAX_UINT64 = JSBI.BigInt(MAX_UINT64_STR);\n _JSBIConstants.MIN_UINT64 = JSBI.BigInt(MIN_UINT64_STR);\n\n return _JSBIConstants;\n}\n\nconst _BigIntConstants = {};\n\nfunction _getBigIntConstants () {\n if (Object.keys(_BigIntConstants).length !== 0) {\n return _BigIntConstants;\n }\n\n _BigIntConstants.MAX_INT64 = BigInt(MAX_INT64_STR);\n _BigIntConstants.MIN_INT64 = BigInt(MIN_INT64_STR);\n _BigIntConstants.MAX_UINT64 = BigInt(MAX_UINT64_STR);\n _BigIntConstants.MIN_UINT64 = BigInt(MIN_UINT64_STR);\n\n return _BigIntConstants;\n}\n\nmodule.exports = {\n MAX_INT64_STR: MAX_INT64_STR,\n MIN_INT64_STR: MIN_INT64_STR,\n MAX_UINT64_STR: MAX_UINT64_STR,\n MIN_UINT64_STR: MIN_UINT64_STR,\n\n NameFlag: NameFlag,\n RequestNameReply: RequestNameReply,\n ReleaseNameReply: ReleaseNameReply,\n MessageType: MessageType,\n MessageFlag: MessageFlag,\n\n headerTypeName: [\n null,\n 'path',\n 'interface',\n 'member',\n 'errorName',\n 'replySerial',\n 'destination',\n 'sender',\n 'signature',\n 'unixFd'\n ],\n\n // TODO: merge to single hash? e.g path -> [1, 'o']\n fieldSignature: {\n path: 'o',\n interface: 's',\n member: 's',\n errorName: 's',\n replySerial: 'u',\n destination: 's',\n sender: 's',\n signature: 'g',\n unixFd: 'u'\n },\n headerTypeId: {\n path: 1,\n interface: 2,\n member: 3,\n errorName: 4,\n replySerial: 5,\n destination: 6,\n sender: 7,\n signature: 8,\n unixFd: 9\n },\n protocolVersion: 1,\n endianness: {\n le: 108,\n be: 66\n },\n messageSignature: 'yyyyuua(yv)',\n defaultAuthMethods: ['EXTERNAL', 'DBUS_COOKIE_SHA1', 'ANONYMOUS'],\n _getJSBIConstants: _getJSBIConstants,\n _getBigIntConstants: _getBigIntConstants\n};\n","/**\n * @class\n * A class to represent DBus variants for both the client and service\n * interfaces. The {@link ProxyInterface} and [`Interface`]{@link\n * module:interface~Interface} methods, signals, and properties will use this\n * type to represent variant types. The user should use this class directly for\n * sending variants to methods if their signature expects the type to be a\n * variant.\n *\n * @example\n * let str = new Variant('s', 'hello');\n * let num = new Variant('d', 53);\n * let map = new Variant('a{ss}', { foo: 'bar' });\n * let list = new Variant('as', [ 'foo', 'bar' ]);\n */\nclass Variant {\n /**\n * Construct a new `Variant` with the given signature and value.\n * @param {string} signature - a DBus type signature for the `Variant`.\n * @param {any} value - the value of the `Variant` with type specified by the type signature.\n */\n constructor (signature, value) {\n this.signature = signature;\n this.value = value;\n }\n}\n\nmodule.exports = {\n Variant: Variant\n};\n","/**\n * Utility functions to validate bus names, interface names, and object paths.\n *\n * @module validators\n */\n\nconst busNameRe = /^[A-Za-z_-][A-Za-z0-9_-]*$/;\n/**\n * Validate the string as a valid bus name.\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names-bus}\n *\n * @static\n * @param {string} name - The name to validate as a valid bus name.\n * @returns {boolean} - Whether the string is a valid bus name.\n */\nfunction isBusNameValid (name) {\n if (typeof name !== 'string') {\n return false;\n }\n\n if (name.startsWith(':')) {\n // a unique bus name\n return true;\n }\n\n // a well-known bus name\n return !!(name.length > 0 &&\n name.length <= 255 &&\n name[0] !== '.' &&\n name.indexOf('.') !== -1 &&\n name.split('.').every((n) => n && busNameRe.test(n)));\n}\n\n/**\n * Throws an error if the given string is not a valid bus name.\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names-bus}\n *\n * @static\n * @param {string} name - The name to validate as a bus name.\n */\nfunction assertBusNameValid (name) {\n if (!isBusNameValid(name)) {\n throw new Error(`Invalid bus name: ${name}`);\n }\n}\n\nconst pathRe = /^[A-Za-z0-9_]+$/;\n/**\n * Validate the string as a valid object path.\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-marshaling-object-path}\n *\n * @static\n * @param {string} path - The string to validate as an object path.\n * @returns {boolean} - Whether the string is a valid object path.\n */\nfunction isObjectPathValid (path) {\n return !!(typeof path === 'string' &&\n path &&\n path[0] === '/' &&\n (path.length === 1 ||\n (path[path.length - 1] !== '/' &&\n path.split('/').slice(1).every((p) => p && pathRe.test(p)))));\n}\n\n/**\n * Throws an error if the given string is not a valid object path.\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-marshaling-object-path}\n *\n * @static\n * @param {string} path - The string to validate as an object path.\n * @returns {boolean} - Whether the string is a valid object path.\n */\nfunction assertObjectPathValid (path) {\n if (!isObjectPathValid(path)) {\n throw new Error(`Invalid object path: ${path}`);\n }\n}\n\nconst elementRe = /^[A-Za-z_][A-Za-z0-9_]*$/;\n/**\n * Validate the string as a valid interface name.\n * see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names-interface}\n *\n * @static\n * @param {string} name - The string to validate as an interface name.\n * @returns {boolean} - Whether the string is a valid interface name.\n */\nfunction isInterfaceNameValid (name) {\n return !!(typeof name === 'string' &&\n name &&\n name.length > 0 &&\n name.length <= 255 &&\n name[0] !== '.' &&\n name.indexOf('.') !== -1 &&\n name.split('.').every((n) => n && elementRe.test(n)));\n}\n\n/**\n * Throws an error if the given string is not a valid interface name.\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names-interface}\n *\n * @static\n * @param {string} name - The string to validate as an interface name.\n * @returns {boolean} - Whether the string is a valid interface name.\n */\nfunction assertInterfaceNameValid (name) {\n if (!isInterfaceNameValid(name)) {\n throw new Error(`Invalid interface name: ${name}`);\n }\n}\n\n/**\n * Validate the string is a valid member name\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names-interface}\n *\n * @static\n * @param {string} name - The string to validate as a member name.\n * @returns {boolean} - Whether the string is a valid member name.\n */\nfunction isMemberNameValid (name) {\n return !!(typeof name === 'string' &&\n name &&\n name.length > 0 &&\n name.length <= 255 &&\n elementRe.test(name));\n}\n\n/**\n * Throws an error if the string is not a valid member name.\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names-interface}\n *\n * @static\n * @param {string} name - The string to validate as a member name.\n */\nfunction assertMemberNameValid (name) {\n if (!assertMemberNameValid) {\n throw new Error(`Invalid member name: ${name}`);\n }\n}\n\nmodule.exports = {\n isBusNameValid: isBusNameValid,\n assertBusNameValid: assertBusNameValid,\n isObjectPathValid: isObjectPathValid,\n assertObjectPathValid: assertObjectPathValid,\n isInterfaceNameValid: isInterfaceNameValid,\n assertInterfaceNameValid: assertInterfaceNameValid,\n isMemberNameValid: isMemberNameValid,\n assertMemberNameValid: assertMemberNameValid\n};\n","const {\n assertBusNameValid,\n assertInterfaceNameValid,\n assertObjectPathValid,\n assertMemberNameValid\n} = require('./validators');\n\nconst {\n METHOD_CALL,\n METHOD_RETURN,\n ERROR,\n SIGNAL\n} = require('./constants').MessageType;\n\n/**\n * @class\n * A `Message` is a class used for sending and receiving messages through the\n * {@link MessageBus} with the low-level api. `Message`s can be constructed by\n * the user directly for method calls or with the static convenience methods on\n * this class for the other types of messages. `Message`s can be sent through a\n * connected MessageBus with {@link MessageBus#call} for method calls that\n * expect a reply from the server or {@link MessageBus#send} for messages that\n * do not expect a reply. See those methods for an example of how to use this\n * class.\n *\n * @see https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol\n *\n * @param {object} options - Options to construct this `Message` with. See the\n * corresponding member for more information.\n * @param {MessageType} [options.type={@link MessageType.METHOD_CALL}]\n * @param {int} [options.serial]\n * @param {string} [options.destination]\n * @param {string} [options.path]\n * @param {string} [options.interface] - Required for signals.\n * @param {string} [options.member] - Required for method calls and signals.\n * @param {string} [options.signature='']\n * @param {Array} [options.body=[]] - Must match the signature.\n * @param {string} [options.errorName] - Must be a valid interface name.\n * Required for errors.\n * @param {string} [options.replySerial] - Required for errors and method returns.\n * @param {MessageFlags} [options.flags]\n */\nclass Message {\n /**\n * Construct a new `Message` to send on the bus.\n */\n constructor (msg) {\n /**\n * @member {MessageType} - The type of message this is.\n */\n this.type = (msg.type ? msg.type : METHOD_CALL);\n this._sent = false;\n this._serial = (isNaN(msg.serial) ? null : msg.serial);\n /**\n * @member {string} - The name of the object path for the message.\n * Required for method calls and signals.\n */\n this.path = msg.path;\n /**\n * @member {string} - The destination interface for this message.\n */\n this.interface = msg.interface;\n /**\n * @member {string} - The destination member on the interface for this message.\n */\n this.member = msg.member;\n /**\n * @member {string} - The name of the error if this is a message of type\n * `ERROR`. Must be a valid interface name.\n */\n this.errorName = msg.errorName;\n /**\n * @member {int} - The serial for the message this is in reply to. Set for\n * types `ERROR` and `METHOD_RETURN`.\n */\n this.replySerial = msg.replySerial;\n /**\n * @member {string} - The address on the bus to send the message\n * to.\n */\n this.destination = msg.destination;\n /**\n * @member {string} - The name of the bus from which this message was sent.\n * Set by the {@link MessageBus}.\n */\n this.sender = msg.sender;\n /**\n * @member {string} - The type signature for the body args.\n */\n this.signature = msg.signature || '';\n /**\n * @member {Array} - The body arguments for this message. Must match the signature.\n */\n this.body = msg.body || [];\n /**\n * @member {MessageFlags} - The flags for this message.\n */\n this.flags = msg.flags || 0;\n\n if (this.destination) {\n assertBusNameValid(this.destination);\n }\n\n if (this.interface) {\n assertInterfaceNameValid(this.interface);\n }\n\n if (this.path) {\n assertObjectPathValid(this.path);\n }\n\n if (this.member) {\n assertMemberNameValid(this.member);\n }\n\n if (this.errorName) {\n assertInterfaceNameValid(this.errorName);\n }\n\n const requireFields = (...fields) => {\n for (const field of fields) {\n if (this[field] === undefined) {\n throw new Error(`Message is missing a required field: ${field}`);\n }\n }\n };\n\n // validate required fields\n switch (this.type) {\n case METHOD_CALL:\n requireFields('path', 'member');\n break;\n case SIGNAL:\n requireFields('path', 'member', 'interface');\n break;\n case ERROR:\n requireFields('errorName', 'replySerial');\n break;\n case METHOD_RETURN:\n requireFields('replySerial');\n break;\n default:\n throw new Error(`Got unknown message type: ${this.type}`);\n }\n }\n\n /**\n * @member {int} - The serial of the message to track through the bus. You\n * must use {@link MessageBus#newSerial} to get this serial. If not set, it\n * will be set automatically when the message is sent.\n */\n get serial () {\n return this._serial;\n }\n\n set serial (value) {\n this._sent = false;\n this._serial = value;\n }\n\n /**\n * Construct a new `Message` of type `ERROR` in reply to the given `Message`.\n *\n * @param {Message} msg - The `Message` this error is in reply to.\n * @param {string} errorName - The name of the error. Must be a valid\n * interface name.\n * @param {string} [errorText='An error occurred.'] - An error message for\n * the error.\n */\n static newError (msg, errorName, errorText = 'An error occurred.') {\n assertInterfaceNameValid(errorName);\n return new Message({\n type: ERROR,\n replySerial: msg.serial,\n destination: msg.sender,\n errorName: errorName,\n signature: 's',\n body: [errorText]\n });\n }\n\n /**\n * Construct a new `Message` of type `METHOD_RETURN` in reply to the given\n * message.\n *\n * @param {Message} msg - The `Message` this `Message` is in reply to.\n * @param {string} signature - The signature for the message body.\n * @param {Array} body - The body of the message as an array of arguments.\n * Must match the signature.\n */\n static newMethodReturn (msg, signature = '', body = []) {\n return new Message({\n type: METHOD_RETURN,\n replySerial: msg.serial,\n destination: msg.sender,\n signature: signature,\n body: body\n });\n }\n\n /**\n * Construct a new `Message` of type `SIGNAL` to broadcast on the bus.\n *\n * @param {string} path - The object path of this signal.\n * @param {string} iface - The interface of this signal.\n * @param {string} signature - The signature of the message body.\n * @param {Array] body - The body of the message as an array of arguments.\n * Must match the signature.\n */\n static newSignal (path, iface, name, signature = '', body = []) {\n return new Message({\n type: SIGNAL,\n interface: iface,\n path: path,\n member: name,\n signature: signature,\n body: body\n });\n }\n}\n\nmodule.exports = {\n Message: Message\n};\n","// parse signature from string to tree\n\nconst match = {\n '{': '}',\n '(': ')'\n};\n\nconst knownTypes = {};\n'(){}ybnqiuxtdsogarvehm*?@&^'.split('').forEach(function (c) {\n knownTypes[c] = true;\n});\n\nfunction parseSignature (signature) {\n let index = 0;\n function next () {\n if (index < signature.length) {\n const c = signature[index];\n ++index;\n return c;\n }\n return null;\n }\n\n function parseOne (c) {\n function checkNotEnd (c) {\n if (!c) {\n throw new Error('Bad signature: unexpected end');\n }\n return c;\n }\n\n if (!knownTypes[c]) { throw new Error(`Unknown type: \"${c}\" in signature \"${signature}\"`); }\n\n let ele;\n const res = { type: c, child: [] };\n switch (c) {\n case 'a': // array\n ele = next();\n checkNotEnd(ele);\n res.child.push(parseOne(ele));\n return res;\n case '{': // dict entry\n case '(': // struct\n while ((ele = next()) !== null && ele !== match[c]) { res.child.push(parseOne(ele)); }\n checkNotEnd(ele);\n return res;\n }\n return res;\n }\n\n const ret = [];\n let c;\n while ((c = next()) !== null) {\n ret.push(parseOne(c));\n }\n return ret;\n}\n\nfunction collapseSignature (value) {\n if (value.child.length === 0) {\n return value.type;\n }\n\n let type = value.type;\n for (let i = 0; i < value.child.length; ++i) {\n type += collapseSignature(value.child[i]);\n }\n if (type[0] === '{') {\n type += '}';\n } else if (type[0] === '(') {\n type += ')';\n }\n return type;\n}\n\nmodule.exports = {\n parseSignature: parseSignature,\n collapseSignature: collapseSignature\n};\n","/**\n * A module for exporting interfaces on a name on the message bus.\n *\n * @module interface\n */\nconst { parseSignature, collapseSignature } = require('../signature');\nconst variant = require('../variant');\nconst Variant = variant.Variant;\n\n/**\n * Used for [`Interface`]{@link module:interface~Interface} [property]{@link\n * module:interface.property} options to specify that clients have read access\n * to the property.\n *\n * @static\n */\nconst ACCESS_READ = 'read';\n\n/**\n * Used for [`Interface`]{@link module:interface~Interface} [property]{@link\n * module:interface.property} options to specify that clients have write access\n * to the property.\n *\n * @static\n */\nconst ACCESS_WRITE = 'write';\n\n/**\n * Used for [`Interface`]{@link module:interface~Interface} [property]{@link\n * module:interface.property} options to specify that clients have read and\n * write access to the property.\n *\n * @static\n */\nconst ACCESS_READWRITE = 'readwrite';\nconst EventEmitter = require('events');\nconst {\n assertInterfaceNameValid,\n assertMemberNameValid\n} = require('../validators');\n\n/**\n * A decorator function to define an [`Interface`]{@link\n * module:interface~Interface} class member as a property. The property will\n * be gotten and set from the class when users call the standard DBus methods\n * `org.freedesktop.DBus.Properties.Get`,\n * `org.freedesktop.DBus.Properties.Set`, and\n * `org.freedesktop.DBus.Properties.GetAll`. The property getters and setters\n * may throw a {@link DBusError} with an error name and message to return the\n * error to the client.\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#type-system}\n *\n * @static\n *\n * @example\n * class MyInterface extends Interface {\n * // uncomment below to use the decorator (jsdoc bug)\n * //@property({signature: 's'})\n * get MyProp() {\n * return this.myProp;\n * }\n * set MyProp(value) {\n * this.myProp = value;\n * }\n * }\n *\n * @param {object} options - The options for this property.\n * @param {string} options.signature - The DBus type signature for this property.\n * @param {access} [options.access=ACCESS_READWRITE] - The read and write\n * access of the property for clients (effects `Get` and `Set` property methods).\n * @param {string} [options.name] - The name of this property on the bus.\n * Defaults to the name of the class member being decorated.\n * @param {bool} [options.disabled=false] - Whether or not this property\n * will be advertised on the bus.\n */\nfunction property (options) {\n options.access = options.access || ACCESS_READWRITE;\n if (!options.signature) {\n throw new Error('missing signature for property');\n }\n options.signatureTree = parseSignature(options.signature);\n return function (descriptor) {\n options.name = options.name || descriptor.key;\n assertMemberNameValid(options.name);\n descriptor.finisher = function (klass) {\n klass.prototype.$properties = klass.prototype.$properties || [];\n klass.prototype.$properties[descriptor.key] = options;\n };\n return descriptor;\n };\n}\n\n/**\n * A decorator function to define an [`Interface`]{@link\n * module:interface~Interface} class member as a method. The method will be\n * called when the client calls it on the bus with the given arguments with\n * types specified by the `inSignature` in the method options. The method\n * should return a result specified by the `outSignature` which will be\n * returned to the client over the message bus. If multiple output parameters\n * are specified in the `outSignature`, they should be returned within an\n * array.\n *\n * The method may also be `async` or return a `Promise` with the result and the\n * reply will be sent once the promise returns with a response body.\n *\n * The method may throw a {@link DBusError} with an error name and\n * message to return the error to the client.\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#type-system}\n *\n * @static\n *\n * @example\n * // uncomment the decorators to use them (jsdoc bug)\n *\n * class MyInterface extends Interface {\n * //@method({inSignature: 's', outSignature: 's'})\n * async Echo(what) {\n * return what;\n * }\n *\n * //@method({inSignature: 'ss', outSignature: 'vv'})\n * ReturnsMultiple(what, what2) {\n * return [\n * new Variant('s', what),\n * new Variant('s', what2)\n * ];\n * }\n *\n * //@method({inSignature: '', outSignature: ''})\n * ThrowsError() {\n * // the error is returned to the client\n * throw new DBusError('org.test.iface.Error', 'something went wrong');\n * }\n * }\n *\n * @param {object} options - The options for this method.\n * @param {string} [options.inSignature=\"\"] - The DBus type signature for the\n * input to this method.\n * @param {string} [options.outSignature=\"\"] - The DBus type signature for the\n * output of this method.\n * @param {string} [options.name] - The name of this method on the bus.\n * Defaults to the name of the class member being decorated.\n * @param {bool} [options.disabled=false] - Whether or not this property\n * will be advertised on the bus.\n */\nfunction method (options) {\n // TODO allow overriding of methods?\n // TODO introspect the names of the arguments for the function:\n // https://stackoverflow.com/questions/1007981/how-to-get-function-parameter-names-values-dynamically\n options.disabled = !!options.disabled;\n options.inSignature = options.inSignature || '';\n options.outSignature = options.outSignature || '';\n options.inSignatureTree = parseSignature(options.inSignature);\n options.outSignatureTree = parseSignature(options.outSignature);\n return function (descriptor) {\n options.name = options.name || descriptor.key;\n assertMemberNameValid(options.name);\n options.fn = descriptor.descriptor.value;\n descriptor.finisher = function (klass) {\n klass.prototype.$methods = klass.prototype.$methods || [];\n klass.prototype.$methods[descriptor.key] = options;\n };\n return descriptor;\n };\n}\n\n/**\n * A decorator function to define an [`Interface`]{@link\n * module:interface~Interface} class member as a signal. To emit the signal on\n * the bus to listeners, just call the decorated method and the signal will be\n * emitted with the returned value with types specified by the `signature` in\n * the signal options. If the signal has multiple output parameters, they\n * should be returned in an array.\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#type-system}\n *\n * @static\n *\n * @example\n * // uncomment the decorators to use them (jsdoc bug)\n * class MyInterface extends Interface {\n * //@signal({signature: 's'})\n * HelloWorld(value) {\n * return value;\n * }\n *\n * //@signal({signature: 'ss'})\n * SignalMultiple(x) {\n * return [\n * 'hello',\n * 'world'\n * ];\n * }\n * }\n *\n * @param {object} options - The options for this property.\n * @param {string} options.signature - The DBus type signature for this signal.\n * @param {string} [options.name] - The name of this signal on the bus.\n * Defaults to the name of the class member being decorated.\n * @param {bool} [options.disabled=false] - Whether or not this property\n * will be advertised on the bus.\n */\nfunction signal (options) {\n // TODO introspect the names of the arguments for the function:\n // https://stackoverflow.com/questions/1007981/how-to-get-function-parameter-names-values-dynamically\n options.signature = options.signature || '';\n options.signatureTree = parseSignature(options.signature);\n return function (descriptor) {\n options.name = options.name || descriptor.key;\n assertMemberNameValid(options.name);\n options.fn = descriptor.descriptor.value;\n descriptor.descriptor.value = function () {\n if (options.disabled) {\n throw new Error('tried to call a disabled signal');\n }\n const result = options.fn.apply(this, arguments);\n this.$emitter.emit('signal', options, result);\n };\n descriptor.finisher = function (klass) {\n klass.prototype.$signals = klass.prototype.$signals || [];\n klass.prototype.$signals[descriptor.key] = options;\n };\n return descriptor;\n };\n}\n\n/**\n * The `Interface` is an abstract class used for defining and exporting an\n * interface on a DBus name. You can override this class to make your own DBus\n * interfaces. Use the decorators within this module to define the\n * [properties]{@link module:interface.property}, [methods]{@link\n * module:interface.method}, and [signals]{@link module:interface.signal} that\n * the interface has. These will be advertised to users in the introspection\n * xml gotten by the `org.freedesktop.DBus.Introspect` method on the name. See\n * the documentation for the decorators for more information. The constructor\n * of the `Interface` should call `super()` with the name of the interface that\n * will be exported.\n *\n * @example\n * class MyInterface extends Interface {\n * constructor() {\n * super('org.test.interface_name');\n * }\n * // define properties, methods, and signals with decorated functions\n * }\n * let bus = dbus.sessionBus();\n * let name = await bus.requestName('org.test.bus_name');\n * let iface = new MyInterface();\n * name.export('/org/test/path', iface);\n */\nclass Interface {\n /**\n * Create an interface. This should be called with the name of the interface\n * in the class that extends it.\n */\n constructor (name) {\n assertInterfaceNameValid(name);\n this.$name = name;\n this.$emitter = new EventEmitter();\n }\n\n /**\n * An alternative to the decorator functions to configure\n * [`Interface`]{@link module:interface~Interface} DBus members when\n * decorators cannot be supported.\n *\n * *Calling this method twice on the same `Interface` or mixing this method\n * with the decorator interface will result in undefined behavior that may be\n * specified at a future time.*\n *\n * @static\n * @example\n * ConfiguredInterface.configureMembers({\n * properties: {\n * SomeProperty: {\n * signature: 's'\n * }\n * },\n * methods: {\n * Echo: {\n * inSignature: 'v',\n * outSignature: 'v'\n * }\n * },\n * signals: {\n * HelloWorld: {\n * signature: 'ss'\n * }\n * }\n * });\n *\n * @param members {Object} - Member configuration object.\n * @param members.properties {Object} - The class methods to define as\n * properties. The key should be a method defined on the class and the value\n * should be the options for a [property]{@link module:interface.property}\n * decorator.\n * @param members.methods {Object} - The class methods to define as DBus\n * methods. The key should be a method defined on the class and the value\n * should be the options for a [method]{@link module:interface.method}\n * decorator.\n * @param members.signals {Object} - The class methods to define as signals.\n * The key should be a method defined on the class and hte value should be\n * options for a [signal]{@link module:interface.signal} decorator.\n */\n static configureMembers (members) {\n const properties = members.properties || {};\n const methods = members.methods || {};\n const signals = members.signals || {};\n\n this.prototype.$properties = {};\n this.prototype.$methods = {};\n this.prototype.$signals = {};\n\n for (const k of Object.keys(properties)) {\n const options = properties[k];\n options.name = options.name || k;\n options.access = options.access || ACCESS_READWRITE;\n if (!options.signature) {\n throw new Error('missing signature for property');\n }\n options.signatureTree = parseSignature(options.signature);\n assertMemberNameValid(options.name);\n this.prototype.$properties[options.name] = options;\n }\n\n for (const k of Object.keys(methods)) {\n const options = methods[k];\n options.name = options.name || k;\n assertMemberNameValid(options.name);\n options.disabled = !!options.disabled;\n options.inSignature = options.inSignature || '';\n options.outSignature = options.outSignature || '';\n options.inSignatureTree = parseSignature(options.inSignature);\n options.outSignatureTree = parseSignature(options.outSignature);\n options.fn = this.prototype[k];\n this.prototype.$methods[options.name] = options;\n }\n\n for (const k of Object.keys(signals)) {\n const options = signals[k];\n options.name = options.name || k;\n assertMemberNameValid(options.name);\n options.fn = this.prototype[k];\n options.signature = options.signature || '';\n options.signatureTree = parseSignature(options.signature);\n this.prototype[k] = function () {\n if (options.disabled) {\n throw new Error('tried to call a disabled signal');\n }\n const result = options.fn.apply(this, arguments);\n this.$emitter.emit('signal', options, result);\n };\n this.prototype.$signals[options.name] = options;\n }\n }\n\n /**\n * Emit the `PropertiesChanged` signal on an [`Interface`s]{@link\n * module:interface~Interface} associated standard\n * `org.freedesktop.DBus.Properties` interface with a map of new values and\n * invalidated properties. Pass the properties as JavaScript values.\n *\n * @static\n * @example\n * Interface.emitPropertiesChanged({ SomeProperty: 'bar' }, ['InvalidedProperty']);\n *\n * @param {module:interface~Interface} - the `Interface` to emit the `PropertiesChanged` signal on\n * @param {Object} - A map of property names and new property values that are changed.\n * @param {string[]} - A list of invalidated properties.\n */\n static emitPropertiesChanged (iface, changedProperties, invalidatedProperties = []) {\n if (!Array.isArray(invalidatedProperties) ||\n !invalidatedProperties.every((p) => typeof p === 'string')) {\n throw new Error('invalidated properties must be an array of strings');\n }\n\n // we transform them to variants here based on property signatures so they\n // don't have to\n const properties = iface.$properties || {};\n const changedPropertiesVariants = {};\n for (const p of Object.keys(changedProperties)) {\n if (properties[p] === undefined) {\n throw new Error(`got properties changed with unknown property: ${p}`);\n }\n changedPropertiesVariants[p] = new Variant(properties[p].signature, changedProperties[p]);\n }\n iface.$emitter.emit('properties-changed', changedPropertiesVariants, invalidatedProperties);\n }\n\n $introspect () {\n // TODO cache xml when the interface is declared\n const xml = {\n $: {\n name: this.$name\n }\n };\n\n const properties = this.$properties || {};\n for (const p of Object.keys(properties) || []) {\n const property = properties[p];\n if (property.disabled) {\n continue;\n }\n xml.property = xml.property || [];\n xml.property.push({\n $: {\n name: property.name,\n type: property.signature,\n access: property.access\n }\n });\n }\n\n const methods = this.$methods || {};\n for (const m of Object.keys(methods) || []) {\n const method = methods[m];\n if (method.disabled) {\n continue;\n }\n\n xml.method = xml.method || [];\n const methodXml = {\n $: {\n name: method.name\n },\n arg: [],\n annotation: []\n };\n\n for (const signature of method.inSignatureTree) {\n methodXml.arg.push({\n $: {\n direction: 'in',\n type: collapseSignature(signature)\n }\n });\n }\n\n for (const signature of method.outSignatureTree) {\n methodXml.arg.push({\n $: {\n direction: 'out',\n type: collapseSignature(signature)\n }\n });\n }\n\n if (method.noReply) {\n methodXml.annotation.push({\n $: {\n name: 'org.freedesktop.DBus.Method.NoReply',\n value: 'true'\n }\n });\n }\n\n xml.method.push(methodXml);\n }\n\n const signals = this.$signals || {};\n for (const s of Object.keys(signals) || []) {\n const signal = signals[s];\n if (signal.disabled) {\n continue;\n }\n xml.signal = xml.signal || [];\n const signalXml = {\n $: {\n name: signal.name\n },\n arg: []\n };\n\n for (const signature of signal.signatureTree) {\n signalXml.arg.push({\n $: {\n type: collapseSignature(signature)\n }\n });\n }\n\n xml.signal.push(signalXml);\n }\n\n return xml;\n }\n}\n\nmodule.exports = {\n ACCESS_READ: ACCESS_READ,\n ACCESS_WRITE: ACCESS_WRITE,\n ACCESS_READWRITE: ACCESS_READWRITE,\n property: property,\n method: method,\n signal: signal,\n Interface: Interface\n};\n","const { assertInterfaceNameValid } = require('./validators');\n/**\n * An error that can be thrown from DBus [`Interface`]{@link\n * module:interface~Interface} [methods]{@link module:interface.method} and\n * [property]{@link module:interface.property} getters and setters to return\n * the error to the client.\n *\n * This class will also be thrown by {@link ProxyInterface} method calls when\n * the interface method returns an error to the method call.\n *\n * @param {string} type - The type of error. Must be a valid DBus member name.\n * @param {string} text - The error text. Will be seen by the client.\n */\nclass DBusError extends Error {\n /**\n * Construct a new `DBusError` with the given type and text.\n */\n constructor (type, text, reply = null) {\n assertInterfaceNameValid(type);\n text = text || '';\n super(text);\n this.name = 'DBusError';\n this.type = type;\n this.text = text;\n this.reply = reply;\n }\n}\n\nmodule.exports = {\n DBusError: DBusError\n};\n","const fs = require('fs');\nconst variant = require('../variant');\nconst Variant = variant.Variant;\nconst { Message } = require('../message-type');\n\nconst {\n isObjectPathValid,\n isInterfaceNameValid,\n isMemberNameValid\n} = require('../validators');\n\nconst {\n ACCESS_READ,\n ACCESS_WRITE,\n ACCESS_READWRITE\n} = require('./interface');\n\nconst constants = require('../constants');\n\nconst {\n METHOD_RETURN\n} = constants.MessageType;\n\nconst { DBusError } = require('../errors');\n\nconst INVALID_ARGS = 'org.freedesktop.DBus.Error.InvalidArgs';\n\nfunction sendServiceError (bus, msg, errorMessage) {\n bus.send(Message.newError(msg, 'com.github.dbus_next.ServiceError', `Service error: ${errorMessage}`));\n return true;\n}\n\nfunction handleIntrospect (bus, msg, path) {\n bus.send(Message.newMethodReturn(msg, 's', [bus._introspect(path)]));\n}\n\nfunction handleGetProperty (bus, msg, path) {\n const [ifaceName, prop] = msg.body;\n\n if (!bus._serviceObjects[path]) {\n bus.send(Message.newError(msg, INVALID_ARGS, `Path not exported on bus: '${path}'`));\n return;\n }\n\n const obj = bus._getServiceObject(path);\n const iface = obj.interfaces[ifaceName];\n // TODO An empty string may be provided for the interface name; in this case,\n // if there are multiple properties on an object with the same name, the\n // results are undefined (picking one by according to an arbitrary\n // deterministic rule, or returning an error, are the reasonable\n // possibilities).\n if (!iface) {\n bus.send(Message.newError(msg, INVALID_ARGS, `No such interface: '${ifaceName}'`));\n return;\n }\n\n const properties = iface.$properties || {};\n\n let options = null;\n let propertyKey = null;\n for (const k of Object.keys(properties)) {\n if (properties[k].name === prop && !properties[k].disabled) {\n options = properties[k];\n propertyKey = k;\n break;\n }\n }\n if (options === null) {\n bus.send(Message.newError(msg, INVALID_ARGS, `No such property: '${prop}'`));\n return;\n }\n\n let propertyValue = null;\n\n try {\n propertyValue = iface[propertyKey];\n } catch (e) {\n if (e.name === 'DBusError') {\n bus.send(Message.newError(msg, e.type, e.text));\n } else {\n sendServiceError(bus, msg, `The service threw an error.\\n${e.stack}`);\n }\n return true;\n }\n\n if (propertyValue instanceof DBusError) {\n bus.send(Message.newError(msg, propertyValue.type, propertyValue.text));\n return true;\n } else if (propertyValue === undefined) {\n return sendServiceError(bus, msg, 'tried to get a property that is not set: ' + prop);\n }\n\n if (!(options.access === ACCESS_READWRITE ||\n options.access === ACCESS_READ)) {\n bus.send(Message.newError(msg, INVALID_ARGS, `Property does not have read access: '${prop}'`));\n }\n\n const body = new Variant(options.signature, propertyValue);\n\n bus.send(Message.newMethodReturn(msg, 'v', [body]));\n}\n\nfunction handleGetAllProperties (bus, msg, path) {\n const ifaceName = msg.body[0];\n\n if (!bus._serviceObjects[path]) {\n bus.send(Message.newError(msg, INVALID_ARGS, `Path not exported on bus: '${path}'`));\n return;\n }\n\n const obj = bus._getServiceObject(path);\n const iface = obj.interfaces[ifaceName];\n\n const result = {};\n if (iface) {\n const properties = iface.$properties || {};\n for (const k of Object.keys(properties)) {\n const p = properties[k];\n if (!(p.access === ACCESS_READ || p.access === ACCESS_READWRITE) || p.disabled) {\n continue;\n }\n\n let value;\n try {\n value = iface[k];\n } catch (e) {\n if (e.name === 'DBusError') {\n bus.send(Message.newError(msg, e.type, e.text));\n } else {\n sendServiceError(bus, msg, `The service threw an error.\\n${e.stack}`);\n }\n return true;\n }\n if (value instanceof DBusError) {\n bus.send(Message.newError(msg, value.type, value.text));\n return true;\n } else if (value === undefined) {\n return sendServiceError(bus, msg, 'tried to get a property that is not set: ' + p);\n }\n\n result[p.name] = new Variant(p.signature, value);\n }\n }\n\n bus.send(Message.newMethodReturn(msg, 'a{sv}', [result]));\n}\n\nfunction handleSetProperty (bus, msg, path) {\n const [ifaceName, prop, value] = msg.body;\n\n if (!bus._serviceObjects[path]) {\n bus.send(Message.newError(msg, INVALID_ARGS, `Path not exported on bus: '${path}'`));\n return;\n }\n\n const obj = bus._getServiceObject(path);\n const iface = obj.interfaces[ifaceName];\n\n if (!iface) {\n bus.send(Message.newError(msg, INVALID_ARGS, `Interface not found: '${ifaceName}'`));\n return;\n }\n\n const properties = iface.$properties || {};\n let options = null;\n let propertyKey = null;\n for (const k of Object.keys(properties)) {\n if (properties[k].name === prop && !properties[k].disabled) {\n options = properties[k];\n propertyKey = k;\n break;\n }\n }\n\n if (options === null) {\n bus.send(Message.newError(msg, INVALID_ARGS, `No such property: '${prop}'`));\n return;\n }\n\n if (!(options.access === ACCESS_WRITE || options.access === ACCESS_READWRITE)) {\n bus.send(Message.newError(msg, INVALID_ARGS, `Property does not have write access: '${prop}'`));\n }\n\n if (value.signature !== options.signature) {\n bus.send(Message.newError(msg, INVALID_ARGS, `Cannot set property '${prop}' with signature '${value.signature}' (expected '${options.signature}')`));\n return;\n }\n\n try {\n iface[propertyKey] = value.value;\n } catch (e) {\n if (e.name === 'DBusError') {\n bus.send(Message.newError(msg, e.type, e.text));\n } else {\n sendServiceError(bus, msg, `The service threw an error.\\n${e.stack}`);\n }\n return true;\n }\n\n bus.send(Message.newMethodReturn(msg, '', []));\n}\n\nfunction handleStdIfaces (bus, msg) {\n const {\n member,\n path,\n signature\n } = msg;\n\n const ifaceName = msg.interface;\n\n if (!isInterfaceNameValid(ifaceName)) {\n bus.send(Message.newError(msg, INVALID_ARGS, `Invalid interface name: '${ifaceName}'`));\n return true;\n }\n\n if (!isMemberNameValid(member)) {\n bus.send(Message.newError(msg, INVALID_ARGS, `Invalid member name: '${member}'`));\n return true;\n }\n\n if (!isObjectPathValid(path)) {\n bus.send(Message.newError(msg, INVALID_ARGS, `Invalid path name: '${path}'`));\n return true;\n }\n\n if (ifaceName === 'org.freedesktop.DBus.Introspectable' &&\n member === 'Introspect' &&\n !signature) {\n handleIntrospect(bus, msg, path);\n return true;\n } else if (ifaceName === 'org.freedesktop.DBus.Properties') {\n if (member === 'Get' && signature === 'ss') {\n handleGetProperty(bus, msg, path);\n return true;\n } else if (member === 'Set' && signature === 'ssv') {\n handleSetProperty(bus, msg, path);\n return true;\n } else if (member === 'GetAll') {\n handleGetAllProperties(bus, msg, path);\n return true;\n }\n } else if (ifaceName === 'org.freedesktop.DBus.Peer') {\n if (member === 'Ping' && !signature) {\n bus._connection.message({\n type: METHOD_RETURN,\n serial: bus._serial++,\n replySerial: msg.serial,\n destination: msg.sender\n });\n return true;\n } else if (member === 'GetMachineId' && !signature) {\n const machineId = fs.readFileSync('/var/lib/dbus/machine-id').toString().trim();\n bus._connection.message({\n type: METHOD_RETURN,\n serial: bus._serial++,\n replySerial: msg.serial,\n destination: msg.sender,\n signature: 's',\n body: [machineId]\n });\n return true;\n }\n }\n\n return false;\n}\n\nfunction handleMessage (msg, bus) {\n let {\n path,\n member,\n signature\n } = msg;\n\n const ifaceName = msg.interface;\n\n signature = signature || '';\n\n if (handleStdIfaces(bus, msg)) {\n return true;\n }\n\n if (!bus._serviceObjects[path]) {\n return false;\n }\n\n const obj = bus._getServiceObject(path);\n const iface = obj.interfaces[ifaceName];\n\n if (!iface) {\n return false;\n }\n\n const methods = iface.$methods || {};\n for (const m of Object.keys(methods)) {\n const method = methods[m];\n let result = null;\n\n const handleError = (e) => {\n if (e.name === 'DBusError') {\n bus.send(Message.newError(msg, e.type, e.text));\n } else {\n sendServiceError(bus, msg, `The service threw an error.\\n${e.stack}`);\n }\n };\n\n if (method.name === member && method.inSignature === signature) {\n try {\n result = method.fn.apply(iface, msg.body);\n } catch (e) {\n handleError(e);\n return true;\n }\n\n const sendReply = (body) => {\n if (method.noReply) return;\n if (body === undefined) {\n body = [];\n } else if (method.outSignatureTree.length === 1) {\n body = [body];\n } else if (method.outSignatureTree.length === 0) {\n return sendServiceError(bus, msg, `method ${iface.$name}.${method.name} was not expected to return a body.`);\n } else if (!Array.isArray(body)) {\n return sendServiceError(bus, msg, `method ${iface.$name}.${method.name} expected to return multiple arguments in an array (signature: '${method.outSignature}')`);\n }\n\n if (method.outSignatureTree.length !== body.length) {\n return sendServiceError(bus, msg, `method ${iface.$name}.${m} returned the wrong number of arguments (got ${body.length} expected ${method.outSignatureTree.length}) for signature '${method.outSignature}'`);\n }\n\n bus.send(Message.newMethodReturn(msg, method.outSignature, body));\n };\n\n if (result && result.constructor === Promise) {\n result.then(sendReply).catch(handleError);\n } else {\n sendReply(result);\n }\n\n return true;\n }\n }\n\n return false;\n}\n\nmodule.exports = handleMessage;\n","const { Message } = require('../message-type');\nconst Interface = require('./interface').Interface;\nconst assertObjectPathValid = require('../validators').assertObjectPathValid;\n\nclass ServiceObject {\n constructor (path, bus) {\n assertObjectPathValid(path);\n this.path = path;\n this.bus = bus;\n this.interfaces = {};\n this._handlers = {};\n }\n\n addInterface (iface) {\n if (!(iface instanceof Interface)) {\n throw new Error(`object.addInterface takes an Interface as the first argument (got ${iface})`);\n }\n if (this.interfaces[iface.$name]) {\n throw new Error(`an interface with name '${iface.$name}' is already exported on this object`);\n }\n this.interfaces[iface.$name] = iface;\n const that = this;\n\n const propertiesChangedHandler = function (changedProperties, invalidatedProperties) {\n const body = [\n iface.$name,\n changedProperties,\n invalidatedProperties\n ];\n that.bus.send(Message.newSignal(that.path, 'org.freedesktop.DBus.Properties', 'PropertiesChanged', 'sa{sv}as', body));\n };\n\n const signalHandler = function (options, result) {\n // TODO lots of repeated code with the method handler here\n const {\n signature,\n signatureTree,\n name\n } = options;\n if (result === undefined) {\n result = [];\n } else if (signatureTree.length === 1) {\n result = [result];\n } else if (!Array.isArray(result)) {\n throw new Error(`signal ${iface.$name}.${name} expected to return multiple arguments in an array (signature: '${signature}')`);\n }\n\n if (signatureTree.length !== result.length) {\n throw new Error(`signal ${iface.$name}.${name} returned the wrong number of arguments (got ${result.length} expected ${signatureTree.length}) for signature '${signature}'`);\n }\n\n that.bus.send(Message.newSignal(that.path, iface.$name, name, signature, result));\n };\n\n this._handlers[iface.$name] = {\n propertiesChanged: propertiesChangedHandler,\n signal: signalHandler\n };\n\n iface.$emitter.on('signal', signalHandler);\n iface.$emitter.on('properties-changed', propertiesChangedHandler);\n }\n\n removeInterface (iface) {\n if (!(iface instanceof Interface)) {\n throw new Error(`object.removeInterface takes an Interface as the first argument (got ${iface})`);\n }\n if (!this.interfaces[iface.$name]) {\n throw new Error(`Interface ${iface.$name} not exported on this object`);\n }\n const handlers = this._handlers[iface.$name];\n iface.$emitter.removeListener('signal', handlers.signal);\n iface.$emitter.removeListener('properties-changed', handlers.propertiesChanged);\n delete this._handlers[iface.$name];\n delete this.interfaces[iface.$name];\n }\n\n introspect () {\n const interfaces = ServiceObject.defaultInterfaces();\n\n for (const i of Object.keys(this.interfaces)) {\n const iface = this.interfaces[i];\n interfaces.push(iface.$introspect());\n }\n\n return interfaces;\n }\n\n static defaultInterfaces () {\n return [\n {\n $: { name: 'org.freedesktop.DBus.Introspectable' },\n method: [\n {\n $: { name: 'Introspect' },\n arg: [\n {\n $: { name: 'data', direction: 'out', type: 's' }\n }\n ]\n }\n ]\n },\n {\n $: { name: 'org.freedesktop.DBus.Peer' },\n method: [\n {\n $: { name: 'GetMachineId' },\n arg: [\n { $: { direction: 'out', name: 'machine_uuid', type: 's' } }\n ]\n },\n {\n $: { name: 'Ping' }\n }\n ]\n },\n {\n $: { name: 'org.freedesktop.DBus.Properties' },\n method: [\n {\n $: { name: 'Get' },\n arg: [\n { $: { direction: 'in', type: 's' } },\n { $: { direction: 'in', type: 's' } },\n { $: { direction: 'out', type: 'v' } }\n ]\n },\n {\n $: { name: 'Set' },\n arg: [\n { $: { direction: 'in', type: 's' } },\n { $: { direction: 'in', type: 's' } },\n { $: { direction: 'in', type: 'v' } }\n ]\n },\n {\n $: { name: 'GetAll' },\n arg: [\n { $: { direction: 'in', type: 's' } },\n { $: { direction: 'out', type: 'a{sv}' } }\n ]\n }\n ],\n signal: [\n {\n $: { name: 'PropertiesChanged' },\n arg: [\n { $: { type: 's' } },\n { $: { type: 'a{sv}' } },\n { $: { type: 'as' } }\n ]\n }\n ]\n }\n ];\n }\n}\n\nmodule.exports = ServiceObject;\n","// Generated by CoffeeScript 1.12.7\n(function() {\n exports.defaults = {\n \"0.1\": {\n explicitCharkey: false,\n trim: true,\n normalize: true,\n normalizeTags: false,\n attrkey: \"@\",\n charkey: \"#\",\n explicitArray: false,\n ignoreAttrs: false,\n mergeAttrs: false,\n explicitRoot: false,\n validator: null,\n xmlns: false,\n explicitChildren: false,\n childkey: '@@',\n charsAsChildren: false,\n includeWhiteChars: false,\n async: false,\n strict: true,\n attrNameProcessors: null,\n attrValueProcessors: null,\n tagNameProcessors: null,\n valueProcessors: null,\n emptyTag: ''\n },\n \"0.2\": {\n explicitCharkey: false,\n trim: false,\n normalize: false,\n normalizeTags: false,\n attrkey: \"$\",\n charkey: \"_\",\n explicitArray: true,\n ignoreAttrs: false,\n mergeAttrs: false,\n explicitRoot: true,\n validator: null,\n xmlns: false,\n explicitChildren: false,\n preserveChildrenOrder: false,\n childkey: '$$',\n charsAsChildren: false,\n includeWhiteChars: false,\n async: false,\n strict: true,\n attrNameProcessors: null,\n attrValueProcessors: null,\n tagNameProcessors: null,\n valueProcessors: null,\n rootName: 'root',\n xmldec: {\n 'version': '1.0',\n 'encoding': 'UTF-8',\n 'standalone': true\n },\n doctype: null,\n renderOpts: {\n 'pretty': true,\n 'indent': ' ',\n 'newline': '\\n'\n },\n headless: false,\n chunkSize: 10000,\n emptyTag: '',\n cdata: false\n }\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var assign, getValue, isArray, isEmpty, isFunction, isObject, isPlainObject,\n slice = [].slice,\n hasProp = {}.hasOwnProperty;\n\n assign = function() {\n var i, key, len, source, sources, target;\n target = arguments[0], sources = 2 <= arguments.length ? slice.call(arguments, 1) : [];\n if (isFunction(Object.assign)) {\n Object.assign.apply(null, arguments);\n } else {\n for (i = 0, len = sources.length; i < len; i++) {\n source = sources[i];\n if (source != null) {\n for (key in source) {\n if (!hasProp.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n }\n }\n return target;\n };\n\n isFunction = function(val) {\n return !!val && Object.prototype.toString.call(val) === '[object Function]';\n };\n\n isObject = function(val) {\n var ref;\n return !!val && ((ref = typeof val) === 'function' || ref === 'object');\n };\n\n isArray = function(val) {\n if (isFunction(Array.isArray)) {\n return Array.isArray(val);\n } else {\n return Object.prototype.toString.call(val) === '[object Array]';\n }\n };\n\n isEmpty = function(val) {\n var key;\n if (isArray(val)) {\n return !val.length;\n } else {\n for (key in val) {\n if (!hasProp.call(val, key)) continue;\n return false;\n }\n return true;\n }\n };\n\n isPlainObject = function(val) {\n var ctor, proto;\n return isObject(val) && (proto = Object.getPrototypeOf(val)) && (ctor = proto.constructor) && (typeof ctor === 'function') && (ctor instanceof ctor) && (Function.prototype.toString.call(ctor) === Function.prototype.toString.call(Object));\n };\n\n getValue = function(obj) {\n if (isFunction(obj.valueOf)) {\n return obj.valueOf();\n } else {\n return obj;\n }\n };\n\n module.exports.assign = assign;\n\n module.exports.isFunction = isFunction;\n\n module.exports.isObject = isObject;\n\n module.exports.isArray = isArray;\n\n module.exports.isEmpty = isEmpty;\n\n module.exports.isPlainObject = isPlainObject;\n\n module.exports.getValue = getValue;\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDOMImplementation;\n\n module.exports = XMLDOMImplementation = (function() {\n function XMLDOMImplementation() {}\n\n XMLDOMImplementation.prototype.hasFeature = function(feature, version) {\n return true;\n };\n\n XMLDOMImplementation.prototype.createDocumentType = function(qualifiedName, publicId, systemId) {\n throw new Error(\"This DOM method is not implemented.\");\n };\n\n XMLDOMImplementation.prototype.createDocument = function(namespaceURI, qualifiedName, doctype) {\n throw new Error(\"This DOM method is not implemented.\");\n };\n\n XMLDOMImplementation.prototype.createHTMLDocument = function(title) {\n throw new Error(\"This DOM method is not implemented.\");\n };\n\n XMLDOMImplementation.prototype.getFeature = function(feature, version) {\n throw new Error(\"This DOM method is not implemented.\");\n };\n\n return XMLDOMImplementation;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDOMErrorHandler;\n\n module.exports = XMLDOMErrorHandler = (function() {\n function XMLDOMErrorHandler() {}\n\n XMLDOMErrorHandler.prototype.handleError = function(error) {\n throw new Error(error);\n };\n\n return XMLDOMErrorHandler;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDOMStringList;\n\n module.exports = XMLDOMStringList = (function() {\n function XMLDOMStringList(arr) {\n this.arr = arr || [];\n }\n\n Object.defineProperty(XMLDOMStringList.prototype, 'length', {\n get: function() {\n return this.arr.length;\n }\n });\n\n XMLDOMStringList.prototype.item = function(index) {\n return this.arr[index] || null;\n };\n\n XMLDOMStringList.prototype.contains = function(str) {\n return this.arr.indexOf(str) !== -1;\n };\n\n return XMLDOMStringList;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDOMConfiguration, XMLDOMErrorHandler, XMLDOMStringList;\n\n XMLDOMErrorHandler = require('./XMLDOMErrorHandler');\n\n XMLDOMStringList = require('./XMLDOMStringList');\n\n module.exports = XMLDOMConfiguration = (function() {\n function XMLDOMConfiguration() {\n var clonedSelf;\n this.defaultParams = {\n \"canonical-form\": false,\n \"cdata-sections\": false,\n \"comments\": false,\n \"datatype-normalization\": false,\n \"element-content-whitespace\": true,\n \"entities\": true,\n \"error-handler\": new XMLDOMErrorHandler(),\n \"infoset\": true,\n \"validate-if-schema\": false,\n \"namespaces\": true,\n \"namespace-declarations\": true,\n \"normalize-characters\": false,\n \"schema-location\": '',\n \"schema-type\": '',\n \"split-cdata-sections\": true,\n \"validate\": false,\n \"well-formed\": true\n };\n this.params = clonedSelf = Object.create(this.defaultParams);\n }\n\n Object.defineProperty(XMLDOMConfiguration.prototype, 'parameterNames', {\n get: function() {\n return new XMLDOMStringList(Object.keys(this.defaultParams));\n }\n });\n\n XMLDOMConfiguration.prototype.getParameter = function(name) {\n if (this.params.hasOwnProperty(name)) {\n return this.params[name];\n } else {\n return null;\n }\n };\n\n XMLDOMConfiguration.prototype.canSetParameter = function(name, value) {\n return true;\n };\n\n XMLDOMConfiguration.prototype.setParameter = function(name, value) {\n if (value != null) {\n return this.params[name] = value;\n } else {\n return delete this.params[name];\n }\n };\n\n return XMLDOMConfiguration;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n module.exports = {\n Element: 1,\n Attribute: 2,\n Text: 3,\n CData: 4,\n EntityReference: 5,\n EntityDeclaration: 6,\n ProcessingInstruction: 7,\n Comment: 8,\n Document: 9,\n DocType: 10,\n DocumentFragment: 11,\n NotationDeclaration: 12,\n Declaration: 201,\n Raw: 202,\n AttributeDeclaration: 203,\n ElementDeclaration: 204,\n Dummy: 205\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLAttribute, XMLNode;\n\n NodeType = require('./NodeType');\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLAttribute = (function() {\n function XMLAttribute(parent, name, value) {\n this.parent = parent;\n if (this.parent) {\n this.options = this.parent.options;\n this.stringify = this.parent.stringify;\n }\n if (name == null) {\n throw new Error(\"Missing attribute name. \" + this.debugInfo(name));\n }\n this.name = this.stringify.name(name);\n this.value = this.stringify.attValue(value);\n this.type = NodeType.Attribute;\n this.isId = false;\n this.schemaTypeInfo = null;\n }\n\n Object.defineProperty(XMLAttribute.prototype, 'nodeType', {\n get: function() {\n return this.type;\n }\n });\n\n Object.defineProperty(XMLAttribute.prototype, 'ownerElement', {\n get: function() {\n return this.parent;\n }\n });\n\n Object.defineProperty(XMLAttribute.prototype, 'textContent', {\n get: function() {\n return this.value;\n },\n set: function(value) {\n return this.value = value || '';\n }\n });\n\n Object.defineProperty(XMLAttribute.prototype, 'namespaceURI', {\n get: function() {\n return '';\n }\n });\n\n Object.defineProperty(XMLAttribute.prototype, 'prefix', {\n get: function() {\n return '';\n }\n });\n\n Object.defineProperty(XMLAttribute.prototype, 'localName', {\n get: function() {\n return this.name;\n }\n });\n\n Object.defineProperty(XMLAttribute.prototype, 'specified', {\n get: function() {\n return true;\n }\n });\n\n XMLAttribute.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLAttribute.prototype.toString = function(options) {\n return this.options.writer.attribute(this, this.options.writer.filterOptions(options));\n };\n\n XMLAttribute.prototype.debugInfo = function(name) {\n name = name || this.name;\n if (name == null) {\n return \"parent: <\" + this.parent.name + \">\";\n } else {\n return \"attribute: {\" + name + \"}, parent: <\" + this.parent.name + \">\";\n }\n };\n\n XMLAttribute.prototype.isEqualNode = function(node) {\n if (node.namespaceURI !== this.namespaceURI) {\n return false;\n }\n if (node.prefix !== this.prefix) {\n return false;\n }\n if (node.localName !== this.localName) {\n return false;\n }\n if (node.value !== this.value) {\n return false;\n }\n return true;\n };\n\n return XMLAttribute;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLNamedNodeMap;\n\n module.exports = XMLNamedNodeMap = (function() {\n function XMLNamedNodeMap(nodes) {\n this.nodes = nodes;\n }\n\n Object.defineProperty(XMLNamedNodeMap.prototype, 'length', {\n get: function() {\n return Object.keys(this.nodes).length || 0;\n }\n });\n\n XMLNamedNodeMap.prototype.clone = function() {\n return this.nodes = null;\n };\n\n XMLNamedNodeMap.prototype.getNamedItem = function(name) {\n return this.nodes[name];\n };\n\n XMLNamedNodeMap.prototype.setNamedItem = function(node) {\n var oldNode;\n oldNode = this.nodes[node.nodeName];\n this.nodes[node.nodeName] = node;\n return oldNode || null;\n };\n\n XMLNamedNodeMap.prototype.removeNamedItem = function(name) {\n var oldNode;\n oldNode = this.nodes[name];\n delete this.nodes[name];\n return oldNode || null;\n };\n\n XMLNamedNodeMap.prototype.item = function(index) {\n return this.nodes[Object.keys(this.nodes)[index]] || null;\n };\n\n XMLNamedNodeMap.prototype.getNamedItemNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\");\n };\n\n XMLNamedNodeMap.prototype.setNamedItemNS = function(node) {\n throw new Error(\"This DOM method is not implemented.\");\n };\n\n XMLNamedNodeMap.prototype.removeNamedItemNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\");\n };\n\n return XMLNamedNodeMap;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLAttribute, XMLElement, XMLNamedNodeMap, XMLNode, getValue, isFunction, isObject, ref,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction, getValue = ref.getValue;\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n XMLAttribute = require('./XMLAttribute');\n\n XMLNamedNodeMap = require('./XMLNamedNodeMap');\n\n module.exports = XMLElement = (function(superClass) {\n extend(XMLElement, superClass);\n\n function XMLElement(parent, name, attributes) {\n var child, j, len, ref1;\n XMLElement.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing element name. \" + this.debugInfo());\n }\n this.name = this.stringify.name(name);\n this.type = NodeType.Element;\n this.attribs = {};\n this.schemaTypeInfo = null;\n if (attributes != null) {\n this.attribute(attributes);\n }\n if (parent.type === NodeType.Document) {\n this.isRoot = true;\n this.documentObject = parent;\n parent.rootObject = this;\n if (parent.children) {\n ref1 = parent.children;\n for (j = 0, len = ref1.length; j < len; j++) {\n child = ref1[j];\n if (child.type === NodeType.DocType) {\n child.name = this.name;\n break;\n }\n }\n }\n }\n }\n\n Object.defineProperty(XMLElement.prototype, 'tagName', {\n get: function() {\n return this.name;\n }\n });\n\n Object.defineProperty(XMLElement.prototype, 'namespaceURI', {\n get: function() {\n return '';\n }\n });\n\n Object.defineProperty(XMLElement.prototype, 'prefix', {\n get: function() {\n return '';\n }\n });\n\n Object.defineProperty(XMLElement.prototype, 'localName', {\n get: function() {\n return this.name;\n }\n });\n\n Object.defineProperty(XMLElement.prototype, 'id', {\n get: function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n }\n });\n\n Object.defineProperty(XMLElement.prototype, 'className', {\n get: function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n }\n });\n\n Object.defineProperty(XMLElement.prototype, 'classList', {\n get: function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n }\n });\n\n Object.defineProperty(XMLElement.prototype, 'attributes', {\n get: function() {\n if (!this.attributeMap || !this.attributeMap.nodes) {\n this.attributeMap = new XMLNamedNodeMap(this.attribs);\n }\n return this.attributeMap;\n }\n });\n\n XMLElement.prototype.clone = function() {\n var att, attName, clonedSelf, ref1;\n clonedSelf = Object.create(this);\n if (clonedSelf.isRoot) {\n clonedSelf.documentObject = null;\n }\n clonedSelf.attribs = {};\n ref1 = this.attribs;\n for (attName in ref1) {\n if (!hasProp.call(ref1, attName)) continue;\n att = ref1[attName];\n clonedSelf.attribs[attName] = att.clone();\n }\n clonedSelf.children = [];\n this.children.forEach(function(child) {\n var clonedChild;\n clonedChild = child.clone();\n clonedChild.parent = clonedSelf;\n return clonedSelf.children.push(clonedChild);\n });\n return clonedSelf;\n };\n\n XMLElement.prototype.attribute = function(name, value) {\n var attName, attValue;\n if (name != null) {\n name = getValue(name);\n }\n if (isObject(name)) {\n for (attName in name) {\n if (!hasProp.call(name, attName)) continue;\n attValue = name[attName];\n this.attribute(attName, attValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n if (this.options.keepNullAttributes && (value == null)) {\n this.attribs[name] = new XMLAttribute(this, name, \"\");\n } else if (value != null) {\n this.attribs[name] = new XMLAttribute(this, name, value);\n }\n }\n return this;\n };\n\n XMLElement.prototype.removeAttribute = function(name) {\n var attName, j, len;\n if (name == null) {\n throw new Error(\"Missing attribute name. \" + this.debugInfo());\n }\n name = getValue(name);\n if (Array.isArray(name)) {\n for (j = 0, len = name.length; j < len; j++) {\n attName = name[j];\n delete this.attribs[attName];\n }\n } else {\n delete this.attribs[name];\n }\n return this;\n };\n\n XMLElement.prototype.toString = function(options) {\n return this.options.writer.element(this, this.options.writer.filterOptions(options));\n };\n\n XMLElement.prototype.att = function(name, value) {\n return this.attribute(name, value);\n };\n\n XMLElement.prototype.a = function(name, value) {\n return this.attribute(name, value);\n };\n\n XMLElement.prototype.getAttribute = function(name) {\n if (this.attribs.hasOwnProperty(name)) {\n return this.attribs[name].value;\n } else {\n return null;\n }\n };\n\n XMLElement.prototype.setAttribute = function(name, value) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.getAttributeNode = function(name) {\n if (this.attribs.hasOwnProperty(name)) {\n return this.attribs[name];\n } else {\n return null;\n }\n };\n\n XMLElement.prototype.setAttributeNode = function(newAttr) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.removeAttributeNode = function(oldAttr) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.getElementsByTagName = function(name) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.getAttributeNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.setAttributeNS = function(namespaceURI, qualifiedName, value) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.removeAttributeNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.getAttributeNodeNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.setAttributeNodeNS = function(newAttr) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.getElementsByTagNameNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.hasAttribute = function(name) {\n return this.attribs.hasOwnProperty(name);\n };\n\n XMLElement.prototype.hasAttributeNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.setIdAttribute = function(name, isId) {\n if (this.attribs.hasOwnProperty(name)) {\n return this.attribs[name].isId;\n } else {\n return isId;\n }\n };\n\n XMLElement.prototype.setIdAttributeNS = function(namespaceURI, localName, isId) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.setIdAttributeNode = function(idAttr, isId) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.getElementsByTagName = function(tagname) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.getElementsByTagNameNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.getElementsByClassName = function(classNames) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.isEqualNode = function(node) {\n var i, j, ref1;\n if (!XMLElement.__super__.isEqualNode.apply(this, arguments).isEqualNode(node)) {\n return false;\n }\n if (node.namespaceURI !== this.namespaceURI) {\n return false;\n }\n if (node.prefix !== this.prefix) {\n return false;\n }\n if (node.localName !== this.localName) {\n return false;\n }\n if (node.attribs.length !== this.attribs.length) {\n return false;\n }\n for (i = j = 0, ref1 = this.attribs.length - 1; 0 <= ref1 ? j <= ref1 : j >= ref1; i = 0 <= ref1 ? ++j : --j) {\n if (!this.attribs[i].isEqualNode(node.attribs[i])) {\n return false;\n }\n }\n return true;\n };\n\n return XMLElement;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLCharacterData, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLCharacterData = (function(superClass) {\n extend(XMLCharacterData, superClass);\n\n function XMLCharacterData(parent) {\n XMLCharacterData.__super__.constructor.call(this, parent);\n this.value = '';\n }\n\n Object.defineProperty(XMLCharacterData.prototype, 'data', {\n get: function() {\n return this.value;\n },\n set: function(value) {\n return this.value = value || '';\n }\n });\n\n Object.defineProperty(XMLCharacterData.prototype, 'length', {\n get: function() {\n return this.value.length;\n }\n });\n\n Object.defineProperty(XMLCharacterData.prototype, 'textContent', {\n get: function() {\n return this.value;\n },\n set: function(value) {\n return this.value = value || '';\n }\n });\n\n XMLCharacterData.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLCharacterData.prototype.substringData = function(offset, count) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLCharacterData.prototype.appendData = function(arg) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLCharacterData.prototype.insertData = function(offset, arg) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLCharacterData.prototype.deleteData = function(offset, count) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLCharacterData.prototype.replaceData = function(offset, count, arg) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLCharacterData.prototype.isEqualNode = function(node) {\n if (!XMLCharacterData.__super__.isEqualNode.apply(this, arguments).isEqualNode(node)) {\n return false;\n }\n if (node.data !== this.data) {\n return false;\n }\n return true;\n };\n\n return XMLCharacterData;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLCData, XMLCharacterData,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n NodeType = require('./NodeType');\n\n XMLCharacterData = require('./XMLCharacterData');\n\n module.exports = XMLCData = (function(superClass) {\n extend(XMLCData, superClass);\n\n function XMLCData(parent, text) {\n XMLCData.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing CDATA text. \" + this.debugInfo());\n }\n this.name = \"#cdata-section\";\n this.type = NodeType.CData;\n this.value = this.stringify.cdata(text);\n }\n\n XMLCData.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLCData.prototype.toString = function(options) {\n return this.options.writer.cdata(this, this.options.writer.filterOptions(options));\n };\n\n return XMLCData;\n\n })(XMLCharacterData);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLCharacterData, XMLComment,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n NodeType = require('./NodeType');\n\n XMLCharacterData = require('./XMLCharacterData');\n\n module.exports = XMLComment = (function(superClass) {\n extend(XMLComment, superClass);\n\n function XMLComment(parent, text) {\n XMLComment.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing comment text. \" + this.debugInfo());\n }\n this.name = \"#comment\";\n this.type = NodeType.Comment;\n this.value = this.stringify.comment(text);\n }\n\n XMLComment.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLComment.prototype.toString = function(options) {\n return this.options.writer.comment(this, this.options.writer.filterOptions(options));\n };\n\n return XMLComment;\n\n })(XMLCharacterData);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLDeclaration, XMLNode, isObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isObject = require('./Utility').isObject;\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n module.exports = XMLDeclaration = (function(superClass) {\n extend(XMLDeclaration, superClass);\n\n function XMLDeclaration(parent, version, encoding, standalone) {\n var ref;\n XMLDeclaration.__super__.constructor.call(this, parent);\n if (isObject(version)) {\n ref = version, version = ref.version, encoding = ref.encoding, standalone = ref.standalone;\n }\n if (!version) {\n version = '1.0';\n }\n this.type = NodeType.Declaration;\n this.version = this.stringify.xmlVersion(version);\n if (encoding != null) {\n this.encoding = this.stringify.xmlEncoding(encoding);\n }\n if (standalone != null) {\n this.standalone = this.stringify.xmlStandalone(standalone);\n }\n }\n\n XMLDeclaration.prototype.toString = function(options) {\n return this.options.writer.declaration(this, this.options.writer.filterOptions(options));\n };\n\n return XMLDeclaration;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLDTDAttList, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n module.exports = XMLDTDAttList = (function(superClass) {\n extend(XMLDTDAttList, superClass);\n\n function XMLDTDAttList(parent, elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n XMLDTDAttList.__super__.constructor.call(this, parent);\n if (elementName == null) {\n throw new Error(\"Missing DTD element name. \" + this.debugInfo());\n }\n if (attributeName == null) {\n throw new Error(\"Missing DTD attribute name. \" + this.debugInfo(elementName));\n }\n if (!attributeType) {\n throw new Error(\"Missing DTD attribute type. \" + this.debugInfo(elementName));\n }\n if (!defaultValueType) {\n throw new Error(\"Missing DTD attribute default. \" + this.debugInfo(elementName));\n }\n if (defaultValueType.indexOf('#') !== 0) {\n defaultValueType = '#' + defaultValueType;\n }\n if (!defaultValueType.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/)) {\n throw new Error(\"Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT. \" + this.debugInfo(elementName));\n }\n if (defaultValue && !defaultValueType.match(/^(#FIXED|#DEFAULT)$/)) {\n throw new Error(\"Default value only applies to #FIXED or #DEFAULT. \" + this.debugInfo(elementName));\n }\n this.elementName = this.stringify.name(elementName);\n this.type = NodeType.AttributeDeclaration;\n this.attributeName = this.stringify.name(attributeName);\n this.attributeType = this.stringify.dtdAttType(attributeType);\n if (defaultValue) {\n this.defaultValue = this.stringify.dtdAttDefault(defaultValue);\n }\n this.defaultValueType = defaultValueType;\n }\n\n XMLDTDAttList.prototype.toString = function(options) {\n return this.options.writer.dtdAttList(this, this.options.writer.filterOptions(options));\n };\n\n return XMLDTDAttList;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLDTDEntity, XMLNode, isObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isObject = require('./Utility').isObject;\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n module.exports = XMLDTDEntity = (function(superClass) {\n extend(XMLDTDEntity, superClass);\n\n function XMLDTDEntity(parent, pe, name, value) {\n XMLDTDEntity.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing DTD entity name. \" + this.debugInfo(name));\n }\n if (value == null) {\n throw new Error(\"Missing DTD entity value. \" + this.debugInfo(name));\n }\n this.pe = !!pe;\n this.name = this.stringify.name(name);\n this.type = NodeType.EntityDeclaration;\n if (!isObject(value)) {\n this.value = this.stringify.dtdEntityValue(value);\n this.internal = true;\n } else {\n if (!value.pubID && !value.sysID) {\n throw new Error(\"Public and/or system identifiers are required for an external entity. \" + this.debugInfo(name));\n }\n if (value.pubID && !value.sysID) {\n throw new Error(\"System identifier is required for a public external entity. \" + this.debugInfo(name));\n }\n this.internal = false;\n if (value.pubID != null) {\n this.pubID = this.stringify.dtdPubID(value.pubID);\n }\n if (value.sysID != null) {\n this.sysID = this.stringify.dtdSysID(value.sysID);\n }\n if (value.nData != null) {\n this.nData = this.stringify.dtdNData(value.nData);\n }\n if (this.pe && this.nData) {\n throw new Error(\"Notation declaration is not allowed in a parameter entity. \" + this.debugInfo(name));\n }\n }\n }\n\n Object.defineProperty(XMLDTDEntity.prototype, 'publicId', {\n get: function() {\n return this.pubID;\n }\n });\n\n Object.defineProperty(XMLDTDEntity.prototype, 'systemId', {\n get: function() {\n return this.sysID;\n }\n });\n\n Object.defineProperty(XMLDTDEntity.prototype, 'notationName', {\n get: function() {\n return this.nData || null;\n }\n });\n\n Object.defineProperty(XMLDTDEntity.prototype, 'inputEncoding', {\n get: function() {\n return null;\n }\n });\n\n Object.defineProperty(XMLDTDEntity.prototype, 'xmlEncoding', {\n get: function() {\n return null;\n }\n });\n\n Object.defineProperty(XMLDTDEntity.prototype, 'xmlVersion', {\n get: function() {\n return null;\n }\n });\n\n XMLDTDEntity.prototype.toString = function(options) {\n return this.options.writer.dtdEntity(this, this.options.writer.filterOptions(options));\n };\n\n return XMLDTDEntity;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLDTDElement, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n module.exports = XMLDTDElement = (function(superClass) {\n extend(XMLDTDElement, superClass);\n\n function XMLDTDElement(parent, name, value) {\n XMLDTDElement.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing DTD element name. \" + this.debugInfo());\n }\n if (!value) {\n value = '(#PCDATA)';\n }\n if (Array.isArray(value)) {\n value = '(' + value.join(',') + ')';\n }\n this.name = this.stringify.name(name);\n this.type = NodeType.ElementDeclaration;\n this.value = this.stringify.dtdElementValue(value);\n }\n\n XMLDTDElement.prototype.toString = function(options) {\n return this.options.writer.dtdElement(this, this.options.writer.filterOptions(options));\n };\n\n return XMLDTDElement;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLDTDNotation, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n module.exports = XMLDTDNotation = (function(superClass) {\n extend(XMLDTDNotation, superClass);\n\n function XMLDTDNotation(parent, name, value) {\n XMLDTDNotation.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing DTD notation name. \" + this.debugInfo(name));\n }\n if (!value.pubID && !value.sysID) {\n throw new Error(\"Public or system identifiers are required for an external entity. \" + this.debugInfo(name));\n }\n this.name = this.stringify.name(name);\n this.type = NodeType.NotationDeclaration;\n if (value.pubID != null) {\n this.pubID = this.stringify.dtdPubID(value.pubID);\n }\n if (value.sysID != null) {\n this.sysID = this.stringify.dtdSysID(value.sysID);\n }\n }\n\n Object.defineProperty(XMLDTDNotation.prototype, 'publicId', {\n get: function() {\n return this.pubID;\n }\n });\n\n Object.defineProperty(XMLDTDNotation.prototype, 'systemId', {\n get: function() {\n return this.sysID;\n }\n });\n\n XMLDTDNotation.prototype.toString = function(options) {\n return this.options.writer.dtdNotation(this, this.options.writer.filterOptions(options));\n };\n\n return XMLDTDNotation;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDocType, XMLNamedNodeMap, XMLNode, isObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isObject = require('./Utility').isObject;\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n XMLNamedNodeMap = require('./XMLNamedNodeMap');\n\n module.exports = XMLDocType = (function(superClass) {\n extend(XMLDocType, superClass);\n\n function XMLDocType(parent, pubID, sysID) {\n var child, i, len, ref, ref1, ref2;\n XMLDocType.__super__.constructor.call(this, parent);\n this.type = NodeType.DocType;\n if (parent.children) {\n ref = parent.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n if (child.type === NodeType.Element) {\n this.name = child.name;\n break;\n }\n }\n }\n this.documentObject = parent;\n if (isObject(pubID)) {\n ref1 = pubID, pubID = ref1.pubID, sysID = ref1.sysID;\n }\n if (sysID == null) {\n ref2 = [pubID, sysID], sysID = ref2[0], pubID = ref2[1];\n }\n if (pubID != null) {\n this.pubID = this.stringify.dtdPubID(pubID);\n }\n if (sysID != null) {\n this.sysID = this.stringify.dtdSysID(sysID);\n }\n }\n\n Object.defineProperty(XMLDocType.prototype, 'entities', {\n get: function() {\n var child, i, len, nodes, ref;\n nodes = {};\n ref = this.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n if ((child.type === NodeType.EntityDeclaration) && !child.pe) {\n nodes[child.name] = child;\n }\n }\n return new XMLNamedNodeMap(nodes);\n }\n });\n\n Object.defineProperty(XMLDocType.prototype, 'notations', {\n get: function() {\n var child, i, len, nodes, ref;\n nodes = {};\n ref = this.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n if (child.type === NodeType.NotationDeclaration) {\n nodes[child.name] = child;\n }\n }\n return new XMLNamedNodeMap(nodes);\n }\n });\n\n Object.defineProperty(XMLDocType.prototype, 'publicId', {\n get: function() {\n return this.pubID;\n }\n });\n\n Object.defineProperty(XMLDocType.prototype, 'systemId', {\n get: function() {\n return this.sysID;\n }\n });\n\n Object.defineProperty(XMLDocType.prototype, 'internalSubset', {\n get: function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n }\n });\n\n XMLDocType.prototype.element = function(name, value) {\n var child;\n child = new XMLDTDElement(this, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n var child;\n child = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.entity = function(name, value) {\n var child;\n child = new XMLDTDEntity(this, false, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.pEntity = function(name, value) {\n var child;\n child = new XMLDTDEntity(this, true, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.notation = function(name, value) {\n var child;\n child = new XMLDTDNotation(this, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.toString = function(options) {\n return this.options.writer.docType(this, this.options.writer.filterOptions(options));\n };\n\n XMLDocType.prototype.ele = function(name, value) {\n return this.element(name, value);\n };\n\n XMLDocType.prototype.att = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n return this.attList(elementName, attributeName, attributeType, defaultValueType, defaultValue);\n };\n\n XMLDocType.prototype.ent = function(name, value) {\n return this.entity(name, value);\n };\n\n XMLDocType.prototype.pent = function(name, value) {\n return this.pEntity(name, value);\n };\n\n XMLDocType.prototype.not = function(name, value) {\n return this.notation(name, value);\n };\n\n XMLDocType.prototype.up = function() {\n return this.root() || this.documentObject;\n };\n\n XMLDocType.prototype.isEqualNode = function(node) {\n if (!XMLDocType.__super__.isEqualNode.apply(this, arguments).isEqualNode(node)) {\n return false;\n }\n if (node.name !== this.name) {\n return false;\n }\n if (node.publicId !== this.publicId) {\n return false;\n }\n if (node.systemId !== this.systemId) {\n return false;\n }\n return true;\n };\n\n return XMLDocType;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLNode, XMLRaw,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n NodeType = require('./NodeType');\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLRaw = (function(superClass) {\n extend(XMLRaw, superClass);\n\n function XMLRaw(parent, text) {\n XMLRaw.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing raw text. \" + this.debugInfo());\n }\n this.type = NodeType.Raw;\n this.value = this.stringify.raw(text);\n }\n\n XMLRaw.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLRaw.prototype.toString = function(options) {\n return this.options.writer.raw(this, this.options.writer.filterOptions(options));\n };\n\n return XMLRaw;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLCharacterData, XMLText,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n NodeType = require('./NodeType');\n\n XMLCharacterData = require('./XMLCharacterData');\n\n module.exports = XMLText = (function(superClass) {\n extend(XMLText, superClass);\n\n function XMLText(parent, text) {\n XMLText.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing element text. \" + this.debugInfo());\n }\n this.name = \"#text\";\n this.type = NodeType.Text;\n this.value = this.stringify.text(text);\n }\n\n Object.defineProperty(XMLText.prototype, 'isElementContentWhitespace', {\n get: function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n }\n });\n\n Object.defineProperty(XMLText.prototype, 'wholeText', {\n get: function() {\n var next, prev, str;\n str = '';\n prev = this.previousSibling;\n while (prev) {\n str = prev.data + str;\n prev = prev.previousSibling;\n }\n str += this.data;\n next = this.nextSibling;\n while (next) {\n str = str + next.data;\n next = next.nextSibling;\n }\n return str;\n }\n });\n\n XMLText.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLText.prototype.toString = function(options) {\n return this.options.writer.text(this, this.options.writer.filterOptions(options));\n };\n\n XMLText.prototype.splitText = function(offset) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLText.prototype.replaceWholeText = function(content) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n return XMLText;\n\n })(XMLCharacterData);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLCharacterData, XMLProcessingInstruction,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n NodeType = require('./NodeType');\n\n XMLCharacterData = require('./XMLCharacterData');\n\n module.exports = XMLProcessingInstruction = (function(superClass) {\n extend(XMLProcessingInstruction, superClass);\n\n function XMLProcessingInstruction(parent, target, value) {\n XMLProcessingInstruction.__super__.constructor.call(this, parent);\n if (target == null) {\n throw new Error(\"Missing instruction target. \" + this.debugInfo());\n }\n this.type = NodeType.ProcessingInstruction;\n this.target = this.stringify.insTarget(target);\n this.name = this.target;\n if (value) {\n this.value = this.stringify.insValue(value);\n }\n }\n\n XMLProcessingInstruction.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLProcessingInstruction.prototype.toString = function(options) {\n return this.options.writer.processingInstruction(this, this.options.writer.filterOptions(options));\n };\n\n XMLProcessingInstruction.prototype.isEqualNode = function(node) {\n if (!XMLProcessingInstruction.__super__.isEqualNode.apply(this, arguments).isEqualNode(node)) {\n return false;\n }\n if (node.target !== this.target) {\n return false;\n }\n return true;\n };\n\n return XMLProcessingInstruction;\n\n })(XMLCharacterData);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLDummy, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n module.exports = XMLDummy = (function(superClass) {\n extend(XMLDummy, superClass);\n\n function XMLDummy(parent) {\n XMLDummy.__super__.constructor.call(this, parent);\n this.type = NodeType.Dummy;\n }\n\n XMLDummy.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLDummy.prototype.toString = function(options) {\n return '';\n };\n\n return XMLDummy;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLNodeList;\n\n module.exports = XMLNodeList = (function() {\n function XMLNodeList(nodes) {\n this.nodes = nodes;\n }\n\n Object.defineProperty(XMLNodeList.prototype, 'length', {\n get: function() {\n return this.nodes.length || 0;\n }\n });\n\n XMLNodeList.prototype.clone = function() {\n return this.nodes = null;\n };\n\n XMLNodeList.prototype.item = function(index) {\n return this.nodes[index] || null;\n };\n\n return XMLNodeList;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n module.exports = {\n Disconnected: 1,\n Preceding: 2,\n Following: 4,\n Contains: 8,\n ContainedBy: 16,\n ImplementationSpecific: 32\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var DocumentPosition, NodeType, XMLCData, XMLComment, XMLDeclaration, XMLDocType, XMLDummy, XMLElement, XMLNamedNodeMap, XMLNode, XMLNodeList, XMLProcessingInstruction, XMLRaw, XMLText, getValue, isEmpty, isFunction, isObject, ref1,\n hasProp = {}.hasOwnProperty;\n\n ref1 = require('./Utility'), isObject = ref1.isObject, isFunction = ref1.isFunction, isEmpty = ref1.isEmpty, getValue = ref1.getValue;\n\n XMLElement = null;\n\n XMLCData = null;\n\n XMLComment = null;\n\n XMLDeclaration = null;\n\n XMLDocType = null;\n\n XMLRaw = null;\n\n XMLText = null;\n\n XMLProcessingInstruction = null;\n\n XMLDummy = null;\n\n NodeType = null;\n\n XMLNodeList = null;\n\n XMLNamedNodeMap = null;\n\n DocumentPosition = null;\n\n module.exports = XMLNode = (function() {\n function XMLNode(parent1) {\n this.parent = parent1;\n if (this.parent) {\n this.options = this.parent.options;\n this.stringify = this.parent.stringify;\n }\n this.value = null;\n this.children = [];\n this.baseURI = null;\n if (!XMLElement) {\n XMLElement = require('./XMLElement');\n XMLCData = require('./XMLCData');\n XMLComment = require('./XMLComment');\n XMLDeclaration = require('./XMLDeclaration');\n XMLDocType = require('./XMLDocType');\n XMLRaw = require('./XMLRaw');\n XMLText = require('./XMLText');\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n XMLDummy = require('./XMLDummy');\n NodeType = require('./NodeType');\n XMLNodeList = require('./XMLNodeList');\n XMLNamedNodeMap = require('./XMLNamedNodeMap');\n DocumentPosition = require('./DocumentPosition');\n }\n }\n\n Object.defineProperty(XMLNode.prototype, 'nodeName', {\n get: function() {\n return this.name;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'nodeType', {\n get: function() {\n return this.type;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'nodeValue', {\n get: function() {\n return this.value;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'parentNode', {\n get: function() {\n return this.parent;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'childNodes', {\n get: function() {\n if (!this.childNodeList || !this.childNodeList.nodes) {\n this.childNodeList = new XMLNodeList(this.children);\n }\n return this.childNodeList;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'firstChild', {\n get: function() {\n return this.children[0] || null;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'lastChild', {\n get: function() {\n return this.children[this.children.length - 1] || null;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'previousSibling', {\n get: function() {\n var i;\n i = this.parent.children.indexOf(this);\n return this.parent.children[i - 1] || null;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'nextSibling', {\n get: function() {\n var i;\n i = this.parent.children.indexOf(this);\n return this.parent.children[i + 1] || null;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'ownerDocument', {\n get: function() {\n return this.document() || null;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'textContent', {\n get: function() {\n var child, j, len, ref2, str;\n if (this.nodeType === NodeType.Element || this.nodeType === NodeType.DocumentFragment) {\n str = '';\n ref2 = this.children;\n for (j = 0, len = ref2.length; j < len; j++) {\n child = ref2[j];\n if (child.textContent) {\n str += child.textContent;\n }\n }\n return str;\n } else {\n return null;\n }\n },\n set: function(value) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n }\n });\n\n XMLNode.prototype.setParent = function(parent) {\n var child, j, len, ref2, results;\n this.parent = parent;\n if (parent) {\n this.options = parent.options;\n this.stringify = parent.stringify;\n }\n ref2 = this.children;\n results = [];\n for (j = 0, len = ref2.length; j < len; j++) {\n child = ref2[j];\n results.push(child.setParent(this));\n }\n return results;\n };\n\n XMLNode.prototype.element = function(name, attributes, text) {\n var childNode, item, j, k, key, lastChild, len, len1, ref2, ref3, val;\n lastChild = null;\n if (attributes === null && (text == null)) {\n ref2 = [{}, null], attributes = ref2[0], text = ref2[1];\n }\n if (attributes == null) {\n attributes = {};\n }\n attributes = getValue(attributes);\n if (!isObject(attributes)) {\n ref3 = [attributes, text], text = ref3[0], attributes = ref3[1];\n }\n if (name != null) {\n name = getValue(name);\n }\n if (Array.isArray(name)) {\n for (j = 0, len = name.length; j < len; j++) {\n item = name[j];\n lastChild = this.element(item);\n }\n } else if (isFunction(name)) {\n lastChild = this.element(name.apply());\n } else if (isObject(name)) {\n for (key in name) {\n if (!hasProp.call(name, key)) continue;\n val = name[key];\n if (isFunction(val)) {\n val = val.apply();\n }\n if (!this.options.ignoreDecorators && this.stringify.convertAttKey && key.indexOf(this.stringify.convertAttKey) === 0) {\n lastChild = this.attribute(key.substr(this.stringify.convertAttKey.length), val);\n } else if (!this.options.separateArrayItems && Array.isArray(val) && isEmpty(val)) {\n lastChild = this.dummy();\n } else if (isObject(val) && isEmpty(val)) {\n lastChild = this.element(key);\n } else if (!this.options.keepNullNodes && (val == null)) {\n lastChild = this.dummy();\n } else if (!this.options.separateArrayItems && Array.isArray(val)) {\n for (k = 0, len1 = val.length; k < len1; k++) {\n item = val[k];\n childNode = {};\n childNode[key] = item;\n lastChild = this.element(childNode);\n }\n } else if (isObject(val)) {\n if (!this.options.ignoreDecorators && this.stringify.convertTextKey && key.indexOf(this.stringify.convertTextKey) === 0) {\n lastChild = this.element(val);\n } else {\n lastChild = this.element(key);\n lastChild.element(val);\n }\n } else {\n lastChild = this.element(key, val);\n }\n }\n } else if (!this.options.keepNullNodes && text === null) {\n lastChild = this.dummy();\n } else {\n if (!this.options.ignoreDecorators && this.stringify.convertTextKey && name.indexOf(this.stringify.convertTextKey) === 0) {\n lastChild = this.text(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertCDataKey && name.indexOf(this.stringify.convertCDataKey) === 0) {\n lastChild = this.cdata(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertCommentKey && name.indexOf(this.stringify.convertCommentKey) === 0) {\n lastChild = this.comment(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertRawKey && name.indexOf(this.stringify.convertRawKey) === 0) {\n lastChild = this.raw(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertPIKey && name.indexOf(this.stringify.convertPIKey) === 0) {\n lastChild = this.instruction(name.substr(this.stringify.convertPIKey.length), text);\n } else {\n lastChild = this.node(name, attributes, text);\n }\n }\n if (lastChild == null) {\n throw new Error(\"Could not create any elements with: \" + name + \". \" + this.debugInfo());\n }\n return lastChild;\n };\n\n XMLNode.prototype.insertBefore = function(name, attributes, text) {\n var child, i, newChild, refChild, removed;\n if (name != null ? name.type : void 0) {\n newChild = name;\n refChild = attributes;\n newChild.setParent(this);\n if (refChild) {\n i = children.indexOf(refChild);\n removed = children.splice(i);\n children.push(newChild);\n Array.prototype.push.apply(children, removed);\n } else {\n children.push(newChild);\n }\n return newChild;\n } else {\n if (this.isRoot) {\n throw new Error(\"Cannot insert elements at root level. \" + this.debugInfo(name));\n }\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i);\n child = this.parent.element(name, attributes, text);\n Array.prototype.push.apply(this.parent.children, removed);\n return child;\n }\n };\n\n XMLNode.prototype.insertAfter = function(name, attributes, text) {\n var child, i, removed;\n if (this.isRoot) {\n throw new Error(\"Cannot insert elements at root level. \" + this.debugInfo(name));\n }\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i + 1);\n child = this.parent.element(name, attributes, text);\n Array.prototype.push.apply(this.parent.children, removed);\n return child;\n };\n\n XMLNode.prototype.remove = function() {\n var i, ref2;\n if (this.isRoot) {\n throw new Error(\"Cannot remove the root element. \" + this.debugInfo());\n }\n i = this.parent.children.indexOf(this);\n [].splice.apply(this.parent.children, [i, i - i + 1].concat(ref2 = [])), ref2;\n return this.parent;\n };\n\n XMLNode.prototype.node = function(name, attributes, text) {\n var child, ref2;\n if (name != null) {\n name = getValue(name);\n }\n attributes || (attributes = {});\n attributes = getValue(attributes);\n if (!isObject(attributes)) {\n ref2 = [attributes, text], text = ref2[0], attributes = ref2[1];\n }\n child = new XMLElement(this, name, attributes);\n if (text != null) {\n child.text(text);\n }\n this.children.push(child);\n return child;\n };\n\n XMLNode.prototype.text = function(value) {\n var child;\n if (isObject(value)) {\n this.element(value);\n }\n child = new XMLText(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.cdata = function(value) {\n var child;\n child = new XMLCData(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.comment = function(value) {\n var child;\n child = new XMLComment(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.commentBefore = function(value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i);\n child = this.parent.comment(value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.commentAfter = function(value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i + 1);\n child = this.parent.comment(value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.raw = function(value) {\n var child;\n child = new XMLRaw(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.dummy = function() {\n var child;\n child = new XMLDummy(this);\n return child;\n };\n\n XMLNode.prototype.instruction = function(target, value) {\n var insTarget, insValue, instruction, j, len;\n if (target != null) {\n target = getValue(target);\n }\n if (value != null) {\n value = getValue(value);\n }\n if (Array.isArray(target)) {\n for (j = 0, len = target.length; j < len; j++) {\n insTarget = target[j];\n this.instruction(insTarget);\n }\n } else if (isObject(target)) {\n for (insTarget in target) {\n if (!hasProp.call(target, insTarget)) continue;\n insValue = target[insTarget];\n this.instruction(insTarget, insValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n instruction = new XMLProcessingInstruction(this, target, value);\n this.children.push(instruction);\n }\n return this;\n };\n\n XMLNode.prototype.instructionBefore = function(target, value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i);\n child = this.parent.instruction(target, value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.instructionAfter = function(target, value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i + 1);\n child = this.parent.instruction(target, value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.declaration = function(version, encoding, standalone) {\n var doc, xmldec;\n doc = this.document();\n xmldec = new XMLDeclaration(doc, version, encoding, standalone);\n if (doc.children.length === 0) {\n doc.children.unshift(xmldec);\n } else if (doc.children[0].type === NodeType.Declaration) {\n doc.children[0] = xmldec;\n } else {\n doc.children.unshift(xmldec);\n }\n return doc.root() || doc;\n };\n\n XMLNode.prototype.dtd = function(pubID, sysID) {\n var child, doc, doctype, i, j, k, len, len1, ref2, ref3;\n doc = this.document();\n doctype = new XMLDocType(doc, pubID, sysID);\n ref2 = doc.children;\n for (i = j = 0, len = ref2.length; j < len; i = ++j) {\n child = ref2[i];\n if (child.type === NodeType.DocType) {\n doc.children[i] = doctype;\n return doctype;\n }\n }\n ref3 = doc.children;\n for (i = k = 0, len1 = ref3.length; k < len1; i = ++k) {\n child = ref3[i];\n if (child.isRoot) {\n doc.children.splice(i, 0, doctype);\n return doctype;\n }\n }\n doc.children.push(doctype);\n return doctype;\n };\n\n XMLNode.prototype.up = function() {\n if (this.isRoot) {\n throw new Error(\"The root node has no parent. Use doc() if you need to get the document object.\");\n }\n return this.parent;\n };\n\n XMLNode.prototype.root = function() {\n var node;\n node = this;\n while (node) {\n if (node.type === NodeType.Document) {\n return node.rootObject;\n } else if (node.isRoot) {\n return node;\n } else {\n node = node.parent;\n }\n }\n };\n\n XMLNode.prototype.document = function() {\n var node;\n node = this;\n while (node) {\n if (node.type === NodeType.Document) {\n return node;\n } else {\n node = node.parent;\n }\n }\n };\n\n XMLNode.prototype.end = function(options) {\n return this.document().end(options);\n };\n\n XMLNode.prototype.prev = function() {\n var i;\n i = this.parent.children.indexOf(this);\n if (i < 1) {\n throw new Error(\"Already at the first node. \" + this.debugInfo());\n }\n return this.parent.children[i - 1];\n };\n\n XMLNode.prototype.next = function() {\n var i;\n i = this.parent.children.indexOf(this);\n if (i === -1 || i === this.parent.children.length - 1) {\n throw new Error(\"Already at the last node. \" + this.debugInfo());\n }\n return this.parent.children[i + 1];\n };\n\n XMLNode.prototype.importDocument = function(doc) {\n var clonedRoot;\n clonedRoot = doc.root().clone();\n clonedRoot.parent = this;\n clonedRoot.isRoot = false;\n this.children.push(clonedRoot);\n return this;\n };\n\n XMLNode.prototype.debugInfo = function(name) {\n var ref2, ref3;\n name = name || this.name;\n if ((name == null) && !((ref2 = this.parent) != null ? ref2.name : void 0)) {\n return \"\";\n } else if (name == null) {\n return \"parent: <\" + this.parent.name + \">\";\n } else if (!((ref3 = this.parent) != null ? ref3.name : void 0)) {\n return \"node: <\" + name + \">\";\n } else {\n return \"node: <\" + name + \">, parent: <\" + this.parent.name + \">\";\n }\n };\n\n XMLNode.prototype.ele = function(name, attributes, text) {\n return this.element(name, attributes, text);\n };\n\n XMLNode.prototype.nod = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLNode.prototype.txt = function(value) {\n return this.text(value);\n };\n\n XMLNode.prototype.dat = function(value) {\n return this.cdata(value);\n };\n\n XMLNode.prototype.com = function(value) {\n return this.comment(value);\n };\n\n XMLNode.prototype.ins = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLNode.prototype.doc = function() {\n return this.document();\n };\n\n XMLNode.prototype.dec = function(version, encoding, standalone) {\n return this.declaration(version, encoding, standalone);\n };\n\n XMLNode.prototype.e = function(name, attributes, text) {\n return this.element(name, attributes, text);\n };\n\n XMLNode.prototype.n = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLNode.prototype.t = function(value) {\n return this.text(value);\n };\n\n XMLNode.prototype.d = function(value) {\n return this.cdata(value);\n };\n\n XMLNode.prototype.c = function(value) {\n return this.comment(value);\n };\n\n XMLNode.prototype.r = function(value) {\n return this.raw(value);\n };\n\n XMLNode.prototype.i = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLNode.prototype.u = function() {\n return this.up();\n };\n\n XMLNode.prototype.importXMLBuilder = function(doc) {\n return this.importDocument(doc);\n };\n\n XMLNode.prototype.replaceChild = function(newChild, oldChild) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.removeChild = function(oldChild) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.appendChild = function(newChild) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.hasChildNodes = function() {\n return this.children.length !== 0;\n };\n\n XMLNode.prototype.cloneNode = function(deep) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.normalize = function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.isSupported = function(feature, version) {\n return true;\n };\n\n XMLNode.prototype.hasAttributes = function() {\n return this.attribs.length !== 0;\n };\n\n XMLNode.prototype.compareDocumentPosition = function(other) {\n var ref, res;\n ref = this;\n if (ref === other) {\n return 0;\n } else if (this.document() !== other.document()) {\n res = DocumentPosition.Disconnected | DocumentPosition.ImplementationSpecific;\n if (Math.random() < 0.5) {\n res |= DocumentPosition.Preceding;\n } else {\n res |= DocumentPosition.Following;\n }\n return res;\n } else if (ref.isAncestor(other)) {\n return DocumentPosition.Contains | DocumentPosition.Preceding;\n } else if (ref.isDescendant(other)) {\n return DocumentPosition.Contains | DocumentPosition.Following;\n } else if (ref.isPreceding(other)) {\n return DocumentPosition.Preceding;\n } else {\n return DocumentPosition.Following;\n }\n };\n\n XMLNode.prototype.isSameNode = function(other) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.lookupPrefix = function(namespaceURI) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.isDefaultNamespace = function(namespaceURI) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.lookupNamespaceURI = function(prefix) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.isEqualNode = function(node) {\n var i, j, ref2;\n if (node.nodeType !== this.nodeType) {\n return false;\n }\n if (node.children.length !== this.children.length) {\n return false;\n }\n for (i = j = 0, ref2 = this.children.length - 1; 0 <= ref2 ? j <= ref2 : j >= ref2; i = 0 <= ref2 ? ++j : --j) {\n if (!this.children[i].isEqualNode(node.children[i])) {\n return false;\n }\n }\n return true;\n };\n\n XMLNode.prototype.getFeature = function(feature, version) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.setUserData = function(key, data, handler) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.getUserData = function(key) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.contains = function(other) {\n if (!other) {\n return false;\n }\n return other === this || this.isDescendant(other);\n };\n\n XMLNode.prototype.isDescendant = function(node) {\n var child, isDescendantChild, j, len, ref2;\n ref2 = this.children;\n for (j = 0, len = ref2.length; j < len; j++) {\n child = ref2[j];\n if (node === child) {\n return true;\n }\n isDescendantChild = child.isDescendant(node);\n if (isDescendantChild) {\n return true;\n }\n }\n return false;\n };\n\n XMLNode.prototype.isAncestor = function(node) {\n return node.isDescendant(this);\n };\n\n XMLNode.prototype.isPreceding = function(node) {\n var nodePos, thisPos;\n nodePos = this.treePosition(node);\n thisPos = this.treePosition(this);\n if (nodePos === -1 || thisPos === -1) {\n return false;\n } else {\n return nodePos < thisPos;\n }\n };\n\n XMLNode.prototype.isFollowing = function(node) {\n var nodePos, thisPos;\n nodePos = this.treePosition(node);\n thisPos = this.treePosition(this);\n if (nodePos === -1 || thisPos === -1) {\n return false;\n } else {\n return nodePos > thisPos;\n }\n };\n\n XMLNode.prototype.treePosition = function(node) {\n var found, pos;\n pos = 0;\n found = false;\n this.foreachTreeNode(this.document(), function(childNode) {\n pos++;\n if (!found && childNode === node) {\n return found = true;\n }\n });\n if (found) {\n return pos;\n } else {\n return -1;\n }\n };\n\n XMLNode.prototype.foreachTreeNode = function(node, func) {\n var child, j, len, ref2, res;\n node || (node = this.document());\n ref2 = node.children;\n for (j = 0, len = ref2.length; j < len; j++) {\n child = ref2[j];\n if (res = func(child)) {\n return res;\n } else {\n res = this.foreachTreeNode(child, func);\n if (res) {\n return res;\n }\n }\n }\n };\n\n return XMLNode;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLStringifier,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n hasProp = {}.hasOwnProperty;\n\n module.exports = XMLStringifier = (function() {\n function XMLStringifier(options) {\n this.assertLegalName = bind(this.assertLegalName, this);\n this.assertLegalChar = bind(this.assertLegalChar, this);\n var key, ref, value;\n options || (options = {});\n this.options = options;\n if (!this.options.version) {\n this.options.version = '1.0';\n }\n ref = options.stringify || {};\n for (key in ref) {\n if (!hasProp.call(ref, key)) continue;\n value = ref[key];\n this[key] = value;\n }\n }\n\n XMLStringifier.prototype.name = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalName('' + val || '');\n };\n\n XMLStringifier.prototype.text = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar(this.textEscape('' + val || ''));\n };\n\n XMLStringifier.prototype.cdata = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n val = '' + val || '';\n val = val.replace(']]>', ']]]]><![CDATA[>');\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.comment = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n val = '' + val || '';\n if (val.match(/--/)) {\n throw new Error(\"Comment text cannot contain double-hypen: \" + val);\n }\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.raw = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return '' + val || '';\n };\n\n XMLStringifier.prototype.attValue = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar(this.attEscape(val = '' + val || ''));\n };\n\n XMLStringifier.prototype.insTarget = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar('' + val || '');\n };\n\n XMLStringifier.prototype.insValue = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n val = '' + val || '';\n if (val.match(/\\?>/)) {\n throw new Error(\"Invalid processing instruction value: \" + val);\n }\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.xmlVersion = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n val = '' + val || '';\n if (!val.match(/1\\.[0-9]+/)) {\n throw new Error(\"Invalid version number: \" + val);\n }\n return val;\n };\n\n XMLStringifier.prototype.xmlEncoding = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n val = '' + val || '';\n if (!val.match(/^[A-Za-z](?:[A-Za-z0-9._-])*$/)) {\n throw new Error(\"Invalid encoding: \" + val);\n }\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.xmlStandalone = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n if (val) {\n return \"yes\";\n } else {\n return \"no\";\n }\n };\n\n XMLStringifier.prototype.dtdPubID = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar('' + val || '');\n };\n\n XMLStringifier.prototype.dtdSysID = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar('' + val || '');\n };\n\n XMLStringifier.prototype.dtdElementValue = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar('' + val || '');\n };\n\n XMLStringifier.prototype.dtdAttType = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar('' + val || '');\n };\n\n XMLStringifier.prototype.dtdAttDefault = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar('' + val || '');\n };\n\n XMLStringifier.prototype.dtdEntityValue = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar('' + val || '');\n };\n\n XMLStringifier.prototype.dtdNData = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar('' + val || '');\n };\n\n XMLStringifier.prototype.convertAttKey = '@';\n\n XMLStringifier.prototype.convertPIKey = '?';\n\n XMLStringifier.prototype.convertTextKey = '#text';\n\n XMLStringifier.prototype.convertCDataKey = '#cdata';\n\n XMLStringifier.prototype.convertCommentKey = '#comment';\n\n XMLStringifier.prototype.convertRawKey = '#raw';\n\n XMLStringifier.prototype.assertLegalChar = function(str) {\n var regex, res;\n if (this.options.noValidation) {\n return str;\n }\n regex = '';\n if (this.options.version === '1.0') {\n regex = /[\\0-\\x08\\x0B\\f\\x0E-\\x1F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n if (res = str.match(regex)) {\n throw new Error(\"Invalid character in string: \" + str + \" at index \" + res.index);\n }\n } else if (this.options.version === '1.1') {\n regex = /[\\0\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n if (res = str.match(regex)) {\n throw new Error(\"Invalid character in string: \" + str + \" at index \" + res.index);\n }\n }\n return str;\n };\n\n XMLStringifier.prototype.assertLegalName = function(str) {\n var regex;\n if (this.options.noValidation) {\n return str;\n }\n this.assertLegalChar(str);\n regex = /^([:A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])([\\x2D\\.0-:A-Z_a-z\\xB7\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u037D\\u037F-\\u1FFF\\u200C\\u200D\\u203F\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])*$/;\n if (!str.match(regex)) {\n throw new Error(\"Invalid character in name\");\n }\n return str;\n };\n\n XMLStringifier.prototype.textEscape = function(str) {\n var ampregex;\n if (this.options.noValidation) {\n return str;\n }\n ampregex = this.options.noDoubleEncoding ? /(?!&\\S+;)&/g : /&/g;\n return str.replace(ampregex, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\\r/g, '
');\n };\n\n XMLStringifier.prototype.attEscape = function(str) {\n var ampregex;\n if (this.options.noValidation) {\n return str;\n }\n ampregex = this.options.noDoubleEncoding ? /(?!&\\S+;)&/g : /&/g;\n return str.replace(ampregex, '&').replace(/</g, '<').replace(/\"/g, '"').replace(/\\t/g, '	').replace(/\\n/g, '
').replace(/\\r/g, '
');\n };\n\n return XMLStringifier;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n module.exports = {\n None: 0,\n OpenTag: 1,\n InsideTag: 2,\n CloseTag: 3\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, WriterState, XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLDummy, XMLElement, XMLProcessingInstruction, XMLRaw, XMLText, XMLWriterBase, assign,\n hasProp = {}.hasOwnProperty;\n\n assign = require('./Utility').assign;\n\n NodeType = require('./NodeType');\n\n XMLDeclaration = require('./XMLDeclaration');\n\n XMLDocType = require('./XMLDocType');\n\n XMLCData = require('./XMLCData');\n\n XMLComment = require('./XMLComment');\n\n XMLElement = require('./XMLElement');\n\n XMLRaw = require('./XMLRaw');\n\n XMLText = require('./XMLText');\n\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n\n XMLDummy = require('./XMLDummy');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n WriterState = require('./WriterState');\n\n module.exports = XMLWriterBase = (function() {\n function XMLWriterBase(options) {\n var key, ref, value;\n options || (options = {});\n this.options = options;\n ref = options.writer || {};\n for (key in ref) {\n if (!hasProp.call(ref, key)) continue;\n value = ref[key];\n this[\"_\" + key] = this[key];\n this[key] = value;\n }\n }\n\n XMLWriterBase.prototype.filterOptions = function(options) {\n var filteredOptions, ref, ref1, ref2, ref3, ref4, ref5, ref6;\n options || (options = {});\n options = assign({}, this.options, options);\n filteredOptions = {\n writer: this\n };\n filteredOptions.pretty = options.pretty || false;\n filteredOptions.allowEmpty = options.allowEmpty || false;\n filteredOptions.indent = (ref = options.indent) != null ? ref : ' ';\n filteredOptions.newline = (ref1 = options.newline) != null ? ref1 : '\\n';\n filteredOptions.offset = (ref2 = options.offset) != null ? ref2 : 0;\n filteredOptions.dontPrettyTextNodes = (ref3 = (ref4 = options.dontPrettyTextNodes) != null ? ref4 : options.dontprettytextnodes) != null ? ref3 : 0;\n filteredOptions.spaceBeforeSlash = (ref5 = (ref6 = options.spaceBeforeSlash) != null ? ref6 : options.spacebeforeslash) != null ? ref5 : '';\n if (filteredOptions.spaceBeforeSlash === true) {\n filteredOptions.spaceBeforeSlash = ' ';\n }\n filteredOptions.suppressPrettyCount = 0;\n filteredOptions.user = {};\n filteredOptions.state = WriterState.None;\n return filteredOptions;\n };\n\n XMLWriterBase.prototype.indent = function(node, options, level) {\n var indentLevel;\n if (!options.pretty || options.suppressPrettyCount) {\n return '';\n } else if (options.pretty) {\n indentLevel = (level || 0) + options.offset + 1;\n if (indentLevel > 0) {\n return new Array(indentLevel).join(options.indent);\n }\n }\n return '';\n };\n\n XMLWriterBase.prototype.endline = function(node, options, level) {\n if (!options.pretty || options.suppressPrettyCount) {\n return '';\n } else {\n return options.newline;\n }\n };\n\n XMLWriterBase.prototype.attribute = function(att, options, level) {\n var r;\n this.openAttribute(att, options, level);\n r = ' ' + att.name + '=\"' + att.value + '\"';\n this.closeAttribute(att, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.cdata = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<![CDATA[';\n options.state = WriterState.InsideTag;\n r += node.value;\n options.state = WriterState.CloseTag;\n r += ']]>' + this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.comment = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<!-- ';\n options.state = WriterState.InsideTag;\n r += node.value;\n options.state = WriterState.CloseTag;\n r += ' -->' + this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.declaration = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<?xml';\n options.state = WriterState.InsideTag;\n r += ' version=\"' + node.version + '\"';\n if (node.encoding != null) {\n r += ' encoding=\"' + node.encoding + '\"';\n }\n if (node.standalone != null) {\n r += ' standalone=\"' + node.standalone + '\"';\n }\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '?>';\n r += this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.docType = function(node, options, level) {\n var child, i, len, r, ref;\n level || (level = 0);\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level);\n r += '<!DOCTYPE ' + node.root().name;\n if (node.pubID && node.sysID) {\n r += ' PUBLIC \"' + node.pubID + '\" \"' + node.sysID + '\"';\n } else if (node.sysID) {\n r += ' SYSTEM \"' + node.sysID + '\"';\n }\n if (node.children.length > 0) {\n r += ' [';\n r += this.endline(node, options, level);\n options.state = WriterState.InsideTag;\n ref = node.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n r += this.writeChildNode(child, options, level + 1);\n }\n options.state = WriterState.CloseTag;\n r += ']';\n }\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '>';\n r += this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.element = function(node, options, level) {\n var att, child, childNodeCount, firstChildNode, i, j, len, len1, name, prettySuppressed, r, ref, ref1, ref2;\n level || (level = 0);\n prettySuppressed = false;\n r = '';\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r += this.indent(node, options, level) + '<' + node.name;\n ref = node.attribs;\n for (name in ref) {\n if (!hasProp.call(ref, name)) continue;\n att = ref[name];\n r += this.attribute(att, options, level);\n }\n childNodeCount = node.children.length;\n firstChildNode = childNodeCount === 0 ? null : node.children[0];\n if (childNodeCount === 0 || node.children.every(function(e) {\n return (e.type === NodeType.Text || e.type === NodeType.Raw) && e.value === '';\n })) {\n if (options.allowEmpty) {\n r += '>';\n options.state = WriterState.CloseTag;\n r += '</' + node.name + '>' + this.endline(node, options, level);\n } else {\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '/>' + this.endline(node, options, level);\n }\n } else if (options.pretty && childNodeCount === 1 && (firstChildNode.type === NodeType.Text || firstChildNode.type === NodeType.Raw) && (firstChildNode.value != null)) {\n r += '>';\n options.state = WriterState.InsideTag;\n options.suppressPrettyCount++;\n prettySuppressed = true;\n r += this.writeChildNode(firstChildNode, options, level + 1);\n options.suppressPrettyCount--;\n prettySuppressed = false;\n options.state = WriterState.CloseTag;\n r += '</' + node.name + '>' + this.endline(node, options, level);\n } else {\n if (options.dontPrettyTextNodes) {\n ref1 = node.children;\n for (i = 0, len = ref1.length; i < len; i++) {\n child = ref1[i];\n if ((child.type === NodeType.Text || child.type === NodeType.Raw) && (child.value != null)) {\n options.suppressPrettyCount++;\n prettySuppressed = true;\n break;\n }\n }\n }\n r += '>' + this.endline(node, options, level);\n options.state = WriterState.InsideTag;\n ref2 = node.children;\n for (j = 0, len1 = ref2.length; j < len1; j++) {\n child = ref2[j];\n r += this.writeChildNode(child, options, level + 1);\n }\n options.state = WriterState.CloseTag;\n r += this.indent(node, options, level) + '</' + node.name + '>';\n if (prettySuppressed) {\n options.suppressPrettyCount--;\n }\n r += this.endline(node, options, level);\n options.state = WriterState.None;\n }\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.writeChildNode = function(node, options, level) {\n switch (node.type) {\n case NodeType.CData:\n return this.cdata(node, options, level);\n case NodeType.Comment:\n return this.comment(node, options, level);\n case NodeType.Element:\n return this.element(node, options, level);\n case NodeType.Raw:\n return this.raw(node, options, level);\n case NodeType.Text:\n return this.text(node, options, level);\n case NodeType.ProcessingInstruction:\n return this.processingInstruction(node, options, level);\n case NodeType.Dummy:\n return '';\n case NodeType.Declaration:\n return this.declaration(node, options, level);\n case NodeType.DocType:\n return this.docType(node, options, level);\n case NodeType.AttributeDeclaration:\n return this.dtdAttList(node, options, level);\n case NodeType.ElementDeclaration:\n return this.dtdElement(node, options, level);\n case NodeType.EntityDeclaration:\n return this.dtdEntity(node, options, level);\n case NodeType.NotationDeclaration:\n return this.dtdNotation(node, options, level);\n default:\n throw new Error(\"Unknown XML node type: \" + node.constructor.name);\n }\n };\n\n XMLWriterBase.prototype.processingInstruction = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<?';\n options.state = WriterState.InsideTag;\n r += node.target;\n if (node.value) {\n r += ' ' + node.value;\n }\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '?>';\n r += this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.raw = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level);\n options.state = WriterState.InsideTag;\n r += node.value;\n options.state = WriterState.CloseTag;\n r += this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.text = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level);\n options.state = WriterState.InsideTag;\n r += node.value;\n options.state = WriterState.CloseTag;\n r += this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.dtdAttList = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<!ATTLIST';\n options.state = WriterState.InsideTag;\n r += ' ' + node.elementName + ' ' + node.attributeName + ' ' + node.attributeType;\n if (node.defaultValueType !== '#DEFAULT') {\n r += ' ' + node.defaultValueType;\n }\n if (node.defaultValue) {\n r += ' \"' + node.defaultValue + '\"';\n }\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '>' + this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.dtdElement = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<!ELEMENT';\n options.state = WriterState.InsideTag;\n r += ' ' + node.name + ' ' + node.value;\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '>' + this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.dtdEntity = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<!ENTITY';\n options.state = WriterState.InsideTag;\n if (node.pe) {\n r += ' %';\n }\n r += ' ' + node.name;\n if (node.value) {\n r += ' \"' + node.value + '\"';\n } else {\n if (node.pubID && node.sysID) {\n r += ' PUBLIC \"' + node.pubID + '\" \"' + node.sysID + '\"';\n } else if (node.sysID) {\n r += ' SYSTEM \"' + node.sysID + '\"';\n }\n if (node.nData) {\n r += ' NDATA ' + node.nData;\n }\n }\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '>' + this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.dtdNotation = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<!NOTATION';\n options.state = WriterState.InsideTag;\n r += ' ' + node.name;\n if (node.pubID && node.sysID) {\n r += ' PUBLIC \"' + node.pubID + '\" \"' + node.sysID + '\"';\n } else if (node.pubID) {\n r += ' PUBLIC \"' + node.pubID + '\"';\n } else if (node.sysID) {\n r += ' SYSTEM \"' + node.sysID + '\"';\n }\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '>' + this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.openNode = function(node, options, level) {};\n\n XMLWriterBase.prototype.closeNode = function(node, options, level) {};\n\n XMLWriterBase.prototype.openAttribute = function(att, options, level) {};\n\n XMLWriterBase.prototype.closeAttribute = function(att, options, level) {};\n\n return XMLWriterBase;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLStringWriter, XMLWriterBase,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLWriterBase = require('./XMLWriterBase');\n\n module.exports = XMLStringWriter = (function(superClass) {\n extend(XMLStringWriter, superClass);\n\n function XMLStringWriter(options) {\n XMLStringWriter.__super__.constructor.call(this, options);\n }\n\n XMLStringWriter.prototype.document = function(doc, options) {\n var child, i, len, r, ref;\n options = this.filterOptions(options);\n r = '';\n ref = doc.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n r += this.writeChildNode(child, options, 0);\n }\n if (options.pretty && r.slice(-options.newline.length) === options.newline) {\n r = r.slice(0, -options.newline.length);\n }\n return r;\n };\n\n return XMLStringWriter;\n\n })(XMLWriterBase);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLDOMConfiguration, XMLDOMImplementation, XMLDocument, XMLNode, XMLStringWriter, XMLStringifier, isPlainObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isPlainObject = require('./Utility').isPlainObject;\n\n XMLDOMImplementation = require('./XMLDOMImplementation');\n\n XMLDOMConfiguration = require('./XMLDOMConfiguration');\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n XMLStringifier = require('./XMLStringifier');\n\n XMLStringWriter = require('./XMLStringWriter');\n\n module.exports = XMLDocument = (function(superClass) {\n extend(XMLDocument, superClass);\n\n function XMLDocument(options) {\n XMLDocument.__super__.constructor.call(this, null);\n this.name = \"#document\";\n this.type = NodeType.Document;\n this.documentURI = null;\n this.domConfig = new XMLDOMConfiguration();\n options || (options = {});\n if (!options.writer) {\n options.writer = new XMLStringWriter();\n }\n this.options = options;\n this.stringify = new XMLStringifier(options);\n }\n\n Object.defineProperty(XMLDocument.prototype, 'implementation', {\n value: new XMLDOMImplementation()\n });\n\n Object.defineProperty(XMLDocument.prototype, 'doctype', {\n get: function() {\n var child, i, len, ref;\n ref = this.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n if (child.type === NodeType.DocType) {\n return child;\n }\n }\n return null;\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'documentElement', {\n get: function() {\n return this.rootObject || null;\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'inputEncoding', {\n get: function() {\n return null;\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'strictErrorChecking', {\n get: function() {\n return false;\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'xmlEncoding', {\n get: function() {\n if (this.children.length !== 0 && this.children[0].type === NodeType.Declaration) {\n return this.children[0].encoding;\n } else {\n return null;\n }\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'xmlStandalone', {\n get: function() {\n if (this.children.length !== 0 && this.children[0].type === NodeType.Declaration) {\n return this.children[0].standalone === 'yes';\n } else {\n return false;\n }\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'xmlVersion', {\n get: function() {\n if (this.children.length !== 0 && this.children[0].type === NodeType.Declaration) {\n return this.children[0].version;\n } else {\n return \"1.0\";\n }\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'URL', {\n get: function() {\n return this.documentURI;\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'origin', {\n get: function() {\n return null;\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'compatMode', {\n get: function() {\n return null;\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'characterSet', {\n get: function() {\n return null;\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'contentType', {\n get: function() {\n return null;\n }\n });\n\n XMLDocument.prototype.end = function(writer) {\n var writerOptions;\n writerOptions = {};\n if (!writer) {\n writer = this.options.writer;\n } else if (isPlainObject(writer)) {\n writerOptions = writer;\n writer = this.options.writer;\n }\n return writer.document(this, writer.filterOptions(writerOptions));\n };\n\n XMLDocument.prototype.toString = function(options) {\n return this.options.writer.document(this, this.options.writer.filterOptions(options));\n };\n\n XMLDocument.prototype.createElement = function(tagName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createDocumentFragment = function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createTextNode = function(data) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createComment = function(data) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createCDATASection = function(data) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createProcessingInstruction = function(target, data) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createAttribute = function(name) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createEntityReference = function(name) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.getElementsByTagName = function(tagname) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.importNode = function(importedNode, deep) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createElementNS = function(namespaceURI, qualifiedName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createAttributeNS = function(namespaceURI, qualifiedName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.getElementsByTagNameNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.getElementById = function(elementId) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.adoptNode = function(source) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.normalizeDocument = function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.renameNode = function(node, namespaceURI, qualifiedName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.getElementsByClassName = function(classNames) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createEvent = function(eventInterface) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createRange = function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createNodeIterator = function(root, whatToShow, filter) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createTreeWalker = function(root, whatToShow, filter) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n return XMLDocument;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, WriterState, XMLAttribute, XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLDocument, XMLDocumentCB, XMLElement, XMLProcessingInstruction, XMLRaw, XMLStringWriter, XMLStringifier, XMLText, getValue, isFunction, isObject, isPlainObject, ref,\n hasProp = {}.hasOwnProperty;\n\n ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction, isPlainObject = ref.isPlainObject, getValue = ref.getValue;\n\n NodeType = require('./NodeType');\n\n XMLDocument = require('./XMLDocument');\n\n XMLElement = require('./XMLElement');\n\n XMLCData = require('./XMLCData');\n\n XMLComment = require('./XMLComment');\n\n XMLRaw = require('./XMLRaw');\n\n XMLText = require('./XMLText');\n\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n\n XMLDeclaration = require('./XMLDeclaration');\n\n XMLDocType = require('./XMLDocType');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n XMLAttribute = require('./XMLAttribute');\n\n XMLStringifier = require('./XMLStringifier');\n\n XMLStringWriter = require('./XMLStringWriter');\n\n WriterState = require('./WriterState');\n\n module.exports = XMLDocumentCB = (function() {\n function XMLDocumentCB(options, onData, onEnd) {\n var writerOptions;\n this.name = \"?xml\";\n this.type = NodeType.Document;\n options || (options = {});\n writerOptions = {};\n if (!options.writer) {\n options.writer = new XMLStringWriter();\n } else if (isPlainObject(options.writer)) {\n writerOptions = options.writer;\n options.writer = new XMLStringWriter();\n }\n this.options = options;\n this.writer = options.writer;\n this.writerOptions = this.writer.filterOptions(writerOptions);\n this.stringify = new XMLStringifier(options);\n this.onDataCallback = onData || function() {};\n this.onEndCallback = onEnd || function() {};\n this.currentNode = null;\n this.currentLevel = -1;\n this.openTags = {};\n this.documentStarted = false;\n this.documentCompleted = false;\n this.root = null;\n }\n\n XMLDocumentCB.prototype.createChildNode = function(node) {\n var att, attName, attributes, child, i, len, ref1, ref2;\n switch (node.type) {\n case NodeType.CData:\n this.cdata(node.value);\n break;\n case NodeType.Comment:\n this.comment(node.value);\n break;\n case NodeType.Element:\n attributes = {};\n ref1 = node.attribs;\n for (attName in ref1) {\n if (!hasProp.call(ref1, attName)) continue;\n att = ref1[attName];\n attributes[attName] = att.value;\n }\n this.node(node.name, attributes);\n break;\n case NodeType.Dummy:\n this.dummy();\n break;\n case NodeType.Raw:\n this.raw(node.value);\n break;\n case NodeType.Text:\n this.text(node.value);\n break;\n case NodeType.ProcessingInstruction:\n this.instruction(node.target, node.value);\n break;\n default:\n throw new Error(\"This XML node type is not supported in a JS object: \" + node.constructor.name);\n }\n ref2 = node.children;\n for (i = 0, len = ref2.length; i < len; i++) {\n child = ref2[i];\n this.createChildNode(child);\n if (child.type === NodeType.Element) {\n this.up();\n }\n }\n return this;\n };\n\n XMLDocumentCB.prototype.dummy = function() {\n return this;\n };\n\n XMLDocumentCB.prototype.node = function(name, attributes, text) {\n var ref1;\n if (name == null) {\n throw new Error(\"Missing node name.\");\n }\n if (this.root && this.currentLevel === -1) {\n throw new Error(\"Document can only have one root node. \" + this.debugInfo(name));\n }\n this.openCurrent();\n name = getValue(name);\n if (attributes == null) {\n attributes = {};\n }\n attributes = getValue(attributes);\n if (!isObject(attributes)) {\n ref1 = [attributes, text], text = ref1[0], attributes = ref1[1];\n }\n this.currentNode = new XMLElement(this, name, attributes);\n this.currentNode.children = false;\n this.currentLevel++;\n this.openTags[this.currentLevel] = this.currentNode;\n if (text != null) {\n this.text(text);\n }\n return this;\n };\n\n XMLDocumentCB.prototype.element = function(name, attributes, text) {\n var child, i, len, oldValidationFlag, ref1, root;\n if (this.currentNode && this.currentNode.type === NodeType.DocType) {\n this.dtdElement.apply(this, arguments);\n } else {\n if (Array.isArray(name) || isObject(name) || isFunction(name)) {\n oldValidationFlag = this.options.noValidation;\n this.options.noValidation = true;\n root = new XMLDocument(this.options).element('TEMP_ROOT');\n root.element(name);\n this.options.noValidation = oldValidationFlag;\n ref1 = root.children;\n for (i = 0, len = ref1.length; i < len; i++) {\n child = ref1[i];\n this.createChildNode(child);\n if (child.type === NodeType.Element) {\n this.up();\n }\n }\n } else {\n this.node(name, attributes, text);\n }\n }\n return this;\n };\n\n XMLDocumentCB.prototype.attribute = function(name, value) {\n var attName, attValue;\n if (!this.currentNode || this.currentNode.children) {\n throw new Error(\"att() can only be used immediately after an ele() call in callback mode. \" + this.debugInfo(name));\n }\n if (name != null) {\n name = getValue(name);\n }\n if (isObject(name)) {\n for (attName in name) {\n if (!hasProp.call(name, attName)) continue;\n attValue = name[attName];\n this.attribute(attName, attValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n if (this.options.keepNullAttributes && (value == null)) {\n this.currentNode.attribs[name] = new XMLAttribute(this, name, \"\");\n } else if (value != null) {\n this.currentNode.attribs[name] = new XMLAttribute(this, name, value);\n }\n }\n return this;\n };\n\n XMLDocumentCB.prototype.text = function(value) {\n var node;\n this.openCurrent();\n node = new XMLText(this, value);\n this.onData(this.writer.text(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.cdata = function(value) {\n var node;\n this.openCurrent();\n node = new XMLCData(this, value);\n this.onData(this.writer.cdata(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.comment = function(value) {\n var node;\n this.openCurrent();\n node = new XMLComment(this, value);\n this.onData(this.writer.comment(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.raw = function(value) {\n var node;\n this.openCurrent();\n node = new XMLRaw(this, value);\n this.onData(this.writer.raw(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.instruction = function(target, value) {\n var i, insTarget, insValue, len, node;\n this.openCurrent();\n if (target != null) {\n target = getValue(target);\n }\n if (value != null) {\n value = getValue(value);\n }\n if (Array.isArray(target)) {\n for (i = 0, len = target.length; i < len; i++) {\n insTarget = target[i];\n this.instruction(insTarget);\n }\n } else if (isObject(target)) {\n for (insTarget in target) {\n if (!hasProp.call(target, insTarget)) continue;\n insValue = target[insTarget];\n this.instruction(insTarget, insValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n node = new XMLProcessingInstruction(this, target, value);\n this.onData(this.writer.processingInstruction(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n }\n return this;\n };\n\n XMLDocumentCB.prototype.declaration = function(version, encoding, standalone) {\n var node;\n this.openCurrent();\n if (this.documentStarted) {\n throw new Error(\"declaration() must be the first node.\");\n }\n node = new XMLDeclaration(this, version, encoding, standalone);\n this.onData(this.writer.declaration(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.doctype = function(root, pubID, sysID) {\n this.openCurrent();\n if (root == null) {\n throw new Error(\"Missing root node name.\");\n }\n if (this.root) {\n throw new Error(\"dtd() must come before the root node.\");\n }\n this.currentNode = new XMLDocType(this, pubID, sysID);\n this.currentNode.rootNodeName = root;\n this.currentNode.children = false;\n this.currentLevel++;\n this.openTags[this.currentLevel] = this.currentNode;\n return this;\n };\n\n XMLDocumentCB.prototype.dtdElement = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDElement(this, name, value);\n this.onData(this.writer.dtdElement(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n var node;\n this.openCurrent();\n node = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue);\n this.onData(this.writer.dtdAttList(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.entity = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDEntity(this, false, name, value);\n this.onData(this.writer.dtdEntity(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.pEntity = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDEntity(this, true, name, value);\n this.onData(this.writer.dtdEntity(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.notation = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDNotation(this, name, value);\n this.onData(this.writer.dtdNotation(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.up = function() {\n if (this.currentLevel < 0) {\n throw new Error(\"The document node has no parent.\");\n }\n if (this.currentNode) {\n if (this.currentNode.children) {\n this.closeNode(this.currentNode);\n } else {\n this.openNode(this.currentNode);\n }\n this.currentNode = null;\n } else {\n this.closeNode(this.openTags[this.currentLevel]);\n }\n delete this.openTags[this.currentLevel];\n this.currentLevel--;\n return this;\n };\n\n XMLDocumentCB.prototype.end = function() {\n while (this.currentLevel >= 0) {\n this.up();\n }\n return this.onEnd();\n };\n\n XMLDocumentCB.prototype.openCurrent = function() {\n if (this.currentNode) {\n this.currentNode.children = true;\n return this.openNode(this.currentNode);\n }\n };\n\n XMLDocumentCB.prototype.openNode = function(node) {\n var att, chunk, name, ref1;\n if (!node.isOpen) {\n if (!this.root && this.currentLevel === 0 && node.type === NodeType.Element) {\n this.root = node;\n }\n chunk = '';\n if (node.type === NodeType.Element) {\n this.writerOptions.state = WriterState.OpenTag;\n chunk = this.writer.indent(node, this.writerOptions, this.currentLevel) + '<' + node.name;\n ref1 = node.attribs;\n for (name in ref1) {\n if (!hasProp.call(ref1, name)) continue;\n att = ref1[name];\n chunk += this.writer.attribute(att, this.writerOptions, this.currentLevel);\n }\n chunk += (node.children ? '>' : '/>') + this.writer.endline(node, this.writerOptions, this.currentLevel);\n this.writerOptions.state = WriterState.InsideTag;\n } else {\n this.writerOptions.state = WriterState.OpenTag;\n chunk = this.writer.indent(node, this.writerOptions, this.currentLevel) + '<!DOCTYPE ' + node.rootNodeName;\n if (node.pubID && node.sysID) {\n chunk += ' PUBLIC \"' + node.pubID + '\" \"' + node.sysID + '\"';\n } else if (node.sysID) {\n chunk += ' SYSTEM \"' + node.sysID + '\"';\n }\n if (node.children) {\n chunk += ' [';\n this.writerOptions.state = WriterState.InsideTag;\n } else {\n this.writerOptions.state = WriterState.CloseTag;\n chunk += '>';\n }\n chunk += this.writer.endline(node, this.writerOptions, this.currentLevel);\n }\n this.onData(chunk, this.currentLevel);\n return node.isOpen = true;\n }\n };\n\n XMLDocumentCB.prototype.closeNode = function(node) {\n var chunk;\n if (!node.isClosed) {\n chunk = '';\n this.writerOptions.state = WriterState.CloseTag;\n if (node.type === NodeType.Element) {\n chunk = this.writer.indent(node, this.writerOptions, this.currentLevel) + '</' + node.name + '>' + this.writer.endline(node, this.writerOptions, this.currentLevel);\n } else {\n chunk = this.writer.indent(node, this.writerOptions, this.currentLevel) + ']>' + this.writer.endline(node, this.writerOptions, this.currentLevel);\n }\n this.writerOptions.state = WriterState.None;\n this.onData(chunk, this.currentLevel);\n return node.isClosed = true;\n }\n };\n\n XMLDocumentCB.prototype.onData = function(chunk, level) {\n this.documentStarted = true;\n return this.onDataCallback(chunk, level + 1);\n };\n\n XMLDocumentCB.prototype.onEnd = function() {\n this.documentCompleted = true;\n return this.onEndCallback();\n };\n\n XMLDocumentCB.prototype.debugInfo = function(name) {\n if (name == null) {\n return \"\";\n } else {\n return \"node: <\" + name + \">\";\n }\n };\n\n XMLDocumentCB.prototype.ele = function() {\n return this.element.apply(this, arguments);\n };\n\n XMLDocumentCB.prototype.nod = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLDocumentCB.prototype.txt = function(value) {\n return this.text(value);\n };\n\n XMLDocumentCB.prototype.dat = function(value) {\n return this.cdata(value);\n };\n\n XMLDocumentCB.prototype.com = function(value) {\n return this.comment(value);\n };\n\n XMLDocumentCB.prototype.ins = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLDocumentCB.prototype.dec = function(version, encoding, standalone) {\n return this.declaration(version, encoding, standalone);\n };\n\n XMLDocumentCB.prototype.dtd = function(root, pubID, sysID) {\n return this.doctype(root, pubID, sysID);\n };\n\n XMLDocumentCB.prototype.e = function(name, attributes, text) {\n return this.element(name, attributes, text);\n };\n\n XMLDocumentCB.prototype.n = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLDocumentCB.prototype.t = function(value) {\n return this.text(value);\n };\n\n XMLDocumentCB.prototype.d = function(value) {\n return this.cdata(value);\n };\n\n XMLDocumentCB.prototype.c = function(value) {\n return this.comment(value);\n };\n\n XMLDocumentCB.prototype.r = function(value) {\n return this.raw(value);\n };\n\n XMLDocumentCB.prototype.i = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLDocumentCB.prototype.att = function() {\n if (this.currentNode && this.currentNode.type === NodeType.DocType) {\n return this.attList.apply(this, arguments);\n } else {\n return this.attribute.apply(this, arguments);\n }\n };\n\n XMLDocumentCB.prototype.a = function() {\n if (this.currentNode && this.currentNode.type === NodeType.DocType) {\n return this.attList.apply(this, arguments);\n } else {\n return this.attribute.apply(this, arguments);\n }\n };\n\n XMLDocumentCB.prototype.ent = function(name, value) {\n return this.entity(name, value);\n };\n\n XMLDocumentCB.prototype.pent = function(name, value) {\n return this.pEntity(name, value);\n };\n\n XMLDocumentCB.prototype.not = function(name, value) {\n return this.notation(name, value);\n };\n\n return XMLDocumentCB;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, WriterState, XMLStreamWriter, XMLWriterBase,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n NodeType = require('./NodeType');\n\n XMLWriterBase = require('./XMLWriterBase');\n\n WriterState = require('./WriterState');\n\n module.exports = XMLStreamWriter = (function(superClass) {\n extend(XMLStreamWriter, superClass);\n\n function XMLStreamWriter(stream, options) {\n this.stream = stream;\n XMLStreamWriter.__super__.constructor.call(this, options);\n }\n\n XMLStreamWriter.prototype.endline = function(node, options, level) {\n if (node.isLastRootNode && options.state === WriterState.CloseTag) {\n return '';\n } else {\n return XMLStreamWriter.__super__.endline.call(this, node, options, level);\n }\n };\n\n XMLStreamWriter.prototype.document = function(doc, options) {\n var child, i, j, k, len, len1, ref, ref1, results;\n ref = doc.children;\n for (i = j = 0, len = ref.length; j < len; i = ++j) {\n child = ref[i];\n child.isLastRootNode = i === doc.children.length - 1;\n }\n options = this.filterOptions(options);\n ref1 = doc.children;\n results = [];\n for (k = 0, len1 = ref1.length; k < len1; k++) {\n child = ref1[k];\n results.push(this.writeChildNode(child, options, 0));\n }\n return results;\n };\n\n XMLStreamWriter.prototype.attribute = function(att, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.attribute.call(this, att, options, level));\n };\n\n XMLStreamWriter.prototype.cdata = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.cdata.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.comment = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.comment.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.declaration = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.declaration.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.docType = function(node, options, level) {\n var child, j, len, ref;\n level || (level = 0);\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n this.stream.write(this.indent(node, options, level));\n this.stream.write('<!DOCTYPE ' + node.root().name);\n if (node.pubID && node.sysID) {\n this.stream.write(' PUBLIC \"' + node.pubID + '\" \"' + node.sysID + '\"');\n } else if (node.sysID) {\n this.stream.write(' SYSTEM \"' + node.sysID + '\"');\n }\n if (node.children.length > 0) {\n this.stream.write(' [');\n this.stream.write(this.endline(node, options, level));\n options.state = WriterState.InsideTag;\n ref = node.children;\n for (j = 0, len = ref.length; j < len; j++) {\n child = ref[j];\n this.writeChildNode(child, options, level + 1);\n }\n options.state = WriterState.CloseTag;\n this.stream.write(']');\n }\n options.state = WriterState.CloseTag;\n this.stream.write(options.spaceBeforeSlash + '>');\n this.stream.write(this.endline(node, options, level));\n options.state = WriterState.None;\n return this.closeNode(node, options, level);\n };\n\n XMLStreamWriter.prototype.element = function(node, options, level) {\n var att, child, childNodeCount, firstChildNode, j, len, name, prettySuppressed, ref, ref1;\n level || (level = 0);\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n this.stream.write(this.indent(node, options, level) + '<' + node.name);\n ref = node.attribs;\n for (name in ref) {\n if (!hasProp.call(ref, name)) continue;\n att = ref[name];\n this.attribute(att, options, level);\n }\n childNodeCount = node.children.length;\n firstChildNode = childNodeCount === 0 ? null : node.children[0];\n if (childNodeCount === 0 || node.children.every(function(e) {\n return (e.type === NodeType.Text || e.type === NodeType.Raw) && e.value === '';\n })) {\n if (options.allowEmpty) {\n this.stream.write('>');\n options.state = WriterState.CloseTag;\n this.stream.write('</' + node.name + '>');\n } else {\n options.state = WriterState.CloseTag;\n this.stream.write(options.spaceBeforeSlash + '/>');\n }\n } else if (options.pretty && childNodeCount === 1 && (firstChildNode.type === NodeType.Text || firstChildNode.type === NodeType.Raw) && (firstChildNode.value != null)) {\n this.stream.write('>');\n options.state = WriterState.InsideTag;\n options.suppressPrettyCount++;\n prettySuppressed = true;\n this.writeChildNode(firstChildNode, options, level + 1);\n options.suppressPrettyCount--;\n prettySuppressed = false;\n options.state = WriterState.CloseTag;\n this.stream.write('</' + node.name + '>');\n } else {\n this.stream.write('>' + this.endline(node, options, level));\n options.state = WriterState.InsideTag;\n ref1 = node.children;\n for (j = 0, len = ref1.length; j < len; j++) {\n child = ref1[j];\n this.writeChildNode(child, options, level + 1);\n }\n options.state = WriterState.CloseTag;\n this.stream.write(this.indent(node, options, level) + '</' + node.name + '>');\n }\n this.stream.write(this.endline(node, options, level));\n options.state = WriterState.None;\n return this.closeNode(node, options, level);\n };\n\n XMLStreamWriter.prototype.processingInstruction = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.processingInstruction.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.raw = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.raw.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.text = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.text.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.dtdAttList = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.dtdAttList.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.dtdElement = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.dtdElement.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.dtdEntity = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.dtdEntity.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.dtdNotation = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.dtdNotation.call(this, node, options, level));\n };\n\n return XMLStreamWriter;\n\n })(XMLWriterBase);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, WriterState, XMLDOMImplementation, XMLDocument, XMLDocumentCB, XMLStreamWriter, XMLStringWriter, assign, isFunction, ref;\n\n ref = require('./Utility'), assign = ref.assign, isFunction = ref.isFunction;\n\n XMLDOMImplementation = require('./XMLDOMImplementation');\n\n XMLDocument = require('./XMLDocument');\n\n XMLDocumentCB = require('./XMLDocumentCB');\n\n XMLStringWriter = require('./XMLStringWriter');\n\n XMLStreamWriter = require('./XMLStreamWriter');\n\n NodeType = require('./NodeType');\n\n WriterState = require('./WriterState');\n\n module.exports.create = function(name, xmldec, doctype, options) {\n var doc, root;\n if (name == null) {\n throw new Error(\"Root element needs a name.\");\n }\n options = assign({}, xmldec, doctype, options);\n doc = new XMLDocument(options);\n root = doc.element(name);\n if (!options.headless) {\n doc.declaration(options);\n if ((options.pubID != null) || (options.sysID != null)) {\n doc.dtd(options);\n }\n }\n return root;\n };\n\n module.exports.begin = function(options, onData, onEnd) {\n var ref1;\n if (isFunction(options)) {\n ref1 = [options, onData], onData = ref1[0], onEnd = ref1[1];\n options = {};\n }\n if (onData) {\n return new XMLDocumentCB(options, onData, onEnd);\n } else {\n return new XMLDocument(options);\n }\n };\n\n module.exports.stringWriter = function(options) {\n return new XMLStringWriter(options);\n };\n\n module.exports.streamWriter = function(stream, options) {\n return new XMLStreamWriter(stream, options);\n };\n\n module.exports.implementation = new XMLDOMImplementation();\n\n module.exports.nodeType = NodeType;\n\n module.exports.writerState = WriterState;\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n \"use strict\";\n var builder, defaults, escapeCDATA, requiresCDATA, wrapCDATA,\n hasProp = {}.hasOwnProperty;\n\n builder = require('xmlbuilder');\n\n defaults = require('./defaults').defaults;\n\n requiresCDATA = function(entry) {\n return typeof entry === \"string\" && (entry.indexOf('&') >= 0 || entry.indexOf('>') >= 0 || entry.indexOf('<') >= 0);\n };\n\n wrapCDATA = function(entry) {\n return \"<![CDATA[\" + (escapeCDATA(entry)) + \"]]>\";\n };\n\n escapeCDATA = function(entry) {\n return entry.replace(']]>', ']]]]><![CDATA[>');\n };\n\n exports.Builder = (function() {\n function Builder(opts) {\n var key, ref, value;\n this.options = {};\n ref = defaults[\"0.2\"];\n for (key in ref) {\n if (!hasProp.call(ref, key)) continue;\n value = ref[key];\n this.options[key] = value;\n }\n for (key in opts) {\n if (!hasProp.call(opts, key)) continue;\n value = opts[key];\n this.options[key] = value;\n }\n }\n\n Builder.prototype.buildObject = function(rootObj) {\n var attrkey, charkey, render, rootElement, rootName;\n attrkey = this.options.attrkey;\n charkey = this.options.charkey;\n if ((Object.keys(rootObj).length === 1) && (this.options.rootName === defaults['0.2'].rootName)) {\n rootName = Object.keys(rootObj)[0];\n rootObj = rootObj[rootName];\n } else {\n rootName = this.options.rootName;\n }\n render = (function(_this) {\n return function(element, obj) {\n var attr, child, entry, index, key, value;\n if (typeof obj !== 'object') {\n if (_this.options.cdata && requiresCDATA(obj)) {\n element.raw(wrapCDATA(obj));\n } else {\n element.txt(obj);\n }\n } else if (Array.isArray(obj)) {\n for (index in obj) {\n if (!hasProp.call(obj, index)) continue;\n child = obj[index];\n for (key in child) {\n entry = child[key];\n element = render(element.ele(key), entry).up();\n }\n }\n } else {\n for (key in obj) {\n if (!hasProp.call(obj, key)) continue;\n child = obj[key];\n if (key === attrkey) {\n if (typeof child === \"object\") {\n for (attr in child) {\n value = child[attr];\n element = element.att(attr, value);\n }\n }\n } else if (key === charkey) {\n if (_this.options.cdata && requiresCDATA(child)) {\n element = element.raw(wrapCDATA(child));\n } else {\n element = element.txt(child);\n }\n } else if (Array.isArray(child)) {\n for (index in child) {\n if (!hasProp.call(child, index)) continue;\n entry = child[index];\n if (typeof entry === 'string') {\n if (_this.options.cdata && requiresCDATA(entry)) {\n element = element.ele(key).raw(wrapCDATA(entry)).up();\n } else {\n element = element.ele(key, entry).up();\n }\n } else {\n element = render(element.ele(key), entry).up();\n }\n }\n } else if (typeof child === \"object\") {\n element = render(element.ele(key), child).up();\n } else {\n if (typeof child === 'string' && _this.options.cdata && requiresCDATA(child)) {\n element = element.ele(key).raw(wrapCDATA(child)).up();\n } else {\n if (child == null) {\n child = '';\n }\n element = element.ele(key, child.toString()).up();\n }\n }\n }\n }\n return element;\n };\n })(this);\n rootElement = builder.create(rootName, this.options.xmldec, this.options.doctype, {\n headless: this.options.headless,\n allowSurrogateChars: this.options.allowSurrogateChars\n });\n return render(rootElement, rootObj).end(this.options.renderOpts);\n };\n\n return Builder;\n\n })();\n\n}).call(this);\n",";(function (sax) {\n // wrapper for non-node envs\n sax.parser = function (strict, opt) {\n return new SAXParser(strict, opt)\n }\n sax.SAXParser = SAXParser\n sax.SAXStream = SAXStream\n sax.createStream = createStream\n\n // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns.\n // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)),\n // since that's the earliest that a buffer overrun could occur. This way, checks are\n // as rare as required, but as often as necessary to ensure never crossing this bound.\n // Furthermore, buffers are only tested at most once per write(), so passing a very\n // large string into write() might have undesirable effects, but this is manageable by\n // the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme\n // edge case, result in creating at most one complete copy of the string passed in.\n // Set to Infinity to have unlimited buffers.\n sax.MAX_BUFFER_LENGTH = 64 * 1024\n\n var buffers = [\n 'comment',\n 'sgmlDecl',\n 'textNode',\n 'tagName',\n 'doctype',\n 'procInstName',\n 'procInstBody',\n 'entity',\n 'attribName',\n 'attribValue',\n 'cdata',\n 'script',\n ]\n\n sax.EVENTS = [\n 'text',\n 'processinginstruction',\n 'sgmldeclaration',\n 'doctype',\n 'comment',\n 'opentagstart',\n 'attribute',\n 'opentag',\n 'closetag',\n 'opencdata',\n 'cdata',\n 'closecdata',\n 'error',\n 'end',\n 'ready',\n 'script',\n 'opennamespace',\n 'closenamespace',\n ]\n\n function SAXParser(strict, opt) {\n if (!(this instanceof SAXParser)) {\n return new SAXParser(strict, opt)\n }\n\n var parser = this\n clearBuffers(parser)\n parser.q = parser.c = ''\n parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH\n parser.encoding = null;\n parser.opt = opt || {}\n parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags\n parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase'\n parser.opt.maxEntityCount = parser.opt.maxEntityCount || 512\n parser.opt.maxEntityDepth = parser.opt.maxEntityDepth || 4\n parser.entityCount = parser.entityDepth = 0\n parser.tags = []\n parser.closed = parser.closedRoot = parser.sawRoot = false\n parser.tag = parser.error = null\n parser.strict = !!strict\n parser.noscript = !!(strict || parser.opt.noscript)\n parser.state = S.BEGIN\n parser.strictEntities = parser.opt.strictEntities\n parser.ENTITIES =\n parser.strictEntities ?\n Object.create(sax.XML_ENTITIES)\n : Object.create(sax.ENTITIES)\n parser.attribList = []\n\n // namespaces form a prototype chain.\n // it always points at the current tag,\n // which protos to its parent tag.\n if (parser.opt.xmlns) {\n parser.ns = Object.create(rootNS)\n }\n\n // disallow unquoted attribute values if not otherwise configured\n // and strict mode is true\n if (parser.opt.unquotedAttributeValues === undefined) {\n parser.opt.unquotedAttributeValues = !strict\n }\n\n // mostly just for error reporting\n parser.trackPosition = parser.opt.position !== false\n if (parser.trackPosition) {\n parser.position = parser.line = parser.column = 0\n }\n emit(parser, 'onready')\n }\n\n if (!Object.create) {\n Object.create = function (o) {\n function F() {}\n F.prototype = o\n var newf = new F()\n return newf\n }\n }\n\n if (!Object.keys) {\n Object.keys = function (o) {\n var a = []\n for (var i in o) if (o.hasOwnProperty(i)) a.push(i)\n return a\n }\n }\n\n function checkBufferLength(parser) {\n var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10)\n var maxActual = 0\n for (var i = 0, l = buffers.length; i < l; i++) {\n var len = parser[buffers[i]].length\n if (len > maxAllowed) {\n // Text/cdata nodes can get big, and since they're buffered,\n // we can get here under normal conditions.\n // Avoid issues by emitting the text node now,\n // so at least it won't get any bigger.\n switch (buffers[i]) {\n case 'textNode':\n closeText(parser)\n break\n\n case 'cdata':\n emitNode(parser, 'oncdata', parser.cdata)\n parser.cdata = ''\n break\n\n case 'script':\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n break\n\n default:\n error(parser, 'Max buffer length exceeded: ' + buffers[i])\n }\n }\n maxActual = Math.max(maxActual, len)\n }\n // schedule the next check for the earliest possible buffer overrun.\n var m = sax.MAX_BUFFER_LENGTH - maxActual\n parser.bufferCheckPosition = m + parser.position\n }\n\n function clearBuffers(parser) {\n for (var i = 0, l = buffers.length; i < l; i++) {\n parser[buffers[i]] = ''\n }\n }\n\n function flushBuffers(parser) {\n closeText(parser)\n if (parser.cdata !== '') {\n emitNode(parser, 'oncdata', parser.cdata)\n parser.cdata = ''\n }\n if (parser.script !== '') {\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n }\n }\n\n SAXParser.prototype = {\n end: function () {\n end(this)\n },\n write: write,\n resume: function () {\n this.error = null\n return this\n },\n close: function () {\n return this.write(null)\n },\n flush: function () {\n flushBuffers(this)\n },\n }\n\n var Stream\n try {\n Stream = require('stream').Stream\n } catch (ex) {\n Stream = function () {}\n }\n if (!Stream) Stream = function () {}\n\n var streamWraps = sax.EVENTS.filter(function (ev) {\n return ev !== 'error' && ev !== 'end'\n })\n\n function createStream(strict, opt) {\n return new SAXStream(strict, opt)\n }\n\n function determineBufferEncoding(data, isEnd) {\n // BOM-based detection is the most reliable signal when present.\n if (data.length >= 2) {\n if (data[0] === 0xff && data[1] === 0xfe) {\n return 'utf-16le'\n }\n\n if (data[0] === 0xfe && data[1] === 0xff) {\n return 'utf-16be'\n }\n }\n\n if (data.length >= 3 && data[0] === 0xef && data[1] === 0xbb && data[2] === 0xbf) {\n return 'utf8'\n }\n\n if (data.length >= 4) {\n // XML documents without a BOM still start with \"<?xml\", which is enough\n // to distinguish UTF-16LE/BE from UTF-8 by looking at the zero bytes.\n if (data[0] === 0x3c && data[1] === 0x00 && data[2] === 0x3f && data[3] === 0x00) {\n return 'utf-16le'\n }\n\n if (data[0] === 0x00 && data[1] === 0x3c && data[2] === 0x00 && data[3] === 0x3f) {\n return 'utf-16be'\n }\n\n return 'utf8'\n }\n\n return isEnd ? 'utf8' : null\n }\n\n function SAXStream(strict, opt) {\n if (!(this instanceof SAXStream)) {\n return new SAXStream(strict, opt)\n }\n\n Stream.apply(this)\n\n this._parser = new SAXParser(strict, opt)\n this.writable = true\n this.readable = true\n\n var me = this\n\n this._parser.onend = function () {\n me.emit('end')\n }\n\n this._parser.onerror = function (er) {\n me.emit('error', er)\n\n // if didn't throw, then means error was handled.\n // go ahead and clear error, so we can write again.\n me._parser.error = null\n }\n\n this._decoder = null\n this._decoderBuffer = null\n streamWraps.forEach(function (ev) {\n Object.defineProperty(me, 'on' + ev, {\n get: function () {\n return me._parser['on' + ev]\n },\n set: function (h) {\n if (!h) {\n me.removeAllListeners(ev)\n me._parser['on' + ev] = h\n return h\n }\n me.on(ev, h)\n },\n enumerable: true,\n configurable: false,\n })\n })\n }\n\n SAXStream.prototype = Object.create(Stream.prototype, {\n constructor: {\n value: SAXStream,\n },\n })\n\n SAXStream.prototype._decodeBuffer = function (data, isEnd) {\n if (this._decoderBuffer) {\n // Keep incomplete leading bytes until we have enough data to infer the\n // stream encoding, then decode the buffered prefix together with the next chunk.\n data = Buffer.concat([this._decoderBuffer, data])\n this._decoderBuffer = null\n }\n\n if (!this._decoder) {\n var encoding = determineBufferEncoding(data, isEnd)\n if (!encoding) {\n // A very short first chunk may not contain enough bytes to detect the\n // encoding yet, so defer decoding until the next write/end call.\n this._decoderBuffer = data\n return ''\n }\n\n // Store the detected transport encoding so strict mode can compare it\n // with the optional encoding declared in the XML prolog later on.\n this._parser.encoding = encoding\n this._decoder = new TextDecoder(encoding)\n }\n\n return this._decoder.decode(data, { stream: !isEnd })\n }\n\n SAXStream.prototype.write = function (data) {\n if (\n typeof Buffer === 'function' &&\n typeof Buffer.isBuffer === 'function' &&\n Buffer.isBuffer(data)\n ) {\n data = this._decodeBuffer(data, false)\n } else if (this._decoderBuffer) {\n // Flush any buffered binary prefix before handling a string chunk.\n // This only matters if the caller mixes Buffer and string writes (used in test).\n var remaining = this._decodeBuffer(Buffer.alloc(0), true)\n if (remaining) {\n this._parser.write(remaining)\n this.emit('data', remaining)\n }\n }\n\n this._parser.write(data.toString())\n this.emit('data', data)\n return true\n }\n\n SAXStream.prototype.end = function (chunk) {\n if (chunk && chunk.length) {\n this.write(chunk)\n }\n // Flush any remaining decoded data from the TextDecoder\n if (this._decoderBuffer) {\n var finalChunk = this._decodeBuffer(Buffer.alloc(0), true)\n if (finalChunk) {\n this._parser.write(finalChunk)\n this.emit('data', finalChunk)\n }\n } else if (this._decoder) {\n var remaining = this._decoder.decode()\n if (remaining) {\n this._parser.write(remaining)\n this.emit('data', remaining)\n }\n }\n this._parser.end()\n return true\n }\n\n SAXStream.prototype.on = function (ev, handler) {\n var me = this\n if (!me._parser['on' + ev] && streamWraps.indexOf(ev) !== -1) {\n me._parser['on' + ev] = function () {\n var args =\n arguments.length === 1 ?\n [arguments[0]]\n : Array.apply(null, arguments)\n args.splice(0, 0, ev)\n me.emit.apply(me, args)\n }\n }\n\n return Stream.prototype.on.call(me, ev, handler)\n }\n\n // this really needs to be replaced with character classes.\n // XML allows all manner of ridiculous numbers and digits.\n var CDATAre = /^\\[CDATA\\[$/i\n var DOCTYPEre = /^DOCTYPE$/i\n var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace'\n var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/'\n var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE }\n\n // http://www.w3.org/TR/REC-xml/#NT-NameStartChar\n // This implementation works on strings, a single character at a time\n // as such, it cannot ever support astral-plane characters (10000-EFFFF)\n // without a significant breaking change to either this parser, or the\n // JavaScript language. Implementation of an emoji-capable xml parser\n // is left as an exercise for the reader.\n var nameStart =\n /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n\n var nameBody =\n /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n var entityStart =\n /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n var entityBody =\n /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n function isWhitespace(c) {\n return c === ' ' || c === '\\n' || c === '\\r' || c === '\\t'\n }\n\n function isQuote(c) {\n return c === '\"' || c === \"'\"\n }\n\n function isAttribEnd(c) {\n return c === '>' || isWhitespace(c)\n }\n\n function isMatch(regex, c) {\n return regex.test(c)\n }\n\n function notMatch(regex, c) {\n return !isMatch(regex, c)\n }\n\n var S = 0\n sax.STATE = {\n BEGIN: S++, // leading byte order mark or whitespace\n BEGIN_WHITESPACE: S++, // leading whitespace\n TEXT: S++, // general stuff\n TEXT_ENTITY: S++, // & and such.\n OPEN_WAKA: S++, // <\n SGML_DECL: S++, // <!BLARG\n SGML_DECL_QUOTED: S++, // <!BLARG foo \"bar\n DOCTYPE: S++, // <!DOCTYPE\n DOCTYPE_QUOTED: S++, // <!DOCTYPE \"//blah\n DOCTYPE_DTD: S++, // <!DOCTYPE \"//blah\" [ ...\n DOCTYPE_DTD_QUOTED: S++, // <!DOCTYPE \"//blah\" [ \"foo\n COMMENT_STARTING: S++, // <!-\n COMMENT: S++, // <!--\n COMMENT_ENDING: S++, // <!-- blah -\n COMMENT_ENDED: S++, // <!-- blah --\n CDATA: S++, // <![CDATA[ something\n CDATA_ENDING: S++, // ]\n CDATA_ENDING_2: S++, // ]]\n PROC_INST: S++, // <?hi\n PROC_INST_BODY: S++, // <?hi there\n PROC_INST_ENDING: S++, // <?hi \"there\" ?\n OPEN_TAG: S++, // <strong\n OPEN_TAG_SLASH: S++, // <strong /\n ATTRIB: S++, // <a\n ATTRIB_NAME: S++, // <a foo\n ATTRIB_NAME_SAW_WHITE: S++, // <a foo _\n ATTRIB_VALUE: S++, // <a foo=\n ATTRIB_VALUE_QUOTED: S++, // <a foo=\"bar\n ATTRIB_VALUE_CLOSED: S++, // <a foo=\"bar\"\n ATTRIB_VALUE_UNQUOTED: S++, // <a foo=bar\n ATTRIB_VALUE_ENTITY_Q: S++, // <foo bar=\""\"\n ATTRIB_VALUE_ENTITY_U: S++, // <foo bar="\n CLOSE_TAG: S++, // </a\n CLOSE_TAG_SAW_WHITE: S++, // </a >\n SCRIPT: S++, // <script> ...\n SCRIPT_ENDING: S++, // <script> ... <\n }\n\n sax.XML_ENTITIES = Object.assign(Object.create(null), {\n amp: '&',\n gt: '>',\n lt: '<',\n quot: '\"',\n apos: \"'\",\n })\n\n sax.ENTITIES = Object.assign(Object.create(null), {\n amp: '&',\n gt: '>',\n lt: '<',\n quot: '\"',\n apos: \"'\",\n AElig: 198,\n Aacute: 193,\n Acirc: 194,\n Agrave: 192,\n Aring: 197,\n Atilde: 195,\n Auml: 196,\n Ccedil: 199,\n ETH: 208,\n Eacute: 201,\n Ecirc: 202,\n Egrave: 200,\n Euml: 203,\n Iacute: 205,\n Icirc: 206,\n Igrave: 204,\n Iuml: 207,\n Ntilde: 209,\n Oacute: 211,\n Ocirc: 212,\n Ograve: 210,\n Oslash: 216,\n Otilde: 213,\n Ouml: 214,\n THORN: 222,\n Uacute: 218,\n Ucirc: 219,\n Ugrave: 217,\n Uuml: 220,\n Yacute: 221,\n aacute: 225,\n acirc: 226,\n aelig: 230,\n agrave: 224,\n aring: 229,\n atilde: 227,\n auml: 228,\n ccedil: 231,\n eacute: 233,\n ecirc: 234,\n egrave: 232,\n eth: 240,\n euml: 235,\n iacute: 237,\n icirc: 238,\n igrave: 236,\n iuml: 239,\n ntilde: 241,\n oacute: 243,\n ocirc: 244,\n ograve: 242,\n oslash: 248,\n otilde: 245,\n ouml: 246,\n szlig: 223,\n thorn: 254,\n uacute: 250,\n ucirc: 251,\n ugrave: 249,\n uuml: 252,\n yacute: 253,\n yuml: 255,\n copy: 169,\n reg: 174,\n nbsp: 160,\n iexcl: 161,\n cent: 162,\n pound: 163,\n curren: 164,\n yen: 165,\n brvbar: 166,\n sect: 167,\n uml: 168,\n ordf: 170,\n laquo: 171,\n not: 172,\n shy: 173,\n macr: 175,\n deg: 176,\n plusmn: 177,\n sup1: 185,\n sup2: 178,\n sup3: 179,\n acute: 180,\n micro: 181,\n para: 182,\n middot: 183,\n cedil: 184,\n ordm: 186,\n raquo: 187,\n frac14: 188,\n frac12: 189,\n frac34: 190,\n iquest: 191,\n times: 215,\n divide: 247,\n OElig: 338,\n oelig: 339,\n Scaron: 352,\n scaron: 353,\n Yuml: 376,\n fnof: 402,\n circ: 710,\n tilde: 732,\n Alpha: 913,\n Beta: 914,\n Gamma: 915,\n Delta: 916,\n Epsilon: 917,\n Zeta: 918,\n Eta: 919,\n Theta: 920,\n Iota: 921,\n Kappa: 922,\n Lambda: 923,\n Mu: 924,\n Nu: 925,\n Xi: 926,\n Omicron: 927,\n Pi: 928,\n Rho: 929,\n Sigma: 931,\n Tau: 932,\n Upsilon: 933,\n Phi: 934,\n Chi: 935,\n Psi: 936,\n Omega: 937,\n alpha: 945,\n beta: 946,\n gamma: 947,\n delta: 948,\n epsilon: 949,\n zeta: 950,\n eta: 951,\n theta: 952,\n iota: 953,\n kappa: 954,\n lambda: 955,\n mu: 956,\n nu: 957,\n xi: 958,\n omicron: 959,\n pi: 960,\n rho: 961,\n sigmaf: 962,\n sigma: 963,\n tau: 964,\n upsilon: 965,\n phi: 966,\n chi: 967,\n psi: 968,\n omega: 969,\n thetasym: 977,\n upsih: 978,\n piv: 982,\n ensp: 8194,\n emsp: 8195,\n thinsp: 8201,\n zwnj: 8204,\n zwj: 8205,\n lrm: 8206,\n rlm: 8207,\n ndash: 8211,\n mdash: 8212,\n lsquo: 8216,\n rsquo: 8217,\n sbquo: 8218,\n ldquo: 8220,\n rdquo: 8221,\n bdquo: 8222,\n dagger: 8224,\n Dagger: 8225,\n bull: 8226,\n hellip: 8230,\n permil: 8240,\n prime: 8242,\n Prime: 8243,\n lsaquo: 8249,\n rsaquo: 8250,\n oline: 8254,\n frasl: 8260,\n euro: 8364,\n image: 8465,\n weierp: 8472,\n real: 8476,\n trade: 8482,\n alefsym: 8501,\n larr: 8592,\n uarr: 8593,\n rarr: 8594,\n darr: 8595,\n harr: 8596,\n crarr: 8629,\n lArr: 8656,\n uArr: 8657,\n rArr: 8658,\n dArr: 8659,\n hArr: 8660,\n forall: 8704,\n part: 8706,\n exist: 8707,\n empty: 8709,\n nabla: 8711,\n isin: 8712,\n notin: 8713,\n ni: 8715,\n prod: 8719,\n sum: 8721,\n minus: 8722,\n lowast: 8727,\n radic: 8730,\n prop: 8733,\n infin: 8734,\n ang: 8736,\n and: 8743,\n or: 8744,\n cap: 8745,\n cup: 8746,\n int: 8747,\n there4: 8756,\n sim: 8764,\n cong: 8773,\n asymp: 8776,\n ne: 8800,\n equiv: 8801,\n le: 8804,\n ge: 8805,\n sub: 8834,\n sup: 8835,\n nsub: 8836,\n sube: 8838,\n supe: 8839,\n oplus: 8853,\n otimes: 8855,\n perp: 8869,\n sdot: 8901,\n lceil: 8968,\n rceil: 8969,\n lfloor: 8970,\n rfloor: 8971,\n lang: 9001,\n rang: 9002,\n loz: 9674,\n spades: 9824,\n clubs: 9827,\n hearts: 9829,\n diams: 9830,\n })\n\n Object.keys(sax.ENTITIES).forEach(function (key) {\n var e = sax.ENTITIES[key]\n var s = typeof e === 'number' ? String.fromCharCode(e) : e\n sax.ENTITIES[key] = s\n })\n\n for (var s in sax.STATE) {\n sax.STATE[sax.STATE[s]] = s\n }\n\n // shorthand\n S = sax.STATE\n\n function emit(parser, event, data) {\n parser[event] && parser[event](data)\n }\n\n function getDeclaredEncoding(body) {\n var match = body && body.match(/(?:^|\\s)encoding\\s*=\\s*(['\"])([^'\"]+)\\1/i)\n return match ? match[2] : null\n }\n\n function normalizeEncodingName(encoding) {\n if (!encoding) {\n return null\n }\n\n return encoding.toLowerCase().replace(/[^a-z0-9]/g, '')\n }\n\n function encodingsMatch(detectedEncoding, declaredEncoding) {\n const detected = normalizeEncodingName(detectedEncoding)\n const declared = normalizeEncodingName(declaredEncoding)\n\n if (!detected || !declared) {\n return true\n }\n\n if (declared === 'utf16') {\n return detected === 'utf16le' || detected === 'utf16be'\n }\n\n return detected === declared\n }\n\n function validateXmlDeclarationEncoding(parser, data) {\n if (\n !parser.strict ||\n !parser.encoding ||\n !data ||\n data.name !== 'xml'\n ) {\n return\n }\n\n var declaredEncoding = getDeclaredEncoding(data.body)\n if (\n declaredEncoding &&\n !encodingsMatch(parser.encoding, declaredEncoding)\n ) {\n strictFail(\n parser,\n 'XML declaration encoding ' +\n declaredEncoding +\n ' does not match detected stream encoding ' +\n parser.encoding.toUpperCase()\n )\n }\n }\n\n function emitNode(parser, nodeType, data) {\n if (parser.textNode) closeText(parser)\n emit(parser, nodeType, data)\n }\n\n function closeText(parser) {\n parser.textNode = textopts(parser.opt, parser.textNode)\n if (parser.textNode) emit(parser, 'ontext', parser.textNode)\n parser.textNode = ''\n }\n\n function textopts(opt, text) {\n if (opt.trim) text = text.trim()\n if (opt.normalize) text = text.replace(/\\s+/g, ' ')\n return text\n }\n\n function error(parser, er) {\n closeText(parser)\n if (parser.trackPosition) {\n er +=\n '\\nLine: ' +\n parser.line +\n '\\nColumn: ' +\n parser.column +\n '\\nChar: ' +\n parser.c\n }\n er = new Error(er)\n parser.error = er\n emit(parser, 'onerror', er)\n return parser\n }\n\n function end(parser) {\n if (parser.sawRoot && !parser.closedRoot)\n strictFail(parser, 'Unclosed root tag')\n if (\n parser.state !== S.BEGIN &&\n parser.state !== S.BEGIN_WHITESPACE &&\n parser.state !== S.TEXT\n ) {\n error(parser, 'Unexpected end')\n }\n closeText(parser)\n parser.c = ''\n parser.closed = true\n emit(parser, 'onend')\n SAXParser.call(parser, parser.strict, parser.opt)\n return parser\n }\n\n function strictFail(parser, message) {\n if (typeof parser !== 'object' || !(parser instanceof SAXParser)) {\n throw new Error('bad call to strictFail')\n }\n if (parser.strict) {\n error(parser, message)\n }\n }\n\n function newTag(parser) {\n if (!parser.strict) parser.tagName = parser.tagName[parser.looseCase]()\n var parent = parser.tags[parser.tags.length - 1] || parser\n var tag = (parser.tag = { name: parser.tagName, attributes: {} })\n\n // will be overridden if tag contails an xmlns=\"foo\" or xmlns:foo=\"bar\"\n if (parser.opt.xmlns) {\n tag.ns = parent.ns\n }\n parser.attribList.length = 0\n emitNode(parser, 'onopentagstart', tag)\n }\n\n function qname(name, attribute) {\n var i = name.indexOf(':')\n var qualName = i < 0 ? ['', name] : name.split(':')\n var prefix = qualName[0]\n var local = qualName[1]\n\n // <x \"xmlns\"=\"http://foo\">\n if (attribute && name === 'xmlns') {\n prefix = 'xmlns'\n local = ''\n }\n\n return { prefix: prefix, local: local }\n }\n\n function attrib(parser) {\n if (!parser.strict) {\n parser.attribName = parser.attribName[parser.looseCase]()\n }\n\n if (\n parser.attribList.indexOf(parser.attribName) !== -1 ||\n parser.tag.attributes.hasOwnProperty(parser.attribName)\n ) {\n parser.attribName = parser.attribValue = ''\n return\n }\n\n if (parser.opt.xmlns) {\n var qn = qname(parser.attribName, true)\n var prefix = qn.prefix\n var local = qn.local\n\n if (prefix === 'xmlns') {\n // namespace binding attribute. push the binding into scope\n if (local === 'xml' && parser.attribValue !== XML_NAMESPACE) {\n strictFail(\n parser,\n 'xml: prefix must be bound to ' +\n XML_NAMESPACE +\n '\\n' +\n 'Actual: ' +\n parser.attribValue\n )\n } else if (\n local === 'xmlns' &&\n parser.attribValue !== XMLNS_NAMESPACE\n ) {\n strictFail(\n parser,\n 'xmlns: prefix must be bound to ' +\n XMLNS_NAMESPACE +\n '\\n' +\n 'Actual: ' +\n parser.attribValue\n )\n } else {\n var tag = parser.tag\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (tag.ns === parent.ns) {\n tag.ns = Object.create(parent.ns)\n }\n tag.ns[local] = parser.attribValue\n }\n }\n\n // defer onattribute events until all attributes have been seen\n // so any new bindings can take effect. preserve attribute order\n // so deferred events can be emitted in document order\n parser.attribList.push([parser.attribName, parser.attribValue])\n } else {\n // in non-xmlns mode, we can emit the event right away\n parser.tag.attributes[parser.attribName] = parser.attribValue\n emitNode(parser, 'onattribute', {\n name: parser.attribName,\n value: parser.attribValue,\n })\n }\n\n parser.attribName = parser.attribValue = ''\n }\n\n function openTag(parser, selfClosing) {\n if (parser.opt.xmlns) {\n // emit namespace binding events\n var tag = parser.tag\n\n // add namespace info to tag\n var qn = qname(parser.tagName)\n tag.prefix = qn.prefix\n tag.local = qn.local\n tag.uri = tag.ns[qn.prefix] || ''\n\n if (tag.prefix && !tag.uri) {\n strictFail(\n parser,\n 'Unbound namespace prefix: ' + JSON.stringify(parser.tagName)\n )\n tag.uri = qn.prefix\n }\n\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (tag.ns && parent.ns !== tag.ns) {\n Object.keys(tag.ns).forEach(function (p) {\n emitNode(parser, 'onopennamespace', {\n prefix: p,\n uri: tag.ns[p],\n })\n })\n }\n\n // handle deferred onattribute events\n // Note: do not apply default ns to attributes:\n // http://www.w3.org/TR/REC-xml-names/#defaulting\n for (var i = 0, l = parser.attribList.length; i < l; i++) {\n var nv = parser.attribList[i]\n var name = nv[0]\n var value = nv[1]\n var qualName = qname(name, true)\n var prefix = qualName.prefix\n var local = qualName.local\n var uri = prefix === '' ? '' : tag.ns[prefix] || ''\n var a = {\n name: name,\n value: value,\n prefix: prefix,\n local: local,\n uri: uri,\n }\n\n // if there's any attributes with an undefined namespace,\n // then fail on them now.\n if (prefix && prefix !== 'xmlns' && !uri) {\n strictFail(\n parser,\n 'Unbound namespace prefix: ' + JSON.stringify(prefix)\n )\n a.uri = prefix\n }\n parser.tag.attributes[name] = a\n emitNode(parser, 'onattribute', a)\n }\n parser.attribList.length = 0\n }\n\n parser.tag.isSelfClosing = !!selfClosing\n\n // process the tag\n parser.sawRoot = true\n parser.tags.push(parser.tag)\n emitNode(parser, 'onopentag', parser.tag)\n if (!selfClosing) {\n // special case for <script> in non-strict mode.\n if (!parser.noscript && parser.tagName.toLowerCase() === 'script') {\n parser.state = S.SCRIPT\n } else {\n parser.state = S.TEXT\n }\n parser.tag = null\n parser.tagName = ''\n }\n parser.attribName = parser.attribValue = ''\n parser.attribList.length = 0\n }\n\n function closeTag(parser) {\n if (!parser.tagName) {\n strictFail(parser, 'Weird empty close tag.')\n parser.textNode += '</>'\n parser.state = S.TEXT\n return\n }\n\n if (parser.script) {\n if (parser.tagName !== 'script') {\n parser.script += '</' + parser.tagName + '>'\n parser.tagName = ''\n parser.state = S.SCRIPT\n return\n }\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n }\n\n // first make sure that the closing tag actually exists.\n // <a><b></c></b></a> will close everything, otherwise.\n var t = parser.tags.length\n var tagName = parser.tagName\n if (!parser.strict) {\n tagName = tagName[parser.looseCase]()\n }\n var closeTo = tagName\n while (t--) {\n var close = parser.tags[t]\n if (close.name !== closeTo) {\n // fail the first time in strict mode\n strictFail(parser, 'Unexpected close tag')\n } else {\n break\n }\n }\n\n // didn't find it. we already failed for strict, so just abort.\n if (t < 0) {\n strictFail(parser, 'Unmatched closing tag: ' + parser.tagName)\n parser.textNode += '</' + parser.tagName + '>'\n parser.state = S.TEXT\n return\n }\n parser.tagName = tagName\n var s = parser.tags.length\n while (s-- > t) {\n var tag = (parser.tag = parser.tags.pop())\n parser.tagName = parser.tag.name\n emitNode(parser, 'onclosetag', parser.tagName)\n\n var x = {}\n for (var i in tag.ns) {\n x[i] = tag.ns[i]\n }\n\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (parser.opt.xmlns && tag.ns !== parent.ns) {\n // remove namespace bindings introduced by tag\n Object.keys(tag.ns).forEach(function (p) {\n var n = tag.ns[p]\n emitNode(parser, 'onclosenamespace', { prefix: p, uri: n })\n })\n }\n }\n if (t === 0) parser.closedRoot = true\n parser.tagName = parser.attribValue = parser.attribName = ''\n parser.attribList.length = 0\n parser.state = S.TEXT\n }\n\n function parseEntity(parser) {\n var entity = parser.entity\n var entityLC = entity.toLowerCase()\n var num\n var numStr = ''\n\n if (parser.ENTITIES[entity]) {\n return parser.ENTITIES[entity]\n }\n if (parser.ENTITIES[entityLC]) {\n return parser.ENTITIES[entityLC]\n }\n entity = entityLC\n if (entity.charAt(0) === '#') {\n if (entity.charAt(1) === 'x') {\n entity = entity.slice(2)\n num = parseInt(entity, 16)\n numStr = num.toString(16)\n } else {\n entity = entity.slice(1)\n num = parseInt(entity, 10)\n numStr = num.toString(10)\n }\n }\n entity = entity.replace(/^0+/, '')\n if (\n isNaN(num) ||\n numStr.toLowerCase() !== entity ||\n num < 0 ||\n num > 0x10ffff ||\n !isXmlChar(num)\n ) {\n strictFail(parser, 'Invalid character entity')\n return '&' + parser.entity + ';'\n }\n\n return String.fromCodePoint(num)\n }\n\n // Returns true if `num` is a code point that matches the XML `Char`\n // production, false otherwise. Character references that resolve to a\n // character outside this range (e.g. surrogates or restricted control\n // characters) are not well-formed.\n // https://www.w3.org/TR/REC-xml/#NT-Char\n // https://www.w3.org/TR/REC-xml/#wf-Legalchar\n function isXmlChar(num) {\n return (\n num === 0x9 ||\n num === 0xa ||\n num === 0xd ||\n (num >= 0x20 && num <= 0xd7ff) ||\n (num >= 0xe000 && num <= 0xfffd) ||\n (num >= 0x10000 && num <= 0x10ffff)\n )\n }\n\n function beginWhiteSpace(parser, c) {\n if (c === '<') {\n parser.state = S.OPEN_WAKA\n parser.startTagPosition = parser.position\n } else if (!isWhitespace(c)) {\n // have to process this as a text node.\n // weird, but happens.\n strictFail(parser, 'Non-whitespace before first tag.')\n parser.textNode = c\n parser.state = S.TEXT\n }\n }\n\n function charAt(chunk, i) {\n var result = ''\n if (i < chunk.length) {\n result = chunk.charAt(i)\n }\n return result\n }\n\n function write(chunk) {\n var parser = this\n if (this.error) {\n throw this.error\n }\n if (parser.closed) {\n return error(\n parser,\n 'Cannot write after close. Assign an onready handler.'\n )\n }\n if (chunk === null) {\n return end(parser)\n }\n if (typeof chunk === 'object') {\n chunk = chunk.toString()\n }\n var i = 0\n var c = ''\n while (true) {\n c = charAt(chunk, i++)\n parser.c = c\n\n if (!c) {\n break\n }\n\n if (parser.trackPosition) {\n parser.position++\n if (c === '\\n') {\n parser.line++\n parser.column = 0\n } else {\n parser.column++\n }\n }\n\n switch (parser.state) {\n case S.BEGIN:\n parser.state = S.BEGIN_WHITESPACE\n if (c === '\\uFEFF') {\n continue\n }\n beginWhiteSpace(parser, c)\n continue\n\n case S.BEGIN_WHITESPACE:\n beginWhiteSpace(parser, c)\n continue\n\n case S.TEXT:\n if (parser.sawRoot && !parser.closedRoot) {\n var starti = i - 1\n while (c && c !== '<' && c !== '&') {\n c = charAt(chunk, i++)\n if (c && parser.trackPosition) {\n parser.position++\n if (c === '\\n') {\n parser.line++\n parser.column = 0\n } else {\n parser.column++\n }\n }\n }\n parser.textNode += chunk.substring(starti, i - 1)\n }\n if (\n c === '<' &&\n !(parser.sawRoot && parser.closedRoot && !parser.strict)\n ) {\n parser.state = S.OPEN_WAKA\n parser.startTagPosition = parser.position\n } else {\n if (\n !isWhitespace(c) &&\n (!parser.sawRoot || parser.closedRoot)\n ) {\n strictFail(parser, 'Text data outside of root node.')\n }\n if (c === '&') {\n parser.state = S.TEXT_ENTITY\n } else {\n parser.textNode += c\n }\n }\n continue\n\n case S.SCRIPT:\n // only non-strict\n if (c === '<') {\n parser.state = S.SCRIPT_ENDING\n } else {\n parser.script += c\n }\n continue\n\n case S.SCRIPT_ENDING:\n if (c === '/') {\n parser.state = S.CLOSE_TAG\n } else {\n parser.script += '<' + c\n parser.state = S.SCRIPT\n }\n continue\n\n case S.OPEN_WAKA:\n // either a /, ?, !, or text is coming next.\n if (c === '!') {\n parser.state = S.SGML_DECL\n parser.sgmlDecl = ''\n } else if (isWhitespace(c)) {\n // wait for it...\n } else if (isMatch(nameStart, c)) {\n parser.state = S.OPEN_TAG\n parser.tagName = c\n } else if (c === '/') {\n parser.state = S.CLOSE_TAG\n parser.tagName = ''\n } else if (c === '?') {\n parser.state = S.PROC_INST\n parser.procInstName = parser.procInstBody = ''\n } else {\n strictFail(parser, 'Unencoded <')\n // if there was some whitespace, then add that in.\n if (parser.startTagPosition + 1 < parser.position) {\n var pad = parser.position - parser.startTagPosition\n c = new Array(pad).join(' ') + c\n }\n parser.textNode += '<' + c\n parser.state = S.TEXT\n }\n continue\n\n case S.SGML_DECL:\n if (parser.sgmlDecl + c === '--') {\n parser.state = S.COMMENT\n parser.comment = ''\n parser.sgmlDecl = ''\n continue\n }\n\n if (\n parser.doctype &&\n parser.doctype !== true &&\n parser.sgmlDecl\n ) {\n parser.state = S.DOCTYPE_DTD\n parser.doctype += '<!' + parser.sgmlDecl + c\n parser.sgmlDecl = ''\n } else if (CDATAre.test(parser.sgmlDecl + c)) {\n emitNode(parser, 'onopencdata')\n parser.state = S.CDATA\n parser.sgmlDecl = ''\n parser.cdata = ''\n } else if (DOCTYPEre.test(parser.sgmlDecl + c)) {\n parser.state = S.DOCTYPE\n if (parser.doctype || parser.sawRoot) {\n strictFail(\n parser,\n 'Inappropriately located doctype declaration'\n )\n }\n parser.doctype = ''\n parser.sgmlDecl = ''\n } else if (c === '>') {\n emitNode(parser, 'onsgmldeclaration', parser.sgmlDecl)\n parser.sgmlDecl = ''\n parser.state = S.TEXT\n } else if (isQuote(c)) {\n parser.state = S.SGML_DECL_QUOTED\n parser.sgmlDecl += c\n } else {\n parser.sgmlDecl += c\n }\n continue\n\n case S.SGML_DECL_QUOTED:\n if (c === parser.q) {\n parser.state = S.SGML_DECL\n parser.q = ''\n }\n parser.sgmlDecl += c\n continue\n\n case S.DOCTYPE:\n if (c === '>') {\n parser.state = S.TEXT\n emitNode(parser, 'ondoctype', parser.doctype)\n parser.doctype = true // just remember that we saw it.\n } else {\n parser.doctype += c\n if (c === '[') {\n parser.state = S.DOCTYPE_DTD\n } else if (isQuote(c)) {\n parser.state = S.DOCTYPE_QUOTED\n parser.q = c\n }\n }\n continue\n\n case S.DOCTYPE_QUOTED:\n parser.doctype += c\n if (c === parser.q) {\n parser.q = ''\n parser.state = S.DOCTYPE\n }\n continue\n\n case S.DOCTYPE_DTD:\n if (c === ']') {\n parser.doctype += c\n parser.state = S.DOCTYPE\n } else if (c === '<') {\n parser.state = S.OPEN_WAKA\n parser.startTagPosition = parser.position\n } else if (isQuote(c)) {\n parser.doctype += c\n parser.state = S.DOCTYPE_DTD_QUOTED\n parser.q = c\n } else {\n parser.doctype += c\n }\n continue\n\n case S.DOCTYPE_DTD_QUOTED:\n parser.doctype += c\n if (c === parser.q) {\n parser.state = S.DOCTYPE_DTD\n parser.q = ''\n }\n continue\n\n case S.COMMENT:\n if (c === '-') {\n parser.state = S.COMMENT_ENDING\n } else {\n parser.comment += c\n }\n continue\n\n case S.COMMENT_ENDING:\n if (c === '-') {\n parser.state = S.COMMENT_ENDED\n parser.comment = textopts(parser.opt, parser.comment)\n if (parser.comment) {\n emitNode(parser, 'oncomment', parser.comment)\n }\n parser.comment = ''\n } else {\n parser.comment += '-' + c\n parser.state = S.COMMENT\n }\n continue\n\n case S.COMMENT_ENDED:\n if (c !== '>') {\n strictFail(parser, 'Malformed comment')\n // allow <!-- blah -- bloo --> in non-strict mode,\n // which is a comment of \" blah -- bloo \"\n parser.comment += '--' + c\n parser.state = S.COMMENT\n } else if (parser.doctype && parser.doctype !== true) {\n parser.state = S.DOCTYPE_DTD\n } else {\n parser.state = S.TEXT\n }\n continue\n\n case S.CDATA:\n var starti = i - 1\n while (c && c !== ']') {\n c = charAt(chunk, i++)\n if (c && parser.trackPosition) {\n parser.position++\n if (c === '\\n') {\n parser.line++\n parser.column = 0\n } else {\n parser.column++\n }\n }\n }\n parser.cdata += chunk.substring(starti, i - 1)\n if (c === ']') {\n parser.state = S.CDATA_ENDING\n }\n continue\n\n case S.CDATA_ENDING:\n if (c === ']') {\n parser.state = S.CDATA_ENDING_2\n } else {\n parser.cdata += ']' + c\n parser.state = S.CDATA\n }\n continue\n\n case S.CDATA_ENDING_2:\n if (c === '>') {\n if (parser.cdata) {\n emitNode(parser, 'oncdata', parser.cdata)\n }\n emitNode(parser, 'onclosecdata')\n parser.cdata = ''\n parser.state = S.TEXT\n } else if (c === ']') {\n parser.cdata += ']'\n } else {\n parser.cdata += ']]' + c\n parser.state = S.CDATA\n }\n continue\n\n case S.PROC_INST:\n if (c === '?') {\n parser.state = S.PROC_INST_ENDING\n } else if (isWhitespace(c)) {\n parser.state = S.PROC_INST_BODY\n } else {\n parser.procInstName += c\n }\n continue\n\n case S.PROC_INST_BODY:\n if (!parser.procInstBody && isWhitespace(c)) {\n continue\n } else if (c === '?') {\n parser.state = S.PROC_INST_ENDING\n } else {\n parser.procInstBody += c\n }\n continue\n\n case S.PROC_INST_ENDING:\n if (c === '>') {\n const procInstEndData = {\n name: parser.procInstName,\n body: parser.procInstBody,\n }\n validateXmlDeclarationEncoding(parser, procInstEndData)\n emitNode(parser, 'onprocessinginstruction', procInstEndData)\n parser.procInstName = parser.procInstBody = ''\n parser.state = S.TEXT\n } else {\n parser.procInstBody += '?' + c\n parser.state = S.PROC_INST_BODY\n }\n continue\n\n case S.OPEN_TAG:\n if (isMatch(nameBody, c)) {\n parser.tagName += c\n } else {\n newTag(parser)\n if (c === '>') {\n openTag(parser)\n } else if (c === '/') {\n parser.state = S.OPEN_TAG_SLASH\n } else {\n if (!isWhitespace(c)) {\n strictFail(parser, 'Invalid character in tag name')\n }\n parser.state = S.ATTRIB\n }\n }\n continue\n\n case S.OPEN_TAG_SLASH:\n if (c === '>') {\n openTag(parser, true)\n closeTag(parser)\n } else {\n strictFail(\n parser,\n 'Forward-slash in opening tag not followed by >'\n )\n parser.state = S.ATTRIB\n }\n continue\n\n case S.ATTRIB:\n // haven't read the attribute name yet.\n if (isWhitespace(c)) {\n continue\n } else if (c === '>') {\n openTag(parser)\n } else if (c === '/') {\n parser.state = S.OPEN_TAG_SLASH\n } else if (isMatch(nameStart, c)) {\n parser.attribName = c\n parser.attribValue = ''\n parser.state = S.ATTRIB_NAME\n } else {\n strictFail(parser, 'Invalid attribute name')\n }\n continue\n\n case S.ATTRIB_NAME:\n if (c === '=') {\n parser.state = S.ATTRIB_VALUE\n } else if (c === '>') {\n strictFail(parser, 'Attribute without value')\n parser.attribValue = parser.attribName\n attrib(parser)\n openTag(parser)\n } else if (isWhitespace(c)) {\n parser.state = S.ATTRIB_NAME_SAW_WHITE\n } else if (isMatch(nameBody, c)) {\n parser.attribName += c\n } else {\n strictFail(parser, 'Invalid attribute name')\n }\n continue\n\n case S.ATTRIB_NAME_SAW_WHITE:\n if (c === '=') {\n parser.state = S.ATTRIB_VALUE\n } else if (isWhitespace(c)) {\n continue\n } else {\n strictFail(parser, 'Attribute without value')\n parser.tag.attributes[parser.attribName] = ''\n parser.attribValue = ''\n emitNode(parser, 'onattribute', {\n name: parser.attribName,\n value: '',\n })\n parser.attribName = ''\n if (c === '>') {\n openTag(parser)\n } else if (isMatch(nameStart, c)) {\n parser.attribName = c\n parser.state = S.ATTRIB_NAME\n } else {\n strictFail(parser, 'Invalid attribute name')\n parser.state = S.ATTRIB\n }\n }\n continue\n\n case S.ATTRIB_VALUE:\n if (isWhitespace(c)) {\n continue\n } else if (isQuote(c)) {\n parser.q = c\n parser.state = S.ATTRIB_VALUE_QUOTED\n } else {\n if (!parser.opt.unquotedAttributeValues) {\n error(parser, 'Unquoted attribute value')\n }\n parser.state = S.ATTRIB_VALUE_UNQUOTED\n parser.attribValue = c\n }\n continue\n\n case S.ATTRIB_VALUE_QUOTED:\n if (c !== parser.q) {\n if (c === '&') {\n parser.state = S.ATTRIB_VALUE_ENTITY_Q\n } else {\n parser.attribValue += c\n }\n continue\n }\n attrib(parser)\n parser.q = ''\n parser.state = S.ATTRIB_VALUE_CLOSED\n continue\n\n case S.ATTRIB_VALUE_CLOSED:\n if (isWhitespace(c)) {\n parser.state = S.ATTRIB\n } else if (c === '>') {\n openTag(parser)\n } else if (c === '/') {\n parser.state = S.OPEN_TAG_SLASH\n } else if (isMatch(nameStart, c)) {\n strictFail(parser, 'No whitespace between attributes')\n parser.attribName = c\n parser.attribValue = ''\n parser.state = S.ATTRIB_NAME\n } else {\n strictFail(parser, 'Invalid attribute name')\n }\n continue\n\n case S.ATTRIB_VALUE_UNQUOTED:\n if (!isAttribEnd(c)) {\n if (c === '&') {\n parser.state = S.ATTRIB_VALUE_ENTITY_U\n } else {\n parser.attribValue += c\n }\n continue\n }\n attrib(parser)\n if (c === '>') {\n openTag(parser)\n } else {\n parser.state = S.ATTRIB\n }\n continue\n\n case S.CLOSE_TAG:\n if (!parser.tagName) {\n if (isWhitespace(c)) {\n continue\n } else if (notMatch(nameStart, c)) {\n if (parser.script) {\n parser.script += '</' + c\n parser.state = S.SCRIPT\n } else {\n strictFail(parser, 'Invalid tagname in closing tag.')\n }\n } else {\n parser.tagName = c\n }\n } else if (c === '>') {\n closeTag(parser)\n } else if (isMatch(nameBody, c)) {\n parser.tagName += c\n } else if (parser.script) {\n parser.script += '</' + parser.tagName + c\n parser.tagName = ''\n parser.state = S.SCRIPT\n } else {\n if (!isWhitespace(c)) {\n strictFail(parser, 'Invalid tagname in closing tag')\n }\n parser.state = S.CLOSE_TAG_SAW_WHITE\n }\n continue\n\n case S.CLOSE_TAG_SAW_WHITE:\n if (isWhitespace(c)) {\n continue\n }\n if (c === '>') {\n closeTag(parser)\n } else {\n strictFail(parser, 'Invalid characters in closing tag')\n }\n continue\n\n case S.TEXT_ENTITY:\n case S.ATTRIB_VALUE_ENTITY_Q:\n case S.ATTRIB_VALUE_ENTITY_U:\n var returnState\n var buffer\n switch (parser.state) {\n case S.TEXT_ENTITY:\n returnState = S.TEXT\n buffer = 'textNode'\n break\n\n case S.ATTRIB_VALUE_ENTITY_Q:\n returnState = S.ATTRIB_VALUE_QUOTED\n buffer = 'attribValue'\n break\n\n case S.ATTRIB_VALUE_ENTITY_U:\n returnState = S.ATTRIB_VALUE_UNQUOTED\n buffer = 'attribValue'\n break\n }\n\n if (c === ';') {\n var parsedEntity = parseEntity(parser)\n if (\n parser.opt.unparsedEntities &&\n !Object.values(sax.XML_ENTITIES).includes(parsedEntity)\n ) {\n if ((parser.entityCount += 1) > parser.opt.maxEntityCount) {\n error(\n parser,\n 'Parsed entity count exceeds max entity count'\n )\n }\n\n if ((parser.entityDepth += 1) > parser.opt.maxEntityDepth) {\n error(\n parser,\n 'Parsed entity depth exceeds max entity depth'\n )\n }\n\n parser.entity = ''\n parser.state = returnState\n parser.write(parsedEntity)\n parser.entityDepth -= 1\n } else {\n parser[buffer] += parsedEntity\n parser.entity = ''\n parser.state = returnState\n }\n } else if (\n isMatch(parser.entity.length ? entityBody : entityStart, c)\n ) {\n parser.entity += c\n } else {\n strictFail(parser, 'Invalid character in entity name')\n parser[buffer] += '&' + parser.entity + c\n parser.entity = ''\n parser.state = returnState\n }\n\n continue\n\n default: /* istanbul ignore next */ {\n throw new Error(parser, 'Unknown state: ' + parser.state)\n }\n }\n } // while\n\n if (parser.position >= parser.bufferCheckPosition) {\n checkBufferLength(parser)\n }\n return parser\n }\n\n /*! http://mths.be/fromcodepoint v0.1.0 by @mathias */\n /* istanbul ignore next */\n if (!String.fromCodePoint) {\n ;(function () {\n var stringFromCharCode = String.fromCharCode\n var floor = Math.floor\n var fromCodePoint = function () {\n var MAX_SIZE = 0x4000\n var codeUnits = []\n var highSurrogate\n var lowSurrogate\n var index = -1\n var length = arguments.length\n if (!length) {\n return ''\n }\n var result = ''\n while (++index < length) {\n var codePoint = Number(arguments[index])\n if (\n !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n codePoint < 0 || // not a valid Unicode code point\n codePoint > 0x10ffff || // not a valid Unicode code point\n floor(codePoint) !== codePoint // not an integer\n ) {\n throw RangeError('Invalid code point: ' + codePoint)\n }\n if (codePoint <= 0xffff) {\n // BMP code point\n codeUnits.push(codePoint)\n } else {\n // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000\n highSurrogate = (codePoint >> 10) + 0xd800\n lowSurrogate = (codePoint % 0x400) + 0xdc00\n codeUnits.push(highSurrogate, lowSurrogate)\n }\n if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n result += stringFromCharCode.apply(null, codeUnits)\n codeUnits.length = 0\n }\n }\n return result\n }\n /* istanbul ignore next */\n if (Object.defineProperty) {\n Object.defineProperty(String, 'fromCodePoint', {\n value: fromCodePoint,\n configurable: true,\n writable: true,\n })\n } else {\n String.fromCodePoint = fromCodePoint\n }\n })()\n }\n})(typeof exports === 'undefined' ? (this.sax = {}) : exports)\n","// Generated by CoffeeScript 1.12.7\n(function() {\n \"use strict\";\n exports.stripBOM = function(str) {\n if (str[0] === '\\uFEFF') {\n return str.substring(1);\n } else {\n return str;\n }\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n \"use strict\";\n var prefixMatch;\n\n prefixMatch = new RegExp(/(?!xmlns)^.*:/);\n\n exports.normalize = function(str) {\n return str.toLowerCase();\n };\n\n exports.firstCharLowerCase = function(str) {\n return str.charAt(0).toLowerCase() + str.slice(1);\n };\n\n exports.stripPrefix = function(str) {\n return str.replace(prefixMatch, '');\n };\n\n exports.parseNumbers = function(str) {\n if (!isNaN(str)) {\n str = str % 1 === 0 ? parseInt(str, 10) : parseFloat(str);\n }\n return str;\n };\n\n exports.parseBooleans = function(str) {\n if (/^(?:true|false)$/i.test(str)) {\n str = str.toLowerCase() === 'true';\n }\n return str;\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n \"use strict\";\n var bom, defaults, defineProperty, events, isEmpty, processItem, processors, sax, setImmediate,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n sax = require('sax');\n\n events = require('events');\n\n bom = require('./bom');\n\n processors = require('./processors');\n\n setImmediate = require('timers').setImmediate;\n\n defaults = require('./defaults').defaults;\n\n isEmpty = function(thing) {\n return typeof thing === \"object\" && (thing != null) && Object.keys(thing).length === 0;\n };\n\n processItem = function(processors, item, key) {\n var i, len, process;\n for (i = 0, len = processors.length; i < len; i++) {\n process = processors[i];\n item = process(item, key);\n }\n return item;\n };\n\n defineProperty = function(obj, key, value) {\n var descriptor;\n descriptor = Object.create(null);\n descriptor.value = value;\n descriptor.writable = true;\n descriptor.enumerable = true;\n descriptor.configurable = true;\n return Object.defineProperty(obj, key, descriptor);\n };\n\n exports.Parser = (function(superClass) {\n extend(Parser, superClass);\n\n function Parser(opts) {\n this.parseStringPromise = bind(this.parseStringPromise, this);\n this.parseString = bind(this.parseString, this);\n this.reset = bind(this.reset, this);\n this.assignOrPush = bind(this.assignOrPush, this);\n this.processAsync = bind(this.processAsync, this);\n var key, ref, value;\n if (!(this instanceof exports.Parser)) {\n return new exports.Parser(opts);\n }\n this.options = {};\n ref = defaults[\"0.2\"];\n for (key in ref) {\n if (!hasProp.call(ref, key)) continue;\n value = ref[key];\n this.options[key] = value;\n }\n for (key in opts) {\n if (!hasProp.call(opts, key)) continue;\n value = opts[key];\n this.options[key] = value;\n }\n if (this.options.xmlns) {\n this.options.xmlnskey = this.options.attrkey + \"ns\";\n }\n if (this.options.normalizeTags) {\n if (!this.options.tagNameProcessors) {\n this.options.tagNameProcessors = [];\n }\n this.options.tagNameProcessors.unshift(processors.normalize);\n }\n this.reset();\n }\n\n Parser.prototype.processAsync = function() {\n var chunk, err;\n try {\n if (this.remaining.length <= this.options.chunkSize) {\n chunk = this.remaining;\n this.remaining = '';\n this.saxParser = this.saxParser.write(chunk);\n return this.saxParser.close();\n } else {\n chunk = this.remaining.substr(0, this.options.chunkSize);\n this.remaining = this.remaining.substr(this.options.chunkSize, this.remaining.length);\n this.saxParser = this.saxParser.write(chunk);\n return setImmediate(this.processAsync);\n }\n } catch (error1) {\n err = error1;\n if (!this.saxParser.errThrown) {\n this.saxParser.errThrown = true;\n return this.emit(err);\n }\n }\n };\n\n Parser.prototype.assignOrPush = function(obj, key, newValue) {\n if (!(key in obj)) {\n if (!this.options.explicitArray) {\n return defineProperty(obj, key, newValue);\n } else {\n return defineProperty(obj, key, [newValue]);\n }\n } else {\n if (!(obj[key] instanceof Array)) {\n defineProperty(obj, key, [obj[key]]);\n }\n return obj[key].push(newValue);\n }\n };\n\n Parser.prototype.reset = function() {\n var attrkey, charkey, ontext, stack;\n this.removeAllListeners();\n this.saxParser = sax.parser(this.options.strict, {\n trim: false,\n normalize: false,\n xmlns: this.options.xmlns\n });\n this.saxParser.errThrown = false;\n this.saxParser.onerror = (function(_this) {\n return function(error) {\n _this.saxParser.resume();\n if (!_this.saxParser.errThrown) {\n _this.saxParser.errThrown = true;\n return _this.emit(\"error\", error);\n }\n };\n })(this);\n this.saxParser.onend = (function(_this) {\n return function() {\n if (!_this.saxParser.ended) {\n _this.saxParser.ended = true;\n return _this.emit(\"end\", _this.resultObject);\n }\n };\n })(this);\n this.saxParser.ended = false;\n this.EXPLICIT_CHARKEY = this.options.explicitCharkey;\n this.resultObject = null;\n stack = [];\n attrkey = this.options.attrkey;\n charkey = this.options.charkey;\n this.saxParser.onopentag = (function(_this) {\n return function(node) {\n var key, newValue, obj, processedKey, ref;\n obj = {};\n obj[charkey] = \"\";\n if (!_this.options.ignoreAttrs) {\n ref = node.attributes;\n for (key in ref) {\n if (!hasProp.call(ref, key)) continue;\n if (!(attrkey in obj) && !_this.options.mergeAttrs) {\n obj[attrkey] = {};\n }\n newValue = _this.options.attrValueProcessors ? processItem(_this.options.attrValueProcessors, node.attributes[key], key) : node.attributes[key];\n processedKey = _this.options.attrNameProcessors ? processItem(_this.options.attrNameProcessors, key) : key;\n if (_this.options.mergeAttrs) {\n _this.assignOrPush(obj, processedKey, newValue);\n } else {\n defineProperty(obj[attrkey], processedKey, newValue);\n }\n }\n }\n obj[\"#name\"] = _this.options.tagNameProcessors ? processItem(_this.options.tagNameProcessors, node.name) : node.name;\n if (_this.options.xmlns) {\n obj[_this.options.xmlnskey] = {\n uri: node.uri,\n local: node.local\n };\n }\n return stack.push(obj);\n };\n })(this);\n this.saxParser.onclosetag = (function(_this) {\n return function() {\n var cdata, emptyStr, key, node, nodeName, obj, objClone, old, s, xpath;\n obj = stack.pop();\n nodeName = obj[\"#name\"];\n if (!_this.options.explicitChildren || !_this.options.preserveChildrenOrder) {\n delete obj[\"#name\"];\n }\n if (obj.cdata === true) {\n cdata = obj.cdata;\n delete obj.cdata;\n }\n s = stack[stack.length - 1];\n if (obj[charkey].match(/^\\s*$/) && !cdata) {\n emptyStr = obj[charkey];\n delete obj[charkey];\n } else {\n if (_this.options.trim) {\n obj[charkey] = obj[charkey].trim();\n }\n if (_this.options.normalize) {\n obj[charkey] = obj[charkey].replace(/\\s{2,}/g, \" \").trim();\n }\n obj[charkey] = _this.options.valueProcessors ? processItem(_this.options.valueProcessors, obj[charkey], nodeName) : obj[charkey];\n if (Object.keys(obj).length === 1 && charkey in obj && !_this.EXPLICIT_CHARKEY) {\n obj = obj[charkey];\n }\n }\n if (isEmpty(obj)) {\n if (typeof _this.options.emptyTag === 'function') {\n obj = _this.options.emptyTag();\n } else {\n obj = _this.options.emptyTag !== '' ? _this.options.emptyTag : emptyStr;\n }\n }\n if (_this.options.validator != null) {\n xpath = \"/\" + ((function() {\n var i, len, results;\n results = [];\n for (i = 0, len = stack.length; i < len; i++) {\n node = stack[i];\n results.push(node[\"#name\"]);\n }\n return results;\n })()).concat(nodeName).join(\"/\");\n (function() {\n var err;\n try {\n return obj = _this.options.validator(xpath, s && s[nodeName], obj);\n } catch (error1) {\n err = error1;\n return _this.emit(\"error\", err);\n }\n })();\n }\n if (_this.options.explicitChildren && !_this.options.mergeAttrs && typeof obj === 'object') {\n if (!_this.options.preserveChildrenOrder) {\n node = {};\n if (_this.options.attrkey in obj) {\n node[_this.options.attrkey] = obj[_this.options.attrkey];\n delete obj[_this.options.attrkey];\n }\n if (!_this.options.charsAsChildren && _this.options.charkey in obj) {\n node[_this.options.charkey] = obj[_this.options.charkey];\n delete obj[_this.options.charkey];\n }\n if (Object.getOwnPropertyNames(obj).length > 0) {\n node[_this.options.childkey] = obj;\n }\n obj = node;\n } else if (s) {\n s[_this.options.childkey] = s[_this.options.childkey] || [];\n objClone = {};\n for (key in obj) {\n if (!hasProp.call(obj, key)) continue;\n defineProperty(objClone, key, obj[key]);\n }\n s[_this.options.childkey].push(objClone);\n delete obj[\"#name\"];\n if (Object.keys(obj).length === 1 && charkey in obj && !_this.EXPLICIT_CHARKEY) {\n obj = obj[charkey];\n }\n }\n }\n if (stack.length > 0) {\n return _this.assignOrPush(s, nodeName, obj);\n } else {\n if (_this.options.explicitRoot) {\n old = obj;\n obj = {};\n defineProperty(obj, nodeName, old);\n }\n _this.resultObject = obj;\n _this.saxParser.ended = true;\n return _this.emit(\"end\", _this.resultObject);\n }\n };\n })(this);\n ontext = (function(_this) {\n return function(text) {\n var charChild, s;\n s = stack[stack.length - 1];\n if (s) {\n s[charkey] += text;\n if (_this.options.explicitChildren && _this.options.preserveChildrenOrder && _this.options.charsAsChildren && (_this.options.includeWhiteChars || text.replace(/\\\\n/g, '').trim() !== '')) {\n s[_this.options.childkey] = s[_this.options.childkey] || [];\n charChild = {\n '#name': '__text__'\n };\n charChild[charkey] = text;\n if (_this.options.normalize) {\n charChild[charkey] = charChild[charkey].replace(/\\s{2,}/g, \" \").trim();\n }\n s[_this.options.childkey].push(charChild);\n }\n return s;\n }\n };\n })(this);\n this.saxParser.ontext = ontext;\n return this.saxParser.oncdata = (function(_this) {\n return function(text) {\n var s;\n s = ontext(text);\n if (s) {\n return s.cdata = true;\n }\n };\n })(this);\n };\n\n Parser.prototype.parseString = function(str, cb) {\n var err;\n if ((cb != null) && typeof cb === \"function\") {\n this.on(\"end\", function(result) {\n this.reset();\n return cb(null, result);\n });\n this.on(\"error\", function(err) {\n this.reset();\n return cb(err);\n });\n }\n try {\n str = str.toString();\n if (str.trim() === '') {\n this.emit(\"end\", null);\n return true;\n }\n str = bom.stripBOM(str);\n if (this.options.async) {\n this.remaining = str;\n setImmediate(this.processAsync);\n return this.saxParser;\n }\n return this.saxParser.write(str).close();\n } catch (error1) {\n err = error1;\n if (!(this.saxParser.errThrown || this.saxParser.ended)) {\n this.emit('error', err);\n return this.saxParser.errThrown = true;\n } else if (this.saxParser.ended) {\n throw err;\n }\n }\n };\n\n Parser.prototype.parseStringPromise = function(str) {\n return new Promise((function(_this) {\n return function(resolve, reject) {\n return _this.parseString(str, function(err, value) {\n if (err) {\n return reject(err);\n } else {\n return resolve(value);\n }\n });\n };\n })(this));\n };\n\n return Parser;\n\n })(events);\n\n exports.parseString = function(str, a, b) {\n var cb, options, parser;\n if (b != null) {\n if (typeof b === 'function') {\n cb = b;\n }\n if (typeof a === 'object') {\n options = a;\n }\n } else {\n if (typeof a === 'function') {\n cb = a;\n }\n options = {};\n }\n parser = new exports.Parser(options);\n return parser.parseString(str, cb);\n };\n\n exports.parseStringPromise = function(str, a) {\n var options, parser;\n if (typeof a === 'object') {\n options = a;\n }\n parser = new exports.Parser(options);\n return parser.parseStringPromise(str);\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n \"use strict\";\n var builder, defaults, parser, processors,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n defaults = require('./defaults');\n\n builder = require('./builder');\n\n parser = require('./parser');\n\n processors = require('./processors');\n\n exports.defaults = defaults.defaults;\n\n exports.processors = processors;\n\n exports.ValidationError = (function(superClass) {\n extend(ValidationError, superClass);\n\n function ValidationError(message) {\n this.message = message;\n }\n\n return ValidationError;\n\n })(Error);\n\n exports.Builder = builder.Builder;\n\n exports.Parser = parser.Parser;\n\n exports.parseString = parser.parseString;\n\n exports.parseStringPromise = parser.parseStringPromise;\n\n}).call(this);\n","const EventEmitter = require('events');\nconst {\n isInterfaceNameValid,\n isMemberNameValid\n} = require('../validators');\n\nclass ProxyListener {\n constructor (signal, iface) {\n this.refcount = 0;\n this.fn = (msg) => {\n const { body, signature, sender } = msg;\n if (iface.$object.bus._nameOwners[iface.$object.name] !== sender) {\n return;\n }\n if (signature !== signal.signature) {\n console.error(`warning: got signature ${signature} for signal ${msg.interface}.${signal.name} (expected ${signal.signature})`);\n return;\n }\n iface.emit.apply(iface, [signal.name].concat(body));\n };\n }\n}\n\n/**\n * A class to represent a proxy to an interface exported on the bus to be used\n * by a client. A `ProxyInterface` is gotten by interface name from the {@link\n * ProxyObject} from the {@link MessageBus}. This class is constructed\n * dynamically based on the introspection data on the bus. The advertised\n * methods of the interface are exposed as class methods that take arguments\n * and return a Promsie that resolves to types specified by the type signature\n * of the DBus method. The `ProxyInterface` is an `EventEmitter` that emits\n * events with types that are specified by the type signature of the DBus\n * signal advertised on the bus when that signal is received.\n *\n * If an interface method call returns an error, `ProxyInterface` method call\n * will throw a {@link DBusError}.\n *\n * @example\n * // this demonstrates the use of the standard\n * // `org.freedesktop.DBus.Properties` interface for an interface that exports\n * // some properties.\n * let bus = dbus.sessionBus();\n * let obj = await bus.getProxyObject('org.test.bus_name', '/org/test/path');\n * let properties = obj.getInterface('org.freedesktop.DBus.Properties');\n * // the `Get` method provided by this interface takes two strings and returns\n * // a Variant\n * let someProperty = await properties.Get('org.test.interface_name', 'SomeProperty');\n * // the `PropertiesChanged` signal provided by this interface will emit an\n * // event on the interface with its specified signal arguments.\n * properties.on('PropertiesChanged', (props, invalidated) => {});\n */\nclass ProxyInterface extends EventEmitter {\n /**\n * Create a new `ProxyInterface`. This constructor should not be called\n * directly. Use {@link ProxyObject#getInterface} to get a proxy interface.\n */\n constructor (name, object) {\n super();\n this.$name = name;\n this.$object = object;\n this.$properties = [];\n this.$methods = [];\n this.$signals = [];\n this.$listeners = {};\n\n const getEventDetails = (eventName) => {\n const signal = this.$signals.find((s) => s.name === eventName);\n if (!signal) {\n return [null, null];\n }\n\n const detailedEvent = JSON.stringify({\n path: this.$object.path,\n interface: this.$name,\n member: eventName\n });\n\n return [signal, detailedEvent];\n };\n\n this.on('removeListener', (eventName, listener) => {\n const [signal, detailedEvent] = getEventDetails(eventName);\n\n if (!signal) {\n return;\n }\n\n const proxyListener = this._getEventListener(signal);\n\n if (proxyListener.refcount <= 0) {\n return;\n }\n\n proxyListener.refcount -= 1;\n if (proxyListener.refcount > 0) {\n return;\n }\n\n this.$object.bus._removeMatch(this._signalMatchRuleString(eventName))\n .catch(error => {\n this.$object.bus.emit('error', error);\n });\n this.$object.bus._signals.removeListener(detailedEvent, proxyListener.fn);\n });\n\n this.on('newListener', (eventName, listener) => {\n const [signal, detailedEvent] = getEventDetails(eventName);\n\n if (!signal) {\n return;\n }\n\n const proxyListener = this._getEventListener(signal);\n\n if (proxyListener.refcount > 0) {\n proxyListener.refcount += 1;\n return;\n }\n\n proxyListener.refcount = 1;\n\n this.$object.bus._addMatch(this._signalMatchRuleString(eventName))\n .catch(error => {\n this.$object.bus.emit('error', error);\n });\n this.$object.bus._signals.on(detailedEvent, proxyListener.fn);\n });\n }\n\n _signalMatchRuleString (eventName) {\n return `type='signal',sender=${this.$object.name},interface='${this.$name}',path='${this.$object.path}',member='${eventName}'`;\n }\n\n _getEventListener (signal) {\n if (this.$listeners[signal.name]) {\n return this.$listeners[signal.name];\n }\n\n this.$listeners[signal.name] = new ProxyListener(signal, this);\n return this.$listeners[signal.name];\n }\n\n static _fromXml (object, xml) {\n if (!('$' in xml) || !isInterfaceNameValid(xml.$.name)) {\n return null;\n }\n\n const name = xml.$.name;\n const iface = new ProxyInterface(name, object);\n\n if (Array.isArray(xml.property)) {\n for (const p of xml.property) {\n // TODO validation\n if ('$' in p) {\n iface.$properties.push(p.$);\n }\n }\n }\n\n if (Array.isArray(xml.signal)) {\n for (const s of xml.signal) {\n if (!('$' in s) || !isMemberNameValid(s.$.name)) {\n continue;\n }\n const signal = {\n name: s.$.name,\n signature: ''\n };\n\n if (Array.isArray(s.arg)) {\n for (const a of s.arg) {\n if ('$' in a && 'type' in a.$) {\n // TODO signature validation\n signal.signature += a.$.type;\n }\n }\n }\n\n iface.$signals.push(signal);\n }\n }\n\n if (Array.isArray(xml.method)) {\n for (const m of xml.method) {\n if (!('$' in m) || !isMemberNameValid(m.$.name)) {\n continue;\n }\n const method = {\n name: m.$.name,\n inSignature: '',\n outSignature: ''\n };\n\n if (Array.isArray(m.arg)) {\n for (const a of m.arg) {\n if (!('$' in a) || typeof a.$.type !== 'string') {\n continue;\n }\n const arg = a.$;\n if (arg.direction === 'in') {\n method.inSignature += arg.type;\n } else if (arg.direction === 'out') {\n method.outSignature += arg.type;\n }\n }\n }\n\n // TODO signature validation\n iface.$methods.push(method);\n\n iface[method.name] = function (...args) {\n const objArgs = [\n name,\n method.name,\n method.inSignature,\n method.outSignature\n ].concat(args);\n return object._callMethod.apply(object, objArgs);\n };\n }\n }\n\n return iface;\n }\n}\n\nmodule.exports = ProxyInterface;\n","const xml2js = require('xml2js');\nconst { parseSignature } = require('../signature');\nconst ProxyInterface = require('./proxy-interface');\nconst { Message } = require('../message-type');\nconst {\n assertBusNameValid,\n assertObjectPathValid,\n isObjectPathValid\n} = require('../validators');\n\n/**\n * @class\n * A class that represents a proxy to a DBus object. The `ProxyObject` contains\n * `ProxyInterface`s and a list of `node`s which are object paths of child\n * objects. A `ProxyObject` is created through {@link\n * MessageBus#getProxyObject} for a given well-known name and object path.\n * An interface can be gotten through {@link ProxyObject#getInterface} and can\n * be used to call methods and receive signals for that interface.\n *\n * @example\n * let bus = dbus.sessionBus();\n * let obj = await bus.getProxyObject('org.freedesktop.DBus', '/org/freedesktop/DBus');\n * let peer = obj.getInterface('org.freedesktop.DBus.Peer')\n * await peer.Ping();\n */\nclass ProxyObject {\n /**\n * Create a new `ProxyObject`. This constructor should not be called\n * directly. Use {@link MessageBus#getProxyObject} to get a proxy object.\n */\n constructor (bus, name, path) {\n assertBusNameValid(name);\n assertObjectPathValid(path);\n /**\n * The {@link MessageBus} this name belongs to.\n * @memberof ProxyObject#\n * @member {MessageBus} bus\n */\n this.bus = bus;\n /**\n * The well-known bus name for this proxy object as a string.\n * @memberof ProxyObject#\n * @member {string} name\n */\n this.name = name;\n /**\n * The object path for this `ProxyObject`.\n * @memberof ProxyObject#\n * @member {string} path\n */\n this.path = path;\n /**\n * The object path child nodes for this `ProxyObject` as an array of\n * strings\n * @memberof ProxyObject#\n * @member {string[]} nodes\n */\n this.nodes = [];\n\n /**\n * A map of interface names to [ProxyInterfaces]{@link ProxyInterface} for\n * this `ProxyObject`.\n * @memberof ProxyObject#\n * @member {Object.<string, ProxyInterface>} interfaces\n */\n this.interfaces = {};\n this._parser = new xml2js.Parser();\n }\n\n /**\n * Get a {@link ProxyInterface} for the given interface name.\n *\n * @param name {string} - the interface name to get.\n * @returns {ProxyInterface} - the proxy interface with this name exported by\n * the object or `undefined` if the object does not export an interface with\n * that name.\n * @throws {Error} Throws an error if the interface is not found on this object.\n */\n getInterface (name) {\n if (!Object.keys(this.interfaces).includes(name)) {\n throw new Error(`interface not found in proxy object: ${name}`);\n }\n return this.interfaces[name];\n }\n\n _initXml (xml) {\n const root = xml.node;\n\n if (Array.isArray(root.node)) {\n for (const n of root.node) {\n if (!('$' in n)) {\n continue;\n }\n const name = n.$.name;\n const path = `${this.path}/${name}`;\n if (isObjectPathValid(path)) {\n this.nodes.push(path);\n }\n }\n }\n\n if (Array.isArray(root.interface)) {\n for (const i of root.interface) {\n const iface = ProxyInterface._fromXml(this, i);\n if (iface !== null) {\n this.interfaces[iface.$name] = iface;\n }\n }\n }\n }\n\n _init (xml) {\n return new Promise((resolve, reject) => {\n if (xml) {\n this._parser.parseString(xml, (err, data) => {\n if (err) {\n return reject(err);\n }\n this._initXml(data);\n\n const nameOwnerMessage = new Message({\n destination: 'org.freedesktop.DBus',\n path: '/org/freedesktop/DBus',\n interface: 'org.freedesktop.DBus',\n member: 'GetNameOwner',\n signature: 's',\n body: [this.name]\n });\n\n this.bus.call(nameOwnerMessage)\n .then((msg) => {\n this.bus._nameOwners[this.name] = msg.body[0];\n resolve(this);\n })\n .catch((err) => {\n if (err.type === 'org.freedesktop.DBus.Error.NameHasNoOwner') { return resolve(this); }\n return reject(err);\n });\n });\n } else {\n const introspectMessage = new Message({\n destination: this.name,\n path: this.path,\n interface: 'org.freedesktop.DBus.Introspectable',\n member: 'Introspect',\n signature: '',\n body: []\n });\n\n this.bus.call(introspectMessage)\n .then((msg) => {\n const xml = msg.body[0];\n this._parser.parseString(xml, (err, data) => {\n if (err) {\n return reject(err);\n }\n this._initXml(data);\n resolve(this);\n });\n })\n .catch((err) => {\n return reject(err);\n });\n }\n });\n }\n\n _callMethod (iface, member, inSignature, outSignature, ...args) {\n return new Promise((resolve, reject) => {\n args = args || [];\n\n const methodCallMessage = new Message({\n destination: this.name,\n interface: iface,\n path: this.path,\n member: member,\n signature: inSignature,\n body: args\n });\n\n this.bus.call(methodCallMessage)\n .then((msg) => {\n const outSignatureTree = parseSignature(outSignature);\n if (outSignatureTree.length === 0) {\n resolve(null);\n return;\n }\n if (outSignatureTree.length === 1) {\n resolve(msg.body[0]);\n } else {\n resolve(msg.body);\n }\n })\n .catch((err) => {\n return reject(err);\n });\n });\n }\n}\n\nmodule.exports = ProxyObject;\n","const EventEmitter = require('events').EventEmitter;\nconst constants = require('./constants');\nconst handleMethod = require('./service/handlers');\nconst { DBusError } = require('./errors');\nconst { Message } = require('./message-type');\nconst ServiceObject = require('./service/object');\nconst xml2js = require('xml2js');\n\nconst {\n METHOD_CALL,\n METHOD_RETURN,\n ERROR,\n SIGNAL\n} = constants.MessageType;\n\nconst {\n NO_REPLY_EXPECTED\n} = constants.MessageFlag;\n\nconst {\n assertBusNameValid,\n assertObjectPathValid\n} = require('./validators');\n\nconst ProxyObject = require('./client/proxy-object');\n\nconst xmlHeader = '<!DOCTYPE node PUBLIC \"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN\" \"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd\">\\n';\n\n/**\n * @class\n * The `MessageBus` is a class for interacting with a DBus message bus capable\n * of requesting a service [`Name`]{@link module:interface~Name} to export an\n * [`Interface`]{@link module:interface~Interface}, or getting a proxy object\n * to interact with an existing name on the bus as a client. A `MessageBus` is\n * created with `dbus.sessionBus()` or `dbus.systemBus()` methods of the\n * dbus-next module.\n *\n * The `MessageBus` is an `EventEmitter` which emits the following events:\n * * `error` - The underlying connection to the bus has errored. After\n * receiving an `error` event, the `MessageBus` may be disconnected.\n * * `connected` - The bus is connected and ready to send and receive messages.\n * Before this event, messages are buffered.\n * * `message` - The bus has received a message. Called with the {@link\n * Message} that was received. This is part of the low-level api.\n *\n * @example\n * const dbus = require('dbus-next');\n * const bus = dbus.sessionBus();\n * // get a proxy object\n * let obj = await bus.getProxyObject('org.freedesktop.DBus', '/org/freedesktop/DBus');\n * // request a well-known name\n * await bus.requestName('org.test.name');\n */\nclass MessageBus extends EventEmitter {\n /**\n * Create a new `MessageBus`. This constructor is not to be called directly.\n * Use `dbus.sessionBus()` or `dbus.systemBus()` to set up the connection to\n * the bus.\n */\n constructor (conn) {\n super();\n this._builder = new xml2js.Builder({ headless: true });\n this._connection = conn;\n this._serial = 1;\n this._methodReturnHandlers = {};\n this._signals = new EventEmitter();\n this._nameOwners = {};\n this._methodHandlers = [];\n this._serviceObjects = {};\n\n // An object with match rule keys and refcount values. Used only by\n // the internal high-level function `_addMatch` for refcounting.\n this._matchRules = {};\n\n /**\n * The unique name of the bus connection. This will be `null` until the\n * `MessageBus` is connected.\n * @memberof MessageBus#\n * @member {string} name\n */\n this.name = null;\n\n const handleMessage = (msg) => {\n // Don't handle messages that aren't destined for us. This might happen\n // when we become a monitor.\n if (this.name && msg.destination) {\n if (msg.destination[0] === ':' && msg.destination !== this.name) {\n return;\n }\n if (this._nameOwners[msg.destination] &&\n this._nameOwners[msg.destination] !== this.name) {\n return;\n }\n }\n\n if (msg.type === METHOD_RETURN ||\n msg.type === ERROR) {\n const handler = this._methodReturnHandlers[msg.replySerial];\n if (handler) {\n delete this._methodReturnHandlers[msg.replySerial];\n handler(msg);\n }\n } else if (msg.type === SIGNAL) {\n // if this is a name owner changed message, cache the new name owner\n const { sender, path, iface, member } = msg;\n if (sender === 'org.freedesktop.DBus' &&\n path === '/org/freedesktop/DBus' &&\n iface === 'org.freedesktop.DBus' &&\n member === 'NameOwnerChanged') {\n const name = msg.body[0];\n const newOwner = msg.body[2];\n if (!name.startsWith(':')) {\n this._nameOwners[name] = newOwner;\n }\n }\n\n const mangled = JSON.stringify({\n path: msg.path,\n interface: msg.interface,\n member: msg.member\n });\n this._signals.emit(mangled, msg);\n } else {\n // methodCall (needs to be handled)\n let handled = false;\n\n for (const handler of this._methodHandlers) {\n // run installed method handlers first\n handled = handler(msg);\n if (handled) {\n break;\n }\n }\n\n if (!handled) {\n handled = handleMethod(msg, this);\n }\n\n if (!handled) {\n this.send(Message.newError(msg,\n 'org.freedesktop.DBus.Error.UnknownMethod',\n `Method '${msg.member}' on interface '${msg.interface || '(none)'}' does not exist`));\n }\n }\n };\n\n conn.on('message', (msg) => {\n try {\n // TODO: document this signal\n this.emit('message', msg);\n handleMessage(msg);\n } catch (e) {\n this.send(Message.newError(msg, 'com.github.dbus_next.Error', `The DBus library encountered an error.\\n${e.stack}`));\n }\n });\n\n conn.on('error', (err) => {\n // forward network and stream errors\n this.emit('error', err);\n });\n\n const helloMessage = new Message({\n path: '/org/freedesktop/DBus',\n destination: 'org.freedesktop.DBus',\n interface: 'org.freedesktop.DBus',\n member: 'Hello'\n });\n\n this.call(helloMessage)\n .then((msg) => {\n this.name = msg.body[0];\n this.emit('connect');\n })\n .catch((err) => {\n this.emit('error', err);\n throw new Error(err);\n });\n }\n\n /**\n * Get a {@link ProxyObject} on the bus for the given name and path for interacting\n * with a service as a client. The proxy object contains a list of the\n * [`ProxyInterface`s]{@link ProxyInterface} exported at the name and object path as well as a list\n * of `node`s.\n *\n * @param name {string} - the well-known name on the bus.\n * @param path {string} - the object path exported on the name.\n * @param [xml] {string} - xml introspection data.\n * @returns {Promise} - a Promise that resolves with the `ProxyObject`.\n */\n getProxyObject (name, path, xml) {\n const obj = new ProxyObject(this, name, path);\n return obj._init(xml);\n }\n\n /**\n * Request a well-known name on the bus.\n *\n * @see {@link https://dbus.freedesktop.org/doc/dbus-specification.html#bus-messages-request-name}\n *\n * @param name {string} - the well-known name on the bus to request.\n * @param flags {NameFlag} - DBus name flags which affect the behavior of taking the name.\n * @returns {Promise} - a Promise that resolves with the {@link RequestNameReply}.\n */\n requestName (name, flags) {\n flags = flags || 0;\n return new Promise((resolve, reject) => {\n assertBusNameValid(name);\n const requestNameMessage = new Message({\n path: '/org/freedesktop/DBus',\n destination: 'org.freedesktop.DBus',\n interface: 'org.freedesktop.DBus',\n member: 'RequestName',\n signature: 'su',\n body: [name, flags]\n });\n this.call(requestNameMessage)\n .then((msg) => {\n return resolve(msg.body[0]);\n })\n .catch((err) => {\n return reject(err);\n });\n });\n }\n\n /**\n * Release this name. Requests that the name should no longer be owned by the\n * {@link MessageBus}.\n *\n * @returns {Promise} A Promise that will resolve with the {@link ReleaseNameReply}.\n */\n releaseName (name) {\n return new Promise((resolve, reject) => {\n const msg = new Message({\n path: '/org/freedesktop/DBus',\n destination: 'org.freedesktop.DBus',\n interface: 'org.freedesktop.DBus',\n member: 'ReleaseName',\n signature: 's',\n body: [name]\n });\n this.call(msg)\n .then((reply) => {\n return resolve(reply.body[0]);\n })\n .catch((err) => {\n return reject(err);\n });\n });\n }\n\n /**\n * Disconnect this `MessageBus` from the bus.\n */\n disconnect () {\n this._connection.stream.end();\n this._signals.removeAllListeners();\n }\n\n /**\n * Get a new serial for this bus. These can be used to set the {@link\n * Message#serial} member to send the message on this bus.\n *\n * @returns {int} - A new serial for this bus.\n */\n newSerial () {\n return this._serial++;\n }\n\n /**\n * A function to call when a message of type {@link MessageType.METHOD_RETURN} is received. User handlers are run before\n * default handlers.\n *\n * @callback methodHandler\n * @param {Message} msg - The message to handle.\n * @returns {boolean} Return `true` if the message is handled and no further\n * handlers will run.\n */\n\n /**\n * Add a user method return handler. Remove the handler with {@link\n * MessageBus#removeMethodHandler}\n *\n * @param {methodHandler} - A function to handle a {@link Message} of type\n * {@link MessageType.METHOD_RETURN}. Takes the `Message` as the first\n * argument. Return `true` if the method is handled and no further handlers\n * will run.\n */\n addMethodHandler (fn) {\n this._methodHandlers.push(fn);\n }\n\n /**\n * Remove a user method return handler that was previously added with {@link\n * MessageBus#addMethodHandler}.\n *\n * @param {methodHandler} - A function that was previously added as a method handler.\n */\n removeMethodHandler (fn) {\n for (let i = 0; i < this._methodHandlers.length; ++i) {\n if (this._methodHandlers[i] === fn) {\n this._methodHandlers.splice(i, 1);\n }\n }\n }\n\n /**\n * Send a {@link Message} of type {@link MessageType.METHOD_CALL} to the bus\n * and wait for the reply.\n *\n * @example\n * let message = new Message({\n * destination: 'org.freedesktop.DBus',\n * path: '/org/freedesktop/DBus',\n * interface: 'org.freedesktop.DBus',\n * member: 'ListNames'\n * });\n * let reply = await bus.call(message);\n *\n * @param {Message} msg - The message to send.\n * @returns {Promise} reply - A `Promise` that resolves to the {@link\n * Message} which is a reply to the call.\n */\n call (msg) {\n return new Promise((resolve, reject) => {\n if (!(msg instanceof Message)) {\n throw new Error('The call() method takes a Message class as the first argument.');\n }\n if (msg.type !== METHOD_CALL) {\n throw new Error('Only messages of type METHOD_CALL can expect a call reply.');\n }\n if (msg.serial === null || msg._sent) {\n msg.serial = this.newSerial();\n }\n msg._sent = true;\n if (msg.flags & NO_REPLY_EXPECTED) {\n resolve(null);\n } else {\n this._methodReturnHandlers[msg.serial] = (reply) => {\n this._nameOwners[msg.destination] = reply.sender;\n if (reply.type === ERROR) {\n return reject(new DBusError(reply.errorName, reply.body[0], reply));\n } else {\n return resolve(reply);\n }\n };\n }\n this._connection.message(msg);\n });\n }\n\n /**\n * Send a {@link Message} on the bus that does not expect a reply.\n *\n * @example\n * let message = Message.newSignal('/org/test/path/,\n * 'org.test.interface',\n * 'SomeSignal');\n * bus.send(message);\n *\n * @param {Message} msg - The message to send.\n */\n send (msg) {\n if (!(msg instanceof Message)) {\n throw new Error('The send() method takes a Message class as the first argument.');\n }\n if (msg.serial === null || msg._sent) {\n msg.serial = this.newSerial();\n }\n this._connection.message(msg);\n }\n\n /**\n * Export an [`Interface`]{@link module:interface~Interface} on the bus. See\n * the documentation for that class for how to define service interfaces.\n *\n * @param path {string} - The object path to export this `Interface` on.\n * @param iface {module:interface~Interface} - The service interface to export.\n */\n export (path, iface) {\n const obj = this._getServiceObject(path);\n obj.addInterface(iface);\n }\n\n /**\n * Unexport an `Interface` on the bus. The interface will no longer be\n * advertised to clients.\n *\n * @param {string} path - The object path on which to unexport.\n * @param {module:interface~Interface} [iface] - The `Interface` to unexport.\n * If not given, this will remove all interfaces on the path.\n */\n unexport (path, iface) {\n iface = iface || null;\n if (iface === null) {\n this._removeServiceObject(path);\n } else {\n const obj = this._getServiceObject(path);\n obj.removeInterface(iface);\n if (!obj.interfaces.length) {\n this._removeServiceObject(path);\n }\n }\n }\n\n _introspect (path) {\n assertObjectPathValid(path);\n const xml = {\n node: {\n node: []\n }\n };\n\n if (this._serviceObjects[path]) {\n xml.node.interface = this._serviceObjects[path].introspect();\n }\n\n const pathSplit = path.split('/').filter(n => n);\n\n const children = new Set();\n\n for (const key of Object.keys(this._serviceObjects)) {\n const keySplit = key.split('/').filter(n => n);\n if (keySplit.length <= pathSplit.length) {\n continue;\n }\n if (pathSplit.every((v, i) => v === keySplit[i])) {\n children.add(keySplit[pathSplit.length]);\n }\n }\n\n for (const child of children) {\n xml.node.node.push({\n $: {\n name: child\n }\n });\n }\n\n return xmlHeader + this._builder.buildObject(xml);\n }\n\n _getServiceObject (path) {\n assertObjectPathValid(path);\n if (!this._serviceObjects[path]) {\n this._serviceObjects[path] = new ServiceObject(path, this);\n }\n return this._serviceObjects[path];\n }\n\n _removeServiceObject (path) {\n assertObjectPathValid(path);\n if (this._serviceObjects[path]) {\n const obj = this._serviceObjects[path];\n for (const i of Object.keys(obj.interfaces)) {\n obj.removeInterface(obj.interfaces[i]);\n }\n delete this._serviceObjects[path];\n }\n }\n\n _addMatch (match) {\n if (Object.prototype.hasOwnProperty.call(match, this._matchRules)) {\n this._matchRules[match] += 1;\n return Promise.resolve();\n }\n\n this._matchRules[match] = 1;\n\n // TODO catch error and update refcount\n const msg = new Message({\n path: '/org/freedesktop/DBus',\n destination: 'org.freedesktop.DBus',\n interface: 'org.freedesktop.DBus',\n member: 'AddMatch',\n signature: 's',\n body: [match]\n });\n return this.call(msg);\n }\n\n _removeMatch (match) {\n if (!this._connection.stream.writable) {\n return Promise.resolve();\n }\n\n if (Object.prototype.hasOwnProperty.call(match, this._matchRules)) {\n this._matchRules[match] -= 1;\n if (this._matchRules[match] > 0) {\n return Promise.resolve();\n }\n } else {\n return Promise.resolve();\n }\n\n delete this._matchRules[match];\n\n // TODO catch error and update refcount\n const msg = new Message({\n path: '/org/freedesktop/DBus',\n destination: 'org.freedesktop.DBus',\n interface: 'org.freedesktop.DBus',\n member: 'RemoveMatch',\n signature: 's',\n body: [match]\n });\n return this.call(msg);\n }\n}\n\nmodule.exports = MessageBus;\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","module.exports = Put;\nfunction Put () {\n if (!(this instanceof Put)) return new Put;\n \n var words = [];\n var len = 0;\n \n this.put = function (buf) {\n words.push({ buffer : buf });\n len += buf.length;\n return this;\n };\n \n this.word8 = function (x) {\n words.push({ bytes : 1, value : x });\n len += 1;\n return this;\n };\n \n this.floatle = function (x) {\n words.push({ bytes : 'float', endian : 'little', value : x });\n len += 4;\n return this;\n };\n \n [ 8, 16, 24, 32, 64 ].forEach((function (bits) {\n this['word' + bits + 'be'] = function (x) {\n words.push({ endian : 'big', bytes : bits / 8, value : x });\n len += bits / 8;\n return this;\n };\n \n this['word' + bits + 'le'] = function (x) {\n words.push({ endian : 'little', bytes : bits / 8, value : x });\n len += bits / 8;\n return this;\n };\n }).bind(this));\n \n this.pad = function (bytes) {\n words.push({ endian : 'big', bytes : bytes, value : 0 });\n len += bytes;\n return this;\n };\n \n this.length = function () {\n return len;\n };\n \n this.buffer = function () {\n var buf = Buffer.alloc(len);\n var offset = 0;\n words.forEach(function (word) {\n if (word.buffer) {\n word.buffer.copy(buf, offset, 0);\n offset += word.buffer.length;\n }\n else if (word.bytes == 'float') {\n // s * f * 2^e\n var v = Math.abs(word.value);\n var s = (word.value >= 0) * 1;\n var e = Math.ceil(Math.log(v) / Math.LN2);\n var f = v / (1 << e);\n console.dir([s,e,f]);\n \n console.log(word.value);\n \n // s:1, e:7, f:23\n // [seeeeeee][efffffff][ffffffff][ffffffff]\n buf[offset++] = (s << 7) & ~~(e / 2);\n buf[offset++] = ((e & 1) << 7) & ~~(f / (1 << 16));\n buf[offset++] = 0;\n buf[offset++] = 0;\n offset += 4;\n }\n else {\n var big = word.endian === 'big';\n var ix = big ? [ (word.bytes - 1) * 8, -8 ] : [ 0, 8 ];\n \n for (\n var i = ix[0];\n big ? i >= 0 : i < word.bytes * 8;\n i += ix[1]\n ) {\n if (i >= 32) {\n buf[offset++] = Math.floor(word.value / Math.pow(2, i)) & 0xff;\n }\n else {\n buf[offset++] = (word.value >> i) & 0xff;\n }\n }\n }\n });\n return buf;\n };\n \n this.write = function (stream) {\n stream.write(this.buffer());\n };\n}\n","const Buffer = require('safe-buffer').Buffer;\n\nfunction align (ps, n) {\n const pad = n - ps._offset % n;\n if (pad === 0 || pad === n) return;\n // TODO: write8(0) in a loop (3 to 7 times here) could be more efficient\n const padBuff = Buffer.alloc(pad);\n ps.put(Buffer.from(padBuff));\n ps._offset += pad;\n}\n\nexports.align = align;\n","module.exports = Long;\r\n\r\n/**\r\n * wasm optimizations, to do native i64 multiplication and divide\r\n */\r\nvar wasm = null;\r\n\r\ntry {\r\n wasm = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([\r\n 0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11\r\n ])), {}).exports;\r\n} catch (e) {\r\n // no wasm support :(\r\n}\r\n\r\n/**\r\n * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\r\n * See the from* functions below for more convenient ways of constructing Longs.\r\n * @exports Long\r\n * @class A Long class for representing a 64 bit two's-complement integer value.\r\n * @param {number} low The low (signed) 32 bits of the long\r\n * @param {number} high The high (signed) 32 bits of the long\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @constructor\r\n */\r\nfunction Long(low, high, unsigned) {\r\n\r\n /**\r\n * The low 32 bits as a signed value.\r\n * @type {number}\r\n */\r\n this.low = low | 0;\r\n\r\n /**\r\n * The high 32 bits as a signed value.\r\n * @type {number}\r\n */\r\n this.high = high | 0;\r\n\r\n /**\r\n * Whether unsigned or not.\r\n * @type {boolean}\r\n */\r\n this.unsigned = !!unsigned;\r\n}\r\n\r\n// The internal representation of a long is the two given signed, 32-bit values.\r\n// We use 32-bit pieces because these are the size of integers on which\r\n// Javascript performs bit-operations. For operations like addition and\r\n// multiplication, we split each number into 16 bit pieces, which can easily be\r\n// multiplied within Javascript's floating-point representation without overflow\r\n// or change in sign.\r\n//\r\n// In the algorithms below, we frequently reduce the negative case to the\r\n// positive case by negating the input(s) and then post-processing the result.\r\n// Note that we must ALWAYS check specially whether those values are MIN_VALUE\r\n// (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\r\n// a positive number, it overflows back into a negative). Not handling this\r\n// case would often result in infinite recursion.\r\n//\r\n// Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*\r\n// methods on which they depend.\r\n\r\n/**\r\n * An indicator used to reliably determine if an object is a Long or not.\r\n * @type {boolean}\r\n * @const\r\n * @private\r\n */\r\nLong.prototype.__isLong__;\r\n\r\nObject.defineProperty(Long.prototype, \"__isLong__\", { value: true });\r\n\r\n/**\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n * @inner\r\n */\r\nfunction isLong(obj) {\r\n return (obj && obj[\"__isLong__\"]) === true;\r\n}\r\n\r\n/**\r\n * Tests if the specified object is a Long.\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n */\r\nLong.isLong = isLong;\r\n\r\n/**\r\n * A cache of the Long representations of small integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\nvar INT_CACHE = {};\r\n\r\n/**\r\n * A cache of the Long representations of small unsigned integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\nvar UINT_CACHE = {};\r\n\r\n/**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromInt(value, unsigned) {\r\n var obj, cachedObj, cache;\r\n if (unsigned) {\r\n value >>>= 0;\r\n if (cache = (0 <= value && value < 256)) {\r\n cachedObj = UINT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true);\r\n if (cache)\r\n UINT_CACHE[value] = obj;\r\n return obj;\r\n } else {\r\n value |= 0;\r\n if (cache = (-128 <= value && value < 128)) {\r\n cachedObj = INT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, value < 0 ? -1 : 0, false);\r\n if (cache)\r\n INT_CACHE[value] = obj;\r\n return obj;\r\n }\r\n}\r\n\r\n/**\r\n * Returns a Long representing the given 32 bit integer value.\r\n * @function\r\n * @param {number} value The 32 bit integer in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromInt = fromInt;\r\n\r\n/**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromNumber(value, unsigned) {\r\n if (isNaN(value))\r\n return unsigned ? UZERO : ZERO;\r\n if (unsigned) {\r\n if (value < 0)\r\n return UZERO;\r\n if (value >= TWO_PWR_64_DBL)\r\n return MAX_UNSIGNED_VALUE;\r\n } else {\r\n if (value <= -TWO_PWR_63_DBL)\r\n return MIN_VALUE;\r\n if (value + 1 >= TWO_PWR_63_DBL)\r\n return MAX_VALUE;\r\n }\r\n if (value < 0)\r\n return fromNumber(-value, unsigned).neg();\r\n return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);\r\n}\r\n\r\n/**\r\n * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\r\n * @function\r\n * @param {number} value The number in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromNumber = fromNumber;\r\n\r\n/**\r\n * @param {number} lowBits\r\n * @param {number} highBits\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromBits(lowBits, highBits, unsigned) {\r\n return new Long(lowBits, highBits, unsigned);\r\n}\r\n\r\n/**\r\n * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is\r\n * assumed to use 32 bits.\r\n * @function\r\n * @param {number} lowBits The low 32 bits\r\n * @param {number} highBits The high 32 bits\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromBits = fromBits;\r\n\r\n/**\r\n * @function\r\n * @param {number} base\r\n * @param {number} exponent\r\n * @returns {number}\r\n * @inner\r\n */\r\nvar pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4)\r\n\r\n/**\r\n * @param {string} str\r\n * @param {(boolean|number)=} unsigned\r\n * @param {number=} radix\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromString(str, unsigned, radix) {\r\n if (str.length === 0)\r\n throw Error('empty string');\r\n if (str === \"NaN\" || str === \"Infinity\" || str === \"+Infinity\" || str === \"-Infinity\")\r\n return ZERO;\r\n if (typeof unsigned === 'number') {\r\n // For goog.math.long compatibility\r\n radix = unsigned,\r\n unsigned = false;\r\n } else {\r\n unsigned = !! unsigned;\r\n }\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n\r\n var p;\r\n if ((p = str.indexOf('-')) > 0)\r\n throw Error('interior hyphen');\r\n else if (p === 0) {\r\n return fromString(str.substring(1), unsigned, radix).neg();\r\n }\r\n\r\n // Do several (8) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 8));\r\n\r\n var result = ZERO;\r\n for (var i = 0; i < str.length; i += 8) {\r\n var size = Math.min(8, str.length - i),\r\n value = parseInt(str.substring(i, i + size), radix);\r\n if (size < 8) {\r\n var power = fromNumber(pow_dbl(radix, size));\r\n result = result.mul(power).add(fromNumber(value));\r\n } else {\r\n result = result.mul(radixToPower);\r\n result = result.add(fromNumber(value));\r\n }\r\n }\r\n result.unsigned = unsigned;\r\n return result;\r\n}\r\n\r\n/**\r\n * Returns a Long representation of the given string, written using the specified radix.\r\n * @function\r\n * @param {string} str The textual representation of the Long\r\n * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to signed\r\n * @param {number=} radix The radix in which the text is written (2-36), defaults to 10\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromString = fromString;\r\n\r\n/**\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromValue(val, unsigned) {\r\n if (typeof val === 'number')\r\n return fromNumber(val, unsigned);\r\n if (typeof val === 'string')\r\n return fromString(val, unsigned);\r\n // Throws for non-objects, converts non-instanceof Long:\r\n return fromBits(val.low, val.high, typeof unsigned === 'boolean' ? unsigned : val.unsigned);\r\n}\r\n\r\n/**\r\n * Converts the specified value to a Long using the appropriate from* function for its type.\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long}\r\n */\r\nLong.fromValue = fromValue;\r\n\r\n// NOTE: the compiler should inline these constant values below and then remove these variables, so there should be\r\n// no runtime penalty for these.\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_16_DBL = 1 << 16;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_24_DBL = 1 << 24;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\r\n\r\n/**\r\n * @type {!Long}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar ZERO = fromInt(0);\r\n\r\n/**\r\n * Signed zero.\r\n * @type {!Long}\r\n */\r\nLong.ZERO = ZERO;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar UZERO = fromInt(0, true);\r\n\r\n/**\r\n * Unsigned zero.\r\n * @type {!Long}\r\n */\r\nLong.UZERO = UZERO;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar ONE = fromInt(1);\r\n\r\n/**\r\n * Signed one.\r\n * @type {!Long}\r\n */\r\nLong.ONE = ONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar UONE = fromInt(1, true);\r\n\r\n/**\r\n * Unsigned one.\r\n * @type {!Long}\r\n */\r\nLong.UONE = UONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar NEG_ONE = fromInt(-1);\r\n\r\n/**\r\n * Signed negative one.\r\n * @type {!Long}\r\n */\r\nLong.NEG_ONE = NEG_ONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MAX_VALUE = fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false);\r\n\r\n/**\r\n * Maximum signed value.\r\n * @type {!Long}\r\n */\r\nLong.MAX_VALUE = MAX_VALUE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF|0, 0xFFFFFFFF|0, true);\r\n\r\n/**\r\n * Maximum unsigned value.\r\n * @type {!Long}\r\n */\r\nLong.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MIN_VALUE = fromBits(0, 0x80000000|0, false);\r\n\r\n/**\r\n * Minimum signed value.\r\n * @type {!Long}\r\n */\r\nLong.MIN_VALUE = MIN_VALUE;\r\n\r\n/**\r\n * @alias Long.prototype\r\n * @inner\r\n */\r\nvar LongPrototype = Long.prototype;\r\n\r\n/**\r\n * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.\r\n * @returns {number}\r\n */\r\nLongPrototype.toInt = function toInt() {\r\n return this.unsigned ? this.low >>> 0 : this.low;\r\n};\r\n\r\n/**\r\n * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).\r\n * @returns {number}\r\n */\r\nLongPrototype.toNumber = function toNumber() {\r\n if (this.unsigned)\r\n return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0);\r\n return this.high * TWO_PWR_32_DBL + (this.low >>> 0);\r\n};\r\n\r\n/**\r\n * Converts the Long to a string written in the specified radix.\r\n * @param {number=} radix Radix (2-36), defaults to 10\r\n * @returns {string}\r\n * @override\r\n * @throws {RangeError} If `radix` is out of range\r\n */\r\nLongPrototype.toString = function toString(radix) {\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n if (this.isZero())\r\n return '0';\r\n if (this.isNegative()) { // Unsigned Longs are never negative\r\n if (this.eq(MIN_VALUE)) {\r\n // We need to change the Long value before it can be negated, so we remove\r\n // the bottom-most digit in this base and then recurse to do the rest.\r\n var radixLong = fromNumber(radix),\r\n div = this.div(radixLong),\r\n rem1 = div.mul(radixLong).sub(this);\r\n return div.toString(radix) + rem1.toInt().toString(radix);\r\n } else\r\n return '-' + this.neg().toString(radix);\r\n }\r\n\r\n // Do several (6) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned),\r\n rem = this;\r\n var result = '';\r\n while (true) {\r\n var remDiv = rem.div(radixToPower),\r\n intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0,\r\n digits = intval.toString(radix);\r\n rem = remDiv;\r\n if (rem.isZero())\r\n return digits + result;\r\n else {\r\n while (digits.length < 6)\r\n digits = '0' + digits;\r\n result = '' + digits + result;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Gets the high 32 bits as a signed integer.\r\n * @returns {number} Signed high bits\r\n */\r\nLongPrototype.getHighBits = function getHighBits() {\r\n return this.high;\r\n};\r\n\r\n/**\r\n * Gets the high 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned high bits\r\n */\r\nLongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() {\r\n return this.high >>> 0;\r\n};\r\n\r\n/**\r\n * Gets the low 32 bits as a signed integer.\r\n * @returns {number} Signed low bits\r\n */\r\nLongPrototype.getLowBits = function getLowBits() {\r\n return this.low;\r\n};\r\n\r\n/**\r\n * Gets the low 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned low bits\r\n */\r\nLongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() {\r\n return this.low >>> 0;\r\n};\r\n\r\n/**\r\n * Gets the number of bits needed to represent the absolute value of this Long.\r\n * @returns {number}\r\n */\r\nLongPrototype.getNumBitsAbs = function getNumBitsAbs() {\r\n if (this.isNegative()) // Unsigned Longs are never negative\r\n return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();\r\n var val = this.high != 0 ? this.high : this.low;\r\n for (var bit = 31; bit > 0; bit--)\r\n if ((val & (1 << bit)) != 0)\r\n break;\r\n return this.high != 0 ? bit + 33 : bit + 1;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals zero.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isZero = function isZero() {\r\n return this.high === 0 && this.low === 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals zero. This is an alias of {@link Long#isZero}.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.eqz = LongPrototype.isZero;\r\n\r\n/**\r\n * Tests if this Long's value is negative.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isNegative = function isNegative() {\r\n return !this.unsigned && this.high < 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is positive.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isPositive = function isPositive() {\r\n return this.unsigned || this.high >= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is odd.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isOdd = function isOdd() {\r\n return (this.low & 1) === 1;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is even.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isEven = function isEven() {\r\n return (this.low & 1) === 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.equals = function equals(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1)\r\n return false;\r\n return this.high === other.high && this.low === other.low;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.eq = LongPrototype.equals;\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.notEquals = function notEquals(other) {\r\n return !this.eq(/* validates */ other);\r\n};\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.neq = LongPrototype.notEquals;\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.ne = LongPrototype.notEquals;\r\n\r\n/**\r\n * Tests if this Long's value is less than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lessThan = function lessThan(other) {\r\n return this.comp(/* validates */ other) < 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lt = LongPrototype.lessThan;\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lessThanOrEqual = function lessThanOrEqual(other) {\r\n return this.comp(/* validates */ other) <= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lte = LongPrototype.lessThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.le = LongPrototype.lessThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is greater than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.greaterThan = function greaterThan(other) {\r\n return this.comp(/* validates */ other) > 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.gt = LongPrototype.greaterThan;\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) {\r\n return this.comp(/* validates */ other) >= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.gte = LongPrototype.greaterThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.ge = LongPrototype.greaterThanOrEqual;\r\n\r\n/**\r\n * Compares this Long's value with the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n */\r\nLongPrototype.compare = function compare(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.eq(other))\r\n return 0;\r\n var thisNeg = this.isNegative(),\r\n otherNeg = other.isNegative();\r\n if (thisNeg && !otherNeg)\r\n return -1;\r\n if (!thisNeg && otherNeg)\r\n return 1;\r\n // At this point the sign bits are the same\r\n if (!this.unsigned)\r\n return this.sub(other).isNegative() ? -1 : 1;\r\n // Both are positive if at least one is unsigned\r\n return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1;\r\n};\r\n\r\n/**\r\n * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n */\r\nLongPrototype.comp = LongPrototype.compare;\r\n\r\n/**\r\n * Negates this Long's value.\r\n * @returns {!Long} Negated Long\r\n */\r\nLongPrototype.negate = function negate() {\r\n if (!this.unsigned && this.eq(MIN_VALUE))\r\n return MIN_VALUE;\r\n return this.not().add(ONE);\r\n};\r\n\r\n/**\r\n * Negates this Long's value. This is an alias of {@link Long#negate}.\r\n * @function\r\n * @returns {!Long} Negated Long\r\n */\r\nLongPrototype.neg = LongPrototype.negate;\r\n\r\n/**\r\n * Returns the sum of this and the specified Long.\r\n * @param {!Long|number|string} addend Addend\r\n * @returns {!Long} Sum\r\n */\r\nLongPrototype.add = function add(addend) {\r\n if (!isLong(addend))\r\n addend = fromValue(addend);\r\n\r\n // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = addend.high >>> 16;\r\n var b32 = addend.high & 0xFFFF;\r\n var b16 = addend.low >>> 16;\r\n var b00 = addend.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 + b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 + b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 + b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 + b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the difference of this and the specified Long.\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\nLongPrototype.subtract = function subtract(subtrahend) {\r\n if (!isLong(subtrahend))\r\n subtrahend = fromValue(subtrahend);\r\n return this.add(subtrahend.neg());\r\n};\r\n\r\n/**\r\n * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}.\r\n * @function\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\nLongPrototype.sub = LongPrototype.subtract;\r\n\r\n/**\r\n * Returns the product of this and the specified Long.\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\nLongPrototype.multiply = function multiply(multiplier) {\r\n if (this.isZero())\r\n return ZERO;\r\n if (!isLong(multiplier))\r\n multiplier = fromValue(multiplier);\r\n\r\n // use wasm support if present\r\n if (wasm) {\r\n var low = wasm.mul(this.low,\r\n this.high,\r\n multiplier.low,\r\n multiplier.high);\r\n return fromBits(low, wasm.get_high(), this.unsigned);\r\n }\r\n\r\n if (multiplier.isZero())\r\n return ZERO;\r\n if (this.eq(MIN_VALUE))\r\n return multiplier.isOdd() ? MIN_VALUE : ZERO;\r\n if (multiplier.eq(MIN_VALUE))\r\n return this.isOdd() ? MIN_VALUE : ZERO;\r\n\r\n if (this.isNegative()) {\r\n if (multiplier.isNegative())\r\n return this.neg().mul(multiplier.neg());\r\n else\r\n return this.neg().mul(multiplier).neg();\r\n } else if (multiplier.isNegative())\r\n return this.mul(multiplier.neg()).neg();\r\n\r\n // If both longs are small, use float multiplication\r\n if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24))\r\n return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);\r\n\r\n // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\r\n // We can skip products that would overflow.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = multiplier.high >>> 16;\r\n var b32 = multiplier.high & 0xFFFF;\r\n var b16 = multiplier.low >>> 16;\r\n var b00 = multiplier.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 * b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 * b00;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c16 += a00 * b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 * b00;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a16 * b16;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a00 * b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}.\r\n * @function\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\nLongPrototype.mul = LongPrototype.multiply;\r\n\r\n/**\r\n * Returns this Long divided by the specified. The result is signed if this Long is signed or\r\n * unsigned if this Long is unsigned.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\nLongPrototype.divide = function divide(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n if (divisor.isZero())\r\n throw Error('division by zero');\r\n\r\n // use wasm support if present\r\n if (wasm) {\r\n // guard against signed division overflow: the largest\r\n // negative number / -1 would be 1 larger than the largest\r\n // positive number, due to two's complement.\r\n if (!this.unsigned &&\r\n this.high === -0x80000000 &&\r\n divisor.low === -1 && divisor.high === -1) {\r\n // be consistent with non-wasm code path\r\n return this;\r\n }\r\n var low = (this.unsigned ? wasm.div_u : wasm.div_s)(\r\n this.low,\r\n this.high,\r\n divisor.low,\r\n divisor.high\r\n );\r\n return fromBits(low, wasm.get_high(), this.unsigned);\r\n }\r\n\r\n if (this.isZero())\r\n return this.unsigned ? UZERO : ZERO;\r\n var approx, rem, res;\r\n if (!this.unsigned) {\r\n // This section is only relevant for signed longs and is derived from the\r\n // closure library as a whole.\r\n if (this.eq(MIN_VALUE)) {\r\n if (divisor.eq(ONE) || divisor.eq(NEG_ONE))\r\n return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE\r\n else if (divisor.eq(MIN_VALUE))\r\n return ONE;\r\n else {\r\n // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\r\n var halfThis = this.shr(1);\r\n approx = halfThis.div(divisor).shl(1);\r\n if (approx.eq(ZERO)) {\r\n return divisor.isNegative() ? ONE : NEG_ONE;\r\n } else {\r\n rem = this.sub(divisor.mul(approx));\r\n res = approx.add(rem.div(divisor));\r\n return res;\r\n }\r\n }\r\n } else if (divisor.eq(MIN_VALUE))\r\n return this.unsigned ? UZERO : ZERO;\r\n if (this.isNegative()) {\r\n if (divisor.isNegative())\r\n return this.neg().div(divisor.neg());\r\n return this.neg().div(divisor).neg();\r\n } else if (divisor.isNegative())\r\n return this.div(divisor.neg()).neg();\r\n res = ZERO;\r\n } else {\r\n // The algorithm below has not been made for unsigned longs. It's therefore\r\n // required to take special care of the MSB prior to running it.\r\n if (!divisor.unsigned)\r\n divisor = divisor.toUnsigned();\r\n if (divisor.gt(this))\r\n return UZERO;\r\n if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true\r\n return UONE;\r\n res = UZERO;\r\n }\r\n\r\n // Repeat the following until the remainder is less than other: find a\r\n // floating-point that approximates remainder / other *from below*, add this\r\n // into the result, and subtract it from the remainder. It is critical that\r\n // the approximate value is less than or equal to the real value so that the\r\n // remainder never becomes negative.\r\n rem = this;\r\n while (rem.gte(divisor)) {\r\n // Approximate the result of division. This may be a little greater or\r\n // smaller than the actual value.\r\n approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));\r\n\r\n // We will tweak the approximate result by changing it in the 48-th digit or\r\n // the smallest non-fractional digit, whichever is larger.\r\n var log2 = Math.ceil(Math.log(approx) / Math.LN2),\r\n delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48),\r\n\r\n // Decrease the approximation until it is smaller than the remainder. Note\r\n // that if it is too large, the product overflows and is negative.\r\n approxRes = fromNumber(approx),\r\n approxRem = approxRes.mul(divisor);\r\n while (approxRem.isNegative() || approxRem.gt(rem)) {\r\n approx -= delta;\r\n approxRes = fromNumber(approx, this.unsigned);\r\n approxRem = approxRes.mul(divisor);\r\n }\r\n\r\n // We know the answer can't be zero... and actually, zero would cause\r\n // infinite recursion since we would make no progress.\r\n if (approxRes.isZero())\r\n approxRes = ONE;\r\n\r\n res = res.add(approxRes);\r\n rem = rem.sub(approxRem);\r\n }\r\n return res;\r\n};\r\n\r\n/**\r\n * Returns this Long divided by the specified. This is an alias of {@link Long#divide}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\nLongPrototype.div = LongPrototype.divide;\r\n\r\n/**\r\n * Returns this Long modulo the specified.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.modulo = function modulo(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n\r\n // use wasm support if present\r\n if (wasm) {\r\n var low = (this.unsigned ? wasm.rem_u : wasm.rem_s)(\r\n this.low,\r\n this.high,\r\n divisor.low,\r\n divisor.high\r\n );\r\n return fromBits(low, wasm.get_high(), this.unsigned);\r\n }\r\n\r\n return this.sub(this.div(divisor).mul(divisor));\r\n};\r\n\r\n/**\r\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.mod = LongPrototype.modulo;\r\n\r\n/**\r\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.rem = LongPrototype.modulo;\r\n\r\n/**\r\n * Returns the bitwise NOT of this Long.\r\n * @returns {!Long}\r\n */\r\nLongPrototype.not = function not() {\r\n return fromBits(~this.low, ~this.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise AND of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.and = function and(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low & other.low, this.high & other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise OR of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.or = function or(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low | other.low, this.high | other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise XOR of this Long and the given one.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.xor = function xor(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits shifted to the left by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftLeft = function shiftLeft(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned);\r\n else\r\n return fromBits(0, this.low << (numBits - 32), this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shl = LongPrototype.shiftLeft;\r\n\r\n/**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftRight = function shiftRight(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned);\r\n else\r\n return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shr = LongPrototype.shiftRight;\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n numBits &= 63;\r\n if (numBits === 0)\r\n return this;\r\n else {\r\n var high = this.high;\r\n if (numBits < 32) {\r\n var low = this.low;\r\n return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned);\r\n } else if (numBits === 32)\r\n return fromBits(high, 0, this.unsigned);\r\n else\r\n return fromBits(high >>> (numBits - 32), 0, this.unsigned);\r\n }\r\n};\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shru = LongPrototype.shiftRightUnsigned;\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shr_u = LongPrototype.shiftRightUnsigned;\r\n\r\n/**\r\n * Converts this Long to signed.\r\n * @returns {!Long} Signed long\r\n */\r\nLongPrototype.toSigned = function toSigned() {\r\n if (!this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, false);\r\n};\r\n\r\n/**\r\n * Converts this Long to unsigned.\r\n * @returns {!Long} Unsigned long\r\n */\r\nLongPrototype.toUnsigned = function toUnsigned() {\r\n if (this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, true);\r\n};\r\n\r\n/**\r\n * Converts this Long to its byte representation.\r\n * @param {boolean=} le Whether little or big endian, defaults to big endian\r\n * @returns {!Array.<number>} Byte representation\r\n */\r\nLongPrototype.toBytes = function toBytes(le) {\r\n return le ? this.toBytesLE() : this.toBytesBE();\r\n};\r\n\r\n/**\r\n * Converts this Long to its little endian byte representation.\r\n * @returns {!Array.<number>} Little endian byte representation\r\n */\r\nLongPrototype.toBytesLE = function toBytesLE() {\r\n var hi = this.high,\r\n lo = this.low;\r\n return [\r\n lo & 0xff,\r\n lo >>> 8 & 0xff,\r\n lo >>> 16 & 0xff,\r\n lo >>> 24 ,\r\n hi & 0xff,\r\n hi >>> 8 & 0xff,\r\n hi >>> 16 & 0xff,\r\n hi >>> 24\r\n ];\r\n};\r\n\r\n/**\r\n * Converts this Long to its big endian byte representation.\r\n * @returns {!Array.<number>} Big endian byte representation\r\n */\r\nLongPrototype.toBytesBE = function toBytesBE() {\r\n var hi = this.high,\r\n lo = this.low;\r\n return [\r\n hi >>> 24 ,\r\n hi >>> 16 & 0xff,\r\n hi >>> 8 & 0xff,\r\n hi & 0xff,\r\n lo >>> 24 ,\r\n lo >>> 16 & 0xff,\r\n lo >>> 8 & 0xff,\r\n lo & 0xff\r\n ];\r\n};\r\n\r\n/**\r\n * Creates a Long from its byte representation.\r\n * @param {!Array.<number>} bytes Byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @param {boolean=} le Whether little or big endian, defaults to big endian\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytes = function fromBytes(bytes, unsigned, le) {\r\n return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned);\r\n};\r\n\r\n/**\r\n * Creates a Long from its little endian byte representation.\r\n * @param {!Array.<number>} bytes Little endian byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytesLE = function fromBytesLE(bytes, unsigned) {\r\n return new Long(\r\n bytes[0] |\r\n bytes[1] << 8 |\r\n bytes[2] << 16 |\r\n bytes[3] << 24,\r\n bytes[4] |\r\n bytes[5] << 8 |\r\n bytes[6] << 16 |\r\n bytes[7] << 24,\r\n unsigned\r\n );\r\n};\r\n\r\n/**\r\n * Creates a Long from its big endian byte representation.\r\n * @param {!Array.<number>} bytes Big endian byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytesBE = function fromBytesBE(bytes, unsigned) {\r\n return new Long(\r\n bytes[4] << 24 |\r\n bytes[5] << 16 |\r\n bytes[6] << 8 |\r\n bytes[7],\r\n bytes[0] << 24 |\r\n bytes[1] << 16 |\r\n bytes[2] << 8 |\r\n bytes[3],\r\n unsigned\r\n );\r\n};\r\n","const libraryOptions = {\n bigIntCompat: false\n};\n\nmodule.exports.getBigIntCompat = function () {\n return libraryOptions.bigIntCompat;\n};\n\nmodule.exports.setBigIntCompat = function (val) {\n if (typeof val !== 'boolean') {\n throw new Error('dbus.setBigIntCompat() must be called with a boolean parameter');\n }\n libraryOptions.bigIntCompat = val;\n};\n","const Buffer = require('safe-buffer').Buffer;\nconst align = require('./align').align;\nconst { parseSignature } = require('../lib/signature');\nconst Long = require('long');\nconst { getBigIntCompat } = require('./library-options');\nconst JSBI = require('jsbi');\n\nconst {\n _getJSBIConstants, _getBigIntConstants\n} = require('./constants');\n\n/*\n * MakeSimpleMarshaller\n * @param signature - the signature of the data you want to check\n * @returns a simple marshaller with the \"check\" method\n *\n * check returns nothing - it only raises errors if the data is\n * invalid for the signature\n */\nconst MakeSimpleMarshaller = function (signature) {\n const marshaller = {};\n function checkValidString (data) {\n if (typeof data !== 'string') {\n throw new Error(`Data: ${data} was not of type string`);\n } else if (data.indexOf('\\0') !== -1) {\n throw new Error('String contains null byte');\n }\n }\n\n function checkValidSignature (data) {\n if (data.length > 0xff) {\n throw new Error(\n `Data: ${data} is too long for signature type (${data.length} > 255)`\n );\n }\n\n let parenCount = 0;\n for (let ii = 0; ii < data.length; ++ii) {\n if (parenCount > 32) {\n throw new Error(\n `Maximum container type nesting exceeded in signature type:${data}`\n );\n }\n switch (data[ii]) {\n case '(':\n ++parenCount;\n break;\n case ')':\n --parenCount;\n break;\n default:\n /* no-op */\n break;\n }\n }\n parseSignature(data);\n }\n\n switch (signature) {\n case 'o':\n // object path\n // TODO: verify object path here?\n case 's': // eslint-disable-line no-fallthrough\n // STRING\n marshaller.check = function (data) {\n checkValidString(data);\n };\n marshaller.marshall = function (ps, data) {\n this.check(data);\n // utf8 string\n align(ps, 4);\n const buff = Buffer.from(data, 'utf8');\n ps\n .word32le(buff.length)\n .put(buff)\n .word8(0);\n ps._offset += 5 + buff.length;\n };\n break;\n case 'g':\n // SIGNATURE\n marshaller.check = function (data) {\n checkValidString(data);\n checkValidSignature(data);\n };\n marshaller.marshall = function (ps, data) {\n this.check(data);\n // signature\n const buff = Buffer.from(data, 'ascii');\n ps\n .word8(data.length)\n .put(buff)\n .word8(0);\n ps._offset += 2 + buff.length;\n };\n break;\n case 'y':\n // BYTE\n marshaller.check = function (data) {\n checkInteger(data);\n checkRange(0x00, 0xff, data);\n };\n marshaller.marshall = function (ps, data) {\n this.check(data);\n ps.word8(data);\n ps._offset++;\n };\n break;\n case 'b':\n // BOOLEAN\n marshaller.check = function (data) {\n checkBoolean(data);\n };\n marshaller.marshall = function (ps, data) {\n this.check(data);\n // booleans serialised as 0/1 unsigned 32 bit int\n data = data ? 1 : 0;\n align(ps, 4);\n ps.word32le(data);\n ps._offset += 4;\n };\n break;\n case 'n':\n // INT16\n marshaller.check = function (data) {\n checkInteger(data);\n checkRange(-0x7fff - 1, 0x7fff, data);\n };\n marshaller.marshall = function (ps, data) {\n this.check(data);\n align(ps, 2);\n const buff = Buffer.alloc(2);\n buff.writeInt16LE(parseInt(data), 0);\n ps.put(buff);\n ps._offset += 2;\n };\n break;\n case 'q':\n // UINT16\n marshaller.check = function (data) {\n checkInteger(data);\n checkRange(0, 0xffff, data);\n };\n marshaller.marshall = function (ps, data) {\n this.check(data);\n align(ps, 2);\n ps.word16le(data);\n ps._offset += 2;\n };\n break;\n case 'h':\n case 'i':\n // INT32\n marshaller.check = function (data) {\n checkInteger(data);\n checkRange(-0x7fffffff - 1, 0x7fffffff, data);\n };\n marshaller.marshall = function (ps, data) {\n this.check(data);\n align(ps, 4);\n const buff = Buffer.alloc(4);\n buff.writeInt32LE(parseInt(data), 0);\n ps.put(buff);\n ps._offset += 4;\n };\n break;\n case 'u':\n // UINT32\n marshaller.check = function (data) {\n checkInteger(data);\n checkRange(0, 0xffffffff, data);\n };\n marshaller.marshall = function (ps, data) {\n this.check(data);\n // 32 t unsigned int\n align(ps, 4);\n ps.word32le(data);\n ps._offset += 4;\n };\n break;\n case 't':\n // UINT64\n marshaller.check = function (data) {\n return checkLong(data, false);\n };\n marshaller.marshall = function (ps, data) {\n data = this.check(data);\n align(ps, 8);\n ps.word32le(data.low);\n ps.word32le(data.high);\n ps._offset += 8;\n };\n break;\n case 'x':\n // INT64\n marshaller.check = function (data) {\n return checkLong(data, true);\n };\n marshaller.marshall = function (ps, data) {\n data = this.check(data);\n align(ps, 8);\n ps.word32le(data.low);\n ps.word32le(data.high);\n ps._offset += 8;\n };\n break;\n case 'd':\n // DOUBLE\n marshaller.check = function (data) {\n if (typeof data !== 'number') {\n throw new Error(`Data: ${data} was not of type number`);\n } else if (Number.isNaN(data)) {\n throw new Error(`Data: ${data} was not a number`);\n } else if (!Number.isFinite(data)) {\n throw new Error('Number outside range');\n }\n };\n marshaller.marshall = function (ps, data) {\n this.check(data);\n align(ps, 8);\n const buff = Buffer.alloc(8);\n buff.writeDoubleLE(parseFloat(data), 0);\n ps.put(buff);\n ps._offset += 8;\n };\n break;\n default:\n throw new Error(`Unknown data type format: ${signature}`);\n }\n return marshaller;\n};\nexports.MakeSimpleMarshaller = MakeSimpleMarshaller;\n\nconst checkRange = function (minValue, maxValue, data) {\n if (data > maxValue || data < minValue) {\n throw new Error('Number outside range');\n }\n};\n\nconst checkInteger = function (data) {\n if (typeof data !== 'number') {\n throw new Error(`Data: ${data} was not of type number`);\n }\n if (Math.floor(data) !== data) {\n throw new Error(`Data: ${data} was not an integer`);\n }\n};\n\nconst checkBoolean = function (data) {\n if (!(typeof data === 'boolean' || data === 0 || data === 1)) { throw new Error(`Data: ${data} was not of type boolean`); }\n};\n\nconst checkJSBILong = function (data, signed) {\n const { MAX_INT64, MIN_INT64, MAX_UINT64, MIN_UINT64 } = _getJSBIConstants();\n\n data = JSBI.BigInt(data.toString());\n\n if (signed) {\n if (JSBI.greaterThan(data, MAX_INT64)) {\n throw new Error('data was out of range (greater than max int64)');\n } else if (JSBI.lessThan(data, MIN_INT64)) {\n throw new Error('data was out of range (less than min int64)');\n }\n } else {\n if (JSBI.greaterThan(data, MAX_UINT64)) {\n throw new Error('data was out of range (greater than max uint64)');\n } else if (JSBI.lessThan(data, MIN_UINT64)) {\n throw new Error('data was out of range (less than min uint64)');\n }\n }\n\n return Long.fromString(data.toString(), true);\n};\n\nconst checkBigIntLong = function (data, signed) {\n const { MAX_INT64, MIN_INT64, MAX_UINT64, MIN_UINT64 } = _getBigIntConstants();\n\n if (typeof data !== 'bigint') {\n data = BigInt(data.toString());\n }\n\n if (signed) {\n if (data > MAX_INT64) {\n throw new Error('data was out of range (greater than max int64)');\n } else if (data < MIN_INT64) {\n throw new Error('data was out of range (less than min int64)');\n }\n } else {\n if (data > MAX_UINT64) {\n throw new Error('data was out of range (greater than max uint64)');\n } else if (data < MIN_UINT64) {\n throw new Error('data was out of range (less than min uint64)');\n }\n }\n\n return Long.fromString(data.toString(), true);\n};\n\nconst checkLong = function (data, signed) {\n const compat = getBigIntCompat();\n\n if (compat) {\n return checkJSBILong(data, signed);\n } else {\n return checkBigIntLong(data, signed);\n }\n};\n","const assert = require('assert');\n\nconst { parseSignature } = require('./signature');\nconst put = require('@nornagon/put');\nconst Marshallers = require('./marshallers');\nconst align = require('./align').align;\n\nmodule.exports = function marshall (signature, data, offset, fds) {\n if (typeof offset === 'undefined') offset = 0;\n const tree = parseSignature(signature);\n if (!Array.isArray(data) || data.length !== tree.length) {\n throw new Error(\n `message body does not match message signature. Body:${JSON.stringify(\n data\n )}, signature:${signature}`\n );\n }\n const putstream = put();\n putstream._offset = offset;\n const buf = writeStruct(putstream, tree, data, fds).buffer();\n return buf;\n};\n\n// TODO: serialise JS objects as a{sv}\n// function writeHash(ps, treeKey, treeVal, data) {\n//\n// }\n\nfunction writeStruct (ps, tree, data, fds) {\n if (tree.length !== data.length) {\n throw new Error('Invalid struct data');\n }\n for (let i = 0; i < tree.length; ++i) {\n write(ps, tree[i], data[i], fds);\n }\n return ps;\n}\n\nfunction write (ps, ele, data, fds) {\n switch (ele.type) {\n case '(':\n case '{':\n align(ps, 8);\n writeStruct(ps, ele.child, data, fds);\n break;\n case 'a': {\n // array serialisation:\n // length of array body aligned at 4 byte boundary\n // (optional 4 bytes to align first body element on 8-byte boundary if element\n // body\n const arrPut = put();\n arrPut._offset = ps._offset;\n const _offset = arrPut._offset;\n writeSimple(arrPut, 'u', 0); // array length placeholder\n const lengthOffset = arrPut._offset - 4 - _offset;\n // we need to align here because alignment is not included in array length\n if (['x', 't', 'd', '{', '('].indexOf(ele.child[0].type) !== -1) { align(arrPut, 8); }\n const startOffset = arrPut._offset;\n for (let i = 0; i < data.length; ++i) { write(arrPut, ele.child[0], data[i], fds); }\n const arrBuff = arrPut.buffer();\n const length = arrPut._offset - startOffset;\n // lengthOffset in the range 0 to 3 depending on number of align bytes padded _before_ arrayLength\n arrBuff.writeUInt32LE(length, lengthOffset);\n ps.put(arrBuff);\n ps._offset += arrBuff.length;\n break;\n } case 'v': {\n // TODO: allow serialisation of simple types as variants, e. g 123 -> ['u', 123], true -> ['b', 1], 'abc' -> ['s', 'abc']\n assert.strictEqual(data.length, 2, 'variant data should be [signature, data]');\n const signatureEle = {\n type: 'g',\n child: []\n };\n write(ps, signatureEle, data[0], fds);\n const tree = parseSignature(data[0]);\n assert(tree.length === 1);\n write(ps, tree[0], data[1], fds);\n break;\n } case 'h': {\n if (fds) {\n const idx = fds.push(data);\n return writeSimple(ps, ele.type, idx - 1);\n }\n }\n default:\n return writeSimple(ps, ele.type, data);\n }\n}\n\nconst stringTypes = ['g', 'o', 's'];\n\nfunction writeSimple (ps, type, data) {\n if (typeof data === 'undefined') {\n throw new Error(\n \"Serialisation of JS 'undefined' type is not supported by d-bus\"\n );\n }\n if (data === null) { throw new Error('Serialisation of null value is not supported by d-bus'); }\n\n if (Buffer.isBuffer(data)) data = data.toString(); // encoding?\n if (stringTypes.indexOf(type) !== -1 && typeof data !== 'string') {\n throw new Error(\n `Expected string or buffer argument, got ${JSON.stringify(\n data\n )} of type '${type}'`\n );\n }\n\n const simpleMarshaller = Marshallers.MakeSimpleMarshaller(type);\n simpleMarshaller.marshall(ps, data);\n return ps;\n}\n","/* global BigInt */\n\nconst { parseSignature } = require('./signature');\nconst { getBigIntCompat } = require('./library-options');\nconst JSBI = require('jsbi');\nconst Long = require('long');\nconst LE = require('./constants').endianness.le;\n\n// Buffer + position + global start position ( used in alignment )\nfunction DBusBuffer (buffer, startPos, endian, fds, options) {\n if (typeof options !== 'object') {\n options = { ayBuffer: true };\n } else if (options.ayBuffer === undefined) {\n // default settings object\n options.ayBuffer = true; // enforce truthy default props\n }\n this.options = options;\n this.buffer = buffer;\n this.endian = endian;\n this.fds = fds;\n this.startPos = startPos || 0;\n this.pos = 0;\n}\n\nDBusBuffer.prototype.align = function (power) {\n const allbits = (1 << power) - 1;\n const paddedOffset = ((this.pos + this.startPos + allbits) >> power) << power;\n this.pos = paddedOffset - this.startPos;\n};\n\nDBusBuffer.prototype.readInt8 = function () {\n this.pos++;\n return this.buffer[this.pos - 1];\n};\n\nDBusBuffer.prototype.readSInt16 = function () {\n this.align(1);\n\n const res = (this.endian === LE\n ? this.buffer.readInt16LE(this.pos)\n : this.buffer.readInt16BE(this.pos));\n\n this.pos += 2;\n return res;\n};\n\nDBusBuffer.prototype.readInt16 = function () {\n this.align(1);\n\n const res = (this.endian === LE\n ? this.buffer.readUInt16LE(this.pos)\n : this.buffer.readUInt16BE(this.pos));\n\n this.pos += 2;\n return res;\n};\n\nDBusBuffer.prototype.readSInt32 = function () {\n this.align(2);\n\n const res = (this.endian === LE\n ? this.buffer.readInt32LE(this.pos)\n : this.buffer.readInt32BE(this.pos));\n\n this.pos += 4;\n return res;\n};\n\nDBusBuffer.prototype.readInt32 = function () {\n this.align(2);\n\n const res = (this.endian === LE\n ? this.buffer.readUInt32LE(this.pos)\n : this.buffer.readUInt32BE(this.pos));\n\n this.pos += 4;\n return res;\n};\n\nDBusBuffer.prototype.readDouble = function () {\n this.align(3);\n\n const res = (this.endian === LE\n ? this.buffer.readDoubleLE(this.pos)\n : this.buffer.readDoubleBE(this.pos));\n\n this.pos += 8;\n return res;\n};\n\nDBusBuffer.prototype.readString = function (len) {\n if (len === 0) {\n this.pos++;\n return '';\n }\n const res = this.buffer.toString('utf8', this.pos, this.pos + len);\n this.pos += len + 1; // dbus strings are always zero-terminated ('s' and 'g' types)\n return res;\n};\n\nDBusBuffer.prototype.readTree = function readTree (tree) {\n switch (tree.type) {\n case '(':\n case '{':\n case 'r':\n this.align(3);\n return this.readStruct(tree.child);\n case 'a':\n if (!tree.child || tree.child.length !== 1) {\n throw new Error('Incorrect array element signature');\n }\n return this.readArray(tree.child[0], this.readInt32());\n case 'v':\n return this.readVariant();\n default:\n return this.readSimpleType(tree.type);\n }\n};\n\nDBusBuffer.prototype.read = function read (signature) {\n const tree = parseSignature(signature);\n return this.readStruct(tree);\n};\n\nDBusBuffer.prototype.readVariant = function readVariant () {\n const signature = this.readSimpleType('g');\n const tree = parseSignature(signature);\n return [tree, this.readStruct(tree)];\n};\n\nDBusBuffer.prototype.readStruct = function readStruct (struct) {\n const result = [];\n for (let i = 0; i < struct.length; ++i) {\n result.push(this.readTree(struct[i]));\n }\n return result;\n};\n\nDBusBuffer.prototype.readArray = function readArray (eleType, arrayBlobSize) {\n const result = [];\n const start = this.pos;\n\n // special case: treat ay as Buffer\n if (eleType.type === 'y' && this.options.ayBuffer) {\n this.pos += arrayBlobSize;\n return this.buffer.slice(start, this.pos);\n }\n\n // end of array is start of first element + array size\n // we need to add 4 bytes if not on 8-byte boundary\n // and array element needs 8 byte alignment\n if (['x', 't', 'd', '{', '(', 'r'].indexOf(eleType.type) !== -1) {\n this.align(3);\n }\n const end = this.pos + arrayBlobSize;\n while (this.pos < end) {\n result.push(this.readTree(eleType));\n }\n return result;\n};\n\nDBusBuffer.prototype.readSimpleType = function readSimpleType (t) {\n let len, word0, word1;\n switch (t) {\n case 'y':\n return this.readInt8();\n case 'b':\n // TODO: spec says that true is strictly 1 and false is strictly 0\n // shold we error (or warn?) when non 01 values?\n return !!this.readInt32();\n case 'n':\n return this.readSInt16();\n case 'q':\n return this.readInt16();\n case 'h': {\n const idx = this.readInt32();\n if (!this.fds || this.fds.length <= idx) throw new Error('No FDs available');\n return this.fds[idx];\n } case 'u':\n return this.readInt32();\n case 'i':\n return this.readSInt32();\n case 'g':\n len = this.readInt8();\n return this.readString(len);\n case 's':\n case 'o':\n len = this.readInt32();\n return this.readString(len);\n // TODO: validate object path here\n // if (t === 'o' && !isValidObjectPath(str))\n // throw new Error('string is not a valid object path'));\n case 'x': {\n // signed\n this.align(3);\n word0 = this.readInt32();\n word1 = this.readInt32();\n const signedLong = new Long(word0, word1, false);\n\n if (getBigIntCompat()) {\n return JSBI.BigInt(signedLong.toString());\n } else if (typeof BigInt !== 'function') {\n throw new Error('BigInt is not supported in this Node version. Use dbus.setBigIntCompat(true) to use a polyfill');\n } else {\n return BigInt(signedLong.toString());\n }\n }\n case 't': {\n // unsigned\n this.align(3);\n word0 = this.readInt32();\n word1 = this.readInt32();\n const unsignedLong = new Long(word0, word1, true);\n\n if (getBigIntCompat()) {\n return JSBI.BigInt(unsignedLong.toString());\n } else if (typeof BigInt !== 'function') {\n throw new Error('BigInt is not supported in this Node version. Use dbus.setBigIntCompat(true) to use a polyfill');\n } else {\n return BigInt(unsignedLong.toString());\n }\n }\n case 'd':\n return this.readDouble();\n default:\n throw new Error(`Unsupported type: ${t}`);\n }\n};\n\nmodule.exports = DBusBuffer;\n","[\n {\n \"type\": \"a\",\n \"child\": [\n {\n \"type\": \"(\",\n \"child\": [\n {\n \"type\": \"y\",\n \"child\": []\n },\n {\n \"type\": \"v\",\n \"child\": []\n }\n ]\n }\n ]\n }\n]\n","const Buffer = require('safe-buffer').Buffer;\nconst marshall = require('./marshall');\nconst constants = require('./constants');\nconst DBusBuffer = require('./dbus-buffer');\n\nconst headerSignature = require('./header-signature.json');\n\nmodule.exports.unmarshalMessages = function messageParser (\n stream,\n onMessage,\n opts\n) {\n let state = 0; // 0: header, 1: fields + body\n let header, fieldsAndBody;\n let fieldsLength, fieldsLengthPadded;\n let fieldsAndBodyLength = 0;\n let bodyLength = 0;\n let endian = 0;\n const LE = constants.endianness.le;\n stream.on('readable', function () {\n while (1) {\n if (state === 0) {\n header = stream.read(16);\n if (!header) {\n break;\n }\n state = 1;\n\n endian = header.readUInt8(0);\n\n fieldsLength = (endian === LE ? header.readUInt32LE(12) : header.readUInt32BE(12));\n fieldsLengthPadded = ((fieldsLength + 7) >> 3) << 3;\n bodyLength = (endian === LE ? header.readUInt32LE(4) : header.readUInt32BE(4));\n fieldsAndBodyLength = fieldsLengthPadded + bodyLength;\n } else {\n const readBuf = stream.read(fieldsAndBodyLength, null);\n // usockets return object with { data, fds }\n fieldsAndBody = readBuf ? readBuf.data || readBuf : readBuf;\n if (!fieldsAndBody) {\n break;\n }\n state = 0;\n\n const messageBuffer = new DBusBuffer(fieldsAndBody, 0, endian, readBuf.fds, opts);\n const unmarshalledHeader = messageBuffer.readArray(\n headerSignature[0].child[0],\n fieldsLength\n );\n messageBuffer.align(3);\n let headerName;\n const message = {};\n message.serial = (endian === LE ? header.readUInt32LE(8) : header.readUInt32BE(8));\n\n for (let i = 0; i < unmarshalledHeader.length; ++i) {\n headerName = constants.headerTypeName[unmarshalledHeader[i][0]];\n message[headerName] = unmarshalledHeader[i][1][1][0];\n }\n\n message.type = header[1];\n message.flags = header[2];\n\n if (bodyLength > 0 && message.signature) {\n message.body = messageBuffer.read(message.signature);\n }\n onMessage(message);\n }\n }\n });\n};\n\n// given buffer which contains entire message deserialise it\n// TODO: factor out common code\nmodule.exports.unmarshall = function unmarshall (buff, opts) {\n const endian = buff.readUInt8();\n const msgBuf = new DBusBuffer(buff, 0, endian, null, opts);\n const headers = msgBuf.read('yyyyuua(yv)');\n const message = {};\n for (let i = 0; i < headers[6].length; ++i) {\n const headerName = constants.headerTypeName[headers[6][i][0]];\n message[headerName] = headers[6][i][1][1][0];\n }\n message.type = headers[1];\n message.flags = headers[2];\n message.serial = headers[5];\n msgBuf.align(3);\n message.body = msgBuf.read(message.signature);\n return message;\n};\n\nmodule.exports.marshall = function marshallMessage (message) {\n if (!message.serial) throw new Error('Missing or invalid serial');\n const flags = message.flags || 0;\n const type = message.type || constants.messageType.METHOD_CALL;\n let bodyLength = 0;\n let bodyBuff;\n const fds = [];\n if (message.signature && message.body) {\n bodyBuff = marshall(message.signature, message.body, 0, fds);\n bodyLength = bodyBuff.length;\n message.unixFd = fds.length;\n }\n const header = [\n constants.endianness.le,\n type,\n flags,\n constants.protocolVersion,\n bodyLength,\n message.serial\n ];\n const headerBuff = marshall('yyyyuu', header);\n const fields = [];\n constants.headerTypeName.forEach(function (fieldName) {\n const fieldVal = message[fieldName];\n if (fieldVal) {\n fields.push([\n constants.headerTypeId[fieldName],\n [constants.fieldSignature[fieldName], fieldVal]\n ]);\n }\n });\n const fieldsBuff = marshall('a(yv)', [fields], 12);\n const headerLenAligned =\n ((headerBuff.length + fieldsBuff.length + 7) >> 3) << 3;\n const messageLen = headerLenAligned + bodyLength;\n const messageBuff = Buffer.alloc(messageLen);\n headerBuff.copy(messageBuff);\n fieldsBuff.copy(messageBuff, headerBuff.length);\n if (bodyLength > 0) bodyBuff.copy(messageBuff, headerLenAligned);\n\n return [messageBuff, fds];\n};\n","const Buffer = require('safe-buffer').Buffer;\n\nmodule.exports = function readOneLine (stream, cb) {\n const bytes = [];\n function readable () {\n while (1) {\n const buf = stream.read(1);\n if (!buf) return;\n const b = buf[0];\n if (b === 0x0a) {\n try {\n cb(Buffer.from(bytes));\n } catch (error) {\n stream.emit('error', error);\n }\n stream.removeListener('readable', readable);\n return;\n }\n bytes.push(b);\n }\n }\n stream.on('readable', readable);\n};\n","const Buffer = require('safe-buffer').Buffer;\nconst crypto = require('crypto');\nconst fs = require('fs');\nconst path = require('path');\n\nconst constants = require('./constants');\nconst readLine = require('./readline');\n\nfunction sha1 (input) {\n const shasum = crypto.createHash('sha1');\n shasum.update(input);\n return shasum.digest('hex');\n}\n\nfunction getUserHome () {\n return process.env[process.platform.match(/$win/) ? 'USERPROFILE' : 'HOME'];\n}\n\nfunction getCookie (context, id, cb) {\n // http://dbus.freedesktop.org/doc/dbus-specification.html#auth-mechanisms-sha\n const dirname = path.join(getUserHome(), '.dbus-keyrings');\n // > There is a default context, \"org_freedesktop_general\" that's used by servers that do not specify otherwise.\n if (context.length === 0) context = 'org_freedesktop_general';\n\n const filename = path.join(dirname, context);\n // check it's not writable by others and readable by user\n fs.stat(dirname, function (err, stat) {\n if (err) return cb(err);\n if (stat.mode & 0o22) {\n return cb(\n new Error(\n 'User keyrings directory is writeable by other users. Aborting authentication'\n )\n );\n }\n if ('getuid' in process && stat.uid !== process.getuid()) {\n return cb(\n new Error(\n 'Keyrings directory is not owned by the current user. Aborting authentication!'\n )\n );\n }\n fs.readFile(filename, 'ascii', function (err, keyrings) {\n if (err) return cb(err);\n const lines = keyrings.split('\\n');\n for (let l = 0; l < lines.length; ++l) {\n const data = lines[l].split(' ');\n if (id === data[0]) return cb(null, data[2]);\n }\n return cb(new Error('cookie not found'));\n });\n });\n}\n\nfunction hexlify (input) {\n return Buffer.from(input.toString(), 'ascii').toString('hex');\n}\n\nmodule.exports = function auth (stream, opts, cb) {\n // filter used to make a copy so we don't accidently change opts data\n let authMethods;\n if (opts.authMethods) {\n authMethods = opts.authMethods;\n } else {\n authMethods = constants.defaultAuthMethods;\n }\n stream.write('\\0');\n tryAuth(stream, authMethods.slice(), cb);\n};\n\nfunction tryAuth (stream, methods, cb) {\n if (methods.length === 0) {\n return cb(new Error('No authentication methods left to try'));\n }\n\n const authMethod = methods.shift();\n const uid = 'getuid' in process ? process.getuid() : 0;\n const id = hexlify(uid);\n\n let guid = '';\n function beginOrNextAuth () {\n readLine(stream, function (line) {\n const ok = line.toString('ascii').match(/^([A-Za-z]+) (.*)/);\n if (ok && ok[1] === 'OK') {\n guid = ok[2]; // ok[2] = guid. Do we need it?\n if (stream.supportsUnixFd) {\n negotiateUnixFd();\n } else {\n stream.write('BEGIN\\r\\n');\n return cb(null, guid);\n }\n } else {\n // TODO: parse error!\n if (!methods.empty) {\n tryAuth(stream, methods, cb);\n } else {\n return cb(line);\n }\n }\n });\n }\n function negotiateUnixFd () {\n stream.write('NEGOTIATE_UNIX_FD\\r\\n');\n readLine(stream, function (line) {\n const res = line.toString('ascii').trim();\n if (res === 'AGREE_UNIX_FD') {\n // ok\n } else if (res === 'ERROR') {\n stream.supportsUnixFd = false;\n } else {\n return cb(line);\n }\n stream.write('BEGIN\\r\\n');\n return cb(null, guid);\n });\n }\n\n switch (authMethod) {\n case 'EXTERNAL':\n stream.write(`AUTH ${authMethod} ${id}\\r\\n`);\n beginOrNextAuth();\n break;\n case 'DBUS_COOKIE_SHA1':\n stream.write(`AUTH ${authMethod} ${id}\\r\\n`);\n readLine(stream, function (line) {\n const data = Buffer.from(\n line\n .toString()\n .split(' ')[1]\n .trim(),\n 'hex'\n )\n .toString()\n .split(' ');\n const cookieContext = data[0];\n const cookieId = data[1];\n const serverChallenge = data[2];\n // any random 16 bytes should work, sha1(rnd) to make it simplier\n const clientChallenge = crypto.randomBytes(16).toString('hex');\n getCookie(cookieContext, cookieId, function (err, cookie) {\n if (err) return cb(err);\n const response = sha1(\n [serverChallenge, clientChallenge, cookie].join(':')\n );\n const reply = hexlify(clientChallenge + response);\n stream.write(`DATA ${reply}\\r\\n`);\n beginOrNextAuth();\n });\n });\n break;\n case 'ANONYMOUS':\n stream.write('AUTH ANONYMOUS \\r\\n');\n beginOrNextAuth();\n break;\n default:\n console.error(`Unsupported auth method: ${authMethod}`);\n beginOrNextAuth();\n break;\n }\n}\n","const fs = require('fs');\nconst os = require('os');\n\nfunction getDbusAddressFromWindowSelection (callback) {\n // read dbus adress from window selection\n // TODO: implement this somewhere\n const x11 = require('x11');\n if (x11 === null) {\n throw new Error('cannot get session bus address from window selection: dbus-next was installed without x11 support');\n }\n\n // read machine uuid\n fs.readFile('/var/lib/dbus/machine-id', 'ascii', function (err, uuid) {\n if (err) return callback(err);\n const hostname = os.hostname().split('-')[0];\n x11.createClient(function (err, display) {\n if (err) return callback(err);\n const X = display.client;\n const selectionName = `_DBUS_SESSION_BUS_SELECTION_${\n hostname\n }_${uuid.trim()}`;\n X.InternAtom(false, selectionName, function (err, id) {\n if (err) return callback(err);\n X.GetSelectionOwner(id, function (err, win) {\n if (err) return callback(err);\n X.InternAtom(false, '_DBUS_SESSION_BUS_ADDRESS', function (\n err,\n propId\n ) {\n if (err) return callback(err);\n win = display.screen[0].root;\n X.GetProperty(0, win, propId, 0, 0, 10000000, function (err, val) {\n if (err) return callback(err);\n callback(null, val.data.toString());\n });\n });\n });\n });\n });\n });\n}\n\nfunction getDbusAddressFromFs () {\n const home = process.env.HOME;\n const display = process.env.DISPLAY;\n if (!display) {\n throw new Error('could not get DISPLAY environment variable to get dbus address');\n }\n\n const reg = /.*:([0-9]+)\\.?.*/;\n const match = display.match(reg);\n\n if (!match || !match[1]) {\n throw new Error('could not parse DISPLAY environment variable to get dbus address');\n }\n\n const displayNum = match[1];\n\n const machineId = fs.readFileSync('/var/lib/dbus/machine-id').toString().trim();\n const dbusInfo = fs.readFileSync(`${home}/.dbus/session-bus/${machineId}-${displayNum}`).toString().trim();\n for (let line of dbusInfo.split('\\n')) {\n line = line.trim();\n if (line.startsWith('DBUS_SESSION_BUS_ADDRESS=')) {\n let address = line.split('DBUS_SESSION_BUS_ADDRESS=')[1];\n if (!address) {\n throw new Error('DBUS_SESSION_BUS_ADDRESS variable is set incorrectly in dbus info file');\n }\n\n const removeQuotes = /^['\"]?(.*?)['\"]?$/;\n address = address.match(removeQuotes)[1];\n return address;\n }\n }\n\n throw new Error('DBUS_SESSION_BUS_ADDRESS was not set in dbus info file');\n}\n\nmodule.exports = {\n getDbusAddressFromFs: getDbusAddressFromFs,\n getDbusAddressFromWindowSelection: getDbusAddressFromWindowSelection\n};\n","const { parseSignature, collapseSignature } = require('./signature');\nconst { Variant } = require('./variant');\nconst message = require('./message');\n\nfunction valueIsMarshallVariant (value) {\n // used for the marshaller variant type\n return Array.isArray(value) && value.length === 2 && Array.isArray(value[0]) && value[0].length > 0 && value[0][0].type;\n}\n\nfunction marshallVariantToJs (variant) {\n // XXX The marshaller uses a different body format than what the connection\n // is expected to emit. These two formats should be unified.\n // parses a single complete variant in marshall format\n const type = variant[0][0];\n const value = variant[1][0];\n\n if (!type.child.length) {\n if (valueIsMarshallVariant(value)) {\n return new Variant(collapseSignature(value[0][0]), marshallVariantToJs(value));\n } else {\n return value;\n }\n }\n\n if (type.type === 'a') {\n if (type.child[0].type === 'y') {\n // this gives us a buffer\n return value;\n } else if (type.child[0].type === '{') {\n // this is an array of dictionary entries\n const result = {};\n for (let i = 0; i < value.length; ++i) {\n // dictionary keys must have basic types\n result[value[i][0]] = marshallVariantToJs([[type.child[0].child[1]], [value[i][1]]]);\n }\n return result;\n } else {\n // other arrays only have one type\n const result = [];\n for (let i = 0; i < value.length; ++i) {\n result[i] = marshallVariantToJs([[type.child[0]], [value[i]]]);\n }\n return result;\n }\n } else if (type.type === '(') {\n // structs have types equal to the number of children\n const result = [];\n for (let i = 0; i < value.length; ++i) {\n result[i] = marshallVariantToJs([[type.child[i]], [value[i]]]);\n }\n return result;\n }\n}\n\nfunction messageToJsFmt (message) {\n // XXX The marshaller uses a different body format than what the connection\n // is expected to emit. These two formats should be unified.\n const { signature = '', body = [] } = message;\n const bodyJs = [];\n const signatureTree = parseSignature(signature);\n for (let i = 0; i < signatureTree.length; ++i) {\n const tree = signatureTree[i];\n bodyJs.push(marshallVariantToJs([[tree], [body[i]]]));\n }\n\n message.body = bodyJs;\n message.signature = signature;\n return message;\n}\n\nfunction jsToMarshalFmt (signature, value) {\n // XXX The connection accepts a message body in plain js format and converts\n // it to the marshaller format for writing. These two formats should be\n // unified.\n if (value === undefined) {\n throw new Error(`expected value for signature: ${signature}`);\n }\n if (signature === undefined) {\n throw new Error(`expected signature for value: ${value}`);\n }\n\n let signatureStr = null;\n if (typeof signature === 'string') {\n signatureStr = signature;\n signature = parseSignature(signature)[0];\n } else {\n signatureStr = collapseSignature(signature);\n }\n\n if (signature.child.length === 0) {\n if (signature.type === 'v') {\n if (value.constructor !== Variant) {\n throw new Error(`expected a Variant for value (got ${typeof value})`);\n }\n return [signature.type, jsToMarshalFmt(value.signature, value.value)];\n } else {\n return [signature.type, value];\n }\n }\n\n if (signature.type === 'a' && signature.child[0].type === 'y' && value.constructor === Buffer) {\n // special case: ay is a buffer\n return [signatureStr, value];\n } else if (signature.type === 'a') {\n let result = [];\n if (signature.child[0].type === 'y') {\n result = value;\n } else if (signature.child[0].type === '{') {\n // this is an array of dictionary elements\n if (value.constructor !== Object) {\n throw new Error(`expecting an object for signature '${signatureStr}' (got ${typeof value})`);\n }\n for (const k of Object.keys(value)) {\n const v = value[k];\n if (v.constructor === Variant) {\n result.push([k, jsToMarshalFmt(v.signature, v.value)]);\n } else {\n result.push([k, jsToMarshalFmt(signature.child[0].child[1], v)[1]]);\n }\n }\n } else {\n if (!Array.isArray(value)) {\n throw new Error(`expecting an array for signature '${signatureStr}' (got ${typeof value})`);\n }\n for (const v of value) {\n if (v.constructor === Variant) {\n result.push(jsToMarshalFmt(v.signature, v.value));\n } else {\n result.push(jsToMarshalFmt(signature.child[0], v)[1]);\n }\n }\n }\n return [signatureStr, result];\n } else if (signature.type === '(') {\n if (!Array.isArray(value)) {\n throw new Error(`expecting an array for signature '${signatureStr}' (got ${typeof value})`);\n }\n if (value.length !== signature.child.length) {\n throw new Error(`expecting struct to have ${signature.child.length} members (got ${value.length} members)`);\n }\n const result = [];\n for (let i = 0; i < value.length; ++i) {\n const v = value[i];\n if (signature.child[i] === 'v') {\n if (v.constructor !== Variant) {\n throw new Error(`expected a Variant for struct member ${i + 1} (got ${v})`);\n }\n result.push(jsToMarshalFmt(v.signature, v.value));\n } else {\n result.push(jsToMarshalFmt(signature.child[i], v)[1]);\n }\n }\n return [signatureStr, result];\n } else {\n throw new Error(`got unknown complex type: ${signature.type}`);\n }\n}\n\nfunction marshallMessage (msg) {\n // XXX The connection accepts a message body in plain js format and converts\n // it to the marshaller format for writing. These two formats should be\n // unified.\n const { signature = '', body = [] } = msg;\n\n const signatureTree = parseSignature(signature);\n\n if (signatureTree.length !== body.length) {\n throw new Error(`Expected ${signatureTree.length} body elements for signature '${signature}' (got ${body.length})`);\n }\n\n const marshallerBody = [];\n for (let i = 0; i < body.length; ++i) {\n if (signatureTree[i].type === 'v') {\n if (body[i].constructor !== Variant) {\n throw new Error(`Expected a Variant() argument for position ${i + 1} (value='${body[i]}')`);\n }\n marshallerBody.push(jsToMarshalFmt(body[i].signature, body[i].value));\n } else {\n marshallerBody.push(jsToMarshalFmt(signatureTree[i], body[i])[1]);\n }\n }\n\n msg.signature = signature;\n msg.body = marshallerBody;\n return message.marshall(msg);\n}\n\nmodule.exports = {\n messageToJsFmt: messageToJsFmt,\n marshallMessage: marshallMessage\n};\n","var Stream = require('stream')\n\n// through\n//\n// a stream that does nothing but re-emit the input.\n// useful for aggregating a series of changing but not ending streams into one stream)\n\nexports = module.exports = through\nthrough.through = through\n\n//create a readable writable stream.\n\nfunction through (write, end, opts) {\n write = write || function (data) { this.queue(data) }\n end = end || function () { this.queue(null) }\n\n var ended = false, destroyed = false, buffer = [], _ended = false\n var stream = new Stream()\n stream.readable = stream.writable = true\n stream.paused = false\n\n// stream.autoPause = !(opts && opts.autoPause === false)\n stream.autoDestroy = !(opts && opts.autoDestroy === false)\n\n stream.write = function (data) {\n write.call(this, data)\n return !stream.paused\n }\n\n function drain() {\n while(buffer.length && !stream.paused) {\n var data = buffer.shift()\n if(null === data)\n return stream.emit('end')\n else\n stream.emit('data', data)\n }\n }\n\n stream.queue = stream.push = function (data) {\n// console.error(ended)\n if(_ended) return stream\n if(data === null) _ended = true\n buffer.push(data)\n drain()\n return stream\n }\n\n //this will be registered as the first 'end' listener\n //must call destroy next tick, to make sure we're after any\n //stream piped from here.\n //this is only a problem if end is not emitted synchronously.\n //a nicer way to do this is to make sure this is the last listener for 'end'\n\n stream.on('end', function () {\n stream.readable = false\n if(!stream.writable && stream.autoDestroy)\n process.nextTick(function () {\n stream.destroy()\n })\n })\n\n function _end () {\n stream.writable = false\n end.call(stream)\n if(!stream.readable && stream.autoDestroy)\n stream.destroy()\n }\n\n stream.end = function (data) {\n if(ended) return\n ended = true\n if(arguments.length) stream.write(data)\n _end() // will emit or queue\n return stream\n }\n\n stream.destroy = function () {\n if(destroyed) return\n destroyed = true\n ended = true\n buffer.length = 0\n stream.writable = stream.readable = false\n stream.emit('close')\n return stream\n }\n\n stream.pause = function () {\n if(stream.paused) return\n stream.paused = true\n return stream\n }\n\n stream.resume = function () {\n if(stream.paused) {\n stream.paused = false\n stream.emit('resume')\n }\n drain()\n //may have become paused again,\n //as drain emits 'data'.\n if(!stream.paused)\n stream.emit('drain')\n return stream\n }\n return stream\n}\n\n","\n'use strict';\n\nvar Stream = require('stream')\n\n// from\n//\n// a stream that reads from an source.\n// source may be an array, or a function.\n// from handles pause behaviour for you.\n\nmodule.exports =\nfunction from (source) {\n if(Array.isArray(source)) {\n\t\tvar source_index = 0, source_len = source.length;\n return from (function (i) {\n if(source_index < source_len)\n this.emit('data', source[source_index++])\n else\n this.emit('end')\n return true\n })\n }\n var s = new Stream(), i = 0\n s.ended = false\n s.started = false\n s.readable = true\n s.writable = false\n s.paused = false\n s.ended = false\n s.pause = function () {\n s.started = true\n s.paused = true\n }\n function next () {\n s.started = true\n if(s.ended) return\n while(!s.ended && !s.paused && source.call(s, i++, function () {\n if(!s.ended && !s.paused)\n process.nextTick(next);\n }))\n ;\n }\n s.resume = function () {\n s.started = true\n s.paused = false\n next()\n }\n s.on('end', function () {\n s.ended = true\n s.readable = false\n process.nextTick(s.destroy)\n })\n s.destroy = function () {\n s.ended = true\n s.emit('close') \n }\n /*\n by default, the stream will start emitting at nextTick\n if you want, you can pause it, after pipeing.\n you can also resume before next tick, and that will also\n work.\n */\n process.nextTick(function () {\n if(!s.started) s.resume()\n })\n return s\n}\n","var Stream = require(\"stream\")\nvar writeMethods = [\"write\", \"end\", \"destroy\"]\nvar readMethods = [\"resume\", \"pause\"]\nvar readEvents = [\"data\", \"close\"]\nvar slice = Array.prototype.slice\n\nmodule.exports = duplex\n\nfunction forEach (arr, fn) {\n if (arr.forEach) {\n return arr.forEach(fn)\n }\n\n for (var i = 0; i < arr.length; i++) {\n fn(arr[i], i)\n }\n}\n\nfunction duplex(writer, reader) {\n var stream = new Stream()\n var ended = false\n\n forEach(writeMethods, proxyWriter)\n\n forEach(readMethods, proxyReader)\n\n forEach(readEvents, proxyStream)\n\n reader.on(\"end\", handleEnd)\n\n writer.on(\"drain\", function() {\n stream.emit(\"drain\")\n })\n\n writer.on(\"error\", reemit)\n reader.on(\"error\", reemit)\n\n stream.writable = writer.writable\n stream.readable = reader.readable\n\n return stream\n\n function proxyWriter(methodName) {\n stream[methodName] = method\n\n function method() {\n return writer[methodName].apply(writer, arguments)\n }\n }\n\n function proxyReader(methodName) {\n stream[methodName] = method\n\n function method() {\n stream.emit(methodName)\n var func = reader[methodName]\n if (func) {\n return func.apply(reader, arguments)\n }\n reader.emit(methodName)\n }\n }\n\n function proxyStream(methodName) {\n reader.on(methodName, reemit)\n\n function reemit() {\n var args = slice.call(arguments)\n args.unshift(methodName)\n stream.emit.apply(stream, args)\n }\n }\n\n function handleEnd() {\n if (ended) {\n return\n }\n ended = true\n var args = slice.call(arguments)\n args.unshift(\"end\")\n stream.emit.apply(stream, args)\n }\n\n function reemit(err) {\n stream.emit(\"error\", err)\n }\n}\n","//filter will reemit the data if cb(err,pass) pass is truthy\n\n// reduce is more tricky\n// maybe we want to group the reductions or emit progress updates occasionally\n// the most basic reduce just emits one 'data' event after it has recieved 'end'\n\n\nvar Stream = require('stream').Stream\n\n\n//create an event stream and apply function to each .write\n//emitting each response as data\n//unless it's an empty callback\n\nmodule.exports = function (mapper, opts) {\n\n var stream = new Stream()\n , self = this\n , inputs = 0\n , outputs = 0\n , ended = false\n , paused = false\n , destroyed = false\n , lastWritten = 0\n , inNext = false\n\n this.opts = opts || {};\n var errorEventName = this.opts.failures ? 'failure' : 'error';\n\n // Items that are not ready to be written yet (because they would come out of\n // order) get stuck in a queue for later.\n var writeQueue = {}\n\n stream.writable = true\n stream.readable = true\n\n function queueData (data, number) {\n var nextToWrite = lastWritten + 1\n\n if (number === nextToWrite) {\n // If it's next, and its not undefined write it\n if (data !== undefined) {\n stream.emit.apply(stream, ['data', data])\n }\n lastWritten ++\n nextToWrite ++\n } else {\n // Otherwise queue it for later.\n writeQueue[number] = data\n }\n\n // If the next value is in the queue, write it\n if (writeQueue.hasOwnProperty(nextToWrite)) {\n var dataToWrite = writeQueue[nextToWrite]\n delete writeQueue[nextToWrite]\n return queueData(dataToWrite, nextToWrite)\n }\n\n outputs ++\n if(inputs === outputs) {\n if(paused) paused = false, stream.emit('drain') //written all the incoming events\n if(ended) end()\n }\n }\n\n function next (err, data, number) {\n if(destroyed) return\n inNext = true\n\n if (!err || self.opts.failures) {\n queueData(data, number)\n }\n\n if (err) {\n stream.emit.apply(stream, [ errorEventName, err ]);\n }\n\n inNext = false;\n }\n\n // Wrap the mapper function by calling its callback with the order number of\n // the item in the stream.\n function wrappedMapper (input, number, callback) {\n return mapper.call(null, input, function(err, data){\n callback(err, data, number)\n })\n }\n\n stream.write = function (data) {\n if(ended) throw new Error('map stream is not writable')\n inNext = false\n inputs ++\n\n try {\n //catch sync errors and handle them like async errors\n var written = wrappedMapper(data, inputs, next)\n paused = (written === false)\n return !paused\n } catch (err) {\n //if the callback has been called syncronously, and the error\n //has occured in an listener, throw it again.\n if(inNext)\n throw err\n next(err)\n return !paused\n }\n }\n\n function end (data) {\n //if end was called with args, write it, \n ended = true //write will emit 'end' if ended is true\n stream.writable = false\n if(data !== undefined) {\n return queueData(data, inputs)\n } else if (inputs == outputs) { //wait for processing \n stream.readable = false, stream.emit('end'), stream.destroy() \n }\n }\n\n stream.end = function (data) {\n if(ended) return\n end()\n }\n\n stream.destroy = function () {\n ended = destroyed = true\n stream.writable = stream.readable = paused = false\n process.nextTick(function () {\n stream.emit('close')\n })\n }\n stream.pause = function () {\n paused = true\n }\n\n stream.resume = function () {\n paused = false\n }\n\n return stream\n}\n\n\n\n\n","//through@2 handles this by default!\nmodule.exports = require('through')\n\n","//filter will reemit the data if cb(err,pass) pass is truthy\n\n// reduce is more tricky\n// maybe we want to group the reductions or emit progress updates occasionally\n// the most basic reduce just emits one 'data' event after it has recieved 'end'\n\n\nvar through = require('through')\nvar Decoder = require('string_decoder').StringDecoder\n\nmodule.exports = split\n\n//TODO pass in a function to map across the lines.\n\nfunction split (matcher, mapper, options) {\n var decoder = new Decoder()\n var soFar = ''\n var maxLength = options && options.maxLength;\n if('function' === typeof matcher)\n mapper = matcher, matcher = null\n if (!matcher)\n matcher = /\\r?\\n/\n\n function emit(stream, piece) {\n if(mapper) {\n try {\n piece = mapper(piece)\n }\n catch (err) {\n return stream.emit('error', err)\n }\n if('undefined' !== typeof piece)\n stream.queue(piece)\n }\n else\n stream.queue(piece)\n }\n\n function next (stream, buffer) {\n var pieces = ((soFar != null ? soFar : '') + buffer).split(matcher)\n soFar = pieces.pop()\n\n if (maxLength && soFar.length > maxLength)\n stream.emit('error', new Error('maximum buffer reached'))\n\n for (var i = 0; i < pieces.length; i++) {\n var piece = pieces[i]\n emit(stream, piece)\n }\n }\n\n return through(function (b) {\n next(this, decoder.write(b))\n },\n function () {\n if(decoder.end)\n next(this, decoder.end())\n if(soFar != null)\n emit(this, soFar)\n this.queue(null)\n })\n}\n\n","var duplexer = require('duplexer')\n\nmodule.exports = function () {\n\n var streams = [].slice.call(arguments)\n , first = streams[0]\n , last = streams[streams.length - 1]\n , thepipe = duplexer(first, last)\n\n if(streams.length == 1)\n return streams[0]\n else if (!streams.length)\n throw new Error('connect called with empty args')\n\n //pipe all the streams together\n\n function recurse (streams) {\n if(streams.length < 2)\n return\n streams[0].pipe(streams[1])\n recurse(streams.slice(1)) \n }\n \n recurse(streams)\n \n function onerror () {\n var args = [].slice.call(arguments)\n args.unshift('error')\n thepipe.emit.apply(thepipe, args)\n }\n \n //es.duplex already reemits the error from the first and last stream.\n //add a listener for the inner streams in the pipeline.\n for(var i = 1; i < streams.length - 1; i ++)\n streams[i].on('error', onerror)\n\n return thepipe\n}\n\n","//filter will reemit the data if cb(err,pass) pass is truthy\n\n// reduce is more tricky\n// maybe we want to group the reductions or emit progress updates occasionally\n// the most basic reduce just emits one 'data' event after it has recieved 'end'\n\nvar Stream = require('stream').Stream\n , es = exports\n , through = require('through')\n , from = require('from')\n , duplex = require('duplexer')\n , map = require('map-stream')\n , pause = require('pause-stream')\n , split = require('split')\n , pipeline = require('stream-combiner')\n , immediately = global.setImmediate || process.nextTick;\n\nes.Stream = Stream //re-export Stream from core\nes.through = through\nes.from = from\nes.duplex = duplex\nes.map = map\nes.pause = pause\nes.split = split\nes.pipeline = es.connect = es.pipe = pipeline\n// merge / concat\n//\n// combine multiple streams into a single stream.\n// will emit end only once\n\nes.concat = //actually this should be called concat\nes.merge = function (/*streams...*/) {\n var toMerge = [].slice.call(arguments)\n if (toMerge.length === 1 && (toMerge[0] instanceof Array)) {\n toMerge = toMerge[0] //handle array as arguments object\n }\n var stream = new Stream()\n stream.setMaxListeners(0) // allow adding more than 11 streams\n var endCount = 0\n stream.writable = stream.readable = true\n\n if (toMerge.length) {\n toMerge.forEach(function (e) {\n e.pipe(stream, {end: false})\n var ended = false\n e.on('end', function () {\n if(ended) return\n ended = true\n endCount ++\n if(endCount == toMerge.length)\n stream.emit('end')\n })\n })\n } else {\n process.nextTick(function () {\n stream.emit('end')\n })\n }\n \n stream.write = function (data) {\n this.emit('data', data)\n }\n stream.destroy = function () {\n toMerge.forEach(function (e) {\n if(e.destroy) e.destroy()\n })\n }\n return stream\n}\n\n\n// writable stream, collects all events into an array\n// and calls back when 'end' occurs\n// mainly I'm using this to test the other functions\n\nes.writeArray = function (done) {\n if ('function' !== typeof done)\n throw new Error('function writeArray (done): done must be function')\n\n var a = new Stream ()\n , array = [], isDone = false\n a.write = function (l) {\n array.push(l)\n }\n a.end = function () {\n isDone = true\n done(null, array)\n }\n a.writable = true\n a.readable = false\n a.destroy = function () {\n a.writable = a.readable = false\n if(isDone) return\n done(new Error('destroyed before end'), array)\n }\n return a\n}\n\n//return a Stream that reads the properties of an object\n//respecting pause() and resume()\n\nes.readArray = function (array) {\n var stream = new Stream()\n , i = 0\n , paused = false\n , ended = false\n\n stream.readable = true\n stream.writable = false\n\n if(!Array.isArray(array))\n throw new Error('event-stream.read expects an array')\n\n stream.resume = function () {\n if(ended) return\n paused = false\n var l = array.length\n while(i < l && !paused && !ended) {\n stream.emit('data', array[i++])\n }\n if(i == l && !ended)\n ended = true, stream.readable = false, stream.emit('end')\n }\n process.nextTick(stream.resume)\n stream.pause = function () {\n paused = true\n }\n stream.destroy = function () {\n ended = true\n stream.emit('close')\n }\n return stream\n}\n\n//\n// readable (asyncFunction)\n// return a stream that calls an async function while the stream is not paused.\n//\n// the function must take: (count, callback) {...\n//\n\nes.readable =\nfunction (func, continueOnError) {\n var stream = new Stream()\n , i = 0\n , paused = false\n , ended = false\n , reading = false\n\n stream.readable = true\n stream.writable = false\n\n if('function' !== typeof func)\n throw new Error('event-stream.readable expects async function')\n\n stream.on('end', function () { ended = true })\n\n function get (err, data) {\n\n if(err) {\n stream.emit('error', err)\n if(!continueOnError) stream.emit('end')\n } else if (arguments.length > 1)\n stream.emit('data', data)\n\n immediately(function () {\n if(ended || paused || reading) return\n try {\n reading = true\n func.call(stream, i++, function () {\n reading = false\n get.apply(null, arguments)\n })\n } catch (err) {\n stream.emit('error', err)\n }\n })\n }\n stream.resume = function () {\n paused = false\n get()\n }\n process.nextTick(get)\n stream.pause = function () {\n paused = true\n }\n stream.destroy = function () {\n stream.emit('end')\n stream.emit('close')\n ended = true\n }\n return stream\n}\n\n\n//\n// map sync\n//\n\nes.mapSync = function (sync) {\n return es.through(function write(data) {\n var mappedData\n try {\n mappedData = sync(data)\n } catch (err) {\n return this.emit('error', err)\n }\n if (mappedData !== undefined)\n this.emit('data', mappedData)\n })\n}\n\n//\n// log just print out what is coming through the stream, for debugging\n//\n\nes.log = function (name) {\n return es.through(function (data) {\n var args = [].slice.call(arguments)\n if(name) console.error(name, data)\n else console.error(data)\n this.emit('data', data)\n })\n}\n\n\n//\n// child -- pipe through a child process\n//\n\nes.child = function (child) {\n\n return es.duplex(child.stdin, child.stdout)\n\n}\n\n//\n// parse\n//\n// must be used after es.split() to ensure that each chunk represents a line\n// source.pipe(es.split()).pipe(es.parse())\n\nes.parse = function (options) {\n var emitError = !!(options ? options.error : false)\n return es.through(function (data) {\n var obj\n try {\n if(data) //ignore empty lines\n obj = JSON.parse(data.toString())\n } catch (err) {\n if (emitError)\n return this.emit('error', err)\n return console.error(err, 'attempting to parse:', data)\n }\n //ignore lines that where only whitespace.\n if(obj !== undefined)\n this.emit('data', obj)\n })\n}\n//\n// stringify\n//\n\nes.stringify = function () {\n var Buffer = require('buffer').Buffer\n return es.mapSync(function (e){\n return JSON.stringify(Buffer.isBuffer(e) ? e.toString() : e) + '\\n'\n })\n}\n\n//\n// replace a string within a stream.\n//\n// warn: just concatenates the string and then does str.split().join().\n// probably not optimal.\n// for smallish responses, who cares?\n// I need this for shadow-npm so it's only relatively small json files.\n\nes.replace = function (from, to) {\n return es.pipeline(es.split(from), es.join(to))\n}\n\n//\n// join chunks with a joiner. just like Array#join\n// also accepts a callback that is passed the chunks appended together\n// this is still supported for legacy reasons.\n//\n\nes.join = function (str) {\n\n //legacy api\n if('function' === typeof str)\n return es.wait(str)\n\n var first = true\n return es.through(function (data) {\n if(!first)\n this.emit('data', str)\n first = false\n this.emit('data', data)\n return true\n })\n}\n\n\n//\n// wait. callback when 'end' is emitted, with all chunks appended as string.\n//\n\nes.wait = function (callback) {\n var arr = []\n return es.through(function (data) { arr.push(data) },\n function () {\n var body = Buffer.isBuffer(arr[0]) ? Buffer.concat(arr)\n : arr.join('')\n this.emit('data', body)\n this.emit('end')\n if(callback) callback(null, body)\n })\n}\n\nes.pipeable = function () {\n throw new Error('[EVENT-STREAM] es.pipeable is deprecated')\n}\n","const EventEmitter = require('events').EventEmitter;\nconst net = require('net');\nconst message = require('./message');\nconst clientHandshake = require('./handshake');\nconst { getDbusAddressFromFs } = require('./address-x11');\nconst { Message } = require('./message-type');\nconst { messageToJsFmt, marshallMessage } = require('./marshall-compat');\n\nfunction createStream (opts) {\n let { busAddress, negotiateUnixFd } = opts;\n\n if (negotiateUnixFd === undefined) {\n negotiateUnixFd = false;\n }\n\n // TODO according to the dbus spec, we should start a new server if the bus\n // address cannot be found.\n if (!busAddress) {\n busAddress = process.env.DBUS_SESSION_BUS_ADDRESS;\n }\n if (!busAddress) {\n busAddress = getDbusAddressFromFs();\n }\n\n const addresses = busAddress.split(';');\n for (let i = 0; i < addresses.length; ++i) {\n const address = addresses[i];\n const familyParams = address.split(':');\n const family = familyParams[0];\n const params = {};\n familyParams[1].split(',').forEach(function (p) {\n const keyVal = p.split('=');\n params[keyVal[0]] = keyVal[1];\n });\n\n try {\n switch (family.toLowerCase()) {\n case 'tcp': {\n const host = params.host || 'localhost';\n const port = params.port;\n return net.createConnection(port, host);\n }\n case 'unix': {\n if (params.socket) {\n return net.createConnection(params.socket);\n }\n if (params.abstract) {\n const usocket = require('usocket');\n const sock = new usocket.USocket({ path: '\\u0000' + params.abstract });\n sock.supportsUnixFd = negotiateUnixFd;\n return sock;\n }\n if (params.path) {\n try {\n const usocket = require('usocket');\n const sock = new usocket.USocket({ path: params.path });\n sock.supportsUnixFd = negotiateUnixFd;\n return sock;\n } catch (err) {\n // TODO: maybe emit warning?\n return net.createConnection(params.path);\n }\n }\n throw new Error(\n \"not enough parameters for 'unix' connection - you need to specify 'socket' or 'abstract' or 'path' parameter\"\n );\n }\n case 'unixexec': {\n const eventStream = require('event-stream');\n const spawn = require('child_process').spawn;\n const args = [];\n for (let n = 1; params['arg' + n]; n++) args.push(params['arg' + n]);\n const child = spawn(params.path, args);\n // duplex socket is auto connected so emit connect event next frame\n setTimeout(() => eventStream.emit('connected'), 0);\n\n return eventStream.duplex(child.stdin, child.stdout);\n }\n default: {\n throw new Error('unknown address type:' + family);\n }\n }\n } catch (e) {\n if (i < addresses.length - 1) {\n console.warn(e.message);\n continue;\n } else {\n throw e;\n }\n }\n }\n}\n\nfunction createConnection (opts) {\n const self = new EventEmitter();\n opts = opts || {};\n const stream = (self.stream = createStream(opts));\n stream.setNoDelay && stream.setNoDelay();\n\n stream.on('error', function (err) {\n // forward network and stream errors\n self.emit('error', err);\n });\n\n stream.on('end', function () {\n self.emit('end');\n self.message = function () {\n self.emit('error', new Error('Tried to write a message to a closed stream'));\n };\n });\n\n self.end = function () {\n stream.end();\n return self;\n };\n\n function afterHandshake (error, guid) {\n if (error) {\n return self.emit('error', error);\n }\n self.guid = guid;\n self.emit('connect');\n message.unmarshalMessages(\n stream,\n function (message) {\n try {\n message = new Message(messageToJsFmt(message));\n } catch (err) {\n self.emit('error', err, `There was an error receiving a message (this is probably a bug in dbus-next): ${message}`);\n return;\n }\n self.emit('message', message);\n },\n opts\n );\n }\n stream.once('connect', () => clientHandshake(stream, opts, afterHandshake));\n stream.once('connected', () => clientHandshake(stream, opts, afterHandshake));\n\n self._messages = [];\n\n // pre-connect version, buffers all messages. replaced after connect\n self.message = function (msg) {\n self._messages.push(msg);\n };\n\n self.once('connect', function () {\n self.state = 'connected';\n for (let i = 0; i < self._messages.length; ++i) {\n const [data, fds] = marshallMessage(self._messages[i]);\n if (stream.supportsUnixFd) {\n stream.write({ data, fds });\n } else {\n stream.write(data);\n }\n }\n self._messages.length = 0;\n\n // no need to buffer once connected\n self.message = function (msg) {\n if (!stream.writable) {\n throw new Error('Cannot send message, stream is closed');\n }\n const [data, fds] = marshallMessage(msg);\n if (stream.supportsUnixFd) {\n stream.write({ data, fds });\n } else {\n if (fds.length > 0) {\n console.warn('Sending file descriptors is not supported in current bus connection');\n }\n stream.write(data);\n }\n };\n });\n\n return self;\n}\n\nmodule.exports = createConnection;\n","const constants = require('./lib/constants');\nconst MessageBus = require('./lib/bus');\nconst errors = require('./lib/errors');\nconst {Variant} = require('./lib//variant');\nconst {Message} = require('./lib/message-type.js');\nconst iface = require('./lib/service/interface');\nconst createConnection = require('./lib/connection.js');\n\nlet createClient = function(params) {\n let connection = createConnection(params || {});\n return new MessageBus(connection);\n};\n\n/**\n * Create a new {@link MessageBus} client on the DBus system bus to connect to\n * interfaces or request service names. Connects to the socket specified by the\n * `DBUS_SYSTEM_BUS_ADDRESS` environment variable or\n * `unix:path=/var/run/dbus/system_bus_socket`.\n *\n * @param {object} [options] - Options for `MessageBus` creation.\n * @param {object} [options.negotiateUnixFd] - Whether this bus should support the negotiation of Unix file descriptors.\n */\nmodule.exports.systemBus = function(opts) {\n if(!opts)\n opts = {};\n return createClient({\n negotiateUnixFd: opts.negotiateUnixFd,\n busAddress:\n process.env.DBUS_SYSTEM_BUS_ADDRESS ||\n 'unix:path=/var/run/dbus/system_bus_socket'\n });\n};\n\n/**\n * Create a new {@link MessageBus} client on the DBus session bus to connect to\n * interfaces or request service names.\n *\n * @param {object} [options] - Options for `MessageBus` creation.\n * @param {object} [options.busAddress] - The socket path for the session bus.\n * @param {object} [options.negotiateUnixFd] - Whether this bus should support the negotiation of Unix file descriptors.\n * Defaults to finding the bus address in the manner specified in the DBus\n * specification. The bus address will first be read from the\n * `DBUS_SESSION_BUS_ADDRESS` environment variable and when that is not\n * available, found from the `$HOME/.dbus` directory.\n */\nmodule.exports.sessionBus = function(opts) {\n return createClient(opts);\n};\n\n/**\n * Use JSBI as a polyfill for long integer types ('x' and 't') in the client\n * and the service. This is required for Node verisons that do not support the\n * native `BigInt` class which is used by default for these types (version <\n * 10.8.0).\n *\n * @function\n * @param {boolean} compat - pass `true` to use JSBI.\n */\nmodule.exports.setBigIntCompat = require('./lib/library-options').setBigIntCompat\n\nmodule.exports.NameFlag = constants.NameFlag;\nmodule.exports.RequestNameReply = constants.RequestNameReply;\nmodule.exports.ReleaseNameReply = constants.ReleaseNameReply;\nmodule.exports.MessageType = constants.MessageType;\nmodule.exports.MessageFlag = constants.MessageFlag;\n\nmodule.exports.interface = iface;\nmodule.exports.Variant = Variant;\nmodule.exports.Message = Message;\nmodule.exports.validators = require('./lib/validators');\nmodule.exports.DBusError = errors.DBusError;\n","/** Public task operations; importing this module never opens a bus or starts a process. */\nexport { connect } from './client';\nexport { prepare } from './validation';\nexport { TaskError } from './errors';\nexport { nullIO } from './types';\nexport type {\n\tCleanupState, ConnectOptions, DiagnosticEvent, ErrorCode, ErrorDetails,\n\tLookupResult, ManagerIdentity, ReleaseOptions, ReleaseReceipt, StartReceipt, StopOptions,\n\tStopReceipt, SystemdProperty, TaskClient, TaskEvidence, TaskIdentity,\n\tTaskInput, TaskIntent, TaskIO, TaskOutput, TaskReference, TaskResult,\n\tTaskSnapshot, TaskSpec, WaitOptions,\n} from './types';\n","import * as crypto from 'node:crypto';\nimport * as diagnostics from './diagnostics';\nimport * as errors from './errors';\nimport * as io from './io';\nimport * as systemd from './systemd';\nimport * as transport from './transport';\nimport * as validation from './validation';\nimport * as waiting from './waiting';\nimport type * as types from './types';\n\n/** Delivery stages used to keep cancellation separate from confirmed non-execution. */\ntype MutationStage = 'before-submission' | 'submitted' | 'accepted';\n\n/** Bound total release observation independently of configurable per-request transport deadlines. */\nconst defaultReleaseTimeoutMs = 5000;\n\n/** Add safe task context and delivery evidence for one current mutation; release aggregates prior effects separately. */\nfunction mutationError(error: unknown, operation: string, identity: types.TaskIdentity, stage: MutationStage): errors.TaskError {\n\tconst original = error instanceof errors.TaskError ? error : new errors.TaskError('RESULT_UNAVAILABLE', 'The task operation failed.', {}, error);\n\tconst localCancellation = original.code === 'WAIT_ABORTED' || original.code === 'WAIT_TIMEOUT';\n\tconst outcome = original.details.mutationOutcome ?? (stage === 'before-submission' ? 'not-submitted' : stage === 'accepted' ? 'accepted' : 'unknown');\n\tconst code = localCancellation && stage === 'submitted' ? 'UNKNOWN_MUTATION_OUTCOME' : original.code;\n\treturn new errors.TaskError(code, code === 'UNKNOWN_MUTATION_OUTCOME' ? 'The manager mutation outcome is unknown.' : original.message, { ...original.details, operation, taskId: identity.id, mutationOutcome: outcome }, original);\n}\n\n/** Preserve earlier cleanup acknowledgments independently of the latest release request's delivery. */\nfunction releaseError(error: unknown, identity: types.TaskIdentity, stage: MutationStage, acceptedCleanupMutations: number): errors.TaskError {\n\tconst reported = mutationError(error, 'release', identity, stage);\n\tconst outcome = reported.details.mutationOutcome ?? 'not-submitted';\n\treturn new errors.TaskError(reported.code, reported.message, {\n\t\t...reported.details,\n\t\tmutationOutcome: acceptedCleanupMutations > 0 && outcome !== 'unknown' ? 'accepted' : outcome,\n\t\tacceptedCleanupMutations,\n\t}, reported);\n}\n\n/** Test only explicit absence; a lost manager is never an already-released task. */\nfunction isAbsence(error: unknown): boolean {\n\treturn error instanceof errors.TaskError && (error.details.reason === 'org.freedesktop.systemd1.NoSuchUnit' || error.details.reason === 'org.freedesktop.DBus.Error.UnknownObject');\n}\n\n/** Library-owned observation and descriptor resources around manager-owned task processes. */\nexport class SystemdTaskClient implements types.TaskClient {\n\t/** Binding used by every persisted reference created through this client. */\n\treadonly manager: types.ManagerIdentity;\n\t/** A single concrete systemd transport, replaceable only by test doubles inside the package. */\n\tprivate readonly transport: transport.Transport;\n\t/** Shared redacted sink and immutable asynchronous task context. */\n\tprivate readonly diagnostics: diagnostics.Diagnostics;\n\t/** Shared notifications close races without one signal listener per waiter. */\n\tprivate readonly hub = new waiting.ObservationHub();\n\t/** Concurrent observers share only an in-flight read, never a stale cached snapshot. */\n\tprivate readonly reads = new Map<string, Promise<systemd.UnitPair>>();\n\t/** Local duplicate protection is intentionally not a durable deduplication ledger. */\n\tprivate readonly attempted = new Set<string>();\n\t/** Serialize mutations of the same identity within this client. */\n\tprivate readonly mutations = new Map<string, Promise<void>>();\n\t/** The transport listener is removed independently of other clients. */\n\tprivate readonly unsubscribe: () => void;\n\t/** Closing a client cannot reopen a connection or switch managers. */\n\tprivate closed = false;\n\n\t/** Bind the concrete adapter; the public entrypoint creates it only during connect(). */\n\tconstructor(adapter: transport.Transport, sink: diagnostics.Diagnostics) {\n\t\tthis.transport = adapter;\n\t\tthis.manager = adapter.identity;\n\t\tthis.diagnostics = sink;\n\t\tthis.unsubscribe = adapter.onChange(/** Forward adapter invalidations to shared task observers. */ unitName => this.hub.notify(unitName));\n\t}\n\n\t/** Validate local lifetime before any operation can consult or mutate the manager. */\n\tprivate assertOpen(): void {\n\t\tif (this.closed) throw new errors.TaskError('DISCONNECTED', 'The task client is disconnected.');\n\t\tthis.transport.assertOpen();\n\t}\n\n\t/** Mutations of different tasks remain independent; failures cannot poison the queue. */\n\tprivate async mutate<T>(identity: types.TaskIdentity, action: () => Promise<T>): Promise<T> {\n\t\tconst previous = this.mutations.get(identity.id) ?? Promise.resolve();\n\t\tconst result = previous.then(action);\n\t\tconst settled = result.then(/** Allow subsequent mutations after this request succeeds. */ () => {}, /** Allow subsequent mutations after this request fails. */ () => {});\n\t\tthis.mutations.set(identity.id, settled);\n\t\ttry { return await result; }\n\t\tfinally { if (this.mutations.get(identity.id) === settled) this.mutations.delete(identity.id); }\n\t}\n\n\t/** Read both owned units concurrently, sharing only requests already in progress. */\n\tprivate async readPair(identity: types.TaskIdentity): Promise<systemd.UnitPair> {\n\t\tthis.assertOpen();\n\t\tconst existing = this.reads.get(identity.id);\n\t\tif (existing) return await existing;\n\t\tconst read = Promise.all([this.transport.readUnit(identity.unitName), this.transport.readUnit(identity.retentionUnitName)])\n\t\t\t.then(/** Combine independent service reads into one ownership observation. */ ([task, retention]) => ({ task, retention }));\n\t\tthis.reads.set(identity.id, read);\n\t\ttry { return await read; }\n\t\tfinally { if (this.reads.get(identity.id) === read) this.reads.delete(identity.id); }\n\t}\n\n\t/** Ownership is checked before invoking any lifecycle or cleanup operation on names. */\n\tprivate async checkedPair(target: types.TaskIntent | types.TaskReference): Promise<systemd.UnitPair> {\n\t\tif ('manager' in target) systemd.assertManager(target.manager, this.manager);\n\t\tconst pair = await this.readPair(target);\n\t\tsystemd.assertOwnership(target, pair);\n\t\tif ('manager' in target) systemd.assertReference(target, pair);\n\t\treturn pair;\n\t}\n\n\t/** An incomplete auxiliary record is distinct from both a found result and total absence. */\n\tprivate async lookupInternal(target: types.TaskIntent | types.TaskReference): Promise<types.LookupResult> {\n\t\tconst pair = await this.checkedPair(target);\n\t\tif (!pair.task && !pair.retention) return { status: 'not-found', identity: validation.identityOnly(target) };\n\t\tif (!pair.task) return { status: 'incomplete', reference: systemd.reference(target, this.manager, pair) };\n\t\tconst snapshot = await systemd.snapshot(target, this.manager, pair);\n\t\treturn { status: 'found', reference: snapshot.reference, snapshot };\n\t}\n\n\t/** The returned receipt proves only manager acceptance; callers observe execution separately. */\n\tasync start(value: types.TaskIntent, channels: types.TaskIO): Promise<types.StartReceipt> {\n\t\tconst intent = validation.validateIntent(value);\n\t\tconst validatedIO = validation.validateIO(channels);\n\t\treturn await this.diagnostics.run(intent, /** Establish task correlation before queueing creation. */ () => this.mutate(intent, /** Own submission staging and descriptor cleanup for this one attempt. */ async () => {\n\t\t\tlet stage: MutationStage = 'before-submission';\n\t\t\tlet opened: io.OpenIO | undefined;\n\t\t\ttry {\n\t\t\t\tthis.assertOpen();\n\t\t\t\tif (this.attempted.has(intent.id)) throw new errors.TaskError('START_REJECTED', 'This client has already submitted the intention.', { reason: 'intent-already-submitted', mutationOutcome: 'not-submitted' });\n\t\t\t\tconst inherited = await this.transport.readEnvironment();\n\t\t\t\tthis.assertOpen();\n\t\t\t\topened = io.openIO(validatedIO);\n\t\t\t\tconst mapped = systemd.creationProperties(intent, opened, inherited);\n\t\t\t\tthis.assertOpen();\n\t\t\t\tthis.attempted.add(intent.id);\n\t\t\t\tstage = 'submitted';\n\t\t\t\tthis.diagnostics.emit('start.submitted');\n\t\t\t\tconst jobPath = await this.transport.start(intent.unitName, mapped.task, intent.retentionUnitName, mapped.retention);\n\t\t\t\tstage = 'accepted';\n\t\t\t\tthis.diagnostics.emit('start.accepted');\n\t\t\t\tthis.hub.notify(intent.unitName);\n\t\t\t\treturn Object.freeze({ outcome: 'accepted', identity: validation.identityOnly(intent), manager: this.manager, jobPath });\n\t\t\t} catch (error) {\n\t\t\t\tconst reported = mutationError(error, 'start', intent, stage);\n\t\t\t\tthis.diagnostics.emit('start.error', reported.code);\n\t\t\t\tthrow reported;\n\t\t\t} finally { opened?.close(); }\n\t\t}));\n\t}\n\n\t/** Read existing evidence without treating absence as permission for another start. */\n\tasync lookup(value: types.TaskIntent | types.TaskReference): Promise<types.LookupResult> {\n\t\tconst target = validation.validateTarget(value);\n\t\treturn await this.diagnostics.run(target, /** Keep lookup diagnostics in the requested task scope. */ () => this.lookupInternal(target));\n\t}\n\n\t/** Observe an exact reference; missing units and manager errors remain distinct categories. */\n\tasync inspect(value: types.TaskReference): Promise<types.TaskSnapshot> {\n\t\tconst reference = validation.validateReference(value);\n\t\treturn await this.diagnostics.run(reference, /** Inspect evidence in the exact reference correlation scope. */ async () => {\n\t\t\tconst found = await this.lookupInternal(reference);\n\t\t\tif (found.status !== 'found') throw new errors.TaskError('RESULT_UNAVAILABLE', 'The referenced task result is unavailable.', { reason: found.status === 'not-found' ? 'unit-not-found' : 'task-unit-missing', taskId: reference.id });\n\t\t\treturn found.snapshot;\n\t\t});\n\t}\n\n\t/** Subscribe before reading, then pin newly observed IDs while waiting on an intention. */\n\tprivate async waitInternal(target: types.TaskIntent | types.TaskReference, control: waiting.WaitControl): Promise<types.TaskSnapshot> {\n\t\tcontrol.check();\n\t\tthis.assertOpen();\n\t\tconst watch = this.hub.watch(target.unitName);\n\t\tlet mainInvocation: string | null = null;\n\t\tlet retentionInvocation: string | null = null;\n\t\ttry {\n\t\t\tfor (;;) {\n\t\t\t\tcontrol.check();\n\t\t\t\tconst generation = watch.version();\n\t\t\t\tconst found = await control.race(this.lookupInternal(target));\n\t\t\t\tif (found.status !== 'found') throw new errors.TaskError('RESULT_UNAVAILABLE', 'The task result is no longer available.', { reason: found.status === 'not-found' ? 'unit-not-found' : 'task-unit-missing', taskId: target.id });\n\t\t\t\tconst captured = found.reference;\n\t\t\t\tif ((mainInvocation !== null && captured.invocationId !== mainInvocation) || (retentionInvocation !== null && captured.retentionInvocationId !== retentionInvocation)) throw new errors.TaskError('IDENTITY_CONFLICT', 'The task identity changed while waiting.', { reason: 'invocation-mismatch', taskId: target.id });\n\t\t\t\tmainInvocation = captured.invocationId;\n\t\t\t\tretentionInvocation = captured.retentionInvocationId;\n\t\t\t\tif (found.snapshot.managerTerminal) {\n\t\t\t\t\tthis.diagnostics.emit(found.snapshot.cleanup === 'complete' ? 'wait.completed' : 'wait.cleanup-incomplete');\n\t\t\t\t\treturn found.snapshot;\n\t\t\t\t}\n\t\t\t\tawait control.race(watch.next(generation));\n\t\t\t}\n\t\t} finally { watch.close(); }\n\t}\n\n\t/** Local abort and timeout leave the task, other waiters, and manager timers untouched. */\n\tasync wait(value: types.TaskIntent | types.TaskReference, options: types.WaitOptions = {}): Promise<types.TaskSnapshot> {\n\t\tconst target = validation.validateTarget(value);\n\t\tconst validated = validation.validateWaitOptions(options);\n\t\treturn await this.diagnostics.run(target, /** Own independent cancellation and diagnostics for this waiter. */ async () => {\n\t\t\tconst control = new waiting.WaitControl(validated);\n\t\t\ttry { return await this.waitInternal(target, control); }\n\t\t\tcatch (error) {\n\t\t\t\tif (error instanceof errors.TaskError) this.diagnostics.emit('wait.error', error.code);\n\t\t\t\tthrow error;\n\t\t\t} finally { control.dispose(); }\n\t\t});\n\t}\n\n\t/** Receipt acceptance survives cancellation; an in-flight unacknowledged stop remains unknown. */\n\tasync stop(value: types.TaskReference, options: types.StopOptions = {}): Promise<types.StopReceipt> {\n\t\tconst reference = validation.validateReference(value);\n\t\tconst validated = validation.validateWaitOptions(options, true);\n\t\treturn await this.diagnostics.run(reference, /** Preserve stop delivery evidence through local cancellation. */ async () => {\n\t\t\tconst control = new waiting.WaitControl(validated);\n\t\t\tlet stage: MutationStage = 'before-submission';\n\t\t\ttry {\n\t\t\t\tcontrol.check();\n\t\t\t\treturn await control.race(this.mutate(reference, /** Serialize stop validation and submission for this task. */ async () => {\n\t\t\t\t\tcontrol.check();\n\t\t\t\t\tconst found = await control.race(this.lookupInternal(reference));\n\t\t\t\t\tif (found.status !== 'found') throw new errors.TaskError('RESULT_UNAVAILABLE', 'The task to stop is unavailable.', { reason: 'unit-not-found' });\n\t\t\t\t\tif (found.snapshot.phase === 'completed') return { outcome: 'already-completed', reference, jobPath: null, completion: found.snapshot };\n\t\t\t\t\tcontrol.check();\n\t\t\t\t\tstage = 'submitted';\n\t\t\t\t\tconst jobPath = await control.race(this.transport.stop(reference.unitName));\n\t\t\t\t\tstage = 'accepted';\n\t\t\t\t\tthis.diagnostics.emit('stop.accepted');\n\t\t\t\t\tthis.hub.notify(reference.unitName);\n\t\t\t\t\tconst completion = validated.wait ? await this.waitInternal(reference, control) : null;\n\t\t\t\t\treturn { outcome: 'accepted', reference, jobPath, completion };\n\t\t\t\t}));\n\t\t\t} catch (error) {\n\t\t\t\tconst reported = mutationError(error, 'stop', reference, stage);\n\t\t\t\tthis.diagnostics.emit('stop.error', reported.code);\n\t\t\t\tthrow reported;\n\t\t\t} finally { control.dispose(); }\n\t\t});\n\t}\n\n\t/** Refuse to clear live state, including pending jobs and incomplete cgroup cleanup. */\n\tprivate async assertReleasable(reference: types.TaskReference, pair: systemd.UnitPair): Promise<void> {\n\t\tif (!pair.task) return;\n\t\tconst state = await systemd.snapshot(reference, this.manager, pair);\n\t\tif (state.phase !== 'completed') throw new errors.TaskError('TASK_RUNNING', 'A task can be released only after confirmed cleanup.', { reason: 'task-not-completed', taskId: reference.id });\n\t}\n\n\t/** Return true only for an acknowledged reset; explicit concurrent absence is an idempotent no-op. */\n\tprivate async resetOwnFailed(name: string): Promise<boolean> {\n\t\ttry { await this.transport.resetFailed(name); return true; }\n\t\tcatch (error) { if (!isAbsence(error)) throw error; return false; }\n\t}\n\n\t/** Remove retention only after both identities and task cleanup have been checked. */\n\tasync release(value: types.TaskReference, options: types.ReleaseOptions = {}): Promise<types.ReleaseReceipt> {\n\t\tconst reference = validation.validateReference(value);\n\t\tconst validated = validation.validateWaitOptions(options);\n\t\treturn await this.diagnostics.run(reference, /** Bound release observation without extending manager retention indefinitely. */ async () => {\n\t\t\tconst control = new waiting.WaitControl({ ...validated, timeoutMs: validated.timeoutMs ?? defaultReleaseTimeoutMs });\n\t\t\tlet stage: MutationStage = 'before-submission';\n\t\t\tlet acceptedCleanupMutations = 0;\n\t\t\ttry {\n\t\t\t\treturn await control.race(this.mutate(reference, /** Serialize ownership checks and retention removal for this task. */ async () => {\n\t\t\t\t\tcontrol.check();\n\t\t\t\t\tlet pair = await control.race(this.checkedPair(reference));\n\t\t\t\t\tif (!pair.task && !pair.retention) return { released: true, alreadyReleased: true, collected: true };\n\t\t\t\t\tawait control.race(this.assertReleasable(reference, pair));\n\t\t\t\t\tif (pair.task?.properties.ActiveState === 'failed') {\n\t\t\t\t\t\tcontrol.check();\n\t\t\t\t\t\tconst previousStage = stage;\n\t\t\t\t\t\tstage = 'submitted';\n\t\t\t\t\t\tif (await control.race(this.resetOwnFailed(reference.unitName))) {\n\t\t\t\t\t\t\tacceptedCleanupMutations++;\n\t\t\t\t\t\t\tstage = 'accepted';\n\t\t\t\t\t\t} else stage = previousStage;\n\t\t\t\t\t}\n\t\t\t\t\tpair = await control.race(this.checkedPair(reference));\n\t\t\t\t\tawait control.race(this.assertReleasable(reference, pair));\n\t\t\t\t\tif (pair.retention?.properties.ActiveState === 'failed') {\n\t\t\t\t\t\tcontrol.check();\n\t\t\t\t\t\tconst previousStage = stage;\n\t\t\t\t\t\tstage = 'submitted';\n\t\t\t\t\t\tif (await control.race(this.resetOwnFailed(reference.retentionUnitName))) {\n\t\t\t\t\t\t\tacceptedCleanupMutations++;\n\t\t\t\t\t\t\tstage = 'accepted';\n\t\t\t\t\t\t} else stage = previousStage;\n\t\t\t\t\t}\n\t\t\t\t\tpair = await control.race(this.checkedPair(reference));\n\t\t\t\t\tawait control.race(this.assertReleasable(reference, pair));\n\t\t\t\t\tif (pair.retention) {\n\t\t\t\t\t\tcontrol.check();\n\t\t\t\t\t\tconst previousStage = stage;\n\t\t\t\t\t\tstage = 'submitted';\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait control.race(this.transport.stop(reference.retentionUnitName));\n\t\t\t\t\t\t\tacceptedCleanupMutations++;\n\t\t\t\t\t\t\tstage = 'accepted';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (error) { if (!isAbsence(error)) throw error; stage = previousStage; }\n\t\t\t\t\t}\n\t\t\t\t\tconst watch = this.hub.watch(reference.unitName);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor (;;) {\n\t\t\t\t\t\t\tconst generation = watch.version();\n\t\t\t\t\t\t\tpair = await control.race(this.checkedPair(reference));\n\t\t\t\t\t\t\tawait control.race(this.assertReleasable(reference, pair));\n\t\t\t\t\t\t\tif (!pair.retention || (systemd.managerTerminal(pair.retention) && pair.retention.properties.ActiveState !== 'failed')) {\n\t\t\t\t\t\t\t\tthis.diagnostics.emit('release.completed');\n\t\t\t\t\t\t\t\tthis.hub.notify(reference.unitName);\n\t\t\t\t\t\t\t\treturn { released: true, alreadyReleased: false, collected: !pair.task && !pair.retention };\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tawait control.race(watch.next(generation));\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally { watch.close(); }\n\t\t\t\t}));\n\t\t\t} catch (error) {\n\t\t\t\tconst reported = releaseError(error, reference, stage, acceptedCleanupMutations);\n\t\t\t\tthis.diagnostics.emit('release.error', reported.code);\n\t\t\t\tthrow reported;\n\t\t\t} finally { control.dispose(); }\n\t\t});\n\t}\n\n\t/** Tear down local resources immediately, without waiting for task output EOF or process exit. */\n\tasync disconnect(): Promise<void> {\n\t\tif (this.closed) return;\n\t\tthis.closed = true;\n\t\tthis.transport.close();\n\t\tthis.unsubscribe();\n\t\tthis.hub.dispose();\n\t\tthis.reads.clear();\n\t\tthis.attempted.clear();\n\t\tthis.diagnostics.emit('connection.disconnected');\n\t\tthis.diagnostics.dispose();\n\t}\n}\n\n/** Connect explicitly to the local user manager; package import has no connection side effects. */\nexport async function connect(options: types.ConnectOptions = {}): Promise<types.TaskClient> {\n\tconst validated = validation.validateConnectOptions(options);\n\tconst sink = new diagnostics.Diagnostics(crypto.randomUUID(), validated.onDiagnostic);\n\ttry {\n\t\tawait systemd.assertRetentionAvailable();\n\t\tconst adapter = await transport.DbusTransport.open(validated.requestTimeoutMs);\n\t\tconst client = new SystemdTaskClient(adapter, sink);\n\t\tsink.emit('connection.connected');\n\t\treturn client;\n\t} catch (error) {\n\t\tif (error instanceof errors.TaskError) sink.emit('connection.error', error.code);\n\t\tsink.dispose();\n\t\tthrow error;\n\t}\n}\n","import * as asyncHooks from 'node:async_hooks';\nimport type * as types from './types';\n\n/** One context-aware sink per client, isolated across concurrent asynchronous task flows. */\nexport class Diagnostics {\n\t/** Each operation inherits its own immutable identity context. */\n\tprivate readonly storage = new asyncHooks.AsyncLocalStorage<types.DiagnosticEvent['context']>();\n\t/** Connection context applies to events outside a task operation. */\n\tprivate readonly base: types.DiagnosticEvent['context'];\n\t/** The application controls delivery; the library never adds console output. */\n\tprivate readonly sink: types.ConnectOptions['onDiagnostic'];\n\t/** Pending asynchronous scopes retain correlation until their terminal callbacks finish. */\n\tprivate activeRuns = 0;\n\t/** Defer AsyncLocalStorage teardown until disconnected operations have reported their errors. */\n\tprivate disposeRequested = false;\n\n\t/** Bind all future events to the same connection scope and application sink. */\n\tconstructor(connectionId: string, sink?: types.ConnectOptions['onDiagnostic']) {\n\t\tthis.base = Object.freeze({ connection: Object.freeze({ id: connectionId }) });\n\t\tthis.sink = sink;\n\t}\n\n\t/** Establish task context once at the public operation boundary. */\n\tasync run<T>(identity: types.TaskIdentity, action: () => Promise<T>): Promise<T> {\n\t\tconst context = Object.freeze({ ...this.base, task: Object.freeze({ id: identity.id, unitName: identity.unitName }) });\n\t\tthis.activeRuns++;\n\t\ttry { return await this.storage.run(context, action); }\n\t\tfinally {\n\t\t\tthis.activeRuns--;\n\t\t\tif (this.disposeRequested && this.activeRuns === 0) this.storage.disable();\n\t\t}\n\t}\n\n\t/** Emit only predefined metadata, isolating application sink errors from task outcomes. */\n\temit(event: string, code?: types.ErrorCode): void {\n\t\tif (!this.sink) return;\n\t\tconst entry = Object.freeze({ event, context: this.storage.getStore() ?? this.base, ...(code === undefined ? {} : { code }) });\n\t\ttry {\n\t\t\tvoid Promise.resolve(this.sink(entry)).catch(/** Consume asynchronous observer failures without delaying task settlement. */ () => {});\n\t\t} catch { /* Observability must not change a mutation's outcome. */ }\n\t}\n\n\t/** Stop tracking local scopes after the client has disconnected. */\n\tdispose(): void {\n\t\tthis.disposeRequested = true;\n\t\tif (this.activeRuns === 0) this.storage.disable();\n\t}\n}\n","import * as util from 'node:util';\nimport type * as types from './types';\n\n/** A recoverable API error with stable categories and redacted default formatting. */\nexport class TaskError extends Error {\n\t/** Stable category used by applications instead of parsing human-readable messages. */\n\treadonly code: types.ErrorCode;\n\t/** Safe delivery and identity metadata; never contains a command specification. */\n\treadonly details: types.ErrorDetails;\n\n\t/** Preserve the original cause for explicit access while keeping default output redacted. */\n\tconstructor(code: types.ErrorCode, message: string, details: types.ErrorDetails = {}, cause?: unknown) {\n\t\tsuper(message, cause === undefined ? undefined : { cause });\n\t\tthis.name = 'TaskError';\n\t\tthis.code = code;\n\t\tthis.details = Object.freeze({ ...details });\n\t}\n\n\t/** Serialization deliberately excludes raw causes, stack contents, and request payloads. */\n\ttoJSON(): {\n\t\t/** Stable error class name for serialized consumers. */\n\t\tname: string;\n\t\t/** Public recovery category. */\n\t\tcode: types.ErrorCode;\n\t\t/** Redacted explanation safe for default logs. */\n\t\tmessage: string;\n\t\t/** Safe delivery evidence without raw causes. */\n\t\tdetails: types.ErrorDetails;\n\t} {\n\t\treturn { name: this.name, code: this.code, message: this.message, details: this.details };\n\t}\n\n\t/** Console and util.inspect must not expand a transport cause containing request data. */\n\t[util.inspect.custom](): string {\n\t\treturn `${this.name} [${this.code}]: ${this.message}`;\n\t}\n}\n\n/** Extract an OS or transport category without copying its potentially sensitive message. */\nexport function errorCode(error: unknown): string | undefined {\n\tif (typeof error !== 'object' || error === null) return undefined;\n\tif ('code' in error && typeof error.code === 'string') return error.code;\n\treturn undefined;\n}\n\n/** Identify an explicit manager or bus error reply separately from local disconnection. */\nexport function dbusErrorName(error: unknown): string | undefined {\n\tif (typeof error !== 'object' || error === null) return undefined;\n\tif ('type' in error && typeof error.type === 'string') return error.type;\n\treturn undefined;\n}\n","import * as fs from 'node:fs';\nimport * as errors from './errors';\nimport type * as types from './types';\n\n/** Prepared descriptors stay alive until the transport settles the creation request. */\nexport interface OpenIO {\n\t/** Null maps to systemd's explicit null input or output mode. */\n\treadonly descriptors: Readonly<{\n\t\t/** Input source descriptor, or manager null mode. */\n\t\tstdin: number | null;\n\t\t/** Binary output descriptor, or manager null mode. */\n\t\tstdout: number | null;\n\t\t/** Binary error descriptor, or manager null mode. */\n\t\tstderr: number | null;\n\t}>;\n\t/** Idempotently close owned descriptors only; borrowed descriptors remain untouched. */\n\tclose(): void;\n}\n\n/** Compare actual opened objects, including aliases and hard links, without path guessing. */\nfunction fileIdentity(fd: number): string {\n\tconst stat = fs.fstatSync(fd, { bigint: true });\n\treturn `${stat.dev}:${stat.ino}`;\n}\n\n/** Open all files before truncation, coalescing shared output destinations into one offset. */\nexport function openIO(io: types.TaskIO): OpenIO {\n\tconst owned = new Set<number>();\n\tconst outputs = new Map<string, {\n\t\t/** First owned opening of this output inode. */\n\t\tfd: number;\n\t\t/** Aliases must agree with this original opening policy. */\n\t\tmode: 'append' | 'truncate';\n\t}>();\n\tlet inputIdentity: string | null = null;\n\n\t/** Remove ownership before closing so descriptor-number reuse cannot cause a second close. */\n\tfunction close(): void {\n\t\tfor (const fd of owned) {\n\t\t\towned.delete(fd);\n\t\t\ttry { fs.closeSync(fd); } catch { /* Never retry close: the descriptor number may already have been reused. */ }\n\t\t}\n\t}\n\n\t/** Open or borrow one channel without yet truncating any destination. */\n\tfunction open(channel: types.TaskInput | types.TaskOutput, output: boolean): number | null {\n\t\tif (channel.type === 'null') return null;\n\t\tif (channel.type === 'fd') {\n\t\t\tfs.fstatSync(channel.fd);\n\t\t\tif (!output) inputIdentity = fileIdentity(channel.fd);\n\t\t\treturn channel.fd;\n\t\t}\n\t\tconst mode = 'mode' in channel ? channel.mode : null;\n\t\tconst flags = fs.constants.O_NONBLOCK | (output ? fs.constants.O_WRONLY | fs.constants.O_CREAT | (mode === 'append' ? fs.constants.O_APPEND : 0) : fs.constants.O_RDONLY);\n\t\tconst fd = fs.openSync(channel.path, flags, 0o666);\n\t\towned.add(fd);\n\t\tif (!fs.fstatSync(fd).isFile()) throw new errors.TaskError('INVALID_INPUT', 'File I/O requires a regular file; use a borrowed descriptor for other objects.', { mutationOutcome: 'not-submitted', reason: 'non-regular-file' });\n\t\tconst identity = fileIdentity(fd);\n\t\tif (!output) {\n\t\t\tinputIdentity = identity;\n\t\t\treturn fd;\n\t\t}\n\t\tif (mode === null) throw new errors.TaskError('INVALID_INPUT', 'Output requires an explicit file mode.', { mutationOutcome: 'not-submitted', reason: 'output-mode' });\n\t\tconst previous = outputs.get(identity);\n\t\tif (previous) {\n\t\t\tif (previous.mode !== mode) throw new errors.TaskError('INVALID_INPUT', 'Shared output destinations have conflicting modes.', { mutationOutcome: 'not-submitted', reason: 'conflicting-output-modes' });\n\t\t\towned.delete(fd);\n\t\t\tfs.closeSync(fd);\n\t\t\treturn previous.fd;\n\t\t}\n\t\toutputs.set(identity, { fd, mode });\n\t\treturn fd;\n\t}\n\n\ttry {\n\t\t// Validate borrowed numbers before an owned open can accidentally reuse a closed number.\n\t\tfor (const channel of [io.stdin, io.stdout, io.stderr]) if (channel.type === 'fd') fs.fstatSync(channel.fd);\n\t\tconst stdin = open(io.stdin, false);\n\t\tconst stdout = open(io.stdout, true);\n\t\tconst stderr = open(io.stderr, true);\n\t\tfor (const [identity, output] of outputs) {\n\t\t\tif (output.mode === 'truncate' && identity === inputIdentity) throw new errors.TaskError('INVALID_INPUT', 'Truncating the input file is not supported.', { mutationOutcome: 'not-submitted', reason: 'input-output-alias' });\n\t\t}\n\t\tfor (const output of outputs.values()) if (output.mode === 'truncate') fs.ftruncateSync(output.fd, 0);\n\t\treturn { descriptors: Object.freeze({ stdin, stdout, stderr }), close };\n\t} catch (error) {\n\t\tclose();\n\t\tif (error instanceof errors.TaskError) throw error;\n\t\tconst code = errors.errorCode(error);\n\t\tthrow new errors.TaskError(code === 'EACCES' || code === 'EPERM' ? 'PERMISSION_DENIED' : 'INVALID_INPUT', 'Standard I/O could not be opened.', { mutationOutcome: 'not-submitted', reason: 'io-open-failed' }, error);\n\t}\n}\n","import * as fs from 'node:fs/promises';\nimport * as path from 'node:path';\nimport * as errors from './errors';\nimport * as validation from './validation';\nimport type * as io from './io';\nimport type * as transport from './transport';\nimport type * as types from './types';\n\n/** A single read of each member of the task's owned retention pair. */\nexport interface UnitPair {\n\t/** Main service, or explicit absence from a reachable manager. */\n\treadonly task: transport.RawUnit | null;\n\t/** Auxiliary retention service, or explicit absence. */\n\treadonly retention: transport.RawUnit | null;\n}\n\n/** The minimal property set needed to create the task and its retention dependency. */\nexport interface CreationProperties {\n\t/** User command, lifecycle policy, and explicit I/O. */\n\treadonly task: readonly transport.Property[];\n\t/** Process-free active record after its initialization command exits. */\n\treadonly retention: readonly transport.Property[];\n}\n\n/** systemd uses uint64 all-ones to represent an explicitly infinite timeout. */\nconst infinityUsec = 18_446_744_073_709_551_615n;\n/** V1 runs a single standard utility to activate retention without a resident helper. */\nconst retentionExecutable = '/usr/bin/true';\n\n/** Reject a missing internal prerequisite before any task can receive a misleading start receipt. */\nexport async function assertRetentionAvailable(): Promise<void> {\n\ttry {\n\t\tconst executable = await fs.stat(retentionExecutable);\n\t\tif (!executable.isFile()) throw new Error('The retention executable is not a regular file.');\n\t\tawait fs.access(retentionExecutable, fs.constants.X_OK);\n\t} catch (error) {\n\t\tthrow new errors.TaskError('UNSUPPORTED_ENVIRONMENT', 'The retention service requires an executable /usr/bin/true.', { reason: 'retention-executable-unavailable' }, error);\n\t}\n}\n\n/** Keep wire signatures and values adjacent at the systemd mapping boundary. */\nfunction property(name: string, signature: string, value: unknown): transport.Property {\n\treturn { name, signature, value };\n}\n\n/** Translate a validated intention; the existing D-Bus transport handles the wire protocol. */\nexport function creationProperties(intent: types.TaskIntent, opened: io.OpenIO, managerEnvironment: readonly string[]): CreationProperties {\n\tconst spec = intent.spec;\n\tconst unset = [...new Set(managerEnvironment.map(/** Extract inherited variable names for explicit removal. */ entry => entry.slice(0, entry.indexOf('='))))].filter(/** Preserve only inherited names explicitly supplied by the caller. */ name => !Object.hasOwn(spec.env, name));\n\tconst task = [\n\t\tproperty('Description', 's', validation.marker(intent, 'task')),\n\t\tproperty('Type', 's', 'exec'), property('ExitType', 's', 'main'),\n\t\tproperty('Restart', 's', 'no'), property('RemainAfterExit', 'b', false),\n\t\tproperty('KillMode', 's', 'control-group'), property('KillSignal', 'i', 15),\n\t\tproperty('FinalKillSignal', 'i', 9), property('SendSIGKILL', 'b', true),\n\t\tproperty('TimeoutStopUSec', 't', BigInt(spec.stopGraceMs) * 1000n),\n\t\tproperty('TimeoutStopFailureMode', 's', 'kill'),\n\t\tproperty('RuntimeMaxUSec', 't', spec.runtimeLimitMs === null ? infinityUsec : BigInt(spec.runtimeLimitMs) * 1000n),\n\t\tproperty('WorkingDirectory', 's', spec.cwd),\n\t\tproperty('Environment', 'as', Object.entries(spec.env).map(/** Encode explicit environment entries in systemd assignment form. */ ([name, value]) => `${name}=${value}`)),\n\t\tproperty('UnsetEnvironment', 'as', unset),\n\t\tproperty('ExecStartEx', 'a(sasas)', [[spec.executable, [spec.executable, ...spec.argv], ['no-env-expand']]]),\n\t\tproperty('Requires', 'as', [intent.retentionUnitName]), property('After', 'as', [intent.retentionUnitName]),\n\t];\n\tfor (const [channel, descriptor] of Object.entries(opened.descriptors)) {\n\t\tconst name = channel === 'stdin' ? 'StandardInput' : channel === 'stdout' ? 'StandardOutput' : 'StandardError';\n\t\ttask.push(descriptor === null ? property(name, 's', 'null') : property(`${name}FileDescriptor`, 'h', descriptor));\n\t}\n\tfor (const resource of spec.systemdProperties ?? []) task.push(property(resource.name, resource.signature, BigInt(resource.value)));\n\tconst retention = [\n\t\tproperty('Description', 's', validation.marker(intent, 'retention')),\n\t\tproperty('Type', 's', 'oneshot'), property('RemainAfterExit', 'b', true),\n\t\tproperty('Restart', 's', 'no'), property('StopWhenUnneeded', 'b', false),\n\t\tproperty('Before', 'as', [intent.unitName]),\n\t\tproperty('ExecStart', 'a(sasb)', [[retentionExecutable, [retentionExecutable], false]]),\n\t\tproperty('StandardInput', 's', 'null'), property('StandardOutput', 's', 'null'), property('StandardError', 's', 'null'),\n\t];\n\treturn { task, retention };\n}\n\n/** Refuse stale manager bindings before looking up or controlling a name. */\nexport function assertManager(expected: types.ManagerIdentity, actual: types.ManagerIdentity): void {\n\tfor (const key of ['scope', 'uid', 'machineId', 'bootId', 'busId', 'owner'] as const) {\n\t\tif (expected[key] !== actual[key]) throw new errors.TaskError('IDENTITY_CONFLICT', 'The reference belongs to a different manager.', { reason: 'manager-identity' });\n\t}\n}\n\n/** Read a required manager scalar, failing explicitly instead of inventing default evidence. */\nfunction string(properties: Readonly<Record<string, unknown>>, key: string): string {\n\tconst value = properties[key];\n\tif (typeof value !== 'string') throw new errors.TaskError('RESULT_UNAVAILABLE', 'Required manager evidence is unavailable.', { reason: 'invalid-manager-properties' });\n\treturn value;\n}\n\n/** Validate integer evidence before using it as an exit status, PID, or job identity. */\nfunction integer(properties: Readonly<Record<string, unknown>>, key: string): number {\n\tconst value = properties[key];\n\tif (typeof value !== 'number' || !Number.isSafeInteger(value) || value < 0) throw new errors.TaskError('RESULT_UNAVAILABLE', 'Required numeric manager evidence is unavailable.', { reason: 'invalid-manager-properties' });\n\treturn value;\n}\n\n/** Preserve exact uint64 timestamps in JSON-friendly decimal form. */\nfunction timestamp(properties: Readonly<Record<string, unknown>>, key: string): string {\n\tconst value = properties[key];\n\tif (typeof value === 'bigint' && value >= 0n) return value.toString();\n\tif (typeof value === 'number' && Number.isSafeInteger(value) && value >= 0) return String(value);\n\tthrow new errors.TaskError('RESULT_UNAVAILABLE', 'Required timestamp evidence is unavailable.', { reason: 'invalid-manager-properties' });\n}\n\n/** Normalize the manager's byte-array ID; absence never becomes an invented UUID. */\nexport function invocation(unit: transport.RawUnit | null): string | null {\n\tif (unit === null) return null;\n\tconst value = unit.properties.InvocationID;\n\tif (!(value instanceof Uint8Array) || (value.byteLength !== 0 && value.byteLength !== 16)) throw new errors.TaskError('RESULT_UNAVAILABLE', 'Invocation identity is unavailable.', { reason: 'invalid-invocation-id' });\n\treturn value.byteLength === 0 ? null : Buffer.from(value).toString('hex');\n}\n\n/** Confirm the recorded dependency relationship instead of trusting a service name alone. */\nfunction includes(properties: Readonly<Record<string, unknown>>, key: string, name: string): boolean {\n\tconst value = properties[key];\n\treturn Array.isArray(value) && value.includes(name);\n}\n\n/** Guard against adopting a colliding unit or a changed lifecycle policy. */\nexport function assertOwnership(identity: types.TaskIdentity, pair: UnitPair): void {\n\tconst main = pair.task?.properties;\n\tconst keeper = pair.retention?.properties;\n\tconst invalidMain = main && (main.Transient !== true || main.Description !== validation.marker(identity, 'task') || main.Type !== 'exec' || main.ExitType !== 'main' || main.Restart !== 'no' || main.KillMode !== 'control-group' || main.RemainAfterExit !== false || !includes(main, 'Requires', identity.retentionUnitName) || !includes(main, 'After', identity.retentionUnitName));\n\tconst invalidKeeper = keeper && (keeper.Transient !== true || keeper.Description !== validation.marker(identity, 'retention') || keeper.Type !== 'oneshot' || keeper.RemainAfterExit !== true || keeper.Restart !== 'no' || !includes(keeper, 'Before', identity.unitName));\n\tif (invalidMain || invalidKeeper) throw new errors.TaskError('IDENTITY_CONFLICT', 'The unit is not the expected owned task instance.', { reason: 'unit-ownership', taskId: identity.id });\n}\n\n/** Compare every known reference field exactly; null evidence is not permission to adopt a later run. */\nexport function assertReference(reference: types.TaskReference, pair: UnitPair): void {\n\tif ((pair.task && invocation(pair.task) !== reference.invocationId) || (pair.retention && invocation(pair.retention) !== reference.retentionInvocationId)) throw new errors.TaskError('IDENTITY_CONFLICT', 'The unit invocation no longer matches the reference.', { reason: 'invocation-mismatch', taskId: reference.id });\n}\n\n/** Build serializable instance evidence independently of the manager property payload. */\nexport function reference(identity: types.TaskIdentity, manager: types.ManagerIdentity, pair: UnitPair): types.TaskReference {\n\treturn Object.freeze({ ...validation.identityOnly(identity), manager, invocationId: invocation(pair.task), retentionInvocationId: invocation(pair.retention) });\n}\n\n/** A pending job prevents an inactive service from being classified as a finished task. */\nexport function jobId(unit: transport.RawUnit): number {\n\tconst value = unit.properties.Job;\n\tif (!Array.isArray(value) || typeof value[0] !== 'number' || !Number.isSafeInteger(value[0]) || value[0] < 0) throw new errors.TaskError('RESULT_UNAVAILABLE', 'The manager job state is unavailable.', { reason: 'invalid-job-state' });\n\treturn value[0];\n}\n\n/** Terminal manager state alone is insufficient; cgroup population is checked separately. */\nexport function managerTerminal(unit: transport.RawUnit): boolean {\n\treturn ['inactive', 'failed'].includes(string(unit.properties, 'ActiveState')) && jobId(unit) === 0;\n}\n\n/** Read hierarchical population, avoiding direct PID identity or a main-PID-only cleanup claim. */\nexport async function cgroupPopulation(controlGroup: string): Promise<boolean | null> {\n\tif (controlGroup === '') return false;\n\tif (!controlGroup.startsWith('/') || controlGroup.includes('\\0') || path.posix.normalize(controlGroup) !== controlGroup) throw new errors.TaskError('RESULT_UNAVAILABLE', 'The manager returned an invalid cgroup path.', { reason: 'invalid-cgroup-path' });\n\ttry {\n\t\tconst contents = await fs.readFile(`/sys/fs/cgroup${controlGroup}/cgroup.events`, 'utf8');\n\t\tconst value = contents.match(/^populated ([01])$/m)?.[1];\n\t\treturn value === undefined ? null : value === '1';\n\t} catch (error) {\n\t\tif (errors.errorCode(error) === 'ENOENT') return false;\n\t\treturn null;\n\t}\n}\n\n/** Derive truthful status from manager evidence, retaining ambiguity in cause and cleanup. */\nexport async function snapshot(identity: types.TaskIdentity, manager: types.ManagerIdentity, pair: UnitPair, readPopulation: (controlGroup: string) => Promise<boolean | null> = cgroupPopulation): Promise<types.TaskSnapshot> {\n\tif (!pair.task) throw new errors.TaskError('RESULT_UNAVAILABLE', 'The task unit was not found.', { reason: 'unit-not-found', taskId: identity.id });\n\tconst properties = pair.task.properties;\n\tconst captured = reference(identity, manager, pair);\n\tconst terminal = managerTerminal(pair.task);\n\tconst activeState = string(properties, 'ActiveState');\n\tconst controlGroup = string(properties, 'ControlGroup');\n\tconst populated = terminal ? await readPopulation(controlGroup) : null;\n\tconst cleanup: types.CleanupState = !terminal ? 'pending' : populated === false ? 'complete' : populated === true ? 'incomplete' : 'unknown';\n\tconst code = integer(properties, 'ExecMainCode');\n\tconst status = integer(properties, 'ExecMainStatus');\n\tconst enteredActive = timestamp(properties, 'ActiveEnterTimestampMonotonic');\n\tconst started = timestamp(properties, 'ExecMainStartTimestampMonotonic');\n\tconst evidence: types.TaskEvidence = Object.freeze({\n\t\tactiveState, subState: string(properties, 'SubState'), systemdResult: string(properties, 'Result'),\n\t\texecMainCode: code, execMainStatus: status,\n\t\texecMainStartUsec: started, execMainExitUsec: timestamp(properties, 'ExecMainExitTimestampMonotonic'),\n\t\tactiveEnterUsec: enteredActive, jobId: jobId(pair.task), controlGroup, cgroupPopulated: populated,\n\t});\n\tlet result: types.TaskResult | null = null;\n\tif (code !== 0 || terminal) {\n\t\tconst kind: types.TaskResult['kind'] = code === 1 ? (enteredActive === '0' ? 'execution-failed' : 'exited') : code === 2 || code === 3 ? 'signaled' : started === '0' && enteredActive === '0' ? 'not-executed' : 'unknown';\n\t\tresult = Object.freeze({ kind, exitCode: code === 1 ? status : null, signal: code === 2 || code === 3 ? status : null, execution: enteredActive === '0' ? 'not-confirmed' : 'confirmed', systemdResult: evidence.systemdResult, cleanup });\n\t}\n\tconst phase: types.TaskSnapshot['phase'] = terminal && cleanup === 'complete' ? 'completed' : terminal || activeState === 'deactivating' || code !== 0 ? 'cleaning' : activeState === 'active' ? 'running' : 'starting';\n\treturn Object.freeze({ reference: captured, identity: captured.invocationId && captured.retentionInvocationId ? 'complete' : 'incomplete', phase, mainPid: integer(properties, 'MainPID'), managerTerminal: terminal, cleanup, result, evidence });\n}\n","import * as crypto from 'node:crypto';\nimport * as path from 'node:path';\nimport * as errors from './errors';\nimport type * as types from './types';\n\n/** Canonical task namespace; a caller cannot supply arbitrary service names. */\nconst unitPrefix = 'pf-systemd-tasks-';\n/** Maximum JavaScript timer delay without Node's overflow-to-one-millisecond behavior. */\nexport const maximumLocalTimeoutMs = 2_147_483_647;\n/** Upper bound that preserves exact millisecond input and uint64 microsecond conversion. */\nconst maximumDurationMs = Number.MAX_SAFE_INTEGER;\n/** Exact keys of serialized ownership evidence, shared by intentions and references. */\nconst identityKeys = ['version', 'id', 'unitName', 'retentionUnitName', 'managerScope', 'fingerprint'];\n\n/** Report validation errors without copying the offending value into the error. */\nfunction invalid(reason: string): never {\n\tthrow new errors.TaskError('INVALID_INPUT', 'The task request is invalid.', { reason, mutationOutcome: 'not-submitted' });\n}\n\n/** Require a plain data object, including JSON objects with a null prototype. */\nfunction record(value: unknown, reason: string): Record<string, unknown> {\n\tif (value === null || typeof value !== 'object' || Array.isArray(value)) invalid(reason);\n\tconst prototype: unknown = Object.getPrototypeOf(value);\n\tif (prototype !== Object.prototype && prototype !== null) invalid(reason);\n\treturn value as Record<string, unknown>;\n}\n\n/** Catch misspellings and unsupported extensions before any I/O or D-Bus mutation. */\nfunction keys(value: Record<string, unknown>, allowed: readonly string[], reason: string): void {\n\tif (Object.keys(value).some(/** Reject keys outside the explicit contract allowlist. */ key => !allowed.includes(key)) || Object.getOwnPropertySymbols(value).length > 0) invalid(reason);\n}\n\n/** D-Bus strings cannot contain NUL; all other characters remain literal. */\nfunction string(value: unknown, reason: string): string {\n\tif (typeof value !== 'string' || value.includes('\\0')) invalid(reason);\n\tfor (const character of value) {\n\t\tconst code = character.codePointAt(0)!;\n\t\tif (code >= 0xd800 && code <= 0xdfff) invalid(reason);\n\t}\n\treturn value;\n}\n\n/** Validate absolute Linux paths without changing symlink-sensitive path semantics. */\nfunction absolutePath(value: unknown, reason: string): string {\n\tconst result = string(value, reason);\n\tif (!path.posix.isAbsolute(result)) invalid(reason);\n\treturn result;\n}\n\n/** Keep zero distinct from unlimited: zero timers are rejected instead of disabling limits. */\nfunction duration(value: unknown, maximum: number, reason: string): number {\n\tif (typeof value !== 'number' || !Number.isSafeInteger(value) || value <= 0 || value > maximum) invalid(reason);\n\treturn value;\n}\n\n/** Normalize and copy public command data into a deterministic JSON representation. */\nexport function validateSpec(value: unknown): types.TaskSpec {\n\tconst source = record(value, 'spec-object');\n\tkeys(source, ['executable', 'argv', 'cwd', 'env', 'runtimeLimitMs', 'stopGraceMs', 'systemdProperties'], 'spec-keys');\n\tconst executable = absolutePath(source.executable, 'executable-path');\n\tconst cwd = absolutePath(source.cwd, 'cwd-path');\n\tif (!Array.isArray(source.argv)) invalid('argv-array');\n\tconst argv = Object.freeze(source.argv.map(/** Validate literal arguments without shell expansion or coercion. */ value => string(value, 'argv-string')));\n\tconst environment = record(source.env, 'environment-object');\n\tconst env: Record<string, string> = Object.create(null) as Record<string, string>;\n\tfor (const key of Object.keys(environment).sort()) {\n\t\tif (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key)) invalid('environment-name');\n\t\tenv[key] = string(environment[key], 'environment-value');\n\t}\n\tconst runtimeLimitMs = source.runtimeLimitMs === null ? null : duration(source.runtimeLimitMs, maximumDurationMs, 'runtime-limit');\n\tconst stopGraceMs = duration(source.stopGraceMs, maximumDurationMs, 'stop-grace');\n\tconst properties: types.SystemdProperty[] = [];\n\tif (source.systemdProperties !== undefined) {\n\t\tif (!Array.isArray(source.systemdProperties)) invalid('properties-array');\n\t\tconst names = new Set<string>();\n\t\tfor (const value of source.systemdProperties) {\n\t\t\tconst property = record(value, 'property-object');\n\t\t\tkeys(property, ['name', 'signature', 'value'], 'property-keys');\n\t\t\tif (property.name !== 'CPUWeight' && property.name !== 'IOWeight') invalid('reserved-or-unsupported-property');\n\t\t\tif (property.signature !== 't') invalid('property-signature');\n\t\t\tif (names.has(property.name)) invalid('duplicate-property');\n\t\t\tnames.add(property.name);\n\t\t\tproperties.push(Object.freeze({ name: property.name, signature: 't', value: duration(property.value, 10000, 'property-value') }));\n\t\t}\n\t}\n\tproperties.sort(/** Canonicalize resource ordering for a stable specification fingerprint. */ (left, right) => left.name.localeCompare(right.name));\n\treturn Object.freeze({ executable, argv, cwd, env: Object.freeze(env), runtimeLimitMs, stopGraceMs, systemdProperties: Object.freeze(properties) });\n}\n\n/** Hash normalized command data without exposing that data in unit descriptions. */\nfunction fingerprint(spec: types.TaskSpec): string {\n\treturn crypto.createHash('sha256').update(JSON.stringify(spec)).digest('hex');\n}\n\n/** Prepare an intention locally; no connection, file opening, or process start occurs. */\nexport function prepare(spec: types.TaskSpec): types.TaskIntent {\n\tconst normalized = validateSpec(spec);\n\tconst id = crypto.randomUUID();\n\treturn Object.freeze({ version: 1, id, unitName: `${unitPrefix}${id}.service`, retentionUnitName: `${unitPrefix}${id}-retention.service`, managerScope: 'user', fingerprint: fingerprint(normalized), spec: normalized });\n}\n\n/** Validate derived names and a versioned identity without trusting serialized input. */\nfunction identity(source: Record<string, unknown>): types.TaskIdentity {\n\tif (source.version !== 1 || source.managerScope !== 'user') invalid('identity-version-or-scope');\n\tconst id = string(source.id, 'identity-id');\n\tif (!/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/.test(id)) invalid('identity-id');\n\tif (source.unitName !== `${unitPrefix}${id}.service` || source.retentionUnitName !== `${unitPrefix}${id}-retention.service`) invalid('identity-unit-name');\n\tconst digest = string(source.fingerprint, 'identity-fingerprint');\n\tif (!/^[0-9a-f]{64}$/.test(digest)) invalid('identity-fingerprint');\n\treturn Object.freeze({ version: 1, id, unitName: source.unitName as string, retentionUnitName: source.retentionUnitName as string, managerScope: 'user', fingerprint: digest });\n}\n\n/** Revalidate stored intentions and detect changes to their command configuration. */\nexport function validateIntent(value: unknown): types.TaskIntent {\n\tconst source = record(value, 'intent-object');\n\tkeys(source, [...identityKeys, 'spec'], 'intent-keys');\n\tconst validatedIdentity = identity(source);\n\tconst spec = validateSpec(source.spec);\n\tif (fingerprint(spec) !== validatedIdentity.fingerprint) invalid('intent-fingerprint-mismatch');\n\treturn Object.freeze({ ...validatedIdentity, spec });\n}\n\n/** Null explicitly records missing invocation evidence; present IDs have exact wire length. */\nfunction invocationId(value: unknown): string | null {\n\tif (value === null) return null;\n\tconst result = string(value, 'invocation-id');\n\tif (!/^[0-9a-f]{32}$/.test(result)) invalid('invocation-id');\n\treturn result;\n}\n\n/** Validate the persisted manager binding without contacting another manager. */\nfunction managerIdentity(value: unknown): types.ManagerIdentity {\n\tconst source = record(value, 'manager-identity');\n\tkeys(source, ['scope', 'uid', 'machineId', 'bootId', 'busId', 'owner'], 'manager-keys');\n\tif (source.scope !== 'user' || typeof source.uid !== 'number' || !Number.isSafeInteger(source.uid) || source.uid < 0) invalid('manager-scope-or-uid');\n\tconst machineId = string(source.machineId, 'machine-id');\n\tconst busId = string(source.busId, 'bus-id');\n\tconst bootId = string(source.bootId, 'boot-id');\n\tconst owner = string(source.owner, 'manager-owner');\n\tif (!/^[0-9a-f]{32}$/.test(machineId) || !/^[0-9a-f]{32}$/.test(busId)) invalid('manager-identifiers');\n\tif (!/^[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}$/.test(bootId) || !/^:[0-9]+\\.[0-9]+$/.test(owner)) invalid('manager-identifiers');\n\treturn Object.freeze({ scope: 'user', uid: source.uid, machineId, bootId, busId, owner });\n}\n\n/** Reference validation preserves absent evidence rather than silently upgrading it. */\nexport function validateReference(value: unknown): types.TaskReference {\n\tconst source = record(value, 'reference-object');\n\tkeys(source, [...identityKeys, 'manager', 'invocationId', 'retentionInvocationId'], 'reference-keys');\n\treturn Object.freeze({ ...identity(source), manager: managerIdentity(source.manager), invocationId: invocationId(source.invocationId), retentionInvocationId: invocationId(source.retentionInvocationId) });\n}\n\n/** Distinguish an intention from an exact observed reference at API boundaries. */\nexport function validateTarget(value: unknown): types.TaskIntent | types.TaskReference {\n\tconst source = record(value, 'target-object');\n\treturn 'spec' in source ? validateIntent(source) : validateReference(source);\n}\n\n/** Copy only ownership fields when returning receipts or diagnostics. */\nexport function identityOnly(value: types.TaskIdentity): types.TaskIdentity {\n\treturn Object.freeze({ version: value.version, id: value.id, unitName: value.unitName, retentionUnitName: value.retentionUnitName, managerScope: value.managerScope, fingerprint: value.fingerprint });\n}\n\n/** Produce a non-secret ownership marker shared by creation and later lookup. */\nexport function marker(value: types.TaskIdentity, role: 'task' | 'retention'): string {\n\treturn `@primafuture/systemd-tasks:v1:${value.id}:${value.fingerprint}:${role}`;\n}\n\n/** Validate one explicit standard descriptor without opening files. */\nfunction channel(value: unknown, output: boolean): types.TaskInput | types.TaskOutput {\n\tconst source = record(value, 'io-channel');\n\tif (source.type === 'null') {\n\t\tkeys(source, ['type'], 'null-io-keys');\n\t\treturn Object.freeze({ type: 'null' });\n\t}\n\tif (source.type === 'fd') {\n\t\tkeys(source, ['type', 'fd'], 'fd-io-keys');\n\t\tif (typeof source.fd !== 'number' || !Number.isInteger(source.fd) || source.fd < 0 || source.fd > 2_147_483_647) invalid('file-descriptor');\n\t\treturn Object.freeze({ type: 'fd', fd: source.fd });\n\t}\n\tif (source.type === 'file') {\n\t\tkeys(source, output ? ['type', 'path', 'mode'] : ['type', 'path'], 'file-io-keys');\n\t\tconst filePath = absolutePath(source.path, 'io-file-path');\n\t\tif (!output) return Object.freeze({ type: 'file', path: filePath });\n\t\tif (source.mode !== 'append' && source.mode !== 'truncate') invalid('output-mode');\n\t\treturn Object.freeze({ type: 'file', path: filePath, mode: source.mode });\n\t}\n\treturn invalid('io-type');\n}\n\n/** Validate every channel, including obvious shared-path conflicts, before any I/O. */\nexport function validateIO(value: unknown): types.TaskIO {\n\tconst source = record(value, 'io-object');\n\tkeys(source, ['stdin', 'stdout', 'stderr'], 'io-keys');\n\tconst stdin = channel(source.stdin, false) as types.TaskInput;\n\tconst stdout = channel(source.stdout, true) as types.TaskOutput;\n\tconst stderr = channel(source.stderr, true) as types.TaskOutput;\n\tif (stdout.type === 'file' && stderr.type === 'file' && stdout.path === stderr.path && stdout.mode !== stderr.mode) invalid('conflicting-output-modes');\n\treturn Object.freeze({ stdin, stdout, stderr });\n}\n\n/** Validate local cancellation before subscription or mutation starts. */\nexport function validateWaitOptions(value: unknown = {}, stop = false): types.StopOptions {\n\tconst source = record(value, 'wait-options');\n\tkeys(source, stop ? ['signal', 'timeoutMs', 'wait'] : ['signal', 'timeoutMs'], 'wait-option-keys');\n\tif (source.signal !== undefined && !(source.signal instanceof AbortSignal)) invalid('abort-signal');\n\tif (source.wait !== undefined && typeof source.wait !== 'boolean') invalid('stop-wait');\n\treturn {\n\t\t...(source.signal === undefined ? {} : { signal: source.signal as AbortSignal }),\n\t\t...(source.timeoutMs === undefined ? {} : { timeoutMs: duration(source.timeoutMs, maximumLocalTimeoutMs, 'wait-timeout') }),\n\t\t...(source.wait === undefined ? {} : { wait: source.wait as boolean }),\n\t};\n}\n\n/** Validate connection controls without contacting systemd or loading native sockets. */\nexport function validateConnectOptions(value: unknown = {}): Required<Pick<types.ConnectOptions, 'requestTimeoutMs'>> & Pick<types.ConnectOptions, 'onDiagnostic'> {\n\tconst source = record(value, 'connect-options');\n\tkeys(source, ['requestTimeoutMs', 'onDiagnostic'], 'connect-option-keys');\n\tif (source.onDiagnostic !== undefined && typeof source.onDiagnostic !== 'function') invalid('diagnostic-sink');\n\treturn {\n\t\trequestTimeoutMs: source.requestTimeoutMs === undefined ? 5000 : duration(source.requestTimeoutMs, maximumLocalTimeoutMs, 'request-timeout'),\n\t\t...(source.onDiagnostic === undefined ? {} : { onDiagnostic: source.onDiagnostic as (event: types.DiagnosticEvent) => void }),\n\t};\n}\n","import * as dbus from 'dbus-next';\nimport * as fs from 'node:fs/promises';\nimport * as errors from './errors';\nimport type * as types from './types';\n\n/** A property description shared by the mapping and the concrete D-Bus adapter. */\nexport interface Property {\n\t/** Exact systemd property name. */\n\treadonly name: string;\n\t/** D-Bus signature, converted to a transport Variant only inside this module. */\n\treadonly signature: string;\n\t/** Validated wire value; not part of the public API. */\n\treadonly value: unknown;\n}\n\n/** Raw service properties stay internal; public snapshots expose a small diagnostic subset. */\nexport interface RawUnit {\n\t/** Unwrapped manager properties, which must be validated before classification. */\n\treadonly properties: Readonly<Record<string, unknown>>;\n}\n\n/** Narrow adapter seam for deterministic failures and races, not a generic task backend. */\nexport interface Transport {\n\t/** Identity fixed during connection and never silently updated. */\n\treadonly identity: types.ManagerIdentity;\n\t/** Reject a closed or failed connection before an operation can submit a request. */\n\tassertOpen(): void;\n\t/** Read a service; only an explicit no-such-unit reply maps to null. */\n\treadUnit(name: string): Promise<RawUnit | null>;\n\t/** Read inherited environment entries without changing manager configuration. */\n\treadEnvironment(): Promise<readonly string[]>;\n\t/** Submit one task/retention creation transaction with collision mode fail. */\n\tstart(name: string, properties: readonly Property[], retentionName: string, retentionProperties: readonly Property[]): Promise<string>;\n\t/** Stop can replace a queued start job, but can never start or restart a service. */\n\tstop(name: string): Promise<string>;\n\t/** Clear a completed failed state so normal garbage collection can proceed. */\n\tresetFailed(name: string): Promise<void>;\n\t/** Subscribe to relevant notifications; an undefined name means connection-wide invalidation. */\n\tonChange(listener: (unitName?: string) => void): () => void;\n\t/** Destroy the local socket and pending observation resources only. */\n\tclose(): void;\n}\n\n/** Pinned dbus-next internals needed for safe descriptor and pending-call ownership. */\ninterface NativeBusInternals {\n\t/** The native stream's destroy method closes immediately instead of waiting for peer EOF. */\n\treadonly _connection: {\n\t\t/** Descriptor-capable stream created by the existing transport implementation. */\n\t\treadonly stream: {\n\t\t\t/** Negotiated Unix FD capability, updated by the transport handshake. */\n\t\t\treadonly supportsUnixFd?: boolean;\n\t\t\t/** Destroy local native socket resources, without sending a systemd stop. */\n\t\t\tdestroy(): void;\n\t\t\t/** Observe native stream EOF and errors. */\n\t\t\ton(event: string, listener: (...args: unknown[]) => void): void;\n\t\t};\n\t};\n\t/** Delete abandoned reply closures; upstream does not reject them on disconnect. */\n\treadonly _methodReturnHandlers: Record<number, unknown>;\n}\n\n/** Upstream accepts this option at runtime but omits it from SessionBusOptions declarations. */\ninterface DescriptorBusOptions extends dbus.SessionBusOptions {\n\t/** Require negotiation of SCM_RIGHTS-backed D-Bus descriptors. */\n\treadonly negotiateUnixFd: boolean;\n}\n\n/** Pending request ownership is separate from the upstream promise's lifetime. */\ninterface PendingRequest {\n\t/** Describes the delivery semantics of this request. */\n\treadonly operation: string;\n\t/** Mutations whose reply is lost must report an unknown outcome. */\n\treadonly mutation: boolean;\n\t/** Local timeout cleared on every settlement path. */\n\treadonly timer: ReturnType<typeof setTimeout>;\n\t/** Reject the adapter's promise independently of the transport's abandoned promise. */\n\treadonly reject: (error: unknown) => void;\n}\n\n/** Address of the concrete local manager API, not a user-supplied general D-Bus service. */\nconst managerPath = '/org/freedesktop/systemd1';\n/** Stable manager interface whose methods implement task lifecycle operations. */\nconst managerInterface = 'org.freedesktop.systemd1.Manager';\n/** Bus daemon endpoint used for identity and signal subscriptions. */\nconst busPath = '/org/freedesktop/DBus';\n/** Bus errors that cannot prove non-delivery of a mutation. */\nconst uncertainReplies = new Set(['org.freedesktop.DBus.Error.NoReply', 'org.freedesktop.DBus.Error.Timeout', 'org.freedesktop.DBus.Error.Disconnected']);\n/** Explicit absence replies, never inferred from a timeout or vanished manager. */\nconst absenceReplies = new Set(['org.freedesktop.systemd1.NoSuchUnit', 'org.freedesktop.DBus.Error.UnknownObject']);\n\n/** Native installation failures are permanent environment limits, not manager outages. */\nfunction connectionFailure(error: unknown): errors.TaskError {\n\tconst code = errors.errorCode(error);\n\tif (code === 'ERR_FDX_PLATFORM' || code === 'ERR_FDX_ABI' || code === 'ERR_FDX_BINARY_MISSING') {\n\t\treturn new errors.TaskError('UNSUPPORTED_ENVIRONMENT', 'The installed Unix FD transport does not support this environment.', { reason: code }, error);\n\t}\n\treturn new errors.TaskError('MANAGER_UNAVAILABLE', 'The user manager connection failed.', {}, error);\n}\n\n/** Read one scalar from the untrusted shape of a D-Bus method return. */\nfunction scalar(reply: readonly unknown[]): string {\n\tif (typeof reply[0] !== 'string') throw new errors.TaskError('RESULT_UNAVAILABLE', 'The manager returned an unexpected response.', { reason: 'invalid-manager-response' });\n\treturn reply[0];\n}\n\n/** Convert a property dictionary without leaking transport types into the core. */\nfunction properties(reply: readonly unknown[]): Readonly<Record<string, unknown>> {\n\tconst source = reply[0];\n\tif (typeof source !== 'object' || source === null || Array.isArray(source)) throw new errors.TaskError('RESULT_UNAVAILABLE', 'The manager returned invalid properties.', { reason: 'invalid-manager-response' });\n\tconst result: Record<string, unknown> = Object.create(null) as Record<string, unknown>;\n\tfor (const [key, value] of Object.entries(source)) {\n\t\tif (!(value instanceof dbus.Variant)) throw new errors.TaskError('RESULT_UNAVAILABLE', 'The manager returned an invalid property value.', { reason: 'invalid-manager-response' });\n\t\tresult[key] = value.value as unknown;\n\t}\n\treturn result;\n}\n\n/** Convert mapping values using the existing transport's marshaller. */\nfunction wireProperties(values: readonly Property[]): [string, dbus.Variant][] {\n\treturn values.map(/** Convert one validated property to the existing transport representation. */ value => [value.name, new dbus.Variant(value.signature, value.value)]);\n}\n\n/** Bound, identity-aware connection to the local systemd user manager. */\nexport class DbusTransport implements Transport {\n\t/** Default manager reply deadline; unrelated to task runtime. */\n\treadonly requestTimeoutMs: number;\n\t/** Underlying existing D-Bus implementation, loaded without connecting at module import. */\n\tprivate readonly bus: dbus.MessageBus;\n\t/** Documented pinned internal hooks; all access is confined to this adapter. */\n\tprivate readonly internals: NativeBusInternals;\n\t/** Outstanding calls rejected together when the connection becomes unusable. */\n\tprivate readonly pending = new Map<number, PendingRequest>();\n\t/** Shared source of state invalidations for lifecycle observers. */\n\tprivate readonly listeners = new Set<(unitName?: string) => void>();\n\t/** A connection never reconnects or changes identity behind the caller's back. */\n\tprivate failure: errors.TaskError | undefined;\n\t/** Unique manager bus name, populated before binding task operations. */\n\tprivate owner: string | undefined;\n\t/** Bound environment identity, available only after successful explicit connection. */\n\tprivate boundIdentity: types.ManagerIdentity | undefined;\n\n\t/** Create only the socket; capability and identity checks are completed by open(). */\n\tprivate constructor(requestTimeoutMs: number) {\n\t\tthis.requestTimeoutMs = requestTimeoutMs;\n\t\tconst options: DescriptorBusOptions = { busAddress: `unix:path=/run/user/${process.getuid!()}/bus`, negotiateUnixFd: true, authMethods: ['EXTERNAL'] };\n\t\tthis.bus = dbus.sessionBus(options);\n\t\t// dbus-next 0.10.2 has no public immediate-close or pending-call cancellation API.\n\t\tthis.internals = this.bus as unknown as NativeBusInternals;\n\t\tthis.bus.on('error', /** Preserve native compatibility errors while invalidating pending operations. */ error => this.fail(connectionFailure(error)));\n\t\tthis.internals._connection.stream.on('end', /** Treat native stream EOF as manager unavailability. */ () => this.fail(new errors.TaskError('MANAGER_UNAVAILABLE', 'The user manager connection ended.')));\n\t\tthis.internals._connection.stream.on('close', /** Wake callers when the native connection closes. */ () => this.fail(new errors.TaskError('MANAGER_UNAVAILABLE', 'The user manager connection closed.')));\n\t\tthis.bus.on('message', /** Reconcile unit notifications and manager-owner changes. */ (message: dbus.Message) => this.handleMessage(message));\n\t}\n\n\t/** Verify the concrete local environment without provisioning services or capabilities. */\n\tstatic async open(requestTimeoutMs: number): Promise<DbusTransport> {\n\t\tconst [major = 0, minor = 0] = process.versions.node.split('.').map(Number);\n\t\tif (process.platform !== 'linux' || major < 24 || (major === 24 && minor < 13) || !process.getuid) throw new errors.TaskError('UNSUPPORTED_ENVIRONMENT', 'Linux and Node 24.13.0 or newer are required.');\n\t\ttry { await fs.access('/sys/fs/cgroup/cgroup.controllers'); }\n\t\tcatch (error) { throw new errors.TaskError('UNSUPPORTED_ENVIRONMENT', 'A cgroup v2 hierarchy is required.', {}, error); }\n\t\tlet transport: DbusTransport | undefined;\n\t\ttry {\n\t\t\ttransport = new DbusTransport(requestTimeoutMs);\n\t\t\tawait transport.invoke('AddMatch', 's', [\"type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg0='org.freedesktop.systemd1'\"], false, 'org.freedesktop.DBus', busPath, 'org.freedesktop.DBus');\n\t\t\ttransport.owner = scalar(await transport.invoke('GetNameOwner', 's', ['org.freedesktop.systemd1'], false, 'org.freedesktop.DBus', busPath, 'org.freedesktop.DBus'));\n\t\t\tif (!transport.internals._connection.stream.supportsUnixFd) throw new errors.TaskError('UNSUPPORTED_ENVIRONMENT', 'The user bus transport cannot pass Unix file descriptors.', { reason: 'unix-fd-unavailable' });\n\t\t\tconst managerProperties = properties(await transport.invoke('GetAll', 's', [managerInterface], false, transport.owner, managerPath, 'org.freedesktop.DBus.Properties'));\n\t\t\tif (typeof managerProperties.Version !== 'string' || Number.parseInt(managerProperties.Version, 10) < 257 || !/^\\d/.test(managerProperties.Version)) throw new errors.TaskError('UNSUPPORTED_ENVIRONMENT', 'Systemd 257 or newer is required.', { reason: 'systemd-version' });\n\t\t\tconst machineId = scalar(await transport.invoke('GetMachineId', '', [], false, transport.owner, managerPath, 'org.freedesktop.DBus.Peer'));\n\t\t\tconst busId = scalar(await transport.invoke('GetId', '', [], false, 'org.freedesktop.DBus', busPath, 'org.freedesktop.DBus'));\n\t\t\tconst bootId = (await fs.readFile('/proc/sys/kernel/random/boot_id', 'utf8')).trim();\n\t\t\ttransport.boundIdentity = Object.freeze({ scope: 'user', uid: process.getuid(), machineId, bootId, busId, owner: transport.owner });\n\t\t\tawait transport.invoke('AddMatch', 's', [`type='signal',sender='${transport.owner}',path_namespace='${managerPath}'`], false, 'org.freedesktop.DBus', busPath, 'org.freedesktop.DBus');\n\t\t\tawait transport.invoke('Subscribe', '', [], false);\n\t\t\tconst currentOwner = scalar(await transport.invoke('GetNameOwner', 's', ['org.freedesktop.systemd1'], false, 'org.freedesktop.DBus', busPath, 'org.freedesktop.DBus'));\n\t\t\tif (currentOwner !== transport.owner) throw new errors.TaskError('MANAGER_UNAVAILABLE', 'The user manager changed during connection.');\n\t\t\treturn transport;\n\t\t} catch (error) {\n\t\t\ttransport?.close();\n\t\t\tif (error instanceof errors.TaskError) throw error;\n\t\t\tthrow new errors.TaskError('MANAGER_UNAVAILABLE', 'The user manager is unavailable.', {}, error);\n\t\t}\n\t}\n\n\t/** Return the frozen manager identity rather than a mutable transport object. */\n\tget identity(): types.ManagerIdentity {\n\t\tif (!this.boundIdentity) throw new errors.TaskError('MANAGER_UNAVAILABLE', 'The manager identity has not been established.');\n\t\treturn this.boundIdentity;\n\t}\n\n\t/** Closed connections never fall back to a fresh bus or another process runner. */\n\tassertOpen(): void {\n\t\tif (this.failure) throw this.failure;\n\t}\n\n\t/** Wake observers without letting a callback disrupt the transport's message dispatch. */\n\tprivate notify(unitName?: string): void {\n\t\tfor (const listener of this.listeners) {\n\t\t\ttry { listener(unitName); } catch { /* Periodic reconciliation also covers a failed observer callback. */ }\n\t\t}\n\t}\n\n\t/** Process only manager identity changes and relevant unit/job/property notifications. */\n\tprivate handleMessage(message: dbus.Message): void {\n\t\tif (message.type !== dbus.MessageType.SIGNAL) return;\n\t\tif (message.sender === 'org.freedesktop.DBus' && message.member === 'NameOwnerChanged' && message.body[0] === 'org.freedesktop.systemd1' && this.owner && message.body[2] !== this.owner) {\n\t\t\tthis.fail(new errors.TaskError('MANAGER_UNAVAILABLE', 'The user manager identity changed.'));\n\t\t\treturn;\n\t\t}\n\t\tif (message.sender !== this.owner) return;\n\t\tlet name: unknown;\n\t\tif (message.member === 'UnitNew' || message.member === 'UnitRemoved') name = message.body[0];\n\t\telse if (message.member === 'JobRemoved' || message.member === 'JobNew') name = message.body[2];\n\t\telse if (message.interface === 'org.freedesktop.DBus.Properties' && message.member === 'PropertiesChanged') {\n\t\t\tconst encoded = message.path?.match(/^\\/org\\/freedesktop\\/systemd1\\/unit\\/(.+)$/)?.[1];\n\t\t\tif (encoded) name = encoded.replace(/_([0-9a-f]{2})/g, /** Decode systemd object-path escaping for notification routing. */ (_match, hex: string) => String.fromCharCode(Number.parseInt(hex, 16)));\n\t\t}\n\t\tif (typeof name === 'string') {\n\t\t\tthis.notify(name);\n\t\t\tif (name.endsWith('-retention.service')) this.notify(name.replace(/-retention\\.service$/, '.service'));\n\t\t}\n\t}\n\n\t/** Close queued native writes before callers can release descriptors from pending requests. */\n\tprivate fail(failure: errors.TaskError): void {\n\t\tif (this.failure) return;\n\t\tthis.failure = failure;\n\t\ttry { this.internals._connection.stream.destroy(); } catch { /* Local resource teardown is best-effort and never retried by descriptor number. */ }\n\t\tfor (const [serial, request] of this.pending) {\n\t\t\tclearTimeout(request.timer);\n\t\t\tdelete this.internals._methodReturnHandlers[serial];\n\t\t\trequest.reject(request.mutation\n\t\t\t\t? new errors.TaskError('UNKNOWN_MUTATION_OUTCOME', 'The manager mutation outcome is unknown.', { operation: request.operation, mutationOutcome: 'unknown' }, failure)\n\t\t\t\t: failure);\n\t\t}\n\t\tthis.pending.clear();\n\t\tthis.notify();\n\t}\n\n\t/** Distinguish a confirmed error reply from an uncertain delivery or connection failure. */\n\tprivate translate(error: unknown, operation: string, mutation: boolean): errors.TaskError {\n\t\tconst name = errors.dbusErrorName(error);\n\t\tif (name && !uncertainReplies.has(name)) {\n\t\t\tconst denied = name === 'org.freedesktop.DBus.Error.AccessDenied' || name === 'org.freedesktop.DBus.Error.AuthFailed' || name === 'org.freedesktop.systemd1.AccessDenied' || name === 'org.freedesktop.DBus.Error.InteractiveAuthorizationRequired';\n\t\t\tconst unavailable = name === 'org.freedesktop.DBus.Error.NameHasNoOwner' || name === 'org.freedesktop.DBus.Error.ServiceUnknown';\n\t\t\treturn new errors.TaskError(denied ? 'PERMISSION_DENIED' : unavailable ? 'MANAGER_UNAVAILABLE' : mutation && operation === 'StartTransientUnit' ? 'START_REJECTED' : 'RESULT_UNAVAILABLE', 'The manager rejected the request.', { operation, ...(mutation ? { mutationOutcome: 'rejected' as const } : {}), reason: name }, error);\n\t\t}\n\t\treturn new errors.TaskError(mutation ? 'UNKNOWN_MUTATION_OUTCOME' : 'MANAGER_UNAVAILABLE', mutation ? 'The manager mutation outcome is unknown.' : 'The manager request failed.', { operation, ...(mutation ? { mutationOutcome: 'unknown' as const } : {}) }, error);\n\t}\n\n\t/** Send exactly once, with an adapter-owned timeout and cleanup of abandoned reply handlers. */\n\tprivate async invoke(member: string, signature: string, body: unknown[], mutation: boolean, destination = this.owner ?? 'org.freedesktop.systemd1', objectPath = managerPath, iface = managerInterface): Promise<readonly unknown[]> {\n\t\ttry { this.assertOpen(); }\n\t\tcatch (error) {\n\t\t\tif (mutation && error instanceof errors.TaskError) throw new errors.TaskError(error.code, error.message, { operation: member, mutationOutcome: 'not-submitted' }, error);\n\t\t\tthrow error;\n\t\t}\n\t\tconst message = new dbus.Message({ destination, path: objectPath, interface: iface, member, signature, body });\n\t\tmessage.serial = this.bus.newSerial();\n\t\tconst serial = message.serial;\n\t\treturn await new Promise<readonly unknown[]>(/** Own the deadline and settlement of exactly one D-Bus request. */ (resolve, reject) => {\n\t\t\tconst timer = setTimeout(/** Invalidate the connection before releasing possibly queued descriptors. */ () => this.fail(new errors.TaskError('MANAGER_UNAVAILABLE', 'The manager request deadline expired.', { operation: member, reason: 'request-timeout' })), this.requestTimeoutMs);\n\t\t\tthis.pending.set(serial, { operation: member, mutation, timer, reject });\n\t\t\tvoid this.bus.call(message).then(/** Settle only a still-owned request and discard late replies. */ reply => {\n\t\t\t\tif (!this.pending.delete(serial)) return;\n\t\t\t\tclearTimeout(timer);\n\t\t\t\tif (reply) resolve(reply.body as unknown[]);\n\t\t\t\telse reject(new errors.TaskError(mutation ? 'UNKNOWN_MUTATION_OUTCOME' : 'RESULT_UNAVAILABLE', 'The manager returned no reply.', { operation: member, ...(mutation ? { mutationOutcome: 'unknown' as const } : {}) }));\n\t\t\t}, /** Translate delivery evidence and clean abandoned upstream reply handlers. */ error => {\n\t\t\t\tif (!this.pending.delete(serial)) return;\n\t\t\t\tclearTimeout(timer);\n\t\t\t\tdelete this.internals._methodReturnHandlers[serial];\n\t\t\t\tconst translated = this.translate(error, member, mutation);\n\t\t\t\tif (translated.code === 'MANAGER_UNAVAILABLE' || translated.code === 'UNKNOWN_MUTATION_OUTCOME') this.fail(new errors.TaskError('MANAGER_UNAVAILABLE', 'The manager connection is no longer reliable.', {}, error));\n\t\t\t\treject(translated);\n\t\t\t});\n\t\t});\n\t}\n\n\t/** A missing object and a disconnected manager have deliberately different outcomes. */\n\tasync readUnit(name: string): Promise<RawUnit | null> {\n\t\ttry {\n\t\t\tconst objectPath = scalar(await this.invoke('GetUnit', 's', [name], false));\n\t\t\tconst values = properties(await this.invoke('GetAll', 's', [''], false, this.owner, objectPath, 'org.freedesktop.DBus.Properties'));\n\t\t\tif (values.LoadState === 'not-found' && values.Transient !== true) return null;\n\t\t\treturn { properties: values };\n\t\t} catch (error) {\n\t\t\tif (error instanceof errors.TaskError && error.details.reason && absenceReplies.has(error.details.reason)) return null;\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\t/** Read inherited names immediately before start, keeping manager configuration untouched. */\n\tasync readEnvironment(): Promise<readonly string[]> {\n\t\tconst values = properties(await this.invoke('GetAll', 's', [managerInterface], false, this.owner, managerPath, 'org.freedesktop.DBus.Properties'));\n\t\tif (!Array.isArray(values.Environment) || !values.Environment.every(/** Reject malformed manager environment entries before property mapping. */ value => typeof value === 'string')) throw new errors.TaskError('RESULT_UNAVAILABLE', 'The manager environment is unavailable.');\n\t\treturn values.Environment as string[];\n\t}\n\n\t/** Job mode fail prevents collision-driven replacement; the user command is never retried. */\n\tasync start(name: string, values: readonly Property[], retentionName: string, retentionValues: readonly Property[]): Promise<string> {\n\t\treturn scalar(await this.invoke('StartTransientUnit', 'ssa(sv)a(sa(sv))', [name, 'fail', wireProperties(values), [[retentionName, wireProperties(retentionValues)]]], true));\n\t}\n\n\t/** Replace only stop/start jobs as needed to stop; this never invokes a restart operation. */\n\tasync stop(name: string): Promise<string> {\n\t\treturn scalar(await this.invoke('StopUnit', 'ss', [name, 'replace'], true));\n\t}\n\n\t/** Reset a completed own record; callers must verify ownership before reaching this method. */\n\tasync resetFailed(name: string): Promise<void> {\n\t\tawait this.invoke('ResetFailedUnit', 's', [name], true);\n\t}\n\n\t/** Multiple waiters share one signal subscription and remove their own listeners only. */\n\tonChange(listener: (unitName?: string) => void): () => void {\n\t\tthis.listeners.add(listener);\n\t\treturn /** Remove only this observer from shared adapter notifications. */ () => { this.listeners.delete(listener); };\n\t}\n\n\t/** Disconnect is entirely local and deliberately does not call StopUnit. */\n\tclose(): void {\n\t\tthis.fail(new errors.TaskError('DISCONNECTED', 'The task client is disconnected.'));\n\t\tthis.listeners.clear();\n\t}\n}\n","import * as errors from './errors';\nimport type * as types from './types';\n\n/** A local deadline and abort scope that never cancels the underlying task or shared read. */\nexport class WaitControl {\n\t/** Internal cancellation combines the caller's abort with a local deadline. */\n\tprivate readonly controller = new AbortController();\n\t/** Local timer, absent for an explicitly unbounded wait. */\n\tprivate readonly timer: ReturnType<typeof setTimeout> | undefined;\n\t/** Caller signal whose listener must be removed at settlement. */\n\tprivate readonly external: AbortSignal | undefined;\n\t/** Captured listener identity allows deterministic cleanup. */\n\tprivate readonly onAbort: () => void;\n\n\t/** A timeout is an observation deadline, never a manager escalation timeout. */\n\tconstructor(options: types.WaitOptions) {\n\t\tthis.external = options.signal;\n\t\tthis.onAbort = /** Propagate caller cancellation into this local wait scope only. */ () => this.controller.abort(new errors.TaskError('WAIT_ABORTED', 'Local waiting was aborted.'));\n\t\tif (options.timeoutMs !== undefined) this.timer = setTimeout(/** Expire local observation without changing systemd execution timers. */ () => this.controller.abort(new errors.TaskError('WAIT_TIMEOUT', 'The local waiting deadline expired.')), options.timeoutMs);\n\t\tif (this.external?.aborted) this.onAbort();\n\t\telse this.external?.addEventListener('abort', this.onAbort, { once: true });\n\t}\n\n\t/** Refuse an already-cancelled operation before it can submit a mutation. */\n\tcheck(): void {\n\t\tif (this.controller.signal.aborted) throw this.controller.signal.reason;\n\t}\n\n\t/** Stop this caller's observation while leaving a shared request or server mutation intact. */\n\tasync race<T>(promise: Promise<T>): Promise<T> {\n\t\tif (this.controller.signal.aborted) {\n\t\t\tvoid promise.catch(/** Consume eventual settlement of work that outlives the cancelled caller. */ () => { /* The underlying shared read or mutation still owns its settlement. */ });\n\t\t\tthis.check();\n\t\t}\n\t\tconst signal = this.controller.signal;\n\t\tlet abort: (() => void) | undefined;\n\t\tconst cancelled = new Promise<never>(/** Bridge local cancellation into the current asynchronous observation. */ (_resolve, reject) => {\n\t\t\tabort = /** Reject with the original local cancellation category. */ () => reject(signal.reason);\n\t\t\tsignal.addEventListener('abort', abort, { once: true });\n\t\t});\n\t\ttry { return await Promise.race([promise, cancelled]); }\n\t\tfinally { if (abort) signal.removeEventListener('abort', abort); }\n\t}\n\n\t/** Remove every local timer and listener without touching a running task. */\n\tdispose(): void {\n\t\tclearTimeout(this.timer);\n\t\tthis.external?.removeEventListener('abort', this.onAbort);\n\t}\n}\n\n/** A subscription token closes the snapshot-to-signal race using a generation counter. */\nexport interface Watch {\n\t/** Current generation, sampled before reading a snapshot. */\n\tversion(): number;\n\t/** Resolve immediately when an event arrived during the preceding snapshot. */\n\tnext(version: number): Promise<void>;\n\t/** Detach this caller without affecting other observers. */\n\tclose(): void;\n}\n\n/** Internal shared watch state: one bounded reconciliation timer per observed task. */\ninterface WatchGroup {\n\t/** Monotonically increasing notification generation. */\n\tgeneration: number;\n\t/** Independent waiting callbacks sharing the same source events. */\n\treadonly callbacks: Set<() => void>;\n\t/** Number of live watch tokens, including callers currently reading. */\n\tusers: number;\n\t/** Periodic reconciliation covers missed or invalidated property notifications. */\n\treadonly timer: ReturnType<typeof setInterval>;\n}\n\n/** Share systemd notifications and low-frequency reconciliation across concurrent waiters. */\nexport class ObservationHub {\n\t/** Entries exist only while a caller is waiting on a unit. */\n\tprivate readonly groups = new Map<string, WatchGroup>();\n\n\t/** Wake one task, or every task after manager disconnection. */\n\tnotify(unitName?: string): void {\n\t\tfor (const [name, group] of this.groups) {\n\t\t\tif (unitName !== undefined && unitName !== name) continue;\n\t\t\tgroup.generation++;\n\t\t\tfor (const callback of [...group.callbacks]) callback();\n\t\t}\n\t}\n\n\t/** Subscribe before the first snapshot, then compare generations before sleeping. */\n\twatch(unitName: string): Watch {\n\t\tlet group = this.groups.get(unitName);\n\t\tif (!group) {\n\t\t\tgroup = { generation: 0, callbacks: new Set(), users: 0, timer: setInterval(/** Reconcile snapshots even if systemd notifications are missed. */ () => this.notify(unitName), 1000) };\n\t\t\tthis.groups.set(unitName, group);\n\t\t}\n\t\tconst state = group;\n\t\tstate.users++;\n\t\tlet closed = false;\n\t\tlet pending: (() => void) | undefined;\n\t\treturn {\n\t\t\t/** Capture notifications already observed by the shared source. */\n\t\t\tversion: () => state.generation,\n\t\t\t/** Retain only one callback per caller, never one callback per event. */\n\t\t\tnext: async version => {\n\t\t\t\tif (closed || version !== state.generation) return;\n\t\t\t\tawait new Promise<void>(/** Retain a single wake callback for this observer. */ resolve => {\n\t\t\t\t\tpending = /** Remove this wake callback before resolving the observer. */ () => {\n\t\t\t\t\t\tif (pending) state.callbacks.delete(pending);\n\t\t\t\t\t\tpending = undefined;\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t};\n\t\t\t\t\tstate.callbacks.add(pending);\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** Cancel one subscription and remove the group's timer after its last user. */\n\t\t\tclose: () => {\n\t\t\t\tif (closed) return;\n\t\t\t\tclosed = true;\n\t\t\t\tpending?.();\n\t\t\t\tstate.users--;\n\t\t\t\tif (state.users === 0) {\n\t\t\t\t\tclearInterval(state.timer);\n\t\t\t\t\tthis.groups.delete(unitName);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\t/** Wake pending callers and drop timers after the client is closed. */\n\tdispose(): void {\n\t\tthis.notify();\n\t\tfor (const group of this.groups.values()) clearInterval(group.timer);\n\t\tthis.groups.clear();\n\t}\n}\n","/** A deliberately small allowlist of properties that cannot replace task lifecycle policy. */\nexport interface SystemdProperty {\n\t/** The resource weight to pass to the transient service. */\n\treadonly name: 'CPUWeight' | 'IOWeight';\n\t/** The systemd D-Bus signature, independent of the transport implementation. */\n\treadonly signature: 't';\n\t/** An integer resource weight from 1 through 10000. */\n\treadonly value: number;\n}\n\n/** A command specification suitable for serialization before any attempt to execute it. */\nexport interface TaskSpec {\n\t/** Absolute executable path; no PATH lookup or shell is performed. */\n\treadonly executable: string;\n\t/** Literal arguments excluding argv[0], which is the executable path. */\n\treadonly argv: readonly string[];\n\t/** Absolute working directory, which must already exist at execution time. */\n\treadonly cwd: string;\n\t/** Explicit environment entries; systemd may add its own execution metadata. */\n\treadonly env: Readonly<Record<string, string>>;\n\t/** Positive integer milliseconds, or null to explicitly disable the runtime limit. */\n\treadonly runtimeLimitMs: number | null;\n\t/** Positive integer milliseconds before manager-owned SIGKILL escalation. */\n\treadonly stopGraceMs: number;\n\t/** Optional resource weights; all other low-level properties are reserved. */\n\treadonly systemdProperties?: readonly SystemdProperty[];\n}\n\n/** Common serializable ownership evidence, without environment or command arguments. */\nexport interface TaskIdentity {\n\t/** Serialization version understood by this library. */\n\treadonly version: 1;\n\t/** Random UUID generated before submission. */\n\treadonly id: string;\n\t/** Unique transient service name derived from the ID. */\n\treadonly unitName: string;\n\t/** Unique auxiliary service name derived from the same ID. */\n\treadonly retentionUnitName: string;\n\t/** V1 supports the local user manager only. */\n\treadonly managerScope: 'user';\n\t/** SHA-256 fingerprint of the normalized task specification. */\n\treadonly fingerprint: string;\n}\n\n/** A prepared intention; saving it does not imply that execution was attempted. */\nexport interface TaskIntent extends TaskIdentity {\n\t/** Execution configuration, potentially containing secrets; store accordingly. */\n\treadonly spec: TaskSpec;\n}\n\n/** Identity of the specific environment in which a task was observed. */\nexport interface ManagerIdentity {\n\t/** Manager privilege scope; system-manager references are not supported in V1. */\n\treadonly scope: 'user';\n\t/** Effective local UID whose user bus owns the task. */\n\treadonly uid: number;\n\t/** Machine identity reported by the manager's D-Bus peer. */\n\treadonly machineId: string;\n\t/** Local kernel boot identity, preventing cross-boot adoption. */\n\treadonly bootId: string;\n\t/** Unique identity of the user message bus. */\n\treadonly busId: string;\n\t/** Unique bus owner of org.freedesktop.systemd1 at connection time. */\n\treadonly owner: string;\n}\n\n/** An observed pair of unit instances; null IDs explicitly mean incomplete evidence. */\nexport interface TaskReference extends TaskIdentity {\n\t/** The manager in which the reference was obtained. */\n\treadonly manager: ManagerIdentity;\n\t/** Main service invocation, or null if no invocation was observed. */\n\treadonly invocationId: string | null;\n\t/** Auxiliary invocation, or null if it was absent or never invoked. */\n\treadonly retentionInvocationId: string | null;\n}\n\n/** Input from /dev/null, an existing file, or a caller-owned descriptor. */\nexport type TaskInput =\n\t| { /** Explicit EOF input. */ readonly type: 'null' }\n\t| { /** Open a file before submission. */ readonly type: 'file'; /** Absolute existing input path. */ readonly path: string }\n\t| { /** Borrow a descriptor without closing it. */ readonly type: 'fd'; /** Nonnegative Unix descriptor, held open until start settles. */ readonly fd: number };\n\n/** Output without decoding, in-memory capture, or automatic directory creation. */\nexport type TaskOutput =\n\t| { /** Explicitly discard output. */ readonly type: 'null' }\n\t| { /** Open an application-owned file before submission. */ readonly type: 'file'; /** Absolute output path. */ readonly path: string; /** Explicit append or truncate semantics. */ readonly mode: 'append' | 'truncate' }\n\t| { /** Borrow a descriptor without closing it. */ readonly type: 'fd'; /** Nonnegative Unix descriptor, held open until start settles. */ readonly fd: number };\n\n/** All standard descriptors are explicit and excluded from persistent task identities. */\nexport interface TaskIO {\n\t/** Input source; this library does not create an interactive terminal. */\n\treadonly stdin: TaskInput;\n\t/** Binary standard output destination. */\n\treadonly stdout: TaskOutput;\n\t/** Binary standard error destination. */\n\treadonly stderr: TaskOutput;\n}\n\n/** Explicit discard configuration for tasks whose output is not needed. */\nexport const nullIO: TaskIO = Object.freeze({\n\tstdin: Object.freeze({ type: 'null' as const }),\n\tstdout: Object.freeze({ type: 'null' as const }),\n\tstderr: Object.freeze({ type: 'null' as const }),\n});\n\n/** Whether the manager and cgroup provide evidence of finished descendant cleanup. */\nexport type CleanupState = 'pending' | 'complete' | 'incomplete' | 'unknown';\n\n/** Raw evidence retained by the specific service, with 64-bit values serialized as decimals. */\nexport interface TaskEvidence {\n\t/** Raw systemd Unit.ActiveState. */\n\treadonly activeState: string;\n\t/** Raw systemd Unit.SubState. */\n\treadonly subState: string;\n\t/** Raw systemd Service.Result, without inferred stop intent. */\n\treadonly systemdResult: string;\n\t/** CLD_* wait-status category reported by systemd. */\n\treadonly execMainCode: number;\n\t/** Exit code or signal number according to execMainCode. */\n\treadonly execMainStatus: number;\n\t/** Monotonic main-process start timestamp in microseconds; zero means absent. */\n\treadonly execMainStartUsec: string;\n\t/** Monotonic main-process exit timestamp in microseconds; zero means absent. */\n\treadonly execMainExitUsec: string;\n\t/** Retained active-entry evidence under Type=exec. */\n\treadonly activeEnterUsec: string;\n\t/** Current job ID, or zero when no job is pending. */\n\treadonly jobId: number;\n\t/** Manager-reported cgroup path, possibly empty after cleanup. */\n\treadonly controlGroup: string;\n\t/** Hierarchical cgroup population evidence; null when unavailable or unnecessary. */\n\treadonly cgroupPopulated: boolean | null;\n}\n\n/** A program failure is a normal result, distinct from a transport or observation error. */\nexport interface TaskResult {\n\t/** Classification based on execution and exit evidence, never just the numeric status. */\n\treadonly kind: 'exited' | 'signaled' | 'execution-failed' | 'not-executed' | 'unknown';\n\t/** Program or systemd execution status, present only for CLD_EXITED. */\n\treadonly exitCode: number | null;\n\t/** Signal number, present only for CLD_KILLED or CLD_DUMPED. */\n\treadonly signal: number | null;\n\t/** Whether Type=exec activation was confirmed by retained manager evidence. */\n\treadonly execution: 'confirmed' | 'not-confirmed';\n\t/** Raw systemd result; timeout can describe runtime, stop, or cleanup escalation. */\n\treadonly systemdResult: string;\n\t/** Cleanup must be checked independently of a successful main-process exit. */\n\treadonly cleanup: CleanupState;\n}\n\n/** A current state observation, not a durable event history. */\nexport interface TaskSnapshot {\n\t/** Reference captured from this observation. */\n\treadonly reference: TaskReference;\n\t/** Complete requires observed InvocationIDs for both task and retention service. */\n\treadonly identity: 'complete' | 'incomplete';\n\t/** Process phase; completed always requires confirmed cleanup. */\n\treadonly phase: 'starting' | 'running' | 'cleaning' | 'completed';\n\t/** Main PID is diagnostic only and never used as task identity. */\n\treadonly mainPid: number;\n\t/** True only for inactive/failed state without a pending job. */\n\treadonly managerTerminal: boolean;\n\t/** Current cleanup evidence. */\n\treadonly cleanup: CleanupState;\n\t/** Available main-exit or terminal evidence, possibly before cleanup finishes. */\n\treadonly result: TaskResult | null;\n\t/** Minimal raw properties needed to audit the classification. */\n\treadonly evidence: TaskEvidence;\n}\n\n/** Absence does not prove that a task never ran; incomplete retention is also explicit. */\nexport type LookupResult =\n\t| { /** Both observation and instance evidence are available. */ readonly status: 'found'; /** Reference from this read. */ readonly reference: TaskReference; /** Current task state. */ readonly snapshot: TaskSnapshot }\n\t| { /** No owned task or retention record was found in the reachable manager. */ readonly status: 'not-found'; /** Requested identity without secrets. */ readonly identity: TaskIdentity }\n\t| { /** Only the auxiliary record remains; the main result is unavailable. */ readonly status: 'incomplete'; /** Partial identity, safe to inspect and conservatively release. */ readonly reference: TaskReference };\n\n/** Start acceptance means the manager queued the creation transaction, not successful exec. */\nexport interface StartReceipt {\n\t/** Acknowledged by the manager; subsequent program failure is a separate result. */\n\treadonly outcome: 'accepted';\n\t/** Requested identity, which is already known before the call. */\n\treadonly identity: TaskIdentity;\n\t/** Manager that accepted the request. */\n\treadonly manager: ManagerIdentity;\n\t/** Diagnostic path of the accepted job; jobs are not durable identities. */\n\treadonly jobPath: string;\n}\n\n/** Local waiting controls; neither option changes manager-owned execution limits. */\nexport interface WaitOptions {\n\t/** Aborting affects this caller's wait only. */\n\treadonly signal?: AbortSignal;\n\t/** Positive integer local deadline, at most 2147483647 milliseconds. */\n\treadonly timeoutMs?: number;\n}\n\n/** Stop acceptance and optional completion waiting are separate stages. */\nexport interface StopOptions extends WaitOptions {\n\t/** When true, await terminal cleanup after manager acceptance. Defaults to false. */\n\treadonly wait?: boolean;\n}\n\n/** Local controls for the complete release sequence, independent of each D-Bus call. */\nexport interface ReleaseOptions extends WaitOptions {\n\t/** Total local release deadline including queueing; defaults to 5000 milliseconds. */\n\treadonly timeoutMs?: number;\n}\n\n/** Successful stop submission or an already-completed instance. */\nexport interface StopReceipt {\n\t/** Already-completed does not submit any stop request. */\n\treadonly outcome: 'accepted' | 'already-completed';\n\t/** The exact reference checked before stopping. */\n\treadonly reference: TaskReference;\n\t/** Accepted stop job, or null for an already-completed instance. */\n\treadonly jobPath: string | null;\n\t/** Present when completion was awaited or already known. */\n\treadonly completion: TaskSnapshot | null;\n}\n\n/** Explicit release affects manager retention, never application log files. */\nexport interface ReleaseReceipt {\n\t/** The auxiliary retention is no longer active. */\n\treadonly released: true;\n\t/** Both identities were already absent when release began. */\n\treadonly alreadyReleased: boolean;\n\t/** Whether both records were already garbage-collected at the final observation. */\n\treadonly collected: boolean;\n}\n\n/** Stable categories for callers making recovery decisions. */\nexport type ErrorCode = 'INVALID_INPUT' | 'UNSUPPORTED_ENVIRONMENT' | 'PERMISSION_DENIED'\n\t| 'MANAGER_UNAVAILABLE' | 'IDENTITY_CONFLICT' | 'START_REJECTED' | 'UNKNOWN_MUTATION_OUTCOME'\n\t| 'RESULT_UNAVAILABLE' | 'TASK_RUNNING' | 'WAIT_ABORTED' | 'WAIT_TIMEOUT' | 'DISCONNECTED';\n\n/** Metadata safe for default error formatting and diagnostic output. */\nexport interface ErrorDetails {\n\t/** Public or transport operation where the failure was observed. */\n\treadonly operation?: string;\n\t/** Known delivery state; an unknown result must never authorize automatic retry. */\n\treadonly mutationOutcome?: 'not-submitted' | 'rejected' | 'accepted' | 'unknown';\n\t/** Acknowledged cleanup calls before a release error; may be positive even when a later call is unknown. */\n\treadonly acceptedCleanupMutations?: number;\n\t/** Stable detail such as unit-not-found or incomplete-identity. */\n\treadonly reason?: string;\n\t/** Random task ID only, never the serialized intent. */\n\treadonly taskId?: string;\n}\n\n/** A redacted event correlated centrally with a task or connection flow. */\nexport interface DiagnosticEvent {\n\t/** Stable event name; no command, environment, or output content. */\n\treadonly event: string;\n\t/** Immutable correlation context captured at emission time. */\n\treadonly context: {\n\t\t/** Connection flow shared by this client's operations. */\n\t\treadonly connection: { /** Random local connection ID. */ readonly id: string };\n\t\t/** Task scope, present for task operations. */\n\t\treadonly task?: { /** Prepared task UUID. */ readonly id: string; /** Derived unit name. */ readonly unitName: string };\n\t};\n\t/** Stable failure category, when applicable. */\n\treadonly code?: ErrorCode;\n}\n\n/** Explicit user-manager connection options; no automatic provisioning is performed. */\nexport interface ConnectOptions {\n\t/** Positive local D-Bus call deadline, at most 2147483647 ms; defaults to 5000. */\n\treadonly requestTimeoutMs?: number;\n\t/** Optional redacted event sink; sync throws and async rejections are isolated, never awaited. */\n\treadonly onDiagnostic?: (event: DiagnosticEvent) => void;\n}\n\n/** The local client owns observation resources; systemd owns the task processes. */\nexport interface TaskClient {\n\t/** Bound manager identity for persistence and diagnosis. */\n\treadonly manager: ManagerIdentity;\n\t/** Submit exactly one creation attempt for a locally validated intention. */\n\tstart(intent: TaskIntent, io: TaskIO): Promise<StartReceipt>;\n\t/** Read existing ownership evidence without starting or retrying anything. */\n\tlookup(target: TaskIntent | TaskReference): Promise<LookupResult>;\n\t/** Read the exact referenced instance or fail with explicit observation unavailability. */\n\tinspect(reference: TaskReference): Promise<TaskSnapshot>;\n\t/** Wait for cleanup, or return explicit incomplete cleanup on terminal manager failure. */\n\twait(target: TaskIntent | TaskReference, options?: WaitOptions): Promise<TaskSnapshot>;\n\t/** Ask the manager to stop the referenced cgroup, optionally awaiting cleanup. */\n\tstop(reference: TaskReference, options?: StopOptions): Promise<StopReceipt>;\n\t/** Release only completed owned retention, preserving application files. */\n\trelease(reference: TaskReference, options?: ReleaseOptions): Promise<ReleaseReceipt>;\n\t/** Close local connections and observers without stopping any task. */\n\tdisconnect(): Promise<void>;\n}\n"],"mappings":"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A,QACP,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,KAAK;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,MAAM;AAAA,QACN,KAAK;AAAA,QACL,MAAM;AAAA,QACN,OAAO;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,KAAK;AAAA,QACL,MAAM;AAAA,QACN,OAAO;AAAA,QACP,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,QACN,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAA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AAAA,QAAG;AAAA,QAAG;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAI;AAAA,QAAK;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAI;AAAA,QAAK;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAI;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAG;AAAA,QAAG;AAAA,QAAI;AAAA,QAAK;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAG;AAAA,QAAI;AAAA,QAAG;AAAA,QAAI;AAAA,QAAI;AAAA,QAAG;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAI;AAAA,QAAK;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAI;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAI;AAAA,QAAI;AAAA,QAAK;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAI;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAI;AAAA,QAAG;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAI;AAAA,QAAK;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAI;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAI;AAAA,QAAI;AAAA,QAAK;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAI;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAI;AAAA,QAAG;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;AAAA,QAAK;AAAA,QAAI;AAAA,QAAG;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","names":["b","d","e","c","a","h","j","k","i","g","l","f","exports","module","MessageType","JSBI","exports","module","Variant","exports","module","path","exports","module","Message","path","exports","module","c","exports","module","Variant","property","properties","method","signal","exports","module","exports","module","fs","Variant","Message","constants","path","properties","exports","module","Message","path","exports","exports","module","exports","module","XMLDOMImplementation","exports","module","XMLDOMErrorHandler","exports","module","XMLDOMStringList","exports","module","XMLDOMConfiguration","exports","module","exports","module","XMLAttribute","exports","module","XMLNamedNodeMap","exports","module","XMLElement","exports","module","XMLCharacterData","exports","module","XMLCData","exports","module","XMLComment","exports","module","XMLDeclaration","exports","module","XMLDTDAttList","exports","module","XMLDTDEntity","exports","module","XMLDTDElement","exports","module","XMLDTDNotation","exports","module","XMLDocType","exports","module","XMLRaw","exports","module","XMLText","exports","module","XMLProcessingInstruction","exports","module","XMLDummy","exports","module","XMLNodeList","exports","module","exports","module","XMLNode","exports","module","XMLStringifier","exports","module","exports","module","XMLWriterBase","exports","module","XMLStringWriter","exports","module","XMLDocument","exports","module","XMLDocumentCB","exports","module","XMLStreamWriter","exports","module","exports","exports","s","exports","exports","exports","processors","process","err","exports","exports","module","exports","module","Message","path","err","xml","exports","module","constants","Message","path","children","exports","module","Buffer","exports","module","exports","Buffer","exports","module","exports","module","exports","Buffer","JSBI","exports","module","exports","module","JSBI","exports","module","exports","module","Buffer","constants","exports","module","Buffer","exports","module","Buffer","crypto","fs","path","constants","stat","err","exports","module","fs","err","exports","module","Variant","message","exports","module","exports","module","i","exports","module","reemit","exports","module","exports","module","exports","module","exports","module","streams","exports","err","Buffer","from","exports","module","Message","message","exports","module","constants","Variant","Message","crypto","identity","stat","channel","identity","fs","path","value","properties","property","channel","string","properties","identity","reference","fs","identity","snapshot","reference"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["/** Tenká root fasáda zachovává přesně veřejný 1.0 export surface nad canonical runtime. */\nexport { connect, prepare, TaskError, nullIO } from '#runtime';\nexport type {\n\tCleanupState, ConnectOptions, DiagnosticEvent, ErrorCode, ErrorDetails,\n\tLookupResult, ManagerIdentity, ReleaseOptions, ReleaseReceipt, StartReceipt, StopOptions,\n\tStopReceipt, SystemdProperty, TaskClient, TaskEvidence, TaskIdentity,\n\tTaskInput, TaskIntent, TaskIO, TaskOutput, TaskReference, TaskResult,\n\tTaskSnapshot, TaskSpec, WaitOptions,\n} from '#runtime';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAAoD;","names":[]}
|