Socket
Socket
Sign inDemoInstall

@glimmer/program

Package Overview
Dependencies
Maintainers
10
Versions
243
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@glimmer/program - npm Package Compare versions

Comparing version 0.29.10 to 0.30.0

8

dist/amd/es5/glimmer-program.js

@@ -515,2 +515,8 @@ define('@glimmer/program', ['exports', '@glimmer/encoder'], function (exports, _glimmer_encoder) { 'use strict';

RuntimeProgram.hydrate = function hydrate(rawHeap, pool, resolver) {
var heap = new Heap(rawHeap);
var constants = new RuntimeConstants(resolver, pool);
return new RuntimeProgram(constants, heap);
};
RuntimeProgram.prototype.opcode = function opcode(offset) {

@@ -562,2 +568,2 @@ this._opcode.offset = offset;

//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xpbW1lci1wcm9ncmFtLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9wcm9ncmFtL2xpYi9jb25zdGFudHMudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9wcm9ncmFtL2xpYi9vcGNvZGUudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9wcm9ncmFtL2xpYi9wcm9ncmFtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wYXF1ZSwgU3ltYm9sVGFibGUsIFJ1bnRpbWVSZXNvbHZlciwgQ29tcGlsZVRpbWVDb25zdGFudHMgfSBmcm9tIFwiQGdsaW1tZXIvaW50ZXJmYWNlc1wiO1xuXG5jb25zdCBVTlJFU09MVkVEID0ge307XG5cbmNvbnN0IFdFTExfS05PV05fRU1QVFlfQVJSQVlfUE9TSVRJT04gPSAwO1xuY29uc3QgV0VMTF9LTk9XX0VNUFRZX0FSUkFZID0gT2JqZWN0LmZyZWV6ZShbXSk7XG5leHBvcnQgdHlwZSBFTVBUWV9BUlJBWSA9IEFycmF5PFJlYWRvbmx5QXJyYXk8bmV2ZXI+PjtcblxuZXhwb3J0IGludGVyZmFjZSBDb25zdGFudFBvb2wge1xuICBzdHJpbmdzOiBzdHJpbmdbXTtcbiAgYXJyYXlzOiBudW1iZXJbXVtdIHwgRU1QVFlfQVJSQVk7XG4gIHRhYmxlczogU3ltYm9sVGFibGVbXTtcbiAgaGFuZGxlczogbnVtYmVyW107XG4gIHNlcmlhbGl6YWJsZXM6IE9wYXF1ZVtdO1xuICBmbG9hdHM6IG51bWJlcltdO1xuICBuZWdhdGl2ZXM6IG51bWJlcltdO1xufVxuXG5leHBvcnQgY29uc3QgZW51bSBQcmltaXRpdmVUeXBlIHtcbiAgTlVNQkVSICAgICAgICAgID0gMGIwMDAsXG4gIEZMT0FUICAgICAgICAgICA9IDBiMDAxLFxuICBTVFJJTkcgICAgICAgICAgPSAwYjAxMCxcbiAgQk9PTEVBTl9PUl9WT0lEID0gMGIwMTEsXG4gIE5FR0FUSVZFICAgICAgICA9IDBiMTAwXG59XG5cbmV4cG9ydCBjbGFzcyBXcml0ZU9ubHlDb25zdGFudHMgaW1wbGVtZW50cyBDb21waWxlVGltZUNvbnN0YW50cyB7XG4gIC8vIGAwYCBtZWFucyBOVUxMXG5cbiAgcHJvdGVjdGVkIHN0cmluZ3M6IHN0cmluZ1tdID0gW107XG4gIHByb3RlY3RlZCBhcnJheXM6IG51bWJlcltdW10gfCBFTVBUWV9BUlJBWSA9IFtXRUxMX0tOT1dfRU1QVFlfQVJSQVldO1xuICBwcm90ZWN0ZWQgdGFibGVzOiBTeW1ib2xUYWJsZVtdID0gW107XG4gIHByb3RlY3RlZCBoYW5kbGVzOiBudW1iZXJbXSA9IFtdO1xuICBwcm90ZWN0ZWQgc2VyaWFsaXphYmxlczogT3BhcXVlW10gPSBbXTtcbiAgcHJvdGVjdGVkIHJlc29sdmVkOiBPcGFxdWVbXSA9IFtdO1xuICBwcm90ZWN0ZWQgZmxvYXRzOiBudW1iZXJbXSA9IFtdO1xuICBwcm90ZWN0ZWQgbmVnYXRpdmVzOiBudW1iZXJbXSA9IFtdO1xuXG4gIGZsb2F0KGZsb2F0OiBudW1iZXIpIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLmZsb2F0cy5pbmRleE9mKGZsb2F0KTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZmxvYXRzLnB1c2goZmxvYXQpIC0gMTtcbiAgfVxuXG4gIG5lZ2F0aXZlKG5lZ2F0aXZlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGl2ZXMucHVzaChuZWdhdGl2ZSkgLSAxO1xuICB9XG5cbiAgc3RyaW5nKHZhbHVlOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGxldCBpbmRleCA9IHRoaXMuc3RyaW5ncy5pbmRleE9mKHZhbHVlKTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaW5ncy5wdXNoKHZhbHVlKSAtIDE7XG4gIH1cblxuICBzdHJpbmdBcnJheShzdHJpbmdzOiBzdHJpbmdbXSk6IG51bWJlciB7XG4gICAgbGV0IF9zdHJpbmdzOiBudW1iZXJbXSA9IG5ldyBBcnJheShzdHJpbmdzLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0cmluZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIF9zdHJpbmdzW2ldID0gdGhpcy5zdHJpbmcoc3RyaW5nc1tpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXJyYXkoX3N0cmluZ3MpO1xuICB9XG5cbiAgYXJyYXkodmFsdWVzOiBudW1iZXJbXSk6IG51bWJlciB7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBXRUxMX0tOT1dOX0VNUFRZX0FSUkFZX1BPU0lUSU9OO1xuICAgIH1cblxuICAgIGxldCBpbmRleCA9ICh0aGlzLmFycmF5cyBhcyBudW1iZXJbXVtdKS5pbmRleE9mKHZhbHVlcyk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIHJldHVybiAodGhpcy5hcnJheXMgYXMgbnVtYmVyW11bXSkucHVzaCh2YWx1ZXMpIC0gMTtcbiAgfVxuXG4gIHRhYmxlKHQ6IFN5bWJvbFRhYmxlKTogbnVtYmVyIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLnRhYmxlcy5pbmRleE9mKHQpO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50YWJsZXMucHVzaCh0KSAtIDE7XG4gIH1cblxuICBoYW5kbGUoaGFuZGxlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHRoaXMucmVzb2x2ZWQucHVzaChVTlJFU09MVkVEKTtcbiAgICByZXR1cm4gdGhpcy5oYW5kbGVzLnB1c2goaGFuZGxlKTtcbiAgfVxuXG4gIHNlcmlhbGl6YWJsZSh2YWx1ZTogT3BhcXVlKTogbnVtYmVyIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLnNlcmlhbGl6YWJsZXMuaW5kZXhPZih2YWx1ZSk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6YWJsZXMucHVzaCh2YWx1ZSkgLSAxO1xuICB9XG5cbiAgdG9Qb29sKCk6IENvbnN0YW50UG9vbCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0cmluZ3M6IHRoaXMuc3RyaW5ncyxcbiAgICAgIGFycmF5czogdGhpcy5hcnJheXMsXG4gICAgICB0YWJsZXM6IHRoaXMudGFibGVzLFxuICAgICAgaGFuZGxlczogdGhpcy5oYW5kbGVzLFxuICAgICAgc2VyaWFsaXphYmxlczogdGhpcy5zZXJpYWxpemFibGVzLFxuICAgICAgZmxvYXRzOiB0aGlzLmZsb2F0cyxcbiAgICAgIG5lZ2F0aXZlczogdGhpcy5uZWdhdGl2ZXNcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSdW50aW1lQ29uc3RhbnRzPFNwZWNpZmllcj4ge1xuICBwcm90ZWN0ZWQgc3RyaW5nczogc3RyaW5nW107XG4gIHByb3RlY3RlZCBhcnJheXM6IG51bWJlcltdW10gfCBFTVBUWV9BUlJBWTtcbiAgcHJvdGVjdGVkIHRhYmxlczogU3ltYm9sVGFibGVbXTtcbiAgcHJvdGVjdGVkIGhhbmRsZXM6IG51bWJlcltdO1xuICBwcm90ZWN0ZWQgc2VyaWFsaXphYmxlczogT3BhcXVlW107XG4gIHByb3RlY3RlZCByZXNvbHZlZDogT3BhcXVlW107XG4gIHByb3RlY3RlZCBmbG9hdHM6IG51bWJlcltdO1xuICBwcm90ZWN0ZWQgbmVnYXRpdmVzOiBudW1iZXJbXTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVzb2x2ZXI6IFJ1bnRpbWVSZXNvbHZlcjxTcGVjaWZpZXI+LCBwb29sOiBDb25zdGFudFBvb2wpIHtcbiAgICB0aGlzLnN0cmluZ3MgPSBwb29sLnN0cmluZ3M7XG4gICAgdGhpcy5hcnJheXMgPSBwb29sLmFycmF5cztcbiAgICB0aGlzLnRhYmxlcyA9IHBvb2wudGFibGVzO1xuICAgIHRoaXMuaGFuZGxlcyA9IHBvb2wuaGFuZGxlcztcbiAgICB0aGlzLnNlcmlhbGl6YWJsZXMgPSBwb29sLnNlcmlhbGl6YWJsZXM7XG4gICAgdGhpcy5mbG9hdHMgPSBwb29sLmZsb2F0cztcbiAgICB0aGlzLm5lZ2F0aXZlcyA9IHBvb2wubmVnYXRpdmVzO1xuICAgIHRoaXMucmVzb2x2ZWQgPSB0aGlzLmhhbmRsZXMubWFwKCgpID0+IFVOUkVTT0xWRUQpO1xuICB9XG5cbiAgLy8gYDBgIG1lYW5zIE5VTExcblxuICBnZXRGbG9hdCh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5mbG9hdHNbdmFsdWVdO1xuICB9XG5cbiAgZ2V0TmVnYXRpdmUodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRpdmVzW3ZhbHVlXTtcbiAgfVxuXG4gIGdldFN0cmluZyh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmdzW3ZhbHVlXTtcbiAgfVxuXG4gIGdldFN0cmluZ0FycmF5KHZhbHVlOiBudW1iZXIpOiBzdHJpbmdbXSB7XG4gICAgbGV0IG5hbWVzID0gdGhpcy5nZXRBcnJheSh2YWx1ZSk7XG4gICAgbGV0IF9uYW1lczogc3RyaW5nW10gPSBuZXcgQXJyYXkobmFtZXMubGVuZ3RoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBuID0gbmFtZXNbaV07XG4gICAgICBfbmFtZXNbaV0gPSB0aGlzLmdldFN0cmluZyhuKTtcbiAgICB9XG5cbiAgICByZXR1cm4gX25hbWVzO1xuICB9XG5cbiAgZ2V0QXJyYXkodmFsdWU6IG51bWJlcik6IG51bWJlcltdIHtcbiAgICByZXR1cm4gKHRoaXMuYXJyYXlzIGFzIG51bWJlcltdW10pW3ZhbHVlXTtcbiAgfVxuXG4gIGdldFN5bWJvbFRhYmxlPFQgZXh0ZW5kcyBTeW1ib2xUYWJsZT4odmFsdWU6IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnRhYmxlc1t2YWx1ZV0gYXMgVDtcbiAgfVxuXG4gIHJlc29sdmVIYW5kbGU8VD4oczogbnVtYmVyKTogVCB7XG4gICAgbGV0IGluZGV4ID0gcyAtIDE7XG4gICAgbGV0IHJlc29sdmVkID0gdGhpcy5yZXNvbHZlZFtpbmRleF07XG5cbiAgICBpZiAocmVzb2x2ZWQgPT09IFVOUkVTT0xWRUQpIHtcbiAgICAgIGxldCBoYW5kbGUgPSB0aGlzLmhhbmRsZXNbaW5kZXhdO1xuICAgICAgcmVzb2x2ZWQgPSB0aGlzLnJlc29sdmVkW2luZGV4XSA9IHRoaXMucmVzb2x2ZXIucmVzb2x2ZShoYW5kbGUpO1xuICAgIH1cblxuICAgIHJldHVybiByZXNvbHZlZCBhcyBUO1xuICB9XG5cbiAgZ2V0U2VyaWFsaXphYmxlPFQ+KHM6IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6YWJsZXNbc10gYXMgVDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29uc3RhbnRzPFNwZWNpZmllcj4gZXh0ZW5kcyBXcml0ZU9ubHlDb25zdGFudHMge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVzb2x2ZXI6IFJ1bnRpbWVSZXNvbHZlcjxTcGVjaWZpZXI+LCBwb29sPzogQ29uc3RhbnRQb29sKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGlmIChwb29sKSB7XG4gICAgICB0aGlzLnN0cmluZ3MgPSBwb29sLnN0cmluZ3M7XG4gICAgICB0aGlzLmFycmF5cyA9IHBvb2wuYXJyYXlzO1xuICAgICAgdGhpcy50YWJsZXMgPSBwb29sLnRhYmxlcztcbiAgICAgIHRoaXMuaGFuZGxlcyA9IHBvb2wuaGFuZGxlcztcbiAgICAgIHRoaXMuc2VyaWFsaXphYmxlcyA9IHBvb2wuc2VyaWFsaXphYmxlcztcbiAgICAgIHRoaXMuZmxvYXRzID0gcG9vbC5mbG9hdHM7XG4gICAgICB0aGlzLm5lZ2F0aXZlcyA9IHBvb2wubmVnYXRpdmVzO1xuICAgICAgdGhpcy5yZXNvbHZlZCA9IHRoaXMuaGFuZGxlcy5tYXAoKCkgPT4gVU5SRVNPTFZFRCk7XG4gICAgfVxuICB9XG5cbiAgLy8gYDBgIG1lYW5zIE5VTExcbiAgZ2V0RmxvYXQodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZmxvYXRzW3ZhbHVlXTtcbiAgfVxuXG4gIGdldE5lZ2F0aXZlKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm5lZ2F0aXZlc1t2YWx1ZV07XG4gIH1cblxuICBnZXRTdHJpbmcodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3RyaW5nc1t2YWx1ZV07XG4gIH1cblxuICBnZXRTdHJpbmdBcnJheSh2YWx1ZTogbnVtYmVyKTogc3RyaW5nW10ge1xuICAgIGxldCBuYW1lcyA9IHRoaXMuZ2V0QXJyYXkodmFsdWUpO1xuICAgIGxldCBfbmFtZXM6IHN0cmluZ1tdID0gbmV3IEFycmF5KG5hbWVzLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgbiA9IG5hbWVzW2ldO1xuICAgICAgX25hbWVzW2ldID0gdGhpcy5nZXRTdHJpbmcobik7XG4gICAgfVxuXG4gICAgcmV0dXJuIF9uYW1lcztcbiAgfVxuXG4gIGdldEFycmF5KHZhbHVlOiBudW1iZXIpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuICh0aGlzLmFycmF5cyBhcyBudW1iZXJbXVtdKVt2YWx1ZV07XG4gIH1cblxuICBnZXRTeW1ib2xUYWJsZTxUIGV4dGVuZHMgU3ltYm9sVGFibGU+KHZhbHVlOiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZXNbdmFsdWVdIGFzIFQ7XG4gIH1cblxuICByZXNvbHZlSGFuZGxlPFQ+KHM6IG51bWJlcik6IFQge1xuICAgIGxldCBpbmRleCA9IHMgLSAxO1xuICAgIGxldCByZXNvbHZlZCA9IHRoaXMucmVzb2x2ZWRbaW5kZXhdO1xuXG4gICAgaWYgKHJlc29sdmVkID09PSBVTlJFU09MVkVEKSB7XG4gICAgICBsZXQgaGFuZGxlID0gdGhpcy5oYW5kbGVzW2luZGV4XTtcbiAgICAgIHJlc29sdmVkID0gdGhpcy5yZXNvbHZlZFtpbmRleF0gPSB0aGlzLnJlc29sdmVyLnJlc29sdmUoaGFuZGxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzb2x2ZWQgYXMgVDtcbiAgfVxuXG4gIGdldFNlcmlhbGl6YWJsZTxUPihzOiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zZXJpYWxpemFibGVzW3NdIGFzIFQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIExhenlDb25zdGFudHMgZXh0ZW5kcyBDb25zdGFudHM8T3BhcXVlPiB7XG4gIHByaXZhdGUgb3RoZXJzOiBPcGFxdWVbXSA9IFtdO1xuXG4gIGdldE90aGVyPFQ+KHZhbHVlOiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5vdGhlcnNbdmFsdWUgLSAxXSBhcyBUO1xuICB9XG5cbiAgb3RoZXIob3RoZXI6IE9wYXF1ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMub3RoZXJzLnB1c2gob3RoZXIpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBIZWFwIH0gZnJvbSAnLi9wcm9ncmFtJztcbmltcG9ydCB7IFRZUEVfTUFTSywgT1BFUkFORF9MRU5fTUFTSywgQVJHX1NISUZUIH0gZnJvbSBcIkBnbGltbWVyL2VuY29kZXJcIjtcblxuZXhwb3J0IGNsYXNzIE9wY29kZSB7XG4gIHB1YmxpYyBvZmZzZXQgPSAwO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGhlYXA6IEhlYXApIHt9XG5cbiAgZ2V0IHNpemUoKSB7XG4gICAgbGV0IHJhd1R5cGUgPSB0aGlzLmhlYXAuZ2V0YnlhZGRyKHRoaXMub2Zmc2V0KTtcbiAgICByZXR1cm4gKChyYXdUeXBlICYgT1BFUkFORF9MRU5fTUFTSykgPj4gQVJHX1NISUZUKSArIDE7XG4gIH1cblxuICBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gKHRoaXMuaGVhcC5nZXRieWFkZHIodGhpcy5vZmZzZXQpICYgVFlQRV9NQVNLKTtcbiAgfVxuXG4gIGdldCBvcDEoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVhcC5nZXRieWFkZHIodGhpcy5vZmZzZXQgKyAxKTtcbiAgfVxuXG4gIGdldCBvcDIoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVhcC5nZXRieWFkZHIodGhpcy5vZmZzZXQgKyAyKTtcbiAgfVxuXG4gIGdldCBvcDMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVhcC5nZXRieWFkZHIodGhpcy5vZmZzZXQgKyAzKTtcbiAgfVxufVxuIiwiXG5pbXBvcnQgeyBDb21waWxlVGltZVByb2dyYW0sIFJlY2FzdCwgVk1IYW5kbGUgfSBmcm9tIFwiQGdsaW1tZXIvaW50ZXJmYWNlc1wiO1xuaW1wb3J0IHsgREVCVUcgfSBmcm9tIFwiQGdsaW1tZXIvbG9jYWwtZGVidWctZmxhZ3NcIjtcbmltcG9ydCB7IENvbnN0YW50cywgV3JpdGVPbmx5Q29uc3RhbnRzLCBSdW50aW1lQ29uc3RhbnRzIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgT3Bjb2RlIH0gZnJvbSAnLi9vcGNvZGUnO1xuXG5lbnVtIFRhYmxlU2xvdFN0YXRlIHtcbiAgQWxsb2NhdGVkLFxuICBGcmVlZCxcbiAgUHVyZ2VkLFxuICBQb2ludGVyXG59XG5cbmNvbnN0IEVOVFJZX1NJWkUgPSAyO1xuY29uc3QgSU5GT19PRkZTRVQgPSAxO1xuY29uc3QgU0laRV9NQVNLID0gIDBiMDAwMDAwMDAwMDAwMDAwMDExMTExMTExMTExMTExMTE7XG5jb25zdCBTQ09QRV9NQVNLID0gMGIwMDExMTExMTExMTExMTExMDAwMDAwMDAwMDAwMDAwMDtcbmNvbnN0IFNUQVRFX01BU0sgPSAwYjExMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwO1xuXG5mdW5jdGlvbiBlbmNvZGVUYWJsZUluZm8oc2l6ZTogbnVtYmVyLCBzY29wZVNpemU6IG51bWJlciwgc3RhdGU6IG51bWJlcikge1xuICByZXR1cm4gc2l6ZSB8IChzY29wZVNpemUgPDwgMTYpIHwgc3RhdGUgPDwgMzA7XG59XG5cbmZ1bmN0aW9uIGNoYW5nZVN0YXRlKGluZm86IG51bWJlciwgbmV3U3RhdGU6IG51bWJlcikge1xuICByZXR1cm4gaW5mbyB8IG5ld1N0YXRlIDw8IDMwO1xufVxuXG4vKipcbiAqIFRoZSBIZWFwIGlzIHJlc3BvbnNpYmxlIGZvciBkeW5hbWljYWxseSBhbGxvY2F0aW5nXG4gKiBtZW1vcnkgaW4gd2hpY2ggd2UgcmVhZC93cml0ZSB0aGUgVk0ncyBpbnN0cnVjdGlvbnNcbiAqIGZyb20vdG8uIFdoZW4gd2UgbWFsbG9jIHdlIHBhc3Mgb3V0IGEgVk1IYW5kbGUsIHdoaWNoXG4gKiBpcyB1c2VkIGFzIGFuIGluZGlyZWN0IHdheSBvZiBhY2Nlc3NpbmcgdGhlIG1lbW9yeSBkdXJpbmdcbiAqIGV4ZWN1dGlvbiBvZiB0aGUgVk0uIEludGVybmFsbHkgd2UgdHJhY2sgdGhlIGRpZmZlcmVudFxuICogcmVnaW9ucyBvZiB0aGUgbWVtb3J5IGluIGFuIGludCBhcnJheSBrbm93biBhcyB0aGUgdGFibGUuXG4gKlxuICogVGhlIHRhYmxlIDMyLWJpdCBhbGlnbmVkIGFuZCBoYXMgdGhlIGZvbGxvd2luZyBsYXlvdXQ6XG4gKlxuICogfCAuLi4gfCBocCAodTMyKSB8ICAgICAgIGluZm8gKHUzMikgICAgICAgICAgfFxuICogfCAuLi4gfCAgSGFuZGxlICB8IFNpemUgfCBTY29wZSBTaXplIHwgU3RhdGUgfFxuICogfCAuLi4gfCAzMi1iaXRzICB8IDE2YiAgfCAgICAxNGIgICAgIHwgIDJiICAgfFxuICpcbiAqIFdpdGggdGhpcyBpbmZvcm1hdGlvbiB3ZSBlZmZlY3RpdmVseSBoYXZlIHRoZSBhYmlsaXR5IHRvXG4gKiBjb250cm9sIHdoZW4gd2Ugd2FudCB0byBmcmVlIG1lbW9yeS4gVGhhdCBiZWluZyBzYWlkIHlvdVxuICogY2FuIG5vdCBmcmVlIGR1cmluZyBleGVjdXRpb24gYXMgcmF3IGFkZHJlc3MgYXJlIG9ubHlcbiAqIHZhbGlkIGR1cmluZyB0aGUgZXhlY3V0aW9uLiBUaGlzIG1lYW5zIHlvdSBjYW5ub3QgY2xvc2VcbiAqIG92ZXIgdGhlbSBhcyB5b3Ugd2lsbCBoYXZlIGEgYmFkIG1lbW9yeSBhY2Nlc3MgZXhjZXB0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgSGVhcCB7XG4gIHByaXZhdGUgaGVhcDogVWludDE2QXJyYXkgfCBBcnJheTxudW1iZXI+O1xuICBwcml2YXRlIHRhYmxlOiBudW1iZXJbXTtcbiAgcHJpdmF0ZSBvZmZzZXQgPSAwO1xuICBwcml2YXRlIGhhbmRsZSA9IDA7XG5cbiAgY29uc3RydWN0b3Ioc2VyaWFsaXplZEhlYXA/OiB7IGJ1ZmZlcjogQXJyYXlCdWZmZXIsIHRhYmxlOiBudW1iZXJbXSwgaGFuZGxlOiBudW1iZXIgfSkge1xuICAgIGlmIChzZXJpYWxpemVkSGVhcCkge1xuICAgICAgbGV0IHsgYnVmZmVyLCB0YWJsZSwgaGFuZGxlIH0gPSBzZXJpYWxpemVkSGVhcDtcbiAgICAgIHRoaXMuaGVhcCA9IG5ldyBVaW50MTZBcnJheShidWZmZXIpO1xuICAgICAgdGhpcy50YWJsZSA9IHRhYmxlO1xuICAgICAgdGhpcy5vZmZzZXQgPSB0aGlzLmhlYXAubGVuZ3RoO1xuICAgICAgdGhpcy5oYW5kbGUgPSBoYW5kbGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGVhcCA9IG5ldyBVaW50MTZBcnJheSgweDEwMDAwMCk7XG4gICAgICB0aGlzLnRhYmxlID0gW107XG4gICAgfVxuICB9XG5cbiAgcHVzaChpdGVtOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmhlYXBbdGhpcy5vZmZzZXQrK10gPSBpdGVtO1xuICB9XG5cbiAgZ2V0YnlhZGRyKGFkZHJlc3M6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaGVhcFthZGRyZXNzXTtcbiAgfVxuXG4gIHNldGJ5YWRkcihhZGRyZXNzOiBudW1iZXIsIHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLmhlYXBbYWRkcmVzc10gPSB2YWx1ZTtcbiAgfVxuXG4gIG1hbGxvYygpOiBWTUhhbmRsZSB7XG4gICAgdGhpcy50YWJsZS5wdXNoKHRoaXMub2Zmc2V0LCAwKTtcbiAgICBsZXQgaGFuZGxlID0gdGhpcy5oYW5kbGU7XG4gICAgdGhpcy5oYW5kbGUgKz0gRU5UUllfU0laRTtcbiAgICByZXR1cm4gaGFuZGxlIGFzIFJlY2FzdDxudW1iZXIsIFZNSGFuZGxlPjtcbiAgfVxuXG4gIGZpbmlzaE1hbGxvYyhoYW5kbGU6IFZNSGFuZGxlLCBzY29wZVNpemU6IG51bWJlcik6IHZvaWQge1xuICAgIGxldCBzdGFydCA9IHRoaXMudGFibGVbaGFuZGxlIGFzIFJlY2FzdDxWTUhhbmRsZSwgbnVtYmVyPl07XG4gICAgbGV0IGZpbmlzaCA9IHRoaXMub2Zmc2V0O1xuICAgIGxldCBpbnN0cnVjdGlvblNpemUgPSBmaW5pc2ggLSBzdGFydDtcbiAgICBsZXQgaW5mbyA9IGVuY29kZVRhYmxlSW5mbyhpbnN0cnVjdGlvblNpemUsIHNjb3BlU2l6ZSwgVGFibGVTbG90U3RhdGUuQWxsb2NhdGVkKTtcbiAgICB0aGlzLnRhYmxlWyhoYW5kbGUgYXMgUmVjYXN0PFZNSGFuZGxlLCBudW1iZXI+KSArIElORk9fT0ZGU0VUXSA9IGluZm87XG4gIH1cblxuICBzaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMub2Zmc2V0O1xuICB9XG5cbiAgLy8gSXQgaXMgaWxsZWdhbCB0byBjbG9zZSBvdmVyIHRoaXMgYWRkcmVzcywgYXMgY29tcGFjdGlvblxuICAvLyBtYXkgbW92ZSBpdC4gSG93ZXZlciwgaXQgaXMgbGVnYWwgdG8gdXNlIHRoaXMgYWRkcmVzc1xuICAvLyBtdWx0aXBsZSB0aW1lcyBiZXR3ZWVuIGNvbXBhY3Rpb25zLlxuICBnZXRhZGRyKGhhbmRsZTogVk1IYW5kbGUpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRhYmxlW2hhbmRsZSBhcyBSZWNhc3Q8Vk1IYW5kbGUsIG51bWJlcj5dO1xuICB9XG5cbiAgZ2V0aGFuZGxlKGFkZHJlc3M6IG51bWJlcik6IFZNSGFuZGxlIHtcbiAgICB0aGlzLnRhYmxlLnB1c2goYWRkcmVzcywgZW5jb2RlVGFibGVJbmZvKDAsIDAsIFRhYmxlU2xvdFN0YXRlLlBvaW50ZXIpKTtcbiAgICBsZXQgaGFuZGxlID0gdGhpcy5oYW5kbGU7XG4gICAgdGhpcy5oYW5kbGUgKz0gRU5UUllfU0laRTtcbiAgICByZXR1cm4gaGFuZGxlIGFzIFJlY2FzdDxudW1iZXIsIFZNSGFuZGxlPjtcbiAgfVxuXG4gIHNpemVvZihoYW5kbGU6IFZNSGFuZGxlKTogbnVtYmVyIHtcbiAgICBpZiAoREVCVUcpIHtcbiAgICAgIGxldCBpbmZvID0gdGhpcy50YWJsZVsoaGFuZGxlIGFzIFJlY2FzdDxWTUhhbmRsZSwgbnVtYmVyPikgKyBJTkZPX09GRlNFVF07XG4gICAgICByZXR1cm4gaW5mbyAmIFNJWkVfTUFTSztcbiAgICB9XG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgc2NvcGVzaXplb2YoaGFuZGxlOiBWTUhhbmRsZSk6IG51bWJlciB7XG4gICAgbGV0IGluZm8gPSB0aGlzLnRhYmxlWyhoYW5kbGUgYXMgUmVjYXN0PFZNSGFuZGxlLCBudW1iZXI+KSArIElORk9fT0ZGU0VUXTtcbiAgICByZXR1cm4gKGluZm8gJiBTQ09QRV9NQVNLKSA+PiAxNjtcbiAgfVxuXG4gIGZyZWUoaGFuZGxlOiBWTUhhbmRsZSk6IHZvaWQge1xuICAgIGxldCBpbmZvID0gdGhpcy50YWJsZVsoaGFuZGxlIGFzIFJlY2FzdDxWTUhhbmRsZSwgbnVtYmVyPikgKyBJTkZPX09GRlNFVF07XG4gICAgdGhpcy50YWJsZVsoaGFuZGxlIGFzIFJlY2FzdDxWTUhhbmRsZSwgbnVtYmVyPikgKyBJTkZPX09GRlNFVF0gPSBjaGFuZ2VTdGF0ZShpbmZvLCBUYWJsZVNsb3RTdGF0ZS5GcmVlZCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGhlYXAgdXNlcyB0aGUgW01hcmstQ29tcGFjdCBBbGdvcml0aG1dKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01hcmstY29tcGFjdF9hbGdvcml0aG0pIHRvIHNoaWZ0XG4gICAqIHJlYWNoYWJsZSBtZW1vcnkgdG8gdGhlIGJvdHRvbSBvZiB0aGUgaGVhcCBhbmQgZnJlZWFibGVcbiAgICogbWVtb3J5IHRvIHRoZSB0b3Agb2YgdGhlIGhlYXAuIFdoZW4gd2UgaGF2ZSBzaGlmdGVkIGFsbFxuICAgKiB0aGUgcmVhY2hhYmxlIG1lbW9yeSB0byB0aGUgdG9wIG9mIHRoZSBoZWFwLCB3ZSBtb3ZlIHRoZVxuICAgKiBvZmZzZXQgdG8gdGhlIG5leHQgZnJlZSBwb3NpdGlvbi5cbiAgICovXG4gIGNvbXBhY3QoKTogdm9pZCB7XG4gICAgbGV0IGNvbXBhY3RlZFNpemUgPSAwO1xuICAgIGxldCB7IHRhYmxlLCB0YWJsZTogeyBsZW5ndGggfSwgaGVhcCB9ID0gdGhpcztcblxuICAgIGZvciAobGV0IGk9MDsgaTxsZW5ndGg7IGkrPUVOVFJZX1NJWkUpIHtcbiAgICAgIGxldCBvZmZzZXQgPSB0YWJsZVtpXTtcbiAgICAgIGxldCBpbmZvID0gdGFibGVbaSArIElORk9fT0ZGU0VUXTtcbiAgICAgIGxldCBzaXplID0gaW5mbyAmIFNJWkVfTUFTSztcbiAgICAgIGxldCBzdGF0ZSA9IGluZm8gJiBTVEFURV9NQVNLID4+IDMwO1xuXG4gICAgICBpZiAoc3RhdGUgPT09IFRhYmxlU2xvdFN0YXRlLlB1cmdlZCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPT09IFRhYmxlU2xvdFN0YXRlLkZyZWVkKSB7XG4gICAgICAgIC8vIHRyYW5zaXRpb24gdG8gXCJhbHJlYWR5IGZyZWVkXCIgYWthIFwicHVyZ2VkXCJcbiAgICAgICAgLy8gYSBnb29kIGltcHJvdmVtZW50IHdvdWxkIGJlIHRvIHJldXNlXG4gICAgICAgIC8vIHRoZXNlIHNsb3RzXG4gICAgICAgIHRhYmxlW2kgKyBJTkZPX09GRlNFVF0gPSBjaGFuZ2VTdGF0ZShpbmZvLCBUYWJsZVNsb3RTdGF0ZS5QdXJnZWQpO1xuICAgICAgICBjb21wYWN0ZWRTaXplICs9IHNpemU7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlID09PSBUYWJsZVNsb3RTdGF0ZS5BbGxvY2F0ZWQpIHtcbiAgICAgICAgZm9yIChsZXQgaj1vZmZzZXQ7IGo8PWkrc2l6ZTsgaisrKSB7XG4gICAgICAgICAgaGVhcFtqIC0gY29tcGFjdGVkU2l6ZV0gPSBoZWFwW2pdO1xuICAgICAgICB9XG5cbiAgICAgICAgdGFibGVbaV0gPSBvZmZzZXQgLSBjb21wYWN0ZWRTaXplO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PT0gVGFibGVTbG90U3RhdGUuUG9pbnRlcikge1xuICAgICAgICB0YWJsZVtpXSA9IG9mZnNldCAtIGNvbXBhY3RlZFNpemU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5vZmZzZXQgPSB0aGlzLm9mZnNldCAtIGNvbXBhY3RlZFNpemU7XG4gIH1cblxuICBjYXB0dXJlKCkge1xuICAgIC8vIE9ubHkgY2FsbGVkIGluIGVhZ2VyIG1vZGVcbiAgICBsZXQgYnVmZmVyID0gc2xpY2UodGhpcy5oZWFwLCAwLCB0aGlzLm9mZnNldCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhhbmRsZTogdGhpcy5oYW5kbGUsXG4gICAgICB0YWJsZTogdGhpcy50YWJsZSxcbiAgICAgIGJ1ZmZlcjogYnVmZmVyIGFzIEFycmF5QnVmZmVyXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgV3JpdGVPbmx5UHJvZ3JhbSBpbXBsZW1lbnRzIENvbXBpbGVUaW1lUHJvZ3JhbSB7XG4gIFtrZXk6IG51bWJlcl06IG5ldmVyO1xuXG4gIHByaXZhdGUgX29wY29kZTogT3Bjb2RlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb25zdGFudHM6IFdyaXRlT25seUNvbnN0YW50cyA9IG5ldyBXcml0ZU9ubHlDb25zdGFudHMoKSwgcHVibGljIGhlYXAgPSBuZXcgSGVhcCgpKSB7XG4gICAgdGhpcy5fb3Bjb2RlID0gbmV3IE9wY29kZSh0aGlzLmhlYXApO1xuICB9XG5cbiAgb3Bjb2RlKG9mZnNldDogbnVtYmVyKTogT3Bjb2RlIHtcbiAgICB0aGlzLl9vcGNvZGUub2Zmc2V0ID0gb2Zmc2V0O1xuICAgIHJldHVybiB0aGlzLl9vcGNvZGU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJ1bnRpbWVQcm9ncmFtPFNwZWNpZmllcj4ge1xuICBba2V5OiBudW1iZXJdOiBuZXZlcjtcblxuICBwcml2YXRlIF9vcGNvZGU6IE9wY29kZTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgY29uc3RhbnRzOiBSdW50aW1lQ29uc3RhbnRzPFNwZWNpZmllcj4sIHB1YmxpYyBoZWFwOiBIZWFwKSB7XG4gICAgdGhpcy5fb3Bjb2RlID0gbmV3IE9wY29kZSh0aGlzLmhlYXApO1xuICB9XG5cbiAgb3Bjb2RlKG9mZnNldDogbnVtYmVyKTogT3Bjb2RlIHtcbiAgICB0aGlzLl9vcGNvZGUub2Zmc2V0ID0gb2Zmc2V0O1xuICAgIHJldHVybiB0aGlzLl9vcGNvZGU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFByb2dyYW08U3BlY2lmaWVyPiBleHRlbmRzIFdyaXRlT25seVByb2dyYW0ge1xuICBwdWJsaWMgY29uc3RhbnRzOiBDb25zdGFudHM8U3BlY2lmaWVyPjtcbn1cblxuZnVuY3Rpb24gc2xpY2UoYXJyOiBVaW50MTZBcnJheSB8IG51bWJlcltdLCBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcikge1xuICBpZiAoYXJyIGluc3RhbmNlb2YgVWludDE2QXJyYXkpIHtcbiAgICBpZiAoYXJyLnNsaWNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBhcnIuc2xpY2Uoc3RhcnQsIGVuZCkuYnVmZmVyO1xuICAgIH1cblxuICAgIGxldCByZXQgPSBuZXcgVWludDE2QXJyYXkoZW5kKTtcblxuICAgIGZvciAoOyBzdGFydCA8IGVuZDsgc3RhcnQrKykge1xuICAgICAgcmV0W3N0YXJ0XSAgPSBhcnJbc3RhcnRdO1xuICAgIH1cblxuICAgIHJldHVybiByZXQuYnVmZmVyO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iXSwibmFtZXMiOlsiT1BFUkFORF9MRU5fTUFTSyIsIkFSR19TSElGVCIsIlRZUEVfTUFTSyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUVBLElBQU0sYUFBYTtBQUVuQixJQUFNLGtDQUFrQztBQUN4QyxJQUFNLHdCQUF3QixPQUFPLE9BQU87O0lBcUI1Qzs7Ozs7YUFHbUIsVUFBYTthQUNkLFNBQTZCLENBQUM7YUFDOUIsU0FBa0I7YUFDakIsVUFBYTthQUNQLGdCQUFhO2FBQ2xCLFdBQWE7YUFDZixTQUFhO2FBQ1YsWUFBYTs7O3dEQUUxQixRQUNKO1lBQUksUUFBUSxLQUFLLE9BQU8sUUFBUTtZQUU1QixRQUFRLENBQUMsR0FBRzttQkFDUDs7ZUFHRixLQUFLLE9BQU8sS0FBSyxVQUFTOzs7OERBRzFCLFdBQ1A7ZUFBTyxLQUFLLFVBQVUsS0FBSyxhQUFZOzs7MERBR2xDLE9BQ0w7WUFBSSxRQUFRLEtBQUssUUFBUSxRQUFRO1lBRTdCLFFBQVEsQ0FBQyxHQUFHO21CQUNQOztlQUdGLEtBQUssUUFBUSxLQUFLLFNBQVM7OztvRUFHeEIsU0FDVjtZQUFJLFdBQXFCLElBQUksTUFBTSxRQUFRO2FBRXRDLElBQUksSUFBSSxHQUFHLElBQUksUUFBUSxRQUFRLEtBQUs7cUJBQzlCLEtBQUssS0FBSyxPQUFPLFFBQVE7O2VBRzdCLEtBQUssTUFBTTs7O3dEQUdkLFFBQ0o7WUFBSSxPQUFPLFdBQVcsR0FBRzttQkFDaEI7O1lBR0wsUUFBUyxLQUFLLE9BQXNCLFFBQVE7WUFFNUMsUUFBUSxDQUFDLEdBQUc7bUJBQ1A7O2VBR0QsS0FBSyxPQUFzQixLQUFLLFVBQVU7Ozt3REFHOUMsR0FDSjtZQUFJLFFBQVEsS0FBSyxPQUFPLFFBQVE7WUFFNUIsUUFBUSxDQUFDLEdBQUc7bUJBQ1A7O2VBR0YsS0FBSyxPQUFP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
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xpbW1lci1wcm9ncmFtLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9wcm9ncmFtL2xpYi9jb25zdGFudHMudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9wcm9ncmFtL2xpYi9vcGNvZGUudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9wcm9ncmFtL2xpYi9wcm9ncmFtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wYXF1ZSwgU3ltYm9sVGFibGUsIFJ1bnRpbWVSZXNvbHZlciwgQ29tcGlsZVRpbWVDb25zdGFudHMgfSBmcm9tIFwiQGdsaW1tZXIvaW50ZXJmYWNlc1wiO1xuXG5jb25zdCBVTlJFU09MVkVEID0ge307XG5cbmNvbnN0IFdFTExfS05PV05fRU1QVFlfQVJSQVlfUE9TSVRJT04gPSAwO1xuY29uc3QgV0VMTF9LTk9XX0VNUFRZX0FSUkFZID0gT2JqZWN0LmZyZWV6ZShbXSk7XG5leHBvcnQgdHlwZSBFTVBUWV9BUlJBWSA9IEFycmF5PFJlYWRvbmx5QXJyYXk8bmV2ZXI+PjtcblxuZXhwb3J0IGludGVyZmFjZSBDb25zdGFudFBvb2wge1xuICBzdHJpbmdzOiBzdHJpbmdbXTtcbiAgYXJyYXlzOiBudW1iZXJbXVtdIHwgRU1QVFlfQVJSQVk7XG4gIHRhYmxlczogU3ltYm9sVGFibGVbXTtcbiAgaGFuZGxlczogbnVtYmVyW107XG4gIHNlcmlhbGl6YWJsZXM6IE9wYXF1ZVtdO1xuICBmbG9hdHM6IG51bWJlcltdO1xuICBuZWdhdGl2ZXM6IG51bWJlcltdO1xufVxuXG5leHBvcnQgY29uc3QgZW51bSBQcmltaXRpdmVUeXBlIHtcbiAgTlVNQkVSICAgICAgICAgID0gMGIwMDAsXG4gIEZMT0FUICAgICAgICAgICA9IDBiMDAxLFxuICBTVFJJTkcgICAgICAgICAgPSAwYjAxMCxcbiAgQk9PTEVBTl9PUl9WT0lEID0gMGIwMTEsXG4gIE5FR0FUSVZFICAgICAgICA9IDBiMTAwXG59XG5cbmV4cG9ydCBjbGFzcyBXcml0ZU9ubHlDb25zdGFudHMgaW1wbGVtZW50cyBDb21waWxlVGltZUNvbnN0YW50cyB7XG4gIC8vIGAwYCBtZWFucyBOVUxMXG5cbiAgcHJvdGVjdGVkIHN0cmluZ3M6IHN0cmluZ1tdID0gW107XG4gIHByb3RlY3RlZCBhcnJheXM6IG51bWJlcltdW10gfCBFTVBUWV9BUlJBWSA9IFtXRUxMX0tOT1dfRU1QVFlfQVJSQVldO1xuICBwcm90ZWN0ZWQgdGFibGVzOiBTeW1ib2xUYWJsZVtdID0gW107XG4gIHByb3RlY3RlZCBoYW5kbGVzOiBudW1iZXJbXSA9IFtdO1xuICBwcm90ZWN0ZWQgc2VyaWFsaXphYmxlczogT3BhcXVlW10gPSBbXTtcbiAgcHJvdGVjdGVkIHJlc29sdmVkOiBPcGFxdWVbXSA9IFtdO1xuICBwcm90ZWN0ZWQgZmxvYXRzOiBudW1iZXJbXSA9IFtdO1xuICBwcm90ZWN0ZWQgbmVnYXRpdmVzOiBudW1iZXJbXSA9IFtdO1xuXG4gIGZsb2F0KGZsb2F0OiBudW1iZXIpIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLmZsb2F0cy5pbmRleE9mKGZsb2F0KTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZmxvYXRzLnB1c2goZmxvYXQpIC0gMTtcbiAgfVxuXG4gIG5lZ2F0aXZlKG5lZ2F0aXZlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGl2ZXMucHVzaChuZWdhdGl2ZSkgLSAxO1xuICB9XG5cbiAgc3RyaW5nKHZhbHVlOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGxldCBpbmRleCA9IHRoaXMuc3RyaW5ncy5pbmRleE9mKHZhbHVlKTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaW5ncy5wdXNoKHZhbHVlKSAtIDE7XG4gIH1cblxuICBzdHJpbmdBcnJheShzdHJpbmdzOiBzdHJpbmdbXSk6IG51bWJlciB7XG4gICAgbGV0IF9zdHJpbmdzOiBudW1iZXJbXSA9IG5ldyBBcnJheShzdHJpbmdzLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0cmluZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIF9zdHJpbmdzW2ldID0gdGhpcy5zdHJpbmcoc3RyaW5nc1tpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXJyYXkoX3N0cmluZ3MpO1xuICB9XG5cbiAgYXJyYXkodmFsdWVzOiBudW1iZXJbXSk6IG51bWJlciB7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBXRUxMX0tOT1dOX0VNUFRZX0FSUkFZX1BPU0lUSU9OO1xuICAgIH1cblxuICAgIGxldCBpbmRleCA9ICh0aGlzLmFycmF5cyBhcyBudW1iZXJbXVtdKS5pbmRleE9mKHZhbHVlcyk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIHJldHVybiAodGhpcy5hcnJheXMgYXMgbnVtYmVyW11bXSkucHVzaCh2YWx1ZXMpIC0gMTtcbiAgfVxuXG4gIHRhYmxlKHQ6IFN5bWJvbFRhYmxlKTogbnVtYmVyIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLnRhYmxlcy5pbmRleE9mKHQpO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50YWJsZXMucHVzaCh0KSAtIDE7XG4gIH1cblxuICBoYW5kbGUoaGFuZGxlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHRoaXMucmVzb2x2ZWQucHVzaChVTlJFU09MVkVEKTtcbiAgICByZXR1cm4gdGhpcy5oYW5kbGVzLnB1c2goaGFuZGxlKTtcbiAgfVxuXG4gIHNlcmlhbGl6YWJsZSh2YWx1ZTogT3BhcXVlKTogbnVtYmVyIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLnNlcmlhbGl6YWJsZXMuaW5kZXhPZih2YWx1ZSk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6YWJsZXMucHVzaCh2YWx1ZSkgLSAxO1xuICB9XG5cbiAgdG9Qb29sKCk6IENvbnN0YW50UG9vbCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0cmluZ3M6IHRoaXMuc3RyaW5ncyxcbiAgICAgIGFycmF5czogdGhpcy5hcnJheXMsXG4gICAgICB0YWJsZXM6IHRoaXMudGFibGVzLFxuICAgICAgaGFuZGxlczogdGhpcy5oYW5kbGVzLFxuICAgICAgc2VyaWFsaXphYmxlczogdGhpcy5zZXJpYWxpemFibGVzLFxuICAgICAgZmxvYXRzOiB0aGlzLmZsb2F0cyxcbiAgICAgIG5lZ2F0aXZlczogdGhpcy5uZWdhdGl2ZXNcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSdW50aW1lQ29uc3RhbnRzPFRlbXBsYXRlTWV0YT4ge1xuICBwcm90ZWN0ZWQgc3RyaW5nczogc3RyaW5nW107XG4gIHByb3RlY3RlZCBhcnJheXM6IG51bWJlcltdW10gfCBFTVBUWV9BUlJBWTtcbiAgcHJvdGVjdGVkIHRhYmxlczogU3ltYm9sVGFibGVbXTtcbiAgcHJvdGVjdGVkIGhhbmRsZXM6IG51bWJlcltdO1xuICBwcm90ZWN0ZWQgc2VyaWFsaXphYmxlczogT3BhcXVlW107XG4gIHByb3RlY3RlZCByZXNvbHZlZDogT3BhcXVlW107XG4gIHByb3RlY3RlZCBmbG9hdHM6IG51bWJlcltdO1xuICBwcm90ZWN0ZWQgbmVnYXRpdmVzOiBudW1iZXJbXTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVzb2x2ZXI6IFJ1bnRpbWVSZXNvbHZlcjxUZW1wbGF0ZU1ldGE+LCBwb29sOiBDb25zdGFudFBvb2wpIHtcbiAgICB0aGlzLnN0cmluZ3MgPSBwb29sLnN0cmluZ3M7XG4gICAgdGhpcy5hcnJheXMgPSBwb29sLmFycmF5cztcbiAgICB0aGlzLnRhYmxlcyA9IHBvb2wudGFibGVzO1xuICAgIHRoaXMuaGFuZGxlcyA9IHBvb2wuaGFuZGxlcztcbiAgICB0aGlzLnNlcmlhbGl6YWJsZXMgPSBwb29sLnNlcmlhbGl6YWJsZXM7XG4gICAgdGhpcy5mbG9hdHMgPSBwb29sLmZsb2F0cztcbiAgICB0aGlzLm5lZ2F0aXZlcyA9IHBvb2wubmVnYXRpdmVzO1xuICAgIHRoaXMucmVzb2x2ZWQgPSB0aGlzLmhhbmRsZXMubWFwKCgpID0+IFVOUkVTT0xWRUQpO1xuICB9XG5cbiAgLy8gYDBgIG1lYW5zIE5VTExcblxuICBnZXRGbG9hdCh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5mbG9hdHNbdmFsdWVdO1xuICB9XG5cbiAgZ2V0TmVnYXRpdmUodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRpdmVzW3ZhbHVlXTtcbiAgfVxuXG4gIGdldFN0cmluZyh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmdzW3ZhbHVlXTtcbiAgfVxuXG4gIGdldFN0cmluZ0FycmF5KHZhbHVlOiBudW1iZXIpOiBzdHJpbmdbXSB7XG4gICAgbGV0IG5hbWVzID0gdGhpcy5nZXRBcnJheSh2YWx1ZSk7XG4gICAgbGV0IF9uYW1lczogc3RyaW5nW10gPSBuZXcgQXJyYXkobmFtZXMubGVuZ3RoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBuID0gbmFtZXNbaV07XG4gICAgICBfbmFtZXNbaV0gPSB0aGlzLmdldFN0cmluZyhuKTtcbiAgICB9XG5cbiAgICByZXR1cm4gX25hbWVzO1xuICB9XG5cbiAgZ2V0QXJyYXkodmFsdWU6IG51bWJlcik6IG51bWJlcltdIHtcbiAgICByZXR1cm4gKHRoaXMuYXJyYXlzIGFzIG51bWJlcltdW10pW3ZhbHVlXTtcbiAgfVxuXG4gIGdldFN5bWJvbFRhYmxlPFQgZXh0ZW5kcyBTeW1ib2xUYWJsZT4odmFsdWU6IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnRhYmxlc1t2YWx1ZV0gYXMgVDtcbiAgfVxuXG4gIHJlc29sdmVIYW5kbGU8VD4oczogbnVtYmVyKTogVCB7XG4gICAgbGV0IGluZGV4ID0gcyAtIDE7XG4gICAgbGV0IHJlc29sdmVkID0gdGhpcy5yZXNvbHZlZFtpbmRleF07XG5cbiAgICBpZiAocmVzb2x2ZWQgPT09IFVOUkVTT0xWRUQpIHtcbiAgICAgIGxldCBoYW5kbGUgPSB0aGlzLmhhbmRsZXNbaW5kZXhdO1xuICAgICAgcmVzb2x2ZWQgPSB0aGlzLnJlc29sdmVkW2luZGV4XSA9IHRoaXMucmVzb2x2ZXIucmVzb2x2ZShoYW5kbGUpO1xuICAgIH1cblxuICAgIHJldHVybiByZXNvbHZlZCBhcyBUO1xuICB9XG5cbiAgZ2V0U2VyaWFsaXphYmxlPFQ+KHM6IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6YWJsZXNbc10gYXMgVDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29uc3RhbnRzPFRlbXBsYXRlTWV0YT4gZXh0ZW5kcyBXcml0ZU9ubHlDb25zdGFudHMge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVzb2x2ZXI6IFJ1bnRpbWVSZXNvbHZlcjxUZW1wbGF0ZU1ldGE+LCBwb29sPzogQ29uc3RhbnRQb29sKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGlmIChwb29sKSB7XG4gICAgICB0aGlzLnN0cmluZ3MgPSBwb29sLnN0cmluZ3M7XG4gICAgICB0aGlzLmFycmF5cyA9IHBvb2wuYXJyYXlzO1xuICAgICAgdGhpcy50YWJsZXMgPSBwb29sLnRhYmxlcztcbiAgICAgIHRoaXMuaGFuZGxlcyA9IHBvb2wuaGFuZGxlcztcbiAgICAgIHRoaXMuc2VyaWFsaXphYmxlcyA9IHBvb2wuc2VyaWFsaXphYmxlcztcbiAgICAgIHRoaXMuZmxvYXRzID0gcG9vbC5mbG9hdHM7XG4gICAgICB0aGlzLm5lZ2F0aXZlcyA9IHBvb2wubmVnYXRpdmVzO1xuICAgICAgdGhpcy5yZXNvbHZlZCA9IHRoaXMuaGFuZGxlcy5tYXAoKCkgPT4gVU5SRVNPTFZFRCk7XG4gICAgfVxuICB9XG5cbiAgLy8gYDBgIG1lYW5zIE5VTExcbiAgZ2V0RmxvYXQodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZmxvYXRzW3ZhbHVlXTtcbiAgfVxuXG4gIGdldE5lZ2F0aXZlKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm5lZ2F0aXZlc1t2YWx1ZV07XG4gIH1cblxuICBnZXRTdHJpbmcodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3RyaW5nc1t2YWx1ZV07XG4gIH1cblxuICBnZXRTdHJpbmdBcnJheSh2YWx1ZTogbnVtYmVyKTogc3RyaW5nW10ge1xuICAgIGxldCBuYW1lcyA9IHRoaXMuZ2V0QXJyYXkodmFsdWUpO1xuICAgIGxldCBfbmFtZXM6IHN0cmluZ1tdID0gbmV3IEFycmF5KG5hbWVzLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgbiA9IG5hbWVzW2ldO1xuICAgICAgX25hbWVzW2ldID0gdGhpcy5nZXRTdHJpbmcobik7XG4gICAgfVxuXG4gICAgcmV0dXJuIF9uYW1lcztcbiAgfVxuXG4gIGdldEFycmF5KHZhbHVlOiBudW1iZXIpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuICh0aGlzLmFycmF5cyBhcyBudW1iZXJbXVtdKVt2YWx1ZV07XG4gIH1cblxuICBnZXRTeW1ib2xUYWJsZTxUIGV4dGVuZHMgU3ltYm9sVGFibGU+KHZhbHVlOiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZXNbdmFsdWVdIGFzIFQ7XG4gIH1cblxuICByZXNvbHZlSGFuZGxlPFQ+KHM6IG51bWJlcik6IFQge1xuICAgIGxldCBpbmRleCA9IHMgLSAxO1xuICAgIGxldCByZXNvbHZlZCA9IHRoaXMucmVzb2x2ZWRbaW5kZXhdO1xuXG4gICAgaWYgKHJlc29sdmVkID09PSBVTlJFU09MVkVEKSB7XG4gICAgICBsZXQgaGFuZGxlID0gdGhpcy5oYW5kbGVzW2luZGV4XTtcbiAgICAgIHJlc29sdmVkID0gdGhpcy5yZXNvbHZlZFtpbmRleF0gPSB0aGlzLnJlc29sdmVyLnJlc29sdmUoaGFuZGxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzb2x2ZWQgYXMgVDtcbiAgfVxuXG4gIGdldFNlcmlhbGl6YWJsZTxUPihzOiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zZXJpYWxpemFibGVzW3NdIGFzIFQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIExhenlDb25zdGFudHMgZXh0ZW5kcyBDb25zdGFudHM8T3BhcXVlPiB7XG4gIHByaXZhdGUgb3RoZXJzOiBPcGFxdWVbXSA9IFtdO1xuXG4gIGdldE90aGVyPFQ+KHZhbHVlOiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5vdGhlcnNbdmFsdWUgLSAxXSBhcyBUO1xuICB9XG5cbiAgb3RoZXIob3RoZXI6IE9wYXF1ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMub3RoZXJzLnB1c2gob3RoZXIpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBIZWFwIH0gZnJvbSAnLi9wcm9ncmFtJztcbmltcG9ydCB7IFRZUEVfTUFTSywgT1BFUkFORF9MRU5fTUFTSywgQVJHX1NISUZUIH0gZnJvbSBcIkBnbGltbWVyL2VuY29kZXJcIjtcblxuZXhwb3J0IGNsYXNzIE9wY29kZSB7XG4gIHB1YmxpYyBvZmZzZXQgPSAwO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGhlYXA6IEhlYXApIHt9XG5cbiAgZ2V0IHNpemUoKSB7XG4gICAgbGV0IHJhd1R5cGUgPSB0aGlzLmhlYXAuZ2V0YnlhZGRyKHRoaXMub2Zmc2V0KTtcbiAgICByZXR1cm4gKChyYXdUeXBlICYgT1BFUkFORF9MRU5fTUFTSykgPj4gQVJHX1NISUZUKSArIDE7XG4gIH1cblxuICBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gKHRoaXMuaGVhcC5nZXRieWFkZHIodGhpcy5vZmZzZXQpICYgVFlQRV9NQVNLKTtcbiAgfVxuXG4gIGdldCBvcDEoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVhcC5nZXRieWFkZHIodGhpcy5vZmZzZXQgKyAxKTtcbiAgfVxuXG4gIGdldCBvcDIoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVhcC5nZXRieWFkZHIodGhpcy5vZmZzZXQgKyAyKTtcbiAgfVxuXG4gIGdldCBvcDMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVhcC5nZXRieWFkZHIodGhpcy5vZmZzZXQgKyAzKTtcbiAgfVxufVxuIiwiXG5pbXBvcnQgeyBDb21waWxlVGltZVByb2dyYW0sIFJlY2FzdCwgVk1IYW5kbGUsIFJ1bnRpbWVSZXNvbHZlciB9IGZyb20gXCJAZ2xpbW1lci9pbnRlcmZhY2VzXCI7XG5pbXBvcnQgeyBERUJVRyB9IGZyb20gXCJAZ2xpbW1lci9sb2NhbC1kZWJ1Zy1mbGFnc1wiO1xuaW1wb3J0IHsgQ29uc3RhbnRzLCBXcml0ZU9ubHlDb25zdGFudHMsIFJ1bnRpbWVDb25zdGFudHMsIENvbnN0YW50UG9vbCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IE9wY29kZSB9IGZyb20gJy4vb3Bjb2RlJztcblxuZW51bSBUYWJsZVNsb3RTdGF0ZSB7XG4gIEFsbG9jYXRlZCxcbiAgRnJlZWQsXG4gIFB1cmdlZCxcbiAgUG9pbnRlclxufVxuXG5jb25zdCBFTlRSWV9TSVpFID0gMjtcbmNvbnN0IElORk9fT0ZGU0VUID0gMTtcbmNvbnN0IFNJWkVfTUFTSyA9ICAwYjAwMDAwMDAwMDAwMDAwMDAxMTExMTExMTExMTExMTExO1xuY29uc3QgU0NPUEVfTUFTSyA9IDBiMDAxMTExMTExMTExMTExMTAwMDAwMDAwMDAwMDAwMDA7XG5jb25zdCBTVEFURV9NQVNLID0gMGIxMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDtcblxuZnVuY3Rpb24gZW5jb2RlVGFibGVJbmZvKHNpemU6IG51bWJlciwgc2NvcGVTaXplOiBudW1iZXIsIHN0YXRlOiBudW1iZXIpIHtcbiAgcmV0dXJuIHNpemUgfCAoc2NvcGVTaXplIDw8IDE2KSB8IHN0YXRlIDw8IDMwO1xufVxuXG5mdW5jdGlvbiBjaGFuZ2VTdGF0ZShpbmZvOiBudW1iZXIsIG5ld1N0YXRlOiBudW1iZXIpIHtcbiAgcmV0dXJuIGluZm8gfCBuZXdTdGF0ZSA8PCAzMDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXJpYWxpemVkSGVhcCB7XG4gIGJ1ZmZlcjogQXJyYXlCdWZmZXI7XG4gIHRhYmxlOiBudW1iZXJbXTtcbiAgaGFuZGxlOiBudW1iZXI7XG59XG5cbi8qKlxuICogVGhlIEhlYXAgaXMgcmVzcG9uc2libGUgZm9yIGR5bmFtaWNhbGx5IGFsbG9jYXRpbmdcbiAqIG1lbW9yeSBpbiB3aGljaCB3ZSByZWFkL3dyaXRlIHRoZSBWTSdzIGluc3RydWN0aW9uc1xuICogZnJvbS90by4gV2hlbiB3ZSBtYWxsb2Mgd2UgcGFzcyBvdXQgYSBWTUhhbmRsZSwgd2hpY2hcbiAqIGlzIHVzZWQgYXMgYW4gaW5kaXJlY3Qgd2F5IG9mIGFjY2Vzc2luZyB0aGUgbWVtb3J5IGR1cmluZ1xuICogZXhlY3V0aW9uIG9mIHRoZSBWTS4gSW50ZXJuYWxseSB3ZSB0cmFjayB0aGUgZGlmZmVyZW50XG4gKiByZWdpb25zIG9mIHRoZSBtZW1vcnkgaW4gYW4gaW50IGFycmF5IGtub3duIGFzIHRoZSB0YWJsZS5cbiAqXG4gKiBUaGUgdGFibGUgMzItYml0IGFsaWduZWQgYW5kIGhhcyB0aGUgZm9sbG93aW5nIGxheW91dDpcbiAqXG4gKiB8IC4uLiB8IGhwICh1MzIpIHwgICAgICAgaW5mbyAodTMyKSAgICAgICAgICB8XG4gKiB8IC4uLiB8ICBIYW5kbGUgIHwgU2l6ZSB8IFNjb3BlIFNpemUgfCBTdGF0ZSB8XG4gKiB8IC4uLiB8IDMyLWJpdHMgIHwgMTZiICB8ICAgIDE0YiAgICAgfCAgMmIgICB8XG4gKlxuICogV2l0aCB0aGlzIGluZm9ybWF0aW9uIHdlIGVmZmVjdGl2ZWx5IGhhdmUgdGhlIGFiaWxpdHkgdG9cbiAqIGNvbnRyb2wgd2hlbiB3ZSB3YW50IHRvIGZyZWUgbWVtb3J5LiBUaGF0IGJlaW5nIHNhaWQgeW91XG4gKiBjYW4gbm90IGZyZWUgZHVyaW5nIGV4ZWN1dGlvbiBhcyByYXcgYWRkcmVzcyBhcmUgb25seVxuICogdmFsaWQgZHVyaW5nIHRoZSBleGVjdXRpb24uIFRoaXMgbWVhbnMgeW91IGNhbm5vdCBjbG9zZVxuICogb3ZlciB0aGVtIGFzIHlvdSB3aWxsIGhhdmUgYSBiYWQgbWVtb3J5IGFjY2VzcyBleGNlcHRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBIZWFwIHtcbiAgcHJpdmF0ZSBoZWFwOiBVaW50MTZBcnJheSB8IEFycmF5PG51bWJlcj47XG4gIHByaXZhdGUgdGFibGU6IG51bWJlcltdO1xuICBwcml2YXRlIG9mZnNldCA9IDA7XG4gIHByaXZhdGUgaGFuZGxlID0gMDtcblxuICBjb25zdHJ1Y3RvcihzZXJpYWxpemVkSGVhcD86IFNlcmlhbGl6ZWRIZWFwKSB7XG4gICAgaWYgKHNlcmlhbGl6ZWRIZWFwKSB7XG4gICAgICBsZXQgeyBidWZmZXIsIHRhYmxlLCBoYW5kbGUgfSA9IHNlcmlhbGl6ZWRIZWFwO1xuICAgICAgdGhpcy5oZWFwID0gbmV3IFVpbnQxNkFycmF5KGJ1ZmZlcik7XG4gICAgICB0aGlzLnRhYmxlID0gdGFibGU7XG4gICAgICB0aGlzLm9mZnNldCA9IHRoaXMuaGVhcC5sZW5ndGg7XG4gICAgICB0aGlzLmhhbmRsZSA9IGhhbmRsZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oZWFwID0gbmV3IFVpbnQxNkFycmF5KDB4MTAwMDAwKTtcbiAgICAgIHRoaXMudGFibGUgPSBbXTtcbiAgICB9XG4gIH1cblxuICBwdXNoKGl0ZW06IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuaGVhcFt0aGlzLm9mZnNldCsrXSA9IGl0ZW07XG4gIH1cblxuICBnZXRieWFkZHIoYWRkcmVzczogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5oZWFwW2FkZHJlc3NdO1xuICB9XG5cbiAgc2V0YnlhZGRyKGFkZHJlc3M6IG51bWJlciwgdmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuaGVhcFthZGRyZXNzXSA9IHZhbHVlO1xuICB9XG5cbiAgbWFsbG9jKCk6IFZNSGFuZGxlIHtcbiAgICB0aGlzLnRhYmxlLnB1c2godGhpcy5vZmZzZXQsIDApO1xuICAgIGxldCBoYW5kbGUgPSB0aGlzLmhhbmRsZTtcbiAgICB0aGlzLmhhbmRsZSArPSBFTlRSWV9TSVpFO1xuICAgIHJldHVybiBoYW5kbGUgYXMgUmVjYXN0PG51bWJlciwgVk1IYW5kbGU+O1xuICB9XG5cbiAgZmluaXNoTWFsbG9jKGhhbmRsZTogVk1IYW5kbGUsIHNjb3BlU2l6ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgbGV0IHN0YXJ0ID0gdGhpcy50YWJsZVtoYW5kbGUgYXMgUmVjYXN0PFZNSGFuZGxlLCBudW1iZXI+XTtcbiAgICBsZXQgZmluaXNoID0gdGhpcy5vZmZzZXQ7XG4gICAgbGV0IGluc3RydWN0aW9uU2l6ZSA9IGZpbmlzaCAtIHN0YXJ0O1xuICAgIGxldCBpbmZvID0gZW5jb2RlVGFibGVJbmZvKGluc3RydWN0aW9uU2l6ZSwgc2NvcGVTaXplLCBUYWJsZVNsb3RTdGF0ZS5BbGxvY2F0ZWQpO1xuICAgIHRoaXMudGFibGVbKGhhbmRsZSBhcyBSZWNhc3Q8Vk1IYW5kbGUsIG51bWJlcj4pICsgSU5GT19PRkZTRVRdID0gaW5mbztcbiAgfVxuXG4gIHNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5vZmZzZXQ7XG4gIH1cblxuICAvLyBJdCBpcyBpbGxlZ2FsIHRvIGNsb3NlIG92ZXIgdGhpcyBhZGRyZXNzLCBhcyBjb21wYWN0aW9uXG4gIC8vIG1heSBtb3ZlIGl0LiBIb3dldmVyLCBpdCBpcyBsZWdhbCB0byB1c2UgdGhpcyBhZGRyZXNzXG4gIC8vIG11bHRpcGxlIHRpbWVzIGJldHdlZW4gY29tcGFjdGlvbnMuXG4gIGdldGFkZHIoaGFuZGxlOiBWTUhhbmRsZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVbaGFuZGxlIGFzIFJlY2FzdDxWTUhhbmRsZSwgbnVtYmVyPl07XG4gIH1cblxuICBnZXRoYW5kbGUoYWRkcmVzczogbnVtYmVyKTogVk1IYW5kbGUge1xuICAgIHRoaXMudGFibGUucHVzaChhZGRyZXNzLCBlbmNvZGVUYWJsZUluZm8oMCwgMCwgVGFibGVTbG90U3RhdGUuUG9pbnRlcikpO1xuICAgIGxldCBoYW5kbGUgPSB0aGlzLmhhbmRsZTtcbiAgICB0aGlzLmhhbmRsZSArPSBFTlRSWV9TSVpFO1xuICAgIHJldHVybiBoYW5kbGUgYXMgUmVjYXN0PG51bWJlciwgVk1IYW5kbGU+O1xuICB9XG5cbiAgc2l6ZW9mKGhhbmRsZTogVk1IYW5kbGUpOiBudW1iZXIge1xuICAgIGlmIChERUJVRykge1xuICAgICAgbGV0IGluZm8gPSB0aGlzLnRhYmxlWyhoYW5kbGUgYXMgUmVjYXN0PFZNSGFuZGxlLCBudW1iZXI+KSArIElORk9fT0ZGU0VUXTtcbiAgICAgIHJldHVybiBpbmZvICYgU0laRV9NQVNLO1xuICAgIH1cbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICBzY29wZXNpemVvZihoYW5kbGU6IFZNSGFuZGxlKTogbnVtYmVyIHtcbiAgICBsZXQgaW5mbyA9IHRoaXMudGFibGVbKGhhbmRsZSBhcyBSZWNhc3Q8Vk1IYW5kbGUsIG51bWJlcj4pICsgSU5GT19PRkZTRVRdO1xuICAgIHJldHVybiAoaW5mbyAmIFNDT1BFX01BU0spID4+IDE2O1xuICB9XG5cbiAgZnJlZShoYW5kbGU6IFZNSGFuZGxlKTogdm9pZCB7XG4gICAgbGV0IGluZm8gPSB0aGlzLnRhYmxlWyhoYW5kbGUgYXMgUmVjYXN0PFZNSGFuZGxlLCBudW1iZXI+KSArIElORk9fT0ZGU0VUXTtcbiAgICB0aGlzLnRhYmxlWyhoYW5kbGUgYXMgUmVjYXN0PFZNSGFuZGxlLCBudW1iZXI+KSArIElORk9fT0ZGU0VUXSA9IGNoYW5nZVN0YXRlKGluZm8sIFRhYmxlU2xvdFN0YXRlLkZyZWVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaGVhcCB1c2VzIHRoZSBbTWFyay1Db21wYWN0IEFsZ29yaXRobV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFyay1jb21wYWN0X2FsZ29yaXRobSkgdG8gc2hpZnRcbiAgICogcmVhY2hhYmxlIG1lbW9yeSB0byB0aGUgYm90dG9tIG9mIHRoZSBoZWFwIGFuZCBmcmVlYWJsZVxuICAgKiBtZW1vcnkgdG8gdGhlIHRvcCBvZiB0aGUgaGVhcC4gV2hlbiB3ZSBoYXZlIHNoaWZ0ZWQgYWxsXG4gICAqIHRoZSByZWFjaGFibGUgbWVtb3J5IHRvIHRoZSB0b3Agb2YgdGhlIGhlYXAsIHdlIG1vdmUgdGhlXG4gICAqIG9mZnNldCB0byB0aGUgbmV4dCBmcmVlIHBvc2l0aW9uLlxuICAgKi9cbiAgY29tcGFjdCgpOiB2b2lkIHtcbiAgICBsZXQgY29tcGFjdGVkU2l6ZSA9IDA7XG4gICAgbGV0IHsgdGFibGUsIHRhYmxlOiB7IGxlbmd0aCB9LCBoZWFwIH0gPSB0aGlzO1xuXG4gICAgZm9yIChsZXQgaT0wOyBpPGxlbmd0aDsgaSs9RU5UUllfU0laRSkge1xuICAgICAgbGV0IG9mZnNldCA9IHRhYmxlW2ldO1xuICAgICAgbGV0IGluZm8gPSB0YWJsZVtpICsgSU5GT19PRkZTRVRdO1xuICAgICAgbGV0IHNpemUgPSBpbmZvICYgU0laRV9NQVNLO1xuICAgICAgbGV0IHN0YXRlID0gaW5mbyAmIFNUQVRFX01BU0sgPj4gMzA7XG5cbiAgICAgIGlmIChzdGF0ZSA9PT0gVGFibGVTbG90U3RhdGUuUHVyZ2VkKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PT0gVGFibGVTbG90U3RhdGUuRnJlZWQpIHtcbiAgICAgICAgLy8gdHJhbnNpdGlvbiB0byBcImFscmVhZHkgZnJlZWRcIiBha2EgXCJwdXJnZWRcIlxuICAgICAgICAvLyBhIGdvb2QgaW1wcm92ZW1lbnQgd291bGQgYmUgdG8gcmV1c2VcbiAgICAgICAgLy8gdGhlc2Ugc2xvdHNcbiAgICAgICAgdGFibGVbaSArIElORk9fT0ZGU0VUXSA9IGNoYW5nZVN0YXRlKGluZm8sIFRhYmxlU2xvdFN0YXRlLlB1cmdlZCk7XG4gICAgICAgIGNvbXBhY3RlZFNpemUgKz0gc2l6ZTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPT09IFRhYmxlU2xvdFN0YXRlLkFsbG9jYXRlZCkge1xuICAgICAgICBmb3IgKGxldCBqPW9mZnNldDsgajw9aStzaXplOyBqKyspIHtcbiAgICAgICAgICBoZWFwW2ogLSBjb21wYWN0ZWRTaXplXSA9IGhlYXBbal07XG4gICAgICAgIH1cblxuICAgICAgICB0YWJsZVtpXSA9IG9mZnNldCAtIGNvbXBhY3RlZFNpemU7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlID09PSBUYWJsZVNsb3RTdGF0ZS5Qb2ludGVyKSB7XG4gICAgICAgIHRhYmxlW2ldID0gb2Zmc2V0IC0gY29tcGFjdGVkU2l6ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm9mZnNldCA9IHRoaXMub2Zmc2V0IC0gY29tcGFjdGVkU2l6ZTtcbiAgfVxuXG4gIGNhcHR1cmUoKTogU2VyaWFsaXplZEhlYXAge1xuICAgIC8vIE9ubHkgY2FsbGVkIGluIGVhZ2VyIG1vZGVcbiAgICBsZXQgYnVmZmVyID0gc2xpY2UodGhpcy5oZWFwLCAwLCB0aGlzLm9mZnNldCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhhbmRsZTogdGhpcy5oYW5kbGUsXG4gICAgICB0YWJsZTogdGhpcy50YWJsZSxcbiAgICAgIGJ1ZmZlcjogYnVmZmVyIGFzIEFycmF5QnVmZmVyXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgV3JpdGVPbmx5UHJvZ3JhbSBpbXBsZW1lbnRzIENvbXBpbGVUaW1lUHJvZ3JhbSB7XG4gIFtrZXk6IG51bWJlcl06IG5ldmVyO1xuXG4gIHByaXZhdGUgX29wY29kZTogT3Bjb2RlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb25zdGFudHM6IFdyaXRlT25seUNvbnN0YW50cyA9IG5ldyBXcml0ZU9ubHlDb25zdGFudHMoKSwgcHVibGljIGhlYXAgPSBuZXcgSGVhcCgpKSB7XG4gICAgdGhpcy5fb3Bjb2RlID0gbmV3IE9wY29kZSh0aGlzLmhlYXApO1xuICB9XG5cbiAgb3Bjb2RlKG9mZnNldDogbnVtYmVyKTogT3Bjb2RlIHtcbiAgICB0aGlzLl9vcGNvZGUub2Zmc2V0ID0gb2Zmc2V0O1xuICAgIHJldHVybiB0aGlzLl9vcGNvZGU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJ1bnRpbWVQcm9ncmFtPFRlbXBsYXRlTWV0YT4ge1xuICBba2V5OiBudW1iZXJdOiBuZXZlcjtcblxuICBzdGF0aWMgaHlkcmF0ZTxUZW1wbGF0ZU1ldGE+KHJhd0hlYXA6IFNlcmlhbGl6ZWRIZWFwLCBwb29sOiBDb25zdGFudFBvb2wsIHJlc29sdmVyOiBSdW50aW1lUmVzb2x2ZXI8VGVtcGxhdGVNZXRhPikge1xuICAgIGxldCBoZWFwID0gbmV3IEhlYXAocmF3SGVhcCk7XG4gICAgbGV0IGNvbnN0YW50cyA9IG5ldyBSdW50aW1lQ29uc3RhbnRzKHJlc29sdmVyLCBwb29sKTtcblxuICAgIHJldHVybiBuZXcgUnVudGltZVByb2dyYW0oY29uc3RhbnRzLCBoZWFwKTtcbiAgfVxuXG4gIHByaXZhdGUgX29wY29kZTogT3Bjb2RlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb25zdGFudHM6IFJ1bnRpbWVDb25zdGFudHM8VGVtcGxhdGVNZXRhPiwgcHVibGljIGhlYXA6IEhlYXApIHtcbiAgICB0aGlzLl9vcGNvZGUgPSBuZXcgT3Bjb2RlKHRoaXMuaGVhcCk7XG4gIH1cblxuICBvcGNvZGUob2Zmc2V0OiBudW1iZXIpOiBPcGNvZGUge1xuICAgIHRoaXMuX29wY29kZS5vZmZzZXQgPSBvZmZzZXQ7XG4gICAgcmV0dXJuIHRoaXMuX29wY29kZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJvZ3JhbTxUZW1wbGF0ZU1ldGE+IGV4dGVuZHMgV3JpdGVPbmx5UHJvZ3JhbSB7XG4gIHB1YmxpYyBjb25zdGFudHM6IENvbnN0YW50czxUZW1wbGF0ZU1ldGE+O1xufVxuXG5mdW5jdGlvbiBzbGljZShhcnI6IFVpbnQxNkFycmF5IHwgbnVtYmVyW10sIHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKSB7XG4gIGlmIChhcnIgaW5zdGFuY2VvZiBVaW50MTZBcnJheSkge1xuICAgIGlmIChhcnIuc2xpY2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGFyci5zbGljZShzdGFydCwgZW5kKS5idWZmZXI7XG4gICAgfVxuXG4gICAgbGV0IHJldCA9IG5ldyBVaW50MTZBcnJheShlbmQpO1xuXG4gICAgZm9yICg7IHN0YXJ0IDwgZW5kOyBzdGFydCsrKSB7XG4gICAgICByZXRbc3RhcnRdICA9IGFycltzdGFydF07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldC5idWZmZXI7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cbiJdLCJuYW1lcyI6WyJPUEVSQU5EX0xFTl9NQVNLIiwiQVJHX1NISUZUIiwiVFlQRV9NQVNLIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBRUEsSUFBTSxhQUFhO0FBRW5CLElBQU0sa0NBQWtDO0FBQ3hDLElBQU0sd0JBQXdCLE9BQU8sT0FBTzs7SUFxQjVDOzs7OzthQUdtQixVQUFhO2FBQ2QsU0FBNkIsQ0FBQzthQUM5QixTQUFrQjthQUNqQixVQUFhO2FBQ1AsZ0JBQWE7YUFDbEIsV0FBYTthQUNmLFNBQWE7YUFDVixZQUFhOzs7d0RBRTFCLFFBQ0o7WUFBSSxRQUFRLEtBQUssT0FBTyxRQUFRO1lBRTVCLFFBQVEsQ0FBQyxHQUFHO21CQUNQOztlQUdGLEtBQUssT0FBTyxLQUFLLFVBQVM7Ozs4REFHMUIsV0FDUDtlQUFPLEtBQUssVUFBVSxLQUFLLGFBQVk7OzswREFHbEMsT0FDTDtZ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

2

dist/commonjs/es2017/lib/constants.js

@@ -204,2 +204,2 @@ "use strict";

exports.LazyConstants = LazyConstants;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvQGdsaW1tZXIvcHJvZ3JhbS9saWIvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsTUFBTSxBQUFVLGFBQUcsQUFBRSxBQUFDO0FBRXRCLE1BQU0sQUFBK0Isa0NBQUcsQUFBQyxBQUFDO0FBQzFDLE1BQU0sQUFBcUIsd0JBQUcsQUFBTSxPQUFDLEFBQU0sT0FBQyxBQUFFLEFBQUMsQUFBQyxBQXFCaEQsQUFBTTs7a0JBQ0osQUFBaUI7QUFFUDthQUFPLFVBQWEsQUFBRSxBQUFDLEFBQ3ZCO2FBQU0sU0FBNkIsQ0FBQyxBQUFxQixBQUFDLEFBQUMsQUFDM0Q7YUFBTSxTQUFrQixBQUFFLEFBQUMsQUFDM0I7YUFBTyxVQUFhLEFBQUUsQUFBQyxBQUN2QjthQUFhLGdCQUFhLEFBQUUsQUFBQyxBQUM3QjthQUFRLFdBQWEsQUFBRSxBQUFDLEFBQ3hCO2FBQU0sU0FBYSxBQUFFLEFBQUMsQUFDdEI7YUFBUyxZQUFhLEFBQUUsQUFBQyxBQXNGckMsQUFBQztBQXBGQyxBQUFLO1VBQUMsQUFBYSxPQUNqQjtZQUFJLEFBQUssUUFBRyxBQUFJLEtBQUMsQUFBTSxPQUFDLEFBQU8sUUFBQyxBQUFLLEFBQUMsQUFBQyxBQUV2QyxBQUFFLEFBQUM7WUFBQyxBQUFLLFFBQUcsQ0FBQyxBQUFDLEFBQUMsR0FBQyxBQUFDLEFBQ2YsQUFBTTttQkFBQyxBQUFLLEFBQUMsQUFDZixBQUFDO0FBRUQsQUFBTTtlQUFDLEFBQUksS0FBQyxBQUFNLE9BQUMsQUFBSSxLQUFDLEFBQUssQUFBQyxTQUFHLEFBQUMsQUFBQyxBQUNyQyxBQUFDO0FBRUQsQUFBUTthQUFDLEFBQWdCLFVBQ3ZCLEFBQU07ZUFBQyxBQUFJLEtBQUMsQUFBUyxVQUFDLEFBQUksS0FBQyxBQUFRLEFBQUMsWUFBRyxBQUFDLEFBQUMsQUFDM0MsQUFBQztBQUVELEFBQU07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QUFBQztBQUVELEFBQWU7b0JBQUksQUFBUyxHQUMxQixBQUFNO2VBQUMsQUFBSSxLQUFDLEFBQWEsY0FBQyxBQUFDLEFBQU0sQUFBQyxBQUNwQyxBQUFDLEFBQ0Y7QUFFRCxBQUFNO0FBakVKOztNQWlFeUIsc0JBQVEsQUFBaUI7O2lCQUMxQzthQUFNLFNBQWEsQUFBRSxBQUFDLEFBU2hDLEFBQUM7QUFQQyxBQUFRO2FBQUksQUFBYSxPQUN2QixBQUFNO2VBQUMsQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFLLFFBQUcsQUFBQyxBQUFNLEFBQUMsQUFDckMsQUFBQztBQUVELEFBQUs7VUFBQyxBQUFhLE9BQ2pCLEFBQU07ZUFBQyxBQUFJLEtBQUMsQUFBTSxPQUFDLEFBQUksS0FBQyxBQUFLLEFBQUMsQUFBQyxBQUNqQyxBQUFDLEFBQ0Y7O0FBVkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcGFxdWUsIFN5bWJvbFRhYmxlLCBSdW50aW1lUmVzb2x2ZXIsIENvbXBpbGVUaW1lQ29uc3RhbnRzIH0gZnJvbSBcIkBnbGltbWVyL2ludGVyZmFjZXNcIjtcblxuY29uc3QgVU5SRVNPTFZFRCA9IHt9O1xuXG5jb25zdCBXRUxMX0tOT1dOX0VNUFRZX0FSUkFZX1BPU0lUSU9OID0gMDtcbmNvbnN0IFdFTExfS05PV19FTVBUWV9BUlJBWSA9IE9iamVjdC5mcmVlemUoW10pO1xuZXhwb3J0IHR5cGUgRU1QVFlfQVJSQVkgPSBBcnJheTxSZWFkb25seUFycmF5PG5ldmVyPj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3RhbnRQb29sIHtcbiAgc3RyaW5nczogc3RyaW5nW107XG4gIGFycmF5czogbnVtYmVyW11bXSB8IEVNUFRZX0FSUkFZO1xuICB0YWJsZXM6IFN5bWJvbFRhYmxlW107XG4gIGhhbmRsZXM6IG51bWJlcltdO1xuICBzZXJpYWxpemFibGVzOiBPcGFxdWVbXTtcbiAgZmxvYXRzOiBudW1iZXJbXTtcbiAgbmVnYXRpdmVzOiBudW1iZXJbXTtcbn1cblxuZXhwb3J0IGNvbnN0IGVudW0gUHJpbWl0aXZlVHlwZSB7XG4gIE5VTUJFUiAgICAgICAgICA9IDBiMDAwLFxuICBGTE9BVCAgICAgICAgICAgPSAwYjAwMSxcbiAgU1RSSU5HICAgICAgICAgID0gMGIwMTAsXG4gIEJPT0xFQU5fT1JfVk9JRCA9IDBiMDExLFxuICBORUdBVElWRSAgICAgICAgPSAwYjEwMFxufVxuXG5leHBvcnQgY2xhc3MgV3JpdGVPbmx5Q29uc3RhbnRzIGltcGxlbWVudHMgQ29tcGlsZVRpbWVDb25zdGFudHMge1xuICAvLyBgMGAgbWVhbnMgTlVMTFxuXG4gIHByb3RlY3RlZCBzdHJpbmdzOiBzdHJpbmdbXSA9IFtdO1xuICBwcm90ZWN0ZWQgYXJyYXlzOiBudW1iZXJbXVtdIHwgRU1QVFlfQVJSQVkgPSBbV0VMTF9LTk9XX0VNUFRZX0FSUkFZXTtcbiAgcHJvdGVjdGVkIHRhYmxlczogU3ltYm9sVGFibGVbXSA9IFtdO1xuICBwcm90ZWN0ZWQgaGFuZGxlczogbnVtYmVyW10gPSBbXTtcbiAgcHJvdGVjdGVkIHNlcmlhbGl6YWJsZXM6IE9wYXF1ZVtdID0gW107XG4gIHByb3RlY3RlZCByZXNvbHZlZDogT3BhcXVlW10gPSBbXTtcbiAgcHJvdGVjdGVkIGZsb2F0czogbnVtYmVyW10gPSBbXTtcbiAgcHJvdGVjdGVkIG5lZ2F0aXZlczogbnVtYmVyW10gPSBbXTtcblxuICBmbG9hdChmbG9hdDogbnVtYmVyKSB7XG4gICAgbGV0IGluZGV4ID0gdGhpcy5mbG9hdHMuaW5kZXhPZihmbG9hdCk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmZsb2F0cy5wdXNoKGZsb2F0KSAtIDE7XG4gIH1cblxuICBuZWdhdGl2ZShuZWdhdGl2ZTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRpdmVzLnB1c2gobmVnYXRpdmUpIC0gMTtcbiAgfVxuXG4gIHN0cmluZyh2YWx1ZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLnN0cmluZ3MuaW5kZXhPZih2YWx1ZSk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmluZ3MucHVzaCh2YWx1ZSkgLSAxO1xuICB9XG5cbiAgc3RyaW5nQXJyYXkoc3RyaW5nczogc3RyaW5nW10pOiBudW1iZXIge1xuICAgIGxldCBfc3RyaW5nczogbnVtYmVyW10gPSBuZXcgQXJyYXkoc3RyaW5ncy5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHJpbmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBfc3RyaW5nc1tpXSA9IHRoaXMuc3RyaW5nKHN0cmluZ3NbaV0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFycmF5KF9zdHJpbmdzKTtcbiAgfVxuXG4gIGFycmF5KHZhbHVlczogbnVtYmVyW10pOiBudW1iZXIge1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gV0VMTF9LTk9XTl9FTVBUWV9BUlJBWV9QT1NJVElPTjtcbiAgICB9XG5cbiAgICBsZXQgaW5kZXggPSAodGhpcy5hcnJheXMgYXMgbnVtYmVyW11bXSkuaW5kZXhPZih2YWx1ZXMpO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICByZXR1cm4gKHRoaXMuYXJyYXlzIGFzIG51bWJlcltdW10pLnB1c2godmFsdWVzKSAtIDE7XG4gIH1cblxuICB0YWJsZSh0OiBTeW1ib2xUYWJsZSk6IG51bWJlciB7XG4gICAgbGV0IGluZGV4ID0gdGhpcy50YWJsZXMuaW5kZXhPZih0KTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudGFibGVzLnB1c2godCkgLSAxO1xuICB9XG5cbiAgaGFuZGxlKGhhbmRsZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICB0aGlzLnJlc29sdmVkLnB1c2goVU5SRVNPTFZFRCk7XG4gICAgcmV0dXJuIHRoaXMuaGFuZGxlcy5wdXNoKGhhbmRsZSk7XG4gIH1cblxuICBzZXJpYWxpemFibGUodmFsdWU6IE9wYXF1ZSk6IG51bWJlciB7XG4gICAgbGV0IGluZGV4ID0gdGhpcy5zZXJpYWxpemFibGVzLmluZGV4T2YodmFsdWUpO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zZXJpYWxpemFibGVzLnB1c2godmFsdWUpIC0gMTtcbiAgfVxuXG4gIHRvUG9vbCgpOiBDb25zdGFudFBvb2wge1xuICAgIHJldHVybiB7XG4gICAgICBzdHJpbmdzOiB0aGlzLnN0cmluZ3MsXG4gICAgICBhcnJheXM6IHRoaXMuYXJyYXlzLFxuICAgICAgdGFibGVzOiB0aGlzLnRhYmxlcyxcbiAgICAgIGhhbmRsZXM6IHRoaXMuaGFuZGxlcyxcbiAgICAgIHNlcmlhbGl6YWJsZXM6IHRoaXMuc2VyaWFsaXphYmxlcyxcbiAgICAgIGZsb2F0czogdGhpcy5mbG9hdHMsXG4gICAgICBuZWdhdGl2ZXM6IHRoaXMubmVnYXRpdmVzXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUnVudGltZUNvbnN0YW50czxTcGVjaWZpZXI+IHtcbiAgcHJvdGVjdGVkIHN0cmluZ3M6IHN0cmluZ1tdO1xuICBwcm90ZWN0ZWQgYXJyYXlzOiBudW1iZXJbXVtdIHwgRU1QVFlfQVJSQVk7XG4gIHByb3RlY3RlZCB0YWJsZXM6IFN5bWJvbFRhYmxlW107XG4gIHByb3RlY3RlZCBoYW5kbGVzOiBudW1iZXJbXTtcbiAgcHJvdGVjdGVkIHNlcmlhbGl6YWJsZXM6IE9wYXF1ZVtdO1xuICBwcm90ZWN0ZWQgcmVzb2x2ZWQ6IE9wYXF1ZVtdO1xuICBwcm90ZWN0ZWQgZmxvYXRzOiBudW1iZXJbXTtcbiAgcHJvdGVjdGVkIG5lZ2F0aXZlczogbnVtYmVyW107XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlc29sdmVyOiBSdW50aW1lUmVzb2x2ZXI8U3BlY2lmaWVyPiwgcG9vbDogQ29uc3RhbnRQb29sKSB7XG4gICAgdGhpcy5zdHJpbmdzID0gcG9vbC5zdHJpbmdzO1xuICAgIHRoaXMuYXJyYXlzID0gcG9vbC5hcnJheXM7XG4gICAgdGhpcy50YWJsZXMgPSBwb29sLnRhYmxlcztcbiAgICB0aGlzLmhhbmRsZXMgPSBwb29sLmhhbmRsZXM7XG4gICAgdGhpcy5zZXJpYWxpemFibGVzID0gcG9vbC5zZXJpYWxpemFibGVzO1xuICAgIHRoaXMuZmxvYXRzID0gcG9vbC5mbG9hdHM7XG4gICAgdGhpcy5uZWdhdGl2ZXMgPSBwb29sLm5lZ2F0aXZlcztcbiAgICB0aGlzLnJlc29sdmVkID0gdGhpcy5oYW5kbGVzLm1hcCgoKSA9PiBVTlJFU09MVkVEKTtcbiAgfVxuXG4gIC8vIGAwYCBtZWFucyBOVUxMXG5cbiAgZ2V0RmxvYXQodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZmxvYXRzW3ZhbHVlXTtcbiAgfVxuXG4gIGdldE5lZ2F0aXZlKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm5lZ2F0aXZlc1t2YWx1ZV07XG4gIH1cblxuICBnZXRTdHJpbmcodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3RyaW5nc1t2YWx1ZV07XG4gIH1cblxuICBnZXRTdHJpbmdBcnJheSh2YWx1ZTogbnVtYmVyKTogc3RyaW5nW10ge1xuICAgIGxldCBuYW1lcyA9IHRoaXMuZ2V0QXJyYXkodmFsdWUpO1xuICAgIGxldCBfbmFtZXM6IHN0cmluZ1tdID0gbmV3IEFycmF5KG5hbWVzLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgbiA9IG5hbWVzW2ldO1xuICAgICAgX25hbWVzW2ldID0gdGhpcy5nZXRTdHJpbmcobik7XG4gICAgfVxuXG4gICAgcmV0dXJuIF9uYW1lcztcbiAgfVxuXG4gIGdldEFycmF5KHZhbHVlOiBudW1iZXIpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuICh0aGlzLmFycmF5cyBhcyBudW1iZXJbXVtdKVt2YWx1ZV07XG4gIH1cblxuICBnZXRTeW1ib2xUYWJsZTxUIGV4dGVuZHMgU3ltYm9sVGFibGU+KHZhbHVlOiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZXNbdmFsdWVdIGFzIFQ7XG4gIH1cblxuICByZXNvbHZlSGFuZGxlPFQ+KHM6IG51bWJlcik6IFQge1xuICAgIGxldCBpbmRleCA9IHMgLSAxO1xuICAgIGxldCByZXNvbHZlZCA9IHRoaXMucmVzb2x2ZWRbaW5kZXhdO1xuXG4gICAgaWYgKHJlc29sdmVkID09PSBVTlJFU09MVkVEKSB7XG4gICAgICBsZXQgaGFuZGxlID0gdGhpcy5oYW5kbGVzW2luZGV4XTtcbiAgICAgIHJlc29sdmVkID0gdGhpcy5yZXNvbHZlZFtpbmRleF0gPSB0aGlzLnJlc29sdmVyLnJlc29sdmUoaGFuZGxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzb2x2ZWQgYXMgVDtcbiAgfVxuXG4gIGdldFNlcmlhbGl6YWJsZTxUPihzOiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zZXJpYWxpemFibGVzW3NdIGFzIFQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbnN0YW50czxTcGVjaWZpZXI+IGV4dGVuZHMgV3JpdGVPbmx5Q29uc3RhbnRzIHtcbiAgY29uc3RydWN0b3IocHVibGljIHJlc29sdmVyOiBSdW50aW1lUmVzb2x2ZXI8U3BlY2lmaWVyPiwgcG9vbD86IENvbnN0YW50UG9vbCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBpZiAocG9vbCkge1xuICAgICAgdGhpcy5zdHJpbmdzID0gcG9vbC5zdHJpbmdzO1xuICAgICAgdGhpcy5hcnJheXMgPSBwb29sLmFycmF5cztcbiAgICAgIHRoaXMudGFibGVzID0gcG9vbC50YWJsZXM7XG4gICAgICB0aGlzLmhhbmRsZXMgPSBwb29sLmhhbmRsZXM7XG4gICAgICB0aGlzLnNlcmlhbGl6YWJsZXMgPSBwb29sLnNlcmlhbGl6YWJsZXM7XG4gICAgICB0aGlzLmZsb2F0cyA9IHBvb2wuZmxvYXRzO1xuICAgICAgdGhpcy5uZWdhdGl2ZXMgPSBwb29sLm5lZ2F0aXZlcztcbiAgICAgIHRoaXMucmVzb2x2ZWQgPSB0aGlzLmhhbmRsZXMubWFwKCgpID0+IFVOUkVTT0xWRUQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGAwYCBtZWFucyBOVUxMXG4gIGdldEZsb2F0KHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmZsb2F0c1t2YWx1ZV07XG4gIH1cblxuICBnZXROZWdhdGl2ZSh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGl2ZXNbdmFsdWVdO1xuICB9XG5cbiAgZ2V0U3RyaW5nKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnN0cmluZ3NbdmFsdWVdO1xuICB9XG5cbiAgZ2V0U3RyaW5nQXJyYXkodmFsdWU6IG51bWJlcik6IHN0cmluZ1tdIHtcbiAgICBsZXQgbmFtZXMgPSB0aGlzLmdldEFycmF5KHZhbHVlKTtcbiAgICBsZXQgX25hbWVzOiBzdHJpbmdbXSA9IG5ldyBBcnJheShuYW1lcy5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IG4gPSBuYW1lc1tpXTtcbiAgICAgIF9uYW1lc1tpXSA9IHRoaXMuZ2V0U3RyaW5nKG4pO1xuICAgIH1cblxuICAgIHJldHVybiBfbmFtZXM7XG4gIH1cblxuICBnZXRBcnJheSh2YWx1ZTogbnVtYmVyKTogbnVtYmVyW10ge1xuICAgIHJldHVybiAodGhpcy5hcnJheXMgYXMgbnVtYmVyW11bXSlbdmFsdWVdO1xuICB9XG5cbiAgZ2V0U3ltYm9sVGFibGU8VCBleHRlbmRzIFN5bWJvbFRhYmxlPih2YWx1ZTogbnVtYmVyKTogVCB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVzW3ZhbHVlXSBhcyBUO1xuICB9XG5cbiAgcmVzb2x2ZUhhbmRsZTxUPihzOiBudW1iZXIpOiBUIHtcbiAgICBsZXQgaW5kZXggPSBzIC0gMTtcbiAgICBsZXQgcmVzb2x2ZWQgPSB0aGlzLnJlc29sdmVkW2luZGV4XTtcblxuICAgIGlmIChyZXNvbHZlZCA9PT0gVU5SRVNPTFZFRCkge1xuICAgICAgbGV0IGhhbmRsZSA9IHRoaXMuaGFuZGxlc1tpbmRleF07XG4gICAgICByZXNvbHZlZCA9IHRoaXMucmVzb2x2ZWRbaW5kZXhdID0gdGhpcy5yZXNvbHZlci5yZXNvbHZlKGhhbmRsZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc29sdmVkIGFzIFQ7XG4gIH1cblxuICBnZXRTZXJpYWxpemFibGU8VD4oczogbnVtYmVyKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuc2VyaWFsaXphYmxlc1tzXSBhcyBUO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMYXp5Q29uc3RhbnRzIGV4dGVuZHMgQ29uc3RhbnRzPE9wYXF1ZT4ge1xuICBwcml2YXRlIG90aGVyczogT3BhcXVlW10gPSBbXTtcblxuICBnZXRPdGhlcjxUPih2YWx1ZTogbnVtYmVyKTogVCB7XG4gICAgcmV0dXJuIHRoaXMub3RoZXJzW3ZhbHVlIC0gMV0gYXMgVDtcbiAgfVxuXG4gIG90aGVyKG90aGVyOiBPcGFxdWUpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm90aGVycy5wdXNoKG90aGVyKTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvQGdsaW1tZXIvcHJvZ3JhbS9saWIvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsTUFBTSxBQUFVLGFBQUcsQUFBRSxBQUFDO0FBRXRCLE1BQU0sQUFBK0Isa0NBQUcsQUFBQyxBQUFDO0FBQzFDLE1BQU0sQUFBcUIsd0JBQUcsQUFBTSxPQUFDLEFBQU0sT0FBQyxBQUFFLEFBQUMsQUFBQyxBQXFCaEQsQUFBTTs7a0JBQ0osQUFBaUI7QUFFUDthQUFPLFVBQWEsQUFBRSxBQUFDLEFBQ3ZCO2FBQU0sU0FBNkIsQ0FBQyxBQUFxQixBQUFDLEFBQUMsQUFDM0Q7YUFBTSxTQUFrQixBQUFFLEFBQUMsQUFDM0I7YUFBTyxVQUFhLEFBQUUsQUFBQyxBQUN2QjthQUFhLGdCQUFhLEFBQUUsQUFBQyxBQUM3QjthQUFRLFdBQWEsQUFBRSxBQUFDLEFBQ3hCO2FBQU0sU0FBYSxBQUFFLEFBQUMsQUFDdEI7YUFBUyxZQUFhLEFBQUUsQUFBQyxBQXNGckMsQUFBQztBQXBGQyxBQUFLO1VBQUMsQUFBYSxPQUNqQjtZQUFJLEFBQUssUUFBRyxBQUFJLEtBQUMsQUFBTSxPQUFDLEFBQU8sUUFBQyxBQUFLLEFBQUMsQUFBQyxBQUV2QyxBQUFFLEFBQUM7WUFBQyxBQUFLLFFBQUcsQ0FBQyxBQUFDLEFBQUMsR0FBQyxBQUFDLEFBQ2YsQUFBTTttQkFBQyxBQUFLLEFBQUMsQUFDZixBQUFDO0FBRUQsQUFBTTtlQUFDLEFBQUksS0FBQyxBQUFNLE9BQUMsQUFBSSxLQUFDLEFBQUssQUFBQyxTQUFHLEFBQUMsQUFBQyxBQUNyQyxBQUFDO0FBRUQsQUFBUTthQUFDLEFBQWdCLFVBQ3ZCLEFBQU07ZUFBQyxBQUFJLEtBQUMsQUFBUyxVQUFDLEFBQUksS0FBQyxBQUFRLEFBQUMsWUFBRyxBQUFDLEFBQUMsQUFDM0MsQUFBQztBQUVELEFBQU07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QUFBQztBQUVELEFBQWU7b0JBQUksQUFBUyxHQUMxQixBQUFNO2VBQUMsQUFBSSxLQUFDLEFBQWEsY0FBQyxBQUFDLEFBQU0sQUFBQyxBQUNwQyxBQUFDLEFBQ0Y7QUFFRCxBQUFNO0FBakVKOztNQWlFeUIsc0JBQVEsQUFBaUI7O2lCQUMxQzthQUFNLFNBQWEsQUFBRSxBQUFDLEFBU2hDLEFBQUM7QUFQQyxBQUFRO2FBQUksQUFBYSxPQUN2QixBQUFNO2VBQUMsQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFLLFFBQUcsQUFBQyxBQUFNLEFBQUMsQUFDckMsQUFBQztBQUVELEFBQUs7VUFBQyxBQUFhLE9BQ2pCLEFBQU07ZUFBQyxBQUFJLEtBQUMsQUFBTSxPQUFDLEFBQUksS0FBQyxBQUFLLEFBQUMsQUFBQyxBQUNqQyxBQUFDLEFBQ0Y7O0FBVkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcGFxdWUsIFN5bWJvbFRhYmxlLCBSdW50aW1lUmVzb2x2ZXIsIENvbXBpbGVUaW1lQ29uc3RhbnRzIH0gZnJvbSBcIkBnbGltbWVyL2ludGVyZmFjZXNcIjtcblxuY29uc3QgVU5SRVNPTFZFRCA9IHt9O1xuXG5jb25zdCBXRUxMX0tOT1dOX0VNUFRZX0FSUkFZX1BPU0lUSU9OID0gMDtcbmNvbnN0IFdFTExfS05PV19FTVBUWV9BUlJBWSA9IE9iamVjdC5mcmVlemUoW10pO1xuZXhwb3J0IHR5cGUgRU1QVFlfQVJSQVkgPSBBcnJheTxSZWFkb25seUFycmF5PG5ldmVyPj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3RhbnRQb29sIHtcbiAgc3RyaW5nczogc3RyaW5nW107XG4gIGFycmF5czogbnVtYmVyW11bXSB8IEVNUFRZX0FSUkFZO1xuICB0YWJsZXM6IFN5bWJvbFRhYmxlW107XG4gIGhhbmRsZXM6IG51bWJlcltdO1xuICBzZXJpYWxpemFibGVzOiBPcGFxdWVbXTtcbiAgZmxvYXRzOiBudW1iZXJbXTtcbiAgbmVnYXRpdmVzOiBudW1iZXJbXTtcbn1cblxuZXhwb3J0IGNvbnN0IGVudW0gUHJpbWl0aXZlVHlwZSB7XG4gIE5VTUJFUiAgICAgICAgICA9IDBiMDAwLFxuICBGTE9BVCAgICAgICAgICAgPSAwYjAwMSxcbiAgU1RSSU5HICAgICAgICAgID0gMGIwMTAsXG4gIEJPT0xFQU5fT1JfVk9JRCA9IDBiMDExLFxuICBORUdBVElWRSAgICAgICAgPSAwYjEwMFxufVxuXG5leHBvcnQgY2xhc3MgV3JpdGVPbmx5Q29uc3RhbnRzIGltcGxlbWVudHMgQ29tcGlsZVRpbWVDb25zdGFudHMge1xuICAvLyBgMGAgbWVhbnMgTlVMTFxuXG4gIHByb3RlY3RlZCBzdHJpbmdzOiBzdHJpbmdbXSA9IFtdO1xuICBwcm90ZWN0ZWQgYXJyYXlzOiBudW1iZXJbXVtdIHwgRU1QVFlfQVJSQVkgPSBbV0VMTF9LTk9XX0VNUFRZX0FSUkFZXTtcbiAgcHJvdGVjdGVkIHRhYmxlczogU3ltYm9sVGFibGVbXSA9IFtdO1xuICBwcm90ZWN0ZWQgaGFuZGxlczogbnVtYmVyW10gPSBbXTtcbiAgcHJvdGVjdGVkIHNlcmlhbGl6YWJsZXM6IE9wYXF1ZVtdID0gW107XG4gIHByb3RlY3RlZCByZXNvbHZlZDogT3BhcXVlW10gPSBbXTtcbiAgcHJvdGVjdGVkIGZsb2F0czogbnVtYmVyW10gPSBbXTtcbiAgcHJvdGVjdGVkIG5lZ2F0aXZlczogbnVtYmVyW10gPSBbXTtcblxuICBmbG9hdChmbG9hdDogbnVtYmVyKSB7XG4gICAgbGV0IGluZGV4ID0gdGhpcy5mbG9hdHMuaW5kZXhPZihmbG9hdCk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmZsb2F0cy5wdXNoKGZsb2F0KSAtIDE7XG4gIH1cblxuICBuZWdhdGl2ZShuZWdhdGl2ZTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRpdmVzLnB1c2gobmVnYXRpdmUpIC0gMTtcbiAgfVxuXG4gIHN0cmluZyh2YWx1ZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLnN0cmluZ3MuaW5kZXhPZih2YWx1ZSk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmluZ3MucHVzaCh2YWx1ZSkgLSAxO1xuICB9XG5cbiAgc3RyaW5nQXJyYXkoc3RyaW5nczogc3RyaW5nW10pOiBudW1iZXIge1xuICAgIGxldCBfc3RyaW5nczogbnVtYmVyW10gPSBuZXcgQXJyYXkoc3RyaW5ncy5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHJpbmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBfc3RyaW5nc1tpXSA9IHRoaXMuc3RyaW5nKHN0cmluZ3NbaV0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFycmF5KF9zdHJpbmdzKTtcbiAgfVxuXG4gIGFycmF5KHZhbHVlczogbnVtYmVyW10pOiBudW1iZXIge1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gV0VMTF9LTk9XTl9FTVBUWV9BUlJBWV9QT1NJVElPTjtcbiAgICB9XG5cbiAgICBsZXQgaW5kZXggPSAodGhpcy5hcnJheXMgYXMgbnVtYmVyW11bXSkuaW5kZXhPZih2YWx1ZXMpO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICByZXR1cm4gKHRoaXMuYXJyYXlzIGFzIG51bWJlcltdW10pLnB1c2godmFsdWVzKSAtIDE7XG4gIH1cblxuICB0YWJsZSh0OiBTeW1ib2xUYWJsZSk6IG51bWJlciB7XG4gICAgbGV0IGluZGV4ID0gdGhpcy50YWJsZXMuaW5kZXhPZih0KTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudGFibGVzLnB1c2godCkgLSAxO1xuICB9XG5cbiAgaGFuZGxlKGhhbmRsZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICB0aGlzLnJlc29sdmVkLnB1c2goVU5SRVNPTFZFRCk7XG4gICAgcmV0dXJuIHRoaXMuaGFuZGxlcy5wdXNoKGhhbmRsZSk7XG4gIH1cblxuICBzZXJpYWxpemFibGUodmFsdWU6IE9wYXF1ZSk6IG51bWJlciB7XG4gICAgbGV0IGluZGV4ID0gdGhpcy5zZXJpYWxpemFibGVzLmluZGV4T2YodmFsdWUpO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zZXJpYWxpemFibGVzLnB1c2godmFsdWUpIC0gMTtcbiAgfVxuXG4gIHRvUG9vbCgpOiBDb25zdGFudFBvb2wge1xuICAgIHJldHVybiB7XG4gICAgICBzdHJpbmdzOiB0aGlzLnN0cmluZ3MsXG4gICAgICBhcnJheXM6IHRoaXMuYXJyYXlzLFxuICAgICAgdGFibGVzOiB0aGlzLnRhYmxlcyxcbiAgICAgIGhhbmRsZXM6IHRoaXMuaGFuZGxlcyxcbiAgICAgIHNlcmlhbGl6YWJsZXM6IHRoaXMuc2VyaWFsaXphYmxlcyxcbiAgICAgIGZsb2F0czogdGhpcy5mbG9hdHMsXG4gICAgICBuZWdhdGl2ZXM6IHRoaXMubmVnYXRpdmVzXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUnVudGltZUNvbnN0YW50czxUZW1wbGF0ZU1ldGE+IHtcbiAgcHJvdGVjdGVkIHN0cmluZ3M6IHN0cmluZ1tdO1xuICBwcm90ZWN0ZWQgYXJyYXlzOiBudW1iZXJbXVtdIHwgRU1QVFlfQVJSQVk7XG4gIHByb3RlY3RlZCB0YWJsZXM6IFN5bWJvbFRhYmxlW107XG4gIHByb3RlY3RlZCBoYW5kbGVzOiBudW1iZXJbXTtcbiAgcHJvdGVjdGVkIHNlcmlhbGl6YWJsZXM6IE9wYXF1ZVtdO1xuICBwcm90ZWN0ZWQgcmVzb2x2ZWQ6IE9wYXF1ZVtdO1xuICBwcm90ZWN0ZWQgZmxvYXRzOiBudW1iZXJbXTtcbiAgcHJvdGVjdGVkIG5lZ2F0aXZlczogbnVtYmVyW107XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlc29sdmVyOiBSdW50aW1lUmVzb2x2ZXI8VGVtcGxhdGVNZXRhPiwgcG9vbDogQ29uc3RhbnRQb29sKSB7XG4gICAgdGhpcy5zdHJpbmdzID0gcG9vbC5zdHJpbmdzO1xuICAgIHRoaXMuYXJyYXlzID0gcG9vbC5hcnJheXM7XG4gICAgdGhpcy50YWJsZXMgPSBwb29sLnRhYmxlcztcbiAgICB0aGlzLmhhbmRsZXMgPSBwb29sLmhhbmRsZXM7XG4gICAgdGhpcy5zZXJpYWxpemFibGVzID0gcG9vbC5zZXJpYWxpemFibGVzO1xuICAgIHRoaXMuZmxvYXRzID0gcG9vbC5mbG9hdHM7XG4gICAgdGhpcy5uZWdhdGl2ZXMgPSBwb29sLm5lZ2F0aXZlcztcbiAgICB0aGlzLnJlc29sdmVkID0gdGhpcy5oYW5kbGVzLm1hcCgoKSA9PiBVTlJFU09MVkVEKTtcbiAgfVxuXG4gIC8vIGAwYCBtZWFucyBOVUxMXG5cbiAgZ2V0RmxvYXQodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZmxvYXRzW3ZhbHVlXTtcbiAgfVxuXG4gIGdldE5lZ2F0aXZlKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm5lZ2F0aXZlc1t2YWx1ZV07XG4gIH1cblxuICBnZXRTdHJpbmcodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3RyaW5nc1t2YWx1ZV07XG4gIH1cblxuICBnZXRTdHJpbmdBcnJheSh2YWx1ZTogbnVtYmVyKTogc3RyaW5nW10ge1xuICAgIGxldCBuYW1lcyA9IHRoaXMuZ2V0QXJyYXkodmFsdWUpO1xuICAgIGxldCBfbmFtZXM6IHN0cmluZ1tdID0gbmV3IEFycmF5KG5hbWVzLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgbiA9IG5hbWVzW2ldO1xuICAgICAgX25hbWVzW2ldID0gdGhpcy5nZXRTdHJpbmcobik7XG4gICAgfVxuXG4gICAgcmV0dXJuIF9uYW1lcztcbiAgfVxuXG4gIGdldEFycmF5KHZhbHVlOiBudW1iZXIpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuICh0aGlzLmFycmF5cyBhcyBudW1iZXJbXVtdKVt2YWx1ZV07XG4gIH1cblxuICBnZXRTeW1ib2xUYWJsZTxUIGV4dGVuZHMgU3ltYm9sVGFibGU+KHZhbHVlOiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZXNbdmFsdWVdIGFzIFQ7XG4gIH1cblxuICByZXNvbHZlSGFuZGxlPFQ+KHM6IG51bWJlcik6IFQge1xuICAgIGxldCBpbmRleCA9IHMgLSAxO1xuICAgIGxldCByZXNvbHZlZCA9IHRoaXMucmVzb2x2ZWRbaW5kZXhdO1xuXG4gICAgaWYgKHJlc29sdmVkID09PSBVTlJFU09MVkVEKSB7XG4gICAgICBsZXQgaGFuZGxlID0gdGhpcy5oYW5kbGVzW2luZGV4XTtcbiAgICAgIHJlc29sdmVkID0gdGhpcy5yZXNvbHZlZFtpbmRleF0gPSB0aGlzLnJlc29sdmVyLnJlc29sdmUoaGFuZGxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzb2x2ZWQgYXMgVDtcbiAgfVxuXG4gIGdldFNlcmlhbGl6YWJsZTxUPihzOiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zZXJpYWxpemFibGVzW3NdIGFzIFQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbnN0YW50czxUZW1wbGF0ZU1ldGE+IGV4dGVuZHMgV3JpdGVPbmx5Q29uc3RhbnRzIHtcbiAgY29uc3RydWN0b3IocHVibGljIHJlc29sdmVyOiBSdW50aW1lUmVzb2x2ZXI8VGVtcGxhdGVNZXRhPiwgcG9vbD86IENvbnN0YW50UG9vbCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBpZiAocG9vbCkge1xuICAgICAgdGhpcy5zdHJpbmdzID0gcG9vbC5zdHJpbmdzO1xuICAgICAgdGhpcy5hcnJheXMgPSBwb29sLmFycmF5cztcbiAgICAgIHRoaXMudGFibGVzID0gcG9vbC50YWJsZXM7XG4gICAgICB0aGlzLmhhbmRsZXMgPSBwb29sLmhhbmRsZXM7XG4gICAgICB0aGlzLnNlcmlhbGl6YWJsZXMgPSBwb29sLnNlcmlhbGl6YWJsZXM7XG4gICAgICB0aGlzLmZsb2F0cyA9IHBvb2wuZmxvYXRzO1xuICAgICAgdGhpcy5uZWdhdGl2ZXMgPSBwb29sLm5lZ2F0aXZlcztcbiAgICAgIHRoaXMucmVzb2x2ZWQgPSB0aGlzLmhhbmRsZXMubWFwKCgpID0+IFVOUkVTT0xWRUQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGAwYCBtZWFucyBOVUxMXG4gIGdldEZsb2F0KHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmZsb2F0c1t2YWx1ZV07XG4gIH1cblxuICBnZXROZWdhdGl2ZSh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGl2ZXNbdmFsdWVdO1xuICB9XG5cbiAgZ2V0U3RyaW5nKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnN0cmluZ3NbdmFsdWVdO1xuICB9XG5cbiAgZ2V0U3RyaW5nQXJyYXkodmFsdWU6IG51bWJlcik6IHN0cmluZ1tdIHtcbiAgICBsZXQgbmFtZXMgPSB0aGlzLmdldEFycmF5KHZhbHVlKTtcbiAgICBsZXQgX25hbWVzOiBzdHJpbmdbXSA9IG5ldyBBcnJheShuYW1lcy5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IG4gPSBuYW1lc1tpXTtcbiAgICAgIF9uYW1lc1tpXSA9IHRoaXMuZ2V0U3RyaW5nKG4pO1xuICAgIH1cblxuICAgIHJldHVybiBfbmFtZXM7XG4gIH1cblxuICBnZXRBcnJheSh2YWx1ZTogbnVtYmVyKTogbnVtYmVyW10ge1xuICAgIHJldHVybiAodGhpcy5hcnJheXMgYXMgbnVtYmVyW11bXSlbdmFsdWVdO1xuICB9XG5cbiAgZ2V0U3ltYm9sVGFibGU8VCBleHRlbmRzIFN5bWJvbFRhYmxlPih2YWx1ZTogbnVtYmVyKTogVCB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVzW3ZhbHVlXSBhcyBUO1xuICB9XG5cbiAgcmVzb2x2ZUhhbmRsZTxUPihzOiBudW1iZXIpOiBUIHtcbiAgICBsZXQgaW5kZXggPSBzIC0gMTtcbiAgICBsZXQgcmVzb2x2ZWQgPSB0aGlzLnJlc29sdmVkW2luZGV4XTtcblxuICAgIGlmIChyZXNvbHZlZCA9PT0gVU5SRVNPTFZFRCkge1xuICAgICAgbGV0IGhhbmRsZSA9IHRoaXMuaGFuZGxlc1tpbmRleF07XG4gICAgICByZXNvbHZlZCA9IHRoaXMucmVzb2x2ZWRbaW5kZXhdID0gdGhpcy5yZXNvbHZlci5yZXNvbHZlKGhhbmRsZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc29sdmVkIGFzIFQ7XG4gIH1cblxuICBnZXRTZXJpYWxpemFibGU8VD4oczogbnVtYmVyKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuc2VyaWFsaXphYmxlc1tzXSBhcyBUO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMYXp5Q29uc3RhbnRzIGV4dGVuZHMgQ29uc3RhbnRzPE9wYXF1ZT4ge1xuICBwcml2YXRlIG90aGVyczogT3BhcXVlW10gPSBbXTtcblxuICBnZXRPdGhlcjxUPih2YWx1ZTogbnVtYmVyKTogVCB7XG4gICAgcmV0dXJuIHRoaXMub3RoZXJzW3ZhbHVlIC0gMV0gYXMgVDtcbiAgfVxuXG4gIG90aGVyKG90aGVyOiBPcGFxdWUpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm90aGVycy5wdXNoKG90aGVyKTtcbiAgfVxufVxuIl19
"use strict";
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9wcm9ncmFtL2xpYi9pbnRlcm5hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVW5pcXVlLCBSdW50aW1lUmVzb2x2ZXIgYXMgSVJlc29sdmVyIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCB0eXBlIFNwZWNpZmllciA9IFVuaXF1ZTwnU3BlY2lmaWVyJz47XG5leHBvcnQgdHlwZSBSZWZlcnJlciA9IFVuaXF1ZTwnUmVmZXJyZXInPjtcbmV4cG9ydCB0eXBlIFJlc29sdmVyID0gSVJlc29sdmVyPFNwZWNpZmllcj47XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9wcm9ncmFtL2xpYi9pbnRlcm5hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVW5pcXVlLCBSdW50aW1lUmVzb2x2ZXIgYXMgSVJlc29sdmVyIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCB0eXBlIFRlbXBsYXRlTWV0YSA9IFVuaXF1ZTwnVGVtcGxhdGVNZXRhJz47XG5leHBvcnQgdHlwZSBSZWZlcnJlciA9IFVuaXF1ZTwnUmVmZXJyZXInPjtcbmV4cG9ydCB0eXBlIFJlc29sdmVyID0gSVJlc29sdmVyPFRlbXBsYXRlTWV0YT47XG4iXX0=

@@ -180,2 +180,7 @@ 'use strict';

}
static hydrate(rawHeap, pool, resolver) {
let heap = new Heap(rawHeap);
let constants = new _constants.RuntimeConstants(resolver, pool);
return new RuntimeProgram(constants, heap);
}
opcode(offset) {

@@ -202,2 +207,2 @@ this._opcode.offset = offset;

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3Byb2dyYW0vbGliL3Byb2dyYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBLEFBQU8sQUFBYSxBQUFrQixBQUFvQixBQUFNLEFBQWEsQUFBQzs7QUFDOUUsQUFBTyxBQUFFLEFBQU0sQUFBRSxBQUFNLEFBQVUsQUFBQzs7QUFFbEMsSUFBSyxBQUtKO0FBTEQsV0FBSyxBQUFjLGdCQUNqQjtzREFBUyxBQUNUO2tEQUFLLEFBQ0w7bURBQU0sQUFDTjtvREFBTyxBQUNULEFBQUM7R0FMSSxBQUFjLG1CQUFkLEFBQWMsaUJBS2xCO0FBRUQsTUFBTSxBQUFVLGFBQUcsQUFBQyxBQUFDO0FBQ3JCLE1BQU0sQUFBVyxjQUFHLEFBQUMsQUFBQztBQUN0QixNQUFNLEFBQVMsWUFBSSxBQUFrQyxBQUFDO0FBQ3RELE1BQU0sQUFBVSxhQUFHLEFBQWtDLEFBQUM7QUFDdEQsTUFBTSxBQUFVLGFBQUcsQUFBa0MsQUFBQztBQUV0RCx5QkFBeUIsQUFBWSxNQUFFLEFBQWlCLFdBQUUsQUFBYSxPQUNyRSxBQUFNO1dBQUMsQUFBSSxBQUFHLE9BQUMsQUFBUyxhQUFJLEFBQUUsQUFBQyxLQUFHLEFBQUssU0FBSSxBQUFFLEFBQUMsQUFDaEQsQUFBQzs7QUFFRCxxQkFBcUIsQUFBWSxNQUFFLEFBQWdCLFVBQ2pELEFBQU07V0FBQyxBQUFJLE9BQUcsQUFBUSxZQUFJLEFBQUUsQUFBQyxBQUMvQixBQUFDOztBQUVELEFBbUJHLEFBQ0gsQUFBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCQU1RLEFBQXlFLGdCQUg3RTthQUFNLFNBQUcsQUFBQyxBQUFDLEFBQ1g7YUFBTSxTQUFHLEFBQUMsQUFBQyxBQUdqQixBQUFFLEFBQUM7WUFBQyxBQUFjLEFBQUMsZ0JBQUMsQUFBQyxBQUNuQjtnQkFBSSxFQUFFLEFBQU0sUUFBRSxBQUFLLE9BQUUs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TSxBQUFDLEFBQ3RDLEFBQUM7QUFFRDtZQUFJLEFBQUcsTUFBRyxJQUFJLEFBQVcsWUFBQyxBQUFHLEFBQUMsQUFBQyxBQUUvQixBQUFHLEFBQUMsQUFBQztlQUFFLEFBQUssUUFBRyxBQUFHLEtBQUUsQUFBSyxBQUFFLFNBQUUsQUFBQyxBQUM1QixBQUFHO2dCQUFDLEFBQUssQUFBQyxTQUFJLEFBQUcsSUFBQyxBQUFLLEFBQUMsQUFBQyxBQUMzQixBQUFDO0FBRUQsQUFBTTtlQUFDLEFBQUcsSUFBQyxBQUFNLEFBQUMsQUFDcEIsQUFBQztBQUVELEFBQU07V0FBQyxBQUFJLEFBQUMsQUFDZCxBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBDb21waWxlVGltZVByb2dyYW0sIFJlY2FzdCwgVk1IYW5kbGUgfSBmcm9tIFwiQGdsaW1tZXIvaW50ZXJmYWNlc1wiO1xuaW1wb3J0IHsgREVCVUcgfSBmcm9tIFwiQGdsaW1tZXIvbG9jYWwtZGVidWctZmxhZ3NcIjtcbmltcG9ydCB7IENvbnN0YW50cywgV3JpdGVPbmx5Q29uc3RhbnRzLCBSdW50aW1lQ29uc3RhbnRzIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgT3Bjb2RlIH0gZnJvbSAnLi9vcGNvZGUnO1xuXG5lbnVtIFRhYmxlU2xvdFN0YXRlIHtcbiAgQWxsb2NhdGVkLFxuICBGcmVlZCxcbiAgUHVyZ2VkLFxuICBQb2ludGVyXG59XG5cbmNvbnN0IEVOVFJZX1NJWkUgPSAyO1xuY29uc3QgSU5GT19PRkZTRVQgPSAxO1xuY29uc3QgU0laRV9NQVNLID0gIDBiMDAwMDAwMDAwMDAwMDAwMDExMTExMTExMTExMTExMTE7XG5jb25zdCBTQ09QRV9NQVNLID0gMGIwMDExMTExMTExMTExMTExMDAwMDAwMDAwMDAwMDAwMDtcbmNvbnN0IFNUQVRFX01BU0sgPSAwYjExMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwO1xuXG5mdW5jdGlvbiBlbmNvZGVUYWJsZUluZm8oc2l6ZTogbnVtYmVyLCBzY29wZVNpemU6IG51bWJlciwgc3RhdGU6IG51bWJlcikge1xuICByZXR1cm4gc2l6ZSB8IChzY29wZVNpemUgPDwgMTYpIHwgc3RhdGUgPDwgMzA7XG59XG5cbmZ1bmN0aW9uIGNoYW5nZVN0YXRlKGluZm86IG51bWJlciwgbmV3U3RhdGU6IG51bWJlcikge1xuICByZXR1cm4gaW5mbyB8IG5ld1N0YXRlIDw8IDMwO1xufVxuXG4vKipcbiAqIFRoZSBIZWFwIGlzIHJlc3BvbnNpYmxlIGZvciBkeW5hbWljYWxseSBhbGxvY2F0aW5nXG4gKiBtZW1vcnkgaW4gd2hpY2ggd2UgcmVhZC93cml0ZSB0aGUgVk0ncyBpbnN0cnVjdGlvbnNcbiAqIGZyb20vdG8uIFdoZW4gd2UgbWFsbG9jIHdlIHBhc3Mgb3V0IGEgVk1IYW5kbGUsIHdoaWNoXG4gKiBpcyB1c2VkIGFzIGFuIGluZGlyZWN0IHdheSBvZiBhY2Nlc3NpbmcgdGhlIG1lbW9yeSBkdXJpbmdcbiAqIGV4ZWN1dGlvbiBvZiB0aGUgVk0uIEludGVybmFsbHkgd2UgdHJhY2sgdGhlIGRpZmZlcmVudFxuICogcmVnaW9ucyBvZiB0aGUgbWVtb3J5IGluIGFuIGludCBhcnJheSBrbm93biBhcyB0aGUgdGFibGUuXG4gKlxuICogVGhlIHRhYmxlIDMyLWJpdCBhbGlnbmVkIGFuZCBoYXMgdGhlIGZvbGxvd2luZyBsYXlvdXQ6XG4gKlxuICogfCAuLi4gfCBocCAodTMyKSB8ICAgICAgIGluZm8gKHUzMikgICAgICAgICAgfFxuICogfCAuLi4gfCAgSGFuZGxlICB8IFNpemUgfCBTY29wZSBTaXplIHwgU3RhdGUgfFxuICogfCAuLi4gfCAzMi1iaXRzICB8IDE2YiAgfCAgICAxNGIgICAgIHwgIDJiICAgfFxuICpcbiAqIFdpdGggdGhpcyBpbmZvcm1hdGlvbiB3ZSBlZmZlY3RpdmVseSBoYXZlIHRoZSBhYmlsaXR5IHRvXG4gKiBjb250cm9sIHdoZW4gd2Ugd2FudCB0byBmcmVlIG1lbW9yeS4gVGhhdCBiZWluZyBzYWlkIHlvdVxuICogY2FuIG5vdCBmcmVlIGR1cmluZyBleGVjdXRpb24gYXMgcmF3IGFkZHJlc3MgYXJlIG9ubHlcbiAqIHZhbGlkIGR1cmluZyB0aGUgZXhlY3V0aW9uLiBUaGlzIG1lYW5zIHlvdSBjYW5ub3QgY2xvc2VcbiAqIG92ZXIgdGhlbSBhcyB5b3Ugd2lsbCBoYXZlIGEgYmFkIG1lbW9yeSBhY2Nlc3MgZXhjZXB0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgSGVhcCB7XG4gIHByaXZhdGUgaGVhcDogVWludDE2QXJyYXkgfCBBcnJheTxudW1iZXI+O1xuICBwcml2YXRlIHRhYmxlOiBudW1iZXJbXTtcbiAgcHJpdmF0ZSBvZmZzZXQgPSAwO1xuICBwcml2YXRlIGhhbmRsZSA9IDA7XG5cbiAgY29uc3RydWN0b3Ioc2VyaWFsaXplZEhlYXA/OiB7IGJ1ZmZlcjogQXJyYXlCdWZmZXIsIHRhYmxlOiBudW1iZXJbXSwgaGFuZGxlOiBudW1iZXIgfSkge1xuICAgIGlmIChzZXJpYWxpemVkSGVhcCkge1xuICAgICAgbGV0IHsgYnVmZmVyLCB0YWJsZSwgaGFuZGxlIH0gPSBzZXJpYWxpemVkSGVhcDtcbiAgICAgIHRoaXMuaGVhcCA9IG5ldyBVaW50MTZBcnJheShidWZmZXIpO1xuICAgICAgdGhpcy50YWJsZSA9IHRhYmxlO1xuICAgICAgdGhpcy5vZmZzZXQgPSB0aGlzLmhlYXAubGVuZ3RoO1xuICAgICAgdGhpcy5oYW5kbGUgPSBoYW5kbGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGVhcCA9IG5ldyBVaW50MTZBcnJheSgweDEwMDAwMCk7XG4gICAgICB0aGlzLnRhYmxlID0gW107XG4gICAgfVxuICB9XG5cbiAgcHVzaChpdGVtOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmhlYXBbdGhpcy5vZmZzZXQrK10gPSBpdGVtO1xuICB9XG5cbiAgZ2V0YnlhZGRyKGFkZHJlc3M6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaGVhcFthZGRyZXNzXTtcbiAgfVxuXG4gIHNldGJ5YWRkcihhZGRyZXNzOiBudW1iZXIsIHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLmhlYXBbYWRkcmVzc10gPSB2YWx1ZTtcbiAgfVxuXG4gIG1hbGxvYygpOiBWTUhhbmRsZSB7XG4gICAgdGhpcy50YWJsZS5wdXNoKHRoaXMub2Zmc2V0LCAwKTtcbiAgICBsZXQgaGFuZGxlID0gdGhpcy5oYW5kbGU7XG4gICAgdGhpcy5oYW5kbGUgKz0gRU5UUllfU0laRTtcbiAgICByZXR1cm4gaGFuZGxlIGFzIFJlY2FzdDxudW1iZXIsIFZNSGFuZGxlPjtcbiAgfVxuXG4gIGZpbmlzaE1hbGxvYyhoYW5kbGU6IFZNSGFuZGxlLCBzY29wZVNpemU6IG51bWJlcik6IHZvaWQge1xuICAgIGxldCBzdGFydCA9IHRoaXMudGFibGVbaGFuZGxlIGFzIFJlY2FzdDxWTUhhbmRsZSwgbnVtYmVyPl07XG4gICAgbGV0IGZpbmlzaCA9IHRoaXMub2Zmc2V0O1xuICAgIGxldCBpbnN0cnVjdGlvblNpemUgPSBmaW5pc2ggLSBzdGFydDtcbiAgICBsZXQgaW5mbyA9IGVuY29kZVRhYmxlSW5mbyhpbnN0cnVjdGlvblNpemUsIHNjb3BlU2l6ZSwgVGFibGVTbG90U3RhdGUuQWxsb2NhdGVkKTtcbiAgICB0aGlzLnRhYmxlWyhoYW5kbGUgYXMgUmVjYXN0PFZNSGFuZGxlLCBudW1iZXI+KSArIElORk9fT0ZGU0VUXSA9IGluZm87XG4gIH1cblxuICBzaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMub2Zmc2V0O1xuICB9XG5cbiAgLy8gSXQgaXMgaWxsZWdhbCB0byBjbG9zZSBvdmVyIHRoaXMgYWRkcmVzcywgYXMgY29tcGFjdGlvblxuICAvLyBtYXkgbW92ZSBpdC4gSG93ZXZlciwgaXQgaXMgbGVnYWwgdG8gdXNlIHRoaXMgYWRkcmVzc1xuICAvLyBtdWx0aXBsZSB0aW1lcyBiZXR3ZWVuIGNvbXBhY3Rpb25zLlxuICBnZXRhZGRyKGhhbmRsZTogVk1IYW5kbGUpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRhYmxlW2hhbmRsZSBhcyBSZWNhc3Q8Vk1IYW5kbGUsIG51bWJlcj5dO1xuICB9XG5cbiAgZ2V0aGFuZGxlKGFkZHJlc3M6IG51bWJlcik6IFZNSGFuZGxlIHtcbiAgICB0aGlzLnRhYmxlLnB1c2goYWRkcmVzcywgZW5jb2RlVGFibGVJbmZvKDAsIDAsIFRhYmxlU2xvdFN0YXRlLlBvaW50ZXIpKTtcbiAgICBsZXQgaGFuZGxlID0gdGhpcy5oYW5kbGU7XG4gICAgdGhpcy5oYW5kbGUgKz0gRU5UUllfU0laRTtcbiAgICByZXR1cm4gaGFuZGxlIGFzIFJlY2FzdDxudW1iZXIsIFZNSGFuZGxlPjtcbiAgfVxuXG4gIHNpemVvZihoYW5kbGU6IFZNSGFuZGxlKTogbnVtYmVyIHtcbiAgICBpZiAoREVCVUcpIHtcbiAgICAgIGxldCBpbmZvID0gdGhpcy50YWJsZVsoaGFuZGxlIGFzIFJlY2FzdDxWTUhhbmRsZSwgbnVtYmVyPikgKyBJTkZPX09GRlNFVF07XG4gICAgICByZXR1cm4gaW5mbyAmIFNJWkVfTUFTSztcbiAgICB9XG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgc2NvcGVzaXplb2YoaGFuZGxlOiBWTUhhbmRsZSk6IG51bWJlciB7XG4gICAgbGV0IGluZm8gPSB0aGlzLnRhYmxlWyhoYW5kbGUgYXMgUmVjYXN0PFZNSGFuZGxlLCBudW1iZXI+KSArIElORk9fT0ZGU0VUXTtcbiAgICByZXR1cm4gKGluZm8gJiBTQ09QRV9NQVNLKSA+PiAxNjtcbiAgfVxuXG4gIGZyZWUoaGFuZGxlOiBWTUhhbmRsZSk6IHZvaWQge1xuICAgIGxldCBpbmZvID0gdGhpcy50YWJsZVsoaGFuZGxlIGFzIFJlY2FzdDxWTUhhbmRsZSwgbnVtYmVyPikgKyBJTkZPX09GRlNFVF07XG4gICAgdGhpcy50YWJsZVsoaGFuZGxlIGFzIFJlY2FzdDxWTUhhbmRsZSwgbnVtYmVyPikgKyBJTkZPX09GRlNFVF0gPSBjaGFuZ2VTdGF0ZShpbmZvLCBUYWJsZVNsb3RTdGF0ZS5GcmVlZCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGhlYXAgdXNlcyB0aGUgW01hcmstQ29tcGFjdCBBbGdvcml0aG1dKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01hcmstY29tcGFjdF9hbGdvcml0aG0pIHRvIHNoaWZ0XG4gICAqIHJlYWNoYWJsZSBtZW1vcnkgdG8gdGhlIGJvdHRvbSBvZiB0aGUgaGVhcCBhbmQgZnJlZWFibGVcbiAgICogbWVtb3J5IHRvIHRoZSB0b3Agb2YgdGhlIGhlYXAuIFdoZW4gd2UgaGF2ZSBzaGlmdGVkIGFsbFxuICAgKiB0aGUgcmVhY2hhYmxlIG1lbW9yeSB0byB0aGUgdG9wIG9mIHRoZSBoZWFwLCB3ZSBtb3ZlIHRoZVxuICAgKiBvZmZzZXQgdG8gdGhlIG5leHQgZnJlZSBwb3NpdGlvbi5cbiAgICovXG4gIGNvbXBhY3QoKTogdm9pZCB7XG4gICAgbGV0IGNvbXBhY3RlZFNpemUgPSAwO1xuICAgIGxldCB7IHRhYmxlLCB0YWJsZTogeyBsZW5ndGggfSwgaGVhcCB9ID0gdGhpcztcblxuICAgIGZvciAobGV0IGk9MDsgaTxsZW5ndGg7IGkrPUVOVFJZX1NJWkUpIHtcbiAgICAgIGxldCBvZmZzZXQgPSB0YWJsZVtpXTtcbiAgICAgIGxldCBpbmZvID0gdGFibGVbaSArIElORk9fT0ZGU0VUXTtcbiAgICAgIGxldCBzaXplID0gaW5mbyAmIFNJWkVfTUFTSztcbiAgICAgIGxldCBzdGF0ZSA9IGluZm8gJiBTVEFURV9NQVNLID4+IDMwO1xuXG4gICAgICBpZiAoc3RhdGUgPT09IFRhYmxlU2xvdFN0YXRlLlB1cmdlZCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPT09IFRhYmxlU2xvdFN0YXRlLkZyZWVkKSB7XG4gICAgICAgIC8vIHRyYW5zaXRpb24gdG8gXCJhbHJlYWR5IGZyZWVkXCIgYWthIFwicHVyZ2VkXCJcbiAgICAgICAgLy8gYSBnb29kIGltcHJvdmVtZW50IHdvdWxkIGJlIHRvIHJldXNlXG4gICAgICAgIC8vIHRoZXNlIHNsb3RzXG4gICAgICAgIHRhYmxlW2kgKyBJTkZPX09GRlNFVF0gPSBjaGFuZ2VTdGF0ZShpbmZvLCBUYWJsZVNsb3RTdGF0ZS5QdXJnZWQpO1xuICAgICAgICBjb21wYWN0ZWRTaXplICs9IHNpemU7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlID09PSBUYWJsZVNsb3RTdGF0ZS5BbGxvY2F0ZWQpIHtcbiAgICAgICAgZm9yIChsZXQgaj1vZmZzZXQ7IGo8PWkrc2l6ZTsgaisrKSB7XG4gICAgICAgICAgaGVhcFtqIC0gY29tcGFjdGVkU2l6ZV0gPSBoZWFwW2pdO1xuICAgICAgICB9XG5cbiAgICAgICAgdGFibGVbaV0gPSBvZmZzZXQgLSBjb21wYWN0ZWRTaXplO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PT0gVGFibGVTbG90U3RhdGUuUG9pbnRlcikge1xuICAgICAgICB0YWJsZVtpXSA9IG9mZnNldCAtIGNvbXBhY3RlZFNpemU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5vZmZzZXQgPSB0aGlzLm9mZnNldCAtIGNvbXBhY3RlZFNpemU7XG4gIH1cblxuICBjYXB0dXJlKCkge1xuICAgIC8vIE9ubHkgY2FsbGVkIGluIGVhZ2VyIG1vZGVcbiAgICBsZXQgYnVmZmVyID0gc2xpY2UodGhpcy5oZWFwLCAwLCB0aGlzLm9mZnNldCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhhbmRsZTogdGhpcy5oYW5kbGUsXG4gICAgICB0YWJsZTogdGhpcy50YWJsZSxcbiAgICAgIGJ1ZmZlcjogYnVmZmVyIGFzIEFycmF5QnVmZmVyXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgV3JpdGVPbmx5UHJvZ3JhbSBpbXBsZW1lbnRzIENvbXBpbGVUaW1lUHJvZ3JhbSB7XG4gIFtrZXk6IG51bWJlcl06IG5ldmVyO1xuXG4gIHByaXZhdGUgX29wY29kZTogT3Bjb2RlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb25zdGFudHM6IFdyaXRlT25seUNvbnN0YW50cyA9IG5ldyBXcml0ZU9ubHlDb25zdGFudHMoKSwgcHVibGljIGhlYXAgPSBuZXcgSGVhcCgpKSB7XG4gICAgdGhpcy5fb3Bjb2RlID0gbmV3IE9wY29kZSh0aGlzLmhlYXApO1xuICB9XG5cbiAgb3Bjb2RlKG9mZnNldDogbnVtYmVyKTogT3Bjb2RlIHtcbiAgICB0aGlzLl9vcGNvZGUub2Zmc2V0ID0gb2Zmc2V0O1xuICAgIHJldHVybiB0aGlzLl9vcGNvZGU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJ1bnRpbWVQcm9ncmFtPFNwZWNpZmllcj4ge1xuICBba2V5OiBudW1iZXJdOiBuZXZlcjtcblxuICBwcml2YXRlIF9vcGNvZGU6IE9wY29kZTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgY29uc3RhbnRzOiBSdW50aW1lQ29uc3RhbnRzPFNwZWNpZmllcj4sIHB1YmxpYyBoZWFwOiBIZWFwKSB7XG4gICAgdGhpcy5fb3Bjb2RlID0gbmV3IE9wY29kZSh0aGlzLmhlYXApO1xuICB9XG5cbiAgb3Bjb2RlKG9mZnNldDogbnVtYmVyKTogT3Bjb2RlIHtcbiAgICB0aGlzLl9vcGNvZGUub2Zmc2V0ID0gb2Zmc2V0O1xuICAgIHJldHVybiB0aGlzLl9vcGNvZGU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFByb2dyYW08U3BlY2lmaWVyPiBleHRlbmRzIFdyaXRlT25seVByb2dyYW0ge1xuICBwdWJsaWMgY29uc3RhbnRzOiBDb25zdGFudHM8U3BlY2lmaWVyPjtcbn1cblxuZnVuY3Rpb24gc2xpY2UoYXJyOiBVaW50MTZBcnJheSB8IG51bWJlcltdLCBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcikge1xuICBpZiAoYXJyIGluc3RhbmNlb2YgVWludDE2QXJyYXkpIHtcbiAgICBpZiAoYXJyLnNsaWNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBhcnIuc2xpY2Uoc3RhcnQsIGVuZCkuYnVmZmVyO1xuICAgIH1cblxuICAgIGxldCByZXQgPSBuZXcgVWludDE2QXJyYXkoZW5kKTtcblxuICAgIGZvciAoOyBzdGFydCA8IGVuZDsgc3RhcnQrKykge1xuICAgICAgcmV0W3N0YXJ0XSAgPSBhcnJbc3RhcnRdO1xuICAgIH1cblxuICAgIHJldHVybiByZXQuYnVmZmVyO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3Byb2dyYW0vbGliL3Byb2dyYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBLEFBQU8sQUFBYSxBQUFrQixBQUFFLEFBQWdCLEFBQWdCLEFBQU0sQUFBYSxBQUFDOztBQUM1RixBQUFPLEFBQUUsQUFBTSxBQUFFLEFBQU0sQUFBVSxBQUFDOztBQUVsQyxJQUFLLEFBS0o7QUFMRCxXQUFLLEFBQWMsZ0JBQ2pCO3NEQUFTLEFBQ1Q7a0RBQUssQUFDTDttREFBTSxBQUNOO29EQUFPLEFBQ1QsQUFBQztHQUxJLEFBQWMsbUJBQWQsQUFBYyxpQkFLbEI7QUFFRCxNQUFNLEFBQVUsYUFBRyxBQUFDLEFBQUM7QUFDckIsTUFBTSxBQUFXLGNBQUcsQUFBQyxBQUFDO0FBQ3RCLE1BQU0sQUFBUyxZQUFJLEFBQWtDLEFBQUM7QUFDdEQsTUFBTSxBQUFVLGFBQUcsQUFBa0MsQUFBQztBQUN0RCxNQUFNLEFBQVUsYUFBRyxBQUFrQyxBQUFDO0FBRXRELHlCQUF5QixBQUFZLE1BQUUsQUFBaUIsV0FBRSxBQUFhLE9BQ3JFLEFBQU07V0FBQyxBQUFJLEFBQUcsT0FBQyxBQUFTLGFBQUksQUFBRSxBQUFDLEtBQUcsQUFBSyxTQUFJLEFBQUUsQUFBQyxBQUNoRCxBQUFDOztBQUVELHFCQUFxQixBQUFZLE1BQUUsQUFBZ0IsVUFDakQsQUFBTTtXQUFDLEFBQUksT0FBRyxBQUFRLFlBQUksQUFBRSxBQUFDLEFBQy9CLEFBQUM7O0FBUUQsQUFtQkcsQUFDSCxBQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0JBTVEsQUFBK0IsZ0JBSG5DO2FBQU0sU0FBRyxBQUFDLEFBQUMsQUFDWDthQUFNLFNBQUcsQUFBQyxBQUFDLEFBR2pCLEFBQUUsQUFBQztZQUFDLEFBQWMsQUFBQyxnQkFBQyxBQUFDLEFBQ25CO2dCQUFJLEVBQUUsQUFBTSxRQUFF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O0FBVko7O01BVWlDLGdCQUFRLEFBQWdCLGlCQUUxRDs7QUFFRCxlQUFlLEFBQTJCLEtBQUUsQUFBYSxPQUFFLEFBQVcsS0FDcEUsQUFBRSxBQUFDO1FBQUMsQUFBRyxlQUFZLEFBQVcsQUFBQyxhQUFDLEFBQUMsQUFDL0IsQUFBRSxBQUFDO1lBQUMsQUFBRyxJQUFDLEFBQUssVUFBSyxBQUFTLEFBQUMsV0FBQyxBQUFDLEFBQzVCLEFBQU07bUJBQUMsQUFBRyxJQUFDLEFBQUssTUFBQyxBQUFLLE9BQUUsQUFBRyxBQUFDLEtBQUMsQUFBTSxBQUFDLEFBQ3RDLEFBQUM7QUFFRDtZQUFJLEFBQUcsTUFBRyxJQUFJLEFBQVcsWUFBQyxBQUFHLEFBQUMsQUFBQyxBQUUvQixBQUFHLEFBQUMsQUFBQztlQUFFLEFBQUssUUFBRyxBQUFHLEtBQUUsQUFBSyxBQUFFLFNBQUUsQUFBQyxBQUM1QixBQUFHO2dCQUFDLEFBQUssQUFBQyxTQUFJLEFBQUcsSUFBQyxBQUFLLEFBQUMsQUFBQyxBQUMzQixBQUFDO0FBRUQsQUFBTTtlQUFDLEFBQUcsSUFBQyxBQUFNLEFBQUMsQUFDcEIsQUFBQztBQUVELEFBQU07V0FBQyxBQUFJLEFBQUMsQUFDZCxBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBDb21waWxlVGltZVByb2dyYW0sIFJlY2FzdCwgVk1IYW5kbGUsIFJ1bnRpbWVSZXNvbHZlciB9IGZyb20gXCJAZ2xpbW1lci9pbnRlcmZhY2VzXCI7XG5pbXBvcnQgeyBERUJVRyB9IGZyb20gXCJAZ2xpbW1lci9sb2NhbC1kZWJ1Zy1mbGFnc1wiO1xuaW1wb3J0IHsgQ29uc3RhbnRzLCBXcml0ZU9ubHlDb25zdGFudHMsIFJ1bnRpbWVDb25zdGFudHMsIENvbnN0YW50UG9vbCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IE9wY29kZSB9IGZyb20gJy4vb3Bjb2RlJztcblxuZW51bSBUYWJsZVNsb3RTdGF0ZSB7XG4gIEFsbG9jYXRlZCxcbiAgRnJlZWQsXG4gIFB1cmdlZCxcbiAgUG9pbnRlclxufVxuXG5jb25zdCBFTlRSWV9TSVpFID0gMjtcbmNvbnN0IElORk9fT0ZGU0VUID0gMTtcbmNvbnN0IFNJWkVfTUFTSyA9ICAwYjAwMDAwMDAwMDAwMDAwMDAxMTExMTExMTExMTExMTExO1xuY29uc3QgU0NPUEVfTUFTSyA9IDBiMDAxMTExMTExMTExMTExMTAwMDAwMDAwMDAwMDAwMDA7XG5jb25zdCBTVEFURV9NQVNLID0gMGIxMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDtcblxuZnVuY3Rpb24gZW5jb2RlVGFibGVJbmZvKHNpemU6IG51bWJlciwgc2NvcGVTaXplOiBudW1iZXIsIHN0YXRlOiBudW1iZXIpIHtcbiAgcmV0dXJuIHNpemUgfCAoc2NvcGVTaXplIDw8IDE2KSB8IHN0YXRlIDw8IDMwO1xufVxuXG5mdW5jdGlvbiBjaGFuZ2VTdGF0ZShpbmZvOiBudW1iZXIsIG5ld1N0YXRlOiBudW1iZXIpIHtcbiAgcmV0dXJuIGluZm8gfCBuZXdTdGF0ZSA8PCAzMDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXJpYWxpemVkSGVhcCB7XG4gIGJ1ZmZlcjogQXJyYXlCdWZmZXI7XG4gIHRhYmxlOiBudW1iZXJbXTtcbiAgaGFuZGxlOiBudW1iZXI7XG59XG5cbi8qKlxuICogVGhlIEhlYXAgaXMgcmVzcG9uc2libGUgZm9yIGR5bmFtaWNhbGx5IGFsbG9jYXRpbmdcbiAqIG1lbW9yeSBpbiB3aGljaCB3ZSByZWFkL3dyaXRlIHRoZSBWTSdzIGluc3RydWN0aW9uc1xuICogZnJvbS90by4gV2hlbiB3ZSBtYWxsb2Mgd2UgcGFzcyBvdXQgYSBWTUhhbmRsZSwgd2hpY2hcbiAqIGlzIHVzZWQgYXMgYW4gaW5kaXJlY3Qgd2F5IG9mIGFjY2Vzc2luZyB0aGUgbWVtb3J5IGR1cmluZ1xuICogZXhlY3V0aW9uIG9mIHRoZSBWTS4gSW50ZXJuYWxseSB3ZSB0cmFjayB0aGUgZGlmZmVyZW50XG4gKiByZWdpb25zIG9mIHRoZSBtZW1vcnkgaW4gYW4gaW50IGFycmF5IGtub3duIGFzIHRoZSB0YWJsZS5cbiAqXG4gKiBUaGUgdGFibGUgMzItYml0IGFsaWduZWQgYW5kIGhhcyB0aGUgZm9sbG93aW5nIGxheW91dDpcbiAqXG4gKiB8IC4uLiB8IGhwICh1MzIpIHwgICAgICAgaW5mbyAodTMyKSAgICAgICAgICB8XG4gKiB8IC4uLiB8ICBIYW5kbGUgIHwgU2l6ZSB8IFNjb3BlIFNpemUgfCBTdGF0ZSB8XG4gKiB8IC4uLiB8IDMyLWJpdHMgIHwgMTZiICB8ICAgIDE0YiAgICAgfCAgMmIgICB8XG4gKlxuICogV2l0aCB0aGlzIGluZm9ybWF0aW9uIHdlIGVmZmVjdGl2ZWx5IGhhdmUgdGhlIGFiaWxpdHkgdG9cbiAqIGNvbnRyb2wgd2hlbiB3ZSB3YW50IHRvIGZyZWUgbWVtb3J5LiBUaGF0IGJlaW5nIHNhaWQgeW91XG4gKiBjYW4gbm90IGZyZWUgZHVyaW5nIGV4ZWN1dGlvbiBhcyByYXcgYWRkcmVzcyBhcmUgb25seVxuICogdmFsaWQgZHVyaW5nIHRoZSBleGVjdXRpb24uIFRoaXMgbWVhbnMgeW91IGNhbm5vdCBjbG9zZVxuICogb3ZlciB0aGVtIGFzIHlvdSB3aWxsIGhhdmUgYSBiYWQgbWVtb3J5IGFjY2VzcyBleGNlcHRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBIZWFwIHtcbiAgcHJpdmF0ZSBoZWFwOiBVaW50MTZBcnJheSB8IEFycmF5PG51bWJlcj47XG4gIHByaXZhdGUgdGFibGU6IG51bWJlcltdO1xuICBwcml2YXRlIG9mZnNldCA9IDA7XG4gIHByaXZhdGUgaGFuZGxlID0gMDtcblxuICBjb25zdHJ1Y3RvcihzZXJpYWxpemVkSGVhcD86IFNlcmlhbGl6ZWRIZWFwKSB7XG4gICAgaWYgKHNlcmlhbGl6ZWRIZWFwKSB7XG4gICAgICBsZXQgeyBidWZmZXIsIHRhYmxlLCBoYW5kbGUgfSA9IHNlcmlhbGl6ZWRIZWFwO1xuICAgICAgdGhpcy5oZWFwID0gbmV3IFVpbnQxNkFycmF5KGJ1ZmZlcik7XG4gICAgICB0aGlzLnRhYmxlID0gdGFibGU7XG4gICAgICB0aGlzLm9mZnNldCA9IHRoaXMuaGVhcC5sZW5ndGg7XG4gICAgICB0aGlzLmhhbmRsZSA9IGhhbmRsZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oZWFwID0gbmV3IFVpbnQxNkFycmF5KDB4MTAwMDAwKTtcbiAgICAgIHRoaXMudGFibGUgPSBbXTtcbiAgICB9XG4gIH1cblxuICBwdXNoKGl0ZW06IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuaGVhcFt0aGlzLm9mZnNldCsrXSA9IGl0ZW07XG4gIH1cblxuICBnZXRieWFkZHIoYWRkcmVzczogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5oZWFwW2FkZHJlc3NdO1xuICB9XG5cbiAgc2V0YnlhZGRyKGFkZHJlc3M6IG51bWJlciwgdmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuaGVhcFthZGRyZXNzXSA9IHZhbHVlO1xuICB9XG5cbiAgbWFsbG9jKCk6IFZNSGFuZGxlIHtcbiAgICB0aGlzLnRhYmxlLnB1c2godGhpcy5vZmZzZXQsIDApO1xuICAgIGxldCBoYW5kbGUgPSB0aGlzLmhhbmRsZTtcbiAgICB0aGlzLmhhbmRsZSArPSBFTlRSWV9TSVpFO1xuICAgIHJldHVybiBoYW5kbGUgYXMgUmVjYXN0PG51bWJlciwgVk1IYW5kbGU+O1xuICB9XG5cbiAgZmluaXNoTWFsbG9jKGhhbmRsZTogVk1IYW5kbGUsIHNjb3BlU2l6ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgbGV0IHN0YXJ0ID0gdGhpcy50YWJsZVtoYW5kbGUgYXMgUmVjYXN0PFZNSGFuZGxlLCBudW1iZXI+XTtcbiAgICBsZXQgZmluaXNoID0gdGhpcy5vZmZzZXQ7XG4gICAgbGV0IGluc3RydWN0aW9uU2l6ZSA9IGZpbmlzaCAtIHN0YXJ0O1xuICAgIGxldCBpbmZvID0gZW5jb2RlVGFibGVJbmZvKGluc3RydWN0aW9uU2l6ZSwgc2NvcGVTaXplLCBUYWJsZVNsb3RTdGF0ZS5BbGxvY2F0ZWQpO1xuICAgIHRoaXMudGFibGVbKGhhbmRsZSBhcyBSZWNhc3Q8Vk1IYW5kbGUsIG51bWJlcj4pICsgSU5GT19PRkZTRVRdID0gaW5mbztcbiAgfVxuXG4gIHNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5vZmZzZXQ7XG4gIH1cblxuICAvLyBJdCBpcyBpbGxlZ2FsIHRvIGNsb3NlIG92ZXIgdGhpcyBhZGRyZXNzLCBhcyBjb21wYWN0aW9uXG4gIC8vIG1heSBtb3ZlIGl0LiBIb3dldmVyLCBpdCBpcyBsZWdhbCB0byB1c2UgdGhpcyBhZGRyZXNzXG4gIC8vIG11bHRpcGxlIHRpbWVzIGJldHdlZW4gY29tcGFjdGlvbnMuXG4gIGdldGFkZHIoaGFuZGxlOiBWTUhhbmRsZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVbaGFuZGxlIGFzIFJlY2FzdDxWTUhhbmRsZSwgbnVtYmVyPl07XG4gIH1cblxuICBnZXRoYW5kbGUoYWRkcmVzczogbnVtYmVyKTogVk1IYW5kbGUge1xuICAgIHRoaXMudGFibGUucHVzaChhZGRyZXNzLCBlbmNvZGVUYWJsZUluZm8oMCwgMCwgVGFibGVTbG90U3RhdGUuUG9pbnRlcikpO1xuICAgIGxldCBoYW5kbGUgPSB0aGlzLmhhbmRsZTtcbiAgICB0aGlzLmhhbmRsZSArPSBFTlRSWV9TSVpFO1xuICAgIHJldHVybiBoYW5kbGUgYXMgUmVjYXN0PG51bWJlciwgVk1IYW5kbGU+O1xuICB9XG5cbiAgc2l6ZW9mKGhhbmRsZTogVk1IYW5kbGUpOiBudW1iZXIge1xuICAgIGlmIChERUJVRykge1xuICAgICAgbGV0IGluZm8gPSB0aGlzLnRhYmxlWyhoYW5kbGUgYXMgUmVjYXN0PFZNSGFuZGxlLCBudW1iZXI+KSArIElORk9fT0ZGU0VUXTtcbiAgICAgIHJldHVybiBpbmZvICYgU0laRV9NQVNLO1xuICAgIH1cbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICBzY29wZXNpemVvZihoYW5kbGU6IFZNSGFuZGxlKTogbnVtYmVyIHtcbiAgICBsZXQgaW5mbyA9IHRoaXMudGFibGVbKGhhbmRsZSBhcyBSZWNhc3Q8Vk1IYW5kbGUsIG51bWJlcj4pICsgSU5GT19PRkZTRVRdO1xuICAgIHJldHVybiAoaW5mbyAmIFNDT1BFX01BU0spID4+IDE2O1xuICB9XG5cbiAgZnJlZShoYW5kbGU6IFZNSGFuZGxlKTogdm9pZCB7XG4gICAgbGV0IGluZm8gPSB0aGlzLnRhYmxlWyhoYW5kbGUgYXMgUmVjYXN0PFZNSGFuZGxlLCBudW1iZXI+KSArIElORk9fT0ZGU0VUXTtcbiAgICB0aGlzLnRhYmxlWyhoYW5kbGUgYXMgUmVjYXN0PFZNSGFuZGxlLCBudW1iZXI+KSArIElORk9fT0ZGU0VUXSA9IGNoYW5nZVN0YXRlKGluZm8sIFRhYmxlU2xvdFN0YXRlLkZyZWVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaGVhcCB1c2VzIHRoZSBbTWFyay1Db21wYWN0IEFsZ29yaXRobV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFyay1jb21wYWN0X2FsZ29yaXRobSkgdG8gc2hpZnRcbiAgICogcmVhY2hhYmxlIG1lbW9yeSB0byB0aGUgYm90dG9tIG9mIHRoZSBoZWFwIGFuZCBmcmVlYWJsZVxuICAgKiBtZW1vcnkgdG8gdGhlIHRvcCBvZiB0aGUgaGVhcC4gV2hlbiB3ZSBoYXZlIHNoaWZ0ZWQgYWxsXG4gICAqIHRoZSByZWFjaGFibGUgbWVtb3J5IHRvIHRoZSB0b3Agb2YgdGhlIGhlYXAsIHdlIG1vdmUgdGhlXG4gICAqIG9mZnNldCB0byB0aGUgbmV4dCBmcmVlIHBvc2l0aW9uLlxuICAgKi9cbiAgY29tcGFjdCgpOiB2b2lkIHtcbiAgICBsZXQgY29tcGFjdGVkU2l6ZSA9IDA7XG4gICAgbGV0IHsgdGFibGUsIHRhYmxlOiB7IGxlbmd0aCB9LCBoZWFwIH0gPSB0aGlzO1xuXG4gICAgZm9yIChsZXQgaT0wOyBpPGxlbmd0aDsgaSs9RU5UUllfU0laRSkge1xuICAgICAgbGV0IG9mZnNldCA9IHRhYmxlW2ldO1xuICAgICAgbGV0IGluZm8gPSB0YWJsZVtpICsgSU5GT19PRkZTRVRdO1xuICAgICAgbGV0IHNpemUgPSBpbmZvICYgU0laRV9NQVNLO1xuICAgICAgbGV0IHN0YXRlID0gaW5mbyAmIFNUQVRFX01BU0sgPj4gMzA7XG5cbiAgICAgIGlmIChzdGF0ZSA9PT0gVGFibGVTbG90U3RhdGUuUHVyZ2VkKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PT0gVGFibGVTbG90U3RhdGUuRnJlZWQpIHtcbiAgICAgICAgLy8gdHJhbnNpdGlvbiB0byBcImFscmVhZHkgZnJlZWRcIiBha2EgXCJwdXJnZWRcIlxuICAgICAgICAvLyBhIGdvb2QgaW1wcm92ZW1lbnQgd291bGQgYmUgdG8gcmV1c2VcbiAgICAgICAgLy8gdGhlc2Ugc2xvdHNcbiAgICAgICAgdGFibGVbaSArIElORk9fT0ZGU0VUXSA9IGNoYW5nZVN0YXRlKGluZm8sIFRhYmxlU2xvdFN0YXRlLlB1cmdlZCk7XG4gICAgICAgIGNvbXBhY3RlZFNpemUgKz0gc2l6ZTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPT09IFRhYmxlU2xvdFN0YXRlLkFsbG9jYXRlZCkge1xuICAgICAgICBmb3IgKGxldCBqPW9mZnNldDsgajw9aStzaXplOyBqKyspIHtcbiAgICAgICAgICBoZWFwW2ogLSBjb21wYWN0ZWRTaXplXSA9IGhlYXBbal07XG4gICAgICAgIH1cblxuICAgICAgICB0YWJsZVtpXSA9IG9mZnNldCAtIGNvbXBhY3RlZFNpemU7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlID09PSBUYWJsZVNsb3RTdGF0ZS5Qb2ludGVyKSB7XG4gICAgICAgIHRhYmxlW2ldID0gb2Zmc2V0IC0gY29tcGFjdGVkU2l6ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm9mZnNldCA9IHRoaXMub2Zmc2V0IC0gY29tcGFjdGVkU2l6ZTtcbiAgfVxuXG4gIGNhcHR1cmUoKTogU2VyaWFsaXplZEhlYXAge1xuICAgIC8vIE9ubHkgY2FsbGVkIGluIGVhZ2VyIG1vZGVcbiAgICBsZXQgYnVmZmVyID0gc2xpY2UodGhpcy5oZWFwLCAwLCB0aGlzLm9mZnNldCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhhbmRsZTogdGhpcy5oYW5kbGUsXG4gICAgICB0YWJsZTogdGhpcy50YWJsZSxcbiAgICAgIGJ1ZmZlcjogYnVmZmVyIGFzIEFycmF5QnVmZmVyXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgV3JpdGVPbmx5UHJvZ3JhbSBpbXBsZW1lbnRzIENvbXBpbGVUaW1lUHJvZ3JhbSB7XG4gIFtrZXk6IG51bWJlcl06IG5ldmVyO1xuXG4gIHByaXZhdGUgX29wY29kZTogT3Bjb2RlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb25zdGFudHM6IFdyaXRlT25seUNvbnN0YW50cyA9IG5ldyBXcml0ZU9ubHlDb25zdGFudHMoKSwgcHVibGljIGhlYXAgPSBuZXcgSGVhcCgpKSB7XG4gICAgdGhpcy5fb3Bjb2RlID0gbmV3IE9wY29kZSh0aGlzLmhlYXApO1xuICB9XG5cbiAgb3Bjb2RlKG9mZnNldDogbnVtYmVyKTogT3Bjb2RlIHtcbiAgICB0aGlzLl9vcGNvZGUub2Zmc2V0ID0gb2Zmc2V0O1xuICAgIHJldHVybiB0aGlzLl9vcGNvZGU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJ1bnRpbWVQcm9ncmFtPFRlbXBsYXRlTWV0YT4ge1xuICBba2V5OiBudW1iZXJdOiBuZXZlcjtcblxuICBzdGF0aWMgaHlkcmF0ZTxUZW1wbGF0ZU1ldGE+KHJhd0hlYXA6IFNlcmlhbGl6ZWRIZWFwLCBwb29sOiBDb25zdGFudFBvb2wsIHJlc29sdmVyOiBSdW50aW1lUmVzb2x2ZXI8VGVtcGxhdGVNZXRhPikge1xuICAgIGxldCBoZWFwID0gbmV3IEhlYXAocmF3SGVhcCk7XG4gICAgbGV0IGNvbnN0YW50cyA9IG5ldyBSdW50aW1lQ29uc3RhbnRzKHJlc29sdmVyLCBwb29sKTtcblxuICAgIHJldHVybiBuZXcgUnVudGltZVByb2dyYW0oY29uc3RhbnRzLCBoZWFwKTtcbiAgfVxuXG4gIHByaXZhdGUgX29wY29kZTogT3Bjb2RlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb25zdGFudHM6IFJ1bnRpbWVDb25zdGFudHM8VGVtcGxhdGVNZXRhPiwgcHVibGljIGhlYXA6IEhlYXApIHtcbiAgICB0aGlzLl9vcGNvZGUgPSBuZXcgT3Bjb2RlKHRoaXMuaGVhcCk7XG4gIH1cblxuICBvcGNvZGUob2Zmc2V0OiBudW1iZXIpOiBPcGNvZGUge1xuICAgIHRoaXMuX29wY29kZS5vZmZzZXQgPSBvZmZzZXQ7XG4gICAgcmV0dXJuIHRoaXMuX29wY29kZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJvZ3JhbTxUZW1wbGF0ZU1ldGE+IGV4dGVuZHMgV3JpdGVPbmx5UHJvZ3JhbSB7XG4gIHB1YmxpYyBjb25zdGFudHM6IENvbnN0YW50czxUZW1wbGF0ZU1ldGE+O1xufVxuXG5mdW5jdGlvbiBzbGljZShhcnI6IFVpbnQxNkFycmF5IHwgbnVtYmVyW10sIHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKSB7XG4gIGlmIChhcnIgaW5zdGFuY2VvZiBVaW50MTZBcnJheSkge1xuICAgIGlmIChhcnIuc2xpY2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGFyci5zbGljZShzdGFydCwgZW5kKS5idWZmZXI7XG4gICAgfVxuXG4gICAgbGV0IHJldCA9IG5ldyBVaW50MTZBcnJheShlbmQpO1xuXG4gICAgZm9yICg7IHN0YXJ0IDwgZW5kOyBzdGFydCsrKSB7XG4gICAgICByZXRbc3RhcnRdICA9IGFycltzdGFydF07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldC5idWZmZXI7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cbiJdfQ==

@@ -289,2 +289,2 @@ "use strict";

exports.LazyConstants = LazyConstants;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvQGdsaW1tZXIvcHJvZ3JhbS9saWIvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFNLEFBQVUsYUFBRyxBQUFFLEFBQUM7QUFFdEIsSUFBTSxBQUErQixrQ0FBRyxBQUFDLEFBQUM7QUFDMUMsSUFBTSxBQUFxQix3QkFBRyxBQUFNLE9BQUMsQUFBTSxPQUFDLEFBQUUsQUFBQyxBQUFDLEFBcUJoRCxBQUFNOztJQUFOO2tDQUNFLEFBQWlCOzhCQUVQOzs7YUFBTyxVQUFhLEFBQUUsQUFBQyxBQUN2QjthQUFNLFNBQTZCLENBQUMsQUFBcUIsQUFBQyxBQUFDLEFBQzNEO2FBQU0sU0FBa0IsQUFBRSxBQUFDLEFBQzNCO2FBQU8sVUFBYSxBQUFFLEFBQUMsQUFDdkI7YUFBYSxnQkFBYSxBQUFFLEFBQUMsQUFDN0I7YUFBUSxXQUFhLEFBQUUsQUFBQyxBQUN4QjthQUFNLFNBQWEsQUFBRSxBQUFDLEFBQ3RCO2FBQVMsWUFBYSxBQUFFLEFBQUMsQUFzRnJDLEFBQUMsQUFwRkMsQUFBSzs7O3dEQUFDLEFBQWEsUUFDakI7WUFBSSxBQUFLLFFBQUcsQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFPLFFBQUMsQUFBSyxBQUFDLEFBQUMsQUFFdkMsQUFBRSxBQUFDO1lBQUMsQUFBSyxRQUFHLENBQUMsQUFBQyxBQUFDLEdBQUMsQUFBQyxBQUNmLEFBQU07bUJBQUMsQUFBSyxBQUFDLEFBQ2YsQUFBQyxBQUVELEFBQU07O2VBQUMsQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFJLEtBQUMsQUFBSyxBQUFDLFVBQUcsQUFBQyxBQUFDLEFBQ3JDLEFBQUMsQUFFRCxBQUFROzs7OERBQUMsQUFBZ0IsV0FDdkIsQUFBTTtlQUFDLEFBQUksS0FBQyxBQUFTLFVBQUMsQUFBSSxLQUFDLEFBQVEsQUFBQyxhQUFHLEFBQUMsQUFBQyxBQUMzQyxBQUFDLEFBRUQsQUFBTTs7OzBEQUFDLEFBQWEsT0FDbEI7WUFBSSxBQUFLLFFBQUcsQUFBSSxLQUFDLEFBQU8sUUFBQyxBQUFPLFFBQUMsQUFBSyxBQUFDLEFBQUMsQUFFeEMsQUFBRSxBQUFDO1lBQUMsQUFBSyxRQUFHLENBQUMsQUFBQyxBQUFDLEdBQUMsQUFBQyxBQUNmLEFBQU07bUJBQUMsQUFBSyxBQUFDLEFBQ2YsQUFBQyxBQUVELEFBQU07O2VBQUMsQUFBSSxLQUFDLEFBQU8sUUFBQyxBQUFJLEtBQUMsQUFBSyxBQUFDLFNBQUcsQUFBQyxBQUFDLEFBQ3RDLEFBQUMsQUFFRCxBQUFXOzs7b0VBQUMsQUFBaUIsU0FDM0I7WUFBSSxBQUFRLFdBQWEsSUFBSSxBQUFLLE1BQUMsQUFBTyxRQUFDLEFBQU0sQUFBQyxBQUFDLEFBRW5ELEFBQUcsQUFBQzthQUFDLElBQUksQUFBQyxJQUFHLEFBQUMsR0FBRSxBQUFDLElBQUcsQUFBTyxRQUFDLEFBQU0sUUFBRSxBQUFDLEFBQUUsS0FBRSxBQUFDLEFBQ3hDLEFBQVE7cUJBQUMsQUFBQyxBQUFDLEtBQUcsQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFPLFFBQUMsQUFBQyxBQUFDLEFBQUMsQUFBQyxBQUN4QyxBQUFDLEFBRUQsQUFBTTs7ZUFBQyxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQVEsQUFBQyxBQUFDLEFBQzlCLEFBQUMsQUFFRCxBQUFLOzs7d0RBQUMsQUFBZ0IsUUFDcEIsQUFBRSxBQUFDO1lBQUMsQUFBTSxPQUFDLEFBQU0sV0FBSyxBQUFDLEFBQUMsR0FBQyxBQUFDLEFBQ3hCLEFBQU07bUJBQUMsQUFBK0IsQUFBQyxBQUN6QyxBQUFDLEFBRUQ7O1lBQUksQUFBSyxRQUFJLEFBQUksS0FBQyxBQUFxQixPQUFDLEFBQU8sUUFBQyxBQUFNLEFBQUMsQUFBQyxBQUV4RCxBQUFFLEFBQUM7WUFBQyxBQUFLLFFBQUcsQ0FBQyxBQUFDLEFBQUMsR0FBQyxBQUFDLEFBQ2YsQUFBTTttQkFBQyxBQUFLLEFBQUMsQUFDZixBQUFDLEFBRUQsQUFBTTs7ZUFBRSxBQUFJLEtBQUMsQUFBcUIsT0FBQyxBQUFJLEtBQUMsQUFBTSxBQUFDLFVBQUcsQUFBQyxBQUFDLEFBQ3RELEFBQUMsQUFFRCxBQUFLOzs7d0RBQUMsQUFBYyxHQUNsQjtZQUFJLEFBQUssUUFBRyxBQUFJLEtBQUMsQUFBTSxPQUFDLEFBQU8sUUFBQyxBQUFDLEFBQUMsQUFBQyxBQUVuQyxBQUFFLEFBQUM7WUFBQyxBQUFLLFFBQUcsQ0FBQyxBQUFDLEFBQUMsR0FBQyxBQUFDLEFBQ2YsQUFBTTttQkFBQyxBQUFLLEFBQUMsQUFDZixBQUFDLEFBRUQsQUFBTTs7ZUFBQyxBQUFJLEtBQUMsQUFBTSxPQUFDLEFBQUksS0FBQyxBQUFDLEFBQUMsS0FBRyxBQUFDLEFBQUMsQUFDakMsQUFBQyxBQUVELEFBQU07OzswREFBQyxBQUFjLFNBQ25CLEFBQUk7YUFBQyxBQUFRLFNBQUMsQUFBSSxLQUFDLEFBQVUsQUFBQyxBQUFDLEFBQy9CLEFBQU07ZUFBQyxBQUFJLEtBQUMsQUFBTyxRQUFDLEFBQUksS0FBQyxBQUFNLEFBQUMsQUFBQyxBQUNuQyxBQUFDLEFBRUQsQUFBWTs7O3NFQUFDLEFBQWEsT0FDeEI7WUFBSSxBQUFLLFFBQUcsQUFBSSxLQUFDLEFBQWEsY0FBQyxBQUFPLFFBQUMsQUFBSyxBQUFDLEFBQUMsQUFFOUMsQUFBRSxBQUFDO1lBQUMsQUFBSyxRQUFHLENBQUMsQUFBQyxBQUFDLEdBQUMsQUFBQyxBQUNmLEFBQU07bUJBQUMsQUFBSyxBQUFDLEFBQ2YsQUFBQyxBQUVELEFBQU07O2VBQUMsQUFBSSxLQUFDLEFBQWEsY0FBQyxBQUFJLEtBQUMsQUFBSyxBQUFDLFNBQUcsQUFBQyxBQUFDLEFBQzVDLEFBQUMsQUFFRCxBQUFNOzs7NERBQ0osQUFBTTs7cUJBQ0ssQUFBSSxLQUFDLEFBQU8sQUFDckIsQUFBTTtvQkFBRSxBQUFJLEtBQUMsQUFBTSxBQUNuQixBQUFNO29CQUFFLEFBQUksS0FBQyxBQUFNLEFBQ25CLEFBQU87cUJBQUUsQUFBSSxLQUFDLEFBQU8sQUFDckIsQUFBYTsyQkFBRSxBQUFJLEtBQUMsQUFBYSxBQUNqQyxBQUFNO29CQUFFLEFBQUksS0FBQyxBQUFNLEFBQ25CLEFBQVM7dUJBQUUsQUFBSSxLQVBWLEFBT1csQUFBUyxBQUMxQixBQUFDLEFBQ0osQUFBQyxBQUNGLEFBVEssQUFBTzs7Ozs7OztRQVdiLEFBQU07SUFVSjs4QkFBbUIsQUFBb0MsVUFBRSxBQUFrQixNQUF4RDs7O2FBQVEsV0FBUixBQUFRLEFBQTRCLEFBQ3JELEFBQUk7YUFBQyxBQUFPLFVBQUcsQUFBSSxLQUFDLEFBQU8sQUFBQyxBQUM1QixBQUFJO2FBQUMsQUFBTSxTQUFHLEFBQUksS0FBQyxBQUFNLEFBQUMsQUFDMUIsQUFBSTthQUFDLEFBQU0sU0FBRyxBQUFJLEtBQUMsQUFBTSxBQUFDLEFBQzFCLEFBQUk7YUFBQyxBQUFPLFVBQUcsQUFBSSxLQUFDLEFBQU8sQUFBQyxBQUM1QixBQUFJO2FBQUMsQUFBYSxnQkFBRyxBQUFJLEtBQUMsQUFBYSxBQUFDLEFBQ3hDLEFBQUk7YUFBQyxBQUFNLFNBQUcsQUFBSSxLQUFDLEFBQU0sQUFBQyxBQUMxQixBQUFJO2FBQUMsQUFBUyxZQUFHLEFBQUksS0FBQyxBQUFTLEFBQUMsQUFDaEMsQUFBSTthQUFDLEFBQVEsZ0JBQVEsQUFBTyxRQUFDLEFBQUcsZ0JBQUM7bUJBQU0sQUFBVSxBQUFDLEFBQUMsQUFDckQsQUFBQztBQURpQixBQUFJLEFBR3RCLEFBQWlCO0FBRWpCLEFBQVE7Ozs7NERBQUMsQUFBYSxPQUNwQixBQUFNO2VBQUMsQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFLLEFBQUMsQUFBQyxBQUM1QixBQUFDLEFBRUQsQUFBVzs7O2tFQUFDLEFBQWEsT0FDdkIsQUFBTTtlQUFDLEFBQUksS0FBQyxBQUFTLFVBQUMsQUFBSyxBQUFDLEFBQUMsQUFDL0IsQUFBQyxBQUVELEFBQVM7Ozs4REFBQyxBQUFhLE9BQ3JCLEFBQU07ZUFBQyxBQUFJLEtBQUMsQUFBTyxRQUFDLEFBQUssQUFBQyxBQUFDLEFBQzdCLEFBQUMsQUFFRCxBQUFjOzs7d0VBQUMsQUFBYSxPQUMxQjtZQUFJLEFBQUssUUFBRyxBQUFJLEtBQUMsQUFBUSxTQUFDLEFBQUssQUFBQyxBQUFDLEFBQ2pDO1lBQUksQUFBTSxTQUFhLElBQUksQUFBSyxNQUFDLEFBQUssTUFBQyxBQUFNLEFBQUMsQUFBQyxBQUUvQyxBQUFHLEFBQUM7YUFBQyxJQUFJLEFBQUMsSUFBRyxBQUFDLEdBQUUsQUFBQyxJQUFHLEFBQUssTUFBQyxBQUFNLFFBQUUsQUFBQyxBQUFFLEtBQUUsQUFBQyxBQUN0QztnQkFBSSxBQUFDLElBQUcsQUFBSyxNQUFDLEFBQUMsQUFBQyxBQUFDLEFBQ2pCLEFBQU07bUJBQUMsQUFBQyxBQUFDLEtBQUcsQUFBSSxLQUFDLEFBQVMsVUFBQyxBQUFDLEFBQUMsQUFBQyxBQUNoQyxBQUFDLEFBRUQsQUFBTTs7ZUFBQyxBQUFNLEFBQUMsQUFDaEIsQUFBQyxBQUVELEFBQVE7Ozs0REFBQyxBQUFhLE9BQ3BCLEFBQU07ZUFBRSxBQUFJLEtBQUMsQUFBcUIsT0FBQyxBQUFLLEFBQUMsQUFBQyxBQUM1QyxBQUFDLEFBRUQsQUFBYzs7O3dFQUF3QixBQUFhLE9BQ2pELEFBQU07ZUFBQyxBQUFJLEtBQUMsQUFBTSxPQUFDLEFBQUssQUFBTSxBQUFDLEFBQ2pDLEFBQUMsQUFFRCxBQUFhOzs7c0VBQUksQUFBUyxHQUN4QjtZQUFJLEFBQUssUUFBRyxBQUFDLElBQUcsQUFBQyxBQUFDLEFBQ2xCO1lBQUksQUFBUSxXQUFHLEFBQUksS0FBQyxBQUFRLFNBQUMsQUFBSyxBQUFDLEFBQUMsQUFFcEMsQUFBRSxBQUFDO1lBQUMsQUFBUSxhQUFLLEFBQVUsQUFBQyxZQUFDLEFBQUMsQUFDNUI7Z0JBQUksQUFBTSxTQUFHLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBSyxBQUFDLEFBQUMsQUFDakMsQUFBUTt1QkFBRyxBQUFJLEtBQUMsQUFBUSxTQUFDLEFBQUssQUFBQyxTQUFHLEFBQUksS0FBQyxBQUFRLFNBQUMsQUFBTyxRQUFDLEFBQU0sQUFBQyxBQUFDLEFBQ2xFLEFBQUMsQUFFRCxBQUFNOztlQUFDLEFBQWEsQUFBQyxBQUN2QixBQUFDLEFBRUQsQUFBZTs7OzBFQUFJLEFBQVMsR0FDMUIsQUFBTTtlQUFDLEFBQUksS0FBQyxBQUFhLGNBQUMsQUFBQyxBQUFNLEFBQUMsQUFDcEMsQUFBQyxBQUNGOzs7O0FBRUQsQUFBTTtJQUE0Qjs7O3VCQUNiLEFBQW9DLFVBQUUsQUFBbUIsTUFDMUUsQUFBSyxBQUFFLEFBQUM7OztxREFEUzs7Y0FBUSxXQUFSLEFBQVEsQUFBNEIsQUFHckQsQUFBRSxBQUFDO1lBQUMsQUFBSSxBQUFDLE1BQUMsQUFBQyxBQUNULEFBQUk7a0JBQUMsQUFBTyxVQUFHLEFBQUksS0FBQyxBQUFPLEFBQUMsQUFDNUIsQUFBSTtrQkFBQyxBQUFNLFNBQUcsQUFBSSxLQUFDLEFBQU0sQUFBQyxBQUMxQixBQUFJO2tCQUFDLEFBQU0sU0FBRyxBQUFJLEtBQUMsQUFBTSxBQUFDLEFBQzFCLEFBQUk7a0JBQUMsQUFBTyxVQUFHLEFBQUksS0FBQyxBQUFPLEFBQUMsQUFDNUIsQUFBSTtrQkFBQyxBQUFhLGdCQUFHLEFBQUksS0FBQyxBQUFhLEFBQUMsQUFDeEMsQUFBSTtrQkFBQyxBQUFNLFNBQUcsQUFBSSxLQUFDLEFBQU0sQUFBQyxBQUMxQixBQUFJO2tCQUFDLEFBQVMsWUFBRyxBQUFJLEtBQUMsQUFBUyxBQUFDLEFBQ2hDLEFBQUk7a0JBQUMsQUFBUSxpQkFBUSxBQUFPLFFBQUMsQUFBRyxnQkFBQzt1QkFBTSxBQUFVLEFBQUMsQUFBQyxBQUNyRCxBQUFDLEFBQ0g7QUFGb0IsQUFBSSxBQUV2Qjs7ZUFFRCxBQUFpQjtBQUNqQixBQUFROzs7O3FEQUFDLEFBQWEsT0FDcEIsQUFBTTtlQUFDLEFBQUksS0FBQyxBQUFNLE9BQUMsQUFBSyxBQUFDLEFBQUMsQUFDNUIsQUFBQyxBQUVELEFBQVc7OzsyREFBQyxBQUFhLE9BQ3ZCLEFBQU07ZUFBQyxBQUFJLEtBQUMsQUFBUyxVQUFDLEFBQUssQUFBQyxBQUFDLEFBQy9CLEFBQUMsQUFFRCxBQUFTOzs7dURBQUMsQUFBYSxPQUNyQixBQUFNO2VBQUMsQUFBSSxLQUFDLEFBQU8sUUFBQyxBQUFLLEFBQUMsQUFBQyxBQUM3QixBQUFDLEFBRUQsQUFBYzs7O2lFQUFDLEFBQWEsT0FDMUI7WUFBSSxBQUFLLFFBQUcsQUFBSSxLQUFDLEFBQVEsU0FBQyxBQUFLLEFBQUMsQUFBQyxBQUNqQztZQUFJLEFBQU0sU0FBYSxJQUFJLEFBQUssTUFBQyxBQUFLLE1BQUMsQUFBTSxBQUFDLEFBQUMsQUFFL0MsQUFBRyxBQUFDO2FBQUMsSUFBSSxBQUFDLElBQUcsQUFBQyxHQUFFLEFBQUMsSUFBRyxBQUFLLE1BQUMsQUFBTSxRQUFFLEFBQUMsQUFBRSxLQUFFLEFBQUMsQUFDdEM7Z0JBQUksQUFBQyxJQUFHLEFBQUssTUFBQyxBQUFDLEFBQUMsQUFBQyxBQUNqQixBQUFNO21CQUFDLEFBQUMsQUFBQyxLQUFHLEFBQUksS0FBQyxBQUFTLFVBQUMsQUFBQyxBQUFDLEFBQUMsQUFDaEMsQUFBQyxBQUVELEFBQU07O2VBQUMsQUFBTSxBQUFDLEFBQ2hCLEFBQUMsQUFFRCxBQUFROzs7cURBQUMsQUFBYSxPQUNwQixBQUFNO2VBQUUsQUFBSSxLQUFDLEFBQXFCLE9BQUMsQUFBSyxBQUFDLEFBQUMsQUFDNUMsQUFBQyxBQUVELEFBQWM7OztpRUFBd0IsQUFBYSxPQUNqRCxBQUFNO2VBQUMsQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFLLEFBQU0sQUFBQyxBQUNqQyxBQUFDLEFBRUQsQUFBYTs7OytEQUFJLEFBQVMsR0FDeEI7WUFBSSxBQUFLLFFBQUcsQUFBQyxJQUFHLEFBQUMsQUFBQyxBQUNsQjtZQUFJLEFBQVEsV0FBRyxBQUFJLEtBQUMsQUFBUSxTQUFDLEFBQUssQUFBQyxBQUFDLEFBRXBDLEFBQUUsQUFBQztZQUFDLEFBQVEsYUFBSyxBQUFVLEFBQUMsWUFBQyxBQUFDLEFBQzVCO2dCQUFJLEFBQU0sU0FBRyxBQUFJLEtBQUMsQUFBTyxRQUFDLEFBQUssQUFBQyxBQUFDLEFBQ2pDLEFBQVE7dUJBQUcsQUFBSSxLQUFDLEFBQVEsU0FBQyxBQUFLLEFBQUMsU0FBRyxBQUFJLEtBQUMsQUFBUSxTQUFDLEFBQU8sUUFBQyxBQUFNLEFBQUMsQUFBQyxBQUNsRSxBQUFDLEFBRUQsQUFBTTs7ZUFBQyxBQUFhLEFBQUMsQUFDdkIsQUFBQyxBQUVELEFBQWU7OzttRUFBSSxBQUFTLEdBQzFCLEFBQU07ZUFBQyxBQUFJLEtBQUMsQUFBYSxjQUFDLEFBQUMsQUFBTSxBQUFDLEFBQ3BDLEFBQUMsQUFDRixBQUVELEFBQU07Ozs7RUFsRW9DLEFBQWtCLEFBQzFEOztJQWlFeUI7Ozs7Ozs2RUFDakI7O2VBQU0sU0FBYSxBQUFFLEFBQUMsQUFTaEMsQUFBQztlQVBDLEFBQVE7Ozt5REFBSSxBQUFhLE9BQ3ZCLEFBQU07ZUFBQyxBQUFJLEtBQUMsQUFBTSxPQUFDLEFBQUssUUFBRyxBQUFDLEFBQU0sQUFBQyxBQUNyQyxBQUFDLEFBRUQsQUFBSzs7O21EQUFDLEFBQWEsUUFDakIsQUFBTTtlQUFDLEFBQUksS0FBQyxBQUFNLE9BQUMsQUFBSSxLQUFDLEFBQUssQUFBQyxBQUFDLEFBQ2pDLEFBQUMsQUFDRjs7OztFQVZELEFBQW1DLEFBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3BhcXVlLCBTeW1ib2xUYWJsZSwgUnVudGltZVJlc29sdmVyLCBDb21waWxlVGltZUNvbnN0YW50cyB9IGZyb20gXCJAZ2xpbW1lci9pbnRlcmZhY2VzXCI7XG5cbmNvbnN0IFVOUkVTT0xWRUQgPSB7fTtcblxuY29uc3QgV0VMTF9LTk9XTl9FTVBUWV9BUlJBWV9QT1NJVElPTiA9IDA7XG5jb25zdCBXRUxMX0tOT1dfRU1QVFlfQVJSQVkgPSBPYmplY3QuZnJlZXplKFtdKTtcbmV4cG9ydCB0eXBlIEVNUFRZX0FSUkFZID0gQXJyYXk8UmVhZG9ubHlBcnJheTxuZXZlcj4+O1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnN0YW50UG9vbCB7XG4gIHN0cmluZ3M6IHN0cmluZ1tdO1xuICBhcnJheXM6IG51bWJlcltdW10gfCBFTVBUWV9BUlJBWTtcbiAgdGFibGVzOiBTeW1ib2xUYWJsZVtdO1xuICBoYW5kbGVzOiBudW1iZXJbXTtcbiAgc2VyaWFsaXphYmxlczogT3BhcXVlW107XG4gIGZsb2F0czogbnVtYmVyW107XG4gIG5lZ2F0aXZlczogbnVtYmVyW107XG59XG5cbmV4cG9ydCBjb25zdCBlbnVtIFByaW1pdGl2ZVR5cGUge1xuICBOVU1CRVIgICAgICAgICAgPSAwYjAwMCxcbiAgRkxPQVQgICAgICAgICAgID0gMGIwMDEsXG4gIFNUUklORyAgICAgICAgICA9IDBiMDEwLFxuICBCT09MRUFOX09SX1ZPSUQgPSAwYjAxMSxcbiAgTkVHQVRJVkUgICAgICAgID0gMGIxMDBcbn1cblxuZXhwb3J0IGNsYXNzIFdyaXRlT25seUNvbnN0YW50cyBpbXBsZW1lbnRzIENvbXBpbGVUaW1lQ29uc3RhbnRzIHtcbiAgLy8gYDBgIG1lYW5zIE5VTExcblxuICBwcm90ZWN0ZWQgc3RyaW5nczogc3RyaW5nW10gPSBbXTtcbiAgcHJvdGVjdGVkIGFycmF5czogbnVtYmVyW11bXSB8IEVNUFRZX0FSUkFZID0gW1dFTExfS05PV19FTVBUWV9BUlJBWV07XG4gIHByb3RlY3RlZCB0YWJsZXM6IFN5bWJvbFRhYmxlW10gPSBbXTtcbiAgcHJvdGVjdGVkIGhhbmRsZXM6IG51bWJlcltdID0gW107XG4gIHByb3RlY3RlZCBzZXJpYWxpemFibGVzOiBPcGFxdWVbXSA9IFtdO1xuICBwcm90ZWN0ZWQgcmVzb2x2ZWQ6IE9wYXF1ZVtdID0gW107XG4gIHByb3RlY3RlZCBmbG9hdHM6IG51bWJlcltdID0gW107XG4gIHByb3RlY3RlZCBuZWdhdGl2ZXM6IG51bWJlcltdID0gW107XG5cbiAgZmxvYXQoZmxvYXQ6IG51bWJlcikge1xuICAgIGxldCBpbmRleCA9IHRoaXMuZmxvYXRzLmluZGV4T2YoZmxvYXQpO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5mbG9hdHMucHVzaChmbG9hdCkgLSAxO1xuICB9XG5cbiAgbmVnYXRpdmUobmVnYXRpdmU6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLm5lZ2F0aXZlcy5wdXNoKG5lZ2F0aXZlKSAtIDE7XG4gIH1cblxuICBzdHJpbmcodmFsdWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgbGV0IGluZGV4ID0gdGhpcy5zdHJpbmdzLmluZGV4T2YodmFsdWUpO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpbmdzLnB1c2godmFsdWUpIC0gMTtcbiAgfVxuXG4gIHN0cmluZ0FycmF5KHN0cmluZ3M6IHN0cmluZ1tdKTogbnVtYmVyIHtcbiAgICBsZXQgX3N0cmluZ3M6IG51bWJlcltdID0gbmV3IEFycmF5KHN0cmluZ3MubGVuZ3RoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyaW5ncy5sZW5ndGg7IGkrKykge1xuICAgICAgX3N0cmluZ3NbaV0gPSB0aGlzLnN0cmluZyhzdHJpbmdzW2ldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hcnJheShfc3RyaW5ncyk7XG4gIH1cblxuICBhcnJheSh2YWx1ZXM6IG51bWJlcltdKTogbnVtYmVyIHtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFdFTExfS05PV05fRU1QVFlfQVJSQVlfUE9TSVRJT047XG4gICAgfVxuXG4gICAgbGV0IGluZGV4ID0gKHRoaXMuYXJyYXlzIGFzIG51bWJlcltdW10pLmluZGV4T2YodmFsdWVzKTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgcmV0dXJuICh0aGlzLmFycmF5cyBhcyBudW1iZXJbXVtdKS5wdXNoKHZhbHVlcykgLSAxO1xuICB9XG5cbiAgdGFibGUodDogU3ltYm9sVGFibGUpOiBudW1iZXIge1xuICAgIGxldCBpbmRleCA9IHRoaXMudGFibGVzLmluZGV4T2YodCk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRhYmxlcy5wdXNoKHQpIC0gMTtcbiAgfVxuXG4gIGhhbmRsZShoYW5kbGU6IG51bWJlcik6IG51bWJlciB7XG4gICAgdGhpcy5yZXNvbHZlZC5wdXNoKFVOUkVTT0xWRUQpO1xuICAgIHJldHVybiB0aGlzLmhhbmRsZXMucHVzaChoYW5kbGUpO1xuICB9XG5cbiAgc2VyaWFsaXphYmxlKHZhbHVlOiBPcGFxdWUpOiBudW1iZXIge1xuICAgIGxldCBpbmRleCA9IHRoaXMuc2VyaWFsaXphYmxlcy5pbmRleE9mKHZhbHVlKTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc2VyaWFsaXphYmxlcy5wdXNoKHZhbHVlKSAtIDE7XG4gIH1cblxuICB0b1Bvb2woKTogQ29uc3RhbnRQb29sIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RyaW5nczogdGhpcy5zdHJpbmdzLFxuICAgICAgYXJyYXlzOiB0aGlzLmFycmF5cyxcbiAgICAgIHRhYmxlczogdGhpcy50YWJsZXMsXG4gICAgICBoYW5kbGVzOiB0aGlzLmhhbmRsZXMsXG4gICAgICBzZXJpYWxpemFibGVzOiB0aGlzLnNlcmlhbGl6YWJsZXMsXG4gICAgICBmbG9hdHM6IHRoaXMuZmxvYXRzLFxuICAgICAgbmVnYXRpdmVzOiB0aGlzLm5lZ2F0aXZlc1xuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJ1bnRpbWVDb25zdGFudHM8U3BlY2lmaWVyPiB7XG4gIHByb3RlY3RlZCBzdHJpbmdzOiBzdHJpbmdbXTtcbiAgcHJvdGVjdGVkIGFycmF5czogbnVtYmVyW11bXSB8IEVNUFRZX0FSUkFZO1xuICBwcm90ZWN0ZWQgdGFibGVzOiBTeW1ib2xUYWJsZVtdO1xuICBwcm90ZWN0ZWQgaGFuZGxlczogbnVtYmVyW107XG4gIHByb3RlY3RlZCBzZXJpYWxpemFibGVzOiBPcGFxdWVbXTtcbiAgcHJvdGVjdGVkIHJlc29sdmVkOiBPcGFxdWVbXTtcbiAgcHJvdGVjdGVkIGZsb2F0czogbnVtYmVyW107XG4gIHByb3RlY3RlZCBuZWdhdGl2ZXM6IG51bWJlcltdO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZXNvbHZlcjogUnVudGltZVJlc29sdmVyPFNwZWNpZmllcj4sIHBvb2w6IENvbnN0YW50UG9vbCkge1xuICAgIHRoaXMuc3RyaW5ncyA9IHBvb2wuc3RyaW5ncztcbiAgICB0aGlzLmFycmF5cyA9IHBvb2wuYXJyYXlzO1xuICAgIHRoaXMudGFibGVzID0gcG9vbC50YWJsZXM7XG4gICAgdGhpcy5oYW5kbGVzID0gcG9vbC5oYW5kbGVzO1xuICAgIHRoaXMuc2VyaWFsaXphYmxlcyA9IHBvb2wuc2VyaWFsaXphYmxlcztcbiAgICB0aGlzLmZsb2F0cyA9IHBvb2wuZmxvYXRzO1xuICAgIHRoaXMubmVnYXRpdmVzID0gcG9vbC5uZWdhdGl2ZXM7XG4gICAgdGhpcy5yZXNvbHZlZCA9IHRoaXMuaGFuZGxlcy5tYXAoKCkgPT4gVU5SRVNPTFZFRCk7XG4gIH1cblxuICAvLyBgMGAgbWVhbnMgTlVMTFxuXG4gIGdldEZsb2F0KHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmZsb2F0c1t2YWx1ZV07XG4gIH1cblxuICBnZXROZWdhdGl2ZSh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGl2ZXNbdmFsdWVdO1xuICB9XG5cbiAgZ2V0U3RyaW5nKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnN0cmluZ3NbdmFsdWVdO1xuICB9XG5cbiAgZ2V0U3RyaW5nQXJyYXkodmFsdWU6IG51bWJlcik6IHN0cmluZ1tdIHtcbiAgICBsZXQgbmFtZXMgPSB0aGlzLmdldEFycmF5KHZhbHVlKTtcbiAgICBsZXQgX25hbWVzOiBzdHJpbmdbXSA9IG5ldyBBcnJheShuYW1lcy5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IG4gPSBuYW1lc1tpXTtcbiAgICAgIF9uYW1lc1tpXSA9IHRoaXMuZ2V0U3RyaW5nKG4pO1xuICAgIH1cblxuICAgIHJldHVybiBfbmFtZXM7XG4gIH1cblxuICBnZXRBcnJheSh2YWx1ZTogbnVtYmVyKTogbnVtYmVyW10ge1xuICAgIHJldHVybiAodGhpcy5hcnJheXMgYXMgbnVtYmVyW11bXSlbdmFsdWVdO1xuICB9XG5cbiAgZ2V0U3ltYm9sVGFibGU8VCBleHRlbmRzIFN5bWJvbFRhYmxlPih2YWx1ZTogbnVtYmVyKTogVCB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVzW3ZhbHVlXSBhcyBUO1xuICB9XG5cbiAgcmVzb2x2ZUhhbmRsZTxUPihzOiBudW1iZXIpOiBUIHtcbiAgICBsZXQgaW5kZXggPSBzIC0gMTtcbiAgICBsZXQgcmVzb2x2ZWQgPSB0aGlzLnJlc29sdmVkW2luZGV4XTtcblxuICAgIGlmIChyZXNvbHZlZCA9PT0gVU5SRVNPTFZFRCkge1xuICAgICAgbGV0IGhhbmRsZSA9IHRoaXMuaGFuZGxlc1tpbmRleF07XG4gICAgICByZXNvbHZlZCA9IHRoaXMucmVzb2x2ZWRbaW5kZXhdID0gdGhpcy5yZXNvbHZlci5yZXNvbHZlKGhhbmRsZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc29sdmVkIGFzIFQ7XG4gIH1cblxuICBnZXRTZXJpYWxpemFibGU8VD4oczogbnVtYmVyKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuc2VyaWFsaXphYmxlc1tzXSBhcyBUO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb25zdGFudHM8U3BlY2lmaWVyPiBleHRlbmRzIFdyaXRlT25seUNvbnN0YW50cyB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZXNvbHZlcjogUnVudGltZVJlc29sdmVyPFNwZWNpZmllcj4sIHBvb2w/OiBDb25zdGFudFBvb2wpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgaWYgKHBvb2wpIHtcbiAgICAgIHRoaXMuc3RyaW5ncyA9IHBvb2wuc3RyaW5ncztcbiAgICAgIHRoaXMuYXJyYXlzID0gcG9vbC5hcnJheXM7XG4gICAgICB0aGlzLnRhYmxlcyA9IHBvb2wudGFibGVzO1xuICAgICAgdGhpcy5oYW5kbGVzID0gcG9vbC5oYW5kbGVzO1xuICAgICAgdGhpcy5zZXJpYWxpemFibGVzID0gcG9vbC5zZXJpYWxpemFibGVzO1xuICAgICAgdGhpcy5mbG9hdHMgPSBwb29sLmZsb2F0cztcbiAgICAgIHRoaXMubmVnYXRpdmVzID0gcG9vbC5uZWdhdGl2ZXM7XG4gICAgICB0aGlzLnJlc29sdmVkID0gdGhpcy5oYW5kbGVzLm1hcCgoKSA9PiBVTlJFU09MVkVEKTtcbiAgICB9XG4gIH1cblxuICAvLyBgMGAgbWVhbnMgTlVMTFxuICBnZXRGbG9hdCh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5mbG9hdHNbdmFsdWVdO1xuICB9XG5cbiAgZ2V0TmVnYXRpdmUodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRpdmVzW3ZhbHVlXTtcbiAgfVxuXG4gIGdldFN0cmluZyh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmdzW3ZhbHVlXTtcbiAgfVxuXG4gIGdldFN0cmluZ0FycmF5KHZhbHVlOiBudW1iZXIpOiBzdHJpbmdbXSB7XG4gICAgbGV0IG5hbWVzID0gdGhpcy5nZXRBcnJheSh2YWx1ZSk7XG4gICAgbGV0IF9uYW1lczogc3RyaW5nW10gPSBuZXcgQXJyYXkobmFtZXMubGVuZ3RoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBuID0gbmFtZXNbaV07XG4gICAgICBfbmFtZXNbaV0gPSB0aGlzLmdldFN0cmluZyhuKTtcbiAgICB9XG5cbiAgICByZXR1cm4gX25hbWVzO1xuICB9XG5cbiAgZ2V0QXJyYXkodmFsdWU6IG51bWJlcik6IG51bWJlcltdIHtcbiAgICByZXR1cm4gKHRoaXMuYXJyYXlzIGFzIG51bWJlcltdW10pW3ZhbHVlXTtcbiAgfVxuXG4gIGdldFN5bWJvbFRhYmxlPFQgZXh0ZW5kcyBTeW1ib2xUYWJsZT4odmFsdWU6IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnRhYmxlc1t2YWx1ZV0gYXMgVDtcbiAgfVxuXG4gIHJlc29sdmVIYW5kbGU8VD4oczogbnVtYmVyKTogVCB7XG4gICAgbGV0IGluZGV4ID0gcyAtIDE7XG4gICAgbGV0IHJlc29sdmVkID0gdGhpcy5yZXNvbHZlZFtpbmRleF07XG5cbiAgICBpZiAocmVzb2x2ZWQgPT09IFVOUkVTT0xWRUQpIHtcbiAgICAgIGxldCBoYW5kbGUgPSB0aGlzLmhhbmRsZXNbaW5kZXhdO1xuICAgICAgcmVzb2x2ZWQgPSB0aGlzLnJlc29sdmVkW2luZGV4XSA9IHRoaXMucmVzb2x2ZXIucmVzb2x2ZShoYW5kbGUpO1xuICAgIH1cblxuICAgIHJldHVybiByZXNvbHZlZCBhcyBUO1xuICB9XG5cbiAgZ2V0U2VyaWFsaXphYmxlPFQ+KHM6IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6YWJsZXNbc10gYXMgVDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGF6eUNvbnN0YW50cyBleHRlbmRzIENvbnN0YW50czxPcGFxdWU+IHtcbiAgcHJpdmF0ZSBvdGhlcnM6IE9wYXF1ZVtdID0gW107XG5cbiAgZ2V0T3RoZXI8VD4odmFsdWU6IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLm90aGVyc1t2YWx1ZSAtIDFdIGFzIFQ7XG4gIH1cblxuICBvdGhlcihvdGhlcjogT3BhcXVlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5vdGhlcnMucHVzaChvdGhlcik7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvQGdsaW1tZXIvcHJvZ3JhbS9saWIvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFNLEFBQVUsYUFBRyxBQUFFLEFBQUM7QUFFdEIsSUFBTSxBQUErQixrQ0FBRyxBQUFDLEFBQUM7QUFDMUMsSUFBTSxBQUFxQix3QkFBRyxBQUFNLE9BQUMsQUFBTSxPQUFDLEFBQUUsQUFBQyxBQUFDLEFBcUJoRCxBQUFNOztJQUFOO2tDQUNFLEFBQWlCOzhCQUVQOzs7YUFBTyxVQUFhLEFBQUUsQUFBQyxBQUN2QjthQUFNLFNBQTZCLENBQUMsQUFBcUIsQUFBQyxBQUFDLEFBQzNEO2FBQU0sU0FBa0IsQUFBRSxBQUFDLEFBQzNCO2FBQU8sVUFBYSxBQUFFLEFBQUMsQUFDdkI7YUFBYSxnQkFBYSxBQUFFLEFBQUMsQUFDN0I7YUFBUSxXQUFhLEFBQUUsQUFBQyxBQUN4QjthQUFNLFNBQWEsQUFBRSxBQUFDLEFBQ3RCO2FBQVMsWUFBYSxBQUFFLEFBQUMsQUFzRnJDLEFBQUMsQUFwRkMsQUFBSzs7O3dEQUFDLEFBQWEsUUFDakI7WUFBSSxBQUFLLFFBQUcsQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFPLFFBQUMsQUFBSyxBQUFDLEFBQUMsQUFFdkMsQUFBRSxBQUFDO1lBQUMsQUFBSyxRQUFHLENBQUMsQUFBQyxBQUFDLEdBQUMsQUFBQyxBQUNmLEFBQU07bUJBQUMsQUFBSyxBQUFDLEFBQ2YsQUFBQyxBQUVELEFBQU07O2VBQUMsQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFJLEtBQUMsQUFBSyxBQUFDLFVBQUcsQUFBQyxBQUFDLEFBQ3JDLEFBQUMsQUFFRCxBQUFROzs7OERBQUMsQUFBZ0IsV0FDdkIsQUFBTTtlQUFDLEFBQUksS0FBQyxBQUFTLFVBQUMsQUFBSSxLQUFDLEFBQVEs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QUFRLFNBQUMsQUFBSyxBQUFDLFNBQUcsQUFBSSxLQUFDLEFBQVEsU0FBQyxBQUFPLFFBQUMsQUFBTSxBQUFDLEFBQUMsQUFDbEUsQUFBQyxBQUVELEFBQU07O2VBQUMsQUFBYSxBQUFDLEFBQ3ZCLEFBQUMsQUFFRCxBQUFlOzs7bUVBQUksQUFBUyxHQUMxQixBQUFNO2VBQUMsQUFBSSxLQUFDLEFBQWEsY0FBQyxBQUFDLEFBQU0sQUFBQyxBQUNwQyxBQUFDLEFBQ0YsQUFFRCxBQUFNOzs7O0VBbEV1QyxBQUFrQixBQUM3RDs7SUFpRXlCOzs7Ozs7NkVBQ2pCOztlQUFNLFNBQWEsQUFBRSxBQUFDLEFBU2hDLEFBQUM7ZUFQQyxBQUFROzs7eURBQUksQUFBYSxPQUN2QixBQUFNO2VBQUMsQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFLLFFBQUcsQUFBQyxBQUFNLEFBQUMsQUFDckMsQUFBQyxBQUVELEFBQUs7OzttREFBQyxBQUFhLFFBQ2pCLEFBQU07ZUFBQyxBQUFJLEtBQUMsQUFBTSxPQUFDLEFBQUksS0FBQyxBQUFLLEFBQUMsQUFBQyxBQUNqQyxBQUFDLEFBQ0Y7Ozs7RUFWRCxBQUFtQyxBQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wYXF1ZSwgU3ltYm9sVGFibGUsIFJ1bnRpbWVSZXNvbHZlciwgQ29tcGlsZVRpbWVDb25zdGFudHMgfSBmcm9tIFwiQGdsaW1tZXIvaW50ZXJmYWNlc1wiO1xuXG5jb25zdCBVTlJFU09MVkVEID0ge307XG5cbmNvbnN0IFdFTExfS05PV05fRU1QVFlfQVJSQVlfUE9TSVRJT04gPSAwO1xuY29uc3QgV0VMTF9LTk9XX0VNUFRZX0FSUkFZID0gT2JqZWN0LmZyZWV6ZShbXSk7XG5leHBvcnQgdHlwZSBFTVBUWV9BUlJBWSA9IEFycmF5PFJlYWRvbmx5QXJyYXk8bmV2ZXI+PjtcblxuZXhwb3J0IGludGVyZmFjZSBDb25zdGFudFBvb2wge1xuICBzdHJpbmdzOiBzdHJpbmdbXTtcbiAgYXJyYXlzOiBudW1iZXJbXVtdIHwgRU1QVFlfQVJSQVk7XG4gIHRhYmxlczogU3ltYm9sVGFibGVbXTtcbiAgaGFuZGxlczogbnVtYmVyW107XG4gIHNlcmlhbGl6YWJsZXM6IE9wYXF1ZVtdO1xuICBmbG9hdHM6IG51bWJlcltdO1xuICBuZWdhdGl2ZXM6IG51bWJlcltdO1xufVxuXG5leHBvcnQgY29uc3QgZW51bSBQcmltaXRpdmVUeXBlIHtcbiAgTlVNQkVSICAgICAgICAgID0gMGIwMDAsXG4gIEZMT0FUICAgICAgICAgICA9IDBiMDAxLFxuICBTVFJJTkcgICAgICAgICAgPSAwYjAxMCxcbiAgQk9PTEVBTl9PUl9WT0lEID0gMGIwMTEsXG4gIE5FR0FUSVZFICAgICAgICA9IDBiMTAwXG59XG5cbmV4cG9ydCBjbGFzcyBXcml0ZU9ubHlDb25zdGFudHMgaW1wbGVtZW50cyBDb21waWxlVGltZUNvbnN0YW50cyB7XG4gIC8vIGAwYCBtZWFucyBOVUxMXG5cbiAgcHJvdGVjdGVkIHN0cmluZ3M6IHN0cmluZ1tdID0gW107XG4gIHByb3RlY3RlZCBhcnJheXM6IG51bWJlcltdW10gfCBFTVBUWV9BUlJBWSA9IFtXRUxMX0tOT1dfRU1QVFlfQVJSQVldO1xuICBwcm90ZWN0ZWQgdGFibGVzOiBTeW1ib2xUYWJsZVtdID0gW107XG4gIHByb3RlY3RlZCBoYW5kbGVzOiBudW1iZXJbXSA9IFtdO1xuICBwcm90ZWN0ZWQgc2VyaWFsaXphYmxlczogT3BhcXVlW10gPSBbXTtcbiAgcHJvdGVjdGVkIHJlc29sdmVkOiBPcGFxdWVbXSA9IFtdO1xuICBwcm90ZWN0ZWQgZmxvYXRzOiBudW1iZXJbXSA9IFtdO1xuICBwcm90ZWN0ZWQgbmVnYXRpdmVzOiBudW1iZXJbXSA9IFtdO1xuXG4gIGZsb2F0KGZsb2F0OiBudW1iZXIpIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLmZsb2F0cy5pbmRleE9mKGZsb2F0KTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZmxvYXRzLnB1c2goZmxvYXQpIC0gMTtcbiAgfVxuXG4gIG5lZ2F0aXZlKG5lZ2F0aXZlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGl2ZXMucHVzaChuZWdhdGl2ZSkgLSAxO1xuICB9XG5cbiAgc3RyaW5nKHZhbHVlOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGxldCBpbmRleCA9IHRoaXMuc3RyaW5ncy5pbmRleE9mKHZhbHVlKTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaW5ncy5wdXNoKHZhbHVlKSAtIDE7XG4gIH1cblxuICBzdHJpbmdBcnJheShzdHJpbmdzOiBzdHJpbmdbXSk6IG51bWJlciB7XG4gICAgbGV0IF9zdHJpbmdzOiBudW1iZXJbXSA9IG5ldyBBcnJheShzdHJpbmdzLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0cmluZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIF9zdHJpbmdzW2ldID0gdGhpcy5zdHJpbmcoc3RyaW5nc1tpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXJyYXkoX3N0cmluZ3MpO1xuICB9XG5cbiAgYXJyYXkodmFsdWVzOiBudW1iZXJbXSk6IG51bWJlciB7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBXRUxMX0tOT1dOX0VNUFRZX0FSUkFZX1BPU0lUSU9OO1xuICAgIH1cblxuICAgIGxldCBpbmRleCA9ICh0aGlzLmFycmF5cyBhcyBudW1iZXJbXVtdKS5pbmRleE9mKHZhbHVlcyk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIHJldHVybiAodGhpcy5hcnJheXMgYXMgbnVtYmVyW11bXSkucHVzaCh2YWx1ZXMpIC0gMTtcbiAgfVxuXG4gIHRhYmxlKHQ6IFN5bWJvbFRhYmxlKTogbnVtYmVyIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLnRhYmxlcy5pbmRleE9mKHQpO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50YWJsZXMucHVzaCh0KSAtIDE7XG4gIH1cblxuICBoYW5kbGUoaGFuZGxlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHRoaXMucmVzb2x2ZWQucHVzaChVTlJFU09MVkVEKTtcbiAgICByZXR1cm4gdGhpcy5oYW5kbGVzLnB1c2goaGFuZGxlKTtcbiAgfVxuXG4gIHNlcmlhbGl6YWJsZSh2YWx1ZTogT3BhcXVlKTogbnVtYmVyIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLnNlcmlhbGl6YWJsZXMuaW5kZXhPZih2YWx1ZSk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6YWJsZXMucHVzaCh2YWx1ZSkgLSAxO1xuICB9XG5cbiAgdG9Qb29sKCk6IENvbnN0YW50UG9vbCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0cmluZ3M6IHRoaXMuc3RyaW5ncyxcbiAgICAgIGFycmF5czogdGhpcy5hcnJheXMsXG4gICAgICB0YWJsZXM6IHRoaXMudGFibGVzLFxuICAgICAgaGFuZGxlczogdGhpcy5oYW5kbGVzLFxuICAgICAgc2VyaWFsaXphYmxlczogdGhpcy5zZXJpYWxpemFibGVzLFxuICAgICAgZmxvYXRzOiB0aGlzLmZsb2F0cyxcbiAgICAgIG5lZ2F0aXZlczogdGhpcy5uZWdhdGl2ZXNcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSdW50aW1lQ29uc3RhbnRzPFRlbXBsYXRlTWV0YT4ge1xuICBwcm90ZWN0ZWQgc3RyaW5nczogc3RyaW5nW107XG4gIHByb3RlY3RlZCBhcnJheXM6IG51bWJlcltdW10gfCBFTVBUWV9BUlJBWTtcbiAgcHJvdGVjdGVkIHRhYmxlczogU3ltYm9sVGFibGVbXTtcbiAgcHJvdGVjdGVkIGhhbmRsZXM6IG51bWJlcltdO1xuICBwcm90ZWN0ZWQgc2VyaWFsaXphYmxlczogT3BhcXVlW107XG4gIHByb3RlY3RlZCByZXNvbHZlZDogT3BhcXVlW107XG4gIHByb3RlY3RlZCBmbG9hdHM6IG51bWJlcltdO1xuICBwcm90ZWN0ZWQgbmVnYXRpdmVzOiBudW1iZXJbXTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVzb2x2ZXI6IFJ1bnRpbWVSZXNvbHZlcjxUZW1wbGF0ZU1ldGE+LCBwb29sOiBDb25zdGFudFBvb2wpIHtcbiAgICB0aGlzLnN0cmluZ3MgPSBwb29sLnN0cmluZ3M7XG4gICAgdGhpcy5hcnJheXMgPSBwb29sLmFycmF5cztcbiAgICB0aGlzLnRhYmxlcyA9IHBvb2wudGFibGVzO1xuICAgIHRoaXMuaGFuZGxlcyA9IHBvb2wuaGFuZGxlcztcbiAgICB0aGlzLnNlcmlhbGl6YWJsZXMgPSBwb29sLnNlcmlhbGl6YWJsZXM7XG4gICAgdGhpcy5mbG9hdHMgPSBwb29sLmZsb2F0cztcbiAgICB0aGlzLm5lZ2F0aXZlcyA9IHBvb2wubmVnYXRpdmVzO1xuICAgIHRoaXMucmVzb2x2ZWQgPSB0aGlzLmhhbmRsZXMubWFwKCgpID0+IFVOUkVTT0xWRUQpO1xuICB9XG5cbiAgLy8gYDBgIG1lYW5zIE5VTExcblxuICBnZXRGbG9hdCh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5mbG9hdHNbdmFsdWVdO1xuICB9XG5cbiAgZ2V0TmVnYXRpdmUodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRpdmVzW3ZhbHVlXTtcbiAgfVxuXG4gIGdldFN0cmluZyh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmdzW3ZhbHVlXTtcbiAgfVxuXG4gIGdldFN0cmluZ0FycmF5KHZhbHVlOiBudW1iZXIpOiBzdHJpbmdbXSB7XG4gICAgbGV0IG5hbWVzID0gdGhpcy5nZXRBcnJheSh2YWx1ZSk7XG4gICAgbGV0IF9uYW1lczogc3RyaW5nW10gPSBuZXcgQXJyYXkobmFtZXMubGVuZ3RoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBuID0gbmFtZXNbaV07XG4gICAgICBfbmFtZXNbaV0gPSB0aGlzLmdldFN0cmluZyhuKTtcbiAgICB9XG5cbiAgICByZXR1cm4gX25hbWVzO1xuICB9XG5cbiAgZ2V0QXJyYXkodmFsdWU6IG51bWJlcik6IG51bWJlcltdIHtcbiAgICByZXR1cm4gKHRoaXMuYXJyYXlzIGFzIG51bWJlcltdW10pW3ZhbHVlXTtcbiAgfVxuXG4gIGdldFN5bWJvbFRhYmxlPFQgZXh0ZW5kcyBTeW1ib2xUYWJsZT4odmFsdWU6IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnRhYmxlc1t2YWx1ZV0gYXMgVDtcbiAgfVxuXG4gIHJlc29sdmVIYW5kbGU8VD4oczogbnVtYmVyKTogVCB7XG4gICAgbGV0IGluZGV4ID0gcyAtIDE7XG4gICAgbGV0IHJlc29sdmVkID0gdGhpcy5yZXNvbHZlZFtpbmRleF07XG5cbiAgICBpZiAocmVzb2x2ZWQgPT09IFVOUkVTT0xWRUQpIHtcbiAgICAgIGxldCBoYW5kbGUgPSB0aGlzLmhhbmRsZXNbaW5kZXhdO1xuICAgICAgcmVzb2x2ZWQgPSB0aGlzLnJlc29sdmVkW2luZGV4XSA9IHRoaXMucmVzb2x2ZXIucmVzb2x2ZShoYW5kbGUpO1xuICAgIH1cblxuICAgIHJldHVybiByZXNvbHZlZCBhcyBUO1xuICB9XG5cbiAgZ2V0U2VyaWFsaXphYmxlPFQ+KHM6IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6YWJsZXNbc10gYXMgVDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29uc3RhbnRzPFRlbXBsYXRlTWV0YT4gZXh0ZW5kcyBXcml0ZU9ubHlDb25zdGFudHMge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVzb2x2ZXI6IFJ1bnRpbWVSZXNvbHZlcjxUZW1wbGF0ZU1ldGE+LCBwb29sPzogQ29uc3RhbnRQb29sKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGlmIChwb29sKSB7XG4gICAgICB0aGlzLnN0cmluZ3MgPSBwb29sLnN0cmluZ3M7XG4gICAgICB0aGlzLmFycmF5cyA9IHBvb2wuYXJyYXlzO1xuICAgICAgdGhpcy50YWJsZXMgPSBwb29sLnRhYmxlcztcbiAgICAgIHRoaXMuaGFuZGxlcyA9IHBvb2wuaGFuZGxlcztcbiAgICAgIHRoaXMuc2VyaWFsaXphYmxlcyA9IHBvb2wuc2VyaWFsaXphYmxlcztcbiAgICAgIHRoaXMuZmxvYXRzID0gcG9vbC5mbG9hdHM7XG4gICAgICB0aGlzLm5lZ2F0aXZlcyA9IHBvb2wubmVnYXRpdmVzO1xuICAgICAgdGhpcy5yZXNvbHZlZCA9IHRoaXMuaGFuZGxlcy5tYXAoKCkgPT4gVU5SRVNPTFZFRCk7XG4gICAgfVxuICB9XG5cbiAgLy8gYDBgIG1lYW5zIE5VTExcbiAgZ2V0RmxvYXQodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZmxvYXRzW3ZhbHVlXTtcbiAgfVxuXG4gIGdldE5lZ2F0aXZlKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm5lZ2F0aXZlc1t2YWx1ZV07XG4gIH1cblxuICBnZXRTdHJpbmcodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3RyaW5nc1t2YWx1ZV07XG4gIH1cblxuICBnZXRTdHJpbmdBcnJheSh2YWx1ZTogbnVtYmVyKTogc3RyaW5nW10ge1xuICAgIGxldCBuYW1lcyA9IHRoaXMuZ2V0QXJyYXkodmFsdWUpO1xuICAgIGxldCBfbmFtZXM6IHN0cmluZ1tdID0gbmV3IEFycmF5KG5hbWVzLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgbiA9IG5hbWVzW2ldO1xuICAgICAgX25hbWVzW2ldID0gdGhpcy5nZXRTdHJpbmcobik7XG4gICAgfVxuXG4gICAgcmV0dXJuIF9uYW1lcztcbiAgfVxuXG4gIGdldEFycmF5KHZhbHVlOiBudW1iZXIpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuICh0aGlzLmFycmF5cyBhcyBudW1iZXJbXVtdKVt2YWx1ZV07XG4gIH1cblxuICBnZXRTeW1ib2xUYWJsZTxUIGV4dGVuZHMgU3ltYm9sVGFibGU+KHZhbHVlOiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZXNbdmFsdWVdIGFzIFQ7XG4gIH1cblxuICByZXNvbHZlSGFuZGxlPFQ+KHM6IG51bWJlcik6IFQge1xuICAgIGxldCBpbmRleCA9IHMgLSAxO1xuICAgIGxldCByZXNvbHZlZCA9IHRoaXMucmVzb2x2ZWRbaW5kZXhdO1xuXG4gICAgaWYgKHJlc29sdmVkID09PSBVTlJFU09MVkVEKSB7XG4gICAgICBsZXQgaGFuZGxlID0gdGhpcy5oYW5kbGVzW2luZGV4XTtcbiAgICAgIHJlc29sdmVkID0gdGhpcy5yZXNvbHZlZFtpbmRleF0gPSB0aGlzLnJlc29sdmVyLnJlc29sdmUoaGFuZGxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzb2x2ZWQgYXMgVDtcbiAgfVxuXG4gIGdldFNlcmlhbGl6YWJsZTxUPihzOiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zZXJpYWxpemFibGVzW3NdIGFzIFQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIExhenlDb25zdGFudHMgZXh0ZW5kcyBDb25zdGFudHM8T3BhcXVlPiB7XG4gIHByaXZhdGUgb3RoZXJzOiBPcGFxdWVbXSA9IFtdO1xuXG4gIGdldE90aGVyPFQ+KHZhbHVlOiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5vdGhlcnNbdmFsdWUgLSAxXSBhcyBUO1xuICB9XG5cbiAgb3RoZXIob3RoZXI6IE9wYXF1ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMub3RoZXJzLnB1c2gob3RoZXIpO1xuICB9XG59XG4iXX0=
"use strict";
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9wcm9ncmFtL2xpYi9pbnRlcm5hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVW5pcXVlLCBSdW50aW1lUmVzb2x2ZXIgYXMgSVJlc29sdmVyIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCB0eXBlIFNwZWNpZmllciA9IFVuaXF1ZTwnU3BlY2lmaWVyJz47XG5leHBvcnQgdHlwZSBSZWZlcnJlciA9IFVuaXF1ZTwnUmVmZXJyZXInPjtcbmV4cG9ydCB0eXBlIFJlc29sdmVyID0gSVJlc29sdmVyPFNwZWNpZmllcj47XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9wcm9ncmFtL2xpYi9pbnRlcm5hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVW5pcXVlLCBSdW50aW1lUmVzb2x2ZXIgYXMgSVJlc29sdmVyIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCB0eXBlIFRlbXBsYXRlTWV0YSA9IFVuaXF1ZTwnVGVtcGxhdGVNZXRhJz47XG5leHBvcnQgdHlwZSBSZWZlcnJlciA9IFVuaXF1ZTwnUmVmZXJyZXInPjtcbmV4cG9ydCB0eXBlIFJlc29sdmVyID0gSVJlc29sdmVyPFRlbXBsYXRlTWV0YT47XG4iXX0=

@@ -239,2 +239,8 @@ "use strict";

RuntimeProgram.hydrate = function hydrate(rawHeap, pool, resolver) {
var heap = new Heap(rawHeap);
var constants = new _constants.RuntimeConstants(resolver, pool);
return new RuntimeProgram(constants, heap);
};
RuntimeProgram.prototype.opcode = function opcode(offset) {

@@ -271,2 +277,2 @@ this._opcode.offset = offset;

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3Byb2dyYW0vbGliL3Byb2dyYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBLEFBQU8sQUFBYSxBQUFrQixBQUFvQixBQUFNLEFBQWEsQUFBQzs7QUFDOUUsQUFBTyxBQUFFLEFBQU0sQUFBRSxBQUFNLEFBQVUsQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVsQyxJQUFLLEFBS0o7QUFMRCxXQUFLLEFBQWMsZ0JBQ2pCO3NEQUFTLEFBQ1Q7a0RBQUssQUFDTDttREFBTSxBQUNOO29EQUFPLEFBQ1QsQUFBQztHQUxJLEFBQWMsbUJBQWQsQUFBYyxpQkFLbEI7QUFFRCxJQUFNLEFBQVUsYUFBRyxBQUFDLEFBQUM7QUFDckIsSUFBTSxBQUFXLGNBQUcsQUFBQyxBQUFDO0FBQ3RCLElBQU0sQUFBUyxZQUFJLEFBQWtDLEFBQUM7QUFDdEQsSUFBTSxBQUFVLGFBQUcsQUFBa0MsQUFBQztBQUN0RCxJQUFNLEFBQVUsYUFBRyxBQUFrQyxBQUFDO0FBRXRELHlCQUF5QixBQUFZLE1BQUUsQUFBaUIsV0FBRSxBQUFhLE9BQ3JFLEFBQU07V0FBQyxBQUFJLEFBQUcsT0FBQyxBQUFTLGFBQUksQUFBRSxBQUFDLEtBQUcsQUFBSyxTQUFJLEFBQUUsQUFBQyxBQUNoRCxBQUFDOztBQUVELHFCQUFxQixBQUFZLE1BQUUsQUFBZ0IsVUFDakQsQUFBTTtXQUFDLEFBQUksT0FBRyxBQUFRLFlBQUksQUFBRSxBQUFDLEFBQy9CLEFBQUM7O0FBRUQsQUFtQkcsQUFDSCxBQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQU1KO2tCQUFZLEFBQXlFLGdCQUg3RTs7O2FBQU0sU0FBRyxBQUFDLEFBQUMsQUFDWDthQUFNLFNBQUcsQUFBQyxBQUFDLEFBR2pCLEFBQUUsQUFBQztZQUFDLEFBQWMsQUFBQyxnQkFBQyxBQUFDLEFBQ25C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QUFDLEFBQUssVUFBSyxBQUFTLEFBQUMsV0FBQyxBQUFDLEFBQzVCLEFBQU07bUJBQUMsQUFBRyxJQUFDLEFBQUssTUFBQyxBQUFLLE9BQUUsQUFBRyxBQUFDLEtBQUMsQUFBTSxBQUFDLEFBQ3RDLEFBQUMsQUFFRDs7WUFBSSxBQUFHLE1BQUcsSUFBSSxBQUFXLFlBQUMsQUFBRyxBQUFDLEFBQUMsQUFFL0IsQUFBRyxBQUFDLEFBQUM7ZUFBRSxBQUFLLFFBQUcsQUFBRyxLQUFFLEFBQUssQUFBRSxTQUFFLEFBQUMsQUFDNUIsQUFBRztnQkFBQyxBQUFLLEFBQUMsU0FBSSxBQUFHLElBQUMsQUFBSyxBQUFDLEFBQUMsQUFDM0IsQUFBQyxBQUVELEFBQU07O2VBQUMsQUFBRyxJQUFDLEFBQU0sQUFBQyxBQUNwQixBQUFDLEFBRUQsQUFBTTs7V0FBQyxBQUFJLEFBQUMsQUFDZCxBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBDb21waWxlVGltZVByb2dyYW0sIFJlY2FzdCwgVk1IYW5kbGUgfSBmcm9tIFwiQGdsaW1tZXIvaW50ZXJmYWNlc1wiO1xuaW1wb3J0IHsgREVCVUcgfSBmcm9tIFwiQGdsaW1tZXIvbG9jYWwtZGVidWctZmxhZ3NcIjtcbmltcG9ydCB7IENvbnN0YW50cywgV3JpdGVPbmx5Q29uc3RhbnRzLCBSdW50aW1lQ29uc3RhbnRzIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgT3Bjb2RlIH0gZnJvbSAnLi9vcGNvZGUnO1xuXG5lbnVtIFRhYmxlU2xvdFN0YXRlIHtcbiAgQWxsb2NhdGVkLFxuICBGcmVlZCxcbiAgUHVyZ2VkLFxuICBQb2ludGVyXG59XG5cbmNvbnN0IEVOVFJZX1NJWkUgPSAyO1xuY29uc3QgSU5GT19PRkZTRVQgPSAxO1xuY29uc3QgU0laRV9NQVNLID0gIDBiMDAwMDAwMDAwMDAwMDAwMDExMTExMTExMTExMTExMTE7XG5jb25zdCBTQ09QRV9NQVNLID0gMGIwMDExMTExMTExMTExMTExMDAwMDAwMDAwMDAwMDAwMDtcbmNvbnN0IFNUQVRFX01BU0sgPSAwYjExMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwO1xuXG5mdW5jdGlvbiBlbmNvZGVUYWJsZUluZm8oc2l6ZTogbnVtYmVyLCBzY29wZVNpemU6IG51bWJlciwgc3RhdGU6IG51bWJlcikge1xuICByZXR1cm4gc2l6ZSB8IChzY29wZVNpemUgPDwgMTYpIHwgc3RhdGUgPDwgMzA7XG59XG5cbmZ1bmN0aW9uIGNoYW5nZVN0YXRlKGluZm86IG51bWJlciwgbmV3U3RhdGU6IG51bWJlcikge1xuICByZXR1cm4gaW5mbyB8IG5ld1N0YXRlIDw8IDMwO1xufVxuXG4vKipcbiAqIFRoZSBIZWFwIGlzIHJlc3BvbnNpYmxlIGZvciBkeW5hbWljYWxseSBhbGxvY2F0aW5nXG4gKiBtZW1vcnkgaW4gd2hpY2ggd2UgcmVhZC93cml0ZSB0aGUgVk0ncyBpbnN0cnVjdGlvbnNcbiAqIGZyb20vdG8uIFdoZW4gd2UgbWFsbG9jIHdlIHBhc3Mgb3V0IGEgVk1IYW5kbGUsIHdoaWNoXG4gKiBpcyB1c2VkIGFzIGFuIGluZGlyZWN0IHdheSBvZiBhY2Nlc3NpbmcgdGhlIG1lbW9yeSBkdXJpbmdcbiAqIGV4ZWN1dGlvbiBvZiB0aGUgVk0uIEludGVybmFsbHkgd2UgdHJhY2sgdGhlIGRpZmZlcmVudFxuICogcmVnaW9ucyBvZiB0aGUgbWVtb3J5IGluIGFuIGludCBhcnJheSBrbm93biBhcyB0aGUgdGFibGUuXG4gKlxuICogVGhlIHRhYmxlIDMyLWJpdCBhbGlnbmVkIGFuZCBoYXMgdGhlIGZvbGxvd2luZyBsYXlvdXQ6XG4gKlxuICogfCAuLi4gfCBocCAodTMyKSB8ICAgICAgIGluZm8gKHUzMikgICAgICAgICAgfFxuICogfCAuLi4gfCAgSGFuZGxlICB8IFNpemUgfCBTY29wZSBTaXplIHwgU3RhdGUgfFxuICogfCAuLi4gfCAzMi1iaXRzICB8IDE2YiAgfCAgICAxNGIgICAgIHwgIDJiICAgfFxuICpcbiAqIFdpdGggdGhpcyBpbmZvcm1hdGlvbiB3ZSBlZmZlY3RpdmVseSBoYXZlIHRoZSBhYmlsaXR5IHRvXG4gKiBjb250cm9sIHdoZW4gd2Ugd2FudCB0byBmcmVlIG1lbW9yeS4gVGhhdCBiZWluZyBzYWlkIHlvdVxuICogY2FuIG5vdCBmcmVlIGR1cmluZyBleGVjdXRpb24gYXMgcmF3IGFkZHJlc3MgYXJlIG9ubHlcbiAqIHZhbGlkIGR1cmluZyB0aGUgZXhlY3V0aW9uLiBUaGlzIG1lYW5zIHlvdSBjYW5ub3QgY2xvc2VcbiAqIG92ZXIgdGhlbSBhcyB5b3Ugd2lsbCBoYXZlIGEgYmFkIG1lbW9yeSBhY2Nlc3MgZXhjZXB0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgSGVhcCB7XG4gIHByaXZhdGUgaGVhcDogVWludDE2QXJyYXkgfCBBcnJheTxudW1iZXI+O1xuICBwcml2YXRlIHRhYmxlOiBudW1iZXJbXTtcbiAgcHJpdmF0ZSBvZmZzZXQgPSAwO1xuICBwcml2YXRlIGhhbmRsZSA9IDA7XG5cbiAgY29uc3RydWN0b3Ioc2VyaWFsaXplZEhlYXA/OiB7IGJ1ZmZlcjogQXJyYXlCdWZmZXIsIHRhYmxlOiBudW1iZXJbXSwgaGFuZGxlOiBudW1iZXIgfSkge1xuICAgIGlmIChzZXJpYWxpemVkSGVhcCkge1xuICAgICAgbGV0IHsgYnVmZmVyLCB0YWJsZSwgaGFuZGxlIH0gPSBzZXJpYWxpemVkSGVhcDtcbiAgICAgIHRoaXMuaGVhcCA9IG5ldyBVaW50MTZBcnJheShidWZmZXIpO1xuICAgICAgdGhpcy50YWJsZSA9IHRhYmxlO1xuICAgICAgdGhpcy5vZmZzZXQgPSB0aGlzLmhlYXAubGVuZ3RoO1xuICAgICAgdGhpcy5oYW5kbGUgPSBoYW5kbGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGVhcCA9IG5ldyBVaW50MTZBcnJheSgweDEwMDAwMCk7XG4gICAgICB0aGlzLnRhYmxlID0gW107XG4gICAgfVxuICB9XG5cbiAgcHVzaChpdGVtOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmhlYXBbdGhpcy5vZmZzZXQrK10gPSBpdGVtO1xuICB9XG5cbiAgZ2V0YnlhZGRyKGFkZHJlc3M6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaGVhcFthZGRyZXNzXTtcbiAgfVxuXG4gIHNldGJ5YWRkcihhZGRyZXNzOiBudW1iZXIsIHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLmhlYXBbYWRkcmVzc10gPSB2YWx1ZTtcbiAgfVxuXG4gIG1hbGxvYygpOiBWTUhhbmRsZSB7XG4gICAgdGhpcy50YWJsZS5wdXNoKHRoaXMub2Zmc2V0LCAwKTtcbiAgICBsZXQgaGFuZGxlID0gdGhpcy5oYW5kbGU7XG4gICAgdGhpcy5oYW5kbGUgKz0gRU5UUllfU0laRTtcbiAgICByZXR1cm4gaGFuZGxlIGFzIFJlY2FzdDxudW1iZXIsIFZNSGFuZGxlPjtcbiAgfVxuXG4gIGZpbmlzaE1hbGxvYyhoYW5kbGU6IFZNSGFuZGxlLCBzY29wZVNpemU6IG51bWJlcik6IHZvaWQge1xuICAgIGxldCBzdGFydCA9IHRoaXMudGFibGVbaGFuZGxlIGFzIFJlY2FzdDxWTUhhbmRsZSwgbnVtYmVyPl07XG4gICAgbGV0IGZpbmlzaCA9IHRoaXMub2Zmc2V0O1xuICAgIGxldCBpbnN0cnVjdGlvblNpemUgPSBmaW5pc2ggLSBzdGFydDtcbiAgICBsZXQgaW5mbyA9IGVuY29kZVRhYmxlSW5mbyhpbnN0cnVjdGlvblNpemUsIHNjb3BlU2l6ZSwgVGFibGVTbG90U3RhdGUuQWxsb2NhdGVkKTtcbiAgICB0aGlzLnRhYmxlWyhoYW5kbGUgYXMgUmVjYXN0PFZNSGFuZGxlLCBudW1iZXI+KSArIElORk9fT0ZGU0VUXSA9IGluZm87XG4gIH1cblxuICBzaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMub2Zmc2V0O1xuICB9XG5cbiAgLy8gSXQgaXMgaWxsZWdhbCB0byBjbG9zZSBvdmVyIHRoaXMgYWRkcmVzcywgYXMgY29tcGFjdGlvblxuICAvLyBtYXkgbW92ZSBpdC4gSG93ZXZlciwgaXQgaXMgbGVnYWwgdG8gdXNlIHRoaXMgYWRkcmVzc1xuICAvLyBtdWx0aXBsZSB0aW1lcyBiZXR3ZWVuIGNvbXBhY3Rpb25zLlxuICBnZXRhZGRyKGhhbmRsZTogVk1IYW5kbGUpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRhYmxlW2hhbmRsZSBhcyBSZWNhc3Q8Vk1IYW5kbGUsIG51bWJlcj5dO1xuICB9XG5cbiAgZ2V0aGFuZGxlKGFkZHJlc3M6IG51bWJlcik6IFZNSGFuZGxlIHtcbiAgICB0aGlzLnRhYmxlLnB1c2goYWRkcmVzcywgZW5jb2RlVGFibGVJbmZvKDAsIDAsIFRhYmxlU2xvdFN0YXRlLlBvaW50ZXIpKTtcbiAgICBsZXQgaGFuZGxlID0gdGhpcy5oYW5kbGU7XG4gICAgdGhpcy5oYW5kbGUgKz0gRU5UUllfU0laRTtcbiAgICByZXR1cm4gaGFuZGxlIGFzIFJlY2FzdDxudW1iZXIsIFZNSGFuZGxlPjtcbiAgfVxuXG4gIHNpemVvZihoYW5kbGU6IFZNSGFuZGxlKTogbnVtYmVyIHtcbiAgICBpZiAoREVCVUcpIHtcbiAgICAgIGxldCBpbmZvID0gdGhpcy50YWJsZVsoaGFuZGxlIGFzIFJlY2FzdDxWTUhhbmRsZSwgbnVtYmVyPikgKyBJTkZPX09GRlNFVF07XG4gICAgICByZXR1cm4gaW5mbyAmIFNJWkVfTUFTSztcbiAgICB9XG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgc2NvcGVzaXplb2YoaGFuZGxlOiBWTUhhbmRsZSk6IG51bWJlciB7XG4gICAgbGV0IGluZm8gPSB0aGlzLnRhYmxlWyhoYW5kbGUgYXMgUmVjYXN0PFZNSGFuZGxlLCBudW1iZXI+KSArIElORk9fT0ZGU0VUXTtcbiAgICByZXR1cm4gKGluZm8gJiBTQ09QRV9NQVNLKSA+PiAxNjtcbiAgfVxuXG4gIGZyZWUoaGFuZGxlOiBWTUhhbmRsZSk6IHZvaWQge1xuICAgIGxldCBpbmZvID0gdGhpcy50YWJsZVsoaGFuZGxlIGFzIFJlY2FzdDxWTUhhbmRsZSwgbnVtYmVyPikgKyBJTkZPX09GRlNFVF07XG4gICAgdGhpcy50YWJsZVsoaGFuZGxlIGFzIFJlY2FzdDxWTUhhbmRsZSwgbnVtYmVyPikgKyBJTkZPX09GRlNFVF0gPSBjaGFuZ2VTdGF0ZShpbmZvLCBUYWJsZVNsb3RTdGF0ZS5GcmVlZCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGhlYXAgdXNlcyB0aGUgW01hcmstQ29tcGFjdCBBbGdvcml0aG1dKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01hcmstY29tcGFjdF9hbGdvcml0aG0pIHRvIHNoaWZ0XG4gICAqIHJlYWNoYWJsZSBtZW1vcnkgdG8gdGhlIGJvdHRvbSBvZiB0aGUgaGVhcCBhbmQgZnJlZWFibGVcbiAgICogbWVtb3J5IHRvIHRoZSB0b3Agb2YgdGhlIGhlYXAuIFdoZW4gd2UgaGF2ZSBzaGlmdGVkIGFsbFxuICAgKiB0aGUgcmVhY2hhYmxlIG1lbW9yeSB0byB0aGUgdG9wIG9mIHRoZSBoZWFwLCB3ZSBtb3ZlIHRoZVxuICAgKiBvZmZzZXQgdG8gdGhlIG5leHQgZnJlZSBwb3NpdGlvbi5cbiAgICovXG4gIGNvbXBhY3QoKTogdm9pZCB7XG4gICAgbGV0IGNvbXBhY3RlZFNpemUgPSAwO1xuICAgIGxldCB7IHRhYmxlLCB0YWJsZTogeyBsZW5ndGggfSwgaGVhcCB9ID0gdGhpcztcblxuICAgIGZvciAobGV0IGk9MDsgaTxsZW5ndGg7IGkrPUVOVFJZX1NJWkUpIHtcbiAgICAgIGxldCBvZmZzZXQgPSB0YWJsZVtpXTtcbiAgICAgIGxldCBpbmZvID0gdGFibGVbaSArIElORk9fT0ZGU0VUXTtcbiAgICAgIGxldCBzaXplID0gaW5mbyAmIFNJWkVfTUFTSztcbiAgICAgIGxldCBzdGF0ZSA9IGluZm8gJiBTVEFURV9NQVNLID4+IDMwO1xuXG4gICAgICBpZiAoc3RhdGUgPT09IFRhYmxlU2xvdFN0YXRlLlB1cmdlZCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPT09IFRhYmxlU2xvdFN0YXRlLkZyZWVkKSB7XG4gICAgICAgIC8vIHRyYW5zaXRpb24gdG8gXCJhbHJlYWR5IGZyZWVkXCIgYWthIFwicHVyZ2VkXCJcbiAgICAgICAgLy8gYSBnb29kIGltcHJvdmVtZW50IHdvdWxkIGJlIHRvIHJldXNlXG4gICAgICAgIC8vIHRoZXNlIHNsb3RzXG4gICAgICAgIHRhYmxlW2kgKyBJTkZPX09GRlNFVF0gPSBjaGFuZ2VTdGF0ZShpbmZvLCBUYWJsZVNsb3RTdGF0ZS5QdXJnZWQpO1xuICAgICAgICBjb21wYWN0ZWRTaXplICs9IHNpemU7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlID09PSBUYWJsZVNsb3RTdGF0ZS5BbGxvY2F0ZWQpIHtcbiAgICAgICAgZm9yIChsZXQgaj1vZmZzZXQ7IGo8PWkrc2l6ZTsgaisrKSB7XG4gICAgICAgICAgaGVhcFtqIC0gY29tcGFjdGVkU2l6ZV0gPSBoZWFwW2pdO1xuICAgICAgICB9XG5cbiAgICAgICAgdGFibGVbaV0gPSBvZmZzZXQgLSBjb21wYWN0ZWRTaXplO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PT0gVGFibGVTbG90U3RhdGUuUG9pbnRlcikge1xuICAgICAgICB0YWJsZVtpXSA9IG9mZnNldCAtIGNvbXBhY3RlZFNpemU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5vZmZzZXQgPSB0aGlzLm9mZnNldCAtIGNvbXBhY3RlZFNpemU7XG4gIH1cblxuICBjYXB0dXJlKCkge1xuICAgIC8vIE9ubHkgY2FsbGVkIGluIGVhZ2VyIG1vZGVcbiAgICBsZXQgYnVmZmVyID0gc2xpY2UodGhpcy5oZWFwLCAwLCB0aGlzLm9mZnNldCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhhbmRsZTogdGhpcy5oYW5kbGUsXG4gICAgICB0YWJsZTogdGhpcy50YWJsZSxcbiAgICAgIGJ1ZmZlcjogYnVmZmVyIGFzIEFycmF5QnVmZmVyXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgV3JpdGVPbmx5UHJvZ3JhbSBpbXBsZW1lbnRzIENvbXBpbGVUaW1lUHJvZ3JhbSB7XG4gIFtrZXk6IG51bWJlcl06IG5ldmVyO1xuXG4gIHByaXZhdGUgX29wY29kZTogT3Bjb2RlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb25zdGFudHM6IFdyaXRlT25seUNvbnN0YW50cyA9IG5ldyBXcml0ZU9ubHlDb25zdGFudHMoKSwgcHVibGljIGhlYXAgPSBuZXcgSGVhcCgpKSB7XG4gICAgdGhpcy5fb3Bjb2RlID0gbmV3IE9wY29kZSh0aGlzLmhlYXApO1xuICB9XG5cbiAgb3Bjb2RlKG9mZnNldDogbnVtYmVyKTogT3Bjb2RlIHtcbiAgICB0aGlzLl9vcGNvZGUub2Zmc2V0ID0gb2Zmc2V0O1xuICAgIHJldHVybiB0aGlzLl9vcGNvZGU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJ1bnRpbWVQcm9ncmFtPFNwZWNpZmllcj4ge1xuICBba2V5OiBudW1iZXJdOiBuZXZlcjtcblxuICBwcml2YXRlIF9vcGNvZGU6IE9wY29kZTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgY29uc3RhbnRzOiBSdW50aW1lQ29uc3RhbnRzPFNwZWNpZmllcj4sIHB1YmxpYyBoZWFwOiBIZWFwKSB7XG4gICAgdGhpcy5fb3Bjb2RlID0gbmV3IE9wY29kZSh0aGlzLmhlYXApO1xuICB9XG5cbiAgb3Bjb2RlKG9mZnNldDogbnVtYmVyKTogT3Bjb2RlIHtcbiAgICB0aGlzLl9vcGNvZGUub2Zmc2V0ID0gb2Zmc2V0O1xuICAgIHJldHVybiB0aGlzLl9vcGNvZGU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFByb2dyYW08U3BlY2lmaWVyPiBleHRlbmRzIFdyaXRlT25seVByb2dyYW0ge1xuICBwdWJsaWMgY29uc3RhbnRzOiBDb25zdGFudHM8U3BlY2lmaWVyPjtcbn1cblxuZnVuY3Rpb24gc2xpY2UoYXJyOiBVaW50MTZBcnJheSB8IG51bWJlcltdLCBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcikge1xuICBpZiAoYXJyIGluc3RhbmNlb2YgVWludDE2QXJyYXkpIHtcbiAgICBpZiAoYXJyLnNsaWNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBhcnIuc2xpY2Uoc3RhcnQsIGVuZCkuYnVmZmVyO1xuICAgIH1cblxuICAgIGxldCByZXQgPSBuZXcgVWludDE2QXJyYXkoZW5kKTtcblxuICAgIGZvciAoOyBzdGFydCA8IGVuZDsgc3RhcnQrKykge1xuICAgICAgcmV0W3N0YXJ0XSAgPSBhcnJbc3RhcnRdO1xuICAgIH1cblxuICAgIHJldHVybiByZXQuYnVmZmVyO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3Byb2dyYW0vbGliL3Byb2dyYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBLEFBQU8sQUFBYSxBQUFrQixBQUFFLEFBQWdCLEFBQWdCLEFBQU0sQUFBYSxBQUFDOztBQUM1RixBQUFPLEFBQUUsQUFBTSxBQUFFLEFBQU0sQUFBVSxBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRWxDLElBQUssQUFLSjtBQUxELFdBQUssQUFBYyxnQkFDakI7c0RBQVMsQUFDVDtrREFBSyxBQUNMO21EQUFNLEFBQ047b0RBQU8sQUFDVCxBQUFDO0dBTEksQUFBYyxtQkFBZCxBQUFjLGlCQUtsQjtBQUVELElBQU0sQUFBVSxhQUFHLEFBQUMsQUFBQztBQUNyQixJQUFNLEFBQVcsY0FBRyxBQUFDLEFBQUM7QUFDdEIsSUFBTSxBQUFTLFlBQUksQUFBa0MsQUFBQztBQUN0RCxJQUFNLEFBQVUsYUFBRyxBQUFrQyxBQUFDO0FBQ3RELElBQU0sQUFBVSxhQUFHLEFBQWtDLEFBQUM7QUFFdEQseUJBQXlCLEFBQVksTUFBRSxBQUFpQixXQUFFLEFBQWEsT0FDckUsQUFBTTtXQUFDLEFBQUksQUFBRyxPQUFDLEFBQVMsYUFBSSxBQUFFLEFBQUMsS0FBRyxBQUFLLFNBQUksQUFBRSxBQUFDLEFBQ2hELEFBQUM7O0FBRUQscUJBQXFCLEFBQVksTUFBRSxBQUFnQixVQUNqRCxBQUFNO1dBQUMsQUFBSSxPQUFHLEFBQVEsWUFBSSxBQUFFLEFBQUMsQUFDL0IsQUFBQzs7QUFRRCxBQW1CRyxBQUNILEFBQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBTUo7a0JBQVksQUFBK0IsZ0JBSG5DOzs7YUFBTSxTQUFHLEFBQUMsQUFBQyxBQUNYO2FBQU0sU0FBRyxBQUFDLEFBQUMsQUFHakIsQUFBRSxBQUFDO1lBQUMsQUFBYyxBQUFDLGdCQUFD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QUk7YUFBQyxBQUFPLFFBQUMsQUFBTSxTQUFHLEFBQU0sQUFBQyxBQUM3QixBQUFNO2VBQUMsQUFBSSxLQUFDLEFBQU8sQUFBQyxBQUN0QixBQUFDLEFBQ0Y7Ozs7QUFFRCxBQUFNO0lBQTZCOzs7Ozs7Ozs7O0VBQVEsQUFBZ0IsQUFFMUQ7QUFFRCxlQUFlLEFBQTJCLEtBQUUsQUFBYSxPQUFFLEFBQVcsS0FDcEUsQUFBRSxBQUFDO1FBQUMsQUFBRyxlQUFZLEFBQVcsQUFBQyxhQUFDLEFBQUMsQUFDL0IsQUFBRSxBQUFDO1lBQUMsQUFBRyxJQUFDLEFBQUssVUFBSyxBQUFTLEFBQUMsV0FBQyxBQUFDLEFBQzVCLEFBQU07bUJBQUMsQUFBRyxJQUFDLEFBQUssTUFBQyxBQUFLLE9BQUUsQUFBRyxBQUFDLEtBQUMsQUFBTSxBQUFDLEFBQ3RDLEFBQUMsQUFFRDs7WUFBSSxBQUFHLE1BQUcsSUFBSSxBQUFXLFlBQUMsQUFBRyxBQUFDLEFBQUMsQUFFL0IsQUFBRyxBQUFDLEFBQUM7ZUFBRSxBQUFLLFFBQUcsQUFBRyxLQUFFLEFBQUssQUFBRSxTQUFFLEFBQUMsQUFDNUIsQUFBRztnQkFBQyxBQUFLLEFBQUMsU0FBSSxBQUFHLElBQUMsQUFBSyxBQUFDLEFBQUMsQUFDM0IsQUFBQyxBQUVELEFBQU07O2VBQUMsQUFBRyxJQUFDLEFBQU0sQUFBQyxBQUNwQixBQUFDLEFBRUQsQUFBTTs7V0FBQyxBQUFJLEFBQUMsQUFDZCxBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBDb21waWxlVGltZVByb2dyYW0sIFJlY2FzdCwgVk1IYW5kbGUsIFJ1bnRpbWVSZXNvbHZlciB9IGZyb20gXCJAZ2xpbW1lci9pbnRlcmZhY2VzXCI7XG5pbXBvcnQgeyBERUJVRyB9IGZyb20gXCJAZ2xpbW1lci9sb2NhbC1kZWJ1Zy1mbGFnc1wiO1xuaW1wb3J0IHsgQ29uc3RhbnRzLCBXcml0ZU9ubHlDb25zdGFudHMsIFJ1bnRpbWVDb25zdGFudHMsIENvbnN0YW50UG9vbCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IE9wY29kZSB9IGZyb20gJy4vb3Bjb2RlJztcblxuZW51bSBUYWJsZVNsb3RTdGF0ZSB7XG4gIEFsbG9jYXRlZCxcbiAgRnJlZWQsXG4gIFB1cmdlZCxcbiAgUG9pbnRlclxufVxuXG5jb25zdCBFTlRSWV9TSVpFID0gMjtcbmNvbnN0IElORk9fT0ZGU0VUID0gMTtcbmNvbnN0IFNJWkVfTUFTSyA9ICAwYjAwMDAwMDAwMDAwMDAwMDAxMTExMTExMTExMTExMTExO1xuY29uc3QgU0NPUEVfTUFTSyA9IDBiMDAxMTExMTExMTExMTExMTAwMDAwMDAwMDAwMDAwMDA7XG5jb25zdCBTVEFURV9NQVNLID0gMGIxMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDtcblxuZnVuY3Rpb24gZW5jb2RlVGFibGVJbmZvKHNpemU6IG51bWJlciwgc2NvcGVTaXplOiBudW1iZXIsIHN0YXRlOiBudW1iZXIpIHtcbiAgcmV0dXJuIHNpemUgfCAoc2NvcGVTaXplIDw8IDE2KSB8IHN0YXRlIDw8IDMwO1xufVxuXG5mdW5jdGlvbiBjaGFuZ2VTdGF0ZShpbmZvOiBudW1iZXIsIG5ld1N0YXRlOiBudW1iZXIpIHtcbiAgcmV0dXJuIGluZm8gfCBuZXdTdGF0ZSA8PCAzMDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXJpYWxpemVkSGVhcCB7XG4gIGJ1ZmZlcjogQXJyYXlCdWZmZXI7XG4gIHRhYmxlOiBudW1iZXJbXTtcbiAgaGFuZGxlOiBudW1iZXI7XG59XG5cbi8qKlxuICogVGhlIEhlYXAgaXMgcmVzcG9uc2libGUgZm9yIGR5bmFtaWNhbGx5IGFsbG9jYXRpbmdcbiAqIG1lbW9yeSBpbiB3aGljaCB3ZSByZWFkL3dyaXRlIHRoZSBWTSdzIGluc3RydWN0aW9uc1xuICogZnJvbS90by4gV2hlbiB3ZSBtYWxsb2Mgd2UgcGFzcyBvdXQgYSBWTUhhbmRsZSwgd2hpY2hcbiAqIGlzIHVzZWQgYXMgYW4gaW5kaXJlY3Qgd2F5IG9mIGFjY2Vzc2luZyB0aGUgbWVtb3J5IGR1cmluZ1xuICogZXhlY3V0aW9uIG9mIHRoZSBWTS4gSW50ZXJuYWxseSB3ZSB0cmFjayB0aGUgZGlmZmVyZW50XG4gKiByZWdpb25zIG9mIHRoZSBtZW1vcnkgaW4gYW4gaW50IGFycmF5IGtub3duIGFzIHRoZSB0YWJsZS5cbiAqXG4gKiBUaGUgdGFibGUgMzItYml0IGFsaWduZWQgYW5kIGhhcyB0aGUgZm9sbG93aW5nIGxheW91dDpcbiAqXG4gKiB8IC4uLiB8IGhwICh1MzIpIHwgICAgICAgaW5mbyAodTMyKSAgICAgICAgICB8XG4gKiB8IC4uLiB8ICBIYW5kbGUgIHwgU2l6ZSB8IFNjb3BlIFNpemUgfCBTdGF0ZSB8XG4gKiB8IC4uLiB8IDMyLWJpdHMgIHwgMTZiICB8ICAgIDE0YiAgICAgfCAgMmIgICB8XG4gKlxuICogV2l0aCB0aGlzIGluZm9ybWF0aW9uIHdlIGVmZmVjdGl2ZWx5IGhhdmUgdGhlIGFiaWxpdHkgdG9cbiAqIGNvbnRyb2wgd2hlbiB3ZSB3YW50IHRvIGZyZWUgbWVtb3J5LiBUaGF0IGJlaW5nIHNhaWQgeW91XG4gKiBjYW4gbm90IGZyZWUgZHVyaW5nIGV4ZWN1dGlvbiBhcyByYXcgYWRkcmVzcyBhcmUgb25seVxuICogdmFsaWQgZHVyaW5nIHRoZSBleGVjdXRpb24uIFRoaXMgbWVhbnMgeW91IGNhbm5vdCBjbG9zZVxuICogb3ZlciB0aGVtIGFzIHlvdSB3aWxsIGhhdmUgYSBiYWQgbWVtb3J5IGFjY2VzcyBleGNlcHRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBIZWFwIHtcbiAgcHJpdmF0ZSBoZWFwOiBVaW50MTZBcnJheSB8IEFycmF5PG51bWJlcj47XG4gIHByaXZhdGUgdGFibGU6IG51bWJlcltdO1xuICBwcml2YXRlIG9mZnNldCA9IDA7XG4gIHByaXZhdGUgaGFuZGxlID0gMDtcblxuICBjb25zdHJ1Y3RvcihzZXJpYWxpemVkSGVhcD86IFNlcmlhbGl6ZWRIZWFwKSB7XG4gICAgaWYgKHNlcmlhbGl6ZWRIZWFwKSB7XG4gICAgICBsZXQgeyBidWZmZXIsIHRhYmxlLCBoYW5kbGUgfSA9IHNlcmlhbGl6ZWRIZWFwO1xuICAgICAgdGhpcy5oZWFwID0gbmV3IFVpbnQxNkFycmF5KGJ1ZmZlcik7XG4gICAgICB0aGlzLnRhYmxlID0gdGFibGU7XG4gICAgICB0aGlzLm9mZnNldCA9IHRoaXMuaGVhcC5sZW5ndGg7XG4gICAgICB0aGlzLmhhbmRsZSA9IGhhbmRsZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oZWFwID0gbmV3IFVpbnQxNkFycmF5KDB4MTAwMDAwKTtcbiAgICAgIHRoaXMudGFibGUgPSBbXTtcbiAgICB9XG4gIH1cblxuICBwdXNoKGl0ZW06IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuaGVhcFt0aGlzLm9mZnNldCsrXSA9IGl0ZW07XG4gIH1cblxuICBnZXRieWFkZHIoYWRkcmVzczogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5oZWFwW2FkZHJlc3NdO1xuICB9XG5cbiAgc2V0YnlhZGRyKGFkZHJlc3M6IG51bWJlciwgdmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuaGVhcFthZGRyZXNzXSA9IHZhbHVlO1xuICB9XG5cbiAgbWFsbG9jKCk6IFZNSGFuZGxlIHtcbiAgICB0aGlzLnRhYmxlLnB1c2godGhpcy5vZmZzZXQsIDApO1xuICAgIGxldCBoYW5kbGUgPSB0aGlzLmhhbmRsZTtcbiAgICB0aGlzLmhhbmRsZSArPSBFTlRSWV9TSVpFO1xuICAgIHJldHVybiBoYW5kbGUgYXMgUmVjYXN0PG51bWJlciwgVk1IYW5kbGU+O1xuICB9XG5cbiAgZmluaXNoTWFsbG9jKGhhbmRsZTogVk1IYW5kbGUsIHNjb3BlU2l6ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgbGV0IHN0YXJ0ID0gdGhpcy50YWJsZVtoYW5kbGUgYXMgUmVjYXN0PFZNSGFuZGxlLCBudW1iZXI+XTtcbiAgICBsZXQgZmluaXNoID0gdGhpcy5vZmZzZXQ7XG4gICAgbGV0IGluc3RydWN0aW9uU2l6ZSA9IGZpbmlzaCAtIHN0YXJ0O1xuICAgIGxldCBpbmZvID0gZW5jb2RlVGFibGVJbmZvKGluc3RydWN0aW9uU2l6ZSwgc2NvcGVTaXplLCBUYWJsZVNsb3RTdGF0ZS5BbGxvY2F0ZWQpO1xuICAgIHRoaXMudGFibGVbKGhhbmRsZSBhcyBSZWNhc3Q8Vk1IYW5kbGUsIG51bWJlcj4pICsgSU5GT19PRkZTRVRdID0gaW5mbztcbiAgfVxuXG4gIHNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5vZmZzZXQ7XG4gIH1cblxuICAvLyBJdCBpcyBpbGxlZ2FsIHRvIGNsb3NlIG92ZXIgdGhpcyBhZGRyZXNzLCBhcyBjb21wYWN0aW9uXG4gIC8vIG1heSBtb3ZlIGl0LiBIb3dldmVyLCBpdCBpcyBsZWdhbCB0byB1c2UgdGhpcyBhZGRyZXNzXG4gIC8vIG11bHRpcGxlIHRpbWVzIGJldHdlZW4gY29tcGFjdGlvbnMuXG4gIGdldGFkZHIoaGFuZGxlOiBWTUhhbmRsZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVbaGFuZGxlIGFzIFJlY2FzdDxWTUhhbmRsZSwgbnVtYmVyPl07XG4gIH1cblxuICBnZXRoYW5kbGUoYWRkcmVzczogbnVtYmVyKTogVk1IYW5kbGUge1xuICAgIHRoaXMudGFibGUucHVzaChhZGRyZXNzLCBlbmNvZGVUYWJsZUluZm8oMCwgMCwgVGFibGVTbG90U3RhdGUuUG9pbnRlcikpO1xuICAgIGxldCBoYW5kbGUgPSB0aGlzLmhhbmRsZTtcbiAgICB0aGlzLmhhbmRsZSArPSBFTlRSWV9TSVpFO1xuICAgIHJldHVybiBoYW5kbGUgYXMgUmVjYXN0PG51bWJlciwgVk1IYW5kbGU+O1xuICB9XG5cbiAgc2l6ZW9mKGhhbmRsZTogVk1IYW5kbGUpOiBudW1iZXIge1xuICAgIGlmIChERUJVRykge1xuICAgICAgbGV0IGluZm8gPSB0aGlzLnRhYmxlWyhoYW5kbGUgYXMgUmVjYXN0PFZNSGFuZGxlLCBudW1iZXI+KSArIElORk9fT0ZGU0VUXTtcbiAgICAgIHJldHVybiBpbmZvICYgU0laRV9NQVNLO1xuICAgIH1cbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICBzY29wZXNpemVvZihoYW5kbGU6IFZNSGFuZGxlKTogbnVtYmVyIHtcbiAgICBsZXQgaW5mbyA9IHRoaXMudGFibGVbKGhhbmRsZSBhcyBSZWNhc3Q8Vk1IYW5kbGUsIG51bWJlcj4pICsgSU5GT19PRkZTRVRdO1xuICAgIHJldHVybiAoaW5mbyAmIFNDT1BFX01BU0spID4+IDE2O1xuICB9XG5cbiAgZnJlZShoYW5kbGU6IFZNSGFuZGxlKTogdm9pZCB7XG4gICAgbGV0IGluZm8gPSB0aGlzLnRhYmxlWyhoYW5kbGUgYXMgUmVjYXN0PFZNSGFuZGxlLCBudW1iZXI+KSArIElORk9fT0ZGU0VUXTtcbiAgICB0aGlzLnRhYmxlWyhoYW5kbGUgYXMgUmVjYXN0PFZNSGFuZGxlLCBudW1iZXI+KSArIElORk9fT0ZGU0VUXSA9IGNoYW5nZVN0YXRlKGluZm8sIFRhYmxlU2xvdFN0YXRlLkZyZWVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaGVhcCB1c2VzIHRoZSBbTWFyay1Db21wYWN0IEFsZ29yaXRobV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFyay1jb21wYWN0X2FsZ29yaXRobSkgdG8gc2hpZnRcbiAgICogcmVhY2hhYmxlIG1lbW9yeSB0byB0aGUgYm90dG9tIG9mIHRoZSBoZWFwIGFuZCBmcmVlYWJsZVxuICAgKiBtZW1vcnkgdG8gdGhlIHRvcCBvZiB0aGUgaGVhcC4gV2hlbiB3ZSBoYXZlIHNoaWZ0ZWQgYWxsXG4gICAqIHRoZSByZWFjaGFibGUgbWVtb3J5IHRvIHRoZSB0b3Agb2YgdGhlIGhlYXAsIHdlIG1vdmUgdGhlXG4gICAqIG9mZnNldCB0byB0aGUgbmV4dCBmcmVlIHBvc2l0aW9uLlxuICAgKi9cbiAgY29tcGFjdCgpOiB2b2lkIHtcbiAgICBsZXQgY29tcGFjdGVkU2l6ZSA9IDA7XG4gICAgbGV0IHsgdGFibGUsIHRhYmxlOiB7IGxlbmd0aCB9LCBoZWFwIH0gPSB0aGlzO1xuXG4gICAgZm9yIChsZXQgaT0wOyBpPGxlbmd0aDsgaSs9RU5UUllfU0laRSkge1xuICAgICAgbGV0IG9mZnNldCA9IHRhYmxlW2ldO1xuICAgICAgbGV0IGluZm8gPSB0YWJsZVtpICsgSU5GT19PRkZTRVRdO1xuICAgICAgbGV0IHNpemUgPSBpbmZvICYgU0laRV9NQVNLO1xuICAgICAgbGV0IHN0YXRlID0gaW5mbyAmIFNUQVRFX01BU0sgPj4gMzA7XG5cbiAgICAgIGlmIChzdGF0ZSA9PT0gVGFibGVTbG90U3RhdGUuUHVyZ2VkKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PT0gVGFibGVTbG90U3RhdGUuRnJlZWQpIHtcbiAgICAgICAgLy8gdHJhbnNpdGlvbiB0byBcImFscmVhZHkgZnJlZWRcIiBha2EgXCJwdXJnZWRcIlxuICAgICAgICAvLyBhIGdvb2QgaW1wcm92ZW1lbnQgd291bGQgYmUgdG8gcmV1c2VcbiAgICAgICAgLy8gdGhlc2Ugc2xvdHNcbiAgICAgICAgdGFibGVbaSArIElORk9fT0ZGU0VUXSA9IGNoYW5nZVN0YXRlKGluZm8sIFRhYmxlU2xvdFN0YXRlLlB1cmdlZCk7XG4gICAgICAgIGNvbXBhY3RlZFNpemUgKz0gc2l6ZTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPT09IFRhYmxlU2xvdFN0YXRlLkFsbG9jYXRlZCkge1xuICAgICAgICBmb3IgKGxldCBqPW9mZnNldDsgajw9aStzaXplOyBqKyspIHtcbiAgICAgICAgICBoZWFwW2ogLSBjb21wYWN0ZWRTaXplXSA9IGhlYXBbal07XG4gICAgICAgIH1cblxuICAgICAgICB0YWJsZVtpXSA9IG9mZnNldCAtIGNvbXBhY3RlZFNpemU7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlID09PSBUYWJsZVNsb3RTdGF0ZS5Qb2ludGVyKSB7XG4gICAgICAgIHRhYmxlW2ldID0gb2Zmc2V0IC0gY29tcGFjdGVkU2l6ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm9mZnNldCA9IHRoaXMub2Zmc2V0IC0gY29tcGFjdGVkU2l6ZTtcbiAgfVxuXG4gIGNhcHR1cmUoKTogU2VyaWFsaXplZEhlYXAge1xuICAgIC8vIE9ubHkgY2FsbGVkIGluIGVhZ2VyIG1vZGVcbiAgICBsZXQgYnVmZmVyID0gc2xpY2UodGhpcy5oZWFwLCAwLCB0aGlzLm9mZnNldCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhhbmRsZTogdGhpcy5oYW5kbGUsXG4gICAgICB0YWJsZTogdGhpcy50YWJsZSxcbiAgICAgIGJ1ZmZlcjogYnVmZmVyIGFzIEFycmF5QnVmZmVyXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgV3JpdGVPbmx5UHJvZ3JhbSBpbXBsZW1lbnRzIENvbXBpbGVUaW1lUHJvZ3JhbSB7XG4gIFtrZXk6IG51bWJlcl06IG5ldmVyO1xuXG4gIHByaXZhdGUgX29wY29kZTogT3Bjb2RlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb25zdGFudHM6IFdyaXRlT25seUNvbnN0YW50cyA9IG5ldyBXcml0ZU9ubHlDb25zdGFudHMoKSwgcHVibGljIGhlYXAgPSBuZXcgSGVhcCgpKSB7XG4gICAgdGhpcy5fb3Bjb2RlID0gbmV3IE9wY29kZSh0aGlzLmhlYXApO1xuICB9XG5cbiAgb3Bjb2RlKG9mZnNldDogbnVtYmVyKTogT3Bjb2RlIHtcbiAgICB0aGlzLl9vcGNvZGUub2Zmc2V0ID0gb2Zmc2V0O1xuICAgIHJldHVybiB0aGlzLl9vcGNvZGU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJ1bnRpbWVQcm9ncmFtPFRlbXBsYXRlTWV0YT4ge1xuICBba2V5OiBudW1iZXJdOiBuZXZlcjtcblxuICBzdGF0aWMgaHlkcmF0ZTxUZW1wbGF0ZU1ldGE+KHJhd0hlYXA6IFNlcmlhbGl6ZWRIZWFwLCBwb29sOiBDb25zdGFudFBvb2wsIHJlc29sdmVyOiBSdW50aW1lUmVzb2x2ZXI8VGVtcGxhdGVNZXRhPikge1xuICAgIGxldCBoZWFwID0gbmV3IEhlYXAocmF3SGVhcCk7XG4gICAgbGV0IGNvbnN0YW50cyA9IG5ldyBSdW50aW1lQ29uc3RhbnRzKHJlc29sdmVyLCBwb29sKTtcblxuICAgIHJldHVybiBuZXcgUnVudGltZVByb2dyYW0oY29uc3RhbnRzLCBoZWFwKTtcbiAgfVxuXG4gIHByaXZhdGUgX29wY29kZTogT3Bjb2RlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb25zdGFudHM6IFJ1bnRpbWVDb25zdGFudHM8VGVtcGxhdGVNZXRhPiwgcHVibGljIGhlYXA6IEhlYXApIHtcbiAgICB0aGlzLl9vcGNvZGUgPSBuZXcgT3Bjb2RlKHRoaXMuaGVhcCk7XG4gIH1cblxuICBvcGNvZGUob2Zmc2V0OiBudW1iZXIpOiBPcGNvZGUge1xuICAgIHRoaXMuX29wY29kZS5vZmZzZXQgPSBvZmZzZXQ7XG4gICAgcmV0dXJuIHRoaXMuX29wY29kZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJvZ3JhbTxUZW1wbGF0ZU1ldGE+IGV4dGVuZHMgV3JpdGVPbmx5UHJvZ3JhbSB7XG4gIHB1YmxpYyBjb25zdGFudHM6IENvbnN0YW50czxUZW1wbGF0ZU1ldGE+O1xufVxuXG5mdW5jdGlvbiBzbGljZShhcnI6IFVpbnQxNkFycmF5IHwgbnVtYmVyW10sIHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKSB7XG4gIGlmIChhcnIgaW5zdGFuY2VvZiBVaW50MTZBcnJheSkge1xuICAgIGlmIChhcnIuc2xpY2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGFyci5zbGljZShzdGFydCwgZW5kKS5idWZmZXI7XG4gICAgfVxuXG4gICAgbGV0IHJldCA9IG5ldyBVaW50MTZBcnJheShlbmQpO1xuXG4gICAgZm9yICg7IHN0YXJ0IDwgZW5kOyBzdGFydCsrKSB7XG4gICAgICByZXRbc3RhcnRdICA9IGFycltzdGFydF07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldC5idWZmZXI7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cbiJdfQ==

@@ -195,2 +195,2 @@ const UNRESOLVED = {};

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvQGdsaW1tZXIvcHJvZ3JhbS9saWIvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQUFBVSxhQUFHLEFBQUUsQUFBQztBQUV0QixNQUFNLEFBQStCLGtDQUFHLEFBQUMsQUFBQztBQUMxQyxNQUFNLEFBQXFCLHdCQUFHLEFBQU0sT0FBQyxBQUFNLE9BQUMsQUFBRSxBQUFDLEFBQUM7QUFxQmhELEFBQU07QUFBTjtBQUNFLEFBQWlCO0FBRVAsYUFBTyxVQUFhLEFBQUUsQUFBQztBQUN2QixhQUFNLFNBQTZCLENBQUMsQUFBcUIsQUFBQyxBQUFDO0FBQzNELGFBQU0sU0FBa0IsQUFBRSxBQUFDO0FBQzNCLGFBQU8sVUFBYSxBQUFFLEFBQUM7QUFDdkIsYUFBYSxnQkFBYSxBQUFFLEFBQUM7QUFDN0IsYUFBUSxXQUFhLEFBQUUsQUFBQztBQUN4QixhQUFNLFNBQWEsQUFBRSxBQUFDO0FBQ3RCLGFBQVMsWUFBYSxBQUFFLEFBQUMsQUFzRnJDO0FBQUM7QUFwRkMsQUFBSyxVQUFDLEFBQWE7QUFDakIsWUFBSSxBQUFLLFFBQUcsQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFPLFFBQUMsQUFBSyxBQUFDLEFBQUM7QUFFdkMsQUFBRSxBQUFDLFlBQUMsQUFBSyxRQUFHLENBQUMsQUFBQyxBQUFDLEdBQUMsQUFBQztBQUNmLEFBQU0sbUJBQUMsQUFBSyxBQUFDLEFBQ2Y7QUFBQztBQUVELEFBQU0sZUFBQyxBQUFJLEtBQUMsQUFBTSxPQUFDLEFBQUksS0FBQyxBQUFLLEFBQUMsU0FBRyxBQUFDLEFBQUMsQUFDckM7QUFBQztBQUVELEFBQVEsYUFBQyxBQUFnQjtBQUN2QixBQUFNLGVBQUMsQUFBSSxLQUFDLEFBQVMsVUFBQyxBQUFJLEtBQUMsQUFBUSxBQUFDLFlBQUcsQUFBQyxBQUFDLEFBQzNDO0FBQUM7QUFFRCxBQUFNLFdB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RUQsQUFBZSxvQkFBSSxBQUFTO0FBQzFCLEFBQU0sZUFBQyxBQUFJLEtBQUMsQUFBYSxjQUFDLEFBQUMsQUFBTSxBQUFDLEFBQ3BDO0FBQUMsQUFDRjs7QUFFRCxBQUFNLGFBQXFCLHNCQUFRLEFBQWlCO0FBQXBEOztBQUNVLGFBQU0sU0FBYSxBQUFFLEFBQUMsQUFTaEM7QUFBQztBQVBDLEFBQVEsYUFBSSxBQUFhO0FBQ3ZCLEFBQU0sZUFBQyxBQUFJLEtBQUMsQUFBTSxPQUFDLEFBQUssUUFBRyxBQUFDLEFBQU0sQUFBQyxBQUNyQztBQUFDO0FBRUQsQUFBSyxVQUFDLEFBQWE7QUFDakIsQUFBTSxlQUFDLEFBQUksS0FBQyxBQUFNLE9BQUMsQUFBSSxLQUFDLEFBQUssQUFBQyxBQUFDLEFBQ2pDO0FBQUMsQUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wYXF1ZSwgU3ltYm9sVGFibGUsIFJ1bnRpbWVSZXNvbHZlciwgQ29tcGlsZVRpbWVDb25zdGFudHMgfSBmcm9tIFwiQGdsaW1tZXIvaW50ZXJmYWNlc1wiO1xuXG5jb25zdCBVTlJFU09MVkVEID0ge307XG5cbmNvbnN0IFdFTExfS05PV05fRU1QVFlfQVJSQVlfUE9TSVRJT04gPSAwO1xuY29uc3QgV0VMTF9LTk9XX0VNUFRZX0FSUkFZID0gT2JqZWN0LmZyZWV6ZShbXSk7XG5leHBvcnQgdHlwZSBFTVBUWV9BUlJBWSA9IEFycmF5PFJlYWRvbmx5QXJyYXk8bmV2ZXI+PjtcblxuZXhwb3J0IGludGVyZmFjZSBDb25zdGFudFBvb2wge1xuICBzdHJpbmdzOiBzdHJpbmdbXTtcbiAgYXJyYXlzOiBudW1iZXJbXVtdIHwgRU1QVFlfQVJSQVk7XG4gIHRhYmxlczogU3ltYm9sVGFibGVbXTtcbiAgaGFuZGxlczogbnVtYmVyW107XG4gIHNlcmlhbGl6YWJsZXM6IE9wYXF1ZVtdO1xuICBmbG9hdHM6IG51bWJlcltdO1xuICBuZWdhdGl2ZXM6IG51bWJlcltdO1xufVxuXG5leHBvcnQgY29uc3QgZW51bSBQcmltaXRpdmVUeXBlIHtcbiAgTlVNQkVSICAgICAgICAgID0gMGIwMDAsXG4gIEZMT0FUICAgICAgICAgICA9IDBiMDAxLFxuICBTVFJJTkcgICAgICAgICAgPSAwYjAxMCxcbiAgQk9PTEVBTl9PUl9WT0lEID0gMGIwMTEsXG4gIE5FR0FUSVZFICAgICAgICA9IDBiMTAwXG59XG5cbmV4cG9ydCBjbGFzcyBXcml0ZU9ubHlDb25zdGFudHMgaW1wbGVtZW50cyBDb21waWxlVGltZUNvbnN0YW50cyB7XG4gIC8vIGAwYCBtZWFucyBOVUxMXG5cbiAgcHJvdGVjdGVkIHN0cmluZ3M6IHN0cmluZ1tdID0gW107XG4gIHByb3RlY3RlZCBhcnJheXM6IG51bWJlcltdW10gfCBFTVBUWV9BUlJBWSA9IFtXRUxMX0tOT1dfRU1QVFlfQVJSQVldO1xuICBwcm90ZWN0ZWQgdGFibGVzOiBTeW1ib2xUYWJsZVtdID0gW107XG4gIHByb3RlY3RlZCBoYW5kbGVzOiBudW1iZXJbXSA9IFtdO1xuICBwcm90ZWN0ZWQgc2VyaWFsaXphYmxlczogT3BhcXVlW10gPSBbXTtcbiAgcHJvdGVjdGVkIHJlc29sdmVkOiBPcGFxdWVbXSA9IFtdO1xuICBwcm90ZWN0ZWQgZmxvYXRzOiBudW1iZXJbXSA9IFtdO1xuICBwcm90ZWN0ZWQgbmVnYXRpdmVzOiBudW1iZXJbXSA9IFtdO1xuXG4gIGZsb2F0KGZsb2F0OiBudW1iZXIpIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLmZsb2F0cy5pbmRleE9mKGZsb2F0KTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZmxvYXRzLnB1c2goZmxvYXQpIC0gMTtcbiAgfVxuXG4gIG5lZ2F0aXZlKG5lZ2F0aXZlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGl2ZXMucHVzaChuZWdhdGl2ZSkgLSAxO1xuICB9XG5cbiAgc3RyaW5nKHZhbHVlOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGxldCBpbmRleCA9IHRoaXMuc3RyaW5ncy5pbmRleE9mKHZhbHVlKTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaW5ncy5wdXNoKHZhbHVlKSAtIDE7XG4gIH1cblxuICBzdHJpbmdBcnJheShzdHJpbmdzOiBzdHJpbmdbXSk6IG51bWJlciB7XG4gICAgbGV0IF9zdHJpbmdzOiBudW1iZXJbXSA9IG5ldyBBcnJheShzdHJpbmdzLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0cmluZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIF9zdHJpbmdzW2ldID0gdGhpcy5zdHJpbmcoc3RyaW5nc1tpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXJyYXkoX3N0cmluZ3MpO1xuICB9XG5cbiAgYXJyYXkodmFsdWVzOiBudW1iZXJbXSk6IG51bWJlciB7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBXRUxMX0tOT1dOX0VNUFRZX0FSUkFZX1BPU0lUSU9OO1xuICAgIH1cblxuICAgIGxldCBpbmRleCA9ICh0aGlzLmFycmF5cyBhcyBudW1iZXJbXVtdKS5pbmRleE9mKHZhbHVlcyk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIHJldHVybiAodGhpcy5hcnJheXMgYXMgbnVtYmVyW11bXSkucHVzaCh2YWx1ZXMpIC0gMTtcbiAgfVxuXG4gIHRhYmxlKHQ6IFN5bWJvbFRhYmxlKTogbnVtYmVyIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLnRhYmxlcy5pbmRleE9mKHQpO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50YWJsZXMucHVzaCh0KSAtIDE7XG4gIH1cblxuICBoYW5kbGUoaGFuZGxlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHRoaXMucmVzb2x2ZWQucHVzaChVTlJFU09MVkVEKTtcbiAgICByZXR1cm4gdGhpcy5oYW5kbGVzLnB1c2goaGFuZGxlKTtcbiAgfVxuXG4gIHNlcmlhbGl6YWJsZSh2YWx1ZTogT3BhcXVlKTogbnVtYmVyIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLnNlcmlhbGl6YWJsZXMuaW5kZXhPZih2YWx1ZSk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6YWJsZXMucHVzaCh2YWx1ZSkgLSAxO1xuICB9XG5cbiAgdG9Qb29sKCk6IENvbnN0YW50UG9vbCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0cmluZ3M6IHRoaXMuc3RyaW5ncyxcbiAgICAgIGFycmF5czogdGhpcy5hcnJheXMsXG4gICAgICB0YWJsZXM6IHRoaXMudGFibGVzLFxuICAgICAgaGFuZGxlczogdGhpcy5oYW5kbGVzLFxuICAgICAgc2VyaWFsaXphYmxlczogdGhpcy5zZXJpYWxpemFibGVzLFxuICAgICAgZmxvYXRzOiB0aGlzLmZsb2F0cyxcbiAgICAgIG5lZ2F0aXZlczogdGhpcy5uZWdhdGl2ZXNcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSdW50aW1lQ29uc3RhbnRzPFNwZWNpZmllcj4ge1xuICBwcm90ZWN0ZWQgc3RyaW5nczogc3RyaW5nW107XG4gIHByb3RlY3RlZCBhcnJheXM6IG51bWJlcltdW10gfCBFTVBUWV9BUlJBWTtcbiAgcHJvdGVjdGVkIHRhYmxlczogU3ltYm9sVGFibGVbXTtcbiAgcHJvdGVjdGVkIGhhbmRsZXM6IG51bWJlcltdO1xuICBwcm90ZWN0ZWQgc2VyaWFsaXphYmxlczogT3BhcXVlW107XG4gIHByb3RlY3RlZCByZXNvbHZlZDogT3BhcXVlW107XG4gIHByb3RlY3RlZCBmbG9hdHM6IG51bWJlcltdO1xuICBwcm90ZWN0ZWQgbmVnYXRpdmVzOiBudW1iZXJbXTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVzb2x2ZXI6IFJ1bnRpbWVSZXNvbHZlcjxTcGVjaWZpZXI+LCBwb29sOiBDb25zdGFudFBvb2wpIHtcbiAgICB0aGlzLnN0cmluZ3MgPSBwb29sLnN0cmluZ3M7XG4gICAgdGhpcy5hcnJheXMgPSBwb29sLmFycmF5cztcbiAgICB0aGlzLnRhYmxlcyA9IHBvb2wudGFibGVzO1xuICAgIHRoaXMuaGFuZGxlcyA9IHBvb2wuaGFuZGxlcztcbiAgICB0aGlzLnNlcmlhbGl6YWJsZXMgPSBwb29sLnNlcmlhbGl6YWJsZXM7XG4gICAgdGhpcy5mbG9hdHMgPSBwb29sLmZsb2F0cztcbiAgICB0aGlzLm5lZ2F0aXZlcyA9IHBvb2wubmVnYXRpdmVzO1xuICAgIHRoaXMucmVzb2x2ZWQgPSB0aGlzLmhhbmRsZXMubWFwKCgpID0+IFVOUkVTT0xWRUQpO1xuICB9XG5cbiAgLy8gYDBgIG1lYW5zIE5VTExcblxuICBnZXRGbG9hdCh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5mbG9hdHNbdmFsdWVdO1xuICB9XG5cbiAgZ2V0TmVnYXRpdmUodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRpdmVzW3ZhbHVlXTtcbiAgfVxuXG4gIGdldFN0cmluZyh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmdzW3ZhbHVlXTtcbiAgfVxuXG4gIGdldFN0cmluZ0FycmF5KHZhbHVlOiBudW1iZXIpOiBzdHJpbmdbXSB7XG4gICAgbGV0IG5hbWVzID0gdGhpcy5nZXRBcnJheSh2YWx1ZSk7XG4gICAgbGV0IF9uYW1lczogc3RyaW5nW10gPSBuZXcgQXJyYXkobmFtZXMubGVuZ3RoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBuID0gbmFtZXNbaV07XG4gICAgICBfbmFtZXNbaV0gPSB0aGlzLmdldFN0cmluZyhuKTtcbiAgICB9XG5cbiAgICByZXR1cm4gX25hbWVzO1xuICB9XG5cbiAgZ2V0QXJyYXkodmFsdWU6IG51bWJlcik6IG51bWJlcltdIHtcbiAgICByZXR1cm4gKHRoaXMuYXJyYXlzIGFzIG51bWJlcltdW10pW3ZhbHVlXTtcbiAgfVxuXG4gIGdldFN5bWJvbFRhYmxlPFQgZXh0ZW5kcyBTeW1ib2xUYWJsZT4odmFsdWU6IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnRhYmxlc1t2YWx1ZV0gYXMgVDtcbiAgfVxuXG4gIHJlc29sdmVIYW5kbGU8VD4oczogbnVtYmVyKTogVCB7XG4gICAgbGV0IGluZGV4ID0gcyAtIDE7XG4gICAgbGV0IHJlc29sdmVkID0gdGhpcy5yZXNvbHZlZFtpbmRleF07XG5cbiAgICBpZiAocmVzb2x2ZWQgPT09IFVOUkVTT0xWRUQpIHtcbiAgICAgIGxldCBoYW5kbGUgPSB0aGlzLmhhbmRsZXNbaW5kZXhdO1xuICAgICAgcmVzb2x2ZWQgPSB0aGlzLnJlc29sdmVkW2luZGV4XSA9IHRoaXMucmVzb2x2ZXIucmVzb2x2ZShoYW5kbGUpO1xuICAgIH1cblxuICAgIHJldHVybiByZXNvbHZlZCBhcyBUO1xuICB9XG5cbiAgZ2V0U2VyaWFsaXphYmxlPFQ+KHM6IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6YWJsZXNbc10gYXMgVDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29uc3RhbnRzPFNwZWNpZmllcj4gZXh0ZW5kcyBXcml0ZU9ubHlDb25zdGFudHMge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVzb2x2ZXI6IFJ1bnRpbWVSZXNvbHZlcjxTcGVjaWZpZXI+LCBwb29sPzogQ29uc3RhbnRQb29sKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGlmIChwb29sKSB7XG4gICAgICB0aGlzLnN0cmluZ3MgPSBwb29sLnN0cmluZ3M7XG4gICAgICB0aGlzLmFycmF5cyA9IHBvb2wuYXJyYXlzO1xuICAgICAgdGhpcy50YWJsZXMgPSBwb29sLnRhYmxlcztcbiAgICAgIHRoaXMuaGFuZGxlcyA9IHBvb2wuaGFuZGxlcztcbiAgICAgIHRoaXMuc2VyaWFsaXphYmxlcyA9IHBvb2wuc2VyaWFsaXphYmxlcztcbiAgICAgIHRoaXMuZmxvYXRzID0gcG9vbC5mbG9hdHM7XG4gICAgICB0aGlzLm5lZ2F0aXZlcyA9IHBvb2wubmVnYXRpdmVzO1xuICAgICAgdGhpcy5yZXNvbHZlZCA9IHRoaXMuaGFuZGxlcy5tYXAoKCkgPT4gVU5SRVNPTFZFRCk7XG4gICAgfVxuICB9XG5cbiAgLy8gYDBgIG1lYW5zIE5VTExcbiAgZ2V0RmxvYXQodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZmxvYXRzW3ZhbHVlXTtcbiAgfVxuXG4gIGdldE5lZ2F0aXZlKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm5lZ2F0aXZlc1t2YWx1ZV07XG4gIH1cblxuICBnZXRTdHJpbmcodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3RyaW5nc1t2YWx1ZV07XG4gIH1cblxuICBnZXRTdHJpbmdBcnJheSh2YWx1ZTogbnVtYmVyKTogc3RyaW5nW10ge1xuICAgIGxldCBuYW1lcyA9IHRoaXMuZ2V0QXJyYXkodmFsdWUpO1xuICAgIGxldCBfbmFtZXM6IHN0cmluZ1tdID0gbmV3IEFycmF5KG5hbWVzLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgbiA9IG5hbWVzW2ldO1xuICAgICAgX25hbWVzW2ldID0gdGhpcy5nZXRTdHJpbmcobik7XG4gICAgfVxuXG4gICAgcmV0dXJuIF9uYW1lcztcbiAgfVxuXG4gIGdldEFycmF5KHZhbHVlOiBudW1iZXIpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuICh0aGlzLmFycmF5cyBhcyBudW1iZXJbXVtdKVt2YWx1ZV07XG4gIH1cblxuICBnZXRTeW1ib2xUYWJsZTxUIGV4dGVuZHMgU3ltYm9sVGFibGU+KHZhbHVlOiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZXNbdmFsdWVdIGFzIFQ7XG4gIH1cblxuICByZXNvbHZlSGFuZGxlPFQ+KHM6IG51bWJlcik6IFQge1xuICAgIGxldCBpbmRleCA9IHMgLSAxO1xuICAgIGxldCByZXNvbHZlZCA9IHRoaXMucmVzb2x2ZWRbaW5kZXhdO1xuXG4gICAgaWYgKHJlc29sdmVkID09PSBVTlJFU09MVkVEKSB7XG4gICAgICBsZXQgaGFuZGxlID0gdGhpcy5oYW5kbGVzW2luZGV4XTtcbiAgICAgIHJlc29sdmVkID0gdGhpcy5yZXNvbHZlZFtpbmRleF0gPSB0aGlzLnJlc29sdmVyLnJlc29sdmUoaGFuZGxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzb2x2ZWQgYXMgVDtcbiAgfVxuXG4gIGdldFNlcmlhbGl6YWJsZTxUPihzOiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zZXJpYWxpemFibGVzW3NdIGFzIFQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIExhenlDb25zdGFudHMgZXh0ZW5kcyBDb25zdGFudHM8T3BhcXVlPiB7XG4gIHByaXZhdGUgb3RoZXJzOiBPcGFxdWVbXSA9IFtdO1xuXG4gIGdldE90aGVyPFQ+KHZhbHVlOiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5vdGhlcnNbdmFsdWUgLSAxXSBhcyBUO1xuICB9XG5cbiAgb3RoZXIob3RoZXI6IE9wYXF1ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMub3RoZXJzLnB1c2gob3RoZXIpO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvQGdsaW1tZXIvcHJvZ3JhbS9saWIvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQUFBVSxhQUFHLEFBQUUsQUFBQztBQUV0QixNQUFNLEFBQStCLGtDQUFHLEFBQUMsQUFBQztBQUMxQyxNQUFNLEFBQXFCLHdCQUFHLEFBQU0sT0FBQyxBQUFNLE9BQUMsQUFBRSxBQUFDLEFBQUM7QUFxQmhELEFBQU07QUFBTjtBQUNFLEFBQWlCO0FBRVAsYUFBTyxVQUFhLEFBQUUsQUFBQztBQUN2QixhQUFNLFNBQTZCLENBQUMsQUFBcUIsQUFBQyxBQUFDO0FBQzNELGFBQU0sU0FBa0IsQUFBRSxBQUFDO0FBQzNCLGFBQU8sVUFBYSxBQUFFLEFBQUM7QUFDdkIsYUFBYSxnQkFBYSxBQUFFLEFBQUM7QUFDN0IsYUFBUSxXQUFhLEFBQUUsQUFBQztBQUN4QixhQUFNLFNBQWEsQUFBRSxBQUFDO0FBQ3RCLGFBQVMsWUFBYSxBQUFFLEFBQUMsQUFzRnJDO0FBQUM7QUFwRkMsQUFBSyxVQUFDLEFBQWE7QUFDakIsWUFBSSxBQUFLLFFBQUcsQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFPLFFBQUMsQUFBSyxBQUFDLEFBQUM7QUFFdkMsQUFBRSxBQUFDLFlBQUMsQUFBSyxRQUFHLENBQUMsQUFBQyxBQUFDLEdBQUMsQUFBQztBQUNmLEFBQU0sbUJBQUMsQUFBSyxBQUFDLEFBQ2Y7QUFBQztBQUVELEFBQU0sZUFBQyxBQUFJLEtBQUMsQUFBTSxPQUFDLEFBQUksS0FBQyxBQUFLLEFBQUMsU0FBRyxBQUFDLEFBQUMsQUFDckM7QUFBQztBQUVELEFBQVEsYUFBQyxBQUFnQjtBQUN2QixBQUFNLGVBQUMsQUFBSSxLQUFDLEFBQVMsVUFBQyxBQUFJLEtBQUMsQUFBUSxBQUFDLFlBQUcsQUFBQyxBQUFDLEFBQzNDO0FBQUM7QUFFRCxBQUFNLFdB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RUQsQUFBZSxvQkFBSSxBQUFTO0FBQzFCLEFBQU0sZUFBQyxBQUFJLEtBQUMsQUFBYSxjQUFDLEFBQUMsQUFBTSxBQUFDLEFBQ3BDO0FBQUMsQUFDRjs7QUFFRCxBQUFNLGFBQXFCLHNCQUFRLEFBQWlCO0FBQXBEOztBQUNVLGFBQU0sU0FBYSxBQUFFLEFBQUMsQUFTaEM7QUFBQztBQVBDLEFBQVEsYUFBSSxBQUFhO0FBQ3ZCLEFBQU0sZUFBQyxBQUFJLEtBQUMsQUFBTSxPQUFDLEFBQUssUUFBRyxBQUFDLEFBQU0sQUFBQyxBQUNyQztBQUFDO0FBRUQsQUFBSyxVQUFDLEFBQWE7QUFDakIsQUFBTSxlQUFDLEFBQUksS0FBQyxBQUFNLE9BQUMsQUFBSSxLQUFDLEFBQUssQUFBQyxBQUFDLEFBQ2pDO0FBQUMsQUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wYXF1ZSwgU3ltYm9sVGFibGUsIFJ1bnRpbWVSZXNvbHZlciwgQ29tcGlsZVRpbWVDb25zdGFudHMgfSBmcm9tIFwiQGdsaW1tZXIvaW50ZXJmYWNlc1wiO1xuXG5jb25zdCBVTlJFU09MVkVEID0ge307XG5cbmNvbnN0IFdFTExfS05PV05fRU1QVFlfQVJSQVlfUE9TSVRJT04gPSAwO1xuY29uc3QgV0VMTF9LTk9XX0VNUFRZX0FSUkFZID0gT2JqZWN0LmZyZWV6ZShbXSk7XG5leHBvcnQgdHlwZSBFTVBUWV9BUlJBWSA9IEFycmF5PFJlYWRvbmx5QXJyYXk8bmV2ZXI+PjtcblxuZXhwb3J0IGludGVyZmFjZSBDb25zdGFudFBvb2wge1xuICBzdHJpbmdzOiBzdHJpbmdbXTtcbiAgYXJyYXlzOiBudW1iZXJbXVtdIHwgRU1QVFlfQVJSQVk7XG4gIHRhYmxlczogU3ltYm9sVGFibGVbXTtcbiAgaGFuZGxlczogbnVtYmVyW107XG4gIHNlcmlhbGl6YWJsZXM6IE9wYXF1ZVtdO1xuICBmbG9hdHM6IG51bWJlcltdO1xuICBuZWdhdGl2ZXM6IG51bWJlcltdO1xufVxuXG5leHBvcnQgY29uc3QgZW51bSBQcmltaXRpdmVUeXBlIHtcbiAgTlVNQkVSICAgICAgICAgID0gMGIwMDAsXG4gIEZMT0FUICAgICAgICAgICA9IDBiMDAxLFxuICBTVFJJTkcgICAgICAgICAgPSAwYjAxMCxcbiAgQk9PTEVBTl9PUl9WT0lEID0gMGIwMTEsXG4gIE5FR0FUSVZFICAgICAgICA9IDBiMTAwXG59XG5cbmV4cG9ydCBjbGFzcyBXcml0ZU9ubHlDb25zdGFudHMgaW1wbGVtZW50cyBDb21waWxlVGltZUNvbnN0YW50cyB7XG4gIC8vIGAwYCBtZWFucyBOVUxMXG5cbiAgcHJvdGVjdGVkIHN0cmluZ3M6IHN0cmluZ1tdID0gW107XG4gIHByb3RlY3RlZCBhcnJheXM6IG51bWJlcltdW10gfCBFTVBUWV9BUlJBWSA9IFtXRUxMX0tOT1dfRU1QVFlfQVJSQVldO1xuICBwcm90ZWN0ZWQgdGFibGVzOiBTeW1ib2xUYWJsZVtdID0gW107XG4gIHByb3RlY3RlZCBoYW5kbGVzOiBudW1iZXJbXSA9IFtdO1xuICBwcm90ZWN0ZWQgc2VyaWFsaXphYmxlczogT3BhcXVlW10gPSBbXTtcbiAgcHJvdGVjdGVkIHJlc29sdmVkOiBPcGFxdWVbXSA9IFtdO1xuICBwcm90ZWN0ZWQgZmxvYXRzOiBudW1iZXJbXSA9IFtdO1xuICBwcm90ZWN0ZWQgbmVnYXRpdmVzOiBudW1iZXJbXSA9IFtdO1xuXG4gIGZsb2F0KGZsb2F0OiBudW1iZXIpIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLmZsb2F0cy5pbmRleE9mKGZsb2F0KTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZmxvYXRzLnB1c2goZmxvYXQpIC0gMTtcbiAgfVxuXG4gIG5lZ2F0aXZlKG5lZ2F0aXZlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGl2ZXMucHVzaChuZWdhdGl2ZSkgLSAxO1xuICB9XG5cbiAgc3RyaW5nKHZhbHVlOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGxldCBpbmRleCA9IHRoaXMuc3RyaW5ncy5pbmRleE9mKHZhbHVlKTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaW5ncy5wdXNoKHZhbHVlKSAtIDE7XG4gIH1cblxuICBzdHJpbmdBcnJheShzdHJpbmdzOiBzdHJpbmdbXSk6IG51bWJlciB7XG4gICAgbGV0IF9zdHJpbmdzOiBudW1iZXJbXSA9IG5ldyBBcnJheShzdHJpbmdzLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0cmluZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIF9zdHJpbmdzW2ldID0gdGhpcy5zdHJpbmcoc3RyaW5nc1tpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXJyYXkoX3N0cmluZ3MpO1xuICB9XG5cbiAgYXJyYXkodmFsdWVzOiBudW1iZXJbXSk6IG51bWJlciB7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBXRUxMX0tOT1dOX0VNUFRZX0FSUkFZX1BPU0lUSU9OO1xuICAgIH1cblxuICAgIGxldCBpbmRleCA9ICh0aGlzLmFycmF5cyBhcyBudW1iZXJbXVtdKS5pbmRleE9mKHZhbHVlcyk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIHJldHVybiAodGhpcy5hcnJheXMgYXMgbnVtYmVyW11bXSkucHVzaCh2YWx1ZXMpIC0gMTtcbiAgfVxuXG4gIHRhYmxlKHQ6IFN5bWJvbFRhYmxlKTogbnVtYmVyIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLnRhYmxlcy5pbmRleE9mKHQpO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50YWJsZXMucHVzaCh0KSAtIDE7XG4gIH1cblxuICBoYW5kbGUoaGFuZGxlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHRoaXMucmVzb2x2ZWQucHVzaChVTlJFU09MVkVEKTtcbiAgICByZXR1cm4gdGhpcy5oYW5kbGVzLnB1c2goaGFuZGxlKTtcbiAgfVxuXG4gIHNlcmlhbGl6YWJsZSh2YWx1ZTogT3BhcXVlKTogbnVtYmVyIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLnNlcmlhbGl6YWJsZXMuaW5kZXhPZih2YWx1ZSk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6YWJsZXMucHVzaCh2YWx1ZSkgLSAxO1xuICB9XG5cbiAgdG9Qb29sKCk6IENvbnN0YW50UG9vbCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0cmluZ3M6IHRoaXMuc3RyaW5ncyxcbiAgICAgIGFycmF5czogdGhpcy5hcnJheXMsXG4gICAgICB0YWJsZXM6IHRoaXMudGFibGVzLFxuICAgICAgaGFuZGxlczogdGhpcy5oYW5kbGVzLFxuICAgICAgc2VyaWFsaXphYmxlczogdGhpcy5zZXJpYWxpemFibGVzLFxuICAgICAgZmxvYXRzOiB0aGlzLmZsb2F0cyxcbiAgICAgIG5lZ2F0aXZlczogdGhpcy5uZWdhdGl2ZXNcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSdW50aW1lQ29uc3RhbnRzPFRlbXBsYXRlTWV0YT4ge1xuICBwcm90ZWN0ZWQgc3RyaW5nczogc3RyaW5nW107XG4gIHByb3RlY3RlZCBhcnJheXM6IG51bWJlcltdW10gfCBFTVBUWV9BUlJBWTtcbiAgcHJvdGVjdGVkIHRhYmxlczogU3ltYm9sVGFibGVbXTtcbiAgcHJvdGVjdGVkIGhhbmRsZXM6IG51bWJlcltdO1xuICBwcm90ZWN0ZWQgc2VyaWFsaXphYmxlczogT3BhcXVlW107XG4gIHByb3RlY3RlZCByZXNvbHZlZDogT3BhcXVlW107XG4gIHByb3RlY3RlZCBmbG9hdHM6IG51bWJlcltdO1xuICBwcm90ZWN0ZWQgbmVnYXRpdmVzOiBudW1iZXJbXTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVzb2x2ZXI6IFJ1bnRpbWVSZXNvbHZlcjxUZW1wbGF0ZU1ldGE+LCBwb29sOiBDb25zdGFudFBvb2wpIHtcbiAgICB0aGlzLnN0cmluZ3MgPSBwb29sLnN0cmluZ3M7XG4gICAgdGhpcy5hcnJheXMgPSBwb29sLmFycmF5cztcbiAgICB0aGlzLnRhYmxlcyA9IHBvb2wudGFibGVzO1xuICAgIHRoaXMuaGFuZGxlcyA9IHBvb2wuaGFuZGxlcztcbiAgICB0aGlzLnNlcmlhbGl6YWJsZXMgPSBwb29sLnNlcmlhbGl6YWJsZXM7XG4gICAgdGhpcy5mbG9hdHMgPSBwb29sLmZsb2F0cztcbiAgICB0aGlzLm5lZ2F0aXZlcyA9IHBvb2wubmVnYXRpdmVzO1xuICAgIHRoaXMucmVzb2x2ZWQgPSB0aGlzLmhhbmRsZXMubWFwKCgpID0+IFVOUkVTT0xWRUQpO1xuICB9XG5cbiAgLy8gYDBgIG1lYW5zIE5VTExcblxuICBnZXRGbG9hdCh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5mbG9hdHNbdmFsdWVdO1xuICB9XG5cbiAgZ2V0TmVnYXRpdmUodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRpdmVzW3ZhbHVlXTtcbiAgfVxuXG4gIGdldFN0cmluZyh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmdzW3ZhbHVlXTtcbiAgfVxuXG4gIGdldFN0cmluZ0FycmF5KHZhbHVlOiBudW1iZXIpOiBzdHJpbmdbXSB7XG4gICAgbGV0IG5hbWVzID0gdGhpcy5nZXRBcnJheSh2YWx1ZSk7XG4gICAgbGV0IF9uYW1lczogc3RyaW5nW10gPSBuZXcgQXJyYXkobmFtZXMubGVuZ3RoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBuID0gbmFtZXNbaV07XG4gICAgICBfbmFtZXNbaV0gPSB0aGlzLmdldFN0cmluZyhuKTtcbiAgICB9XG5cbiAgICByZXR1cm4gX25hbWVzO1xuICB9XG5cbiAgZ2V0QXJyYXkodmFsdWU6IG51bWJlcik6IG51bWJlcltdIHtcbiAgICByZXR1cm4gKHRoaXMuYXJyYXlzIGFzIG51bWJlcltdW10pW3ZhbHVlXTtcbiAgfVxuXG4gIGdldFN5bWJvbFRhYmxlPFQgZXh0ZW5kcyBTeW1ib2xUYWJsZT4odmFsdWU6IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnRhYmxlc1t2YWx1ZV0gYXMgVDtcbiAgfVxuXG4gIHJlc29sdmVIYW5kbGU8VD4oczogbnVtYmVyKTogVCB7XG4gICAgbGV0IGluZGV4ID0gcyAtIDE7XG4gICAgbGV0IHJlc29sdmVkID0gdGhpcy5yZXNvbHZlZFtpbmRleF07XG5cbiAgICBpZiAocmVzb2x2ZWQgPT09IFVOUkVTT0xWRUQpIHtcbiAgICAgIGxldCBoYW5kbGUgPSB0aGlzLmhhbmRsZXNbaW5kZXhdO1xuICAgICAgcmVzb2x2ZWQgPSB0aGlzLnJlc29sdmVkW2luZGV4XSA9IHRoaXMucmVzb2x2ZXIucmVzb2x2ZShoYW5kbGUpO1xuICAgIH1cblxuICAgIHJldHVybiByZXNvbHZlZCBhcyBUO1xuICB9XG5cbiAgZ2V0U2VyaWFsaXphYmxlPFQ+KHM6IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6YWJsZXNbc10gYXMgVDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29uc3RhbnRzPFRlbXBsYXRlTWV0YT4gZXh0ZW5kcyBXcml0ZU9ubHlDb25zdGFudHMge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVzb2x2ZXI6IFJ1bnRpbWVSZXNvbHZlcjxUZW1wbGF0ZU1ldGE+LCBwb29sPzogQ29uc3RhbnRQb29sKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGlmIChwb29sKSB7XG4gICAgICB0aGlzLnN0cmluZ3MgPSBwb29sLnN0cmluZ3M7XG4gICAgICB0aGlzLmFycmF5cyA9IHBvb2wuYXJyYXlzO1xuICAgICAgdGhpcy50YWJsZXMgPSBwb29sLnRhYmxlcztcbiAgICAgIHRoaXMuaGFuZGxlcyA9IHBvb2wuaGFuZGxlcztcbiAgICAgIHRoaXMuc2VyaWFsaXphYmxlcyA9IHBvb2wuc2VyaWFsaXphYmxlcztcbiAgICAgIHRoaXMuZmxvYXRzID0gcG9vbC5mbG9hdHM7XG4gICAgICB0aGlzLm5lZ2F0aXZlcyA9IHBvb2wubmVnYXRpdmVzO1xuICAgICAgdGhpcy5yZXNvbHZlZCA9IHRoaXMuaGFuZGxlcy5tYXAoKCkgPT4gVU5SRVNPTFZFRCk7XG4gICAgfVxuICB9XG5cbiAgLy8gYDBgIG1lYW5zIE5VTExcbiAgZ2V0RmxvYXQodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZmxvYXRzW3ZhbHVlXTtcbiAgfVxuXG4gIGdldE5lZ2F0aXZlKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm5lZ2F0aXZlc1t2YWx1ZV07XG4gIH1cblxuICBnZXRTdHJpbmcodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3RyaW5nc1t2YWx1ZV07XG4gIH1cblxuICBnZXRTdHJpbmdBcnJheSh2YWx1ZTogbnVtYmVyKTogc3RyaW5nW10ge1xuICAgIGxldCBuYW1lcyA9IHRoaXMuZ2V0QXJyYXkodmFsdWUpO1xuICAgIGxldCBfbmFtZXM6IHN0cmluZ1tdID0gbmV3IEFycmF5KG5hbWVzLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgbiA9IG5hbWVzW2ldO1xuICAgICAgX25hbWVzW2ldID0gdGhpcy5nZXRTdHJpbmcobik7XG4gICAgfVxuXG4gICAgcmV0dXJuIF9uYW1lcztcbiAgfVxuXG4gIGdldEFycmF5KHZhbHVlOiBudW1iZXIpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuICh0aGlzLmFycmF5cyBhcyBudW1iZXJbXVtdKVt2YWx1ZV07XG4gIH1cblxuICBnZXRTeW1ib2xUYWJsZTxUIGV4dGVuZHMgU3ltYm9sVGFibGU+KHZhbHVlOiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZXNbdmFsdWVdIGFzIFQ7XG4gIH1cblxuICByZXNvbHZlSGFuZGxlPFQ+KHM6IG51bWJlcik6IFQge1xuICAgIGxldCBpbmRleCA9IHMgLSAxO1xuICAgIGxldCByZXNvbHZlZCA9IHRoaXMucmVzb2x2ZWRbaW5kZXhdO1xuXG4gICAgaWYgKHJlc29sdmVkID09PSBVTlJFU09MVkVEKSB7XG4gICAgICBsZXQgaGFuZGxlID0gdGhpcy5oYW5kbGVzW2luZGV4XTtcbiAgICAgIHJlc29sdmVkID0gdGhpcy5yZXNvbHZlZFtpbmRleF0gPSB0aGlzLnJlc29sdmVyLnJlc29sdmUoaGFuZGxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzb2x2ZWQgYXMgVDtcbiAgfVxuXG4gIGdldFNlcmlhbGl6YWJsZTxUPihzOiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zZXJpYWxpemFibGVzW3NdIGFzIFQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIExhenlDb25zdGFudHMgZXh0ZW5kcyBDb25zdGFudHM8T3BhcXVlPiB7XG4gIHByaXZhdGUgb3RoZXJzOiBPcGFxdWVbXSA9IFtdO1xuXG4gIGdldE90aGVyPFQ+KHZhbHVlOiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5vdGhlcnNbdmFsdWUgLSAxXSBhcyBUO1xuICB9XG5cbiAgb3RoZXIob3RoZXI6IE9wYXF1ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMub3RoZXJzLnB1c2gob3RoZXIpO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9wcm9ncmFtL2xpYi9pbnRlcm5hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVW5pcXVlLCBSdW50aW1lUmVzb2x2ZXIgYXMgSVJlc29sdmVyIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCB0eXBlIFNwZWNpZmllciA9IFVuaXF1ZTwnU3BlY2lmaWVyJz47XG5leHBvcnQgdHlwZSBSZWZlcnJlciA9IFVuaXF1ZTwnUmVmZXJyZXInPjtcbmV4cG9ydCB0eXBlIFJlc29sdmVyID0gSVJlc29sdmVyPFNwZWNpZmllcj47XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9wcm9ncmFtL2xpYi9pbnRlcm5hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVW5pcXVlLCBSdW50aW1lUmVzb2x2ZXIgYXMgSVJlc29sdmVyIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCB0eXBlIFRlbXBsYXRlTWV0YSA9IFVuaXF1ZTwnVGVtcGxhdGVNZXRhJz47XG5leHBvcnQgdHlwZSBSZWZlcnJlciA9IFVuaXF1ZTwnUmVmZXJyZXInPjtcbmV4cG9ydCB0eXBlIFJlc29sdmVyID0gSVJlc29sdmVyPFRlbXBsYXRlTWV0YT47XG4iXX0=
import { WriteOnlyConstants } from './constants';
import { WriteOnlyConstants, RuntimeConstants } from './constants';
import { Opcode } from './opcode';

@@ -170,2 +170,7 @@ var TableSlotState;

}
static hydrate(rawHeap, pool, resolver) {
let heap = new Heap(rawHeap);
let constants = new RuntimeConstants(resolver, pool);
return new RuntimeProgram(constants, heap);
}
opcode(offset) {

@@ -190,2 +195,2 @@ this._opcode.offset = offset;

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3Byb2dyYW0vbGliL3Byb2dyYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUdBLEFBQU8sU0FBYSxBQUFrQixBQUFvQiwwQkFBTSxBQUFhLEFBQUM7QUFDOUUsQUFBTyxTQUFFLEFBQU0sQUFBRSxjQUFNLEFBQVUsQUFBQztBQUVsQyxJQUFLLEFBS0o7QUFMRCxXQUFLLEFBQWM7QUFDakIsc0RBQVM7QUFDVCxrREFBSztBQUNMLG1EQUFNO0FBQ04sb0RBQU8sQUFDVDtBQUFDLEdBTEksQUFBYyxtQkFBZCxBQUFjLGlCQUtsQjtBQUVELE1BQU0sQUFBVSxhQUFHLEFBQUMsQUFBQztBQUNyQixNQUFNLEFBQVcsY0FBRyxBQUFDLEFBQUM7QUFDdEIsTUFBTSxBQUFTLFlBQUksQUFBa0MsQUFBQztBQUN0RCxNQUFNLEFBQVUsYUFBRyxBQUFrQyxBQUFDO0FBQ3RELE1BQU0sQUFBVSxhQUFHLEFBQWtDLEFBQUM7QUFFdEQseUJBQXlCLEFBQVksTUFBRSxBQUFpQixXQUFFLEFBQWE7QUFDckUsQUFBTSxXQUFDLEFBQUksQUFBRyxPQUFDLEFBQVMsYUFBSSxBQUFFLEFBQUMsS0FBRyxBQUFLLFNBQUksQUFBRSxBQUFDLEFBQ2hEO0FBQUM7QUFFRCxxQkFBcUIsQUFBWSxNQUFFLEFBQWdCO0FBQ2pELEFBQU0sV0FBQyxBQUFJLE9BQUcsQUFBUSxZQUFJLEFBQUUsQUFBQyxBQUMvQjtBQUFDO0FBRUQsQUFtQkc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0gsQUFBTTtBQU1KLGdCQUFZLEFBQXlFO0FBSDdFLGFBQU0sU0FBRyxBQUFDLEFBQUM7QUFDWCxhQUFNLFNBQUcsQUFBQyxBQUFDO0FBR2pCLEFBQUUsQUFBQyxZQUFDLEFBQWMsQUFBQyxnQkFBQyxBQUFDO0FBQ25CLGdCQUFJLEVBQUUsQUFBTSxRQUFFLEFBQUssT0FBRSxBQUFNLEFB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LFlBQUksQUFBRyxNQUFHLElBQUksQUFBVyxZQUFDLEFBQUcsQUFBQyxBQUFDO0FBRS9CLEFBQUcsQUFBQyxBQUFDLGVBQUUsQUFBSyxRQUFHLEFBQUcsS0FBRSxBQUFLLEFBQUUsU0FBRSxBQUFDO0FBQzVCLEFBQUcsZ0JBQUMsQUFBSyxBQUFDLFNBQUksQUFBRyxJQUFDLEFBQUssQUFBQyxBQUFDLEFBQzNCO0FBQUM7QUFFRCxBQUFNLGVBQUMsQUFBRyxJQUFDLEFBQU0sQUFBQyxBQUNwQjtBQUFDO0FBRUQsQUFBTSxXQUFDLEFBQUksQUFBQyxBQUNkO0FBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IENvbXBpbGVUaW1lUHJvZ3JhbSwgUmVjYXN0LCBWTUhhbmRsZSB9IGZyb20gXCJAZ2xpbW1lci9pbnRlcmZhY2VzXCI7XG5pbXBvcnQgeyBERUJVRyB9IGZyb20gXCJAZ2xpbW1lci9sb2NhbC1kZWJ1Zy1mbGFnc1wiO1xuaW1wb3J0IHsgQ29uc3RhbnRzLCBXcml0ZU9ubHlDb25zdGFudHMsIFJ1bnRpbWVDb25zdGFudHMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBPcGNvZGUgfSBmcm9tICcuL29wY29kZSc7XG5cbmVudW0gVGFibGVTbG90U3RhdGUge1xuICBBbGxvY2F0ZWQsXG4gIEZyZWVkLFxuICBQdXJnZWQsXG4gIFBvaW50ZXJcbn1cblxuY29uc3QgRU5UUllfU0laRSA9IDI7XG5jb25zdCBJTkZPX09GRlNFVCA9IDE7XG5jb25zdCBTSVpFX01BU0sgPSAgMGIwMDAwMDAwMDAwMDAwMDAwMTExMTExMTExMTExMTExMTtcbmNvbnN0IFNDT1BFX01BU0sgPSAwYjAwMTExMTExMTExMTExMTEwMDAwMDAwMDAwMDAwMDAwO1xuY29uc3QgU1RBVEVfTUFTSyA9IDBiMTEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA7XG5cbmZ1bmN0aW9uIGVuY29kZVRhYmxlSW5mbyhzaXplOiBudW1iZXIsIHNjb3BlU2l6ZTogbnVtYmVyLCBzdGF0ZTogbnVtYmVyKSB7XG4gIHJldHVybiBzaXplIHwgKHNjb3BlU2l6ZSA8PCAxNikgfCBzdGF0ZSA8PCAzMDtcbn1cblxuZnVuY3Rpb24gY2hhbmdlU3RhdGUoaW5mbzogbnVtYmVyLCBuZXdTdGF0ZTogbnVtYmVyKSB7XG4gIHJldHVybiBpbmZvIHwgbmV3U3RhdGUgPDwgMzA7XG59XG5cbi8qKlxuICogVGhlIEhlYXAgaXMgcmVzcG9uc2libGUgZm9yIGR5bmFtaWNhbGx5IGFsbG9jYXRpbmdcbiAqIG1lbW9yeSBpbiB3aGljaCB3ZSByZWFkL3dyaXRlIHRoZSBWTSdzIGluc3RydWN0aW9uc1xuICogZnJvbS90by4gV2hlbiB3ZSBtYWxsb2Mgd2UgcGFzcyBvdXQgYSBWTUhhbmRsZSwgd2hpY2hcbiAqIGlzIHVzZWQgYXMgYW4gaW5kaXJlY3Qgd2F5IG9mIGFjY2Vzc2luZyB0aGUgbWVtb3J5IGR1cmluZ1xuICogZXhlY3V0aW9uIG9mIHRoZSBWTS4gSW50ZXJuYWxseSB3ZSB0cmFjayB0aGUgZGlmZmVyZW50XG4gKiByZWdpb25zIG9mIHRoZSBtZW1vcnkgaW4gYW4gaW50IGFycmF5IGtub3duIGFzIHRoZSB0YWJsZS5cbiAqXG4gKiBUaGUgdGFibGUgMzItYml0IGFsaWduZWQgYW5kIGhhcyB0aGUgZm9sbG93aW5nIGxheW91dDpcbiAqXG4gKiB8IC4uLiB8IGhwICh1MzIpIHwgICAgICAgaW5mbyAodTMyKSAgICAgICAgICB8XG4gKiB8IC4uLiB8ICBIYW5kbGUgIHwgU2l6ZSB8IFNjb3BlIFNpemUgfCBTdGF0ZSB8XG4gKiB8IC4uLiB8IDMyLWJpdHMgIHwgMTZiICB8ICAgIDE0YiAgICAgfCAgMmIgICB8XG4gKlxuICogV2l0aCB0aGlzIGluZm9ybWF0aW9uIHdlIGVmZmVjdGl2ZWx5IGhhdmUgdGhlIGFiaWxpdHkgdG9cbiAqIGNvbnRyb2wgd2hlbiB3ZSB3YW50IHRvIGZyZWUgbWVtb3J5LiBUaGF0IGJlaW5nIHNhaWQgeW91XG4gKiBjYW4gbm90IGZyZWUgZHVyaW5nIGV4ZWN1dGlvbiBhcyByYXcgYWRkcmVzcyBhcmUgb25seVxuICogdmFsaWQgZHVyaW5nIHRoZSBleGVjdXRpb24uIFRoaXMgbWVhbnMgeW91IGNhbm5vdCBjbG9zZVxuICogb3ZlciB0aGVtIGFzIHlvdSB3aWxsIGhhdmUgYSBiYWQgbWVtb3J5IGFjY2VzcyBleGNlcHRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBIZWFwIHtcbiAgcHJpdmF0ZSBoZWFwOiBVaW50MTZBcnJheSB8IEFycmF5PG51bWJlcj47XG4gIHByaXZhdGUgdGFibGU6IG51bWJlcltdO1xuICBwcml2YXRlIG9mZnNldCA9IDA7XG4gIHByaXZhdGUgaGFuZGxlID0gMDtcblxuICBjb25zdHJ1Y3RvcihzZXJpYWxpemVkSGVhcD86IHsgYnVmZmVyOiBBcnJheUJ1ZmZlciwgdGFibGU6IG51bWJlcltdLCBoYW5kbGU6IG51bWJlciB9KSB7XG4gICAgaWYgKHNlcmlhbGl6ZWRIZWFwKSB7XG4gICAgICBsZXQgeyBidWZmZXIsIHRhYmxlLCBoYW5kbGUgfSA9IHNlcmlhbGl6ZWRIZWFwO1xuICAgICAgdGhpcy5oZWFwID0gbmV3IFVpbnQxNkFycmF5KGJ1ZmZlcik7XG4gICAgICB0aGlzLnRhYmxlID0gdGFibGU7XG4gICAgICB0aGlzLm9mZnNldCA9IHRoaXMuaGVhcC5sZW5ndGg7XG4gICAgICB0aGlzLmhhbmRsZSA9IGhhbmRsZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oZWFwID0gbmV3IFVpbnQxNkFycmF5KDB4MTAwMDAwKTtcbiAgICAgIHRoaXMudGFibGUgPSBbXTtcbiAgICB9XG4gIH1cblxuICBwdXNoKGl0ZW06IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuaGVhcFt0aGlzLm9mZnNldCsrXSA9IGl0ZW07XG4gIH1cblxuICBnZXRieWFkZHIoYWRkcmVzczogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5oZWFwW2FkZHJlc3NdO1xuICB9XG5cbiAgc2V0YnlhZGRyKGFkZHJlc3M6IG51bWJlciwgdmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuaGVhcFthZGRyZXNzXSA9IHZhbHVlO1xuICB9XG5cbiAgbWFsbG9jKCk6IFZNSGFuZGxlIHtcbiAgICB0aGlzLnRhYmxlLnB1c2godGhpcy5vZmZzZXQsIDApO1xuICAgIGxldCBoYW5kbGUgPSB0aGlzLmhhbmRsZTtcbiAgICB0aGlzLmhhbmRsZSArPSBFTlRSWV9TSVpFO1xuICAgIHJldHVybiBoYW5kbGUgYXMgUmVjYXN0PG51bWJlciwgVk1IYW5kbGU+O1xuICB9XG5cbiAgZmluaXNoTWFsbG9jKGhhbmRsZTogVk1IYW5kbGUsIHNjb3BlU2l6ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgbGV0IHN0YXJ0ID0gdGhpcy50YWJsZVtoYW5kbGUgYXMgUmVjYXN0PFZNSGFuZGxlLCBudW1iZXI+XTtcbiAgICBsZXQgZmluaXNoID0gdGhpcy5vZmZzZXQ7XG4gICAgbGV0IGluc3RydWN0aW9uU2l6ZSA9IGZpbmlzaCAtIHN0YXJ0O1xuICAgIGxldCBpbmZvID0gZW5jb2RlVGFibGVJbmZvKGluc3RydWN0aW9uU2l6ZSwgc2NvcGVTaXplLCBUYWJsZVNsb3RTdGF0ZS5BbGxvY2F0ZWQpO1xuICAgIHRoaXMudGFibGVbKGhhbmRsZSBhcyBSZWNhc3Q8Vk1IYW5kbGUsIG51bWJlcj4pICsgSU5GT19PRkZTRVRdID0gaW5mbztcbiAgfVxuXG4gIHNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5vZmZzZXQ7XG4gIH1cblxuICAvLyBJdCBpcyBpbGxlZ2FsIHRvIGNsb3NlIG92ZXIgdGhpcyBhZGRyZXNzLCBhcyBjb21wYWN0aW9uXG4gIC8vIG1heSBtb3ZlIGl0LiBIb3dldmVyLCBpdCBpcyBsZWdhbCB0byB1c2UgdGhpcyBhZGRyZXNzXG4gIC8vIG11bHRpcGxlIHRpbWVzIGJldHdlZW4gY29tcGFjdGlvbnMuXG4gIGdldGFkZHIoaGFuZGxlOiBWTUhhbmRsZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVbaGFuZGxlIGFzIFJlY2FzdDxWTUhhbmRsZSwgbnVtYmVyPl07XG4gIH1cblxuICBnZXRoYW5kbGUoYWRkcmVzczogbnVtYmVyKTogVk1IYW5kbGUge1xuICAgIHRoaXMudGFibGUucHVzaChhZGRyZXNzLCBlbmNvZGVUYWJsZUluZm8oMCwgMCwgVGFibGVTbG90U3RhdGUuUG9pbnRlcikpO1xuICAgIGxldCBoYW5kbGUgPSB0aGlzLmhhbmRsZTtcbiAgICB0aGlzLmhhbmRsZSArPSBFTlRSWV9TSVpFO1xuICAgIHJldHVybiBoYW5kbGUgYXMgUmVjYXN0PG51bWJlciwgVk1IYW5kbGU+O1xuICB9XG5cbiAgc2l6ZW9mKGhhbmRsZTogVk1IYW5kbGUpOiBudW1iZXIge1xuICAgIGlmIChERUJVRykge1xuICAgICAgbGV0IGluZm8gPSB0aGlzLnRhYmxlWyhoYW5kbGUgYXMgUmVjYXN0PFZNSGFuZGxlLCBudW1iZXI+KSArIElORk9fT0ZGU0VUXTtcbiAgICAgIHJldHVybiBpbmZvICYgU0laRV9NQVNLO1xuICAgIH1cbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICBzY29wZXNpemVvZihoYW5kbGU6IFZNSGFuZGxlKTogbnVtYmVyIHtcbiAgICBsZXQgaW5mbyA9IHRoaXMudGFibGVbKGhhbmRsZSBhcyBSZWNhc3Q8Vk1IYW5kbGUsIG51bWJlcj4pICsgSU5GT19PRkZTRVRdO1xuICAgIHJldHVybiAoaW5mbyAmIFNDT1BFX01BU0spID4+IDE2O1xuICB9XG5cbiAgZnJlZShoYW5kbGU6IFZNSGFuZGxlKTogdm9pZCB7XG4gICAgbGV0IGluZm8gPSB0aGlzLnRhYmxlWyhoYW5kbGUgYXMgUmVjYXN0PFZNSGFuZGxlLCBudW1iZXI+KSArIElORk9fT0ZGU0VUXTtcbiAgICB0aGlzLnRhYmxlWyhoYW5kbGUgYXMgUmVjYXN0PFZNSGFuZGxlLCBudW1iZXI+KSArIElORk9fT0ZGU0VUXSA9IGNoYW5nZVN0YXRlKGluZm8sIFRhYmxlU2xvdFN0YXRlLkZyZWVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaGVhcCB1c2VzIHRoZSBbTWFyay1Db21wYWN0IEFsZ29yaXRobV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFyay1jb21wYWN0X2FsZ29yaXRobSkgdG8gc2hpZnRcbiAgICogcmVhY2hhYmxlIG1lbW9yeSB0byB0aGUgYm90dG9tIG9mIHRoZSBoZWFwIGFuZCBmcmVlYWJsZVxuICAgKiBtZW1vcnkgdG8gdGhlIHRvcCBvZiB0aGUgaGVhcC4gV2hlbiB3ZSBoYXZlIHNoaWZ0ZWQgYWxsXG4gICAqIHRoZSByZWFjaGFibGUgbWVtb3J5IHRvIHRoZSB0b3Agb2YgdGhlIGhlYXAsIHdlIG1vdmUgdGhlXG4gICAqIG9mZnNldCB0byB0aGUgbmV4dCBmcmVlIHBvc2l0aW9uLlxuICAgKi9cbiAgY29tcGFjdCgpOiB2b2lkIHtcbiAgICBsZXQgY29tcGFjdGVkU2l6ZSA9IDA7XG4gICAgbGV0IHsgdGFibGUsIHRhYmxlOiB7IGxlbmd0aCB9LCBoZWFwIH0gPSB0aGlzO1xuXG4gICAgZm9yIChsZXQgaT0wOyBpPGxlbmd0aDsgaSs9RU5UUllfU0laRSkge1xuICAgICAgbGV0IG9mZnNldCA9IHRhYmxlW2ldO1xuICAgICAgbGV0IGluZm8gPSB0YWJsZVtpICsgSU5GT19PRkZTRVRdO1xuICAgICAgbGV0IHNpemUgPSBpbmZvICYgU0laRV9NQVNLO1xuICAgICAgbGV0IHN0YXRlID0gaW5mbyAmIFNUQVRFX01BU0sgPj4gMzA7XG5cbiAgICAgIGlmIChzdGF0ZSA9PT0gVGFibGVTbG90U3RhdGUuUHVyZ2VkKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PT0gVGFibGVTbG90U3RhdGUuRnJlZWQpIHtcbiAgICAgICAgLy8gdHJhbnNpdGlvbiB0byBcImFscmVhZHkgZnJlZWRcIiBha2EgXCJwdXJnZWRcIlxuICAgICAgICAvLyBhIGdvb2QgaW1wcm92ZW1lbnQgd291bGQgYmUgdG8gcmV1c2VcbiAgICAgICAgLy8gdGhlc2Ugc2xvdHNcbiAgICAgICAgdGFibGVbaSArIElORk9fT0ZGU0VUXSA9IGNoYW5nZVN0YXRlKGluZm8sIFRhYmxlU2xvdFN0YXRlLlB1cmdlZCk7XG4gICAgICAgIGNvbXBhY3RlZFNpemUgKz0gc2l6ZTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPT09IFRhYmxlU2xvdFN0YXRlLkFsbG9jYXRlZCkge1xuICAgICAgICBmb3IgKGxldCBqPW9mZnNldDsgajw9aStzaXplOyBqKyspIHtcbiAgICAgICAgICBoZWFwW2ogLSBjb21wYWN0ZWRTaXplXSA9IGhlYXBbal07XG4gICAgICAgIH1cblxuICAgICAgICB0YWJsZVtpXSA9IG9mZnNldCAtIGNvbXBhY3RlZFNpemU7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlID09PSBUYWJsZVNsb3RTdGF0ZS5Qb2ludGVyKSB7XG4gICAgICAgIHRhYmxlW2ldID0gb2Zmc2V0IC0gY29tcGFjdGVkU2l6ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm9mZnNldCA9IHRoaXMub2Zmc2V0IC0gY29tcGFjdGVkU2l6ZTtcbiAgfVxuXG4gIGNhcHR1cmUoKSB7XG4gICAgLy8gT25seSBjYWxsZWQgaW4gZWFnZXIgbW9kZVxuICAgIGxldCBidWZmZXIgPSBzbGljZSh0aGlzLmhlYXAsIDAsIHRoaXMub2Zmc2V0KTtcbiAgICByZXR1cm4ge1xuICAgICAgaGFuZGxlOiB0aGlzLmhhbmRsZSxcbiAgICAgIHRhYmxlOiB0aGlzLnRhYmxlLFxuICAgICAgYnVmZmVyOiBidWZmZXIgYXMgQXJyYXlCdWZmZXJcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBXcml0ZU9ubHlQcm9ncmFtIGltcGxlbWVudHMgQ29tcGlsZVRpbWVQcm9ncmFtIHtcbiAgW2tleTogbnVtYmVyXTogbmV2ZXI7XG5cbiAgcHJpdmF0ZSBfb3Bjb2RlOiBPcGNvZGU7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGNvbnN0YW50czogV3JpdGVPbmx5Q29uc3RhbnRzID0gbmV3IFdyaXRlT25seUNvbnN0YW50cygpLCBwdWJsaWMgaGVhcCA9IG5ldyBIZWFwKCkpIHtcbiAgICB0aGlzLl9vcGNvZGUgPSBuZXcgT3Bjb2RlKHRoaXMuaGVhcCk7XG4gIH1cblxuICBvcGNvZGUob2Zmc2V0OiBudW1iZXIpOiBPcGNvZGUge1xuICAgIHRoaXMuX29wY29kZS5vZmZzZXQgPSBvZmZzZXQ7XG4gICAgcmV0dXJuIHRoaXMuX29wY29kZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUnVudGltZVByb2dyYW08U3BlY2lmaWVyPiB7XG4gIFtrZXk6IG51bWJlcl06IG5ldmVyO1xuXG4gIHByaXZhdGUgX29wY29kZTogT3Bjb2RlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb25zdGFudHM6IFJ1bnRpbWVDb25zdGFudHM8U3BlY2lmaWVyPiwgcHVibGljIGhlYXA6IEhlYXApIHtcbiAgICB0aGlzLl9vcGNvZGUgPSBuZXcgT3Bjb2RlKHRoaXMuaGVhcCk7XG4gIH1cblxuICBvcGNvZGUob2Zmc2V0OiBudW1iZXIpOiBPcGNvZGUge1xuICAgIHRoaXMuX29wY29kZS5vZmZzZXQgPSBvZmZzZXQ7XG4gICAgcmV0dXJuIHRoaXMuX29wY29kZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJvZ3JhbTxTcGVjaWZpZXI+IGV4dGVuZHMgV3JpdGVPbmx5UHJvZ3JhbSB7XG4gIHB1YmxpYyBjb25zdGFudHM6IENvbnN0YW50czxTcGVjaWZpZXI+O1xufVxuXG5mdW5jdGlvbiBzbGljZShhcnI6IFVpbnQxNkFycmF5IHwgbnVtYmVyW10sIHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKSB7XG4gIGlmIChhcnIgaW5zdGFuY2VvZiBVaW50MTZBcnJheSkge1xuICAgIGlmIChhcnIuc2xpY2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGFyci5zbGljZShzdGFydCwgZW5kKS5idWZmZXI7XG4gICAgfVxuXG4gICAgbGV0IHJldCA9IG5ldyBVaW50MTZBcnJheShlbmQpO1xuXG4gICAgZm9yICg7IHN0YXJ0IDwgZW5kOyBzdGFydCsrKSB7XG4gICAgICByZXRbc3RhcnRdICA9IGFycltzdGFydF07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldC5idWZmZXI7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3Byb2dyYW0vbGliL3Byb2dyYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUdBLEFBQU8sU0FBYSxBQUFrQixvQkFBRSxBQUFnQixBQUFnQix3QkFBTSxBQUFhLEFBQUM7QUFDNUYsQUFBTyxTQUFFLEFBQU0sQUFBRSxjQUFNLEFBQVUsQUFBQztBQUVsQyxJQUFLLEFBS0o7QUFMRCxXQUFLLEFBQWM7QUFDakIsc0RBQVM7QUFDVCxrREFBSztBQUNMLG1EQUFNO0FBQ04sb0RBQU8sQUFDVDtBQUFDLEdBTEksQUFBYyxtQkFBZCxBQUFjLGlCQUtsQjtBQUVELE1BQU0sQUFBVSxhQUFHLEFBQUMsQUFBQztBQUNyQixNQUFNLEFBQVcsY0FBRyxBQUFDLEFBQUM7QUFDdEIsTUFBTSxBQUFTLFlBQUksQUFBa0MsQUFBQztBQUN0RCxNQUFNLEFBQVUsYUFBRyxBQUFrQyxBQUFDO0FBQ3RELE1BQU0sQUFBVSxhQUFHLEFBQWtDLEFBQUM7QUFFdEQseUJBQXlCLEFBQVksTUFBRSxBQUFpQixXQUFFLEFBQWE7QUFDckUsQUFBTSxXQUFDLEFBQUksQUFBRyxPQUFDLEFBQVMsYUFBSSxBQUFFLEFBQUMsS0FBRyxBQUFLLFNBQUksQUFBRSxBQUFDLEFBQ2hEO0FBQUM7QUFFRCxxQkFBcUIsQUFBWSxNQUFFLEFBQWdCO0FBQ2pELEFBQU0sV0FBQyxBQUFJLE9BQUcsQUFBUSxZQUFJLEFBQUUsQUFBQyxBQUMvQjtBQUFDO0FBUUQsQUFtQkc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0gsQUFBTTtBQU1KLGdCQUFZLEFBQStCO0FBSG5DLGFBQU0sU0FBRyxBQUFDLEFBQUM7QUFDWCxhQUFNLFNBQUcsQUFBQyxBQUFDO0FBR2pCLEFBQUUsQUFBQyxZQUFDLEFBQWMsQUFBQyxnQkFBQyxBQUFDO0FBQ25CLGdCQUFJLEVBQUUsQUFBTSxRQUFFLEFBQUss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QWdCLGlCQUUxRDtBQUVELGVBQWUsQUFBMkIsS0FBRSxBQUFhLE9BQUUsQUFBVztBQUNwRSxBQUFFLEFBQUMsUUFBQyxBQUFHLGVBQVksQUFBVyxBQUFDLGFBQUMsQUFBQztBQUMvQixBQUFFLEFBQUMsWUFBQyxBQUFHLElBQUMsQUFBSyxVQUFLLEFBQVMsQUFBQyxXQUFDLEFBQUM7QUFDNUIsQUFBTSxtQkFBQyxBQUFHLElBQUMsQUFBSyxNQUFDLEFBQUssT0FBRSxBQUFHLEFBQUMsS0FBQyxBQUFNLEFBQUMsQUFDdEM7QUFBQztBQUVELFlBQUksQUFBRyxNQUFHLElBQUksQUFBVyxZQUFDLEFBQUcsQUFBQyxBQUFDO0FBRS9CLEFBQUcsQUFBQyxBQUFDLGVBQUUsQUFBSyxRQUFHLEFBQUcsS0FBRSxBQUFLLEFBQUUsU0FBRSxBQUFDO0FBQzVCLEFBQUcsZ0JBQUMsQUFBSyxBQUFDLFNBQUksQUFBRyxJQUFDLEFBQUssQUFBQyxBQUFDLEFBQzNCO0FBQUM7QUFFRCxBQUFNLGVBQUMsQUFBRyxJQUFDLEFBQU0sQUFBQyxBQUNwQjtBQUFDO0FBRUQsQUFBTSxXQUFDLEFBQUksQUFBQyxBQUNkO0FBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IENvbXBpbGVUaW1lUHJvZ3JhbSwgUmVjYXN0LCBWTUhhbmRsZSwgUnVudGltZVJlc29sdmVyIH0gZnJvbSBcIkBnbGltbWVyL2ludGVyZmFjZXNcIjtcbmltcG9ydCB7IERFQlVHIH0gZnJvbSBcIkBnbGltbWVyL2xvY2FsLWRlYnVnLWZsYWdzXCI7XG5pbXBvcnQgeyBDb25zdGFudHMsIFdyaXRlT25seUNvbnN0YW50cywgUnVudGltZUNvbnN0YW50cywgQ29uc3RhbnRQb29sIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgT3Bjb2RlIH0gZnJvbSAnLi9vcGNvZGUnO1xuXG5lbnVtIFRhYmxlU2xvdFN0YXRlIHtcbiAgQWxsb2NhdGVkLFxuICBGcmVlZCxcbiAgUHVyZ2VkLFxuICBQb2ludGVyXG59XG5cbmNvbnN0IEVOVFJZX1NJWkUgPSAyO1xuY29uc3QgSU5GT19PRkZTRVQgPSAxO1xuY29uc3QgU0laRV9NQVNLID0gIDBiMDAwMDAwMDAwMDAwMDAwMDExMTExMTExMTExMTExMTE7XG5jb25zdCBTQ09QRV9NQVNLID0gMGIwMDExMTExMTExMTExMTExMDAwMDAwMDAwMDAwMDAwMDtcbmNvbnN0IFNUQVRFX01BU0sgPSAwYjExMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwO1xuXG5mdW5jdGlvbiBlbmNvZGVUYWJsZUluZm8oc2l6ZTogbnVtYmVyLCBzY29wZVNpemU6IG51bWJlciwgc3RhdGU6IG51bWJlcikge1xuICByZXR1cm4gc2l6ZSB8IChzY29wZVNpemUgPDwgMTYpIHwgc3RhdGUgPDwgMzA7XG59XG5cbmZ1bmN0aW9uIGNoYW5nZVN0YXRlKGluZm86IG51bWJlciwgbmV3U3RhdGU6IG51bWJlcikge1xuICByZXR1cm4gaW5mbyB8IG5ld1N0YXRlIDw8IDMwO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlcmlhbGl6ZWRIZWFwIHtcbiAgYnVmZmVyOiBBcnJheUJ1ZmZlcjtcbiAgdGFibGU6IG51bWJlcltdO1xuICBoYW5kbGU6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBUaGUgSGVhcCBpcyByZXNwb25zaWJsZSBmb3IgZHluYW1pY2FsbHkgYWxsb2NhdGluZ1xuICogbWVtb3J5IGluIHdoaWNoIHdlIHJlYWQvd3JpdGUgdGhlIFZNJ3MgaW5zdHJ1Y3Rpb25zXG4gKiBmcm9tL3RvLiBXaGVuIHdlIG1hbGxvYyB3ZSBwYXNzIG91dCBhIFZNSGFuZGxlLCB3aGljaFxuICogaXMgdXNlZCBhcyBhbiBpbmRpcmVjdCB3YXkgb2YgYWNjZXNzaW5nIHRoZSBtZW1vcnkgZHVyaW5nXG4gKiBleGVjdXRpb24gb2YgdGhlIFZNLiBJbnRlcm5hbGx5IHdlIHRyYWNrIHRoZSBkaWZmZXJlbnRcbiAqIHJlZ2lvbnMgb2YgdGhlIG1lbW9yeSBpbiBhbiBpbnQgYXJyYXkga25vd24gYXMgdGhlIHRhYmxlLlxuICpcbiAqIFRoZSB0YWJsZSAzMi1iaXQgYWxpZ25lZCBhbmQgaGFzIHRoZSBmb2xsb3dpbmcgbGF5b3V0OlxuICpcbiAqIHwgLi4uIHwgaHAgKHUzMikgfCAgICAgICBpbmZvICh1MzIpICAgICAgICAgIHxcbiAqIHwgLi4uIHwgIEhhbmRsZSAgfCBTaXplIHwgU2NvcGUgU2l6ZSB8IFN0YXRlIHxcbiAqIHwgLi4uIHwgMzItYml0cyAgfCAxNmIgIHwgICAgMTRiICAgICB8ICAyYiAgIHxcbiAqXG4gKiBXaXRoIHRoaXMgaW5mb3JtYXRpb24gd2UgZWZmZWN0aXZlbHkgaGF2ZSB0aGUgYWJpbGl0eSB0b1xuICogY29udHJvbCB3aGVuIHdlIHdhbnQgdG8gZnJlZSBtZW1vcnkuIFRoYXQgYmVpbmcgc2FpZCB5b3VcbiAqIGNhbiBub3QgZnJlZSBkdXJpbmcgZXhlY3V0aW9uIGFzIHJhdyBhZGRyZXNzIGFyZSBvbmx5XG4gKiB2YWxpZCBkdXJpbmcgdGhlIGV4ZWN1dGlvbi4gVGhpcyBtZWFucyB5b3UgY2Fubm90IGNsb3NlXG4gKiBvdmVyIHRoZW0gYXMgeW91IHdpbGwgaGF2ZSBhIGJhZCBtZW1vcnkgYWNjZXNzIGV4Y2VwdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIEhlYXAge1xuICBwcml2YXRlIGhlYXA6IFVpbnQxNkFycmF5IHwgQXJyYXk8bnVtYmVyPjtcbiAgcHJpdmF0ZSB0YWJsZTogbnVtYmVyW107XG4gIHByaXZhdGUgb2Zmc2V0ID0gMDtcbiAgcHJpdmF0ZSBoYW5kbGUgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKHNlcmlhbGl6ZWRIZWFwPzogU2VyaWFsaXplZEhlYXApIHtcbiAgICBpZiAoc2VyaWFsaXplZEhlYXApIHtcbiAgICAgIGxldCB7IGJ1ZmZlciwgdGFibGUsIGhhbmRsZSB9ID0gc2VyaWFsaXplZEhlYXA7XG4gICAgICB0aGlzLmhlYXAgPSBuZXcgVWludDE2QXJyYXkoYnVmZmVyKTtcbiAgICAgIHRoaXMudGFibGUgPSB0YWJsZTtcbiAgICAgIHRoaXMub2Zmc2V0ID0gdGhpcy5oZWFwLmxlbmd0aDtcbiAgICAgIHRoaXMuaGFuZGxlID0gaGFuZGxlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhlYXAgPSBuZXcgVWludDE2QXJyYXkoMHgxMDAwMDApO1xuICAgICAgdGhpcy50YWJsZSA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIHB1c2goaXRlbTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5oZWFwW3RoaXMub2Zmc2V0KytdID0gaXRlbTtcbiAgfVxuXG4gIGdldGJ5YWRkcihhZGRyZXNzOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmhlYXBbYWRkcmVzc107XG4gIH1cblxuICBzZXRieWFkZHIoYWRkcmVzczogbnVtYmVyLCB2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5oZWFwW2FkZHJlc3NdID0gdmFsdWU7XG4gIH1cblxuICBtYWxsb2MoKTogVk1IYW5kbGUge1xuICAgIHRoaXMudGFibGUucHVzaCh0aGlzLm9mZnNldCwgMCk7XG4gICAgbGV0IGhhbmRsZSA9IHRoaXMuaGFuZGxlO1xuICAgIHRoaXMuaGFuZGxlICs9IEVOVFJZX1NJWkU7XG4gICAgcmV0dXJuIGhhbmRsZSBhcyBSZWNhc3Q8bnVtYmVyLCBWTUhhbmRsZT47XG4gIH1cblxuICBmaW5pc2hNYWxsb2MoaGFuZGxlOiBWTUhhbmRsZSwgc2NvcGVTaXplOiBudW1iZXIpOiB2b2lkIHtcbiAgICBsZXQgc3RhcnQgPSB0aGlzLnRhYmxlW2hhbmRsZSBhcyBSZWNhc3Q8Vk1IYW5kbGUsIG51bWJlcj5dO1xuICAgIGxldCBmaW5pc2ggPSB0aGlzLm9mZnNldDtcbiAgICBsZXQgaW5zdHJ1Y3Rpb25TaXplID0gZmluaXNoIC0gc3RhcnQ7XG4gICAgbGV0IGluZm8gPSBlbmNvZGVUYWJsZUluZm8oaW5zdHJ1Y3Rpb25TaXplLCBzY29wZVNpemUsIFRhYmxlU2xvdFN0YXRlLkFsbG9jYXRlZCk7XG4gICAgdGhpcy50YWJsZVsoaGFuZGxlIGFzIFJlY2FzdDxWTUhhbmRsZSwgbnVtYmVyPikgKyBJTkZPX09GRlNFVF0gPSBpbmZvO1xuICB9XG5cbiAgc2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm9mZnNldDtcbiAgfVxuXG4gIC8vIEl0IGlzIGlsbGVnYWwgdG8gY2xvc2Ugb3ZlciB0aGlzIGFkZHJlc3MsIGFzIGNvbXBhY3Rpb25cbiAgLy8gbWF5IG1vdmUgaXQuIEhvd2V2ZXIsIGl0IGlzIGxlZ2FsIHRvIHVzZSB0aGlzIGFkZHJlc3NcbiAgLy8gbXVsdGlwbGUgdGltZXMgYmV0d2VlbiBjb21wYWN0aW9ucy5cbiAgZ2V0YWRkcihoYW5kbGU6IFZNSGFuZGxlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZVtoYW5kbGUgYXMgUmVjYXN0PFZNSGFuZGxlLCBudW1iZXI+XTtcbiAgfVxuXG4gIGdldGhhbmRsZShhZGRyZXNzOiBudW1iZXIpOiBWTUhhbmRsZSB7XG4gICAgdGhpcy50YWJsZS5wdXNoKGFkZHJlc3MsIGVuY29kZVRhYmxlSW5mbygwLCAwLCBUYWJsZVNsb3RTdGF0ZS5Qb2ludGVyKSk7XG4gICAgbGV0IGhhbmRsZSA9IHRoaXMuaGFuZGxlO1xuICAgIHRoaXMuaGFuZGxlICs9IEVOVFJZX1NJWkU7XG4gICAgcmV0dXJuIGhhbmRsZSBhcyBSZWNhc3Q8bnVtYmVyLCBWTUhhbmRsZT47XG4gIH1cblxuICBzaXplb2YoaGFuZGxlOiBWTUhhbmRsZSk6IG51bWJlciB7XG4gICAgaWYgKERFQlVHKSB7XG4gICAgICBsZXQgaW5mbyA9IHRoaXMudGFibGVbKGhhbmRsZSBhcyBSZWNhc3Q8Vk1IYW5kbGUsIG51bWJlcj4pICsgSU5GT19PRkZTRVRdO1xuICAgICAgcmV0dXJuIGluZm8gJiBTSVpFX01BU0s7XG4gICAgfVxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIHNjb3Blc2l6ZW9mKGhhbmRsZTogVk1IYW5kbGUpOiBudW1iZXIge1xuICAgIGxldCBpbmZvID0gdGhpcy50YWJsZVsoaGFuZGxlIGFzIFJlY2FzdDxWTUhhbmRsZSwgbnVtYmVyPikgKyBJTkZPX09GRlNFVF07XG4gICAgcmV0dXJuIChpbmZvICYgU0NPUEVfTUFTSykgPj4gMTY7XG4gIH1cblxuICBmcmVlKGhhbmRsZTogVk1IYW5kbGUpOiB2b2lkIHtcbiAgICBsZXQgaW5mbyA9IHRoaXMudGFibGVbKGhhbmRsZSBhcyBSZWNhc3Q8Vk1IYW5kbGUsIG51bWJlcj4pICsgSU5GT19PRkZTRVRdO1xuICAgIHRoaXMudGFibGVbKGhhbmRsZSBhcyBSZWNhc3Q8Vk1IYW5kbGUsIG51bWJlcj4pICsgSU5GT19PRkZTRVRdID0gY2hhbmdlU3RhdGUoaW5mbywgVGFibGVTbG90U3RhdGUuRnJlZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBoZWFwIHVzZXMgdGhlIFtNYXJrLUNvbXBhY3QgQWxnb3JpdGhtXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYXJrLWNvbXBhY3RfYWxnb3JpdGhtKSB0byBzaGlmdFxuICAgKiByZWFjaGFibGUgbWVtb3J5IHRvIHRoZSBib3R0b20gb2YgdGhlIGhlYXAgYW5kIGZyZWVhYmxlXG4gICAqIG1lbW9yeSB0byB0aGUgdG9wIG9mIHRoZSBoZWFwLiBXaGVuIHdlIGhhdmUgc2hpZnRlZCBhbGxcbiAgICogdGhlIHJlYWNoYWJsZSBtZW1vcnkgdG8gdGhlIHRvcCBvZiB0aGUgaGVhcCwgd2UgbW92ZSB0aGVcbiAgICogb2Zmc2V0IHRvIHRoZSBuZXh0IGZyZWUgcG9zaXRpb24uXG4gICAqL1xuICBjb21wYWN0KCk6IHZvaWQge1xuICAgIGxldCBjb21wYWN0ZWRTaXplID0gMDtcbiAgICBsZXQgeyB0YWJsZSwgdGFibGU6IHsgbGVuZ3RoIH0sIGhlYXAgfSA9IHRoaXM7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8bGVuZ3RoOyBpKz1FTlRSWV9TSVpFKSB7XG4gICAgICBsZXQgb2Zmc2V0ID0gdGFibGVbaV07XG4gICAgICBsZXQgaW5mbyA9IHRhYmxlW2kgKyBJTkZPX09GRlNFVF07XG4gICAgICBsZXQgc2l6ZSA9IGluZm8gJiBTSVpFX01BU0s7XG4gICAgICBsZXQgc3RhdGUgPSBpbmZvICYgU1RBVEVfTUFTSyA+PiAzMDtcblxuICAgICAgaWYgKHN0YXRlID09PSBUYWJsZVNsb3RTdGF0ZS5QdXJnZWQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlID09PSBUYWJsZVNsb3RTdGF0ZS5GcmVlZCkge1xuICAgICAgICAvLyB0cmFuc2l0aW9uIHRvIFwiYWxyZWFkeSBmcmVlZFwiIGFrYSBcInB1cmdlZFwiXG4gICAgICAgIC8vIGEgZ29vZCBpbXByb3ZlbWVudCB3b3VsZCBiZSB0byByZXVzZVxuICAgICAgICAvLyB0aGVzZSBzbG90c1xuICAgICAgICB0YWJsZVtpICsgSU5GT19PRkZTRVRdID0gY2hhbmdlU3RhdGUoaW5mbywgVGFibGVTbG90U3RhdGUuUHVyZ2VkKTtcbiAgICAgICAgY29tcGFjdGVkU2l6ZSArPSBzaXplO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PT0gVGFibGVTbG90U3RhdGUuQWxsb2NhdGVkKSB7XG4gICAgICAgIGZvciAobGV0IGo9b2Zmc2V0OyBqPD1pK3NpemU7IGorKykge1xuICAgICAgICAgIGhlYXBbaiAtIGNvbXBhY3RlZFNpemVdID0gaGVhcFtqXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRhYmxlW2ldID0gb2Zmc2V0IC0gY29tcGFjdGVkU2l6ZTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPT09IFRhYmxlU2xvdFN0YXRlLlBvaW50ZXIpIHtcbiAgICAgICAgdGFibGVbaV0gPSBvZmZzZXQgLSBjb21wYWN0ZWRTaXplO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMub2Zmc2V0ID0gdGhpcy5vZmZzZXQgLSBjb21wYWN0ZWRTaXplO1xuICB9XG5cbiAgY2FwdHVyZSgpOiBTZXJpYWxpemVkSGVhcCB7XG4gICAgLy8gT25seSBjYWxsZWQgaW4gZWFnZXIgbW9kZVxuICAgIGxldCBidWZmZXIgPSBzbGljZSh0aGlzLmhlYXAsIDAsIHRoaXMub2Zmc2V0KTtcbiAgICByZXR1cm4ge1xuICAgICAgaGFuZGxlOiB0aGlzLmhhbmRsZSxcbiAgICAgIHRhYmxlOiB0aGlzLnRhYmxlLFxuICAgICAgYnVmZmVyOiBidWZmZXIgYXMgQXJyYXlCdWZmZXJcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBXcml0ZU9ubHlQcm9ncmFtIGltcGxlbWVudHMgQ29tcGlsZVRpbWVQcm9ncmFtIHtcbiAgW2tleTogbnVtYmVyXTogbmV2ZXI7XG5cbiAgcHJpdmF0ZSBfb3Bjb2RlOiBPcGNvZGU7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGNvbnN0YW50czogV3JpdGVPbmx5Q29uc3RhbnRzID0gbmV3IFdyaXRlT25seUNvbnN0YW50cygpLCBwdWJsaWMgaGVhcCA9IG5ldyBIZWFwKCkpIHtcbiAgICB0aGlzLl9vcGNvZGUgPSBuZXcgT3Bjb2RlKHRoaXMuaGVhcCk7XG4gIH1cblxuICBvcGNvZGUob2Zmc2V0OiBudW1iZXIpOiBPcGNvZGUge1xuICAgIHRoaXMuX29wY29kZS5vZmZzZXQgPSBvZmZzZXQ7XG4gICAgcmV0dXJuIHRoaXMuX29wY29kZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUnVudGltZVByb2dyYW08VGVtcGxhdGVNZXRhPiB7XG4gIFtrZXk6IG51bWJlcl06IG5ldmVyO1xuXG4gIHN0YXRpYyBoeWRyYXRlPFRlbXBsYXRlTWV0YT4ocmF3SGVhcDogU2VyaWFsaXplZEhlYXAsIHBvb2w6IENvbnN0YW50UG9vbCwgcmVzb2x2ZXI6IFJ1bnRpbWVSZXNvbHZlcjxUZW1wbGF0ZU1ldGE+KSB7XG4gICAgbGV0IGhlYXAgPSBuZXcgSGVhcChyYXdIZWFwKTtcbiAgICBsZXQgY29uc3RhbnRzID0gbmV3IFJ1bnRpbWVDb25zdGFudHMocmVzb2x2ZXIsIHBvb2wpO1xuXG4gICAgcmV0dXJuIG5ldyBSdW50aW1lUHJvZ3JhbShjb25zdGFudHMsIGhlYXApO1xuICB9XG5cbiAgcHJpdmF0ZSBfb3Bjb2RlOiBPcGNvZGU7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGNvbnN0YW50czogUnVudGltZUNvbnN0YW50czxUZW1wbGF0ZU1ldGE+LCBwdWJsaWMgaGVhcDogSGVhcCkge1xuICAgIHRoaXMuX29wY29kZSA9IG5ldyBPcGNvZGUodGhpcy5oZWFwKTtcbiAgfVxuXG4gIG9wY29kZShvZmZzZXQ6IG51bWJlcik6IE9wY29kZSB7XG4gICAgdGhpcy5fb3Bjb2RlLm9mZnNldCA9IG9mZnNldDtcbiAgICByZXR1cm4gdGhpcy5fb3Bjb2RlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQcm9ncmFtPFRlbXBsYXRlTWV0YT4gZXh0ZW5kcyBXcml0ZU9ubHlQcm9ncmFtIHtcbiAgcHVibGljIGNvbnN0YW50czogQ29uc3RhbnRzPFRlbXBsYXRlTWV0YT47XG59XG5cbmZ1bmN0aW9uIHNsaWNlKGFycjogVWludDE2QXJyYXkgfCBudW1iZXJbXSwgc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIpIHtcbiAgaWYgKGFyciBpbnN0YW5jZW9mIFVpbnQxNkFycmF5KSB7XG4gICAgaWYgKGFyci5zbGljZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gYXJyLnNsaWNlKHN0YXJ0LCBlbmQpLmJ1ZmZlcjtcbiAgICB9XG5cbiAgICBsZXQgcmV0ID0gbmV3IFVpbnQxNkFycmF5KGVuZCk7XG5cbiAgICBmb3IgKDsgc3RhcnQgPCBlbmQ7IHN0YXJ0KyspIHtcbiAgICAgIHJldFtzdGFydF0gID0gYXJyW3N0YXJ0XTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0LmJ1ZmZlcjtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuIl19

@@ -267,2 +267,2 @@ function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }

export { LazyConstants };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvQGdsaW1tZXIvcHJvZ3JhbS9saWIvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBRUEsSUFBTSxBQUFVLGFBQUcsQUFBRSxBQUFDO0FBRXRCLElBQU0sQUFBK0Isa0NBQUcsQUFBQyxBQUFDO0FBQzFDLElBQU0sQUFBcUIsd0JBQUcsQUFBTSxPQUFDLEFBQU0sT0FBQyxBQUFFLEFBQUMsQUFBQyxBQXFCaEQsQUFBTTs7SUFBTjs7QUFDRSxBQUFpQjs7QUFFUDthQUFPLFVBQWEsQUFBRSxBQUFDLEFBQ3ZCO2FBQU0sU0FBNkIsQ0FBQyxBQUFxQixBQUFDLEFBQUMsQUFDM0Q7YUFBTSxTQUFrQixBQUFFLEFBQUMsQUFDM0I7YUFBTyxVQUFhLEFBQUUsQUFBQyxBQUN2QjthQUFhLGdCQUFhLEFBQUUsQUFBQyxBQUM3QjthQUFRLFdBQWEsQUFBRSxBQUFDLEFBQ3hCO2FBQU0sU0FBYSxBQUFFLEFBQUMsQUFDdEI7YUFBUyxZQUFhLEFBQUUsQUFBQyxBQXNGckMsQUFBQztBQXBGQyxBQUFLOzt3REFBQyxBQUFhLFFBQ2pCO1lBQUksQUFBSyxRQUFHLEFBQUksS0FBQyxBQUFNLE9BQUMsQUFBTyxRQUFDLEFBQUssQUFBQyxBQUFDLEFBRXZDLEFBQUUsQUFBQztZQUFDLEFBQUssUUFBRyxDQUFDLEFBQUMsQUFBQyxHQUFDLEFBQUMsQUFDZixBQUFNO21CQUFDLEFBQUssQUFBQyxBQUNmLEFBQUM7QUFFRCxBQUFNO2VBQUMsQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFJLEtBQUMsQUFBSyxBQUFDLFVBQUcsQUFBQyxBQUFDLEFBQ3JDLEFBQUM7QUFFRCxBQUFROzs4REFBQyxBQUFnQixXQUN2QixBQUFNO2VBQUMsQUFBSSxLQUFDLEFBQVMsVUFBQyxBQUFJLEtBQUMsQUFBUSxBQUFDLGFBQUcsQUFBQyxBQUFDLEFBQzNDLEFB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QyxBQUFDLEFBQ2xFLEFBQUM7QUFFRCxBQUFNO2VBQUMsQUFBYSxBQUFDLEFBQ3ZCLEFBQUM7QUFFRCxBQUFlOzttRUFBSSxBQUFTLEdBQzFCLEFBQU07ZUFBQyxBQUFJLEtBQUMsQUFBYSxjQUFDLEFBQUMsQUFBTSxBQUFDLEFBQ3BDLEFBQUMsQUFDRjtBQUVELEFBQU07OztFQWxFb0MsQUFBa0IsQUFDMUQ7O0lBaUV5Qjs7Ozs7OzZFQUNqQjs7ZUFBTSxTQUFhLEFBQUUsQUFBQyxBQVNoQyxBQUFDOztBQVBDLEFBQVE7O3lEQUFJLEFBQWEsT0FDdkIsQUFBTTtlQUFDLEFBQUksS0FBQyxBQUFNLE9BQUMsQUFBSyxRQUFHLEFBQUMsQUFBTSxBQUFDLEFBQ3JDLEFBQUM7QUFFRCxBQUFLOzttREFBQyxBQUFhLFFBQ2pCLEFBQU07ZUFBQyxBQUFJLEtBQUMsQUFBTSxPQUFDLEFBQUksS0FBQyxBQUFLLEFBQUMsQUFBQyxBQUNqQyxBQUFDLEFBQ0Y7Ozs7RUFWRCxBQUFtQyxBQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wYXF1ZSwgU3ltYm9sVGFibGUsIFJ1bnRpbWVSZXNvbHZlciwgQ29tcGlsZVRpbWVDb25zdGFudHMgfSBmcm9tIFwiQGdsaW1tZXIvaW50ZXJmYWNlc1wiO1xuXG5jb25zdCBVTlJFU09MVkVEID0ge307XG5cbmNvbnN0IFdFTExfS05PV05fRU1QVFlfQVJSQVlfUE9TSVRJT04gPSAwO1xuY29uc3QgV0VMTF9LTk9XX0VNUFRZX0FSUkFZID0gT2JqZWN0LmZyZWV6ZShbXSk7XG5leHBvcnQgdHlwZSBFTVBUWV9BUlJBWSA9IEFycmF5PFJlYWRvbmx5QXJyYXk8bmV2ZXI+PjtcblxuZXhwb3J0IGludGVyZmFjZSBDb25zdGFudFBvb2wge1xuICBzdHJpbmdzOiBzdHJpbmdbXTtcbiAgYXJyYXlzOiBudW1iZXJbXVtdIHwgRU1QVFlfQVJSQVk7XG4gIHRhYmxlczogU3ltYm9sVGFibGVbXTtcbiAgaGFuZGxlczogbnVtYmVyW107XG4gIHNlcmlhbGl6YWJsZXM6IE9wYXF1ZVtdO1xuICBmbG9hdHM6IG51bWJlcltdO1xuICBuZWdhdGl2ZXM6IG51bWJlcltdO1xufVxuXG5leHBvcnQgY29uc3QgZW51bSBQcmltaXRpdmVUeXBlIHtcbiAgTlVNQkVSICAgICAgICAgID0gMGIwMDAsXG4gIEZMT0FUICAgICAgICAgICA9IDBiMDAxLFxuICBTVFJJTkcgICAgICAgICAgPSAwYjAxMCxcbiAgQk9PTEVBTl9PUl9WT0lEID0gMGIwMTEsXG4gIE5FR0FUSVZFICAgICAgICA9IDBiMTAwXG59XG5cbmV4cG9ydCBjbGFzcyBXcml0ZU9ubHlDb25zdGFudHMgaW1wbGVtZW50cyBDb21waWxlVGltZUNvbnN0YW50cyB7XG4gIC8vIGAwYCBtZWFucyBOVUxMXG5cbiAgcHJvdGVjdGVkIHN0cmluZ3M6IHN0cmluZ1tdID0gW107XG4gIHByb3RlY3RlZCBhcnJheXM6IG51bWJlcltdW10gfCBFTVBUWV9BUlJBWSA9IFtXRUxMX0tOT1dfRU1QVFlfQVJSQVldO1xuICBwcm90ZWN0ZWQgdGFibGVzOiBTeW1ib2xUYWJsZVtdID0gW107XG4gIHByb3RlY3RlZCBoYW5kbGVzOiBudW1iZXJbXSA9IFtdO1xuICBwcm90ZWN0ZWQgc2VyaWFsaXphYmxlczogT3BhcXVlW10gPSBbXTtcbiAgcHJvdGVjdGVkIHJlc29sdmVkOiBPcGFxdWVbXSA9IFtdO1xuICBwcm90ZWN0ZWQgZmxvYXRzOiBudW1iZXJbXSA9IFtdO1xuICBwcm90ZWN0ZWQgbmVnYXRpdmVzOiBudW1iZXJbXSA9IFtdO1xuXG4gIGZsb2F0KGZsb2F0OiBudW1iZXIpIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLmZsb2F0cy5pbmRleE9mKGZsb2F0KTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZmxvYXRzLnB1c2goZmxvYXQpIC0gMTtcbiAgfVxuXG4gIG5lZ2F0aXZlKG5lZ2F0aXZlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGl2ZXMucHVzaChuZWdhdGl2ZSkgLSAxO1xuICB9XG5cbiAgc3RyaW5nKHZhbHVlOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGxldCBpbmRleCA9IHRoaXMuc3RyaW5ncy5pbmRleE9mKHZhbHVlKTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaW5ncy5wdXNoKHZhbHVlKSAtIDE7XG4gIH1cblxuICBzdHJpbmdBcnJheShzdHJpbmdzOiBzdHJpbmdbXSk6IG51bWJlciB7XG4gICAgbGV0IF9zdHJpbmdzOiBudW1iZXJbXSA9IG5ldyBBcnJheShzdHJpbmdzLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0cmluZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIF9zdHJpbmdzW2ldID0gdGhpcy5zdHJpbmcoc3RyaW5nc1tpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXJyYXkoX3N0cmluZ3MpO1xuICB9XG5cbiAgYXJyYXkodmFsdWVzOiBudW1iZXJbXSk6IG51bWJlciB7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBXRUxMX0tOT1dOX0VNUFRZX0FSUkFZX1BPU0lUSU9OO1xuICAgIH1cblxuICAgIGxldCBpbmRleCA9ICh0aGlzLmFycmF5cyBhcyBudW1iZXJbXVtdKS5pbmRleE9mKHZhbHVlcyk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIHJldHVybiAodGhpcy5hcnJheXMgYXMgbnVtYmVyW11bXSkucHVzaCh2YWx1ZXMpIC0gMTtcbiAgfVxuXG4gIHRhYmxlKHQ6IFN5bWJvbFRhYmxlKTogbnVtYmVyIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLnRhYmxlcy5pbmRleE9mKHQpO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50YWJsZXMucHVzaCh0KSAtIDE7XG4gIH1cblxuICBoYW5kbGUoaGFuZGxlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHRoaXMucmVzb2x2ZWQucHVzaChVTlJFU09MVkVEKTtcbiAgICByZXR1cm4gdGhpcy5oYW5kbGVzLnB1c2goaGFuZGxlKTtcbiAgfVxuXG4gIHNlcmlhbGl6YWJsZSh2YWx1ZTogT3BhcXVlKTogbnVtYmVyIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLnNlcmlhbGl6YWJsZXMuaW5kZXhPZih2YWx1ZSk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6YWJsZXMucHVzaCh2YWx1ZSkgLSAxO1xuICB9XG5cbiAgdG9Qb29sKCk6IENvbnN0YW50UG9vbCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0cmluZ3M6IHRoaXMuc3RyaW5ncyxcbiAgICAgIGFycmF5czogdGhpcy5hcnJheXMsXG4gICAgICB0YWJsZXM6IHRoaXMudGFibGVzLFxuICAgICAgaGFuZGxlczogdGhpcy5oYW5kbGVzLFxuICAgICAgc2VyaWFsaXphYmxlczogdGhpcy5zZXJpYWxpemFibGVzLFxuICAgICAgZmxvYXRzOiB0aGlzLmZsb2F0cyxcbiAgICAgIG5lZ2F0aXZlczogdGhpcy5uZWdhdGl2ZXNcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSdW50aW1lQ29uc3RhbnRzPFNwZWNpZmllcj4ge1xuICBwcm90ZWN0ZWQgc3RyaW5nczogc3RyaW5nW107XG4gIHByb3RlY3RlZCBhcnJheXM6IG51bWJlcltdW10gfCBFTVBUWV9BUlJBWTtcbiAgcHJvdGVjdGVkIHRhYmxlczogU3ltYm9sVGFibGVbXTtcbiAgcHJvdGVjdGVkIGhhbmRsZXM6IG51bWJlcltdO1xuICBwcm90ZWN0ZWQgc2VyaWFsaXphYmxlczogT3BhcXVlW107XG4gIHByb3RlY3RlZCByZXNvbHZlZDogT3BhcXVlW107XG4gIHByb3RlY3RlZCBmbG9hdHM6IG51bWJlcltdO1xuICBwcm90ZWN0ZWQgbmVnYXRpdmVzOiBudW1iZXJbXTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVzb2x2ZXI6IFJ1bnRpbWVSZXNvbHZlcjxTcGVjaWZpZXI+LCBwb29sOiBDb25zdGFudFBvb2wpIHtcbiAgICB0aGlzLnN0cmluZ3MgPSBwb29sLnN0cmluZ3M7XG4gICAgdGhpcy5hcnJheXMgPSBwb29sLmFycmF5cztcbiAgICB0aGlzLnRhYmxlcyA9IHBvb2wudGFibGVzO1xuICAgIHRoaXMuaGFuZGxlcyA9IHBvb2wuaGFuZGxlcztcbiAgICB0aGlzLnNlcmlhbGl6YWJsZXMgPSBwb29sLnNlcmlhbGl6YWJsZXM7XG4gICAgdGhpcy5mbG9hdHMgPSBwb29sLmZsb2F0cztcbiAgICB0aGlzLm5lZ2F0aXZlcyA9IHBvb2wubmVnYXRpdmVzO1xuICAgIHRoaXMucmVzb2x2ZWQgPSB0aGlzLmhhbmRsZXMubWFwKCgpID0+IFVOUkVTT0xWRUQpO1xuICB9XG5cbiAgLy8gYDBgIG1lYW5zIE5VTExcblxuICBnZXRGbG9hdCh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5mbG9hdHNbdmFsdWVdO1xuICB9XG5cbiAgZ2V0TmVnYXRpdmUodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRpdmVzW3ZhbHVlXTtcbiAgfVxuXG4gIGdldFN0cmluZyh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmdzW3ZhbHVlXTtcbiAgfVxuXG4gIGdldFN0cmluZ0FycmF5KHZhbHVlOiBudW1iZXIpOiBzdHJpbmdbXSB7XG4gICAgbGV0IG5hbWVzID0gdGhpcy5nZXRBcnJheSh2YWx1ZSk7XG4gICAgbGV0IF9uYW1lczogc3RyaW5nW10gPSBuZXcgQXJyYXkobmFtZXMubGVuZ3RoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBuID0gbmFtZXNbaV07XG4gICAgICBfbmFtZXNbaV0gPSB0aGlzLmdldFN0cmluZyhuKTtcbiAgICB9XG5cbiAgICByZXR1cm4gX25hbWVzO1xuICB9XG5cbiAgZ2V0QXJyYXkodmFsdWU6IG51bWJlcik6IG51bWJlcltdIHtcbiAgICByZXR1cm4gKHRoaXMuYXJyYXlzIGFzIG51bWJlcltdW10pW3ZhbHVlXTtcbiAgfVxuXG4gIGdldFN5bWJvbFRhYmxlPFQgZXh0ZW5kcyBTeW1ib2xUYWJsZT4odmFsdWU6IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnRhYmxlc1t2YWx1ZV0gYXMgVDtcbiAgfVxuXG4gIHJlc29sdmVIYW5kbGU8VD4oczogbnVtYmVyKTogVCB7XG4gICAgbGV0IGluZGV4ID0gcyAtIDE7XG4gICAgbGV0IHJlc29sdmVkID0gdGhpcy5yZXNvbHZlZFtpbmRleF07XG5cbiAgICBpZiAocmVzb2x2ZWQgPT09IFVOUkVTT0xWRUQpIHtcbiAgICAgIGxldCBoYW5kbGUgPSB0aGlzLmhhbmRsZXNbaW5kZXhdO1xuICAgICAgcmVzb2x2ZWQgPSB0aGlzLnJlc29sdmVkW2luZGV4XSA9IHRoaXMucmVzb2x2ZXIucmVzb2x2ZShoYW5kbGUpO1xuICAgIH1cblxuICAgIHJldHVybiByZXNvbHZlZCBhcyBUO1xuICB9XG5cbiAgZ2V0U2VyaWFsaXphYmxlPFQ+KHM6IG51bWJlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6YWJsZXNbc10gYXMgVDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29uc3RhbnRzPFNwZWNpZmllcj4gZXh0ZW5kcyBXcml0ZU9ubHlDb25zdGFudHMge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVzb2x2ZXI6IFJ1bnRpbWVSZXNvbHZlcjxTcGVjaWZpZXI+LCBwb29sPzogQ29uc3RhbnRQb29sKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGlmIChwb29sKSB7XG4gICAgICB0aGlzLnN0cmluZ3MgPSBwb29sLnN0cmluZ3M7XG4gICAgICB0aGlzLmFycmF5cyA9IHBvb2wuYXJyYXlzO1xuICAgICAgdGhpcy50YWJsZXMgPSBwb29sLnRhYmxlcztcbiAgICAgIHRoaXMuaGFuZGxlcyA9IHBvb2wuaGFuZGxlcztcbiAgICAgIHRoaXMuc2VyaWFsaXphYmxlcyA9IHBvb2wuc2VyaWFsaXphYmxlcztcbiAgICAgIHRoaXMuZmxvYXRzID0gcG9vbC5mbG9hdHM7XG4gICAgICB0aGlzLm5lZ2F0aXZlcyA9IHBvb2wubmVnYXRpdmVzO1xuICAgICAgdGhpcy5yZXNvbHZlZCA9IHRoaXMuaGFuZGxlcy5tYXAoKCkgPT4gVU5SRVNPTFZFRCk7XG4gICAgfVxuICB9XG5cbiAgLy8gYDBgIG1lYW5zIE5VTExcbiAgZ2V0RmxvYXQodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZmxvYXRzW3ZhbHVlXTtcbiAgfVxuXG4gIGdldE5lZ2F0aXZlKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm5lZ2F0aXZlc1t2YWx1ZV07XG4gIH1cblxuICBnZXRTdHJpbmcodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3RyaW5nc1t2YWx1ZV07XG4gIH1cblxuICBnZXRTdHJpbmdBcnJheSh2YWx1ZTogbnVtYmVyKTogc3RyaW5nW10ge1xuICAgIGxldCBuYW1lcyA9IHRoaXMuZ2V0QXJyYXkodmFsdWUpO1xuICAgIGxldCBfbmFtZXM6IHN0cmluZ1tdID0gbmV3IEFycmF5KG5hbWVzLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgbiA9IG5hbWVzW2ldO1xuICAgICAgX25hbWVzW2ldID0gdGhpcy5nZXRTdHJpbmcobik7XG4gICAgfVxuXG4gICAgcmV0dXJuIF9uYW1lcztcbiAgfVxuXG4gIGdldEFycmF5KHZhbHVlOiBudW1iZXIpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuICh0aGlzLmFycmF5cyBhcyBudW1iZXJbXVtdKVt2YWx1ZV07XG4gIH1cblxuICBnZXRTeW1ib2xUYWJsZTxUIGV4dGVuZHMgU3ltYm9sVGFibGU+KHZhbHVlOiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZXNbdmFsdWVdIGFzIFQ7XG4gIH1cblxuICByZXNvbHZlSGFuZGxlPFQ+KHM6IG51bWJlcik6IFQge1xuICAgIGxldCBpbmRleCA9IHMgLSAxO1xuICAgIGxldCByZXNvbHZlZCA9IHRoaXMucmVzb2x2ZWRbaW5kZXhdO1xuXG4gICAgaWYgKHJlc29sdmVkID09PSBVTlJFU09MVkVEKSB7XG4gICAgICBsZXQgaGFuZGxlID0gdGhpcy5oYW5kbGVzW2luZGV4XTtcbiAgICAgIHJlc29sdmVkID0gdGhpcy5yZXNvbHZlZFtpbmRleF0gPSB0aGlzLnJlc29sdmVyLnJlc29sdmUoaGFuZGxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzb2x2ZWQgYXMgVDtcbiAgfVxuXG4gIGdldFNlcmlhbGl6YWJsZTxUPihzOiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zZXJpYWxpemFibGVzW3NdIGFzIFQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIExhenlDb25zdGFudHMgZXh0ZW5kcyBDb25zdGFudHM8T3BhcXVlPiB7XG4gIHByaXZhdGUgb3RoZXJzOiBPcGFxdWVbXSA9IFtdO1xuXG4gIGdldE90aGVyPFQ+KHZhbHVlOiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5vdGhlcnNbdmFsdWUgLSAxXSBhcyBUO1xuICB9XG5cbiAgb3RoZXIob3RoZXI6IE9wYXF1ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMub3RoZXJzLnB1c2gob3RoZXIpO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvQGdsaW1tZXIvcHJvZ3JhbS9saWIvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBRUEsSUFBTSxBQUFVLGFBQUcsQUFBRSxBQUFDO0FBRXRCLElBQU0sQUFBK0Isa0NBQUcsQUFBQyxBQUFDO0FBQzFDLElBQU0sQUFBcUIsd0JBQUcsQUFBTSxPQUFDLEFBQU0sT0FBQyxBQUFFLEFBQUMsQUFBQyxBQXFCaEQsQUFBTTs7SUFBTjs7QUFDRSxBQUFpQjs7QUFFUDthQUFPLFVBQWEsQUFBRSxBQUFDLEFBQ3ZCO2FBQU0sU0FBNkIsQ0FBQyxBQUFxQixBQUFDLEFBQUMsQUFDM0Q7YUFBTSxTQUFrQixBQUFFLEFBQUMsQUFDM0I7YUFBTyxVQUFhLEFBQUUsQUFBQyxBQUN2QjthQUFhLGdCQUFhLEFBQUUsQUFBQyxBQUM3QjthQUFRLFdBQWEsQUFBRSxBQUFDLEFBQ3hCO2FBQU0sU0FBYSxBQUFFLEFBQUMsQUFDdEI7YUFBUyxZQUFhLEFBQUUsQUFBQyxBQXNGckMsQUFBQztBQXBGQyxBQUFLOzt3REFBQyxBQUFhLFFBQ2pCO1lBQUksQUFBSyxRQUFHLEFBQUksS0FBQyxBQUFNLE9BQUMsQUFBTyxRQUFDLEFBQUssQUFBQyxBQUFDLEFBRXZDLEFBQUUsQUFBQztZQUFDLEFBQUssUUFBRyxDQUFDLEFBQUMsQUFBQyxHQUFDLEFBQUMsQUFDZixBQUFNO21CQUFDLEFBQUssQUFBQyxBQUNmLEFBQUM7QUFFRCxBQUFNO2VBQUMsQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFJLEtBQUMsQUFBSyxBQUFDLFVBQUcsQUFBQyxBQUFDLEFBQ3JDLEFBQUM7QUFFRCxBQUFROzs4REFBQyxBQUFnQixXQUN2QixBQUFNO2VBQUMsQUFBSSxLQUFDLEFBQVMsVUFBQyxBQUFJLEtBQUMsQUFBUSxBQUFDLGFBQUcsQUFBQyxBQUFDLEFBQzNDLEFB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QUMsQUFBQyxBQUNsRSxBQUFDO0FBRUQsQUFBTTtlQUFDLEFBQWEsQUFBQyxBQUN2QixBQUFDO0FBRUQsQUFBZTs7bUVBQUksQUFBUyxHQUMxQixBQUFNO2VBQUMsQUFBSSxLQUFDLEFBQWEsY0FBQyxBQUFDLEFBQU0sQUFBQyxBQUNwQyxBQUFDLEFBQ0Y7QUFFRCxBQUFNOzs7RUFsRXVDLEFBQWtCLEFBQzdEOztJQWlFeUI7Ozs7Ozs2RUFDakI7O2VBQU0sU0FBYSxBQUFFLEFBQUMsQUFTaEMsQUFBQzs7QUFQQyxBQUFROzt5REFBSSxBQUFhLE9BQ3ZCLEFBQU07ZUFBQyxBQUFJLEtBQUMsQUFBTSxPQUFDLEFBQUssUUFBRyxBQUFDLEFBQU0sQUFBQyxBQUNyQyxBQUFDO0FBRUQsQUFBSzs7bURBQUMsQUFBYSxRQUNqQixBQUFNO2VBQUMsQUFBSSxLQUFDLEFBQU0sT0FBQyxBQUFJLEtBQUMsQUFBSyxBQUFDLEFBQUMsQUFDakMsQUFBQyxBQUNGOzs7O0VBVkQsQUFBbUMsQUFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcGFxdWUsIFN5bWJvbFRhYmxlLCBSdW50aW1lUmVzb2x2ZXIsIENvbXBpbGVUaW1lQ29uc3RhbnRzIH0gZnJvbSBcIkBnbGltbWVyL2ludGVyZmFjZXNcIjtcblxuY29uc3QgVU5SRVNPTFZFRCA9IHt9O1xuXG5jb25zdCBXRUxMX0tOT1dOX0VNUFRZX0FSUkFZX1BPU0lUSU9OID0gMDtcbmNvbnN0IFdFTExfS05PV19FTVBUWV9BUlJBWSA9IE9iamVjdC5mcmVlemUoW10pO1xuZXhwb3J0IHR5cGUgRU1QVFlfQVJSQVkgPSBBcnJheTxSZWFkb25seUFycmF5PG5ldmVyPj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3RhbnRQb29sIHtcbiAgc3RyaW5nczogc3RyaW5nW107XG4gIGFycmF5czogbnVtYmVyW11bXSB8IEVNUFRZX0FSUkFZO1xuICB0YWJsZXM6IFN5bWJvbFRhYmxlW107XG4gIGhhbmRsZXM6IG51bWJlcltdO1xuICBzZXJpYWxpemFibGVzOiBPcGFxdWVbXTtcbiAgZmxvYXRzOiBudW1iZXJbXTtcbiAgbmVnYXRpdmVzOiBudW1iZXJbXTtcbn1cblxuZXhwb3J0IGNvbnN0IGVudW0gUHJpbWl0aXZlVHlwZSB7XG4gIE5VTUJFUiAgICAgICAgICA9IDBiMDAwLFxuICBGTE9BVCAgICAgICAgICAgPSAwYjAwMSxcbiAgU1RSSU5HICAgICAgICAgID0gMGIwMTAsXG4gIEJPT0xFQU5fT1JfVk9JRCA9IDBiMDExLFxuICBORUdBVElWRSAgICAgICAgPSAwYjEwMFxufVxuXG5leHBvcnQgY2xhc3MgV3JpdGVPbmx5Q29uc3RhbnRzIGltcGxlbWVudHMgQ29tcGlsZVRpbWVDb25zdGFudHMge1xuICAvLyBgMGAgbWVhbnMgTlVMTFxuXG4gIHByb3RlY3RlZCBzdHJpbmdzOiBzdHJpbmdbXSA9IFtdO1xuICBwcm90ZWN0ZWQgYXJyYXlzOiBudW1iZXJbXVtdIHwgRU1QVFlfQVJSQVkgPSBbV0VMTF9LTk9XX0VNUFRZX0FSUkFZXTtcbiAgcHJvdGVjdGVkIHRhYmxlczogU3ltYm9sVGFibGVbXSA9IFtdO1xuICBwcm90ZWN0ZWQgaGFuZGxlczogbnVtYmVyW10gPSBbXTtcbiAgcHJvdGVjdGVkIHNlcmlhbGl6YWJsZXM6IE9wYXF1ZVtdID0gW107XG4gIHByb3RlY3RlZCByZXNvbHZlZDogT3BhcXVlW10gPSBbXTtcbiAgcHJvdGVjdGVkIGZsb2F0czogbnVtYmVyW10gPSBbXTtcbiAgcHJvdGVjdGVkIG5lZ2F0aXZlczogbnVtYmVyW10gPSBbXTtcblxuICBmbG9hdChmbG9hdDogbnVtYmVyKSB7XG4gICAgbGV0IGluZGV4ID0gdGhpcy5mbG9hdHMuaW5kZXhPZihmbG9hdCk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmZsb2F0cy5wdXNoKGZsb2F0KSAtIDE7XG4gIH1cblxuICBuZWdhdGl2ZShuZWdhdGl2ZTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRpdmVzLnB1c2gobmVnYXRpdmUpIC0gMTtcbiAgfVxuXG4gIHN0cmluZyh2YWx1ZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLnN0cmluZ3MuaW5kZXhPZih2YWx1ZSk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmluZ3MucHVzaCh2YWx1ZSkgLSAxO1xuICB9XG5cbiAgc3RyaW5nQXJyYXkoc3RyaW5nczogc3RyaW5nW10pOiBudW1iZXIge1xuICAgIGxldCBfc3RyaW5nczogbnVtYmVyW10gPSBuZXcgQXJyYXkoc3RyaW5ncy5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHJpbmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBfc3RyaW5nc1tpXSA9IHRoaXMuc3RyaW5nKHN0cmluZ3NbaV0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFycmF5KF9zdHJpbmdzKTtcbiAgfVxuXG4gIGFycmF5KHZhbHVlczogbnVtYmVyW10pOiBudW1iZXIge1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gV0VMTF9LTk9XTl9FTVBUWV9BUlJBWV9QT1NJVElPTjtcbiAgICB9XG5cbiAgICBsZXQgaW5kZXggPSAodGhpcy5hcnJheXMgYXMgbnVtYmVyW11bXSkuaW5kZXhPZih2YWx1ZXMpO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICByZXR1cm4gKHRoaXMuYXJyYXlzIGFzIG51bWJlcltdW10pLnB1c2godmFsdWVzKSAtIDE7XG4gIH1cblxuICB0YWJsZSh0OiBTeW1ib2xUYWJsZSk6IG51bWJlciB7XG4gICAgbGV0IGluZGV4ID0gdGhpcy50YWJsZXMuaW5kZXhPZih0KTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudGFibGVzLnB1c2godCkgLSAxO1xuICB9XG5cbiAgaGFuZGxlKGhhbmRsZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICB0aGlzLnJlc29sdmVkLnB1c2goVU5SRVNPTFZFRCk7XG4gICAgcmV0dXJuIHRoaXMuaGFuZGxlcy5wdXNoKGhhbmRsZSk7XG4gIH1cblxuICBzZXJpYWxpemFibGUodmFsdWU6IE9wYXF1ZSk6IG51bWJlciB7XG4gICAgbGV0IGluZGV4ID0gdGhpcy5zZXJpYWxpemFibGVzLmluZGV4T2YodmFsdWUpO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zZXJpYWxpemFibGVzLnB1c2godmFsdWUpIC0gMTtcbiAgfVxuXG4gIHRvUG9vbCgpOiBDb25zdGFudFBvb2wge1xuICAgIHJldHVybiB7XG4gICAgICBzdHJpbmdzOiB0aGlzLnN0cmluZ3MsXG4gICAgICBhcnJheXM6IHRoaXMuYXJyYXlzLFxuICAgICAgdGFibGVzOiB0aGlzLnRhYmxlcyxcbiAgICAgIGhhbmRsZXM6IHRoaXMuaGFuZGxlcyxcbiAgICAgIHNlcmlhbGl6YWJsZXM6IHRoaXMuc2VyaWFsaXphYmxlcyxcbiAgICAgIGZsb2F0czogdGhpcy5mbG9hdHMsXG4gICAgICBuZWdhdGl2ZXM6IHRoaXMubmVnYXRpdmVzXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUnVudGltZUNvbnN0YW50czxUZW1wbGF0ZU1ldGE+IHtcbiAgcHJvdGVjdGVkIHN0cmluZ3M6IHN0cmluZ1tdO1xuICBwcm90ZWN0ZWQgYXJyYXlzOiBudW1iZXJbXVtdIHwgRU1QVFlfQVJSQVk7XG4gIHByb3RlY3RlZCB0YWJsZXM6IFN5bWJvbFRhYmxlW107XG4gIHByb3RlY3RlZCBoYW5kbGVzOiBudW1iZXJbXTtcbiAgcHJvdGVjdGVkIHNlcmlhbGl6YWJsZXM6IE9wYXF1ZVtdO1xuICBwcm90ZWN0ZWQgcmVzb2x2ZWQ6IE9wYXF1ZVtdO1xuICBwcm90ZWN0ZWQgZmxvYXRzOiBudW1iZXJbXTtcbiAgcHJvdGVjdGVkIG5lZ2F0aXZlczogbnVtYmVyW107XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlc29sdmVyOiBSdW50aW1lUmVzb2x2ZXI8VGVtcGxhdGVNZXRhPiwgcG9vbDogQ29uc3RhbnRQb29sKSB7XG4gICAgdGhpcy5zdHJpbmdzID0gcG9vbC5zdHJpbmdzO1xuICAgIHRoaXMuYXJyYXlzID0gcG9vbC5hcnJheXM7XG4gICAgdGhpcy50YWJsZXMgPSBwb29sLnRhYmxlcztcbiAgICB0aGlzLmhhbmRsZXMgPSBwb29sLmhhbmRsZXM7XG4gICAgdGhpcy5zZXJpYWxpemFibGVzID0gcG9vbC5zZXJpYWxpemFibGVzO1xuICAgIHRoaXMuZmxvYXRzID0gcG9vbC5mbG9hdHM7XG4gICAgdGhpcy5uZWdhdGl2ZXMgPSBwb29sLm5lZ2F0aXZlcztcbiAgICB0aGlzLnJlc29sdmVkID0gdGhpcy5oYW5kbGVzLm1hcCgoKSA9PiBVTlJFU09MVkVEKTtcbiAgfVxuXG4gIC8vIGAwYCBtZWFucyBOVUxMXG5cbiAgZ2V0RmxvYXQodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZmxvYXRzW3ZhbHVlXTtcbiAgfVxuXG4gIGdldE5lZ2F0aXZlKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm5lZ2F0aXZlc1t2YWx1ZV07XG4gIH1cblxuICBnZXRTdHJpbmcodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3RyaW5nc1t2YWx1ZV07XG4gIH1cblxuICBnZXRTdHJpbmdBcnJheSh2YWx1ZTogbnVtYmVyKTogc3RyaW5nW10ge1xuICAgIGxldCBuYW1lcyA9IHRoaXMuZ2V0QXJyYXkodmFsdWUpO1xuICAgIGxldCBfbmFtZXM6IHN0cmluZ1tdID0gbmV3IEFycmF5KG5hbWVzLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgbiA9IG5hbWVzW2ldO1xuICAgICAgX25hbWVzW2ldID0gdGhpcy5nZXRTdHJpbmcobik7XG4gICAgfVxuXG4gICAgcmV0dXJuIF9uYW1lcztcbiAgfVxuXG4gIGdldEFycmF5KHZhbHVlOiBudW1iZXIpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuICh0aGlzLmFycmF5cyBhcyBudW1iZXJbXVtdKVt2YWx1ZV07XG4gIH1cblxuICBnZXRTeW1ib2xUYWJsZTxUIGV4dGVuZHMgU3ltYm9sVGFibGU+KHZhbHVlOiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZXNbdmFsdWVdIGFzIFQ7XG4gIH1cblxuICByZXNvbHZlSGFuZGxlPFQ+KHM6IG51bWJlcik6IFQge1xuICAgIGxldCBpbmRleCA9IHMgLSAxO1xuICAgIGxldCByZXNvbHZlZCA9IHRoaXMucmVzb2x2ZWRbaW5kZXhdO1xuXG4gICAgaWYgKHJlc29sdmVkID09PSBVTlJFU09MVkVEKSB7XG4gICAgICBsZXQgaGFuZGxlID0gdGhpcy5oYW5kbGVzW2luZGV4XTtcbiAgICAgIHJlc29sdmVkID0gdGhpcy5yZXNvbHZlZFtpbmRleF0gPSB0aGlzLnJlc29sdmVyLnJlc29sdmUoaGFuZGxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzb2x2ZWQgYXMgVDtcbiAgfVxuXG4gIGdldFNlcmlhbGl6YWJsZTxUPihzOiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zZXJpYWxpemFibGVzW3NdIGFzIFQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbnN0YW50czxUZW1wbGF0ZU1ldGE+IGV4dGVuZHMgV3JpdGVPbmx5Q29uc3RhbnRzIHtcbiAgY29uc3RydWN0b3IocHVibGljIHJlc29sdmVyOiBSdW50aW1lUmVzb2x2ZXI8VGVtcGxhdGVNZXRhPiwgcG9vbD86IENvbnN0YW50UG9vbCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBpZiAocG9vbCkge1xuICAgICAgdGhpcy5zdHJpbmdzID0gcG9vbC5zdHJpbmdzO1xuICAgICAgdGhpcy5hcnJheXMgPSBwb29sLmFycmF5cztcbiAgICAgIHRoaXMudGFibGVzID0gcG9vbC50YWJsZXM7XG4gICAgICB0aGlzLmhhbmRsZXMgPSBwb29sLmhhbmRsZXM7XG4gICAgICB0aGlzLnNlcmlhbGl6YWJsZXMgPSBwb29sLnNlcmlhbGl6YWJsZXM7XG4gICAgICB0aGlzLmZsb2F0cyA9IHBvb2wuZmxvYXRzO1xuICAgICAgdGhpcy5uZWdhdGl2ZXMgPSBwb29sLm5lZ2F0aXZlcztcbiAgICAgIHRoaXMucmVzb2x2ZWQgPSB0aGlzLmhhbmRsZXMubWFwKCgpID0+IFVOUkVTT0xWRUQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGAwYCBtZWFucyBOVUxMXG4gIGdldEZsb2F0KHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmZsb2F0c1t2YWx1ZV07XG4gIH1cblxuICBnZXROZWdhdGl2ZSh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGl2ZXNbdmFsdWVdO1xuICB9XG5cbiAgZ2V0U3RyaW5nKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnN0cmluZ3NbdmFsdWVdO1xuICB9XG5cbiAgZ2V0U3RyaW5nQXJyYXkodmFsdWU6IG51bWJlcik6IHN0cmluZ1tdIHtcbiAgICBsZXQgbmFtZXMgPSB0aGlzLmdldEFycmF5KHZhbHVlKTtcbiAgICBsZXQgX25hbWVzOiBzdHJpbmdbXSA9IG5ldyBBcnJheShuYW1lcy5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IG4gPSBuYW1lc1tpXTtcbiAgICAgIF9uYW1lc1tpXSA9IHRoaXMuZ2V0U3RyaW5nKG4pO1xuICAgIH1cblxuICAgIHJldHVybiBfbmFtZXM7XG4gIH1cblxuICBnZXRBcnJheSh2YWx1ZTogbnVtYmVyKTogbnVtYmVyW10ge1xuICAgIHJldHVybiAodGhpcy5hcnJheXMgYXMgbnVtYmVyW11bXSlbdmFsdWVdO1xuICB9XG5cbiAgZ2V0U3ltYm9sVGFibGU8VCBleHRlbmRzIFN5bWJvbFRhYmxlPih2YWx1ZTogbnVtYmVyKTogVCB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVzW3ZhbHVlXSBhcyBUO1xuICB9XG5cbiAgcmVzb2x2ZUhhbmRsZTxUPihzOiBudW1iZXIpOiBUIHtcbiAgICBsZXQgaW5kZXggPSBzIC0gMTtcbiAgICBsZXQgcmVzb2x2ZWQgPSB0aGlzLnJlc29sdmVkW2luZGV4XTtcblxuICAgIGlmIChyZXNvbHZlZCA9PT0gVU5SRVNPTFZFRCkge1xuICAgICAgbGV0IGhhbmRsZSA9IHRoaXMuaGFuZGxlc1tpbmRleF07XG4gICAgICByZXNvbHZlZCA9IHRoaXMucmVzb2x2ZWRbaW5kZXhdID0gdGhpcy5yZXNvbHZlci5yZXNvbHZlKGhhbmRsZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc29sdmVkIGFzIFQ7XG4gIH1cblxuICBnZXRTZXJpYWxpemFibGU8VD4oczogbnVtYmVyKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuc2VyaWFsaXphYmxlc1tzXSBhcyBUO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMYXp5Q29uc3RhbnRzIGV4dGVuZHMgQ29uc3RhbnRzPE9wYXF1ZT4ge1xuICBwcml2YXRlIG90aGVyczogT3BhcXVlW10gPSBbXTtcblxuICBnZXRPdGhlcjxUPih2YWx1ZTogbnVtYmVyKTogVCB7XG4gICAgcmV0dXJuIHRoaXMub3RoZXJzW3ZhbHVlIC0gMV0gYXMgVDtcbiAgfVxuXG4gIG90aGVyKG90aGVyOiBPcGFxdWUpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm90aGVycy5wdXNoKG90aGVyKTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9wcm9ncmFtL2xpYi9pbnRlcm5hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVW5pcXVlLCBSdW50aW1lUmVzb2x2ZXIgYXMgSVJlc29sdmVyIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCB0eXBlIFNwZWNpZmllciA9IFVuaXF1ZTwnU3BlY2lmaWVyJz47XG5leHBvcnQgdHlwZSBSZWZlcnJlciA9IFVuaXF1ZTwnUmVmZXJyZXInPjtcbmV4cG9ydCB0eXBlIFJlc29sdmVyID0gSVJlc29sdmVyPFNwZWNpZmllcj47XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9wcm9ncmFtL2xpYi9pbnRlcm5hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVW5pcXVlLCBSdW50aW1lUmVzb2x2ZXIgYXMgSVJlc29sdmVyIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCB0eXBlIFRlbXBsYXRlTWV0YSA9IFVuaXF1ZTwnVGVtcGxhdGVNZXRhJz47XG5leHBvcnQgdHlwZSBSZWZlcnJlciA9IFVuaXF1ZTwnUmVmZXJyZXInPjtcbmV4cG9ydCB0eXBlIFJlc29sdmVyID0gSVJlc29sdmVyPFRlbXBsYXRlTWV0YT47XG4iXX0=

@@ -9,3 +9,3 @@ function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }

import { WriteOnlyConstants } from './constants';
import { WriteOnlyConstants, RuntimeConstants } from './constants';
import { Opcode } from './opcode';

@@ -214,2 +214,8 @@ var TableSlotState;

RuntimeProgram.hydrate = function hydrate(rawHeap, pool, resolver) {
var heap = new Heap(rawHeap);
var constants = new RuntimeConstants(resolver, pool);
return new RuntimeProgram(constants, heap);
};
RuntimeProgram.prototype.opcode = function opcode(offset) {

@@ -246,2 +252,2 @@ this._opcode.offset = offset;

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3Byb2dyYW0vbGliL3Byb2dyYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFHQSxBQUFPLFNBQWEsQUFBa0IsQUFBb0IsMEJBQU0sQUFBYSxBQUFDO0FBQzlFLEFBQU8sU0FBRSxBQUFNLEFBQUUsY0FBTSxBQUFVLEFBQUM7QUFFbEMsSUFBSyxBQUtKO0FBTEQsV0FBSyxBQUFjLGdCQUNqQjtzREFBUyxBQUNUO2tEQUFLLEFBQ0w7bURBQU0sQUFDTjtvREFBTyxBQUNULEFBQUM7R0FMSSxBQUFjLG1CQUFkLEFBQWMsaUJBS2xCO0FBRUQsSUFBTSxBQUFVLGFBQUcsQUFBQyxBQUFDO0FBQ3JCLElBQU0sQUFBVyxjQUFHLEFBQUMsQUFBQztBQUN0QixJQUFNLEFBQVMsWUFBSSxBQUFrQyxBQUFDO0FBQ3RELElBQU0sQUFBVSxhQUFHLEFBQWtDLEFBQUM7QUFDdEQsSUFBTSxBQUFVLGFBQUcsQUFBa0MsQUFBQztBQUV0RCx5QkFBeUIsQUFBWSxNQUFFLEFBQWlCLFdBQUUsQUFBYSxPQUNyRSxBQUFNO1dBQUMsQUFBSSxBQUFHLE9BQUMsQUFBUyxhQUFJLEFBQUUsQUFBQyxLQUFHLEFBQUssU0FBSSxBQUFFLEFBQUMsQUFDaEQsQUFBQzs7QUFFRCxxQkFBcUIsQUFBWSxNQUFFLEFBQWdCLFVBQ2pELEFBQU07V0FBQyxBQUFJLE9BQUcsQUFBUSxZQUFJLEFBQUUsQUFBQyxBQUMvQixBQUFDOztBQUVELEFBbUJHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNILEFBQU0sV0FNSjtrQkFBWSxBQUF5RTtBQUg3RTs7YUFBTSxTQUFHLEFBQUMsQUFBQyxBQUNYO2FBQU0sU0FBRyxBQUFDLEFBQUMsQUFHakIsQUFBRSxBQUFDO1lBQUMsQUFBYyxBQUFDO0FBQUMsQUFBQyxBQUNuQixBQUFJLGdCQUFFLEFBQU07Z0JBQUUsQUFBSyxR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LEFBQUcsSUFBQyxBQUFLLE1BQUMsQUFBSyxPQUFFLEFBQUcsQUFBQyxLQUFDLEFBQU0sQUFBQyxBQUN0QyxBQUFDO0FBRUQ7WUFBSSxBQUFHLE1BQUcsSUFBSSxBQUFXLFlBQUMsQUFBRyxBQUFDLEFBQUMsQUFFL0IsQUFBRyxBQUFDLEFBQUM7ZUFBRSxBQUFLLFFBQUcsQUFBRyxLQUFFLEFBQUssQUFBRSxTQUFFLEFBQUMsQUFDNUIsQUFBRztnQkFBQyxBQUFLLEFBQUMsU0FBSSxBQUFHLElBQUMsQUFBSyxBQUFDLEFBQUMsQUFDM0IsQUFBQztBQUVELEFBQU07ZUFBQyxBQUFHLElBQUMsQUFBTSxBQUFDLEFBQ3BCLEFBQUM7QUFFRCxBQUFNO1dBQUMsQUFBSSxBQUFDLEFBQ2QsQUFBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgQ29tcGlsZVRpbWVQcm9ncmFtLCBSZWNhc3QsIFZNSGFuZGxlIH0gZnJvbSBcIkBnbGltbWVyL2ludGVyZmFjZXNcIjtcbmltcG9ydCB7IERFQlVHIH0gZnJvbSBcIkBnbGltbWVyL2xvY2FsLWRlYnVnLWZsYWdzXCI7XG5pbXBvcnQgeyBDb25zdGFudHMsIFdyaXRlT25seUNvbnN0YW50cywgUnVudGltZUNvbnN0YW50cyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IE9wY29kZSB9IGZyb20gJy4vb3Bjb2RlJztcblxuZW51bSBUYWJsZVNsb3RTdGF0ZSB7XG4gIEFsbG9jYXRlZCxcbiAgRnJlZWQsXG4gIFB1cmdlZCxcbiAgUG9pbnRlclxufVxuXG5jb25zdCBFTlRSWV9TSVpFID0gMjtcbmNvbnN0IElORk9fT0ZGU0VUID0gMTtcbmNvbnN0IFNJWkVfTUFTSyA9ICAwYjAwMDAwMDAwMDAwMDAwMDAxMTExMTExMTExMTExMTExO1xuY29uc3QgU0NPUEVfTUFTSyA9IDBiMDAxMTExMTExMTExMTExMTAwMDAwMDAwMDAwMDAwMDA7XG5jb25zdCBTVEFURV9NQVNLID0gMGIxMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDtcblxuZnVuY3Rpb24gZW5jb2RlVGFibGVJbmZvKHNpemU6IG51bWJlciwgc2NvcGVTaXplOiBudW1iZXIsIHN0YXRlOiBudW1iZXIpIHtcbiAgcmV0dXJuIHNpemUgfCAoc2NvcGVTaXplIDw8IDE2KSB8IHN0YXRlIDw8IDMwO1xufVxuXG5mdW5jdGlvbiBjaGFuZ2VTdGF0ZShpbmZvOiBudW1iZXIsIG5ld1N0YXRlOiBudW1iZXIpIHtcbiAgcmV0dXJuIGluZm8gfCBuZXdTdGF0ZSA8PCAzMDtcbn1cblxuLyoqXG4gKiBUaGUgSGVhcCBpcyByZXNwb25zaWJsZSBmb3IgZHluYW1pY2FsbHkgYWxsb2NhdGluZ1xuICogbWVtb3J5IGluIHdoaWNoIHdlIHJlYWQvd3JpdGUgdGhlIFZNJ3MgaW5zdHJ1Y3Rpb25zXG4gKiBmcm9tL3RvLiBXaGVuIHdlIG1hbGxvYyB3ZSBwYXNzIG91dCBhIFZNSGFuZGxlLCB3aGljaFxuICogaXMgdXNlZCBhcyBhbiBpbmRpcmVjdCB3YXkgb2YgYWNjZXNzaW5nIHRoZSBtZW1vcnkgZHVyaW5nXG4gKiBleGVjdXRpb24gb2YgdGhlIFZNLiBJbnRlcm5hbGx5IHdlIHRyYWNrIHRoZSBkaWZmZXJlbnRcbiAqIHJlZ2lvbnMgb2YgdGhlIG1lbW9yeSBpbiBhbiBpbnQgYXJyYXkga25vd24gYXMgdGhlIHRhYmxlLlxuICpcbiAqIFRoZSB0YWJsZSAzMi1iaXQgYWxpZ25lZCBhbmQgaGFzIHRoZSBmb2xsb3dpbmcgbGF5b3V0OlxuICpcbiAqIHwgLi4uIHwgaHAgKHUzMikgfCAgICAgICBpbmZvICh1MzIpICAgICAgICAgIHxcbiAqIHwgLi4uIHwgIEhhbmRsZSAgfCBTaXplIHwgU2NvcGUgU2l6ZSB8IFN0YXRlIHxcbiAqIHwgLi4uIHwgMzItYml0cyAgfCAxNmIgIHwgICAgMTRiICAgICB8ICAyYiAgIHxcbiAqXG4gKiBXaXRoIHRoaXMgaW5mb3JtYXRpb24gd2UgZWZmZWN0aXZlbHkgaGF2ZSB0aGUgYWJpbGl0eSB0b1xuICogY29udHJvbCB3aGVuIHdlIHdhbnQgdG8gZnJlZSBtZW1vcnkuIFRoYXQgYmVpbmcgc2FpZCB5b3VcbiAqIGNhbiBub3QgZnJlZSBkdXJpbmcgZXhlY3V0aW9uIGFzIHJhdyBhZGRyZXNzIGFyZSBvbmx5XG4gKiB2YWxpZCBkdXJpbmcgdGhlIGV4ZWN1dGlvbi4gVGhpcyBtZWFucyB5b3UgY2Fubm90IGNsb3NlXG4gKiBvdmVyIHRoZW0gYXMgeW91IHdpbGwgaGF2ZSBhIGJhZCBtZW1vcnkgYWNjZXNzIGV4Y2VwdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIEhlYXAge1xuICBwcml2YXRlIGhlYXA6IFVpbnQxNkFycmF5IHwgQXJyYXk8bnVtYmVyPjtcbiAgcHJpdmF0ZSB0YWJsZTogbnVtYmVyW107XG4gIHByaXZhdGUgb2Zmc2V0ID0gMDtcbiAgcHJpdmF0ZSBoYW5kbGUgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKHNlcmlhbGl6ZWRIZWFwPzogeyBidWZmZXI6IEFycmF5QnVmZmVyLCB0YWJsZTogbnVtYmVyW10sIGhhbmRsZTogbnVtYmVyIH0pIHtcbiAgICBpZiAoc2VyaWFsaXplZEhlYXApIHtcbiAgICAgIGxldCB7IGJ1ZmZlciwgdGFibGUsIGhhbmRsZSB9ID0gc2VyaWFsaXplZEhlYXA7XG4gICAgICB0aGlzLmhlYXAgPSBuZXcgVWludDE2QXJyYXkoYnVmZmVyKTtcbiAgICAgIHRoaXMudGFibGUgPSB0YWJsZTtcbiAgICAgIHRoaXMub2Zmc2V0ID0gdGhpcy5oZWFwLmxlbmd0aDtcbiAgICAgIHRoaXMuaGFuZGxlID0gaGFuZGxlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhlYXAgPSBuZXcgVWludDE2QXJyYXkoMHgxMDAwMDApO1xuICAgICAgdGhpcy50YWJsZSA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIHB1c2goaXRlbTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5oZWFwW3RoaXMub2Zmc2V0KytdID0gaXRlbTtcbiAgfVxuXG4gIGdldGJ5YWRkcihhZGRyZXNzOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmhlYXBbYWRkcmVzc107XG4gIH1cblxuICBzZXRieWFkZHIoYWRkcmVzczogbnVtYmVyLCB2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5oZWFwW2FkZHJlc3NdID0gdmFsdWU7XG4gIH1cblxuICBtYWxsb2MoKTogVk1IYW5kbGUge1xuICAgIHRoaXMudGFibGUucHVzaCh0aGlzLm9mZnNldCwgMCk7XG4gICAgbGV0IGhhbmRsZSA9IHRoaXMuaGFuZGxlO1xuICAgIHRoaXMuaGFuZGxlICs9IEVOVFJZX1NJWkU7XG4gICAgcmV0dXJuIGhhbmRsZSBhcyBSZWNhc3Q8bnVtYmVyLCBWTUhhbmRsZT47XG4gIH1cblxuICBmaW5pc2hNYWxsb2MoaGFuZGxlOiBWTUhhbmRsZSwgc2NvcGVTaXplOiBudW1iZXIpOiB2b2lkIHtcbiAgICBsZXQgc3RhcnQgPSB0aGlzLnRhYmxlW2hhbmRsZSBhcyBSZWNhc3Q8Vk1IYW5kbGUsIG51bWJlcj5dO1xuICAgIGxldCBmaW5pc2ggPSB0aGlzLm9mZnNldDtcbiAgICBsZXQgaW5zdHJ1Y3Rpb25TaXplID0gZmluaXNoIC0gc3RhcnQ7XG4gICAgbGV0IGluZm8gPSBlbmNvZGVUYWJsZUluZm8oaW5zdHJ1Y3Rpb25TaXplLCBzY29wZVNpemUsIFRhYmxlU2xvdFN0YXRlLkFsbG9jYXRlZCk7XG4gICAgdGhpcy50YWJsZVsoaGFuZGxlIGFzIFJlY2FzdDxWTUhhbmRsZSwgbnVtYmVyPikgKyBJTkZPX09GRlNFVF0gPSBpbmZvO1xuICB9XG5cbiAgc2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm9mZnNldDtcbiAgfVxuXG4gIC8vIEl0IGlzIGlsbGVnYWwgdG8gY2xvc2Ugb3ZlciB0aGlzIGFkZHJlc3MsIGFzIGNvbXBhY3Rpb25cbiAgLy8gbWF5IG1vdmUgaXQuIEhvd2V2ZXIsIGl0IGlzIGxlZ2FsIHRvIHVzZSB0aGlzIGFkZHJlc3NcbiAgLy8gbXVsdGlwbGUgdGltZXMgYmV0d2VlbiBjb21wYWN0aW9ucy5cbiAgZ2V0YWRkcihoYW5kbGU6IFZNSGFuZGxlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZVtoYW5kbGUgYXMgUmVjYXN0PFZNSGFuZGxlLCBudW1iZXI+XTtcbiAgfVxuXG4gIGdldGhhbmRsZShhZGRyZXNzOiBudW1iZXIpOiBWTUhhbmRsZSB7XG4gICAgdGhpcy50YWJsZS5wdXNoKGFkZHJlc3MsIGVuY29kZVRhYmxlSW5mbygwLCAwLCBUYWJsZVNsb3RTdGF0ZS5Qb2ludGVyKSk7XG4gICAgbGV0IGhhbmRsZSA9IHRoaXMuaGFuZGxlO1xuICAgIHRoaXMuaGFuZGxlICs9IEVOVFJZX1NJWkU7XG4gICAgcmV0dXJuIGhhbmRsZSBhcyBSZWNhc3Q8bnVtYmVyLCBWTUhhbmRsZT47XG4gIH1cblxuICBzaXplb2YoaGFuZGxlOiBWTUhhbmRsZSk6IG51bWJlciB7XG4gICAgaWYgKERFQlVHKSB7XG4gICAgICBsZXQgaW5mbyA9IHRoaXMudGFibGVbKGhhbmRsZSBhcyBSZWNhc3Q8Vk1IYW5kbGUsIG51bWJlcj4pICsgSU5GT19PRkZTRVRdO1xuICAgICAgcmV0dXJuIGluZm8gJiBTSVpFX01BU0s7XG4gICAgfVxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIHNjb3Blc2l6ZW9mKGhhbmRsZTogVk1IYW5kbGUpOiBudW1iZXIge1xuICAgIGxldCBpbmZvID0gdGhpcy50YWJsZVsoaGFuZGxlIGFzIFJlY2FzdDxWTUhhbmRsZSwgbnVtYmVyPikgKyBJTkZPX09GRlNFVF07XG4gICAgcmV0dXJuIChpbmZvICYgU0NPUEVfTUFTSykgPj4gMTY7XG4gIH1cblxuICBmcmVlKGhhbmRsZTogVk1IYW5kbGUpOiB2b2lkIHtcbiAgICBsZXQgaW5mbyA9IHRoaXMudGFibGVbKGhhbmRsZSBhcyBSZWNhc3Q8Vk1IYW5kbGUsIG51bWJlcj4pICsgSU5GT19PRkZTRVRdO1xuICAgIHRoaXMudGFibGVbKGhhbmRsZSBhcyBSZWNhc3Q8Vk1IYW5kbGUsIG51bWJlcj4pICsgSU5GT19PRkZTRVRdID0gY2hhbmdlU3RhdGUoaW5mbywgVGFibGVTbG90U3RhdGUuRnJlZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBoZWFwIHVzZXMgdGhlIFtNYXJrLUNvbXBhY3QgQWxnb3JpdGhtXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYXJrLWNvbXBhY3RfYWxnb3JpdGhtKSB0byBzaGlmdFxuICAgKiByZWFjaGFibGUgbWVtb3J5IHRvIHRoZSBib3R0b20gb2YgdGhlIGhlYXAgYW5kIGZyZWVhYmxlXG4gICAqIG1lbW9yeSB0byB0aGUgdG9wIG9mIHRoZSBoZWFwLiBXaGVuIHdlIGhhdmUgc2hpZnRlZCBhbGxcbiAgICogdGhlIHJlYWNoYWJsZSBtZW1vcnkgdG8gdGhlIHRvcCBvZiB0aGUgaGVhcCwgd2UgbW92ZSB0aGVcbiAgICogb2Zmc2V0IHRvIHRoZSBuZXh0IGZyZWUgcG9zaXRpb24uXG4gICAqL1xuICBjb21wYWN0KCk6IHZvaWQge1xuICAgIGxldCBjb21wYWN0ZWRTaXplID0gMDtcbiAgICBsZXQgeyB0YWJsZSwgdGFibGU6IHsgbGVuZ3RoIH0sIGhlYXAgfSA9IHRoaXM7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8bGVuZ3RoOyBpKz1FTlRSWV9TSVpFKSB7XG4gICAgICBsZXQgb2Zmc2V0ID0gdGFibGVbaV07XG4gICAgICBsZXQgaW5mbyA9IHRhYmxlW2kgKyBJTkZPX09GRlNFVF07XG4gICAgICBsZXQgc2l6ZSA9IGluZm8gJiBTSVpFX01BU0s7XG4gICAgICBsZXQgc3RhdGUgPSBpbmZvICYgU1RBVEVfTUFTSyA+PiAzMDtcblxuICAgICAgaWYgKHN0YXRlID09PSBUYWJsZVNsb3RTdGF0ZS5QdXJnZWQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlID09PSBUYWJsZVNsb3RTdGF0ZS5GcmVlZCkge1xuICAgICAgICAvLyB0cmFuc2l0aW9uIHRvIFwiYWxyZWFkeSBmcmVlZFwiIGFrYSBcInB1cmdlZFwiXG4gICAgICAgIC8vIGEgZ29vZCBpbXByb3ZlbWVudCB3b3VsZCBiZSB0byByZXVzZVxuICAgICAgICAvLyB0aGVzZSBzbG90c1xuICAgICAgICB0YWJsZVtpICsgSU5GT19PRkZTRVRdID0gY2hhbmdlU3RhdGUoaW5mbywgVGFibGVTbG90U3RhdGUuUHVyZ2VkKTtcbiAgICAgICAgY29tcGFjdGVkU2l6ZSArPSBzaXplO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PT0gVGFibGVTbG90U3RhdGUuQWxsb2NhdGVkKSB7XG4gICAgICAgIGZvciAobGV0IGo9b2Zmc2V0OyBqPD1pK3NpemU7IGorKykge1xuICAgICAgICAgIGhlYXBbaiAtIGNvbXBhY3RlZFNpemVdID0gaGVhcFtqXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRhYmxlW2ldID0gb2Zmc2V0IC0gY29tcGFjdGVkU2l6ZTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPT09IFRhYmxlU2xvdFN0YXRlLlBvaW50ZXIpIHtcbiAgICAgICAgdGFibGVbaV0gPSBvZmZzZXQgLSBjb21wYWN0ZWRTaXplO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMub2Zmc2V0ID0gdGhpcy5vZmZzZXQgLSBjb21wYWN0ZWRTaXplO1xuICB9XG5cbiAgY2FwdHVyZSgpIHtcbiAgICAvLyBPbmx5IGNhbGxlZCBpbiBlYWdlciBtb2RlXG4gICAgbGV0IGJ1ZmZlciA9IHNsaWNlKHRoaXMuaGVhcCwgMCwgdGhpcy5vZmZzZXQpO1xuICAgIHJldHVybiB7XG4gICAgICBoYW5kbGU6IHRoaXMuaGFuZGxlLFxuICAgICAgdGFibGU6IHRoaXMudGFibGUsXG4gICAgICBidWZmZXI6IGJ1ZmZlciBhcyBBcnJheUJ1ZmZlclxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFdyaXRlT25seVByb2dyYW0gaW1wbGVtZW50cyBDb21waWxlVGltZVByb2dyYW0ge1xuICBba2V5OiBudW1iZXJdOiBuZXZlcjtcblxuICBwcml2YXRlIF9vcGNvZGU6IE9wY29kZTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgY29uc3RhbnRzOiBXcml0ZU9ubHlDb25zdGFudHMgPSBuZXcgV3JpdGVPbmx5Q29uc3RhbnRzKCksIHB1YmxpYyBoZWFwID0gbmV3IEhlYXAoKSkge1xuICAgIHRoaXMuX29wY29kZSA9IG5ldyBPcGNvZGUodGhpcy5oZWFwKTtcbiAgfVxuXG4gIG9wY29kZShvZmZzZXQ6IG51bWJlcik6IE9wY29kZSB7XG4gICAgdGhpcy5fb3Bjb2RlLm9mZnNldCA9IG9mZnNldDtcbiAgICByZXR1cm4gdGhpcy5fb3Bjb2RlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSdW50aW1lUHJvZ3JhbTxTcGVjaWZpZXI+IHtcbiAgW2tleTogbnVtYmVyXTogbmV2ZXI7XG5cbiAgcHJpdmF0ZSBfb3Bjb2RlOiBPcGNvZGU7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGNvbnN0YW50czogUnVudGltZUNvbnN0YW50czxTcGVjaWZpZXI+LCBwdWJsaWMgaGVhcDogSGVhcCkge1xuICAgIHRoaXMuX29wY29kZSA9IG5ldyBPcGNvZGUodGhpcy5oZWFwKTtcbiAgfVxuXG4gIG9wY29kZShvZmZzZXQ6IG51bWJlcik6IE9wY29kZSB7XG4gICAgdGhpcy5fb3Bjb2RlLm9mZnNldCA9IG9mZnNldDtcbiAgICByZXR1cm4gdGhpcy5fb3Bjb2RlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQcm9ncmFtPFNwZWNpZmllcj4gZXh0ZW5kcyBXcml0ZU9ubHlQcm9ncmFtIHtcbiAgcHVibGljIGNvbnN0YW50czogQ29uc3RhbnRzPFNwZWNpZmllcj47XG59XG5cbmZ1bmN0aW9uIHNsaWNlKGFycjogVWludDE2QXJyYXkgfCBudW1iZXJbXSwgc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIpIHtcbiAgaWYgKGFyciBpbnN0YW5jZW9mIFVpbnQxNkFycmF5KSB7XG4gICAgaWYgKGFyci5zbGljZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gYXJyLnNsaWNlKHN0YXJ0LCBlbmQpLmJ1ZmZlcjtcbiAgICB9XG5cbiAgICBsZXQgcmV0ID0gbmV3IFVpbnQxNkFycmF5KGVuZCk7XG5cbiAgICBmb3IgKDsgc3RhcnQgPCBlbmQ7IHN0YXJ0KyspIHtcbiAgICAgIHJldFtzdGFydF0gID0gYXJyW3N0YXJ0XTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0LmJ1ZmZlcjtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3Byb2dyYW0vbGliL3Byb2dyYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFHQSxBQUFPLFNBQWEsQUFBa0Isb0JBQUUsQUFBZ0IsQUFBZ0Isd0JBQU0sQUFBYSxBQUFDO0FBQzVGLEFBQU8sU0FBRSxBQUFNLEFBQUUsY0FBTSxBQUFVLEFBQUM7QUFFbEMsSUFBSyxBQUtKO0FBTEQsV0FBSyxBQUFjLGdCQUNqQjtzREFBUyxBQUNUO2tEQUFLLEFBQ0w7bURBQU0sQUFDTjtvREFBTyxBQUNULEFBQUM7R0FMSSxBQUFjLG1CQUFkLEFBQWMsaUJBS2xCO0FBRUQsSUFBTSxBQUFVLGFBQUcsQUFBQyxBQUFDO0FBQ3JCLElBQU0sQUFBVyxjQUFHLEFBQUMsQUFBQztBQUN0QixJQUFNLEFBQVMsWUFBSSxBQUFrQyxBQUFDO0FBQ3RELElBQU0sQUFBVSxhQUFHLEFBQWtDLEFBQUM7QUFDdEQsSUFBTSxBQUFVLGFBQUcsQUFBa0MsQUFBQztBQUV0RCx5QkFBeUIsQUFBWSxNQUFFLEFBQWlCLFdBQUUsQUFBYSxPQUNyRSxBQUFNO1dBQUMsQUFBSSxBQUFHLE9BQUMsQUFBUyxhQUFJLEFBQUUsQUFBQyxLQUFHLEFBQUssU0FBSSxBQUFFLEFBQUMsQUFDaEQsQUFBQzs7QUFFRCxxQkFBcUIsQUFBWSxNQUFFLEFBQWdCLFVBQ2pELEFBQU07V0FBQyxBQUFJLE9BQUcsQUFBUSxZQUFJLEFBQUUsQUFBQyxBQUMvQixBQUFDOztBQVFELEFBbUJHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNILEFBQU0sV0FNSjtrQkFBWSxBQUErQjtBQUhuQzs7YUFBTSxTQUFHLEFBQUMsQUFBQyxBQUNYO2FBQU0sU0FBRyxBQUFDLEFBQUMsQUFHakIsQUFBRSxBQUFDO1lBQUMsQUFBYyxBQUFDO0FBQUMsQUFBQyxBQUNuQixBQUFJLGdCQUFFLEFBQU07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QUMsQUFBSSxLQUFDLEFBQU8sQUFBQyxBQUN0QixBQUFDLEFBQ0Y7Ozs7O0FBRUQsQUFBTSxXQUE2Qjs7Ozs7Ozs7OztFQUFRLEFBQWdCLEFBRTFEO0FBRUQsZUFBZSxBQUEyQixLQUFFLEFBQWEsT0FBRSxBQUFXLEtBQ3BFLEFBQUUsQUFBQztRQUFDLEFBQUcsZUFBWSxBQUFXLEFBQUMsYUFBQyxBQUFDLEFBQy9CLEFBQUUsQUFBQztZQUFDLEFBQUcsSUFBQyxBQUFLLFVBQUssQUFBUyxBQUFDLFdBQUMsQUFBQyxBQUM1QixBQUFNO21CQUFDLEFBQUcsSUFBQyxBQUFLLE1BQUMsQUFBSyxPQUFFLEFBQUcsQUFBQyxLQUFDLEFBQU0sQUFBQyxBQUN0QyxBQUFDO0FBRUQ7WUFBSSxBQUFHLE1BQUcsSUFBSSxBQUFXLFlBQUMsQUFBRyxBQUFDLEFBQUMsQUFFL0IsQUFBRyxBQUFDLEFBQUM7ZUFBRSxBQUFLLFFBQUcsQUFBRyxLQUFFLEFBQUssQUFBRSxTQUFFLEFBQUMsQUFDNUIsQUFBRztnQkFBQyxBQUFLLEFBQUMsU0FBSSxBQUFHLElBQUMsQUFBSyxBQUFDLEFBQUMsQUFDM0IsQUFBQztBQUVELEFBQU07ZUFBQyxBQUFHLElBQUMsQUFBTSxBQUFDLEFBQ3BCLEFBQUM7QUFFRCxBQUFNO1dBQUMsQUFBSSxBQUFDLEFBQ2QsQUFBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgQ29tcGlsZVRpbWVQcm9ncmFtLCBSZWNhc3QsIFZNSGFuZGxlLCBSdW50aW1lUmVzb2x2ZXIgfSBmcm9tIFwiQGdsaW1tZXIvaW50ZXJmYWNlc1wiO1xuaW1wb3J0IHsgREVCVUcgfSBmcm9tIFwiQGdsaW1tZXIvbG9jYWwtZGVidWctZmxhZ3NcIjtcbmltcG9ydCB7IENvbnN0YW50cywgV3JpdGVPbmx5Q29uc3RhbnRzLCBSdW50aW1lQ29uc3RhbnRzLCBDb25zdGFudFBvb2wgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBPcGNvZGUgfSBmcm9tICcuL29wY29kZSc7XG5cbmVudW0gVGFibGVTbG90U3RhdGUge1xuICBBbGxvY2F0ZWQsXG4gIEZyZWVkLFxuICBQdXJnZWQsXG4gIFBvaW50ZXJcbn1cblxuY29uc3QgRU5UUllfU0laRSA9IDI7XG5jb25zdCBJTkZPX09GRlNFVCA9IDE7XG5jb25zdCBTSVpFX01BU0sgPSAgMGIwMDAwMDAwMDAwMDAwMDAwMTExMTExMTExMTExMTExMTtcbmNvbnN0IFNDT1BFX01BU0sgPSAwYjAwMTExMTExMTExMTExMTEwMDAwMDAwMDAwMDAwMDAwO1xuY29uc3QgU1RBVEVfTUFTSyA9IDBiMTEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA7XG5cbmZ1bmN0aW9uIGVuY29kZVRhYmxlSW5mbyhzaXplOiBudW1iZXIsIHNjb3BlU2l6ZTogbnVtYmVyLCBzdGF0ZTogbnVtYmVyKSB7XG4gIHJldHVybiBzaXplIHwgKHNjb3BlU2l6ZSA8PCAxNikgfCBzdGF0ZSA8PCAzMDtcbn1cblxuZnVuY3Rpb24gY2hhbmdlU3RhdGUoaW5mbzogbnVtYmVyLCBuZXdTdGF0ZTogbnVtYmVyKSB7XG4gIHJldHVybiBpbmZvIHwgbmV3U3RhdGUgPDwgMzA7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VyaWFsaXplZEhlYXAge1xuICBidWZmZXI6IEFycmF5QnVmZmVyO1xuICB0YWJsZTogbnVtYmVyW107XG4gIGhhbmRsZTogbnVtYmVyO1xufVxuXG4vKipcbiAqIFRoZSBIZWFwIGlzIHJlc3BvbnNpYmxlIGZvciBkeW5hbWljYWxseSBhbGxvY2F0aW5nXG4gKiBtZW1vcnkgaW4gd2hpY2ggd2UgcmVhZC93cml0ZSB0aGUgVk0ncyBpbnN0cnVjdGlvbnNcbiAqIGZyb20vdG8uIFdoZW4gd2UgbWFsbG9jIHdlIHBhc3Mgb3V0IGEgVk1IYW5kbGUsIHdoaWNoXG4gKiBpcyB1c2VkIGFzIGFuIGluZGlyZWN0IHdheSBvZiBhY2Nlc3NpbmcgdGhlIG1lbW9yeSBkdXJpbmdcbiAqIGV4ZWN1dGlvbiBvZiB0aGUgVk0uIEludGVybmFsbHkgd2UgdHJhY2sgdGhlIGRpZmZlcmVudFxuICogcmVnaW9ucyBvZiB0aGUgbWVtb3J5IGluIGFuIGludCBhcnJheSBrbm93biBhcyB0aGUgdGFibGUuXG4gKlxuICogVGhlIHRhYmxlIDMyLWJpdCBhbGlnbmVkIGFuZCBoYXMgdGhlIGZvbGxvd2luZyBsYXlvdXQ6XG4gKlxuICogfCAuLi4gfCBocCAodTMyKSB8ICAgICAgIGluZm8gKHUzMikgICAgICAgICAgfFxuICogfCAuLi4gfCAgSGFuZGxlICB8IFNpemUgfCBTY29wZSBTaXplIHwgU3RhdGUgfFxuICogfCAuLi4gfCAzMi1iaXRzICB8IDE2YiAgfCAgICAxNGIgICAgIHwgIDJiICAgfFxuICpcbiAqIFdpdGggdGhpcyBpbmZvcm1hdGlvbiB3ZSBlZmZlY3RpdmVseSBoYXZlIHRoZSBhYmlsaXR5IHRvXG4gKiBjb250cm9sIHdoZW4gd2Ugd2FudCB0byBmcmVlIG1lbW9yeS4gVGhhdCBiZWluZyBzYWlkIHlvdVxuICogY2FuIG5vdCBmcmVlIGR1cmluZyBleGVjdXRpb24gYXMgcmF3IGFkZHJlc3MgYXJlIG9ubHlcbiAqIHZhbGlkIGR1cmluZyB0aGUgZXhlY3V0aW9uLiBUaGlzIG1lYW5zIHlvdSBjYW5ub3QgY2xvc2VcbiAqIG92ZXIgdGhlbSBhcyB5b3Ugd2lsbCBoYXZlIGEgYmFkIG1lbW9yeSBhY2Nlc3MgZXhjZXB0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgSGVhcCB7XG4gIHByaXZhdGUgaGVhcDogVWludDE2QXJyYXkgfCBBcnJheTxudW1iZXI+O1xuICBwcml2YXRlIHRhYmxlOiBudW1iZXJbXTtcbiAgcHJpdmF0ZSBvZmZzZXQgPSAwO1xuICBwcml2YXRlIGhhbmRsZSA9IDA7XG5cbiAgY29uc3RydWN0b3Ioc2VyaWFsaXplZEhlYXA/OiBTZXJpYWxpemVkSGVhcCkge1xuICAgIGlmIChzZXJpYWxpemVkSGVhcCkge1xuICAgICAgbGV0IHsgYnVmZmVyLCB0YWJsZSwgaGFuZGxlIH0gPSBzZXJpYWxpemVkSGVhcDtcbiAgICAgIHRoaXMuaGVhcCA9IG5ldyBVaW50MTZBcnJheShidWZmZXIpO1xuICAgICAgdGhpcy50YWJsZSA9IHRhYmxlO1xuICAgICAgdGhpcy5vZmZzZXQgPSB0aGlzLmhlYXAubGVuZ3RoO1xuICAgICAgdGhpcy5oYW5kbGUgPSBoYW5kbGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGVhcCA9IG5ldyBVaW50MTZBcnJheSgweDEwMDAwMCk7XG4gICAgICB0aGlzLnRhYmxlID0gW107XG4gICAgfVxuICB9XG5cbiAgcHVzaChpdGVtOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmhlYXBbdGhpcy5vZmZzZXQrK10gPSBpdGVtO1xuICB9XG5cbiAgZ2V0YnlhZGRyKGFkZHJlc3M6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaGVhcFthZGRyZXNzXTtcbiAgfVxuXG4gIHNldGJ5YWRkcihhZGRyZXNzOiBudW1iZXIsIHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLmhlYXBbYWRkcmVzc10gPSB2YWx1ZTtcbiAgfVxuXG4gIG1hbGxvYygpOiBWTUhhbmRsZSB7XG4gICAgdGhpcy50YWJsZS5wdXNoKHRoaXMub2Zmc2V0LCAwKTtcbiAgICBsZXQgaGFuZGxlID0gdGhpcy5oYW5kbGU7XG4gICAgdGhpcy5oYW5kbGUgKz0gRU5UUllfU0laRTtcbiAgICByZXR1cm4gaGFuZGxlIGFzIFJlY2FzdDxudW1iZXIsIFZNSGFuZGxlPjtcbiAgfVxuXG4gIGZpbmlzaE1hbGxvYyhoYW5kbGU6IFZNSGFuZGxlLCBzY29wZVNpemU6IG51bWJlcik6IHZvaWQge1xuICAgIGxldCBzdGFydCA9IHRoaXMudGFibGVbaGFuZGxlIGFzIFJlY2FzdDxWTUhhbmRsZSwgbnVtYmVyPl07XG4gICAgbGV0IGZpbmlzaCA9IHRoaXMub2Zmc2V0O1xuICAgIGxldCBpbnN0cnVjdGlvblNpemUgPSBmaW5pc2ggLSBzdGFydDtcbiAgICBsZXQgaW5mbyA9IGVuY29kZVRhYmxlSW5mbyhpbnN0cnVjdGlvblNpemUsIHNjb3BlU2l6ZSwgVGFibGVTbG90U3RhdGUuQWxsb2NhdGVkKTtcbiAgICB0aGlzLnRhYmxlWyhoYW5kbGUgYXMgUmVjYXN0PFZNSGFuZGxlLCBudW1iZXI+KSArIElORk9fT0ZGU0VUXSA9IGluZm87XG4gIH1cblxuICBzaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMub2Zmc2V0O1xuICB9XG5cbiAgLy8gSXQgaXMgaWxsZWdhbCB0byBjbG9zZSBvdmVyIHRoaXMgYWRkcmVzcywgYXMgY29tcGFjdGlvblxuICAvLyBtYXkgbW92ZSBpdC4gSG93ZXZlciwgaXQgaXMgbGVnYWwgdG8gdXNlIHRoaXMgYWRkcmVzc1xuICAvLyBtdWx0aXBsZSB0aW1lcyBiZXR3ZWVuIGNvbXBhY3Rpb25zLlxuICBnZXRhZGRyKGhhbmRsZTogVk1IYW5kbGUpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRhYmxlW2hhbmRsZSBhcyBSZWNhc3Q8Vk1IYW5kbGUsIG51bWJlcj5dO1xuICB9XG5cbiAgZ2V0aGFuZGxlKGFkZHJlc3M6IG51bWJlcik6IFZNSGFuZGxlIHtcbiAgICB0aGlzLnRhYmxlLnB1c2goYWRkcmVzcywgZW5jb2RlVGFibGVJbmZvKDAsIDAsIFRhYmxlU2xvdFN0YXRlLlBvaW50ZXIpKTtcbiAgICBsZXQgaGFuZGxlID0gdGhpcy5oYW5kbGU7XG4gICAgdGhpcy5oYW5kbGUgKz0gRU5UUllfU0laRTtcbiAgICByZXR1cm4gaGFuZGxlIGFzIFJlY2FzdDxudW1iZXIsIFZNSGFuZGxlPjtcbiAgfVxuXG4gIHNpemVvZihoYW5kbGU6IFZNSGFuZGxlKTogbnVtYmVyIHtcbiAgICBpZiAoREVCVUcpIHtcbiAgICAgIGxldCBpbmZvID0gdGhpcy50YWJsZVsoaGFuZGxlIGFzIFJlY2FzdDxWTUhhbmRsZSwgbnVtYmVyPikgKyBJTkZPX09GRlNFVF07XG4gICAgICByZXR1cm4gaW5mbyAmIFNJWkVfTUFTSztcbiAgICB9XG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgc2NvcGVzaXplb2YoaGFuZGxlOiBWTUhhbmRsZSk6IG51bWJlciB7XG4gICAgbGV0IGluZm8gPSB0aGlzLnRhYmxlWyhoYW5kbGUgYXMgUmVjYXN0PFZNSGFuZGxlLCBudW1iZXI+KSArIElORk9fT0ZGU0VUXTtcbiAgICByZXR1cm4gKGluZm8gJiBTQ09QRV9NQVNLKSA+PiAxNjtcbiAgfVxuXG4gIGZyZWUoaGFuZGxlOiBWTUhhbmRsZSk6IHZvaWQge1xuICAgIGxldCBpbmZvID0gdGhpcy50YWJsZVsoaGFuZGxlIGFzIFJlY2FzdDxWTUhhbmRsZSwgbnVtYmVyPikgKyBJTkZPX09GRlNFVF07XG4gICAgdGhpcy50YWJsZVsoaGFuZGxlIGFzIFJlY2FzdDxWTUhhbmRsZSwgbnVtYmVyPikgKyBJTkZPX09GRlNFVF0gPSBjaGFuZ2VTdGF0ZShpbmZvLCBUYWJsZVNsb3RTdGF0ZS5GcmVlZCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGhlYXAgdXNlcyB0aGUgW01hcmstQ29tcGFjdCBBbGdvcml0aG1dKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01hcmstY29tcGFjdF9hbGdvcml0aG0pIHRvIHNoaWZ0XG4gICAqIHJlYWNoYWJsZSBtZW1vcnkgdG8gdGhlIGJvdHRvbSBvZiB0aGUgaGVhcCBhbmQgZnJlZWFibGVcbiAgICogbWVtb3J5IHRvIHRoZSB0b3Agb2YgdGhlIGhlYXAuIFdoZW4gd2UgaGF2ZSBzaGlmdGVkIGFsbFxuICAgKiB0aGUgcmVhY2hhYmxlIG1lbW9yeSB0byB0aGUgdG9wIG9mIHRoZSBoZWFwLCB3ZSBtb3ZlIHRoZVxuICAgKiBvZmZzZXQgdG8gdGhlIG5leHQgZnJlZSBwb3NpdGlvbi5cbiAgICovXG4gIGNvbXBhY3QoKTogdm9pZCB7XG4gICAgbGV0IGNvbXBhY3RlZFNpemUgPSAwO1xuICAgIGxldCB7IHRhYmxlLCB0YWJsZTogeyBsZW5ndGggfSwgaGVhcCB9ID0gdGhpcztcblxuICAgIGZvciAobGV0IGk9MDsgaTxsZW5ndGg7IGkrPUVOVFJZX1NJWkUpIHtcbiAgICAgIGxldCBvZmZzZXQgPSB0YWJsZVtpXTtcbiAgICAgIGxldCBpbmZvID0gdGFibGVbaSArIElORk9fT0ZGU0VUXTtcbiAgICAgIGxldCBzaXplID0gaW5mbyAmIFNJWkVfTUFTSztcbiAgICAgIGxldCBzdGF0ZSA9IGluZm8gJiBTVEFURV9NQVNLID4+IDMwO1xuXG4gICAgICBpZiAoc3RhdGUgPT09IFRhYmxlU2xvdFN0YXRlLlB1cmdlZCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPT09IFRhYmxlU2xvdFN0YXRlLkZyZWVkKSB7XG4gICAgICAgIC8vIHRyYW5zaXRpb24gdG8gXCJhbHJlYWR5IGZyZWVkXCIgYWthIFwicHVyZ2VkXCJcbiAgICAgICAgLy8gYSBnb29kIGltcHJvdmVtZW50IHdvdWxkIGJlIHRvIHJldXNlXG4gICAgICAgIC8vIHRoZXNlIHNsb3RzXG4gICAgICAgIHRhYmxlW2kgKyBJTkZPX09GRlNFVF0gPSBjaGFuZ2VTdGF0ZShpbmZvLCBUYWJsZVNsb3RTdGF0ZS5QdXJnZWQpO1xuICAgICAgICBjb21wYWN0ZWRTaXplICs9IHNpemU7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlID09PSBUYWJsZVNsb3RTdGF0ZS5BbGxvY2F0ZWQpIHtcbiAgICAgICAgZm9yIChsZXQgaj1vZmZzZXQ7IGo8PWkrc2l6ZTsgaisrKSB7XG4gICAgICAgICAgaGVhcFtqIC0gY29tcGFjdGVkU2l6ZV0gPSBoZWFwW2pdO1xuICAgICAgICB9XG5cbiAgICAgICAgdGFibGVbaV0gPSBvZmZzZXQgLSBjb21wYWN0ZWRTaXplO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PT0gVGFibGVTbG90U3RhdGUuUG9pbnRlcikge1xuICAgICAgICB0YWJsZVtpXSA9IG9mZnNldCAtIGNvbXBhY3RlZFNpemU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5vZmZzZXQgPSB0aGlzLm9mZnNldCAtIGNvbXBhY3RlZFNpemU7XG4gIH1cblxuICBjYXB0dXJlKCk6IFNlcmlhbGl6ZWRIZWFwIHtcbiAgICAvLyBPbmx5IGNhbGxlZCBpbiBlYWdlciBtb2RlXG4gICAgbGV0IGJ1ZmZlciA9IHNsaWNlKHRoaXMuaGVhcCwgMCwgdGhpcy5vZmZzZXQpO1xuICAgIHJldHVybiB7XG4gICAgICBoYW5kbGU6IHRoaXMuaGFuZGxlLFxuICAgICAgdGFibGU6IHRoaXMudGFibGUsXG4gICAgICBidWZmZXI6IGJ1ZmZlciBhcyBBcnJheUJ1ZmZlclxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFdyaXRlT25seVByb2dyYW0gaW1wbGVtZW50cyBDb21waWxlVGltZVByb2dyYW0ge1xuICBba2V5OiBudW1iZXJdOiBuZXZlcjtcblxuICBwcml2YXRlIF9vcGNvZGU6IE9wY29kZTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgY29uc3RhbnRzOiBXcml0ZU9ubHlDb25zdGFudHMgPSBuZXcgV3JpdGVPbmx5Q29uc3RhbnRzKCksIHB1YmxpYyBoZWFwID0gbmV3IEhlYXAoKSkge1xuICAgIHRoaXMuX29wY29kZSA9IG5ldyBPcGNvZGUodGhpcy5oZWFwKTtcbiAgfVxuXG4gIG9wY29kZShvZmZzZXQ6IG51bWJlcik6IE9wY29kZSB7XG4gICAgdGhpcy5fb3Bjb2RlLm9mZnNldCA9IG9mZnNldDtcbiAgICByZXR1cm4gdGhpcy5fb3Bjb2RlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSdW50aW1lUHJvZ3JhbTxUZW1wbGF0ZU1ldGE+IHtcbiAgW2tleTogbnVtYmVyXTogbmV2ZXI7XG5cbiAgc3RhdGljIGh5ZHJhdGU8VGVtcGxhdGVNZXRhPihyYXdIZWFwOiBTZXJpYWxpemVkSGVhcCwgcG9vbDogQ29uc3RhbnRQb29sLCByZXNvbHZlcjogUnVudGltZVJlc29sdmVyPFRlbXBsYXRlTWV0YT4pIHtcbiAgICBsZXQgaGVhcCA9IG5ldyBIZWFwKHJhd0hlYXApO1xuICAgIGxldCBjb25zdGFudHMgPSBuZXcgUnVudGltZUNvbnN0YW50cyhyZXNvbHZlciwgcG9vbCk7XG5cbiAgICByZXR1cm4gbmV3IFJ1bnRpbWVQcm9ncmFtKGNvbnN0YW50cywgaGVhcCk7XG4gIH1cblxuICBwcml2YXRlIF9vcGNvZGU6IE9wY29kZTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgY29uc3RhbnRzOiBSdW50aW1lQ29uc3RhbnRzPFRlbXBsYXRlTWV0YT4sIHB1YmxpYyBoZWFwOiBIZWFwKSB7XG4gICAgdGhpcy5fb3Bjb2RlID0gbmV3IE9wY29kZSh0aGlzLmhlYXApO1xuICB9XG5cbiAgb3Bjb2RlKG9mZnNldDogbnVtYmVyKTogT3Bjb2RlIHtcbiAgICB0aGlzLl9vcGNvZGUub2Zmc2V0ID0gb2Zmc2V0O1xuICAgIHJldHVybiB0aGlzLl9vcGNvZGU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFByb2dyYW08VGVtcGxhdGVNZXRhPiBleHRlbmRzIFdyaXRlT25seVByb2dyYW0ge1xuICBwdWJsaWMgY29uc3RhbnRzOiBDb25zdGFudHM8VGVtcGxhdGVNZXRhPjtcbn1cblxuZnVuY3Rpb24gc2xpY2UoYXJyOiBVaW50MTZBcnJheSB8IG51bWJlcltdLCBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcikge1xuICBpZiAoYXJyIGluc3RhbmNlb2YgVWludDE2QXJyYXkpIHtcbiAgICBpZiAoYXJyLnNsaWNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBhcnIuc2xpY2Uoc3RhcnQsIGVuZCkuYnVmZmVyO1xuICAgIH1cblxuICAgIGxldCByZXQgPSBuZXcgVWludDE2QXJyYXkoZW5kKTtcblxuICAgIGZvciAoOyBzdGFydCA8IGVuZDsgc3RhcnQrKykge1xuICAgICAgcmV0W3N0YXJ0XSAgPSBhcnJbc3RhcnRdO1xuICAgIH1cblxuICAgIHJldHVybiByZXQuYnVmZmVyO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iXX0=

@@ -38,4 +38,4 @@ import { Opaque, SymbolTable, RuntimeResolver, CompileTimeConstants } from "@glimmer/interfaces";

}
export declare class RuntimeConstants<Specifier> {
resolver: RuntimeResolver<Specifier>;
export declare class RuntimeConstants<TemplateMeta> {
resolver: RuntimeResolver<TemplateMeta>;
protected strings: string[];

@@ -49,3 +49,3 @@ protected arrays: number[][] | EMPTY_ARRAY;

protected negatives: number[];
constructor(resolver: RuntimeResolver<Specifier>, pool: ConstantPool);
constructor(resolver: RuntimeResolver<TemplateMeta>, pool: ConstantPool);
getFloat(value: number): number;

@@ -60,5 +60,5 @@ getNegative(value: number): number;

}
export declare class Constants<Specifier> extends WriteOnlyConstants {
resolver: RuntimeResolver<Specifier>;
constructor(resolver: RuntimeResolver<Specifier>, pool?: ConstantPool);
export declare class Constants<TemplateMeta> extends WriteOnlyConstants {
resolver: RuntimeResolver<TemplateMeta>;
constructor(resolver: RuntimeResolver<TemplateMeta>, pool?: ConstantPool);
getFloat(value: number): number;

@@ -65,0 +65,0 @@ getNegative(value: number): number;

import { Unique, RuntimeResolver as IResolver } from '@glimmer/interfaces';
export declare type Specifier = Unique<'Specifier'>;
export declare type TemplateMeta = Unique<'TemplateMeta'>;
export declare type Referrer = Unique<'Referrer'>;
export declare type Resolver = IResolver<Specifier>;
export declare type Resolver = IResolver<TemplateMeta>;

@@ -1,4 +0,9 @@

import { CompileTimeProgram, VMHandle } from "@glimmer/interfaces";
import { Constants, WriteOnlyConstants, RuntimeConstants } from './constants';
import { CompileTimeProgram, VMHandle, RuntimeResolver } from "@glimmer/interfaces";
import { Constants, WriteOnlyConstants, RuntimeConstants, ConstantPool } from './constants';
import { Opcode } from './opcode';
export interface SerializedHeap {
buffer: ArrayBuffer;
table: number[];
handle: number;
}
/**

@@ -29,7 +34,3 @@ * The Heap is responsible for dynamically allocating

private handle;
constructor(serializedHeap?: {
buffer: ArrayBuffer;
table: number[];
handle: number;
});
constructor(serializedHeap?: SerializedHeap);
push(item: number): void;

@@ -54,7 +55,3 @@ getbyaddr(address: number): number;

compact(): void;
capture(): {
handle: number;
table: number[];
buffer: ArrayBuffer;
};
capture(): SerializedHeap;
}

@@ -69,12 +66,13 @@ export declare class WriteOnlyProgram implements CompileTimeProgram {

}
export declare class RuntimeProgram<Specifier> {
constants: RuntimeConstants<Specifier>;
export declare class RuntimeProgram<TemplateMeta> {
constants: RuntimeConstants<TemplateMeta>;
heap: Heap;
[key: number]: never;
static hydrate<TemplateMeta>(rawHeap: SerializedHeap, pool: ConstantPool, resolver: RuntimeResolver<TemplateMeta>): RuntimeProgram<TemplateMeta>;
private _opcode;
constructor(constants: RuntimeConstants<Specifier>, heap: Heap);
constructor(constants: RuntimeConstants<TemplateMeta>, heap: Heap);
opcode(offset: number): Opcode;
}
export declare class Program<Specifier> extends WriteOnlyProgram {
constants: Constants<Specifier>;
export declare class Program<TemplateMeta> extends WriteOnlyProgram {
constants: Constants<TemplateMeta>;
}
{
"name": "@glimmer/program",
"version": "0.29.10",
"version": "0.30.0",
"repository": "https://github.com/glimmerjs/glimmer-vm/tree/master/packages/@glimmer/program",
"dependencies": {
"@glimmer/util": "^0.29.10",
"@glimmer/interfaces": "^0.29.10",
"@glimmer/encoder": "^0.29.10"
"@glimmer/util": "^0.30.0",
"@glimmer/interfaces": "^0.30.0",
"@glimmer/encoder": "^0.30.0"
},

@@ -10,0 +10,0 @@ "devDependencies": {

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc