@ruvector/ruvllm 2.5.6 → 2.5.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +282 -282
- package/bin/cli.js +1020 -1020
- package/dist/cjs/benchmarks/embedding-benchmark.js +8 -8
- package/dist/cjs/benchmarks/index.js +5 -5
- package/dist/cjs/benchmarks/model-comparison.js +15 -25
- package/dist/cjs/benchmarks/routing-benchmark.js +5 -5
- package/dist/cjs/contrastive.js +78 -78
- package/dist/cjs/engine.js +13 -13
- package/dist/cjs/export.js +31 -31
- package/dist/cjs/federated.js +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/intelligence.js +8 -18
- package/dist/cjs/lora.js +1 -1
- package/dist/cjs/models.js +13 -23
- package/dist/cjs/native.js +5 -4
- package/dist/cjs/session.js +1 -1
- package/dist/cjs/simd.js +1 -1
- package/dist/cjs/sona.js +1 -1
- package/dist/cjs/streaming.d.ts +1 -0
- package/dist/cjs/streaming.d.ts.map +1 -1
- package/dist/cjs/streaming.js +3 -3
- package/dist/cjs/training.d.ts +32 -4
- package/dist/cjs/training.d.ts.map +1 -1
- package/dist/cjs/training.js +59 -9
- package/dist/cjs/types.js +1 -1
- package/dist/esm/benchmarks/embedding-benchmark.js +1 -1
- package/dist/esm/benchmarks/index.js +1 -1
- package/dist/esm/benchmarks/model-comparison.js +1 -1
- package/dist/esm/benchmarks/routing-benchmark.js +1 -1
- package/dist/esm/contrastive.js +70 -70
- package/dist/esm/engine.js +13 -13
- package/dist/esm/export.js +31 -31
- package/dist/esm/federated.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/intelligence.js +1 -1
- package/dist/esm/lora.js +1 -1
- package/dist/esm/models.js +1 -1
- package/dist/esm/native.js +1 -1
- package/dist/esm/session.js +1 -1
- package/dist/esm/simd.js +1 -1
- package/dist/esm/sona.js +1 -1
- package/dist/esm/streaming.d.ts +1 -0
- package/dist/esm/streaming.d.ts.map +1 -1
- package/dist/esm/streaming.js +1 -1
- package/dist/esm/training.d.ts +32 -4
- package/dist/esm/training.d.ts.map +1 -1
- package/dist/esm/training.js +59 -9
- package/dist/esm/types.js +1 -1
- package/package.json +133 -133
- package/scripts/ensemble-model-compare.js +287 -287
- package/scripts/huggingface/README.md +537 -537
- package/scripts/huggingface/publish.sh +112 -112
- package/scripts/hybrid-model-compare.js +373 -373
- package/scripts/improved-model-compare.js +288 -288
- package/scripts/optimized-model-compare.js +364 -364
- package/scripts/real-model-compare.js +280 -280
- package/scripts/training/agentic-flow-capabilities.json +329 -329
- package/scripts/training/claude-code-synth.js +505 -505
- package/scripts/training/claude-flow-capabilities.json +1322 -1322
- package/scripts/training/claude-hard-negatives.js +222 -222
- package/scripts/training/contrastive-finetune.js +517 -517
- package/scripts/training/ecosystem-triplets.jsonl +1466 -1466
- package/scripts/training/generate-ecosystem-triplets.js +1324 -1324
- package/scripts/training/routing-dataset.js +634 -634
- package/scripts/training/ruvector-capabilities.json +798 -798
- package/scripts/training/validate-ecosystem.js +381 -381
- package/scripts/training/validation-results.json +22 -22
package/dist/cjs/lora.js
CHANGED
|
@@ -491,4 +491,4 @@ class LoraManager {
|
|
|
491
491
|
}
|
|
492
492
|
}
|
|
493
493
|
exports.LoraManager = LoraManager;
|
|
494
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9yYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb3JhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQkc7OztBQUlIOztHQUVHO0FBQ0gsTUFBTSxtQkFBbUIsR0FBeUI7SUFDaEQsSUFBSSxFQUFFLENBQUM7SUFDUCxLQUFLLEVBQUUsRUFBRTtJQUNULE9BQU8sRUFBRSxHQUFHO0lBQ1osYUFBYSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQztDQUNsQyxDQUFDO0FBOEJGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSCxNQUFhLFdBQVc7SUFRdEIsWUFBWSxNQUE0QixFQUFFLFFBQVEsR0FBRyxHQUFHLEVBQUUsU0FBUyxHQUFHLEdBQUc7UUFIakUsa0JBQWEsR0FBNkIsSUFBSSxDQUFDO1FBQy9DLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFHOUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLEdBQUcsbUJBQW1CLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUNwRCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUUzQixxQkFBcUI7UUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxPQUFPLENBQUMsS0FBZTtRQUNyQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztRQUM5QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBRXJDLG1EQUFtRDtRQUNuRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7UUFFNUUsa0RBQWtEO1FBQ2xELE1BQU0sTUFBTSxHQUFHLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM5QixJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDWixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUNwQyxxQ0FBcUM7WUFDckMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ1YsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDakIsT0FBTyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQ3BCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7d0JBQ3hDLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNuQyxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQzNCLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDekIsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDakMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDakMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxDQUFDO2dCQUNELE9BQU8sQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO29CQUNwQixHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbkMsQ0FBQztZQUNILENBQUM7WUFDRCxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ2xCLENBQUM7UUFFRCxpQ0FBaUM7UUFDakMsTUFBTSxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQ2pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDeEMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUM5QixLQUFLLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuQyxDQUFDO1lBQ0Qsa0RBQWtEO1lBQ2xELE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hELENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZLENBQUMsTUFBa0I7UUFDN0IsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVEsQ0FBQyxLQUFlLEVBQUUsVUFBb0IsRUFBRSxZQUFvQjtRQUNsRSxJQUFJLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFFMUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDOUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVsRCw0Q0FBNEM7UUFDNUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM5QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkQsQ0FBQztRQUNILENBQUM7UUFFRCx3Q0FBd0M7UUFDeEMsTUFBTSxLQUFLLEdBQWUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDOUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDeEMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUN4RSxDQUFDO1FBQ0gsQ0FBQztRQUVELHdDQUF3QztRQUN4QyxNQUFNLFVBQVUsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzlCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ3hDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUMxRixDQUFDO1FBQ0gsQ0FBQztRQUVELHVDQUF1QztRQUN2QyxNQUFNLEtBQUssR0FBZSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0UsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzdCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDOUIsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekMsQ0FBQztRQUNILENBQUM7UUFFRCxpQkFBaUI7UUFDakIsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM3QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFlBQVksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZELFNBQVMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLENBQUM7UUFDSCxDQUFDO1FBQ0QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzlCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFlBQVksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZELFNBQVMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLENBQUM7UUFDSCxDQUFDO1FBRUQsdUJBQXVCO1FBQ3ZCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhLENBQUMsWUFBWSxHQUFHLEtBQUs7UUFDaEMsSUFBSSxDQUFDLGFBQWEsR0FBRztZQUNuQixJQUFJLEVBQUUsQ0FBQztZQUNQLFlBQVk7WUFDWixLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRixLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsRixXQUFXLEVBQUUsRUFBRTtTQUNoQixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUNULE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDakMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNO1FBQ0osSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsU0FBUztRQUNQLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxVQUFVO1FBQ1IsT0FBTztZQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDOUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztZQUM5QyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPO1NBQzlCLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxVQUFVLENBQUMsT0FBb0I7UUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNiLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztZQUN6QyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDekMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1NBQ3pCLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUs7UUFDSCxNQUFNLEtBQUssR0FBZSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQzthQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ1YsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFNUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDOUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN2QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUN4QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQzlCLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDckUsQ0FBQztnQkFDRCxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDdEMsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWE7UUFDWCxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUs7UUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUs7UUFDSCxNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVFLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDdEMsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNwQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1NBQ3BCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBWTtRQUMxQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsSUFBSSxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNsQyxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBRTlCLDBEQUEwRDtRQUMxRCxNQUFNLEtBQUssR0FBZSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQzthQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ1YsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUNSLEtBQUssQ0FBQyxJQUFJLENBQUM7YUFDUixJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQ1AsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUNuRSxDQUFDO1FBRUosTUFBTSxLQUFLLEdBQWUsS0FBSyxDQUFDLElBQUksQ0FBQzthQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ1YsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFNUMsT0FBTztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSTtTQUM5QyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBdlRELGtDQXVUQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFhLFdBQVc7SUFLdEIsWUFBWSxhQUFtQztRQUp2QyxhQUFRLEdBQTZCLElBQUksR0FBRyxFQUFFLENBQUM7UUFDL0Msb0JBQWUsR0FBa0IsSUFBSSxDQUFDO1FBSTVDLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxHQUFHLG1CQUFtQixFQUFFLEdBQUcsYUFBYSxFQUFFLENBQUM7SUFDcEUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUSxDQUFDLEVBQVUsRUFBRSxPQUFvQjtRQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLEVBQVUsRUFBRSxNQUE0QixFQUFFLFFBQWlCLEVBQUUsU0FBa0I7UUFDcEYsTUFBTSxZQUFZLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUMxRCxNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7T0FFRztJQUNILEdBQUcsQ0FBQyxFQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsRUFBVTtRQUNmLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM5QixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRLENBQUMsRUFBVTtRQUNqQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7WUFDMUIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7O09BRUc7SUFDSCxVQUFVO1FBQ1IsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3ZGLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsT0FBTyxDQUFDLEtBQWU7UUFDckIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2hDLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSTtRQUNGLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSztRQUNILE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsU0FBUztRQUNQLEtBQUssTUFBTSxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQzdDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUNULEtBQUssTUFBTSxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQzdDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYSxDQUFDLEdBQWEsRUFBRSxRQUFnQjtRQUMzQyxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFrQixDQUFDO1FBQ3ZGLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFdkMsNEJBQTRCO1FBQzVCLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFcEMsc0NBQXNDO1FBQ3RDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDekMsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBRTlDLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxHQUFHLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztnQkFDdkYsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLEdBQUcsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO29CQUNqRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN6RixDQUFDO1lBQ0gsQ0FBQztZQUNELEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxHQUFHLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztnQkFDdkYsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLEdBQUcsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO29CQUNqRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN6RixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUs7UUFNSCxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDcEIsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBRXBCLEtBQUssTUFBTSxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQzdDLFdBQVcsSUFBSSxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO2dCQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ3hDLENBQUM7UUFFRCxPQUFPO1lBQ0wsYUFBYSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSTtZQUNqQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGVBQWU7WUFDbkMsZUFBZSxFQUFFLFdBQVc7WUFDNUIsV0FBVztTQUNaLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztJQUM5QixDQUFDO0NBQ0Y7QUFuTEQsa0NBbUxDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIExvUkEgKExvdy1SYW5rIEFkYXB0YXRpb24pIFJ1bnRpbWVcclxuICpcclxuICogRWZmaWNpZW50IHBhcmFtZXRlci1lZmZpY2llbnQgZmluZS10dW5pbmcgYWRhcHRlcnMgZm9yIExMTXMuXHJcbiAqIFN1cHBvcnRzIG1pY3JvLUxvUkEgKGZhc3QsIHNtYWxsIHVwZGF0ZXMpIGFuZCBiYXNlLUxvUkEgKGRlZXBlciBhZGFwdGF0aW9uKS5cclxuICpcclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBpbXBvcnQgeyBMb3JhQWRhcHRlciwgTG9yYU1hbmFnZXIgfSBmcm9tICdAcnV2ZWN0b3IvcnV2bGxtJztcclxuICpcclxuICogLy8gQ3JlYXRlIGFkYXB0ZXJcclxuICogY29uc3QgYWRhcHRlciA9IG5ldyBMb3JhQWRhcHRlcih7XHJcbiAqICAgcmFuazogOCxcclxuICogICBhbHBoYTogMTYsXHJcbiAqICAgZHJvcG91dDogMC4xLFxyXG4gKiAgIHRhcmdldE1vZHVsZXM6IFsncXVlcnknLCAndmFsdWUnXSxcclxuICogfSk7XHJcbiAqXHJcbiAqIC8vIEFwcGx5IHRvIGhpZGRlbiBzdGF0ZXNcclxuICogY29uc3Qgb3V0cHV0ID0gYWRhcHRlci5mb3J3YXJkKGhpZGRlblN0YXRlcyk7XHJcbiAqXHJcbiAqIC8vIE1hbmFnZSBtdWx0aXBsZSBhZGFwdGVyc1xyXG4gKiBjb25zdCBtYW5hZ2VyID0gbmV3IExvcmFNYW5hZ2VyKCk7XHJcbiAqIG1hbmFnZXIucmVnaXN0ZXIoJ3Rhc2stMScsIGFkYXB0ZXIpO1xyXG4gKiBtYW5hZ2VyLmFjdGl2YXRlKCd0YXNrLTEnKTtcclxuICogYGBgXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgTG9SQUNvbmZpZywgRW1iZWRkaW5nIH0gZnJvbSAnLi90eXBlcyc7XHJcblxyXG4vKipcclxuICogRGVmYXVsdCBMb1JBIGNvbmZpZ3VyYXRpb25cclxuICovXHJcbmNvbnN0IERFRkFVTFRfTE9SQV9DT05GSUc6IFJlcXVpcmVkPExvUkFDb25maWc+ID0ge1xyXG4gIHJhbms6IDgsXHJcbiAgYWxwaGE6IDE2LFxyXG4gIGRyb3BvdXQ6IDAuMSxcclxuICB0YXJnZXRNb2R1bGVzOiBbJ3F1ZXJ5JywgJ3ZhbHVlJ10sXHJcbn07XHJcblxyXG4vKipcclxuICogTG9SQSBhZGFwdGVyIHdlaWdodHNcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTG9yYVdlaWdodHMge1xyXG4gIC8qKiBEb3duIHByb2plY3Rpb24gbWF0cml4IChkIHggcikgKi9cclxuICBsb3JhQTogbnVtYmVyW11bXTtcclxuICAvKiogVXAgcHJvamVjdGlvbiBtYXRyaXggKHIgeCBkKSAqL1xyXG4gIGxvcmFCOiBudW1iZXJbXVtdO1xyXG4gIC8qKiBTY2FsaW5nIGZhY3RvciAqL1xyXG4gIHNjYWxpbmc6IG51bWJlcjtcclxufVxyXG5cclxuLyoqXHJcbiAqIExvUkEgdHJhaW5pbmcgc3RhdGVcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTG9yYVRyYWluaW5nU3RhdGUge1xyXG4gIC8qKiBDdXJyZW50IHN0ZXAgKi9cclxuICBzdGVwOiBudW1iZXI7XHJcbiAgLyoqIExlYXJuaW5nIHJhdGUgKi9cclxuICBsZWFybmluZ1JhdGU6IG51bWJlcjtcclxuICAvKiogQWNjdW11bGF0ZWQgZ3JhZGllbnRzIGZvciBBICovXHJcbiAgZ3JhZEE6IG51bWJlcltdW107XHJcbiAgLyoqIEFjY3VtdWxhdGVkIGdyYWRpZW50cyBmb3IgQiAqL1xyXG4gIGdyYWRCOiBudW1iZXJbXVtdO1xyXG4gIC8qKiBMb3NzIGhpc3RvcnkgKi9cclxuICBsb3NzSGlzdG9yeTogbnVtYmVyW107XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBMb1JBIEFkYXB0ZXJcclxuICpcclxuICogSW1wbGVtZW50cyBsb3ctcmFuayBkZWNvbXBvc2l0aW9uIGZvciBwYXJhbWV0ZXItZWZmaWNpZW50IGZpbmUtdHVuaW5nLlxyXG4gKiBXJyA9IFcgKyBCQSB3aGVyZSBBIGlzIChkIHggcikgYW5kIEIgaXMgKHIgeCBkKSwgciA8PCBkXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgYWRhcHRlciA9IG5ldyBMb3JhQWRhcHRlcih7XHJcbiAqICAgcmFuazogOCxcclxuICogICBhbHBoYTogMTYsXHJcbiAqICAgaW5wdXREaW06IDc2OCxcclxuICogICBvdXRwdXREaW06IDc2OCxcclxuICogfSk7XHJcbiAqXHJcbiAqIC8vIEZvcndhcmQgcGFzc1xyXG4gKiBjb25zdCBvdXRwdXQgPSBhZGFwdGVyLmZvcndhcmQoaW5wdXQpO1xyXG4gKlxyXG4gKiAvLyBUcmFpbmluZyBzdGVwXHJcbiAqIGFkYXB0ZXIuYmFja3dhcmQoaW5wdXQsIGdyYWRPdXRwdXQsIDAuMDAxKTtcclxuICogYGBgXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgTG9yYUFkYXB0ZXIge1xyXG4gIHByaXZhdGUgY29uZmlnOiBSZXF1aXJlZDxMb1JBQ29uZmlnPjtcclxuICBwcml2YXRlIGlucHV0RGltOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBvdXRwdXREaW06IG51bWJlcjtcclxuICBwcml2YXRlIHdlaWdodHM6IExvcmFXZWlnaHRzO1xyXG4gIHByaXZhdGUgdHJhaW5pbmdTdGF0ZTogTG9yYVRyYWluaW5nU3RhdGUgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGZyb3plbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihjb25maWc/OiBQYXJ0aWFsPExvUkFDb25maWc+LCBpbnB1dERpbSA9IDI1Niwgb3V0cHV0RGltID0gMjU2KSB7XHJcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4uREVGQVVMVF9MT1JBX0NPTkZJRywgLi4uY29uZmlnIH07XHJcbiAgICB0aGlzLmlucHV0RGltID0gaW5wdXREaW07XHJcbiAgICB0aGlzLm91dHB1dERpbSA9IG91dHB1dERpbTtcclxuXHJcbiAgICAvLyBJbml0aWFsaXplIHdlaWdodHNcclxuICAgIHRoaXMud2VpZ2h0cyA9IHRoaXMuaW5pdGlhbGl6ZVdlaWdodHMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvcndhcmQgcGFzcyB0aHJvdWdoIExvUkEgYWRhcHRlclxyXG4gICAqIE9QVElNSVpFRDogVXNlcyBGbG9hdDY0QXJyYXkgYW5kIGxvb3AgdW5yb2xsaW5nXHJcbiAgICpcclxuICAgKiBvdXRwdXQgPSBpbnB1dCArIHNjYWxpbmcgKiAoaW5wdXQgQCBBIEAgQilcclxuICAgKi9cclxuICBmb3J3YXJkKGlucHV0OiBudW1iZXJbXSk6IG51bWJlcltdIHtcclxuICAgIGNvbnN0IHJhbmsgPSB0aGlzLmNvbmZpZy5yYW5rO1xyXG4gICAgY29uc3QgZGltID0gTWF0aC5taW4oaW5wdXQubGVuZ3RoLCB0aGlzLmlucHV0RGltKTtcclxuICAgIGNvbnN0IHNjYWxpbmcgPSB0aGlzLndlaWdodHMuc2NhbGluZztcclxuXHJcbiAgICAvLyBBcHBseSBkcm9wb3V0IGR1cmluZyB0cmFpbmluZyAoc2ltcGxpZmllZCBjaGVjaylcclxuICAgIGNvbnN0IGFwcGx5RHJvcG91dCA9IHRoaXMudHJhaW5pbmdTdGF0ZSAhPT0gbnVsbCAmJiB0aGlzLmNvbmZpZy5kcm9wb3V0ID4gMDtcclxuXHJcbiAgICAvLyBpbnB1dCBAIEEgKGQgLT4gcikgLSB1c2UgdHlwZWQgYXJyYXkgZm9yIGhpZGRlblxyXG4gICAgY29uc3QgaGlkZGVuID0gbmV3IEZsb2F0NjRBcnJheShyYW5rKTtcclxuICAgIGZvciAobGV0IHIgPSAwOyByIDwgcmFuazsgcisrKSB7XHJcbiAgICAgIGxldCBzdW0gPSAwO1xyXG4gICAgICBjb25zdCBsb3JhQUNvbCA9IHRoaXMud2VpZ2h0cy5sb3JhQTtcclxuICAgICAgLy8gVW5yb2xsIGxvb3AgZm9yIGJldHRlciBwZXJmb3JtYW5jZVxyXG4gICAgICBsZXQgaSA9IDA7XHJcbiAgICAgIGlmIChhcHBseURyb3BvdXQpIHtcclxuICAgICAgICBmb3IgKDsgaSA8IGRpbTsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAoTWF0aC5yYW5kb20oKSA+IHRoaXMuY29uZmlnLmRyb3BvdXQpIHtcclxuICAgICAgICAgICAgc3VtICs9IGlucHV0W2ldICogbG9yYUFDb2xbaV1bcl07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZvciAoOyBpICsgMyA8IGRpbTsgaSArPSA0KSB7XHJcbiAgICAgICAgICBzdW0gKz0gaW5wdXRbaV0gKiBsb3JhQUNvbFtpXVtyXSArXHJcbiAgICAgICAgICAgICAgICAgaW5wdXRbaSArIDFdICogbG9yYUFDb2xbaSArIDFdW3JdICtcclxuICAgICAgICAgICAgICAgICBpbnB1dFtpICsgMl0gKiBsb3JhQUNvbFtpICsgMl1bcl0gK1xyXG4gICAgICAgICAgICAgICAgIGlucHV0W2kgKyAzXSAqIGxvcmFBQ29sW2kgKyAzXVtyXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yICg7IGkgPCBkaW07IGkrKykge1xyXG4gICAgICAgICAgc3VtICs9IGlucHV0W2ldICogbG9yYUFDb2xbaV1bcl07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGhpZGRlbltyXSA9IHN1bTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBoaWRkZW4gQCBCIChyIC0+IGQpICsgcmVzaWR1YWxcclxuICAgIGNvbnN0IG91dHB1dCA9IG5ldyBBcnJheSh0aGlzLm91dHB1dERpbSk7XHJcbiAgICBjb25zdCBsb3JhQiA9IHRoaXMud2VpZ2h0cy5sb3JhQjtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vdXRwdXREaW07IGkrKykge1xyXG4gICAgICBsZXQgZGVsdGEgPSAwO1xyXG4gICAgICBmb3IgKGxldCByID0gMDsgciA8IHJhbms7IHIrKykge1xyXG4gICAgICAgIGRlbHRhICs9IGhpZGRlbltyXSAqIGxvcmFCW3JdW2ldO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIEFkZCBzY2FsZWQgZGVsdGEgdG8gaW5wdXQgKHJlc2lkdWFsIGNvbm5lY3Rpb24pXHJcbiAgICAgIG91dHB1dFtpXSA9IChpbnB1dFtpXSB8fCAwKSArIHNjYWxpbmcgKiBkZWx0YTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gb3V0cHV0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRm9yd2FyZCB3aXRoIGJhdGNoIHByb2Nlc3NpbmdcclxuICAgKi9cclxuICBmb3J3YXJkQmF0Y2goaW5wdXRzOiBudW1iZXJbXVtdKTogbnVtYmVyW11bXSB7XHJcbiAgICByZXR1cm4gaW5wdXRzLm1hcChpbnB1dCA9PiB0aGlzLmZvcndhcmQoaW5wdXQpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJhY2t3YXJkIHBhc3MgYW5kIHdlaWdodCB1cGRhdGVcclxuICAgKi9cclxuICBiYWNrd2FyZChpbnB1dDogbnVtYmVyW10sIGdyYWRPdXRwdXQ6IG51bWJlcltdLCBsZWFybmluZ1JhdGU6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy5mcm96ZW4pIHJldHVybiAwO1xyXG5cclxuICAgIGNvbnN0IHJhbmsgPSB0aGlzLmNvbmZpZy5yYW5rO1xyXG4gICAgY29uc3QgZGltID0gTWF0aC5taW4oaW5wdXQubGVuZ3RoLCB0aGlzLmlucHV0RGltKTtcclxuXHJcbiAgICAvLyBDb21wdXRlIGhpZGRlbiBhY3RpdmF0aW9ucyAoZm9yIGdyYWRpZW50KVxyXG4gICAgY29uc3QgaGlkZGVuID0gbmV3IEFycmF5KHJhbmspLmZpbGwoMCk7XHJcbiAgICBmb3IgKGxldCByID0gMDsgciA8IHJhbms7IHIrKykge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpbTsgaSsrKSB7XHJcbiAgICAgICAgaGlkZGVuW3JdICs9IGlucHV0W2ldICogdGhpcy53ZWlnaHRzLmxvcmFBW2ldW3JdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gR3JhZGllbnQgZm9yIEI6IGhpZGRlbl5UIEAgZ3JhZE91dHB1dFxyXG4gICAgY29uc3QgZ3JhZEI6IG51bWJlcltdW10gPSBBcnJheShyYW5rKS5maWxsKG51bGwpLm1hcCgoKSA9PiBBcnJheSh0aGlzLm91dHB1dERpbSkuZmlsbCgwKSk7XHJcbiAgICBmb3IgKGxldCByID0gMDsgciA8IHJhbms7IHIrKykge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3V0cHV0RGltOyBpKyspIHtcclxuICAgICAgICBncmFkQltyXVtpXSA9IGhpZGRlbltyXSAqIChncmFkT3V0cHV0W2ldIHx8IDApICogdGhpcy53ZWlnaHRzLnNjYWxpbmc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBHcmFkaWVudCBmb3IgaGlkZGVuOiBncmFkT3V0cHV0IEAgQl5UXHJcbiAgICBjb25zdCBncmFkSGlkZGVuID0gbmV3IEFycmF5KHJhbmspLmZpbGwoMCk7XHJcbiAgICBmb3IgKGxldCByID0gMDsgciA8IHJhbms7IHIrKykge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3V0cHV0RGltOyBpKyspIHtcclxuICAgICAgICBncmFkSGlkZGVuW3JdICs9IChncmFkT3V0cHV0W2ldIHx8IDApICogdGhpcy53ZWlnaHRzLmxvcmFCW3JdW2ldICogdGhpcy53ZWlnaHRzLnNjYWxpbmc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBHcmFkaWVudCBmb3IgQTogaW5wdXReVCBAIGdyYWRIaWRkZW5cclxuICAgIGNvbnN0IGdyYWRBOiBudW1iZXJbXVtdID0gQXJyYXkoZGltKS5maWxsKG51bGwpLm1hcCgoKSA9PiBBcnJheShyYW5rKS5maWxsKDApKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGltOyBpKyspIHtcclxuICAgICAgZm9yIChsZXQgciA9IDA7IHIgPCByYW5rOyByKyspIHtcclxuICAgICAgICBncmFkQVtpXVtyXSA9IGlucHV0W2ldICogZ3JhZEhpZGRlbltyXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFVwZGF0ZSB3ZWlnaHRzXHJcbiAgICBsZXQgdG90YWxHcmFkID0gMDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGltOyBpKyspIHtcclxuICAgICAgZm9yIChsZXQgciA9IDA7IHIgPCByYW5rOyByKyspIHtcclxuICAgICAgICB0aGlzLndlaWdodHMubG9yYUFbaV1bcl0gLT0gbGVhcm5pbmdSYXRlICogZ3JhZEFbaV1bcl07XHJcbiAgICAgICAgdG90YWxHcmFkICs9IE1hdGguYWJzKGdyYWRBW2ldW3JdKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgciA9IDA7IHIgPCByYW5rOyByKyspIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm91dHB1dERpbTsgaSsrKSB7XHJcbiAgICAgICAgdGhpcy53ZWlnaHRzLmxvcmFCW3JdW2ldIC09IGxlYXJuaW5nUmF0ZSAqIGdyYWRCW3JdW2ldO1xyXG4gICAgICAgIHRvdGFsR3JhZCArPSBNYXRoLmFicyhncmFkQltyXVtpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBUcmFjayB0cmFpbmluZyBzdGF0ZVxyXG4gICAgaWYgKHRoaXMudHJhaW5pbmdTdGF0ZSkge1xyXG4gICAgICB0aGlzLnRyYWluaW5nU3RhdGUuc3RlcCsrO1xyXG4gICAgICB0aGlzLnRyYWluaW5nU3RhdGUubG9zc0hpc3RvcnkucHVzaCh0b3RhbEdyYWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0b3RhbEdyYWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdGFydCB0cmFpbmluZyBtb2RlXHJcbiAgICovXHJcbiAgc3RhcnRUcmFpbmluZyhsZWFybmluZ1JhdGUgPSAwLjAwMSk6IHZvaWQge1xyXG4gICAgdGhpcy50cmFpbmluZ1N0YXRlID0ge1xyXG4gICAgICBzdGVwOiAwLFxyXG4gICAgICBsZWFybmluZ1JhdGUsXHJcbiAgICAgIGdyYWRBOiBBcnJheSh0aGlzLmlucHV0RGltKS5maWxsKG51bGwpLm1hcCgoKSA9PiBBcnJheSh0aGlzLmNvbmZpZy5yYW5rKS5maWxsKDApKSxcclxuICAgICAgZ3JhZEI6IEFycmF5KHRoaXMuY29uZmlnLnJhbmspLmZpbGwobnVsbCkubWFwKCgpID0+IEFycmF5KHRoaXMub3V0cHV0RGltKS5maWxsKDApKSxcclxuICAgICAgbG9zc0hpc3Rvcnk6IFtdLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVuZCB0cmFpbmluZyBtb2RlXHJcbiAgICovXHJcbiAgZW5kVHJhaW5pbmcoKTogTG9yYVRyYWluaW5nU3RhdGUgfCBudWxsIHtcclxuICAgIGNvbnN0IHN0YXRlID0gdGhpcy50cmFpbmluZ1N0YXRlO1xyXG4gICAgdGhpcy50cmFpbmluZ1N0YXRlID0gbnVsbDtcclxuICAgIHJldHVybiBzdGF0ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZyZWV6ZSBhZGFwdGVyIChubyBtb3JlIHVwZGF0ZXMpXHJcbiAgICovXHJcbiAgZnJlZXplKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mcm96ZW4gPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVW5mcmVlemUgYWRhcHRlclxyXG4gICAqL1xyXG4gIHVuZnJlZXplKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mcm96ZW4gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIGZyb3plblxyXG4gICAqL1xyXG4gIGlzRnJvemVuKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZnJvemVuO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGFkYXB0ZXIgY29uZmlnXHJcbiAgICovXHJcbiAgZ2V0Q29uZmlnKCk6IFJlcXVpcmVkPExvUkFDb25maWc+IHtcclxuICAgIHJldHVybiB7IC4uLnRoaXMuY29uZmlnIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgYWRhcHRlciB3ZWlnaHRzXHJcbiAgICovXHJcbiAgZ2V0V2VpZ2h0cygpOiBMb3JhV2VpZ2h0cyB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBsb3JhQTogdGhpcy53ZWlnaHRzLmxvcmFBLm1hcChyb3cgPT4gWy4uLnJvd10pLFxyXG4gICAgICBsb3JhQjogdGhpcy53ZWlnaHRzLmxvcmFCLm1hcChyb3cgPT4gWy4uLnJvd10pLFxyXG4gICAgICBzY2FsaW5nOiB0aGlzLndlaWdodHMuc2NhbGluZyxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgYWRhcHRlciB3ZWlnaHRzXHJcbiAgICovXHJcbiAgc2V0V2VpZ2h0cyh3ZWlnaHRzOiBMb3JhV2VpZ2h0cyk6IHZvaWQge1xyXG4gICAgdGhpcy53ZWlnaHRzID0ge1xyXG4gICAgICBsb3JhQTogd2VpZ2h0cy5sb3JhQS5tYXAocm93ID0+IFsuLi5yb3ddKSxcclxuICAgICAgbG9yYUI6IHdlaWdodHMubG9yYUIubWFwKHJvdyA9PiBbLi4ucm93XSksXHJcbiAgICAgIHNjYWxpbmc6IHdlaWdodHMuc2NhbGluZyxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXJnZSBhZGFwdGVyIGludG8gYmFzZSB3ZWlnaHRzXHJcbiAgICpcclxuICAgKiBSZXR1cm5zIGRlbHRhIHRvIGFkZCB0byBiYXNlIG1vZGVsIHdlaWdodHNcclxuICAgKi9cclxuICBtZXJnZSgpOiBudW1iZXJbXVtdIHtcclxuICAgIGNvbnN0IGRlbHRhOiBudW1iZXJbXVtdID0gQXJyYXkodGhpcy5pbnB1dERpbSlcclxuICAgICAgLmZpbGwobnVsbClcclxuICAgICAgLm1hcCgoKSA9PiBBcnJheSh0aGlzLm91dHB1dERpbSkuZmlsbCgwKSk7XHJcblxyXG4gICAgY29uc3QgcmFuayA9IHRoaXMuY29uZmlnLnJhbms7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuaW5wdXREaW07IGkrKykge1xyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMub3V0cHV0RGltOyBqKyspIHtcclxuICAgICAgICBmb3IgKGxldCByID0gMDsgciA8IHJhbms7IHIrKykge1xyXG4gICAgICAgICAgZGVsdGFbaV1bal0gKz0gdGhpcy53ZWlnaHRzLmxvcmFBW2ldW3JdICogdGhpcy53ZWlnaHRzLmxvcmFCW3JdW2pdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkZWx0YVtpXVtqXSAqPSB0aGlzLndlaWdodHMuc2NhbGluZztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkZWx0YTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBudW1iZXIgb2YgdHJhaW5hYmxlIHBhcmFtZXRlcnNcclxuICAgKi9cclxuICBudW1QYXJhbWV0ZXJzKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gKHRoaXMuaW5wdXREaW0gKiB0aGlzLmNvbmZpZy5yYW5rKSArICh0aGlzLmNvbmZpZy5yYW5rICogdGhpcy5vdXRwdXREaW0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzZXQgdG8gaW5pdGlhbCB3ZWlnaHRzXHJcbiAgICovXHJcbiAgcmVzZXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLndlaWdodHMgPSB0aGlzLmluaXRpYWxpemVXZWlnaHRzKCk7XHJcbiAgICB0aGlzLnRyYWluaW5nU3RhdGUgPSBudWxsO1xyXG4gICAgdGhpcy5mcm96ZW4gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsb25lIGFkYXB0ZXJcclxuICAgKi9cclxuICBjbG9uZSgpOiBMb3JhQWRhcHRlciB7XHJcbiAgICBjb25zdCBhZGFwdGVyID0gbmV3IExvcmFBZGFwdGVyKHRoaXMuY29uZmlnLCB0aGlzLmlucHV0RGltLCB0aGlzLm91dHB1dERpbSk7XHJcbiAgICBhZGFwdGVyLnNldFdlaWdodHModGhpcy5nZXRXZWlnaHRzKCkpO1xyXG4gICAgcmV0dXJuIGFkYXB0ZXI7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXJpYWxpemUgdG8gSlNPTlxyXG4gICAqL1xyXG4gIHRvSlNPTigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgY29uZmlnOiB0aGlzLmNvbmZpZyxcclxuICAgICAgaW5wdXREaW06IHRoaXMuaW5wdXREaW0sXHJcbiAgICAgIG91dHB1dERpbTogdGhpcy5vdXRwdXREaW0sXHJcbiAgICAgIHdlaWdodHM6IHRoaXMud2VpZ2h0cyxcclxuICAgICAgZnJvemVuOiB0aGlzLmZyb3plbixcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVzZXJpYWxpemUgZnJvbSBKU09OXHJcbiAgICovXHJcbiAgc3RhdGljIGZyb21KU09OKGpzb246IHN0cmluZyk6IExvcmFBZGFwdGVyIHtcclxuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGpzb24pO1xyXG4gICAgY29uc3QgYWRhcHRlciA9IG5ldyBMb3JhQWRhcHRlcihkYXRhLmNvbmZpZywgZGF0YS5pbnB1dERpbSwgZGF0YS5vdXRwdXREaW0pO1xyXG4gICAgYWRhcHRlci5zZXRXZWlnaHRzKGRhdGEud2VpZ2h0cyk7XHJcbiAgICBpZiAoZGF0YS5mcm96ZW4pIGFkYXB0ZXIuZnJlZXplKCk7XHJcbiAgICByZXR1cm4gYWRhcHRlcjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVdlaWdodHMoKTogTG9yYVdlaWdodHMge1xyXG4gICAgY29uc3QgcmFuayA9IHRoaXMuY29uZmlnLnJhbms7XHJcblxyXG4gICAgLy8gS2FpbWluZyBpbml0aWFsaXphdGlvbiBmb3IgQSwgemVybyBpbml0aWFsaXphdGlvbiBmb3IgQlxyXG4gICAgY29uc3QgbG9yYUE6IG51bWJlcltdW10gPSBBcnJheSh0aGlzLmlucHV0RGltKVxyXG4gICAgICAuZmlsbChudWxsKVxyXG4gICAgICAubWFwKCgpID0+XHJcbiAgICAgICAgQXJyYXkocmFuaylcclxuICAgICAgICAgIC5maWxsKDApXHJcbiAgICAgICAgICAubWFwKCgpID0+IChNYXRoLnJhbmRvbSgpIC0gMC41KSAqIE1hdGguc3FydCgyIC8gdGhpcy5pbnB1dERpbSkpXHJcbiAgICAgICk7XHJcblxyXG4gICAgY29uc3QgbG9yYUI6IG51bWJlcltdW10gPSBBcnJheShyYW5rKVxyXG4gICAgICAuZmlsbChudWxsKVxyXG4gICAgICAubWFwKCgpID0+IEFycmF5KHRoaXMub3V0cHV0RGltKS5maWxsKDApKTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBsb3JhQSxcclxuICAgICAgbG9yYUIsXHJcbiAgICAgIHNjYWxpbmc6IHRoaXMuY29uZmlnLmFscGhhIC8gdGhpcy5jb25maWcucmFuayxcclxuICAgIH07XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogTG9SQSBNYW5hZ2VyIGZvciBtdWx0aXBsZSBhZGFwdGVyc1xyXG4gKlxyXG4gKiBNYW5hZ2VzIGEgY29sbGVjdGlvbiBvZiBMb1JBIGFkYXB0ZXJzIGZvciBkaWZmZXJlbnQgdGFza3MvZG9tYWlucy5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBMb3JhTWFuYWdlciB7XHJcbiAgcHJpdmF0ZSBhZGFwdGVyczogTWFwPHN0cmluZywgTG9yYUFkYXB0ZXI+ID0gbmV3IE1hcCgpO1xyXG4gIHByaXZhdGUgYWN0aXZlQWRhcHRlcklkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGRlZmF1bHRDb25maWc6IFJlcXVpcmVkPExvUkFDb25maWc+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihkZWZhdWx0Q29uZmlnPzogUGFydGlhbDxMb1JBQ29uZmlnPikge1xyXG4gICAgdGhpcy5kZWZhdWx0Q29uZmlnID0geyAuLi5ERUZBVUxUX0xPUkFfQ09ORklHLCAuLi5kZWZhdWx0Q29uZmlnIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWdpc3RlciBhIG5ldyBhZGFwdGVyXHJcbiAgICovXHJcbiAgcmVnaXN0ZXIoaWQ6IHN0cmluZywgYWRhcHRlcjogTG9yYUFkYXB0ZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuYWRhcHRlcnMuc2V0KGlkLCBhZGFwdGVyKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSBhbmQgcmVnaXN0ZXIgYSBuZXcgYWRhcHRlclxyXG4gICAqL1xyXG4gIGNyZWF0ZShpZDogc3RyaW5nLCBjb25maWc/OiBQYXJ0aWFsPExvUkFDb25maWc+LCBpbnB1dERpbT86IG51bWJlciwgb3V0cHV0RGltPzogbnVtYmVyKTogTG9yYUFkYXB0ZXIge1xyXG4gICAgY29uc3QgbWVyZ2VkQ29uZmlnID0geyAuLi50aGlzLmRlZmF1bHRDb25maWcsIC4uLmNvbmZpZyB9O1xyXG4gICAgY29uc3QgYWRhcHRlciA9IG5ldyBMb3JhQWRhcHRlcihtZXJnZWRDb25maWcsIGlucHV0RGltLCBvdXRwdXREaW0pO1xyXG4gICAgdGhpcy5yZWdpc3RlcihpZCwgYWRhcHRlcik7XHJcbiAgICByZXR1cm4gYWRhcHRlcjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBhZGFwdGVyIGJ5IElEXHJcbiAgICovXHJcbiAgZ2V0KGlkOiBzdHJpbmcpOiBMb3JhQWRhcHRlciB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5hZGFwdGVycy5nZXQoaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIGFkYXB0ZXJcclxuICAgKi9cclxuICByZW1vdmUoaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlQWRhcHRlcklkID09PSBpZCkge1xyXG4gICAgICB0aGlzLmFjdGl2ZUFkYXB0ZXJJZCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5hZGFwdGVycy5kZWxldGUoaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWN0aXZhdGUgYW4gYWRhcHRlclxyXG4gICAqL1xyXG4gIGFjdGl2YXRlKGlkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmFkYXB0ZXJzLmhhcyhpZCkpIHtcclxuICAgICAgdGhpcy5hY3RpdmVBZGFwdGVySWQgPSBpZDtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWFjdGl2YXRlIGN1cnJlbnQgYWRhcHRlclxyXG4gICAqL1xyXG4gIGRlYWN0aXZhdGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFjdGl2ZUFkYXB0ZXJJZCA9IG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgYWN0aXZlIGFkYXB0ZXJcclxuICAgKi9cclxuICBnZXRBY3RpdmUoKTogTG9yYUFkYXB0ZXIgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLmFjdGl2ZUFkYXB0ZXJJZCA/IHRoaXMuYWRhcHRlcnMuZ2V0KHRoaXMuYWN0aXZlQWRhcHRlcklkKSB8fCBudWxsIDogbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBhY3RpdmUgYWRhcHRlciBJRFxyXG4gICAqL1xyXG4gIGdldEFjdGl2ZUlkKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlQWRhcHRlcklkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQXBwbHkgYWN0aXZlIGFkYXB0ZXJcclxuICAgKi9cclxuICBmb3J3YXJkKGlucHV0OiBudW1iZXJbXSk6IG51bWJlcltdIHtcclxuICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuZ2V0QWN0aXZlKCk7XHJcbiAgICByZXR1cm4gYWN0aXZlID8gYWN0aXZlLmZvcndhcmQoaW5wdXQpIDogWy4uLmlucHV0XTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExpc3QgYWxsIGFkYXB0ZXIgSURzXHJcbiAgICovXHJcbiAgbGlzdCgpOiBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmFkYXB0ZXJzLmtleXMoKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgYWRhcHRlciBjb3VudFxyXG4gICAqL1xyXG4gIGNvdW50KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5hZGFwdGVycy5zaXplO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRnJlZXplIGFsbCBhZGFwdGVyc1xyXG4gICAqL1xyXG4gIGZyZWV6ZUFsbCgpOiB2b2lkIHtcclxuICAgIGZvciAoY29uc3QgYWRhcHRlciBvZiB0aGlzLmFkYXB0ZXJzLnZhbHVlcygpKSB7XHJcbiAgICAgIGFkYXB0ZXIuZnJlZXplKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVbmZyZWV6ZSBhbGwgYWRhcHRlcnNcclxuICAgKi9cclxuICB1bmZyZWV6ZUFsbCgpOiB2b2lkIHtcclxuICAgIGZvciAoY29uc3QgYWRhcHRlciBvZiB0aGlzLmFkYXB0ZXJzLnZhbHVlcygpKSB7XHJcbiAgICAgIGFkYXB0ZXIudW5mcmVlemUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1lcmdlIG11bHRpcGxlIGFkYXB0ZXJzIGludG8gb25lXHJcbiAgICovXHJcbiAgbWVyZ2VBZGFwdGVycyhpZHM6IHN0cmluZ1tdLCBvdXRwdXRJZDogc3RyaW5nKTogTG9yYUFkYXB0ZXIgfCBudWxsIHtcclxuICAgIGNvbnN0IGFkYXB0ZXJzID0gaWRzLm1hcChpZCA9PiB0aGlzLmFkYXB0ZXJzLmdldChpZCkpLmZpbHRlcihCb29sZWFuKSBhcyBMb3JhQWRhcHRlcltdO1xyXG4gICAgaWYgKGFkYXB0ZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgLy8gVXNlIGZpcnN0IGFkYXB0ZXIgYXMgYmFzZVxyXG4gICAgY29uc3QgbWVyZ2VkID0gYWRhcHRlcnNbMF0uY2xvbmUoKTtcclxuICAgIGNvbnN0IHdlaWdodHMgPSBtZXJnZWQuZ2V0V2VpZ2h0cygpO1xyXG5cclxuICAgIC8vIEF2ZXJhZ2Ugd2VpZ2h0cyBmcm9tIG90aGVyIGFkYXB0ZXJzXHJcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IGFkYXB0ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IG90aGVyV2VpZ2h0cyA9IGFkYXB0ZXJzW2ldLmdldFdlaWdodHMoKTtcclxuXHJcbiAgICAgIGZvciAobGV0IHJvdyA9IDA7IHJvdyA8IHdlaWdodHMubG9yYUEubGVuZ3RoICYmIHJvdyA8IG90aGVyV2VpZ2h0cy5sb3JhQS5sZW5ndGg7IHJvdysrKSB7XHJcbiAgICAgICAgZm9yIChsZXQgY29sID0gMDsgY29sIDwgd2VpZ2h0cy5sb3JhQVtyb3ddLmxlbmd0aCAmJiBjb2wgPCBvdGhlcldlaWdodHMubG9yYUFbcm93XS5sZW5ndGg7IGNvbCsrKSB7XHJcbiAgICAgICAgICB3ZWlnaHRzLmxvcmFBW3Jvd11bY29sXSA9ICh3ZWlnaHRzLmxvcmFBW3Jvd11bY29sXSArIG90aGVyV2VpZ2h0cy5sb3JhQVtyb3ddW2NvbF0pIC8gMjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZm9yIChsZXQgcm93ID0gMDsgcm93IDwgd2VpZ2h0cy5sb3JhQi5sZW5ndGggJiYgcm93IDwgb3RoZXJXZWlnaHRzLmxvcmFCLmxlbmd0aDsgcm93KyspIHtcclxuICAgICAgICBmb3IgKGxldCBjb2wgPSAwOyBjb2wgPCB3ZWlnaHRzLmxvcmFCW3Jvd10ubGVuZ3RoICYmIGNvbCA8IG90aGVyV2VpZ2h0cy5sb3JhQltyb3ddLmxlbmd0aDsgY29sKyspIHtcclxuICAgICAgICAgIHdlaWdodHMubG9yYUJbcm93XVtjb2xdID0gKHdlaWdodHMubG9yYUJbcm93XVtjb2xdICsgb3RoZXJXZWlnaHRzLmxvcmFCW3Jvd11bY29sXSkgLyAyO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG1lcmdlZC5zZXRXZWlnaHRzKHdlaWdodHMpO1xyXG4gICAgdGhpcy5yZWdpc3RlcihvdXRwdXRJZCwgbWVyZ2VkKTtcclxuICAgIHJldHVybiBtZXJnZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgc3RhdGlzdGljc1xyXG4gICAqL1xyXG4gIHN0YXRzKCk6IHtcclxuICAgIHRvdGFsQWRhcHRlcnM6IG51bWJlcjtcclxuICAgIGFjdGl2ZUFkYXB0ZXI6IHN0cmluZyB8IG51bGw7XHJcbiAgICB0b3RhbFBhcmFtZXRlcnM6IG51bWJlcjtcclxuICAgIGZyb3plbkNvdW50OiBudW1iZXI7XHJcbiAgfSB7XHJcbiAgICBsZXQgdG90YWxQYXJhbXMgPSAwO1xyXG4gICAgbGV0IGZyb3plbkNvdW50ID0gMDtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGFkYXB0ZXIgb2YgdGhpcy5hZGFwdGVycy52YWx1ZXMoKSkge1xyXG4gICAgICB0b3RhbFBhcmFtcyArPSBhZGFwdGVyLm51bVBhcmFtZXRlcnMoKTtcclxuICAgICAgaWYgKGFkYXB0ZXIuaXNGcm96ZW4oKSkgZnJvemVuQ291bnQrKztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0b3RhbEFkYXB0ZXJzOiB0aGlzLmFkYXB0ZXJzLnNpemUsXHJcbiAgICAgIGFjdGl2ZUFkYXB0ZXI6IHRoaXMuYWN0aXZlQWRhcHRlcklkLFxyXG4gICAgICB0b3RhbFBhcmFtZXRlcnM6IHRvdGFsUGFyYW1zLFxyXG4gICAgICBmcm96ZW5Db3VudCxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciBhbGwgYWRhcHRlcnNcclxuICAgKi9cclxuICBjbGVhcigpOiB2b2lkIHtcclxuICAgIHRoaXMuYWRhcHRlcnMuY2xlYXIoKTtcclxuICAgIHRoaXMuYWN0aXZlQWRhcHRlcklkID0gbnVsbDtcclxuICB9XHJcbn1cclxuIl19
|
|
494
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9yYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb3JhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQkc7OztBQUlIOztHQUVHO0FBQ0gsTUFBTSxtQkFBbUIsR0FBeUI7SUFDaEQsSUFBSSxFQUFFLENBQUM7SUFDUCxLQUFLLEVBQUUsRUFBRTtJQUNULE9BQU8sRUFBRSxHQUFHO0lBQ1osYUFBYSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQztDQUNsQyxDQUFDO0FBOEJGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSCxNQUFhLFdBQVc7SUFRdEIsWUFBWSxNQUE0QixFQUFFLFFBQVEsR0FBRyxHQUFHLEVBQUUsU0FBUyxHQUFHLEdBQUc7UUFIakUsa0JBQWEsR0FBNkIsSUFBSSxDQUFDO1FBQy9DLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFHOUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLEdBQUcsbUJBQW1CLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUNwRCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUUzQixxQkFBcUI7UUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxPQUFPLENBQUMsS0FBZTtRQUNyQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztRQUM5QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBRXJDLG1EQUFtRDtRQUNu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SUFFRDs7T0FFRztJQUNILEtBQUs7UUFNSCxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDcEIsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBRXBCLEtBQUssTUFBTSxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQzdDLFdBQVcsSUFBSSxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO2dCQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ3hDLENBQUM7UUFFRCxPQUFPO1lBQ0wsYUFBYSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSTtZQUNqQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGVBQWU7WUFDbkMsZUFBZSxFQUFFLFdBQVc7WUFDNUIsV0FBVztTQUNaLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztJQUM5QixDQUFDO0NBQ0Y7QUFuTEQsa0NBbUxDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBMb1JBIChMb3ctUmFuayBBZGFwdGF0aW9uKSBSdW50aW1lXG4gKlxuICogRWZmaWNpZW50IHBhcmFtZXRlci1lZmZpY2llbnQgZmluZS10dW5pbmcgYWRhcHRlcnMgZm9yIExMTXMuXG4gKiBTdXBwb3J0cyBtaWNyby1Mb1JBIChmYXN0LCBzbWFsbCB1cGRhdGVzKSBhbmQgYmFzZS1Mb1JBIChkZWVwZXIgYWRhcHRhdGlvbikuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IExvcmFBZGFwdGVyLCBMb3JhTWFuYWdlciB9IGZyb20gJ0BydXZlY3Rvci9ydXZsbG0nO1xuICpcbiAqIC8vIENyZWF0ZSBhZGFwdGVyXG4gKiBjb25zdCBhZGFwdGVyID0gbmV3IExvcmFBZGFwdGVyKHtcbiAqICAgcmFuazogOCxcbiAqICAgYWxwaGE6IDE2LFxuICogICBkcm9wb3V0OiAwLjEsXG4gKiAgIHRhcmdldE1vZHVsZXM6IFsncXVlcnknLCAndmFsdWUnXSxcbiAqIH0pO1xuICpcbiAqIC8vIEFwcGx5IHRvIGhpZGRlbiBzdGF0ZXNcbiAqIGNvbnN0IG91dHB1dCA9IGFkYXB0ZXIuZm9yd2FyZChoaWRkZW5TdGF0ZXMpO1xuICpcbiAqIC8vIE1hbmFnZSBtdWx0aXBsZSBhZGFwdGVyc1xuICogY29uc3QgbWFuYWdlciA9IG5ldyBMb3JhTWFuYWdlcigpO1xuICogbWFuYWdlci5yZWdpc3RlcigndGFzay0xJywgYWRhcHRlcik7XG4gKiBtYW5hZ2VyLmFjdGl2YXRlKCd0YXNrLTEnKTtcbiAqIGBgYFxuICovXG5cbmltcG9ydCB7IExvUkFDb25maWcsIEVtYmVkZGluZyB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIERlZmF1bHQgTG9SQSBjb25maWd1cmF0aW9uXG4gKi9cbmNvbnN0IERFRkFVTFRfTE9SQV9DT05GSUc6IFJlcXVpcmVkPExvUkFDb25maWc+ID0ge1xuICByYW5rOiA4LFxuICBhbHBoYTogMTYsXG4gIGRyb3BvdXQ6IDAuMSxcbiAgdGFyZ2V0TW9kdWxlczogWydxdWVyeScsICd2YWx1ZSddLFxufTtcblxuLyoqXG4gKiBMb1JBIGFkYXB0ZXIgd2VpZ2h0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIExvcmFXZWlnaHRzIHtcbiAgLyoqIERvd24gcHJvamVjdGlvbiBtYXRyaXggKGQgeCByKSAqL1xuICBsb3JhQTogbnVtYmVyW11bXTtcbiAgLyoqIFVwIHByb2plY3Rpb24gbWF0cml4IChyIHggZCkgKi9cbiAgbG9yYUI6IG51bWJlcltdW107XG4gIC8qKiBTY2FsaW5nIGZhY3RvciAqL1xuICBzY2FsaW5nOiBudW1iZXI7XG59XG5cbi8qKlxuICogTG9SQSB0cmFpbmluZyBzdGF0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvcmFUcmFpbmluZ1N0YXRlIHtcbiAgLyoqIEN1cnJlbnQgc3RlcCAqL1xuICBzdGVwOiBudW1iZXI7XG4gIC8qKiBMZWFybmluZyByYXRlICovXG4gIGxlYXJuaW5nUmF0ZTogbnVtYmVyO1xuICAvKiogQWNjdW11bGF0ZWQgZ3JhZGllbnRzIGZvciBBICovXG4gIGdyYWRBOiBudW1iZXJbXVtdO1xuICAvKiogQWNjdW11bGF0ZWQgZ3JhZGllbnRzIGZvciBCICovXG4gIGdyYWRCOiBudW1iZXJbXVtdO1xuICAvKiogTG9zcyBoaXN0b3J5ICovXG4gIGxvc3NIaXN0b3J5OiBudW1iZXJbXTtcbn1cblxuLyoqXG4gKiBMb1JBIEFkYXB0ZXJcbiAqXG4gKiBJbXBsZW1lbnRzIGxvdy1yYW5rIGRlY29tcG9zaXRpb24gZm9yIHBhcmFtZXRlci1lZmZpY2llbnQgZmluZS10dW5pbmcuXG4gKiBXJyA9IFcgKyBCQSB3aGVyZSBBIGlzIChkIHggcikgYW5kIEIgaXMgKHIgeCBkKSwgciA8PCBkXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGFkYXB0ZXIgPSBuZXcgTG9yYUFkYXB0ZXIoe1xuICogICByYW5rOiA4LFxuICogICBhbHBoYTogMTYsXG4gKiAgIGlucHV0RGltOiA3NjgsXG4gKiAgIG91dHB1dERpbTogNzY4LFxuICogfSk7XG4gKlxuICogLy8gRm9yd2FyZCBwYXNzXG4gKiBjb25zdCBvdXRwdXQgPSBhZGFwdGVyLmZvcndhcmQoaW5wdXQpO1xuICpcbiAqIC8vIFRyYWluaW5nIHN0ZXBcbiAqIGFkYXB0ZXIuYmFja3dhcmQoaW5wdXQsIGdyYWRPdXRwdXQsIDAuMDAxKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgTG9yYUFkYXB0ZXIge1xuICBwcml2YXRlIGNvbmZpZzogUmVxdWlyZWQ8TG9SQUNvbmZpZz47XG4gIHByaXZhdGUgaW5wdXREaW06IG51bWJlcjtcbiAgcHJpdmF0ZSBvdXRwdXREaW06IG51bWJlcjtcbiAgcHJpdmF0ZSB3ZWlnaHRzOiBMb3JhV2VpZ2h0cztcbiAgcHJpdmF0ZSB0cmFpbmluZ1N0YXRlOiBMb3JhVHJhaW5pbmdTdGF0ZSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGZyb3plbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZz86IFBhcnRpYWw8TG9SQUNvbmZpZz4sIGlucHV0RGltID0gMjU2LCBvdXRwdXREaW0gPSAyNTYpIHtcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4uREVGQVVMVF9MT1JBX0NPTkZJRywgLi4uY29uZmlnIH07XG4gICAgdGhpcy5pbnB1dERpbSA9IGlucHV0RGltO1xuICAgIHRoaXMub3V0cHV0RGltID0gb3V0cHV0RGltO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSB3ZWlnaHRzXG4gICAgdGhpcy53ZWlnaHRzID0gdGhpcy5pbml0aWFsaXplV2VpZ2h0cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcndhcmQgcGFzcyB0aHJvdWdoIExvUkEgYWRhcHRlclxuICAgKiBPUFRJTUlaRUQ6IFVzZXMgRmxvYXQ2NEFycmF5IGFuZCBsb29wIHVucm9sbGluZ1xuICAgKlxuICAgKiBvdXRwdXQgPSBpbnB1dCArIHNjYWxpbmcgKiAoaW5wdXQgQCBBIEAgQilcbiAgICovXG4gIGZvcndhcmQoaW5wdXQ6IG51bWJlcltdKTogbnVtYmVyW10ge1xuICAgIGNvbnN0IHJhbmsgPSB0aGlzLmNvbmZpZy5yYW5rO1xuICAgIGNvbnN0IGRpbSA9IE1hdGgubWluKGlucHV0Lmxlbmd0aCwgdGhpcy5pbnB1dERpbSk7XG4gICAgY29uc3Qgc2NhbGluZyA9IHRoaXMud2VpZ2h0cy5zY2FsaW5nO1xuXG4gICAgLy8gQXBwbHkgZHJvcG91dCBkdXJpbmcgdHJhaW5pbmcgKHNpbXBsaWZpZWQgY2hlY2spXG4gICAgY29uc3QgYXBwbHlEcm9wb3V0ID0gdGhpcy50cmFpbmluZ1N0YXRlICE9PSBudWxsICYmIHRoaXMuY29uZmlnLmRyb3BvdXQgPiAwO1xuXG4gICAgLy8gaW5wdXQgQCBBIChkIC0+IHIpIC0gdXNlIHR5cGVkIGFycmF5IGZvciBoaWRkZW5cbiAgICBjb25zdCBoaWRkZW4gPSBuZXcgRmxvYXQ2NEFycmF5KHJhbmspO1xuICAgIGZvciAobGV0IHIgPSAwOyByIDwgcmFuazsgcisrKSB7XG4gICAgICBsZXQgc3VtID0gMDtcbiAgICAgIGNvbnN0IGxvcmFBQ29sID0gdGhpcy53ZWlnaHRzLmxvcmFBO1xuICAgICAgLy8gVW5yb2xsIGxvb3AgZm9yIGJldHRlciBwZXJmb3JtYW5jZVxuICAgICAgbGV0IGkgPSAwO1xuICAgICAgaWYgKGFwcGx5RHJvcG91dCkge1xuICAgICAgICBmb3IgKDsgaSA8IGRpbTsgaSsrKSB7XG4gICAgICAgICAgaWYgKE1hdGgucmFuZG9tKCkgPiB0aGlzLmNvbmZpZy5kcm9wb3V0KSB7XG4gICAgICAgICAgICBzdW0gKz0gaW5wdXRbaV0gKiBsb3JhQUNvbFtpXVtyXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAoOyBpICsgMyA8IGRpbTsgaSArPSA0KSB7XG4gICAgICAgICAgc3VtICs9IGlucHV0W2ldICogbG9yYUFDb2xbaV1bcl0gK1xuICAgICAgICAgICAgICAgICBpbnB1dFtpICsgMV0gKiBsb3JhQUNvbFtpICsgMV1bcl0gK1xuICAgICAgICAgICAgICAgICBpbnB1dFtpICsgMl0gKiBsb3JhQUNvbFtpICsgMl1bcl0gK1xuICAgICAgICAgICAgICAgICBpbnB1dFtpICsgM10gKiBsb3JhQUNvbFtpICsgM11bcl07XG4gICAgICAgIH1cbiAgICAgICAgZm9yICg7IGkgPCBkaW07IGkrKykge1xuICAgICAgICAgIHN1bSArPSBpbnB1dFtpXSAqIGxvcmFBQ29sW2ldW3JdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBoaWRkZW5bcl0gPSBzdW07XG4gICAgfVxuXG4gICAgLy8gaGlkZGVuIEAgQiAociAtPiBkKSArIHJlc2lkdWFsXG4gICAgY29uc3Qgb3V0cHV0ID0gbmV3IEFycmF5KHRoaXMub3V0cHV0RGltKTtcbiAgICBjb25zdCBsb3JhQiA9IHRoaXMud2VpZ2h0cy5sb3JhQjtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3V0cHV0RGltOyBpKyspIHtcbiAgICAgIGxldCBkZWx0YSA9IDA7XG4gICAgICBmb3IgKGxldCByID0gMDsgciA8IHJhbms7IHIrKykge1xuICAgICAgICBkZWx0YSArPSBoaWRkZW5bcl0gKiBsb3JhQltyXVtpXTtcbiAgICAgIH1cbiAgICAgIC8vIEFkZCBzY2FsZWQgZGVsdGEgdG8gaW5wdXQgKHJlc2lkdWFsIGNvbm5lY3Rpb24pXG4gICAgICBvdXRwdXRbaV0gPSAoaW5wdXRbaV0gfHwgMCkgKyBzY2FsaW5nICogZGVsdGE7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dHB1dDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3J3YXJkIHdpdGggYmF0Y2ggcHJvY2Vzc2luZ1xuICAgKi9cbiAgZm9yd2FyZEJhdGNoKGlucHV0czogbnVtYmVyW11bXSk6IG51bWJlcltdW10ge1xuICAgIHJldHVybiBpbnB1dHMubWFwKGlucHV0ID0+IHRoaXMuZm9yd2FyZChpbnB1dCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJhY2t3YXJkIHBhc3MgYW5kIHdlaWdodCB1cGRhdGVcbiAgICovXG4gIGJhY2t3YXJkKGlucHV0OiBudW1iZXJbXSwgZ3JhZE91dHB1dDogbnVtYmVyW10sIGxlYXJuaW5nUmF0ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5mcm96ZW4pIHJldHVybiAwO1xuXG4gICAgY29uc3QgcmFuayA9IHRoaXMuY29uZmlnLnJhbms7XG4gICAgY29uc3QgZGltID0gTWF0aC5taW4oaW5wdXQubGVuZ3RoLCB0aGlzLmlucHV0RGltKTtcblxuICAgIC8vIENvbXB1dGUgaGlkZGVuIGFjdGl2YXRpb25zIChmb3IgZ3JhZGllbnQpXG4gICAgY29uc3QgaGlkZGVuID0gbmV3IEFycmF5KHJhbmspLmZpbGwoMCk7XG4gICAgZm9yIChsZXQgciA9IDA7IHIgPCByYW5rOyByKyspIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGltOyBpKyspIHtcbiAgICAgICAgaGlkZGVuW3JdICs9IGlucHV0W2ldICogdGhpcy53ZWlnaHRzLmxvcmFBW2ldW3JdO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEdyYWRpZW50IGZvciBCOiBoaWRkZW5eVCBAIGdyYWRPdXRwdXRcbiAgICBjb25zdCBncmFkQjogbnVtYmVyW11bXSA9IEFycmF5KHJhbmspLmZpbGwobnVsbCkubWFwKCgpID0+IEFycmF5KHRoaXMub3V0cHV0RGltKS5maWxsKDApKTtcbiAgICBmb3IgKGxldCByID0gMDsgciA8IHJhbms7IHIrKykge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm91dHB1dERpbTsgaSsrKSB7XG4gICAgICAgIGdyYWRCW3JdW2ldID0gaGlkZGVuW3JdICogKGdyYWRPdXRwdXRbaV0gfHwgMCkgKiB0aGlzLndlaWdodHMuc2NhbGluZztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBHcmFkaWVudCBmb3IgaGlkZGVuOiBncmFkT3V0cHV0IEAgQl5UXG4gICAgY29uc3QgZ3JhZEhpZGRlbiA9IG5ldyBBcnJheShyYW5rKS5maWxsKDApO1xuICAgIGZvciAobGV0IHIgPSAwOyByIDwgcmFuazsgcisrKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3V0cHV0RGltOyBpKyspIHtcbiAgICAgICAgZ3JhZEhpZGRlbltyXSArPSAoZ3JhZE91dHB1dFtpXSB8fCAwKSAqIHRoaXMud2VpZ2h0cy5sb3JhQltyXVtpXSAqIHRoaXMud2VpZ2h0cy5zY2FsaW5nO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEdyYWRpZW50IGZvciBBOiBpbnB1dF5UIEAgZ3JhZEhpZGRlblxuICAgIGNvbnN0IGdyYWRBOiBudW1iZXJbXVtdID0gQXJyYXkoZGltKS5maWxsKG51bGwpLm1hcCgoKSA9PiBBcnJheShyYW5rKS5maWxsKDApKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpbTsgaSsrKSB7XG4gICAgICBmb3IgKGxldCByID0gMDsgciA8IHJhbms7IHIrKykge1xuICAgICAgICBncmFkQVtpXVtyXSA9IGlucHV0W2ldICogZ3JhZEhpZGRlbltyXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgd2VpZ2h0c1xuICAgIGxldCB0b3RhbEdyYWQgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGltOyBpKyspIHtcbiAgICAgIGZvciAobGV0IHIgPSAwOyByIDwgcmFuazsgcisrKSB7XG4gICAgICAgIHRoaXMud2VpZ2h0cy5sb3JhQVtpXVtyXSAtPSBsZWFybmluZ1JhdGUgKiBncmFkQVtpXVtyXTtcbiAgICAgICAgdG90YWxHcmFkICs9IE1hdGguYWJzKGdyYWRBW2ldW3JdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChsZXQgciA9IDA7IHIgPCByYW5rOyByKyspIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vdXRwdXREaW07IGkrKykge1xuICAgICAgICB0aGlzLndlaWdodHMubG9yYUJbcl1baV0gLT0gbGVhcm5pbmdSYXRlICogZ3JhZEJbcl1baV07XG4gICAgICAgIHRvdGFsR3JhZCArPSBNYXRoLmFicyhncmFkQltyXVtpXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVHJhY2sgdHJhaW5pbmcgc3RhdGVcbiAgICBpZiAodGhpcy50cmFpbmluZ1N0YXRlKSB7XG4gICAgICB0aGlzLnRyYWluaW5nU3RhdGUuc3RlcCsrO1xuICAgICAgdGhpcy50cmFpbmluZ1N0YXRlLmxvc3NIaXN0b3J5LnB1c2godG90YWxHcmFkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdG90YWxHcmFkO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IHRyYWluaW5nIG1vZGVcbiAgICovXG4gIHN0YXJ0VHJhaW5pbmcobGVhcm5pbmdSYXRlID0gMC4wMDEpOiB2b2lkIHtcbiAgICB0aGlzLnRyYWluaW5nU3RhdGUgPSB7XG4gICAgICBzdGVwOiAwLFxuICAgICAgbGVhcm5pbmdSYXRlLFxuICAgICAgZ3JhZEE6IEFycmF5KHRoaXMuaW5wdXREaW0pLmZpbGwobnVsbCkubWFwKCgpID0+IEFycmF5KHRoaXMuY29uZmlnLnJhbmspLmZpbGwoMCkpLFxuICAgICAgZ3JhZEI6IEFycmF5KHRoaXMuY29uZmlnLnJhbmspLmZpbGwobnVsbCkubWFwKCgpID0+IEFycmF5KHRoaXMub3V0cHV0RGltKS5maWxsKDApKSxcbiAgICAgIGxvc3NIaXN0b3J5OiBbXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEVuZCB0cmFpbmluZyBtb2RlXG4gICAqL1xuICBlbmRUcmFpbmluZygpOiBMb3JhVHJhaW5pbmdTdGF0ZSB8IG51bGwge1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy50cmFpbmluZ1N0YXRlO1xuICAgIHRoaXMudHJhaW5pbmdTdGF0ZSA9IG51bGw7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIEZyZWV6ZSBhZGFwdGVyIChubyBtb3JlIHVwZGF0ZXMpXG4gICAqL1xuICBmcmVlemUoKTogdm9pZCB7XG4gICAgdGhpcy5mcm96ZW4gPSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuZnJlZXplIGFkYXB0ZXJcbiAgICovXG4gIHVuZnJlZXplKCk6IHZvaWQge1xuICAgIHRoaXMuZnJvemVuID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgZnJvemVuXG4gICAqL1xuICBpc0Zyb3plbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5mcm96ZW47XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFkYXB0ZXIgY29uZmlnXG4gICAqL1xuICBnZXRDb25maWcoKTogUmVxdWlyZWQ8TG9SQUNvbmZpZz4ge1xuICAgIHJldHVybiB7IC4uLnRoaXMuY29uZmlnIH07XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFkYXB0ZXIgd2VpZ2h0c1xuICAgKi9cbiAgZ2V0V2VpZ2h0cygpOiBMb3JhV2VpZ2h0cyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvcmFBOiB0aGlzLndlaWdodHMubG9yYUEubWFwKHJvdyA9PiBbLi4ucm93XSksXG4gICAgICBsb3JhQjogdGhpcy53ZWlnaHRzLmxvcmFCLm1hcChyb3cgPT4gWy4uLnJvd10pLFxuICAgICAgc2NhbGluZzogdGhpcy53ZWlnaHRzLnNjYWxpbmcsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgYWRhcHRlciB3ZWlnaHRzXG4gICAqL1xuICBzZXRXZWlnaHRzKHdlaWdodHM6IExvcmFXZWlnaHRzKTogdm9pZCB7XG4gICAgdGhpcy53ZWlnaHRzID0ge1xuICAgICAgbG9yYUE6IHdlaWdodHMubG9yYUEubWFwKHJvdyA9PiBbLi4ucm93XSksXG4gICAgICBsb3JhQjogd2VpZ2h0cy5sb3JhQi5tYXAocm93ID0+IFsuLi5yb3ddKSxcbiAgICAgIHNjYWxpbmc6IHdlaWdodHMuc2NhbGluZyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIE1lcmdlIGFkYXB0ZXIgaW50byBiYXNlIHdlaWdodHNcbiAgICpcbiAgICogUmV0dXJucyBkZWx0YSB0byBhZGQgdG8gYmFzZSBtb2RlbCB3ZWlnaHRzXG4gICAqL1xuICBtZXJnZSgpOiBudW1iZXJbXVtdIHtcbiAgICBjb25zdCBkZWx0YTogbnVtYmVyW11bXSA9IEFycmF5KHRoaXMuaW5wdXREaW0pXG4gICAgICAuZmlsbChudWxsKVxuICAgICAgLm1hcCgoKSA9PiBBcnJheSh0aGlzLm91dHB1dERpbSkuZmlsbCgwKSk7XG5cbiAgICBjb25zdCByYW5rID0gdGhpcy5jb25maWcucmFuaztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuaW5wdXREaW07IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLm91dHB1dERpbTsgaisrKSB7XG4gICAgICAgIGZvciAobGV0IHIgPSAwOyByIDwgcmFuazsgcisrKSB7XG4gICAgICAgICAgZGVsdGFbaV1bal0gKz0gdGhpcy53ZWlnaHRzLmxvcmFBW2ldW3JdICogdGhpcy53ZWlnaHRzLmxvcmFCW3JdW2pdO1xuICAgICAgICB9XG4gICAgICAgIGRlbHRhW2ldW2pdICo9IHRoaXMud2VpZ2h0cy5zY2FsaW5nO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkZWx0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgbnVtYmVyIG9mIHRyYWluYWJsZSBwYXJhbWV0ZXJzXG4gICAqL1xuICBudW1QYXJhbWV0ZXJzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLmlucHV0RGltICogdGhpcy5jb25maWcucmFuaykgKyAodGhpcy5jb25maWcucmFuayAqIHRoaXMub3V0cHV0RGltKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0byBpbml0aWFsIHdlaWdodHNcbiAgICovXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMud2VpZ2h0cyA9IHRoaXMuaW5pdGlhbGl6ZVdlaWdodHMoKTtcbiAgICB0aGlzLnRyYWluaW5nU3RhdGUgPSBudWxsO1xuICAgIHRoaXMuZnJvemVuID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQ2xvbmUgYWRhcHRlclxuICAgKi9cbiAgY2xvbmUoKTogTG9yYUFkYXB0ZXIge1xuICAgIGNvbnN0IGFkYXB0ZXIgPSBuZXcgTG9yYUFkYXB0ZXIodGhpcy5jb25maWcsIHRoaXMuaW5wdXREaW0sIHRoaXMub3V0cHV0RGltKTtcbiAgICBhZGFwdGVyLnNldFdlaWdodHModGhpcy5nZXRXZWlnaHRzKCkpO1xuICAgIHJldHVybiBhZGFwdGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlcmlhbGl6ZSB0byBKU09OXG4gICAqL1xuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgY29uZmlnOiB0aGlzLmNvbmZpZyxcbiAgICAgIGlucHV0RGltOiB0aGlzLmlucHV0RGltLFxuICAgICAgb3V0cHV0RGltOiB0aGlzLm91dHB1dERpbSxcbiAgICAgIHdlaWdodHM6IHRoaXMud2VpZ2h0cyxcbiAgICAgIGZyb3plbjogdGhpcy5mcm96ZW4sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGVzZXJpYWxpemUgZnJvbSBKU09OXG4gICAqL1xuICBzdGF0aWMgZnJvbUpTT04oanNvbjogc3RyaW5nKTogTG9yYUFkYXB0ZXIge1xuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGpzb24pO1xuICAgIGNvbnN0IGFkYXB0ZXIgPSBuZXcgTG9yYUFkYXB0ZXIoZGF0YS5jb25maWcsIGRhdGEuaW5wdXREaW0sIGRhdGEub3V0cHV0RGltKTtcbiAgICBhZGFwdGVyLnNldFdlaWdodHMoZGF0YS53ZWlnaHRzKTtcbiAgICBpZiAoZGF0YS5mcm96ZW4pIGFkYXB0ZXIuZnJlZXplKCk7XG4gICAgcmV0dXJuIGFkYXB0ZXI7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVXZWlnaHRzKCk6IExvcmFXZWlnaHRzIHtcbiAgICBjb25zdCByYW5rID0gdGhpcy5jb25maWcucmFuaztcblxuICAgIC8vIEthaW1pbmcgaW5pdGlhbGl6YXRpb24gZm9yIEEsIHplcm8gaW5pdGlhbGl6YXRpb24gZm9yIEJcbiAgICBjb25zdCBsb3JhQTogbnVtYmVyW11bXSA9IEFycmF5KHRoaXMuaW5wdXREaW0pXG4gICAgICAuZmlsbChudWxsKVxuICAgICAgLm1hcCgoKSA9PlxuICAgICAgICBBcnJheShyYW5rKVxuICAgICAgICAgIC5maWxsKDApXG4gICAgICAgICAgLm1hcCgoKSA9PiAoTWF0aC5yYW5kb20oKSAtIDAuNSkgKiBNYXRoLnNxcnQoMiAvIHRoaXMuaW5wdXREaW0pKVxuICAgICAgKTtcblxuICAgIGNvbnN0IGxvcmFCOiBudW1iZXJbXVtdID0gQXJyYXkocmFuaylcbiAgICAgIC5maWxsKG51bGwpXG4gICAgICAubWFwKCgpID0+IEFycmF5KHRoaXMub3V0cHV0RGltKS5maWxsKDApKTtcblxuICAgIHJldHVybiB7XG4gICAgICBsb3JhQSxcbiAgICAgIGxvcmFCLFxuICAgICAgc2NhbGluZzogdGhpcy5jb25maWcuYWxwaGEgLyB0aGlzLmNvbmZpZy5yYW5rLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBMb1JBIE1hbmFnZXIgZm9yIG11bHRpcGxlIGFkYXB0ZXJzXG4gKlxuICogTWFuYWdlcyBhIGNvbGxlY3Rpb24gb2YgTG9SQSBhZGFwdGVycyBmb3IgZGlmZmVyZW50IHRhc2tzL2RvbWFpbnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBMb3JhTWFuYWdlciB7XG4gIHByaXZhdGUgYWRhcHRlcnM6IE1hcDxzdHJpbmcsIExvcmFBZGFwdGVyPiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBhY3RpdmVBZGFwdGVySWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGRlZmF1bHRDb25maWc6IFJlcXVpcmVkPExvUkFDb25maWc+O1xuXG4gIGNvbnN0cnVjdG9yKGRlZmF1bHRDb25maWc/OiBQYXJ0aWFsPExvUkFDb25maWc+KSB7XG4gICAgdGhpcy5kZWZhdWx0Q29uZmlnID0geyAuLi5ERUZBVUxUX0xPUkFfQ09ORklHLCAuLi5kZWZhdWx0Q29uZmlnIH07XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgYSBuZXcgYWRhcHRlclxuICAgKi9cbiAgcmVnaXN0ZXIoaWQ6IHN0cmluZywgYWRhcHRlcjogTG9yYUFkYXB0ZXIpOiB2b2lkIHtcbiAgICB0aGlzLmFkYXB0ZXJzLnNldChpZCwgYWRhcHRlcik7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuZCByZWdpc3RlciBhIG5ldyBhZGFwdGVyXG4gICAqL1xuICBjcmVhdGUoaWQ6IHN0cmluZywgY29uZmlnPzogUGFydGlhbDxMb1JBQ29uZmlnPiwgaW5wdXREaW0/OiBudW1iZXIsIG91dHB1dERpbT86IG51bWJlcik6IExvcmFBZGFwdGVyIHtcbiAgICBjb25zdCBtZXJnZWRDb25maWcgPSB7IC4uLnRoaXMuZGVmYXVsdENvbmZpZywgLi4uY29uZmlnIH07XG4gICAgY29uc3QgYWRhcHRlciA9IG5ldyBMb3JhQWRhcHRlcihtZXJnZWRDb25maWcsIGlucHV0RGltLCBvdXRwdXREaW0pO1xuICAgIHRoaXMucmVnaXN0ZXIoaWQsIGFkYXB0ZXIpO1xuICAgIHJldHVybiBhZGFwdGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhZGFwdGVyIGJ5IElEXG4gICAqL1xuICBnZXQoaWQ6IHN0cmluZyk6IExvcmFBZGFwdGVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5hZGFwdGVycy5nZXQoaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhZGFwdGVyXG4gICAqL1xuICByZW1vdmUoaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmFjdGl2ZUFkYXB0ZXJJZCA9PT0gaWQpIHtcbiAgICAgIHRoaXMuYWN0aXZlQWRhcHRlcklkID0gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlcnMuZGVsZXRlKGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZSBhbiBhZGFwdGVyXG4gICAqL1xuICBhY3RpdmF0ZShpZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuYWRhcHRlcnMuaGFzKGlkKSkge1xuICAgICAgdGhpcy5hY3RpdmVBZGFwdGVySWQgPSBpZDtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogRGVhY3RpdmF0ZSBjdXJyZW50IGFkYXB0ZXJcbiAgICovXG4gIGRlYWN0aXZhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVBZGFwdGVySWQgPSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhY3RpdmUgYWRhcHRlclxuICAgKi9cbiAgZ2V0QWN0aXZlKCk6IExvcmFBZGFwdGVyIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlQWRhcHRlcklkID8gdGhpcy5hZGFwdGVycy5nZXQodGhpcy5hY3RpdmVBZGFwdGVySWQpIHx8IG51bGwgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhY3RpdmUgYWRhcHRlciBJRFxuICAgKi9cbiAgZ2V0QWN0aXZlSWQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlQWRhcHRlcklkO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5IGFjdGl2ZSBhZGFwdGVyXG4gICAqL1xuICBmb3J3YXJkKGlucHV0OiBudW1iZXJbXSk6IG51bWJlcltdIHtcbiAgICBjb25zdCBhY3RpdmUgPSB0aGlzLmdldEFjdGl2ZSgpO1xuICAgIHJldHVybiBhY3RpdmUgPyBhY3RpdmUuZm9yd2FyZChpbnB1dCkgOiBbLi4uaW5wdXRdO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3QgYWxsIGFkYXB0ZXIgSURzXG4gICAqL1xuICBsaXN0KCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmFkYXB0ZXJzLmtleXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFkYXB0ZXIgY291bnRcbiAgICovXG4gIGNvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlcnMuc2l6ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGcmVlemUgYWxsIGFkYXB0ZXJzXG4gICAqL1xuICBmcmVlemVBbGwoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBhZGFwdGVyIG9mIHRoaXMuYWRhcHRlcnMudmFsdWVzKCkpIHtcbiAgICAgIGFkYXB0ZXIuZnJlZXplKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVuZnJlZXplIGFsbCBhZGFwdGVyc1xuICAgKi9cbiAgdW5mcmVlemVBbGwoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBhZGFwdGVyIG9mIHRoaXMuYWRhcHRlcnMudmFsdWVzKCkpIHtcbiAgICAgIGFkYXB0ZXIudW5mcmVlemUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWVyZ2UgbXVsdGlwbGUgYWRhcHRlcnMgaW50byBvbmVcbiAgICovXG4gIG1lcmdlQWRhcHRlcnMoaWRzOiBzdHJpbmdbXSwgb3V0cHV0SWQ6IHN0cmluZyk6IExvcmFBZGFwdGVyIHwgbnVsbCB7XG4gICAgY29uc3QgYWRhcHRlcnMgPSBpZHMubWFwKGlkID0+IHRoaXMuYWRhcHRlcnMuZ2V0KGlkKSkuZmlsdGVyKEJvb2xlYW4pIGFzIExvcmFBZGFwdGVyW107XG4gICAgaWYgKGFkYXB0ZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG5cbiAgICAvLyBVc2UgZmlyc3QgYWRhcHRlciBhcyBiYXNlXG4gICAgY29uc3QgbWVyZ2VkID0gYWRhcHRlcnNbMF0uY2xvbmUoKTtcbiAgICBjb25zdCB3ZWlnaHRzID0gbWVyZ2VkLmdldFdlaWdodHMoKTtcblxuICAgIC8vIEF2ZXJhZ2Ugd2VpZ2h0cyBmcm9tIG90aGVyIGFkYXB0ZXJzXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCBhZGFwdGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qgb3RoZXJXZWlnaHRzID0gYWRhcHRlcnNbaV0uZ2V0V2VpZ2h0cygpO1xuXG4gICAgICBmb3IgKGxldCByb3cgPSAwOyByb3cgPCB3ZWlnaHRzLmxvcmFBLmxlbmd0aCAmJiByb3cgPCBvdGhlcldlaWdodHMubG9yYUEubGVuZ3RoOyByb3crKykge1xuICAgICAgICBmb3IgKGxldCBjb2wgPSAwOyBjb2wgPCB3ZWlnaHRzLmxvcmFBW3Jvd10ubGVuZ3RoICYmIGNvbCA8IG90aGVyV2VpZ2h0cy5sb3JhQVtyb3ddLmxlbmd0aDsgY29sKyspIHtcbiAgICAgICAgICB3ZWlnaHRzLmxvcmFBW3Jvd11bY29sXSA9ICh3ZWlnaHRzLmxvcmFBW3Jvd11bY29sXSArIG90aGVyV2VpZ2h0cy5sb3JhQVtyb3ddW2NvbF0pIC8gMjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZm9yIChsZXQgcm93ID0gMDsgcm93IDwgd2VpZ2h0cy5sb3JhQi5sZW5ndGggJiYgcm93IDwgb3RoZXJXZWlnaHRzLmxvcmFCLmxlbmd0aDsgcm93KyspIHtcbiAgICAgICAgZm9yIChsZXQgY29sID0gMDsgY29sIDwgd2VpZ2h0cy5sb3JhQltyb3ddLmxlbmd0aCAmJiBjb2wgPCBvdGhlcldlaWdodHMubG9yYUJbcm93XS5sZW5ndGg7IGNvbCsrKSB7XG4gICAgICAgICAgd2VpZ2h0cy5sb3JhQltyb3ddW2NvbF0gPSAod2VpZ2h0cy5sb3JhQltyb3ddW2NvbF0gKyBvdGhlcldlaWdodHMubG9yYUJbcm93XVtjb2xdKSAvIDI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBtZXJnZWQuc2V0V2VpZ2h0cyh3ZWlnaHRzKTtcbiAgICB0aGlzLnJlZ2lzdGVyKG91dHB1dElkLCBtZXJnZWQpO1xuICAgIHJldHVybiBtZXJnZWQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHN0YXRpc3RpY3NcbiAgICovXG4gIHN0YXRzKCk6IHtcbiAgICB0b3RhbEFkYXB0ZXJzOiBudW1iZXI7XG4gICAgYWN0aXZlQWRhcHRlcjogc3RyaW5nIHwgbnVsbDtcbiAgICB0b3RhbFBhcmFtZXRlcnM6IG51bWJlcjtcbiAgICBmcm96ZW5Db3VudDogbnVtYmVyO1xuICB9IHtcbiAgICBsZXQgdG90YWxQYXJhbXMgPSAwO1xuICAgIGxldCBmcm96ZW5Db3VudCA9IDA7XG5cbiAgICBmb3IgKGNvbnN0IGFkYXB0ZXIgb2YgdGhpcy5hZGFwdGVycy52YWx1ZXMoKSkge1xuICAgICAgdG90YWxQYXJhbXMgKz0gYWRhcHRlci5udW1QYXJhbWV0ZXJzKCk7XG4gICAgICBpZiAoYWRhcHRlci5pc0Zyb3plbigpKSBmcm96ZW5Db3VudCsrO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0b3RhbEFkYXB0ZXJzOiB0aGlzLmFkYXB0ZXJzLnNpemUsXG4gICAgICBhY3RpdmVBZGFwdGVyOiB0aGlzLmFjdGl2ZUFkYXB0ZXJJZCxcbiAgICAgIHRvdGFsUGFyYW1ldGVyczogdG90YWxQYXJhbXMsXG4gICAgICBmcm96ZW5Db3VudCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIGFsbCBhZGFwdGVyc1xuICAgKi9cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5hZGFwdGVycy5jbGVhcigpO1xuICAgIHRoaXMuYWN0aXZlQWRhcHRlcklkID0gbnVsbDtcbiAgfVxufVxuIl19
|
package/dist/cjs/models.js
CHANGED
|
@@ -32,29 +32,15 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
32
32
|
}) : function(o, v) {
|
|
33
33
|
o["default"] = v;
|
|
34
34
|
});
|
|
35
|
-
var __importStar = (this && this.__importStar) ||
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
return ownKeys(o);
|
|
43
|
-
};
|
|
44
|
-
return function (mod) {
|
|
45
|
-
if (mod && mod.__esModule) return mod;
|
|
46
|
-
var result = {};
|
|
47
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
48
|
-
__setModuleDefault(result, mod);
|
|
49
|
-
return result;
|
|
50
|
-
};
|
|
51
|
-
})();
|
|
35
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
36
|
+
if (mod && mod.__esModule) return mod;
|
|
37
|
+
var result = {};
|
|
38
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
39
|
+
__setModuleDefault(result, mod);
|
|
40
|
+
return result;
|
|
41
|
+
};
|
|
52
42
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
|
-
exports.ModelDownloader = exports.MODEL_ALIASES = exports.RUVLTRA_MODELS = void 0;
|
|
54
|
-
exports.getDefaultModelsDir = getDefaultModelsDir;
|
|
55
|
-
exports.resolveModelId = resolveModelId;
|
|
56
|
-
exports.getModelInfo = getModelInfo;
|
|
57
|
-
exports.listModels = listModels;
|
|
43
|
+
exports.ModelDownloader = exports.listModels = exports.getModelInfo = exports.resolveModelId = exports.getDefaultModelsDir = exports.MODEL_ALIASES = exports.RUVLTRA_MODELS = void 0;
|
|
58
44
|
const fs_1 = require("fs");
|
|
59
45
|
const path_1 = require("path");
|
|
60
46
|
const os_1 = require("os");
|
|
@@ -117,6 +103,7 @@ exports.MODEL_ALIASES = {
|
|
|
117
103
|
function getDefaultModelsDir() {
|
|
118
104
|
return (0, path_1.join)((0, os_1.homedir)(), '.ruvllm', 'models');
|
|
119
105
|
}
|
|
106
|
+
exports.getDefaultModelsDir = getDefaultModelsDir;
|
|
120
107
|
/**
|
|
121
108
|
* Resolve model ID from alias or direct ID
|
|
122
109
|
*/
|
|
@@ -132,6 +119,7 @@ function resolveModelId(modelIdOrAlias) {
|
|
|
132
119
|
}
|
|
133
120
|
return null;
|
|
134
121
|
}
|
|
122
|
+
exports.resolveModelId = resolveModelId;
|
|
135
123
|
/**
|
|
136
124
|
* Get model info by ID or alias
|
|
137
125
|
*/
|
|
@@ -139,12 +127,14 @@ function getModelInfo(modelIdOrAlias) {
|
|
|
139
127
|
const id = resolveModelId(modelIdOrAlias);
|
|
140
128
|
return id ? exports.RUVLTRA_MODELS[id] : null;
|
|
141
129
|
}
|
|
130
|
+
exports.getModelInfo = getModelInfo;
|
|
142
131
|
/**
|
|
143
132
|
* List all available models
|
|
144
133
|
*/
|
|
145
134
|
function listModels() {
|
|
146
135
|
return Object.values(exports.RUVLTRA_MODELS);
|
|
147
136
|
}
|
|
137
|
+
exports.listModels = listModels;
|
|
148
138
|
/**
|
|
149
139
|
* Model downloader for RuvLTRA GGUF models
|
|
150
140
|
*/
|
|
@@ -320,4 +310,4 @@ class ModelDownloader {
|
|
|
320
310
|
}
|
|
321
311
|
exports.ModelDownloader = ModelDownloader;
|
|
322
312
|
exports.default = ModelDownloader;
|
|
323
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTBISCxrREFFQztBQUtELHdDQWNDO0FBS0Qsb0NBR0M7QUFLRCxnQ0FFQztBQTVKRCwyQkFBZ0c7QUFDaEcsK0JBQXFDO0FBQ3JDLDJCQUE2QjtBQTJEN0IsNkJBQTZCO0FBQzdCLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQztBQUM5QixNQUFNLFdBQVcsR0FBRywwQkFBMEIsT0FBTyxlQUFlLENBQUM7QUFFckUsK0JBQStCO0FBQ2xCLFFBQUEsY0FBYyxHQUE4QjtJQUN2RCxhQUFhLEVBQUU7UUFDYixFQUFFLEVBQUUsYUFBYTtRQUNqQixJQUFJLEVBQUUscUJBQXFCO1FBQzNCLFFBQVEsRUFBRSxzQ0FBc0M7UUFDaEQsU0FBUyxFQUFFLFNBQVc7UUFDdEIsSUFBSSxFQUFFLFFBQVE7UUFDZCxVQUFVLEVBQUUsTUFBTTtRQUNsQixPQUFPLEVBQUUsdUNBQXVDO1FBQ2hELFlBQVksRUFBRSxRQUFRO1FBQ3RCLGFBQWEsRUFBRSxJQUFJO1FBQ25CLEdBQUcsRUFBRSxHQUFHLFdBQVcsdUNBQXVDO0tBQzNEO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsRUFBRSxFQUFFLE9BQU87UUFDWCxJQUFJLEVBQUUsZUFBZTtRQUNyQixRQUFRLEVBQUUsZ0NBQWdDO1FBQzFDLFNBQVMsRUFBRSxTQUFXO1FBQ3RCLElBQUksRUFBRSxRQUFRO1FBQ2QsVUFBVSxFQUFFLE1BQU07UUFDbEIsT0FBTyxFQUFFLHNEQUFzRDtRQUMvRCxZQUFZLEVBQUUsUUFBUTtRQUN0QixhQUFhLEVBQUUsSUFBSTtRQUNuQixHQUFHLEVBQUUsR0FBRyxXQUFXLGlDQUFpQztLQUNyRDtJQUNELFFBQVEsRUFBRTtRQUNSLEVBQUUsRUFBRSxRQUFR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RSxDQUFDO1lBQ2pDLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3BELEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkIsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLGNBQXNCO1FBQzNCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUEsZUFBVSxFQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDL0IsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBQSxlQUFVLEVBQUMsSUFBSSxDQUFDLENBQUM7UUFDakIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxTQUFTO1FBQ1AsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsS0FBSyxNQUFNLEtBQUssSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2pDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDMUIsS0FBSyxFQUFFLENBQUM7WUFDVixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGO0FBdE1ELDBDQXNNQztBQUVELGtCQUFlLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBSdXZMVFJBIE1vZGVsIFJlZ2lzdHJ5IGFuZCBEb3dubG9hZGVyXHJcbiAqXHJcbiAqIEF1dG9tYXRpY2FsbHkgZG93bmxvYWRzIEdHVUYgbW9kZWxzIGZyb20gSHVnZ2luZ0ZhY2UgSHViLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGltcG9ydCB7IE1vZGVsRG93bmxvYWRlciwgUlVWTFRSQV9NT0RFTFMgfSBmcm9tICdAcnV2ZWN0b3IvcnV2bGxtJztcclxuICpcclxuICogLy8gRG93bmxvYWQgdGhlIENsYXVkZSBDb2RlIG9wdGltaXplZCBtb2RlbFxyXG4gKiBjb25zdCBkb3dubG9hZGVyID0gbmV3IE1vZGVsRG93bmxvYWRlcigpO1xyXG4gKiBjb25zdCBtb2RlbFBhdGggPSBhd2FpdCBkb3dubG9hZGVyLmRvd25sb2FkKCdjbGF1ZGUtY29kZScpO1xyXG4gKlxyXG4gKiAvLyBPciBkb3dubG9hZCBhbGwgbW9kZWxzXHJcbiAqIGF3YWl0IGRvd25sb2FkZXIuZG93bmxvYWRBbGwoKTtcclxuICogYGBgXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgY3JlYXRlV3JpdGVTdHJlYW0sIGV4aXN0c1N5bmMsIG1rZGlyU3luYywgc3RhdFN5bmMsIHVubGlua1N5bmMsIHJlbmFtZVN5bmMgfSBmcm9tICdmcyc7XHJcbmltcG9ydCB7IGpvaW4sIGRpcm5hbWUgfSBmcm9tICdwYXRoJztcclxuaW1wb3J0IHsgaG9tZWRpciB9IGZyb20gJ29zJztcclxuaW1wb3J0IHsgcGlwZWxpbmUgfSBmcm9tICdzdHJlYW0vcHJvbWlzZXMnO1xyXG5pbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSAnY3J5cHRvJztcclxuXHJcbi8qKiBNb2RlbCBpbmZvcm1hdGlvbiBmcm9tIEh1Z2dpbmdGYWNlICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTW9kZWxJbmZvIHtcclxuICAvKiogTW9kZWwgaWRlbnRpZmllciAqL1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgLyoqIERpc3BsYXkgbmFtZSAqL1xyXG4gIG5hbWU6IHN0cmluZztcclxuICAvKiogTW9kZWwgZmlsZW5hbWUgb24gSHVnZ2luZ0ZhY2UgKi9cclxuICBmaWxlbmFtZTogc3RyaW5nO1xyXG4gIC8qKiBNb2RlbCBzaXplIGluIGJ5dGVzICovXHJcbiAgc2l6ZUJ5dGVzOiBudW1iZXI7XHJcbiAgLyoqIE1vZGVsIHNpemUgKGh1bWFuIHJlYWRhYmxlKSAqL1xyXG4gIHNpemU6IHN0cmluZztcclxuICAvKiogUGFyYW1ldGVyIGNvdW50ICovXHJcbiAgcGFyYW1ldGVyczogc3RyaW5nO1xyXG4gIC8qKiBVc2UgY2FzZSBkZXNjcmlwdGlvbiAqL1xyXG4gIHVzZUNhc2U6IHN0cmluZztcclxuICAvKiogUXVhbnRpemF0aW9uIHR5cGUgKi9cclxuICBxdWFudGl6YXRpb246IHN0cmluZztcclxuICAvKiogQ29udGV4dCB3aW5kb3cgc2l6ZSAqL1xyXG4gIGNvbnRleHRMZW5ndGg6IG51bWJlcjtcclxuICAvKiogSHVnZ2luZ0ZhY2UgZG93bmxvYWQgVVJMICovXHJcbiAgdXJsOiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKiBEb3dubG9hZCBwcm9ncmVzcyBjYWxsYmFjayAqL1xyXG5leHBvcnQgdHlwZSBQcm9ncmVzc0NhbGxiYWNrID0gKHByb2dyZXNzOiBEb3dubG9hZFByb2dyZXNzKSA9PiB2b2lkO1xyXG5cclxuLyoqIERvd25sb2FkIHByb2dyZXNzIGluZm9ybWF0aW9uICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgRG93bmxvYWRQcm9ncmVzcyB7XHJcbiAgLyoqIE1vZGVsIGJlaW5nIGRvd25sb2FkZWQgKi9cclxuICBtb2RlbElkOiBzdHJpbmc7XHJcbiAgLyoqIEJ5dGVzIGRvd25sb2FkZWQgc28gZmFyICovXHJcbiAgZG93bmxvYWRlZDogbnVtYmVyO1xyXG4gIC8qKiBUb3RhbCBieXRlcyB0byBkb3dubG9hZCAqL1xyXG4gIHRvdGFsOiBudW1iZXI7XHJcbiAgLyoqIERvd25sb2FkIHBlcmNlbnRhZ2UgKDAtMTAwKSAqL1xyXG4gIHBlcmNlbnQ6IG51bWJlcjtcclxuICAvKiogRG93bmxvYWQgc3BlZWQgaW4gYnl0ZXMgcGVyIHNlY29uZCAqL1xyXG4gIHNwZWVkQnBzOiBudW1iZXI7XHJcbiAgLyoqIEVzdGltYXRlZCB0aW1lIHJlbWFpbmluZyBpbiBzZWNvbmRzICovXHJcbiAgZXRhU2Vjb25kczogbnVtYmVyO1xyXG59XHJcblxyXG4vKiogRG93bmxvYWQgb3B0aW9ucyAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIERvd25sb2FkT3B0aW9ucyB7XHJcbiAgLyoqIERpcmVjdG9yeSB0byBzYXZlIG1vZGVscyAoZGVmYXVsdDogfi8ucnV2bGxtL21vZGVscykgKi9cclxuICBtb2RlbHNEaXI/OiBzdHJpbmc7XHJcbiAgLyoqIEZvcmNlIHJlLWRvd25sb2FkIGV2ZW4gaWYgZmlsZSBleGlzdHMgKi9cclxuICBmb3JjZT86IGJvb2xlYW47XHJcbiAgLyoqIFByb2dyZXNzIGNhbGxiYWNrICovXHJcbiAgb25Qcm9ncmVzcz86IFByb2dyZXNzQ2FsbGJhY2s7XHJcbiAgLyoqIFZlcmlmeSBmaWxlIGludGVncml0eSBhZnRlciBkb3dubG9hZCAqL1xyXG4gIHZlcmlmeT86IGJvb2xlYW47XHJcbn1cclxuXHJcbi8qKiBIdWdnaW5nRmFjZSByZXBvc2l0b3J5ICovXHJcbmNvbnN0IEhGX1JFUE8gPSAncnV2L3J1dmx0cmEnO1xyXG5jb25zdCBIRl9CQVNFX1VSTCA9IGBodHRwczovL2h1Z2dpbmdmYWNlLmNvLyR7SEZfUkVQT30vcmVzb2x2ZS9tYWluYDtcclxuXHJcbi8qKiBBdmFpbGFibGUgUnV2TFRSQSBtb2RlbHMgKi9cclxuZXhwb3J0IGNvbnN0IFJVVkxUUkFfTU9ERUxTOiBSZWNvcmQ8c3RyaW5nLCBNb2RlbEluZm8+ID0ge1xyXG4gICdjbGF1ZGUtY29kZSc6IHtcclxuICAgIGlkOiAnY2xhdWRlLWNvZGUnLFxyXG4gICAgbmFtZTogJ1J1dkxUUkEgQ2xhdWRlIENvZGUnLFxyXG4gICAgZmlsZW5hbWU6ICdydXZsdHJhLWNsYXVkZS1jb2RlLTAuNWItcTRfa19tLmdndWYnLFxyXG4gICAgc2l6ZUJ5dGVzOiAzOThfMDAwXzAwMCxcclxuICAgIHNpemU6ICczOTggTUInLFxyXG4gICAgcGFyYW1ldGVyczogJzAuNUInLFxyXG4gICAgdXNlQ2FzZTogJ0NsYXVkZSBDb2RlIHdvcmtmbG93cywgYWdlbnRpYyBjb2RpbmcnLFxyXG4gICAgcXVhbnRpemF0aW9uOiAnUTRfS19NJyxcclxuICAgIGNvbnRleHRMZW5ndGg6IDQwOTYsXHJcbiAgICB1cmw6IGAke0hGX0JBU0VfVVJMfS9ydXZsdHJhLWNsYXVkZS1jb2RlLTAuNWItcTRfa19tLmdndWZgLFxyXG4gIH0sXHJcbiAgJ3NtYWxsJzoge1xyXG4gICAgaWQ6ICdzbWFsbCcsXHJcbiAgICBuYW1lOiAnUnV2TFRSQSBTbWFsbCcsXHJcbiAgICBmaWxlbmFtZTogJ3J1dmx0cmEtc21hbGwtMC41Yi1xNF9rX20uZ2d1ZicsXHJcbiAgICBzaXplQnl0ZXM6IDM5OF8wMDBfMDAwLFxyXG4gICAgc2l6ZTogJzM5OCBNQicsXHJcbiAgICBwYXJhbWV0ZXJzOiAnMC41QicsXHJcbiAgICB1c2VDYXNlOiAnRWRnZSBkZXZpY2VzLCBJb1QsIHJlc291cmNlLWNvbnN0cmFpbmVkIGVudmlyb25tZW50cycsXHJcbiAgICBxdWFudGl6YXRpb246ICdRNF9LX00nLFxyXG4gICAgY29udGV4dExlbmd0aDogNDA5NixcclxuICAgIHVybDogYCR7SEZfQkFTRV9VUkx9L3J1dmx0cmEtc21hbGwtMC41Yi1xNF9rX20uZ2d1ZmAsXHJcbiAgfSxcclxuICAnbWVkaXVtJzoge1xyXG4gICAgaWQ6ICdtZWRpdW0nLFxyXG4gICAgbmFtZTogJ1J1dkxUUkEgTWVkaXVtJyxcclxuICAgIGZpbGVuYW1lOiAncnV2bHRyYS1tZWRpdW0tMS4xYi1xNF9rX20uZ2d1ZicsXHJcbiAgICBzaXplQnl0ZXM6IDY2OV8wMDBfMDAwLFxyXG4gICAgc2l6ZTogJzY2OSBNQicsXHJcbiAgICBwYXJhbWV0ZXJzOiAnMS4xQicsXHJcbiAgICB1c2VDYXNlOiAnR2VuZXJhbCBwdXJwb3NlLCBiYWxhbmNlZCBwZXJmb3JtYW5jZScsXHJcbiAgICBxdWFudGl6YXRpb246ICdRNF9LX00nLFxyXG4gICAgY29udGV4dExlbmd0aDogODE5MixcclxuICAgIHVybDogYCR7SEZfQkFTRV9VUkx9L3J1dmx0cmEtbWVkaXVtLTEuMWItcTRfa19tLmdndWZgLFxyXG4gIH0sXHJcbn07XHJcblxyXG4vKiogTW9kZWwgYWxpYXNlcyBmb3IgY29udmVuaWVuY2UgKi9cclxuZXhwb3J0IGNvbnN0IE1PREVMX0FMSUFTRVM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XHJcbiAgJ2NjJzogJ2NsYXVkZS1jb2RlJyxcclxuICAnY2xhdWRlY29kZSc6ICdjbGF1ZGUtY29kZScsXHJcbiAgJ2NsYXVkZSc6ICdjbGF1ZGUtY29kZScsXHJcbiAgJ3MnOiAnc21hbGwnLFxyXG4gICdzbSc6ICdzbWFsbCcsXHJcbiAgJ20nOiAnbWVkaXVtJyxcclxuICAnbWVkJzogJ21lZGl1bScsXHJcbiAgJ2RlZmF1bHQnOiAnY2xhdWRlLWNvZGUnLFxyXG59O1xyXG5cclxuLyoqXHJcbiAqIEdldCB0aGUgZGVmYXVsdCBtb2RlbHMgZGlyZWN0b3J5XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdE1vZGVsc0RpcigpOiBzdHJpbmcge1xyXG4gIHJldHVybiBqb2luKGhvbWVkaXIoKSwgJy5ydXZsbG0nLCAnbW9kZWxzJyk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXNvbHZlIG1vZGVsIElEIGZyb20gYWxpYXMgb3IgZGlyZWN0IElEXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZU1vZGVsSWQobW9kZWxJZE9yQWxpYXM6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xyXG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBtb2RlbElkT3JBbGlhcy50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcclxuXHJcbiAgLy8gRGlyZWN0IG1hdGNoXHJcbiAgaWYgKFJVVkxUUkFfTU9ERUxTW25vcm1hbGl6ZWRdKSB7XHJcbiAgICByZXR1cm4gbm9ybWFsaXplZDtcclxuICB9XHJcblxyXG4gIC8vIEFsaWFzIG1hdGNoXHJcbiAgaWYgKE1PREVMX0FMSUFTRVNbbm9ybWFsaXplZF0pIHtcclxuICAgIHJldHVybiBNT0RFTF9BTElBU0VTW25vcm1hbGl6ZWRdO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIG51bGw7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZXQgbW9kZWwgaW5mbyBieSBJRCBvciBhbGlhc1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldE1vZGVsSW5mbyhtb2RlbElkT3JBbGlhczogc3RyaW5nKTogTW9kZWxJbmZvIHwgbnVsbCB7XHJcbiAgY29uc3QgaWQgPSByZXNvbHZlTW9kZWxJZChtb2RlbElkT3JBbGlhcyk7XHJcbiAgcmV0dXJuIGlkID8gUlVWTFRSQV9NT0RFTFNbaWRdIDogbnVsbDtcclxufVxyXG5cclxuLyoqXHJcbiAqIExpc3QgYWxsIGF2YWlsYWJsZSBtb2RlbHNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBsaXN0TW9kZWxzKCk6IE1vZGVsSW5mb1tdIHtcclxuICByZXR1cm4gT2JqZWN0LnZhbHVlcyhSVVZMVFJBX01PREVMUyk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBNb2RlbCBkb3dubG9hZGVyIGZvciBSdXZMVFJBIEdHVUYgbW9kZWxzXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgTW9kZWxEb3dubG9hZGVyIHtcclxuICBwcml2YXRlIG1vZGVsc0Rpcjogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihtb2RlbHNEaXI/OiBzdHJpbmcpIHtcclxuICAgIHRoaXMubW9kZWxzRGlyID0gbW9kZWxzRGlyIHx8IGdldERlZmF1bHRNb2RlbHNEaXIoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgcGF0aCB3aGVyZSBhIG1vZGVsIHdvdWxkIGJlIHNhdmVkXHJcbiAgICovXHJcbiAgZ2V0TW9kZWxQYXRoKG1vZGVsSWRPckFsaWFzOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIGNvbnN0IG1vZGVsID0gZ2V0TW9kZWxJbmZvKG1vZGVsSWRPckFsaWFzKTtcclxuICAgIGlmICghbW9kZWwpIHJldHVybiBudWxsO1xyXG4gICAgcmV0dXJuIGpvaW4odGhpcy5tb2RlbHNEaXIsIG1vZGVsLmZpbGVuYW1lKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIGEgbW9kZWwgaXMgYWxyZWFkeSBkb3dubG9hZGVkXHJcbiAgICovXHJcbiAgaXNEb3dubG9hZGVkKG1vZGVsSWRPckFsaWFzOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHBhdGggPSB0aGlzLmdldE1vZGVsUGF0aChtb2RlbElkT3JBbGlhcyk7XHJcbiAgICBpZiAoIXBhdGgpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBpZiAoIWV4aXN0c1N5bmMocGF0aCkpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAvLyBWZXJpZnkgc2l6ZSBtYXRjaGVzIGV4cGVjdGVkXHJcbiAgICBjb25zdCBtb2RlbCA9IGdldE1vZGVsSW5mbyhtb2RlbElkT3JBbGlhcyk7XHJcbiAgICBpZiAoIW1vZGVsKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgY29uc3Qgc3RhdHMgPSBzdGF0U3luYyhwYXRoKTtcclxuICAgIC8vIEFsbG93IDUlIHZhcmlhbmNlIGZvciBzaXplIGNoZWNrXHJcbiAgICBjb25zdCBtaW5TaXplID0gbW9kZWwuc2l6ZUJ5dGVzICogMC45NTtcclxuICAgIHJldHVybiBzdGF0cy5zaXplID49IG1pblNpemU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgZG93bmxvYWQgc3RhdHVzIGZvciBhbGwgbW9kZWxzXHJcbiAgICovXHJcbiAgZ2V0U3RhdHVzKCk6IHsgbW9kZWw6IE1vZGVsSW5mbzsgZG93bmxvYWRlZDogYm9vbGVhbjsgcGF0aDogc3RyaW5nIH1bXSB7XHJcbiAgICByZXR1cm4gbGlzdE1vZGVscygpLm1hcChtb2RlbCA9PiAoe1xyXG4gICAgICBtb2RlbCxcclxuICAgICAgZG93bmxvYWRlZDogdGhpcy5pc0Rvd25sb2FkZWQobW9kZWwuaWQpLFxyXG4gICAgICBwYXRoOiB0aGlzLmdldE1vZGVsUGF0aChtb2RlbC5pZCkhLFxyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRG93bmxvYWQgYSBtb2RlbCBmcm9tIEh1Z2dpbmdGYWNlXHJcbiAgICovXHJcbiAgYXN5bmMgZG93bmxvYWQoXHJcbiAgICBtb2RlbElkT3JBbGlhczogc3RyaW5nLFxyXG4gICAgb3B0aW9uczogRG93bmxvYWRPcHRpb25zID0ge31cclxuICApOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgY29uc3QgbW9kZWwgPSBnZXRNb2RlbEluZm8obW9kZWxJZE9yQWxpYXMpO1xyXG4gICAgaWYgKCFtb2RlbCkge1xyXG4gICAgICBjb25zdCBhdmFpbGFibGUgPSBsaXN0TW9kZWxzKCkubWFwKG0gPT4gbS5pZCkuam9pbignLCAnKTtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgIGBVbmtub3duIG1vZGVsOiAke21vZGVsSWRPckFsaWFzfS4gQXZhaWxhYmxlIG1vZGVsczogJHthdmFpbGFibGV9YFxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGRlc3REaXIgPSBvcHRpb25zLm1vZGVsc0RpciB8fCB0aGlzLm1vZGVsc0RpcjtcclxuICAgIGNvbnN0IGRlc3RQYXRoID0gam9pbihkZXN0RGlyLCBtb2RlbC5maWxlbmFtZSk7XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgYWxyZWFkeSBkb3dubG9hZGVkXHJcbiAgICBpZiAoIW9wdGlvbnMuZm9yY2UgJiYgdGhpcy5pc0Rvd25sb2FkZWQobW9kZWwuaWQpKSB7XHJcbiAgICAgIHJldHVybiBkZXN0UGF0aDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBFbnN1cmUgZGlyZWN0b3J5IGV4aXN0c1xyXG4gICAgaWYgKCFleGlzdHNTeW5jKGRlc3REaXIpKSB7XHJcbiAgICAgIG1rZGlyU3luYyhkZXN0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBEb3dubG9hZCB3aXRoIHByb2dyZXNzIHRyYWNraW5nXHJcbiAgICBjb25zdCB0ZW1wUGF0aCA9IGAke2Rlc3RQYXRofS50bXBgO1xyXG4gICAgbGV0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XHJcbiAgICBsZXQgbGFzdFByb2dyZXNzVGltZSA9IHN0YXJ0VGltZTtcclxuICAgIGxldCBsYXN0RG93bmxvYWRlZCA9IDA7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gVXNlIGR5bmFtaWMgaW1wb3J0IGZvciBub2RlLWZldGNoIGlmIG5hdGl2ZSBmZXRjaCBub3QgYXZhaWxhYmxlXHJcbiAgICAgIGNvbnN0IGZldGNoRm4gPSBnbG9iYWxUaGlzLmZldGNoIHx8IChhd2FpdCBpbXBvcnQoJ25vZGU6aHR0cHMnKSkuZGVmYXVsdDtcclxuXHJcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2gobW9kZWwudXJsLCB7XHJcbiAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgJ1VzZXItQWdlbnQnOiAnUnV2TExNLzIuMy4wJyxcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEhUVFAgJHtyZXNwb25zZS5zdGF0dXN9OiAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGNvbnRlbnRMZW5ndGggPSBwYXJzZUludChcclxuICAgICAgICByZXNwb25zZS5oZWFkZXJzLmdldCgnY29udGVudC1sZW5ndGgnKSB8fCBTdHJpbmcobW9kZWwuc2l6ZUJ5dGVzKVxyXG4gICAgICApO1xyXG5cclxuICAgICAgLy8gQ3JlYXRlIHdyaXRlIHN0cmVhbVxyXG4gICAgICBjb25zdCBmaWxlU3RyZWFtID0gY3JlYXRlV3JpdGVTdHJlYW0odGVtcFBhdGgpO1xyXG4gICAgICBsZXQgZG93bmxvYWRlZCA9IDA7XHJcblxyXG4gICAgICAvLyBTdHJlYW0gd2l0aCBwcm9ncmVzc1xyXG4gICAgICBjb25zdCByZWFkZXIgPSByZXNwb25zZS5ib2R5Py5nZXRSZWFkZXIoKTtcclxuICAgICAgaWYgKCFyZWFkZXIpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Jlc3BvbnNlIGJvZHkgaXMgbm90IHJlYWRhYmxlJyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHdoaWxlICh0cnVlKSB7XHJcbiAgICAgICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKTtcclxuICAgICAgICBpZiAoZG9uZSkgYnJlYWs7XHJcblxyXG4gICAgICAgIGRvd25sb2FkZWQgKz0gdmFsdWUubGVuZ3RoO1xyXG4gICAgICAgIGZpbGVTdHJlYW0ud3JpdGUodmFsdWUpO1xyXG5cclxuICAgICAgICAvLyBSZXBvcnQgcHJvZ3Jlc3NcclxuICAgICAgICBpZiAob3B0aW9ucy5vblByb2dyZXNzKSB7XHJcbiAgICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgICAgY29uc3QgZWxhcHNlZCA9IChub3cgLSBsYXN0UHJvZ3Jlc3NUaW1lKSAvIDEwMDA7XHJcbiAgICAgICAgICBjb25zdCBieXRlc1RoaXNJbnRlcnZhbCA9IGRvd25sb2FkZWQgLSBsYXN0RG93bmxvYWRlZDtcclxuICAgICAgICAgIGNvbnN0IHNwZWVkQnBzID0gZWxhcHNlZCA+IDAgPyBieXRlc1RoaXNJbnRlcnZhbCAvIGVsYXBzZWQgOiAwO1xyXG4gICAgICAgICAgY29uc3QgcmVtYWluaW5nID0gY29udGVudExlbmd0aCAtIGRvd25sb2FkZWQ7XHJcbiAgICAgICAgICBjb25zdCBldGFTZWNvbmRzID0gc3BlZWRCcHMgPiAwID8gcmVtYWluaW5nIC8gc3BlZWRCcHMgOiAwO1xyXG5cclxuICAgICAgICAgIG9wdGlvbnMub25Qcm9ncmVzcyh7XHJcbiAgICAgICAgICAgIG1vZGVsSWQ6IG1vZGVsLmlkLFxyXG4gICAgICAgICAgICBkb3dubG9hZGVkLFxyXG4gICAgICAgICAgICB0b3RhbDogY29udGVudExlbmd0aCxcclxuICAgICAgICAgICAgcGVyY2VudDogTWF0aC5yb3VuZCgoZG93bmxvYWRlZCAvIGNvbnRlbnRMZW5ndGgpICogMTAwKSxcclxuICAgICAgICAgICAgc3BlZWRCcHMsXHJcbiAgICAgICAgICAgIGV0YVNlY29uZHMsXHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICBsYXN0UHJvZ3Jlc3NUaW1lID0gbm93O1xyXG4gICAgICAgICAgbGFzdERvd25sb2FkZWQgPSBkb3dubG9hZGVkO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgZmlsZVN0cmVhbS5lbmQoKTtcclxuXHJcbiAgICAgIC8vIFdhaXQgZm9yIGZpbGUgdG8gYmUgZnVsbHkgd3JpdHRlblxyXG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgZmlsZVN0cmVhbS5vbignZmluaXNoJywgcmVzb2x2ZSk7XHJcbiAgICAgICAgZmlsZVN0cmVhbS5vbignZXJyb3InLCByZWplY3QpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIC8vIE1vdmUgdGVtcCBmaWxlIHRvIGZpbmFsIGRlc3RpbmF0aW9uXHJcbiAgICAgIGlmIChleGlzdHNTeW5jKGRlc3RQYXRoKSkge1xyXG4gICAgICAgIHVubGlua1N5bmMoZGVzdFBhdGgpO1xyXG4gICAgICB9XHJcbiAgICAgIHJlbmFtZVN5bmModGVtcFBhdGgsIGRlc3RQYXRoKTtcclxuXHJcbiAgICAgIHJldHVybiBkZXN0UGF0aDtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIC8vIENsZWFuIHVwIHRlbXAgZmlsZSBvbiBlcnJvclxyXG4gICAgICBpZiAoZXhpc3RzU3luYyh0ZW1wUGF0aCkpIHtcclxuICAgICAgICB0cnkgeyB1bmxpbmtTeW5jKHRlbXBQYXRoKTsgfSBjYXRjaCB7fVxyXG4gICAgICB9XHJcbiAgICAgIHRocm93IGVycm9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRG93bmxvYWQgYWxsIGF2YWlsYWJsZSBtb2RlbHNcclxuICAgKi9cclxuICBhc3luYyBkb3dubG9hZEFsbChvcHRpb25zOiBEb3dubG9hZE9wdGlvbnMgPSB7fSk6IFByb21pc2U8c3RyaW5nW10+IHtcclxuICAgIGNvbnN0IHBhdGhzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBtb2RlbCBvZiBsaXN0TW9kZWxzKCkpIHtcclxuICAgICAgY29uc3QgcGF0aCA9IGF3YWl0IHRoaXMuZG93bmxvYWQobW9kZWwuaWQsIG9wdGlvbnMpO1xyXG4gICAgICBwYXRocy5wdXNoKHBhdGgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBhdGhzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVsZXRlIGEgZG93bmxvYWRlZCBtb2RlbFxyXG4gICAqL1xyXG4gIGRlbGV0ZShtb2RlbElkT3JBbGlhczogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBwYXRoID0gdGhpcy5nZXRNb2RlbFBhdGgobW9kZWxJZE9yQWxpYXMpO1xyXG4gICAgaWYgKCFwYXRoIHx8ICFleGlzdHNTeW5jKHBhdGgpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHVubGlua1N5bmMocGF0aCk7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZSBhbGwgZG93bmxvYWRlZCBtb2RlbHNcclxuICAgKi9cclxuICBkZWxldGVBbGwoKTogbnVtYmVyIHtcclxuICAgIGxldCBjb3VudCA9IDA7XHJcbiAgICBmb3IgKGNvbnN0IG1vZGVsIG9mIGxpc3RNb2RlbHMoKSkge1xyXG4gICAgICBpZiAodGhpcy5kZWxldGUobW9kZWwuaWQpKSB7XHJcbiAgICAgICAgY291bnQrKztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvdW50O1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgTW9kZWxEb3dubG9hZGVyO1xyXG4iXX0=
|
|
313
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsMkJBQWdHO0FBQ2hHLCtCQUFxQztBQUNyQywyQkFBNkI7QUEyRDdCLDZCQUE2QjtBQUM3QixNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUM7QUFDOUIsTUFBTSxXQUFXLEdBQUcsMEJBQTBCLE9BQU8sZUFBZSxDQUFDO0FBRXJFLCtCQUErQjtBQUNsQixRQUFBLGNBQWMsR0FBOEI7SUFDdkQsYUFBYSxFQUFFO1FBQ2IsRUFBRSxFQUFFLGFBQWE7UUFDakIsSUFBSSxFQUFFLHFCQUFxQjtRQUMzQixRQUFRLEVBQUUsc0NBQXNDO1FBQ2hELFNBQVMsRUFBRSxTQUFXO1FBQ3RCLElBQUksRUFBRSxRQUFRO1FBQ2QsVUFBVSxFQUFFLE1BQU07UUFDbEIsT0FBTyxFQUFFLHVDQUF1QztRQUNoRCxZQUFZLEVBQUUsUUFBUTtRQUN0QixhQUFhLEVBQUUsSUFBSTtRQUNuQixHQUFHLEVBQUUsR0FBRyxXQUFXLHVDQUF1QztLQUMzRDtJQUNELE9BQU8sRUFBRTtRQUNQLEVBQUUsRUFBRSxPQUFPO1FBQ1gsSUFBSSxFQUFFLGVBQWU7UUFDckIsUUFBUSxFQUFFLGdDQUFnQztRQUMxQyxTQUFTLEVBQUUsU0FBVztRQUN0QixJQUFJLEVBQUUsUUFBUTtRQUNkLFVBQVUsRUFBRSxNQUFNO1FBQ2xCLE9BQU8sRUFBRSxzREFBc0Q7UUFDL0QsWUFBWSxFQUFFLFFBQVE7UUFDdEIsYUFBYSxFQUFFLElBQUk7UUFDbkIsR0FBRyxFQUFFLEdBQUcsV0FBVyxpQ0FBaUM7S0FDckQ7SUFDRCxRQUFRLEVBQUU7UUFDUixFQUFFLEVBQUUsUUFBUTtRQUNaLElBQUksRUFBRSxnQkFBZ0I7UUFDdEIsUUFBUSxFQUFFLGlDQUFpQztRQUMzQyxTQUFT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LE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3BELEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkIsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLGNBQXNCO1FBQzNCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUEsZUFBVSxFQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDL0IsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBQSxlQUFVLEVBQUMsSUFBSSxDQUFDLENBQUM7UUFDakIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxTQUFTO1FBQ1AsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsS0FBSyxNQUFNLEtBQUssSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2pDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDMUIsS0FBSyxFQUFFLENBQUM7WUFDVixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGO0FBdE1ELDBDQXNNQztBQUVELGtCQUFlLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUnV2TFRSQSBNb2RlbCBSZWdpc3RyeSBhbmQgRG93bmxvYWRlclxuICpcbiAqIEF1dG9tYXRpY2FsbHkgZG93bmxvYWRzIEdHVUYgbW9kZWxzIGZyb20gSHVnZ2luZ0ZhY2UgSHViLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBNb2RlbERvd25sb2FkZXIsIFJVVkxUUkFfTU9ERUxTIH0gZnJvbSAnQHJ1dmVjdG9yL3J1dmxsbSc7XG4gKlxuICogLy8gRG93bmxvYWQgdGhlIENsYXVkZSBDb2RlIG9wdGltaXplZCBtb2RlbFxuICogY29uc3QgZG93bmxvYWRlciA9IG5ldyBNb2RlbERvd25sb2FkZXIoKTtcbiAqIGNvbnN0IG1vZGVsUGF0aCA9IGF3YWl0IGRvd25sb2FkZXIuZG93bmxvYWQoJ2NsYXVkZS1jb2RlJyk7XG4gKlxuICogLy8gT3IgZG93bmxvYWQgYWxsIG1vZGVsc1xuICogYXdhaXQgZG93bmxvYWRlci5kb3dubG9hZEFsbCgpO1xuICogYGBgXG4gKi9cblxuaW1wb3J0IHsgY3JlYXRlV3JpdGVTdHJlYW0sIGV4aXN0c1N5bmMsIG1rZGlyU3luYywgc3RhdFN5bmMsIHVubGlua1N5bmMsIHJlbmFtZVN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBqb2luLCBkaXJuYW1lIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBob21lZGlyIH0gZnJvbSAnb3MnO1xuaW1wb3J0IHsgcGlwZWxpbmUgfSBmcm9tICdzdHJlYW0vcHJvbWlzZXMnO1xuaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gJ2NyeXB0byc7XG5cbi8qKiBNb2RlbCBpbmZvcm1hdGlvbiBmcm9tIEh1Z2dpbmdGYWNlICovXG5leHBvcnQgaW50ZXJmYWNlIE1vZGVsSW5mbyB7XG4gIC8qKiBNb2RlbCBpZGVudGlmaWVyICovXG4gIGlkOiBzdHJpbmc7XG4gIC8qKiBEaXNwbGF5IG5hbWUgKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKiogTW9kZWwgZmlsZW5hbWUgb24gSHVnZ2luZ0ZhY2UgKi9cbiAgZmlsZW5hbWU6IHN0cmluZztcbiAgLyoqIE1vZGVsIHNpemUgaW4gYnl0ZXMgKi9cbiAgc2l6ZUJ5dGVzOiBudW1iZXI7XG4gIC8qKiBNb2RlbCBzaXplIChodW1hbiByZWFkYWJsZSkgKi9cbiAgc2l6ZTogc3RyaW5nO1xuICAvKiogUGFyYW1ldGVyIGNvdW50ICovXG4gIHBhcmFtZXRlcnM6IHN0cmluZztcbiAgLyoqIFVzZSBjYXNlIGRlc2NyaXB0aW9uICovXG4gIHVzZUNhc2U6IHN0cmluZztcbiAgLyoqIFF1YW50aXphdGlvbiB0eXBlICovXG4gIHF1YW50aXphdGlvbjogc3RyaW5nO1xuICAvKiogQ29udGV4dCB3aW5kb3cgc2l6ZSAqL1xuICBjb250ZXh0TGVuZ3RoOiBudW1iZXI7XG4gIC8qKiBIdWdnaW5nRmFjZSBkb3dubG9hZCBVUkwgKi9cbiAgdXJsOiBzdHJpbmc7XG59XG5cbi8qKiBEb3dubG9hZCBwcm9ncmVzcyBjYWxsYmFjayAqL1xuZXhwb3J0IHR5cGUgUHJvZ3Jlc3NDYWxsYmFjayA9IChwcm9ncmVzczogRG93bmxvYWRQcm9ncmVzcykgPT4gdm9pZDtcblxuLyoqIERvd25sb2FkIHByb2dyZXNzIGluZm9ybWF0aW9uICovXG5leHBvcnQgaW50ZXJmYWNlIERvd25sb2FkUHJvZ3Jlc3Mge1xuICAvKiogTW9kZWwgYmVpbmcgZG93bmxvYWRlZCAqL1xuICBtb2RlbElkOiBzdHJpbmc7XG4gIC8qKiBCeXRlcyBkb3dubG9hZGVkIHNvIGZhciAqL1xuICBkb3dubG9hZGVkOiBudW1iZXI7XG4gIC8qKiBUb3RhbCBieXRlcyB0byBkb3dubG9hZCAqL1xuICB0b3RhbDogbnVtYmVyO1xuICAvKiogRG93bmxvYWQgcGVyY2VudGFnZSAoMC0xMDApICovXG4gIHBlcmNlbnQ6IG51bWJlcjtcbiAgLyoqIERvd25sb2FkIHNwZWVkIGluIGJ5dGVzIHBlciBzZWNvbmQgKi9cbiAgc3BlZWRCcHM6IG51bWJlcjtcbiAgLyoqIEVzdGltYXRlZCB0aW1lIHJlbWFpbmluZyBpbiBzZWNvbmRzICovXG4gIGV0YVNlY29uZHM6IG51bWJlcjtcbn1cblxuLyoqIERvd25sb2FkIG9wdGlvbnMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgRG93bmxvYWRPcHRpb25zIHtcbiAgLyoqIERpcmVjdG9yeSB0byBzYXZlIG1vZGVscyAoZGVmYXVsdDogfi8ucnV2bGxtL21vZGVscykgKi9cbiAgbW9kZWxzRGlyPzogc3RyaW5nO1xuICAvKiogRm9yY2UgcmUtZG93bmxvYWQgZXZlbiBpZiBmaWxlIGV4aXN0cyAqL1xuICBmb3JjZT86IGJvb2xlYW47XG4gIC8qKiBQcm9ncmVzcyBjYWxsYmFjayAqL1xuICBvblByb2dyZXNzPzogUHJvZ3Jlc3NDYWxsYmFjaztcbiAgLyoqIFZlcmlmeSBmaWxlIGludGVncml0eSBhZnRlciBkb3dubG9hZCAqL1xuICB2ZXJpZnk/OiBib29sZWFuO1xufVxuXG4vKiogSHVnZ2luZ0ZhY2UgcmVwb3NpdG9yeSAqL1xuY29uc3QgSEZfUkVQTyA9ICdydXYvcnV2bHRyYSc7XG5jb25zdCBIRl9CQVNFX1VSTCA9IGBodHRwczovL2h1Z2dpbmdmYWNlLmNvLyR7SEZfUkVQT30vcmVzb2x2ZS9tYWluYDtcblxuLyoqIEF2YWlsYWJsZSBSdXZMVFJBIG1vZGVscyAqL1xuZXhwb3J0IGNvbnN0IFJVVkxUUkFfTU9ERUxTOiBSZWNvcmQ8c3RyaW5nLCBNb2RlbEluZm8+ID0ge1xuICAnY2xhdWRlLWNvZGUnOiB7XG4gICAgaWQ6ICdjbGF1ZGUtY29kZScsXG4gICAgbmFtZTogJ1J1dkxUUkEgQ2xhdWRlIENvZGUnLFxuICAgIGZpbGVuYW1lOiAncnV2bHRyYS1jbGF1ZGUtY29kZS0wLjViLXE0X2tfbS5nZ3VmJyxcbiAgICBzaXplQnl0ZXM6IDM5OF8wMDBfMDAwLFxuICAgIHNpemU6ICczOTggTUInLFxuICAgIHBhcmFtZXRlcnM6ICcwLjVCJyxcbiAgICB1c2VDYXNlOiAnQ2xhdWRlIENvZGUgd29ya2Zsb3dzLCBhZ2VudGljIGNvZGluZycsXG4gICAgcXVhbnRpemF0aW9uOiAnUTRfS19NJyxcbiAgICBjb250ZXh0TGVuZ3RoOiA0MDk2LFxuICAgIHVybDogYCR7SEZfQkFTRV9VUkx9L3J1dmx0cmEtY2xhdWRlLWNvZGUtMC41Yi1xNF9rX20uZ2d1ZmAsXG4gIH0sXG4gICdzbWFsbCc6IHtcbiAgICBpZDogJ3NtYWxsJyxcbiAgICBuYW1lOiAnUnV2TFRSQSBTbWFsbCcsXG4gICAgZmlsZW5hbWU6ICdydXZsdHJhLXNtYWxsLTAuNWItcTRfa19tLmdndWYnLFxuICAgIHNpemVCeXRlczogMzk4XzAwMF8wMDAsXG4gICAgc2l6ZTogJzM5OCBNQicsXG4gICAgcGFyYW1ldGVyczogJzAuNUInLFxuICAgIHVzZUNhc2U6ICdFZGdlIGRldmljZXMsIElvVCwgcmVzb3VyY2UtY29uc3RyYWluZWQgZW52aXJvbm1lbnRzJyxcbiAgICBxdWFudGl6YXRpb246ICdRNF9LX00nLFxuICAgIGNvbnRleHRMZW5ndGg6IDQwOTYsXG4gICAgdXJsOiBgJHtIRl9CQVNFX1VSTH0vcnV2bHRyYS1zbWFsbC0wLjViLXE0X2tfbS5nZ3VmYCxcbiAgfSxcbiAgJ21lZGl1bSc6IHtcbiAgICBpZDogJ21lZGl1bScsXG4gICAgbmFtZTogJ1J1dkxUUkEgTWVkaXVtJyxcbiAgICBmaWxlbmFtZTogJ3J1dmx0cmEtbWVkaXVtLTEuMWItcTRfa19tLmdndWYnLFxuICAgIHNpemVCeXRlczogNjY5XzAwMF8wMDAsXG4gICAgc2l6ZTogJzY2OSBNQicsXG4gICAgcGFyYW1ldGVyczogJzEuMUInLFxuICAgIHVzZUNhc2U6ICdHZW5lcmFsIHB1cnBvc2UsIGJhbGFuY2VkIHBlcmZvcm1hbmNlJyxcbiAgICBxdWFudGl6YXRpb246ICdRNF9LX00nLFxuICAgIGNvbnRleHRMZW5ndGg6IDgxOTIsXG4gICAgdXJsOiBgJHtIRl9CQVNFX1VSTH0vcnV2bHRyYS1tZWRpdW0tMS4xYi1xNF9rX20uZ2d1ZmAsXG4gIH0sXG59O1xuXG4vKiogTW9kZWwgYWxpYXNlcyBmb3IgY29udmVuaWVuY2UgKi9cbmV4cG9ydCBjb25zdCBNT0RFTF9BTElBU0VTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAnY2MnOiAnY2xhdWRlLWNvZGUnLFxuICAnY2xhdWRlY29kZSc6ICdjbGF1ZGUtY29kZScsXG4gICdjbGF1ZGUnOiAnY2xhdWRlLWNvZGUnLFxuICAncyc6ICdzbWFsbCcsXG4gICdzbSc6ICdzbWFsbCcsXG4gICdtJzogJ21lZGl1bScsXG4gICdtZWQnOiAnbWVkaXVtJyxcbiAgJ2RlZmF1bHQnOiAnY2xhdWRlLWNvZGUnLFxufTtcblxuLyoqXG4gKiBHZXQgdGhlIGRlZmF1bHQgbW9kZWxzIGRpcmVjdG9yeVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdE1vZGVsc0RpcigpOiBzdHJpbmcge1xuICByZXR1cm4gam9pbihob21lZGlyKCksICcucnV2bGxtJywgJ21vZGVscycpO1xufVxuXG4vKipcbiAqIFJlc29sdmUgbW9kZWwgSUQgZnJvbSBhbGlhcyBvciBkaXJlY3QgSURcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVNb2RlbElkKG1vZGVsSWRPckFsaWFzOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IG1vZGVsSWRPckFsaWFzLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuXG4gIC8vIERpcmVjdCBtYXRjaFxuICBpZiAoUlVWTFRSQV9NT0RFTFNbbm9ybWFsaXplZF0pIHtcbiAgICByZXR1cm4gbm9ybWFsaXplZDtcbiAgfVxuXG4gIC8vIEFsaWFzIG1hdGNoXG4gIGlmIChNT0RFTF9BTElBU0VTW25vcm1hbGl6ZWRdKSB7XG4gICAgcmV0dXJuIE1PREVMX0FMSUFTRVNbbm9ybWFsaXplZF07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBHZXQgbW9kZWwgaW5mbyBieSBJRCBvciBhbGlhc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TW9kZWxJbmZvKG1vZGVsSWRPckFsaWFzOiBzdHJpbmcpOiBNb2RlbEluZm8gfCBudWxsIHtcbiAgY29uc3QgaWQgPSByZXNvbHZlTW9kZWxJZChtb2RlbElkT3JBbGlhcyk7XG4gIHJldHVybiBpZCA/IFJVVkxUUkFfTU9ERUxTW2lkXSA6IG51bGw7XG59XG5cbi8qKlxuICogTGlzdCBhbGwgYXZhaWxhYmxlIG1vZGVsc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbGlzdE1vZGVscygpOiBNb2RlbEluZm9bXSB7XG4gIHJldHVybiBPYmplY3QudmFsdWVzKFJVVkxUUkFfTU9ERUxTKTtcbn1cblxuLyoqXG4gKiBNb2RlbCBkb3dubG9hZGVyIGZvciBSdXZMVFJBIEdHVUYgbW9kZWxzXG4gKi9cbmV4cG9ydCBjbGFzcyBNb2RlbERvd25sb2FkZXIge1xuICBwcml2YXRlIG1vZGVsc0Rpcjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG1vZGVsc0Rpcj86IHN0cmluZykge1xuICAgIHRoaXMubW9kZWxzRGlyID0gbW9kZWxzRGlyIHx8IGdldERlZmF1bHRNb2RlbHNEaXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHBhdGggd2hlcmUgYSBtb2RlbCB3b3VsZCBiZSBzYXZlZFxuICAgKi9cbiAgZ2V0TW9kZWxQYXRoKG1vZGVsSWRPckFsaWFzOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBtb2RlbCA9IGdldE1vZGVsSW5mbyhtb2RlbElkT3JBbGlhcyk7XG4gICAgaWYgKCFtb2RlbCkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIGpvaW4odGhpcy5tb2RlbHNEaXIsIG1vZGVsLmZpbGVuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIG1vZGVsIGlzIGFscmVhZHkgZG93bmxvYWRlZFxuICAgKi9cbiAgaXNEb3dubG9hZGVkKG1vZGVsSWRPckFsaWFzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5nZXRNb2RlbFBhdGgobW9kZWxJZE9yQWxpYXMpO1xuICAgIGlmICghcGF0aCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgaWYgKCFleGlzdHNTeW5jKHBhdGgpKSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBWZXJpZnkgc2l6ZSBtYXRjaGVzIGV4cGVjdGVkXG4gICAgY29uc3QgbW9kZWwgPSBnZXRNb2RlbEluZm8obW9kZWxJZE9yQWxpYXMpO1xuICAgIGlmICghbW9kZWwpIHJldHVybiBmYWxzZTtcblxuICAgIGNvbnN0IHN0YXRzID0gc3RhdFN5bmMocGF0aCk7XG4gICAgLy8gQWxsb3cgNSUgdmFyaWFuY2UgZm9yIHNpemUgY2hlY2tcbiAgICBjb25zdCBtaW5TaXplID0gbW9kZWwuc2l6ZUJ5dGVzICogMC45NTtcbiAgICByZXR1cm4gc3RhdHMuc2l6ZSA+PSBtaW5TaXplO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBkb3dubG9hZCBzdGF0dXMgZm9yIGFsbCBtb2RlbHNcbiAgICovXG4gIGdldFN0YXR1cygpOiB7IG1vZGVsOiBNb2RlbEluZm87IGRvd25sb2FkZWQ6IGJvb2xlYW47IHBhdGg6IHN0cmluZyB9W10ge1xuICAgIHJldHVybiBsaXN0TW9kZWxzKCkubWFwKG1vZGVsID0+ICh7XG4gICAgICBtb2RlbCxcbiAgICAgIGRvd25sb2FkZWQ6IHRoaXMuaXNEb3dubG9hZGVkKG1vZGVsLmlkKSxcbiAgICAgIHBhdGg6IHRoaXMuZ2V0TW9kZWxQYXRoKG1vZGVsLmlkKSEsXG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIERvd25sb2FkIGEgbW9kZWwgZnJvbSBIdWdnaW5nRmFjZVxuICAgKi9cbiAgYXN5bmMgZG93bmxvYWQoXG4gICAgbW9kZWxJZE9yQWxpYXM6IHN0cmluZyxcbiAgICBvcHRpb25zOiBEb3dubG9hZE9wdGlvbnMgPSB7fVxuICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IG1vZGVsID0gZ2V0TW9kZWxJbmZvKG1vZGVsSWRPckFsaWFzKTtcbiAgICBpZiAoIW1vZGVsKSB7XG4gICAgICBjb25zdCBhdmFpbGFibGUgPSBsaXN0TW9kZWxzKCkubWFwKG0gPT4gbS5pZCkuam9pbignLCAnKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFVua25vd24gbW9kZWw6ICR7bW9kZWxJZE9yQWxpYXN9LiBBdmFpbGFibGUgbW9kZWxzOiAke2F2YWlsYWJsZX1gXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGRlc3REaXIgPSBvcHRpb25zLm1vZGVsc0RpciB8fCB0aGlzLm1vZGVsc0RpcjtcbiAgICBjb25zdCBkZXN0UGF0aCA9IGpvaW4oZGVzdERpciwgbW9kZWwuZmlsZW5hbWUpO1xuXG4gICAgLy8gQ2hlY2sgaWYgYWxyZWFkeSBkb3dubG9hZGVkXG4gICAgaWYgKCFvcHRpb25zLmZvcmNlICYmIHRoaXMuaXNEb3dubG9hZGVkKG1vZGVsLmlkKSkge1xuICAgICAgcmV0dXJuIGRlc3RQYXRoO1xuICAgIH1cblxuICAgIC8vIEVuc3VyZSBkaXJlY3RvcnkgZXhpc3RzXG4gICAgaWYgKCFleGlzdHNTeW5jKGRlc3REaXIpKSB7XG4gICAgICBta2RpclN5bmMoZGVzdERpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgLy8gRG93bmxvYWQgd2l0aCBwcm9ncmVzcyB0cmFja2luZ1xuICAgIGNvbnN0IHRlbXBQYXRoID0gYCR7ZGVzdFBhdGh9LnRtcGA7XG4gICAgbGV0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgbGV0IGxhc3RQcm9ncmVzc1RpbWUgPSBzdGFydFRpbWU7XG4gICAgbGV0IGxhc3REb3dubG9hZGVkID0gMDtcblxuICAgIHRyeSB7XG4gICAgICAvLyBVc2UgZHluYW1pYyBpbXBvcnQgZm9yIG5vZGUtZmV0Y2ggaWYgbmF0aXZlIGZldGNoIG5vdCBhdmFpbGFibGVcbiAgICAgIGNvbnN0IGZldGNoRm4gPSBnbG9iYWxUaGlzLmZldGNoIHx8IChhd2FpdCBpbXBvcnQoJ25vZGU6aHR0cHMnKSkuZGVmYXVsdDtcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChtb2RlbC51cmwsIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICdVc2VyLUFnZW50JzogJ1J1dkxMTS8yLjMuMCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEhUVFAgJHtyZXNwb25zZS5zdGF0dXN9OiAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbnRlbnRMZW5ndGggPSBwYXJzZUludChcbiAgICAgICAgcmVzcG9uc2UuaGVhZGVycy5nZXQoJ2NvbnRlbnQtbGVuZ3RoJykgfHwgU3RyaW5nKG1vZGVsLnNpemVCeXRlcylcbiAgICAgICk7XG5cbiAgICAgIC8vIENyZWF0ZSB3cml0ZSBzdHJlYW1cbiAgICAgIGNvbnN0IGZpbGVTdHJlYW0gPSBjcmVhdGVXcml0ZVN0cmVhbSh0ZW1wUGF0aCk7XG4gICAgICBsZXQgZG93bmxvYWRlZCA9IDA7XG5cbiAgICAgIC8vIFN0cmVhbSB3aXRoIHByb2dyZXNzXG4gICAgICBjb25zdCByZWFkZXIgPSByZXNwb25zZS5ib2R5Py5nZXRSZWFkZXIoKTtcbiAgICAgIGlmICghcmVhZGVyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignUmVzcG9uc2UgYm9keSBpcyBub3QgcmVhZGFibGUnKTtcbiAgICAgIH1cblxuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKTtcbiAgICAgICAgaWYgKGRvbmUpIGJyZWFrO1xuXG4gICAgICAgIGRvd25sb2FkZWQgKz0gdmFsdWUubGVuZ3RoO1xuICAgICAgICBmaWxlU3RyZWFtLndyaXRlKHZhbHVlKTtcblxuICAgICAgICAvLyBSZXBvcnQgcHJvZ3Jlc3NcbiAgICAgICAgaWYgKG9wdGlvbnMub25Qcm9ncmVzcykge1xuICAgICAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICAgICAgY29uc3QgZWxhcHNlZCA9IChub3cgLSBsYXN0UHJvZ3Jlc3NUaW1lKSAvIDEwMDA7XG4gICAgICAgICAgY29uc3QgYnl0ZXNUaGlzSW50ZXJ2YWwgPSBkb3dubG9hZGVkIC0gbGFzdERvd25sb2FkZWQ7XG4gICAgICAgICAgY29uc3Qgc3BlZWRCcHMgPSBlbGFwc2VkID4gMCA/IGJ5dGVzVGhpc0ludGVydmFsIC8gZWxhcHNlZCA6IDA7XG4gICAgICAgICAgY29uc3QgcmVtYWluaW5nID0gY29udGVudExlbmd0aCAtIGRvd25sb2FkZWQ7XG4gICAgICAgICAgY29uc3QgZXRhU2Vjb25kcyA9IHNwZWVkQnBzID4gMCA/IHJlbWFpbmluZyAvIHNwZWVkQnBzIDogMDtcblxuICAgICAgICAgIG9wdGlvbnMub25Qcm9ncmVzcyh7XG4gICAgICAgICAgICBtb2RlbElkOiBtb2RlbC5pZCxcbiAgICAgICAgICAgIGRvd25sb2FkZWQsXG4gICAgICAgICAgICB0b3RhbDogY29udGVudExlbmd0aCxcbiAgICAgICAgICAgIHBlcmNlbnQ6IE1hdGgucm91bmQoKGRvd25sb2FkZWQgLyBjb250ZW50TGVuZ3RoKSAqIDEwMCksXG4gICAgICAgICAgICBzcGVlZEJwcyxcbiAgICAgICAgICAgIGV0YVNlY29uZHMsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBsYXN0UHJvZ3Jlc3NUaW1lID0gbm93O1xuICAgICAgICAgIGxhc3REb3dubG9hZGVkID0gZG93bmxvYWRlZDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmaWxlU3RyZWFtLmVuZCgpO1xuXG4gICAgICAvLyBXYWl0IGZvciBmaWxlIHRvIGJlIGZ1bGx5IHdyaXR0ZW5cbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgZmlsZVN0cmVhbS5vbignZmluaXNoJywgcmVzb2x2ZSk7XG4gICAgICAgIGZpbGVTdHJlYW0ub24oJ2Vycm9yJywgcmVqZWN0KTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBNb3ZlIHRlbXAgZmlsZSB0byBmaW5hbCBkZXN0aW5hdGlvblxuICAgICAgaWYgKGV4aXN0c1N5bmMoZGVzdFBhdGgpKSB7XG4gICAgICAgIHVubGlua1N5bmMoZGVzdFBhdGgpO1xuICAgICAgfVxuICAgICAgcmVuYW1lU3luYyh0ZW1wUGF0aCwgZGVzdFBhdGgpO1xuXG4gICAgICByZXR1cm4gZGVzdFBhdGg7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIENsZWFuIHVwIHRlbXAgZmlsZSBvbiBlcnJvclxuICAgICAgaWYgKGV4aXN0c1N5bmModGVtcFBhdGgpKSB7XG4gICAgICAgIHRyeSB7IHVubGlua1N5bmModGVtcFBhdGgpOyB9IGNhdGNoIHt9XG4gICAgICB9XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRG93bmxvYWQgYWxsIGF2YWlsYWJsZSBtb2RlbHNcbiAgICovXG4gIGFzeW5jIGRvd25sb2FkQWxsKG9wdGlvbnM6IERvd25sb2FkT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIGNvbnN0IHBhdGhzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgbW9kZWwgb2YgbGlzdE1vZGVscygpKSB7XG4gICAgICBjb25zdCBwYXRoID0gYXdhaXQgdGhpcy5kb3dubG9hZChtb2RlbC5pZCwgb3B0aW9ucyk7XG4gICAgICBwYXRocy5wdXNoKHBhdGgpO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aHM7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGEgZG93bmxvYWRlZCBtb2RlbFxuICAgKi9cbiAgZGVsZXRlKG1vZGVsSWRPckFsaWFzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5nZXRNb2RlbFBhdGgobW9kZWxJZE9yQWxpYXMpO1xuICAgIGlmICghcGF0aCB8fCAhZXhpc3RzU3luYyhwYXRoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB1bmxpbmtTeW5jKHBhdGgpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBhbGwgZG93bmxvYWRlZCBtb2RlbHNcbiAgICovXG4gIGRlbGV0ZUFsbCgpOiBudW1iZXIge1xuICAgIGxldCBjb3VudCA9IDA7XG4gICAgZm9yIChjb25zdCBtb2RlbCBvZiBsaXN0TW9kZWxzKCkpIHtcbiAgICAgIGlmICh0aGlzLmRlbGV0ZShtb2RlbC5pZCkpIHtcbiAgICAgICAgY291bnQrKztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvdW50O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE1vZGVsRG93bmxvYWRlcjtcbiJdfQ==
|
package/dist/cjs/native.js
CHANGED
|
@@ -5,9 +5,7 @@
|
|
|
5
5
|
* Automatically loads the correct native binary for the current platform.
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.getNativeModule =
|
|
9
|
-
exports.version = version;
|
|
10
|
-
exports.hasSimdSupport = hasSimdSupport;
|
|
8
|
+
exports.hasSimdSupport = exports.version = exports.getNativeModule = void 0;
|
|
11
9
|
const path_1 = require("path");
|
|
12
10
|
// Try to load the native module
|
|
13
11
|
let nativeModule = null;
|
|
@@ -66,12 +64,15 @@ function loadNativeModule() {
|
|
|
66
64
|
function getNativeModule() {
|
|
67
65
|
return loadNativeModule();
|
|
68
66
|
}
|
|
67
|
+
exports.getNativeModule = getNativeModule;
|
|
69
68
|
function version() {
|
|
70
69
|
const mod = loadNativeModule();
|
|
71
70
|
return mod?.version() ?? '0.1.0-js';
|
|
72
71
|
}
|
|
72
|
+
exports.version = version;
|
|
73
73
|
function hasSimdSupport() {
|
|
74
74
|
const mod = loadNativeModule();
|
|
75
75
|
return mod?.hasSimdSupport() ?? false;
|
|
76
76
|
}
|
|
77
|
-
|
|
77
|
+
exports.hasSimdSupport = hasSimdSupport;
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25hdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRzs7O0FBRUgsK0JBQTRCO0FBRTVCLGdDQUFnQztBQUNoQyxJQUFJLFlBQVksR0FBd0IsSUFBSSxDQUFDO0FBOEY3QyxrQ0FBa0M7QUFDbEMsTUFBTSxpQkFBaUIsR0FBMkI7SUFDaEQsWUFBWSxFQUFFLDZCQUE2QjtJQUMzQyxjQUFjLEVBQUUsK0JBQStCO0lBQy9DLFdBQVcsRUFBRSxnQ0FBZ0M7SUFDN0MsYUFBYSxFQUFFLGtDQUFrQztJQUNqRCxXQUFXLEVBQUUsaUNBQWlDO0NBQy9DLENBQUM7QUFFRixTQUFTLGNBQWM7SUFDckIsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUNsQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQzFCLE9BQU8sR0FBRyxRQUFRLElBQUksSUFBSSxFQUFFLENBQUM7QUFDL0IsQ0FBQztBQUVELFNBQVMsZ0JBQWdCO0lBQ3ZCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakIsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLGNBQWMsRUFBRSxDQUFDO0lBQ3JDLE1BQU0sV0FBVyxHQUFHLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRW5ELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQiwyQ0FBMkM7UUFDM0MsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQseUNBQXlDO0lBQ3pDLE1BQU0sUUFBUSxHQUFHO1FBQ2Ysb0NBQW9DO1FBQ3BDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFDMUIsZ0RBQWdEO1FBQ2hELEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFBLFdBQUksRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztRQUN6RCwyQ0FBMkM7UUFDM0MsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUEsV0FBSSxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7S0FDcEQsQ0FBQztJQUVGLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDO1lBQ0gsTUFBTSxHQUFHLEdBQUcsT0FBTyxFQUFxQixDQUFDO1lBQ3pDLG9FQUFvRTtZQUNwRSxZQUFZLEdBQUc7Z0JBQ2IsWUFBWSxFQUFFLEdBQUcsQ0FBQyxZQUFZLElBQUksR0FBRyxDQUFDLFlBQWE7Z0JBQ25ELGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYztnQkFDbEMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO2dCQUNwQixjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWM7YUFDbkMsQ0FBQztZQUNGLE9BQU8sWUFBWSxDQUFDO1FBQ3RCLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCwyQkFBMkI7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFRCwwQ0FBMEM7SUFDMUMsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsMENBQTBDO0FBQzFDLFNBQWdCLGVBQWU7SUFDN0IsT0FBTyxnQkFBZ0IsRUFBRSxDQUFDO0FBQzVCLENBQUM7QUFGRCwwQ0FFQztBQUVELFNBQWdCLE9BQU87SUFDckIsTUFBTSxHQUFHLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztJQUMvQixPQUFPLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxVQUFVLENBQUM7QUFDdEMsQ0FBQztBQUhELDBCQUdDO0FBRUQsU0FBZ0IsY0FBYztJQUM1QixNQUFNLEdBQUcsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO0lBQy9CLE9BQU8sR0FBRyxFQUFFLGNBQWMsRUFBRSxJQUFJLEtBQUssQ0FBQztBQUN4QyxDQUFDO0FBSEQsd0NBR0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE5hdGl2ZSBiaW5kaW5ncyBsb2FkZXIgZm9yIFJ1dkxMTVxuICpcbiAqIEF1dG9tYXRpY2FsbHkgbG9hZHMgdGhlIGNvcnJlY3QgbmF0aXZlIGJpbmFyeSBmb3IgdGhlIGN1cnJlbnQgcGxhdGZvcm0uXG4gKi9cblxuaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnO1xuXG4vLyBUcnkgdG8gbG9hZCB0aGUgbmF0aXZlIG1vZHVsZVxubGV0IG5hdGl2ZU1vZHVsZTogTmF0aXZlUnV2TExNIHwgbnVsbCA9IG51bGw7XG5cbmludGVyZmFjZSBOYXRpdmVSdXZMTE0ge1xuICAvLyBOYXRpdmUgZXhwb3J0cyBSdXZMbG1FbmdpbmUgKGNhbWVsQ2FzZSksIHdlIG5vcm1hbGl6ZSB0byBSdXZMTE1FbmdpbmVcbiAgUnV2TExNRW5naW5lOiBuZXcgKGNvbmZpZz86IE5hdGl2ZUNvbmZpZykgPT4gTmF0aXZlRW5naW5lO1xuICBTaW1kT3BlcmF0aW9uczogbmV3ICgpID0+IE5hdGl2ZVNpbWRPcHM7XG4gIHZlcnNpb246ICgpID0+IHN0cmluZztcbiAgaGFzU2ltZFN1cHBvcnQ6ICgpID0+IGJvb2xlYW47XG59XG5cbi8vIFJhdyBuYXRpdmUgbW9kdWxlIGludGVyZmFjZSAoYWN0dWFsIGV4cG9ydCBuYW1lcylcbmludGVyZmFjZSBSYXdOYXRpdmVNb2R1bGUge1xuICBSdXZMbG1FbmdpbmU/OiBuZXcgKGNvbmZpZz86IE5hdGl2ZUNvbmZpZykgPT4gTmF0aXZlRW5naW5lO1xuICBSdXZMTE1FbmdpbmU/OiBuZXcgKGNvbmZpZz86IE5hdGl2ZUNvbmZpZykgPT4gTmF0aXZlRW5naW5lO1xuICBTaW1kT3BlcmF0aW9uczogbmV3ICgpID0+IE5hdGl2ZVNpbWRPcHM7XG4gIHZlcnNpb246ICgpID0+IHN0cmluZztcbiAgaGFzU2ltZFN1cHBvcnQ6ICgpID0+IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBOYXRpdmVDb25maWcge1xuICBlbWJlZGRpbmdfZGltPzogbnVtYmVyO1xuICByb3V0ZXJfaGlkZGVuX2RpbT86IG51bWJlcjtcbiAgaG5zd19tPzogbnVtYmVyO1xuICBobnN3X2VmX2NvbnN0cnVjdGlvbj86IG51bWJlcjtcbiAgaG5zd19lZl9zZWFyY2g/OiBudW1iZXI7XG4gIGxlYXJuaW5nX2VuYWJsZWQ/OiBib29sZWFuO1xuICBxdWFsaXR5X3RocmVzaG9sZD86IG51bWJlcjtcbiAgZXdjX2xhbWJkYT86IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZUVuZ2luZSB7XG4gIHF1ZXJ5KHRleHQ6IHN0cmluZywgY29uZmlnPzogTmF0aXZlR2VuQ29uZmlnKTogTmF0aXZlUXVlcnlSZXNwb25zZTtcbiAgZ2VuZXJhdGUocHJvbXB0OiBzdHJpbmcsIGNvbmZpZz86IE5hdGl2ZUdlbkNvbmZpZyk6IHN0cmluZztcbiAgcm91dGUodGV4dDogc3RyaW5nKTogTmF0aXZlUm91dGluZ0RlY2lzaW9uO1xuICBzZWFyY2hNZW1vcnkodGV4dDogc3RyaW5nLCBrPzogbnVtYmVyKTogTmF0aXZlTWVtb3J5UmVzdWx0W107XG4gIGFkZE1lbW9yeShjb250ZW50OiBzdHJpbmcsIG1ldGFkYXRhPzogc3RyaW5nKTogbnVtYmVyO1xuICBmZWVkYmFjayhyZXF1ZXN0SWQ6IHN0cmluZywgcmF0aW5nOiBudW1iZXIsIGNvcnJlY3Rpb24/OiBzdHJpbmcpOiBib29sZWFuO1xuICBzdGF0cygpOiBOYXRpdmVTdGF0cztcbiAgZm9yY2VMZWFybigpOiBzdHJpbmc7XG4gIGVtYmVkKHRleHQ6IHN0cmluZyk6IG51bWJlcltdO1xuICBzaW1pbGFyaXR5KHRleHQxOiBzdHJpbmcsIHRleHQyOiBzdHJpbmcpOiBudW1iZXI7XG4gIGhhc1NpbWQoKTogYm9vbGVhbjtcbiAgc2ltZENhcGFiaWxpdGllcygpOiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZUdlbkNvbmZpZyB7XG4gIG1heF90b2tlbnM/OiBudW1iZXI7XG4gIHRlbXBlcmF0dXJlPzogbnVtYmVyO1xuICB0b3BfcD86IG51bWJlcjtcbiAgdG9wX2s/OiBudW1iZXI7XG4gIHJlcGV0aXRpb25fcGVuYWx0eT86IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZVF1ZXJ5UmVzcG9uc2Uge1xuICB0ZXh0OiBzdHJpbmc7XG4gIGNvbmZpZGVuY2U6IG51bWJlcjtcbiAgbW9kZWw6IHN0cmluZztcbiAgY29udGV4dF9zaXplOiBudW1iZXI7XG4gIGxhdGVuY3lfbXM6IG51bWJlcjtcbiAgcmVxdWVzdF9pZDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgTmF0aXZlUm91dGluZ0RlY2lzaW9uIHtcbiAgbW9kZWw6IHN0cmluZztcbiAgY29udGV4dF9zaXplOiBudW1iZXI7XG4gIHRlbXBlcmF0dXJlOiBudW1iZXI7XG4gIHRvcF9wOiBudW1iZXI7XG4gIGNvbmZpZGVuY2U6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZU1lbW9yeVJlc3VsdCB7XG4gIGlkOiBudW1iZXI7XG4gIHNjb3JlOiBudW1iZXI7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgbWV0YWRhdGE6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZVN0YXRzIHtcbiAgdG90YWxfcXVlcmllczogbnVtYmVyO1xuICBtZW1vcnlfbm9kZXM6IG51bWJlcjtcbiAgcGF0dGVybnNfbGVhcm5lZDogbnVtYmVyO1xuICBhdmdfbGF0ZW5jeV9tczogbnVtYmVyO1xuICBjYWNoZV9oaXRfcmF0ZTogbnVtYmVyO1xuICByb3V0ZXJfYWNjdXJhY3k6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZVNpbWRPcHMge1xuICBkb3RQcm9kdWN0KGE6IG51bWJlcltdLCBiOiBudW1iZXJbXSk6IG51bWJlcjtcbiAgY29zaW5lU2ltaWxhcml0eShhOiBudW1iZXJbXSwgYjogbnVtYmVyW10pOiBudW1iZXI7XG4gIGwyRGlzdGFuY2UoYTogbnVtYmVyW10sIGI6IG51bWJlcltdKTogbnVtYmVyO1xuICBtYXR2ZWMobWF0cml4OiBudW1iZXJbXVtdLCB2ZWN0b3I6IG51bWJlcltdKTogbnVtYmVyW107XG4gIHNvZnRtYXgoaW5wdXQ6IG51bWJlcltdKTogbnVtYmVyW107XG59XG5cbi8vIFBsYXRmb3JtLXNwZWNpZmljIHBhY2thZ2UgbmFtZXNcbmNvbnN0IFBMQVRGT1JNX1BBQ0tBR0VTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAnZGFyd2luLXg2NCc6ICdAcnV2ZWN0b3IvcnV2bGxtLWRhcndpbi14NjQnLFxuICAnZGFyd2luLWFybTY0JzogJ0BydXZlY3Rvci9ydXZsbG0tZGFyd2luLWFybTY0JyxcbiAgJ2xpbnV4LXg2NCc6ICdAcnV2ZWN0b3IvcnV2bGxtLWxpbnV4LXg2NC1nbnUnLFxuICAnbGludXgtYXJtNjQnOiAnQHJ1dmVjdG9yL3J1dmxsbS1saW51eC1hcm02NC1nbnUnLFxuICAnd2luMzIteDY0JzogJ0BydXZlY3Rvci9ydXZsbG0td2luMzIteDY0LW1zdmMnLFxufTtcblxuZnVuY3Rpb24gZ2V0UGxhdGZvcm1LZXkoKTogc3RyaW5nIHtcbiAgY29uc3QgcGxhdGZvcm0gPSBwcm9jZXNzLnBsYXRmb3JtO1xuICBjb25zdCBhcmNoID0gcHJvY2Vzcy5hcmNoO1xuICByZXR1cm4gYCR7cGxhdGZvcm19LSR7YXJjaH1gO1xufVxuXG5mdW5jdGlvbiBsb2FkTmF0aXZlTW9kdWxlKCk6IE5hdGl2ZVJ1dkxMTSB8IG51bGwge1xuICBpZiAobmF0aXZlTW9kdWxlKSB7XG4gICAgcmV0dXJuIG5hdGl2ZU1vZHVsZTtcbiAgfVxuXG4gIGNvbnN0IHBsYXRmb3JtS2V5ID0gZ2V0UGxhdGZvcm1LZXkoKTtcbiAgY29uc3QgcGFja2FnZU5hbWUgPSBQTEFURk9STV9QQUNLQUdFU1twbGF0Zm9ybUtleV07XG5cbiAgaWYgKCFwYWNrYWdlTmFtZSkge1xuICAgIC8vIFNpbGVudGx5IGZhaWwgLSBKUyBmYWxsYmFjayB3aWxsIGJlIHVzZWRcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIFRyeSBsb2FkaW5nIGZyb20gb3B0aW9uYWwgZGVwZW5kZW5jaWVzXG4gIGNvbnN0IGF0dGVtcHRzID0gW1xuICAgIC8vIFRyeSB0aGUgcGxhdGZvcm0tc3BlY2lmaWMgcGFja2FnZVxuICAgICgpID0+IHJlcXVpcmUocGFja2FnZU5hbWUpLFxuICAgIC8vIFRyeSBsb2FkaW5nIGZyb20gbG9jYWwgLm5vZGUgZmlsZSAoQ0pTIGJ1aWxkKVxuICAgICgpID0+IHJlcXVpcmUoam9pbihfX2Rpcm5hbWUsICcuLicsICcuLicsICdydXZsbG0ubm9kZScpKSxcbiAgICAvLyBUcnkgbG9hZGluZyBmcm9tIGxvY2FsIC5ub2RlIGZpbGUgKHJvb3QpXG4gICAgKCkgPT4gcmVxdWlyZShqb2luKF9fZGlybmFtZSwgJy4uJywgJ3J1dmxsbS5ub2RlJykpLFxuICBdO1xuXG4gIGZvciAoY29uc3QgYXR0ZW1wdCBvZiBhdHRlbXB0cykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByYXcgPSBhdHRlbXB0KCkgYXMgUmF3TmF0aXZlTW9kdWxlO1xuICAgICAgLy8gTm9ybWFsaXplOiBuYXRpdmUgZXhwb3J0cyBSdXZMbG1FbmdpbmUsIHdlIGV4cG9zZSBhcyBSdXZMTE1FbmdpbmVcbiAgICAgIG5hdGl2ZU1vZHVsZSA9IHtcbiAgICAgICAgUnV2TExNRW5naW5lOiByYXcuUnV2TExNRW5naW5lID8/IHJhdy5SdXZMbG1FbmdpbmUhLFxuICAgICAgICBTaW1kT3BlcmF0aW9uczogcmF3LlNpbWRPcGVyYXRpb25zLFxuICAgICAgICB2ZXJzaW9uOiByYXcudmVyc2lvbixcbiAgICAgICAgaGFzU2ltZFN1cHBvcnQ6IHJhdy5oYXNTaW1kU3VwcG9ydCxcbiAgICAgIH07XG4gICAgICByZXR1cm4gbmF0aXZlTW9kdWxlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gQ29udGludWUgdG8gbmV4dCBhdHRlbXB0XG4gICAgfVxuICB9XG5cbiAgLy8gU2lsZW50bHkgZmFsbCBiYWNrIHRvIEpTIGltcGxlbWVudGF0aW9uXG4gIHJldHVybiBudWxsO1xufVxuXG4vLyBFeHBvcnQgZnVuY3Rpb25zIHRvIGdldCBuYXRpdmUgYmluZGluZ3NcbmV4cG9ydCBmdW5jdGlvbiBnZXROYXRpdmVNb2R1bGUoKTogTmF0aXZlUnV2TExNIHwgbnVsbCB7XG4gIHJldHVybiBsb2FkTmF0aXZlTW9kdWxlKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2ZXJzaW9uKCk6IHN0cmluZyB7XG4gIGNvbnN0IG1vZCA9IGxvYWROYXRpdmVNb2R1bGUoKTtcbiAgcmV0dXJuIG1vZD8udmVyc2lvbigpID8/ICcwLjEuMC1qcyc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNTaW1kU3VwcG9ydCgpOiBib29sZWFuIHtcbiAgY29uc3QgbW9kID0gbG9hZE5hdGl2ZU1vZHVsZSgpO1xuICByZXR1cm4gbW9kPy5oYXNTaW1kU3VwcG9ydCgpID8/IGZhbHNlO1xufVxuXG4vLyBFeHBvcnQgdHlwZXMgZm9yIGludGVybmFsIHVzZVxuZXhwb3J0IHR5cGUge1xuICBOYXRpdmVSdXZMTE0sXG4gIE5hdGl2ZUNvbmZpZyxcbiAgTmF0aXZlRW5naW5lLFxuICBOYXRpdmVHZW5Db25maWcsXG4gIE5hdGl2ZVF1ZXJ5UmVzcG9uc2UsXG4gIE5hdGl2ZVJvdXRpbmdEZWNpc2lvbixcbiAgTmF0aXZlTWVtb3J5UmVzdWx0LFxuICBOYXRpdmVTdGF0cyxcbiAgTmF0aXZlU2ltZE9wcyxcbn07XG4iXX0=
|
package/dist/cjs/session.js
CHANGED
|
@@ -200,4 +200,4 @@ class SessionManager {
|
|
|
200
200
|
}
|
|
201
201
|
}
|
|
202
202
|
exports.SessionManager = SessionManager;
|
|
203
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7O0FBU0g7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUNILE1BQWEsY0FBYztJQUl6QixZQUFZLEdBQXNKO1FBSDFKLGFBQVEsR0FBcUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUk3RCxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNqQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsUUFBa0M7UUFDdkMsTUFBTSxFQUFFLEdBQUcsV0FBVyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDN0UsTUFBTSxPQUFPLEdBQXdCO1lBQ25DLEVBQUU7WUFDRixTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDckIsWUFBWSxFQUFFLENBQUM7WUFDZixRQUFRLEVBQUUsRUFBRTtZQUNaLE9BQU8sRUFBRSxFQUFFO1lBQ1gsZUFBZSxFQUFFLEVBQUU7WUFDbkIsUUFBUSxFQUFFLFFBQVEsSUFBSSxFQUFFO1NBQ3pCLENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDL0IsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsR0FBRyxDQUFDLFNBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxDQUFDLFNBQWlCLEVBQUUsT0FBZSxFQUFFLE1BQXlCO1FBQ2hFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxR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QyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztZQUMxRixPQUFPLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQyxDQUFDLENBQUM7YUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFZCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osWUFBWSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBRUQsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQS9NRCx3Q0ErTUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogU2Vzc2lvbiBNYW5hZ2VtZW50IGZvciBtdWx0aS10dXJuIGNvbnZlcnNhdGlvbnNcclxuICovXHJcblxyXG5pbXBvcnQge1xyXG4gIENvbnZlcnNhdGlvblNlc3Npb24sXHJcbiAgQ29udmVyc2F0aW9uTWVzc2FnZSxcclxuICBRdWVyeVJlc3BvbnNlLFxyXG4gIEdlbmVyYXRpb25Db25maWcsXHJcbn0gZnJvbSAnLi90eXBlcyc7XHJcblxyXG4vKipcclxuICogU2Vzc2lvbiBNYW5hZ2VyIGZvciBtdWx0aS10dXJuIGNvbnZlcnNhdGlvbnNcclxuICpcclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBpbXBvcnQgeyBSdXZMTE0sIFNlc3Npb25NYW5hZ2VyIH0gZnJvbSAnQHJ1dmVjdG9yL3J1dmxsbSc7XHJcbiAqXHJcbiAqIGNvbnN0IGxsbSA9IG5ldyBSdXZMTE0oKTtcclxuICogY29uc3Qgc2Vzc2lvbnMgPSBuZXcgU2Vzc2lvbk1hbmFnZXIobGxtKTtcclxuICpcclxuICogLy8gQ3JlYXRlIGEgbmV3IHNlc3Npb25cclxuICogY29uc3Qgc2Vzc2lvbiA9IHNlc3Npb25zLmNyZWF0ZSgpO1xyXG4gKlxyXG4gKiAvLyBDaGF0IHdpdGggY29udGV4dFxyXG4gKiBjb25zdCByZXNwb25zZTEgPSBzZXNzaW9ucy5jaGF0KHNlc3Npb24uaWQsICdXaGF0IGlzIFB5dGhvbj8nKTtcclxuICogY29uc3QgcmVzcG9uc2UyID0gc2Vzc2lvbnMuY2hhdChzZXNzaW9uLmlkLCAnSG93IGRvIEkgaW5zdGFsbCBpdD8nKTtcclxuICogLy8gU2Vjb25kIHF1ZXJ5IGF1dG9tYXRpY2FsbHkgaGFzIGNvbnRleHQgZnJvbSBmaXJzdFxyXG4gKiBgYGBcclxuICovXHJcbmV4cG9ydCBjbGFzcyBTZXNzaW9uTWFuYWdlciB7XHJcbiAgcHJpdmF0ZSBzZXNzaW9uczogTWFwPHN0cmluZywgQ29udmVyc2F0aW9uU2Vzc2lvbj4gPSBuZXcgTWFwKCk7XHJcbiAgcHJpdmF0ZSBsbG06IHsgcXVlcnk6ICh0ZXh0OiBzdHJpbmcsIGNvbmZpZz86IEdlbmVyYXRpb25Db25maWcpID0+IFF1ZXJ5UmVzcG9uc2U7IGFkZE1lbW9yeTogKGNvbnRlbnQ6IHN0cmluZywgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gbnVtYmVyIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKGxsbTogeyBxdWVyeTogKHRleHQ6IHN0cmluZywgY29uZmlnPzogR2VuZXJhdGlvbkNvbmZpZykgPT4gUXVlcnlSZXNwb25zZTsgYWRkTWVtb3J5OiAoY29udGVudDogc3RyaW5nLCBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiBudW1iZXIgfSkge1xyXG4gICAgdGhpcy5sbG0gPSBsbG07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgYSBuZXcgY29udmVyc2F0aW9uIHNlc3Npb25cclxuICAgKi9cclxuICBjcmVhdGUobWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IENvbnZlcnNhdGlvblNlc3Npb24ge1xyXG4gICAgY29uc3QgaWQgPSBgc2Vzc2lvbi0ke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiwgOCl9YDtcclxuICAgIGNvbnN0IHNlc3Npb246IENvbnZlcnNhdGlvblNlc3Npb24gPSB7XHJcbiAgICAgIGlkLFxyXG4gICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCksXHJcbiAgICAgIG1lc3NhZ2VDb3VudDogMCxcclxuICAgICAgbWVzc2FnZXM6IFtdLFxyXG4gICAgICBjb250ZXh0OiBbXSxcclxuICAgICAgYWN0aXZlTWVtb3J5SWRzOiBbXSxcclxuICAgICAgbWV0YWRhdGE6IG1ldGFkYXRhID8/IHt9LFxyXG4gICAgfTtcclxuICAgIHRoaXMuc2Vzc2lvbnMuc2V0KGlkLCBzZXNzaW9uKTtcclxuICAgIHJldHVybiBzZXNzaW9uO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHNlc3Npb24gYnkgSURcclxuICAgKi9cclxuICBnZXQoc2Vzc2lvbklkOiBzdHJpbmcpOiBDb252ZXJzYXRpb25TZXNzaW9uIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLnNlc3Npb25zLmdldChzZXNzaW9uSWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hhdCB3aXRoaW4gYSBzZXNzaW9uIChtYWludGFpbnMgY29udGV4dClcclxuICAgKi9cclxuICBjaGF0KHNlc3Npb25JZDogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcsIGNvbmZpZz86IEdlbmVyYXRpb25Db25maWcpOiBRdWVyeVJlc3BvbnNlIHtcclxuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLnNlc3Npb25zLmdldChzZXNzaW9uSWQpO1xyXG4gICAgaWYgKCFzZXNzaW9uKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU2Vzc2lvbiBub3QgZm91bmQ6ICR7c2Vzc2lvbklkfWApO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEFkZCB1c2VyIG1lc3NhZ2VcclxuICAgIHNlc3Npb24ubWVzc2FnZXMucHVzaCh7XHJcbiAgICAgIHJvbGU6ICd1c2VyJyxcclxuICAgICAgY29udGVudDogbWVzc2FnZSxcclxuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gQnVpbGQgY29udGV4dCBmcm9tIHJlY2VudCBtZXNzYWdlc1xyXG4gICAgY29uc3QgY29udGV4dFdpbmRvdyA9IHRoaXMuYnVpbGRDb250ZXh0KHNlc3Npb24pO1xyXG5cclxuICAgIC8vIFF1ZXJ5IHdpdGggY29udGV4dFxyXG4gICAgY29uc3QgcHJvbXB0ID0gY29udGV4dFdpbmRvdyA/IGAke2NvbnRleHRXaW5kb3d9XFxuXFxuVXNlcjogJHttZXNzYWdlfWAgOiBtZXNzYWdlO1xyXG4gICAgY29uc3QgcmVzcG9uc2UgPSB0aGlzLmxsbS5xdWVyeShwcm9tcHQsIGNvbmZpZyk7XHJcblxyXG4gICAgLy8gQWRkIGFzc2lzdGFudCByZXNwb25zZVxyXG4gICAgc2Vzc2lvbi5tZXNzYWdlcy5wdXNoKHtcclxuICAgICAgcm9sZTogJ2Fzc2lzdGFudCcsXHJcbiAgICAgIGNvbnRlbnQ6IHJlc3BvbnNlLnRleHQsXHJcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKSxcclxuICAgICAgcmVxdWVzdElkOiByZXNwb25zZS5yZXF1ZXN0SWQsXHJcbiAgICB9KTtcclxuXHJcbiAgICBzZXNzaW9uLm1lc3NhZ2VDb3VudCA9IHNlc3Npb24ubWVzc2FnZXMubGVuZ3RoO1xyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCBzeXN0ZW0gbWVzc2FnZSB0byBzZXNzaW9uXHJcbiAgICovXHJcbiAgYWRkU3lzdGVtTWVzc2FnZShzZXNzaW9uSWQ6IHN0cmluZywgY29udGVudDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5zZXNzaW9ucy5nZXQoc2Vzc2lvbklkKTtcclxuICAgIGlmICghc2Vzc2lvbikge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFNlc3Npb24gbm90IGZvdW5kOiAke3Nlc3Npb25JZH1gKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXNzaW9uLm1lc3NhZ2VzLnB1c2goe1xyXG4gICAgICByb2xlOiAnc3lzdGVtJyxcclxuICAgICAgY29udGVudCxcclxuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxyXG4gICAgfSk7XHJcbiAgICBzZXNzaW9uLm1lc3NhZ2VDb3VudCA9IHNlc3Npb24ubWVzc2FnZXMubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIGNvbnRleHQgdG8gc2Vzc2lvbiAocGVyc2lzdGVkIHRvIG1lbW9yeSlcclxuICAgKi9cclxuICBhZGRDb250ZXh0KHNlc3Npb25JZDogc3RyaW5nLCBjb250ZXh0OiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuc2Vzc2lvbnMuZ2V0KHNlc3Npb25JZCk7XHJcbiAgICBpZiAoIXNlc3Npb24pIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTZXNzaW9uIG5vdCBmb3VuZDogJHtzZXNzaW9uSWR9YCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2Vzc2lvbi5jb250ZXh0LnB1c2goY29udGV4dCk7XHJcblxyXG4gICAgLy8gQWxzbyBzdG9yZSBpbiBtZW1vcnkgZm9yIHJldHJpZXZhbFxyXG4gICAgY29uc3QgbWVtb3J5SWQgPSB0aGlzLmxsbS5hZGRNZW1vcnkoY29udGV4dCwge1xyXG4gICAgICBzZXNzaW9uSWQsXHJcbiAgICAgIHR5cGU6ICdjb250ZXh0JyxcclxuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXHJcbiAgICB9KTtcclxuXHJcbiAgICBzZXNzaW9uLmFjdGl2ZU1lbW9yeUlkcy5wdXNoKG1lbW9yeUlkKTtcclxuICAgIHJldHVybiBtZW1vcnlJZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBjb252ZXJzYXRpb24gaGlzdG9yeVxyXG4gICAqL1xyXG4gIGdldEhpc3Rvcnkoc2Vzc2lvbklkOiBzdHJpbmcsIGxpbWl0PzogbnVtYmVyKTogQ29udmVyc2F0aW9uTWVzc2FnZVtdIHtcclxuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLnNlc3Npb25zLmdldChzZXNzaW9uSWQpO1xyXG4gICAgaWYgKCFzZXNzaW9uKSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBtZXNzYWdlcyA9IHNlc3Npb24ubWVzc2FnZXM7XHJcbiAgICByZXR1cm4gbGltaXQgPyBtZXNzYWdlcy5zbGljZSgtbGltaXQpIDogbWVzc2FnZXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciBzZXNzaW9uIGhpc3RvcnkgKGtlZXAgc2Vzc2lvbiBhY3RpdmUpXHJcbiAgICovXHJcbiAgY2xlYXJIaXN0b3J5KHNlc3Npb25JZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5zZXNzaW9ucy5nZXQoc2Vzc2lvbklkKTtcclxuICAgIGlmIChzZXNzaW9uKSB7XHJcbiAgICAgIHNlc3Npb24ubWVzc2FnZXMgPSBbXTtcclxuICAgICAgc2Vzc2lvbi5jb250ZXh0ID0gW107XHJcbiAgICAgIHNlc3Npb24ubWVzc2FnZUNvdW50ID0gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVuZCBhbmQgZGVsZXRlIHNlc3Npb25cclxuICAgKi9cclxuICBlbmQoc2Vzc2lvbklkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNlc3Npb25zLmRlbGV0ZShzZXNzaW9uSWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTGlzdCBhbGwgYWN0aXZlIHNlc3Npb25zXHJcbiAgICovXHJcbiAgbGlzdCgpOiBDb252ZXJzYXRpb25TZXNzaW9uW10ge1xyXG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5zZXNzaW9ucy52YWx1ZXMoKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeHBvcnQgc2Vzc2lvbiBhcyBKU09OXHJcbiAgICovXHJcbiAgZXhwb3J0KHNlc3Npb25JZDogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5zZXNzaW9ucy5nZXQoc2Vzc2lvbklkKTtcclxuICAgIGlmICghc2Vzc2lvbikge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoc2Vzc2lvbiwgbnVsbCwgMik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbXBvcnQgc2Vzc2lvbiBmcm9tIEpTT05cclxuICAgKi9cclxuICBpbXBvcnQoanNvbjogc3RyaW5nKTogQ29udmVyc2F0aW9uU2Vzc2lvbiB7XHJcbiAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShqc29uKTtcclxuICAgIGNvbnN0IHNlc3Npb246IENvbnZlcnNhdGlvblNlc3Npb24gPSB7XHJcbiAgICAgIC4uLmRhdGEsXHJcbiAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoZGF0YS5jcmVhdGVkQXQpLFxyXG4gICAgICBtZXNzYWdlczogZGF0YS5tZXNzYWdlcy5tYXAoKG06IENvbnZlcnNhdGlvbk1lc3NhZ2UpID0+ICh7XHJcbiAgICAgICAgLi4ubSxcclxuICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKG0udGltZXN0YW1wKSxcclxuICAgICAgfSkpLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnNlc3Npb25zLnNldChzZXNzaW9uLmlkLCBzZXNzaW9uKTtcclxuICAgIHJldHVybiBzZXNzaW9uO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQnVpbGQgY29udGV4dCBzdHJpbmcgZnJvbSByZWNlbnQgbWVzc2FnZXNcclxuICAgKi9cclxuICBwcml2YXRlIGJ1aWxkQ29udGV4dChzZXNzaW9uOiBDb252ZXJzYXRpb25TZXNzaW9uLCBtYXhNZXNzYWdlcyA9IDEwKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHJlY2VudCA9IHNlc3Npb24ubWVzc2FnZXMuc2xpY2UoLW1heE1lc3NhZ2VzKTtcclxuICAgIGlmIChyZWNlbnQubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb250ZXh0UGFydHM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgLy8gQWRkIHBlcnNpc3RlbnQgY29udGV4dFxyXG4gICAgaWYgKHNlc3Npb24uY29udGV4dC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnRleHRQYXJ0cy5wdXNoKCdDb250ZXh0OlxcbicgKyBzZXNzaW9uLmNvbnRleHQuam9pbignXFxuJykpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEFkZCBjb252ZXJzYXRpb24gaGlzdG9yeVxyXG4gICAgY29uc3QgaGlzdG9yeSA9IHJlY2VudFxyXG4gICAgICAubWFwKG0gPT4ge1xyXG4gICAgICAgIGNvbnN0IHJvbGUgPSBtLnJvbGUgPT09ICd1c2VyJyA/ICdVc2VyJyA6IG0ucm9sZSA9PT0gJ2Fzc2lzdGFudCcgPyAnQXNzaXN0YW50JyA6ICdTeXN0ZW0nO1xyXG4gICAgICAgIHJldHVybiBgJHtyb2xlfTogJHttLmNvbnRlbnR9YDtcclxuICAgICAgfSlcclxuICAgICAgLmpvaW4oJ1xcbicpO1xyXG5cclxuICAgIGlmIChoaXN0b3J5KSB7XHJcbiAgICAgIGNvbnRleHRQYXJ0cy5wdXNoKCdDb252ZXJzYXRpb246XFxuJyArIGhpc3RvcnkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb250ZXh0UGFydHMuam9pbignXFxuXFxuJyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
203
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7O0FBU0g7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUNILE1BQWEsY0FBYztJQUl6QixZQUFZLEdBQXNKO1FBSDFKLGFBQVEsR0FBcUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUk3RCxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNqQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsUUFBa0M7UUFDdkMsTUFBTSxFQUFFLEdBQUcsV0FBVyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDN0UsTUFBTSxPQUFPLEdBQXdCO1lBQ25DLEVBQUU7WUFDRixTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDckIsWUFBWSxFQUFFLENBQUM7WUFDZixRQUFRLEVBQUUsRUFBRTtZQUNaLE9BQU8sRUFBRSxFQUFFO1lBQ1gsZUFBZSxFQUFFLEVBQUU7WUFDbkIsUUFBUSxFQUFFLFFBQVEsSUFBSSxFQUFFO1NBQ3pCLENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDL0IsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsR0FBRyxDQUFDLFNBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxDQUFDLFNBQWlCLEVBQUUsT0FBZSxFQUFFLE1BQXlCO1FBQ2hFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxR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QyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztZQUMxRixPQUFPLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQyxDQUFDLENBQUM7YUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFZCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osWUFBWSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBRUQsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQS9NRCx3Q0ErTUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNlc3Npb24gTWFuYWdlbWVudCBmb3IgbXVsdGktdHVybiBjb252ZXJzYXRpb25zXG4gKi9cblxuaW1wb3J0IHtcbiAgQ29udmVyc2F0aW9uU2Vzc2lvbixcbiAgQ29udmVyc2F0aW9uTWVzc2FnZSxcbiAgUXVlcnlSZXNwb25zZSxcbiAgR2VuZXJhdGlvbkNvbmZpZyxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogU2Vzc2lvbiBNYW5hZ2VyIGZvciBtdWx0aS10dXJuIGNvbnZlcnNhdGlvbnNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgUnV2TExNLCBTZXNzaW9uTWFuYWdlciB9IGZyb20gJ0BydXZlY3Rvci9ydXZsbG0nO1xuICpcbiAqIGNvbnN0IGxsbSA9IG5ldyBSdXZMTE0oKTtcbiAqIGNvbnN0IHNlc3Npb25zID0gbmV3IFNlc3Npb25NYW5hZ2VyKGxsbSk7XG4gKlxuICogLy8gQ3JlYXRlIGEgbmV3IHNlc3Npb25cbiAqIGNvbnN0IHNlc3Npb24gPSBzZXNzaW9ucy5jcmVhdGUoKTtcbiAqXG4gKiAvLyBDaGF0IHdpdGggY29udGV4dFxuICogY29uc3QgcmVzcG9uc2UxID0gc2Vzc2lvbnMuY2hhdChzZXNzaW9uLmlkLCAnV2hhdCBpcyBQeXRob24/Jyk7XG4gKiBjb25zdCByZXNwb25zZTIgPSBzZXNzaW9ucy5jaGF0KHNlc3Npb24uaWQsICdIb3cgZG8gSSBpbnN0YWxsIGl0PycpO1xuICogLy8gU2Vjb25kIHF1ZXJ5IGF1dG9tYXRpY2FsbHkgaGFzIGNvbnRleHQgZnJvbSBmaXJzdFxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBTZXNzaW9uTWFuYWdlciB7XG4gIHByaXZhdGUgc2Vzc2lvbnM6IE1hcDxzdHJpbmcsIENvbnZlcnNhdGlvblNlc3Npb24+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIGxsbTogeyBxdWVyeTogKHRleHQ6IHN0cmluZywgY29uZmlnPzogR2VuZXJhdGlvbkNvbmZpZykgPT4gUXVlcnlSZXNwb25zZTsgYWRkTWVtb3J5OiAoY29udGVudDogc3RyaW5nLCBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiBudW1iZXIgfTtcblxuICBjb25zdHJ1Y3RvcihsbG06IHsgcXVlcnk6ICh0ZXh0OiBzdHJpbmcsIGNvbmZpZz86IEdlbmVyYXRpb25Db25maWcpID0+IFF1ZXJ5UmVzcG9uc2U7IGFkZE1lbW9yeTogKGNvbnRlbnQ6IHN0cmluZywgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gbnVtYmVyIH0pIHtcbiAgICB0aGlzLmxsbSA9IGxsbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgY29udmVyc2F0aW9uIHNlc3Npb25cbiAgICovXG4gIGNyZWF0ZShtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogQ29udmVyc2F0aW9uU2Vzc2lvbiB7XG4gICAgY29uc3QgaWQgPSBgc2Vzc2lvbi0ke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiwgOCl9YDtcbiAgICBjb25zdCBzZXNzaW9uOiBDb252ZXJzYXRpb25TZXNzaW9uID0ge1xuICAgICAgaWQsXG4gICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICBtZXNzYWdlQ291bnQ6IDAsXG4gICAgICBtZXNzYWdlczogW10sXG4gICAgICBjb250ZXh0OiBbXSxcbiAgICAgIGFjdGl2ZU1lbW9yeUlkczogW10sXG4gICAgICBtZXRhZGF0YTogbWV0YWRhdGEgPz8ge30sXG4gICAgfTtcbiAgICB0aGlzLnNlc3Npb25zLnNldChpZCwgc2Vzc2lvbik7XG4gICAgcmV0dXJuIHNlc3Npb247XG4gIH1cblxuICAvKipcbiAgICogR2V0IHNlc3Npb24gYnkgSURcbiAgICovXG4gIGdldChzZXNzaW9uSWQ6IHN0cmluZyk6IENvbnZlcnNhdGlvblNlc3Npb24gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnNlc3Npb25zLmdldChzZXNzaW9uSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoYXQgd2l0aGluIGEgc2Vzc2lvbiAobWFpbnRhaW5zIGNvbnRleHQpXG4gICAqL1xuICBjaGF0KHNlc3Npb25JZDogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcsIGNvbmZpZz86IEdlbmVyYXRpb25Db25maWcpOiBRdWVyeVJlc3BvbnNlIHtcbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5zZXNzaW9ucy5nZXQoc2Vzc2lvbklkKTtcbiAgICBpZiAoIXNlc3Npb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU2Vzc2lvbiBub3QgZm91bmQ6ICR7c2Vzc2lvbklkfWApO1xuICAgIH1cblxuICAgIC8vIEFkZCB1c2VyIG1lc3NhZ2VcbiAgICBzZXNzaW9uLm1lc3NhZ2VzLnB1c2goe1xuICAgICAgcm9sZTogJ3VzZXInLFxuICAgICAgY29udGVudDogbWVzc2FnZSxcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKSxcbiAgICB9KTtcblxuICAgIC8vIEJ1aWxkIGNvbnRleHQgZnJvbSByZWNlbnQgbWVzc2FnZXNcbiAgICBjb25zdCBjb250ZXh0V2luZG93ID0gdGhpcy5idWlsZENvbnRleHQoc2Vzc2lvbik7XG5cbiAgICAvLyBRdWVyeSB3aXRoIGNvbnRleHRcbiAgICBjb25zdCBwcm9tcHQgPSBjb250ZXh0V2luZG93ID8gYCR7Y29udGV4dFdpbmRvd31cXG5cXG5Vc2VyOiAke21lc3NhZ2V9YCA6IG1lc3NhZ2U7XG4gICAgY29uc3QgcmVzcG9uc2UgPSB0aGlzLmxsbS5xdWVyeShwcm9tcHQsIGNvbmZpZyk7XG5cbiAgICAvLyBBZGQgYXNzaXN0YW50IHJlc3BvbnNlXG4gICAgc2Vzc2lvbi5tZXNzYWdlcy5wdXNoKHtcbiAgICAgIHJvbGU6ICdhc3Npc3RhbnQnLFxuICAgICAgY29udGVudDogcmVzcG9uc2UudGV4dCxcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKSxcbiAgICAgIHJlcXVlc3RJZDogcmVzcG9uc2UucmVxdWVzdElkLFxuICAgIH0pO1xuXG4gICAgc2Vzc2lvbi5tZXNzYWdlQ291bnQgPSBzZXNzaW9uLm1lc3NhZ2VzLmxlbmd0aDtcblxuICAgIHJldHVybiByZXNwb25zZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgc3lzdGVtIG1lc3NhZ2UgdG8gc2Vzc2lvblxuICAgKi9cbiAgYWRkU3lzdGVtTWVzc2FnZShzZXNzaW9uSWQ6IHN0cmluZywgY29udGVudDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuc2Vzc2lvbnMuZ2V0KHNlc3Npb25JZCk7XG4gICAgaWYgKCFzZXNzaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFNlc3Npb24gbm90IGZvdW5kOiAke3Nlc3Npb25JZH1gKTtcbiAgICB9XG5cbiAgICBzZXNzaW9uLm1lc3NhZ2VzLnB1c2goe1xuICAgICAgcm9sZTogJ3N5c3RlbScsXG4gICAgICBjb250ZW50LFxuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxuICAgIH0pO1xuICAgIHNlc3Npb24ubWVzc2FnZUNvdW50ID0gc2Vzc2lvbi5tZXNzYWdlcy5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGNvbnRleHQgdG8gc2Vzc2lvbiAocGVyc2lzdGVkIHRvIG1lbW9yeSlcbiAgICovXG4gIGFkZENvbnRleHQoc2Vzc2lvbklkOiBzdHJpbmcsIGNvbnRleHQ6IHN0cmluZyk6IG51bWJlciB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuc2Vzc2lvbnMuZ2V0KHNlc3Npb25JZCk7XG4gICAgaWYgKCFzZXNzaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFNlc3Npb24gbm90IGZvdW5kOiAke3Nlc3Npb25JZH1gKTtcbiAgICB9XG5cbiAgICBzZXNzaW9uLmNvbnRleHQucHVzaChjb250ZXh0KTtcblxuICAgIC8vIEFsc28gc3RvcmUgaW4gbWVtb3J5IGZvciByZXRyaWV2YWxcbiAgICBjb25zdCBtZW1vcnlJZCA9IHRoaXMubGxtLmFkZE1lbW9yeShjb250ZXh0LCB7XG4gICAgICBzZXNzaW9uSWQsXG4gICAgICB0eXBlOiAnY29udGV4dCcsXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB9KTtcblxuICAgIHNlc3Npb24uYWN0aXZlTWVtb3J5SWRzLnB1c2gobWVtb3J5SWQpO1xuICAgIHJldHVybiBtZW1vcnlJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY29udmVyc2F0aW9uIGhpc3RvcnlcbiAgICovXG4gIGdldEhpc3Rvcnkoc2Vzc2lvbklkOiBzdHJpbmcsIGxpbWl0PzogbnVtYmVyKTogQ29udmVyc2F0aW9uTWVzc2FnZVtdIHtcbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5zZXNzaW9ucy5nZXQoc2Vzc2lvbklkKTtcbiAgICBpZiAoIXNlc3Npb24pIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBtZXNzYWdlcyA9IHNlc3Npb24ubWVzc2FnZXM7XG4gICAgcmV0dXJuIGxpbWl0ID8gbWVzc2FnZXMuc2xpY2UoLWxpbWl0KSA6IG1lc3NhZ2VzO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIHNlc3Npb24gaGlzdG9yeSAoa2VlcCBzZXNzaW9uIGFjdGl2ZSlcbiAgICovXG4gIGNsZWFySGlzdG9yeShzZXNzaW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLnNlc3Npb25zLmdldChzZXNzaW9uSWQpO1xuICAgIGlmIChzZXNzaW9uKSB7XG4gICAgICBzZXNzaW9uLm1lc3NhZ2VzID0gW107XG4gICAgICBzZXNzaW9uLmNvbnRleHQgPSBbXTtcbiAgICAgIHNlc3Npb24ubWVzc2FnZUNvdW50ID0gMDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRW5kIGFuZCBkZWxldGUgc2Vzc2lvblxuICAgKi9cbiAgZW5kKHNlc3Npb25JZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbnMuZGVsZXRlKHNlc3Npb25JZCk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdCBhbGwgYWN0aXZlIHNlc3Npb25zXG4gICAqL1xuICBsaXN0KCk6IENvbnZlcnNhdGlvblNlc3Npb25bXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5zZXNzaW9ucy52YWx1ZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogRXhwb3J0IHNlc3Npb24gYXMgSlNPTlxuICAgKi9cbiAgZXhwb3J0KHNlc3Npb25JZDogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuc2Vzc2lvbnMuZ2V0KHNlc3Npb25JZCk7XG4gICAgaWYgKCFzZXNzaW9uKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoc2Vzc2lvbiwgbnVsbCwgMik7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IHNlc3Npb24gZnJvbSBKU09OXG4gICAqL1xuICBpbXBvcnQoanNvbjogc3RyaW5nKTogQ29udmVyc2F0aW9uU2Vzc2lvbiB7XG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoanNvbik7XG4gICAgY29uc3Qgc2Vzc2lvbjogQ29udmVyc2F0aW9uU2Vzc2lvbiA9IHtcbiAgICAgIC4uLmRhdGEsXG4gICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKGRhdGEuY3JlYXRlZEF0KSxcbiAgICAgIG1lc3NhZ2VzOiBkYXRhLm1lc3NhZ2VzLm1hcCgobTogQ29udmVyc2F0aW9uTWVzc2FnZSkgPT4gKHtcbiAgICAgICAgLi4ubSxcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZShtLnRpbWVzdGFtcCksXG4gICAgICB9KSksXG4gICAgfTtcblxuICAgIHRoaXMuc2Vzc2lvbnMuc2V0KHNlc3Npb24uaWQsIHNlc3Npb24pO1xuICAgIHJldHVybiBzZXNzaW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGNvbnRleHQgc3RyaW5nIGZyb20gcmVjZW50IG1lc3NhZ2VzXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkQ29udGV4dChzZXNzaW9uOiBDb252ZXJzYXRpb25TZXNzaW9uLCBtYXhNZXNzYWdlcyA9IDEwKTogc3RyaW5nIHtcbiAgICBjb25zdCByZWNlbnQgPSBzZXNzaW9uLm1lc3NhZ2VzLnNsaWNlKC1tYXhNZXNzYWdlcyk7XG4gICAgaWYgKHJlY2VudC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBjb250ZXh0UGFydHM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvLyBBZGQgcGVyc2lzdGVudCBjb250ZXh0XG4gICAgaWYgKHNlc3Npb24uY29udGV4dC5sZW5ndGggPiAwKSB7XG4gICAgICBjb250ZXh0UGFydHMucHVzaCgnQ29udGV4dDpcXG4nICsgc2Vzc2lvbi5jb250ZXh0LmpvaW4oJ1xcbicpKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgY29udmVyc2F0aW9uIGhpc3RvcnlcbiAgICBjb25zdCBoaXN0b3J5ID0gcmVjZW50XG4gICAgICAubWFwKG0gPT4ge1xuICAgICAgICBjb25zdCByb2xlID0gbS5yb2xlID09PSAndXNlcicgPyAnVXNlcicgOiBtLnJvbGUgPT09ICdhc3Npc3RhbnQnID8gJ0Fzc2lzdGFudCcgOiAnU3lzdGVtJztcbiAgICAgICAgcmV0dXJuIGAke3JvbGV9OiAke20uY29udGVudH1gO1xuICAgICAgfSlcbiAgICAgIC5qb2luKCdcXG4nKTtcblxuICAgIGlmIChoaXN0b3J5KSB7XG4gICAgICBjb250ZXh0UGFydHMucHVzaCgnQ29udmVyc2F0aW9uOlxcbicgKyBoaXN0b3J5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGV4dFBhcnRzLmpvaW4oJ1xcblxcbicpO1xuICB9XG59XG4iXX0=
|
package/dist/cjs/simd.js
CHANGED
|
@@ -206,4 +206,4 @@ class SimdOps {
|
|
|
206
206
|
}
|
|
207
207
|
}
|
|
208
208
|
exports.SimdOps = SimdOps;
|
|
209
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaW1kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7R0FLRzs7O0FBRUgscUNBQTBEO0FBRTFEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFDSCxNQUFhLE9BQU87SUFHbEI7UUFGUSxXQUFNLEdBQXlCLElBQUksQ0FBQztRQUcxQyxNQUFNLEdBQUcsR0FBRyxJQUFBLHdCQUFlLEdBQUUsQ0FBQztRQUM5QixJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1IsSUFBSSxDQUFDO2dCQUNILElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDekMsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDUCxpQ0FBaUM7WUFDbkMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxVQUFVLENBQUMsQ0FBVyxFQUFFLENBQVc7UUFDakMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUVELHNCQUFzQjtRQUN0QixJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDWixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM3QixHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQixDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQ7O09BRUc7SUFDSCxnQkFB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QUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVk7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFFRCxvREFBb0Q7UUFDcEQsTUFBTSxHQUFHLEdBQUcsSUFBQSx3QkFBZSxHQUFFLENBQUM7UUFDOUIsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNSLElBQUksQ0FBQztnQkFDSCxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDdEMsT0FBTyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNuQyxDQUFDO1lBQUMsTUFBTSxDQUFDO2dCQUNQLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDakMsQ0FBQztDQUNGO0FBeE1ELDBCQXdNQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBTSU1EIE9wZXJhdGlvbnMgZm9yIHZlY3RvciBjb21wdXRhdGlvbnNcclxuICpcclxuICogVXNlcyBuYXRpdmUgU0lNRCBpbnN0cnVjdGlvbnMgKEFWWDIvQVZYNTEyL1NTRTQuMS9ORU9OKSB3aGVuIGF2YWlsYWJsZSxcclxuICogZmFsbHMgYmFjayB0byBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9ucyBvdGhlcndpc2UuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgZ2V0TmF0aXZlTW9kdWxlLCBOYXRpdmVTaW1kT3BzIH0gZnJvbSAnLi9uYXRpdmUnO1xyXG5cclxuLyoqXHJcbiAqIFNJTUQgT3BlcmF0aW9ucyBjbGFzc1xyXG4gKlxyXG4gKiBQcm92aWRlcyBoYXJkd2FyZS1hY2NlbGVyYXRlZCB2ZWN0b3Igb3BlcmF0aW9ucyB3aGVuIG5hdGl2ZSBtb2R1bGUgaXMgYXZhaWxhYmxlLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGltcG9ydCB7IFNpbWRPcHMgfSBmcm9tICdAcnV2ZWN0b3IvcnV2bGxtJztcclxuICpcclxuICogY29uc3Qgc2ltZCA9IG5ldyBTaW1kT3BzKCk7XHJcbiAqXHJcbiAqIC8vIENvbXB1dGUgZG90IHByb2R1Y3RcclxuICogY29uc3QgcmVzdWx0ID0gc2ltZC5kb3RQcm9kdWN0KFsxLCAyLCAzXSwgWzQsIDUsIDZdKTtcclxuICogY29uc29sZS5sb2cocmVzdWx0KTsgLy8gMzJcclxuICpcclxuICogLy8gQ2hlY2sgY2FwYWJpbGl0aWVzXHJcbiAqIGNvbnNvbGUubG9nKHNpbWQuY2FwYWJpbGl0aWVzKCkpOyAvLyBbJ0FWWDInLCAnRk1BJ11cclxuICogYGBgXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU2ltZE9wcyB7XHJcbiAgcHJpdmF0ZSBuYXRpdmU6IE5hdGl2ZVNpbWRPcHMgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBjb25zdCBtb2QgPSBnZXROYXRpdmVNb2R1bGUoKTtcclxuICAgIGlmIChtb2QpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICB0aGlzLm5hdGl2ZSA9IG5ldyBtb2QuU2ltZE9wZXJhdGlvbnMoKTtcclxuICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgLy8gRmFsbCBiYWNrIHRvIEpTIGltcGxlbWVudGF0aW9uXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbXB1dGUgZG90IHByb2R1Y3Qgb2YgdHdvIHZlY3RvcnNcclxuICAgKi9cclxuICBkb3RQcm9kdWN0KGE6IG51bWJlcltdLCBiOiBudW1iZXJbXSk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy5uYXRpdmUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLmRvdFByb2R1Y3QoYSwgYik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSmF2YVNjcmlwdCBmYWxsYmFja1xyXG4gICAgbGV0IHN1bSA9IDA7XHJcbiAgICBjb25zdCBsZW4gPSBNYXRoLm1pbihhLmxlbmd0aCwgYi5sZW5ndGgpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICBzdW0gKz0gYVtpXSAqIGJbaV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3VtO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29tcHV0ZSBjb3NpbmUgc2ltaWxhcml0eSBiZXR3ZWVuIHR3byB2ZWN0b3JzXHJcbiAgICovXHJcbiAgY29zaW5lU2ltaWxhcml0eShhOiBudW1iZXJbXSwgYjogbnVtYmVyW10pOiBudW1iZXIge1xyXG4gICAgaWYgKHRoaXMubmF0aXZlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5jb3NpbmVTaW1pbGFyaXR5KGEsIGIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEphdmFTY3JpcHQgZmFsbGJhY2tcclxuICAgIGxldCBkb3QgPSAwO1xyXG4gICAgbGV0IG5vcm1BID0gMDtcclxuICAgIGxldCBub3JtQiA9IDA7XHJcblxyXG4gICAgY29uc3QgbGVuID0gTWF0aC5taW4oYS5sZW5ndGgsIGIubGVuZ3RoKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgZG90ICs9IGFbaV0gKiBiW2ldO1xyXG4gICAgICBub3JtQSArPSBhW2ldICogYVtpXTtcclxuICAgICAgbm9ybUIgKz0gYltpXSAqIGJbaV07XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZGVub20gPSBNYXRoLnNxcnQobm9ybUEpICogTWF0aC5zcXJ0KG5vcm1CKTtcclxuICAgIHJldHVybiBkZW5vbSA+IDAgPyBkb3QgLyBkZW5vbSA6IDA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb21wdXRlIEwyIChFdWNsaWRlYW4pIGRpc3RhbmNlIGJldHdlZW4gdHdvIHZlY3RvcnNcclxuICAgKi9cclxuICBsMkRpc3RhbmNlKGE6IG51bWJlcltdLCBiOiBudW1iZXJbXSk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy5uYXRpdmUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubmF0aXZlLmwyRGlzdGFuY2UoYSwgYik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSmF2YVNjcmlwdCBmYWxsYmFja1xyXG4gICAgbGV0IHN1bSA9IDA7XHJcbiAgICBjb25zdCBsZW4gPSBNYXRoLm1pbihhLmxlbmd0aCwgYi5sZW5ndGgpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICBjb25zdCBkaWZmID0gYVtpXSAtIGJbaV07XHJcbiAgICAgIHN1bSArPSBkaWZmICogZGlmZjtcclxuICAgIH1cclxuICAgIHJldHVybiBNYXRoLnNxcnQoc3VtKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1hdHJpeC12ZWN0b3IgbXVsdGlwbGljYXRpb25cclxuICAgKi9cclxuICBtYXR2ZWMobWF0cml4OiBudW1iZXJbXVtdLCB2ZWN0b3I6IG51bWJlcltdKTogbnVtYmVyW10ge1xyXG4gICAgaWYgKHRoaXMubmF0aXZlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5tYXR2ZWMobWF0cml4LCB2ZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEphdmFTY3JpcHQgZmFsbGJhY2tcclxuICAgIHJldHVybiBtYXRyaXgubWFwKHJvdyA9PiB0aGlzLmRvdFByb2R1Y3Qocm93LCB2ZWN0b3IpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNvZnRtYXggYWN0aXZhdGlvbiBmdW5jdGlvblxyXG4gICAqL1xyXG4gIHNvZnRtYXgoaW5wdXQ6IG51bWJlcltdKTogbnVtYmVyW10ge1xyXG4gICAgaWYgKHRoaXMubmF0aXZlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5zb2Z0bWF4KGlucHV0KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBKYXZhU2NyaXB0IGZhbGxiYWNrXHJcbiAgICBjb25zdCBtYXggPSBNYXRoLm1heCguLi5pbnB1dCk7XHJcbiAgICBjb25zdCBleHBzID0gaW5wdXQubWFwKHggPT4gTWF0aC5leHAoeCAtIG1heCkpO1xyXG4gICAgY29uc3Qgc3VtID0gZXhwcy5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCAwKTtcclxuICAgIHJldHVybiBleHBzLm1hcCh4ID0+IHggLyBzdW0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRWxlbWVudC13aXNlIGFkZGl0aW9uXHJcbiAgICovXHJcbiAgYWRkKGE6IG51bWJlcltdLCBiOiBudW1iZXJbXSk6IG51bWJlcltdIHtcclxuICAgIGNvbnN0IGxlbiA9IE1hdGgubWluKGEubGVuZ3RoLCBiLmxlbmd0aCk7XHJcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgQXJyYXkobGVuKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgcmVzdWx0W2ldID0gYVtpXSArIGJbaV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRWxlbWVudC13aXNlIG11bHRpcGxpY2F0aW9uXHJcbiAgICovXHJcbiAgbXVsKGE6IG51bWJlcltdLCBiOiBudW1iZXJbXSk6IG51bWJlcltdIHtcclxuICAgIGNvbnN0IGxlbiA9IE1hdGgubWluKGEubGVuZ3RoLCBiLmxlbmd0aCk7XHJcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgQXJyYXkobGVuKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgcmVzdWx0W2ldID0gYVtpXSAqIGJbaV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2NhbGUgdmVjdG9yIGJ5IHNjYWxhclxyXG4gICAqL1xyXG4gIHNjYWxlKGE6IG51bWJlcltdLCBzY2FsYXI6IG51bWJlcik6IG51bWJlcltdIHtcclxuICAgIHJldHVybiBhLm1hcCh4ID0+IHggKiBzY2FsYXIpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTm9ybWFsaXplIHZlY3RvciB0byB1bml0IGxlbmd0aFxyXG4gICAqL1xyXG4gIG5vcm1hbGl6ZShhOiBudW1iZXJbXSk6IG51bWJlcltdIHtcclxuICAgIGNvbnN0IG5vcm0gPSBNYXRoLnNxcnQoYS5yZWR1Y2UoKHN1bSwgeCkgPT4gc3VtICsgeCAqIHgsIDApKTtcclxuICAgIHJldHVybiBub3JtID4gMCA/IGEubWFwKHggPT4geCAvIG5vcm0pIDogYTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlTFUgYWN0aXZhdGlvblxyXG4gICAqL1xyXG4gIHJlbHUoaW5wdXQ6IG51bWJlcltdKTogbnVtYmVyW10ge1xyXG4gICAgcmV0dXJuIGlucHV0Lm1hcCh4ID0+IE1hdGgubWF4KDAsIHgpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdFTFUgYWN0aXZhdGlvbiAoYXBwcm94aW1hdGUpXHJcbiAgICovXHJcbiAgZ2VsdShpbnB1dDogbnVtYmVyW10pOiBudW1iZXJbXSB7XHJcbiAgICByZXR1cm4gaW5wdXQubWFwKHggPT4ge1xyXG4gICAgICByZXR1cm4gMC41ICogeCAqICgxICsgTWF0aC50YW5oKE1hdGguc3FydCgyIC8gTWF0aC5QSSkgKiAoeCArIDAuMDQ0NzE1ICogeCAqIHggKiB4KSkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTaWdtb2lkIGFjdGl2YXRpb25cclxuICAgKi9cclxuICBzaWdtb2lkKGlucHV0OiBudW1iZXJbXSk6IG51bWJlcltdIHtcclxuICAgIHJldHVybiBpbnB1dC5tYXAoeCA9PiAxIC8gKDEgKyBNYXRoLmV4cCgteCkpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExheWVyIG5vcm1hbGl6YXRpb25cclxuICAgKi9cclxuICBsYXllck5vcm0oaW5wdXQ6IG51bWJlcltdLCBlcHMgPSAxZS01KTogbnVtYmVyW10ge1xyXG4gICAgY29uc3QgbWVhbiA9IGlucHV0LnJlZHVjZSgoYSwgYikgPT4gYSArIGIsIDApIC8gaW5wdXQubGVuZ3RoO1xyXG4gICAgY29uc3QgdmFyaWFuY2UgPSBpbnB1dC5yZWR1Y2UoKHN1bSwgeCkgPT4gc3VtICsgKHggLSBtZWFuKSAqKiAyLCAwKSAvIGlucHV0Lmxlbmd0aDtcclxuICAgIGNvbnN0IHN0ZCA9IE1hdGguc3FydCh2YXJpYW5jZSArIGVwcyk7XHJcbiAgICByZXR1cm4gaW5wdXQubWFwKHggPT4gKHggLSBtZWFuKSAvIHN0ZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiBuYXRpdmUgU0lNRCBpcyBhdmFpbGFibGVcclxuICAgKi9cclxuICBpc05hdGl2ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLm5hdGl2ZSAhPT0gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBhdmFpbGFibGUgU0lNRCBjYXBhYmlsaXRpZXNcclxuICAgKi9cclxuICBjYXBhYmlsaXRpZXMoKTogc3RyaW5nW10ge1xyXG4gICAgaWYgKCF0aGlzLm5hdGl2ZSkge1xyXG4gICAgICByZXR1cm4gWydKYXZhU2NyaXB0IChzY2FsYXIpJ107XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVGhlIG5hdGl2ZSBtb2R1bGUgd2lsbCByZXBvcnQgYWN0dWFsIGNhcGFiaWxpdGllc1xyXG4gICAgY29uc3QgbW9kID0gZ2V0TmF0aXZlTW9kdWxlKCk7XHJcbiAgICBpZiAobW9kKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgZW5naW5lID0gbmV3IG1vZC5SdXZMTE1FbmdpbmUoKTtcclxuICAgICAgICByZXR1cm4gZW5naW5lLnNpbWRDYXBhYmlsaXRpZXMoKTtcclxuICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgcmV0dXJuIFsnTmF0aXZlICh1bmtub3duKSddO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFsnSmF2YVNjcmlwdCAoc2NhbGFyKSddO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
209
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaW1kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7R0FLRzs7O0FBRUgscUNBQTBEO0FBRTFEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFDSCxNQUFhLE9BQU87SUFHbEI7UUFGUSxXQUFNLEdBQXlCLElBQUksQ0FBQztRQUcxQyxNQUFNLEdBQUcsR0FBRyxJQUFBLHdCQUFlLEdBQUUsQ0FBQztRQUM5QixJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1IsSUFBSSxDQUFDO2dCQUNILElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDekMsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDUCxpQ0FBaUM7WUFDbkMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxVQUFVLENBQUMsQ0FBVyxFQUFFLENBQVc7UUFDakMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUVELHNCQUFzQjtRQUN0QixJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDWixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM3QixHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQixDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQ7O09BRUc7SUFDSCxnQkFB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QUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVk7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFFRCxvREFBb0Q7UUFDcEQsTUFBTSxHQUFHLEdBQUcsSUFBQSx3QkFBZSxHQUFFLENBQUM7UUFDOUIsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNSLElBQUksQ0FBQztnQkFDSCxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDdEMsT0FBTyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNuQyxDQUFDO1lBQUMsTUFBTSxDQUFDO2dCQUNQLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDakMsQ0FBQztDQUNGO0FBeE1ELDBCQXdNQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU0lNRCBPcGVyYXRpb25zIGZvciB2ZWN0b3IgY29tcHV0YXRpb25zXG4gKlxuICogVXNlcyBuYXRpdmUgU0lNRCBpbnN0cnVjdGlvbnMgKEFWWDIvQVZYNTEyL1NTRTQuMS9ORU9OKSB3aGVuIGF2YWlsYWJsZSxcbiAqIGZhbGxzIGJhY2sgdG8gSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbnMgb3RoZXJ3aXNlLlxuICovXG5cbmltcG9ydCB7IGdldE5hdGl2ZU1vZHVsZSwgTmF0aXZlU2ltZE9wcyB9IGZyb20gJy4vbmF0aXZlJztcblxuLyoqXG4gKiBTSU1EIE9wZXJhdGlvbnMgY2xhc3NcbiAqXG4gKiBQcm92aWRlcyBoYXJkd2FyZS1hY2NlbGVyYXRlZCB2ZWN0b3Igb3BlcmF0aW9ucyB3aGVuIG5hdGl2ZSBtb2R1bGUgaXMgYXZhaWxhYmxlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBTaW1kT3BzIH0gZnJvbSAnQHJ1dmVjdG9yL3J1dmxsbSc7XG4gKlxuICogY29uc3Qgc2ltZCA9IG5ldyBTaW1kT3BzKCk7XG4gKlxuICogLy8gQ29tcHV0ZSBkb3QgcHJvZHVjdFxuICogY29uc3QgcmVzdWx0ID0gc2ltZC5kb3RQcm9kdWN0KFsxLCAyLCAzXSwgWzQsIDUsIDZdKTtcbiAqIGNvbnNvbGUubG9nKHJlc3VsdCk7IC8vIDMyXG4gKlxuICogLy8gQ2hlY2sgY2FwYWJpbGl0aWVzXG4gKiBjb25zb2xlLmxvZyhzaW1kLmNhcGFiaWxpdGllcygpKTsgLy8gWydBVlgyJywgJ0ZNQSddXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFNpbWRPcHMge1xuICBwcml2YXRlIG5hdGl2ZTogTmF0aXZlU2ltZE9wcyB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IG1vZCA9IGdldE5hdGl2ZU1vZHVsZSgpO1xuICAgIGlmIChtb2QpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMubmF0aXZlID0gbmV3IG1vZC5TaW1kT3BlcmF0aW9ucygpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIEZhbGwgYmFjayB0byBKUyBpbXBsZW1lbnRhdGlvblxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlIGRvdCBwcm9kdWN0IG9mIHR3byB2ZWN0b3JzXG4gICAqL1xuICBkb3RQcm9kdWN0KGE6IG51bWJlcltdLCBiOiBudW1iZXJbXSk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMubmF0aXZlKSB7XG4gICAgICByZXR1cm4gdGhpcy5uYXRpdmUuZG90UHJvZHVjdChhLCBiKTtcbiAgICB9XG5cbiAgICAvLyBKYXZhU2NyaXB0IGZhbGxiYWNrXG4gICAgbGV0IHN1bSA9IDA7XG4gICAgY29uc3QgbGVuID0gTWF0aC5taW4oYS5sZW5ndGgsIGIubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBzdW0gKz0gYVtpXSAqIGJbaV07XG4gICAgfVxuICAgIHJldHVybiBzdW07XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZSBjb3NpbmUgc2ltaWxhcml0eSBiZXR3ZWVuIHR3byB2ZWN0b3JzXG4gICAqL1xuICBjb3NpbmVTaW1pbGFyaXR5KGE6IG51bWJlcltdLCBiOiBudW1iZXJbXSk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMubmF0aXZlKSB7XG4gICAgICByZXR1cm4gdGhpcy5uYXRpdmUuY29zaW5lU2ltaWxhcml0eShhLCBiKTtcbiAgICB9XG5cbiAgICAvLyBKYXZhU2NyaXB0IGZhbGxiYWNrXG4gICAgbGV0IGRvdCA9IDA7XG4gICAgbGV0IG5vcm1BID0gMDtcbiAgICBsZXQgbm9ybUIgPSAwO1xuXG4gICAgY29uc3QgbGVuID0gTWF0aC5taW4oYS5sZW5ndGgsIGIubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBkb3QgKz0gYVtpXSAqIGJbaV07XG4gICAgICBub3JtQSArPSBhW2ldICogYVtpXTtcbiAgICAgIG5vcm1CICs9IGJbaV0gKiBiW2ldO1xuICAgIH1cblxuICAgIGNvbnN0IGRlbm9tID0gTWF0aC5zcXJ0KG5vcm1BKSAqIE1hdGguc3FydChub3JtQik7XG4gICAgcmV0dXJuIGRlbm9tID4gMCA/IGRvdCAvIGRlbm9tIDogMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlIEwyIChFdWNsaWRlYW4pIGRpc3RhbmNlIGJldHdlZW4gdHdvIHZlY3RvcnNcbiAgICovXG4gIGwyRGlzdGFuY2UoYTogbnVtYmVyW10sIGI6IG51bWJlcltdKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5uYXRpdmUpIHtcbiAgICAgIHJldHVybiB0aGlzLm5hdGl2ZS5sMkRpc3RhbmNlKGEsIGIpO1xuICAgIH1cblxuICAgIC8vIEphdmFTY3JpcHQgZmFsbGJhY2tcbiAgICBsZXQgc3VtID0gMDtcbiAgICBjb25zdCBsZW4gPSBNYXRoLm1pbihhLmxlbmd0aCwgYi5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNvbnN0IGRpZmYgPSBhW2ldIC0gYltpXTtcbiAgICAgIHN1bSArPSBkaWZmICogZGlmZjtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGguc3FydChzdW0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hdHJpeC12ZWN0b3IgbXVsdGlwbGljYXRpb25cbiAgICovXG4gIG1hdHZlYyhtYXRyaXg6IG51bWJlcltdW10sIHZlY3RvcjogbnVtYmVyW10pOiBudW1iZXJbXSB7XG4gICAgaWYgKHRoaXMubmF0aXZlKSB7XG4gICAgICByZXR1cm4gdGhpcy5uYXRpdmUubWF0dmVjKG1hdHJpeCwgdmVjdG9yKTtcbiAgICB9XG5cbiAgICAvLyBKYXZhU2NyaXB0IGZhbGxiYWNrXG4gICAgcmV0dXJuIG1hdHJpeC5tYXAocm93ID0+IHRoaXMuZG90UHJvZHVjdChyb3csIHZlY3RvcikpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNvZnRtYXggYWN0aXZhdGlvbiBmdW5jdGlvblxuICAgKi9cbiAgc29mdG1heChpbnB1dDogbnVtYmVyW10pOiBudW1iZXJbXSB7XG4gICAgaWYgKHRoaXMubmF0aXZlKSB7XG4gICAgICByZXR1cm4gdGhpcy5uYXRpdmUuc29mdG1heChpbnB1dCk7XG4gICAgfVxuXG4gICAgLy8gSmF2YVNjcmlwdCBmYWxsYmFja1xuICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KC4uLmlucHV0KTtcbiAgICBjb25zdCBleHBzID0gaW5wdXQubWFwKHggPT4gTWF0aC5leHAoeCAtIG1heCkpO1xuICAgIGNvbnN0IHN1bSA9IGV4cHMucmVkdWNlKChhLCBiKSA9PiBhICsgYiwgMCk7XG4gICAgcmV0dXJuIGV4cHMubWFwKHggPT4geCAvIHN1bSk7XG4gIH1cblxuICAvKipcbiAgICogRWxlbWVudC13aXNlIGFkZGl0aW9uXG4gICAqL1xuICBhZGQoYTogbnVtYmVyW10sIGI6IG51bWJlcltdKTogbnVtYmVyW10ge1xuICAgIGNvbnN0IGxlbiA9IE1hdGgubWluKGEubGVuZ3RoLCBiLmxlbmd0aCk7XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgcmVzdWx0W2ldID0gYVtpXSArIGJbaV07XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogRWxlbWVudC13aXNlIG11bHRpcGxpY2F0aW9uXG4gICAqL1xuICBtdWwoYTogbnVtYmVyW10sIGI6IG51bWJlcltdKTogbnVtYmVyW10ge1xuICAgIGNvbnN0IGxlbiA9IE1hdGgubWluKGEubGVuZ3RoLCBiLmxlbmd0aCk7XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgcmVzdWx0W2ldID0gYVtpXSAqIGJbaV07XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogU2NhbGUgdmVjdG9yIGJ5IHNjYWxhclxuICAgKi9cbiAgc2NhbGUoYTogbnVtYmVyW10sIHNjYWxhcjogbnVtYmVyKTogbnVtYmVyW10ge1xuICAgIHJldHVybiBhLm1hcCh4ID0+IHggKiBzY2FsYXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5vcm1hbGl6ZSB2ZWN0b3IgdG8gdW5pdCBsZW5ndGhcbiAgICovXG4gIG5vcm1hbGl6ZShhOiBudW1iZXJbXSk6IG51bWJlcltdIHtcbiAgICBjb25zdCBub3JtID0gTWF0aC5zcXJ0KGEucmVkdWNlKChzdW0sIHgpID0+IHN1bSArIHggKiB4LCAwKSk7XG4gICAgcmV0dXJuIG5vcm0gPiAwID8gYS5tYXAoeCA9PiB4IC8gbm9ybSkgOiBhO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlTFUgYWN0aXZhdGlvblxuICAgKi9cbiAgcmVsdShpbnB1dDogbnVtYmVyW10pOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIGlucHV0Lm1hcCh4ID0+IE1hdGgubWF4KDAsIHgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHRUxVIGFjdGl2YXRpb24gKGFwcHJveGltYXRlKVxuICAgKi9cbiAgZ2VsdShpbnB1dDogbnVtYmVyW10pOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIGlucHV0Lm1hcCh4ID0+IHtcbiAgICAgIHJldHVybiAwLjUgKiB4ICogKDEgKyBNYXRoLnRhbmgoTWF0aC5zcXJ0KDIgLyBNYXRoLlBJKSAqICh4ICsgMC4wNDQ3MTUgKiB4ICogeCAqIHgpKSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2lnbW9pZCBhY3RpdmF0aW9uXG4gICAqL1xuICBzaWdtb2lkKGlucHV0OiBudW1iZXJbXSk6IG51bWJlcltdIHtcbiAgICByZXR1cm4gaW5wdXQubWFwKHggPT4gMSAvICgxICsgTWF0aC5leHAoLXgpKSk7XG4gIH1cblxuICAvKipcbiAgICogTGF5ZXIgbm9ybWFsaXphdGlvblxuICAgKi9cbiAgbGF5ZXJOb3JtKGlucHV0OiBudW1iZXJbXSwgZXBzID0gMWUtNSk6IG51bWJlcltdIHtcbiAgICBjb25zdCBtZWFuID0gaW5wdXQucmVkdWNlKChhLCBiKSA9PiBhICsgYiwgMCkgLyBpbnB1dC5sZW5ndGg7XG4gICAgY29uc3QgdmFyaWFuY2UgPSBpbnB1dC5yZWR1Y2UoKHN1bSwgeCkgPT4gc3VtICsgKHggLSBtZWFuKSAqKiAyLCAwKSAvIGlucHV0Lmxlbmd0aDtcbiAgICBjb25zdCBzdGQgPSBNYXRoLnNxcnQodmFyaWFuY2UgKyBlcHMpO1xuICAgIHJldHVybiBpbnB1dC5tYXAoeCA9PiAoeCAtIG1lYW4pIC8gc3RkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBuYXRpdmUgU0lNRCBpcyBhdmFpbGFibGVcbiAgICovXG4gIGlzTmF0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5hdGl2ZSAhPT0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYXZhaWxhYmxlIFNJTUQgY2FwYWJpbGl0aWVzXG4gICAqL1xuICBjYXBhYmlsaXRpZXMoKTogc3RyaW5nW10ge1xuICAgIGlmICghdGhpcy5uYXRpdmUpIHtcbiAgICAgIHJldHVybiBbJ0phdmFTY3JpcHQgKHNjYWxhciknXTtcbiAgICB9XG5cbiAgICAvLyBUaGUgbmF0aXZlIG1vZHVsZSB3aWxsIHJlcG9ydCBhY3R1YWwgY2FwYWJpbGl0aWVzXG4gICAgY29uc3QgbW9kID0gZ2V0TmF0aXZlTW9kdWxlKCk7XG4gICAgaWYgKG1vZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZW5naW5lID0gbmV3IG1vZC5SdXZMTE1FbmdpbmUoKTtcbiAgICAgICAgcmV0dXJuIGVuZ2luZS5zaW1kQ2FwYWJpbGl0aWVzKCk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIFsnTmF0aXZlICh1bmtub3duKSddO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBbJ0phdmFTY3JpcHQgKHNjYWxhciknXTtcbiAgfVxufVxuIl19
|