@witnet/sdk 1.0.5 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/package.json +1 -1
- package/dist/src/bin/helpers.js +2 -2
- package/dist/src/lib/crypto/transmitters.d.ts +1 -1
- package/dist/src/lib/crypto/transmitters.d.ts.map +1 -1
- package/dist/src/lib/crypto/transmitters.js +1 -1
- package/package.json +1 -1
- package/src/bin/cli/radon.js +1 -1
- package/src/bin/helpers.js +1 -1
package/dist/package.json
CHANGED
package/dist/src/bin/helpers.js
CHANGED
|
@@ -96,7 +96,7 @@ async function execRadonBytecode(bytecode, ...flags) {
|
|
|
96
96
|
}
|
|
97
97
|
else {
|
|
98
98
|
const npx = os.type() === "Windows_NT" ? "npx.cmd" : "npx";
|
|
99
|
-
return cmd(npx, "witnet", "radon", "
|
|
99
|
+
return cmd(npx, "witnet", "radon", "dry-run", bytecode, ...flags);
|
|
100
100
|
// .catch((err) => {
|
|
101
101
|
// let errorMessage = err.message.split('\n').slice(1).join('\n').trim()
|
|
102
102
|
// const errorRegex = /.*^error: (?<message>.*)$.*/gm
|
|
@@ -823,4 +823,4 @@ module.exports = {
|
|
|
823
823
|
spliceWildcard,
|
|
824
824
|
txJsonReplacer,
|
|
825
825
|
};
|
|
826
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaW4vaGVscGVycy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQTtBQUN6QyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7QUFDaEMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQzFCLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUN4QixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUE7QUFFcEMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQ3JDLDZFQUE2RSxFQUFFLEVBQUUsQ0FDbEYsQ0FBQTtBQUVELE1BQU0sTUFBTSxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUU7SUFDeEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUMxQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7UUFDOUIsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLENBQUMsRUFBRTtRQUNyRCxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLHVCQUF1QixFQUFFLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQ25FLE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQyxDQUFBO0FBRUQsU0FBUyxZQUFZLENBQUUsQ0FBQyxFQUFFLENBQUM7SUFDekIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQy9ELElBQUksQ0FBQyxJQUFJLENBQUM7UUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN2QixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQ2xCLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQUUsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQ3BELE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQTtJQUM3QixPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFBO0FBQ3ZCLENBQUM7QUFBQSxDQUFDO0FBRUYsTUFBTSxVQUFVLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUU7SUFDcEMsTUFBTSxNQUFNLEdBQUc7UUFDYixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRTtRQUMvQixFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUU7UUFDckMsRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFO1FBQ3JDLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRTtRQUN0QyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUU7S0FDdkMsQ0FBQTtJQUNELHlDQUF5QztJQUN6QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUMxRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDL0UsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7SUFDOUcsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFBO0FBQzVILENBQUMsQ0FBQTtBQUVELE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsR0FBRyxhQUFhLENBQUE7QUFDdkQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUE7QUFDbkQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUE7QUFDcEQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUE7QUFDbEQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUE7QUFFckQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDaEQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDaEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDakQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDbkQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDbEQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDOUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDOUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDL0MsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDbkQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDN0MsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFFaEQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDN0MsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDN0MsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDN0MsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDOUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDbEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDL0MsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDNUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDaEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFFL0MsU0FBUyxXQUFXLENBQUUsQ0FBQyxFQUFFLEdBQUc7SUFDMUIsSUFBSSxDQUFDLEdBQUcsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRO1FBQUUsT0FBTyxDQUFDLENBQUE7SUFDN0MsSUFBSSxHQUFHLFlBQVksQ0FBQztRQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzlCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7UUFBRSxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTs7UUFDbEYsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQ3JGLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFFLElBQUk7SUFDN0IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7QUFDbEQsQ0FBQztBQUVELFNBQVMsR0FBRyxDQUFFLEdBQUcsT0FBTztJQUN0QixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3JDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ2pGLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1YsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ2YsQ0FBQztZQUNELElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ2hCLENBQUM7WUFDRCxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDakIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFBQSxDQUFDO0FBRUYsS0FBSyxVQUFVLGlCQUFpQixDQUFFLFFBQVEsRUFBRSxHQUFHLEtBQUs7SUFDbEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzNCLE1BQU0sU0FBUyxDQUFDLG9CQUFvQixDQUFDLENBQUE7SUFDdkMsQ0FBQztTQUFNLENBQUM7UUFDTixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtRQUMxRCxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUE7UUFDaEUsb0JBQW9CO1FBQ3BCLDRFQUE0RTtRQUM1RSx5REFBeUQ7UUFDekQsbURBQW1EO1FBQ25ELHFCQUFxQjtRQUNyQixnREFBZ0Q7UUFDaEQsUUFBUTtRQUNSLHVDQUF1QztRQUN2Qyx5Q0FBeUM7UUFDekMsS0FBSztJQUNQLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUUsSUFBSSxFQUFFLEtBQUs7SUFDbkMsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFBO0lBQ2xCLElBQUksSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ2xCLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2hDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFBO1lBQzNDLElBQUksU0FBUyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNuQixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtvQkFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQzt3QkFDakUsTUFBTSxLQUFLLENBQUMsb0NBQW9DLElBQUksRUFBRSxDQUFDLENBQUE7b0JBQ3pELENBQUM7eUJBQU0sQ0FBQzt3QkFDTixPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQTt3QkFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUE7b0JBQzNCLENBQUM7Z0JBQ0gsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUE7b0JBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFBO2dCQUMzQixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUNELE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUE7QUFDeEIsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFFLFNBQVM7SUFDL0IsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztRQUFFLFNBQVMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzlELE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDdEYsQ0FBQztBQUVELFNBQVMsc0JBQXNCLENBQUUsRUFBRTtJQUNqQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFBQyxDQUFDO0lBRTlELElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ25CLGtCQUFrQjtRQUNsQixJQUFJLEVBQUUsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUFDLE9BQU8sSUFBSSxDQUFBO1FBQUMsQ0FBQztRQUV2Qyx5SUFBeUk7UUFDekksT0FBTywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksNkNBQTZDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLDRCQUE0QixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUMvSSxDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUMsMkJBQTJCO0lBRTVFLGtDQUFrQztJQUNsQyxJQUFJLEVBQUUsS0FBSyxLQUFLO1FBQUUsT0FBTyxJQUFJLENBQUE7SUFFN0Isd0ZBQXdGO1NBQ25GLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFBO0lBRXRELDJFQUEyRTtJQUMzRSxxQkFBcUI7U0FDaEIsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFBO0lBRXBELHFCQUFxQjtTQUNoQixJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUE7SUFFcEQsNkRBQTZEO1NBQ3hELElBQUksU0FBUyxLQUFLLE1BQU07UUFBRSxPQUFPLElBQUksQ0FBQTtJQUUxQyxpQkFBaUI7U0FDWixJQUFJLFNBQVMsS0FBSyxLQUFLO1FBQUUsT0FBTyxJQUFJLENBQUE7SUFFekMseURBQXlEO0lBQ3pELE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUUsR0FBRyxFQUFFLE1BQU07SUFDdkMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUM7UUFDbEIsQ0FDRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssTUFBTSxHQUFHLENBQUMsQ0FBQztZQUMxRCxHQUFHLENBQUMsTUFBTSxLQUFLLE1BQU0sR0FBRyxDQUFDLENBQzVCLENBQ04sSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDdEIsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFFLEdBQUc7SUFDdkIsT0FBTyxDQUNMLE9BQU8sR0FBRyxLQUFLLFFBQVE7UUFDbkIsQ0FDRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1RCxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQzlCLENBQ04sSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDdEIsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFFLE1BQU0sRUFBRSxRQUFRLEdBQUcsS0FBSztJQUM1QyxJQUFJLE1BQU0sWUFBWSxVQUFVO1FBQUUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDOUQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3JHLElBQUksQ0FBQyxFQUFFLENBQUM7U0FDUixLQUFLLENBQUMsaUJBQWlCLENBQUM7U0FDeEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBQ2IsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFFLEdBQUc7SUFDcEIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDOUIsT0FBTztZQUNMLFNBQVMsQ0FBQyxRQUFRLEdBQUcsSUFBSTtZQUN6QixTQUFTLENBQUMsSUFBSTtZQUNkLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMzQixTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDMUIsQ0FBQTtJQUNILENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxNQUFNLElBQUksU0FBUyxDQUFDLDZCQUE2QixHQUFHLEVBQUUsQ0FBQyxDQUFBO0lBQ3pELENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUUsR0FBRyxFQUFFLE1BQU07SUFDN0IsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDdEIsZ0JBQWdCLENBQUMsRUFBRSxHQUFHLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO0lBQ3RDLGNBQWMsQ0FBQyxFQUFFLEdBQUcsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7SUFDcEMsZUFBZSxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQTtJQUN0QyxlQUFlLENBQUMsRUFBRSxHQUFHLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFBO0FBQ3hDLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBRSxNQUFNO0lBQzlCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDbkMsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtRQUM5QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO1FBQzlELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM1RixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDeEQsbUJBQW1CLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDL0MsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDeEIsSUFBSSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDakIsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN0QixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUE7UUFDdEQsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUUsTUFBTTtJQUM5QixJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ1gsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDL0IsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7WUFDekIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtZQUNuRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtnQkFDL0IsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ2pFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLG1CQUFtQixPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFDL0ksQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQTtnQkFDeEcsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUUsS0FBSztJQUM1QixJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ1YsS0FBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNqRixJQUFJLENBQUMsR0FBRyxDQUFDO2dCQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUE7aUJBQ2YsSUFBSSxDQUFDLEdBQUcsQ0FBQztnQkFBRSxPQUFPLENBQUMsQ0FBQTs7Z0JBQ25CLE9BQU8sQ0FBQyxDQUFBO1FBQ2YsQ0FBQyxDQUFDLENBQUE7UUFDRixJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUN4QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtZQUNqSixLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNuQixNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUE7Z0JBQzNFLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUNyRyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTTtJQUM3QyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ3RCLElBQUksTUFBTSxFQUFFLENBQUM7UUFDWCxJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQTtRQUMxQyxpREFBaUQ7UUFDakQsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztnQkFDaEQsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUTtnQkFDL0IsQ0FBQyxDQUFDLENBQ0EsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQ3hELENBQUE7WUFDSCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDMUIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFBO1lBQ2xFLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQzlCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxDQUFBO1FBQ3ZILElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUNqQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUE7WUFDOUIsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUNsRCxDQUFDO0lBQ0gsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUMscUNBQXFDLENBQUMsQ0FBQTtJQUNyRixDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUUsT0FBTztJQUNoQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUN4RixJQUFJLENBQUMsR0FBRyxDQUFDO1lBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQTthQUNmLElBQUksQ0FBQyxHQUFHLENBQUM7WUFBRSxPQUFPLENBQUMsQ0FBQTs7WUFDbkIsT0FBTyxDQUFDLENBQUE7SUFDZixDQUFDLENBQUMsQ0FBQTtJQUNGLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN2QixPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQzFCLE1BQU0sU0FBUyxHQUFHLE9BQU87YUFDdEIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7YUFDakcsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNwRCxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3ZCLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNuQixNQUFNLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUE7Z0JBQ2pGLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDdkcsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLG1CQUFtQixDQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTTtJQUMvQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBQ3RDLGdCQUFnQixDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBQ3pFLGNBQWMsQ0FBQyxFQUFFLEdBQUcsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQTtJQUN2RSxlQUFlLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFBO0FBQ2xFLENBQUM7QUFFRCxTQUFTLFdBQVc7SUFDbEIsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxlQUFlLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBQ2xGLENBQUM7QUFFRCxTQUFTLDJCQUEyQixDQUFFLEdBQUc7SUFDdkMsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFBO0lBQ3BCLElBQUksR0FBRyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ25DLElBQUksS0FBSyxDQUFBO1FBQ1QsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFBO1FBQ3hCLE9BQU8sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzNDLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDM0MsSUFBSSxTQUFTLEdBQUcsWUFBWTtnQkFBRSxZQUFZLEdBQUcsU0FBUyxDQUFBO1FBQ3hELENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxZQUFZLENBQUE7QUFDckIsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUUsU0FBUztJQUNuQyxJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7Z0JBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7O2dCQUN6RSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNsQyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7U0FBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUNwQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtJQUM1RCxDQUFDO1NBQU0sSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUN6QyxJQUFJLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDaEMsSUFBSSxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztnQkFDN0IsTUFBTSxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQTtZQUNyRCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUUsR0FBRztJQUN0QixPQUFPLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDaEQsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUUsR0FBRyxFQUFFLElBQUk7SUFDbEMsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUU7UUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDOUMsSUFBSSxHQUFHLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDbkMsS0FBSyxJQUFJLFFBQVEsR0FBRyxDQUFDLEVBQUUsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUMxRCxNQUFNLFFBQVEsR0FBRyxLQUFLLFFBQVEsSUFBSSxDQUFBO1lBQ2xDLEdBQUcsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtRQUNoRCxDQUFDO0lBQ0gsQ0FBQztTQUFNLElBQUksR0FBRyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNyQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUN0RSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQztZQUMvQixDQUFDLENBQUMsS0FBSyxDQUNSLENBQUE7SUFDSCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUztJQUN6RCxJQUFJLEdBQUcsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNuQyxNQUFNLFFBQVEsR0FBRyxLQUFLLFFBQVEsSUFBSSxDQUFBO1FBQ2xDLEdBQUcsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQTtRQUN4QyxLQUFLLElBQUksQ0FBQyxHQUFHLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzlDLEdBQUcsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNsRCxDQUFDO0lBQ0gsQ0FBQztTQUFNLElBQUksR0FBRyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNyQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUN0RSxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQztZQUN0RCxDQUFDLENBQUMsS0FBSyxDQUNSLENBQUE7SUFDSCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDO0FBRUQsS0FBSyxVQUFVLFVBQVUsQ0FBRSxRQUFRLEVBQUUsSUFBSTtJQUN2QyxNQUFNLEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQTtJQUNoRSxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3JDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDbkUsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDVixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDZixDQUFDO1lBQ0QsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDaEIsQ0FBQztZQUNELE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNqQixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUUsR0FBRztJQUM1QixPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFVBQVUsS0FBSyxFQUFFLE9BQU87UUFDcEQsT0FBTyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUE7SUFDOUIsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUN4QixDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsR0FBRztJQUN2QixNQUFNLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzdDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDcEMsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUM7UUFDekIsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNqQyxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUUsR0FBRztJQUN2QixNQUFNLElBQUksR0FBRyxFQUFFLENBQUE7SUFDZixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3BDLElBQUksUUFBUSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDaEMsSUFBSSxRQUFRLEdBQUcsSUFBSTtZQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7YUFDbkMsSUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLEVBQzlCLElBQUksR0FBRyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQzdCLENBQUM7YUFBTSxJQUFJLFFBQVEsR0FBRyxNQUFNLElBQUksUUFBUSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxFQUMvQixJQUFJLEdBQUcsQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFDL0IsSUFBSSxHQUFHLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUE7UUFDN0IsQ0FBQzthQUFNLENBQUMsQ0FBQyxpQkFBaUI7WUFDeEIsQ0FBQyxFQUFFLENBQUE7WUFDSCxxQ0FBcUM7WUFDckMsd0NBQXdDO1lBQ3hDLHlDQUF5QztZQUN6QyxRQUFRLEdBQUcsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3RDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFBO1lBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxFQUMvQixJQUFJLEdBQUcsQ0FBQyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsRUFDaEMsSUFBSSxHQUFHLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQy9CLElBQUksR0FBRyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUUsS0FBSztJQUM1QixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFBO0lBQ3hCLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFBO0lBQzlCLElBQUksS0FBSyxFQUFFLEtBQUssQ0FBQTtJQUNoQixPQUFPLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNmLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUNkLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2YsS0FBSyxDQUFDLENBQUM7WUFBQyxLQUFLLENBQUMsQ0FBQztZQUFDLEtBQUssQ0FBQyxDQUFDO1lBQUMsS0FBSyxDQUFDLENBQUM7WUFBQyxLQUFLLENBQUMsQ0FBQztZQUFDLEtBQUssQ0FBQyxDQUFDO1lBQUMsS0FBSyxDQUFDLENBQUM7WUFBQyxLQUFLLENBQUM7Z0JBQzVELFdBQVc7Z0JBQ1gsR0FBRyxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQzdCLE1BQUs7WUFDUCxLQUFLLEVBQUUsQ0FBQztZQUFDLEtBQUssRUFBRTtnQkFDZCx3QkFBd0I7Z0JBQ3hCLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtnQkFDbEIsR0FBRyxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFBO2dCQUM5RCxNQUFLO1lBQ1AsS0FBSyxFQUFFO2dCQUNMLGtDQUFrQztnQkFDbEMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBO2dCQUNsQixLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7Z0JBQ2xCLEdBQUcsSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNqQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDckIsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUNsQyxNQUFLO1FBQ1QsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQTtBQUNaLENBQUM7QUFFRCxLQUFLLFVBQVUsTUFBTSxDQUFFLFFBQVE7SUFDN0IsTUFBTSxpQkFBaUIsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDO1FBQ2pELEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztRQUNwQixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07S0FDdkIsQ0FBQyxDQUFBO0lBQ0YsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNyQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsR0FBRyxRQUFRLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ3RELGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFBO1lBQ3pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUMxQixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQztBQUVELEtBQUssVUFBVSxRQUFRLENBQUUsT0FBTztJQUM5QixNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQUcsRUFBRTtRQUNwQixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQy9CLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNULE9BQU8sV0FBVyxDQUFDLEdBQUcsRUFBRTtZQUN0QixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ25CLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNwQyxDQUFDLEVBQUUsQ0FBQTtRQUNMLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUNSLENBQUMsQ0FBQyxFQUFFLENBQUE7SUFDSixPQUFPLE9BQU87U0FDWCxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDYixhQUFhLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDdEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDNUIsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBRSxVQUFVO0lBQ2xDLElBQUksVUFBVSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3JELE1BQU0sU0FBUyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUM3RSxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUN0QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDN0IsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUE7WUFDckYsT0FBTztnQkFDTCxNQUFNLEtBQUssVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNsRixHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFlBQVksS0FBSztvQkFDNUQsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3JCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ3pEO2FBQ0YsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFBO1FBQ0YsVUFBVSxDQUFDLE9BQU8sRUFBRTtZQUNsQixTQUFTO1lBQ1QsY0FBYyxFQUFFLEVBQUU7U0FDbkIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBRSxRQUFRLEVBQUUsS0FBSyxHQUFHLE1BQU0sRUFBRSxNQUFNLEdBQUcsRUFBRTtJQUN6RCxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUMzRCxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxLQUFLLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDL0MsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7QUFDN0QsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFFLE9BQU8sRUFBRSxPQUFPO0lBQ25DLE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQTtJQUM1SSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ25DLE1BQU0sU0FBUyxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDM0YsSUFBSSxDQUFDLE9BQU87UUFBRSxPQUFPLEdBQUcsRUFBRSxDQUFBO0lBQzFCLE1BQU0sTUFBTSxHQUFHLE9BQU8sRUFBRSxNQUFNLElBQUksRUFBRSxDQUFBO0lBQ3BDLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3hFLE1BQU0sY0FBYyxHQUFHLE9BQU8sRUFBRSxjQUFjLElBQUksRUFBRSxDQUFBO0lBQ3BELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFDNUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxPQUFPLEVBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDOUQsSUFBSSxRQUFRLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtRQUM5RyxJQUFJLE9BQU8sRUFBRSxTQUFTLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ25ELFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUMzRixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsQ0FBQTtJQUMzQyxDQUFDLENBQUMsQ0FBQTtJQUNGLElBQUksUUFBUSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO0lBQ25FLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLEtBQUssUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDcEQsSUFBSSxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUM7UUFDdkIsUUFBUSxHQUFHLE9BQU8sQ0FBQyxN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aXJlKFwiY2hpbGRfcHJvY2Vzc1wiKVxyXG5jb25zdCBtb21lbnQgPSByZXF1aXJlKFwibW9tZW50XCIpXHJcbmNvbnN0IG5ldCA9IHJlcXVpcmUoXCJuZXRcIilcclxuY29uc3Qgb3MgPSByZXF1aXJlKFwib3NcIilcclxuY29uc3QgcmVhZGxpbmUgPSByZXF1aXJlKFwicmVhZGxpbmVcIilcclxuXHJcbmNvbnN0IGNvbG9yc3RyaXAgPSAoc3RyKSA9PiBzdHIucmVwbGFjZShcclxuICAvW1xcdTAwMWJcXHUwMDliXVtbKCkjOz9dKig/OlswLTldezEsNH0oPzo7WzAtOV17MCw0fSkqKT9bMC05QS1PUlpjZi1ucXJ5PT48XS9nLCBcIlwiXHJcbilcclxuXHJcbmNvbnN0IGNvbW1hcyA9IChudW1iZXIpID0+IHtcclxuICBjb25zdCBwYXJ0cyA9IG51bWJlci50b1N0cmluZygpLnNwbGl0KFwiLlwiKVxyXG4gIGNvbnN0IHJlc3VsdCA9IHBhcnRzLmxlbmd0aCA8PSAxXHJcbiAgICA/IGAke3BhcnRzWzBdLnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csIFwiLFwiKX1gXHJcbiAgICA6IGAke3BhcnRzWzBdLnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csIFwiLFwiKX0uJHtwYXJ0c1sxXX1gXHJcbiAgcmV0dXJuIHJlc3VsdFxyXG59XHJcblxyXG5mdW5jdGlvbiB0b0ZpeGVkVHJ1bmMgKHgsIG4pIHtcclxuICBjb25zdCB2ID0gKHR5cGVvZiB4ID09PSBcInN0cmluZ1wiID8geCA6IHgudG9TdHJpbmcoKSkuc3BsaXQoXCIuXCIpXHJcbiAgaWYgKG4gPD0gMCkgcmV0dXJuIHZbMF1cclxuICBsZXQgZiA9IHZbMV0gfHwgXCJcIlxyXG4gIGlmIChmLmxlbmd0aCA+IG4pIHJldHVybiBgJHt2WzBdfS4ke2Yuc3Vic3RyKDAsIG4pfWBcclxuICB3aGlsZSAoZi5sZW5ndGggPCBuKSBmICs9IFwiMFwiXHJcbiAgcmV0dXJuIGAke3ZbMF19LiR7Zn1gXHJcbn07XHJcblxyXG5jb25zdCB3aG9sZV93aXRzID0gKG51bWJlciwgZGlnaXRzKSA9PiB7XHJcbiAgY29uc3QgbG9va3VwID0gW1xyXG4gICAgeyB2YWx1ZTogMW4sIHN5bWJvbDogXCJwZWRyb3NcIiB9LFxyXG4gICAgeyB2YWx1ZTogMTBuICoqIDZuLCBzeW1ib2w6IFwibVdpdHNcIiB9LFxyXG4gICAgeyB2YWx1ZTogMTBuICoqIDluLCBzeW1ib2w6IFwiIFdpdHNcIiB9LFxyXG4gICAgeyB2YWx1ZTogMTBuICoqIDEybiwgc3ltYm9sOiBcIktXaXRzXCIgfSxcclxuICAgIHsgdmFsdWU6IDEwbiAqKiAxNW4sIHN5bWJvbDogXCJNV2l0c1wiIH0sXHJcbiAgXVxyXG4gIC8vIGNvbnN0IHJlZ2V4cCA9IC9cXC4wKyR8KD88PVxcLlswLTldKTArJC9cclxuICBjb25zdCBpdGVtID0gbG9va3VwLmZpbmRMYXN0KGl0ZW0gPT4gbnVtYmVyID49IGl0ZW0udmFsdWUpXHJcbiAgY29uc3QgcXVvdGllbnQgPSBpdGVtID8gTnVtYmVyKEJpZ0ludChudW1iZXIpIC8gaXRlbS52YWx1ZSkgOiBudW1iZXIudG9TdHJpbmcoKVxyXG4gIGNvbnN0IGRlY2ltYWxzID0gaXRlbSA/IChpdGVtLnZhbHVlICsgQmlnSW50KG51bWJlcikgLSBCaWdJbnQocXVvdGllbnQpICogaXRlbS52YWx1ZSkudG9TdHJpbmcoKS5zbGljZSgxKSA6IFwiXCJcclxuICByZXR1cm4gaXRlbSA/IGAke2NvbW1hcyhxdW90aWVudCl9JHtkZWNpbWFscyAhPT0gXCJcIiA/IGAuJHtkZWNpbWFscy5zbGljZSgwLCBkaWdpdHMpfWAgOiBcIlwifSAke2l0ZW0uc3ltYm9sfWAgOiBcIihubyBjb2lucylcIlxyXG59XHJcblxyXG5jb25zdCBiYmx1ZSA9IChzdHIpID0+IGBcXHgxYlsxOzk4OzQ0bSR7c3RyfVxceDFiWzA7MDswbWBcclxuY29uc3QgYmN5YW4gPSAoc3RyKSA9PiBgXFx4MWJbMzg7NDZtJHtzdHJ9XFx4MWJbMDswbWBcclxuY29uc3QgYmdyZWVuID0gKHN0cikgPT4gYFxceDFiWzMwOzQybSR7c3RyfVxceDFiWzA7MG1gXHJcbmNvbnN0IGJyZWQgPSAoc3RyKSA9PiBgXFx4MWJbMzA7NDFtJHtzdHJ9XFx4MWJbMDswbWBcclxuY29uc3QgYnZpb2xldCA9IChzdHIpID0+IGBcXHgxYlszMDs0NW0ke3N0cn1cXHgxYlswOzBtYFxyXG5cclxuY29uc3QgbGN5YW4gPSAoc3RyKSA9PiBgXFx4MWJbMTs5Nm0ke3N0cn1cXHgxYlswbWBcclxuY29uc3QgbGdyYXkgPSAoc3RyKSA9PiBgXFx4MWJbMTs5MG0ke3N0cn1cXHgxYlswbWBcclxuY29uc3QgbGdyZWVuID0gKHN0cikgPT4gYFxceDFiWzE7OTJtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IGxtYWdlbnRhID0gKHN0cikgPT4gYFxceDFiWzE7OTVtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IGx5ZWxsb3cgPSAoc3RyKSA9PiBgXFx4MWJbMTs5M20ke3N0cn1cXHgxYlswbWBcclxuY29uc3QgbWJsdWUgPSAoc3RyKSA9PiBgXFx4MWJbOTRtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IG1jeWFuID0gKHN0cikgPT4gYFxceDFiWzk2bSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCBtZ3JlZW4gPSAoc3RyKSA9PiBgXFx4MWJbOTJtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IG1tYWdlbnRhID0gKHN0cikgPT4gYFxceDFiWzA7OTVtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IG1yZWQgPSAoc3RyKSA9PiBgXFx4MWJbOTFtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IG15ZWxsb3cgPSAoc3RyKSA9PiBgXFx4MWJbOTNtJHtzdHJ9XFx4MWJbMG1gXHJcblxyXG5jb25zdCBibHVlID0gKHN0cikgPT4gYFxceDFiWzM0bSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCBjeWFuID0gKHN0cikgPT4gYFxceDFiWzM2bSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCBncmF5ID0gKHN0cikgPT4gYFxceDFiWzkwbSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCBncmVlbiA9IChzdHIpID0+IGBcXHgxYlszMm0ke3N0cn1cXHgxYlswbWBcclxuY29uc3QgbWFnZW50YSA9IChzdHIpID0+IGBcXHgxYlswOzM1bSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCBub3JtYWwgPSAoc3RyKSA9PiBgXFx4MWJbOThtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IHJlZCA9IChzdHIpID0+IGBcXHgxYlszMW0ke3N0cn1cXHgxYlswbWBcclxuY29uc3Qgd2hpdGUgPSAoc3RyKSA9PiBgXFx4MWJbMTs5OG0ke3N0cn1cXHgxYlswbWBcclxuY29uc3QgeWVsbG93ID0gKHN0cikgPT4gYFxceDFiWzMzbSR7c3RyfVxceDFiWzBtYFxyXG5cclxuZnVuY3Rpb24gY291bnRMZWF2ZXMgKHQsIG9iaikge1xyXG4gIGlmICghb2JqIHx8IHR5cGVvZiBvYmogPT09IFwic3RyaW5nXCIpIHJldHVybiAwXHJcbiAgaWYgKG9iaiBpbnN0YW5jZW9mIHQpIHJldHVybiAxXHJcbiAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkgcmV0dXJuIG9iai5yZWR1Y2UoKHN1bSwgaXRlbSkgPT4gc3VtICsgY291bnRMZWF2ZXModCwgaXRlbSksIDApXHJcbiAgZWxzZSByZXR1cm4gT2JqZWN0LnZhbHVlcyhvYmopLnJlZHVjZSgoc3VtLCBpdGVtKSA9PiBzdW0gKyBjb3VudExlYXZlcyh0LCBpdGVtKSwgMClcclxufVxyXG5cclxuZnVuY3Rpb24gZGVsZXRlRXh0cmFGbGFncyAoYXJncykge1xyXG4gIHJldHVybiBhcmdzLmZpbHRlcihhcmcgPT4gIWFyZy5zdGFydHNXaXRoKFwiLS1cIikpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNtZCAoLi4uY29tbWFuZCkge1xyXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICBleGVjKGNvbW1hbmQuam9pbihcIiBcIiksIHsgbWF4QnVmZmVyOiAxMDI0ICogMTAyNCAqIDEwIH0sIChlcnJvciwgc3Rkb3V0LCBzdGRlcnIpID0+IHtcclxuICAgICAgaWYgKGVycm9yKSB7XHJcbiAgICAgICAgcmVqZWN0KGVycm9yKVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChzdGRlcnIpIHtcclxuICAgICAgICByZWplY3Qoc3RkZXJyKVxyXG4gICAgICB9XHJcbiAgICAgIHJlc29sdmUoc3Rkb3V0KVxyXG4gICAgfSlcclxuICB9KVxyXG59O1xyXG5cclxuYXN5bmMgZnVuY3Rpb24gZXhlY1JhZG9uQnl0ZWNvZGUgKGJ5dGVjb2RlLCAuLi5mbGFncykge1xyXG4gIGlmICghaXNIZXhTdHJpbmcoYnl0ZWNvZGUpKSB7XHJcbiAgICB0aHJvdyBFdmFsRXJyb3IoXCJpbnZhbGlkIGhleCBzdHJpbmdcIilcclxuICB9IGVsc2Uge1xyXG4gICAgY29uc3QgbnB4ID0gb3MudHlwZSgpID09PSBcIldpbmRvd3NfTlRcIiA/IFwibnB4LmNtZFwiIDogXCJucHhcIlxyXG4gICAgcmV0dXJuIGNtZChucHgsIFwid2l0bmV0XCIsIFwicmFkb25cIiwgXCJkcnlydW5cIiwgYnl0ZWNvZGUsIC4uLmZsYWdzKVxyXG4gICAgLy8gLmNhdGNoKChlcnIpID0+IHtcclxuICAgIC8vICAgICBsZXQgZXJyb3JNZXNzYWdlID0gZXJyLm1lc3NhZ2Uuc3BsaXQoJ1xcbicpLnNsaWNlKDEpLmpvaW4oJ1xcbicpLnRyaW0oKVxyXG4gICAgLy8gICAgIGNvbnN0IGVycm9yUmVnZXggPSAvLipeZXJyb3I6ICg/PG1lc3NhZ2U+LiopJC4qL2dtXHJcbiAgICAvLyAgICAgY29uc3QgbWF0Y2hlZCA9IGVycm9yUmVnZXguZXhlYyhlcnIubWVzc2FnZSlcclxuICAgIC8vICAgICBpZiAobWF0Y2hlZCkge1xyXG4gICAgLy8gICAgICAgICBlcnJvck1lc3NhZ2UgPSBtYXRjaGVkLmdyb3Vwcy5tZXNzYWdlXHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIGNvbnNvbGUubG9nKGVycm9yTWVzc2FnZSB8fCBlcnIpXHJcbiAgICAvLyAgICAgY29uc29sZS5lcnJvcihlcnJvck1lc3NhZ2UgfHwgZXJyKVxyXG4gICAgLy8gfSlcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGV4dHJhY3RGcm9tQXJncyAoYXJncywgZmxhZ3MpIHtcclxuICBjb25zdCBjdXJhdGVkID0ge31cclxuICBpZiAoYXJncyAmJiBmbGFncykge1xyXG4gICAgT2JqZWN0LmtleXMoZmxhZ3MpLmZvckVhY2goZmxhZyA9PiB7XHJcbiAgICAgIGNvbnN0IGZsYWdJbmRleCA9IGFyZ3MuaW5kZXhPZihgLS0ke2ZsYWd9YClcclxuICAgICAgaWYgKGZsYWdJbmRleCA+PSAwKSB7XHJcbiAgICAgICAgaWYgKGZsYWdzW2ZsYWddLnBhcmFtKSB7XHJcbiAgICAgICAgICBjdXJhdGVkW2ZsYWddID0gYXJnc1tmbGFnSW5kZXhdXHJcbiAgICAgICAgICBpZiAoIWFyZ3NbZmxhZ0luZGV4ICsgMV0gfHwgYXJnc1tmbGFnSW5kZXggKyAxXS5zdGFydHNXaXRoKFwiLS1cIikpIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYE1pc3NpbmcgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAtLSR7ZmxhZ31gKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY3VyYXRlZFtmbGFnXSA9IGFyZ3NbZmxhZ0luZGV4ICsgMV1cclxuICAgICAgICAgICAgYXJncy5zcGxpY2UoZmxhZ0luZGV4LCAyKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjdXJhdGVkW2ZsYWddID0gdHJ1ZVxyXG4gICAgICAgICAgYXJncy5zcGxpY2UoZmxhZ0luZGV4LCAxKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgcmV0dXJuIFthcmdzLCBjdXJhdGVkXVxyXG59XHJcblxyXG5mdW5jdGlvbiBmcm9tSGV4U3RyaW5nIChoZXhTdHJpbmcpIHtcclxuICBpZiAoaGV4U3RyaW5nLnN0YXJ0c1dpdGgoXCIweFwiKSkgaGV4U3RyaW5nID0gaGV4U3RyaW5nLnNsaWNlKDIpXHJcbiAgcmV0dXJuIFVpbnQ4QXJyYXkuZnJvbShoZXhTdHJpbmcubWF0Y2goLy57MSwyfS9nKS5tYXAoKGJ5dGUpID0+IHBhcnNlSW50KGJ5dGUsIDE2KSkpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlwSXNQcml2YXRlT3JMb2NhbGhvc3QgKGlwKSB7XHJcbiAgaWYgKGlwLnN1YnN0cmluZygwLCA3KSA9PT0gXCI6OmZmZmY6XCIpIHsgaXAgPSBpcC5zdWJzdHJpbmcoNykgfVxyXG5cclxuICBpZiAobmV0LmlzSVB2NChpcCkpIHtcclxuICAgIC8vIGNoZWNrIGxvY2FsaG9zdFxyXG4gICAgaWYgKGlwID09PSBcIjEyNy4wLjAuMVwiKSB7IHJldHVybiB0cnVlIH1cclxuXHJcbiAgICAvLyAgICAgICAgIDEwLjAuMC4wIC0gMTAuMjU1LjI1NS4yNTUgICAgICAgIHx8ICAgMTcyLjE2LjAuMCAtIDE3Mi4zMS4yNTUuMjU1ICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAgICAxOTIuMTY4LjAuMCAtIDE5Mi4xNjguMjU1LjI1NVxyXG4gICAgcmV0dXJuIC9eKDEwKVxcLiguKilcXC4oLiopXFwuKC4qKSQvLnRlc3QoaXApIHx8IC9eKDE3MilcXC4oMVs2LTldfDJbMC05XXwzWzAtMV0pXFwuKC4qKVxcLiguKikkLy50ZXN0KGlwKSB8fCAvXigxOTIpXFwuKDE2OClcXC4oLiopXFwuKC4qKSQvLnRlc3QoaXApXHJcbiAgfVxyXG5cclxuICAvLyBlbHNlOiBpcCBpcyBJUHY2XHJcbiAgY29uc3QgZmlyc3RXb3JkID0gaXAuc3BsaXQoXCI6XCIpLmZpbmQoZWwgPT4gISFlbCkgLy8gZ2V0IGZpcnN0IG5vdCBlbXB0eSB3b3JkXHJcblxyXG4gIC8vIGVxdWl2YWxlbnQgb2YgMTI3LjAuMC4xIGluIElQdjZcclxuICBpZiAoaXAgPT09IFwiOjoxXCIpIHJldHVybiB0cnVlXHJcblxyXG4gIC8vIFRoZSBvcmlnaW5hbCBJUHY2IFNpdGUgTG9jYWwgYWRkcmVzc2VzIChmZWMwOjovMTApIGFyZSBkZXByZWNhdGVkLiBSYW5nZTogZmVjMCAtIGZlZmZcclxuICBlbHNlIGlmICgvXmZlW2MtZl1bMC1mXSQvLnRlc3QoZmlyc3RXb3JkKSkgcmV0dXJuIHRydWVcclxuXHJcbiAgLy8gVGhlc2UgZGF5cyBVbmlxdWUgTG9jYWwgQWRkcmVzc2VzIChVTEEpIGFyZSB1c2VkIGluIHBsYWNlIG9mIFNpdGUgTG9jYWwuXHJcbiAgLy8gUmFuZ2U6IGZjMDAgLSBmY2ZmXHJcbiAgZWxzZSBpZiAoL15mY1swLWZdezJ9JC8udGVzdChmaXJzdFdvcmQpKSByZXR1cm4gdHJ1ZVxyXG5cclxuICAvLyBSYW5nZTogZmQwMCAtIGZjZmZcclxuICBlbHNlIGlmICgvXmZkWzAtZl17Mn0kLy50ZXN0KGZpcnN0V29yZCkpIHJldHVybiB0cnVlXHJcblxyXG4gIC8vIExpbmsgbG9jYWwgYWRkcmVzc2VzIChwcmVmaXhlZCB3aXRoIGZlODApIGFyZSBub3Qgcm91dGFibGVcclxuICBlbHNlIGlmIChmaXJzdFdvcmQgPT09IFwiZmU4MFwiKSByZXR1cm4gdHJ1ZVxyXG5cclxuICAvLyBEaXNjYXJkIFByZWZpeFxyXG4gIGVsc2UgaWYgKGZpcnN0V29yZCA9PT0gXCIxMDBcIikgcmV0dXJuIHRydWVcclxuXHJcbiAgLy8gQW55IG90aGVyIElQIGFkZHJlc3MgaXMgbm90IFVuaXF1ZSBMb2NhbCBBZGRyZXNzIChVTEEpXHJcbiAgcmV0dXJuIGZhbHNlXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzSGV4U3RyaW5nT2ZMZW5ndGggKHN0ciwgbGVuZ3RoKSB7XHJcbiAgcmV0dXJuIChpc0hleFN0cmluZyhzdHIpICYmXHJcbiAgICAgICAgKFxyXG4gICAgICAgICAgKHN0ci5zdGFydHNXaXRoKFwiMHhcIikgJiYgc3RyLnNsaWNlKDIpLmxlbmd0aCA9PT0gbGVuZ3RoICogMikgfHxcclxuICAgICAgICAgICAgc3RyLmxlbmd0aCA9PT0gbGVuZ3RoICogMlxyXG4gICAgICAgIClcclxuICApIHx8IGlzV2lsZGNhcmQoc3RyKVxyXG59XHJcblxyXG5mdW5jdGlvbiBpc0hleFN0cmluZyAoc3RyKSB7XHJcbiAgcmV0dXJuIChcclxuICAgIHR5cGVvZiBzdHIgPT09IFwic3RyaW5nXCIgJiZcclxuICAgICAgICAoXHJcbiAgICAgICAgICAoc3RyLnN0YXJ0c1dpdGgoXCIweFwiKSAmJiAvXlthLWZBLUYwLTldKyQvaS50ZXN0KHN0ci5zbGljZSgyKSkpIHx8XHJcbiAgICAgICAgICAgIC9eW2EtZkEtRjAtOV0rJC9pLnRlc3Qoc3RyKVxyXG4gICAgICAgIClcclxuICApIHx8IGlzV2lsZGNhcmQoc3RyKVxyXG59XHJcblxyXG5mdW5jdGlvbiB0b0hleFN0cmluZyAoYnVmZmVyLCBwcmVmaXgweCA9IGZhbHNlKSB7XHJcbiAgaWYgKGJ1ZmZlciBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGJ1ZmZlcilcclxuICByZXR1cm4gKHByZWZpeDB4ID8gXCIweFwiIDogXCJcIikgKyBBcnJheS5wcm90b3R5cGUubWFwLmNhbGwoYnVmZmVyLCB4ID0+IChcIjAwXCIgKyB4LnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpKVxyXG4gICAgLmpvaW4oXCJcIilcclxuICAgIC5tYXRjaCgvW2EtZkEtRjAtOV17Mn0vZylcclxuICAgIC5qb2luKFwiXCIpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHBhcnNlVVJMICh1cmwpIHtcclxuICB0cnkge1xyXG4gICAgY29uc3QgcGFyc2VkVXJsID0gbmV3IFVSTCh1cmwpXHJcbiAgICByZXR1cm4gW1xyXG4gICAgICBwYXJzZWRVcmwucHJvdG9jb2wgKyBcIi8vXCIsXHJcbiAgICAgIHBhcnNlZFVybC5ob3N0LFxyXG4gICAgICBwYXJzZWRVcmwucGF0aG5hbWUuc2xpY2UoMSksXHJcbiAgICAgIHBhcnNlZFVybC5zZWFyY2guc2xpY2UoMSksXHJcbiAgICBdXHJcbiAgfSBjYXRjaCB7XHJcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIFVSTCB3YXMgcHJvdmlkZWQ6ICR7dXJsfWApXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBzaG93VXNhZ2UgKGNtZCwgbW9kdWxlKSB7XHJcbiAgc2hvd1VzYWdlSGVhZGxpbmUoY21kKVxyXG4gIHNob3dVc2FnZU9wdGlvbnMoeyAuLi5tb2R1bGU/LmZsYWdzIH0pXHJcbiAgc2hvd1VzYWdlRmxhZ3MoeyAuLi5tb2R1bGU/LmZsYWdzIH0pXHJcbiAgc2hvd1VzYWdlUm91dGVyKHsgLi4ubW9kdWxlPy5yb3V0ZXIgfSlcclxuICBzaG93VXNhZ2VFbnZhcnMoeyAuLi5tb2R1bGU/LmVudmFycyB9KVxyXG59XHJcblxyXG5mdW5jdGlvbiBzaG93VXNhZ2VSb3V0ZXIgKHJvdXRlcikge1xyXG4gIGNvbnN0IGNtZHMgPSBPYmplY3QuZW50cmllcyhyb3V0ZXIpXHJcbiAgaWYgKGNtZHMubGVuZ3RoID4gMCkge1xyXG4gICAgY29uc29sZS5pbmZvKFwiXFxuU1VCQ09NTUFORFM6XCIpXHJcbiAgICBjb25zdCBtYXhMZW5ndGggPSBNYXRoLm1heCguLi5jbWRzLm1hcCgoW2NtZF0pID0+IGNtZC5sZW5ndGgpKVxyXG4gICAgY21kcy5mb3JFYWNoKGNtZCA9PiB7XHJcbiAgICAgIGNvbnNvbGUuaW5mbyhcIiAgXCIsIGAke2NtZFswXX0ke1wiIFwiLnJlcGVhdChtYXhMZW5ndGggLSBjbWRbMF0ubGVuZ3RoKX1gLCBcIiAgXCIsIGNtZFsxXS5oaW50KVxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNob3dVc2FnZUVycm9yIChjbWQsIHN1YmNtZCwgbW9kdWxlLCBlcnJvciwgZmxhZ3MpIHtcclxuICBzaG93VXNhZ2VTdWJjb21tYW5kKGNtZCwgc3ViY21kLCBtb2R1bGUsIGVycm9yKVxyXG4gIGlmIChlcnJvcikge1xyXG4gICAgY29uc29sZS5pbmZvKFwiXFxuRVJST1I6XCIpXHJcbiAgICBpZiAoZmxhZ3M/LmRlYnVnKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yPy5zdGFjaz8uc3BsaXQoXCJcXG5cIilbMF0gfHwgZXJyb3IpXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBzaG93VXNhZ2VFbnZhcnMgKGVudmFycykge1xyXG4gIGlmIChlbnZhcnMpIHtcclxuICAgIGVudmFycyA9IE9iamVjdC5lbnRyaWVzKGVudmFycylcclxuICAgIGlmIChlbnZhcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zb2xlLmluZm8oXCJcXG5FTlZBUlM6XCIpXHJcbiAgICAgIGNvbnN0IG1heFdpZHRoID0gTWF0aC5tYXgoLi4uZW52YXJzLm1hcCgoW2VudmFyXSkgPT4gZW52YXIubGVuZ3RoKSlcclxuICAgICAgZW52YXJzLmZvckVhY2goKFtlbnZhciwgaGludF0pID0+IHtcclxuICAgICAgICBpZiAoZW52YXIudG9VcHBlckNhc2UoKS5pbmRleE9mKFwiS0VZXCIpIDwgMCAmJiBwcm9jZXNzLmVudltlbnZhcl0pIHtcclxuICAgICAgICAgIGNvbnNvbGUuaW5mbyhcIiAgXCIsIGAke3llbGxvdyhlbnZhci50b1VwcGVyQ2FzZSgpKX0ke1wiIFwiLnJlcGVhdChtYXhXaWR0aCAtIGVudmFyLmxlbmd0aCl9YCwgYCA9PiBTZXR0bGVkIHRvIFwiJHtteWVsbG93KHByb2Nlc3MuZW52W2VudmFyXSl9XCJgKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zb2xlLmluZm8oXCIgIFwiLCBgJHt5ZWxsb3coZW52YXIudG9VcHBlckNhc2UoKSl9JHtcIiBcIi5yZXBlYXQobWF4V2lkdGggLSBlbnZhci5sZW5ndGgpfWAsIGAgJHtoaW50fWApXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gc2hvd1VzYWdlRmxhZ3MgKGZsYWdzKSB7XHJcbiAgaWYgKGZsYWdzKSB7XHJcbiAgICBmbGFncyA9IE9iamVjdC5lbnRyaWVzKGZsYWdzKS5maWx0ZXIoKFssIGZsYWddKSA9PiAhZmxhZz8ucGFyYW0pLnNvcnQoKFthXSwgW2JdKSA9PiB7XHJcbiAgICAgIGlmIChhIDwgYikgcmV0dXJuIC0xXHJcbiAgICAgIGVsc2UgaWYgKGEgPiBiKSByZXR1cm4gMVxyXG4gICAgICBlbHNlIHJldHVybiAwXHJcbiAgICB9KVxyXG4gICAgaWYgKGZsYWdzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc29sZS5pbmZvKFwiXFxuRkxBR1M6XCIpXHJcbiAgICAgIGNvbnN0IG1heExlbmd0aCA9IE1hdGgubWF4KC4uLmZsYWdzLmZpbHRlcigoWywgeyBoaW50IH1dKSA9PiBoaW50KS5tYXAoKFtrZXksIHsgcGFyYW0gfV0pID0+IHBhcmFtID8ga2V5Lmxlbmd0aCArIHBhcmFtLmxlbmd0aCArIDMgOiBrZXkubGVuZ3RoKSlcclxuICAgICAgZmxhZ3MuZm9yRWFjaChmbGFnID0+IHtcclxuICAgICAgICBjb25zdCBzdHIgPSBgJHtmbGFnWzBdfSR7ZmxhZ1sxXS5wYXJhbSA/IGdyYXkoYCA8JHtmbGFnWzFdLnBhcmFtfT5gKSA6IFwiXCJ9YFxyXG4gICAgICAgIGlmIChmbGFnWzFdLmhpbnQpIHtcclxuICAgICAgICAgIGNvbnNvbGUuaW5mbyhcIiAgXCIsIGAtLSR7c3RyfSR7XCIgXCIucmVwZWF0KG1heExlbmd0aCAtIGNvbG9yc3RyaXAoc3RyKS5sZW5ndGgpfWAsIFwiICBcIiwgZmxhZ1sxXS5oaW50KVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNob3dVc2FnZUhlYWRsaW5lIChjbWQsIHN1YmNtZCwgbW9kdWxlKSB7XHJcbiAgY29uc29sZS5pbmZvKFwiVVNBR0U6XCIpXHJcbiAgaWYgKHN1YmNtZCkge1xyXG4gICAgbGV0IHBhcmFtcyA9IG1vZHVsZS5yb3V0ZXJbc3ViY21kXT8ucGFyYW1zXHJcbiAgICAvLyBjb25zdCBvcHRpb25zID0gbW9kdWxlLnJvdXRlcltzdWJjbWRdPy5vcHRpb25zXHJcbiAgICBpZiAocGFyYW1zKSB7XHJcbiAgICAgIGNvbnN0IG9wdGlvbmFsaXplID0gKHN0cikgPT4gc3RyLmVuZHNXaXRoKFwiIC4uLl1cIilcclxuICAgICAgICA/IGBbPCR7c3RyLnNsaWNlKDEsIC01KX0+IC4uLl1gXHJcbiAgICAgICAgOiAoXHJcbiAgICAgICAgICBzdHJbMF0gPT09IFwiW1wiID8gYFs8JHtzdHIuc2xpY2UoMSwgLTEpfT5dYCA6IGA8JHtzdHJ9PmBcclxuICAgICAgICApXHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHBhcmFtcykpIHtcclxuICAgICAgICBwYXJhbXMgPSBwYXJhbXMubWFwKHBhcmFtID0+IG9wdGlvbmFsaXplKHBhcmFtKSkuam9pbihcIiBcIikgKyBcIiBcIlxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHBhcmFtcyA9IG9wdGlvbmFsaXplKHBhcmFtcylcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc29sZS5pbmZvKGAgICAke3doaXRlKGBucHggd2l0bmV0ICR7Y21kfWApfSAke3doaXRlKHN1YmNtZCl9ICR7cGFyYW1zID8gZ3JlZW4ocGFyYW1zKSArIFwiIFwiIDogXCJcIn1bT1BUSU9OU10gW0ZMQUdTXWApXHJcbiAgICBpZiAobW9kdWxlPy5yb3V0ZXJbc3ViY21kXT8uaGludCkge1xyXG4gICAgICBjb25zb2xlLmluZm8oXCJcXG5ERVNDUklQVElPTjpcIilcclxuICAgICAgY29uc29sZS5pbmZvKGAgICAke21vZHVsZS5yb3V0ZXJbc3ViY21kXS5oaW50fWApXHJcbiAgICB9XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnNvbGUuaW5mbyhgICAgJHt3aGl0ZShgbnB4IHdpdG5ldCAke2NtZH1gKX0gPFNVQkNPTU1BTkQ+IC4uLiBbT1BUSU9OU10gW0ZMQUdTXWApXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBzaG93VXNhZ2VPcHRpb25zIChvcHRpb25zKSB7XHJcbiAgb3B0aW9ucyA9IE9iamVjdC5lbnRyaWVzKG9wdGlvbnMpLmZpbHRlcigoWywgb3B0aW9uXSkgPT4gb3B0aW9uPy5wYXJhbSkuc29ydCgoW2FdLCBbYl0pID0+IHtcclxuICAgIGlmIChhIDwgYikgcmV0dXJuIC0xXHJcbiAgICBlbHNlIGlmIChhID4gYikgcmV0dXJuIDFcclxuICAgIGVsc2UgcmV0dXJuIDBcclxuICB9KVxyXG4gIGlmIChvcHRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgIGNvbnNvbGUuaW5mbyhcIlxcbk9QVElPTlM6XCIpXHJcbiAgICBjb25zdCBtYXhMZW5ndGggPSBvcHRpb25zXHJcbiAgICAgIC5tYXAob3B0aW9uID0+IG9wdGlvblsxXS5wYXJhbSA/IG9wdGlvblsxXS5wYXJhbS5sZW5ndGggKyBvcHRpb25bMF0ubGVuZ3RoICsgMyA6IG9wdGlvblswXS5sZW5ndGgpXHJcbiAgICAgIC5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IGN1cnIgPiBwcmV2ID8gY3VyciA6IHByZXYpXHJcbiAgICBvcHRpb25zLmZvckVhY2gob3B0aW9uID0+IHtcclxuICAgICAgaWYgKG9wdGlvblsxXS5oaW50KSB7XHJcbiAgICAgICAgY29uc3Qgc3RyID0gYCR7b3B0aW9uWzBdfSR7b3B0aW9uWzFdLnBhcmFtID8gZ3JheShgIDwke29wdGlvblsxXS5wYXJhbX0+YCkgOiBcIlwifWBcclxuICAgICAgICBjb25zb2xlLmluZm8oXCIgIFwiLCBgLS0ke3N0cn0ke1wiIFwiLnJlcGVhdChtYXhMZW5ndGggLSBjb2xvcnN0cmlwKHN0cikubGVuZ3RoKX1gLCBcIiAgXCIsIG9wdGlvblsxXS5oaW50KVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gc2hvd1VzYWdlU3ViY29tbWFuZCAoY21kLCBzdWJjbWQsIG1vZHVsZSkge1xyXG4gIHNob3dVc2FnZUhlYWRsaW5lKGNtZCwgc3ViY21kLCBtb2R1bGUpXHJcbiAgc2hvd1VzYWdlT3B0aW9ucyh7IC4uLm1vZHVsZT8uZmxhZ3MsIC4uLm1vZHVsZS5yb3V0ZXJbc3ViY21kXT8ub3B0aW9ucyB9KVxyXG4gIHNob3dVc2FnZUZsYWdzKHsgLi4ubW9kdWxlPy5mbGFncywgLi4ubW9kdWxlLnJvdXRlcltzdWJjbWRdPy5vcHRpb25zIH0pXHJcbiAgc2hvd1VzYWdlRW52YXJzKG1vZHVsZS5yb3V0ZXJbc3ViY21kXT8uZW52YXJzIHx8IG1vZHVsZT8uZW52YXJzKVxyXG59XHJcblxyXG5mdW5jdGlvbiBzaG93VmVyc2lvbiAoKSB7XHJcbiAgY29uc29sZS5pbmZvKGAke21jeWFuKGBXaXRuZXQgU0RLIHYke3JlcXVpcmUoXCIuLi8uLi9wYWNrYWdlLmpzb25cIikudmVyc2lvbn1gKX1gKVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRXaWxkY2FyZHNDb3VudEZyb21TdHJpbmcgKHN0cikge1xyXG4gIGxldCBtYXhBcmdzSW5kZXggPSAwXHJcbiAgaWYgKHN0ciAmJiB0eXBlb2Ygc3RyID09PSAnc3RyaW5nJykge1xyXG4gICAgbGV0IG1hdGNoXHJcbiAgICBjb25zdCByZWdleHAgPSAvXFxcXFxcZFxcXFwvZ1xyXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0cikpICE9PSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IGFyZ3NJbmRleCA9IHBhcnNlSW50KG1hdGNoWzBdWzFdKSArIDFcclxuICAgICAgaWYgKGFyZ3NJbmRleCA+IG1heEFyZ3NJbmRleCkgbWF4QXJnc0luZGV4ID0gYXJnc0luZGV4XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBtYXhBcmdzSW5kZXhcclxufVxyXG5cclxuZnVuY3Rpb24gY2hlY2tScGNXaWxkY2FyZHMgKHdpbGRjYXJkcykge1xyXG4gIGlmICh0eXBlb2Ygd2lsZGNhcmRzID09PSBcIm9iamVjdFwiKSB7XHJcbiAgICBPYmplY3QudmFsdWVzKHdpbGRjYXJkcykuZm9yRWFjaCh3aWxkY2FyZCA9PiB7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHdpbGRjYXJkKSkgd2lsZGNhcmQuZm9yRWFjaChpdGVtID0+IGNoZWNrUnBjV2lsZGNhcmRzKGl0ZW0pKVxyXG4gICAgICBlbHNlIGNoZWNrUnBjV2lsZGNhcmRzKHdpbGRjYXJkKVxyXG4gICAgfSlcclxuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkod2lsZGNhcmRzKSkge1xyXG4gICAgd2lsZGNhcmRzLmZvckVhY2god2lsZGNhcmQgPT4gY2hlY2tScGNXaWxkY2FyZHMod2lsZGNhcmQpKVxyXG4gIH0gZWxzZSBpZiAodHlwZW9mIHdpbGRjYXJkcyA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgaWYgKGlzV2lsZGNhcmQod2lsZGNhcmRzKSkge1xyXG4gICAgICBjb25zdCBjaGFyID0gd2lsZGNhcmRzLmNoYXJBdCgxKVxyXG4gICAgICBpZiAoY2hhciA8IFwiMVwiIHx8IGNoYXIgPiBcIjlcIikge1xyXG4gICAgICAgIHRocm93IEVycm9yKFwiUlBDOiB3aWxkY2FyZHMgbm90IGluIHJhbmdlIFsxIC4uIDldXCIpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzV2lsZGNhcmQgKHN0cikge1xyXG4gIHJldHVybiBzdHIubGVuZ3RoID09PSAzICYmIC9cXFxcXFxkXFxcXC9nLnRlc3Qoc3RyKVxyXG59XHJcblxyXG5mdW5jdGlvbiByZXBsYWNlV2lsZGNhcmRzIChvYmosIGFyZ3MpIHtcclxuICBpZiAoYXJncy5sZW5ndGggPiAxMCkgYXJncyA9IGFyZ3Muc2xpY2UoMCwgMTApXHJcbiAgaWYgKG9iaiAmJiB0eXBlb2Ygb2JqID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICBmb3IgKGxldCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgYXJncy5sZW5ndGg7IGFyZ0luZGV4KyspIHtcclxuICAgICAgY29uc3Qgd2lsZGNhcmQgPSBgXFxcXCR7YXJnSW5kZXh9XFxcXGBcclxuICAgICAgb2JqID0gb2JqLnJlcGxhY2VBbGwod2lsZGNhcmQsIGFyZ3NbYXJnSW5kZXhdKVxyXG4gICAgfVxyXG4gIH0gZWxzZSBpZiAob2JqICYmIEFycmF5LmlzQXJyYXkob2JqKSkge1xyXG4gICAgb2JqID0gb2JqLm1hcCh2YWx1ZSA9PiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSlcclxuICAgICAgPyByZXBsYWNlV2lsZGNhcmRzKHZhbHVlLCBhcmdzKVxyXG4gICAgICA6IHZhbHVlXHJcbiAgICApXHJcbiAgfVxyXG4gIHJldHVybiBvYmpcclxufVxyXG5cclxuZnVuY3Rpb24gc3BsaWNlV2lsZGNhcmQgKG9iaiwgYXJnSW5kZXgsIGFyZ1ZhbHVlLCBhcmdzQ291bnQpIHtcclxuICBpZiAob2JqICYmIHR5cGVvZiBvYmogPT09IFwic3RyaW5nXCIpIHtcclxuICAgIGNvbnN0IHdpbGRjYXJkID0gYFxcXFwke2FyZ0luZGV4fVxcXFxgXHJcbiAgICBvYmogPSBvYmoucmVwbGFjZUFsbCh3aWxkY2FyZCwgYXJnVmFsdWUpXHJcbiAgICBmb3IgKGxldCBqID0gYXJnSW5kZXggKyAxOyBqIDwgYXJnc0NvdW50OyBqKyspIHtcclxuICAgICAgb2JqID0gb2JqLnJlcGxhY2VBbGwoYFxcXFwke2p9XFxcXGAsIGBcXFxcJHtqIC0gMX1cXFxcYClcclxuICAgIH1cclxuICB9IGVsc2UgaWYgKG9iaiAmJiBBcnJheS5pc0FycmF5KG9iaikpIHtcclxuICAgIG9iaiA9IG9iai5tYXAodmFsdWUgPT4gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiIHx8IEFycmF5LmlzQXJyYXkodmFsdWUpXHJcbiAgICAgID8gc3BsaWNlV2lsZGNhcmQodmFsdWUsIGFyZ0luZGV4LCBhcmdWYWx1ZSwgYXJnc0NvdW50KVxyXG4gICAgICA6IHZhbHVlXHJcbiAgICApXHJcbiAgfVxyXG4gIHJldHVybiBvYmpcclxufVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gdG9vbGtpdFJ1biAoc2V0dGluZ3MsIGFyZ3MpIHtcclxuICBjb25zdCBjbWQgPSBgJHtzZXR0aW5ncy5wYXRocy50b29sa2l0QmluUGF0aH0gJHthcmdzLmpvaW4oXCIgXCIpfWBcclxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgZXhlYyhjbWQsIHsgbWF4QnVmZmVyOiAxMDI0ICogMTAyNCAqIDEwIH0sIChlcnJvciwgc3Rkb3V0LCBzdGRlcnIpID0+IHtcclxuICAgICAgaWYgKGVycm9yKSB7XHJcbiAgICAgICAgcmVqZWN0KGVycm9yKVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChzdGRlcnIpIHtcclxuICAgICAgICByZWplY3Qoc3RkZXJyKVxyXG4gICAgICB9XHJcbiAgICAgIHJlc29sdmUoc3Rkb3V0KVxyXG4gICAgfSlcclxuICB9KVxyXG59XHJcblxyXG5mdW5jdGlvbiB0b1VwcGVyQ2FtZWxDYXNlIChzdHIpIHtcclxuICByZXR1cm4gc3RyLnJlcGxhY2UoL1xcYihcXHcpL2csIGZ1bmN0aW9uIChtYXRjaCwgY2FwdHVyZSkge1xyXG4gICAgcmV0dXJuIGNhcHR1cmUudG9VcHBlckNhc2UoKVxyXG4gIH0pLnJlcGxhY2UoL1xccysvZywgXCJcIilcclxufVxyXG5cclxuZnVuY3Rpb24gdG9VdGYxNkJ5dGVzKHN0cikge1xyXG4gIGNvbnN0IGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoc3RyLmxlbmd0aCAqIDIpO1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBjb25zdCBjb2RlID0gc3RyLmNoYXJDb2RlQXQoaSk7XHJcbiAgICBieXRlc1tpICogMl0gPSBjb2RlID4+IDg7XHJcbiAgICBieXRlc1tpICogMiArIDFdID0gY29kZSAmIDB4ZmY7XHJcbiAgfVxyXG4gIHJldHVybiBieXRlcztcclxufVxyXG5cclxuZnVuY3Rpb24gdG9VdGY4QXJyYXkgKHN0cikge1xyXG4gIGNvbnN0IHV0ZjggPSBbXVxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBsZXQgY2hhcmNvZGUgPSBzdHIuY2hhckNvZGVBdChpKVxyXG4gICAgaWYgKGNoYXJjb2RlIDwgMHg4MCkgdXRmOC5wdXNoKGNoYXJjb2RlKVxyXG4gICAgZWxzZSBpZiAoY2hhcmNvZGUgPCAweDgwMCkge1xyXG4gICAgICB1dGY4LnB1c2goMHhjMCB8IChjaGFyY29kZSA+PiA2KSxcclxuICAgICAgICAweDgwIHwgKGNoYXJjb2RlICYgMHgzZikpXHJcbiAgICB9IGVsc2UgaWYgKGNoYXJjb2RlIDwgMHhkODAwIHx8IGNoYXJjb2RlID49IDB4ZTAwMCkge1xyXG4gICAgICB1dGY4LnB1c2goMHhlMCB8IChjaGFyY29kZSA+PiAxMiksXHJcbiAgICAgICAgMHg4MCB8ICgoY2hhcmNvZGUgPj4gNikgJiAweDNmKSxcclxuICAgICAgICAweDgwIHwgKGNoYXJjb2RlICYgMHgzZikpXHJcbiAgICB9IGVsc2UgeyAvLyBzdXJyb2dhdGUgcGFpclxyXG4gICAgICBpKytcclxuICAgICAgLy8gVVRGLTE2IGVuY29kZXMgMHgxMDAwMC0weDEwRkZGRiBieVxyXG4gICAgICAvLyBzdWJ0cmFjdGluZyAweDEwMDAwIGFuZCBzcGxpdHRpbmcgdGhlXHJcbiAgICAgIC8vIDIwIGJpdHMgb2YgMHgwLTB4RkZGRkYgaW50byB0d28gaGFsdmVzXHJcbiAgICAgIGNoYXJjb2RlID0gMHgxMDAwMCArICgoKGNoYXJjb2RlICYgMHgzZmYpIDw8IDEwKSB8XHJcbiAgICAgICAgICAgICAgICAoc3RyLmNoYXJDb2RlQXQoaSkgJiAweDNmZikpXHJcbiAgICAgIHV0ZjgucHVzaCgweGYwIHwgKGNoYXJjb2RlID4+IDE4KSxcclxuICAgICAgICAweDgwIHwgKChjaGFyY29kZSA+PiAxMikgJiAweDNmKSxcclxuICAgICAgICAweDgwIHwgKChjaGFyY29kZSA+PiA2KSAmIDB4M2YpLFxyXG4gICAgICAgIDB4ODAgfCAoY2hhcmNvZGUgJiAweDNmKSlcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHV0ZjhcclxufVxyXG5cclxuZnVuY3Rpb24gdXRmOEFycmF5VG9TdHIgKGFycmF5KSB7XHJcbiAgY29uc3QgbGVuID0gYXJyYXkubGVuZ3RoXHJcbiAgbGV0IG91dCA9IFwiXCI7IGxldCBpID0gMDsgbGV0IGNcclxuICBsZXQgY2hhcjIsIGNoYXIzXHJcbiAgd2hpbGUgKGkgPCBsZW4pIHtcclxuICAgIGMgPSBhcnJheVtpKytdXHJcbiAgICBzd2l0Y2ggKGMgPj4gNCkge1xyXG4gICAgICBjYXNlIDA6IGNhc2UgMTogY2FzZSAyOiBjYXNlIDM6IGNhc2UgNDogY2FzZSA1OiBjYXNlIDY6IGNhc2UgNzpcclxuICAgICAgICAvLyAweHh4eHh4eFxyXG4gICAgICAgIG91dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAxMjogY2FzZSAxMzpcclxuICAgICAgICAvLyAxMTB4IHh4eHggICAxMHh4IHh4eHhcclxuICAgICAgICBjaGFyMiA9IGFycmF5W2krK11cclxuICAgICAgICBvdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoKGMgJiAweDFGKSA8PCA2KSB8IChjaGFyMiAmIDB4M0YpKVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgMTQ6XHJcbiAgICAgICAgLy8gMTExMCB4eHh4ICAxMHh4IHh4eHggIDEweHggeHh4eFxyXG4gICAgICAgIGNoYXIyID0gYXJyYXlbaSsrXVxyXG4gICAgICAgIGNoYXIzID0gYXJyYXlbaSsrXVxyXG4gICAgICAgIG91dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCgoYyAmIDB4MEYpIDw8IDEyKSB8XHJcbiAgICAgICAgICAgICAgICAgICAgKChjaGFyMiAmIDB4M0YpIDw8IDYpIHxcclxuICAgICAgICAgICAgICAgICAgICAoKGNoYXIzICYgMHgzRikgPDwgMCkpXHJcbiAgICAgICAgYnJlYWtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIG91dFxyXG59XHJcblxyXG5hc3luYyBmdW5jdGlvbiBwcm9tcHQgKHF1ZXN0aW9uKSB7XHJcbiAgY29uc3QgcmVhZGxpbmVJbnRlcmZhY2UgPSByZWFkbGluZS5jcmVhdGVJbnRlcmZhY2Uoe1xyXG4gICAgaW5wdXQ6IHByb2Nlc3Muc3RkaW4sXHJcbiAgICBvdXRwdXQ6IHByb2Nlc3Muc3Rkb3V0LFxyXG4gIH0pXHJcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgIHJlYWRsaW5lSW50ZXJmYWNlLnF1ZXN0aW9uKGAke3F1ZXN0aW9ufSBgLCAocmVzcG9uc2UpID0+IHtcclxuICAgICAgcmVhZGxpbmVJbnRlcmZhY2UuY2xvc2UoKVxyXG4gICAgICByZXNvbHZlKHJlc3BvbnNlLnRyaW0oKSlcclxuICAgIH0pXHJcbiAgfSlcclxufVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gcHJvbXB0ZXIgKHByb21pc2UpIHtcclxuICBjb25zdCBsb2FkaW5nID0gKCgpID0+IHtcclxuICAgIGNvbnN0IGggPSBbXCJ8XCIsIFwiL1wiLCBcIi1cIiwgXCJcXFxcXCJdXHJcbiAgICBsZXQgaSA9IDBcclxuICAgIHJldHVybiBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgIGkgPSAoaSA+IDMpID8gMCA6IGlcclxuICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoYFxcYlxcYiR7aFtpXX0gYClcclxuICAgICAgaSsrXHJcbiAgICB9LCA1MClcclxuICB9KSgpXHJcbiAgcmV0dXJuIHByb21pc2VcclxuICAgIC50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgIGNsZWFySW50ZXJ2YWwobG9hZGluZylcclxuICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoXCJcXGJcXGJcIilcclxuICAgICAgcmV0dXJuIHJlc3VsdFxyXG4gICAgfSlcclxufVxyXG5cclxuZnVuY3Rpb24gdHJhY2VDaGVja2xpc3RzIChjaGVja2xpc3RzKSB7XHJcbiAgaWYgKGNoZWNrbGlzdHMgJiYgT2JqZWN0LmtleXMoY2hlY2tsaXN0cykubGVuZ3RoID4gMCkge1xyXG4gICAgY29uc3QgaGVhZGxpbmVzID0gW1wiTk9ERVNcIiwgLi4uT2JqZWN0LmtleXMoY2hlY2tsaXN0cykubWFwKGtleSA9PiBgOiR7a2V5fWApXVxyXG4gICAgY2hlY2tsaXN0cyA9IE9iamVjdC52YWx1ZXMoY2hlY2tsaXN0cylcclxuICAgIGNvbnN0IHVybHMgPSBPYmplY3Qua2V5cyhjaGVja2xpc3RzWzBdKVxyXG4gICAgY29uc3QgcmVjb3JkcyA9IHVybHMubWFwKHVybCA9PiB7XHJcbiAgICAgIGNvbnN0IGVycm9ycyA9IGNoZWNrbGlzdHMuZmlsdGVyKGNoZWNrbGlzdCA9PiBjaGVja2xpc3RbdXJsXSBpbnN0YW5jZW9mIEVycm9yKS5sZW5ndGhcclxuICAgICAgcmV0dXJuIFtcclxuICAgICAgICBlcnJvcnMgPT09IGNoZWNrbGlzdHMubGVuZ3RoID8gcmVkKHVybCkgOiAoZXJyb3JzID4gMCA/IG15ZWxsb3codXJsKSA6IG1jeWFuKHVybCkpLFxyXG4gICAgICAgIC4uLmNoZWNrbGlzdHMubWFwKGNoZWNrbGlzdCA9PiBjaGVja2xpc3RbdXJsXSBpbnN0YW5jZW9mIEVycm9yXHJcbiAgICAgICAgICA/IHJlZChjaGVja2xpc3RbdXJsXSlcclxuICAgICAgICAgIDogKGNoZWNrbGlzdFt1cmxdID09PSB0cnVlID8gbGN5YW4oXCJBeWVcIikgOiBjeWFuKFwiTmF5XCIpKVxyXG4gICAgICAgICksXHJcbiAgICAgIF1cclxuICAgIH0pXHJcbiAgICB0cmFjZVRhYmxlKHJlY29yZHMsIHtcclxuICAgICAgaGVhZGxpbmVzLFxyXG4gICAgICBtYXhDb2x1bW5XaWR0aDogMzEsXHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gdHJhY2VIZWFkZXIgKGhlYWRsaW5lLCBjb2xvciA9IG5vcm1hbCwgaW5kZW50ID0gXCJcIiwpIHtcclxuICBjb25zb2xlLmluZm8oYCR7aW5kZW50feKUjOKUgCR7XCLilIBcIi5yZXBlYXQoaGVhZGxpbmUubGVuZ3RoKX3ilIDilJBgKVxyXG4gIGNvbnNvbGUuaW5mbyhgJHtpbmRlbnR94pSCICR7Y29sb3IoaGVhZGxpbmUpfSDilIJgKVxyXG4gIGNvbnNvbGUuaW5mbyhgJHtpbmRlbnR94pSU4pSAJHtcIuKUgFwiLnJlcGVhdChoZWFkbGluZS5sZW5ndGgpfeKUgOKUmGApXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRyYWNlVGFibGUgKHJlY29yZHMsIG9wdGlvbnMpIHtcclxuICBjb25zdCBzdHJpbmdpZnkgPSAoZGF0YSwgaHVtYW5pemVycywgaW5kZXgpID0+IGh1bWFuaXplcnMgJiYgaHVtYW5pemVyc1tpbmRleF0gPyBodW1hbml6ZXJzW2luZGV4XShkYXRhKS50b1N0cmluZygpIDogZGF0YT8udG9TdHJpbmcoKSA/PyBcIlwiXHJcbiAgY29uc3QgbWF4ID0gKGEsIGIpID0+IGEgPiBiID8gYSA6IGJcclxuICBjb25zdCByZWR1Y2VNYXggPSAobnVtYmVycykgPT4gbnVtYmVycy5yZWR1Y2UoKGN1cnIsIHByZXYpID0+IHByZXYgPiBjdXJyID8gcHJldiA6IGN1cnIsIDApXHJcbiAgaWYgKCFvcHRpb25zKSBvcHRpb25zID0ge31cclxuICBjb25zdCBpbmRlbnQgPSBvcHRpb25zPy5pbmRlbnQgfHwgXCJcIlxyXG4gIGNvbnN0IG51bUNvbHVtbnMgPSByZWR1Y2VNYXgocmVjb3Jkcy5tYXAocmVjb3JkID0+IHJlY29yZD8ubGVuZ3RoIHx8IDEpKVxyXG4gIGNvbnN0IG1heENvbHVtbldpZHRoID0gb3B0aW9ucz8ubWF4Q29sdW1uV2lkdGggfHwgODBcclxuICBjb25zdCB0YWJsZSA9IHRyYW5zcG9zZShyZWNvcmRzLCBudW1Db2x1bW5zKVxyXG4gIG9wdGlvbnMud2lkdGhzID0gb3B0aW9ucz8ud2lkdGhzIHx8IHRhYmxlLm1hcCgoY29sdW1uLCBpbmRleCkgPT4ge1xyXG4gICAgbGV0IG1heFdpZHRoID0gcmVkdWNlTWF4KGNvbHVtbi5tYXAoZmllbGQgPT4gY29sb3JzdHJpcChzdHJpbmdpZnkoZmllbGQsIG9wdGlvbnM/Lmh1bWFuaXplcnMsIGluZGV4KSkubGVuZ3RoKSlcclxuICAgIGlmIChvcHRpb25zPy5oZWFkbGluZXMgJiYgb3B0aW9ucy5oZWFkbGluZXNbaW5kZXhdKSB7XHJcbiAgICAgIG1heFdpZHRoID0gbWF4KG1heFdpZHRoLCBjb2xvcnN0cmlwKG9wdGlvbnMuaGVhZGxpbmVzW2luZGV4XS5yZXBsYWNlQWxsKFwiOlwiLCBcIlwiKSkubGVuZ3RoKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIE1hdGgubWluKG1heFdpZHRoLCBtYXhDb2x1bW5XaWR0aClcclxuICB9KVxyXG4gIGxldCBoZWFkbGluZSA9IG9wdGlvbnMud2lkdGhzLm1hcChtYXhXaWR0aCA9PiBcIuKUgFwiLnJlcGVhdChtYXhXaWR0aCkpXHJcbiAgY29uc29sZS5pbmZvKGAke2luZGVudH3ilIzilIAke2hlYWRsaW5lLmpvaW4oXCLilIDilKzilIBcIil94pSA4pSQYClcclxuICBpZiAob3B0aW9ucz8uaGVhZGxpbmVzKSB7XHJcbiAgICBoZWFkbGluZSA9IG9wdGlvbnMud2lkdGhzLm1hcCgobWF4V2lkdGgsIGluZGV4KSA9PiB7XHJcbiAgICAgIGNvbnN0IGNhcHRpb24gPSBvcHRpb25zLmhlYWRsaW5lc1tpbmRleF0ucmVwbGFjZUFsbChcIjpcIiwgXCJcIilcclxuICAgICAgY29uc3QgY2FwdGlvbkxlbmd0aCA9IGNvbG9yc3RyaXAoY2FwdGlvbikubGVuZ3RoXHJcbiAgICAgIHJldHVybiBgJHt3aGl0ZShjYXB0aW9uKX0ke1wiIFwiLnJlcGVhdChtYXhXaWR0aCAtIGNhcHRpb25MZW5ndGgpfWBcclxuICAgIH0pXHJcbiAgICBjb25zb2xlLmluZm8oYCR7aW5kZW50feKUgiAke2hlYWRsaW5lLmpvaW4oXCIg4pSCIFwiKX0g4pSCYClcclxuICAgIGhlYWRsaW5lID0gb3B0aW9ucy53aWR0aHMubWFwKG1heFdpZHRoID0+IFwi4pSAXCIucmVwZWF0KG1heFdpZHRoKSlcclxuICAgIGNvbnNvbGUuaW5mbyhgJHtpbmRlbnR94pSc4pSAJHtoZWFkbGluZS5qb2luKFwi4pSA4pS84pSAXCIpfeKUgOKUpGApXHJcbiAgfVxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcmVjb3Jkcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGxpbmUgPSBcIlwiXHJcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG51bUNvbHVtbnM7IGorKykge1xyXG4gICAgICBsZXQgZGF0YSA9IHRhYmxlW2pdW2ldXHJcbiAgICAgIGxldCBjb2xvclxyXG4gICAgICBpZiAob3B0aW9ucz8uY29sb3JzICYmIG9wdGlvbnMuY29sb3JzW2pdKSB7XHJcbiAgICAgICAgY29sb3IgPSBvcHRpb25zLmNvbG9yc1tqXVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbG9yID0gdHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCJcclxuICAgICAgICAgID8gZ3JlZW5cclxuICAgICAgICAgIDogKE51bWJlcihkYXRhKSA9PT0gZGF0YSAmJiBkYXRhICUgMSAhPT0gMCAvLyBpcyBmbG9hdCBudW1iZXI/XHJcbiAgICAgICAgICAgID8geWVsbG93XHJcbiAgICAgICAgICAgIDogKHgpID0+IHhcclxuICAgICAgICAgIClcclxuICAgICAgfVxyXG4gICAgICBkYXRhID0gc3RyaW5naWZ5KGRhdGEsIG9wdGlvbnM/Lmh1bWFuaXplcnMsIGopXHJcbiAgICAgIGlmIChjb2xvcnN0cmlwKGRhdGEpLmxlbmd0aCA+IG1heENvbHVtbldpZHRoKSB7XHJcbiAgICAgICAgd2hpbGUgKGNvbG9yc3RyaXAoZGF0YSkubGVuZ3RoID4gbWF4Q29sdW1uV2lkdGggLSAzKSB7XHJcbiAgICAgICAgICBkYXRhID0gZGF0YS5zbGljZSgwLCAtMSlcclxuICAgICAgICB9XHJcbiAgICAgICAgZGF0YSArPSBcIi4uLlwiXHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZGF0YUxlbmd0aCA9IGNvbG9yc3RyaXAoZGF0YSkubGVuZ3RoXHJcbiAgICAgIGlmIChvcHRpb25zPy5oZWFkbGluZXMgJiYgb3B0aW9ucy5oZWFkbGluZXNbal1bMF0gPT09IFwiOlwiKSB7XHJcbiAgICAgICAgZGF0YSA9IGAke2NvbG9yKGRhdGEpfSR7XCIgXCIucmVwZWF0KG9wdGlvbnMud2lkdGhzW2pdIC0gZGF0YUxlbmd0aCl9YFxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGRhdGEgPSBgJHtcIiBcIi5yZXBlYXQob3B0aW9ucy53aWR0aHNbal0gLSBkYXRhTGVuZ3RoKX0ke2NvbG9yKGRhdGEpfWBcclxuICAgICAgfVxyXG4gICAgICBsaW5lICs9IGDilIIgJHtkYXRhfSBgXHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmluZm8oYCR7aW5kZW50fSR7bGluZX3ilIJgKVxyXG4gIH1cclxuICBoZWFkbGluZSA9IG9wdGlvbnMud2lkdGhzLm1hcChtYXhXaWR0aCA9PiBcIuKUgFwiLnJlcGVhdChtYXhXaWR0aCkpXHJcbiAgY29uc29sZS5pbmZvKGAke2luZGVudH3ilJTilIAke2hlYWRsaW5lLmpvaW4oXCLilIDilLTilIBcIil94pSA4pSYYClcclxufVxyXG5cclxuZnVuY3Rpb24gdHJhbnNwb3NlIChyZWNvcmRzLCBudW1Db2x1bW5zKSB7XHJcbiAgY29uc3QgY29sdW1ucyA9IFtdXHJcbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IG51bUNvbHVtbnM7IGluZGV4KyspIHtcclxuICAgIGNvbHVtbnMucHVzaChyZWNvcmRzLm1hcChyb3cgPT4gcm93W2luZGV4XSkpXHJcbiAgfVxyXG4gIHJldHVybiBjb2x1bW5zXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHR4SnNvblJlcGxhY2VyIChrZXksIHZhbHVlKSB7XHJcbiAgc3dpdGNoIChrZXkpIHtcclxuICAgIGNhc2UgXCJieXRlc1wiOlxyXG4gICAgY2FzZSBcImRlclwiOlxyXG4gICAgICByZXR1cm4gdG9IZXhTdHJpbmcodmFsdWUsIHRydWUpXHJcbiAgICBjYXNlIFwidHhcIjpcclxuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlLCB0eEpzb25SZXBsYWNlcilcclxuICAgIGNhc2UgXCJjaGFuZ2VcIjpcclxuICAgIGNhc2UgXCJmZWVzXCI6XHJcbiAgICBjYXNlIFwidmFsdWVcIjpcclxuICAgICAgcmV0dXJuIHBhcnNlSW50KHZhbHVlKSAvIDEwICoqIDlcclxuICAgIGRlZmF1bHQ6XHJcbiAgICAgIHJldHVybiB2YWx1ZVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gdHhSZWNlaXB0SnNvblJlcGxhY2VyIChrZXksIHZhbHVlKSB7XHJcbiAgc3dpdGNoIChrZXkpIHtcclxuICAgIGNhc2UgXCJieXRlc1wiOlxyXG4gICAgY2FzZSBcImRlclwiOlxyXG4gICAgICByZXR1cm4gdG9IZXhTdHJpbmcodmFsdWUsIHRydWUpXHJcbiAgICBjYXNlIFwidHhcIjpcclxuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlLCB0eEpzb25SZXBsYWNlcilcclxuICAgIGNhc2UgXCJjaGFuZ2VcIjpcclxuICAgIGNhc2UgXCJmZWVzXCI6XHJcbiAgICBjYXNlIFwidmFsdWVcIjpcclxuICAgICAgcmV0dXJuIHBhcnNlSW50KHZhbHVlPy5wZWRyb3MpIC8gMTAgKiogOVxyXG4gICAgY2FzZSBcInRpbWVzdGFtcFwiOlxyXG4gICAgICByZXR1cm4gbW9tZW50LnVuaXgodmFsdWUpLmZvcm1hdChcIk1NTU0gRG8gWVlZWSwgaDptbTpzcyBhXCIpXHJcbiAgICBkZWZhdWx0OlxyXG4gICAgICByZXR1cm4gdmFsdWVcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRyYWNlVHJhbnNhY3Rpb25PbkNoZWNrcG9pbnQgKHJlY2VpcHQpIHtcclxuICBpZiAocmVjZWlwdD8uY29uZmlybWF0aW9ucykge1xyXG4gICAgY29uc29sZS5pbmZvKGAgPiBDaGVja3BvaW50ICMke2NvbW1hcyhyZWNlaXB0LmNvbmZpcm1hdGlvbnMpfS4uLmApXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiB0cmFjZVRyYW5zYWN0aW9uT25TdGF0dXNDaGFuZ2UgKHJlY2VpcHQpIHtcclxuICBjb25zdCBjYXB0aW9ucyA9IHtcclxuICAgIHBlbmRpbmc6IFwiQXdhaXRpbmcgcmVsYXkuLi5cIixcclxuICAgIC8vIGNvbmZpcm1lZDogXCJUcmFuc2FjdGlvbiBjb25maXJtZWQ6XCIsXHJcbiAgICAvLyBmaW5hbGl6ZWQ6IFwiVHJhbnNhY3Rpb24gZmluYWxpemVkOlwiLFxyXG4gICAgcmVsYXllZDogXCJBd2FpdGluZyBpbmNsdXNpb24uLi5cIixcclxuICAgIG1pbmVkOiBcIkF3YWl0aW5nIGNvbmZpcm1hdGlvbnMuLi5cIixcclxuICB9XHJcbiAgY29uc3QgY2FwdGlvbiA9IGNhcHRpb25zW3JlY2VpcHQuc3RhdHVzXVxyXG4gIGlmIChjYXB0aW9uKSBjb25zb2xlLmluZm8oYCA+ICR7Y2FwdGlvbnNbcmVjZWlwdC5zdGF0dXNdfWApXHJcbiAgaWYgKFtcImZpbmFsaXplZFwiLCBcImNvbmZpcm1lZFwiXS5pbmNsdWRlcyhyZWNlaXB0LnN0YXR1cykpIHtcclxuICAgIGNvbnNvbGUuaW5mbyhgID4gQmxvY2sgaGFzaDogICAke2dyYXkocmVjZWlwdD8uYmxvY2tIYXNoKX1gKVxyXG4gICAgY29uc29sZS5pbmZvKGAgPiBCbG9jayBtaW5lcjogICR7Y3lhbihyZWNlaXB0Py5ibG9ja01pbmVyKX1gKTtcclxuICAgIGNvbnNvbGUuaW5mbyhgID4gQmxvY2sgZXBvY2g6ICAke3doaXRlKGNvbW1hcyhyZWNlaXB0Py5ibG9ja0Vwb2NoKSl9YClcclxuICAgIGNvbnNvbGUuaW5mbyhgID4gSW5jbHVkZWQgYXQ6ICAke2dyZWVuKG1vbWVudC51bml4KHJlY2VpcHQ/LmJsb2NrVGltZXN0YW1wKS5mb3JtYXQoXCJNTU1NIERvIFlZWVksIGg6bW06c3MgYVwiKSl9YClcclxuICAgIGNvbnNvbGUuaW5mbyhgID4gJHtyZWNlaXB0LnN0YXR1c1swXS50b1VwcGVyQ2FzZSgpICsgcmVjZWlwdC5zdGF0dXMuc2xpY2UoMSl9IGF0OiAke21ncmVlbihtb21lbnQudW5peChyZWNlaXB0LnRpbWVzdGFtcCkuZm9ybWF0KFwiTU1NTSBEbyBZWVlZLCBoOm1tOnNzIGFcIikpfWApXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiB0cmFjZVRyYW5zYWN0aW9uUmVjZWlwdCAocmVjZWlwdCkge1xyXG4gIGNvbnN0IGNhcHRpb25zID0ge1xyXG4gICAgRGF0YVJlcXVlc3Q6IFwiID4gRFJUIGhhc2g6ICAgICBcIixcclxuICAgIFZhbHVlVHJhbnNmZXI6IFwiID4gVlRUIGhhc2g6ICAgICBcIixcclxuICB9XHJcbiAgY29uc29sZS5pbmZvKGAke2NhcHRpb25zW3JlY2VpcHQudHlwZV0gfHwgXCIgPiBUWCBoYXNoOiAgICAgIFwifSR7d2hpdGUocmVjZWlwdC5oYXNoKX1gKVxyXG4gIGlmIChyZWNlaXB0Py5kcm9IYXNoKSBjb25zb2xlLmluZm8oYCA+IERSTyBoYXNoOiAgICAgJHtncmVlbihyZWNlaXB0LmRyb0hhc2gpfWApXHJcbiAgaWYgKHJlY2VpcHQ/LnJhZEhhc2gpIGNvbnNvbGUuaW5mbyhgID4gUkFEIGhhc2g6ICAgICAke21ncmVlbihyZWNlaXB0LnJhZEhhc2gpfWApXHJcbiAgaWYgKHJlY2VpcHQ/LmRyb1NMQSkgY29uc29sZS5pbmZvKGAgPiBTTEEgcGFyYW1zOiAgICR7SlNPTi5zdHJpbmdpZnkocmVjZWlwdC5kcm9TTEEpfWApXHJcbiAgaWYgKHJlY2VpcHQ/LndpdGhkcmF3ZXIpIHtcclxuICAgIGlmIChyZWNlaXB0Py52YWxpZGF0b3IpIHtcclxuICAgICAgY29uc29sZS5pbmZvKGAgPiBWYWxpZGF0b3I6ICAgICR7bWN5YW4ocmVjZWlwdC52YWxpZGF0b3IpfWApXHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmluZm8oYCA+IFdpdGhkcmF3ZXI6ICAgJHttbWFnZW50YShyZWNlaXB0LndpdGhkcmF3ZXIpfWApXHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnN0IHNpZ25lcnMgPSBBcnJheS5pc0FycmF5KHJlY2VpcHQuZnJvbSkgPyByZWNlaXB0LmZyb20gOiBbcmVjZWlwdC5mcm9tXVxyXG4gICAgY29uc29sZS5pbmZvKGAgPiBTaWduZXIvczogICAgICR7bW1hZ2VudGEoc2lnbmVyc1swXSl9YClcclxuICAgIHNpZ25lcnMuc2xpY2UoMSkuZm9yRWFjaChzaWduZXIgPT4ge1xyXG4gICAgICBjb25zb2xlLmluZm8oYCAgICAgICAgICAgICAgICAgJHttbWFnZW50YShzaWduZXIpfWApXHJcbiAgICB9KVxyXG4gIH1cclxuICBpZiAocmVjZWlwdD8ucmVjaXBpZW50cykge1xyXG4gICAgY29uc29sZS5pbmZvKGAgPiBSZWNpcGllbnQvczogICR7XHJcbiAgICAgIG1ibHVlKHJlY2VpcHQucmVjaXBpZW50cy5maWx0ZXIoKHBraCwgaW5kZXgsIGFycmF5KSA9PiBpbmRleCA9PT0gYXJyYXkuaW5kZXhPZihwa2gpKSlcclxuICAgIH1gKVxyXG4gIH1cclxuICBpZiAocmVjZWlwdD8uZmVlcykgY29uc29sZS5pbmZvKGAgPiBGZWU6ICAgICAgICAgICR7eWVsbG93KHJlY2VpcHQuZmVlcy50b1N0cmluZygyKSl9YClcclxuICBpZiAocmVjZWlwdD8udmFsdWUpIGNvbnNvbGUuaW5mbyhgID4gVmFsdWU6ICAgICAgICAke215ZWxsb3cocmVjZWlwdC52YWx1ZS50b1N0cmluZygyKSl9YClcclxuICBpZiAocmVjZWlwdD8ud2VpZ2h0KSBjb25zb2xlLmluZm8oYCA+IFdlaWdodDogICAgICAgJHttZ3JlZW4oY29tbWFzKHJlY2VpcHQud2VpZ2h0KSl9YClcclxuICBpZiAocmVjZWlwdD8ud2l0bmVzc2VzKSB7XHJcbiAgICBjb25zb2xlLmluZm8oYCA+IFdpdG5lc3NlczogICAgJHtyZWNlaXB0LndpdG5lc3Nlc31gKVxyXG4gIH1cclxufVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gdHJhY2VUcmFuc2FjdGlvbiAodHJhbnNtaXR0ZXIsIG9wdGlvbnMpIHtcclxuICBjb25zdCBjb2xvciA9IG9wdGlvbnM/LmNvbG9yIHx8ICgoeCkgPT4gYFxceDFiWzMwOzQ1bSR7eH1cXHgxYlswbWApXHJcbiAgbGV0IHJlY2VpcHQgPSBhd2FpdCB0cmFuc21pdHRlci5zaWduVHJhbnNhY3Rpb24ob3B0aW9ucywgb3B0aW9ucz8ucmVsb2FkKVxyXG4gIGlmIChvcHRpb25zPy52ZXJib3NlKSB7XHJcbiAgICBjb25zb2xlLmluZm8oXHJcbiAgICAgIGBcXG4ke2dyYXkoSlNPTi5zdHJpbmdpZnkocmVjZWlwdC50eCwgdHhKc29uUmVwbGFjZXIpKX1gXHJcbiAgICApXHJcbiAgfVxyXG4gIGlmIChvcHRpb25zPy5oZWFkbGluZSkge1xyXG4gICAgY29uc29sZS5pbmZvKGBcXG4gJHtjb2xvcihgICAke29wdGlvbnMuaGVhZGxpbmV9ICBgKX1cXG5gKVxyXG4gIH1cclxuICB0cmFjZVRyYW5zYWN0aW9uUmVjZWlwdChyZWNlaXB0KVxyXG4gIGlmICghb3B0aW9ucz8uZm9yY2UpIHtcclxuICAgIC8vIHByb21wdCB1c2VyIGNvbmZpcm1hdGlvblxyXG4gICAgY29uc29sZS5pbmZvKClcclxuICAgIGNvbnN0IGFuc3dlciA9IGF3YWl0IHJlcXVpcmUoXCJpbnF1aXJlclwiKS5jcmVhdGVQcm9tcHRNb2R1bGUoKShbe1xyXG4gICAgICBtZXNzYWdlOiBcIlNlbmQgdHJhbnNhY3Rpb24/XCIsXHJcbiAgICAgIHR5cGU6IFwiY29uZmlybVwiLFxyXG4gICAgICBuYW1lOiBcImNvbnRpbnVlXCIsXHJcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxyXG4gICAgfV0pXHJcbiAgICBpZiAoIWFuc3dlci5jb250aW51ZSkge1xyXG4gICAgICByZXR1cm4gcmVjZWlwdFxyXG4gICAgfVxyXG4gIH1cclxuICB0cnkge1xyXG4gICAgY29uc29sZS5pbmZvKClcclxuICAgIHJlY2VpcHQgPSBhd2FpdCB0cmFuc21pdHRlci5zZW5kVHJhbnNhY3Rpb24oKVxyXG4gICAgaWYgKG9wdGlvbnM/LmF3YWl0IHx8IG9wdGlvbnM/LmNvbmZpcm1hdGlvbnMgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZWNlaXB0ID0gYXdhaXQgdHJhbnNtaXR0ZXIuY29uZmlybVRyYW5zYWN0aW9uKHJlY2VpcHQuaGFzaCwge1xyXG4gICAgICAgIGNvbmZpcm1hdGlvbnM6IG9wdGlvbnM/LmNvbmZpcm1hdGlvbnMgfHwgMCxcclxuICAgICAgICBvbkNoZWNrcG9pbnQ6IHRyYWNlVHJhbnNhY3Rpb25PbkNoZWNrcG9pbnQsXHJcbiAgICAgICAgb25TdGF0dXNDaGFuZ2U6IHRyYWNlVHJhbnNhY3Rpb25PblN0YXR1c0NoYW5nZSxcclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSB7IHN0YXR1czogcmVjZWlwdD8uc3RhdHVzLCB0aW1lc3RhbXA6IHJlY2VpcHQ/LnRpbWVzdGFtcCB8fCBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSB9XHJcbiAgICAgIGNvbnNvbGUuaW5mbyhkYXRhKVxyXG4gICAgfVxyXG4gIH0gY2F0Y2ggKGVycikge1xyXG4gICAgaWYgKGVycj8uaW5GbGlnaHQgJiYgZXJyLmluRmxpZ2h0KSB7XHJcbiAgICAgIGNvbnNvbGUuaW5mbyhgXFxuJHtncmF5KEpTT04uc3RyaW5naWZ5KGVyci5pbkZsaWd0Py5tZXNzYWdlLCB0eFJlY2VpcHRKc29uUmVwbGFjZXIpKX1gKVxyXG4gICAgfVxyXG4gICAgdGhyb3cgZXJyXHJcbiAgfVxyXG4gIHJldHVybiByZWNlaXB0XHJcbn1cclxuXHJcbm1vZHVsZS5leHBvcnRzID0ge1xyXG4gIGNvbG9yczoge1xyXG4gICAgYmJsdWUsXHJcbiAgICBiY3lhbixcclxuICAgIGJncmVlbixcclxuICAgIGJsdWUsXHJcbiAgICBicmVkLFxyXG4gICAgYnZpb2xldCxcclxuICAgIGN5YW4sXHJcbiAgICBncmF5LFxyXG4gICAgZ3JlZW4sXHJcbiAgICBtYWdlbnRhLFxyXG4gICAgcmVkLFxyXG4gICAgd2hpdGUsXHJcbiAgICB5ZWxsb3csXHJcbiAgICBub3JtYWwsXHJcbiAgICBsY3lhbixcclxuICAgIGxncmF5LFxyXG4gICAgbGdyZWVuLFxyXG4gICAgbG1hZ2VudGEsXHJcbiAgICBseWVsbG93LFxyXG4gICAgbWJsdWUsXHJcbiAgICBtY3lhbixcclxuICAgIG1ncmVlbixcclxuICAgIG1tYWdlbnRhLFxyXG4gICAgbXJlZCxcclxuICAgIG15ZWxsb3csXHJcbiAgfSxcclxuICBjb2xvcnN0cmlwLFxyXG4gIGNvbW1hcyxcclxuICB3aG9sZV93aXRzLFxyXG4gIHRvRml4ZWRUcnVuYyxcclxuICBjb3VudExlYXZlcyxcclxuICBleGVjUmFkb25CeXRlY29kZSxcclxuICBkZWxldGVFeHRyYUZsYWdzLFxyXG4gIGV4dHJhY3RGcm9tQXJncyxcclxuICBmcm9tSGV4U3RyaW5nLFxyXG4gIGlzSGV4U3RyaW5nLFxyXG4gIGlzSGV4U3RyaW5nT2ZMZW5ndGgsXHJcbiAgdG9IZXhTdHJpbmcsXHJcbiAgcGFyc2VVUkwsXHJcbiAgaXBJc1ByaXZhdGVPckxvY2FsaG9zdCxcclxuICBzaG93VXNhZ2UsXHJcbiAgc2hvd1VzYWdlRXJyb3IsXHJcbiAgc2hvd1VzYWdlU3ViY29tbWFuZCxcclxuICBzaG93VmVyc2lvbixcclxuICB0b29sa2l0UnVuLFxyXG4gIHRvVXBwZXJDYW1lbENhc2UsXHJcbiAgdG9VdGYxNkJ5dGVzLFxyXG4gIHRvVXRmOEFycmF5LCAgXHJcbiAgdXRmOEFycmF5VG9TdHIsXHJcbiAgcHJvbXB0LFxyXG4gIHByb21wdGVyLFxyXG4gIHRyYWNlQ2hlY2tsaXN0cyxcclxuICB0cmFjZUhlYWRlcixcclxuICB0cmFjZVRhYmxlLFxyXG4gIHRyYWNlVHJhbnNhY3Rpb24sXHJcbiAgdHJhY2VUcmFuc2FjdGlvbk9uU3RhdHVzQ2hhbmdlLFxyXG4gIHRyYWNlVHJhbnNhY3Rpb25PbkNoZWNrcG9pbnQsXHJcbiAgdHJhY2VUcmFuc2FjdGlvblJlY2VpcHQsXHJcbiAgY2hlY2tScGNXaWxkY2FyZHMsXHJcbiAgaXNXaWxkY2FyZCxcclxuICBnZXRXaWxkY2FyZHNDb3VudEZyb21TdHJpbmcsXHJcbiAgcmVwbGFjZVdpbGRjYXJkcyxcclxuICBzcGxpY2VXaWxkY2FyZCxcclxuICB0eEpzb25SZXBsYWNlcixcclxufVxyXG4iXX0=
|
|
826
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaW4vaGVscGVycy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQTtBQUN6QyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7QUFDaEMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQzFCLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUN4QixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUE7QUFFcEMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQ3JDLDZFQUE2RSxFQUFFLEVBQUUsQ0FDbEYsQ0FBQTtBQUVELE1BQU0sTUFBTSxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUU7SUFDeEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUMxQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7UUFDOUIsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLENBQUMsRUFBRTtRQUNyRCxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLHVCQUF1QixFQUFFLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQ25FLE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQyxDQUFBO0FBRUQsU0FBUyxZQUFZLENBQUUsQ0FBQyxFQUFFLENBQUM7SUFDekIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQy9ELElBQUksQ0FBQyxJQUFJLENBQUM7UUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN2QixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQ2xCLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQUUsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQ3BELE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQTtJQUM3QixPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFBO0FBQ3ZCLENBQUM7QUFBQSxDQUFDO0FBRUYsTUFBTSxVQUFVLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUU7SUFDcEMsTUFBTSxNQUFNLEdBQUc7UUFDYixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRTtRQUMvQixFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUU7UUFDckMsRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFO1FBQ3JDLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRTtRQUN0QyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUU7S0FDdkMsQ0FBQTtJQUNELHlDQUF5QztJQUN6QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUMxRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDL0UsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7SUFDOUcsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFBO0FBQzVILENBQUMsQ0FBQTtBQUVELE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsR0FBRyxhQUFhLENBQUE7QUFDdkQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUE7QUFDbkQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUE7QUFDcEQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUE7QUFDbEQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUE7QUFFckQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDaEQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDaEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDakQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDbkQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDbEQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDOUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDOUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDL0MsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDbkQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDN0MsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFFaEQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDN0MsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDN0MsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDN0MsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDOUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDbEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDL0MsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDNUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDaEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFFL0MsU0FBUyxXQUFXLENBQUUsQ0FBQyxFQUFFLEdBQUc7SUFDMUIsSUFBSSxDQUFDLEdBQUcsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRO1FBQUUsT0FBTyxDQUFDLENBQUE7SUFDN0MsSUFBSSxHQUFHLFlBQVksQ0FBQztRQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzlCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7UUFBRSxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTs7UUFDbEYsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcs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Q0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDL0MsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7QUFDN0QsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFFLE9BQU8sRUFBRSxPQUFPO0lBQ25DLE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQTtJQUM1SSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ25DLE1BQU0sU0FBUyxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDM0YsSUFBSSxDQUFDLE9BQU87UUFBRSxPQUFPLEdBQUcsRUFBRSxDQUFBO0lBQzFCLE1BQU0sTUFBTSxHQUFHLE9BQU8sRUFBRSxNQUFNLElBQUksRUFBRSxDQUFBO0lBQ3BDLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3hFLE1BQU0sY0FBYyxHQUFHLE9BQU8sRUFBRSxjQUFjLElBQUksRUFBRSxDQUFBO0lBQ3BELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFDNUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxPQUFPLEVBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDOUQsSUFBSSxRQUFRLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtRQUM5RyxJQUFJLE9BQU8sRUFBRSxTQUFTLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ25ELFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUMzRixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsQ0FBQTtJQUMzQyxDQUFDLENBQUMsQ0FBQTtJQUNGLElBQUksUUFBUSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO0lBQ25FLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLEtBQUssUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDcEQsSUFBSSxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUM7UUFDdkIsUUFBUSxHQUFHLE9BQU8sQ0FBQyxN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aXJlKFwiY2hpbGRfcHJvY2Vzc1wiKVxyXG5jb25zdCBtb21lbnQgPSByZXF1aXJlKFwibW9tZW50XCIpXHJcbmNvbnN0IG5ldCA9IHJlcXVpcmUoXCJuZXRcIilcclxuY29uc3Qgb3MgPSByZXF1aXJlKFwib3NcIilcclxuY29uc3QgcmVhZGxpbmUgPSByZXF1aXJlKFwicmVhZGxpbmVcIilcclxuXHJcbmNvbnN0IGNvbG9yc3RyaXAgPSAoc3RyKSA9PiBzdHIucmVwbGFjZShcclxuICAvW1xcdTAwMWJcXHUwMDliXVtbKCkjOz9dKig/OlswLTldezEsNH0oPzo7WzAtOV17MCw0fSkqKT9bMC05QS1PUlpjZi1ucXJ5PT48XS9nLCBcIlwiXHJcbilcclxuXHJcbmNvbnN0IGNvbW1hcyA9IChudW1iZXIpID0+IHtcclxuICBjb25zdCBwYXJ0cyA9IG51bWJlci50b1N0cmluZygpLnNwbGl0KFwiLlwiKVxyXG4gIGNvbnN0IHJlc3VsdCA9IHBhcnRzLmxlbmd0aCA8PSAxXHJcbiAgICA/IGAke3BhcnRzWzBdLnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csIFwiLFwiKX1gXHJcbiAgICA6IGAke3BhcnRzWzBdLnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csIFwiLFwiKX0uJHtwYXJ0c1sxXX1gXHJcbiAgcmV0dXJuIHJlc3VsdFxyXG59XHJcblxyXG5mdW5jdGlvbiB0b0ZpeGVkVHJ1bmMgKHgsIG4pIHtcclxuICBjb25zdCB2ID0gKHR5cGVvZiB4ID09PSBcInN0cmluZ1wiID8geCA6IHgudG9TdHJpbmcoKSkuc3BsaXQoXCIuXCIpXHJcbiAgaWYgKG4gPD0gMCkgcmV0dXJuIHZbMF1cclxuICBsZXQgZiA9IHZbMV0gfHwgXCJcIlxyXG4gIGlmIChmLmxlbmd0aCA+IG4pIHJldHVybiBgJHt2WzBdfS4ke2Yuc3Vic3RyKDAsIG4pfWBcclxuICB3aGlsZSAoZi5sZW5ndGggPCBuKSBmICs9IFwiMFwiXHJcbiAgcmV0dXJuIGAke3ZbMF19LiR7Zn1gXHJcbn07XHJcblxyXG5jb25zdCB3aG9sZV93aXRzID0gKG51bWJlciwgZGlnaXRzKSA9PiB7XHJcbiAgY29uc3QgbG9va3VwID0gW1xyXG4gICAgeyB2YWx1ZTogMW4sIHN5bWJvbDogXCJwZWRyb3NcIiB9LFxyXG4gICAgeyB2YWx1ZTogMTBuICoqIDZuLCBzeW1ib2w6IFwibVdpdHNcIiB9LFxyXG4gICAgeyB2YWx1ZTogMTBuICoqIDluLCBzeW1ib2w6IFwiIFdpdHNcIiB9LFxyXG4gICAgeyB2YWx1ZTogMTBuICoqIDEybiwgc3ltYm9sOiBcIktXaXRzXCIgfSxcclxuICAgIHsgdmFsdWU6IDEwbiAqKiAxNW4sIHN5bWJvbDogXCJNV2l0c1wiIH0sXHJcbiAgXVxyXG4gIC8vIGNvbnN0IHJlZ2V4cCA9IC9cXC4wKyR8KD88PVxcLlswLTldKTArJC9cclxuICBjb25zdCBpdGVtID0gbG9va3VwLmZpbmRMYXN0KGl0ZW0gPT4gbnVtYmVyID49IGl0ZW0udmFsdWUpXHJcbiAgY29uc3QgcXVvdGllbnQgPSBpdGVtID8gTnVtYmVyKEJpZ0ludChudW1iZXIpIC8gaXRlbS52YWx1ZSkgOiBudW1iZXIudG9TdHJpbmcoKVxyXG4gIGNvbnN0IGRlY2ltYWxzID0gaXRlbSA/IChpdGVtLnZhbHVlICsgQmlnSW50KG51bWJlcikgLSBCaWdJbnQocXVvdGllbnQpICogaXRlbS52YWx1ZSkudG9TdHJpbmcoKS5zbGljZSgxKSA6IFwiXCJcclxuICByZXR1cm4gaXRlbSA/IGAke2NvbW1hcyhxdW90aWVudCl9JHtkZWNpbWFscyAhPT0gXCJcIiA/IGAuJHtkZWNpbWFscy5zbGljZSgwLCBkaWdpdHMpfWAgOiBcIlwifSAke2l0ZW0uc3ltYm9sfWAgOiBcIihubyBjb2lucylcIlxyXG59XHJcblxyXG5jb25zdCBiYmx1ZSA9IChzdHIpID0+IGBcXHgxYlsxOzk4OzQ0bSR7c3RyfVxceDFiWzA7MDswbWBcclxuY29uc3QgYmN5YW4gPSAoc3RyKSA9PiBgXFx4MWJbMzg7NDZtJHtzdHJ9XFx4MWJbMDswbWBcclxuY29uc3QgYmdyZWVuID0gKHN0cikgPT4gYFxceDFiWzMwOzQybSR7c3RyfVxceDFiWzA7MG1gXHJcbmNvbnN0IGJyZWQgPSAoc3RyKSA9PiBgXFx4MWJbMzA7NDFtJHtzdHJ9XFx4MWJbMDswbWBcclxuY29uc3QgYnZpb2xldCA9IChzdHIpID0+IGBcXHgxYlszMDs0NW0ke3N0cn1cXHgxYlswOzBtYFxyXG5cclxuY29uc3QgbGN5YW4gPSAoc3RyKSA9PiBgXFx4MWJbMTs5Nm0ke3N0cn1cXHgxYlswbWBcclxuY29uc3QgbGdyYXkgPSAoc3RyKSA9PiBgXFx4MWJbMTs5MG0ke3N0cn1cXHgxYlswbWBcclxuY29uc3QgbGdyZWVuID0gKHN0cikgPT4gYFxceDFiWzE7OTJtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IGxtYWdlbnRhID0gKHN0cikgPT4gYFxceDFiWzE7OTVtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IGx5ZWxsb3cgPSAoc3RyKSA9PiBgXFx4MWJbMTs5M20ke3N0cn1cXHgxYlswbWBcclxuY29uc3QgbWJsdWUgPSAoc3RyKSA9PiBgXFx4MWJbOTRtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IG1jeWFuID0gKHN0cikgPT4gYFxceDFiWzk2bSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCBtZ3JlZW4gPSAoc3RyKSA9PiBgXFx4MWJbOTJtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IG1tYWdlbnRhID0gKHN0cikgPT4gYFxceDFiWzA7OTVtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IG1yZWQgPSAoc3RyKSA9PiBgXFx4MWJbOTFtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IG15ZWxsb3cgPSAoc3RyKSA9PiBgXFx4MWJbOTNtJHtzdHJ9XFx4MWJbMG1gXHJcblxyXG5jb25zdCBibHVlID0gKHN0cikgPT4gYFxceDFiWzM0bSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCBjeWFuID0gKHN0cikgPT4gYFxceDFiWzM2bSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCBncmF5ID0gKHN0cikgPT4gYFxceDFiWzkwbSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCBncmVlbiA9IChzdHIpID0+IGBcXHgxYlszMm0ke3N0cn1cXHgxYlswbWBcclxuY29uc3QgbWFnZW50YSA9IChzdHIpID0+IGBcXHgxYlswOzM1bSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCBub3JtYWwgPSAoc3RyKSA9PiBgXFx4MWJbOThtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IHJlZCA9IChzdHIpID0+IGBcXHgxYlszMW0ke3N0cn1cXHgxYlswbWBcclxuY29uc3Qgd2hpdGUgPSAoc3RyKSA9PiBgXFx4MWJbMTs5OG0ke3N0cn1cXHgxYlswbWBcclxuY29uc3QgeWVsbG93ID0gKHN0cikgPT4gYFxceDFiWzMzbSR7c3RyfVxceDFiWzBtYFxyXG5cclxuZnVuY3Rpb24gY291bnRMZWF2ZXMgKHQsIG9iaikge1xyXG4gIGlmICghb2JqIHx8IHR5cGVvZiBvYmogPT09IFwic3RyaW5nXCIpIHJldHVybiAwXHJcbiAgaWYgKG9iaiBpbnN0YW5jZW9mIHQpIHJldHVybiAxXHJcbiAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkgcmV0dXJuIG9iai5yZWR1Y2UoKHN1bSwgaXRlbSkgPT4gc3VtICsgY291bnRMZWF2ZXModCwgaXRlbSksIDApXHJcbiAgZWxzZSByZXR1cm4gT2JqZWN0LnZhbHVlcyhvYmopLnJlZHVjZSgoc3VtLCBpdGVtKSA9PiBzdW0gKyBjb3VudExlYXZlcyh0LCBpdGVtKSwgMClcclxufVxyXG5cclxuZnVuY3Rpb24gZGVsZXRlRXh0cmFGbGFncyAoYXJncykge1xyXG4gIHJldHVybiBhcmdzLmZpbHRlcihhcmcgPT4gIWFyZy5zdGFydHNXaXRoKFwiLS1cIikpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNtZCAoLi4uY29tbWFuZCkge1xyXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICBleGVjKGNvbW1hbmQuam9pbihcIiBcIiksIHsgbWF4QnVmZmVyOiAxMDI0ICogMTAyNCAqIDEwIH0sIChlcnJvciwgc3Rkb3V0LCBzdGRlcnIpID0+IHtcclxuICAgICAgaWYgKGVycm9yKSB7XHJcbiAgICAgICAgcmVqZWN0KGVycm9yKVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChzdGRlcnIpIHtcclxuICAgICAgICByZWplY3Qoc3RkZXJyKVxyXG4gICAgICB9XHJcbiAgICAgIHJlc29sdmUoc3Rkb3V0KVxyXG4gICAgfSlcclxuICB9KVxyXG59O1xyXG5cclxuYXN5bmMgZnVuY3Rpb24gZXhlY1JhZG9uQnl0ZWNvZGUgKGJ5dGVjb2RlLCAuLi5mbGFncykge1xyXG4gIGlmICghaXNIZXhTdHJpbmcoYnl0ZWNvZGUpKSB7XHJcbiAgICB0aHJvdyBFdmFsRXJyb3IoXCJpbnZhbGlkIGhleCBzdHJpbmdcIilcclxuICB9IGVsc2Uge1xyXG4gICAgY29uc3QgbnB4ID0gb3MudHlwZSgpID09PSBcIldpbmRvd3NfTlRcIiA/IFwibnB4LmNtZFwiIDogXCJucHhcIlxyXG4gICAgcmV0dXJuIGNtZChucHgsIFwid2l0bmV0XCIsIFwicmFkb25cIiwgXCJkcnktcnVuXCIsIGJ5dGVjb2RlLCAuLi5mbGFncylcclxuICAgIC8vIC5jYXRjaCgoZXJyKSA9PiB7XHJcbiAgICAvLyAgICAgbGV0IGVycm9yTWVzc2FnZSA9IGVyci5tZXNzYWdlLnNwbGl0KCdcXG4nKS5zbGljZSgxKS5qb2luKCdcXG4nKS50cmltKClcclxuICAgIC8vICAgICBjb25zdCBlcnJvclJlZ2V4ID0gLy4qXmVycm9yOiAoPzxtZXNzYWdlPi4qKSQuKi9nbVxyXG4gICAgLy8gICAgIGNvbnN0IG1hdGNoZWQgPSBlcnJvclJlZ2V4LmV4ZWMoZXJyLm1lc3NhZ2UpXHJcbiAgICAvLyAgICAgaWYgKG1hdGNoZWQpIHtcclxuICAgIC8vICAgICAgICAgZXJyb3JNZXNzYWdlID0gbWF0Y2hlZC5ncm91cHMubWVzc2FnZVxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICBjb25zb2xlLmxvZyhlcnJvck1lc3NhZ2UgfHwgZXJyKVxyXG4gICAgLy8gICAgIGNvbnNvbGUuZXJyb3IoZXJyb3JNZXNzYWdlIHx8IGVycilcclxuICAgIC8vIH0pXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBleHRyYWN0RnJvbUFyZ3MgKGFyZ3MsIGZsYWdzKSB7XHJcbiAgY29uc3QgY3VyYXRlZCA9IHt9XHJcbiAgaWYgKGFyZ3MgJiYgZmxhZ3MpIHtcclxuICAgIE9iamVjdC5rZXlzKGZsYWdzKS5mb3JFYWNoKGZsYWcgPT4ge1xyXG4gICAgICBjb25zdCBmbGFnSW5kZXggPSBhcmdzLmluZGV4T2YoYC0tJHtmbGFnfWApXHJcbiAgICAgIGlmIChmbGFnSW5kZXggPj0gMCkge1xyXG4gICAgICAgIGlmIChmbGFnc1tmbGFnXS5wYXJhbSkge1xyXG4gICAgICAgICAgY3VyYXRlZFtmbGFnXSA9IGFyZ3NbZmxhZ0luZGV4XVxyXG4gICAgICAgICAgaWYgKCFhcmdzW2ZsYWdJbmRleCArIDFdIHx8IGFyZ3NbZmxhZ0luZGV4ICsgMV0uc3RhcnRzV2l0aChcIi0tXCIpKSB7XHJcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlciBmb3IgLS0ke2ZsYWd9YClcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGN1cmF0ZWRbZmxhZ10gPSBhcmdzW2ZsYWdJbmRleCArIDFdXHJcbiAgICAgICAgICAgIGFyZ3Muc3BsaWNlKGZsYWdJbmRleCwgMilcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY3VyYXRlZFtmbGFnXSA9IHRydWVcclxuICAgICAgICAgIGFyZ3Muc3BsaWNlKGZsYWdJbmRleCwgMSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIHJldHVybiBbYXJncywgY3VyYXRlZF1cclxufVxyXG5cclxuZnVuY3Rpb24gZnJvbUhleFN0cmluZyAoaGV4U3RyaW5nKSB7XHJcbiAgaWYgKGhleFN0cmluZy5zdGFydHNXaXRoKFwiMHhcIikpIGhleFN0cmluZyA9IGhleFN0cmluZy5zbGljZSgyKVxyXG4gIHJldHVybiBVaW50OEFycmF5LmZyb20oaGV4U3RyaW5nLm1hdGNoKC8uezEsMn0vZykubWFwKChieXRlKSA9PiBwYXJzZUludChieXRlLCAxNikpKVxyXG59XHJcblxyXG5mdW5jdGlvbiBpcElzUHJpdmF0ZU9yTG9jYWxob3N0IChpcCkge1xyXG4gIGlmIChpcC5zdWJzdHJpbmcoMCwgNykgPT09IFwiOjpmZmZmOlwiKSB7IGlwID0gaXAuc3Vic3RyaW5nKDcpIH1cclxuXHJcbiAgaWYgKG5ldC5pc0lQdjQoaXApKSB7XHJcbiAgICAvLyBjaGVjayBsb2NhbGhvc3RcclxuICAgIGlmIChpcCA9PT0gXCIxMjcuMC4wLjFcIikgeyByZXR1cm4gdHJ1ZSB9XHJcblxyXG4gICAgLy8gICAgICAgICAxMC4wLjAuMCAtIDEwLjI1NS4yNTUuMjU1ICAgICAgICB8fCAgIDE3Mi4xNi4wLjAgLSAxNzIuMzEuMjU1LjI1NSAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgICAgMTkyLjE2OC4wLjAgLSAxOTIuMTY4LjI1NS4yNTVcclxuICAgIHJldHVybiAvXigxMClcXC4oLiopXFwuKC4qKVxcLiguKikkLy50ZXN0KGlwKSB8fCAvXigxNzIpXFwuKDFbNi05XXwyWzAtOV18M1swLTFdKVxcLiguKilcXC4oLiopJC8udGVzdChpcCkgfHwgL14oMTkyKVxcLigxNjgpXFwuKC4qKVxcLiguKikkLy50ZXN0KGlwKVxyXG4gIH1cclxuXHJcbiAgLy8gZWxzZTogaXAgaXMgSVB2NlxyXG4gIGNvbnN0IGZpcnN0V29yZCA9IGlwLnNwbGl0KFwiOlwiKS5maW5kKGVsID0+ICEhZWwpIC8vIGdldCBmaXJzdCBub3QgZW1wdHkgd29yZFxyXG5cclxuICAvLyBlcXVpdmFsZW50IG9mIDEyNy4wLjAuMSBpbiBJUHY2XHJcbiAgaWYgKGlwID09PSBcIjo6MVwiKSByZXR1cm4gdHJ1ZVxyXG5cclxuICAvLyBUaGUgb3JpZ2luYWwgSVB2NiBTaXRlIExvY2FsIGFkZHJlc3NlcyAoZmVjMDo6LzEwKSBhcmUgZGVwcmVjYXRlZC4gUmFuZ2U6IGZlYzAgLSBmZWZmXHJcbiAgZWxzZSBpZiAoL15mZVtjLWZdWzAtZl0kLy50ZXN0KGZpcnN0V29yZCkpIHJldHVybiB0cnVlXHJcblxyXG4gIC8vIFRoZXNlIGRheXMgVW5pcXVlIExvY2FsIEFkZHJlc3NlcyAoVUxBKSBhcmUgdXNlZCBpbiBwbGFjZSBvZiBTaXRlIExvY2FsLlxyXG4gIC8vIFJhbmdlOiBmYzAwIC0gZmNmZlxyXG4gIGVsc2UgaWYgKC9eZmNbMC1mXXsyfSQvLnRlc3QoZmlyc3RXb3JkKSkgcmV0dXJuIHRydWVcclxuXHJcbiAgLy8gUmFuZ2U6IGZkMDAgLSBmY2ZmXHJcbiAgZWxzZSBpZiAoL15mZFswLWZdezJ9JC8udGVzdChmaXJzdFdvcmQpKSByZXR1cm4gdHJ1ZVxyXG5cclxuICAvLyBMaW5rIGxvY2FsIGFkZHJlc3NlcyAocHJlZml4ZWQgd2l0aCBmZTgwKSBhcmUgbm90IHJvdXRhYmxlXHJcbiAgZWxzZSBpZiAoZmlyc3RXb3JkID09PSBcImZlODBcIikgcmV0dXJuIHRydWVcclxuXHJcbiAgLy8gRGlzY2FyZCBQcmVmaXhcclxuICBlbHNlIGlmIChmaXJzdFdvcmQgPT09IFwiMTAwXCIpIHJldHVybiB0cnVlXHJcblxyXG4gIC8vIEFueSBvdGhlciBJUCBhZGRyZXNzIGlzIG5vdCBVbmlxdWUgTG9jYWwgQWRkcmVzcyAoVUxBKVxyXG4gIHJldHVybiBmYWxzZVxyXG59XHJcblxyXG5mdW5jdGlvbiBpc0hleFN0cmluZ09mTGVuZ3RoIChzdHIsIGxlbmd0aCkge1xyXG4gIHJldHVybiAoaXNIZXhTdHJpbmcoc3RyKSAmJlxyXG4gICAgICAgIChcclxuICAgICAgICAgIChzdHIuc3RhcnRzV2l0aChcIjB4XCIpICYmIHN0ci5zbGljZSgyKS5sZW5ndGggPT09IGxlbmd0aCAqIDIpIHx8XHJcbiAgICAgICAgICAgIHN0ci5sZW5ndGggPT09IGxlbmd0aCAqIDJcclxuICAgICAgICApXHJcbiAgKSB8fCBpc1dpbGRjYXJkKHN0cilcclxufVxyXG5cclxuZnVuY3Rpb24gaXNIZXhTdHJpbmcgKHN0cikge1xyXG4gIHJldHVybiAoXHJcbiAgICB0eXBlb2Ygc3RyID09PSBcInN0cmluZ1wiICYmXHJcbiAgICAgICAgKFxyXG4gICAgICAgICAgKHN0ci5zdGFydHNXaXRoKFwiMHhcIikgJiYgL15bYS1mQS1GMC05XSskL2kudGVzdChzdHIuc2xpY2UoMikpKSB8fFxyXG4gICAgICAgICAgICAvXlthLWZBLUYwLTldKyQvaS50ZXN0KHN0cilcclxuICAgICAgICApXHJcbiAgKSB8fCBpc1dpbGRjYXJkKHN0cilcclxufVxyXG5cclxuZnVuY3Rpb24gdG9IZXhTdHJpbmcgKGJ1ZmZlciwgcHJlZml4MHggPSBmYWxzZSkge1xyXG4gIGlmIChidWZmZXIgaW5zdGFuY2VvZiBVaW50OEFycmF5KSBidWZmZXIgPSBCdWZmZXIuZnJvbShidWZmZXIpXHJcbiAgcmV0dXJuIChwcmVmaXgweCA/IFwiMHhcIiA6IFwiXCIpICsgQXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKGJ1ZmZlciwgeCA9PiAoXCIwMFwiICsgeC50b1N0cmluZygxNikpLnNsaWNlKC0yKSlcclxuICAgIC5qb2luKFwiXCIpXHJcbiAgICAubWF0Y2goL1thLWZBLUYwLTldezJ9L2cpXHJcbiAgICAuam9pbihcIlwiKVxyXG59XHJcblxyXG5mdW5jdGlvbiBwYXJzZVVSTCAodXJsKSB7XHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IHBhcnNlZFVybCA9IG5ldyBVUkwodXJsKVxyXG4gICAgcmV0dXJuIFtcclxuICAgICAgcGFyc2VkVXJsLnByb3RvY29sICsgXCIvL1wiLFxyXG4gICAgICBwYXJzZWRVcmwuaG9zdCxcclxuICAgICAgcGFyc2VkVXJsLnBhdGhuYW1lLnNsaWNlKDEpLFxyXG4gICAgICBwYXJzZWRVcmwuc2VhcmNoLnNsaWNlKDEpLFxyXG4gICAgXVxyXG4gIH0gY2F0Y2gge1xyXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgSW52YWxpZCBVUkwgd2FzIHByb3ZpZGVkOiAke3VybH1gKVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gc2hvd1VzYWdlIChjbWQsIG1vZHVsZSkge1xyXG4gIHNob3dVc2FnZUhlYWRsaW5lKGNtZClcclxuICBzaG93VXNhZ2VPcHRpb25zKHsgLi4ubW9kdWxlPy5mbGFncyB9KVxyXG4gIHNob3dVc2FnZUZsYWdzKHsgLi4ubW9kdWxlPy5mbGFncyB9KVxyXG4gIHNob3dVc2FnZVJvdXRlcih7IC4uLm1vZHVsZT8ucm91dGVyIH0pXHJcbiAgc2hvd1VzYWdlRW52YXJzKHsgLi4ubW9kdWxlPy5lbnZhcnMgfSlcclxufVxyXG5cclxuZnVuY3Rpb24gc2hvd1VzYWdlUm91dGVyIChyb3V0ZXIpIHtcclxuICBjb25zdCBjbWRzID0gT2JqZWN0LmVudHJpZXMocm91dGVyKVxyXG4gIGlmIChjbWRzLmxlbmd0aCA+IDApIHtcclxuICAgIGNvbnNvbGUuaW5mbyhcIlxcblNVQkNPTU1BTkRTOlwiKVxyXG4gICAgY29uc3QgbWF4TGVuZ3RoID0gTWF0aC5tYXgoLi4uY21kcy5tYXAoKFtjbWRdKSA9PiBjbWQubGVuZ3RoKSlcclxuICAgIGNtZHMuZm9yRWFjaChjbWQgPT4ge1xyXG4gICAgICBjb25zb2xlLmluZm8oXCIgIFwiLCBgJHtjbWRbMF19JHtcIiBcIi5yZXBlYXQobWF4TGVuZ3RoIC0gY21kWzBdLmxlbmd0aCl9YCwgXCIgIFwiLCBjbWRbMV0uaGludClcclxuICAgIH0pXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBzaG93VXNhZ2VFcnJvciAoY21kLCBzdWJjbWQsIG1vZHVsZSwgZXJyb3IsIGZsYWdzKSB7XHJcbiAgc2hvd1VzYWdlU3ViY29tbWFuZChjbWQsIHN1YmNtZCwgbW9kdWxlLCBlcnJvcilcclxuICBpZiAoZXJyb3IpIHtcclxuICAgIGNvbnNvbGUuaW5mbyhcIlxcbkVSUk9SOlwiKVxyXG4gICAgaWYgKGZsYWdzPy5kZWJ1Zykge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5lcnJvcihlcnJvcj8uc3RhY2s/LnNwbGl0KFwiXFxuXCIpWzBdIHx8IGVycm9yKVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gc2hvd1VzYWdlRW52YXJzIChlbnZhcnMpIHtcclxuICBpZiAoZW52YXJzKSB7XHJcbiAgICBlbnZhcnMgPSBPYmplY3QuZW50cmllcyhlbnZhcnMpXHJcbiAgICBpZiAoZW52YXJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc29sZS5pbmZvKFwiXFxuRU5WQVJTOlwiKVxyXG4gICAgICBjb25zdCBtYXhXaWR0aCA9IE1hdGgubWF4KC4uLmVudmFycy5tYXAoKFtlbnZhcl0pID0+IGVudmFyLmxlbmd0aCkpXHJcbiAgICAgIGVudmFycy5mb3JFYWNoKChbZW52YXIsIGhpbnRdKSA9PiB7XHJcbiAgICAgICAgaWYgKGVudmFyLnRvVXBwZXJDYXNlKCkuaW5kZXhPZihcIktFWVwiKSA8IDAgJiYgcHJvY2Vzcy5lbnZbZW52YXJdKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmluZm8oXCIgIFwiLCBgJHt5ZWxsb3coZW52YXIudG9VcHBlckNhc2UoKSl9JHtcIiBcIi5yZXBlYXQobWF4V2lkdGggLSBlbnZhci5sZW5ndGgpfWAsIGAgPT4gU2V0dGxlZCB0byBcIiR7bXllbGxvdyhwcm9jZXNzLmVudltlbnZhcl0pfVwiYClcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc29sZS5pbmZvKFwiICBcIiwgYCR7eWVsbG93KGVudmFyLnRvVXBwZXJDYXNlKCkpfSR7XCIgXCIucmVwZWF0KG1heFdpZHRoIC0gZW52YXIubGVuZ3RoKX1gLCBgICR7aGludH1gKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNob3dVc2FnZUZsYWdzIChmbGFncykge1xyXG4gIGlmIChmbGFncykge1xyXG4gICAgZmxhZ3MgPSBPYmplY3QuZW50cmllcyhmbGFncykuZmlsdGVyKChbLCBmbGFnXSkgPT4gIWZsYWc/LnBhcmFtKS5zb3J0KChbYV0sIFtiXSkgPT4ge1xyXG4gICAgICBpZiAoYSA8IGIpIHJldHVybiAtMVxyXG4gICAgICBlbHNlIGlmIChhID4gYikgcmV0dXJuIDFcclxuICAgICAgZWxzZSByZXR1cm4gMFxyXG4gICAgfSlcclxuICAgIGlmIChmbGFncy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnNvbGUuaW5mbyhcIlxcbkZMQUdTOlwiKVxyXG4gICAgICBjb25zdCBtYXhMZW5ndGggPSBNYXRoLm1heCguLi5mbGFncy5maWx0ZXIoKFssIHsgaGludCB9XSkgPT4gaGludCkubWFwKChba2V5LCB7IHBhcmFtIH1dKSA9PiBwYXJhbSA/IGtleS5sZW5ndGggKyBwYXJhbS5sZW5ndGggKyAzIDoga2V5Lmxlbmd0aCkpXHJcbiAgICAgIGZsYWdzLmZvckVhY2goZmxhZyA9PiB7XHJcbiAgICAgICAgY29uc3Qgc3RyID0gYCR7ZmxhZ1swXX0ke2ZsYWdbMV0ucGFyYW0gPyBncmF5KGAgPCR7ZmxhZ1sxXS5wYXJhbX0+YCkgOiBcIlwifWBcclxuICAgICAgICBpZiAoZmxhZ1sxXS5oaW50KSB7XHJcbiAgICAgICAgICBjb25zb2xlLmluZm8oXCIgIFwiLCBgLS0ke3N0cn0ke1wiIFwiLnJlcGVhdChtYXhMZW5ndGggLSBjb2xvcnN0cmlwKHN0cikubGVuZ3RoKX1gLCBcIiAgXCIsIGZsYWdbMV0uaGludClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBzaG93VXNhZ2VIZWFkbGluZSAoY21kLCBzdWJjbWQsIG1vZHVsZSkge1xyXG4gIGNvbnNvbGUuaW5mbyhcIlVTQUdFOlwiKVxyXG4gIGlmIChzdWJjbWQpIHtcclxuICAgIGxldCBwYXJhbXMgPSBtb2R1bGUucm91dGVyW3N1YmNtZF0/LnBhcmFtc1xyXG4gICAgLy8gY29uc3Qgb3B0aW9ucyA9IG1vZHVsZS5yb3V0ZXJbc3ViY21kXT8ub3B0aW9uc1xyXG4gICAgaWYgKHBhcmFtcykge1xyXG4gICAgICBjb25zdCBvcHRpb25hbGl6ZSA9IChzdHIpID0+IHN0ci5lbmRzV2l0aChcIiAuLi5dXCIpXHJcbiAgICAgICAgPyBgWzwke3N0ci5zbGljZSgxLCAtNSl9PiAuLi5dYFxyXG4gICAgICAgIDogKFxyXG4gICAgICAgICAgc3RyWzBdID09PSBcIltcIiA/IGBbPCR7c3RyLnNsaWNlKDEsIC0xKX0+XWAgOiBgPCR7c3RyfT5gXHJcbiAgICAgICAgKVxyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXJhbXMpKSB7XHJcbiAgICAgICAgcGFyYW1zID0gcGFyYW1zLm1hcChwYXJhbSA9PiBvcHRpb25hbGl6ZShwYXJhbSkpLmpvaW4oXCIgXCIpICsgXCIgXCJcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBwYXJhbXMgPSBvcHRpb25hbGl6ZShwYXJhbXMpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnNvbGUuaW5mbyhgICAgJHt3aGl0ZShgbnB4IHdpdG5ldCAke2NtZH1gKX0gJHt3aGl0ZShzdWJjbWQpfSAke3BhcmFtcyA/IGdyZWVuKHBhcmFtcykgKyBcIiBcIiA6IFwiXCJ9W09QVElPTlNdIFtGTEFHU11gKVxyXG4gICAgaWYgKG1vZHVsZT8ucm91dGVyW3N1YmNtZF0/LmhpbnQpIHtcclxuICAgICAgY29uc29sZS5pbmZvKFwiXFxuREVTQ1JJUFRJT046XCIpXHJcbiAgICAgIGNvbnNvbGUuaW5mbyhgICAgJHttb2R1bGUucm91dGVyW3N1YmNtZF0uaGludH1gKVxyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICBjb25zb2xlLmluZm8oYCAgICR7d2hpdGUoYG5weCB3aXRuZXQgJHtjbWR9YCl9IDxTVUJDT01NQU5EPiAuLi4gW09QVElPTlNdIFtGTEFHU11gKVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gc2hvd1VzYWdlT3B0aW9ucyAob3B0aW9ucykge1xyXG4gIG9wdGlvbnMgPSBPYmplY3QuZW50cmllcyhvcHRpb25zKS5maWx0ZXIoKFssIG9wdGlvbl0pID0+IG9wdGlvbj8ucGFyYW0pLnNvcnQoKFthXSwgW2JdKSA9PiB7XHJcbiAgICBpZiAoYSA8IGIpIHJldHVybiAtMVxyXG4gICAgZWxzZSBpZiAoYSA+IGIpIHJldHVybiAxXHJcbiAgICBlbHNlIHJldHVybiAwXHJcbiAgfSlcclxuICBpZiAob3B0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICBjb25zb2xlLmluZm8oXCJcXG5PUFRJT05TOlwiKVxyXG4gICAgY29uc3QgbWF4TGVuZ3RoID0gb3B0aW9uc1xyXG4gICAgICAubWFwKG9wdGlvbiA9PiBvcHRpb25bMV0ucGFyYW0gPyBvcHRpb25bMV0ucGFyYW0ubGVuZ3RoICsgb3B0aW9uWzBdLmxlbmd0aCArIDMgOiBvcHRpb25bMF0ubGVuZ3RoKVxyXG4gICAgICAucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBjdXJyID4gcHJldiA/IGN1cnIgOiBwcmV2KVxyXG4gICAgb3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XHJcbiAgICAgIGlmIChvcHRpb25bMV0uaGludCkge1xyXG4gICAgICAgIGNvbnN0IHN0ciA9IGAke29wdGlvblswXX0ke29wdGlvblsxXS5wYXJhbSA/IGdyYXkoYCA8JHtvcHRpb25bMV0ucGFyYW19PmApIDogXCJcIn1gXHJcbiAgICAgICAgY29uc29sZS5pbmZvKFwiICBcIiwgYC0tJHtzdHJ9JHtcIiBcIi5yZXBlYXQobWF4TGVuZ3RoIC0gY29sb3JzdHJpcChzdHIpLmxlbmd0aCl9YCwgXCIgIFwiLCBvcHRpb25bMV0uaGludClcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNob3dVc2FnZVN1YmNvbW1hbmQgKGNtZCwgc3ViY21kLCBtb2R1bGUpIHtcclxuICBzaG93VXNhZ2VIZWFkbGluZShjbWQsIHN1YmNtZCwgbW9kdWxlKVxyXG4gIHNob3dVc2FnZU9wdGlvbnMoeyAuLi5tb2R1bGU/LmZsYWdzLCAuLi5tb2R1bGUucm91dGVyW3N1YmNtZF0/Lm9wdGlvbnMgfSlcclxuICBzaG93VXNhZ2VGbGFncyh7IC4uLm1vZHVsZT8uZmxhZ3MsIC4uLm1vZHVsZS5yb3V0ZXJbc3ViY21kXT8ub3B0aW9ucyB9KVxyXG4gIHNob3dVc2FnZUVudmFycyhtb2R1bGUucm91dGVyW3N1YmNtZF0/LmVudmFycyB8fCBtb2R1bGU/LmVudmFycylcclxufVxyXG5cclxuZnVuY3Rpb24gc2hvd1ZlcnNpb24gKCkge1xyXG4gIGNvbnNvbGUuaW5mbyhgJHttY3lhbihgV2l0bmV0IFNESyB2JHtyZXF1aXJlKFwiLi4vLi4vcGFja2FnZS5qc29uXCIpLnZlcnNpb259YCl9YClcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0V2lsZGNhcmRzQ291bnRGcm9tU3RyaW5nIChzdHIpIHtcclxuICBsZXQgbWF4QXJnc0luZGV4ID0gMFxyXG4gIGlmIChzdHIgJiYgdHlwZW9mIHN0ciA9PT0gJ3N0cmluZycpIHtcclxuICAgIGxldCBtYXRjaFxyXG4gICAgY29uc3QgcmVnZXhwID0gL1xcXFxcXGRcXFxcL2dcclxuICAgIHdoaWxlICgobWF0Y2ggPSByZWdleHAuZXhlYyhzdHIpKSAhPT0gbnVsbCkge1xyXG4gICAgICBjb25zdCBhcmdzSW5kZXggPSBwYXJzZUludChtYXRjaFswXVsxXSkgKyAxXHJcbiAgICAgIGlmIChhcmdzSW5kZXggPiBtYXhBcmdzSW5kZXgpIG1heEFyZ3NJbmRleCA9IGFyZ3NJbmRleFxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gbWF4QXJnc0luZGV4XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNoZWNrUnBjV2lsZGNhcmRzICh3aWxkY2FyZHMpIHtcclxuICBpZiAodHlwZW9mIHdpbGRjYXJkcyA9PT0gXCJvYmplY3RcIikge1xyXG4gICAgT2JqZWN0LnZhbHVlcyh3aWxkY2FyZHMpLmZvckVhY2god2lsZGNhcmQgPT4ge1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh3aWxkY2FyZCkpIHdpbGRjYXJkLmZvckVhY2goaXRlbSA9PiBjaGVja1JwY1dpbGRjYXJkcyhpdGVtKSlcclxuICAgICAgZWxzZSBjaGVja1JwY1dpbGRjYXJkcyh3aWxkY2FyZClcclxuICAgIH0pXHJcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHdpbGRjYXJkcykpIHtcclxuICAgIHdpbGRjYXJkcy5mb3JFYWNoKHdpbGRjYXJkID0+IGNoZWNrUnBjV2lsZGNhcmRzKHdpbGRjYXJkKSlcclxuICB9IGVsc2UgaWYgKHR5cGVvZiB3aWxkY2FyZHMgPT09IFwic3RyaW5nXCIpIHtcclxuICAgIGlmIChpc1dpbGRjYXJkKHdpbGRjYXJkcykpIHtcclxuICAgICAgY29uc3QgY2hhciA9IHdpbGRjYXJkcy5jaGFyQXQoMSlcclxuICAgICAgaWYgKGNoYXIgPCBcIjFcIiB8fCBjaGFyID4gXCI5XCIpIHtcclxuICAgICAgICB0aHJvdyBFcnJvcihcIlJQQzogd2lsZGNhcmRzIG5vdCBpbiByYW5nZSBbMSAuLiA5XVwiKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBpc1dpbGRjYXJkIChzdHIpIHtcclxuICByZXR1cm4gc3RyLmxlbmd0aCA9PT0gMyAmJiAvXFxcXFxcZFxcXFwvZy50ZXN0KHN0cilcclxufVxyXG5cclxuZnVuY3Rpb24gcmVwbGFjZVdpbGRjYXJkcyAob2JqLCBhcmdzKSB7XHJcbiAgaWYgKGFyZ3MubGVuZ3RoID4gMTApIGFyZ3MgPSBhcmdzLnNsaWNlKDAsIDEwKVxyXG4gIGlmIChvYmogJiYgdHlwZW9mIG9iaiA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgZm9yIChsZXQgYXJnSW5kZXggPSAwOyBhcmdJbmRleCA8IGFyZ3MubGVuZ3RoOyBhcmdJbmRleCsrKSB7XHJcbiAgICAgIGNvbnN0IHdpbGRjYXJkID0gYFxcXFwke2FyZ0luZGV4fVxcXFxgXHJcbiAgICAgIG9iaiA9IG9iai5yZXBsYWNlQWxsKHdpbGRjYXJkLCBhcmdzW2FyZ0luZGV4XSlcclxuICAgIH1cclxuICB9IGVsc2UgaWYgKG9iaiAmJiBBcnJheS5pc0FycmF5KG9iaikpIHtcclxuICAgIG9iaiA9IG9iai5tYXAodmFsdWUgPT4gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiIHx8IEFycmF5LmlzQXJyYXkodmFsdWUpXHJcbiAgICAgID8gcmVwbGFjZVdpbGRjYXJkcyh2YWx1ZSwgYXJncylcclxuICAgICAgOiB2YWx1ZVxyXG4gICAgKVxyXG4gIH1cclxuICByZXR1cm4gb2JqXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNwbGljZVdpbGRjYXJkIChvYmosIGFyZ0luZGV4LCBhcmdWYWx1ZSwgYXJnc0NvdW50KSB7XHJcbiAgaWYgKG9iaiAmJiB0eXBlb2Ygb2JqID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICBjb25zdCB3aWxkY2FyZCA9IGBcXFxcJHthcmdJbmRleH1cXFxcYFxyXG4gICAgb2JqID0gb2JqLnJlcGxhY2VBbGwod2lsZGNhcmQsIGFyZ1ZhbHVlKVxyXG4gICAgZm9yIChsZXQgaiA9IGFyZ0luZGV4ICsgMTsgaiA8IGFyZ3NDb3VudDsgaisrKSB7XHJcbiAgICAgIG9iaiA9IG9iai5yZXBsYWNlQWxsKGBcXFxcJHtqfVxcXFxgLCBgXFxcXCR7aiAtIDF9XFxcXGApXHJcbiAgICB9XHJcbiAgfSBlbHNlIGlmIChvYmogJiYgQXJyYXkuaXNBcnJheShvYmopKSB7XHJcbiAgICBvYmogPSBvYmoubWFwKHZhbHVlID0+IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiB8fCBBcnJheS5pc0FycmF5KHZhbHVlKVxyXG4gICAgICA/IHNwbGljZVdpbGRjYXJkKHZhbHVlLCBhcmdJbmRleCwgYXJnVmFsdWUsIGFyZ3NDb3VudClcclxuICAgICAgOiB2YWx1ZVxyXG4gICAgKVxyXG4gIH1cclxuICByZXR1cm4gb2JqXHJcbn1cclxuXHJcbmFzeW5jIGZ1bmN0aW9uIHRvb2xraXRSdW4gKHNldHRpbmdzLCBhcmdzKSB7XHJcbiAgY29uc3QgY21kID0gYCR7c2V0dGluZ3MucGF0aHMudG9vbGtpdEJpblBhdGh9ICR7YXJncy5qb2luKFwiIFwiKX1gXHJcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgIGV4ZWMoY21kLCB7IG1heEJ1ZmZlcjogMTAyNCAqIDEwMjQgKiAxMCB9LCAoZXJyb3IsIHN0ZG91dCwgc3RkZXJyKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvcikge1xyXG4gICAgICAgIHJlamVjdChlcnJvcilcclxuICAgICAgfVxyXG4gICAgICBpZiAoc3RkZXJyKSB7XHJcbiAgICAgICAgcmVqZWN0KHN0ZGVycilcclxuICAgICAgfVxyXG4gICAgICByZXNvbHZlKHN0ZG91dClcclxuICAgIH0pXHJcbiAgfSlcclxufVxyXG5cclxuZnVuY3Rpb24gdG9VcHBlckNhbWVsQ2FzZSAoc3RyKSB7XHJcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9cXGIoXFx3KS9nLCBmdW5jdGlvbiAobWF0Y2gsIGNhcHR1cmUpIHtcclxuICAgIHJldHVybiBjYXB0dXJlLnRvVXBwZXJDYXNlKClcclxuICB9KS5yZXBsYWNlKC9cXHMrL2csIFwiXCIpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRvVXRmMTZCeXRlcyhzdHIpIHtcclxuICBjb25zdCBieXRlcyA9IG5ldyBVaW50OEFycmF5KHN0ci5sZW5ndGggKiAyKTtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xyXG4gICAgY29uc3QgY29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpO1xyXG4gICAgYnl0ZXNbaSAqIDJdID0gY29kZSA+PiA4O1xyXG4gICAgYnl0ZXNbaSAqIDIgKyAxXSA9IGNvZGUgJiAweGZmO1xyXG4gIH1cclxuICByZXR1cm4gYnl0ZXM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRvVXRmOEFycmF5IChzdHIpIHtcclxuICBjb25zdCB1dGY4ID0gW11cclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGNoYXJjb2RlID0gc3RyLmNoYXJDb2RlQXQoaSlcclxuICAgIGlmIChjaGFyY29kZSA8IDB4ODApIHV0ZjgucHVzaChjaGFyY29kZSlcclxuICAgIGVsc2UgaWYgKGNoYXJjb2RlIDwgMHg4MDApIHtcclxuICAgICAgdXRmOC5wdXNoKDB4YzAgfCAoY2hhcmNvZGUgPj4gNiksXHJcbiAgICAgICAgMHg4MCB8IChjaGFyY29kZSAmIDB4M2YpKVxyXG4gICAgfSBlbHNlIGlmIChjaGFyY29kZSA8IDB4ZDgwMCB8fCBjaGFyY29kZSA+PSAweGUwMDApIHtcclxuICAgICAgdXRmOC5wdXNoKDB4ZTAgfCAoY2hhcmNvZGUgPj4gMTIpLFxyXG4gICAgICAgIDB4ODAgfCAoKGNoYXJjb2RlID4+IDYpICYgMHgzZiksXHJcbiAgICAgICAgMHg4MCB8IChjaGFyY29kZSAmIDB4M2YpKVxyXG4gICAgfSBlbHNlIHsgLy8gc3Vycm9nYXRlIHBhaXJcclxuICAgICAgaSsrXHJcbiAgICAgIC8vIFVURi0xNiBlbmNvZGVzIDB4MTAwMDAtMHgxMEZGRkYgYnlcclxuICAgICAgLy8gc3VidHJhY3RpbmcgMHgxMDAwMCBhbmQgc3BsaXR0aW5nIHRoZVxyXG4gICAgICAvLyAyMCBiaXRzIG9mIDB4MC0weEZGRkZGIGludG8gdHdvIGhhbHZlc1xyXG4gICAgICBjaGFyY29kZSA9IDB4MTAwMDAgKyAoKChjaGFyY29kZSAmIDB4M2ZmKSA8PCAxMCkgfFxyXG4gICAgICAgICAgICAgICAgKHN0ci5jaGFyQ29kZUF0KGkpICYgMHgzZmYpKVxyXG4gICAgICB1dGY4LnB1c2goMHhmMCB8IChjaGFyY29kZSA+PiAxOCksXHJcbiAgICAgICAgMHg4MCB8ICgoY2hhcmNvZGUgPj4gMTIpICYgMHgzZiksXHJcbiAgICAgICAgMHg4MCB8ICgoY2hhcmNvZGUgPj4gNikgJiAweDNmKSxcclxuICAgICAgICAweDgwIHwgKGNoYXJjb2RlICYgMHgzZikpXHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiB1dGY4XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHV0ZjhBcnJheVRvU3RyIChhcnJheSkge1xyXG4gIGNvbnN0IGxlbiA9IGFycmF5Lmxlbmd0aFxyXG4gIGxldCBvdXQgPSBcIlwiOyBsZXQgaSA9IDA7IGxldCBjXHJcbiAgbGV0IGNoYXIyLCBjaGFyM1xyXG4gIHdoaWxlIChpIDwgbGVuKSB7XHJcbiAgICBjID0gYXJyYXlbaSsrXVxyXG4gICAgc3dpdGNoIChjID4+IDQpIHtcclxuICAgICAgY2FzZSAwOiBjYXNlIDE6IGNhc2UgMjogY2FzZSAzOiBjYXNlIDQ6IGNhc2UgNTogY2FzZSA2OiBjYXNlIDc6XHJcbiAgICAgICAgLy8gMHh4eHh4eHhcclxuICAgICAgICBvdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjKVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgMTI6IGNhc2UgMTM6XHJcbiAgICAgICAgLy8gMTEweCB4eHh4ICAgMTB4eCB4eHh4XHJcbiAgICAgICAgY2hhcjIgPSBhcnJheVtpKytdXHJcbiAgICAgICAgb3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKChjICYgMHgxRikgPDwgNikgfCAoY2hhcjIgJiAweDNGKSlcclxuICAgICAgICBicmVha1xyXG4gICAgICBjYXNlIDE0OlxyXG4gICAgICAgIC8vIDExMTAgeHh4eCAgMTB4eCB4eHh4ICAxMHh4IHh4eHhcclxuICAgICAgICBjaGFyMiA9IGFycmF5W2krK11cclxuICAgICAgICBjaGFyMyA9IGFycmF5W2krK11cclxuICAgICAgICBvdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoKGMgJiAweDBGKSA8PCAxMikgfFxyXG4gICAgICAgICAgICAgICAgICAgICgoY2hhcjIgJiAweDNGKSA8PCA2KSB8XHJcbiAgICAgICAgICAgICAgICAgICAgKChjaGFyMyAmIDB4M0YpIDw8IDApKVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBvdXRcclxufVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gcHJvbXB0IChxdWVzdGlvbikge1xyXG4gIGNvbnN0IHJlYWRsaW5lSW50ZXJmYWNlID0gcmVhZGxpbmUuY3JlYXRlSW50ZXJmYWNlKHtcclxuICAgIGlucHV0OiBwcm9jZXNzLnN0ZGluLFxyXG4gICAgb3V0cHV0OiBwcm9jZXNzLnN0ZG91dCxcclxuICB9KVxyXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICByZWFkbGluZUludGVyZmFjZS5xdWVzdGlvbihgJHtxdWVzdGlvbn0gYCwgKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIHJlYWRsaW5lSW50ZXJmYWNlLmNsb3NlKClcclxuICAgICAgcmVzb2x2ZShyZXNwb25zZS50cmltKCkpXHJcbiAgICB9KVxyXG4gIH0pXHJcbn1cclxuXHJcbmFzeW5jIGZ1bmN0aW9uIHByb21wdGVyIChwcm9taXNlKSB7XHJcbiAgY29uc3QgbG9hZGluZyA9ICgoKSA9PiB7XHJcbiAgICBjb25zdCBoID0gW1wifFwiLCBcIi9cIiwgXCItXCIsIFwiXFxcXFwiXVxyXG4gICAgbGV0IGkgPSAwXHJcbiAgICByZXR1cm4gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICBpID0gKGkgPiAzKSA/IDAgOiBpXHJcbiAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGBcXGJcXGIke2hbaV19IGApXHJcbiAgICAgIGkrK1xyXG4gICAgfSwgNTApXHJcbiAgfSkoKVxyXG4gIHJldHVybiBwcm9taXNlXHJcbiAgICAudGhlbihyZXN1bHQgPT4ge1xyXG4gICAgICBjbGVhckludGVydmFsKGxvYWRpbmcpXHJcbiAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKFwiXFxiXFxiXCIpXHJcbiAgICAgIHJldHVybiByZXN1bHRcclxuICAgIH0pXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRyYWNlQ2hlY2tsaXN0cyAoY2hlY2tsaXN0cykge1xyXG4gIGlmIChjaGVja2xpc3RzICYmIE9iamVjdC5rZXlzKGNoZWNrbGlzdHMpLmxlbmd0aCA+IDApIHtcclxuICAgIGNvbnN0IGhlYWRsaW5lcyA9IFtcIk5PREVTXCIsIC4uLk9iamVjdC5rZXlzKGNoZWNrbGlzdHMpLm1hcChrZXkgPT4gYDoke2tleX1gKV1cclxuICAgIGNoZWNrbGlzdHMgPSBPYmplY3QudmFsdWVzKGNoZWNrbGlzdHMpXHJcbiAgICBjb25zdCB1cmxzID0gT2JqZWN0LmtleXMoY2hlY2tsaXN0c1swXSlcclxuICAgIGNvbnN0IHJlY29yZHMgPSB1cmxzLm1hcCh1cmwgPT4ge1xyXG4gICAgICBjb25zdCBlcnJvcnMgPSBjaGVja2xpc3RzLmZpbHRlcihjaGVja2xpc3QgPT4gY2hlY2tsaXN0W3VybF0gaW5zdGFuY2VvZiBFcnJvcikubGVuZ3RoXHJcbiAgICAgIHJldHVybiBbXHJcbiAgICAgICAgZXJyb3JzID09PSBjaGVja2xpc3RzLmxlbmd0aCA/IHJlZCh1cmwpIDogKGVycm9ycyA+IDAgPyBteWVsbG93KHVybCkgOiBtY3lhbih1cmwpKSxcclxuICAgICAgICAuLi5jaGVja2xpc3RzLm1hcChjaGVja2xpc3QgPT4gY2hlY2tsaXN0W3VybF0gaW5zdGFuY2VvZiBFcnJvclxyXG4gICAgICAgICAgPyByZWQoY2hlY2tsaXN0W3VybF0pXHJcbiAgICAgICAgICA6IChjaGVja2xpc3RbdXJsXSA9PT0gdHJ1ZSA/IGxjeWFuKFwiQXllXCIpIDogY3lhbihcIk5heVwiKSlcclxuICAgICAgICApLFxyXG4gICAgICBdXHJcbiAgICB9KVxyXG4gICAgdHJhY2VUYWJsZShyZWNvcmRzLCB7XHJcbiAgICAgIGhlYWRsaW5lcyxcclxuICAgICAgbWF4Q29sdW1uV2lkdGg6IDMxLFxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRyYWNlSGVhZGVyIChoZWFkbGluZSwgY29sb3IgPSBub3JtYWwsIGluZGVudCA9IFwiXCIsKSB7XHJcbiAgY29uc29sZS5pbmZvKGAke2luZGVudH3ilIzilIAke1wi4pSAXCIucmVwZWF0KGhlYWRsaW5lLmxlbmd0aCl94pSA4pSQYClcclxuICBjb25zb2xlLmluZm8oYCR7aW5kZW50feKUgiAke2NvbG9yKGhlYWRsaW5lKX0g4pSCYClcclxuICBjb25zb2xlLmluZm8oYCR7aW5kZW50feKUlOKUgCR7XCLilIBcIi5yZXBlYXQoaGVhZGxpbmUubGVuZ3RoKX3ilIDilJhgKVxyXG59XHJcblxyXG5mdW5jdGlvbiB0cmFjZVRhYmxlIChyZWNvcmRzLCBvcHRpb25zKSB7XHJcbiAgY29uc3Qgc3RyaW5naWZ5ID0gKGRhdGEsIGh1bWFuaXplcnMsIGluZGV4KSA9PiBodW1hbml6ZXJzICYmIGh1bWFuaXplcnNbaW5kZXhdID8gaHVtYW5pemVyc1tpbmRleF0oZGF0YSkudG9TdHJpbmcoKSA6IGRhdGE/LnRvU3RyaW5nKCkgPz8gXCJcIlxyXG4gIGNvbnN0IG1heCA9IChhLCBiKSA9PiBhID4gYiA/IGEgOiBiXHJcbiAgY29uc3QgcmVkdWNlTWF4ID0gKG51bWJlcnMpID0+IG51bWJlcnMucmVkdWNlKChjdXJyLCBwcmV2KSA9PiBwcmV2ID4gY3VyciA/IHByZXYgOiBjdXJyLCAwKVxyXG4gIGlmICghb3B0aW9ucykgb3B0aW9ucyA9IHt9XHJcbiAgY29uc3QgaW5kZW50ID0gb3B0aW9ucz8uaW5kZW50IHx8IFwiXCJcclxuICBjb25zdCBudW1Db2x1bW5zID0gcmVkdWNlTWF4KHJlY29yZHMubWFwKHJlY29yZCA9PiByZWNvcmQ/Lmxlbmd0aCB8fCAxKSlcclxuICBjb25zdCBtYXhDb2x1bW5XaWR0aCA9IG9wdGlvbnM/Lm1heENvbHVtbldpZHRoIHx8IDgwXHJcbiAgY29uc3QgdGFibGUgPSB0cmFuc3Bvc2UocmVjb3JkcywgbnVtQ29sdW1ucylcclxuICBvcHRpb25zLndpZHRocyA9IG9wdGlvbnM/LndpZHRocyB8fCB0YWJsZS5tYXAoKGNvbHVtbiwgaW5kZXgpID0+IHtcclxuICAgIGxldCBtYXhXaWR0aCA9IHJlZHVjZU1heChjb2x1bW4ubWFwKGZpZWxkID0+IGNvbG9yc3RyaXAoc3RyaW5naWZ5KGZpZWxkLCBvcHRpb25zPy5odW1hbml6ZXJzLCBpbmRleCkpLmxlbmd0aCkpXHJcbiAgICBpZiAob3B0aW9ucz8uaGVhZGxpbmVzICYmIG9wdGlvbnMuaGVhZGxpbmVzW2luZGV4XSkge1xyXG4gICAgICBtYXhXaWR0aCA9IG1heChtYXhXaWR0aCwgY29sb3JzdHJpcChvcHRpb25zLmhlYWRsaW5lc1tpbmRleF0ucmVwbGFjZUFsbChcIjpcIiwgXCJcIikpLmxlbmd0aClcclxuICAgIH1cclxuICAgIHJldHVybiBNYXRoLm1pbihtYXhXaWR0aCwgbWF4Q29sdW1uV2lkdGgpXHJcbiAgfSlcclxuICBsZXQgaGVhZGxpbmUgPSBvcHRpb25zLndpZHRocy5tYXAobWF4V2lkdGggPT4gXCLilIBcIi5yZXBlYXQobWF4V2lkdGgpKVxyXG4gIGNvbnNvbGUuaW5mbyhgJHtpbmRlbnR94pSM4pSAJHtoZWFkbGluZS5qb2luKFwi4pSA4pSs4pSAXCIpfeKUgOKUkGApXHJcbiAgaWYgKG9wdGlvbnM/LmhlYWRsaW5lcykge1xyXG4gICAgaGVhZGxpbmUgPSBvcHRpb25zLndpZHRocy5tYXAoKG1heFdpZHRoLCBpbmRleCkgPT4ge1xyXG4gICAgICBjb25zdCBjYXB0aW9uID0gb3B0aW9ucy5oZWFkbGluZXNbaW5kZXhdLnJlcGxhY2VBbGwoXCI6XCIsIFwiXCIpXHJcbiAgICAgIGNvbnN0IGNhcHRpb25MZW5ndGggPSBjb2xvcnN0cmlwKGNhcHRpb24pLmxlbmd0aFxyXG4gICAgICByZXR1cm4gYCR7d2hpdGUoY2FwdGlvbil9JHtcIiBcIi5yZXBlYXQobWF4V2lkdGggLSBjYXB0aW9uTGVuZ3RoKX1gXHJcbiAgICB9KVxyXG4gICAgY29uc29sZS5pbmZvKGAke2luZGVudH3ilIIgJHtoZWFkbGluZS5qb2luKFwiIOKUgiBcIil9IOKUgmApXHJcbiAgICBoZWFkbGluZSA9IG9wdGlvbnMud2lkdGhzLm1hcChtYXhXaWR0aCA9PiBcIuKUgFwiLnJlcGVhdChtYXhXaWR0aCkpXHJcbiAgICBjb25zb2xlLmluZm8oYCR7aW5kZW50feKUnOKUgCR7aGVhZGxpbmUuam9pbihcIuKUgOKUvOKUgFwiKX3ilIDilKRgKVxyXG4gIH1cclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHJlY29yZHMubGVuZ3RoOyBpKyspIHtcclxuICAgIGxldCBsaW5lID0gXCJcIlxyXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBudW1Db2x1bW5zOyBqKyspIHtcclxuICAgICAgbGV0IGRhdGEgPSB0YWJsZVtqXVtpXVxyXG4gICAgICBsZXQgY29sb3JcclxuICAgICAgaWYgKG9wdGlvbnM/LmNvbG9ycyAmJiBvcHRpb25zLmNvbG9yc1tqXSkge1xyXG4gICAgICAgIGNvbG9yID0gb3B0aW9ucy5jb2xvcnNbal1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb2xvciA9IHR5cGVvZiBkYXRhID09PSBcInN0cmluZ1wiXHJcbiAgICAgICAgICA/IGdyZWVuXHJcbiAgICAgICAgICA6IChOdW1iZXIoZGF0YSkgPT09IGRhdGEgJiYgZGF0YSAlIDEgIT09IDAgLy8gaXMgZmxvYXQgbnVtYmVyP1xyXG4gICAgICAgICAgICA/IHllbGxvd1xyXG4gICAgICAgICAgICA6ICh4KSA9PiB4XHJcbiAgICAgICAgICApXHJcbiAgICAgIH1cclxuICAgICAgZGF0YSA9IHN0cmluZ2lmeShkYXRhLCBvcHRpb25zPy5odW1hbml6ZXJzLCBqKVxyXG4gICAgICBpZiAoY29sb3JzdHJpcChkYXRhKS5sZW5ndGggPiBtYXhDb2x1bW5XaWR0aCkge1xyXG4gICAgICAgIHdoaWxlIChjb2xvcnN0cmlwKGRhdGEpLmxlbmd0aCA+IG1heENvbHVtbldpZHRoIC0gMykge1xyXG4gICAgICAgICAgZGF0YSA9IGRhdGEuc2xpY2UoMCwgLTEpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRhdGEgKz0gXCIuLi5cIlxyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGRhdGFMZW5ndGggPSBjb2xvcnN0cmlwKGRhdGEpLmxlbmd0aFxyXG4gICAgICBpZiAob3B0aW9ucz8uaGVhZGxpbmVzICYmIG9wdGlvbnMuaGVhZGxpbmVzW2pdWzBdID09PSBcIjpcIikge1xyXG4gICAgICAgIGRhdGEgPSBgJHtjb2xvcihkYXRhKX0ke1wiIFwiLnJlcGVhdChvcHRpb25zLndpZHRoc1tqXSAtIGRhdGFMZW5ndGgpfWBcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBkYXRhID0gYCR7XCIgXCIucmVwZWF0KG9wdGlvbnMud2lkdGhzW2pdIC0gZGF0YUxlbmd0aCl9JHtjb2xvcihkYXRhKX1gXHJcbiAgICAgIH1cclxuICAgICAgbGluZSArPSBg4pSCICR7ZGF0YX0gYFxyXG4gICAgfVxyXG4gICAgY29uc29sZS5pbmZvKGAke2luZGVudH0ke2xpbmV94pSCYClcclxuICB9XHJcbiAgaGVhZGxpbmUgPSBvcHRpb25zLndpZHRocy5tYXAobWF4V2lkdGggPT4gXCLilIBcIi5yZXBlYXQobWF4V2lkdGgpKVxyXG4gIGNvbnNvbGUuaW5mbyhgJHtpbmRlbnR94pSU4pSAJHtoZWFkbGluZS5qb2luKFwi4pSA4pS04pSAXCIpfeKUgOKUmGApXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRyYW5zcG9zZSAocmVjb3JkcywgbnVtQ29sdW1ucykge1xyXG4gIGNvbnN0IGNvbHVtbnMgPSBbXVxyXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBudW1Db2x1bW5zOyBpbmRleCsrKSB7XHJcbiAgICBjb2x1bW5zLnB1c2gocmVjb3Jkcy5tYXAocm93ID0+IHJvd1tpbmRleF0pKVxyXG4gIH1cclxuICByZXR1cm4gY29sdW1uc1xyXG59XHJcblxyXG5mdW5jdGlvbiB0eEpzb25SZXBsYWNlciAoa2V5LCB2YWx1ZSkge1xyXG4gIHN3aXRjaCAoa2V5KSB7XHJcbiAgICBjYXNlIFwiYnl0ZXNcIjpcclxuICAgIGNhc2UgXCJkZXJcIjpcclxuICAgICAgcmV0dXJuIHRvSGV4U3RyaW5nKHZhbHVlLCB0cnVlKVxyXG4gICAgY2FzZSBcInR4XCI6XHJcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSwgdHhKc29uUmVwbGFjZXIpXHJcbiAgICBjYXNlIFwiY2hhbmdlXCI6XHJcbiAgICBjYXNlIFwiZmVlc1wiOlxyXG4gICAgY2FzZSBcInZhbHVlXCI6XHJcbiAgICAgIHJldHVybiBwYXJzZUludCh2YWx1ZSkgLyAxMCAqKiA5XHJcbiAgICBkZWZhdWx0OlxyXG4gICAgICByZXR1cm4gdmFsdWVcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHR4UmVjZWlwdEpzb25SZXBsYWNlciAoa2V5LCB2YWx1ZSkge1xyXG4gIHN3aXRjaCAoa2V5KSB7XHJcbiAgICBjYXNlIFwiYnl0ZXNcIjpcclxuICAgIGNhc2UgXCJkZXJcIjpcclxuICAgICAgcmV0dXJuIHRvSGV4U3RyaW5nKHZhbHVlLCB0cnVlKVxyXG4gICAgY2FzZSBcInR4XCI6XHJcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSwgdHhKc29uUmVwbGFjZXIpXHJcbiAgICBjYXNlIFwiY2hhbmdlXCI6XHJcbiAgICBjYXNlIFwiZmVlc1wiOlxyXG4gICAgY2FzZSBcInZhbHVlXCI6XHJcbiAgICAgIHJldHVybiBwYXJzZUludCh2YWx1ZT8ucGVkcm9zKSAvIDEwICoqIDlcclxuICAgIGNhc2UgXCJ0aW1lc3RhbXBcIjpcclxuICAgICAgcmV0dXJuIG1vbWVudC51bml4KHZhbHVlKS5mb3JtYXQoXCJNTU1NIERvIFlZWVksIGg6bW06c3MgYVwiKVxyXG4gICAgZGVmYXVsdDpcclxuICAgICAgcmV0dXJuIHZhbHVlXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiB0cmFjZVRyYW5zYWN0aW9uT25DaGVja3BvaW50IChyZWNlaXB0KSB7XHJcbiAgaWYgKHJlY2VpcHQ/LmNvbmZpcm1hdGlvbnMpIHtcclxuICAgIGNvbnNvbGUuaW5mbyhgID4gQ2hlY2twb2ludCAjJHtjb21tYXMocmVjZWlwdC5jb25maXJtYXRpb25zKX0uLi5gKVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gdHJhY2VUcmFuc2FjdGlvbk9uU3RhdHVzQ2hhbmdlIChyZWNlaXB0KSB7XHJcbiAgY29uc3QgY2FwdGlvbnMgPSB7XHJcbiAgICBwZW5kaW5nOiBcIkF3YWl0aW5nIHJlbGF5Li4uXCIsXHJcbiAgICAvLyBjb25maXJtZWQ6IFwiVHJhbnNhY3Rpb24gY29uZmlybWVkOlwiLFxyXG4gICAgLy8gZmluYWxpemVkOiBcIlRyYW5zYWN0aW9uIGZpbmFsaXplZDpcIixcclxuICAgIHJlbGF5ZWQ6IFwiQXdhaXRpbmcgaW5jbHVzaW9uLi4uXCIsXHJcbiAgICBtaW5lZDogXCJBd2FpdGluZyBjb25maXJtYXRpb25zLi4uXCIsXHJcbiAgfVxyXG4gIGNvbnN0IGNhcHRpb24gPSBjYXB0aW9uc1tyZWNlaXB0LnN0YXR1c11cclxuICBpZiAoY2FwdGlvbikgY29uc29sZS5pbmZvKGAgPiAke2NhcHRpb25zW3JlY2VpcHQuc3RhdHVzXX1gKVxyXG4gIGlmIChbXCJmaW5hbGl6ZWRcIiwgXCJjb25maXJtZWRcIl0uaW5jbHVkZXMocmVjZWlwdC5zdGF0dXMpKSB7XHJcbiAgICBjb25zb2xlLmluZm8oYCA+IEJsb2NrIGhhc2g6ICAgJHtncmF5KHJlY2VpcHQ/LmJsb2NrSGFzaCl9YClcclxuICAgIGNvbnNvbGUuaW5mbyhgID4gQmxvY2sgbWluZXI6ICAke2N5YW4ocmVjZWlwdD8uYmxvY2tNaW5lcil9YCk7XHJcbiAgICBjb25zb2xlLmluZm8oYCA+IEJsb2NrIGVwb2NoOiAgJHt3aGl0ZShjb21tYXMocmVjZWlwdD8uYmxvY2tFcG9jaCkpfWApXHJcbiAgICBjb25zb2xlLmluZm8oYCA+IEluY2x1ZGVkIGF0OiAgJHtncmVlbihtb21lbnQudW5peChyZWNlaXB0Py5ibG9ja1RpbWVzdGFtcCkuZm9ybWF0KFwiTU1NTSBEbyBZWVlZLCBoOm1tOnNzIGFcIikpfWApXHJcbiAgICBjb25zb2xlLmluZm8oYCA+ICR7cmVjZWlwdC5zdGF0dXNbMF0udG9VcHBlckNhc2UoKSArIHJlY2VpcHQuc3RhdHVzLnNsaWNlKDEpfSBhdDogJHttZ3JlZW4obW9tZW50LnVuaXgocmVjZWlwdC50aW1lc3RhbXApLmZvcm1hdChcIk1NTU0gRG8gWVlZWSwgaDptbTpzcyBhXCIpKX1gKVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gdHJhY2VUcmFuc2FjdGlvblJlY2VpcHQgKHJlY2VpcHQpIHtcclxuICBjb25zdCBjYXB0aW9ucyA9IHtcclxuICAgIERhdGFSZXF1ZXN0OiBcIiA+IERSVCBoYXNoOiAgICAgXCIsXHJcbiAgICBWYWx1ZVRyYW5zZmVyOiBcIiA+IFZUVCBoYXNoOiAgICAgXCIsXHJcbiAgfVxyXG4gIGNvbnNvbGUuaW5mbyhgJHtjYXB0aW9uc1tyZWNlaXB0LnR5cGVdIHx8IFwiID4gVFggaGFzaDogICAgICBcIn0ke3doaXRlKHJlY2VpcHQuaGFzaCl9YClcclxuICBpZiAocmVjZWlwdD8uZHJvSGFzaCkgY29uc29sZS5pbmZvKGAgPiBEUk8gaGFzaDogICAgICR7Z3JlZW4ocmVjZWlwdC5kcm9IYXNoKX1gKVxyXG4gIGlmIChyZWNlaXB0Py5yYWRIYXNoKSBjb25zb2xlLmluZm8oYCA+IFJBRCBoYXNoOiAgICAgJHttZ3JlZW4ocmVjZWlwdC5yYWRIYXNoKX1gKVxyXG4gIGlmIChyZWNlaXB0Py5kcm9TTEEpIGNvbnNvbGUuaW5mbyhgID4gU0xBIHBhcmFtczogICAke0pTT04uc3RyaW5naWZ5KHJlY2VpcHQuZHJvU0xBKX1gKVxyXG4gIGlmIChyZWNlaXB0Py53aXRoZHJhd2VyKSB7XHJcbiAgICBpZiAocmVjZWlwdD8udmFsaWRhdG9yKSB7XHJcbiAgICAgIGNvbnNvbGUuaW5mbyhgID4gVmFsaWRhdG9yOiAgICAke21jeWFuKHJlY2VpcHQudmFsaWRhdG9yKX1gKVxyXG4gICAgfVxyXG4gICAgY29uc29sZS5pbmZvKGAgPiBXaXRoZHJhd2VyOiAgICR7bW1hZ2VudGEocmVjZWlwdC53aXRoZHJhd2VyKX1gKVxyXG4gIH0gZWxzZSB7XHJcbiAgICBjb25zdCBzaWduZXJzID0gQXJyYXkuaXNBcnJheShyZWNlaXB0LmZyb20pID8gcmVjZWlwdC5mcm9tIDogW3JlY2VpcHQuZnJvbV1cclxuICAgIGNvbnNvbGUuaW5mbyhgID4gU2lnbmVyL3M6ICAgICAke21tYWdlbnRhKHNpZ25lcnNbMF0pfWApXHJcbiAgICBzaWduZXJzLnNsaWNlKDEpLmZvckVhY2goc2lnbmVyID0+IHtcclxuICAgICAgY29uc29sZS5pbmZvKGAgICAgICAgICAgICAgICAgICR7bW1hZ2VudGEoc2lnbmVyKX1gKVxyXG4gICAgfSlcclxuICB9XHJcbiAgaWYgKHJlY2VpcHQ/LnJlY2lwaWVudHMpIHtcclxuICAgIGNvbnNvbGUuaW5mbyhgID4gUmVjaXBpZW50L3M6ICAke1xyXG4gICAgICBtYmx1ZShyZWNlaXB0LnJlY2lwaWVudHMuZmlsdGVyKChwa2gsIGluZGV4LCBhcnJheSkgPT4gaW5kZXggPT09IGFycmF5LmluZGV4T2YocGtoKSkpXHJcbiAgICB9YClcclxuICB9XHJcbiAgaWYgKHJlY2VpcHQ/LmZlZXMpIGNvbnNvbGUuaW5mbyhgID4gRmVlOiAgICAgICAgICAke3llbGxvdyhyZWNlaXB0LmZlZXMudG9TdHJpbmcoMikpfWApXHJcbiAgaWYgKHJlY2VpcHQ/LnZhbHVlKSBjb25zb2xlLmluZm8oYCA+IFZhbHVlOiAgICAgICAgJHtteWVsbG93KHJlY2VpcHQudmFsdWUudG9TdHJpbmcoMikpfWApXHJcbiAgaWYgKHJlY2VpcHQ/LndlaWdodCkgY29uc29sZS5pbmZvKGAgPiBXZWlnaHQ6ICAgICAgICR7bWdyZWVuKGNvbW1hcyhyZWNlaXB0LndlaWdodCkpfWApXHJcbiAgaWYgKHJlY2VpcHQ/LndpdG5lc3Nlcykge1xyXG4gICAgY29uc29sZS5pbmZvKGAgPiBXaXRuZXNzZXM6ICAgICR7cmVjZWlwdC53aXRuZXNzZXN9YClcclxuICB9XHJcbn1cclxuXHJcbmFzeW5jIGZ1bmN0aW9uIHRyYWNlVHJhbnNhY3Rpb24gKHRyYW5zbWl0dGVyLCBvcHRpb25zKSB7XHJcbiAgY29uc3QgY29sb3IgPSBvcHRpb25zPy5jb2xvciB8fCAoKHgpID0+IGBcXHgxYlszMDs0NW0ke3h9XFx4MWJbMG1gKVxyXG4gIGxldCByZWNlaXB0ID0gYXdhaXQgdHJhbnNtaXR0ZXIuc2lnblRyYW5zYWN0aW9uKG9wdGlvbnMsIG9wdGlvbnM/LnJlbG9hZClcclxuICBpZiAob3B0aW9ucz8udmVyYm9zZSkge1xyXG4gICAgY29uc29sZS5pbmZvKFxyXG4gICAgICBgXFxuJHtncmF5KEpTT04uc3RyaW5naWZ5KHJlY2VpcHQudHgsIHR4SnNvblJlcGxhY2VyKSl9YFxyXG4gICAgKVxyXG4gIH1cclxuICBpZiAob3B0aW9ucz8uaGVhZGxpbmUpIHtcclxuICAgIGNvbnNvbGUuaW5mbyhgXFxuICR7Y29sb3IoYCAgJHtvcHRpb25zLmhlYWRsaW5lfSAgYCl9XFxuYClcclxuICB9XHJcbiAgdHJhY2VUcmFuc2FjdGlvblJlY2VpcHQocmVjZWlwdClcclxuICBpZiAoIW9wdGlvbnM/LmZvcmNlKSB7XHJcbiAgICAvLyBwcm9tcHQgdXNlciBjb25maXJtYXRpb25cclxuICAgIGNvbnNvbGUuaW5mbygpXHJcbiAgICBjb25zdCBhbnN3ZXIgPSBhd2FpdCByZXF1aXJlKFwiaW5xdWlyZXJcIikuY3JlYXRlUHJvbXB0TW9kdWxlKCkoW3tcclxuICAgICAgbWVzc2FnZTogXCJTZW5kIHRyYW5zYWN0aW9uP1wiLFxyXG4gICAgICB0eXBlOiBcImNvbmZpcm1cIixcclxuICAgICAgbmFtZTogXCJjb250aW51ZVwiLFxyXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcclxuICAgIH1dKVxyXG4gICAgaWYgKCFhbnN3ZXIuY29udGludWUpIHtcclxuICAgICAgcmV0dXJuIHJlY2VpcHRcclxuICAgIH1cclxuICB9XHJcbiAgdHJ5IHtcclxuICAgIGNvbnNvbGUuaW5mbygpXHJcbiAgICByZWNlaXB0ID0gYXdhaXQgdHJhbnNtaXR0ZXIuc2VuZFRyYW5zYWN0aW9uKClcclxuICAgIGlmIChvcHRpb25zPy5hd2FpdCB8fCBvcHRpb25zPy5jb25maXJtYXRpb25zICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmVjZWlwdCA9IGF3YWl0IHRyYW5zbWl0dGVyLmNvbmZpcm1UcmFuc2FjdGlvbihyZWNlaXB0Lmhhc2gsIHtcclxuICAgICAgICBjb25maXJtYXRpb25zOiBvcHRpb25zPy5jb25maXJtYXRpb25zIHx8IDAsXHJcbiAgICAgICAgb25DaGVja3BvaW50OiB0cmFjZVRyYW5zYWN0aW9uT25DaGVja3BvaW50LFxyXG4gICAgICAgIG9uU3RhdHVzQ2hhbmdlOiB0cmFjZVRyYW5zYWN0aW9uT25TdGF0dXNDaGFuZ2UsXHJcbiAgICAgIH0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBkYXRhID0geyBzdGF0dXM6IHJlY2VpcHQ/LnN0YXR1cywgdGltZXN0YW1wOiByZWNlaXB0Py50aW1lc3RhbXAgfHwgTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCkgfVxyXG4gICAgICBjb25zb2xlLmluZm8oZGF0YSlcclxuICAgIH1cclxuICB9IGNhdGNoIChlcnIpIHtcclxuICAgIGlmIChlcnI/LmluRmxpZ2h0ICYmIGVyci5pbkZsaWdodCkge1xyXG4gICAgICBjb25zb2xlLmluZm8oYFxcbiR7Z3JheShKU09OLnN0cmluZ2lmeShlcnIuaW5GbGlndD8ubWVzc2FnZSwgdHhSZWNlaXB0SnNvblJlcGxhY2VyKSl9YClcclxuICAgIH1cclxuICAgIHRocm93IGVyclxyXG4gIH1cclxuICByZXR1cm4gcmVjZWlwdFxyXG59XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHtcclxuICBjb2xvcnM6IHtcclxuICAgIGJibHVlLFxyXG4gICAgYmN5YW4sXHJcbiAgICBiZ3JlZW4sXHJcbiAgICBibHVlLFxyXG4gICAgYnJlZCxcclxuICAgIGJ2aW9sZXQsXHJcbiAgICBjeWFuLFxyXG4gICAgZ3JheSxcclxuICAgIGdyZWVuLFxyXG4gICAgbWFnZW50YSxcclxuICAgIHJlZCxcclxuICAgIHdoaXRlLFxyXG4gICAgeWVsbG93LFxyXG4gICAgbm9ybWFsLFxyXG4gICAgbGN5YW4sXHJcbiAgICBsZ3JheSxcclxuICAgIGxncmVlbixcclxuICAgIGxtYWdlbnRhLFxyXG4gICAgbHllbGxvdyxcclxuICAgIG1ibHVlLFxyXG4gICAgbWN5YW4sXHJcbiAgICBtZ3JlZW4sXHJcbiAgICBtbWFnZW50YSxcclxuICAgIG1yZWQsXHJcbiAgICBteWVsbG93LFxyXG4gIH0sXHJcbiAgY29sb3JzdHJpcCxcclxuICBjb21tYXMsXHJcbiAgd2hvbGVfd2l0cyxcclxuICB0b0ZpeGVkVHJ1bmMsXHJcbiAgY291bnRMZWF2ZXMsXHJcbiAgZXhlY1JhZG9uQnl0ZWNvZGUsXHJcbiAgZGVsZXRlRXh0cmFGbGFncyxcclxuICBleHRyYWN0RnJvbUFyZ3MsXHJcbiAgZnJvbUhleFN0cmluZyxcclxuICBpc0hleFN0cmluZyxcclxuICBpc0hleFN0cmluZ09mTGVuZ3RoLFxyXG4gIHRvSGV4U3RyaW5nLFxyXG4gIHBhcnNlVVJMLFxyXG4gIGlwSXNQcml2YXRlT3JMb2NhbGhvc3QsXHJcbiAgc2hvd1VzYWdlLFxyXG4gIHNob3dVc2FnZUVycm9yLFxyXG4gIHNob3dVc2FnZVN1YmNvbW1hbmQsXHJcbiAgc2hvd1ZlcnNpb24sXHJcbiAgdG9vbGtpdFJ1bixcclxuICB0b1VwcGVyQ2FtZWxDYXNlLFxyXG4gIHRvVXRmMTZCeXRlcyxcclxuICB0b1V0ZjhBcnJheSwgIFxyXG4gIHV0ZjhBcnJheVRvU3RyLFxyXG4gIHByb21wdCxcclxuICBwcm9tcHRlcixcclxuICB0cmFjZUNoZWNrbGlzdHMsXHJcbiAgdHJhY2VIZWFkZXIsXHJcbiAgdHJhY2VUYWJsZSxcclxuICB0cmFjZVRyYW5zYWN0aW9uLFxyXG4gIHRyYWNlVHJhbnNhY3Rpb25PblN0YXR1c0NoYW5nZSxcclxuICB0cmFjZVRyYW5zYWN0aW9uT25DaGVja3BvaW50LFxyXG4gIHRyYWNlVHJhbnNhY3Rpb25SZWNlaXB0LFxyXG4gIGNoZWNrUnBjV2lsZGNhcmRzLFxyXG4gIGlzV2lsZGNhcmQsXHJcbiAgZ2V0V2lsZGNhcmRzQ291bnRGcm9tU3RyaW5nLFxyXG4gIHJlcGxhY2VXaWxkY2FyZHMsXHJcbiAgc3BsaWNlV2lsZGNhcmQsXHJcbiAgdHhKc29uUmVwbGFjZXIsXHJcbn1cclxuIl19
|
|
@@ -17,7 +17,7 @@ export declare abstract class Transmitter<Specs, Payload extends ITransactionPay
|
|
|
17
17
|
get type(): string;
|
|
18
18
|
protected get _from(): Array<PublicKeyHashString> | undefined;
|
|
19
19
|
protected get _prepared(): boolean;
|
|
20
|
-
sendTransaction(target?:
|
|
20
|
+
sendTransaction(target?: Specs): Promise<TransactionReceipt>;
|
|
21
21
|
signTransaction(target?: Specs, reloadUtxos?: boolean): Promise<TransactionReceipt>;
|
|
22
22
|
confirmTransaction(hash: Hash, options?: {
|
|
23
23
|
confirmations?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transmitters.d.ts","sourceRoot":"","sources":["../../../../src/lib/crypto/transmitters.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqB,IAAI,IAAI,SAAS,EAAE,MAAM,YAAY,CAAA;AAKjE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAGxC,OAAO,EACH,OAAO,EACP,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,2BAA2B,EAC9B,MAAM,cAAc,CAAA;AAErB,OAAO,EACH,cAAc,EAEd,mBAAmB,EAEnB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EAEjB,YAAY,EAGf,MAAM,SAAS,CAAA;AAEhB,8BAAsB,WAAW,CAAC,KAAK,EAAE,OAAO,SAAS,mBAAmB,CAAC,KAAK,CAAC,CAAE,YAAW,YAAY;IAExG,SAAgB,MAAM,EAAE,OAAO,CAAC;IAChC,SAAgB,SAAS,EAAE,mBAAmB,CAAC;IAE/C,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC;IAC/B,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,cAAc,CAAC,CAAK;IACjD,SAAS,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,CAAK;gBAE5B,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,mBAAmB;IAatG,IAAW,OAAO,IAAI,OAAO,GAAG,SAAS,CAExC;IAED,IAAW,QAAQ,IAAI,gBAAgB,CAEtC;IAED,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED,IAAW,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,CAErC;IAED,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,SAAS,KAAK,KAAK,IAAI,KAAK,CAAC,mBAAmB,CAAC,GAAG,SAAS,CAa5D;IAED,SAAS,KAAK,SAAS,IAAI,OAAO,CAMjC;IAEY,eAAe,CAAC,MAAM,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"transmitters.d.ts","sourceRoot":"","sources":["../../../../src/lib/crypto/transmitters.ts"],"names":[],"mappings":"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"}
|
|
@@ -413,4 +413,4 @@ class TransmitterMultiSig extends Transmitter {
|
|
|
413
413
|
}
|
|
414
414
|
}
|
|
415
415
|
exports.TransmitterMultiSig = TransmitterMultiSig;
|
|
416
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNtaXR0ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jcnlwdG8vdHJhbnNtaXR0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUV4RCwyQ0FBaUU7QUFDakUsTUFBTSxTQUFTLEdBQUcsaUJBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLG1DQUFtQyxDQUFDLENBQUMsQ0FBQTtBQUdsRixnQ0FBd0M7QUFFeEMsb0NBQXVDO0FBVXZDLG1DQVlnQjtBQUVoQixNQUFzQixXQUFXO0lBVTdCLFlBQWEsYUFBcUIsRUFBRSxPQUFnQixFQUFFLE1BQWUsRUFBRSxTQUErQjtRQUg1RixnQkFBVyxHQUEwQixFQUFFLENBQUE7UUFDdkMsa0JBQWEsR0FBZ0IsRUFBRSxDQUFBO1FBR3JDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUNwRCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtRQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMzQixNQUFNLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSx5Q0FBeUMsQ0FBQyxDQUFBO1FBQ3RGLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFBO1FBQzlDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLCtDQUErQyxJQUFJLENBQUMsU0FBUyxH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SSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FDdkksQ0FBQztxQkFBTSxDQUFDO29CQUNMLGlFQUFpRTtvQkFDakUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO2dCQUNoRCxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUE7WUFDRixPQUFPLElBQUksQ0FBQTtRQUNmLENBQUM7SUFDTCxDQUFDO0lBRVMsT0FBTyxDQUFDLFFBQWlCO1FBQy9CLE9BQU87WUFDSCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDVCxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ2xELFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVzthQUMvQjtTQUNKLENBQUE7SUFDTCxDQUFDO0lBRVMsV0FBVztRQUNqQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQ3ZDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMzQixPQUFPO2dCQUNILElBQUk7Z0JBQ0osVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXO2FBQy9CLENBQUE7UUFDTCxDQUFDO0lBQ0wsQ0FBQztDQUNKO0FBckVELGtEQXFFQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHByb21pc2VQb2xsZXIgPSByZXF1aXJlKCdwcm9taXNlLXBvbGxlcicpLmRlZmF1bHQ7XHJcblxyXG5pbXBvcnQgeyBSb290IGFzIFByb3RvUm9vdCwgVHlwZSBhcyBQcm90b1R5cGUgfSBmcm9tIFwicHJvdG9idWZqc1wiXHJcbmNvbnN0IHByb3RvUm9vdCA9IFByb3RvUm9vdC5mcm9tSlNPTihyZXF1aXJlKFwiLi4vLi4vLi4vd2l0bmV0L3dpdG5ldC5wcm90by5qc29uXCIpKSBcclxuXHJcbmltcG9ydCB7IFRyYW5zYWN0aW9uUmVwb3J0LCBVdHhvTWV0YWRhdGEsIFZhbHVlVHJhbnNmZXJPdXRwdXQgfSBmcm9tIFwiLi4vcnBjL3R5cGVzXCJcclxuaW1wb3J0IHsgSnNvblJwY1Byb3ZpZGVyIH0gZnJvbSBcIi4uL3JwY1wiXHJcbmltcG9ydCB7IEhhc2gsIE5ldHdvcmsgfSBmcm9tIFwiLi4vdHlwZXNcIlxyXG5pbXBvcnQgeyBpc0hleFN0cmluZyB9IGZyb20gXCIuLi91dGlsc1wiO1xyXG5cclxuaW1wb3J0IHsgXHJcbiAgICBJTGVkZ2VyLFxyXG4gICAgSUpzb25ScGNQcm92aWRlciwgXHJcbiAgICBJVHJhbnNtaXR0ZXIsIFxyXG4gICAgSVRyYW5zYWN0aW9uUGF5bG9hZCwgXHJcbiAgICBJVHJhbnNhY3Rpb25QYXlsb2FkTXVsdGlTaWcsIFxyXG59IGZyb20gXCIuL2ludGVyZmFjZXNcIlxyXG5cclxuaW1wb3J0IHsgXHJcbiAgICBLZXllZFNpZ25hdHVyZSwgXHJcbiAgICBQdWJsaWNLZXksIFxyXG4gICAgUHVibGljS2V5SGFzaFN0cmluZywgXHJcbiAgICBNZW1wb29sRXJyb3IsXHJcbiAgICBUcmFuc2FjdGlvbkNhbGxiYWNrLCBcclxuICAgIFRyYW5zYWN0aW9uUmVjZWlwdCwgXHJcbiAgICBUcmFuc2FjdGlvblN0YXR1cywgXHJcbiAgICBUaW1lb3V0RXJyb3IsXHJcbiAgICBUcmFuc21pc3Npb24sXHJcbiAgICBUcmFuc21pc3Npb25FcnJvcixcclxuICAgIFV0eG8sXHJcbn0gZnJvbSBcIi4vdHlwZXNcIlxyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zbWl0dGVyPFNwZWNzLCBQYXlsb2FkIGV4dGVuZHMgSVRyYW5zYWN0aW9uUGF5bG9hZDxTcGVjcz4+IGltcGxlbWVudHMgSVRyYW5zbWl0dGVyIHtcclxuICAgIFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGxlZGdlcjogSUxlZGdlcjtcclxuICAgIHB1YmxpYyByZWFkb25seSBjaGFuZ2VQa2g6IFB1YmxpY0tleUhhc2hTdHJpbmc7XHJcbiAgICBcclxuICAgIHByb3RlY3RlZCBfcGF5bG9hZDogUGF5bG9hZDtcclxuICAgIHByb3RlY3RlZCBfcHJvdG9CdWY6IFByb3RvVHlwZTtcclxuICAgIHByb3RlY3RlZCBfc2lnbmF0dXJlczogQXJyYXk8S2V5ZWRTaWduYXR1cmU+ID0gW11cclxuICAgIHByb3RlY3RlZCBfdHJhbnNhY3Rpb25zOiBBcnJheTxIYXNoPiA9IFtdXHJcblxyXG4gICAgY29uc3RydWN0b3IgKHByb3RvVHlwZU5hbWU6IHN0cmluZywgcGF5bG9hZDogUGF5bG9hZCwgbGVkZ2VyOiBJTGVkZ2VyLCBjaGFuZ2VQa2g/OiBQdWJsaWNLZXlIYXNoU3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fcHJvdG9CdWYgPSBwcm90b1Jvb3QubG9va3VwVHlwZShwcm90b1R5cGVOYW1lKVxyXG4gICAgICAgIHRoaXMuX3BheWxvYWQgPSBwYXlsb2FkO1xyXG4gICAgICAgIHRoaXMubGVkZ2VyID0gbGVkZ2VyXHJcbiAgICAgICAgaWYgKCFsZWRnZXIucHJvdmlkZXIubmV0d29yaykge1xyXG4gICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogbGVkZ2VyJ3MgcHJvdmlkZXIgaXMgbm90IGluaXRpYWxpemVkLmApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2hhbmdlUGtoID0gY2hhbmdlUGtoIHx8IGxlZGdlci5jaGFuZ2VQa2hcclxuICAgICAgICBpZiAoIWxlZGdlci5nZXRTaWduZXIodGhpcy5jaGFuZ2VQa2gpKSB7XHJcbiAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBsZWRnZXIgaG9sZHMgbm8gU2lnbmVyIGZvciBjaGFuZ2UgYWRkcmVzcyAke3RoaXMuY2hhbmdlUGtofS5gKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHBheWxvYWQoKTogUGF5bG9hZCB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BheWxvYWQucHJlcGFyZWQgPyB0aGlzLl9wYXlsb2FkIDogdW5kZWZpbmVkXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBwcm92aWRlcigpOiBJSnNvblJwY1Byb3ZpZGVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5sZWRnZXIucHJvdmlkZXJcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IG5ldHdvcmsoKTogTmV0d29yayB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIubmV0d29yayB8fCBcIm1haW5uZXRcIlxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgdHJhbnNhY3Rpb25zKCk6IEFycmF5PEhhc2g+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb25zXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCB0eXBlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BheWxvYWQuY29uc3RydWN0b3IubmFtZS5zcGxpdCgvKFthLXpdKD89W0EtWl0pKS9nKS5zbGljZSgwLCAtMSkuam9pbihcIlwiKVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXQgX2Zyb20oKTogQXJyYXk8UHVibGljS2V5SGFzaFN0cmluZz4gfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGlmICh0aGlzLl9zaWduYXR1cmVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NpZ25hdHVyZXNcclxuICAgICAgICAgICAgICAgIC5tYXAoa3MgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBraCA9IFB1YmxpY0tleS5mcm9tUHJvdG9idWYoa3MucHVibGljX2tleSkuaGFzaCgpLnRvQmVjaDMyKHRoaXMubmV0d29yaylcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sZWRnZXIuZ2V0U2lnbmVyKHBraCk/LnBraCB8fCB0aGlzLmxlZGdlci5wa2hcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAvLyBhdm9pZCByZXBldGl0aW9uc1xyXG4gICAgICAgICAgICAgICAgLmZpbHRlcigocGtoLCBpbmRleCwgYXJyYXkpID0+IGluZGV4ID09PSBhcnJheS5pbmRleE9mKHBraCkpXHJcbiAgICAgICAgXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IF9wcmVwYXJlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICB0aGlzLl9wYXlsb2FkLnByZXBhcmVkXHJcbiAgICAgICAgICAgICAgICAmJiAhIXRoaXMuX3NpZ25hdHVyZXNcclxuICAgICAgICAgICAgICAgICYmIHRoaXMuX3NpZ25hdHVyZXMubGVuZ3RoID4gMFxyXG4gICAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgc2VuZFRyYW5zYWN0aW9uKHRhcmdldD86IGFueSk6IFByb21pc2U8VHJhbnNhY3Rpb25SZWNlaXB0PiB7XHJcbiAgICAgICAgbGV0IHJlY2VpcHQgPSB0aGlzLl9nZXRJbmZsaWdodFJlY2VpcHQoKVxyXG4gICAgICAgIGlmICghcmVjZWlwdCB8fCB0YXJnZXQpIHtcclxuICAgICAgICAgICAgLy8gaWYgaW5mbGlnaHQgbm90IHlldCBwcmVwYXJlZCwgb3IgcHJlcGFyZWQgYnV0IG5vdCB5ZXQgdHJhbnNtaXR0ZWQsXHJcbiAgICAgICAgICAgIC8vIHByZXBhcmUgYSBuZXcgaW5mbGlnaHQgZWl0aGVyIHdpdGggc3BlY2lmaWVkIHBhcmFtcyAoaWYgYW55KSxcclxuICAgICAgICAgICAgLy8gb3IgcHJldmlvdXNseSBwcmVwYXJlZCBpbmZsaWdodCAoaWYga25vd24pLlxyXG4gICAgICAgICAgICByZWNlaXB0ID0gYXdhaXQgdGhpcy5zaWduVHJhbnNhY3Rpb24odGFyZ2V0IHx8IHJlY2VpcHQpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyZWNlaXB0Py5zdGF0dXMgJiYgcmVjZWlwdC5zdGF0dXMgIT09IFwic2lnbmVkXCIgJiYgIXJlY2VpcHQ/LmVycm9yKSB7XHJcbiAgICAgICAgICAgIC8vIGlmIGN1cnJlbnQgaW5mbGlnaHQgd2FzIGFscmVhZHkgdHJhbnNtaXR0ZWQgYW5kIGl0J3Mgbm90IHlldCBrbm93biB0byBmYWlsIC4uLlxyXG4gICAgICAgICAgICByZXR1cm4gcmVjZWlwdFxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpZiB3ZSByZWFjaCB0aGlzIHBvaW50IGlzIGJlY2F1c2UgYW4gaW5mbGlnaHQgdHJhbnNhY3Rpb24gaXMgXHJcbiAgICAgICAgLy8gcmVhZHkgdG8gYmUgdHJhbnNtaXR0ZWRcclxuICAgICAgICBKc29uUnBjUHJvdmlkZXIucmVjZWlwdHNbcmVjZWlwdC5oYXNoXS5zdGF0dXMgPSBcInBlbmRpbmdcIlxyXG4gICAgICAgIGRlbGV0ZSBKc29uUnBjUHJvdmlkZXIucmVjZWlwdHNbcmVjZWlwdC5oYXNoXS5lcnJvclxyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3ZpZGVyXHJcbiAgICAgICAgICAgIC5zZW5kUmF3VHJhbnNhY3Rpb24odGhpcy5fdG9KU09OKGZhbHNlKSlcclxuICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBUcmFuc21pc3Npb25FcnJvcih0aGlzLl9nZXRJbmZsaWdodFRyYW5zbWlzc2lvbigpLCBlcnIpXHJcbiAgICAgICAgICAgICAgICBKc29uUnBjUHJvdmlkZXIucmVjZWlwdHNbcmVjZWlwdC5oYXNoXS5lcnJvciA9IGVycm9yXHJcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnJvclxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAudGhlbihhY2NlcHRlZCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYWNjZXB0ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBKc29uUnBjUHJvdmlkZXIucmVjZWlwdHNbcmVjZWlwdC5oYXNoXS5zdGF0dXMgPSBcInJlbGF5ZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBKc29uUnBjUHJvdmlkZXIucmVjZWlwdHNbcmVjZWlwdC5oYXNoXVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBUcmFuc21pc3Npb25FcnJvcih0aGlzLl9nZXRJbmZsaWdodFRyYW5zbWlzc2lvbigpLCBFcnJvcihgUmVqZWN0ZWQgZm9yIHVua25vd24gcmVhc29uc2ApKVxyXG4gICAgICAgICAgICAgICAgICAgIEpzb25ScGNQcm92aWRlci5yZWNlaXB0c1tyZWNlaXB0Lmhhc2hdLmVycm9yID0gZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvclxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBzaWduVHJhbnNhY3Rpb24odGFyZ2V0PzogU3BlY3MsIHJlbG9hZFV0eG9zID0gZmFsc2UpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVjZWlwdD4ge1xyXG4gICAgICAgIHRhcmdldCA9IGF3YWl0IHRoaXMuX3BheWxvYWQudmFsaWRhdGVUYXJnZXQodGFyZ2V0KVxyXG4gICAgICAgIGlmICghdGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIC8vIGUuZy4gaWYgY2FsbGVkIGZyb20gdGhpcy5zZW5kKCkgd2l0aCBubyBwYXJhbXNcclxuICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IGNhbm5vdCBzaWduIGEgdHJhbnNhY3Rpb24gaWYgbm8gcGFyYW1zIHdlcmUgcHJldmlvdXNseSBzcGVjaWZpZWQuYClcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgaW5mbGlnaHQgPSB0aGlzLl9nZXRJbmZsaWdodFJlY2VpcHQoKVxyXG4gICAgICAgIGlmIChpbmZsaWdodCkge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcInNpZ24ucGVuZGluZ1JlY2VpcHQgPT5cIiwgaW5mbGlnaHQpXHJcbiAgICAgICAgICAgIGlmICghaW5mbGlnaHQ/LnN0YXR1cyB8fCBpbmZsaWdodC5zdGF0dXMgPT09IFwic2lnbmVkXCIpIHtcclxuICAgICAgICAgICAgICAgIC8vIHJlY292ZXIgaW5wdXQgdXR4b3MgaWYgcHJldmlvdXNseSBzaWduZWQgcGFyYW1zIHdlcmUgbm90IGV2ZW4gYXR0ZW1wdGVkIHRvIGJlIHNlbnRcclxuICAgICAgICAgICAgICAgIGlmICghcmVsb2FkVXR4b3MpIHRoaXMuX3JlY292ZXJJbnB1dFV0eG9zKClcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5mbGlnaHQuc3RhdHVzID09PSBcInBlbmRpbmdcIiAmJiAhaW5mbGlnaHQuZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgIC8vIHRocm93IGV4Y2VwdGlvbiBpZiBhIGZvcm1lcmx5IHNpZ25lZCB0cmFuc2FjdGlvbiBpcyBzdGlsbCB3YWl0aW5nIHRvIGJlIHJlbGF5ZWQgYnkgYSBwcm92aWRlclxyXG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogaW4tZmxpZ2h0IHR4IGJlaW5nIHJlbGF5ZWQ6ICR7aW5mbGlnaHQuaGFzaH1gKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBcclxuICAgICAgICBcclxuICAgICAgICAvLyBjbGVhbiBjdXJyZW50IHNpZ25hdHVyZXMsIHNvIG5ldyBVVFhPcyBjYW4gYmUgY29uc3VtZWQgYW5kIHRoZXJlZm9yZSBhIG5ldyB0cmFuc2FjdGlvbiBoYXNoIGJlIGluY2VwdGVkXHJcbiAgICAgICAgdGhpcy5fY2xlYW5TaWduYXR1cmVzKHRhcmdldClcclxuICAgICAgICBcclxuICAgICAgICAvLyBpZiBub3QgeWV0IHByZXBhcmVkLCB0cnkgdG8gY292ZXIgdHJhbnNhY3Rpb24gZXhwZW5zZXMgd2l0aCBleGlzdGluZyB1dHhvcyBvbiBzaWduZXJzOlxyXG4gICAgICAgIGlmICghdGhpcy5fcGF5bG9hZC5wcmVwYXJlZCkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9wYXlsb2FkLmNvbnN1bWVVdHhvcyh0aGlzLmxlZGdlciwgcmVsb2FkVXR4b3MpXHJcbiAgICAgICAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFxyXG4gICAgICAgICAgICAgICAgICAgIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IGNhbm5vdCBjb25zdW1lIFVUWE9zIGZyb20gJHt0aGlzLmxlZGdlci5jb25zdHJ1Y3Rvci5uYW1lfSAke3RoaXMubGVkZ2VyLnBraH06ICR7ZXJyfS5gXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIH0pICBcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKCF0aGlzLl9wYXlsb2FkLnByZXBhcmVkKSB7XHJcbiAgICAgICAgICAgIC8vIHRocm93cyBleGVjZXB0aW9uIGlmIG5vdCBlbm91Z2ggdXR4b3Mgd2VyZSBmb3VuZCB0byBjb3ZlciB0cmFuc2FjdGlvbiBleHBlbnNlczpcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBpbnN1ZmZpY2llbnQgZnVuZHMgb24gJHt0aGlzLmxlZGdlci5jb25zdHJ1Y3Rvci5uYW1lfSAke3RoaXMubGVkZ2VyLnBraH0uYFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgfSBcclxuXHJcbiAgICAgICAgLy8gZG91YmxlLWNoZWNrIHdlaWdodCBkb2VzIG5vdCBleGNlZWRzIGJsb2NrIGxpbWl0Li4uXHJcbiAgICAgICAgaWYgKHRoaXMuX3BheWxvYWQud2VpZ2h0ID4gdGhpcy5fcGF5bG9hZC5tYXhXZWlnaHQpIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiB0cmFuc2FjdGlvbiB3ZWlnaHQgZXhjZWVkZWQgYmxvY2sgbGltaXQ6ICR7dGhpcy5fcGF5bG9hZC53ZWlnaHR9ID4gJHt0aGlzLl9wYXlsb2FkLm1heFdlaWdodH0uYFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBzaWduaW5nIHRoZSB0cmFuc2FjdGlvbiBwYXlsb2FkIGdlbmVyYXRlcyB0aGUgdHJhbnNhY3Rpb24gaGFzaCwgYW5kIHRoZSByZWNlaXB0XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Vwc2VydFRyYW5zYWN0aW9uUmVjZWlwdCh0aGlzLl9zaWduVHJhbnNhY3Rpb25QYXlsb2FkKCksIHRhcmdldCwgXCJzaWduZWRcIikgICAgXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGNvbmZpcm1UcmFuc2FjdGlvbihcclxuICAgICAgICBoYXNoOiBIYXNoLCBcclxuICAgICAgICBvcHRpb25zPzoge1xyXG4gICAgICAgICAgICBjb25maXJtYXRpb25zPzogbnVtYmVyLFxyXG4gICAgICAgICAgICB0aW1lb3V0U2Vjcz86IG51bWJlcixcclxuICAgICAgICAgICAgb25DaGVja3BvaW50PzogVHJhbnNhY3Rpb25DYWxsYmFjayxcclxuICAgICAgICAgICAgb25TdGF0dXNDaGFuZ2U/OiBUcmFuc2FjdGlvbkNhbGxiYWNrLFxyXG4gICAgICAgIH1cclxuICAgICk6IFByb21pc2U8VHJhbnNhY3Rpb25SZWNlaXB0PiB7XHJcblxyXG4gICAgICAgIGxldCByZWNlaXB0ID0gSnNvblJwY1Byb3ZpZGVyLnJlY2VpcHRzW2hhc2hdXHJcbiAgICAgICAgaWYgKCFyZWNlaXB0IHx8IHJlY2VpcHQuaGFzaCAhPT0gaGFzaCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogdHJhbnNhY3Rpb24gbm90IGZvdW5kOiAke2hhc2h9YClcclxuICAgICAgICBcclxuICAgICAgICB9IGVsc2UgaWYgKFtcInNpZ25lZFwiLCBcInBlbmRpbmdcIl0uaW5jbHVkZXMocmVjZWlwdC5zdGF0dXMpKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiB0cmFuc2FjdGlvbiBzdGF0dXMgXCIke3JlY2VpcHQuc3RhdHVzfVwiOiAke2hhc2h9YClcclxuICAgICAgICBcclxuICAgICAgICB9IGVsc2UgaWYgKHJlY2VpcHQuc3RhdHVzID09PSBcInJlbW92ZWRcIikge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgTWVtcG9vbEVycm9yKHJlY2VpcHQsIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IHRyYW5zYWN0aW9uIHJlbW92ZWQgZnJvbSBtZW1wb29sOiAke2hhc2h9YClcclxuICAgICAgICBcclxuICAgICAgICB9IGVsc2UgaWYgKHJlY2VpcHQuc3RhdHVzID09PSBcInJlbGF5ZWRcIiAmJiBvcHRpb25zPy5vblN0YXR1c0NoYW5nZSkgdHJ5IHtcclxuICAgICAgICAgICAgb3B0aW9ucy5vblN0YXR1c0NoYW5nZShyZWNlaXB0KVxyXG4gICAgICAgIH0gY2F0Y2gge307XHJcblxyXG4gICAgICAgIGNvbnN0IGdsb2JhbFRpbWVyID0gKHN0YXJ0OiBudW1iZXIsIG1zOiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoXHJcbiAgICAgICAgICAgICAgICAgICAgKCkgPT4gcmVqZWN0KGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IHBvbGxpbmcgdGltZW91dCBhZnRlciAke01hdGguZmxvb3IoKERhdGUubm93KCkgLSBzdGFydCkgLyAxMDAwKX0gc2VjcykuYCksIFxyXG4gICAgICAgICAgICAgICAgICAgIG1zXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IFtjb25maXJtYXRpb25zLCBpbnRlcnZhbCwgdGltZW91dCwgZ2xvYmFsVGltZW91dF0gPSBbXHJcbiAgICAgICAgICAgIG9wdGlvbnM/LmNvbmZpcm1hdGlvbnMgfHwgMCxcclxuICAgICAgICAgICAgMTAwMDAsXHJcbiAgICAgICAgICAgIDUwMDAsXHJcbiAgICAgICAgICAgIChvcHRpb25zPy50aW1lb3V0U2VjcyB8fCA2MDApICogMTAwMCxcclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yYWNlKFtcclxuICAgICAgICAgICAgZ2xvYmFsVGltZXIoRGF0ZS5ub3coKSwgZ2xvYmFsVGltZW91dClcclxuICAgICAgICAgICAgICAgIC5jYXRjaCgocmVhc29uOiBhbnkpID0+IHsgdGhyb3cgbmV3IFRpbWVvdXRFcnJvcihnbG9iYWxUaW1lb3V0LCByZWNlaXB0LCByZWFzb24pIH0pLFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgcHJvbWlzZVBvbGxlcih7XHJcbiAgICAgICAgICAgICAgICB0YXNrRm46ICgpID0+IHRoaXMucHJvdmlkZXIuZ2V0VHJhbnNhY3Rpb24oaGFzaCksXHJcbiAgICAgICAgICAgICAgICBzaG91bGRDb250aW51ZTogKGVycm9yOiBhbnksIHJlcG9ydDogVHJhbnNhY3Rpb25SZXBvcnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGF0dXMgPSByZWNlaXB0LnN0YXR1c1xyXG4gICAgICAgICAgICAgICAgICAgIHJlY2VpcHQuZXJyb3IgPSBlcnJvclxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmIGVycm9yLm1lc3NhZ2UuaW5kZXhPZihcIm5vdCBmb3VuZFwiKSA+PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpcHQuc3RhdHVzID0gXCJyZW1vdmVkXCJcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugc3dpdGNoIChyZWNlaXB0LnN0YXR1cykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwicmVsYXllZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcG9ydD8uYmxvY2tIYXNoICYmIGlzSGV4U3RyaW5nKHJlcG9ydC5ibG9ja0hhc2gpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC5jb25maXJtYXRpb25zID0gcmVwb3J0LmNvbmZpcm1hdGlvbnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXB0LmJsb2NrSGFzaCA9IHJlcG9ydC5ibG9ja0hhc2gsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC5ibG9ja0Vwb2NoID0gcmVwb3J0LmJsb2NrRXBvY2gsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC5ibG9ja1RpbWVzdGFtcCA9IHJlcG9ydC5ibG9ja1RpbWVzdGFtcFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpcHQuc3RhdHVzID0gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvcnQuY29uZmlybWVkIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcImZpbmFsaXplZFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAocmVwb3J0Py5jb25maXJtYXRpb25zID49IGNvbmZpcm1hdGlvbnMgPyBcImNvbmZpcm1lZFwiIDogXCJtaW5lZFwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJtaW5lZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXBvcnQ/LmJsb2NrSGFzaCB8fCByZXBvcnQuYmxvY2tIYXNoICE9PSByZWNlaXB0LmJsb2NrSGFzaCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByZWNlaXB0LmJsb2NrSGFzaFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByZWNlaXB0LmJsb2NrRXBvY2hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgcmVjZWlwdC5ibG9ja01pbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlY2VpcHQuYmxvY2tUaW1lc3RhbXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXB0LnN0YXR1cyA9IFwicmVsYXllZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC5zdGF0dXMgPSAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydC5jb25maXJtZWQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiZmluYWxpemVkXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChyZXBvcnQ/LmNvbmZpcm1hdGlvbnMgPj0gY29uZmlybWF0aW9ucyA/IFwiY29uZmlybWVkXCIgOiBcIm1pbmVkXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVwb3J0Py5jb25maXJtYXRpb25zICE9PSByZWNlaXB0LmNvbmZpcm1hdGlvbnMpIHsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpcHQuY29uZmlybWF0aW9ucyA9IHJlcG9ydC5jb25maXJtYXRpb25zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWNlaXB0LnN0YXR1cyA9PT0gXCJtaW5lZFwiICYmIG9wdGlvbnM/Lm9uQ2hlY2twb2ludCkgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMub25DaGVja3BvaW50KHJlY2VpcHQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gge307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAhPT0gcmVjZWlwdC5zdGF0dXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC50aW1lc3RhbXAgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFbXCJjb25maXJtZWRcIiwgXCJmaW5hbGl6ZWRcIl0uaW5jbHVkZXMocmVjZWlwdC5zdGF0dXMpICYmIG9wdGlvbnM/Lm9uU3RhdHVzQ2hhbmdlKSB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5vblN0YXR1c0NoYW5nZShyZWNlaXB0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHt9O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBKc29uUnBjUHJvdmlkZXIucmVjZWlwdHNbaGFzaF0gPSByZWNlaXB0XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcInJlbGF5ZWRcIiwgXCJtaW5lZFwiXS5pbmNsdWRlcyhyZWNlaXB0LnN0YXR1cylcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBpbnRlcnZhbCwgdGltZW91dCwgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9KS50aGVuKGFzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZWNlaXB0LnN0YXR1cyA9PT0gXCJyZW1vdmVkXCIgJiYgcmVjZWlwdC50eXBlICE9PSBcIlVuc3Rha2VcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFRSQU5TQUNUSU9OIFJFTU9WRUQgRlJPTSBNRU1QT09MIC8vXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gMS4gVHJ5IHRvIHJlY292ZXIgaW5wdXQgdXR4b3MgYmVsb25naW5nIHRvIGxlZGdlcidzIGFkZHJlc3NlczpcclxuICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dHM6IEFycmF5PFV0eG9NZXRhZGF0YT4gPSByZWNlaXB0LnR4W3JlY2VpcHQudHlwZV0uYm9keS5pbnB1dHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2lnbmF0dXJlczogQXJyYXk8S2V5ZWRTaWduYXR1cmU+ID0gcmVjZWlwdC50eFtyZWNlaXB0LnR5cGVdLnNpZ25hdHVyZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXR4b3M6IEFycmF5PFV0eG8+ID0gW11cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0cy5sZW5ndGggPT09IHNpZ25hdHVyZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dHMuZm9yRWFjaCgobWV0YWRhdGEsIGluZGV4KSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLm1ldGFkYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lcjogUHVibGljS2V5LmZyb21Qcm90b2J1ZihzaWduYXR1cmVzW2luZGV4XS5wdWJsaWNfa2V5KS5oYXNoKCkudG9CZWNoMzIodGhpcy5uZXR3b3JrKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGVkZ2VyLmFkZFV0eG9zKC4uLnV0eG9zKVxyXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IHdhcm5pbmc6IGNhbm5vdCByZWNvdmVyIGlucHV0IFVUWE9TIGZyb20gdHggJHtoYXNofTogJHtlcnJ9YClcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gMi4gVGhyb3cgTWVtcG9vbEVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE1lbXBvb2xFcnJvcihyZWNlaXB0LCBgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiB0cmFuc2FjdGlvbiByZW1vdmVkIGZyb20gbWVtcG9vbDogJHtoYXNofWApO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFRSQU5TQUNUSU9OIEVJVEhFUiBDT05GSVJNRUQgT1IgRklOQUxJWkVEIC8vXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gMS4gVHJ5IHRvIGxvYWQgdmFsdWUgdHJhbnNmZXIgb3V0cHV0cyBpbnRvIHRoZSBsZWRnZXIncyBsb2NhbCBjYWNoZTogXHJcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXR4b3M6IEFycmF5PFV0eG8+ID0gW11cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFtcIlN0YWtlXCIsIFwiVW5zdGFrZVwiXS5pbmNsdWRlcyhyZWNlaXB0LnR5cGUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdnRvOiBWYWx1ZVRyYW5zZmVyT3V0cHV0ID0gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpcHQudHlwZSA9PT0gXCJTdGFrZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcmVjZWlwdC50eFtyZWNlaXB0LnR5cGVdLmJvZHk/Lm91dHB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHJlY2VpcHQudHhbcmVjZWlwdC50eXBlXS5ib2R5Py53aXRoZHJhd2FsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZ0bykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0eG9zLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfcG9pbnRlcjogYCR7cmVjZWlwdC5oYXNofTowYCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZWxvY2s6IHZ0by50aW1lX2xvY2ssXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0eG9fbWF0dXJlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogQmlnSW50KHZ0by52YWx1ZSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lcjogdnRvLnBraCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3V0cHV0czogQXJyYXk8VmFsdWVUcmFuc2Zlck91dHB1dD4gPSByZWNlaXB0LnR4W3JlY2VpcHQudHlwZV0uYm9keT8ub3V0cHV0cyB8fCBbXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0cy5mb3JFYWNoKCh2dG8sIGluZGV4KSA9PiB1dHhvcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfcG9pbnRlcjogYCR7cmVjZWlwdC5oYXNofToke2luZGV4fWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZWxvY2s6IHZ0by50aW1lX2xvY2ssXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXR4b19tYXR1cmU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEJpZ0ludCh2dG8udmFsdWUpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lcjogdnRvLnBraCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwib3V0cHV0IHV0eG9zIGJlZm9yZSA9PlwiLCB1dHhvcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJvdXRwdXQgdXR4b3MgYWZ0ZXIgID0+XCIsIHRoaXMubGVkZ2VyLmFkZFV0eG9zKC4uLnV0eG9zKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sZWRnZXIuYWRkVXR4b3MoLi4udXR4b3MpXHJcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogd2FybmluZzogY2Fubm90IHJlY292ZXIgb3V0cHV0IFVUWE9zIGZyb20gJHtoYXNofTogJHtlcnJ9YClcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gMi4gQWRkIGJsb2NrTWluZXIgYWRkcmVzcyB0byB0aGUgdHJhbnNhY3Rpb24gcmVjZWlwdDogXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlY2VpcHQ/LmJsb2NrSGFzaCAmJiBpc0hleFN0cmluZyhyZWNlaXB0LmJsb2NrSGFzaCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2sgPSBhd2FpdCB0aGlzLnByb3ZpZGVyLmdldEJsb2NrKHJlY2VpcHQuYmxvY2tIYXNoIHx8IFwiXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEpzb25ScGNQcm92aWRlci5yZWNlaXB0c1toYXNoXS5ibG9ja01pbmVyID0gUHVibGljS2V5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZnJvbVByb3RvYnVmKGJsb2NrLmJsb2NrX3NpZy5wdWJsaWNfa2V5KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmhhc2goKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRvQmVjaDMyKHRoaXMubmV0d29yayk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zPy5vblN0YXR1c0NoYW5nZSkgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5vblN0YXR1c0NoYW5nZShyZWNlaXB0KVxyXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gge307XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gMy4gUmV0dXJuIHRyYW5zYWN0aW9uIHJlY2VpcHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpzb25ScGNQcm92aWRlci5yZWNlaXB0c1toYXNoXVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIF0pXHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF9jbGVhblNpZ25hdHVyZXMobmV3VGFyZ2V0OiBTcGVjcyk6IGFueSB7XHJcbiAgICAgICAgdGhpcy5fcGF5bG9hZC5yZXNldFRhcmdldChuZXdUYXJnZXQpXHJcbiAgICAgICAgdGhpcy5fc2lnbmF0dXJlcyA9IFtdXHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF9nZXRJbmZsaWdodEJ5dGVjb2RlKCk6IFVpbnQ4QXJyYXkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IG9iaiA9IHRoaXMuX3RvUHJvdG9idWYoKVxyXG4gICAgICAgIGNvbnN0IGVyciA9IHRoaXMuX3Byb3RvQnVmLnZlcmlmeShvYmopXHJcbiAgICAgICAgaWYgKCFlcnIpIHtcclxuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMuX3Byb3RvQnVmLmZyb21PYmplY3Qob2JqKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcHJvdG9CdWYuZW5jb2RlKG1lc3NhZ2UpLmZpbmlzaCgpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX2dldEluZmxpZ2h0UmVjZWlwdCgpOiBUcmFuc2FjdGlvblJlY2VpcHQgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IGhhc2ggPSB0aGlzLl9wYXlsb2FkLmhhc2hcclxuICAgICAgICBpZiAoaGFzaCkge1xyXG4gICAgICAgICAgICByZXR1cm4gSnNvblJwY1Byb3ZpZGVyLnJlY2VpcHRzW2hhc2hdXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX2dldEluZmxpZ2h0VHJhbnNtaXNzaW9uKCk6IFRyYW5zbWlzc2lvbiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgYnl0ZWNvZGU6IHRoaXMuX2dldEluZmxpZ2h0Qnl0ZWNvZGUoKSxcclxuICAgICAgICAgICAgaGFzaDogdGhpcy5fcGF5bG9hZC5oYXNoLFxyXG4gICAgICAgICAgICBtZXNzYWdlOiB0aGlzLl90b0pTT04odHJ1ZSksXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfcmVjb3ZlcklucHV0VXR4b3MoKTogYW55IHt9XHJcbiAgICBwcm90ZWN0ZWQgX3JlY292ZXJPdXRwdXRVdHhvcygpOiBhbnkge31cclxuXHJcbiAgICBwcm90ZWN0ZWQgX3Vwc2VydFRyYW5zYWN0aW9uUmVjZWlwdChoYXNoOiBIYXNoLCB0YXJnZXQ6IFNwZWNzLCBzdGF0dXM6IFRyYW5zYWN0aW9uU3RhdHVzKTogVHJhbnNhY3Rpb25SZWNlaXB0IHtcclxuICAgICAgICBKc29uUnBjUHJvdmlkZXIucmVjZWlwdHNbaGFzaF0gPSB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuX3BheWxvYWQuaW50b1JlY2VpcHQodGFyZ2V0LCB0aGlzLm5ldHdvcmspLFxyXG4gICAgICAgICAgICBoYXNoLFxyXG4gICAgICAgICAgICBjaGFuZ2U6IHRoaXMuX3BheWxvYWQuY2hhbmdlLFxyXG4gICAgICAgICAgICBmZWVzOiB0aGlzLl9wYXlsb2FkLmZlZXMsXHJcbiAgICAgICAgICAgIGZyb206IHRoaXMuX2Zyb20sXHJcbiAgICAgICAgICAgIHN0YXR1cyxcclxuICAgICAgICAgICAgdGltZXN0YW1wOiBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSxcclxuICAgICAgICAgICAgdHg6IHRoaXMuX3RvSlNPTih0cnVlKSxcclxuICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlLFxyXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5fcGF5bG9hZC52YWx1ZSxcclxuICAgICAgICAgICAgd2VpZ2h0OiB0aGlzLl9wYXlsb2FkLndlaWdodCxcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIEpzb25ScGNQcm92aWRlci5yZWNlaXB0c1toYXNoXVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBfc2lnblRyYW5zYWN0aW9uUGF5bG9hZCgpOiBIYXNoO1xyXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IF90b0pTT04oX2h1bWFuaXplOiBib29sZWFuKTogYW55O1xyXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IF90b1Byb3RvYnVmKCk6IGFueTtcclxufVxyXG5cclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUcmFuc21pdHRlck11bHRpU2lnPFNwZWNzLCBQYXlsb2FkIGV4dGVuZHMgSVRyYW5zYWN0aW9uUGF5bG9hZE11bHRpU2lnPFNwZWNzPj4gXHJcbiAgICBleHRlbmRzIFRyYW5zbWl0dGVyPFNwZWNzLCBQYXlsb2FkPiBcclxue1xyXG4gICAgY29uc3RydWN0b3IgKHByb3RvVHlwZU5hbWU6IHN0cmluZywgcGF5bG9hZDogUGF5bG9hZCwgbGVkZ2VyOiBJTGVkZ2VyLCBjaGFuZ2VQa2g/OiBQdWJsaWNLZXlIYXNoU3RyaW5nKSB7XHJcbiAgICAgICAgc3VwZXIocHJvdG9UeXBlTmFtZSwgcGF5bG9hZCwgbGVkZ2VyLCBjaGFuZ2VQa2gpXHJcbiAgICAgICAgdGhpcy5fcGF5bG9hZCA9IHBheWxvYWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLy8vIFJlY292ZXIgZm9ybWVybHkgY29uc3VtZWQgVVRYT3MgYnkgYSBmYWlsaW5nIHRyYW5zYWN0aW9uIGJhY2sgdG8gdGhlaXIgcmVzcGVjdGl2ZSBzaWduZXIncyBVVFhPIHBvb2xcclxuICAgIHByb3RlY3RlZCBfcmVjb3ZlcklucHV0VXR4b3MoKTogYW55IHtcclxuICAgICAgICBpZiAodGhpcy5fcGF5bG9hZC5pbnB1dHMpIHsgICAgXHJcbiAgICAgICAgICAgIHRoaXMubGVkZ2VyLmFkZFV0eG9zKC4uLnRoaXMuX3BheWxvYWQuaW5wdXRzKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLy8gUmVjb3ZlciBzZWxmLXRhcmdldGVkIG91dHB1dHMgYXMgZXhwZW5kYWJsZSB1dHhvcyBvbiB0aGVpciByZXNwZWN0aXZlIHNpZ25lcidzIG1lbW9pemVkIGNhY2hlXHJcbiAgICBwcm90ZWN0ZWQgX3JlY292ZXJPdXRwdXRVdHhvcygpOiBhbnkge1xyXG4gICAgICAgIGlmICh0aGlzLl9wYXlsb2FkLmhhc2ggJiYgdGhpcy5fcGF5bG9hZC5vdXRwdXRzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHV0eG9zOiBBcnJheTxVdHhvPiA9IFtdXHJcbiAgICAgICAgICAgIHRoaXMuX3BheWxvYWQub3V0cHV0cy5mb3JFYWNoKCh2dG8sIGluZGV4KSA9PiB7ICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubGVkZ2VyLmdldFNpZ25lcih2dG8ucGtoKSkgdXR4b3MucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgc2lnbmVyOiB2dG8ucGtoLFxyXG4gICAgICAgICAgICAgICAgICAgIG91dHB1dF9wb2ludGVyOiBgJHt0aGlzLl9wYXlsb2FkLmhhc2h9OiR7aW5kZXh9YCxcclxuICAgICAgICAgICAgICAgICAgICB0aW1lbG9jazogdnRvLnRpbWVfbG9jayxcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdnRvLnZhbHVlLFxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGhpcy5sZWRnZXIuYWRkVXR4b3MoLi4udXR4b3MpXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfc2lnblRyYW5zYWN0aW9uUGF5bG9hZCgpOiBIYXNoIHtcclxuICAgICAgICBjb25zdCBoYXNoID0gdGhpcy5fcGF5bG9hZC5oYXNoXHJcbiAgICAgICAgaWYgKCFoYXNoKSB7XHJcbiAgICAgICAgICAgIHRocm93IEVycm9yKFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogaW50ZXJuYWwgZXJyb3I6IHVuYWJsZSB0byBoYXNoaWZ5IHBheWxvYWQ6ICR7dGhpcy5fcGF5bG9hZC50b0pTT04odHJ1ZSwgdGhpcy5uZXR3b3JrKX19LmBcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3BheWxvYWQuaW5wdXRzLmZvckVhY2godXR4byA9PiB7IFxyXG4gICAgICAgICAgICAgICAgY29uc3Qgc2lnbmVyID0gdGhpcy5sZWRnZXIuZ2V0U2lnbmVyKHV0eG8uc2lnbmVyKVxyXG4gICAgICAgICAgICAgICAgaWYgKCFzaWduZXIpIHRocm93IEVycm9yKFxyXG4gICAgICAgICAgICAgICAgICAgIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IGludGVybmFsIGVycm9yOiBjYW5ub3QgZmluZCBTaWduZXIgJHt1dHhvLnNpZ25lcn0gaW4gJHt0aGlzLmxlZGdlci5jb25zdHJ1Y3Rvci5uYW1lfSAke3RoaXMubGVkZ2VyLnBraH0uYCAgICBcclxuICAgICAgICAgICAgICAgICk7IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGAuLi5zaWduZXIgJHtzaWduZXIucGtofSBzaWduaW5nIGhhc2ggJHtoYXNofS4uLmApXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2lnbmF0dXJlcy5wdXNoKHNpZ25lci5zaWduSGFzaChoYXNoKSkgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHJldHVybiBoYXNoXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfdG9KU09OKGh1bWFuaXplOiBib29sZWFuKTogYW55IHtcclxuICAgICAgICByZXR1cm4geyBcclxuICAgICAgICAgICAgW3RoaXMudHlwZV06IHsgXHJcbiAgICAgICAgICAgICAgICBib2R5OiB0aGlzLl9wYXlsb2FkLnRvSlNPTihodW1hbml6ZSwgdGhpcy5uZXR3b3JrKSxcclxuICAgICAgICAgICAgICAgIHNpZ25hdHVyZXM6IHRoaXMuX3NpZ25hdHVyZXMsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfdG9Qcm90b2J1ZigpOiBhbnkge1xyXG4gICAgICAgIGNvbnN0IGJvZHkgPSB0aGlzLl9wYXlsb2FkLnRvUHJvdG9idWYoKVxyXG4gICAgICAgIGlmIChib2R5ICYmIHRoaXMuX3NpZ25hdHVyZXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGJvZHksXHJcbiAgICAgICAgICAgICAgICBzaWduYXR1cmVzOiB0aGlzLl9zaWduYXR1cmVzLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
416
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNtaXR0ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jcnlwdG8vdHJhbnNtaXR0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUV4RCwyQ0FBaUU7QUFDakUsTUFBTSxTQUFTLEdBQUcsaUJBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLG1DQUFtQyxDQUFDLENBQUMsQ0FBQTtBQUdsRixnQ0FBd0M7QUFFeEMsb0NBQXVDO0FBVXZDLG1DQVlnQjtBQUVoQixNQUFzQixXQUFXO0lBVTdCLFlBQWEsYUFBcUIsRUFBRSxPQUFnQixFQUFFLE1BQWUsRUFBRSxTQUErQjtRQUg1RixnQkFBVyxHQUEwQixFQUFFLENBQUE7UUFDdkMsa0JBQWEsR0FBZ0IsRUFBRSxDQUFBO1FBR3JDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUNwRCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtRQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMzQixNQUFNLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSx5Q0FBeUMsQ0FBQyxDQUFBO1FBQ3RGLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFBO1FBQzlDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLCtDQUErQyxJQUFJLENBQUMsU0FBUyxH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QUksQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQ3ZJLENBQUM7cUJBQU0sQ0FBQztvQkFDTCxpRUFBaUU7b0JBQ2pFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtnQkFDaEQsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFBO1lBQ0YsT0FBTyxJQUFJLENBQUE7UUFDZixDQUFDO0lBQ0wsQ0FBQztJQUVTLE9BQU8sQ0FBQyxRQUFpQjtRQUMvQixPQUFPO1lBQ0gsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ1QsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUNsRCxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVc7YUFDL0I7U0FDSixDQUFBO0lBQ0wsQ0FBQztJQUVTLFdBQVc7UUFDakIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUN2QyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDM0IsT0FBTztnQkFDSCxJQUFJO2dCQUNKLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVzthQUMvQixDQUFBO1FBQ0wsQ0FBQztJQUNMLENBQUM7Q0FDSjtBQXJFRCxrREFxRUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBwcm9taXNlUG9sbGVyID0gcmVxdWlyZSgncHJvbWlzZS1wb2xsZXInKS5kZWZhdWx0O1xyXG5cclxuaW1wb3J0IHsgUm9vdCBhcyBQcm90b1Jvb3QsIFR5cGUgYXMgUHJvdG9UeXBlIH0gZnJvbSBcInByb3RvYnVmanNcIlxyXG5jb25zdCBwcm90b1Jvb3QgPSBQcm90b1Jvb3QuZnJvbUpTT04ocmVxdWlyZShcIi4uLy4uLy4uL3dpdG5ldC93aXRuZXQucHJvdG8uanNvblwiKSkgXHJcblxyXG5pbXBvcnQgeyBUcmFuc2FjdGlvblJlcG9ydCwgVXR4b01ldGFkYXRhLCBWYWx1ZVRyYW5zZmVyT3V0cHV0IH0gZnJvbSBcIi4uL3JwYy90eXBlc1wiXHJcbmltcG9ydCB7IEpzb25ScGNQcm92aWRlciB9IGZyb20gXCIuLi9ycGNcIlxyXG5pbXBvcnQgeyBIYXNoLCBOZXR3b3JrIH0gZnJvbSBcIi4uL3R5cGVzXCJcclxuaW1wb3J0IHsgaXNIZXhTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbHNcIjtcclxuXHJcbmltcG9ydCB7IFxyXG4gICAgSUxlZGdlcixcclxuICAgIElKc29uUnBjUHJvdmlkZXIsIFxyXG4gICAgSVRyYW5zbWl0dGVyLCBcclxuICAgIElUcmFuc2FjdGlvblBheWxvYWQsIFxyXG4gICAgSVRyYW5zYWN0aW9uUGF5bG9hZE11bHRpU2lnLCBcclxufSBmcm9tIFwiLi9pbnRlcmZhY2VzXCJcclxuXHJcbmltcG9ydCB7IFxyXG4gICAgS2V5ZWRTaWduYXR1cmUsIFxyXG4gICAgUHVibGljS2V5LCBcclxuICAgIFB1YmxpY0tleUhhc2hTdHJpbmcsIFxyXG4gICAgTWVtcG9vbEVycm9yLFxyXG4gICAgVHJhbnNhY3Rpb25DYWxsYmFjaywgXHJcbiAgICBUcmFuc2FjdGlvblJlY2VpcHQsIFxyXG4gICAgVHJhbnNhY3Rpb25TdGF0dXMsIFxyXG4gICAgVGltZW91dEVycm9yLFxyXG4gICAgVHJhbnNtaXNzaW9uLFxyXG4gICAgVHJhbnNtaXNzaW9uRXJyb3IsXHJcbiAgICBVdHhvLFxyXG59IGZyb20gXCIuL3R5cGVzXCJcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUcmFuc21pdHRlcjxTcGVjcywgUGF5bG9hZCBleHRlbmRzIElUcmFuc2FjdGlvblBheWxvYWQ8U3BlY3M+PiBpbXBsZW1lbnRzIElUcmFuc21pdHRlciB7XHJcbiAgICBcclxuICAgIHB1YmxpYyByZWFkb25seSBsZWRnZXI6IElMZWRnZXI7XHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgY2hhbmdlUGtoOiBQdWJsaWNLZXlIYXNoU3RyaW5nO1xyXG4gICAgXHJcbiAgICBwcm90ZWN0ZWQgX3BheWxvYWQ6IFBheWxvYWQ7XHJcbiAgICBwcm90ZWN0ZWQgX3Byb3RvQnVmOiBQcm90b1R5cGU7XHJcbiAgICBwcm90ZWN0ZWQgX3NpZ25hdHVyZXM6IEFycmF5PEtleWVkU2lnbmF0dXJlPiA9IFtdXHJcbiAgICBwcm90ZWN0ZWQgX3RyYW5zYWN0aW9uczogQXJyYXk8SGFzaD4gPSBbXVxyXG5cclxuICAgIGNvbnN0cnVjdG9yIChwcm90b1R5cGVOYW1lOiBzdHJpbmcsIHBheWxvYWQ6IFBheWxvYWQsIGxlZGdlcjogSUxlZGdlciwgY2hhbmdlUGtoPzogUHVibGljS2V5SGFzaFN0cmluZykge1xyXG4gICAgICAgIHRoaXMuX3Byb3RvQnVmID0gcHJvdG9Sb290Lmxvb2t1cFR5cGUocHJvdG9UeXBlTmFtZSlcclxuICAgICAgICB0aGlzLl9wYXlsb2FkID0gcGF5bG9hZDtcclxuICAgICAgICB0aGlzLmxlZGdlciA9IGxlZGdlclxyXG4gICAgICAgIGlmICghbGVkZ2VyLnByb3ZpZGVyLm5ldHdvcmspIHtcclxuICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IGxlZGdlcidzIHByb3ZpZGVyIGlzIG5vdCBpbml0aWFsaXplZC5gKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNoYW5nZVBraCA9IGNoYW5nZVBraCB8fCBsZWRnZXIuY2hhbmdlUGtoXHJcbiAgICAgICAgaWYgKCFsZWRnZXIuZ2V0U2lnbmVyKHRoaXMuY2hhbmdlUGtoKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogbGVkZ2VyIGhvbGRzIG5vIFNpZ25lciBmb3IgY2hhbmdlIGFkZHJlc3MgJHt0aGlzLmNoYW5nZVBraH0uYClcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBwYXlsb2FkKCk6IFBheWxvYWQgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9wYXlsb2FkLnByZXBhcmVkID8gdGhpcy5fcGF5bG9hZCA6IHVuZGVmaW5lZFxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgcHJvdmlkZXIoKTogSUpzb25ScGNQcm92aWRlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubGVkZ2VyLnByb3ZpZGVyXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBuZXR3b3JrKCk6IE5ldHdvcmsge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3ZpZGVyLm5ldHdvcmsgfHwgXCJtYWlubmV0XCJcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHRyYW5zYWN0aW9ucygpOiBBcnJheTxIYXNoPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uc1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgdHlwZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9wYXlsb2FkLmNvbnN0cnVjdG9yLm5hbWUuc3BsaXQoLyhbYS16XSg/PVtBLVpdKSkvZykuc2xpY2UoMCwgLTEpLmpvaW4oXCJcIilcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IF9mcm9tKCk6IEFycmF5PFB1YmxpY0tleUhhc2hTdHJpbmc+IHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBpZiAodGhpcy5fc2lnbmF0dXJlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zaWduYXR1cmVzXHJcbiAgICAgICAgICAgICAgICAubWFwKGtzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwa2ggPSBQdWJsaWNLZXkuZnJvbVByb3RvYnVmKGtzLnB1YmxpY19rZXkpLmhhc2goKS50b0JlY2gzMih0aGlzLm5ldHdvcmspXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubGVkZ2VyLmdldFNpZ25lcihwa2gpPy5wa2ggfHwgdGhpcy5sZWRnZXIucGtoXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLy8gYXZvaWQgcmVwZXRpdGlvbnNcclxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHBraCwgaW5kZXgsIGFycmF5KSA9PiBpbmRleCA9PT0gYXJyYXkuaW5kZXhPZihwa2gpKVxyXG4gICAgICAgIFxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldCBfcHJlcGFyZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgdGhpcy5fcGF5bG9hZC5wcmVwYXJlZFxyXG4gICAgICAgICAgICAgICAgJiYgISF0aGlzLl9zaWduYXR1cmVzXHJcbiAgICAgICAgICAgICAgICAmJiB0aGlzLl9zaWduYXR1cmVzLmxlbmd0aCA+IDBcclxuICAgICAgICApXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIHNlbmRUcmFuc2FjdGlvbih0YXJnZXQ/OiBTcGVjcyk6IFByb21pc2U8VHJhbnNhY3Rpb25SZWNlaXB0PiB7XHJcbiAgICAgICAgbGV0IHJlY2VpcHQgPSB0aGlzLl9nZXRJbmZsaWdodFJlY2VpcHQoKVxyXG4gICAgICAgIGlmICghcmVjZWlwdCB8fCB0YXJnZXQpIHtcclxuICAgICAgICAgICAgLy8gaWYgaW5mbGlnaHQgbm90IHlldCBwcmVwYXJlZCwgb3IgcHJlcGFyZWQgYnV0IG5vdCB5ZXQgdHJhbnNtaXR0ZWQsXHJcbiAgICAgICAgICAgIC8vIHByZXBhcmUgYSBuZXcgaW5mbGlnaHQgZWl0aGVyIHdpdGggc3BlY2lmaWVkIHBhcmFtcyAoaWYgYW55KSxcclxuICAgICAgICAgICAgLy8gb3IgcHJldmlvdXNseSBwcmVwYXJlZCBpbmZsaWdodCAoaWYga25vd24pLlxyXG4gICAgICAgICAgICByZWNlaXB0ID0gYXdhaXQgdGhpcy5zaWduVHJhbnNhY3Rpb24odGFyZ2V0IHx8IHJlY2VpcHQgYXMgU3BlY3MpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyZWNlaXB0Py5zdGF0dXMgJiYgcmVjZWlwdC5zdGF0dXMgIT09IFwic2lnbmVkXCIgJiYgIXJlY2VpcHQ/LmVycm9yKSB7XHJcbiAgICAgICAgICAgIC8vIGlmIGN1cnJlbnQgaW5mbGlnaHQgd2FzIGFscmVhZHkgdHJhbnNtaXR0ZWQgYW5kIGl0J3Mgbm90IHlldCBrbm93biB0byBmYWlsIC4uLlxyXG4gICAgICAgICAgICByZXR1cm4gcmVjZWlwdFxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpZiB3ZSByZWFjaCB0aGlzIHBvaW50IGlzIGJlY2F1c2UgYW4gaW5mbGlnaHQgdHJhbnNhY3Rpb24gaXMgXHJcbiAgICAgICAgLy8gcmVhZHkgdG8gYmUgdHJhbnNtaXR0ZWRcclxuICAgICAgICBKc29uUnBjUHJvdmlkZXIucmVjZWlwdHNbcmVjZWlwdC5oYXNoXS5zdGF0dXMgPSBcInBlbmRpbmdcIlxyXG4gICAgICAgIGRlbGV0ZSBKc29uUnBjUHJvdmlkZXIucmVjZWlwdHNbcmVjZWlwdC5oYXNoXS5lcnJvclxyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3ZpZGVyXHJcbiAgICAgICAgICAgIC5zZW5kUmF3VHJhbnNhY3Rpb24odGhpcy5fdG9KU09OKGZhbHNlKSlcclxuICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBUcmFuc21pc3Npb25FcnJvcih0aGlzLl9nZXRJbmZsaWdodFRyYW5zbWlzc2lvbigpLCBlcnIpXHJcbiAgICAgICAgICAgICAgICBKc29uUnBjUHJvdmlkZXIucmVjZWlwdHNbcmVjZWlwdC5oYXNoXS5lcnJvciA9IGVycm9yXHJcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnJvclxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAudGhlbihhY2NlcHRlZCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYWNjZXB0ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBKc29uUnBjUHJvdmlkZXIucmVjZWlwdHNbcmVjZWlwdC5oYXNoXS5zdGF0dXMgPSBcInJlbGF5ZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBKc29uUnBjUHJvdmlkZXIucmVjZWlwdHNbcmVjZWlwdC5oYXNoXVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBUcmFuc21pc3Npb25FcnJvcih0aGlzLl9nZXRJbmZsaWdodFRyYW5zbWlzc2lvbigpLCBFcnJvcihgUmVqZWN0ZWQgZm9yIHVua25vd24gcmVhc29uc2ApKVxyXG4gICAgICAgICAgICAgICAgICAgIEpzb25ScGNQcm92aWRlci5yZWNlaXB0c1tyZWNlaXB0Lmhhc2hdLmVycm9yID0gZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvclxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBzaWduVHJhbnNhY3Rpb24odGFyZ2V0PzogU3BlY3MsIHJlbG9hZFV0eG9zID0gZmFsc2UpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVjZWlwdD4ge1xyXG4gICAgICAgIHRhcmdldCA9IGF3YWl0IHRoaXMuX3BheWxvYWQudmFsaWRhdGVUYXJnZXQodGFyZ2V0KVxyXG4gICAgICAgIGlmICghdGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIC8vIGUuZy4gaWYgY2FsbGVkIGZyb20gdGhpcy5zZW5kKCkgd2l0aCBubyBwYXJhbXNcclxuICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IGNhbm5vdCBzaWduIGEgdHJhbnNhY3Rpb24gaWYgbm8gcGFyYW1zIHdlcmUgcHJldmlvdXNseSBzcGVjaWZpZWQuYClcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgaW5mbGlnaHQgPSB0aGlzLl9nZXRJbmZsaWdodFJlY2VpcHQoKVxyXG4gICAgICAgIGlmIChpbmZsaWdodCkge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcInNpZ24ucGVuZGluZ1JlY2VpcHQgPT5cIiwgaW5mbGlnaHQpXHJcbiAgICAgICAgICAgIGlmICghaW5mbGlnaHQ/LnN0YXR1cyB8fCBpbmZsaWdodC5zdGF0dXMgPT09IFwic2lnbmVkXCIpIHtcclxuICAgICAgICAgICAgICAgIC8vIHJlY292ZXIgaW5wdXQgdXR4b3MgaWYgcHJldmlvdXNseSBzaWduZWQgcGFyYW1zIHdlcmUgbm90IGV2ZW4gYXR0ZW1wdGVkIHRvIGJlIHNlbnRcclxuICAgICAgICAgICAgICAgIGlmICghcmVsb2FkVXR4b3MpIHRoaXMuX3JlY292ZXJJbnB1dFV0eG9zKClcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5mbGlnaHQuc3RhdHVzID09PSBcInBlbmRpbmdcIiAmJiAhaW5mbGlnaHQuZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgIC8vIHRocm93IGV4Y2VwdGlvbiBpZiBhIGZvcm1lcmx5IHNpZ25lZCB0cmFuc2FjdGlvbiBpcyBzdGlsbCB3YWl0aW5nIHRvIGJlIHJlbGF5ZWQgYnkgYSBwcm92aWRlclxyXG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogaW4tZmxpZ2h0IHR4IGJlaW5nIHJlbGF5ZWQ6ICR7aW5mbGlnaHQuaGFzaH1gKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBcclxuICAgICAgICBcclxuICAgICAgICAvLyBjbGVhbiBjdXJyZW50IHNpZ25hdHVyZXMsIHNvIG5ldyBVVFhPcyBjYW4gYmUgY29uc3VtZWQgYW5kIHRoZXJlZm9yZSBhIG5ldyB0cmFuc2FjdGlvbiBoYXNoIGJlIGluY2VwdGVkXHJcbiAgICAgICAgdGhpcy5fY2xlYW5TaWduYXR1cmVzKHRhcmdldClcclxuICAgICAgICBcclxuICAgICAgICAvLyBpZiBub3QgeWV0IHByZXBhcmVkLCB0cnkgdG8gY292ZXIgdHJhbnNhY3Rpb24gZXhwZW5zZXMgd2l0aCBleGlzdGluZyB1dHhvcyBvbiBzaWduZXJzOlxyXG4gICAgICAgIGlmICghdGhpcy5fcGF5bG9hZC5wcmVwYXJlZCkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9wYXlsb2FkLmNvbnN1bWVVdHhvcyh0aGlzLmxlZGdlciwgcmVsb2FkVXR4b3MpXHJcbiAgICAgICAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFxyXG4gICAgICAgICAgICAgICAgICAgIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IGNhbm5vdCBjb25zdW1lIFVUWE9zIGZyb20gJHt0aGlzLmxlZGdlci5jb25zdHJ1Y3Rvci5uYW1lfSAke3RoaXMubGVkZ2VyLnBraH06ICR7ZXJyfS5gXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIH0pICBcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKCF0aGlzLl9wYXlsb2FkLnByZXBhcmVkKSB7XHJcbiAgICAgICAgICAgIC8vIHRocm93cyBleGVjZXB0aW9uIGlmIG5vdCBlbm91Z2ggdXR4b3Mgd2VyZSBmb3VuZCB0byBjb3ZlciB0cmFuc2FjdGlvbiBleHBlbnNlczpcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBpbnN1ZmZpY2llbnQgZnVuZHMgb24gJHt0aGlzLmxlZGdlci5jb25zdHJ1Y3Rvci5uYW1lfSAke3RoaXMubGVkZ2VyLnBraH0uYFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgfSBcclxuXHJcbiAgICAgICAgLy8gZG91YmxlLWNoZWNrIHdlaWdodCBkb2VzIG5vdCBleGNlZWRzIGJsb2NrIGxpbWl0Li4uXHJcbiAgICAgICAgaWYgKHRoaXMuX3BheWxvYWQud2VpZ2h0ID4gdGhpcy5fcGF5bG9hZC5tYXhXZWlnaHQpIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiB0cmFuc2FjdGlvbiB3ZWlnaHQgZXhjZWVkZWQgYmxvY2sgbGltaXQ6ICR7dGhpcy5fcGF5bG9hZC53ZWlnaHR9ID4gJHt0aGlzLl9wYXlsb2FkLm1heFdlaWdodH0uYFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBzaWduaW5nIHRoZSB0cmFuc2FjdGlvbiBwYXlsb2FkIGdlbmVyYXRlcyB0aGUgdHJhbnNhY3Rpb24gaGFzaCwgYW5kIHRoZSByZWNlaXB0XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Vwc2VydFRyYW5zYWN0aW9uUmVjZWlwdCh0aGlzLl9zaWduVHJhbnNhY3Rpb25QYXlsb2FkKCksIHRhcmdldCwgXCJzaWduZWRcIikgICAgXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGNvbmZpcm1UcmFuc2FjdGlvbihcclxuICAgICAgICBoYXNoOiBIYXNoLCBcclxuICAgICAgICBvcHRpb25zPzoge1xyXG4gICAgICAgICAgICBjb25maXJtYXRpb25zPzogbnVtYmVyLFxyXG4gICAgICAgICAgICB0aW1lb3V0U2Vjcz86IG51bWJlcixcclxuICAgICAgICAgICAgb25DaGVja3BvaW50PzogVHJhbnNhY3Rpb25DYWxsYmFjayxcclxuICAgICAgICAgICAgb25TdGF0dXNDaGFuZ2U/OiBUcmFuc2FjdGlvbkNhbGxiYWNrLFxyXG4gICAgICAgIH1cclxuICAgICk6IFByb21pc2U8VHJhbnNhY3Rpb25SZWNlaXB0PiB7XHJcblxyXG4gICAgICAgIGxldCByZWNlaXB0ID0gSnNvblJwY1Byb3ZpZGVyLnJlY2VpcHRzW2hhc2hdXHJcbiAgICAgICAgaWYgKCFyZWNlaXB0IHx8IHJlY2VpcHQuaGFzaCAhPT0gaGFzaCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogdHJhbnNhY3Rpb24gbm90IGZvdW5kOiAke2hhc2h9YClcclxuICAgICAgICBcclxuICAgICAgICB9IGVsc2UgaWYgKFtcInNpZ25lZFwiLCBcInBlbmRpbmdcIl0uaW5jbHVkZXMocmVjZWlwdC5zdGF0dXMpKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiB0cmFuc2FjdGlvbiBzdGF0dXMgXCIke3JlY2VpcHQuc3RhdHVzfVwiOiAke2hhc2h9YClcclxuICAgICAgICBcclxuICAgICAgICB9IGVsc2UgaWYgKHJlY2VpcHQuc3RhdHVzID09PSBcInJlbW92ZWRcIikge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgTWVtcG9vbEVycm9yKHJlY2VpcHQsIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IHRyYW5zYWN0aW9uIHJlbW92ZWQgZnJvbSBtZW1wb29sOiAke2hhc2h9YClcclxuICAgICAgICBcclxuICAgICAgICB9IGVsc2UgaWYgKHJlY2VpcHQuc3RhdHVzID09PSBcInJlbGF5ZWRcIiAmJiBvcHRpb25zPy5vblN0YXR1c0NoYW5nZSkgdHJ5IHtcclxuICAgICAgICAgICAgb3B0aW9ucy5vblN0YXR1c0NoYW5nZShyZWNlaXB0KVxyXG4gICAgICAgIH0gY2F0Y2gge307XHJcblxyXG4gICAgICAgIGNvbnN0IGdsb2JhbFRpbWVyID0gKHN0YXJ0OiBudW1iZXIsIG1zOiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoXHJcbiAgICAgICAgICAgICAgICAgICAgKCkgPT4gcmVqZWN0KGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IHBvbGxpbmcgdGltZW91dCBhZnRlciAke01hdGguZmxvb3IoKERhdGUubm93KCkgLSBzdGFydCkgLyAxMDAwKX0gc2VjcykuYCksIFxyXG4gICAgICAgICAgICAgICAgICAgIG1zXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IFtjb25maXJtYXRpb25zLCBpbnRlcnZhbCwgdGltZW91dCwgZ2xvYmFsVGltZW91dF0gPSBbXHJcbiAgICAgICAgICAgIG9wdGlvbnM/LmNvbmZpcm1hdGlvbnMgfHwgMCxcclxuICAgICAgICAgICAgMTAwMDAsXHJcbiAgICAgICAgICAgIDUwMDAsXHJcbiAgICAgICAgICAgIChvcHRpb25zPy50aW1lb3V0U2VjcyB8fCA2MDApICogMTAwMCxcclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yYWNlKFtcclxuICAgICAgICAgICAgZ2xvYmFsVGltZXIoRGF0ZS5ub3coKSwgZ2xvYmFsVGltZW91dClcclxuICAgICAgICAgICAgICAgIC5jYXRjaCgocmVhc29uOiBhbnkpID0+IHsgdGhyb3cgbmV3IFRpbWVvdXRFcnJvcihnbG9iYWxUaW1lb3V0LCByZWNlaXB0LCByZWFzb24pIH0pLFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgcHJvbWlzZVBvbGxlcih7XHJcbiAgICAgICAgICAgICAgICB0YXNrRm46ICgpID0+IHRoaXMucHJvdmlkZXIuZ2V0VHJhbnNhY3Rpb24oaGFzaCksXHJcbiAgICAgICAgICAgICAgICBzaG91bGRDb250aW51ZTogKGVycm9yOiBhbnksIHJlcG9ydDogVHJhbnNhY3Rpb25SZXBvcnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGF0dXMgPSByZWNlaXB0LnN0YXR1c1xyXG4gICAgICAgICAgICAgICAgICAgIHJlY2VpcHQuZXJyb3IgPSBlcnJvclxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmIGVycm9yLm1lc3NhZ2UuaW5kZXhPZihcIm5vdCBmb3VuZFwiKSA+PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpcHQuc3RhdHVzID0gXCJyZW1vdmVkXCJcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugc3dpdGNoIChyZWNlaXB0LnN0YXR1cykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwicmVsYXllZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcG9ydD8uYmxvY2tIYXNoICYmIGlzSGV4U3RyaW5nKHJlcG9ydC5ibG9ja0hhc2gpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC5jb25maXJtYXRpb25zID0gcmVwb3J0LmNvbmZpcm1hdGlvbnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXB0LmJsb2NrSGFzaCA9IHJlcG9ydC5ibG9ja0hhc2gsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC5ibG9ja0Vwb2NoID0gcmVwb3J0LmJsb2NrRXBvY2gsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC5ibG9ja1RpbWVzdGFtcCA9IHJlcG9ydC5ibG9ja1RpbWVzdGFtcFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpcHQuc3RhdHVzID0gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvcnQuY29uZmlybWVkIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcImZpbmFsaXplZFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAocmVwb3J0Py5jb25maXJtYXRpb25zID49IGNvbmZpcm1hdGlvbnMgPyBcImNvbmZpcm1lZFwiIDogXCJtaW5lZFwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJtaW5lZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXBvcnQ/LmJsb2NrSGFzaCB8fCByZXBvcnQuYmxvY2tIYXNoICE9PSByZWNlaXB0LmJsb2NrSGFzaCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByZWNlaXB0LmJsb2NrSGFzaFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByZWNlaXB0LmJsb2NrRXBvY2hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgcmVjZWlwdC5ibG9ja01pbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlY2VpcHQuYmxvY2tUaW1lc3RhbXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXB0LnN0YXR1cyA9IFwicmVsYXllZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC5zdGF0dXMgPSAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydC5jb25maXJtZWQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiZmluYWxpemVkXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChyZXBvcnQ/LmNvbmZpcm1hdGlvbnMgPj0gY29uZmlybWF0aW9ucyA/IFwiY29uZmlybWVkXCIgOiBcIm1pbmVkXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVwb3J0Py5jb25maXJtYXRpb25zICE9PSByZWNlaXB0LmNvbmZpcm1hdGlvbnMpIHsgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpcHQuY29uZmlybWF0aW9ucyA9IHJlcG9ydC5jb25maXJtYXRpb25zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWNlaXB0LnN0YXR1cyA9PT0gXCJtaW5lZFwiICYmIG9wdGlvbnM/Lm9uQ2hlY2twb2ludCkgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMub25DaGVja3BvaW50KHJlY2VpcHQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gge307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAhPT0gcmVjZWlwdC5zdGF0dXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC50aW1lc3RhbXAgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFbXCJjb25maXJtZWRcIiwgXCJmaW5hbGl6ZWRcIl0uaW5jbHVkZXMocmVjZWlwdC5zdGF0dXMpICYmIG9wdGlvbnM/Lm9uU3RhdHVzQ2hhbmdlKSB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5vblN0YXR1c0NoYW5nZShyZWNlaXB0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHt9O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBKc29uUnBjUHJvdmlkZXIucmVjZWlwdHNbaGFzaF0gPSByZWNlaXB0XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcInJlbGF5ZWRcIiwgXCJtaW5lZFwiXS5pbmNsdWRlcyhyZWNlaXB0LnN0YXR1cylcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBpbnRlcnZhbCwgdGltZW91dCwgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9KS50aGVuKGFzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZWNlaXB0LnN0YXR1cyA9PT0gXCJyZW1vdmVkXCIgJiYgcmVjZWlwdC50eXBlICE9PSBcIlVuc3Rha2VcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFRSQU5TQUNUSU9OIFJFTU9WRUQgRlJPTSBNRU1QT09MIC8vXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gMS4gVHJ5IHRvIHJlY292ZXIgaW5wdXQgdXR4b3MgYmVsb25naW5nIHRvIGxlZGdlcidzIGFkZHJlc3NlczpcclxuICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dHM6IEFycmF5PFV0eG9NZXRhZGF0YT4gPSByZWNlaXB0LnR4W3JlY2VpcHQudHlwZV0uYm9keS5pbnB1dHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2lnbmF0dXJlczogQXJyYXk8S2V5ZWRTaWduYXR1cmU+ID0gcmVjZWlwdC50eFtyZWNlaXB0LnR5cGVdLnNpZ25hdHVyZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXR4b3M6IEFycmF5PFV0eG8+ID0gW11cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0cy5sZW5ndGggPT09IHNpZ25hdHVyZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dHMuZm9yRWFjaCgobWV0YWRhdGEsIGluZGV4KSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLm1ldGFkYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lcjogUHVibGljS2V5LmZyb21Qcm90b2J1ZihzaWduYXR1cmVzW2luZGV4XS5wdWJsaWNfa2V5KS5oYXNoKCkudG9CZWNoMzIodGhpcy5uZXR3b3JrKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGVkZ2VyLmFkZFV0eG9zKC4uLnV0eG9zKVxyXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IHdhcm5pbmc6IGNhbm5vdCByZWNvdmVyIGlucHV0IFVUWE9TIGZyb20gdHggJHtoYXNofTogJHtlcnJ9YClcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gMi4gVGhyb3cgTWVtcG9vbEVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE1lbXBvb2xFcnJvcihyZWNlaXB0LCBgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiB0cmFuc2FjdGlvbiByZW1vdmVkIGZyb20gbWVtcG9vbDogJHtoYXNofWApO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFRSQU5TQUNUSU9OIEVJVEhFUiBDT05GSVJNRUQgT1IgRklOQUxJWkVEIC8vXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gMS4gVHJ5IHRvIGxvYWQgdmFsdWUgdHJhbnNmZXIgb3V0cHV0cyBpbnRvIHRoZSBsZWRnZXIncyBsb2NhbCBjYWNoZTogXHJcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXR4b3M6IEFycmF5PFV0eG8+ID0gW11cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFtcIlN0YWtlXCIsIFwiVW5zdGFrZVwiXS5pbmNsdWRlcyhyZWNlaXB0LnR5cGUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdnRvOiBWYWx1ZVRyYW5zZmVyT3V0cHV0ID0gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpcHQudHlwZSA9PT0gXCJTdGFrZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcmVjZWlwdC50eFtyZWNlaXB0LnR5cGVdLmJvZHk/Lm91dHB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHJlY2VpcHQudHhbcmVjZWlwdC50eXBlXS5ib2R5Py53aXRoZHJhd2FsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZ0bykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0eG9zLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfcG9pbnRlcjogYCR7cmVjZWlwdC5oYXNofTowYCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZWxvY2s6IHZ0by50aW1lX2xvY2ssXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0eG9fbWF0dXJlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogQmlnSW50KHZ0by52YWx1ZSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lcjogdnRvLnBraCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3V0cHV0czogQXJyYXk8VmFsdWVUcmFuc2Zlck91dHB1dD4gPSByZWNlaXB0LnR4W3JlY2VpcHQudHlwZV0uYm9keT8ub3V0cHV0cyB8fCBbXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0cy5mb3JFYWNoKCh2dG8sIGluZGV4KSA9PiB1dHhvcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfcG9pbnRlcjogYCR7cmVjZWlwdC5oYXNofToke2luZGV4fWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZWxvY2s6IHZ0by50aW1lX2xvY2ssXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXR4b19tYXR1cmU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEJpZ0ludCh2dG8udmFsdWUpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lcjogdnRvLnBraCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwib3V0cHV0IHV0eG9zIGJlZm9yZSA9PlwiLCB1dHhvcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJvdXRwdXQgdXR4b3MgYWZ0ZXIgID0+XCIsIHRoaXMubGVkZ2VyLmFkZFV0eG9zKC4uLnV0eG9zKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sZWRnZXIuYWRkVXR4b3MoLi4udXR4b3MpXHJcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogd2FybmluZzogY2Fubm90IHJlY292ZXIgb3V0cHV0IFVUWE9zIGZyb20gJHtoYXNofTogJHtlcnJ9YClcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gMi4gQWRkIGJsb2NrTWluZXIgYWRkcmVzcyB0byB0aGUgdHJhbnNhY3Rpb24gcmVjZWlwdDogXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlY2VpcHQ/LmJsb2NrSGFzaCAmJiBpc0hleFN0cmluZyhyZWNlaXB0LmJsb2NrSGFzaCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2sgPSBhd2FpdCB0aGlzLnByb3ZpZGVyLmdldEJsb2NrKHJlY2VpcHQuYmxvY2tIYXNoIHx8IFwiXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEpzb25ScGNQcm92aWRlci5yZWNlaXB0c1toYXNoXS5ibG9ja01pbmVyID0gUHVibGljS2V5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZnJvbVByb3RvYnVmKGJsb2NrLmJsb2NrX3NpZy5wdWJsaWNfa2V5KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmhhc2goKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRvQmVjaDMyKHRoaXMubmV0d29yayk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zPy5vblN0YXR1c0NoYW5nZSkgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5vblN0YXR1c0NoYW5nZShyZWNlaXB0KVxyXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gge307XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gMy4gUmV0dXJuIHRyYW5zYWN0aW9uIHJlY2VpcHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpzb25ScGNQcm92aWRlci5yZWNlaXB0c1toYXNoXVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIF0pXHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF9jbGVhblNpZ25hdHVyZXMobmV3VGFyZ2V0OiBTcGVjcyk6IGFueSB7XHJcbiAgICAgICAgdGhpcy5fcGF5bG9hZC5yZXNldFRhcmdldChuZXdUYXJnZXQpXHJcbiAgICAgICAgdGhpcy5fc2lnbmF0dXJlcyA9IFtdXHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF9nZXRJbmZsaWdodEJ5dGVjb2RlKCk6IFVpbnQ4QXJyYXkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IG9iaiA9IHRoaXMuX3RvUHJvdG9idWYoKVxyXG4gICAgICAgIGNvbnN0IGVyciA9IHRoaXMuX3Byb3RvQnVmLnZlcmlmeShvYmopXHJcbiAgICAgICAgaWYgKCFlcnIpIHtcclxuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMuX3Byb3RvQnVmLmZyb21PYmplY3Qob2JqKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcHJvdG9CdWYuZW5jb2RlKG1lc3NhZ2UpLmZpbmlzaCgpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX2dldEluZmxpZ2h0UmVjZWlwdCgpOiBUcmFuc2FjdGlvblJlY2VpcHQgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IGhhc2ggPSB0aGlzLl9wYXlsb2FkLmhhc2hcclxuICAgICAgICBpZiAoaGFzaCkge1xyXG4gICAgICAgICAgICByZXR1cm4gSnNvblJwY1Byb3ZpZGVyLnJlY2VpcHRzW2hhc2hdXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX2dldEluZmxpZ2h0VHJhbnNtaXNzaW9uKCk6IFRyYW5zbWlzc2lvbiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgYnl0ZWNvZGU6IHRoaXMuX2dldEluZmxpZ2h0Qnl0ZWNvZGUoKSxcclxuICAgICAgICAgICAgaGFzaDogdGhpcy5fcGF5bG9hZC5oYXNoLFxyXG4gICAgICAgICAgICBtZXNzYWdlOiB0aGlzLl90b0pTT04odHJ1ZSksXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfcmVjb3ZlcklucHV0VXR4b3MoKTogYW55IHt9XHJcbiAgICBwcm90ZWN0ZWQgX3JlY292ZXJPdXRwdXRVdHhvcygpOiBhbnkge31cclxuXHJcbiAgICBwcm90ZWN0ZWQgX3Vwc2VydFRyYW5zYWN0aW9uUmVjZWlwdChoYXNoOiBIYXNoLCB0YXJnZXQ6IFNwZWNzLCBzdGF0dXM6IFRyYW5zYWN0aW9uU3RhdHVzKTogVHJhbnNhY3Rpb25SZWNlaXB0IHtcclxuICAgICAgICBKc29uUnBjUHJvdmlkZXIucmVjZWlwdHNbaGFzaF0gPSB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuX3BheWxvYWQuaW50b1JlY2VpcHQodGFyZ2V0LCB0aGlzLm5ldHdvcmspLFxyXG4gICAgICAgICAgICBoYXNoLFxyXG4gICAgICAgICAgICBjaGFuZ2U6IHRoaXMuX3BheWxvYWQuY2hhbmdlLFxyXG4gICAgICAgICAgICBmZWVzOiB0aGlzLl9wYXlsb2FkLmZlZXMsXHJcbiAgICAgICAgICAgIGZyb206IHRoaXMuX2Zyb20sXHJcbiAgICAgICAgICAgIHN0YXR1cyxcclxuICAgICAgICAgICAgdGltZXN0YW1wOiBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSxcclxuICAgICAgICAgICAgdHg6IHRoaXMuX3RvSlNPTih0cnVlKSxcclxuICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlLFxyXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5fcGF5bG9hZC52YWx1ZSxcclxuICAgICAgICAgICAgd2VpZ2h0OiB0aGlzLl9wYXlsb2FkLndlaWdodCxcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIEpzb25ScGNQcm92aWRlci5yZWNlaXB0c1toYXNoXVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBfc2lnblRyYW5zYWN0aW9uUGF5bG9hZCgpOiBIYXNoO1xyXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IF90b0pTT04oX2h1bWFuaXplOiBib29sZWFuKTogYW55O1xyXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IF90b1Byb3RvYnVmKCk6IGFueTtcclxufVxyXG5cclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUcmFuc21pdHRlck11bHRpU2lnPFNwZWNzLCBQYXlsb2FkIGV4dGVuZHMgSVRyYW5zYWN0aW9uUGF5bG9hZE11bHRpU2lnPFNwZWNzPj4gXHJcbiAgICBleHRlbmRzIFRyYW5zbWl0dGVyPFNwZWNzLCBQYXlsb2FkPiBcclxue1xyXG4gICAgY29uc3RydWN0b3IgKHByb3RvVHlwZU5hbWU6IHN0cmluZywgcGF5bG9hZDogUGF5bG9hZCwgbGVkZ2VyOiBJTGVkZ2VyLCBjaGFuZ2VQa2g/OiBQdWJsaWNLZXlIYXNoU3RyaW5nKSB7XHJcbiAgICAgICAgc3VwZXIocHJvdG9UeXBlTmFtZSwgcGF5bG9hZCwgbGVkZ2VyLCBjaGFuZ2VQa2gpXHJcbiAgICAgICAgdGhpcy5fcGF5bG9hZCA9IHBheWxvYWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLy8vIFJlY292ZXIgZm9ybWVybHkgY29uc3VtZWQgVVRYT3MgYnkgYSBmYWlsaW5nIHRyYW5zYWN0aW9uIGJhY2sgdG8gdGhlaXIgcmVzcGVjdGl2ZSBzaWduZXIncyBVVFhPIHBvb2xcclxuICAgIHByb3RlY3RlZCBfcmVjb3ZlcklucHV0VXR4b3MoKTogYW55IHtcclxuICAgICAgICBpZiAodGhpcy5fcGF5bG9hZC5pbnB1dHMpIHsgICAgXHJcbiAgICAgICAgICAgIHRoaXMubGVkZ2VyLmFkZFV0eG9zKC4uLnRoaXMuX3BheWxvYWQuaW5wdXRzKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLy8gUmVjb3ZlciBzZWxmLXRhcmdldGVkIG91dHB1dHMgYXMgZXhwZW5kYWJsZSB1dHhvcyBvbiB0aGVpciByZXNwZWN0aXZlIHNpZ25lcidzIG1lbW9pemVkIGNhY2hlXHJcbiAgICBwcm90ZWN0ZWQgX3JlY292ZXJPdXRwdXRVdHhvcygpOiBhbnkge1xyXG4gICAgICAgIGlmICh0aGlzLl9wYXlsb2FkLmhhc2ggJiYgdGhpcy5fcGF5bG9hZC5vdXRwdXRzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHV0eG9zOiBBcnJheTxVdHhvPiA9IFtdXHJcbiAgICAgICAgICAgIHRoaXMuX3BheWxvYWQub3V0cHV0cy5mb3JFYWNoKCh2dG8sIGluZGV4KSA9PiB7ICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubGVkZ2VyLmdldFNpZ25lcih2dG8ucGtoKSkgdXR4b3MucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgc2lnbmVyOiB2dG8ucGtoLFxyXG4gICAgICAgICAgICAgICAgICAgIG91dHB1dF9wb2ludGVyOiBgJHt0aGlzLl9wYXlsb2FkLmhhc2h9OiR7aW5kZXh9YCxcclxuICAgICAgICAgICAgICAgICAgICB0aW1lbG9jazogdnRvLnRpbWVfbG9jayxcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdnRvLnZhbHVlLFxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGhpcy5sZWRnZXIuYWRkVXR4b3MoLi4udXR4b3MpXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfc2lnblRyYW5zYWN0aW9uUGF5bG9hZCgpOiBIYXNoIHtcclxuICAgICAgICBjb25zdCBoYXNoID0gdGhpcy5fcGF5bG9hZC5oYXNoXHJcbiAgICAgICAgaWYgKCFoYXNoKSB7XHJcbiAgICAgICAgICAgIHRocm93IEVycm9yKFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogaW50ZXJuYWwgZXJyb3I6IHVuYWJsZSB0byBoYXNoaWZ5IHBheWxvYWQ6ICR7dGhpcy5fcGF5bG9hZC50b0pTT04odHJ1ZSwgdGhpcy5uZXR3b3JrKX19LmBcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3BheWxvYWQuaW5wdXRzLmZvckVhY2godXR4byA9PiB7IFxyXG4gICAgICAgICAgICAgICAgY29uc3Qgc2lnbmVyID0gdGhpcy5sZWRnZXIuZ2V0U2lnbmVyKHV0eG8uc2lnbmVyKVxyXG4gICAgICAgICAgICAgICAgaWYgKCFzaWduZXIpIHRocm93IEVycm9yKFxyXG4gICAgICAgICAgICAgICAgICAgIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IGludGVybmFsIGVycm9yOiBjYW5ub3QgZmluZCBTaWduZXIgJHt1dHhvLnNpZ25lcn0gaW4gJHt0aGlzLmxlZGdlci5jb25zdHJ1Y3Rvci5uYW1lfSAke3RoaXMubGVkZ2VyLnBraH0uYCAgICBcclxuICAgICAgICAgICAgICAgICk7IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGAuLi5zaWduZXIgJHtzaWduZXIucGtofSBzaWduaW5nIGhhc2ggJHtoYXNofS4uLmApXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2lnbmF0dXJlcy5wdXNoKHNpZ25lci5zaWduSGFzaChoYXNoKSkgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHJldHVybiBoYXNoXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfdG9KU09OKGh1bWFuaXplOiBib29sZWFuKTogYW55IHtcclxuICAgICAgICByZXR1cm4geyBcclxuICAgICAgICAgICAgW3RoaXMudHlwZV06IHsgXHJcbiAgICAgICAgICAgICAgICBib2R5OiB0aGlzLl9wYXlsb2FkLnRvSlNPTihodW1hbml6ZSwgdGhpcy5uZXR3b3JrKSxcclxuICAgICAgICAgICAgICAgIHNpZ25hdHVyZXM6IHRoaXMuX3NpZ25hdHVyZXMsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfdG9Qcm90b2J1ZigpOiBhbnkge1xyXG4gICAgICAgIGNvbnN0IGJvZHkgPSB0aGlzLl9wYXlsb2FkLnRvUHJvdG9idWYoKVxyXG4gICAgICAgIGlmIChib2R5ICYmIHRoaXMuX3NpZ25hdHVyZXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGJvZHksXHJcbiAgICAgICAgICAgICAgICBzaWduYXR1cmVzOiB0aGlzLl9zaWduYXR1cmVzLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
package/package.json
CHANGED
package/src/bin/cli/radon.js
CHANGED
|
@@ -551,7 +551,7 @@ function traceWitnetRadonRequest (request, options) {
|
|
|
551
551
|
console.info(`${indent} │ ${sep} > HTTP body: ${helpers.colors.green(source.body)}`)
|
|
552
552
|
}
|
|
553
553
|
if (source?.script) {
|
|
554
|
-
console.log(source.script.toBytecode())
|
|
554
|
+
// console.log(source.script.toBytecode())
|
|
555
555
|
const steps = source.script.disect()
|
|
556
556
|
console.info(
|
|
557
557
|
`${indent} │ ${sep} > Radon script: ${helpers.colors.lyellow("[ ")
|
package/src/bin/helpers.js
CHANGED
|
@@ -98,7 +98,7 @@ async function execRadonBytecode (bytecode, ...flags) {
|
|
|
98
98
|
throw EvalError("invalid hex string")
|
|
99
99
|
} else {
|
|
100
100
|
const npx = os.type() === "Windows_NT" ? "npx.cmd" : "npx"
|
|
101
|
-
return cmd(npx, "witnet", "radon", "
|
|
101
|
+
return cmd(npx, "witnet", "radon", "dry-run", bytecode, ...flags)
|
|
102
102
|
// .catch((err) => {
|
|
103
103
|
// let errorMessage = err.message.split('\n').slice(1).join('\n').trim()
|
|
104
104
|
// const errorRegex = /.*^error: (?<message>.*)$.*/gm
|