console-gui-tools
Advanced tools
Comparing version 1.1.21 to 1.1.28
@@ -6,11 +6,11 @@ import { ForegroundColor } from "chalk"; | ||
* @typedef {Object} DoubleLayoutOptions | ||
* @property {boolean} [showTitle] - If the title should be shown. | ||
* @property {boolean} [boxed] - If the layout should be boxed. | ||
* @property {ForegroundColor | ""} [boxColor] - The color of the box taken from the chalk library. | ||
* @property {"bold"} [boxStyle] - If the border of the box should be bold. | ||
* @property {string} [changeFocusKey] - The key that should be pressed to change the focus. | ||
* @property {"horizontal" | "vertical"} [direction] - The direction of the layout. | ||
* @property {string} [page1Title] - The title of the first page. | ||
* @property {string} [page2Title] - The title of the second page. | ||
* @property {[number, number]} [pageRatio] - The ratio of the pages. (in horizontal direction) | ||
* @prop {boolean} [showTitle] - If the title should be shown. | ||
* @prop {boolean} [boxed] - If the layout should be boxed. | ||
* @prop {ForegroundColor | ""} [boxColor] - The color of the box taken from the chalk library. | ||
* @prop {"bold"} [boxStyle] - If the border of the box should be bold. | ||
* @prop {string} [changeFocusKey] - The key that should be pressed to change the focus. | ||
* @prop {"horizontal" | "vertical"} [direction] - The direction of the layout. | ||
* @prop {string} [page1Title] - The title of the first page. | ||
* @prop {string} [page2Title] - The title of the second page. | ||
* @prop {[number, number]} [pageRatio] - The ratio of the pages. (in horizontal direction) | ||
* | ||
@@ -106,1 +106,2 @@ * @export | ||
export default DoubleLayout; | ||
//# sourceMappingURL=DoubleLayout.d.ts.map |
@@ -12,14 +12,4 @@ import { ConsoleManager } from "../../ConsoleGui.js"; | ||
export class DoubleLayout { | ||
CM; | ||
options; | ||
selected; | ||
page1; | ||
page2; | ||
boxBold; | ||
proportions; | ||
page2Title; | ||
page1Title; | ||
realWidth = 0; | ||
isOdd; | ||
constructor(page1, page2, options, selected = 0) { | ||
this.realWidth = 0; | ||
/** @const {ConsoleManager} CM the instance of ConsoleManager (singleton) */ | ||
@@ -250,2 +240,2 @@ this.CM = new ConsoleManager(); | ||
export default DoubleLayout; | ||
//# sourceMappingURL=DoubleLayout.js.map | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRG91YmxlTGF5b3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbGF5b3V0L0RvdWJsZUxheW91dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFlLE1BQU0scUJBQXFCLENBQUE7QUErQmpFOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxPQUFPLFlBQVk7SUFhckIsWUFBbUIsS0FBbUIsRUFBRSxLQUFrQixFQUFFLE9BQTRCLEVBQUUsV0FBa0IsQ0FBQztRQUg3RyxjQUFTLEdBQThCLENBQUMsQ0FBQTtRQUlwQyw0RUFBNEU7UUFDNUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFBO1FBRTlCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO1FBRWxCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtRQUM5RCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBRXZELHFEQUFxRDtRQUNyRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFBO1FBRWpFLHdEQUF3RDtRQUN4RCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUE7SUFD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LENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFBO2FBQy9IO1lBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUs7Z0JBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1lBQ3ZKLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQ3RDO2FBQU07WUFDSCxNQUFNLEdBQUcsR0FBb0IsRUFBRSxDQUFBO1lBQy9CLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLO2dCQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQTtZQUM1SSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDdkIsSUFBSSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxFQUFFO2dCQUN4RCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQTthQUNuSTtZQUNELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLO2dCQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQTtZQUM1RyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDdkIsSUFBSSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxFQUFFO2dCQUN4RCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQTthQUNuSTtZQUNELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLO2dCQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQTtZQUM1SSxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQTtTQUMvQjtJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLElBQUk7UUFDUCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsS0FBSyxVQUFVLEVBQUU7WUFDbEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDN0YsTUFBTSxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxD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QUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUE7WUFDbEcsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQTtZQUNsQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFBO1lBQ2xDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSwwQkFBMEI7Z0JBQ2hELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7b0JBQ3hCLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUE7aUJBQ2haO3FCQUFNO29CQUNILElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUE7aUJBQzFUO2dCQUNELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxhQUFhLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQ3BDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQTtpQkFDOUc7Z0JBQ0QseUJBQXlCO2dCQUN6QixJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFBO2FBQ3hUO2lCQUFNLEVBQUUsNkJBQTZCO2dCQUNsQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFO29CQUN4QixJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUE7aUJBQy9OO2dCQUNELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxhQUFhLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQ3BDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQTtpQkFDOUc7YUFDSjtTQUNKO0lBQ0wsQ0FBQztDQUNKO0FBRUQsZUFBZSxZQUFZLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JlZ3JvdW5kQ29sb3IgfSBmcm9tIFwiY2hhbGtcIlxuaW1wb3J0IHsgQ29uc29sZU1hbmFnZXIsIFBhZ2VCdWlsZGVyIH0gZnJvbSBcIi4uLy4uL0NvbnNvbGVHdWkuanNcIlxuaW1wb3J0IHsgU3R5bGVkRWxlbWVudCB9IGZyb20gXCIuLi9QYWdlQnVpbGRlci5qc1wiXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFRoZSB0eXBlIGNvbnRhaW5pbmcgYWxsIHRoZSBwb3NzaWJsZSBvcHRpb25zIGZvciB0aGUgRG91YmxlTGF5b3V0LlxuICogQHR5cGVkZWYge09iamVjdH0gRG91YmxlTGF5b3V0T3B0aW9uc1xuICogQHByb3Age2Jvb2xlYW59IFtzaG93VGl0bGVdIC0gSWYgdGhlIHRpdGxlIHNob3VsZCBiZSBzaG93bi5cbiAqIEBwcm9wIHtib29sZWFufSBbYm94ZWRdIC0gSWYgdGhlIGxheW91dCBzaG91bGQgYmUgYm94ZWQuXG4gKiBAcHJvcCB7Rm9yZWdyb3VuZENvbG9yIHwgXCJcIn0gW2JveENvbG9yXSAtIFRoZSBjb2xvciBvZiB0aGUgYm94IHRha2VuIGZyb20gdGhlIGNoYWxrIGxpYnJhcnkuXG4gKiBAcHJvcCB7XCJib2xkXCJ9IFtib3hTdHlsZV0gLSBJZiB0aGUgYm9yZGVyIG9mIHRoZSBib3ggc2hvdWxkIGJlIGJvbGQuXG4gKiBAcHJvcCB7c3RyaW5nfSBbY2hhbmdlRm9jdXNLZXldIC0gVGhlIGtleSB0aGF0IHNob3VsZCBiZSBwcmVzc2VkIHRvIGNoYW5nZSB0aGUgZm9jdXMuXG4gKiBAcHJvcCB7XCJob3Jpem9udGFsXCIgfCBcInZlcnRpY2FsXCJ9IFtkaXJlY3Rpb25dIC0gVGhlIGRpcmVjdGlvbiBvZiB0aGUgbGF5b3V0LlxuICogQHByb3Age3N0cmluZ30gW3BhZ2UxVGl0bGVdIC0gVGhlIHRpdGxlIG9mIHRoZSBmaXJzdCBwYWdlLlxuICogQHByb3Age3N0cmluZ30gW3BhZ2UyVGl0bGVdIC0gVGhlIHRpdGxlIG9mIHRoZSBzZWNvbmQgcGFnZS5cbiAqIEBwcm9wIHtbbnVtYmVyLCBudW1iZXJdfSBbcGFnZVJhdGlvXSAtIFRoZSByYXRpbyBvZiB0aGUgcGFnZXMuIChpbiBob3Jpem9udGFsIGRpcmVjdGlvbilcbiAqXG4gKiBAZXhwb3J0XG4gKiBAaW50ZXJmYWNlIERvdWJsZUxheW91dE9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEb3VibGVMYXlvdXRPcHRpb25zIHtcbiAgICBzaG93VGl0bGU/OiBib29sZWFuO1xuICAgIGJveGVkPzogYm9vbGVhbjtcbiAgICBib3hDb2xvcj86IEZvcmVncm91bmRDb2xvciB8IFwiXCI7IC8vIGFkZCBjb2xvciBsaXN0IGZyb20gY2hhbGtcbiAgICBib3hTdHlsZT86IFwiYm9sZFwiO1xuICAgIGNoYW5nZUZvY3VzS2V5OiBzdHJpbmc7XG4gICAgZGlyZWN0aW9uPzogXCJob3Jpem9udGFsXCIgfCBcInZlcnRpY2FsXCI7XG4gICAgcGFnZTFUaXRsZT86IHN0cmluZztcbiAgICBwYWdlMlRpdGxlPzogc3RyaW5nO1xuICAgIHBhZ2VSYXRpbz86IFtudW1iZXIsIG51bWJlcl07XG59XG5cbi8qKlxuICogQGNsYXNzIERvdWJsZUxheW91dFxuICogQGRlc2NyaXB0aW9uIFRoaXMgY2xhc3MgaXMgYSBsYXlvdXQgdGhhdCBoYXMgdHdvIHBhZ2VzLlxuICogQHBhcmFtIHtQYWdlQnVpbGRlcn0gcGFnZTEgVGhlIGZpcnN0IHBhZ2UuXG4gKiBAcGFyYW0ge1BhZ2VCdWlsZGVyfSBwYWdlMiBUaGUgc2Vjb25kIHBhZ2UuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMgTGF5b3V0IG9wdGlvbnMuXG4gKiBAcGFyYW0ge251bWJlcn0gc2VsZWN0ZWQgVGhlIHNlbGVjdGVkIHBhZ2UuXG4gKiBAZXhhbXBsZSBjb25zdCBsYXlvdXQgPSBuZXcgRG91YmxlTGF5b3V0KHBhZ2UxLCBwYWdlMiwgdHJ1ZSwgMClcbiAqL1xuZXhwb3J0IGNsYXNzIERvdWJsZUxheW91dCB7XG4gICAgQ006IENvbnNvbGVNYW5hZ2VyXG4gICAgb3B0aW9uczogRG91YmxlTGF5b3V0T3B0aW9uc1xuICAgIHNlbGVjdGVkOiAwIHwgMVxuICAgIHBhZ2UxOiBQYWdlQnVpbGRlclxuICAgIHBhZ2UyOiBQYWdlQnVpbGRlclxuICAgIGJveEJvbGQ6IGJvb2xlYW5cbiAgICBwcm9wb3J0aW9uczogW251bWJlciwgbnVtYmVyXVxuICAgIHBhZ2UyVGl0bGU6IHN0cmluZ1xuICAgIHBhZ2UxVGl0bGU6IHN0cmluZ1xuICAgIHJlYWxXaWR0aDogbnVtYmVyIHwgW251bWJlciwgbnVtYmVyXSA9IDBcbiAgICBpc09kZDogYm9vbGVhbiB8IHVuZGVmaW5lZFxuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHBhZ2UxIDogUGFnZUJ1aWxkZXIsIHBhZ2UyOiBQYWdlQnVpbGRlciwgb3B0aW9uczogRG91YmxlTGF5b3V0T3B0aW9ucywgc2VsZWN0ZWQ6IDAgfCAxID0gMCkge1xuICAgICAgICAvKiogQGNvbnN0IHtDb25zb2xlTWFuYWdlcn0gQ00gdGhlIGluc3RhbmNlIG9mIENvbnNvbGVNYW5hZ2VyIChzaW5nbGV0b24pICovXG4gICAgICAgIHRoaXMuQ00gPSBuZXcgQ29uc29sZU1hbmFnZXIoKVxuXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnNcbiAgICAgICAgdGhpcy5zZWxlY3RlZCA9IHNlbGVjdGVkXG4gICAgICAgIHRoaXMucGFnZTEgPSBwYWdlMVxuICAgICAgICB0aGlzLnBhZ2UyID0gcGFnZTJcblxuICAgICAgICB0aGlzLmJveEJvbGQgPSB0aGlzLm9wdGlvbnMuYm94U3R5bGUgPT09IFwiYm9sZFwiID8gdHJ1ZSA6IGZhbHNlXG4gICAgICAgIHRoaXMucHJvcG9ydGlvbnMgPSB0aGlzLm9wdGlvbnMucGFnZVJhdGlvIHx8IFswLjcsIDAuM11cblxuICAgICAgICAvKiogQGNvbnN0IHtzdHJpbmd9IHBhZ2UyVGl0bGUgVGhlIHRpdGxlIG9mIHBhZ2UyLiAqL1xuICAgICAgICB0aGlzLnBhZ2UyVGl0bGUgPSB0aGlzLm9wdGlvbnMucGFnZTJUaXRsZSB8fCB0aGlzLkNNLmxvZ1BhZ2VUaXRsZVxuXG4gICAgICAgIC8qKiBAY29uc3Qge3N0cmluZ30gcGFnZTFUaXRsZSBUaGUgYXBwbGljYXRpb24gdGl0bGUuICovXG4gICAgICAgIHRoaXMucGFnZTFUaXRsZSA9IHRoaXMub3B0aW9ucy5wYWdlMVRpdGxlIHx8IHRoaXMuQ00uYXBwbGljYXRpb25UaXRsZVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gb3ZlcndyaXRlIHRoZSBwYWdlIGNvbnRlbnQuXG4gICAgICogQHBhcmFtIHtQYWdlQnVpbGRlcn0gcGFnZSB0aGUgcGFnZSB0byBiZSBhZGRlZFxuICAgICAqIEBtZW1iZXJvZiBEb3VibGVMYXlvdXRcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0UGFnZTEocGFnZTogUGFnZUJ1aWxkZXIpOiB2b2lkIHsgdGhpcy5wYWdlMSA9IHBhZ2UgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBvdmVyd3JpdGUgdGhlIHBhZ2UgY29udGVudC5cbiAgICAgKiBAcGFyYW0ge1BhZ2VCdWlsZGVyfSBwYWdlIHRoZSBwYWdlIHRvIGJlIGFkZGVkXG4gICAgICogQG1lbWJlcm9mIERvdWJsZUxheW91dFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRQYWdlMihwYWdlOiBQYWdlQnVpbGRlcik6IHZvaWQgeyB0aGlzLnBhZ2UyID0gcGFnZSB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBsYXlvdXQgYm9yZGVyLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gYm9yZGVyIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBib3JkZXJcbiAgICAgKiBAbWVtYmVyb2YgRG91YmxlTGF5b3V0XG4gICAgICovXG4gICAgcHVibGljIHNldEJvcmRlcihib3JkZXI6IGJvb2xlYW4pOiB2b2lkIHsgdGhpcy5vcHRpb25zLmJveGVkID0gYm9yZGVyIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY2hvb3NlIHRoZSBwYWdlIHRvIGJlIGhpZ2hsaWdodGVkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzZWxlY3RlZCAwIGZvciBwYWdlMSwgMSBmb3IgcGFnZTJcbiAgICAgKiBAbWVtYmVyb2YgRG91YmxlTGF5b3V0XG4gICAgICovXG4gICAgcHVibGljIHNldFNlbGVjdGVkKHNlbGVjdGVkOiAwIHwgMSk6IHZvaWQgeyB0aGlzLnNlbGVjdGVkID0gc2VsZWN0ZWQgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBnZXQgdGhlIHNlbGVjdGVkIHBhZ2UuXG4gICAgICogQHJldHVybnMge251bWJlcn0gMCBmb3IgcGFnZTEsIDEgZm9yIHBhZ2UyXG4gICAgICogQG1lbWJlcm9mIERvdWJsZUxheW91dFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTZWxlY3RlZCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZ2V0IHN3aXRjaCB0aGUgc2VsZWN0ZWQgcGFnZS5cbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICAgKiBAbWVtYmVyb2YgRG91YmxlTGF5b3V0XG4gICAgICovXG4gICAgcHVibGljIGNoYW5nZUxheW91dCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQgPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IDFcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSAwXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGRyYXcgYSBzaW5nbGUgbGluZSBvZiB0aGUgbGF5b3V0IHRvIHRoZSBzY3JlZW4uIEl0IGFsc28gdHJpbSB0aGUgbGluZSBpZiBpdCBpcyB0b28gbG9uZy5cbiAgICAgKiBAcGFyYW0ge0FycmF5PG9iamVjdD59IGxpbmUgdGhlIGxpbmUgdG8gYmUgZHJhd25cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZUluZGV4IHRoZSBpbmRleCBvZiB0aGUgc2VsZWN0ZWQgbGluZVxuICAgICAqIEBtZW1iZXJvZiBEb3VibGVMYXlvdXRcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICAgKi9cbiAgICBwcml2YXRlIGRyYXdMaW5lKGxpbmUgOiAgQXJyYXk8U3R5bGVkRWxlbWVudD4sIHNlY29uZExpbmU/IDogQXJyYXk8U3R5bGVkRWxlbWVudD4sIGluZGV4ID0gMCk6IHZvaWQge1xuICAgICAgICBjb25zdCBkaXIgPSAhdGhpcy5vcHRpb25zLmRpcmVjdGlvbiB8fCB0aGlzLm9wdGlvbnMuZGlyZWN0aW9uID09PSBcInZlcnRpY2FsXCIgPyBcInZlcnRpY2FsXCIgOiBcImhvcml6b250YWxcIlxuICAgICAgICBjb25zdCBic2l6ZSA9IHRoaXMub3B0aW9ucy5ib3hlZCA/IGRpciA9PT0gXCJ2ZXJ0aWNhbFwiID8gMiA6IDMgOiAwXG4gICAgICAgIGxldCB1bmZvcm1hdHRlZExpbmUgPSBbXCJcIl1cbiAgICAgICAgbGV0IG5ld0xpbmUgPSBbXG4gICAgICAgICAgICBbLi4ubGluZV1cbiAgICAgICAgXVxuICAgICAgICBpZiAoZGlyID09PSBcInZlcnRpY2FsXCIpIHtcbiAgICAgICAgICAgIGxpbmUuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICB1bmZvcm1hdHRlZExpbmVbMF0gKz0gZWxlbWVudC50ZXh0XG4gICAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3TGluZSA9IFtcbiAgICAgICAgICAgICAgICBbLi4ubGluZV0sXG4gICAgICAgICAgICAgICAgWy4uLnNlY29uZExpbmU/IHNlY29uZExpbmUgOiBsaW5lXVxuICAgICAgICAgICAgXVxuICAgICAgICAgICAgdW5mb3JtYXR0ZWRMaW5lLnB1c2goXCJcIilcbiAgICAgICAgICAgIGxpbmUuZm9yRWFjaCgoZWxlbWVudCA6IFN0eWxlZEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICB1bmZvcm1hdHRlZExpbmVbMF0gKz0gZWxlbWVudC50ZXh0XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgc2Vjb25kTGluZT8uZm9yRWFjaCgoZWxlbWVudCA6IFN0eWxlZEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICB1bmZvcm1hdHRlZExpbmVbMV0gKz0gZWxlbWVudC50ZXh0XG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIGlmICh1bmZvcm1hdHRlZExpbmUuZmlsdGVyKChlLCBpKSA9PiBlLmxlbmd0aCA+IHRoaXMucmVhbFdpZHRoW2ldIC0gYnNpemUpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHVuZm9ybWF0dGVkTGluZSA9IHVuZm9ybWF0dGVkTGluZS5tYXAoKGUsIGkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZS5sZW5ndGggPiB0aGlzLnJlYWxXaWR0aFtpXSAtIGJzaXplKSB7IC8vIE5lZWQgdG8gdHJ1bmNhdGVcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gMlxuICAgICAgICAgICAgICAgICAgICBpZiAoZGlyID09PSBcInZlcnRpY2FsXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpbmVbaV0gPSBbLi4uSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShsaW5lKSldIC8vIFNoYWxsb3cgY29weSBiZWNhdXNlIEkganVzdCB3YW50IHRvIG1vZGlmeSB0aGUgdmFsdWVzIGJ1dCBub3QgdGhlIG9yaWdpbmFsXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdMaW5lW2ldID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShzZWNvbmRMaW5lKSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBsZXQgZGlmZiA9IGUubGVuZ3RoIC0gdGhpcy5yZWFsV2lkdGhbaV0gKyAxXG5cbiAgICAgICAgICAgICAgICAgICAgLy8gcmVtb3ZlIHRydW5jYXRlZCB0ZXh0XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSBuZXdMaW5lW2ldLmxlbmd0aCAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3TGluZVtpXVtqXS50ZXh0Lmxlbmd0aCA+IGRpZmYgKyBvZmZzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdMaW5lW2ldW2pdLnRleHQgPSB0aGlzLkNNLnRydW5jYXRlKG5ld0xpbmVbaV1bal0udGV4dCwgKG5ld0xpbmVbaV1bal0udGV4dC5sZW5ndGggLSBkaWZmKSAtIG9mZnNldCwgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmIC09IG5ld0xpbmVbaV1bal0udGV4dC5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdMaW5lW2ldLnNwbGljZShqLCAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSB1bmZvcm1hdHRlZCBsaW5lXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXdMaW5lW2ldLm1hcChlbGVtZW50ID0+IGVsZW1lbnQudGV4dCkuam9pbihcIlwiKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGlyID09PSBcInZlcnRpY2FsXCIpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYm94ZWQpIG5ld0xpbmVbMF0udW5zaGlmdCh7IHRleHQ6IFwi4pSCXCIsIHN0eWxlOiB7IGNvbG9yOiB0aGlzLnNlbGVjdGVkID09PSBpbmRleCA/IHRoaXMub3B0aW9ucy5ib3hDb2xvciA6IFwid2hpdGVcIiwgYm9sZDogdGhpcy5ib3hCb2xkIH0gfSlcbiAgICAgICAgICAgIGlmICh1bmZvcm1hdHRlZExpbmVbMF0ubGVuZ3RoIDw9IHRoaXMuQ00uU2NyZWVuLndpZHRoIC0gYnNpemUpIHtcbiAgICAgICAgICAgICAgICBuZXdMaW5lWzBdLnB1c2goeyB0ZXh0OiBgJHtcIiBcIi5yZXBlYXQoKHRoaXMuQ00uU2NyZWVuLndpZHRoIC0gdW5mb3JtYXR0ZWRMaW5lWzBdLmxlbmd0aCkgLSBic2l6ZSl9YCwgc3R5bGU6IHsgY29sb3I6IFwiXCIgfSB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5ib3hlZCkgbmV3TGluZVswXS5wdXNoKHsgdGV4dDogXCLilIJcIiwgc3R5bGU6IHsgY29sb3I6IHRoaXMuc2VsZWN0ZWQgPT09IGluZGV4ID8gdGhpcy5vcHRpb25zLmJveENvbG9yIDogXCJ3aGl0ZVwiLCBib2xkOiB0aGlzLmJveEJvbGQgfSB9KVxuICAgICAgICAgICAgdGhpcy5DTS5TY3JlZW4ud3JpdGUoLi4ubmV3TGluZVswXSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHJldDogU3R5bGVkRWxlbWVudFtdID0gW11cbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYm94ZWQpIHJldC5wdXNoKHsgdGV4dDogXCLilIJcIiwgc3R5bGU6IHsgY29sb3I6IHRoaXMuc2VsZWN0ZWQgPT09IDAgPyB0aGlzLm9wdGlvbnMuYm94Q29sb3IgOiBcIndoaXRlXCIsIGJvbGQ6IHRoaXMuYm94Qm9sZCB9IH0pXG4gICAgICAgICAgICByZXQucHVzaCguLi5uZXdMaW5lWzBdKVxuICAgICAgICAgICAgaWYgKHVuZm9ybWF0dGVkTGluZVswXS5sZW5ndGggPD0gdGhpcy5yZWFsV2lkdGhbMF0gLSBic2l6ZSkge1xuICAgICAgICAgICAgICAgIHJldC5wdXNoKHsgdGV4dDogYCR7XCIgXCIucmVwZWF0KCh0aGlzLnJlYWxXaWR0aFswXSAtIHVuZm9ybWF0dGVkTGluZVswXS5sZW5ndGgpIC0gKGJzaXplID4gMCA/IDIgOiAwKSl9YCwgc3R5bGU6IHsgY29sb3I6IFwiXCIgfSB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5ib3hlZCkgcmV0LnB1c2goeyB0ZXh0OiBcIuKUglwiLCBzdHlsZTogeyBjb2xvcjogdGhpcy5vcHRpb25zLmJveENvbG9yLCBib2xkOiB0aGlzLmJveEJvbGQgfSB9KVxuICAgICAgICAgICAgcmV0LnB1c2goLi4ubmV3TGluZVsxXSlcbiAgICAgICAgICAgIGlmICh1bmZvcm1hdHRlZExpbmVbMV0ubGVuZ3RoIDw9IHRoaXMucmVhbFdpZHRoWzFdIC0gYnNpemUpIHtcbiAgICAgICAgICAgICAgICByZXQucHVzaCh7IHRleHQ6IGAke1wiIFwiLnJlcGVhdCgodGhpcy5yZWFsV2lkdGhbMV0gLSB1bmZvcm1hdHRlZExpbmVbMV0ubGVuZ3RoKSAtIChic2l6ZSA+IDAgPyAxIDogMCkpfWAsIHN0eWxlOiB7IGNvbG9yOiBcIlwiIH0gfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYm94ZWQpIHJldC5wdXNoKHsgdGV4dDogXCLilIJcIiwgc3R5bGU6IHsgY29sb3I6IHRoaXMuc2VsZWN0ZWQgPT09IDEgPyB0aGlzLm9wdGlvbnMuYm94Q29sb3IgOiBcIndoaXRlXCIsIGJvbGQ6IHRoaXMuYm94Qm9sZCB9IH0pXG4gICAgICAgICAgICB0aGlzLkNNLlNjcmVlbi53cml0ZSguLi5yZXQpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGRyYXcgdGhlIGxheW91dCB0byB0aGUgc2NyZWVuLlxuICAgICAqIEBtZW1iZXJvZiBEb3VibGVMYXlvdXRcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICAgKiBAZXhhbXBsZSBsYXlvdXQuZHJhdygpXG4gICAgICovXG4gICAgcHVibGljIGRyYXcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNPZGQgPSB0aGlzLkNNLlNjcmVlbi53aWR0aCAlIDIgPT09IDFcbiAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuZGlyZWN0aW9uIHx8IHRoaXMub3B0aW9ucy5kaXJlY3Rpb24gPT09IFwidmVydGljYWxcIikge1xuICAgICAgICAgICAgdGhpcy5yZWFsV2lkdGggPSBbTWF0aC5yb3VuZCh0aGlzLkNNLlNjcmVlbi53aWR0aCAqIDEpLCBNYXRoLnJvdW5kKHRoaXMuQ00uU2NyZWVuLndpZHRoICogMSldXG4gICAgICAgICAgICBjb25zdCB0cmltbWVkVGl0bGUgPSBbdGhpcy5DTS50cnVuY2F0ZSh0aGlzLnBhZ2UxVGl0bGUsIHRoaXMucmVhbFdpZHRoWzBdIC0gNCwgZmFsc2UpLCB0aGlzLkNNLnRydW5jYXRlKHRoaXMucGFnZTJUaXRsZSwgdGhpcy5yZWFsV2lkdGhbMV0gLSA0LCBmYWxzZSldXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJveGVkKSB7IC8vIERyYXcgcGFnZXMgd2l0aCBib3JkZXJzXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zaG93VGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5DTS5TY3JlZW4ud3JpdGUoeyB0ZXh0OiBg4pSM4pSAJHt0cmltbWVkVGl0bGVbMF19JHtcIuKUgFwiLnJlcGVhdCh0aGlzLkNNLlNjcmVlbi53aWR0aCAtIHRyaW1tZWRUaXRsZVswXS5sZW5ndGggLSAzKX3ilJBgLCBzdHlsZTogeyBjb2xvcjogdGhpcy5zZWxlY3RlZCA9PT0gMCA/IHRoaXMub3B0aW9ucy5ib3hDb2xvciA6IFwid2hpdGVcIiwgYm9sZDogdGhpcy5ib3hCb2xkIH0gfSlcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLkNNLlNjcmVlbi53cml0ZSh7IHRleHQ6IGDilIzilIAke1wi4pSAXCIucmVwZWF0KHRoaXMuQ00uU2NyZWVuLndpZHRoIC0gMyl94pSQYCwgc3R5bGU6IHsgY29sb3I6IHRoaXMuc2VsZWN0ZWQgPT09IDAgPyB0aGlzLm9wdGlvbnMuYm94Q29sb3IgOiBcIndoaXRlXCIsIGJvbGQ6IHRoaXMuYm94Qm9sZCB9IH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucGFnZTEuZ2V0Q29udGVudCgpLmZvckVhY2goKGxpbmU6IFN0eWxlZEVsZW1lbnRbXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYXdMaW5lKGxpbmUsIHVuZGVmaW5lZCwgMClcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc2hvd1RpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuQ00uU2NyZWVuLndyaXRlKHsgdGV4dDogYOKUnOKUgCR7dHJpbW1lZFRpdGxlWzFdfSR7XCLilIBcIi5yZXBlYXQodGhpcy5DTS5TY3JlZW4ud2lkdGggLSB0cmltbWVkVGl0bGVbMV0ubGVuZ3RoIC0gMyl94pSkYCwgc3R5bGU6IHsgY29sb3I6IHRoaXMub3B0aW9ucy5ib3hDb2xvciwgYm9sZDogdGhpcy5ib3hCb2xkIH0gfSlcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLkNNLlNjcmVlbi53cml0ZSh7IHRleHQ6IGDilJwke1wi4pSAXCIucmVwZWF0KHRoaXMuQ00uU2NyZWVuLndpZHRoIC0gMil94pSkYCwgc3R5bGU6IHsgY29sb3I6IHRoaXMub3B0aW9ucy5ib3hDb2xvciwgYm9sZDogdGhpcy5ib3hCb2xkIH0gfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlMi5nZXRDb250ZW50KCkuZm9yRWFjaCgobGluZTogU3R5bGVkRWxlbWVudFtdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhd0xpbmUobGluZSwgdW5kZWZpbmVkLCAxKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgdGhpcy5DTS5TY3JlZW4ud3JpdGUoeyB0ZXh0OiBg4pSUJHtcIuKUgFwiLnJlcGVhdCh0aGlzLkNNLlNjcmVlbi53aWR0aCAtIDIpfeKUmGAsIHN0eWxlOiB7IGNvbG9yOiB0aGlzLnNlbGVjdGVkID09PSAxID8gdGhpcy5vcHRpb25zLmJveENvbG9yIDogXCJ3aGl0ZVwiLCBib2xkOiB0aGlzLmJveEJvbGQgfSB9KVxuICAgICAgICAgICAgfSBlbHNlIHsgLy8gRHJhdyBwYWdlcyB3aXRob3V0IGJvcmRlcnNcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNob3dUaXRsZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLkNNLlNjcmVlbi53cml0ZSh7IHRleHQ6IGAke3RyaW1tZWRUaXRsZVswXX1gLCBzdHlsZTogeyBjb2xvcjogdGhpcy5zZWxlY3RlZCA9PT0gMCA/IHRoaXMub3B0aW9ucy5ib3hDb2xvciA6IFwid2hpdGVcIiwgYm9sZDogdGhpcy5ib3hCb2xkIH0gfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlMS5nZXRDb250ZW50KCkuZm9yRWFjaCgobGluZTogU3R5bGVkRWxlbWVudFtdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhd0xpbmUobGluZSwgdW5kZWZpbmVkLCAwKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zaG93VGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5DTS5TY3JlZW4ud3JpdGUoeyB0ZXh0OiBgJHt0cmltbWVkVGl0bGVbMV19YCwgc3R5bGU6IHsgY29sb3I6IHRoaXMuc2VsZWN0ZWQgPT09IDEgPyB0aGlzLm9wdGlvbnMuYm94Q29sb3IgOiBcIndoaXRlXCIsIGJvbGQ6IHRoaXMuYm94Qm9sZCB9IH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucGFnZTIuZ2V0Q29udGVudCgpLmZvckVhY2goKGxpbmU6IFN0eWxlZEVsZW1lbnRbXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYXdMaW5lKGxpbmUsIHVuZGVmaW5lZCwgMSlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgeyAvLyBEcmF3IGhvcml6b250YWxseSAgXG4gICAgICAgICAgICB0aGlzLnJlYWxXaWR0aCA9IFtNYXRoLnJvdW5kKHRoaXMuQ00uU2NyZWVuLndpZHRoICogdGhpcy5wcm9wb3J0aW9uc1swXSksIE1hdGgucm91bmQodGhpcy5DTS5TY3JlZW4ud2lkdGggKiB0aGlzLnByb3BvcnRpb25zWzFdKV1cbiAgICAgICAgICAgIGNvbnN0IHRyaW1tZWRUaXRsZSA9IFt0aGlzLkNNLnRydW5jYXRlKHRoaXMucGFnZTFUaXRsZSwgdGhpcy5yZWFsV2lkdGhbMF0gLSA0LCBmYWxzZSksIHRoaXMuQ00udHJ1bmNhdGUodGhpcy5wYWdlMlRpdGxlLCB0aGlzLnJlYWxXaWR0aFsxXSAtIDMsIGZhbHNlKV1cbiAgICAgICAgICAgIGNvbnN0IG1heFBhZ2VIZWlnaHQgPSBNYXRoLm1heCh0aGlzLnBhZ2UxLmdldFZpZXdlZFBhZ2VIZWlnaHQoKSwgdGhpcy5wYWdlMi5nZXRWaWV3ZWRQYWdlSGVpZ2h0KCkpXG4gICAgICAgICAgICBjb25zdCBwMSA9IHRoaXMucGFnZTEuZ2V0Q29udGVudCgpXG4gICAgICAgICAgICBjb25zdCBwMiA9IHRoaXMucGFnZTIuZ2V0Q29udGVudCgpXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJveGVkKSB7IC8vIERyYXcgcGFnZXMgd2l0aCBib3JkZXJzXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zaG93VGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5DTS5TY3JlZW4ud3JpdGUoeyB0ZXh0OiBg4pSM4pSAJHt0cmltbWVkVGl0bGVbMF19JHtcIuKUgFwiLnJlcGVhdCh0aGlzLnJlYWxXaWR0aFswXSAtIHRyaW1tZWRUaXRsZVswXS5sZW5ndGggLSAzKX3ilKxgLCBzdHlsZTogeyBjb2xvcjogdGhpcy5zZWxlY3RlZCA9PT0gMCA/IHRoaXMub3B0aW9ucy5ib3hDb2xvciA6IFwid2hpdGVcIiwgYm9sZDogdGhpcy5ib3hCb2xkIH0gfSwgeyB0ZXh0OiBg4pSAJHt0cmltbWVkVGl0bGVbMV19JHtcIuKUgFwiLnJlcGVhdCh0aGlzLnJlYWxXaWR0aFsxXSAtIHRyaW1tZWRUaXRsZVsxXS5sZW5ndGggLSAyKX3ilJBgLCBzdHlsZTogeyBjb2xvcjogdGhpcy5zZWxlY3RlZCA9PT0gMSA/IHRoaXMub3B0aW9ucy5ib3hDb2xvciA6IFwid2hpdGVcIiwgYm9sZDogdGhpcy5ib3hCb2xkIH0gfSlcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLkNNLlNjcmVlbi53cml0ZSh7IHRleHQ6IGDilIzilIAke1wi4pSAXCIucmVwZWF0KHRoaXMucmVhbFdpZHRoWzBdIC0gMyl94pSsYCwgc3R5bGU6IHsgY29sb3I6IHRoaXMuc2VsZWN0ZWQgPT09IDAgPyB0aGlzLm9wdGlvbnMuYm94Q29sb3IgOiBcIndoaXRlXCIsIGJvbGQ6IHRoaXMuYm94Qm9sZCB9IH0sIHsgdGV4dDogYOKUgCR7XCLilIBcIi5yZXBlYXQodGhpcy5yZWFsV2lkdGhbMV0gLSAyKX3ilJBgLCBzdHlsZTogeyBjb2xvcjogdGhpcy5zZWxlY3RlZCA9PT0gMSA/IHRoaXMub3B0aW9ucy5ib3hDb2xvciA6IFwid2hpdGVcIiwgYm9sZDogdGhpcy5ib3hCb2xkIH0gfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXhQYWdlSGVpZ2h0OyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmF3TGluZShwMVtpXSB8fCBbeyB0ZXh0OiBcIlwiLCBzdHlsZTogeyBjb2xvcjogXCJcIiB9IH1dLCBwMltpXSB8fCBbeyB0ZXh0OiBcIlwiLCBzdHlsZTogeyBjb2xvcjogXCJcIiB9IH1dKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBEcmF3IHRoZSBib3R0b20gYm9yZGVyXG4gICAgICAgICAgICAgICAgdGhpcy5DTS5TY3JlZW4ud3JpdGUoeyB0ZXh0OiBg4pSUJHtcIuKUgFwiLnJlcGVhdCh0aGlzLnJlYWxXaWR0aFswXSAtIDIpfeKUtGAsIHN0eWxlOiB7IGNvbG9yOiB0aGlzLnNlbGVjdGVkID09PSAwID8gdGhpcy5vcHRpb25zLmJveENvbG9yIDogXCJ3aGl0ZVwiLCBib2xkOiB0aGlzLmJveEJvbGQgfSB9LCB7IHRleHQ6IGAke1wi4pSAXCIucmVwZWF0KHRoaXMucmVhbFdpZHRoWzFdIC0gMSl94pSYYCwgc3R5bGU6IHsgY29sb3I6IHRoaXMuc2VsZWN0ZWQgPT09IDEgPyB0aGlzLm9wdGlvbnMuYm94Q29sb3IgOiBcIndoaXRlXCIsIGJvbGQ6IHRoaXMuYm94Qm9sZCB9IH0pXG4gICAgICAgICAgICB9IGVsc2UgeyAvLyBEcmF3IHBhZ2VzIHdpdGhvdXQgYm9yZGVyc1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc2hvd1RpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuQ00uU2NyZWVuLndyaXRlKHsgdGV4dDogYCR7dHJpbW1lZFRpdGxlWzBdfSR7XCIgXCIucmVwZWF0KHRoaXMucmVhbFdpZHRoWzBdIC0gdHJpbW1lZFRpdGxlWzBdLmxlbmd0aCl9JHt0cmltbWVkVGl0bGVbMV19YCwgc3R5bGU6IHsgY29sb3I6IHRoaXMuc2VsZWN0ZWQgPT09IDAgPyB0aGlzLm9wdGlvbnMuYm94Q29sb3IgOiBcIndoaXRlXCIsIGJvbGQ6IHRoaXMuYm94Qm9sZCB9IH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF4UGFnZUhlaWdodDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhd0xpbmUocDFbaV0gfHwgW3sgdGV4dDogXCJcIiwgc3R5bGU6IHsgY29sb3I6IFwiXCIgfSB9XSwgcDJbaV0gfHwgW3sgdGV4dDogXCJcIiwgc3R5bGU6IHsgY29sb3I6IFwiXCIgfSB9XSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IERvdWJsZUxheW91dCJdfQ== |
@@ -6,12 +6,12 @@ import { BackgroundColor, ForegroundColor } from "chalk"; | ||
* @typedef {Object} StyleObject | ||
* @property {chalk.ForegroundColor | ""} [color] - The color of the text taken from the chalk library. | ||
* @property {chalk.BackgroundColor | ""} [backgroundColor] - The background color of the text taken from the chalk library. | ||
* @property {boolean} [italic] - If the text is italic. | ||
* @property {boolean} [bold] - If the text is bold. | ||
* @property {boolean} [dim] - If the text is dim. | ||
* @property {boolean} [underline] - If the text is underlined. | ||
* @property {boolean} [inverse] - If the text is inverse. | ||
* @property {boolean} [hidden] - If the text is hidden. | ||
* @property {boolean} [strikethrough] - If the text is strikethrough. | ||
* @property {boolean} [overline] - If the text is overlined. | ||
* @prop {chalk.ForegroundColor | ""} [color] - The color of the text taken from the chalk library. | ||
* @prop {chalk.BackgroundColor | ""} [backgroundColor] - The background color of the text taken from the chalk library. | ||
* @prop {boolean} [italic] - If the text is italic. | ||
* @prop {boolean} [bold] - If the text is bold. | ||
* @prop {boolean} [dim] - If the text is dim. | ||
* @prop {boolean} [underline] - If the text is underlined. | ||
* @prop {boolean} [inverse] - If the text is inverse. | ||
* @prop {boolean} [hidden] - If the text is hidden. | ||
* @prop {boolean} [strikethrough] - If the text is strikethrough. | ||
* @prop {boolean} [overline] - If the text is overlined. | ||
* | ||
@@ -39,4 +39,4 @@ * @example const textStyle = { color: "red", backgroundColor: "blue", bold: true, italic: true } | ||
* @typedef {Object} StyledElement | ||
* @property {string} text - The text of the styled text. | ||
* @property {StyleObject} style - The style of the styled text. | ||
* @prop {string} text - The text of the styled text. | ||
* @prop {StyleObject} style - The style of the styled text. | ||
* | ||
@@ -56,13 +56,13 @@ * @example const styledText = { text: "Hello", style: { color: "red", backgroundColor: "blue", bold: true, italic: true } } | ||
* @typedef {Object} SimplifiedStyledElement | ||
* @property {string} text - The text of the styled text. | ||
* @property {chalk.ForegroundColor | ""} [color] - The color of the text taken from the chalk library. | ||
* @property {chalk.BackgroundColor | ""} [backgroundColor] - The background color of the text taken from the chalk library. | ||
* @property {boolean} [italic] - If the text is italic. | ||
* @property {boolean} [bold] - If the text is bold. | ||
* @property {boolean} [dim] - If the text is dim. | ||
* @property {boolean} [underline] - If the text is underlined. | ||
* @property {boolean} [inverse] - If the text is inverse. | ||
* @property {boolean} [hidden] - If the text is hidden. | ||
* @property {boolean} [strikethrough] - If the text is strikethrough. | ||
* @property {boolean} [overline] - If the text is overlined. | ||
* @prop {string} text - The text of the styled text. | ||
* @prop {chalk.ForegroundColor | ""} [color] - The color of the text taken from the chalk library. | ||
* @prop {chalk.BackgroundColor | ""} [backgroundColor] - The background color of the text taken from the chalk library. | ||
* @prop {boolean} [italic] - If the text is italic. | ||
* @prop {boolean} [bold] - If the text is bold. | ||
* @prop {boolean} [dim] - If the text is dim. | ||
* @prop {boolean} [underline] - If the text is underlined. | ||
* @prop {boolean} [inverse] - If the text is inverse. | ||
* @prop {boolean} [hidden] - If the text is hidden. | ||
* @prop {boolean} [strikethrough] - If the text is strikethrough. | ||
* @prop {boolean} [overline] - If the text is overlined. | ||
* | ||
@@ -173,1 +173,2 @@ * @example const textStyle = { color: "red", backgroundColor: "blue", bold: true, italic: true } | ||
export default PageBuilder; | ||
//# sourceMappingURL=PageBuilder.d.ts.map |
@@ -11,5 +11,2 @@ /** | ||
export class PageBuilder { | ||
rowsPerPage; | ||
scrollIndex; | ||
content; | ||
constructor(rowsPerPage = 100) { | ||
@@ -151,2 +148,2 @@ this.rowsPerPage = rowsPerPage; | ||
export default PageBuilder; | ||
//# sourceMappingURL=PageBuilder.js.map | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFnZUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9QYWdlQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF3RkE7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLE9BQU8sV0FBVztJQUtwQixZQUFtQixXQUFXLEdBQUcsR0FBRztRQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQTtRQUU5Qjs7O1dBR0c7UUFDSCxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQTtRQUVwQjs7O1dBR0c7UUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQTtJQUNyQixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxNQUFNLENBQUMsR0FBRyxJQUErQjtRQUM1QyxnRUFBZ0U7UUFDaEUsTUFBTSxJQUFJLEdBQW9CLEVBQUUsQ0FBQTtRQUNoQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNsQyxNQUFNLEdBQUcsR0FBNEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQzVDLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ04sSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO2dCQUNkLEtBQUssRUFBRTtvQkFDSCxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUztvQkFDeEMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7b0JBQy9CLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTO29CQUMzQyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUks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OlsiaW1wb3J0IHsgQmFja2dyb3VuZENvbG9yLCBGb3JlZ3JvdW5kQ29sb3IgfSBmcm9tIFwiY2hhbGtcIlxuXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFRoZSB0eXBlIGNvbnRhaW5pbmcgYWxsIHRoZSBwb3NzaWJsZSBzdHlsZXMgZm9yIHRoZSB0ZXh0LlxuICogXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTdHlsZU9iamVjdFxuICogQHByb3Age2NoYWxrLkZvcmVncm91bmRDb2xvciB8IFwiXCJ9IFtjb2xvcl0gLSBUaGUgY29sb3Igb2YgdGhlIHRleHQgdGFrZW4gZnJvbSB0aGUgY2hhbGsgbGlicmFyeS5cbiAqIEBwcm9wIHtjaGFsay5CYWNrZ3JvdW5kQ29sb3IgfCBcIlwifSBbYmFja2dyb3VuZENvbG9yXSAtIFRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSB0ZXh0IHRha2VuIGZyb20gdGhlIGNoYWxrIGxpYnJhcnkuXG4gKiBAcHJvcCB7Ym9vbGVhbn0gW2l0YWxpY10gLSBJZiB0aGUgdGV4dCBpcyBpdGFsaWMuXG4gKiBAcHJvcCB7Ym9vbGVhbn0gW2JvbGRdIC0gSWYgdGhlIHRleHQgaXMgYm9sZC5cbiAqIEBwcm9wIHtib29sZWFufSBbZGltXSAtIElmIHRoZSB0ZXh0IGlzIGRpbS5cbiAqIEBwcm9wIHtib29sZWFufSBbdW5kZXJsaW5lXSAtIElmIHRoZSB0ZXh0IGlzIHVuZGVybGluZWQuXG4gKiBAcHJvcCB7Ym9vbGVhbn0gW2ludmVyc2VdIC0gSWYgdGhlIHRleHQgaXMgaW52ZXJzZS5cbiAqIEBwcm9wIHtib29sZWFufSBbaGlkZGVuXSAtIElmIHRoZSB0ZXh0IGlzIGhpZGRlbi5cbiAqIEBwcm9wIHtib29sZWFufSBbc3RyaWtldGhyb3VnaF0gLSBJZiB0aGUgdGV4dCBpcyBzdHJpa2V0aHJvdWdoLlxuICogQHByb3Age2Jvb2xlYW59IFtvdmVybGluZV0gLSBJZiB0aGUgdGV4dCBpcyBvdmVybGluZWQuXG4gKiBcbiAqIEBleGFtcGxlIGNvbnN0IHRleHRTdHlsZSA9IHsgY29sb3I6IFwicmVkXCIsIGJhY2tncm91bmRDb2xvcjogXCJibHVlXCIsIGJvbGQ6IHRydWUsIGl0YWxpYzogdHJ1ZSB9XG4gKlxuICogQGV4cG9ydFxuICogQGludGVyZmFjZSBTdHlsZU9iamVjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0eWxlT2JqZWN0IHtcbiAgICBjb2xvcj86IEZvcmVncm91bmRDb2xvciB8IFwiXCI7XG4gICAgYmc/OiBCYWNrZ3JvdW5kQ29sb3IgfCBcIlwiO1xuICAgIGl0YWxpYz86IGJvb2xlYW47XG4gICAgYm9sZD86IGJvb2xlYW47XG4gICAgZGltPzogYm9vbGVhbjtcbiAgICB1bmRlcmxpbmU/OiBib29sZWFuO1xuICAgIGludmVyc2U/OiBib29sZWFuO1xuICAgIGhpZGRlbj86IGJvb2xlYW47XG4gICAgc3RyaWtldGhyb3VnaD86IGJvb2xlYW47XG4gICAgb3ZlcmxpbmU/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUaGUgdHlwZSBvZiB0aGUgc2luZ2xlIHN0eWxlZCB0ZXh0LCBzdG9yZWQgaW4gYSBsaW5lIG9mIHRoZSBQYWdlQnVpbGRlci5cbiAqIFxuICogQHR5cGVkZWYge09iamVjdH0gU3R5bGVkRWxlbWVudFxuICogQHByb3Age3N0cmluZ30gdGV4dCAtIFRoZSB0ZXh0IG9mIHRoZSBzdHlsZWQgdGV4dC5cbiAqIEBwcm9wIHtTdHlsZU9iamVjdH0gc3R5bGUgLSBUaGUgc3R5bGUgb2YgdGhlIHN0eWxlZCB0ZXh0LlxuICogXG4gKiBAZXhhbXBsZSBjb25zdCBzdHlsZWRUZXh0ID0geyB0ZXh0OiBcIkhlbGxvXCIsIHN0eWxlOiB7IGNvbG9yOiBcInJlZFwiLCBiYWNrZ3JvdW5kQ29sb3I6IFwiYmx1ZVwiLCBib2xkOiB0cnVlLCBpdGFsaWM6IHRydWUgfSB9XG4gKlxuICogQGV4cG9ydFxuICogQGludGVyZmFjZSBTdHlsZWRFbGVtZW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3R5bGVkRWxlbWVudCB7XG4gICAgdGV4dDogc3RyaW5nO1xuICAgIHN0eWxlOiBTdHlsZU9iamVjdDtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVGhlIHR5cGUgY29udGFpbmluZyBhbGwgdGhlIHBvc3NpYmxlIHN0eWxlcyBmb3IgdGhlIHRleHQgYW5kIHRoZSB0ZXh0IG9uIHRoZSBzYW1lIGxldmVsLiBJdCdzIHVzZWQgb24gdGhlIGhpZ2hlciBsZXZlbC5cbiAqIFxuICogQHR5cGVkZWYge09iamVjdH0gU2ltcGxpZmllZFN0eWxlZEVsZW1lbnRcbiAqIEBwcm9wIHtzdHJpbmd9IHRleHQgLSBUaGUgdGV4dCBvZiB0aGUgc3R5bGVkIHRleHQuXG4gKiBAcHJvcCB7Y2hhbGsuRm9yZWdyb3VuZENvbG9yIHwgXCJcIn0gW2NvbG9yXSAtIFRoZSBjb2xvciBvZiB0aGUgdGV4dCB0YWtlbiBmcm9tIHRoZSBjaGFsayBsaWJyYXJ5LlxuICogQHByb3Age2NoYWxrLkJhY2tncm91bmRDb2xvciB8IFwiXCJ9IFtiYWNrZ3JvdW5kQ29sb3JdIC0gVGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhlIHRleHQgdGFrZW4gZnJvbSB0aGUgY2hhbGsgbGlicmFyeS5cbiAqIEBwcm9wIHtib29sZWFufSBbaXRhbGljXSAtIElmIHRoZSB0ZXh0IGlzIGl0YWxpYy5cbiAqIEBwcm9wIHtib29sZWFufSBbYm9sZF0gLSBJZiB0aGUgdGV4dCBpcyBib2xkLlxuICogQHByb3Age2Jvb2xlYW59IFtkaW1dIC0gSWYgdGhlIHRleHQgaXMgZGltLlxuICogQHByb3Age2Jvb2xlYW59IFt1bmRlcmxpbmVdIC0gSWYgdGhlIHRleHQgaXMgdW5kZXJsaW5lZC5cbiAqIEBwcm9wIHtib29sZWFufSBbaW52ZXJzZV0gLSBJZiB0aGUgdGV4dCBpcyBpbnZlcnNlLlxuICogQHByb3Age2Jvb2xlYW59IFtoaWRkZW5dIC0gSWYgdGhlIHRleHQgaXMgaGlkZGVuLlxuICogQHByb3Age2Jvb2xlYW59IFtzdHJpa2V0aHJvdWdoXSAtIElmIHRoZSB0ZXh0IGlzIHN0cmlrZXRocm91Z2guXG4gKiBAcHJvcCB7Ym9vbGVhbn0gW292ZXJsaW5lXSAtIElmIHRoZSB0ZXh0IGlzIG92ZXJsaW5lZC5cbiAqIFxuICogQGV4YW1wbGUgY29uc3QgdGV4dFN0eWxlID0geyBjb2xvcjogXCJyZWRcIiwgYmFja2dyb3VuZENvbG9yOiBcImJsdWVcIiwgYm9sZDogdHJ1ZSwgaXRhbGljOiB0cnVlIH1cbiAqXG4gKiBAZXhwb3J0XG4gKiBAaW50ZXJmYWNlIFNpbXBsaWZpZWRTdHlsZWRFbGVtZW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2ltcGxpZmllZFN0eWxlZEVsZW1lbnQge1xuICAgIHRleHQ6IHN0cmluZztcbiAgICBjb2xvcj86IEZvcmVncm91bmRDb2xvciB8IFwiXCI7XG4gICAgYmc/OiBCYWNrZ3JvdW5kQ29sb3IgfCBcIlwiO1xuICAgIGl0YWxpYz86IGJvb2xlYW47XG4gICAgYm9sZD86IGJvb2xlYW47XG4gICAgZGltPzogYm9vbGVhbjtcbiAgICB1bmRlcmxpbmU/OiBib29sZWFuO1xuICAgIGludmVyc2U/OiBib29sZWFuO1xuICAgIGhpZGRlbj86IGJvb2xlYW47XG4gICAgc3RyaWtldGhyb3VnaD86IGJvb2xlYW47XG4gICAgb3ZlcmxpbmU/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEBjbGFzcyBQYWdlQnVpbGRlclxuICogQGRlc2NyaXB0aW9uIERlZmluZXMgYSBuZXcgcGFnZTpcbiAqIEl0J3MgYSBzb3J0IG9mIGNvbGxlY3Rpb24gb2Ygc3R5bGVkIHJvd3MuXG4gKiBAcGFyYW0ge251bWJlcn0gcm93c1BlclBhZ2UgLSBUaGUgbnVtYmVyIG9mIHJvd3MgcGVyIHBhZ2UuIERlZmF1bHQgaXMgMTAwLiBVc2VmdWwgZm9yIHNjcm9sbGluZy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgUGFnZUJ1aWxkZXJcbiAqL1xuZXhwb3J0IGNsYXNzIFBhZ2VCdWlsZGVyIHtcbiAgICByb3dzUGVyUGFnZTogbnVtYmVyXG4gICAgc2Nyb2xsSW5kZXg6IG51bWJlclxuICAgIGNvbnRlbnQ6IFN0eWxlZEVsZW1lbnRbXVtdXG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3Iocm93c1BlclBhZ2UgPSAxMDApIHtcbiAgICAgICAgdGhpcy5yb3dzUGVyUGFnZSA9IHJvd3NQZXJQYWdlXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBjb25zdCB7bnVtYmVyfSBzY3JvbGxJbmRleCAtIFRoZSBpbmRleCBvZiB0aGUgc2Nyb2xsIGJhci5cbiAgICAgICAgICogQG1lbWJlck9mIFBhZ2VCdWlsZGVyIFxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5zY3JvbGxJbmRleCA9IDBcblxuICAgICAgICAvKipcbiAgICAgICAgICogQGNvbnN0IHtBcnJheTxBcnJheTxvYmplY3Q+Pn0gY29udGVudCBUaGUgY29udGVudCBvZiB0aGUgcGFnZS5cbiAgICAgICAgICogQG1lbWJlck9mIFBhZ2VCdWlsZGVyXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmNvbnRlbnQgPSBbXVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBZGQgYSBuZXcgc3R5bGVkIHJvdyB0byB0aGUgcGFnZS5cbiAgICAgKiBAcGFyYW0ge3BhcmFtZXRlcnM8b2JqZWN0Pn0gcm93IC0gVGhlIHN0eWxlZCByb3cgdG8gYWRkLlxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxuICAgICAqIEBtZW1iZXJPZiBQYWdlQnVpbGRlclxuICAgICAqIEBleGFtcGxlXG4gICAgICogcGFnZS5hZGRSb3coeyB0ZXh0OiAnSGVsbG8gV29ybGQnLCBjb2xvcjogJ3doaXRlJyB9KVxuICAgICAqIHBhZ2UuYWRkUm93KHsgdGV4dDogJ0hlbGxvIFdvcmxkJywgY29sb3I6ICd3aGl0ZScgfSwgeyB0ZXh0OiAnSGVsbG8gV29ybGQnLCBjb2xvcjogJ3doaXRlJyB9KVxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRSb3coLi4uYXJnczogU2ltcGxpZmllZFN0eWxlZEVsZW1lbnRbXSk6IHZvaWQge1xuICAgICAgICAvLyBlYWNoIGFyZ3VtZW50IGlzIGFuIG9iamVjdCBsaWtlIHt0ZXh0OiBzdHJpbmcsIGNvbG9yOiBzdHJpbmd9XG4gICAgICAgIGNvbnN0IF9yb3c6IFN0eWxlZEVsZW1lbnRbXSA9IFtdXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgYXJnOiBTaW1wbGlmaWVkU3R5bGVkRWxlbWVudCA9IGFyZ3NbaV1cbiAgICAgICAgICAgIF9yb3cucHVzaCh7XG4gICAgICAgICAgICAgICAgdGV4dDogYXJnLnRleHQsXG4gICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IGFyZy5jb2xvciA/IGFyZy5jb2xvciA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgYmc6IGFyZy5iZyA/IGFyZy5iZyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgaXRhbGljOiBhcmcuaXRhbGljID8gYXJnLml0YWxpYyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgYm9sZDogYXJnLmJvbGQgPyBhcmcuYm9sZCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgZGltOiBhcmcuZGltID8gYXJnLmRpbSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgdW5kZXJsaW5lOiBhcmcudW5kZXJsaW5lID8gYXJnLnVuZGVybGluZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgaW52ZXJzZTogYXJnLmludmVyc2UgPyBhcmcuaW52ZXJzZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgaGlkZGVuOiBhcmcuaGlkZGVuID8gYXJnLmhpZGRlbiA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgc3RyaWtldGhyb3VnaDogYXJnLnN0cmlrZXRocm91Z2ggPyBhcmcuc3RyaWtldGhyb3VnaCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxpbmU6IGFyZy5vdmVybGluZSA/IGFyZy5vdmVybGluZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29udGVudC5wdXNoKF9yb3cpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEFkZCBhbiBlbXB0eSByb3cgdG8gdGhlIHBhZ2UuIChsaWtlIDxiciAvPiBpbiBIVE1MKVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbY291bnQ9MV0gLSBUaGUgbnVtYmVyIG9mIGVtcHR5IHJvd3MgdG8gYWRkLlxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxuICAgICAqIEBtZW1iZXJPZiBQYWdlQnVpbGRlclxuICAgICAqIEBleGFtcGxlIHBhZ2UuYWRkRW1wdHlSb3coKVxuICAgICAqIHBhZ2UuYWRkRW1wdHlSb3coMilcbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkU3BhY2VyKGhlaWdodCA9IDEpOiB2b2lkIHtcbiAgICAgICAgaWYgKGhlaWdodCA+IDApIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGVpZ2h0OyBpKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZFJvdyh7IHRleHQ6IFwiXCIsIGNvbG9yOiBcIlwiIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmV0dXJucyB0aGUgY29udGVudCBvZiB0aGUgcGFnZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXk8QXJyYXk8b2JqZWN0Pj59XG4gICAgICogQG1lbWJlck9mIFBhZ2VCdWlsZGVyXG4gICAgICogQGV4YW1wbGUgcGFnZS5nZXRDb250ZW50KClcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q29udGVudCgpOiBTdHlsZWRFbGVtZW50W11bXSB7XG4gICAgICAgIGlmICh0aGlzLmdldFBhZ2VIZWlnaHQoKSA+IHRoaXMucm93c1BlclBhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnQuc2xpY2UodGhpcy5nZXRQYWdlSGVpZ2h0KCkgLSB0aGlzLnNjcm9sbEluZGV4IC0gdGhpcy5yb3dzUGVyUGFnZSwgdGhpcy5nZXRQYWdlSGVpZ2h0KCkgLSB0aGlzLnNjcm9sbEluZGV4KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJldHVybnMgdGhlIGhlaWdodCBvZiB0aGUgcGFnZS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgICAqIEBtZW1iZXJPZiBQYWdlQnVpbGRlclxuICAgICAqIEBleGFtcGxlIHBhZ2UuZ2V0UGFnZUhlaWdodCgpXG4gICAgICovXG4gICAgcHVibGljIGdldFBhZ2VIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudC5sZW5ndGhcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmV0dXJucyB0aGUgaGVpZ2h0IG9mIHRoZSB2aWV3ZWQgcGFnZS4gSXQgZXhjbHVkZXMgdGhlIHJvd3MgdGhhdCBhcmUgbm90IHZpc2libGUuXG4gICAgICogQHJldHVybnMge251bWJlcn1cbiAgICAgKiBAbWVtYmVyT2YgUGFnZUJ1aWxkZXJcbiAgICAgKiBAZXhhbXBsZSBwYWdlLmdldFZpZXdlZFBhZ2VIZWlnaHQoKSAvLyByZXR1cm5zIHRoZSBoZWlnaHQgb2YgdGhlIHBhZ2UgdGhhdCBpcyB2aXNpYmxlXG4gICAgICovXG4gICAgcHVibGljIGdldFZpZXdlZFBhZ2VIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q29udGVudCgpLmxlbmd0aFxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDaGFuZ2VzIHRoZSBpbmRleCBvZiB0aGUgc2Nyb2xsIGJhci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXggLSBUaGUgaW5kZXggb2YgdGhlIHNjcm9sbCBiYXIuXG4gICAgICogQHJldHVybnMge3ZvaWR9XG4gICAgICogQG1lbWJlck9mIFBhZ2VCdWlsZGVyXG4gICAgICogQGV4YW1wbGUgcGFnZS5zZXRTY3JvbGxJbmRleCgxMClcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0U2Nyb2xsSW5kZXgoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnNjcm9sbEluZGV4ID0gaW5kZXhcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ2hhbmdlcyB0aGUgbnVtYmVyIG9mIHJvd3MgcGVyIHBhZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJvd3NQZXJQYWdlIC0gVGhlIG51bWJlciBvZiByb3dzIHBlciBwYWdlLlxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxuICAgICAqIEBtZW1iZXJPZiBQYWdlQnVpbGRlclxuICAgICAqIEBleGFtcGxlIHBhZ2Uuc2V0Um93c1BlclBhZ2UoMTApXG4gICAgICovXG4gICAgcHVibGljIHNldFJvd3NQZXJQYWdlKHJwcDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMucm93c1BlclBhZ2UgPSBycHBcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5jcmVhc2VzIHRoZSBpbmRleCBvZiB0aGUgc2Nyb2xsIGJhci5cbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICAgKiBAbWVtYmVyT2YgUGFnZUJ1aWxkZXJcbiAgICAgKiBAZXhhbXBsZSBwYWdlLmluY3JlYXNlU2Nyb2xsSW5kZXgoKVxuICAgICAqL1xuICAgIHB1YmxpYyBpbmNyZWFzZVNjcm9sbEluZGV4KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zY3JvbGxJbmRleCA8IHRoaXMuZ2V0UGFnZUhlaWdodCgpIC0gdGhpcy5yb3dzUGVyUGFnZSkge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxJbmRleCsrXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVjcmVhc2VzIHRoZSBpbmRleCBvZiB0aGUgc2Nyb2xsIGJhci5cbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICAgKiBAbWVtYmVyT2YgUGFnZUJ1aWxkZXJcbiAgICAgKiBAZXhhbXBsZSBwYWdlLmluY3JlYXNlU2Nyb2xsSW5kZXgoKVxuICAgICAqL1xuICAgIHB1YmxpYyBkZWNyZWFzZVNjcm9sbEluZGV4KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zY3JvbGxJbmRleCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsSW5kZXgtLVxuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBQYWdlQnVpbGRlciJdfQ== |
@@ -7,3 +7,3 @@ /// <reference types="node" /> | ||
* @typedef {Object} StyleIndexObject | ||
* @property {[number, number]} [index] - The index of the style in the style array. | ||
* @prop {Array<number>} index - The index of the style in the style array. | ||
* | ||
@@ -19,4 +19,4 @@ * @interface StyleIndexObject | ||
* @typedef {Object} StyledElementWithIndex | ||
* @property {string} text - The text of the styled element. | ||
* @property {StyleIndexObject[]} [styleIndex] - The styles array with index. | ||
* @prop {string} text - The text of the styled element. | ||
* @prop {StyleIndexObject[]} styleIndex - The styles array with index. | ||
* | ||
@@ -121,1 +121,2 @@ * @interface StyledElementWithIndex | ||
export default Screen; | ||
//# sourceMappingURL=Screen.d.ts.map |
@@ -12,10 +12,5 @@ import { EventEmitter } from "events"; | ||
export class Screen extends EventEmitter { | ||
Terminal; | ||
width; | ||
height; | ||
buffer; | ||
cursor; | ||
currentY = 0; | ||
constructor(_Terminal) { | ||
super(); | ||
this.currentY = 0; | ||
this.Terminal = _Terminal; | ||
@@ -214,2 +209,2 @@ /** @const {number} width - The width of the screen. */ | ||
export default Screen; | ||
//# sourceMappingURL=Screen.js.map | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NyZWVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvU2NyZWVuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFDckMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFBO0FBRXpCLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFBO0FBMkJmOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyxNQUFPLFNBQVEsWUFBWTtJQVFwQyxZQUFZLFNBQTZCO1FBQ3JDLEtBQUssRUFBRSxDQUFBO1FBSFgsYUFBUSxHQUFHLENBQUMsQ0FBQTtRQUlSLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFBO1FBRXpCLHVEQUF1RDtRQUN2RCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFBO1FBRWxDLHlEQUF5RDtRQUN6RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFBO1FBRWhDLHdEQUF3RDtRQUN4RCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQTtRQUVoQixrREFBa0Q7UUFDbEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFBO0lBQ2hDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLEdBQUcsSUFBcUI7UUFDMUIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBRWYsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFBO1FBQ1osTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFBO1FBQ3hCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2xDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxD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RUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUE7U0FDdks7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBQzVCLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQTtZQUVsQix1RUFBdUU7WUFDdkUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQzNCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBVyxFQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUE7Z0JBQzdFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBVyxFQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUE7Z0JBQ3BFLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBVyxFQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUE7Z0JBQ3pFLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBVyxFQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUE7Z0JBQ25FLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBVyxFQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUE7Z0JBQ2hFLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBVyxFQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUE7Z0JBQ2xGLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBVyxFQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUE7Z0JBQy9FLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBVyxFQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUE7Z0JBQzVFLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBVyxFQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUE7Z0JBQ3pFLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBVyxFQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUE7Z0JBQzlGLFNBQVMsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENB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QyxDQUFDLENBQUE7U0FDWjthQUFNLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2hDLE9BQU8sQ0FBQyxDQUFBO1NBQ1g7YUFBTTtZQUNILE9BQU8sQ0FBQyxDQUFBO1NBQ1g7SUFDTCxDQUFDO0NBQ0o7QUFFRCxlQUFlLE1BQU0sQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gXCJldmVudHNcIlxuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiXG5pbXBvcnQgeyBTdHlsZWRFbGVtZW50LCBTdHlsZU9iamVjdCB9IGZyb20gXCIuL1BhZ2VCdWlsZGVyLmpzXCJcbmNoYWxrLmxldmVsID0gMVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUaGUgdHlwZSBjb250YWluaW5nIGFsbCB0aGUgcG9zc2libGUgc3R5bGVzIGZvciB0aGUgdGV4dCBhbmQgdGhlIGluZGV4IGFycmF5LlxuICogQHR5cGVkZWYge09iamVjdH0gU3R5bGVJbmRleE9iamVjdFxuICogQHByb3Age0FycmF5PG51bWJlcj59IGluZGV4IC0gVGhlIGluZGV4IG9mIHRoZSBzdHlsZSBpbiB0aGUgc3R5bGUgYXJyYXkuXG4gKiBcbiAqIEBpbnRlcmZhY2UgU3R5bGVJbmRleE9iamVjdFxuICogQGV4dGVuZHMge1N0eWxlT2JqZWN0fVxuICovXG5pbnRlcmZhY2UgU3R5bGVJbmRleE9iamVjdCBleHRlbmRzIFN0eWxlT2JqZWN0IHtcbiAgICBpbmRleDogW251bWJlciwgbnVtYmVyXTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVGhlIHR5cGUgY29udGFpbmluZyBhbGwgdGhlIHBvc3NpYmxlIHN0eWxlcyBmb3IgdGhlIHRleHQgYW5kIHRoZSBpbmRleCBhcnJheSBhbmQgdGhlIHRleHQuXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTdHlsZWRFbGVtZW50V2l0aEluZGV4XG4gKiBAcHJvcCB7c3RyaW5nfSB0ZXh0IC0gVGhlIHRleHQgb2YgdGhlIHN0eWxlZCBlbGVtZW50LlxuICogQHByb3Age1N0eWxlSW5kZXhPYmplY3RbXX0gc3R5bGVJbmRleCAtIFRoZSBzdHlsZXMgYXJyYXkgd2l0aCBpbmRleC5cbiAqIFxuICogQGludGVyZmFjZSBTdHlsZWRFbGVtZW50V2l0aEluZGV4XG4gKi9cbmludGVyZmFjZSBTdHlsZWRFbGVtZW50V2l0aEluZGV4IHtcbiAgICB0ZXh0OiBzdHJpbmc7XG4gICAgc3R5bGVJbmRleDogU3R5bGVJbmRleE9iamVjdFtdO1xufVxuXG4vKipcbiAqIEBjbGFzcyBTY3JlZW5cbiAqIEBkZXNjcmlwdGlvbiBUaGlzIGNsYXNzIGlzIHVzZWQgdG8gbWFuYWdlIHRoZSBzY3JlZW4gYnVmZmVyLlxuICogQHBhcmFtIHtvYmplY3R9IFRlcm1pbmFsIC0gVGhlIHRlcm1pbmFsIG9iamVjdCAocHJvY2Vzcy5zdGRvdXQpLlxuICogQGV4dGVuZHMgRXZlbnRFbWl0dGVyXG4gKiBAZXhhbXBsZSBjb25zdCBzY3JlZW4gPSBuZXcgU2NyZWVuKHByb2Nlc3Muc3Rkb3V0KVxuICovXG5leHBvcnQgY2xhc3MgU2NyZWVuIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgICBUZXJtaW5hbDogTm9kZUpTLldyaXRlU3RyZWFtXG4gICAgd2lkdGg6IG51bWJlclxuICAgIGhlaWdodDogbnVtYmVyXG4gICAgYnVmZmVyOiBTdHlsZWRFbGVtZW50V2l0aEluZGV4W11cbiAgICBjdXJzb3I6IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfVxuICAgIGN1cnJlbnRZID0gMFxuXG4gICAgY29uc3RydWN0b3IoX1Rlcm1pbmFsOiBOb2RlSlMuV3JpdGVTdHJlYW0pIHtcbiAgICAgICAgc3VwZXIoKVxuICAgICAgICB0aGlzLlRlcm1pbmFsID0gX1Rlcm1pbmFsXG5cbiAgICAgICAgLyoqIEBjb25zdCB7bnVtYmVyfSB3aWR0aCAtIFRoZSB3aWR0aCBvZiB0aGUgc2NyZWVuLiAqL1xuICAgICAgICB0aGlzLndpZHRoID0gdGhpcy5UZXJtaW5hbC5jb2x1bW5zXG5cbiAgICAgICAgLyoqIEBjb25zdCB7bnVtYmVyfSBoZWlnaHQgLSBUaGUgaGVpZ2h0IG9mIHRoZSBzY3JlZW4uICovXG4gICAgICAgIHRoaXMuaGVpZ2h0ID0gdGhpcy5UZXJtaW5hbC5yb3dzXG5cbiAgICAgICAgLyoqIEBjb25zdCB7QXJyYXl9IGJ1ZmZlciAtIFRoZSBzY3JlZW4gYnVmZmVyIG9iamVjdC4gKi9cbiAgICAgICAgdGhpcy5idWZmZXIgPSBbXVxuXG4gICAgICAgIC8qKiBAY29uc3Qge29iamVjdH0gY3Vyc29yIC0gVGhlIGN1cnNvciBvYmplY3QuICovXG4gICAgICAgIHRoaXMuY3Vyc29yID0geyB4OiAwLCB5OiAwIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZXRob2QgaXMgdXNlZCB0byB3cml0ZSBvciBvdmVyd3JpdGUgYSByb3cgaW4gdGhlIHNjcmVlbiBidWZmZXIgYXQgYSBzcGVjaWZpYyBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge2FyZ3VtZW50czxvYmplY3Q+fSBhcmdzIC0gVGhlIHJvdyB0byB3cml0ZS5cbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICAgKiBAbWVtYmVyT2YgU2NyZWVuXG4gICAgICogQGV4YW1wbGUgc2NyZWVuLndyaXRlKHsgdGV4dDogJ0hlbGxvIFdvcmxkJywgY29sb3I6ICd3aGl0ZScgfSlcbiAgICBzY3JlZW4ud3JpdGUoeyB0ZXh0OiAnSGVsbG8gV29ybGQnLCBjb2xvcjogJ3doaXRlJyB9LCB7IHRleHQ6ICdIZWxsbyBXb3JsZCcsIGNvbG9yOiAnd2hpdGUnIH0pXG4gICAgICovXG4gICAgd3JpdGUoLi4uYXJnczogU3R5bGVkRWxlbWVudFtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudFkrK1xuXG4gICAgICAgIGxldCByb3cgPSBcIlwiXG4gICAgICAgIGNvbnN0IG5ld1N0eWxlSW5kZXggPSBbXVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGFyZyA9IGFyZ3NbaV1cbiAgICAgICAgICAgIGlmIChhcmcudGV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdHh0ID0gYXJnLnRleHQudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgIGNvbnN0IHN0eWxlOiBTdHlsZUluZGV4T2JqZWN0ID0geyAuLi5hcmcuc3R5bGUsIGluZGV4OiBbcm93Lmxlbmd0aCwgcm93Lmxlbmd0aCArIHR4dC5sZW5ndGhdIH1cbiAgICAgICAgICAgICAgICBuZXdTdHlsZUluZGV4LnB1c2goc3R5bGUpXG4gICAgICAgICAgICAgICAgcm93ICs9IHR4dFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdHlsZUluZGV4ID0gdGhpcy5idWZmZXJbdGhpcy5jdXJzb3IueV0uc3R5bGVJbmRleFxuXG4gICAgICAgIC8vIE5vdyByZWNhbGN1bGF0ZSB0aGUgc3R5bGVJbmRleCBmb3IgdGhlIGN1cnJlbnQgcm93IG1peGluZyB0aGUgb2xkIG9uZSB3aXRoIHRoZSBuZXcgb25lXG4gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBzdHlsZUluZGV4IG1lcmdpbmcgdGhlIG9sZCBvbmUgd2l0aCB0aGUgbmV3IG9uZVxuICAgICAgICBjb25zdCBtZXJnZWRTdHlsZUluZGV4ID0gdGhpcy5tZXJnZVN0eWxlcyhuZXdTdHlsZUluZGV4LCBjdXJyZW50U3R5bGVJbmRleCwgdGhpcy5jdXJzb3IueCwgcm93Lmxlbmd0aClcblxuICAgICAgICBpZiAodGhpcy5jdXJzb3IueSA8IHRoaXMuYnVmZmVyLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIHRoaXMuYnVmZmVyW3RoaXMuY3Vyc29yLnldLnN0eWxlSW5kZXggPSBtZXJnZWRTdHlsZUluZGV4XG4gICAgICAgICAgICB0aGlzLmJ1ZmZlclt0aGlzLmN1cnNvci55XS50ZXh0ID0gdGhpcy5yZXBsYWNlQXQodGhpcy5idWZmZXJbdGhpcy5jdXJzb3IueV0udGV4dCwgdGhpcy5jdXJzb3IueCwgcm93KVxuICAgICAgICAgICAgdGhpcy5jdXJzb3JUbygwLCB0aGlzLmN1cnNvci55ICsgMSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGNoYW5nZSB0aGUgY3Vyc29yIHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4IC0gVGhlIHggcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkgLSBUaGUgeSBwb3NpdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICAgKiBAbWVtYmVyT2YgU2NyZWVuXG4gICAgICogQGV4YW1wbGUgc2NyZWVuLmN1cnNvclRvKDAsIDApXG4gICAgICovXG4gICAgY3Vyc29yVG8oeDogbnVtYmVyLCB5OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJzb3IueCA9IHhcbiAgICAgICAgdGhpcy5jdXJzb3IueSA9IHlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZXRob2QgaXMgdXNlZCB0byBjaGFuZ2UgdGhlIFRlcm1pbmFsIGN1cnNvciBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0geCAtIFRoZSB4IHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5IC0gVGhlIHkgcG9zaXRpb24uXG4gICAgICogQHJldHVybnMge3ZvaWR9XG4gICAgICogQG1lbWJlck9mIFNjcmVlblxuICAgICAqIEBleGFtcGxlIHNjcmVlbi5tb3ZlQ3Vyc29yKDAsIDApXG4gICAgICovXG4gICAgbW92ZUN1cnNvcih4OiBudW1iZXIsIHk6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLlRlcm1pbmFsLmN1cnNvclRvKHgsIHkpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gY2xlYXIgdGhlIHNjcmVlbi4gSXQgZmlsbHMgdGhlIHNjcmVlbiBidWZmZXIgd2l0aCBlbXB0eSByb3dzIHdpdGggdGhlIHNpemUgb2YgdGhlIHNjcmVlbi5cbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICAgKiBAbWVtYmVyT2YgU2NyZWVuXG4gICAgICogQGV4YW1wbGUgc2NyZWVuLmNsZWFyKClcbiAgICAgKi9cbiAgICB1cGRhdGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3Vyc29yVG8oMCwgMClcbiAgICAgICAgdGhpcy53aWR0aCA9IHRoaXMuVGVybWluYWwuY29sdW1uc1xuICAgICAgICB0aGlzLmhlaWdodCA9IHRoaXMuVGVybWluYWwucm93c1xuICAgICAgICB0aGlzLmJ1ZmZlciA9IFtdXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5UZXJtaW5hbC5yb3dzOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuYnVmZmVyW2ldID0geyB0ZXh0OiBcIiBcIi5yZXBlYXQodGhpcy5UZXJtaW5hbC5jb2x1bW5zKSwgc3R5bGVJbmRleDogW3sgY29sb3I6IFwiZ3JheVwiLCBiZzogXCJcIiwgaXRhbGljOiBmYWxzZSwgYm9sZDogZmFsc2UsIGluZGV4OiBbMCwgdGhpcy5UZXJtaW5hbC5jb2x1bW5zXSB9XSB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZXRob2QgaXMgdXNlZCB0byBwcmludCB0aGUgc2NyZWVuIGJ1ZmZlciB0byB0aGUgdGVybWluYWwuIEl0IGFsc28gY29udmVydHMgdGhlIHN0eWxlcyB0byB0aGUgdGVybWluYWwgZm9ybWF0IHVzaW5nIENoYWxrLlxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxuICAgICAqIEBtZW1iZXJPZiBTY3JlZW5cbiAgICAgKiBAZXhhbXBsZSBzY3JlZW4ucHJpbnQoKVxuICAgICAqL1xuICAgIHByaW50KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ1ZmZlci5mb3JFYWNoKChyb3csIGkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuVGVybWluYWwuY3Vyc29yVG8oMCwgaSlcbiAgICAgICAgICAgIGxldCBvdXRTdHJpbmcgPSBcIlwiXG5cbiAgICAgICAgICAgIC8vIGNvbnZlcnQgc3R5bGVJbmRleCB0byBjaGFsayBmdW5jdGlvbnMgYW5kIGFwcGx5IHRoZW0gdG8gdGhlIHJvdyB0ZXh0XG4gICAgICAgICAgICByb3cuc3R5bGVJbmRleC5mb3JFYWNoKHN0eWxlID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb2xvciA9IHN0eWxlLmNvbG9yID8gY2hhbGtbc3R5bGUuY29sb3JdIDogKF9pbjogc3RyaW5nKTogc3RyaW5nID0+IF9pblxuICAgICAgICAgICAgICAgIGNvbnN0IGJnID0gc3R5bGUuYmcgPyBjaGFsa1tzdHlsZS5iZ10gOiAoX2luOiBzdHJpbmcpOiBzdHJpbmcgPT4gX2luXG4gICAgICAgICAgICAgICAgY29uc3QgaXRhbGljID0gc3R5bGUuaXRhbGljID8gY2hhbGsuaXRhbGljIDogKF9pbjogc3RyaW5nKTogc3RyaW5nID0+IF9pblxuICAgICAgICAgICAgICAgIGNvbnN0IGJvbGQgPSBzdHlsZS5ib2xkID8gY2hhbGsuYm9sZCA6IChfaW46IHN0cmluZyk6IHN0cmluZyA9PiBfaW5cbiAgICAgICAgICAgICAgICBjb25zdCBkaW0gPSBzdHlsZS5kaW0gPyBjaGFsay5kaW0gOiAoX2luOiBzdHJpbmcpOiBzdHJpbmcgPT4gX2luXG4gICAgICAgICAgICAgICAgY29uc3QgdW5kZXJsaW5lID0gc3R5bGUudW5kZXJsaW5lID8gY2hhbGsudW5kZXJsaW5lIDogKF9pbjogc3RyaW5nKTogc3RyaW5nID0+IF9pblxuICAgICAgICAgICAgICAgIGNvbnN0IG92ZXJsaW5lID0gc3R5bGUub3ZlcmxpbmUgPyBjaGFsay5vdmVybGluZSA6IChfaW46IHN0cmluZyk6IHN0cmluZyA9PiBfaW5cbiAgICAgICAgICAgICAgICBjb25zdCBpbnZlcnNlID0gc3R5bGUuaW52ZXJzZSA/IGNoYWxrLmludmVyc2UgOiAoX2luOiBzdHJpbmcpOiBzdHJpbmcgPT4gX2luXG4gICAgICAgICAgICAgICAgY29uc3QgaGlkZGVuID0gc3R5bGUuaGlkZGVuID8gY2hhbGsuaGlkZGVuIDogKF9pbjogc3RyaW5nKTogc3RyaW5nID0+IF9pblxuICAgICAgICAgICAgICAgIGNvbnN0IHN0cmlrZXRocm91Z2ggPSBzdHlsZS5zdHJpa2V0aHJvdWdoID8gY2hhbGsuc3RyaWtldGhyb3VnaCA6IChfaW46IHN0cmluZyk6IHN0cmluZyA9PiBfaW5cbiAgICAgICAgICAgICAgICBvdXRTdHJpbmcgKz0gY29sb3IoYmcoaXRhbGljKGJvbGQoZGltKHVuZGVybGluZShvdmVybGluZShpbnZlcnNlKGhpZGRlbihzdHJpa2V0aHJvdWdoKHJvdy50ZXh0LnN1YnN0cmluZyhzdHlsZS5pbmRleFswXSwgc3R5bGUuaW5kZXhbMV0pKSkpKSkpKSkpKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHRoaXMuVGVybWluYWwud3JpdGUob3V0U3RyaW5nKVxuICAgICAgICB9KVxuICAgICAgICB0aGlzLlRlcm1pbmFsLmNsZWFyU2NyZWVuRG93bigpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gaW5zZXJ0IGEgc3Vic3RyaW5nIGludG8gYSBzdHJpbmcgYXQgYSBzcGVjaWZpYyBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyIC0gVGhlIHN0cmluZyB0byBpbnNlcnQgaW50by5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXggLSBUaGUgcG9zaXRpb24gdG8gaW5zZXJ0IHRoZSBzdWJzdHJpbmcuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHJlcGxhY2VtZW50IC0gVGhlIHN1YnN0cmluZyB0byBpbnNlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ31cbiAgICAgKiBAbWVtYmVyT2YgU2NyZWVuXG4gICAgICogQGV4YW1wbGUgc2NyZWVuLnJlcGxhY2VBdCgnSGVsbG8gTHVjYScsIDYsICdFbGlhJykgLy8gcmV0dXJucyAnSGVsbG8gRWxpYSdcbiAgICAgKi9cbiAgICByZXBsYWNlQXQoc3RyOiBzdHJpbmcsIGluZGV4OiBudW1iZXIsIHJlcGxhY2VtZW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gc3RyLnN1YnN0cmluZygwLCBpbmRleCkgKyByZXBsYWNlbWVudCArIHN0ci5zdWJzdHJpbmcoaW5kZXggKyByZXBsYWNlbWVudC5sZW5ndGgpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gbWVyZ2UgdHdvIHN0eWxlSW5kZXggYXJyYXlzIGludG8gb25lLiBJdCBhbHNvIHJlY2FsY3VsYXRlcyB0aGUgaW5kZXhlcyBmb3IgdGhlIG5ldyByb3cuXG4gICAgICogQHBhcmFtIHtBcnJheTxTdHlsZUluZGV4T2JqZWN0Pn0gbmV3U3R5bGVJbmRleCAtIFRoZSBuZXcgc3R5bGVJbmRleCBhcnJheS5cbiAgICAgKiBAcGFyYW0ge0FycmF5PFN0eWxlSW5kZXhPYmplY3Q+fSBjdXJyZW50U3R5bGVJbmRleCAtIFRoZSBjdXJyZW50IHN0eWxlSW5kZXggYXJyYXkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0SW5kZXggLSBUaGUgc3RhcnQgaW5kZXggb2YgdGhlIG5ldyBzdHlsZUluZGV4IGFycmF5IChVc3VhbGx5IHRoZSBjdXJzb3IueCkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG5ld1NpemUgLSBUaGUgbmV3IHNpemUgb2YgdGhlIHN0cmluZy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXk8U3R5bGVJbmRleE9iamVjdD59XG4gICAgICogQG1lbWJlck9mIFNjcmVlblxuICAgICAqIEBleGFtcGxlIHNjcmVlbi5tZXJnZVN0eWxlcyhbeyBjb2xvcjogJ3JlZCcsIGJnOiAnYmxhY2snLCBpdGFsaWM6IGZhbHNlLCBib2xkOiBmYWxzZSwgaW5kZXg6IFswLCA1XSB9LCB7IGNvbG9yOiAnd2hpdGUnLCBiZzogJ2JsYWNrJywgaXRhbGljOiBmYWxzZSwgYm9sZDogZmFsc2UsIGluZGV4OiBbNiwgMTBdIH1dLCBbeyBjb2xvcjogJ21hZ2VudGEnLCBiZzogJ2JsYWNrJywgaXRhbGljOiBmYWxzZSwgYm9sZDogZmFsc2UsIGluZGV4OiBbMCwgMzBdIH1dLCA1LCAxNSlcbiAgICAgKiByZXR1cm5zIFt7IGNvbG9yOiAnbWFnZW50YScsIGJnOiAnYmxhY2snLCBpdGFsaWM6IGZhbHNlLCBib2xkOiBmYWxzZSwgaW5kZXg6IFswLCA0XSB9LCB7IGNvbG9yOiAncmVkJywgYmc6ICdibGFjaycsIGl0YWxpYzogZmFsc2UsIGJvbGQ6IGZhbHNlLCBpbmRleDogWzUsIDEwXSB9LCB7IGNvbG9yOiAnd2hpdGUnLCBiZzogJ2JsYWNrJywgaXRhbGljOiBmYWxzZSwgYm9sZDogZmFsc2UsIGluZGV4OiBbMTEsIDE1XSB9LCB7IGNvbG9yOiAnbWFnZW50YScsIGJnOiAnYmxhY2snLCBpdGFsaWM6IGZhbHNlLCBib2xkOiBmYWxzZSwgaW5kZXg6IFsxNiwgMzBdIH1dXG4gICAgICovXG4gICAgbWVyZ2VTdHlsZXMobmV3U3R5bGVJbmRleDogQXJyYXk8U3R5bGVJbmRleE9iamVjdD4sIGN1cnJlbnRTdHlsZUluZGV4OiBBcnJheTxTdHlsZUluZGV4T2JqZWN0Piwgc3RhcnRJbmRleDogbnVtYmVyLCBuZXdTaXplOiBudW1iZXIpOiBBcnJheTxTdHlsZUluZGV4T2JqZWN0PiB7XG4gICAgICAgIGNvbnN0IG5ld18gPSBbLi4ubmV3U3R5bGVJbmRleF1cbiAgICAgICAgY29uc3QgY3VycmVudCA9IFsuLi5jdXJyZW50U3R5bGVJbmRleF1cbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gc3RhcnRJbmRleFxuICAgICAgICBjb25zdCBfbmV3U2l6ZSA9IG5ld1NpemVcbiAgICAgICAgY29uc3QgbWVyZ2VkOiBTdHlsZUluZGV4T2JqZWN0W10gPSBbXVxuICAgICAgICBjdXJyZW50LmZvckVhY2goc3R5bGUgPT4ge1xuICAgICAgICAgICAgaWYgKHN0eWxlLmluZGV4WzBdIDwgb2Zmc2V0ICYmIHN0eWxlLmluZGV4WzFdIDwgb2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgbWVyZ2VkLnB1c2goc3R5bGUpXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0eWxlLmluZGV4WzBdIDwgb2Zmc2V0ICYmIHN0eWxlLmluZGV4WzFdID49IG9mZnNldCAmJiBzdHlsZS5pbmRleFsxXSA8PSBvZmZzZXQgKyBfbmV3U2l6ZSkge1xuICAgICAgICAgICAgICAgIG1lcmdlZC5wdXNoKHsgLi4uc3R5bGUsIGluZGV4OiBbc3R5bGUuaW5kZXhbMF0sIG9mZnNldF0gfSlcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3R5bGUuaW5kZXhbMF0gPCBvZmZzZXQgJiYgc3R5bGUuaW5kZXhbMV0gPiBvZmZzZXQgKyBfbmV3U2l6ZSkge1xuICAgICAgICAgICAgICAgIG1lcmdlZC5wdXNoKHsgLi4uc3R5bGUsIGluZGV4OiBbc3R5bGUuaW5kZXhbMF0sIG9mZnNldF0gfSlcbiAgICAgICAgICAgICAgICBtZXJnZWQucHVzaCh7IC4uLnN0eWxlLCBpbmRleDogW29mZnNldCArIF9uZXdTaXplLCBzdHlsZS5pbmRleFsxXV0gfSlcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3R5bGUuaW5kZXhbMF0gPj0gb2Zmc2V0ICYmIHN0eWxlLmluZGV4WzFdIDw9IG9mZnNldCArIF9uZXdTaXplKSB7XG4gICAgICAgICAgICAgICAgLy8gRG8gbm90aGluZ1xuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfSBlbHNlIGlmIChzdHlsZS5pbmRleFswXSA+PSBvZmZzZXQgJiYgc3R5bGUuaW5kZXhbMF0gPD0gb2Zmc2V0ICsgX25ld1NpemUgJiYgc3R5bGUuaW5kZXhbMV0gPiBvZmZzZXQgKyBfbmV3U2l6ZSkge1xuICAgICAgICAgICAgICAgIG1lcmdlZC5wdXNoKHsgLi4uc3R5bGUsIGluZGV4OiBbb2Zmc2V0ICsgX25ld1NpemUsIHN0eWxlLmluZGV4WzFdXSB9KVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfSBlbHNlIGlmIChzdHlsZS5pbmRleFswXSA+IG9mZnNldCArIF9uZXdTaXplICYmIHN0eWxlLmluZGV4WzFdID4gb2Zmc2V0ICsgX25ld1NpemUpIHtcbiAgICAgICAgICAgICAgICBtZXJnZWQucHVzaChzdHlsZSlcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZW1pdChcImVycm9yXCIsIG5ldyBFcnJvcihcIm1lcmdlU3R5bGVzOiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW5cIikpXG4gICAgICAgIH0pXG5cbiAgICAgICAgLy8gVGhlbiBhZGQgdGhlIG5ldyBzdHlsZSB0byB0aGUgbWVyZ2VkIGFycmF5XG4gICAgICAgIG5ld18uZm9yRWFjaChuZXdTdHlsZSA9PiB7XG4gICAgICAgICAgICBtZXJnZWQucHVzaCh7IC4uLm5ld1N0eWxlLCBpbmRleDogW25ld1N0eWxlLmluZGV4WzBdICsgb2Zmc2V0LCBuZXdTdHlsZS5pbmRleFsxXSArIG9mZnNldF0gfSlcbiAgICAgICAgfSlcblxuICAgICAgICAvLyBTb3J0IHRoZSBtZXJnZWQgYXJyYXkgYnkgaW5kZXhbMF1cbiAgICAgICAgbWVyZ2VkLnNvcnQodGhpcy5zb3J0QnlJbmRleClcbiAgICAgICAgcmV0dXJuIG1lcmdlZFxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIHNvcnQgYW4gYXJyYXkgb2Ygc3R5bGVJbmRleCBvYmplY3RzIGJ5IGNoaWxkIGluZGV4WzBdLlxuICAgICAqIEBwYXJhbSB7U3R5bGVJbmRleE9iamVjdH0gYSAtIFRoZSBmaXJzdCBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge1N0eWxlSW5kZXhPYmplY3R9IGIgLSBUaGUgc2Vjb25kIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9XG4gICAgICogQG1lbWJlck9mIFNjcmVlblxuICAgICAqIEBleGFtcGxlIG1lcmdlZC5zb3J0KHRoaXMuc29ydEJ5SW5kZXgpXG4gICAgICovXG4gICAgc29ydEJ5SW5kZXgoYTogU3R5bGVJbmRleE9iamVjdCwgYjogU3R5bGVJbmRleE9iamVjdCk6IG51bWJlciB7XG4gICAgICAgIGlmIChhLmluZGV4WzBdIDwgYi5pbmRleFswXSkge1xuICAgICAgICAgICAgcmV0dXJuIC0xXG4gICAgICAgIH0gZWxzZSBpZiAoYS5pbmRleFswXSA+IGIuaW5kZXhbMF0pIHtcbiAgICAgICAgICAgIHJldHVybiAxXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gMFxuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTY3JlZW4iXX0= |
@@ -98,1 +98,2 @@ /// <reference types="node" /> | ||
export default ButtonPopup; | ||
//# sourceMappingURL=ButtonPopup.d.ts.map |
@@ -23,13 +23,22 @@ import { EventEmitter } from "events"; | ||
export class ButtonPopup extends EventEmitter { | ||
CM; | ||
id; | ||
title; | ||
message; | ||
buttons; | ||
selected; | ||
visible; | ||
marginTop; | ||
startIndex; | ||
constructor(id, title = "Confirm?", message = "", buttons = ["Ok", "Cancel", "?"], visible = false) { | ||
super(); | ||
this.boxChars = { | ||
normal: { | ||
topLeft: "┌", | ||
topRight: "┐", | ||
bottomLeft: "└", | ||
bottomRight: "┘", | ||
horizontal: "─", | ||
vertical: "│" | ||
}, | ||
selected: { | ||
topLeft: "╔", | ||
topRight: "╗", | ||
bottomLeft: "╚", | ||
bottomRight: "╝", | ||
horizontal: "═", | ||
vertical: "║" | ||
} | ||
}; | ||
/** @const {ConsoleManager} CM the instance of ConsoleManager (singleton) */ | ||
@@ -53,20 +62,2 @@ this.CM = new ConsoleManager(); | ||
} | ||
boxChars = { | ||
normal: { | ||
topLeft: "┌", | ||
topRight: "┐", | ||
bottomLeft: "└", | ||
bottomRight: "┘", | ||
horizontal: "─", | ||
vertical: "│" | ||
}, | ||
selected: { | ||
topLeft: "╔", | ||
topRight: "╗", | ||
bottomLeft: "╚", | ||
bottomRight: "╝", | ||
horizontal: "═", | ||
vertical: "║" | ||
} | ||
}; | ||
/** | ||
@@ -300,2 +291,2 @@ * @description This function is used to make the ConsoleManager handle the key events when the popup is showed. | ||
export default ButtonPopup; | ||
//# sourceMappingURL=ButtonPopup.js.map | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnV0dG9uUG9wdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy93aWRnZXRzL0J1dHRvblBvcHVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFDckMsT0FBTyxFQUFFLGNBQWMsRUFBbUIsTUFBTSxxQkFBcUIsQ0FBQTtBQUVyRTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0gsTUFBTSxPQUFPLFdBQVksU0FBUSxZQUFZO0lBV3pDLFlBQW1CLEVBQVUsRUFBRSxLQUFLLEdBQUcsVUFBVSxFQUFFLE9BQU8sR0FBRyxFQUFFLEVBQUUsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsS0FBSztRQUM3RyxLQUFLLEVBQUUsQ0FBQTtRQW9CWCxhQUFRLEdBQUc7WUFDUCxNQUFNLEVBQUU7Z0JBQ0osT0FBTyxFQUFFLEdBQUc7Z0JBQ1osUUFBUSxFQUFFLEdBQUc7Z0JBQ2IsVUFBVSxFQUFFLEdBQUc7Z0JBQ2YsV0FBVyxFQUFFLEdBQUc7Z0JBQ2hCLFVBQVUsRUFBRSxHQUFHO2dCQUNmLFFBQVEsRUFBRSxHQUFHO2FBQ2hCO1lBQ0QsUUFBUSxFQUFFO2dCQUNOLE9BQU8sRUFBRSxHQUFHO2dCQUNaLFFBQVEsRUFBRSxHQUFHO2dCQUNiLFVBQVUsRUFBRSxHQUFHO2dCQUNmLFdBQVcsRUFBRSxHQUFHO2dCQUNoQixVQUFVLEVBQUUsR0FBRztnQkFDZixRQUFRLEVBQUUsR0FBRzthQUNoQjtTQUNKLENBQUE7UUFwQ0csNEVBQTRFO1FBQzVFLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQTtRQUM5QixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQTtRQUNaLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO1FBQ2xCLElBQUksQ0FBQyxPQUFP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QUMsRUFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFBO1lBQzNHLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUNuRSxDQUFDLENBQUMsQ0FBQTtRQUNGLE9BQU8sSUFBSSxDQUFBO0lBQ2YsQ0FBQztDQUNKO0FBRUQsZUFBZSxXQUFXLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tIFwiZXZlbnRzXCJcbmltcG9ydCB7IENvbnNvbGVNYW5hZ2VyLCBLZXlMaXN0ZW5lckFyZ3MgfSBmcm9tIFwiLi4vLi4vQ29uc29sZUd1aS5qc1wiXG5cbi8qKlxuICogQGNsYXNzIEJ1dHRvblBvcHVwXG4gKiBAZXh0ZW5kcyBFdmVudEVtaXR0ZXJcbiAqIEBkZXNjcmlwdGlvbiBUaGlzIGNsYXNzIGlzIHVzZWQgdG8gY3JlYXRlIGEgcG9wdXAgd2l0aCBUaGF0IGFza3MgZm9yIGEgY29uZmlybS4gXG4gKiBcbiAqICFbQnV0dG9uUG9wdXBdKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzE0OTA3OTg3LzE2NTc1MjExNi1iNzk2ZjQxYS1lNGZlLTQ1ZGItOGM5MC01ZDk3MzE4YmQxN2EuZ2lmKVxuICogXG4gKiBFbWl0cyB0aGUgZm9sbG93aW5nIGV2ZW50czogXG4gKiAtIFwiY29uZmlybVwiIHdoZW4gdGhlIHVzZXIgY29uZmlybVxuICogLSBcImNhbmNlbFwiIHdoZW4gdGhlIHVzZXIgY2FuY2VsXG4gKiAtIFwiZXhpdFwiIHdoZW4gdGhlIHVzZXIgZXhpdFxuICogQHBhcmFtIHtzdHJpbmd9IGlkIC0gVGhlIGlkIG9mIHRoZSBwb3B1cC5cbiAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZSAtIFRoZSB0aXRsZSBvZiB0aGUgcG9wdXAuXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAtIFRoZSBtZXNzYWdlIG9mIHRoZSBwb3B1cC5cbiAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gYnV0dG9ucyAtIFRoZSBidXR0b25zIG9mIHRoZSBwb3B1cCAoZGVmYXVsdCBpcyBbXCJZZXNcIiwgXCJOb1wiXSkuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHZpc2libGUgLSBJZiB0aGUgcG9wdXAgaXMgdmlzaWJsZS4gRGVmYXVsdCBpcyBmYWxzZSAobWFrZSBpdCBhcHBlYXJzIHVzaW5nIHNob3coKSkuXG4gKiBcbiAqIEBleGFtcGxlIGNvbnN0IHBvcHVwID0gbmV3IEJ1dHRvblBvcHVwKFwicG9wdXAxXCIsIFwiQ2hvb3NlIHRoZSBvcHRpb25cIiwgW1wiWUVTXCIsIFwiTk9cIiwgXCI/XCJdKS5zaG93KCkub24oXCJjb25maXJtXCIsIChhbnN3ZXIpID0+IHsgY29uc29sZS5sb2coYW5zd2VyKSB9KSAvLyBzaG93IHRoZSBwb3B1cCBhbmQgd2FpdCBmb3IgdGhlIHVzZXIgdG8gY29uZmlybVxuICovXG5leHBvcnQgY2xhc3MgQnV0dG9uUG9wdXAgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICAgIENNOiBDb25zb2xlTWFuYWdlclxuICAgIGlkOiBzdHJpbmdcbiAgICB0aXRsZTogc3RyaW5nXG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICAgYnV0dG9uczogc3RyaW5nW11cbiAgICBzZWxlY3RlZDogbnVtYmVyXG4gICAgdmlzaWJsZTogYm9vbGVhblxuICAgIG1hcmdpblRvcDogbnVtYmVyXG4gICAgc3RhcnRJbmRleDogbnVtYmVyXG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoaWQ6IHN0cmluZywgdGl0bGUgPSBcIkNvbmZpcm0/XCIsIG1lc3NhZ2UgPSBcIlwiLCBidXR0b25zID0gW1wiT2tcIiwgXCJDYW5jZWxcIiwgXCI/XCJdLCB2aXNpYmxlID0gZmFsc2UpIHtcbiAgICAgICAgc3VwZXIoKVxuICAgICAgICAvKiogQGNvbnN0IHtDb25zb2xlTWFuYWdlcn0gQ00gdGhlIGluc3RhbmNlIG9mIENvbnNvbGVNYW5hZ2VyIChzaW5nbGV0b24pICovXG4gICAgICAgIHRoaXMuQ00gPSBuZXcgQ29uc29sZU1hbmFnZXIoKVxuICAgICAgICB0aGlzLmlkID0gaWRcbiAgICAgICAgdGhpcy50aXRsZSA9IHRpdGxlXG4gICAgICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2VcbiAgICAgICAgdGhpcy5idXR0b25zID0gYnV0dG9uc1xuICAgICAgICB0aGlzLnNlbGVjdGVkID0gMCAvLyBUaGUgc2VsZWN0ZWQgb3B0aW9uXG4gICAgICAgIHRoaXMudmlzaWJsZSA9IHZpc2libGVcbiAgICAgICAgdGhpcy5tYXJnaW5Ub3AgPSA0XG4gICAgICAgIHRoaXMuc3RhcnRJbmRleCA9IDBcbiAgICAgICAgaWYgKHRoaXMuQ00ud2lkZ2V0c0NvbGxlY3Rpb25bdGhpcy5pZF0pIHtcbiAgICAgICAgICAgIHRoaXMuQ00udW5SZWdpc3RlcldpZGdldCh0aGlzKVxuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGBCdXR0b25Qb3B1cCAke3RoaXMuaWR9IGFscmVhZHkgZXhpc3RzLmBcbiAgICAgICAgICAgIHRoaXMuQ00uZXJyb3IobWVzc2FnZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuQ00ucmVnaXN0ZXJXaWdldCh0aGlzKVxuICAgIH1cblxuICAgIGJveENoYXJzID0ge1xuICAgICAgICBub3JtYWw6IHtcbiAgICAgICAgICAgIHRvcExlZnQ6IFwi4pSMXCIsXG4gICAgICAgICAgICB0b3BSaWdodDogXCLilJBcIixcbiAgICAgICAgICAgIGJvdHRvbUxlZnQ6IFwi4pSUXCIsXG4gICAgICAgICAgICBib3R0b21SaWdodDogXCLilJhcIixcbiAgICAgICAgICAgIGhvcml6b250YWw6IFwi4pSAXCIsXG4gICAgICAgICAgICB2ZXJ0aWNhbDogXCLilIJcIlxuICAgICAgICB9LFxuICAgICAgICBzZWxlY3RlZDoge1xuICAgICAgICAgICAgdG9wTGVmdDogXCLilZRcIixcbiAgICAgICAgICAgIHRvcFJpZ2h0OiBcIuKVl1wiLFxuICAgICAgICAgICAgYm90dG9tTGVmdDogXCLilZpcIixcbiAgICAgICAgICAgIGJvdHRvbVJpZ2h0OiBcIuKVnVwiLFxuICAgICAgICAgICAgaG9yaXpvbnRhbDogXCLilZBcIixcbiAgICAgICAgICAgIHZlcnRpY2FsOiBcIuKVkVwiXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIG1ha2UgdGhlIENvbnNvbGVNYW5hZ2VyIGhhbmRsZSB0aGUga2V5IGV2ZW50cyB3aGVuIHRoZSBwb3B1cCBpcyBzaG93ZWQuXG4gICAgICogSW5zaWRlIHRoaXMgZnVuY3Rpb24gYXJlIGRlZmluZWQgYWxsIHRoZSBrZXlzIHRoYXQgY2FuIGJlIHByZXNzZWQgYW5kIHRoZSBhY3Rpb25zIHRvIGRvIHdoZW4gdGhleSBhcmUgcHJlc3NlZC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gX3N0ciAtIFRoZSBzdHJpbmcgb2YgdGhlIGlucHV0LlxuICAgICAqIEBwYXJhbSB7YW55fSBrZXkgLSBUaGUga2V5IG9iamVjdC5cbiAgICAgKiBAbWVtYmVyb2YgQnV0dG9uUG9wdXBcbiAgICAgKi9cbiAgICBwdWJsaWMga2V5TGlzdG5lcihfc3RyOiBzdHJpbmcsIGtleSA6IEtleUxpc3RlbmVyQXJncyk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKGtleS5uYW1lKSB7XG4gICAgICAgIGNhc2UgXCJsZWZ0XCI6XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZCA+IDAgJiYgdGhpcy5zZWxlY3RlZCA8PSB0aGlzLmJ1dHRvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZC0tXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBcInJpZ2h0XCI6XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZCA+PSAwICYmIHRoaXMuc2VsZWN0ZWQgPCB0aGlzLmJ1dHRvbnMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQrK1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgXCJyZXR1cm5cIjpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXQoXCJjb25maXJtXCIsIHRoaXMuYnV0dG9uc1t0aGlzLnNlbGVjdGVkXSlcbiAgICAgICAgICAgICAgICB0aGlzLkNNLnVuUmVnaXN0ZXJXaWRnZXQodGhpcylcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKVxuICAgICAgICAgICAgICAgIC8vZGVsZXRlIHRoaXNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgXCJlc2NhcGVcIjpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXQoXCJjYW5jZWxcIilcbiAgICAgICAgICAgICAgICB0aGlzLkNNLnVuUmVnaXN0ZXJXaWRnZXQodGhpcylcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKVxuICAgICAgICAgICAgICAgIC8vZGVsZXRlIHRoaXNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgXCJxXCI6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGhpcy5DTS5lbWl0KFwiZXhpdFwiKVxuICAgICAgICAgICAgICAgIHRoaXMuQ00udW5SZWdpc3RlcldpZGdldCh0aGlzKVxuICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpXG4gICAgICAgICAgICAgICAgLy9kZWxldGUgdGhpc1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5DTS5yZWZyZXNoKClcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHNob3cgdGhlIHBvcHVwLiBJdCBhbHNvIHJlZ2lzdGVyIHRoZSBrZXkgZXZlbnRzIGFuZCByZWZyZXNoIHRoZSBDb25zb2xlTWFuYWdlci5cbiAgICAgKiBAcmV0dXJucyB7QnV0dG9uUG9wdXB9IFRoZSBpbnN0YW5jZSBvZiB0aGUgQnV0dG9uUG9wdXAuXG4gICAgICogQG1lbWJlcm9mIEJ1dHRvblBvcHVwXG4gICAgICovXG4gICAgcHVibGljIHNob3coKTogQnV0dG9uUG9wdXAge1xuICAgICAgICBpZiAoIXRoaXMudmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5tYW5hZ2VJbnB1dCgpXG4gICAgICAgICAgICB0aGlzLnZpc2libGUgPSB0cnVlXG4gICAgICAgICAgICB0aGlzLkNNLnJlZnJlc2goKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBoaWRlIHRoZSBwb3B1cC4gSXQgYWxzbyB1bnJlZ2lzdGVyIHRoZSBrZXkgZXZlbnRzIGFuZCByZWZyZXNoIHRoZSBDb25zb2xlTWFuYWdlci5cbiAgICAgKiBAcmV0dXJucyB7QnV0dG9uUG9wdXB9IFRoZSBpbnN0YW5jZSBvZiB0aGUgQnV0dG9uUG9wdXAuXG4gICAgICogQG1lbWJlcm9mIEJ1dHRvblBvcHVwXG4gICAgICovXG4gICAgcHVibGljIGhpZGUoKTogQnV0dG9uUG9wdXAge1xuICAgICAgICBpZiAodGhpcy52aXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnVuTWFuYWdlSW5wdXQoKVxuICAgICAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2VcbiAgICAgICAgICAgIHRoaXMuQ00ucmVmcmVzaCgpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGdldCB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgcG9wdXAuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFRoZSB2aXNpYmlsaXR5IG9mIHRoZSBwb3B1cC5cbiAgICAgKiBAbWVtYmVyb2YgQnV0dG9uUG9wdXBcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy52aXNpYmxlXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBhZGQgdGhlIEJ1dHRvblBvcHVwIGtleSBsaXN0ZW5lciBjYWxsYmFjayB0byB0ZSBDb25zb2xlTWFuYWdlci5cbiAgICAgKiBAcmV0dXJucyB7QnV0dG9uUG9wdXB9IFRoZSBpbnN0YW5jZSBvZiB0aGUgQnV0dG9uUG9wdXAuXG4gICAgICogQG1lbWJlcm9mIEJ1dHRvblBvcHVwXG4gICAgICovXG4gICAgcHJpdmF0ZSBtYW5hZ2VJbnB1dCgpOiBCdXR0b25Qb3B1cCB7XG4gICAgICAgIC8vIEFkZCBhIGNvbW1hbmQgaW5wdXQgbGlzdGVuZXIgdG8gY2hhbmdlIG1vZGVcbiAgICAgICAgdGhpcy5DTS5zZXRLZXlMaXN0ZW5lcih0aGlzLmlkLCB0aGlzLmtleUxpc3RuZXIuYmluZCh0aGlzKSlcbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHJlbW92ZSB0aGUgQnV0dG9uUG9wdXAga2V5IGxpc3RlbmVyIGNhbGxiYWNrIHRvIHRlIENvbnNvbGVNYW5hZ2VyLlxuICAgICAqIEByZXR1cm5zIHtCdXR0b25Qb3B1cH0gVGhlIGluc3RhbmNlIG9mIHRoZSBCdXR0b25Qb3B1cC5cbiAgICAgKiBAbWVtYmVyb2YgQnV0dG9uUG9wdXBcbiAgICAgKi9cbiAgICBwcml2YXRlIHVuTWFuYWdlSW5wdXQoKTogQnV0dG9uUG9wdXAge1xuICAgICAgICAvLyBBZGQgYSBjb21tYW5kIGlucHV0IGxpc3RlbmVyIHRvIGNoYW5nZSBtb2RlXG4gICAgICAgIHRoaXMuQ00ucmVtb3ZlS2V5TGlzdGVuZXIodGhpcy5pZClcbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGRyYXcgdGhlIEJ1dHRvblBvcHVwIHRvIHRoZSBzY3JlZW4gaW4gdGhlIG1pZGRsZS5cbiAgICAgKiBAcmV0dXJucyB7QnV0dG9uUG9wdXB9IFRoZSBpbnN0YW5jZSBvZiB0aGUgQnV0dG9uUG9wdXAuXG4gICAgICogQG1lbWJlcm9mIEJ1dHRvblBvcHVwXG4gICAgICovXG4gICAgcHVibGljIGRyYXcoKTogQnV0dG9uUG9wdXAge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSAxXG4gICAgICAgIGNvbnN0IGJvcmRlclNpemUgPSAyXG4gICAgICAgIGNvbnN0IHNwYWNlQmV0d2VlbkJ1dHRvbnMgPSAxXG4gICAgICAgIGxldCBtYXhSb3dMZW5ndGggPSAwXG4gICAgICAgIGNvbnN0IGJ1dHRvbkdyaWQ6IHN0cmluZ1tdW10gPSBbXVxuICAgICAgICBsZXQgcm93TGVuZ3RoID0gMFxuICAgICAgICBsZXQgcm93cyA9IDBcblxuICAgICAgICB0aGlzLmJ1dHRvbnMuZm9yRWFjaCgoYnV0dG9uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdCdXR0b25MZW5ndGggPSBidXR0b24ubGVuZ3RoICsgKDIgKiBib3JkZXJTaXplKSArIHNwYWNlQmV0d2VlbkJ1dHRvbnNcbiAgICAgICAgICAgIC8vIERpdmlkZSBpbnRvIHJvd3MgYW5kIGNvbHVtbnMgdGhlIGJ1dHRvbnMgKGJhbGFuY2UgdGhlIGJ1dHRvbnMgbnVtYmVyIGJldHdlZW4gcm93cyBhbmQgY29sdW1ucylcbiAgICAgICAgICAgIGlmIChyb3dMZW5ndGggKyBuZXdCdXR0b25MZW5ndGggPiB0aGlzLkNNLlNjcmVlbi53aWR0aCAtICgyICogb2Zmc2V0KSkge1xuICAgICAgICAgICAgICAgIHJvd3MrK1xuICAgICAgICAgICAgICAgIGlmIChidXR0b25HcmlkW3Jvd3NdKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbkdyaWRbcm93c10ucHVzaChidXR0b24pXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uR3JpZFtyb3dzXSA9IFtidXR0b25dXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJvd0xlbmd0aCA9IG5ld0J1dHRvbkxlbmd0aFxuICAgICAgICAgICAgICAgIGlmIChyb3dMZW5ndGggPiBtYXhSb3dMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgbWF4Um93TGVuZ3RoID0gcm93TGVuZ3RoIC0gc3BhY2VCZXR3ZWVuQnV0dG9uc1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGJ1dHRvbkdyaWRbcm93c10pIHtcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uR3JpZFtyb3dzXS5wdXNoKGJ1dHRvbilcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBidXR0b25HcmlkW3Jvd3NdID0gW2J1dHRvbl1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcm93TGVuZ3RoICs9IG5ld0J1dHRvbkxlbmd0aFxuICAgICAgICAgICAgICAgIGlmIChyb3dMZW5ndGggPiBtYXhSb3dMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgbWF4Um93TGVuZ3RoID0gcm93TGVuZ3RoIC0gc3BhY2VCZXR3ZWVuQnV0dG9uc1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgbGV0IHRpdGxlID0gYCR7dGhpcy50aXRsZX1gXG4gICAgICAgIGlmICh0aXRsZS5sZW5ndGggPiB0aGlzLkNNLlNjcmVlbi53aWR0aCAtICgyICogb2Zmc2V0KSkge1xuICAgICAgICAgICAgdGl0bGUgPSB0aGlzLkNNLnRydW5jYXRlKHRpdGxlLCB0aGlzLkNNLlNjcmVlbi53aWR0aCAtICgyICogb2Zmc2V0KSwgdHJ1ZSlcbiAgICAgICAgfVxuICAgICAgICBsZXQgbXNnID0gdGhpcy5tZXNzYWdlID8gYCR7dGhpcy5tZXNzYWdlfWAgOiBcIlwiXG4gICAgICAgIGlmIChtc2cubGVuZ3RoID4gdGhpcy5DTS5TY3JlZW4ud2lkdGggLSAoMiAqIG9mZnNldCkpIHtcbiAgICAgICAgICAgIG1zZyA9IHRoaXMuQ00udHJ1bmNhdGUobXNnLCB0aGlzLkNNLlNjcmVlbi53aWR0aCAtICgyICogb2Zmc2V0KSwgdHJ1ZSlcbiAgICAgICAgfVxuICAgICAgICBsZXQgd2luZG93V2lkdGggPSB0aXRsZS5sZW5ndGggKyAoMiAqIG9mZnNldClcbiAgICAgICAgaWYgKHdpbmRvd1dpZHRoIDwgbXNnLmxlbmd0aCkge1xuICAgICAgICAgICAgd2luZG93V2lkdGggPSBtc2cubGVuZ3RoICsgKDIgKiBvZmZzZXQpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHdpbmRvd1dpZHRoIDwgbWF4Um93TGVuZ3RoKSB7XG4gICAgICAgICAgICB3aW5kb3dXaWR0aCA9IG1heFJvd0xlbmd0aCArICgyICogb2Zmc2V0KVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGhhbGZXaWR0aFRpdGxlID0gTWF0aC5yb3VuZCgod2luZG93V2lkdGggLSB0aXRsZS5sZW5ndGgpIC8gMilcbiAgICAgICAgY29uc3QgaGFsZldpZHRoTWVzc2FnZSA9IE1hdGgucm91bmQoKHdpbmRvd1dpZHRoIC0gbXNnLmxlbmd0aCkgLyAyKVxuXG4gICAgICAgIGxldCBoZWFkZXIgPSBcIuKUjFwiXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgd2luZG93V2lkdGg7IGkrKykge1xuICAgICAgICAgICAgaGVhZGVyICs9IFwi4pSAXCJcbiAgICAgICAgfVxuICAgICAgICBoZWFkZXIgKz0gXCLilJBcXG5cIlxuICAgICAgICBoZWFkZXIgKz0gYOKUgiR7XCIgXCIucmVwZWF0KGhhbGZXaWR0aFRpdGxlKX0ke3RpdGxlfSR7XCIgXCIucmVwZWF0KHdpbmRvd1dpZHRoIC0gaGFsZldpZHRoVGl0bGUgLSB0aXRsZS5sZW5ndGgpfeKUglxcbmBcbiAgICAgICAgaGVhZGVyICs9IFwi4pScXCIgKyBcIuKUgFwiLnJlcGVhdCh3aW5kb3dXaWR0aCkgKyBcIuKUpFxcblwiXG5cbiAgICAgICAgbGV0IGZvb3RlciA9IFwi4pSUXCJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB3aW5kb3dXaWR0aDsgaSsrKSB7XG4gICAgICAgICAgICBmb290ZXIgKz0gXCLilIBcIlxuICAgICAgICB9XG4gICAgICAgIGZvb3RlciArPSBcIuKUmFxcblwiXG5cbiAgICAgICAgbGV0IGNvbnRlbnQgPSBcIlwiXG4gICAgICAgIGlmIChtc2cgIT09IFwiXCIpIHtcbiAgICAgICAgICAgIGNvbnRlbnQgKz0gYOKUgiR7XCIgXCIucmVwZWF0KGhhbGZXaWR0aE1lc3NhZ2UpfSR7bXNnfSR7XCIgXCIucmVwZWF0KHdpbmRvd1dpZHRoIC0gaGFsZldpZHRoTWVzc2FnZSAtIG1zZy5sZW5ndGgpfeKUglxcbmBcbiAgICAgICAgfVxuICAgICAgICBidXR0b25HcmlkLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCAzOyBrKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBidXR0b25MZW5ndGggPSByb3cubWFwKGJ1dHRvbiA9PiBidXR0b24ubGVuZ3RoICsgKDIgKiBib3JkZXJTaXplKSArIHNwYWNlQmV0d2VlbkJ1dHRvbnMpXG4gICAgICAgICAgICAgICAgY29uc3Qgc3VtUm93TGVuZ3RoID0gYnV0dG9uTGVuZ3RoLnJlZHVjZSgoYSwgYikgPT4gYSArIGIsIDApIC0gc3BhY2VCZXR3ZWVuQnV0dG9uc1xuICAgICAgICAgICAgICAgIGNvbnN0IGVtcHR5U3BhY2UgPSB3aW5kb3dXaWR0aCAtIHN1bVJvd0xlbmd0aCA+PSAwID8gd2luZG93V2lkdGggLSBzdW1Sb3dMZW5ndGggOiAwXG4gICAgICAgICAgICAgICAgcm93LmZvckVhY2goKGJ1dHRvbiwgY29sSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYnRuQm94VHlwZSA9IHRoaXMuc2VsZWN0ZWQgPT09IHRoaXMuYnV0dG9ucy5pbmRleE9mKGJ1dHRvbikgPyBcInNlbGVjdGVkXCIgOiBcIm5vcm1hbFwiXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2xJbmRleCA8IHJvdy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2xJbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgKz0gYOKUgiR7XCIgXCIucmVwZWF0KGVtcHR5U3BhY2UgLyAyKX1gXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgKz0gYCR7dGhpcy5ib3hDaGFyc1tidG5Cb3hUeXBlXS50b3BMZWZ0fSR7dGhpcy5ib3hDaGFyc1tidG5Cb3hUeXBlXS5ob3Jpem9udGFsLnJlcGVhdChib3JkZXJTaXplID4gMSA/IDIgKiAoYm9yZGVyU2l6ZSAtIDEpICsgYnV0dG9uLmxlbmd0aCA6IGJ1dHRvbi5sZW5ndGgpfSR7dGhpcy5ib3hDaGFyc1tidG5Cb3hUeXBlXS50b3BSaWdodH1gXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ICs9IGAke3RoaXMuYm94Q2hhcnNbYnRuQm94VHlwZV0udmVydGljYWx9JHtib3JkZXJTaXplID4gMSA/IFwiIFwiLnJlcGVhdChib3JkZXJTaXplLTEpOlwiXCJ9JHtidXR0b259JHtib3JkZXJTaXplID4gMSA/IFwiIFwiLnJlcGVhdChib3JkZXJTaXplLTEpOlwiXCJ9JHt0aGlzLmJveENoYXJzW2J0bkJveFR5cGVdLnZlcnRpY2FsfWBcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgKz0gYCR7dGhpcy5ib3hDaGFyc1tidG5Cb3hUeXBlXS5ib3R0b21MZWZ0fSR7dGhpcy5ib3hDaGFyc1tidG5Cb3hUeXBlXS5ob3Jpem9udGFsLnJlcGVhdChib3JkZXJTaXplID4gMSA/IDIgKiAoYm9yZGVyU2l6ZSAtIDEpICsgYnV0dG9uLmxlbmd0aCA6IGJ1dHRvbi5sZW5ndGgpfSR7dGhpcy5ib3hDaGFyc1tidG5Cb3hUeXBlXS5ib3R0b21SaWdodH1gXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuQ00uZXJyb3IoXCJFcnJvciBpbiBCdXR0b25Qb3B1cCBkcmF3IGZ1bmN0aW9uXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29sSW5kZXggPT09IHJvdy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCArPSBcIiBcIi5yZXBlYXQoIShlbXB0eVNwYWNlICUgMikgPyBlbXB0eVNwYWNlIC8gMiA6IE1hdGgucm91bmQoZW1wdHlTcGFjZSAvIDIpKSArIFwi4pSCXFxuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCArPSBcIiBcIi5yZXBlYXQoc3BhY2VCZXR3ZWVuQnV0dG9ucylcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb2xJbmRleCA9PT0gcm93Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCArPSBcIiBcIi5yZXBlYXQoIShlbXB0eVNwYWNlICUgMikgPyBlbXB0eVNwYWNlIC8gMiA6IE1hdGgucm91bmQoZW1wdHlTcGFjZSAvIDIpKSArIFwi4pSCXFxuXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG5cblxuXG4gICAgICAgIGNvbnN0IHdpbmRvd0Rlc2lnbiA9IGAke2hlYWRlcn0ke2NvbnRlbnR9JHtmb290ZXJ9YFxuICAgICAgICB3aW5kb3dEZXNpZ24uc3BsaXQoXCJcXG5cIikuZm9yRWFjaCgobGluZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuQ00uU2NyZWVuLmN1cnNvclRvKE1hdGgucm91bmQoKHRoaXMuQ00uU2NyZWVuLndpZHRoIC8gMikgLSAod2luZG93V2lkdGggLyAyKSksIHRoaXMubWFyZ2luVG9wICsgaW5kZXgpXG4gICAgICAgICAgICB0aGlzLkNNLlNjcmVlbi53cml0ZSh7IHRleHQ6IGxpbmUsIHN0eWxlOiB7IGNvbG9yOiBcIndoaXRlXCIgfSB9KVxuICAgICAgICB9KVxuICAgICAgICByZXR1cm4gdGhpc1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQnV0dG9uUG9wdXAiXX0= |
@@ -24,1 +24,2 @@ import ButtonPopup from "./ButtonPopup.js"; | ||
export default ConfirmPopup; | ||
//# sourceMappingURL=ConfirmPopup.d.ts.map |
@@ -78,2 +78,2 @@ import ButtonPopup from "./ButtonPopup.js"; | ||
export default ConfirmPopup; | ||
//# sourceMappingURL=ConfirmPopup.js.map | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlybVBvcHVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvd2lkZ2V0cy9Db25maXJtUG9wdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxXQUFXLE1BQU0sa0JBQWtCLENBQUE7QUFFMUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBTSxPQUFPLFlBQWEsU0FBUSxXQUFXO0lBQ3pDLFlBQW1CLEVBQVUsRUFBRSxLQUF5QixFQUFFLE9BQTJCO1FBQ2pGLEtBQUssQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBRXhDLEtBQUssQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFZLEVBQUUsR0FBcUIsRUFBRSxFQUFFO1lBQ3ZELFFBQVEsR0FBRyxDQUFDLElBQUksRUFBRTtnQkFDbEIsS0FBSyxNQUFNO29CQUNQLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTt3QkFDM0QsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFBO3FCQUNsQjt5QkFBTTt3QkFDSCxPQUFNO3FCQUNUO29CQUNELE1BQUs7Z0JBQ1QsS0FBSyxPQUFPO29CQUNSLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7d0JBQy9ELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQTtxQkFDbEI7eUJBQU07d0JBQ0gsT0FBTTtxQkFDVDtvQkFDRCxNQUFLO2dCQUNULEtBQUssUUFBUTtvQkFDVDt3QkFDSSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxFQUFFOzRCQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO3lCQUN2Qjs2QkFBTTs0QkFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO3lCQUN0Qjt3QkFDRCxJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFBO3dCQUM5QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUE7d0JBQ1gsYUFBYTtxQkFDaEI7b0JBQ0QsTUFBSztnQkFDVCxLQUFLLFFBQVE7b0JBQ1Q7d0JBQ0ksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTt3QkFDbkIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQTt3QkFDOUIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO3dCQUNYLGFBQWE7cUJBQ2hCO29CQUNELE1BQUs7Z0JBQ1QsS0FBSyxHQUFHO29CQUNKO3dCQUNJLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO3dCQUNwQixJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFBO3dCQUM5QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUE7d0JBQ1gsYUFBYTtxQkFDaEI7b0JBQ0QsTUFBSztnQkFDVDtvQkFDSSxNQUFLO2FBQ1I7WUFDRCxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQ3JCLENBQUMsQ0FBQTtJQUNMLENBQUM7Q0FDSjtBQUVELGVBQWUsWUFBWSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgS2V5TGlzdGVuZXJBcmdzIH0gZnJvbSBcIi4uLy4uL0NvbnNvbGVHdWkuanNcIlxuaW1wb3J0IEJ1dHRvblBvcHVwIGZyb20gXCIuL0J1dHRvblBvcHVwLmpzXCJcblxuLyoqXG4gKiBAY2xhc3MgQ29uZmlybVBvcHVwXG4gKiBAZXh0ZW5kcyBCdXR0b25Qb3B1cFxuICogQGRlc2NyaXB0aW9uIFRoaXMgY2xhc3MgaXMgYW4gb3ZlcmxvYWQgb2YgQnV0dG9uUG9wdXAgdGhhdCBpcyB1c2VkIHRvIGNyZWF0ZSBhIHBvcHVwIHdpdGggVGhhdCBhc2tzIGZvciBhIGNvbmZpcm0gW1llcywgTm9dLiBcbiAqIFxuICogIVtDb25maXJtUG9wdXBdKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzE0OTA3OTg3LzE2NTc1MjIyNi1iNzZiMTU3Zi00OTM1LTQyNDgtYTVjYy0zYjIxZDA4N2NiMDQuZ2lmKVxuICogXG4gKiBFbWl0cyB0aGUgZm9sbG93aW5nIGV2ZW50czogXG4gKiAtIFwiY29uZmlybVwiIHdoZW4gdGhlIHVzZXIgY29uZmlybVxuICogLSBcImNhbmNlbFwiIHdoZW4gdGhlIHVzZXIgY2FuY2VsXG4gKiAtIFwiZXhpdFwiIHdoZW4gdGhlIHVzZXIgZXhpdFxuICogQHBhcmFtIHtzdHJpbmd9IGlkIC0gVGhlIGlkIG9mIHRoZSBwb3B1cC5cbiAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZSAtIFRoZSB0aXRsZSBvZiB0aGUgcG9wdXAuXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAtIFRoZSBtZXNzYWdlIG9mIHRoZSBwb3B1cC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gdmlzaWJsZSAtIElmIHRoZSBwb3B1cCBpcyB2aXNpYmxlLiBEZWZhdWx0IGlzIGZhbHNlIChtYWtlIGl0IGFwcGVhcnMgdXNpbmcgc2hvdygpKS5cbiAqIFxuICogQGV4YW1wbGUgY29uc3QgcG9wdXAgPSBuZXcgQ29uZmlybVBvcHVwKFwicG9wdXAxXCIsIFwiQXJlIHlvdSBzaHVyZVwiKS5zaG93KCkub24oXCJjb25maXJtXCIsIChhbnN3ZXIpID0+IHsgY29uc29sZS5sb2coYW5zd2VyKSB9KSAvLyBzaG93IHRoZSBwb3B1cCBhbmQgd2FpdCBmb3IgdGhlIHVzZXIgdG8gY29uZmlybVxuICovXG5leHBvcnQgY2xhc3MgQ29uZmlybVBvcHVwIGV4dGVuZHMgQnV0dG9uUG9wdXAge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihpZDogc3RyaW5nLCB0aXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkLCBtZXNzYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgc3VwZXIoaWQsIHRpdGxlLCBtZXNzYWdlLCBbXCJZZXNcIiwgXCJOb1wiXSlcblxuICAgICAgICBzdXBlci5rZXlMaXN0bmVyID0gKF9zdHI6IHN0cmluZywga2V5IDogS2V5TGlzdGVuZXJBcmdzKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKGtleS5uYW1lKSB7XG4gICAgICAgICAgICBjYXNlIFwibGVmdFwiOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkID4gMCAmJiB0aGlzLnNlbGVjdGVkIDw9IHRoaXMuYnV0dG9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZC0tXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICBjYXNlIFwicmlnaHRcIjpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZCA+PSAwICYmIHRoaXMuc2VsZWN0ZWQgPCB0aGlzLmJ1dHRvbnMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkKytcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIGNhc2UgXCJyZXR1cm5cIjpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoXCJjb25maXJtXCIpXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoXCJjYW5jZWxcIilcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLkNNLnVuUmVnaXN0ZXJXaWRnZXQodGhpcylcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKClcbiAgICAgICAgICAgICAgICAgICAgLy9kZWxldGUgdGhpc1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgY2FzZSBcImVzY2FwZVwiOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0KFwiY2FuY2VsXCIpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuQ00udW5SZWdpc3RlcldpZGdldCh0aGlzKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKVxuICAgICAgICAgICAgICAgICAgICAvL2RlbGV0ZSB0aGlzXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICBjYXNlIFwicVwiOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5DTS5lbWl0KFwiZXhpdFwiKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLkNNLnVuUmVnaXN0ZXJXaWRnZXQodGhpcylcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKClcbiAgICAgICAgICAgICAgICAgICAgLy9kZWxldGUgdGhpc1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5DTS5yZWZyZXNoKClcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29uZmlybVBvcHVwIl19 |
@@ -107,1 +107,2 @@ /// <reference types="node" /> | ||
export default CustomPopup; | ||
//# sourceMappingURL=CustomPopup.d.ts.map |
@@ -24,9 +24,2 @@ import { EventEmitter } from "events"; | ||
export class CustomPopup extends EventEmitter { | ||
CM; | ||
id; | ||
title; | ||
content; | ||
width; | ||
visible; | ||
marginTop; | ||
constructor(id, title, content, width, visible = false) { | ||
@@ -252,2 +245,2 @@ super(); | ||
export default CustomPopup; | ||
//# sourceMappingURL=CustomPopup.js.map | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3VzdG9tUG9wdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy93aWRnZXRzL0N1c3RvbVBvcHVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFDckMsT0FBTyxFQUFFLGNBQWMsRUFBbUIsTUFBTSxxQkFBcUIsQ0FBQTtBQUdyRTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQU0sT0FBTyxXQUFZLFNBQVEsWUFBWTtJQVN6QyxZQUFtQixFQUFVLEVBQUUsS0FBYSxFQUFFLE9BQW9CLEVBQUUsS0FBYSxFQUFFLE9BQU8sR0FBRyxLQUFLO1FBQzlGLEtBQUssRUFBRSxDQUFBO1FBQ1AsNEVBQTRFO1FBQzVFLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQTtRQUM5QixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQTtRQUNaLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFBO1FBQ2xCLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDcEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUM5QixNQUFNLE9BQU8sR0FBRyxlQUFlLElBQUksQ0FBQyxFQUFFLGtCQUFrQixDQUFBO1lBQ3hELElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxD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SyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDekYsT0FBTyxJQUFJLENBQUE7SUFDZixDQUFDO0NBQ0o7QUFFRCxlQUFlLFdBQVcsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gXCJldmVudHNcIlxuaW1wb3J0IHsgQ29uc29sZU1hbmFnZXIsIEtleUxpc3RlbmVyQXJncyB9IGZyb20gXCIuLi8uLi9Db25zb2xlR3VpLmpzXCJcbmltcG9ydCBQYWdlQnVpbGRlciwgeyBTdHlsZWRFbGVtZW50IH0gZnJvbSBcIi4uL1BhZ2VCdWlsZGVyLmpzXCJcblxuLyoqXG4gKiBAY2xhc3MgQ3VzdG9tUG9wdXBcbiAqIEBleHRlbmRzIEV2ZW50RW1pdHRlclxuICogQGRlc2NyaXB0aW9uIFRoaXMgY2xhc3MgaXMgdXNlZCB0byBjcmVhdGUgYSBwb3B1cCB3aXRoIGEgZnJlZSBjb250ZW50IGJ1aWx0IHdpdGggUGFnZUJ1aWxkZXIgY2xhc3MuIFxuICogXG4gKiAhW0FuaW1hdGlvbl0oaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vMTQ5MDc5ODcvMTY1NzM2NzY3LWQ2MGY4NTdmLTM5NDUtNGI5NS1hYTRmLTI5MmI2YTQxZjc4OS5naWYpXG4gKiBcbiAqIEVtaXRzIHRoZSBmb2xsb3dpbmcgZXZlbnRzOiBcbiAqIC0gXCJjb25maXJtXCIgd2hlbiB0aGUgdXNlciBjb25maXJtXG4gKiAtIFwiY2FuY2VsXCIgd2hlbiB0aGUgdXNlciBjYW5jZWxcbiAqIC0gXCJleGl0XCIgd2hlbiB0aGUgdXNlciBleGl0XG4gKiAtIFwiZGF0YVwiIHdoZW4gdGhlIHVzZXIgc2VuZCBjdXN0b20gZXZlbnQgLSB0aGUgZGF0YSBpcyBhbiBvYmplY3Qgd2l0aCB0aGUgZGF0YSBhbmQgdGhlIGV2ZW50IG5hbWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBpZCAtIFRoZSBpZCBvZiB0aGUgcG9wdXAuXG4gKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgLSBUaGUgdGl0bGUgb2YgdGhlIHBvcHVwLlxuICogQHBhcmFtIHtQYWdlQnVpbGRlcn0gY29udGVudCAtIFRoZSBjb250ZW50IG9mIHRoZSBwb3B1cC5cbiAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aCAtIFRoZSB3aWR0aCBvZiB0aGUgcG9wdXAuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHZpc2libGUgLSBJZiB0aGUgcG9wdXAgaXMgdmlzaWJsZS4gRGVmYXVsdCBpcyBmYWxzZSAobWFrZSBpdCBhcHBlYXJzIHVzaW5nIHNob3coKSkuXG4gKiBcbiAqIEBleGFtcGxlIGNvbnN0IHBvcHVwID0gbmV3IEN1c3RvbVBvcHVwKFwicG9wdXAxXCIsIFwiU2VlIHRoYXQgdmFsdWVzXCIsIG5ldyBQYWdlQnVpbGRlcigpKS5zaG93KClcbiAqL1xuZXhwb3J0IGNsYXNzIEN1c3RvbVBvcHVwIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgICBDTTogQ29uc29sZU1hbmFnZXJcbiAgICBpZDogc3RyaW5nXG4gICAgdGl0bGU6IHN0cmluZ1xuICAgIGNvbnRlbnQ6IFBhZ2VCdWlsZGVyXG4gICAgd2lkdGg6IG51bWJlclxuICAgIHZpc2libGU6IGJvb2xlYW5cbiAgICBtYXJnaW5Ub3A6IG51bWJlclxuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGlkOiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcsIGNvbnRlbnQ6IFBhZ2VCdWlsZGVyLCB3aWR0aDogbnVtYmVyLCB2aXNpYmxlID0gZmFsc2UpIHtcbiAgICAgICAgc3VwZXIoKVxuICAgICAgICAvKiogQGNvbnN0IHtDb25zb2xlTWFuYWdlcn0gQ00gdGhlIGluc3RhbmNlIG9mIENvbnNvbGVNYW5hZ2VyIChzaW5nbGV0b24pICovXG4gICAgICAgIHRoaXMuQ00gPSBuZXcgQ29uc29sZU1hbmFnZXIoKVxuICAgICAgICB0aGlzLmlkID0gaWRcbiAgICAgICAgdGhpcy50aXRsZSA9IHRpdGxlXG4gICAgICAgIHRoaXMuY29udGVudCA9IGNvbnRlbnRcbiAgICAgICAgdGhpcy53aWR0aCA9IHdpZHRoXG4gICAgICAgIHRoaXMudmlzaWJsZSA9IHZpc2libGVcbiAgICAgICAgdGhpcy5tYXJnaW5Ub3AgPSA0XG4gICAgICAgIGlmICh0aGlzLkNNLndpZGdldHNDb2xsZWN0aW9uW3RoaXMuaWRdKSB7XG4gICAgICAgICAgICB0aGlzLkNNLnVuUmVnaXN0ZXJXaWRnZXQodGhpcylcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgQ3VzdG9tUG9wdXAgJHt0aGlzLmlkfSBhbHJlYWR5IGV4aXN0cy5gXG4gICAgICAgICAgICB0aGlzLkNNLmVycm9yKG1lc3NhZ2UpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSlcbiAgICAgICAgfVxuICAgICAgICB0aGlzLkNNLnJlZ2lzdGVyV2lnZXQodGhpcylcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIG1ha2UgdGhlIENvbnNvbGVNYW5hZ2VyIGhhbmRsZSB0aGUga2V5IGV2ZW50cyB3aGVuIHRoZSBpbnB1dCBpcyB0ZXh0IGFuZCBpdCBpcyBzaG93ZWQuXG4gICAgICogSW5zaWRlIHRoaXMgZnVuY3Rpb24gYXJlIGRlZmluZWQgYWxsIHRoZSBrZXlzIHRoYXQgY2FuIGJlIHByZXNzZWQgYW5kIHRoZSBhY3Rpb25zIHRvIGRvIHdoZW4gdGhleSBhcmUgcHJlc3NlZC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyIC0gVGhlIHN0cmluZyBvZiB0aGUgaW5wdXQuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGtleSAtIFRoZSBrZXkgb2JqZWN0LlxuICAgICAqIEBtZW1iZXJvZiBDdXN0b21Qb3B1cFxuICAgICAqL1xuICAgIHB1YmxpYyBrZXlMaXN0bmVyKF9zdHI6IHN0cmluZywga2V5IDogS2V5TGlzdGVuZXJBcmdzKTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAoa2V5Lm5hbWUpIHtcbiAgICAgICAgY2FzZSBcInVwXCI6XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQuaW5jcmVhc2VTY3JvbGxJbmRleCgpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIFwiZG93blwiOlxuICAgICAgICAgICAgdGhpcy5jb250ZW50LmRlY3JlYXNlU2Nyb2xsSW5kZXgoKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBcInJldHVyblwiOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdChcImNvbmZpcm1cIilcbiAgICAgICAgICAgICAgICB0aGlzLkNNLnVuUmVnaXN0ZXJXaWRnZXQodGhpcylcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKVxuICAgICAgICAgICAgICAgIC8vZGVsZXRlIHRoaXNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgXCJlc2NhcGVcIjpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXQoXCJjYW5jZWxcIilcbiAgICAgICAgICAgICAgICB0aGlzLkNNLnVuUmVnaXN0ZXJXaWRnZXQodGhpcylcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKVxuICAgICAgICAgICAgICAgIC8vZGVsZXRlIHRoaXNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgXCJxXCI6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGhpcy5DTS5lbWl0KFwiZXhpdFwiKVxuICAgICAgICAgICAgICAgIHRoaXMuQ00udW5SZWdpc3RlcldpZGdldCh0aGlzKVxuICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpXG4gICAgICAgICAgICAgICAgLy9kZWxldGUgdGhpc1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5DTS5yZWZyZXNoKClcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGdldCB0aGUgY29udGVudCBvZiB0aGUgcG9wdXAuXG4gICAgICogQHJldHVybnMge1BhZ2VCdWlsZGVyfSBUaGUgY29udGVudCBvZiB0aGUgcG9wdXAuXG4gICAgICogQG1lbWJlcm9mIEN1c3RvbVBvcHVwXG4gICAgICovXG4gICAgcHVibGljIGdldENvbnRlbnQoKTogUGFnZUJ1aWxkZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBjaGFuZ2UgdGhlIGNvbnRlbnQgb2YgdGhlIHBvcHVwLiBJdCBhbHNvIHJlZnJlc2ggdGhlIENvbnNvbGVNYW5hZ2VyLlxuICAgICAqIEBwYXJhbSB7UGFnZUJ1aWxkZXJ9IG5ld0NvbnRlbnQgLSBUaGUgbmV3IGNvbnRlbnQgb2YgdGhlIHBvcHVwLlxuICAgICAqIEBtZW1iZXJvZiBDdXN0b21Qb3B1cFxuICAgICAqIEByZXR1cm5zIHtDdXN0b21Qb3B1cH0gVGhlIGluc3RhbmNlIG9mIHRoZSBDdXN0b21Qb3B1cC5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0Q29udGVudChuZXdDb250ZW50OiBQYWdlQnVpbGRlcik6IEN1c3RvbVBvcHVwIHtcbiAgICAgICAgdGhpcy5jb250ZW50ID0gbmV3Q29udGVudFxuICAgICAgICB0aGlzLkNNLnJlZnJlc2goKVxuICAgICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY2hhbmdlIHRoZSBwb3B1cCB3aWR0aC4gSXQgYWxzbyByZWZyZXNoIHRoZSBDb25zb2xlTWFuYWdlci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbmV3V2lkdGggLSBUaGUgbmV3IHdpZHRoIG9mIHRoZSBwb3B1cC5cbiAgICAgKiBAbWVtYmVyb2YgQ3VzdG9tUG9wdXBcbiAgICAgKiBAcmV0dXJucyB7Q3VzdG9tUG9wdXB9IFRoZSBpbnN0YW5jZSBvZiB0aGUgQ3VzdG9tUG9wdXAuXG4gICAgICovXG4gICAgcHVibGljIHNldFdpZHRoKG5ld1dpZHRoOiBudW1iZXIpOiB0aGlzIHtcbiAgICAgICAgdGhpcy53aWR0aCA9IG5ld1dpZHRoXG4gICAgICAgIHRoaXMuQ00ucmVmcmVzaCgpXG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBzaG93IHRoZSBwb3B1cC4gSXQgYWxzbyByZWdpc3RlciB0aGUga2V5IGV2ZW50cyBhbmQgcmVmcmVzaCB0aGUgQ29uc29sZU1hbmFnZXIuXG4gICAgICogQHJldHVybnMge0N1c3RvbVBvcHVwfSBUaGUgaW5zdGFuY2Ugb2YgdGhlIEN1c3RvbVBvcHVwLlxuICAgICAqIEBtZW1iZXJvZiBDdXN0b21Qb3B1cFxuICAgICAqL1xuICAgIHB1YmxpYyBzaG93KCk6IHRoaXMge1xuICAgICAgICBpZiAoIXRoaXMudmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5tYW5hZ2VJbnB1dCgpXG4gICAgICAgICAgICB0aGlzLnZpc2libGUgPSB0cnVlXG4gICAgICAgICAgICB0aGlzLkNNLnJlZnJlc2goKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBoaWRlIHRoZSBwb3B1cC4gSXQgYWxzbyB1bnJlZ2lzdGVyIHRoZSBrZXkgZXZlbnRzIGFuZCByZWZyZXNoIHRoZSBDb25zb2xlTWFuYWdlci5cbiAgICAgKiBAcmV0dXJucyB7Q3VzdG9tUG9wdXB9IFRoZSBpbnN0YW5jZSBvZiB0aGUgQ3VzdG9tUG9wdXAuXG4gICAgICogQG1lbWJlcm9mIEN1c3RvbVBvcHVwXG4gICAgICovXG4gICAgcHVibGljIGhpZGUoKTogdGhpcyB7XG4gICAgICAgIGlmICh0aGlzLnZpc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMudW5NYW5hZ2VJbnB1dCgpXG4gICAgICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZVxuICAgICAgICAgICAgdGhpcy5DTS5yZWZyZXNoKClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZ2V0IHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBwb3B1cC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVGhlIHZpc2liaWxpdHkgb2YgdGhlIHBvcHVwLlxuICAgICAqIEBtZW1iZXJvZiBDdXN0b21Qb3B1cFxuICAgICAqL1xuICAgIHB1YmxpYyBpc1Zpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpc2libGVcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGFkZCB0aGUgQ3VzdG9tUG9wdXAga2V5IGxpc3RlbmVyIGNhbGxiYWNrIHRvIHRlIENvbnNvbGVNYW5hZ2VyLlxuICAgICAqIEByZXR1cm5zIHtDdXN0b21Qb3B1cH0gVGhlIGluc3RhbmNlIG9mIHRoZSBDdXN0b21Qb3B1cC5cbiAgICAgKiBAbWVtYmVyb2YgQ3VzdG9tUG9wdXBcbiAgICAgKi9cbiAgICBwcml2YXRlIG1hbmFnZUlucHV0KCk6IEN1c3RvbVBvcHVwIHtcbiAgICAgICAgLy8gQWRkIGEgY29tbWFuZCBpbnB1dCBsaXN0ZW5lciB0byBjaGFuZ2UgbW9kZVxuICAgICAgICB0aGlzLkNNLnNldEtleUxpc3RlbmVyKHRoaXMuaWQsIHRoaXMua2V5TGlzdG5lci5iaW5kKHRoaXMpKVxuICAgICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmVtb3ZlIHRoZSBDdXN0b21Qb3B1cCBrZXkgbGlzdGVuZXIgY2FsbGJhY2sgdG8gdGUgQ29uc29sZU1hbmFnZXIuXG4gICAgICogQHJldHVybnMge0N1c3RvbVBvcHVwfSBUaGUgaW5zdGFuY2Ugb2YgdGhlIEN1c3RvbVBvcHVwLlxuICAgICAqIEBtZW1iZXJvZiBDdXN0b21Qb3B1cFxuICAgICAqL1xuICAgIHByaXZhdGUgdW5NYW5hZ2VJbnB1dCgpOiBDdXN0b21Qb3B1cCB7XG4gICAgICAgIC8vIEFkZCBhIGNvbW1hbmQgaW5wdXQgbGlzdGVuZXIgdG8gY2hhbmdlIG1vZGVcbiAgICAgICAgdGhpcy5DTS5yZW1vdmVLZXlMaXN0ZW5lcih0aGlzLmlkLyosIHRoaXMua2V5TGlzdG5lci5iaW5kKHRoaXMpKi8pXG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBkcmF3IGEgc2luZ2xlIGxpbmUgb2YgdGhlIGxheW91dCB0byB0aGUgc2NyZWVuLiBJdCBhbHNvIHRyaW0gdGhlIGxpbmUgaWYgaXQgaXMgdG9vIGxvbmcuXG4gICAgICogQHBhcmFtIHtBcnJheTxvYmplY3Q+fSBsaW5lIHRoZSBsaW5lIHRvIGJlIGRyYXduXG4gICAgICogQG1lbWJlcm9mIEN1c3RvbVBvcHVwXG4gICAgICogQHJldHVybnMge3ZvaWR9XG4gICAgICovXG4gICAgcHJpdmF0ZSBkcmF3TGluZShsaW5lOiBTdHlsZWRFbGVtZW50W10sIHdpZHRoOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgbGV0IHVuZm9ybWF0dGVkTGluZSA9IFwiXCJcbiAgICAgICAgbGV0IG5ld0xpbmUgPSBbLi4ubGluZV1cbiAgICAgICAgbGluZS5mb3JFYWNoKChlbGVtZW50OiB7IHRleHQ6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgICAgICB1bmZvcm1hdHRlZExpbmUgKz0gZWxlbWVudC50ZXh0XG4gICAgICAgIH0pXG4gICAgICAgIGlmICh1bmZvcm1hdHRlZExpbmUubGVuZ3RoID4gd2lkdGggLSAyKSB7IC8vIE5lZWQgdG8gdHJ1bmNhdGVcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldCA9IDJcbiAgICAgICAgICAgIG5ld0xpbmUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGxpbmUpKSAvLyBTaGFsbG93IGNvcHkgYmVjYXVzZSBJIGRvbid0IHdhbnQgdG8gbW9kaWZ5IHRoZSB2YWx1ZXMgYnV0IG5vdCB0aGUgb3JpZ2luYWxcbiAgICAgICAgICAgIGxldCBkaWZmID0gdW5mb3JtYXR0ZWRMaW5lLmxlbmd0aCAtIHdpZHRoXG4gICAgICAgICAgICAvLyByZW1vdmUgdHJ1bmNhdGVkIHRleHRcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBuZXdMaW5lLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5ld0xpbmVbaV0udGV4dC5sZW5ndGggPiBkaWZmICsgb2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0xpbmVbaV0udGV4dCA9IHRoaXMuQ00udHJ1bmNhdGUobmV3TGluZVtpXS50ZXh0LCAobmV3TGluZVtpXS50ZXh0Lmxlbmd0aCAtIGRpZmYpIC0gb2Zmc2V0LCB0cnVlKVxuICAgICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRpZmYgLT0gbmV3TGluZVtpXS50ZXh0Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICBuZXdMaW5lLnNwbGljZShpLCAxKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFVwZGF0ZSB1bmZvcm1hdHRlZCBsaW5lXG4gICAgICAgICAgICB1bmZvcm1hdHRlZExpbmUgPSBcIlwiXG4gICAgICAgICAgICBuZXdMaW5lLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgdW5mb3JtYXR0ZWRMaW5lICs9IGVsZW1lbnQudGV4dFxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICBuZXdMaW5lLnVuc2hpZnQoeyB0ZXh0OiBcIuKUglwiLCBzdHlsZTogeyBjb2xvcjogXCJ3aGl0ZVwiIH0gfSlcbiAgICAgICAgaWYgKHVuZm9ybWF0dGVkTGluZS5sZW5ndGggPD0gd2lkdGgpIHtcbiAgICAgICAgICAgIG5ld0xpbmUucHVzaCh7IHRleHQ6IGAke1wiIFwiLnJlcGVhdCgod2lkdGggLSB1bmZvcm1hdHRlZExpbmUubGVuZ3RoKSl9YCwgc3R5bGU6IHsgY29sb3I6IFwiXCIgfSB9KVxuICAgICAgICB9XG4gICAgICAgIG5ld0xpbmUucHVzaCh7IHRleHQ6IFwi4pSCXCIsIHN0eWxlOiB7IGNvbG9yOiBcIndoaXRlXCIgfSB9KVxuICAgICAgICB0aGlzLkNNLlNjcmVlbi53cml0ZSguLi5uZXdMaW5lKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZHJhdyB0aGUgQ3VzdG9tUG9wdXAgdG8gdGhlIHNjcmVlbiBpbiB0aGUgbWlkZGxlLlxuICAgICAqIEByZXR1cm5zIHtDdXN0b21Qb3B1cH0gVGhlIGluc3RhbmNlIG9mIHRoZSBDdXN0b21Qb3B1cC5cbiAgICAgKiBAbWVtYmVyb2YgQ3VzdG9tUG9wdXBcbiAgICAgKi9cbiAgICBwdWJsaWMgZHJhdygpOiBDdXN0b21Qb3B1cCB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IDJcbiAgICAgICAgY29uc3Qgd2luZG93V2lkdGggPSB0aGlzLnRpdGxlLmxlbmd0aCA+IHRoaXMud2lkdGggPyB0aGlzLnRpdGxlLmxlbmd0aCArICgyICogb2Zmc2V0KSA6IHRoaXMud2lkdGggKyAoMiAqIG9mZnNldCkgKyAxXG4gICAgICAgIGNvbnN0IGhhbGZXaWR0aCA9IE1hdGgucm91bmQoKHdpbmRvd1dpZHRoIC0gdGhpcy50aXRsZS5sZW5ndGgpIC8gMilcbiAgICAgICAgY29uc3QgeCA9IE1hdGgucm91bmQoKHRoaXMuQ00uU2NyZWVuLndpZHRoIC8gMikgLSAod2luZG93V2lkdGggLyAyKSlcbiAgICAgICAgbGV0IGhlYWRlciA9IFwi4pSMXCJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB3aW5kb3dXaWR0aDsgaSsrKSB7XG4gICAgICAgICAgICBoZWFkZXIgKz0gXCLilIBcIlxuICAgICAgICB9XG4gICAgICAgIGhlYWRlciArPSBcIuKUkFxcblwiXG4gICAgICAgIGhlYWRlciArPSBg4pSCJHtcIiBcIi5yZXBlYXQoaGFsZldpZHRoKX0ke3RoaXMudGl0bGV9JHtcIiBcIi5yZXBlYXQod2luZG93V2lkdGggLSBoYWxmV2lkdGggLSB0aGlzLnRpdGxlLmxlbmd0aCl94pSCXFxuYFxuICAgICAgICBoZWFkZXIgKz0gXCLilJxcIiArIFwi4pSAXCIucmVwZWF0KHdpbmRvd1dpZHRoKSArIFwi4pSkXFxuXCJcblxuICAgICAgICBjb25zdCB3aW5kb3dEZXNpZ24gPSBgJHtoZWFkZXJ9YFxuICAgICAgICBjb25zdCBhcnJXaW5kb3dEZXNpZ24gPSB3aW5kb3dEZXNpZ24uc3BsaXQoXCJcXG5cIilcbiAgICAgICAgYXJyV2luZG93RGVzaWduLmZvckVhY2goKGxpbmUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICB0aGlzLkNNLlNjcmVlbi5jdXJzb3JUbyh4LCB0aGlzLm1hcmdpblRvcCArIGluZGV4KVxuICAgICAgICAgICAgdGhpcy5DTS5TY3JlZW4ud3JpdGUoeyB0ZXh0OiBsaW5lLCBzdHlsZTogeyBjb2xvcjogXCJ3aGl0ZVwiIH0gfSlcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgX2NvbnRlbnQgPSB0aGlzLmNvbnRlbnQuZ2V0Q29udGVudCgpXG4gICAgICAgIF9jb250ZW50LmZvckVhY2goKGxpbmU6IFN0eWxlZEVsZW1lbnRbXSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgdGhpcy5DTS5TY3JlZW4uY3Vyc29yVG8oeCwgdGhpcy5tYXJnaW5Ub3AgKyBpbmRleCArIGFycldpbmRvd0Rlc2lnbi5sZW5ndGggLSAxKVxuICAgICAgICAgICAgdGhpcy5kcmF3TGluZShsaW5lLCB3aW5kb3dXaWR0aClcbiAgICAgICAgfSlcbiAgICAgICAgdGhpcy5DTS5TY3JlZW4uY3Vyc29yVG8oeCwgdGhpcy5tYXJnaW5Ub3AgKyBfY29udGVudC5sZW5ndGggKyBhcnJXaW5kb3dEZXNpZ24ubGVuZ3RoIC0gMSlcbiAgICAgICAgdGhpcy5DTS5TY3JlZW4ud3JpdGUoeyB0ZXh0OiBg4pSUJHtcIuKUgFwiLnJlcGVhdCh3aW5kb3dXaWR0aCl94pSYYCwgc3R5bGU6IHsgY29sb3I6IFwid2hpdGVcIiB9IH0pXG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBDdXN0b21Qb3B1cCJdfQ== |
@@ -7,6 +7,6 @@ /// <reference types="node" /> | ||
* @typedef {Object} FileItemObject | ||
* @property {string} name - The name of the file. | ||
* @property {string} path - The path to the file. | ||
* @property {"dir" | "file"} type - The type of the file. | ||
* @property {string} text - The display text of the file. | ||
* @prop {string} name - The name of the file. | ||
* @prop {string} path - The path to the file. | ||
* @prop {"dir" | "file"} type - The type of the file. | ||
* @prop {string} text - The display text of the file. | ||
* | ||
@@ -134,1 +134,2 @@ * @interface FileItemObject | ||
export default FileSelectorPopup; | ||
//# sourceMappingURL=FileSelectorPopup.d.ts.map |
@@ -29,15 +29,2 @@ import { EventEmitter } from "events"; | ||
export class FileSelectorPopup extends EventEmitter { | ||
CM; | ||
id; | ||
title; | ||
basePath; | ||
currentPath; | ||
selectDirectory; | ||
allowedExtensions; | ||
limitToPath; | ||
visible; | ||
marginTop; | ||
startIndex; | ||
selected; | ||
options; | ||
constructor(id, title, basePath, selectDirectory = false, allowedExtensions = [], limitToPath = false, visible = false) { | ||
@@ -344,2 +331,2 @@ super(); | ||
export default FileSelectorPopup; | ||
//# sourceMappingURL=FileSelectorPopup.js.map | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlsZVNlbGVjdG9yUG9wdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy93aWRnZXRzL0ZpbGVTZWxlY3RvclBvcHVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFDckMsT0FBTyxFQUFFLGNBQWMsRUFBbUIsTUFBTSxxQkFBcUIsQ0FBQTtBQUNyRSxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUE7QUFDbkIsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBbUJ2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUNILE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxZQUFZO0lBZS9DLFlBQW1CLEVBQVUsRUFBRSxLQUFhLEVBQUUsUUFBZ0IsRUFBRSxlQUFlLEdBQUcsS0FBSyxFQUFFLGlCQUFpQixHQUFHLEVBQUUsRUFBRSxXQUFXLEdBQUcsS0FBSyxFQUFFLE9BQU8sR0FBRyxLQUFLO1FBQ2pKLEtBQUssRUFBRSxDQUFBO1FBQ1AsNEVBQTRFO1FBQzVFLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQTtRQUM5QixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQTtRQUNaLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO1FBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFBO1FBQzNCLElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFBO1FBQ3RDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQTtRQUMxQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQTtRQUM5QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQTtRQUNsQixJQUFJLENB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QUUsRUFBRTtZQUM3QyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLENBQUE7WUFDM0csSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQ25FLENBQUMsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxJQUFJLENBQUE7SUFDZixDQUFDO0NBQ0o7QUFFRCxlQUFlLGlCQUFpQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSBcImV2ZW50c1wiXG5pbXBvcnQgeyBDb25zb2xlTWFuYWdlciwgS2V5TGlzdGVuZXJBcmdzIH0gZnJvbSBcIi4uLy4uL0NvbnNvbGVHdWkuanNcIlxuaW1wb3J0IGZzIGZyb20gXCJmc1wiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFRoZSBmaWxlIGRlc2NyaXB0aW9ucyBmb3IgdGhlIGZpbGUgc2VsZWN0b3IgcG9wdXAuXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBGaWxlSXRlbU9iamVjdFxuICogQHByb3Age3N0cmluZ30gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBmaWxlLlxuICogQHByb3Age3N0cmluZ30gcGF0aCAtIFRoZSBwYXRoIHRvIHRoZSBmaWxlLlxuICogQHByb3Age1wiZGlyXCIgfCBcImZpbGVcIn0gdHlwZSAtIFRoZSB0eXBlIG9mIHRoZSBmaWxlLlxuICogQHByb3Age3N0cmluZ30gdGV4dCAtIFRoZSBkaXNwbGF5IHRleHQgb2YgdGhlIGZpbGUuXG4gKlxuICogQGludGVyZmFjZSBGaWxlSXRlbU9iamVjdFxuICovXG5pbnRlcmZhY2UgRmlsZUl0ZW1PYmplY3QgeyBcbiAgICB0ZXh0OiBzdHJpbmc7IFxuICAgIG5hbWU6IHN0cmluZzsgXG4gICAgdHlwZTogXCJkaXJcIiB8IFwiZmlsZVwiOyBcbiAgICBwYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQGNsYXNzIEZpbGVTZWxlY3RvclBvcHVwXG4gKiBAZXh0ZW5kcyBFdmVudEVtaXR0ZXJcbiAqIEBkZXNjcmlwdGlvbiBUaGlzIGNsYXNzIGlzIHVzZWQgdG8gY3JlYXRlIGEgcG9wdXAgd2l0aCBhIGZpbGUgaW5wdXQgdG8gc2VsZWN0IGEgZmlsZSBvciBhIGRpcmVjdG9yeS5cbiAqIEl0IHdpbGwgcnVuIGEgcHJvbWlzZSB3aXRoIGZzLnJlYWRkaXIgdG8gZ2V0IHRoZSBsaXN0IG9mIGZpbGVzIGFuZCBkaXJlY3Rvcmllcy5cbiAqIFRoZSB1c2VyIGNhbiBzZWxlY3QgYSBmaWxlIG9yIGEgZGlyZWN0b3J5IGFuZCB0aGUgcG9wdXAgd2lsbCBiZSBjbG9zZWQuIFxuICogXG4gKiAhW0ZpbGVTZWxlY3RvclBvcHVwXShodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8xNDkwNzk4Ny8xNjU5Mzg0NjQtYzE0MjYxMDItYjU5OC00MmJiLTg1OTctNjMzN2YwYmNiMDA5LmdpZilcbiAqIFxuICogRW1pdHMgdGhlIGZvbGxvd2luZyBldmVudHM6IFxuICogLSBcImNvbmZpcm1cIiB3aGVuIHRoZSB1c2VyIGNvbmZpcm0gdGhlIGZpbGUgb3IgZGlyZWN0b3J5IHNlbGVjdGlvbi4gVGhlIGZpbGUgb3IgZGlyZWN0b3J5IHBhdGggaXMgcGFzc2VkIGFzIHBhcmFtZXRlciBsaWtlIHRoaXM6IHtwYXRoOiBcInBhdGgvdG8vZmlsZVwiLCBuYW1lOiBcImZpbGUuZXh0XCJ9XG4gKiAtIFwiY2FuY2VsXCIgd2hlbiB0aGUgdXNlciBjYW5jZWwgdGhlIGZpbGUgb3IgZGlyZWN0b3J5IHNlbGVjdGlvbi5cbiAqIC0gXCJleGl0XCIgd2hlbiB0aGUgdXNlciBleGl0XG4gKiBAcGFyYW0ge3N0cmluZ30gaWQgLSBUaGUgaWQgb2YgdGhlIHBvcHVwLlxuICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIC0gVGhlIHRpdGxlIG9mIHRoZSBwb3B1cC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlUGF0aCAtIFRoZSBtYWluIHBhdGggb2YgdGhlIHBvcHVwLlxucmUgY2FzZSBzZW5zaXRpdmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtsaW1pdFRvUGF0aD1mYWxzZV0gLSBJZiB0cnVlLCB0aGUgdXNlciBjYW4gc2VsZWN0IGEgZGlyZWN0b3J5LiBPdGhlcndpc2UsIG9ubHkgZmlsZXMgYXJlIHNlbGVjdGFibGUuIFdoZW4gdHJ1ZSwgdG8gZW50ZXIgYSBkaXJlY3RvcnksIHRoZSB1c2VyIG11c3QgcHJlc3MgdGhlIHNwYWNlIGtleSBpbnN0ZWFkIG9mIHRoZSBlbnRlciBrZXkuXG4gKiBAcGFyYW0ge0FycmF5PHN0cmluZz59IFthbGxvd2VkRXh0ZW5zaW9ucz1bXV0gLSBUaGUgYWxsb3dlZCBleHRlbnNpb25zLiBJZiBub3Qgc2V0LCBhbGwgZXh0ZW5zaW9ucyBhcmUgYWxsb3dlZC4gVGhlIGV4dGVuc2lvbnMgYSBjYW4gb25seSBzZWxlY3QgZmlsZXMgaW4gdGhlIHBhdGguIElmIGZhbHNlLCB0aGUgdXNlciBjYW4gc2VsZWN0IGZpbGVzIGluIHRoZSBwYXRoIGFuZCBwYXJlbnQgZGlyZWN0b3JpZXMuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHZpc2libGUgLSBJZiB0aGUgcG9wdXAgaXMgdmlzaWJsZS4gRGVmYXVsdCBpcyBmYWxzZSAobWFrZSBpdCBhcHBlYXJzIHVzaW5nIHNob3coKSkuXG4gKiBcbiAqIEBleGFtcGxlIGNvbnN0IHBvcHVwID0gbmV3IEZpbGVTZWxlY3RvclBvcHVwKFwicG9wdXAxXCIsIFwiQ2hvb3NlIHRoZSBmaWxlXCIsIFwiLi9leGFtcGxlc1wiKS5zaG93KCkub24oXCJjb25maXJtXCIsIChzZWxlY3RlZCkgPT4geyBjb25zb2xlLmxvZyhzZWxlY3RlZCkgfSkgLy8gc2hvdyB0aGUgcG9wdXAgYW5kIHdhaXQgZm9yIHRoZSB1c2VyIHRvIGNvbmZpcm1cbiAqL1xuZXhwb3J0IGNsYXNzIEZpbGVTZWxlY3RvclBvcHVwIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgICBDTTogQ29uc29sZU1hbmFnZXJcbiAgICBpZDogc3RyaW5nXG4gICAgdGl0bGU6IHN0cmluZ1xuICAgIGJhc2VQYXRoOiBzdHJpbmdcbiAgICBjdXJyZW50UGF0aDogc3RyaW5nXG4gICAgc2VsZWN0RGlyZWN0b3J5OiBib29sZWFuXG4gICAgYWxsb3dlZEV4dGVuc2lvbnM6IHN0cmluZ1tdXG4gICAgbGltaXRUb1BhdGg6IGJvb2xlYW5cbiAgICB2aXNpYmxlOiBib29sZWFuXG4gICAgbWFyZ2luVG9wOiBudW1iZXJcbiAgICBzdGFydEluZGV4OiBudW1iZXJcbiAgICBzZWxlY3RlZDogRmlsZUl0ZW1PYmplY3RcbiAgICBvcHRpb25zOiBGaWxlSXRlbU9iamVjdFtdXG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoaWQ6IHN0cmluZywgdGl0bGU6IHN0cmluZywgYmFzZVBhdGg6IHN0cmluZywgc2VsZWN0RGlyZWN0b3J5ID0gZmFsc2UsIGFsbG93ZWRFeHRlbnNpb25zID0gW10sIGxpbWl0VG9QYXRoID0gZmFsc2UsIHZpc2libGUgPSBmYWxzZSkge1xuICAgICAgICBzdXBlcigpXG4gICAgICAgIC8qKiBAY29uc3Qge0NvbnNvbGVNYW5hZ2VyfSBDTSB0aGUgaW5zdGFuY2Ugb2YgQ29uc29sZU1hbmFnZXIgKHNpbmdsZXRvbikgKi9cbiAgICAgICAgdGhpcy5DTSA9IG5ldyBDb25zb2xlTWFuYWdlcigpXG4gICAgICAgIHRoaXMuaWQgPSBpZFxuICAgICAgICB0aGlzLnRpdGxlID0gdGl0bGVcbiAgICAgICAgdGhpcy5iYXNlUGF0aCA9IGJhc2VQYXRoXG4gICAgICAgIHRoaXMuY3VycmVudFBhdGggPSBiYXNlUGF0aFxuICAgICAgICB0aGlzLnNlbGVjdERpcmVjdG9yeSA9IHNlbGVjdERpcmVjdG9yeVxuICAgICAgICB0aGlzLmFsbG93ZWRFeHRlbnNpb25zID0gYWxsb3dlZEV4dGVuc2lvbnNcbiAgICAgICAgdGhpcy5saW1pdFRvUGF0aCA9IGxpbWl0VG9QYXRoXG4gICAgICAgIHRoaXMudmlzaWJsZSA9IHZpc2libGVcbiAgICAgICAgdGhpcy5tYXJnaW5Ub3AgPSA0XG4gICAgICAgIHRoaXMuc3RhcnRJbmRleCA9IDBcbiAgICAgICAgdGhpcy5zZWxlY3RlZCA9IHsgdGV4dDogXCIuLi9cIiwgbmFtZTogXCIuLi9cIiwgdHlwZTogXCJkaXJcIiwgcGF0aDogcGF0aC5qb2luKGJhc2VQYXRoLCBcIi4uL1wiKSB9XG4gICAgICAgIGlmICh0aGlzLkNNLndpZGdldHNDb2xsZWN0aW9uW3RoaXMuaWRdKSB7XG4gICAgICAgICAgICB0aGlzLkNNLnVuUmVnaXN0ZXJXaWRnZXQodGhpcylcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgRmlsZVNlbGVjdG9yUG9wdXAgJHt0aGlzLmlkfSBhbHJlYWR5IGV4aXN0cy5gXG4gICAgICAgICAgICB0aGlzLkNNLmVycm9yKG1lc3NhZ2UpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSlcbiAgICAgICAgfVxuICAgICAgICB0aGlzLkNNLnJlZ2lzdGVyV2lnZXQodGhpcylcbiAgICAgICAgdGhpcy5vcHRpb25zID0gW3sgdGV4dDogXCIuLi9cIiwgbmFtZTogXCIuLi9cIiwgdHlwZTogXCJkaXJcIiwgcGF0aDogcGF0aC5qb2luKGJhc2VQYXRoLCBcIi4uL1wiKSB9XVxuICAgICAgICB0aGlzLnVwZGF0ZUxpc3QodGhpcy5iYXNlUGF0aClcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGxvYWQgdGhlIGxpc3Qgb2YgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGluIHRoZSBjdXJyZW50IHBhdGguXG4gICAgaXQgcmV0dXJuIGEgcHJvbWlzZSB3aXRoIHRoZSBsaXN0IG9mIGZpbGVzIGFuZCBkaXJlY3Rvcmllcy4gVGhlIGxpc3QgaXMgYW4gYXJyYXkgb2Ygb2JqZWN0cyBsaWtlIHRoaXM6XG4gICAgW3t0ZXh0OiBcIvCfk4QgZmlsZS5leHRcIiwgbmFtZTogXCJmaWxlLmV4dFwiLCB0eXBlOiBcImZpbGVcIiwgcGF0aDogXCJwYXRoL3RvL2ZpbGUuZXh0XCJ9LCB7dGV4dDogXCLwn5OBIGRpci9cIiwgbmFtZTogXCJkaXJcIiwgdHlwZTogXCJkaXJcIiwgcGF0aDogXCJwYXRoL3RvL2RpclwifV1cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGlyIC0gVGhlIHBhdGggdG8gbG9hZCB0aGUgbGlzdC5cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcnJheTxvYmplY3Q+Pn0gVGhlIGxpc3Qgb2YgZmlsZXMgYW5kIGRpcmVjdG9yaWVzLlxuICAgICAqIEBtZW1iZXJvZiBGaWxlU2VsZWN0b3JQb3B1cFxuICAgICAqL1xuICAgIHByaXZhdGUgbGlzdERpcihkaXI6IHN0cmluZyk6IFByb21pc2U8QXJyYXk8RmlsZUl0ZW1PYmplY3Q+PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBmcy5yZWFkZGlyKGRpciwgKGVyciwgZmlsZXMpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmaWxlcy5tYXAoZmlsZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbihkaXIsIGZpbGUpXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGF0cyA9IGZzLnN0YXRTeW5jKGZpbGVQYXRoKVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNEaXJlY3RvcnkgPSBzdGF0cy5pc0RpcmVjdG9yeSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnN0IGlzRmlsZSA9IHN0YXRzLmlzRmlsZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNEaXJlY3RvcnkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB0ZXh0OiBg8J+TgSAke2ZpbGV9L2AsIG5hbWU6IGZpbGUsIHR5cGU6IFwiZGlyXCIsIHBhdGg6IGZpbGVQYXRoIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgdGV4dDogYPCfk4QgJHtmaWxlfWAsIG5hbWU6IGZpbGUsIHR5cGU6IFwiZmlsZVwiLCBwYXRoOiBmaWxlUGF0aCB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pLmZpbHRlcihmaWxlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzQWxsb3dlZCA9IHRoaXMuYWxsb3dlZEV4dGVuc2lvbnMubGVuZ3RoID09PSAwIHx8IHRoaXMuYWxsb3dlZEV4dGVuc2lvbnMuaW5jbHVkZXMocGF0aC5leHRuYW1lKGZpbGUubmFtZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3REaXJlY3RvcnkgJiYgZmlsZS50eXBlID09PSBcImZpbGVcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlzQWxsb3dlZCB8fCBmaWxlLnR5cGUgPT09IFwiZGlyXCJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQXJyYXk8RmlsZUl0ZW1PYmplY3Q+KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gY2FsbHMgdGhlIHVwZGF0ZUxpc3QgZnVuY3Rpb24gYW5kIHN0b3JlIHRoZSByZXN1bHQgdG8gdGhpcy5vcHRpb25zLCBpdCBhbHNvIHJlZnJlc2ggdGhlIGxpc3Qgb2YgZmlsZXMgYW5kIGRpcmVjdG9yaWVzLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBfcGF0aCAtIFRoZSBwYXRoIHRvIGxvYWQgdGhlIGxpc3QuXG4gICAgICogQG1lbWJlcm9mIEZpbGVTZWxlY3RvclBvcHVwXG4gICAgICovXG4gICAgcHJpdmF0ZSB1cGRhdGVMaXN0KF9wYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMubGltaXRUb1BhdGgpIHtcbiAgICAgICAgICAgIGlmICghcGF0aC5yZXNvbHZlKF9wYXRoKS5pbmNsdWRlcyhwYXRoLnJlc29sdmUodGhpcy5iYXNlUGF0aCkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50UGF0aCA9IF9wYXRoXG4gICAgICAgIHRoaXMubGlzdERpcih0aGlzLmN1cnJlbnRQYXRoKS50aGVuKChmaWxlcykgPT4ge1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gW3sgdGV4dDogXCIuLi9cIiwgbmFtZTogXCIuLi9cIiwgdHlwZTogXCJkaXJcIiwgcGF0aDogcGF0aC5qb2luKHRoaXMuY3VycmVudFBhdGgsIFwiLi4vXCIpfSBhcyBGaWxlSXRlbU9iamVjdF0uY29uY2F0KGZpbGVzKVxuICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZCh0aGlzLm9wdGlvbnNbMF0pXG4gICAgICAgICAgICB0aGlzLkNNLnJlZnJlc2goKVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHByaXZhdGUgYWRhcHRPcHRpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNsaWNlKHRoaXMuc3RhcnRJbmRleCwgdGhpcy5zdGFydEluZGV4ICsgdGhpcy5DTS5TY3JlZW4uaGVpZ2h0IC0gdGhpcy5tYXJnaW5Ub3AgLSA2KVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gbWFrZSB0aGUgQ29uc29sZU1hbmFnZXIgaGFuZGxlIHRoZSBrZXkgZXZlbnRzIHdoZW4gdGhlIHBvcHVwIGlzIHNob3dlZC5cbiAgICAgKiBJbnNpZGUgdGhpcyBmdW5jdGlvbiBhcmUgZGVmaW5lZCBhbGwgdGhlIGtleXMgdGhhdCBjYW4gYmUgcHJlc3NlZCBhbmQgdGhlIGFjdGlvbnMgdG8gZG8gd2hlbiB0aGV5IGFyZSBwcmVzc2VkLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgLSBUaGUgc3RyaW5nIG9mIHRoZSBpbnB1dC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0ga2V5IC0gVGhlIGtleSBvYmplY3QuXG4gICAgICogQG1lbWJlcm9mIEZpbGVTZWxlY3RvclBvcHVwXG4gICAgICovXG4gICAgcHVibGljIGtleUxpc3RuZXIoX3N0cjogc3RyaW5nLCBrZXk6IEtleUxpc3RlbmVyQXJncykge1xuICAgICAgICBjb25zdCBpbmQgPSB0aGlzLm9wdGlvbnMuaW5kZXhPZih0aGlzLnNlbGVjdGVkKVxuICAgICAgICBzd2l0Y2ggKGtleS5uYW1lKSB7XG4gICAgICAgIGNhc2UgXCJkb3duXCI6XG4gICAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkKHRoaXMub3B0aW9uc1soaW5kICsgMSkgJSB0aGlzLm9wdGlvbnMubGVuZ3RoXSlcbiAgICAgICAgICAgIGlmICh0aGlzLkNNLlNjcmVlbi5oZWlnaHQgLSB0aGlzLm1hcmdpblRvcCAtIDQgPCB0aGlzLm9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQgPT09IHRoaXMub3B0aW9uc1t0aGlzLmFkYXB0T3B0aW9ucygpLmxlbmd0aCArIHRoaXMuc3RhcnRJbmRleF0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydEluZGV4KytcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRJbmRleCA9IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgXCJ1cFwiOlxuICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZCh0aGlzLm9wdGlvbnNbKGluZCAtIDEgKyB0aGlzLm9wdGlvbnMubGVuZ3RoKSAlIHRoaXMub3B0aW9ucy5sZW5ndGhdKVxuICAgICAgICAgICAgaWYgKHRoaXMuc3RhcnRJbmRleCA+IDAgJiYgdGhpcy5zZWxlY3RlZCA9PT0gdGhpcy5hZGFwdE9wdGlvbnMoKVswXSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRJbmRleC0tXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIFwicGFnZWRvd25cIjpcbiAgICAgICAgICAgIGlmICh0aGlzLkNNLlNjcmVlbi5oZWlnaHQgLSB0aGlzLm1hcmdpblRvcCAtIDQgPCB0aGlzLm9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZCh0aGlzLm9wdGlvbnNbKGluZCArIHRoaXMuYWRhcHRPcHRpb25zKCkubGVuZ3RoKSAlIHRoaXMub3B0aW9ucy5sZW5ndGhdKVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXJ0SW5kZXggKyB0aGlzLmFkYXB0T3B0aW9ucygpLmxlbmd0aCA8IHRoaXMub3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydEluZGV4ICs9IHRoaXMuYWRhcHRPcHRpb25zKCkubGVuZ3RoXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydEluZGV4ID0gMFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIFwicGFnZXVwXCI6XG4gICAgICAgICAgICBpZiAodGhpcy5DTS5TY3JlZW4uaGVpZ2h0IC0gdGhpcy5tYXJnaW5Ub3AgLSA0IDwgdGhpcy5vcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWQodGhpcy5vcHRpb25zWyhpbmQgLSB0aGlzLmFkYXB0T3B0aW9ucygpLmxlbmd0aCArIHRoaXMub3B0aW9ucy5sZW5ndGgpICUgdGhpcy5vcHRpb25zLmxlbmd0aF0pXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhcnRJbmRleCA+IHRoaXMuYWRhcHRPcHRpb25zKCkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRJbmRleCAtPSB0aGlzLmFkYXB0T3B0aW9ucygpLmxlbmd0aFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRJbmRleCA9IDBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBcInJldHVyblwiOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdERpcmVjdG9yeSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZC50eXBlID09PSBcImRpclwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoXCJjb25maXJtXCIsIHsgcGF0aDogdGhpcy5zZWxlY3RlZC5wYXRoLCBuYW1lOiB0aGlzLnNlbGVjdGVkLm5hbWUgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuQ00udW5SZWdpc3RlcldpZGdldCh0aGlzKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKClcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vZGVsZXRlIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkLnR5cGUgPT09IFwiZGlyXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTGlzdCh0aGlzLnNlbGVjdGVkLnBhdGgpXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoXCJjb25maXJtXCIsIHsgcGF0aDogdGhpcy5zZWxlY3RlZC5wYXRoLCBuYW1lOiB0aGlzLnNlbGVjdGVkLm5hbWUgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuQ00udW5SZWdpc3RlcldpZGdldCh0aGlzKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKClcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vZGVsZXRlIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgXCJzcGFjZVwiOlxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQudHlwZSA9PT0gXCJkaXJcIikge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTGlzdCh0aGlzLnNlbGVjdGVkLnBhdGgpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIFwiZXNjYXBlXCI6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0KFwiY2FuY2VsXCIpXG4gICAgICAgICAgICAgICAgdGhpcy5DTS51blJlZ2lzdGVyV2lkZ2V0KHRoaXMpXG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKClcbiAgICAgICAgICAgICAgICAvL2RlbGV0ZSB0aGlzXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIFwicVwiOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRoaXMuQ00uZW1pdChcImV4aXRcIilcbiAgICAgICAgICAgICAgICB0aGlzLkNNLnVuUmVnaXN0ZXJXaWRnZXQodGhpcylcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKVxuICAgICAgICAgICAgICAgIC8vZGVsZXRlIHRoaXNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuQ00ucmVmcmVzaCgpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBnZXQgdGhlIHNlbGVjdGVkIG9wdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7RmlsZUl0ZW1PYmplY3R9IFRoZSBzZWxlY3RlZCB2YWx1ZSBvZiB0aGUgcG9wdXAuXG4gICAgICogQG1lbWJlcm9mIEZpbGVTZWxlY3RvclBvcHVwXG4gICAgICovXG4gICAgcHVibGljIGdldFNlbGVjdGVkKCk6IEZpbGVJdGVtT2JqZWN0IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGNoYW5nZSB0aGUgc2VsZWN0aW9uIG9mIHRoZSBwb3B1cC4gSXQgYWxzbyByZWZyZXNoIHRoZSBDb25zb2xlTWFuYWdlci5cbiAgICAgKiBAcGFyYW0ge0ZpbGVJdGVtT2JqZWN0fSBzZWxlY3RlZCAtIFRoZSBuZXcgdmFsdWUgb2YgdGhlIHNlbGVjdGlvbi5cbiAgICAgKiBAbWVtYmVyb2YgRmlsZVNlbGVjdG9yUG9wdXBcbiAgICAgKiBAcmV0dXJucyB7RmlsZVNlbGVjdG9yUG9wdXB9IFRoZSBpbnN0YW5jZSBvZiB0aGUgRmlsZVNlbGVjdG9yUG9wdXAuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRTZWxlY3RlZChzZWxlY3RlZCA6IEZpbGVJdGVtT2JqZWN0KTogRmlsZVNlbGVjdG9yUG9wdXAge1xuICAgICAgICB0aGlzLnNlbGVjdGVkID0gc2VsZWN0ZWRcbiAgICAgICAgdGhpcy5DTS5yZWZyZXNoKClcbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHNob3cgdGhlIHBvcHVwLiBJdCBhbHNvIHJlZ2lzdGVyIHRoZSBrZXkgZXZlbnRzIGFuZCByZWZyZXNoIHRoZSBDb25zb2xlTWFuYWdlci5cbiAgICAgKiBAcmV0dXJucyB7RmlsZVNlbGVjdG9yUG9wdXB9IFRoZSBpbnN0YW5jZSBvZiB0aGUgRmlsZVNlbGVjdG9yUG9wdXAuXG4gICAgICogQG1lbWJlcm9mIEZpbGVTZWxlY3RvclBvcHVwXG4gICAgICovXG4gICAgcHVibGljIHNob3coKTogRmlsZVNlbGVjdG9yUG9wdXAge1xuICAgICAgICBpZiAoIXRoaXMudmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5tYW5hZ2VJbnB1dCgpXG4gICAgICAgICAgICB0aGlzLnZpc2libGUgPSB0cnVlXG4gICAgICAgICAgICB0aGlzLkNNLnJlZnJlc2goKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBoaWRlIHRoZSBwb3B1cC4gSXQgYWxzbyB1bnJlZ2lzdGVyIHRoZSBrZXkgZXZlbnRzIGFuZCByZWZyZXNoIHRoZSBDb25zb2xlTWFuYWdlci5cbiAgICAgKiBAcmV0dXJucyB7RmlsZVNlbGVjdG9yUG9wdXB9IFRoZSBpbnN0YW5jZSBvZiB0aGUgRmlsZVNlbGVjdG9yUG9wdXAuXG4gICAgICogQG1lbWJlcm9mIEZpbGVTZWxlY3RvclBvcHVwXG4gICAgICovXG4gICAgcHVibGljIGhpZGUoKTogRmlsZVNlbGVjdG9yUG9wdXAge1xuICAgICAgICBpZiAodGhpcy52aXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnVuTWFuYWdlSW5wdXQoKVxuICAgICAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2VcbiAgICAgICAgICAgIHRoaXMuQ00ucmVmcmVzaCgpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGdldCB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgcG9wdXAuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFRoZSB2aXNpYmlsaXR5IG9mIHRoZSBwb3B1cC5cbiAgICAgKiBAbWVtYmVyb2YgRmlsZVNlbGVjdG9yUG9wdXBcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy52aXNpYmxlXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBhZGQgdGhlIEZpbGVTZWxlY3RvclBvcHVwIGtleSBsaXN0ZW5lciBjYWxsYmFjayB0byB0ZSBDb25zb2xlTWFuYWdlci5cbiAgICAgKiBAcmV0dXJucyB7RmlsZVNlbGVjdG9yUG9wdXB9IFRoZSBpbnN0YW5jZSBvZiB0aGUgRmlsZVNlbGVjdG9yUG9wdXAuXG4gICAgICogQG1lbWJlcm9mIEZpbGVTZWxlY3RvclBvcHVwXG4gICAgICovXG4gICAgcHJpdmF0ZSBtYW5hZ2VJbnB1dCgpOiBGaWxlU2VsZWN0b3JQb3B1cCB7XG4gICAgICAgIC8vIEFkZCBhIGNvbW1hbmQgaW5wdXQgbGlzdGVuZXIgdG8gY2hhbmdlIG1vZGVcbiAgICAgICAgdGhpcy5DTS5zZXRLZXlMaXN0ZW5lcih0aGlzLmlkLCB0aGlzLmtleUxpc3RuZXIuYmluZCh0aGlzKSlcbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHJlbW92ZSB0aGUgRmlsZVNlbGVjdG9yUG9wdXAga2V5IGxpc3RlbmVyIGNhbGxiYWNrIHRvIHRlIENvbnNvbGVNYW5hZ2VyLlxuICAgICAqIEByZXR1cm5zIHtGaWxlU2VsZWN0b3JQb3B1cH0gVGhlIGluc3RhbmNlIG9mIHRoZSBGaWxlU2VsZWN0b3JQb3B1cC5cbiAgICAgKiBAbWVtYmVyb2YgRmlsZVNlbGVjdG9yUG9wdXBcbiAgICAgKi9cbiAgICBwcml2YXRlIHVuTWFuYWdlSW5wdXQoKTogRmlsZVNlbGVjdG9yUG9wdXAge1xuICAgICAgICAvLyBBZGQgYSBjb21tYW5kIGlucHV0IGxpc3RlbmVyIHRvIGNoYW5nZSBtb2RlXG4gICAgICAgIHRoaXMuQ00ucmVtb3ZlS2V5TGlzdGVuZXIodGhpcy5pZClcbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGRyYXcgdGhlIEZpbGVTZWxlY3RvclBvcHVwIHRvIHRoZSBzY3JlZW4gaW4gdGhlIG1pZGRsZS5cbiAgICAgKiBAcmV0dXJucyB7RmlsZVNlbGVjdG9yUG9wdXB9IFRoZSBpbnN0YW5jZSBvZiB0aGUgRmlsZVNlbGVjdG9yUG9wdXAuXG4gICAgICogQG1lbWJlcm9mIEZpbGVTZWxlY3RvclBvcHVwXG4gICAgICovXG4gICAgcHVibGljIGRyYXcoKTogRmlsZVNlbGVjdG9yUG9wdXAge1xuICAgICAgICAvLyBDaGFuZ2Ugc3RhcnQgaW5kZXggaWYgc2VsZWN0ZWQgaXMgbm90IGluIHRoZSBhZGFwdE9wdGlvbnMgcmV0dXJuIGFycmF5XG4gICAgICAgIGNvbnN0IGluZCA9IHRoaXMuYWRhcHRPcHRpb25zKCkuaW5kZXhPZih0aGlzLnNlbGVjdGVkKVxuICAgICAgICBjb25zdCBpbmQxID0gdGhpcy5vcHRpb25zLmluZGV4T2YodGhpcy5zZWxlY3RlZClcbiAgICAgICAgaWYgKGluZCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRJbmRleCA9IGluZDEgLSB0aGlzLmFkYXB0T3B0aW9ucygpLmxlbmd0aCArIDEgPiAwID8gaW5kMSAtIHRoaXMuYWRhcHRPcHRpb25zKCkubGVuZ3RoICsgMSA6IDBcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvZmZzZXQgPSAyXG4gICAgICAgIGNvbnN0IG1heE9wdGlvbnNMZW5ndGggPSB0aGlzLm9wdGlvbnMubWFwKChvKSA9PiBvLnRleHQpLnJlZHVjZSgobWF4LCBvcHRpb24pID0+IE1hdGgubWF4KG1heCwgb3B0aW9uLmxlbmd0aCksIDApXG4gICAgICAgIGNvbnN0IHdpbmRvd1dpZHRoID0gbWF4T3B0aW9uc0xlbmd0aCA+IHRoaXMudGl0bGUubGVuZ3RoID8gbWF4T3B0aW9uc0xlbmd0aCArICgyICogb2Zmc2V0KSA6IHRoaXMudGl0bGUubGVuZ3RoICsgKDIgKiBvZmZzZXQpXG4gICAgICAgIGNvbnN0IGhhbGZXaWR0aCA9IE1hdGgucm91bmQoKHdpbmRvd1dpZHRoIC0gdGhpcy50aXRsZS5sZW5ndGgpIC8gMilcblxuICAgICAgICBsZXQgaGVhZGVyID0gXCLilIxcIlxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHdpbmRvd1dpZHRoOyBpKyspIHtcbiAgICAgICAgICAgIGhlYWRlciArPSBcIuKUgFwiXG4gICAgICAgIH1cbiAgICAgICAgaGVhZGVyICs9IFwi4pSQXFxuXCJcbiAgICAgICAgaGVhZGVyICs9IGDilIIke1wiIFwiLnJlcGVhdChoYWxmV2lkdGgpfSR7dGhpcy50aXRsZX0ke1wiIFwiLnJlcGVhdCh3aW5kb3dXaWR0aCAtIGhhbGZXaWR0aCAtIHRoaXMudGl0bGUubGVuZ3RoKX3ilIJcXG5gXG4gICAgICAgIGhlYWRlciArPSBcIuKUnFwiICsgXCLilIBcIi5yZXBlYXQod2luZG93V2lkdGgpICsgXCLilKRcXG5cIlxuXG4gICAgICAgIGxldCBmb290ZXIgPSBcIuKUlFwiXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgd2luZG93V2lkdGg7IGkrKykge1xuICAgICAgICAgICAgZm9vdGVyICs9IFwi4pSAXCJcbiAgICAgICAgfVxuICAgICAgICBmb290ZXIgKz0gXCLilJhcXG5cIlxuXG4gICAgICAgIGxldCBjb250ZW50ID0gXCJcIlxuICAgICAgICB0aGlzLmFkYXB0T3B0aW9ucygpLmZvckVhY2goKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgY29udGVudCArPSBg4pSCJHtvcHRpb24ubmFtZSA9PT0gdGhpcy5zZWxlY3RlZC5uYW1lID8gXCI8XCIgOiBcIiBcIn0gJHtvcHRpb24udGV4dH0ke29wdGlvbi5uYW1lID09PSB0aGlzLnNlbGVjdGVkLm5hbWUgPyBcIiA+XCIgOiBcIiAgXCJ9JHtcIiBcIi5yZXBlYXQod2luZG93V2lkdGggLSBvcHRpb24udGV4dC50b1N0cmluZygpLmxlbmd0aCAtIDQpfeKUglxcbmBcbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCB3aW5kb3dEZXNpZ24gPSBgJHtoZWFkZXJ9JHtjb250ZW50fSR7Zm9vdGVyfWBcbiAgICAgICAgd2luZG93RGVzaWduLnNwbGl0KFwiXFxuXCIpLmZvckVhY2goKGxpbmUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICB0aGlzLkNNLlNjcmVlbi5jdXJzb3JUbyhNYXRoLnJvdW5kKCh0aGlzLkNNLlNjcmVlbi53aWR0aCAvIDIpIC0gKHdpbmRvd1dpZHRoIC8gMikpLCB0aGlzLm1hcmdpblRvcCArIGluZGV4KVxuICAgICAgICAgICAgdGhpcy5DTS5TY3JlZW4ud3JpdGUoeyB0ZXh0OiBsaW5lLCBzdHlsZTogeyBjb2xvcjogXCJ3aGl0ZVwiIH0gfSlcbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEZpbGVTZWxlY3RvclBvcHVwIl19 |
@@ -99,1 +99,2 @@ /// <reference types="node" /> | ||
export default InputPopup; | ||
//# sourceMappingURL=InputPopup.d.ts.map |
@@ -23,9 +23,2 @@ import { EventEmitter } from "events"; | ||
export class InputPopup extends EventEmitter { | ||
CM; | ||
id; | ||
title; | ||
value; | ||
numeric; | ||
visible; | ||
marginTop; | ||
constructor(id, title, value, numeric, visible = false) { | ||
@@ -292,2 +285,2 @@ super(); | ||
export default InputPopup; | ||
//# sourceMappingURL=InputPopup.js.map | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5wdXRQb3B1cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3dpZGdldHMvSW5wdXRQb3B1cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxjQUFjLEVBQW1CLE1BQU0scUJBQXFCLENBQUE7QUFFckU7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUNILE1BQU0sT0FBTyxVQUFXLFNBQVEsWUFBWTtJQVN4QyxZQUFtQixFQUFVLEVBQUUsS0FBYSxFQUFFLEtBQXNCLEVBQUUsT0FBZ0IsRUFBRSxPQUFPLEdBQUcsS0FBSztRQUNuRyxLQUFLLEVBQUUsQ0FBQTtRQUNQLDRFQUE0RTtRQUM1RSxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksY0FBYyxFQUFFLENBQUE7UUFDOUIsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUE7UUFDWixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtRQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtRQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQTtRQUNsQixJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ3BDLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDOUIsTUFBTSxPQUFPLEdBQUcsY0FBYyxJQUFJLENBQUMsRUFBRSxrQkFBa0IsQ0FBQTtZQUN2RCxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1NBQzNCO1FBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDL0IsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGlCQUFpQixDQUFDLElBQVksRUFBRSxHQUFvQjtRQUN2RCxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzFCLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNqQixDQUFDLEdBQUcsQ0FBQyxDQUFBO1NBQ1I7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7WUFDakMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRTtnQkFDMUIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQTtnQkFDL0IsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUE7Z0JBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7YUFDM0I7WUFDRCxzREFBc0Q7U0FDekQ7YUFBTSxJQUFJLEdBQUcsQ0FBQyxRQUFRLEtBQUssR0FBRyxFQUFFO1lBQzdCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1NBQ3RCO2FBQU0sSUFBSSxHQUFHLENBQUMsUUFBUSxLQUFLLEdBQUcsRUFBRTtZQUM3QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7U0FDM0I7YUFBTSxJQUFJLEdBQUcsQ0FBQyxRQUFRLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxRQUFRLEtBQUssR0FBRyxFQUFFO1lBQ3JELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQzNDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQTthQUN2QjtTQUNKO2FBQU07WUFDSCxRQUFRLEdBQUcsQ0FBQyxJQUFJLEVBQUU7Z0JBQ2xCLEtBQUssV0FBVztvQkFDWiwyRUFBMkU7b0JBQzNFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO3dCQUNsQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTs0QkFDekUsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUE7eUJBQzVCOzZCQUFNLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFOzRCQUNoRixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQTt5QkFDaEY7NkJBQU07NEJBQ0gsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO3lCQUN0RTtxQkFDSjtvQkFDRCxNQUFLO2dCQUNULEtBQUssUUFBUTtvQkFDVDt3QkFDSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7d0JBQ3hDLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUE7d0JBQzlCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTt3QkFDWCxhQUFhO3FCQUNoQjtvQkFDRCxNQUFLO2dCQUNULEtBQUssUUFBUTtvQkFDVDt3QkFDSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO3dCQUNuQixJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFBO3dCQUM5QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUE7d0JBQ1gsYUFBYTtxQkFDaEI7b0JBQ0QsTUFBSztnQkFDVCxLQUFLLEdBQUc7b0JBQ0o7d0JBQ0ksSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7d0JBQ3BCLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUE7d0JBQzlCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTt3QkFDWCxhQUFhO3FCQUNoQjtvQkFDRCxNQUFLO2dCQUNUO29CQUNJLE1BQUs7YUFDUjtTQUNKO1FBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUNyQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksY0FBYyxDQUFDLElBQVksRUFBRSxHQUFvQjtRQUNwRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFBO1FBQ3BCLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUU7WUFDMUIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFBO1lBQ3RCLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFBO1lBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUE7U0FDbkI7UUFDRCxRQUFRLEdBQUcsQ0FBQyxJQUFJLEVBQUU7WUFDbEIsS0FBSyxXQUFXO2dCQUNaLDJFQUEyRTtnQkFDM0UsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDekIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFBO2lCQUM5RDtnQkFDRCxNQUFLO1lBQ1QsS0FBSyxRQUFRO2dCQUNUO29CQUNJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtvQkFDaEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQTtvQkFDOUIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO29CQUNYLGFBQWE7aUJBQ2hCO2dCQUNELE1BQUs7WUFDVCxLQUFLLFFBQVE7Z0JBQ1Q7b0JBQ0ksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtvQkFDbkIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQTtvQkFDOUIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO29CQUNYLGFBQWE7aUJBQ2hCO2dCQUNELE1BQUs7WUFDVCxLQUFLLEdBQUc7Z0JBQ0o7b0JBQ0ksSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7b0JBQ3BCLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUE7b0JBQzlCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtvQkFDWCxhQUFhO2lCQUNoQjtnQkFDRCxNQUFLO1lBQ1Q7Z0JBQ0ksTUFBSztTQUNSO1FBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUNyQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFFBQVE7UUFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUE7SUFDckIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksUUFBUSxDQUFDLFFBQXlCO1FBQ3JDLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFBO1FBQ3JCLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDakIsT0FBTyxJQUFJLENBQUE7SUFDZixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLElBQUk7UUFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNmLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQTtZQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQTtZQUNuQixJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFBO1NBQ3BCO1FBQ0QsT0FBTyxJQUFJLENBQUE7SUFDZixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLElBQUk7UUFDUCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7WUFDcEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUE7WUFDcEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtTQUNwQjtRQUNELE9BQU8sSUFBSSxDQUFBO0lBQ2YsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxTQUFTO1FBQ1osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQ3ZCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssV0FBVztRQUNmLDhDQUE4QztRQUM5QyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZCxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtTQUNyRTthQUFNO1lBQ0gsSUFBSSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1NBQ2xFO1FBQ0QsT0FBTyxJQUFJLENBQUE7SUFDZixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGFBQWE7UUFDakIsOENBQThDO1FBQzlDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNkLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQSx1Q0FBdUMsQ0FBQyxDQUFBO1NBQzVFO2FBQU07WUFDSCxJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUEsb0NBQW9DLENBQUMsQ0FBQTtTQUN6RTtRQUNELE9BQU8sSUFBSSxDQUFBO0lBQ2YsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxJQUFJO1FBQ1AsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFBO1FBQ2hCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ3pKLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUNuRSxJQUFJLE1BQU0sR0FBRyxHQUFHLENBQUE7UUFDaEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNsQyxNQUFNLElBQUksR0FBRyxDQUFBO1NBQ2hCO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQTtRQUNmLE1BQU0sSUFBSSxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFdBQVcsR0FBRyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFBO1FBQy9HLE1BQU0sSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxLQUFLLENBQUE7UUFFL0MsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFBO1FBQ2hCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbEMsTUFBTSxJQUFJLEdBQUcsQ0FBQTtTQUNoQjtRQUNELE1BQU0sSUFBSSxLQUFLLENBQUE7UUFFZixJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUE7UUFDaEIsc0JBQXNCO1FBQ3RCLE9BQU8sSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUE7UUFFbkcsTUFBTSxZQUFZLEdBQUcsR0FBRyxNQUFNLEdBQUcsT0FBTyxHQUFHLE1BQU0sRUFBRSxDQUFBO1FBQ25ELFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQzdDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQTtZQUMzRyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDbkUsQ0FBQyxDQUFDLENBQUE7UUFDRixPQUFPLElBQUksQ0FBQTtJQUNmLENBQUM7Q0FDSjtBQUVELGVBQWUsVUFBVSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSBcImV2ZW50c1wiXG5pbXBvcnQgeyBDb25zb2xlTWFuYWdlciwgS2V5TGlzdGVuZXJBcmdzIH0gZnJvbSBcIi4uLy4uL0NvbnNvbGVHdWkuanNcIlxuXG4vKipcbiAqIEBjbGFzcyBJbnB1dFBvcHVwXG4gKiBAZXh0ZW5kcyBFdmVudEVtaXR0ZXJcbiAqIEBkZXNjcmlwdGlvbiBUaGlzIGNsYXNzIGlzIHVzZWQgdG8gY3JlYXRlIGEgcG9wdXAgd2l0aCBhIHRleHQgb3IgbnVtZXJpYyBpbnB1dC4gXG4gKiBcbiAqICFbSW5wdXRQb3B1cF0oaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vMTQ5MDc5ODcvMTY1NzUyMjgxLWU4MzZiODYyLWE1NGEtNDhkNS1iNGU3LTk1NDM3NGQ2NTA5Zi5naWYpXG4gKiBcbiAqIEVtaXRzIHRoZSBmb2xsb3dpbmcgZXZlbnRzOiBcbiAqIC0gXCJjb25maXJtXCIgd2hlbiB0aGUgdXNlciBjb25maXJtIHRoZSBpbnB1dFxuICogLSBcImNhbmNlbFwiIHdoZW4gdGhlIHVzZXIgY2FuY2VsIHRoZSBpbnB1dFxuICogLSBcImV4aXRcIiB3aGVuIHRoZSB1c2VyIGV4aXQgdGhlIGlucHV0XG4gKiBAcGFyYW0ge3N0cmluZ30gaWQgLSBUaGUgaWQgb2YgdGhlIHBvcHVwLlxuICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIC0gVGhlIHRpdGxlIG9mIHRoZSBwb3B1cC5cbiAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSB2YWx1ZSAtIFRoZSB2YWx1ZSBvZiB0aGUgaW5wdXQuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG51bWVyaWMgLSBJZiB0aGUgaW5wdXQgaXMgbnVtZXJpYy5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gdmlzaWJsZSAtIElmIHRoZSBwb3B1cCBpcyB2aXNpYmxlLiBEZWZhdWx0IGlzIGZhbHNlIChtYWtlIGl0IGFwcGVhcnMgdXNpbmcgc2hvdygpKS5cbiAqIFxuICogQGV4YW1wbGUgY29uc3QgcG9wdXAgPSBuZXcgSW5wdXRQb3B1cChcInBvcHVwMVwiLCBcIkNob29zZSB0aGUgbnVtYmVyXCIsIHNlbGVjdGVkTnVtYmVyLCB0cnVlKS5zaG93KCkub24oXCJjb25maXJtXCIsICh2YWx1ZSkgPT4geyBjb25zb2xlLmxvZyh2YWx1ZSkgfSkgLy8gc2hvdyB0aGUgcG9wdXAgYW5kIHdhaXQgZm9yIHRoZSB1c2VyIHRvIGNvbmZpcm1cbiAqL1xuZXhwb3J0IGNsYXNzIElucHV0UG9wdXAgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICAgIENNOiBDb25zb2xlTWFuYWdlclxuICAgIGlkOiBzdHJpbmdcbiAgICB0aXRsZTogc3RyaW5nXG4gICAgdmFsdWU6IHN0cmluZyB8IG51bWJlclxuICAgIG51bWVyaWM6IGJvb2xlYW5cbiAgICB2aXNpYmxlOiBib29sZWFuXG4gICAgbWFyZ2luVG9wOiBudW1iZXJcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihpZDogc3RyaW5nLCB0aXRsZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyLCBudW1lcmljOiBib29sZWFuLCB2aXNpYmxlID0gZmFsc2UpIHtcbiAgICAgICAgc3VwZXIoKVxuICAgICAgICAvKiogQGNvbnN0IHtDb25zb2xlTWFuYWdlcn0gQ00gdGhlIGluc3RhbmNlIG9mIENvbnNvbGVNYW5hZ2VyIChzaW5nbGV0b24pICovXG4gICAgICAgIHRoaXMuQ00gPSBuZXcgQ29uc29sZU1hbmFnZXIoKVxuICAgICAgICB0aGlzLmlkID0gaWRcbiAgICAgICAgdGhpcy50aXRsZSA9IHRpdGxlXG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZVxuICAgICAgICB0aGlzLm51bWVyaWMgPSBudW1lcmljXG4gICAgICAgIHRoaXMudmlzaWJsZSA9IHZpc2libGVcbiAgICAgICAgdGhpcy5tYXJnaW5Ub3AgPSA0XG4gICAgICAgIGlmICh0aGlzLkNNLndpZGdldHNDb2xsZWN0aW9uW3RoaXMuaWRdKSB7XG4gICAgICAgICAgICB0aGlzLkNNLnVuUmVnaXN0ZXJXaWRnZXQodGhpcylcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgSW5wdXRQb3B1cCAke3RoaXMuaWR9IGFscmVhZHkgZXhpc3RzLmBcbiAgICAgICAgICAgIHRoaXMuQ00uZXJyb3IobWVzc2FnZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuQ00ucmVnaXN0ZXJXaWdldCh0aGlzKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gbWFrZSB0aGUgQ29uc29sZU1hbmFnZXIgaGFuZGxlIHRoZSBrZXkgZXZlbnRzIHdoZW4gdGhlIGlucHV0IGlzIG51bWVyaWMgYW5kIGl0IGlzIHNob3dlZC5cbiAgICAgKiBJbnNpZGUgdGhpcyBmdW5jdGlvbiBhcmUgZGVmaW5lZCBhbGwgdGhlIGtleXMgdGhhdCBjYW4gYmUgcHJlc3NlZCBhbmQgdGhlIGFjdGlvbnMgdG8gZG8gd2hlbiB0aGV5IGFyZSBwcmVzc2VkLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBfc3RyIC0gVGhlIHN0cmluZyBvZiB0aGUgaW5wdXQuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGtleSAtIFRoZSBrZXkgb2JqZWN0LlxuICAgICAqIEBtZW1iZXJvZiBJbnB1dFBvcHVwXG4gICAgICovXG4gICAgcHVibGljIGtleUxpc3RuZXJOdW1lcmljKF9zdHI6IHN0cmluZywga2V5OiBLZXlMaXN0ZW5lckFyZ3MpOiB2b2lkIHtcbiAgICAgICAgbGV0IHYgPSBOdW1iZXIodGhpcy52YWx1ZSlcbiAgICAgICAgaWYgKE51bWJlci5pc05hTih2KSkge1xuICAgICAgICAgICAgdiA9IDBcbiAgICAgICAgfVxuICAgICAgICBpZiAoIU51bWJlci5pc05hTihOdW1iZXIoa2V5Lm5hbWUpKSkge1xuICAgICAgICAgICAgaWYgKHYudG9TdHJpbmcoKS5sZW5ndGggPCAyMCkge1xuICAgICAgICAgICAgICAgIGxldCB0bXAgPSB0aGlzLnZhbHVlLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICB0bXAgKz0ga2V5Lm5hbWVcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gTnVtYmVyKHRtcClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFRvIGNoYW5nZSB0aGUgc2lnbiBJIGNoZWNrIGZvciB0aGUga2V5cyBcIitcIiBhbmQgXCItXCJcbiAgICAgICAgfSBlbHNlIGlmIChrZXkuc2VxdWVuY2UgPT09IFwiLVwiKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdiAqIC0xXG4gICAgICAgIH0gZWxzZSBpZiAoa2V5LnNlcXVlbmNlID09PSBcIitcIikge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IE1hdGguYWJzKHYpXG4gICAgICAgIH0gZWxzZSBpZiAoa2V5LnNlcXVlbmNlID09PSBcIi5cIiB8fCBrZXkuc2VxdWVuY2UgPT09IFwiLFwiKSB7XG4gICAgICAgICAgICBpZiAodGhpcy52YWx1ZS50b1N0cmluZygpLmluZGV4T2YoXCIuXCIpID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2ICsgXCIuXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN3aXRjaCAoa2V5Lm5hbWUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJiYWNrc3BhY2VcIjpcbiAgICAgICAgICAgICAgICAvLyBJZiBiYWNrc3BhY2UgaXMgcHJlc3NlZCBJIHJlbW92ZSB0aGUgbGFzdCBjaGFyYWN0ZXIgZnJvbSB0aGUgdHlwZWQgdmFsdWVcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52YWx1ZS50b1N0cmluZygpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUudG9TdHJpbmcoKS5pbmRleE9mKFwiLlwiKSA9PT0gdGhpcy52YWx1ZS50b1N0cmluZygpLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2LnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZhbHVlLnRvU3RyaW5nKCkuaW5kZXhPZihcIi5cIikgPT09IHRoaXMudmFsdWUudG9TdHJpbmcoKS5sZW5ndGggLSAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS50b1N0cmluZygpLnNsaWNlKDAsIHRoaXMudmFsdWUudG9TdHJpbmcoKS5sZW5ndGggLSAxKVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IE51bWJlcih2LnRvU3RyaW5nKCkuc2xpY2UoMCwgdi50b1N0cmluZygpLmxlbmd0aCAtIDEpKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICBjYXNlIFwicmV0dXJuXCI6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoXCJjb25maXJtXCIsIE51bWJlcih0aGlzLnZhbHVlKSlcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5DTS51blJlZ2lzdGVyV2lkZ2V0KHRoaXMpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpXG4gICAgICAgICAgICAgICAgICAgIC8vZGVsZXRlIHRoaXNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIGNhc2UgXCJlc2NhcGVcIjpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW1pdChcImNhbmNlbFwiKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLkNNLnVuUmVnaXN0ZXJXaWRnZXQodGhpcylcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKClcbiAgICAgICAgICAgICAgICAgICAgLy9kZWxldGUgdGhpc1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgY2FzZSBcInFcIjpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuQ00uZW1pdChcImV4aXRcIilcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5DTS51blJlZ2lzdGVyV2lkZ2V0KHRoaXMpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpXG4gICAgICAgICAgICAgICAgICAgIC8vZGVsZXRlIHRoaXNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLkNNLnJlZnJlc2goKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gbWFrZSB0aGUgQ29uc29sZU1hbmFnZXIgaGFuZGxlIHRoZSBrZXkgZXZlbnRzIHdoZW4gdGhlIGlucHV0IGlzIHRleHQgYW5kIGl0IGlzIHNob3dlZC5cbiAgICAgKiBJbnNpZGUgdGhpcyBmdW5jdGlvbiBhcmUgZGVmaW5lZCBhbGwgdGhlIGtleXMgdGhhdCBjYW4gYmUgcHJlc3NlZCBhbmQgdGhlIGFjdGlvbnMgdG8gZG8gd2hlbiB0aGV5IGFyZSBwcmVzc2VkLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBfc3RyIC0gVGhlIHN0cmluZyBvZiB0aGUgaW5wdXQuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGtleSAtIFRoZSBrZXkgb2JqZWN0LlxuICAgICAqIEBtZW1iZXJvZiBJbnB1dFBvcHVwXG4gICAgICovXG4gICAgcHVibGljIGtleUxpc3RuZXJUZXh0KF9zdHI6IHN0cmluZywga2V5OiBLZXlMaXN0ZW5lckFyZ3MpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdiA9IHRoaXMudmFsdWVcbiAgICAgICAgaWYgKHYudG9TdHJpbmcoKS5sZW5ndGggPCAyMCkge1xuICAgICAgICAgICAgbGV0IHRtcCA9IHYudG9TdHJpbmcoKVxuICAgICAgICAgICAgdG1wICs9IGtleS5uYW1lXG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdG1wXG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChrZXkubmFtZSkge1xuICAgICAgICBjYXNlIFwiYmFja3NwYWNlXCI6XG4gICAgICAgICAgICAvLyBJZiBiYWNrc3BhY2UgaXMgcHJlc3NlZCBJIHJlbW92ZSB0aGUgbGFzdCBjaGFyYWN0ZXIgZnJvbSB0aGUgdHlwZWQgdmFsdWVcbiAgICAgICAgICAgIGlmICh2LnRvU3RyaW5nKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2LnRvU3RyaW5nKCkuc2xpY2UoMCwgdi50b1N0cmluZygpLmxlbmd0aCAtIDEpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIFwicmV0dXJuXCI6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0KFwiY29uZmlybVwiLCB0aGlzLnZhbHVlKVxuICAgICAgICAgICAgICAgIHRoaXMuQ00udW5SZWdpc3RlcldpZGdldCh0aGlzKVxuICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpXG4gICAgICAgICAgICAgICAgLy9kZWxldGUgdGhpc1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBcImVzY2FwZVwiOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdChcImNhbmNlbFwiKVxuICAgICAgICAgICAgICAgIHRoaXMuQ00udW5SZWdpc3RlcldpZGdldCh0aGlzKVxuICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpXG4gICAgICAgICAgICAgICAgLy9kZWxldGUgdGhpc1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBcInFcIjpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aGlzLkNNLmVtaXQoXCJleGl0XCIpXG4gICAgICAgICAgICAgICAgdGhpcy5DTS51blJlZ2lzdGVyV2lkZ2V0KHRoaXMpXG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKClcbiAgICAgICAgICAgICAgICAvL2RlbGV0ZSB0aGlzXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLkNNLnJlZnJlc2goKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZ2V0IHRoZSB2YWx1ZSBvZiB0aGUgaW5wdXQuXG4gICAgICogQHJldHVybnMge3N0cmluZyB8IG51bWJlcn0gVGhlIHZhbHVlIG9mIHRoZSBpbnB1dC5cbiAgICAgKiBAbWVtYmVyb2YgSW5wdXRQb3B1cFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRWYWx1ZSgpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY2hhbmdlIHRoZSB2YWx1ZSBvZiB0aGUgaW5wdXQuIEl0IGFsc28gcmVmcmVzaCB0aGUgQ29uc29sZU1hbmFnZXIuXG4gICAgICogQHBhcmFtIHtzdHJpbmcgfCBudW1iZXJ9IG5ld1ZhbHVlIC0gVGhlIG5ldyB2YWx1ZSBvZiB0aGUgaW5wdXQuXG4gICAgICogQG1lbWJlcm9mIElucHV0UG9wdXBcbiAgICAgKiBAcmV0dXJucyB7SW5wdXRQb3B1cH0gVGhlIGluc3RhbmNlIG9mIHRoZSBJbnB1dFBvcHVwLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRWYWx1ZShuZXdWYWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogdGhpcyB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBuZXdWYWx1ZVxuICAgICAgICB0aGlzLkNNLnJlZnJlc2goKVxuICAgICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gc2hvdyB0aGUgcG9wdXAuIEl0IGFsc28gcmVnaXN0ZXIgdGhlIGtleSBldmVudHMgYW5kIHJlZnJlc2ggdGhlIENvbnNvbGVNYW5hZ2VyLlxuICAgICAqIEByZXR1cm5zIHtJbnB1dFBvcHVwfSBUaGUgaW5zdGFuY2Ugb2YgdGhlIElucHV0UG9wdXAuXG4gICAgICogQG1lbWJlcm9mIElucHV0UG9wdXBcbiAgICAgKi9cbiAgICBwdWJsaWMgc2hvdygpOiBJbnB1dFBvcHVwIHtcbiAgICAgICAgaWYgKCF0aGlzLnZpc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMubWFuYWdlSW5wdXQoKVxuICAgICAgICAgICAgdGhpcy52aXNpYmxlID0gdHJ1ZVxuICAgICAgICAgICAgdGhpcy5DTS5yZWZyZXNoKClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gaGlkZSB0aGUgcG9wdXAuIEl0IGFsc28gdW5yZWdpc3RlciB0aGUga2V5IGV2ZW50cyBhbmQgcmVmcmVzaCB0aGUgQ29uc29sZU1hbmFnZXIuXG4gICAgICogQHJldHVybnMge0lucHV0UG9wdXB9IFRoZSBpbnN0YW5jZSBvZiB0aGUgSW5wdXRQb3B1cC5cbiAgICAgKiBAbWVtYmVyb2YgSW5wdXRQb3B1cFxuICAgICAqL1xuICAgIHB1YmxpYyBoaWRlKCk6IElucHV0UG9wdXAge1xuICAgICAgICBpZiAodGhpcy52aXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnVuTWFuYWdlSW5wdXQoKVxuICAgICAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2VcbiAgICAgICAgICAgIHRoaXMuQ00ucmVmcmVzaCgpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGdldCB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgcG9wdXAuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFRoZSB2aXNpYmlsaXR5IG9mIHRoZSBwb3B1cC5cbiAgICAgKiBAbWVtYmVyb2YgSW5wdXRQb3B1cFxuICAgICAqL1xuICAgIHB1YmxpYyBpc1Zpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpc2libGVcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGFkZCB0aGUgSW5wdXRQb3B1cCBrZXkgbGlzdGVuZXIgY2FsbGJhY2sgdG8gdGUgQ29uc29sZU1hbmFnZXIuXG4gICAgICogQHJldHVybnMge0lucHV0UG9wdXB9IFRoZSBpbnN0YW5jZSBvZiB0aGUgSW5wdXRQb3B1cC5cbiAgICAgKiBAbWVtYmVyb2YgSW5wdXRQb3B1cFxuICAgICAqL1xuICAgIHByaXZhdGUgbWFuYWdlSW5wdXQoKTogSW5wdXRQb3B1cCB7XG4gICAgICAgIC8vIEFkZCBhIGNvbW1hbmQgaW5wdXQgbGlzdGVuZXIgdG8gY2hhbmdlIG1vZGVcbiAgICAgICAgaWYgKHRoaXMubnVtZXJpYykge1xuICAgICAgICAgICAgdGhpcy5DTS5zZXRLZXlMaXN0ZW5lcih0aGlzLmlkLCB0aGlzLmtleUxpc3RuZXJOdW1lcmljLmJpbmQodGhpcykpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLkNNLnNldEtleUxpc3RlbmVyKHRoaXMuaWQsIHRoaXMua2V5TGlzdG5lclRleHQuYmluZCh0aGlzKSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmVtb3ZlIHRoZSBJbnB1dFBvcHVwIGtleSBsaXN0ZW5lciBjYWxsYmFjayB0byB0ZSBDb25zb2xlTWFuYWdlci5cbiAgICAgKiBAcmV0dXJucyB7SW5wdXRQb3B1cH0gVGhlIGluc3RhbmNlIG9mIHRoZSBJbnB1dFBvcHVwLlxuICAgICAqIEBtZW1iZXJvZiBJbnB1dFBvcHVwXG4gICAgICovXG4gICAgcHJpdmF0ZSB1bk1hbmFnZUlucHV0KCk6IElucHV0UG9wdXAge1xuICAgICAgICAvLyBBZGQgYSBjb21tYW5kIGlucHV0IGxpc3RlbmVyIHRvIGNoYW5nZSBtb2RlXG4gICAgICAgIGlmICh0aGlzLm51bWVyaWMpIHtcbiAgICAgICAgICAgIHRoaXMuQ00ucmVtb3ZlS2V5TGlzdGVuZXIodGhpcy5pZC8qLCB0aGlzLmtleUxpc3RuZXJOdW1lcmljLmJpbmQodGhpcykqLylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuQ00ucmVtb3ZlS2V5TGlzdGVuZXIodGhpcy5pZC8qLCB0aGlzLmtleUxpc3RuZXJUZXh0LmJpbmQodGhpcykqLylcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZHJhdyB0aGUgSW5wdXRQb3B1cCB0byB0aGUgc2NyZWVuIGluIHRoZSBtaWRkbGUuXG4gICAgICogQHJldHVybnMge0lucHV0UG9wdXB9IFRoZSBpbnN0YW5jZSBvZiB0aGUgSW5wdXRQb3B1cC5cbiAgICAgKiBAbWVtYmVyb2YgSW5wdXRQb3B1cFxuICAgICAqL1xuICAgIHB1YmxpYyBkcmF3KCk6IElucHV0UG9wdXAge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSAyXG4gICAgICAgIGNvbnN0IHdpbmRvd1dpZHRoID0gdGhpcy50aXRsZS5sZW5ndGggPiB0aGlzLnZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoID8gdGhpcy50aXRsZS5sZW5ndGggKyAoMiAqIG9mZnNldCkgOiB0aGlzLnZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoICsgKDIgKiBvZmZzZXQpICsgMVxuICAgICAgICBjb25zdCBoYWxmV2lkdGggPSBNYXRoLnJvdW5kKCh3aW5kb3dXaWR0aCAtIHRoaXMudGl0bGUubGVuZ3RoKSAvIDIpXG4gICAgICAgIGxldCBoZWFkZXIgPSBcIuKUjFwiXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgd2luZG93V2lkdGg7IGkrKykge1xuICAgICAgICAgICAgaGVhZGVyICs9IFwi4pSAXCJcbiAgICAgICAgfVxuICAgICAgICBoZWFkZXIgKz0gXCLilJBcXG5cIlxuICAgICAgICBoZWFkZXIgKz0gYOKUgiR7XCIgXCIucmVwZWF0KGhhbGZXaWR0aCl9JHt0aGlzLnRpdGxlfSR7XCIgXCIucmVwZWF0KHdpbmRvd1dpZHRoIC0gaGFsZldpZHRoIC0gdGhpcy50aXRsZS5sZW5ndGgpfeKUglxcbmBcbiAgICAgICAgaGVhZGVyICs9IFwi4pScXCIgKyBcIuKUgFwiLnJlcGVhdCh3aW5kb3dXaWR0aCkgKyBcIuKUpFxcblwiXG5cbiAgICAgICAgbGV0IGZvb3RlciA9IFwi4pSUXCJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB3aW5kb3dXaWR0aDsgaSsrKSB7XG4gICAgICAgICAgICBmb290ZXIgKz0gXCLilIBcIlxuICAgICAgICB9XG4gICAgICAgIGZvb3RlciArPSBcIuKUmFxcblwiXG5cbiAgICAgICAgbGV0IGNvbnRlbnQgPSBcIlwiXG4gICAgICAgIC8vIERyYXcgYW4gaW5wdXQgZmllbGRcbiAgICAgICAgY29udGVudCArPSBg4pSCJHtcIj4gXCJ9JHt0aGlzLnZhbHVlfeKWiCR7XCIgXCIucmVwZWF0KHdpbmRvd1dpZHRoIC0gdGhpcy52YWx1ZS50b1N0cmluZygpLmxlbmd0aCAtIDMpfeKUglxcbmBcblxuICAgICAgICBjb25zdCB3aW5kb3dEZXNpZ24gPSBgJHtoZWFkZXJ9JHtjb250ZW50fSR7Zm9vdGVyfWBcbiAgICAgICAgd2luZG93RGVzaWduLnNwbGl0KFwiXFxuXCIpLmZvckVhY2goKGxpbmUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICB0aGlzLkNNLlNjcmVlbi5jdXJzb3JUbyhNYXRoLnJvdW5kKCh0aGlzLkNNLlNjcmVlbi53aWR0aCAvIDIpIC0gKHdpbmRvd1dpZHRoIC8gMikpLCB0aGlzLm1hcmdpblRvcCArIGluZGV4KVxuICAgICAgICAgICAgdGhpcy5DTS5TY3JlZW4ud3JpdGUoeyB0ZXh0OiBsaW5lLCBzdHlsZTogeyBjb2xvcjogXCJ3aGl0ZVwiIH0gfSlcbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IElucHV0UG9wdXAiXX0= |
@@ -93,1 +93,2 @@ /// <reference types="node" /> | ||
export default OptionPopup; | ||
//# sourceMappingURL=OptionPopup.d.ts.map |
@@ -23,10 +23,2 @@ import { EventEmitter } from "events"; | ||
export class OptionPopup extends EventEmitter { | ||
CM; | ||
id; | ||
title; | ||
options; | ||
selected; | ||
visible; | ||
marginTop; | ||
startIndex; | ||
constructor(id, title, options, selected, visible = false) { | ||
@@ -249,2 +241,2 @@ super(); | ||
export default OptionPopup; | ||
//# sourceMappingURL=OptionPopup.js.map | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3B0aW9uUG9wdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy93aWRnZXRzL09wdGlvblBvcHVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFDckMsT0FBTyxFQUFFLGNBQWMsRUFBbUIsTUFBTSxxQkFBcUIsQ0FBQTtBQUVyRTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0gsTUFBTSxPQUFPLFdBQVksU0FBUSxZQUFZO0lBVXpDLFlBQW1CLEVBQVUsRUFBRSxLQUFhLEVBQUUsT0FBK0IsRUFBRSxRQUF5QixFQUFFLE9BQU8sR0FBRyxLQUFLO1FBQ3JILEtBQUssRUFBRSxDQUFBO1FBQ1AsNEVBQTRFO1FBQzVFLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQTtRQUM5QixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQTtRQUNaLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFBO1FBQ2xCLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFBO1FBQ25CLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDcEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUM5QixNQUFNLE9BQU8sR0FBRyxlQUFlLElBQUksQ0FBQyxFQUFFLGtCQUFrQixDQUFBO1lBQ3hELElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxD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RixPQUFPLElBQUksQ0FBQTtJQUNmLENBQUM7Q0FDSjtBQUVELGVBQWUsV0FBVyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSBcImV2ZW50c1wiXG5pbXBvcnQgeyBDb25zb2xlTWFuYWdlciwgS2V5TGlzdGVuZXJBcmdzIH0gZnJvbSBcIi4uLy4uL0NvbnNvbGVHdWkuanNcIlxuXG4vKipcbiAqIEBjbGFzcyBPcHRpb25Qb3B1cFxuICogQGV4dGVuZHMgRXZlbnRFbWl0dGVyXG4gKiBAZGVzY3JpcHRpb24gVGhpcyBjbGFzcyBpcyB1c2VkIHRvIGNyZWF0ZSBhIHBvcHVwIHdpdGggYSBsaXN0IG9mIHNlbGVjdGFibGUgb3B0aW9ucy4gXG4gKiBcbiAqICFbT3B0aW9uUG9wdXBdKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzE0OTA3OTg3LzE2NTc1MjM4Ny0yZWFjNDkzNi0xYjVkLTQ2MmUtOTM1My01NjJkMDRmMWI0ZmUuZ2lmKVxuICogXG4gKiBFbWl0cyB0aGUgZm9sbG93aW5nIGV2ZW50czogXG4gKiAtIFwiY29uZmlybVwiIHdoZW4gdGhlIHVzZXIgY29uZmlybSB0aGUgb3B0aW9uXG4gKiAtIFwiY2FuY2VsXCIgd2hlbiB0aGUgdXNlciBjYW5jZWwgdGhlIG9wdGlvblxuICogLSBcImV4aXRcIiB3aGVuIHRoZSB1c2VyIGV4aXQgdGhlIG9wdGlvblxuICogQHBhcmFtIHtzdHJpbmd9IGlkIC0gVGhlIGlkIG9mIHRoZSBwb3B1cC5cbiAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZSAtIFRoZSB0aXRsZSBvZiB0aGUgcG9wdXAuXG4gKiBAcGFyYW0ge0FycmF5PHN0cmluZyB8IG51bWJlcj59IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBvZiB0aGUgcG9wdXAuXG4gKiBAcGFyYW0ge3N0cmluZyB8IG51bWJlcn0gc2VsZWN0ZWQgLSBUaGUgc2VsZWN0ZWQgb3B0aW9uLlxuICogQHBhcmFtIHtib29sZWFufSB2aXNpYmxlIC0gSWYgdGhlIHBvcHVwIGlzIHZpc2libGUuIERlZmF1bHQgaXMgZmFsc2UgKG1ha2UgaXQgYXBwZWFycyB1c2luZyBzaG93KCkpLlxuICogXG4gKiBAZXhhbXBsZSBjb25zdCBwb3B1cCA9IG5ldyBPcHRpb25Qb3B1cChcInBvcHVwMVwiLCBcIkNob29zZSB0aGUgb3B0aW9uXCIsIG9wdGlvbnMsIHNlbGVjdGVkT3B0aW9uKS5zaG93KCkub24oXCJjb25maXJtXCIsIChvcHRpb24pID0+IHsgY29uc29sZS5sb2cob3B0aW9uKSB9KSAvLyBzaG93IHRoZSBwb3B1cCBhbmQgd2FpdCBmb3IgdGhlIHVzZXIgdG8gY29uZmlybVxuICovXG5leHBvcnQgY2xhc3MgT3B0aW9uUG9wdXAgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICAgIENNOiBDb25zb2xlTWFuYWdlclxuICAgIGlkOiBzdHJpbmdcbiAgICB0aXRsZTogc3RyaW5nXG4gICAgb3B0aW9uczogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPlxuICAgIHNlbGVjdGVkOiBzdHJpbmcgfCBudW1iZXJcbiAgICB2aXNpYmxlOiBib29sZWFuXG4gICAgbWFyZ2luVG9wOiBudW1iZXJcbiAgICBzdGFydEluZGV4OiBudW1iZXJcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihpZDogc3RyaW5nLCB0aXRsZTogc3RyaW5nLCBvcHRpb25zOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+LCBzZWxlY3RlZDogc3RyaW5nIHwgbnVtYmVyLCB2aXNpYmxlID0gZmFsc2UpIHtcbiAgICAgICAgc3VwZXIoKVxuICAgICAgICAvKiogQGNvbnN0IHtDb25zb2xlTWFuYWdlcn0gQ00gdGhlIGluc3RhbmNlIG9mIENvbnNvbGVNYW5hZ2VyIChzaW5nbGV0b24pICovXG4gICAgICAgIHRoaXMuQ00gPSBuZXcgQ29uc29sZU1hbmFnZXIoKVxuICAgICAgICB0aGlzLmlkID0gaWRcbiAgICAgICAgdGhpcy50aXRsZSA9IHRpdGxlXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnNcbiAgICAgICAgdGhpcy5zZWxlY3RlZCA9IHNlbGVjdGVkXG4gICAgICAgIHRoaXMudmlzaWJsZSA9IHZpc2libGVcbiAgICAgICAgdGhpcy5tYXJnaW5Ub3AgPSA0XG4gICAgICAgIHRoaXMuc3RhcnRJbmRleCA9IDBcbiAgICAgICAgaWYgKHRoaXMuQ00ud2lkZ2V0c0NvbGxlY3Rpb25bdGhpcy5pZF0pIHtcbiAgICAgICAgICAgIHRoaXMuQ00udW5SZWdpc3RlcldpZGdldCh0aGlzKVxuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGBPcHRpb25Qb3B1cCAke3RoaXMuaWR9IGFscmVhZHkgZXhpc3RzLmBcbiAgICAgICAgICAgIHRoaXMuQ00uZXJyb3IobWVzc2FnZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuQ00ucmVnaXN0ZXJXaWdldCh0aGlzKVxuICAgIH1cblxuICAgIHByaXZhdGUgYWRhcHRPcHRpb25zKCk6IEFycmF5PHN0cmluZyB8IG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNsaWNlKHRoaXMuc3RhcnRJbmRleCwgdGhpcy5zdGFydEluZGV4ICsgdGhpcy5DTS5TY3JlZW4uaGVpZ2h0IC0gdGhpcy5tYXJnaW5Ub3AgLSA2KVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gbWFrZSB0aGUgQ29uc29sZU1hbmFnZXIgaGFuZGxlIHRoZSBrZXkgZXZlbnRzIHdoZW4gdGhlIHBvcHVwIGlzIHNob3dlZC5cbiAgICAgKiBJbnNpZGUgdGhpcyBmdW5jdGlvbiBhcmUgZGVmaW5lZCBhbGwgdGhlIGtleXMgdGhhdCBjYW4gYmUgcHJlc3NlZCBhbmQgdGhlIGFjdGlvbnMgdG8gZG8gd2hlbiB0aGV5IGFyZSBwcmVzc2VkLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgLSBUaGUgc3RyaW5nIG9mIHRoZSBpbnB1dC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0ga2V5IC0gVGhlIGtleSBvYmplY3QuXG4gICAgICogQG1lbWJlcm9mIE9wdGlvblBvcHVwXG4gICAgICovXG4gICAga2V5TGlzdG5lcihfc3RyOiBzdHJpbmcsIGtleTogS2V5TGlzdGVuZXJBcmdzKSB7XG4gICAgICAgIHN3aXRjaCAoa2V5Lm5hbWUpIHtcbiAgICAgICAgY2FzZSBcImRvd25cIjpcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWQodGhpcy5vcHRpb25zWyh0aGlzLm9wdGlvbnMuaW5kZXhPZih0aGlzLnNlbGVjdGVkKSArIDEpICUgdGhpcy5vcHRpb25zLmxlbmd0aF0pXG4gICAgICAgICAgICBpZiAodGhpcy5DTS5TY3JlZW4uaGVpZ2h0IC0gdGhpcy5tYXJnaW5Ub3AgLSA0IDwgdGhpcy5vcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkID09PSB0aGlzLm9wdGlvbnNbdGhpcy5hZGFwdE9wdGlvbnMoKS5sZW5ndGggKyB0aGlzLnN0YXJ0SW5kZXhdKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRJbmRleCsrXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0SW5kZXggPSAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIFwidXBcIjpcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWQodGhpcy5vcHRpb25zWyh0aGlzLm9wdGlvbnMuaW5kZXhPZih0aGlzLnNlbGVjdGVkKSAtIDEgKyB0aGlzLm9wdGlvbnMubGVuZ3RoKSAlIHRoaXMub3B0aW9ucy5sZW5ndGhdKVxuICAgICAgICAgICAgaWYgKHRoaXMuc3RhcnRJbmRleCA+IDAgJiYgdGhpcy5zZWxlY3RlZCA9PT0gdGhpcy5hZGFwdE9wdGlvbnMoKVswXSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRJbmRleC0tXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIFwicGFnZWRvd25cIjpcbiAgICAgICAgICAgIGlmICh0aGlzLkNNLlNjcmVlbi5oZWlnaHQgLSB0aGlzLm1hcmdpblRvcCAtIDQgPCB0aGlzLm9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZCh0aGlzLm9wdGlvbnNbKHRoaXMub3B0aW9ucy5pbmRleE9mKHRoaXMuc2VsZWN0ZWQpICsgdGhpcy5hZGFwdE9wdGlvbnMoKS5sZW5ndGgpICUgdGhpcy5vcHRpb25zLmxlbmd0aF0pXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhcnRJbmRleCArIHRoaXMuYWRhcHRPcHRpb25zKCkubGVuZ3RoIDwgdGhpcy5vcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0SW5kZXggKz0gdGhpcy5hZGFwdE9wdGlvbnMoKS5sZW5ndGhcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0SW5kZXggPSAwXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgXCJwYWdldXBcIjpcbiAgICAgICAgICAgIGlmICh0aGlzLkNNLlNjcmVlbi5oZWlnaHQgLSB0aGlzLm1hcmdpblRvcCAtIDQgPCB0aGlzLm9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZCh0aGlzLm9wdGlvbnNbKHRoaXMub3B0aW9ucy5pbmRleE9mKHRoaXMuc2VsZWN0ZWQpIC0gdGhpcy5hZGFwdE9wdGlvbnMoKS5sZW5ndGggKyB0aGlzLm9wdGlvbnMubGVuZ3RoKSAlIHRoaXMub3B0aW9ucy5sZW5ndGhdKVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXJ0SW5kZXggPiB0aGlzLmFkYXB0T3B0aW9ucygpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0SW5kZXggLT0gdGhpcy5hZGFwdE9wdGlvbnMoKS5sZW5ndGhcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0SW5kZXggPSAwXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgXCJyZXR1cm5cIjpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXQoXCJjb25maXJtXCIsIHRoaXMuc2VsZWN0ZWQpXG4gICAgICAgICAgICAgICAgdGhpcy5DTS51blJlZ2lzdGVyV2lkZ2V0KHRoaXMpXG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKClcbiAgICAgICAgICAgICAgICAvL2RlbGV0ZSB0aGlzXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIFwiZXNjYXBlXCI6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0KFwiY2FuY2VsXCIpXG4gICAgICAgICAgICAgICAgdGhpcy5DTS51blJlZ2lzdGVyV2lkZ2V0KHRoaXMpXG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKClcbiAgICAgICAgICAgICAgICAvL2RlbGV0ZSB0aGlzXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIFwicVwiOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRoaXMuQ00uZW1pdChcImV4aXRcIilcbiAgICAgICAgICAgICAgICB0aGlzLkNNLnVuUmVnaXN0ZXJXaWRnZXQodGhpcylcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKVxuICAgICAgICAgICAgICAgIC8vZGVsZXRlIHRoaXNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuQ00ucmVmcmVzaCgpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBnZXQgdGhlIHNlbGVjdGVkIG9wdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nIHwgbnVtYmVyfSBUaGUgc2VsZWN0ZWQgdmFsdWUgb2YgdGhlIHBvcHVwLlxuICAgICAqIEBtZW1iZXJvZiBPcHRpb25Qb3B1cFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTZWxlY3RlZCgpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY2hhbmdlIHRoZSBzZWxlY3Rpb24gb2YgdGhlIHBvcHVwLiBJdCBhbHNvIHJlZnJlc2ggdGhlIENvbnNvbGVNYW5hZ2VyLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBzZWxlY3RlZCAtIFRoZSBuZXcgdmFsdWUgb2YgdGhlIHNlbGVjdGlvbi5cbiAgICAgKiBAbWVtYmVyb2YgT3B0aW9uUG9wdXBcbiAgICAgKiBAcmV0dXJucyB7T3B0aW9uUG9wdXB9IFRoZSBpbnN0YW5jZSBvZiB0aGUgT3B0aW9uUG9wdXAuXG4gICAgICovXG4gICAgcHVibGljIHNldFNlbGVjdGVkKHNlbGVjdGVkOiBzdHJpbmcgfCBudW1iZXIpOiBPcHRpb25Qb3B1cCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBzZWxlY3RlZFxuICAgICAgICB0aGlzLkNNLnJlZnJlc2goKVxuICAgICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gc2hvdyB0aGUgcG9wdXAuIEl0IGFsc28gcmVnaXN0ZXIgdGhlIGtleSBldmVudHMgYW5kIHJlZnJlc2ggdGhlIENvbnNvbGVNYW5hZ2VyLlxuICAgICAqIEByZXR1cm5zIHtPcHRpb25Qb3B1cH0gVGhlIGluc3RhbmNlIG9mIHRoZSBPcHRpb25Qb3B1cC5cbiAgICAgKiBAbWVtYmVyb2YgT3B0aW9uUG9wdXBcbiAgICAgKi9cbiAgICBwdWJsaWMgc2hvdygpOiBPcHRpb25Qb3B1cCB7XG4gICAgICAgIGlmICghdGhpcy52aXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLm1hbmFnZUlucHV0KClcbiAgICAgICAgICAgIHRoaXMudmlzaWJsZSA9IHRydWVcbiAgICAgICAgICAgIHRoaXMuQ00ucmVmcmVzaCgpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGhpZGUgdGhlIHBvcHVwLiBJdCBhbHNvIHVucmVnaXN0ZXIgdGhlIGtleSBldmVudHMgYW5kIHJlZnJlc2ggdGhlIENvbnNvbGVNYW5hZ2VyLlxuICAgICAqIEByZXR1cm5zIHtPcHRpb25Qb3B1cH0gVGhlIGluc3RhbmNlIG9mIHRoZSBPcHRpb25Qb3B1cC5cbiAgICAgKiBAbWVtYmVyb2YgT3B0aW9uUG9wdXBcbiAgICAgKi9cbiAgICBwdWJsaWMgaGlkZSgpOiBPcHRpb25Qb3B1cCB7XG4gICAgICAgIGlmICh0aGlzLnZpc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMudW5NYW5hZ2VJbnB1dCgpXG4gICAgICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZVxuICAgICAgICAgICAgdGhpcy5DTS5yZWZyZXNoKClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZ2V0IHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBwb3B1cC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVGhlIHZpc2liaWxpdHkgb2YgdGhlIHBvcHVwLlxuICAgICAqIEBtZW1iZXJvZiBPcHRpb25Qb3B1cFxuICAgICAqL1xuICAgIHB1YmxpYyBpc1Zpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpc2libGVcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGFkZCB0aGUgT3B0aW9uUG9wdXAga2V5IGxpc3RlbmVyIGNhbGxiYWNrIHRvIHRlIENvbnNvbGVNYW5hZ2VyLlxuICAgICAqIEByZXR1cm5zIHtPcHRpb25Qb3B1cH0gVGhlIGluc3RhbmNlIG9mIHRoZSBPcHRpb25Qb3B1cC5cbiAgICAgKiBAbWVtYmVyb2YgT3B0aW9uUG9wdXBcbiAgICAgKi9cbiAgICBwcml2YXRlIG1hbmFnZUlucHV0KCk6IE9wdGlvblBvcHVwIHtcbiAgICAgICAgLy8gQWRkIGEgY29tbWFuZCBpbnB1dCBsaXN0ZW5lciB0byBjaGFuZ2UgbW9kZVxuICAgICAgICB0aGlzLkNNLnNldEtleUxpc3RlbmVyKHRoaXMuaWQsIHRoaXMua2V5TGlzdG5lci5iaW5kKHRoaXMpKVxuICAgICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmVtb3ZlIHRoZSBPcHRpb25Qb3B1cCBrZXkgbGlzdGVuZXIgY2FsbGJhY2sgdG8gdGUgQ29uc29sZU1hbmFnZXIuXG4gICAgICogQHJldHVybnMge09wdGlvblBvcHVwfSBUaGUgaW5zdGFuY2Ugb2YgdGhlIE9wdGlvblBvcHVwLlxuICAgICAqIEBtZW1iZXJvZiBPcHRpb25Qb3B1cFxuICAgICAqL1xuICAgIHByaXZhdGUgdW5NYW5hZ2VJbnB1dCgpOiBPcHRpb25Qb3B1cCB7XG4gICAgICAgIC8vIEFkZCBhIGNvbW1hbmQgaW5wdXQgbGlzdGVuZXIgdG8gY2hhbmdlIG1vZGVcbiAgICAgICAgdGhpcy5DTS5yZW1vdmVLZXlMaXN0ZW5lcih0aGlzLmlkKVxuICAgICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZHJhdyB0aGUgT3B0aW9uUG9wdXAgdG8gdGhlIHNjcmVlbiBpbiB0aGUgbWlkZGxlLlxuICAgICAqIEByZXR1cm5zIHtPcHRpb25Qb3B1cH0gVGhlIGluc3RhbmNlIG9mIHRoZSBPcHRpb25Qb3B1cC5cbiAgICAgKiBAbWVtYmVyb2YgT3B0aW9uUG9wdXBcbiAgICAgKi9cbiAgICBwdWJsaWMgZHJhdygpOiBPcHRpb25Qb3B1cCB7XG4gICAgICAgIC8vIENoYW5nZSBzdGFydCBpbmRleCBpZiBzZWxlY3RlZCBpcyBub3QgaW4gdGhlIGFkYXB0T3B0aW9ucyByZXR1cm4gYXJyYXlcbiAgICAgICAgaWYgKHRoaXMuYWRhcHRPcHRpb25zKCkuaW5kZXhPZih0aGlzLnNlbGVjdGVkKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRJbmRleCA9IHRoaXMub3B0aW9ucy5pbmRleE9mKHRoaXMuc2VsZWN0ZWQpIC0gdGhpcy5hZGFwdE9wdGlvbnMoKS5sZW5ndGggKyAxID4gMCA/IHRoaXMub3B0aW9ucy5pbmRleE9mKHRoaXMuc2VsZWN0ZWQpIC0gdGhpcy5hZGFwdE9wdGlvbnMoKS5sZW5ndGggKyAxIDogMFxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IDJcbiAgICAgICAgY29uc3QgbWF4T3B0aW9uc0xlbmd0aCA9IHRoaXMub3B0aW9ucy5tYXAoKG8pID0+IG8udG9TdHJpbmcoKSkucmVkdWNlKChtYXgsIG9wdGlvbikgPT4gTWF0aC5tYXgobWF4LCBvcHRpb24ubGVuZ3RoKSwgMClcbiAgICAgICAgY29uc3Qgd2luZG93V2lkdGggPSBtYXhPcHRpb25zTGVuZ3RoID4gdGhpcy50aXRsZS5sZW5ndGggPyBtYXhPcHRpb25zTGVuZ3RoICsgKDIgKiBvZmZzZXQpIDogdGhpcy50aXRsZS5sZW5ndGggKyAoMiAqIG9mZnNldClcbiAgICAgICAgY29uc3QgaGFsZldpZHRoID0gTWF0aC5yb3VuZCgod2luZG93V2lkdGggLSB0aGlzLnRpdGxlLmxlbmd0aCkgLyAyKVxuXG4gICAgICAgIGxldCBoZWFkZXIgPSBcIuKUjFwiXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgd2luZG93V2lkdGg7IGkrKykge1xuICAgICAgICAgICAgaGVhZGVyICs9IFwi4pSAXCJcbiAgICAgICAgfVxuICAgICAgICBoZWFkZXIgKz0gXCLilJBcXG5cIlxuICAgICAgICBoZWFkZXIgKz0gYOKUgiR7XCIgXCIucmVwZWF0KGhhbGZXaWR0aCl9JHt0aGlzLnRpdGxlfSR7XCIgXCIucmVwZWF0KHdpbmRvd1dpZHRoIC0gaGFsZldpZHRoIC0gdGhpcy50aXRsZS5sZW5ndGgpfeKUglxcbmBcbiAgICAgICAgaGVhZGVyICs9IFwi4pScXCIgKyBcIuKUgFwiLnJlcGVhdCh3aW5kb3dXaWR0aCkgKyBcIuKUpFxcblwiXG5cbiAgICAgICAgbGV0IGZvb3RlciA9IFwi4pSUXCJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB3aW5kb3dXaWR0aDsgaSsrKSB7XG4gICAgICAgICAgICBmb290ZXIgKz0gXCLilIBcIlxuICAgICAgICB9XG4gICAgICAgIGZvb3RlciArPSBcIuKUmFxcblwiXG5cbiAgICAgICAgbGV0IGNvbnRlbnQgPSBcIlwiXG4gICAgICAgIHRoaXMuYWRhcHRPcHRpb25zKCkuZm9yRWFjaCgob3B0aW9uKSA9PiB7XG4gICAgICAgICAgICBjb250ZW50ICs9IGDilIIke29wdGlvbiA9PT0gdGhpcy5zZWxlY3RlZCA/IFwiPFwiIDogXCIgXCJ9ICR7b3B0aW9ufSR7b3B0aW9uID09PSB0aGlzLnNlbGVjdGVkID8gXCIgPlwiIDogXCIgIFwifSR7XCIgXCIucmVwZWF0KHdpbmRvd1dpZHRoIC0gb3B0aW9uLnRvU3RyaW5nKCkubGVuZ3RoIC0gNCl94pSCXFxuYFxuICAgICAgICB9KVxuXG4gICAgICAgIGNvbnN0IHdpbmRvd0Rlc2lnbiA9IGAke2hlYWRlcn0ke2NvbnRlbnR9JHtmb290ZXJ9YFxuICAgICAgICB3aW5kb3dEZXNpZ24uc3BsaXQoXCJcXG5cIikuZm9yRWFjaCgobGluZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuQ00uU2NyZWVuLmN1cnNvclRvKE1hdGgucm91bmQoKHRoaXMuQ00uU2NyZWVuLndpZHRoIC8gMikgLSAod2luZG93V2lkdGggLyAyKSksIHRoaXMubWFyZ2luVG9wICsgaW5kZXgpXG4gICAgICAgICAgICB0aGlzLkNNLlNjcmVlbi53cml0ZSh7IHRleHQ6IGxpbmUsIHN0eWxlOiB7IGNvbG9yOiBcIndoaXRlXCIgfSB9KVxuICAgICAgICB9KVxuICAgICAgICByZXR1cm4gdGhpc1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgT3B0aW9uUG9wdXAiXX0= |
@@ -15,8 +15,8 @@ /// <reference types="node" /> | ||
* @typedef {Object} KeyListenerArgs | ||
* @property {string} name - The name of the key pressed. | ||
* @property {boolean} ctrl - If the ctrl key is pressed. | ||
* @property {boolean} shift - If the shift key is pressed. | ||
* @property {boolean} alt - If the alt key is pressed. | ||
* @property {boolean} meta - If the meta key is pressed. | ||
* @property {boolean} sequence - If the sequence of keys is pressed. | ||
* @prop {string} name - The name of the key pressed. | ||
* @prop {boolean} ctrl - If the ctrl key is pressed. | ||
* @prop {boolean} shift - If the shift key is pressed. | ||
* @prop {boolean} alt - If the alt key is pressed. | ||
* @prop {boolean} meta - If the meta key is pressed. | ||
* @prop {boolean} sequence - If the sequence of keys is pressed. | ||
* | ||
@@ -37,7 +37,7 @@ * @export | ||
* @typedef {Object} ConsoleGuiOptions | ||
* @property {string} [title] - The title of the ConsoleGui. | ||
* @property {0 | 1 | "popup"} [logLocation] - The location of the logs. | ||
* @property {string} [showLogKey] - The key to show the log. | ||
* @property {number} [logPageSize] - The size of the log page. | ||
* @property {DoubleLayoutOptions} [layoutOptions] - The options of the layout. | ||
* @prop {string} [title] - The title of the ConsoleGui. | ||
* @prop {0 | 1 | "popup"} [logLocation] - The location of the logs. | ||
* @prop {string} [showLogKey] - The key to show the log. | ||
* @prop {number} [logPageSize] - The size of the log page. | ||
* @prop {DoubleLayoutOptions} [layoutOptions] - The options of the layout. | ||
* | ||
@@ -207,1 +207,2 @@ * @export | ||
export { PageBuilder, ConsoleManager, OptionPopup, InputPopup, ConfirmPopup, ButtonPopup, CustomPopup, FileSelectorPopup }; | ||
//# sourceMappingURL=ConsoleGui.d.ts.map |
@@ -24,22 +24,7 @@ import { EventEmitter } from "events"; | ||
class ConsoleManager extends EventEmitter { | ||
Terminal; | ||
Input; | ||
static instance; | ||
Screen; | ||
// eslint-disable-next-line @typescript-eslint/no-explicit-any | ||
widgetsCollection = []; | ||
eventListenersContainer = {}; | ||
logLocation; | ||
logPageSize; | ||
logPageTitle; | ||
pages; | ||
layoutOptions; | ||
changeLayoutKey; | ||
changeLayoutkeys; | ||
applicationTitle; | ||
showLogKey; | ||
stdOut; | ||
layout; | ||
constructor(options = undefined) { | ||
super(); | ||
// eslint-disable-next-line @typescript-eslint/no-explicit-any | ||
this.widgetsCollection = []; | ||
this.eventListenersContainer = {}; | ||
this.Terminal = process.stdout; | ||
@@ -68,3 +53,3 @@ this.Input = process.stdin; | ||
changeFocusKey: "ctrl+l", | ||
direction: "horizontal", | ||
direction: "vertical", | ||
}; | ||
@@ -438,2 +423,2 @@ /** @const {string} changeLayoutKey - The key or combination to switch the selected page */ | ||
export { PageBuilder, ConsoleManager, OptionPopup, InputPopup, ConfirmPopup, ButtonPopup, CustomPopup, FileSelectorPopup }; | ||
//# sourceMappingURL=ConsoleGui.js.map | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uc29sZUd1aS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9Db25zb2xlR3VpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFDckMsT0FBTyxRQUFRLE1BQU0sVUFBVSxDQUFBO0FBQy9CLE9BQU8sWUFBcUMsTUFBTSxxQ0FBcUMsQ0FBQTtBQUN2RixPQUFPLFdBQVcsTUFBTSw2QkFBNkIsQ0FBQTtBQUNyRCxPQUFPLE1BQU0sTUFBTSx3QkFBd0IsQ0FBQTtBQUMzQyxPQUFPLFdBQVcsTUFBTSxxQ0FBcUMsQ0FBQTtBQUM3RCxPQUFPLFdBQVcsTUFBTSxxQ0FBcUMsQ0FBQTtBQUM3RCxPQUFPLFlBQVksTUFBTSxzQ0FBc0MsQ0FBQTtBQUMvRCxPQUFPLGlCQUFpQixNQUFNLDJDQUEyQyxDQUFBO0FBQ3pFLE9BQU8sVUFBVSxNQUFNLG9DQUFvQyxDQUFBO0FBQzNELE9BQU8sV0FBVyxNQUFNLHFDQUFxQyxDQUFBO0FBNkM3RDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxjQUFlLFNBQVEsWUFBWTtJQW9CckMsWUFBbUIsVUFBeUMsU0FBUztRQUNqRSxLQUFLLEVBQUUsQ0FBQTtRQWhCWCw4REFBOEQ7UUFDOUQsc0JBQWlCLEdBQVUsRUFBRSxDQUFBO1FBQzdCLDRCQUF1QixHQUFxRSxFQUFFLENBQUE7UUFlMUYsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFBO1FBQzlCLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQTtRQUMxQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRTtZQUMxQixjQUFjLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQTtZQUU5QixtREFBbUQ7WUFDbkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7WUFDdkMsSUFBSSxDQUFD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QUNYLFdBQVcsRUFDWCxpQkFBaUIsRUFDcEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gXCJldmVudHNcIlxuaW1wb3J0IHJlYWRsaW5lIGZyb20gXCJyZWFkbGluZVwiXG5pbXBvcnQgRG91YmxlTGF5b3V0LCB7IERvdWJsZUxheW91dE9wdGlvbnMgfSBmcm9tIFwiLi9jb21wb25lbnRzL2xheW91dC9Eb3VibGVMYXlvdXQuanNcIlxuaW1wb3J0IFBhZ2VCdWlsZGVyIGZyb20gXCIuL2NvbXBvbmVudHMvUGFnZUJ1aWxkZXIuanNcIlxuaW1wb3J0IFNjcmVlbiBmcm9tIFwiLi9jb21wb25lbnRzL1NjcmVlbi5qc1wiXG5pbXBvcnQgQ3VzdG9tUG9wdXAgZnJvbSBcIi4vY29tcG9uZW50cy93aWRnZXRzL0N1c3RvbVBvcHVwLmpzXCJcbmltcG9ydCBCdXR0b25Qb3B1cCBmcm9tIFwiLi9jb21wb25lbnRzL3dpZGdldHMvQnV0dG9uUG9wdXAuanNcIlxuaW1wb3J0IENvbmZpcm1Qb3B1cCBmcm9tIFwiLi9jb21wb25lbnRzL3dpZGdldHMvQ29uZmlybVBvcHVwLmpzXCJcbmltcG9ydCBGaWxlU2VsZWN0b3JQb3B1cCBmcm9tIFwiLi9jb21wb25lbnRzL3dpZGdldHMvRmlsZVNlbGVjdG9yUG9wdXAuanNcIlxuaW1wb3J0IElucHV0UG9wdXAgZnJvbSBcIi4vY29tcG9uZW50cy93aWRnZXRzL0lucHV0UG9wdXAuanNcIlxuaW1wb3J0IE9wdGlvblBvcHVwIGZyb20gXCIuL2NvbXBvbmVudHMvd2lkZ2V0cy9PcHRpb25Qb3B1cC5qc1wiXG5cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVGhpcyB0eXBlIGlzIHVzZWQgdG8gZGVmaW5lIHRoZSBwYXJhbWV0ZXJzIG9mIHRoZSBLZXlMaXN0ZW5lciBldmVudCAoa2V5cHJlc3MpLlxuICogQHR5cGVkZWYge09iamVjdH0gS2V5TGlzdGVuZXJBcmdzXG4gKiBAcHJvcCB7c3RyaW5nfSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGtleSBwcmVzc2VkLlxuICogQHByb3Age2Jvb2xlYW59IGN0cmwgLSBJZiB0aGUgY3RybCBrZXkgaXMgcHJlc3NlZC5cbiAqIEBwcm9wIHtib29sZWFufSBzaGlmdCAtIElmIHRoZSBzaGlmdCBrZXkgaXMgcHJlc3NlZC5cbiAqIEBwcm9wIHtib29sZWFufSBhbHQgLSBJZiB0aGUgYWx0IGtleSBpcyBwcmVzc2VkLlxuICogQHByb3Age2Jvb2xlYW59IG1ldGEgLSBJZiB0aGUgbWV0YSBrZXkgaXMgcHJlc3NlZC5cbiAqIEBwcm9wIHtib29sZWFufSBzZXF1ZW5jZSAtIElmIHRoZSBzZXF1ZW5jZSBvZiBrZXlzIGlzIHByZXNzZWQuXG4gKlxuICogQGV4cG9ydFxuICogQGludGVyZmFjZSBLZXlMaXN0ZW5lckFyZ3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBLZXlMaXN0ZW5lckFyZ3Mge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBzZXF1ZW5jZTogc3RyaW5nO1xuICAgIGN0cmw6IGJvb2xlYW47XG4gICAgYWx0OiBib29sZWFuO1xuICAgIHNoaWZ0OiBib29sZWFuO1xuICAgIG1ldGE6IGJvb2xlYW47XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFRoaXMgdHlwZSBpcyB1c2VkIHRvIGRlZmluZSB0aGUgQ29uc29sZUd1aSBvcHRpb25zLlxuICogQHR5cGVkZWYge09iamVjdH0gQ29uc29sZUd1aU9wdGlvbnNcbiAqIEBwcm9wIHtzdHJpbmd9IFt0aXRsZV0gLSBUaGUgdGl0bGUgb2YgdGhlIENvbnNvbGVHdWkuXG4gKiBAcHJvcCB7MCB8IDEgfCBcInBvcHVwXCJ9IFtsb2dMb2NhdGlvbl0gLSBUaGUgbG9jYXRpb24gb2YgdGhlIGxvZ3MuXG4gKiBAcHJvcCB7c3RyaW5nfSBbc2hvd0xvZ0tleV0gLSBUaGUga2V5IHRvIHNob3cgdGhlIGxvZy5cbiAqIEBwcm9wIHtudW1iZXJ9IFtsb2dQYWdlU2l6ZV0gLSBUaGUgc2l6ZSBvZiB0aGUgbG9nIHBhZ2UuXG4gKiBAcHJvcCB7RG91YmxlTGF5b3V0T3B0aW9uc30gW2xheW91dE9wdGlvbnNdIC0gVGhlIG9wdGlvbnMgb2YgdGhlIGxheW91dC5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAaW50ZXJmYWNlIENvbnNvbGVHdWlPcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc29sZUd1aU9wdGlvbnMge1xuICAgIGxvZ0xvY2F0aW9uPzogMCB8IDEgfCBcInBvcHVwXCI7XG4gICAgc2hvd0xvZ0tleT86IHN0cmluZztcbiAgICBsb2dQYWdlU2l6ZT86IG51bWJlcjtcbiAgICBsYXlvdXRPcHRpb25zPzogRG91YmxlTGF5b3V0T3B0aW9ucztcbiAgICB0aXRsZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBAY2xhc3MgQ29uc29sZU1hbmFnZXJcbiAqIEBleHRlbmRzIEV2ZW50RW1pdHRlclxuICogQGRlc2NyaXB0aW9uIFRoaXMgY2xhc3MgaXMgdXNlZCB0byBtYW5hZ2UgdGhlIGNvbnNvbGUgR1VJIGFuZCBhbGwgdGhlIHdpZGdldHMuXG4gKiBUaGlzIGlzIGEgc2luZ2xldG9uIGNsYXNzLCBzbyB5b3UgY2FuIHVzZSBpdCBsaWtlIHRoaXM6IGNvbnN0IENNID0gbmV3IENvbnNvbGVNYW5hZ2VyKClcbiAqIEVtaXRzIHRoZSBmb2xsb3dpbmcgZXZlbnRzOiBcbiAqIC0gXCJrZXlwcmVzc2VkXCIgdG8gcHJvcGFnYXRlIHRoZSBrZXkgcHJlc3NlZCBldmVudCB0byB0aGUgYXBwbGljYXRpb25cbiAqIC0gXCJleGl0XCIgd2hlbiB0aGUgdXNlciB3YW50cyB0byBleGl0IHRoZSBhcHBsaWNhdGlvblxuICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBvZiB0aGUgQ29uc29sZU1hbmFnZXIuXG4gKiBAZXhhbXBsZSBjb25zdCBDTSA9IG5ldyBDb25zb2xlTWFuYWdlcih7IGxvZ1BhZ2VTaXplOiAxMCwgbGF5b3V0Qm9yZGVyOiB0cnVlLCBjaGFuZ2VMYXlvdXRLZXk6ICdjdHJsK2wnLCB0aXRsZTogJ0NvbnNvbGUgQXBwbGljYXRpb24nIH0pXG4gKi9cbmNsYXNzIENvbnNvbGVNYW5hZ2VyIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgICBUZXJtaW5hbDogTm9kZUpTLldyaXRlU3RyZWFtICYgeyBmZDogMSB9XG4gICAgSW5wdXQ6IE5vZGVKUy5SZWFkU3RyZWFtICYgeyBmZDogMCB9XG4gICAgc3RhdGljIGluc3RhbmNlOiBDb25zb2xlTWFuYWdlclxuICAgIFNjcmVlbiE6IFNjcmVlblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgd2lkZ2V0c0NvbGxlY3Rpb246IGFueVtdID0gW11cbiAgICBldmVudExpc3RlbmVyc0NvbnRhaW5lcjogeyBba2V5OiBzdHJpbmddOiAoX3N0cjogc3RyaW5nLCBrZXkgOiBLZXlMaXN0ZW5lckFyZ3MpID0+IHZvaWQgfSA9IHt9XG4gICAgbG9nTG9jYXRpb24hOiAwIHwgMSB8IFwicG9wdXBcIlxuICAgIGxvZ1BhZ2VTaXplITogbnVtYmVyXG4gICAgbG9nUGFnZVRpdGxlITogc3RyaW5nXG4gICAgcGFnZXMhOiBQYWdlQnVpbGRlcltdXG4gICAgbGF5b3V0T3B0aW9ucyE6IERvdWJsZUxheW91dE9wdGlvbnNcbiAgICBjaGFuZ2VMYXlvdXRLZXkhOiBzdHJpbmdcbiAgICBjaGFuZ2VMYXlvdXRrZXlzITogc3RyaW5nW11cbiAgICBhcHBsaWNhdGlvblRpdGxlITogc3RyaW5nXG4gICAgc2hvd0xvZ0tleSE6IHN0cmluZ1xuICAgIHN0ZE91dCE6IFBhZ2VCdWlsZGVyXG4gICAgbGF5b3V0ITogRG91YmxlTGF5b3V0XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9uczogQ29uc29sZUd1aU9wdGlvbnMgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQpIHtcbiAgICAgICAgc3VwZXIoKVxuICAgICAgICB0aGlzLlRlcm1pbmFsID0gcHJvY2Vzcy5zdGRvdXRcbiAgICAgICAgdGhpcy5JbnB1dCA9IHByb2Nlc3Muc3RkaW5cbiAgICAgICAgaWYgKCFDb25zb2xlTWFuYWdlci5pbnN0YW5jZSkge1xuICAgICAgICAgICAgQ29uc29sZU1hbmFnZXIuaW5zdGFuY2UgPSB0aGlzXG5cbiAgICAgICAgICAgIC8qKiBAY29uc3Qge1NjcmVlbn0gU2NyZWVuIC0gVGhlIHNjcmVlbiBpbnN0YW5jZSAqL1xuICAgICAgICAgICAgdGhpcy5TY3JlZW4gPSBuZXcgU2NyZWVuKHRoaXMuVGVybWluYWwpXG4gICAgICAgICAgICB0aGlzLlNjcmVlbi5vbihcImVycm9yXCIsIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9yKGVycilcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIHRoaXMud2lkZ2V0c0NvbGxlY3Rpb24gPSBbXVxuICAgICAgICAgICAgdGhpcy5ldmVudExpc3RlbmVyc0NvbnRhaW5lciA9IHt9XG5cbiAgICAgICAgICAgIC8qKiBAY29uc3Qge251bWJlciB8ICdwb3B1cCd9IGxvZ0xvY2F0aW9uIC0gQ2hvb3NlIHdoZXJlIHRoZSBsb2dzIGFyZSBkaXNwbGF5ZWQ6IG51bWJlciAoMCwxKSAtIHRvIHBvdCB0aGVtIG9uIG9uZSBvZiB0aGUgdHdvIGxheW91dHMsIHN0cmluZyAoXCJwb3B1cFwiKSAtIHRvIHB1dCB0aGVtIG9uIGEgQ3VzdG9tUG9wdXAgdGhhdCBjYW4gYmUgZGlzcGxheWVkIG9uIHRoZSB3aW5kb3cuICovXG4gICAgICAgICAgICB0aGlzLmxvZ0xvY2F0aW9uID0gMVxuICAgICAgICAgICAgdGhpcy5sb2dQYWdlU2l6ZSA9IDEwXG4gICAgICAgICAgICB0aGlzLmxvZ1BhZ2VUaXRsZSA9IFwiTE9HU1wiXG5cbiAgICAgICAgICAgIC8qKiBAY29uc3Qge0FycmF5PFBhZ2VCdWlsZGVyPn0gaG9tZVBhZ2UgLSBUaGUgbWFpbiBhcHBsaWNhdGlvbiAqL1xuICAgICAgICAgICAgdGhpcy5wYWdlcyA9IFtuZXcgUGFnZUJ1aWxkZXIoKSwgbmV3IFBhZ2VCdWlsZGVyKCldXG5cbiAgICAgICAgICAgIHRoaXMubGF5b3V0T3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICBzaG93VGl0bGU6IHRydWUsXG4gICAgICAgICAgICAgICAgYm94ZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgYm94Q29sb3I6IFwiY3lhblwiLFxuICAgICAgICAgICAgICAgIGJveFN0eWxlOiBcImJvbGRcIixcbiAgICAgICAgICAgICAgICBjaGFuZ2VGb2N1c0tleTogXCJjdHJsK2xcIixcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb246IFwidmVydGljYWxcIixcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLyoqIEBjb25zdCB7c3RyaW5nfSBjaGFuZ2VMYXlvdXRLZXkgLSBUaGUga2V5IG9yIGNvbWJpbmF0aW9uIHRvIHN3aXRjaCB0aGUgc2VsZWN0ZWQgcGFnZSAqL1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VMYXlvdXRLZXkgPSB0aGlzLmxheW91dE9wdGlvbnMuY2hhbmdlRm9jdXNLZXlcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlTGF5b3V0a2V5cyA9IHRoaXMuY2hhbmdlTGF5b3V0S2V5LnNwbGl0KFwiK1wiKVxuICAgICAgICAgICAgdGhpcy5hcHBsaWNhdGlvblRpdGxlID0gXCJcIlxuXG4gICAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmxvZ0xvY2F0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLmxvZ0xvY2F0aW9uID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ0xvY2F0aW9uID0gb3B0aW9ucy5sb2dMb2NhdGlvbiA+IDAgPyBvcHRpb25zLmxvZ0xvY2F0aW9uIDogMFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMubG9nTG9jYXRpb24gPT09IFwicG9wdXBcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nTG9jYXRpb24gPSBcInBvcHVwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dMb2dLZXkgPSBvcHRpb25zLnNob3dMb2dLZXkgfHwgXCJvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dMb2NhdGlvbiA9IDFcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5sb2dQYWdlU2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ1BhZ2VTaXplID0gb3B0aW9ucy5sb2dQYWdlU2l6ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMubGF5b3V0T3B0aW9ucyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxheW91dE9wdGlvbnMgPSBvcHRpb25zLmxheW91dE9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMubGF5b3V0T3B0aW9ucy5jaGFuZ2VGb2N1c0tleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VMYXlvdXRLZXkgPSBvcHRpb25zLmxheW91dE9wdGlvbnMuY2hhbmdlRm9jdXNLZXlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy50aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGxpY2F0aW9uVGl0bGUgPSBvcHRpb25zLnRpdGxlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvKiogQGNvbnN0IHtQYWdlQnVpbGRlcn0gc3RkT3V0IC0gVGhlIGxvZ3MgcGFnZSAqL1xuICAgICAgICAgICAgdGhpcy5zdGRPdXQgPSBuZXcgUGFnZUJ1aWxkZXIoKVxuICAgICAgICAgICAgdGhpcy5zdGRPdXQuc2V0Um93c1BlclBhZ2UodGhpcy5sb2dQYWdlU2l6ZSlcblxuICAgICAgICAgICAgLyoqIEBjb25zdCB7RG91YmxlTGF5b3V0fSBsYXlvdXQgLSBUaGUgbGF5b3V0IGluc3RhbmNlICovXG4gICAgICAgICAgICBpZiAodGhpcy5sb2dMb2NhdGlvbiA9PT0gXCJwb3B1cFwiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXlvdXQgPSBuZXcgRG91YmxlTGF5b3V0KHRoaXMucGFnZXNbMF0sIHRoaXMucGFnZXNbMV0sIHRoaXMubGF5b3V0T3B0aW9ucylcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMubG9nTG9jYXRpb24gPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2dMb2NhdGlvbiA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxheW91dCA9IG5ldyBEb3VibGVMYXlvdXQodGhpcy5zdGRPdXQsIHRoaXMucGFnZXNbMF0sIHRoaXMubGF5b3V0T3B0aW9ucylcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXlvdXQucGFnZTFUaXRsZSA9IHRoaXMubG9nUGFnZVRpdGxlXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGF5b3V0LnBhZ2UyVGl0bGUgPSB0aGlzLmFwcGxpY2F0aW9uVGl0bGVcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxheW91dCA9IG5ldyBEb3VibGVMYXlvdXQodGhpcy5wYWdlc1swXSwgdGhpcy5zdGRPdXQsIHRoaXMubGF5b3V0T3B0aW9ucylcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXlvdXQucGFnZTFUaXRsZSA9IHRoaXMuYXBwbGljYXRpb25UaXRsZVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxheW91dC5wYWdlMlRpdGxlID0gdGhpcy5sb2dQYWdlVGl0bGVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubGF5b3V0ID0gbmV3IERvdWJsZUxheW91dCh0aGlzLnBhZ2VzWzBdLCB0aGlzLnN0ZE91dCwgdGhpcy5sYXlvdXRPcHRpb25zKVxuICAgICAgICAgICAgICAgIHRoaXMubGF5b3V0LnBhZ2UxVGl0bGUgPSB0aGlzLmFwcGxpY2F0aW9uVGl0bGVcbiAgICAgICAgICAgICAgICB0aGlzLmxheW91dC5wYWdlMlRpdGxlID0gdGhpcy5sb2dQYWdlVGl0bGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuYWRkR2VuZXJpY0xpc3RlbmVycygpXG5cbiAgICAgICAgICAgIC8vIEkgdXNlIHJlYWRsaW5lIHRvIG1hbmFnZSB0aGUga2V5cHJlc3MgZXZlbnRcbiAgICAgICAgICAgIHJlYWRsaW5lLmVtaXRLZXlwcmVzc0V2ZW50cyh0aGlzLklucHV0KVxuICAgICAgICAgICAgdGhpcy5JbnB1dC5zZXRSYXdNb2RlKHRydWUpIC8vIFdpdGggdGhpcyBJIG9ubHkgZ2V0IHRoZSBrZXkgdmFsdWVcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gQ29uc29sZU1hbmFnZXIuaW5zdGFuY2VcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TG9nUGFnZVNpemUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9nUGFnZVNpemVcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0TG9nUGFnZVNpemUocm93czogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9nUGFnZVNpemUgPSByb3dzXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBtYWtlIHRoZSBDb25zb2xlTWFuYWdlciBoYW5kbGUgdGhlIGtleSBldmVudHMgd2hlbiBubyB3aWRnZXRzIGFyZSBzaG93ZWQuXG4gICAgICogSW5zaWRlIHRoaXMgZnVuY3Rpb24gYXJlIGRlZmluZWQgYWxsIHRoZSBrZXlzIHRoYXQgY2FuIGJlIHByZXNzZWQgYW5kIHRoZSBhY3Rpb25zIHRvIGRvIHdoZW4gdGhleSBhcmUgcHJlc3NlZC5cbiAgICAgKiBAbWVtYmVyb2YgQ29uc29sZU1hbmFnZXJcbiAgICAgKi9cbiAgICBwcml2YXRlIGFkZEdlbmVyaWNMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuSW5wdXQuYWRkTGlzdGVuZXIoXCJrZXlwcmVzc1wiLCAoX3N0cjogc3RyaW5nLCBrZXkgOiBLZXlMaXN0ZW5lckFyZ3MpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIGxldCBjaGFuZ2UgPSBmYWxzZVxuICAgICAgICAgICAgaWYgKHRoaXMuY2hhbmdlTGF5b3V0a2V5cy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2hhbmdlTGF5b3V0a2V5c1swXSA9PSBcImN0cmxcIikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoa2V5LmN0cmwgJiYga2V5Lm5hbWUgPT09IHRoaXMuY2hhbmdlTGF5b3V0a2V5c1sxXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZSA9IHRydWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2hhbmdlTGF5b3V0a2V5c1swXSA9PSBcIm1ldGFcIikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoa2V5LmFsdCAmJiBrZXkubmFtZSA9PT0gdGhpcy5jaGFuZ2VMYXlvdXRrZXlzWzFdKVxuICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlID0gdHJ1ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jaGFuZ2VMYXlvdXRrZXlzWzBdID09IFwic2hpZnRcIikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoa2V5LnNoaWZ0ICYmIGtleS5uYW1lID09PSB0aGlzLmNoYW5nZUxheW91dGtleXNbMV0pXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2UgPSB0cnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5Lm5hbWUgPT09IHRoaXMuY2hhbmdlTGF5b3V0a2V5c1swXSlcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlID0gdHJ1ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5zaG93TG9nS2V5ICYmIGtleS5uYW1lID09PSB0aGlzLnNob3dMb2dLZXkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dMb2dQb3B1cCgpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxheW91dC5jaGFuZ2VMYXlvdXQoKVxuICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaCgpXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChrZXkuY3RybCAmJiBrZXkubmFtZSA9PT0gXCJjXCIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXQoXCJleGl0XCIpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLndpZGdldHNDb2xsZWN0aW9uKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGtleS5uYW1lID09PSBcImRvd25cIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubGF5b3V0LmdldFNlbGVjdGVkKCkgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxheW91dC5wYWdlMS5kZWNyZWFzZVNjcm9sbEluZGV4KClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXlvdXQucGFnZTIuZGVjcmVhc2VTY3JvbGxJbmRleCgpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2goKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5Lm5hbWUgPT09IFwidXBcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubGF5b3V0LmdldFNlbGVjdGVkKCkgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxheW91dC5wYWdlMS5pbmNyZWFzZVNjcm9sbEluZGV4KClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXlvdXQucGFnZTIuaW5jcmVhc2VTY3JvbGxJbmRleCgpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2goKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0KFwia2V5cHJlc3NlZFwiLCBrZXkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gc2V0IGEga2V5IGxpc3RlbmVyIGZvciBhIHNwZWNpZmljIHdpZGdldC4gVGhlIGV2ZW50IGxpc3RlbmVyIGlzIHN0b3JlZCBpbiB0aGUgZXZlbnRMaXN0ZW5lcnNDb250YWluZXIgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBpZCAtIFRoZSBpZCBvZiB0aGUgd2lkZ2V0LlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IG1hbmFnZUZ1bmN0aW9uIC0gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUga2V5IGlzIHByZXNzZWQuXG4gICAgICogQG1lbWJlcm9mIENvbnNvbGVNYW5hZ2VyXG4gICAgICogQGV4YW1wbGUgQ00uc2V0S2V5TGlzdGVuZXIoJ2lucHV0UG9wdXAnLCBwb3B1cC5rZXlMaXN0ZW5lcilcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0S2V5TGlzdGVuZXIoaWQ6IHN0cmluZywgbWFuYWdlRnVuY3Rpb246IChfc3RyOiBzdHJpbmcsIGtleSA6IEtleUxpc3RlbmVyQXJncykgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLmV2ZW50TGlzdGVuZXJzQ29udGFpbmVyW2lkXSA9IG1hbmFnZUZ1bmN0aW9uXG4gICAgICAgIHRoaXMuSW5wdXQuYWRkTGlzdGVuZXIoXCJrZXlwcmVzc1wiLCB0aGlzLmV2ZW50TGlzdGVuZXJzQ29udGFpbmVyW2lkXSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHJlbW92ZSBhIGtleSBsaXN0ZW5lciBmb3IgYSBzcGVjaWZpYyB3aWRnZXQuIFRoZSBldmVudCBsaXN0ZW5lciBpcyByZW1vdmVkIGZyb20gdGhlIGV2ZW50TGlzdGVuZXJzQ29udGFpbmVyIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgLSBUaGUgaWQgb2YgdGhlIHdpZGdldC5cbiAgICAgKiBAbWVtYmVyb2YgQ29uc29sZU1hbmFnZXJcbiAgICAgKiBAZXhhbXBsZSBDTS5yZW1vdmVLZXlMaXN0ZW5lcignaW5wdXRQb3B1cCcpXG4gICAgICovXG4gICAgcHVibGljIHJlbW92ZUtleUxpc3RlbmVyKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5JbnB1dC5yZW1vdmVMaXN0ZW5lcihcImtleXByZXNzXCIsIHRoaXMuZXZlbnRMaXN0ZW5lcnNDb250YWluZXJbaWRdKVxuICAgICAgICBkZWxldGUgdGhpcy5ldmVudExpc3RlbmVyc0NvbnRhaW5lcltpZF1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHJlZ2lzdGVyIGEgd2lkZ2V0LiBUaGUgd2lkZ2V0IGlzIHN0b3JlZCBpbiB0aGUgd2lkZ2V0c0NvbGxlY3Rpb24gb2JqZWN0LiBUaGF0IGlzIGNhbGxlZCBieSB0aGUgd2lkZ2V0cyBpbiBzaG93KCkuXG4gICAgICogQHBhcmFtIHtXaWRnZXR9IHdpZGdldCAtIFRoZSB3aWRnZXQgdG8gcmVnaXN0ZXIuXG4gICAgICogQG1lbWJlcm9mIENvbnNvbGVNYW5hZ2VyXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwdWJsaWMgcmVnaXN0ZXJXaWdldCh3aWRnZXQ6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLndpZGdldHNDb2xsZWN0aW9uW3dpZGdldC5pZF0gPSB3aWRnZXRcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHVucmVnaXN0ZXIgYSB3aWRnZXQuIFRoZSB3aWRnZXQgaXMgcmVtb3ZlZCBmcm9tIHRoZSB3aWRnZXRzQ29sbGVjdGlvbiBvYmplY3QuIFRoYXQgaXMgY2FsbGVkIGJ5IHRoZSB3aWRnZXRzIGluIGhpZGUoKS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgLSBUaGUgaWQgb2YgdGhlIHdpZGdldC5cbiAgICAgKiBAbWVtYmVyb2YgQ29uc29sZU1hbmFnZXJcbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHB1YmxpYyB1blJlZ2lzdGVyV2lkZ2V0KHdpZGdldDogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLndpZGdldHNDb2xsZWN0aW9uW3dpZGdldC5pZF0pIHtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLndpZGdldHNDb2xsZWN0aW9uW3dpZGdldC5pZF1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gc2V0IHRoZSBob21lIHBhZ2UuIEl0IGFsc28gcmVmcmVzaCB0aGUgc2NyZWVuLlxuICAgICAqIEBwYXJhbSB7UGFnZUJ1aWxkZXJ9IHBhZ2UgLSBUaGUgcGFnZSB0byBzZXQgYXMgaG9tZSBwYWdlLlxuICAgICAqIEBtZW1iZXJvZiBDb25zb2xlTWFuYWdlclxuICAgICAqIEBleGFtcGxlIENNLnNldEhvbWVQYWdlKHApXG4gICAgICogQGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAxLjEuMTIgLSBVc2Ugc2V0UGFnZSBvciBzZXRQYWdlcyBpbnN0ZWFkXG4gICAgICovXG4gICAgcHVibGljIHNldEhvbWVQYWdlKHBhZ2U6IFBhZ2VCdWlsZGVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGFnZXNbMF0gPSBwYWdlXG4gICAgICAgIGlmICh0aGlzLmxvZ0xvY2F0aW9uID09PSBcInBvcHVwXCIpIHtcbiAgICAgICAgICAgIHRoaXMubGF5b3V0LnNldFBhZ2UxKHBhZ2UpXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMubG9nTG9jYXRpb24gPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxvZ0xvY2F0aW9uID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXlvdXQuc2V0UGFnZTIocGFnZSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXlvdXQuc2V0UGFnZTEocGFnZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubGF5b3V0LnNldFBhZ2UxKHBhZ2UpXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZWZyZXNoKClcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHNldCBhIHBhZ2Ugb2YgbGF5b3V0LiBJdCBhbHNvIHJlZnJlc2ggdGhlIHNjcmVlbi5cbiAgICAgKiBAcGFyYW0ge1BhZ2VCdWlsZGVyfSBwYWdlIC0gVGhlIHBhZ2UgdG8gc2V0IGFzIGhvbWUgcGFnZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3BhZ2VOdW1iZXJdIC0gVGhlIHBhZ2UgbnVtYmVyIHRvIHNldC4gMCBpcyB0aGUgZmlyc3QgcGFnZSwgMSBpcyB0aGUgc2Vjb25kIHBhZ2UuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFt0aXRsZV0gLSBUaGUgdGl0bGUgb2YgdGhlIHBhZ2UgdG8gb3ZlcndyaXRlIHRoZSBkZWZhdWx0IHRpdGxlLiBEZWZhdWx0IGlzIG51bGwuXG4gICAgICogQG1lbWJlcm9mIENvbnNvbGVNYW5hZ2VyXG4gICAgICogQGV4YW1wbGUgQ00uc2V0UGFnZShwLCAwKVxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRQYWdlKHBhZ2U6IFBhZ2VCdWlsZGVyLCBwYWdlTnVtYmVyID0gMCwgdGl0bGU6IHN0cmluZyB8IG51bGwgPSBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGFnZXNbcGFnZU51bWJlcl0gPSBwYWdlXG4gICAgICAgIGlmICh0aGlzLmxvZ0xvY2F0aW9uID09PSBcInBvcHVwXCIpIHtcbiAgICAgICAgICAgIGlmIChwYWdlTnVtYmVyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXlvdXQuc2V0UGFnZTEodGhpcy5wYWdlc1twYWdlTnVtYmVyXSlcbiAgICAgICAgICAgICAgICBpZiAodGl0bGUpIHRoaXMubGF5b3V0LnBhZ2UxVGl0bGUgPSB0aXRsZVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxheW91dC5zZXRQYWdlMih0aGlzLnBhZ2VzW3BhZ2VOdW1iZXJdKVxuICAgICAgICAgICAgICAgIGlmICh0aXRsZSkgdGhpcy5sYXlvdXQucGFnZTJUaXRsZSA9IHRpdGxlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMubG9nTG9jYXRpb24gPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxvZ0xvY2F0aW9uID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXlvdXQuc2V0UGFnZTIodGhpcy5wYWdlc1twYWdlTnVtYmVyXSlcbiAgICAgICAgICAgICAgICBpZiAodGl0bGUpIHRoaXMubGF5b3V0LnBhZ2UyVGl0bGUgPSB0aXRsZVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxheW91dC5zZXRQYWdlMSh0aGlzLnBhZ2VzW3BhZ2VOdW1iZXJdKVxuICAgICAgICAgICAgICAgIGlmICh0aXRsZSkgdGhpcy5sYXlvdXQucGFnZTFUaXRsZSA9IHRpdGxlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAocGFnZU51bWJlciA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMubGF5b3V0LnNldFBhZ2UxKHRoaXMucGFnZXNbcGFnZU51bWJlcl0pXG4gICAgICAgICAgICAgICAgaWYgKHRpdGxlKSB0aGlzLmxheW91dC5wYWdlMVRpdGxlID0gdGl0bGVcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXlvdXQuc2V0UGFnZTIodGhpcy5wYWdlc1twYWdlTnVtYmVyXSlcbiAgICAgICAgICAgICAgICBpZiAodGl0bGUpIHRoaXMubGF5b3V0LnBhZ2UyVGl0bGUgPSB0aXRsZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVmcmVzaCgpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBzZXQgYm90aCBwYWdlcyBvZiBsYXlvdXQuIEl0IGFsc28gcmVmcmVzaCB0aGUgc2NyZWVuLlxuICAgICAqIEBwYXJhbSB7QXJyYXk8UGFnZUJ1aWxkZXI+fSBwYWdlcyAtIFRoZSBwYWdlIHRvIHNldCBhcyBob21lIHBhZ2UuXG4gICAgICogQG1lbWJlcm9mIENvbnNvbGVNYW5hZ2VyXG4gICAgICogQGV4YW1wbGUgQ00uc2V0UGFnZXMoW3AxLCBwMl0sIDApXG4gICAgICovXG4gICAgcHVibGljIHNldFBhZ2VzKHBhZ2VzOiBBcnJheTxQYWdlQnVpbGRlcj4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wYWdlcyA9IHBhZ2VzXG4gICAgICAgIGlmICh0aGlzLmxvZ0xvY2F0aW9uID09PSBcInBvcHVwXCIpIHtcbiAgICAgICAgICAgIHRoaXMubGF5b3V0LnNldFBhZ2UxKHRoaXMucGFnZXNbMF0pXG4gICAgICAgICAgICB0aGlzLmxheW91dC5zZXRQYWdlMih0aGlzLnBhZ2VzWzFdKVxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLmxvZ0xvY2F0aW9uID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5sb2dMb2NhdGlvbiA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMubGF5b3V0LnNldFBhZ2UyKHRoaXMucGFnZXNbMF0pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubGF5b3V0LnNldFBhZ2UxKHRoaXMucGFnZXNbMF0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmxheW91dC5zZXRQYWdlMSh0aGlzLnBhZ2VzWzBdKVxuICAgICAgICAgICAgdGhpcy5sYXlvdXQuc2V0UGFnZTIodGhpcy5wYWdlc1sxXSlcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlZnJlc2goKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmVmcmVzaCB0aGUgc2NyZWVuLiBJdCBkbyB0aGUgZm9sbG93aW5nIHNlcXVlbmNlOiBDbGVhciB0aGUgc2NyZWVuLCBkcmF3IGxheW91dCwgZHJhdyB3aWRnZXRzIGFuZCBmaW5hbGx5IHByaW50IHRoZSBzY3JlZW4gdG8gdGhlIHN0ZE91dC5cbiAgICAgKiBAbWVtYmVyb2YgQ29uc29sZU1hbmFnZXJcbiAgICAgKiBAZXhhbXBsZSBDTS5yZWZyZXNoKClcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVmcmVzaCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5TY3JlZW4udXBkYXRlKClcbiAgICAgICAgdGhpcy5sYXlvdXQuZHJhdygpXG4gICAgICAgIGZvciAoY29uc3Qgd2lkZ2V0IGluIHRoaXMud2lkZ2V0c0NvbGxlY3Rpb24pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLndpZGdldHNDb2xsZWN0aW9uW3dpZGdldF0uaXNWaXNpYmxlKCkpXG4gICAgICAgICAgICAgICAgdGhpcy53aWRnZXRzQ29sbGVjdGlvblt3aWRnZXRdLmRyYXcoKVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuU2NyZWVuLnByaW50KClcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHNob3cgYSBwb3B1cCBjb250YWluaW5nIGFsbCB0aGUgc3RkT3V0IG9mIHRoZSBjb25zb2xlLlxuICAgICAqIEBtZW1iZXJvZiBDb25zb2xlTWFuYWdlclxuICAgICAqIEByZXR1cm5zIHRoZSBpbnN0YW5jZSBvZiB0aGUgZ2VuZXJhdGVkIHBvcHVwLlxuICAgICAqIEBleGFtcGxlIENNLnNob3dMb2dQb3B1cCgpXG4gICAgICovXG4gICAgcHVibGljIHNob3dMb2dQb3B1cCgpOiBDdXN0b21Qb3B1cCB7XG4gICAgICAgIHJldHVybiBuZXcgQ3VzdG9tUG9wdXAoXCJsb2dQb3B1cFwiLCBcIkFwcGxpY2F0aW9uIExvZ3NcIiwgdGhpcy5zdGRPdXQsIHRoaXMuU2NyZWVuLndpZHRoIC0gMTIpLnNob3coKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gbG9nIGEgbWVzc2FnZS4gSXQgaXMgdXNlZCB0byBsb2cgbWVzc2FnZXMgaW4gdGhlIGxvZyBwYWdlLiBEb24ndCBhZGQgY29sb3JzIHRvIHRoZSBtZXNzYWdlLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIC0gVGhlIG1lc3NhZ2UgdG8gbG9nLlxuICAgICAqIEBtZW1iZXJvZiBDb25zb2xlTWFuYWdlclxuICAgICAqIEBleGFtcGxlIENNLmxvZyhcIkhlbGxvIHdvcmxkXCIpXG4gICAgICovXG4gICAgcHVibGljIGxvZyhtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdGRPdXQuYWRkUm93KHsgdGV4dDogbWVzc2FnZSwgY29sb3I6IFwid2hpdGVcIiB9KVxuICAgICAgICB0aGlzLnVwZGF0ZUxvZ3NDb25zb2xlKHRydWUpXG4gICAgfVxuXG4gICAgLyoqIFxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gbG9nIGFuIGVycm9yIG1lc3NhZ2UuIEl0IGlzIHVzZWQgdG8gbG9nIHJlZCBtZXNzYWdlcyBpbiB0aGUgbG9nIHBhZ2UuIERvbid0IGFkZCBjb2xvcnMgdG8gdGhlIG1lc3NhZ2UuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgLSBUaGUgbWVzc2FnZSB0byBsb2cuXG4gICAgICogQG1lbWJlcm9mIENvbnNvbGVNYW5hZ2VyXG4gICAgICogQGV4YW1wbGUgQ00uZXJyb3IoXCJBbm9tYWx5IGRldGVjdGVkXCIpXG4gICAgICovXG4gICAgcHVibGljIGVycm9yKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0ZE91dC5hZGRSb3coeyB0ZXh0OiBtZXNzYWdlLCBjb2xvcjogXCJyZWRcIiB9KVxuICAgICAgICB0aGlzLnVwZGF0ZUxvZ3NDb25zb2xlKHRydWUpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBsb2cgYSB3YXJuaW5nIG1lc3NhZ2UuIEl0IGlzIHVzZWQgdG8gbG9nIHllbGxvdyBtZXNzYWdlcyBpbiB0aGUgbG9nIHBhZ2UuIERvbid0IGFkZCBjb2xvcnMgdG8gdGhlIG1lc3NhZ2UuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgLSBUaGUgbWVzc2FnZSB0byBsb2cuXG4gICAgICogQG1lbWJlcm9mIENvbnNvbGVNYW5hZ2VyXG4gICAgICogQGV4YW1wbGUgQ00ud2FybihcIkFub21hbHkgZGV0ZWN0ZWRcIilcbiAgICAgKi9cbiAgICBwdWJsaWMgd2FybihtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdGRPdXQuYWRkUm93KHsgdGV4dDogbWVzc2FnZSwgY29sb3I6IFwieWVsbG93XCIgfSlcbiAgICAgICAgdGhpcy51cGRhdGVMb2dzQ29uc29sZSh0cnVlKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gbG9nIGFuIGluZm8gbWVzc2FnZS4gSXQgaXMgdXNlZCB0byBsb2cgYmx1ZSBtZXNzYWdlcyBpbiB0aGUgbG9nIHBhZ2UuIERvbid0IGFkZCBjb2xvcnMgdG8gdGhlIG1lc3NhZ2UuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgLSBUaGUgbWVzc2FnZSB0byBsb2cuXG4gICAgICogQG1lbWJlcm9mIENvbnNvbGVNYW5hZ2VyXG4gICAgICogQGV4YW1wbGUgQ00uaW5mbyhcIkFub21hbHkgZGV0ZWN0ZWRcIilcbiAgICAgKi9cbiAgICBwdWJsaWMgaW5mbyhtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdGRPdXQuYWRkUm93KHsgdGV4dDogbWVzc2FnZSwgY29sb3I6IFwiYmx1ZVwiIH0pXG4gICAgICAgIHRoaXMudXBkYXRlTG9nc0NvbnNvbGUodHJ1ZSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHVwZGF0ZSB0aGUgbG9ncyBjb25zb2xlLiBJdCBpcyBjYWxsZWQgYnkgdGhlIGxvZyBmdW5jdGlvbnMuXG4gICAgICogQHBhcmFtIHtib29sZWFufSByZXNldEN1cnNvciAtIElmIHRydWUsIHRoZSBsb2cgc2Nyb2xsIGluZGV4IGlzIHJlc2V0dGVkLlxuICAgICAqIEBtZW1iZXJvZiBDb25zb2xlTWFuYWdlclxuICAgICAqL1xuICAgIHByaXZhdGUgdXBkYXRlTG9nc0NvbnNvbGUocmVzZXRDdXJzb3I6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHJlc2V0Q3Vyc29yKSB7XG4gICAgICAgICAgICB0aGlzLnN0ZE91dC5zZXRTY3JvbGxJbmRleCgwKVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVmcmVzaCgpXG4gICAgfVxuXG4gICAgLy8gVE9ETzogbW92ZSB0byB1dGlsc1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gdHJ1bmNhdGUgYSBzdHJpbmcgYWRkaW5nIC4uLiBhdCB0aGUgZW5kLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgLSBUaGUgc3RyaW5nIHRvIHRydW5jYXRlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIC0gVGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIGtlZXAuXG4gICAgICogQHBhcmFtIHtib29sZWFufSB1c2VXb3JkQm91bmRhcnkgLSBJZiB0cnVlLCB0aGUgdHJ1bmNhdGlvbiB3aWxsIGJlIGRvbmUgYXQgdGhlIGVuZCBvZiB0aGUgd29yZC5cbiAgICAgKiBAbWVtYmVyb2YgQ29uc29sZU1hbmFnZXJcbiAgICAgKiBAZXhhbXBsZSBDTS50cnVuY2F0ZShcIkhlbGxvIHdvcmxkXCIsIDUsIHRydWUpIC8vIFwiSGVsbG8uLi5cIlxuICAgICAqL1xuICAgIHB1YmxpYyB0cnVuY2F0ZShzdHI6IHN0cmluZywgbjogbnVtYmVyLCB1c2VXb3JkQm91bmRhcnk6IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgICAgICBpZiAoc3RyLmxlbmd0aCA8PSBuKSB7IHJldHVybiBzdHIgfVxuICAgICAgICBjb25zdCBzdWJTdHJpbmcgPSBzdHIuc3Vic3RyaW5nKDAsIG4gLSAxKSAvLyB0aGUgb3JpZ2luYWwgY2hlY2tcbiAgICAgICAgcmV0dXJuICh1c2VXb3JkQm91bmRhcnkgP1xuICAgICAgICAgICAgc3ViU3RyaW5nLnN1YnN0cmluZygwLCBzdWJTdHJpbmcubGFzdEluZGV4T2YoXCIgXCIpKSA6XG4gICAgICAgICAgICBzdWJTdHJpbmcpICsgXCLigKZcIlxuICAgIH1cbn1cblxuZXhwb3J0IHtcbiAgICBQYWdlQnVpbGRlcixcbiAgICBDb25zb2xlTWFuYWdlcixcbiAgICBPcHRpb25Qb3B1cCxcbiAgICBJbnB1dFBvcHVwLFxuICAgIENvbmZpcm1Qb3B1cCxcbiAgICBCdXR0b25Qb3B1cCxcbiAgICBDdXN0b21Qb3B1cCxcbiAgICBGaWxlU2VsZWN0b3JQb3B1cFxufSJdfQ== |
{ | ||
"name": "console-gui-tools", | ||
"version": "1.1.21", | ||
"version": "1.1.28", | ||
"description": "A simple library to draw option menu, text popup or other widgets and layout on a Node.js console.", | ||
@@ -9,9 +9,12 @@ "main": "dist/ConsoleGui.js", | ||
"type": "module", | ||
"files": [ | ||
"dist/" | ||
], | ||
"scripts": { | ||
"lint": "eslint ./src/ --ext .ts", | ||
"build": "tsc", | ||
"build": "npx tsc", | ||
"prepare": "npm run build", | ||
"test": "npm run build && node ./examples/tcp_simulator.mjs", | ||
"start": "npm run build && node ./dist/ConsoqleGui.js", | ||
"docsgen": "node ./docgen.cjs" | ||
"docs": "node ./docgen.cjs" | ||
}, | ||
@@ -44,2 +47,8 @@ "repository": { | ||
"devDependencies": { | ||
"@babel/cli": "^7.17.10", | ||
"@babel/core": "^7.18.0", | ||
"@babel/plugin-proposal-class-properties": "^7.17.12", | ||
"@babel/plugin-proposal-object-rest-spread": "^7.18.0", | ||
"@babel/preset-env": "^7.18.0", | ||
"@babel/preset-typescript": "^7.17.12", | ||
"@types/node": "^17.0.35", | ||
@@ -49,2 +58,3 @@ "@typescript-eslint/eslint-plugin": "^5.25.0", | ||
"eslint": "^8.15.0", | ||
"jsdoc-babel": "^0.5.0", | ||
"jsdoc-to-markdown": "^7.1.1", | ||
@@ -51,0 +61,0 @@ "typescript": "^4.6.4" |
@@ -0,0 +0,0 @@ # console-gui-tools |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
1
0
446036
13
33
3618