@cdktn/hcl2cdk 0.24.0-pre.29 → 0.24.0-pre.30
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.
|
@@ -9,7 +9,7 @@ describe("jsii-rosetta-workarounds", () => {
|
|
|
9
9
|
const code = `
|
|
10
10
|
import constructs as constructs
|
|
11
11
|
# Provider bindings are generated by running cdktn get.
|
|
12
|
-
# See https://
|
|
12
|
+
# See https://cdktn.io/docs/concepts/providers#import-providers for more details.
|
|
13
13
|
import ...gen.providers.scaleway as scaleway
|
|
14
14
|
class MyConvertedCode(constructs.Construct):
|
|
15
15
|
def __init__(self, scope, name):
|
|
@@ -83,4 +83,4 @@ class MyConvertedCode(constructs.Construct):
|
|
|
83
83
|
});
|
|
84
84
|
});
|
|
85
85
|
});
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNpaS1yb3NldHRhLXdvcmthcm91bmRzLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL2pzaWktcm9zZXR0YS13b3JrYXJvdW5kcy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DOztBQUVuQywwRUFLcUM7QUFFckMsUUFBUSxDQUFDLDBCQUEwQixFQUFFLEdBQUcsRUFBRTtJQUN4QyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxFQUFFO1FBQ3BDLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7WUFDeEIsTUFBTSxJQUFJLEdBQUc7Ozs7Ozs7Ozs7O1VBV1QsQ0FBQztZQUVMLE1BQU0sQ0FBQyxJQUFBLCtDQUFvQixFQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUN4QyxNQUFNLENBQUMsZ0JBQWdCLENBQUMscUNBQXFDLENBQUMsQ0FDL0QsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsRUFBRTtZQUMxQixNQUFNLElBQUksR0FBRyw0REFBNEQsQ0FBQztZQUUxRSxNQUFNLENBQUMsSUFBQSwrQ0FBb0IsRUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDeEMsK0NBQStDLENBQ2hELENBQUM7WUFFRixNQUFNLGNBQWMsR0FBRyxtRUFBbUUsQ0FBQztZQUMzRixNQUFNLENBQUMsSUFBQSwrQ0FBb0IsRUFBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDbEQsMERBQTBELENBQzNELENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLEVBQUU7WUFDMUIsTUFBTSxJQUFJLEdBQUcsMERBQTBELENBQUM7WUFFeEUsTUFBTSxDQUFDLElBQUEsK0NBQW9CLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENB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WUFDekIsTUFBTSxJQUFJLEdBQUcsd0VBQXdFLENBQUM7WUFFdEYsTUFBTSxDQUFDLElBQUEsMkNBQWdCLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ3BDLG1EQUFtRCxDQUNwRCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxFQUFFO1lBQzlCLE1BQU0sSUFBSSxHQUFHLDRFQUE0RSxDQUFDO1lBRTFGLE1BQU0sQ0FBQyxJQUFBLDJDQUFnQixFQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTztZQUNwQywwQ0FBMEM7WUFDMUMsNkdBQTZHO1lBQzdHLDZEQUE2RCxDQUM5RCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcblxuaW1wb3J0IHtcbiAgcmVwbGFjZUNzaGFycEltcG9ydHMsXG4gIHJlcGxhY2VHb0ltcG9ydHMsXG4gIHJlcGxhY2VKYXZhSW1wb3J0cyxcbiAgcmVwbGFjZVB5dGhvbkltcG9ydHMsXG59IGZyb20gXCIuLi9qc2lpLXJvc2V0dGEtd29ya2Fyb3VuZHNcIjtcblxuZGVzY3JpYmUoXCJqc2lpLXJvc2V0dGEtd29ya2Fyb3VuZHNcIiwgKCkgPT4ge1xuICBkZXNjcmliZShcInJlcGxhY2VQeXRob25JbXBvcnRzXCIsICgpID0+IHtcbiAgICBpdChcIm5vcm1hbCBpbXBvcnRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvZGUgPSBgXG5pbXBvcnQgY29uc3RydWN0cyBhcyBjb25zdHJ1Y3RzXG4jIFByb3ZpZGVyIGJpbmRpbmdzIGFyZSBnZW5lcmF0ZWQgYnkgcnVubmluZyBjZGt0biBnZXQuXG4jIFNlZSBodHRwczovL2Nkay50Zi9wcm92aWRlci1nZW5lcmF0aW9uIGZvciBtb3JlIGRldGFpbHMuXG5pbXBvcnQgLi4uZ2VuLnByb3ZpZGVycy5zY2FsZXdheSBhcyBzY2FsZXdheVxuY2xhc3MgTXlDb252ZXJ0ZWRDb2RlKGNvbnN0cnVjdHMuQ29uc3RydWN0KTpcbiAgICBkZWYgX19pbml0X18oc2VsZiwgc2NvcGUsIG5hbWUpOlxuICAgICAgICBzdXBlcigpLl9faW5pdF9fKHNjb3BlLCBuYW1lKVxuICAgICAgICBzY2FsZXdheS5wcm92aWRlci5TY2FsZXdheVByb3ZpZGVyKHNlbGYsIFwic2NhbGV3YXlcIixcbiAgICAgICAgICAgIHJlZ2lvbj1cImZyLXBhclwiLFxuICAgICAgICAgICAgem9uZT1cImZyLXBhci0xXCJcbiAgICAgICAgKWA7XG5cbiAgICAgIGV4cGVjdChyZXBsYWNlUHl0aG9uSW1wb3J0cyhjb2RlKSkudG9FcXVhbChcbiAgICAgICAgZXhwZWN0LnN0cmluZ0NvbnRhaW5pbmcoXCJpbXBvcnQgaW1wb3J0cy5zY2FsZXdheSBhcyBzY2FsZXdheVwiKSxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcImdyYW51bGFyIGltcG9ydHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgY29kZSA9IGBmcm9tIC4uLmdlbi5wcm92aWRlcnMuYXdzLmxpYi5yZHNDbHVzdGVyIGltcG9ydCBSZHNDbHVzdGVyYDtcblxuICAgICAgZXhwZWN0KHJlcGxhY2VQeXRob25JbXBvcnRzKGNvZGUpKS50b0VxdWFsKFxuICAgICAgICBcImZyb20gaW1wb3J0cy5hd3MucmRzQ2x1c3RlciBpbXBvcnQgUmRzQ2x1c3RlclwiLFxuICAgICAgKTtcblxuICAgICAgY29uc3Qgd2l0aG91dExpYkNvZGUgPSBgZnJvbSAuLi5nZW4ucHJvdmlkZXJzLmF6dXJlcm0ucmVzb3VyY2VfZ3JvdXAgaW1wb3J0IFJlc291cmNlR3JvdXBgO1xuICAgICAgZXhwZWN0KHJlcGxhY2VQeXRob25JbXBvcnRzKHdpdGhvdXRMaWJDb2RlKSkudG9FcXVhbChcbiAgICAgICAgXCJmcm9tIGltcG9ydHMuYXp1cmVybS5yZXNvdXJjZV9ncm91cCBpbXBvcnQgUmVzb3VyY2VHcm91cFwiLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KFwicmVzb3VyY2UgaW1wb3J0c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb2RlID0gYGltcG9ydCAuLi5nZW4ucHJvdmlkZXJzLmF3cy5saWIucmRzQ2x1c3RlciBhcyBSZHNDbHVzdGVyYDtcblxuICAgICAgZXhwZWN0KHJlcGxhY2VQeXRob25JbXBvcnRzKGNvZGUpKS50b0VxdWFsKFxuICAgICAgICBcImltcG9ydCBpbXBvcnRzLmF3cy5yZHNDbHVzdGVyIGFzIFJkc0NsdXN0ZXJcIixcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcImZpeGVzIG1vZHVsZSBpbXBvcnRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvZGUgPSBgaW1wb3J0IC4uLmdlbi5tb2R1bGVzLmhlbGxvX21vZHVsZSBhcyBIZWxsb01vZHVsZWA7XG5cbiAgICAgIGV4cGVjdChyZXBsYWNlUHl0aG9uSW1wb3J0cyhjb2RlKSkudG9FcXVhbChcbiAgICAgICAgXCJpbXBvcnQgaW1wb3J0cy5oZWxsb19tb2R1bGUgYXMgSGVsbG9Nb2R1bGVcIixcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwicmVwbGFjZUNzaGFycEltcG9ydHNcIiwgKCkgPT4ge1xuICAgIGl0KFwibm9ybWFsIGltcG9ydHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgY29kZSA9IGB1c2luZyBHZW4uUHJvdmlkZXJzLkF3cy5MaWIuUmRzQ2x1c3RlcjtgO1xuXG4gICAgICBleHBlY3QocmVwbGFjZUNzaGFycEltcG9ydHMoY29kZSkpLnRvRXF1YWwoXCJ1c2luZyBhd3MuUmRzQ2x1c3RlcjtcIik7XG4gICAgfSk7XG5cbiAgICBpdChcImZpeGVzIG1vZHVsZSBpbXBvcnRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvZGUgPSBgdXNpbmcgR2VuLk1vZHVsZXMuSGVsbG9Nb2R1bGVgO1xuXG4gICAgICBleHBlY3QocmVwbGFjZUNzaGFycEltcG9ydHMoY29kZSkpLnRvRXF1YWwoXCJ1c2luZyBIZWxsb01vZHVsZVwiKTtcblxuICAgICAgY29uc3QgYW5vdGhlckNvZGUgPSBgdXNpbmcgR2VuLk1vZHVsZXMuSGVsbG8uTW9kdWxlYDtcblxuICAgICAgZXhwZWN0KHJlcGxhY2VDc2hhcnBJbXBvcnRzKGFub3RoZXJDb2RlKSkudG9FcXVhbChcInVzaW5nIEhlbGxvLk1vZHVsZVwiKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJyZXBsYWNlSmF2YUltcG9ydHNcIiwgKCkgPT4ge1xuICAgIGl0KFwibm9ybWFsIGltcG9ydHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgY29kZSA9IGBpbXBvcnQgZ2VuLnByb3ZpZGVycy5zY2FsZXdheS5vYmplY3RSZXNvdXJjZS4qO2A7XG5cbiAgICAgIGV4cGVjdChyZXBsYWNlSmF2YUltcG9ydHMoY29kZSkpLnRvRXF1YWwoXG4gICAgICAgIFwiaW1wb3J0IGltcG9ydHMuc2NhbGV3YXkub2JqZWN0UmVzb3VyY2UuKjtcIixcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcInByZWNpc2UgaW1wb3J0c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb2RlID0gYGltcG9ydCBnZW4ucHJvdmlkZXJzLmF3cy5saWIuczNCdWNrZXQuUzNCdWNrZXQ7YDtcblxuICAgICAgZXhwZWN0KHJlcGxhY2VKYXZhSW1wb3J0cyhjb2RlKSkudG9FcXVhbChcbiAgICAgICAgXCJpbXBvcnQgaW1wb3J0cy5hd3MuczNCdWNrZXQuUzNCdWNrZXQ7XCIsXG4gICAgICApO1xuXG4gICAgICBjb25zdCB3aXRob3V0TGliSW1wb3J0ID0gYGltcG9ydCBnZW4ucHJvdmlkZXJzLmF3cy5zM0J1Y2tldC5TM0J1Y2tldDtgO1xuXG4gICAgICBleHBlY3QocmVwbGFjZUphdmFJbXBvcnRzKHdpdGhvdXRMaWJJbXBvcnQpKS50b0VxdWFsKFxuICAgICAgICBcImltcG9ydCBpbXBvcnRzLmF3cy5zM0J1Y2tldC5TM0J1Y2tldDtcIixcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcImZpeGVzIG1vZHVsZSBpbXBvcnRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvZGUgPSBgaW1wb3J0IGdlbi5tb2R1bGVzLmhlbGxvLm1vZHVsZS4qO2A7XG5cbiAgICAgIGV4cGVjdChyZXBsYWNlSmF2YUltcG9ydHMoY29kZSkpLnRvRXF1YWwoXG4gICAgICAgIFwiaW1wb3J0IGltcG9ydHMuaGVsbG8ubW9kdWxlLio7XCIsXG4gICAgICApO1xuXG4gICAgICBjb25zdCBhbm90aGVyQ29kZSA9IGBpbXBvcnQgZ2VuLm1vZHVsZXMuaGVsbG9Nb2R1bGUuKjtgO1xuXG4gICAgICBleHBlY3QocmVwbGFjZUphdmFJbXBvcnRzKGFub3RoZXJDb2RlKSkudG9FcXVhbChcbiAgICAgICAgXCJpbXBvcnQgaW1wb3J0cy5oZWxsb01vZHVsZS4qO1wiLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJyZXBsYWNlR29JbXBvcnRzXCIsICgpID0+IHtcbiAgICBpdChcIm5vcm1hbCBpbXBvcnRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvZGUgPSBgaW1wb3J0IFwiZ2l0aHViLmNvbS9hd3Mtc2FtcGxlcy9kdW1teS9nZW4vcHJvdmlkZXJzL3NjYWxld2F5L29iamVjdEJ1Y2tldFwiYDtcblxuICAgICAgZXhwZWN0KHJlcGxhY2VHb0ltcG9ydHMoY29kZSkpLnRvRXF1YWwoXG4gICAgICAgIGBpbXBvcnQgXCJjZGsudGYvZ28vc3RhY2svZ2VuZXJhdGVkL3NjYWxld2F5L29iamVjdEJ1Y2tldFwiYCxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcInByZWNpc2UgaW1wb3J0c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb2RlID0gYGltcG9ydCBcImdpdGh1Yi5jb20vYXdzLXNhbXBsZXMvZHVtbXkvZ2VuL3Byb3ZpZGVycy9hd3MvbGliL2RiSW5zdGFuY2VcImA7XG5cbiAgICAgIGV4cGVjdChyZXBsYWNlR29JbXBvcnRzKGNvZGUpKS50b0VxdWFsKFxuICAgICAgICBgaW1wb3J0IFwiY2RrLnRmL2dvL3N0YWNrL2dlbmVyYXRlZC9hd3MvZGJJbnN0YW5jZVwiYCxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcImZpeGVzIG1vZHVsZSBpbXBvcnRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvZGUgPSBgaW1wb3J0IGhlbGxvTW9kdWxlIFwiZ2l0aHViLmNvbS9hd3Mtc2FtcGxlcy9kdW1teS9nZW4vbW9kdWxlcy9oZWxsb19tb2R1bGVcImA7XG5cbiAgICAgIGV4cGVjdChyZXBsYWNlR29JbXBvcnRzKGNvZGUpKS50b0VxdWFsKFxuICAgICAgICAvLyBUT0RPOiBTZXQgdXAgY2RrdG4uaW8vIHN0YXRpYyByZWRpcmVjdD9cbiAgICAgICAgLy8gXCJnaXRodWIuY29tL29wZW4tY29uc3RydWN0cy9jZGstdGVycmFpbi9leGFtcGxlcy9nby9kb2N1bWVudGF0aW9uL2dlbmVyYXRlZC90ZXJyYWZvcm0tYXdzLW1vZHVsZXMvYXdzL3ZwY1wiXG4gICAgICAgIGBpbXBvcnQgaGVsbG9Nb2R1bGUgXCJjZGsudGYvZ28vc3RhY2svZ2VuZXJhdGVkL2hlbGxvX21vZHVsZVwiYCxcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNpaS1yb3NldHRhLXdvcmthcm91bmRzLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL2pzaWktcm9zZXR0YS13b3JrYXJvdW5kcy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DOztBQUVuQywwRUFLcUM7QUFFckMsUUFBUSxDQUFDLDBCQUEwQixFQUFFLEdBQUcsRUFBRTtJQUN4QyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxFQUFFO1FBQ3BDLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7WUFDeEIsTUFBTSxJQUFJLEdBQUc7Ozs7Ozs7Ozs7O1VBV1QsQ0FBQztZQUVMLE1BQU0sQ0FBQyxJQUFBLCtDQUFvQixFQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUN4QyxNQUFNLENBQUMsZ0JBQWdCLENBQUMscUNBQXFDLENBQUMsQ0FDL0QsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsRUFBRTtZQUMxQixNQUFNLElBQUksR0FBRyw0REFBNEQsQ0FBQztZQUUxRSxNQUFNLENBQUMsSUFBQSwrQ0FBb0IsRUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDeEMsK0NBQStDLENBQ2hELENBQUM7WUFFRixNQUFNLGNBQWMsR0FBRyxtRUFBbUUsQ0FBQztZQUMzRixNQUFNLENBQUMsSUFBQSwrQ0FBb0IsRUFBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDbEQsMERBQTBELENBQzNELENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLEVBQUU7WUFDMUIsTUFBTSxJQUFJLEdBQUcsMERBQTBELENBQUM7WUFFeEUsTUFBTSxDQUFDLElBQUEsK0NBQW9CLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ3hDLDZDQUE2QyxDQUM5QyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxFQUFFO1lBQzlCLE1BQU0sSUFBSSxHQUFHLG1EQUFtRCxDQUFDO1lBRWpFLE1BQU0sQ0FBQyxJQUFBLCtDQUFvQixFQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUN4Qyw0Q0FBNEMsQ0FDN0MsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxFQUFFO1FBQ3BDLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7WUFDeEIsTUFBTSxJQUFJLEdBQUcseUNBQXlDLENBQUM7WUFFdkQsTUFBTSxDQUFDLElBQUEsK0NBQW9CLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUN0RSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLEVBQUU7WUFDOUIsTUFBTSxJQUFJLEdBQUcsK0JBQStCLENBQUM7WUFFN0MsTUFBTSxDQUFDLElBQUEsK0NBQW9CLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUVoRSxNQUFNLFdBQVcsR0FBRyxnQ0FBZ0MsQ0FBQztZQUVyRCxNQUFNLENBQUMsSUFBQSwrQ0FBb0IsRUFBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzFFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFO1FBQ2xDLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7WUFDeEIsTUFBTSxJQUFJLEdBQUcsaURBQWlELENBQUM7WUFFL0QsTUFBTSxDQUFDLElBQUEsNkNBQWtCLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ3RDLDJDQUEyQyxDQUM1QyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO1lBQ3pCLE1BQU0sSUFBSSxHQUFHLGlEQUFpRCxDQUFDO1lBRS9ELE1BQU0sQ0FBQyxJQUFBLDZDQUFrQixFQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUN0Qyx1Q0FBdUMsQ0FDeEMsQ0FBQztZQUVGLE1BQU0sZ0JBQWdCLEdBQUcsNkNBQTZDLENBQUM7WUFFdkUsTUFBTSxDQUFDLElBQUEsNkNBQWtCLEVBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDbEQsdUNBQXVDLENBQ3hDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLEVBQUU7WUFDOUIsTUFBTSxJQUFJLEdBQUcsb0NBQW9DLENBQUM7WUFFbEQsTUFBTSxDQUFDLElBQUEsNkNBQWtCLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ3RDLGdDQUFnQyxDQUNqQyxDQUFDO1lBRUYsTUFBTSxXQUFXLEdBQUcsbUNBQW1DLENBQUM7WUFFeEQsTUFBTSxDQUFDLElBQUEsNkNBQWtCLEVBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQzdDLCtCQUErQixDQUNoQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLEVBQUU7UUFDaEMsRUFBRSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRTtZQUN4QixNQUFNLElBQUksR0FBRywyRUFBMkUsQ0FBQztZQUV6RixNQUFNLENBQUMsSUFBQSwyQ0FBZ0IsRUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDcEMsMERBQTBELENBQzNELENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLEVBQUU7WUFDekIsTUFBTSxJQUFJLEdBQUcsd0VBQXdFLENBQUM7WUFFdEYsTUFBTSxDQUFDLElBQUEsMkNBQWdCLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ3BDLG1EQUFtRCxDQUNwRCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxFQUFFO1lBQzlCLE1BQU0sSUFBSSxHQUFHLDRFQUE0RSxDQUFDO1lBRTFGLE1BQU0sQ0FBQyxJQUFBLDJDQUFnQixFQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTztZQUNwQywwQ0FBMEM7WUFDMUMsNkdBQTZHO1lBQzdHLDZEQUE2RCxDQUM5RCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcblxuaW1wb3J0IHtcbiAgcmVwbGFjZUNzaGFycEltcG9ydHMsXG4gIHJlcGxhY2VHb0ltcG9ydHMsXG4gIHJlcGxhY2VKYXZhSW1wb3J0cyxcbiAgcmVwbGFjZVB5dGhvbkltcG9ydHMsXG59IGZyb20gXCIuLi9qc2lpLXJvc2V0dGEtd29ya2Fyb3VuZHNcIjtcblxuZGVzY3JpYmUoXCJqc2lpLXJvc2V0dGEtd29ya2Fyb3VuZHNcIiwgKCkgPT4ge1xuICBkZXNjcmliZShcInJlcGxhY2VQeXRob25JbXBvcnRzXCIsICgpID0+IHtcbiAgICBpdChcIm5vcm1hbCBpbXBvcnRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvZGUgPSBgXG5pbXBvcnQgY29uc3RydWN0cyBhcyBjb25zdHJ1Y3RzXG4jIFByb3ZpZGVyIGJpbmRpbmdzIGFyZSBnZW5lcmF0ZWQgYnkgcnVubmluZyBjZGt0biBnZXQuXG4jIFNlZSBodHRwczovL2Nka3RuLmlvL2RvY3MvY29uY2VwdHMvcHJvdmlkZXJzI2ltcG9ydC1wcm92aWRlcnMgZm9yIG1vcmUgZGV0YWlscy5cbmltcG9ydCAuLi5nZW4ucHJvdmlkZXJzLnNjYWxld2F5IGFzIHNjYWxld2F5XG5jbGFzcyBNeUNvbnZlcnRlZENvZGUoY29uc3RydWN0cy5Db25zdHJ1Y3QpOlxuICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzY29wZSwgbmFtZSk6XG4gICAgICAgIHN1cGVyKCkuX19pbml0X18oc2NvcGUsIG5hbWUpXG4gICAgICAgIHNjYWxld2F5LnByb3ZpZGVyLlNjYWxld2F5UHJvdmlkZXIoc2VsZiwgXCJzY2FsZXdheVwiLFxuICAgICAgICAgICAgcmVnaW9uPVwiZnItcGFyXCIsXG4gICAgICAgICAgICB6b25lPVwiZnItcGFyLTFcIlxuICAgICAgICApYDtcblxuICAgICAgZXhwZWN0KHJlcGxhY2VQeXRob25JbXBvcnRzKGNvZGUpKS50b0VxdWFsKFxuICAgICAgICBleHBlY3Quc3RyaW5nQ29udGFpbmluZyhcImltcG9ydCBpbXBvcnRzLnNjYWxld2F5IGFzIHNjYWxld2F5XCIpLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KFwiZ3JhbnVsYXIgaW1wb3J0c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb2RlID0gYGZyb20gLi4uZ2VuLnByb3ZpZGVycy5hd3MubGliLnJkc0NsdXN0ZXIgaW1wb3J0IFJkc0NsdXN0ZXJgO1xuXG4gICAgICBleHBlY3QocmVwbGFjZVB5dGhvbkltcG9ydHMoY29kZSkpLnRvRXF1YWwoXG4gICAgICAgIFwiZnJvbSBpbXBvcnRzLmF3cy5yZHNDbHVzdGVyIGltcG9ydCBSZHNDbHVzdGVyXCIsXG4gICAgICApO1xuXG4gICAgICBjb25zdCB3aXRob3V0TGliQ29kZSA9IGBmcm9tIC4uLmdlbi5wcm92aWRlcnMuYXp1cmVybS5yZXNvdXJjZV9ncm91cCBpbXBvcnQgUmVzb3VyY2VHcm91cGA7XG4gICAgICBleHBlY3QocmVwbGFjZVB5dGhvbkltcG9ydHMod2l0aG91dExpYkNvZGUpKS50b0VxdWFsKFxuICAgICAgICBcImZyb20gaW1wb3J0cy5henVyZXJtLnJlc291cmNlX2dyb3VwIGltcG9ydCBSZXNvdXJjZUdyb3VwXCIsXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoXCJyZXNvdXJjZSBpbXBvcnRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvZGUgPSBgaW1wb3J0IC4uLmdlbi5wcm92aWRlcnMuYXdzLmxpYi5yZHNDbHVzdGVyIGFzIFJkc0NsdXN0ZXJgO1xuXG4gICAgICBleHBlY3QocmVwbGFjZVB5dGhvbkltcG9ydHMoY29kZSkpLnRvRXF1YWwoXG4gICAgICAgIFwiaW1wb3J0IGltcG9ydHMuYXdzLnJkc0NsdXN0ZXIgYXMgUmRzQ2x1c3RlclwiLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KFwiZml4ZXMgbW9kdWxlIGltcG9ydHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgY29kZSA9IGBpbXBvcnQgLi4uZ2VuLm1vZHVsZXMuaGVsbG9fbW9kdWxlIGFzIEhlbGxvTW9kdWxlYDtcblxuICAgICAgZXhwZWN0KHJlcGxhY2VQeXRob25JbXBvcnRzKGNvZGUpKS50b0VxdWFsKFxuICAgICAgICBcImltcG9ydCBpbXBvcnRzLmhlbGxvX21vZHVsZSBhcyBIZWxsb01vZHVsZVwiLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJyZXBsYWNlQ3NoYXJwSW1wb3J0c1wiLCAoKSA9PiB7XG4gICAgaXQoXCJub3JtYWwgaW1wb3J0c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb2RlID0gYHVzaW5nIEdlbi5Qcm92aWRlcnMuQXdzLkxpYi5SZHNDbHVzdGVyO2A7XG5cbiAgICAgIGV4cGVjdChyZXBsYWNlQ3NoYXJwSW1wb3J0cyhjb2RlKSkudG9FcXVhbChcInVzaW5nIGF3cy5SZHNDbHVzdGVyO1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwiZml4ZXMgbW9kdWxlIGltcG9ydHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgY29kZSA9IGB1c2luZyBHZW4uTW9kdWxlcy5IZWxsb01vZHVsZWA7XG5cbiAgICAgIGV4cGVjdChyZXBsYWNlQ3NoYXJwSW1wb3J0cyhjb2RlKSkudG9FcXVhbChcInVzaW5nIEhlbGxvTW9kdWxlXCIpO1xuXG4gICAgICBjb25zdCBhbm90aGVyQ29kZSA9IGB1c2luZyBHZW4uTW9kdWxlcy5IZWxsby5Nb2R1bGVgO1xuXG4gICAgICBleHBlY3QocmVwbGFjZUNzaGFycEltcG9ydHMoYW5vdGhlckNvZGUpKS50b0VxdWFsKFwidXNpbmcgSGVsbG8uTW9kdWxlXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcInJlcGxhY2VKYXZhSW1wb3J0c1wiLCAoKSA9PiB7XG4gICAgaXQoXCJub3JtYWwgaW1wb3J0c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb2RlID0gYGltcG9ydCBnZW4ucHJvdmlkZXJzLnNjYWxld2F5Lm9iamVjdFJlc291cmNlLio7YDtcblxuICAgICAgZXhwZWN0KHJlcGxhY2VKYXZhSW1wb3J0cyhjb2RlKSkudG9FcXVhbChcbiAgICAgICAgXCJpbXBvcnQgaW1wb3J0cy5zY2FsZXdheS5vYmplY3RSZXNvdXJjZS4qO1wiLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KFwicHJlY2lzZSBpbXBvcnRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvZGUgPSBgaW1wb3J0IGdlbi5wcm92aWRlcnMuYXdzLmxpYi5zM0J1Y2tldC5TM0J1Y2tldDtgO1xuXG4gICAgICBleHBlY3QocmVwbGFjZUphdmFJbXBvcnRzKGNvZGUpKS50b0VxdWFsKFxuICAgICAgICBcImltcG9ydCBpbXBvcnRzLmF3cy5zM0J1Y2tldC5TM0J1Y2tldDtcIixcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHdpdGhvdXRMaWJJbXBvcnQgPSBgaW1wb3J0IGdlbi5wcm92aWRlcnMuYXdzLnMzQnVja2V0LlMzQnVja2V0O2A7XG5cbiAgICAgIGV4cGVjdChyZXBsYWNlSmF2YUltcG9ydHMod2l0aG91dExpYkltcG9ydCkpLnRvRXF1YWwoXG4gICAgICAgIFwiaW1wb3J0IGltcG9ydHMuYXdzLnMzQnVja2V0LlMzQnVja2V0O1wiLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KFwiZml4ZXMgbW9kdWxlIGltcG9ydHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgY29kZSA9IGBpbXBvcnQgZ2VuLm1vZHVsZXMuaGVsbG8ubW9kdWxlLio7YDtcblxuICAgICAgZXhwZWN0KHJlcGxhY2VKYXZhSW1wb3J0cyhjb2RlKSkudG9FcXVhbChcbiAgICAgICAgXCJpbXBvcnQgaW1wb3J0cy5oZWxsby5tb2R1bGUuKjtcIixcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGFub3RoZXJDb2RlID0gYGltcG9ydCBnZW4ubW9kdWxlcy5oZWxsb01vZHVsZS4qO2A7XG5cbiAgICAgIGV4cGVjdChyZXBsYWNlSmF2YUltcG9ydHMoYW5vdGhlckNvZGUpKS50b0VxdWFsKFxuICAgICAgICBcImltcG9ydCBpbXBvcnRzLmhlbGxvTW9kdWxlLio7XCIsXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcInJlcGxhY2VHb0ltcG9ydHNcIiwgKCkgPT4ge1xuICAgIGl0KFwibm9ybWFsIGltcG9ydHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgY29kZSA9IGBpbXBvcnQgXCJnaXRodWIuY29tL2F3cy1zYW1wbGVzL2R1bW15L2dlbi9wcm92aWRlcnMvc2NhbGV3YXkvb2JqZWN0QnVja2V0XCJgO1xuXG4gICAgICBleHBlY3QocmVwbGFjZUdvSW1wb3J0cyhjb2RlKSkudG9FcXVhbChcbiAgICAgICAgYGltcG9ydCBcImNkay50Zi9nby9zdGFjay9nZW5lcmF0ZWQvc2NhbGV3YXkvb2JqZWN0QnVja2V0XCJgLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KFwicHJlY2lzZSBpbXBvcnRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvZGUgPSBgaW1wb3J0IFwiZ2l0aHViLmNvbS9hd3Mtc2FtcGxlcy9kdW1teS9nZW4vcHJvdmlkZXJzL2F3cy9saWIvZGJJbnN0YW5jZVwiYDtcblxuICAgICAgZXhwZWN0KHJlcGxhY2VHb0ltcG9ydHMoY29kZSkpLnRvRXF1YWwoXG4gICAgICAgIGBpbXBvcnQgXCJjZGsudGYvZ28vc3RhY2svZ2VuZXJhdGVkL2F3cy9kYkluc3RhbmNlXCJgLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KFwiZml4ZXMgbW9kdWxlIGltcG9ydHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgY29kZSA9IGBpbXBvcnQgaGVsbG9Nb2R1bGUgXCJnaXRodWIuY29tL2F3cy1zYW1wbGVzL2R1bW15L2dlbi9tb2R1bGVzL2hlbGxvX21vZHVsZVwiYDtcblxuICAgICAgZXhwZWN0KHJlcGxhY2VHb0ltcG9ydHMoY29kZSkpLnRvRXF1YWwoXG4gICAgICAgIC8vIFRPRE86IFNldCB1cCBjZGt0bi5pby8gc3RhdGljIHJlZGlyZWN0P1xuICAgICAgICAvLyBcImdpdGh1Yi5jb20vb3Blbi1jb25zdHJ1Y3RzL2Nkay10ZXJyYWluL2V4YW1wbGVzL2dvL2RvY3VtZW50YXRpb24vZ2VuZXJhdGVkL3RlcnJhZm9ybS1hd3MtbW9kdWxlcy9hd3MvdnBjXCJcbiAgICAgICAgYGltcG9ydCBoZWxsb01vZHVsZSBcImNkay50Zi9nby9zdGFjay9nZW5lcmF0ZWQvaGVsbG9fbW9kdWxlXCJgLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
package/build/expressions.js
CHANGED
|
@@ -82,8 +82,7 @@ function canUseFqn(expression) {
|
|
|
82
82
|
}
|
|
83
83
|
function traversalToVariableName(scope, node) {
|
|
84
84
|
if (!hcl2json_2.TFExpressionSyntaxTree.isScopeTraversalExpression(node)) {
|
|
85
|
-
utils_1.logger.error(`Unexpected expression type ${node.type} with value ${node.meta.value} passed to convert to a variable.
|
|
86
|
-
${utils_1.leaveCommentText}`);
|
|
85
|
+
utils_1.logger.error(`Unexpected expression type ${node.type} with value ${node.meta.value} passed to convert to a variable. ${utils_1.fileBugCommentText}`);
|
|
87
86
|
return "";
|
|
88
87
|
}
|
|
89
88
|
const segments = node.meta.traversal;
|
|
@@ -378,7 +377,7 @@ function convertFunctionCallExpressionToTs(scope, node) {
|
|
|
378
377
|
const functionName = node.meta.name;
|
|
379
378
|
const mapping = functions_1.functionsMap[functionName];
|
|
380
379
|
if (!mapping) {
|
|
381
|
-
utils_1.logger.error(`Unknown function ${functionName} encountered. ${utils_1.
|
|
380
|
+
utils_1.logger.error(`Unknown function ${functionName} encountered. ${utils_1.fileBugCommentText}`);
|
|
382
381
|
const argumentExpressions = node.children.map((child) => convertTFExpressionAstToTs(scope, child));
|
|
383
382
|
return t.callExpression(t.identifier(functionName), argumentExpressions);
|
|
384
383
|
}
|
|
@@ -630,4 +629,4 @@ function dynamicVariableToAst(scope, node, iteratorName, block = "each") {
|
|
|
630
629
|
throw new Error(`Can not create AST for iterator variable of '${node.meta.value}'`);
|
|
631
630
|
}
|
|
632
631
|
exports.dynamicVariableToAst = dynamicVariableToAst;
|
|
633
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwcmVzc2lvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZXhwcmVzc2lvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLGdEQUFrQztBQUNsQywrREFBdUM7QUFDdkMsbUNBQThEO0FBTTlELDhDQUE4RTtBQUM5RSw4Q0FHeUI7QUFDekIsNkRBQTZEO0FBQzdELDZDQUE4RDtBQUU5RCx1REFBa0Q7QUFDbEQsNkNBQWlEO0FBQ2pELDJDQUEyQztBQUUzQyxNQUFNLHdCQUF3QixHQUFHO0lBQy9CLFNBQVMsRUFBRSxJQUFJO0lBQ2YsVUFBVSxFQUFFLEtBQUs7SUFDakIsV0FBVyxFQUFFLElBQUk7SUFDakIsa0JBQWtCLEVBQUUsS0FBSztJQUN6QixRQUFRLEVBQUUsSUFBSTtJQUNkLGVBQWUsRUFBRSxLQUFLO0lBQ3RCLEtBQUssRUFBRSxJQUFJO0lBQ1gsUUFBUSxFQUFFLEtBQUs7SUFDZixHQUFHLEVBQUUsS0FBSztJQUNWLFFBQVEsRUFBRSxLQUFLO0lBQ2YsUUFBUSxFQUFFLEtBQUs7SUFDZixNQUFNLEVBQUUsS0FBSztJQUNiLE1BQU0sRUFBRSxLQUFLO0NBQ2QsQ0FBQztBQUVGLE1BQU0sdUJBQXVCLEdBQUc7SUFDOUIsVUFBVSxFQUFFLEtBQUs7SUFDakIsTUFBTSxFQUFFLFFBQVE7Q0FDakIsQ0FBQztBQUtGLFNBQVMsc0JBQXNCLENBQzdCLFVBQXdDLEVBQ3hDLFFBQVEsR0FBRyxLQUFLO0lBRWhCLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNkLElBQUksUUFBUSxJQUFJLGlDQUFHLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN2RCxJQUFJLEdBQUcsR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUNELE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFD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cUJBQU0sQ0FBQztvQkFDTixPQUFPLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztnQkFDOUMsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUNIO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sSUFBSSxLQUFLLENBQ2IsZ0RBQWdELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQ25FLENBQUM7QUFDSixDQUFDO0FBL0RELG9EQStEQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgKiBhcyB0IGZyb20gXCJAYmFiZWwvdHlwZXNcIjtcbmltcG9ydCB0ZW1wbGF0ZSBmcm9tIFwiQGJhYmVsL3RlbXBsYXRlXCI7XG5pbXBvcnQgeyBjYW1lbENhc2UsIGxlYXZlQ29tbWVudFRleHQsIGxvZ2dlciB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQge1xuICBJdGVyYXRvclZhcmlhYmxlUmVmZXJlbmNlLFxuICBQcm9ncmFtU2NvcGUsXG4gIFJlc291cmNlU2NvcGUsXG59IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBnZXRSZWZlcmVuY2VzSW5FeHByZXNzaW9uLCBnZXRFeHByZXNzaW9uQXN0IH0gZnJvbSBcIkBjZGt0bi9oY2wyanNvblwiO1xuaW1wb3J0IHtcbiAgVEZFeHByZXNzaW9uU3ludGF4VHJlZSBhcyB0ZXgsXG4gIHdyYXBUZXJyYWZvcm1FeHByZXNzaW9uLFxufSBmcm9tIFwiQGNka3RuL2hjbDJqc29uXCI7XG5pbXBvcnQgeyBmdW5jdGlvbnNNYXAgfSBmcm9tIFwiLi9mdW5jdGlvbi1iaW5kaW5ncy9mdW5jdGlvbnNcIjtcbmltcG9ydCB7IGNvZXJjZVR5cGUsIGZpbmRFeHByZXNzaW9uVHlwZSB9IGZyb20gXCIuL2NvZXJjZVR5cGVcIjtcbmltcG9ydCB7IEF0dHJpYnV0ZVR5cGUgfSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcbmltcG9ydCB7IGdldFR5cGVBdFBhdGggfSBmcm9tIFwiLi90ZXJyYWZvcm1TY2hlbWFcIjtcbmltcG9ydCB7IGNvbnRhaW5zUmVmZXJlbmNlIH0gZnJvbSBcIi4vcmVmZXJlbmNlc1wiO1xuaW1wb3J0IHsgdmFyaWFibGVOYW1lIH0gZnJvbSBcIi4vdmFyaWFibGVzXCI7XG5cbmNvbnN0IHRmQmluYXJ5T3BlcmF0b3JzVG9DZGt0ZiA9IHtcbiAgbG9naWNhbE9yOiBcIm9yXCIsXG4gIGxvZ2ljYWxBbmQ6IFwiYW5kXCIsXG4gIGdyZWF0ZXJUaGFuOiBcImd0XCIsXG4gIGdyZWF0ZXJUaGFuT3JFcXVhbDogXCJndGVcIixcbiAgbGVzc1RoYW46IFwibHRcIixcbiAgbGVzc1RoYW5PckVxdWFsOiBcImx0ZVwiLFxuICBlcXVhbDogXCJlcVwiLFxuICBub3RFcXVhbDogXCJuZXFcIixcbiAgYWRkOiBcImFkZFwiLFxuICBzdWJ0cmFjdDogXCJzdWJcIixcbiAgbXVsdGlwbHk6IFwibXVsXCIsXG4gIGRpdmlkZTogXCJkaXZcIixcbiAgbW9kdWxvOiBcIm1vZFwiLFxufTtcblxuY29uc3QgdGZVbmFyeU9wZXJhdG9yc1RvQ2RrdGYgPSB7XG4gIGxvZ2ljYWxOb3Q6IFwibm90XCIsXG4gIG5lZ2F0ZTogXCJuZWdhdGVcIixcbn07XG5cbnR5cGUgc3VwcG9ydGVkQmluYXJ5T3BlcmF0b3JzID0ga2V5b2YgdHlwZW9mIHRmQmluYXJ5T3BlcmF0b3JzVG9DZGt0ZjtcbnR5cGUgc3VwcG9ydGVkVW5hcnlPcGVyYXRvcnMgPSBrZXlvZiB0eXBlb2YgdGZVbmFyeU9wZXJhdG9yc1RvQ2RrdGY7XG5cbmZ1bmN0aW9uIHRyYXZlcnNhbFBhcnRzVG9TdHJpbmcoXG4gIHRyYXZlcnNhbHM6IHRleC5UZXJyYWZvcm1UcmF2ZXJzYWxQYXJ0W10sXG4gIGFzU3VmZml4ID0gZmFsc2UsXG4pIHtcbiAgbGV0IHNlZWQgPSBcIlwiO1xuICBpZiAoYXNTdWZmaXggJiYgdGV4LmlzTmFtZVRyYXZlcnNhbFBhcnQodHJhdmVyc2Fsc1swXSkpIHtcbiAgICBzZWVkID0gXCIuXCI7XG4gIH1cbiAgcmV0dXJuIHRyYXZlcnNhbHMucmVkdWNlKChhY2MsIHBhcnQpID0+IHtcbiAgICBpZiAocGFydC50eXBlID09PSBcIm5hbWVUcmF2ZXJzYWxcIikge1xuICAgICAgaWYgKGFjYyA9PT0gc2VlZCkge1xuICAgICAgICByZXR1cm4gYCR7YWNjfSR7cGFydC5zZWdtZW50fWA7XG4gICAgICB9XG4gICAgICByZXR1cm4gYCR7YWNjfS4ke3BhcnQuc2VnbWVudH1gO1xuICAgIH1cbiAgICByZXR1cm4gYCR7YWNjfVske3BhcnQuc2VnbWVudH1dYDtcbiAgfSwgc2VlZCk7XG59XG5cbmZ1bmN0aW9uIGNhblVzZUZxbihleHByZXNzaW9uOiB0ZXguRXhwcmVzc2lvblR5cGUpIHtcbiAgaWYgKCF0ZXguaXNTY29wZVRyYXZlcnNhbEV4cHJlc3Npb24oZXhwcmVzc2lvbikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCByb290U2VnbWVudCA9IGV4cHJlc3Npb24ubWV0YS50cmF2ZXJzYWxbMF0uc2VnbWVudDtcblxuICByZXR1cm4gIVtcInZhclwiLCBcImxvY2FsXCJdLmluY2x1ZGVzKHJvb3RTZWdtZW50KTtcbn1cblxuZnVuY3Rpb24gdHJhdmVyc2FsVG9WYXJpYWJsZU5hbWUoXG4gIHNjb3BlOiBQcm9ncmFtU2NvcGUsXG4gIG5vZGU6IHRleC5FeHByZXNzaW9uVHlwZSxcbikge1xuICBpZiAoIXRleC5pc1Njb3BlVHJhdmVyc2FsRXhwcmVzc2lvbihub2RlKSkge1xuICAgIGxvZ2dlci5lcnJvcihcbiAgICAgIGBVbmV4cGVjdGVkIGV4cHJlc3Npb24gdHlwZSAke25vZGUudHlwZX0gd2l0aCB2YWx1ZSAke25vZGUubWV0YS52YWx1ZX0gcGFzc2VkIHRvIGNvbnZlcnQgdG8gYSB2YXJpYWJsZS4gXG4gICAgICAgICR7bGVhdmVDb21tZW50VGV4dH1gLFxuICAgICk7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBjb25zdCBzZWdtZW50cyA9IG5vZGUubWV0YS50cmF2ZXJzYWw7XG4gIGlmIChzZWdtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gbm9kZS5tZXRhLmZ1bGxBY2Nlc3NvcjtcbiAgfVxuICBjb25zdCByb290U2VnbWVudCA9IHNlZ21lbnRzWzBdLnNlZ21lbnQ7XG4gIGNvbnN0IHJlc291cmNlID1cbiAgICByb290U2VnbWVudCA9PT0gXCJkYXRhXCJcbiAgICAgID8gYCR7c2VnbWVudHNbMF0uc2VnbWVudH0uJHtzZWdtZW50c1sxXS5zZWdtZW50fWBcbiAgICAgIDogcm9vdFNlZ21lbnQ7XG4gIGNvbnN0IG5hbWUgPVxuICAgIHJvb3RTZWdtZW50ID09PSBcImRhdGFcIiA/IHNlZ21lbnRzWzJdLnNlZ21lbnQgOiBzZWdtZW50c1sxXS5zZWdtZW50O1xuXG4gIHJldHVybiB2YXJpYWJsZU5hbWUoc2NvcGUsIHJlc291cmNlLCBuYW1lKTtcbn1cblxuZnVuY3Rpb24gZXhwcmVzc2lvbkZvclNlcmlhbFN0cmluZ0NvbmNhdGVuYXRpb24oXG4gIHNjb3BlOiBSZXNvdXJjZVNjb3BlLFxuICBub2RlczogdC5FeHByZXNzaW9uW10sXG4pIHtcbiAgY29uc3QgcmVkdWNlZE5vZGVzID0gbm9kZXMucmVkdWNlKChhY2MsIG5vZGUpID0+IHtcbiAgICBjb25zdCBwcmV2ID0gYWNjW2FjYy5sZW5ndGggLSAxXTtcbiAgICBpZiAoIXByZXYpIHJldHVybiBbbm9kZV07XG5cbiAgICBpZiAodC5pc1N0cmluZ0xpdGVyYWwocHJldikgJiYgdC5pc1N0cmluZ0xpdGVyYWwobm9kZSkpIHtcbiAgICAgIGFjYy5wb3AoKTtcbiAgICAgIGFjYy5wdXNoKHQuc3RyaW5nTGl0ZXJhbChwcmV2LnZhbHVlICsgbm9kZS52YWx1ZSkpO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9XG5cbiAgICBhY2MucHVzaChub2RlKTtcbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSBhcyB0LkV4cHJlc3Npb25bXSk7XG5cbiAgcmV0dXJuIHJlZHVjZWROb2Rlcy5yZWR1Y2UoXG4gICAgKGFjYzogdC5FeHByZXNzaW9uIHwgdW5kZWZpbmVkLCBub2RlOiB0LkV4cHJlc3Npb24pID0+IHtcbiAgICAgIGlmICghYWNjKSB7XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgICAgfVxuXG4gICAgICAvLyB3cmFwIGFjY2VzcyB0byBkeW5hbWljIGJsb2NrcyBpbiBUb2tlbi5hc1N0cmluZygpIGFzIHRoZXkgcmV0dXJuIGEgTGF6eVxuICAgICAgLy8gZm9yIC5rZXkgYW5kIC52YWx1ZSB3aGljaCBjYW4ndCBiZSBjb25jYXRlbmF0ZWQgaW4gbGFuZ3VhZ2VzIGxpa2UgUHl0aG9uXG4gICAgICAvLyBiZWNhdXNlIEpTSUkgY3VycmVudGx5IGhhcyBubyBzdXBwb3J0IGZvciB0aGUgdG9TdHJpbmcoKSBtZXRob2QgaW5cbiAgICAgIC8vIGxhbmd1YWdlcyBvdGhlciB0aGFuIFR5cGVTY3JpcHQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvanNpaS9pc3N1ZXMvMzgwXG4gICAgICAvLyBleGFtcGxlOiBkeW5hbWljX2l0ZXJhdG9yMC5rZXkgLyBkeW5hbWljX2l0ZXJhdG9yMC52YWx1ZVxuICAgICAgaWYgKFxuICAgICAgICB0LmlzTWVtYmVyRXhwcmVzc2lvbihub2RlKSAmJlxuICAgICAgICB0LmlzSWRlbnRpZmllcihub2RlLm9iamVjdCkgJiZcbiAgICAgICAgT2JqZWN0LnZhbHVlcyhzY29wZS5zY29wZWRWYXJpYWJsZXMgfHwge30pLmluY2x1ZGVzKG5vZGUub2JqZWN0Lm5hbWUpICYmXG4gICAgICAgIHQuaXNJZGVudGlmaWVyKG5vZGUucHJvcGVydHkpICYmXG4gICAgICAgIFtcImtleVwiLCBcInZhbHVlXCJdLmluY2x1ZGVzKG5vZGUucHJvcGVydHkubmFtZSlcbiAgICAgICkge1xuICAgICAgICBub2RlID0gY29lcmNlVHlwZShzY29wZSwgbm9kZSwgXCJkeW5hbWljXCIsIFwic3RyaW5nXCIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdC5iaW5hcnlFeHByZXNzaW9uKFwiK1wiLCBhY2MgYXMgdC5FeHByZXNzaW9uLCBub2RlKTtcbiAgICB9LFxuICApO1xufVxuXG5mdW5jdGlvbiBnZXRUZlJlc291cmNlUGF0aEZyb21Ob2RlKG5vZGU6IHRleC5TY29wZVRyYXZlcnNhbEV4cHJlc3Npb24pIHtcbiAgY29uc3Qgc2VnbWVudHMgPSBub2RlLm1ldGEudHJhdmVyc2FsO1xuICBsZXQgcmVzb3VyY2UgPSBzZWdtZW50c1swXS5zZWdtZW50O1xuICBsZXQgcmVzdWx0ID0gW107XG4gIGxldCBhdHRyaWJ1dGVzID0gW107XG5cbiAgaWYgKHNlZ21lbnRzWzBdLnNlZ21lbnQgPT09IFwiZGF0YVwiKSB7XG4gICAgcmVzdWx0LnB1c2goc2VnbWVudHNbMF0uc2VnbWVudCk7XG4gICAgcmVzb3VyY2UgPSBzZWdtZW50c1sxXS5zZWdtZW50O1xuICAgIGF0dHJpYnV0ZXMgPSBzZWdtZW50cy5zbGljZSgzKTsgLy8gd2Ugd2FudCB0byBza2lwIHRoZSB2YXJpYWJsZSBuYW1lXG4gIH0gZWxzZSB7XG4gICAgYXR0cmlidXRlcyA9IHNlZ21lbnRzLnNsaWNlKDIpOyAvLyB3ZSB3YW50IHRvIHNraXAgdGhlIHZhcmlhYmxlIG5hbWVcbiAgfVxuXG4gIGNvbnN0IFtwcm92aWRlciwgLi4ucmVzb3VyY2VOYW1lRnJhZ21lbnRzXSA9IHJlc291cmNlLnNwbGl0KFwiX1wiKTtcblxuICAvLyBIYWNrOiBUaGlzIGhhcHBlbnMgaW4gdGhlIGNhc2Ugb2YgYGV4dGVybmFsYCBwcm92aWRlclxuICAvLyB3aGVyZSB0aGUgZGF0YSBzb3VyY2UgZG9lcyBub3QgaGF2ZSBhIHByb3ZpZGVyIG5hbWUgcHJlZml4XG4gIGlmIChyZXNvdXJjZU5hbWVGcmFnbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmVzb3VyY2VOYW1lRnJhZ21lbnRzLnB1c2gocHJvdmlkZXIpO1xuICB9XG5cbiAgcmVzdWx0LnB1c2gocHJvdmlkZXIpO1xuICByZXN1bHQucHVzaChyZXNvdXJjZU5hbWVGcmFnbWVudHMuam9pbihcIl9cIikpO1xuICByZXN1bHQgPSBbXG4gICAgLi4ucmVzdWx0LFxuICAgIC4uLmF0dHJpYnV0ZXMubWFwKChzZWcpID0+IHtcbiAgICAgIGlmICh0ZXguaXNJbmRleFRyYXZlcnNhbFBhcnQoc2VnKSkge1xuICAgICAgICByZXR1cm4gYFske3NlZy5zZWdtZW50fV1gO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHNlZy5zZWdtZW50O1xuICAgIH0pLFxuICBdO1xuXG4gIHJldHVybiByZXN1bHQuam9pbihcIi5cIik7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRMaXRlcmFsVmFsdWVFeHByZXNzaW9uVG9UcyhcbiAgX3Njb3BlOiBSZXNvdXJjZVNjb3BlLFxuICBub2RlOiB0ZXguTGl0ZXJhbFZhbHVlRXhwcmVzc2lvbixcbikge1xuICBjb25zdCBsaXRlcmFsVHlwZSA9IG5vZGUubWV0YS50eXBlO1xuICBpZiAobGl0ZXJhbFR5cGUgPT09IFwibnVtYmVyXCIpIHtcbiAgICByZXR1cm4gdC5udW1lcmljTGl0ZXJhbChOdW1iZXIobm9kZS5tZXRhLnZhbHVlKSk7XG4gIH1cbiAgaWYgKGxpdGVyYWxUeXBlID09PSBcImJvb2xcIikge1xuICAgIHJldHVybiB0LmJvb2xlYW5MaXRlcmFsKG5vZGUubWV0YS52YWx1ZSA9PT0gXCJ0cnVlXCIgPyB0cnVlIDogZmFsc2UpO1xuICB9XG5cbiAgcmV0dXJuIHQuc3RyaW5nTGl0ZXJhbChub2RlLm1ldGEudmFsdWUpO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0U2NvcGVUcmF2ZXJzYWxFeHByZXNzaW9uVG9UcyhcbiAgc2NvcGU6IFJlc291cmNlU2NvcGUsXG4gIG5vZGU6IHRleC5TY29wZVRyYXZlcnNhbEV4cHJlc3Npb24sXG4pIHtcbiAgY29uc3QgaGFzUmVmZXJlbmNlID0gY29udGFpbnNSZWZlcmVuY2Uobm9kZSk7XG5cbiAgY29uc3Qgc2VnbWVudHMgPSBub2RlLm1ldGEudHJhdmVyc2FsO1xuXG4gIGlmIChzZWdtZW50c1swXS5zZWdtZW50ID09PSBcImVhY2hcIiAmJiBzY29wZS5mb3JFYWNoSXRlcmF0b3JOYW1lKSB7XG4gICAgcmV0dXJuIGR5bmFtaWNWYXJpYWJsZVRvQXN0KHNjb3BlLCBub2RlLCBzY29wZS5mb3JFYWNoSXRlcmF0b3JOYW1lKTtcbiAgfVxuXG4gIGlmIChzZWdtZW50c1swXS5zZWdtZW50ID09PSBcImNvdW50XCIgJiYgc2NvcGUuY291bnRJdGVyYXRvck5hbWUpIHtcbiAgICByZXR1cm4gZHluYW1pY1ZhcmlhYmxlVG9Bc3Qoc2NvcGUsIG5vZGUsIHNjb3BlLmNvdW50SXRlcmF0b3JOYW1lLCBcImNvdW50XCIpO1xuICB9XG5cbiAgaWYgKHNlZ21lbnRzWzBdLnNlZ21lbnQgPT09IFwic2VsZlwiKSB7XG4gICAgc2NvcGUuaW1wb3J0YWJsZXMucHVzaCh7XG4gICAgICBjb25zdHJ1Y3ROYW1lOiBcIlRlcnJhZm9ybVNlbGZcIixcbiAgICAgIHByb3ZpZGVyOiBcImNka3RuXCIsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdC5jYWxsRXhwcmVzc2lvbihcbiAgICAgIHQubWVtYmVyRXhwcmVzc2lvbih0LmlkZW50aWZpZXIoXCJUZXJyYWZvcm1TZWxmXCIpLCB0LmlkZW50aWZpZXIoXCJnZXRBbnlcIikpLFxuXG4gICAgICBbdC5zdHJpbmdMaXRlcmFsKHRyYXZlcnNhbFBhcnRzVG9TdHJpbmcoc2VnbWVudHMuc2xpY2UoMSkpKV0sXG4gICAgKTtcbiAgfVxuXG4gIC8vIHNldHRpbmcudmFsdWUsIHNldHRpbmcudmFsdWVbMV0uaWRcbiAgY29uc3QgZHluYW1pY0Jsb2NrID0gc2NvcGUuc2NvcGVkVmFyaWFibGVzPy5bc2VnbWVudHNbMF0uc2VnbWVudF07XG4gIGlmIChkeW5hbWljQmxvY2spIHtcbiAgICBpZiAoZHluYW1pY0Jsb2NrID09PSBcImR5bmFtaWMtYmxvY2tcIikge1xuICAgICAgcmV0dXJuIGR5bmFtaWNWYXJpYWJsZVRvQXN0KFxuICAgICAgICBzY29wZSxcbiAgICAgICAgbm9kZSxcbiAgICAgICAgZHluYW1pY0Jsb2NrLFxuICAgICAgICB0cmF2ZXJzYWxQYXJ0c1RvU3RyaW5nKHNlZ21lbnRzKSxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBkeW5hbWljVmFyaWFibGVUb0FzdChzY29wZSwgbm9kZSwgZHluYW1pY0Jsb2NrLCBzZWdtZW50c1swXS5zZWdtZW50KTtcbiAgfVxuXG4gIC8vIFRoaXMgbWF5IGJlIGEgdmFyaWFibGUgcmVmZXJlbmNlIHRoYXQgd2UgZG9uJ3QgdW5kZXJzdGFuZCB5ZXQsIHNvIHdlIHdyYXAgaXQgaW4gYSB0ZW1wbGF0ZSBzdHJpbmdcbiAgLy8gZm9yIFRlcnJhZm9ybSB0byBoYW5kbGVcbiAgbGV0IHZhcklkZW50aWZpZXI6IHQuRXhwcmVzc2lvbiA9IHQuc3RyaW5nTGl0ZXJhbChcbiAgICBgXFwkeyR7bm9kZS5tZXRhLmZ1bGxBY2Nlc3Nvcn19YCxcbiAgKTtcblxuICBpZiAoaGFzUmVmZXJlbmNlKSB7XG4gICAgdmFySWRlbnRpZmllciA9IHQuaWRlbnRpZmllcihcbiAgICAgIGNhbWVsQ2FzZSh0cmF2ZXJzYWxUb1ZhcmlhYmxlTmFtZShzY29wZSwgbm9kZSkpLFxuICAgICk7XG4gIH1cblxuICBpZiAoW1widmFyXCIsIFwibG9jYWxcIl0uaW5jbHVkZXMoc2VnbWVudHNbMF0uc2VnbWVudCkpIHtcbiAgICBjb25zdCB2YXJpYWJsZUFjY2Vzc29yID1cbiAgICAgIHNlZ21lbnRzWzBdLnNlZ21lbnQgPT09IFwidmFyXCJcbiAgICAgICAgPyB0Lm1lbWJlckV4cHJlc3Npb24odmFySWRlbnRpZmllciwgdC5pZGVudGlmaWVyKFwidmFsdWVcIikpXG4gICAgICAgIDogdmFySWRlbnRpZmllcjtcblxuICAgIGlmIChzZWdtZW50cy5sZW5ndGggPiAyKSB7XG4gICAgICBzY29wZS5pbXBvcnRhYmxlcy5wdXNoKHtcbiAgICAgICAgY29uc3RydWN0TmFtZTogXCJGblwiLFxuICAgICAgICBwcm92aWRlcjogXCJjZGt0blwiLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBjYWxsZWUgPSB0Lm1lbWJlckV4cHJlc3Npb24oXG4gICAgICAgIHQuaWRlbnRpZmllcihcIkZuXCIpLFxuICAgICAgICB0LmlkZW50aWZpZXIoXCJsb29rdXBOZXN0ZWRcIiksXG4gICAgICApO1xuICAgICAgcmV0dXJuIHQuY2FsbEV4cHJlc3Npb24oY2FsbGVlLCBbXG4gICAgICAgIHZhcmlhYmxlQWNjZXNzb3IsXG4gICAgICAgIHQuYXJyYXlFeHByZXNzaW9uKFxuICAgICAgICAgIHNlZ21lbnRzLnNsaWNlKDIpLm1hcCgocykgPT4gdC5zdHJpbmdMaXRlcmFsKHMuc2VnbWVudCkpLFxuICAgICAgICApLFxuICAgICAgXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhcmlhYmxlQWNjZXNzb3I7XG4gIH1cblxuICBpZiAoIWhhc1JlZmVyZW5jZSB8fCBzY29wZS53aXRoaW5PdmVycmlkZUV4cHJlc3Npb24pIHtcbiAgICByZXR1cm4gdmFySWRlbnRpZmllcjtcbiAgfVxuXG4gIGNvbnN0IHJvb3RTZWdtZW50ID0gc2VnbWVudHNbMF0uc2VnbWVudDtcbiAgY29uc3QgYXR0cmlidXRlSW5kZXggPSByb290U2VnbWVudCA9PT0gXCJkYXRhXCIgPyAzIDogMjtcbiAgY29uc3QgYXR0cmlidXRlU2VnbWVudHMgPSBzZWdtZW50cy5zbGljZShhdHRyaWJ1dGVJbmRleCk7XG4gIGNvbnN0IG51bWVyaWNBY2Nlc3NvckluZGV4ID0gYXR0cmlidXRlU2VnbWVudHMuZmluZEluZGV4KChzZWcpID0+XG4gICAgdGV4LmlzSW5kZXhUcmF2ZXJzYWxQYXJ0KHNlZyksXG4gICk7XG4gIGxldCBtaW5BY2Nlc3NvckluZGV4ID0gbnVtZXJpY0FjY2Vzc29ySW5kZXg7XG4gIGxldCBtYXBBY2Nlc3NvckluZGV4ID0gLTE7XG4gIGlmIChudW1lcmljQWNjZXNzb3JJbmRleCA9PT0gLTEpIHtcbiAgICAvLyBvbmx5IGRvIHRoaXMgaWYgd2UgaGF2ZSB0bywgaWYgd2UgYWxyZWFkeSBoYXZlIGFcbiAgICAvLyBudW1lcmljIGFjY2Vzc29yLCB3ZSBkb24ndCBoYXZlIHRvIGRvIHRoaXMgYWRkaXRpb25hbCB3b3JrXG4gICAgY29uc3QgcmVzb3VyY2VQYXRoID0gZ2V0VGZSZXNvdXJjZVBhdGhGcm9tTm9kZShub2RlKTtcbiAgICBsZXQgdXNpbmdTdWJQYXRoVHlwZSA9IGZhbHNlO1xuICAgIGNvbnN0IHBhcnRzID0gcmVzb3VyY2VQYXRoLnNwbGl0KFwiLlwiKS5maWx0ZXIoKHApID0+IHAgIT09IFwiXCIpO1xuICAgIGNvbnN0IG1pblBhcnRzID0gYXR0cmlidXRlSW5kZXg7IC8vIHdlIG5lZWQgdG8gc3RvcCBiZWZvcmUgZGF0YS5hd3MucmVzb3VyY2VfbmFtZSBvciBhd3MucmVzb3VyY2VfbmFtZVxuICAgIGNvbnN0IG9yaWdpbmFsUGFydHMgPSBwYXJ0cy5sZW5ndGg7XG4gICAgbGV0IGhhc01hcEFjY2Vzc29yID0gZmFsc2U7XG4gICAgd2hpbGUgKHBhcnRzLmxlbmd0aCA+PSBtaW5QYXJ0cykge1xuICAgICAgY29uc3QgdHlwZSA9IGdldFR5cGVBdFBhdGgoc2NvcGUucHJvdmlkZXJTY2hlbWEsIHBhcnRzLmpvaW4oXCIuXCIpKTtcbiAgICAgIGlmICh0eXBlICE9PSBudWxsKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHR5cGUpICYmIHR5cGVbMF0gPT09IFwibWFwXCIgJiYgdXNpbmdTdWJQYXRoVHlwZSkge1xuICAgICAgICAgIGhhc01hcEFjY2Vzc29yID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcGFydHMucG9wKCk7XG4gICAgICB1c2luZ1N1YlBhdGhUeXBlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoaGFzTWFwQWNjZXNzb3IpIHtcbiAgICAgIG1hcEFjY2Vzc29ySW5kZXggPSBvcmlnaW5hbFBhcnRzIC0gcGFydHMubGVuZ3RoIC0gMTtcbiAgICAgIG1pbkFjY2Vzc29ySW5kZXggPSBtYXBBY2Nlc3NvckluZGV4O1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG5lZWRzUHJvcGVydHlBY2Nlc3MgPSBtaW5BY2Nlc3NvckluZGV4ID49IDA7XG5cbiAgY29uc3QgcmVmU2VnbWVudHMgPSBuZWVkc1Byb3BlcnR5QWNjZXNzXG4gICAgPyBhdHRyaWJ1dGVTZWdtZW50cy5zbGljZSgwLCBtaW5BY2Nlc3NvckluZGV4KVxuICAgIDogYXR0cmlidXRlU2VnbWVudHM7XG4gIGNvbnN0IG5vblJlZlNlZ21lbnRzID0gbmVlZHNQcm9wZXJ0eUFjY2Vzc1xuICAgID8gYXR0cmlidXRlU2VnbWVudHMuc2xpY2UobWluQWNjZXNzb3JJbmRleClcbiAgICA6IFtdO1xuXG4gIGNvbnN0IHJlZiA9IHJlZlNlZ21lbnRzLnJlZHVjZShcbiAgICAoYWNjOiB0LkV4cHJlc3Npb24sIHNlZywgaW5kZXgpID0+XG4gICAgICB0Lm1lbWJlckV4cHJlc3Npb24oXG4gICAgICAgIGFjYyxcbiAgICAgICAgdC5pZGVudGlmaWVyKFxuICAgICAgICAgIGluZGV4ID09PSAwICYmIHJvb3RTZWdtZW50ID09PSBcIm1vZHVsZVwiXG4gICAgICAgICAgICA/IGNhbWVsQ2FzZShzZWcuc2VnbWVudCArIFwiT3V0cHV0XCIpXG4gICAgICAgICAgICA6IGNhbWVsQ2FzZShzZWcuc2VnbWVudCksXG4gICAgICAgICksXG4gICAgICApLFxuICAgIHZhcklkZW50aWZpZXIsXG4gICk7XG5cbiAgaWYgKG5vblJlZlNlZ21lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiByZWY7XG4gIH1cblxuICBzY29wZS5pbXBvcnRhYmxlcy5wdXNoKHtcbiAgICBjb25zdHJ1Y3ROYW1lOiBcIkZuXCIsXG4gICAgcHJvdmlkZXI6IFwiY2RrdG5cIixcbiAgfSk7XG4gIGNvbnN0IGNhbGxlZSA9IHQubWVtYmVyRXhwcmVzc2lvbihcbiAgICB0LmlkZW50aWZpZXIoXCJGblwiKSxcbiAgICB0LmlkZW50aWZpZXIoXCJsb29rdXBOZXN0ZWRcIiksXG4gICk7XG4gIHJldHVybiB0LmNhbGxFeHByZXNzaW9uKGNhbGxlZSwgW1xuICAgIHJlZixcbiAgICB0LmFycmF5RXhwcmVzc2lvbihub25SZWZTZWdtZW50cy5tYXAoKHMpID0+IHQuc3RyaW5nTGl0ZXJhbChzLnNlZ21lbnQpKSksXG4gIF0pO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0VW5hcnlPcEV4cHJlc3Npb25Ub1RzKFxuICBzY29wZTogUmVzb3VyY2VTY29wZSxcbiAgbm9kZTogdGV4LlVuYXJ5T3BFeHByZXNzaW9uLFxuKSB7XG4gIGNvbnN0IG9wZXJhbmQgPSBjb252ZXJ0VEZFeHByZXNzaW9uQXN0VG9UcyhcbiAgICBzY29wZSxcbiAgICB0ZXguZ2V0Q2hpbGRXaXRoVmFsdWUobm9kZSwgbm9kZS5tZXRhLnZhbHVlRXhwcmVzc2lvbikhLFxuICApO1xuXG4gIGxldCBmbk5hbWUgPSBub2RlLm1ldGEub3BlcmF0b3I7XG4gIGlmICh0ZlVuYXJ5T3BlcmF0b3JzVG9DZGt0Zltmbk5hbWUgYXMgc3VwcG9ydGVkVW5hcnlPcGVyYXRvcnNdKSB7XG4gICAgZm5OYW1lID0gdGZVbmFyeU9wZXJhdG9yc1RvQ2RrdGZbZm5OYW1lIGFzIHN1cHBvcnRlZFVuYXJ5T3BlcmF0b3JzXTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBjb252ZXJ0IHVua25vd24gb3BlcmF0b3IgJHtub2RlLm1ldGEub3BlcmF0b3J9YCk7XG4gIH1cblxuICBzY29wZS5pbXBvcnRhYmxlcy5wdXNoKHtcbiAgICBjb25zdHJ1Y3ROYW1lOiBcIk9wXCIsXG4gICAgcHJvdmlkZXI6IFwiY2RrdG5cIixcbiAgfSk7XG5cbiAgY29uc3QgZm4gPSB0Lm1lbWJlckV4cHJlc3Npb24odC5pZGVudGlmaWVyKFwiT3BcIiksIHQuaWRlbnRpZmllcihmbk5hbWUpKTtcblxuICByZXR1cm4gdC5jYWxsRXhwcmVzc2lvbihmbiwgW29wZXJhbmRdKTtcbn1cblxuZnVuY3Rpb24gY29udmVydEJpbmFyeU9wRXhwcmVzc2lvblRvVHMoXG4gIHNjb3BlOiBSZXNvdXJjZVNjb3BlLFxuICBub2RlOiB0ZXguQmluYXJ5T3BFeHByZXNzaW9uLFxuKSB7XG4gIGNvbnN0IGxlZnQgPSBjb252ZXJ0VEZFeHByZXNzaW9uQXN0VG9UcyhcbiAgICBzY29wZSxcbiAgICB0ZXguZ2V0Q2hpbGRXaXRoVmFsdWUobm9kZSwgbm9kZS5tZXRhLmxoc0V4cHJlc3Npb24pISxcbiAgKTtcbiAgY29uc3QgcmlnaHQgPSBjb252ZXJ0VEZFeHByZXNzaW9uQXN0VG9UcyhcbiAgICBzY29wZSxcbiAgICB0ZXguZ2V0Q2hpbGRXaXRoVmFsdWUobm9kZSwgbm9kZS5tZXRhLnJoc0V4cHJlc3Npb24pISxcbiAgKTtcblxuICBsZXQgZm5OYW1lID0gbm9kZS5tZXRhLm9wZXJhdG9yO1xuICBpZiAodGZCaW5hcnlPcGVyYXRvcnNUb0Nka3RmW2ZuTmFtZSBhcyBzdXBwb3J0ZWRCaW5hcnlPcGVyYXRvcnNdKSB7XG4gICAgZm5OYW1lID0gdGZCaW5hcnlPcGVyYXRvcnNUb0Nka3RmW2ZuTmFtZSBhcyBzdXBwb3J0ZWRCaW5hcnlPcGVyYXRvcnNdO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGNvbnZlcnQgdW5rbm93biBvcGVyYXRvciAke25vZGUubWV0YS5vcGVyYXRvcn1gKTtcbiAgfVxuXG4gIHNjb3BlLmltcG9ydGFibGVzLnB1c2goe1xuICAgIGNvbnN0cnVjdE5hbWU6IFwiT3BcIixcbiAgICBwcm92aWRlcjogXCJjZGt0blwiLFxuICB9KTtcblxuICBjb25zdCBmbiA9IHQubWVtYmVyRXhwcmVzc2lvbih0LmlkZW50aWZpZXIoXCJPcFwiKSwgdC5pZGVudGlmaWVyKGZuTmFtZSkpO1xuICByZXR1cm4gdC5jYWxsRXhwcmVzc2lvbihmbiwgW2xlZnQsIHJpZ2h0XSk7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRUZW1wbGF0ZUV4cHJlc3Npb25Ub1RzKFxuICBzY29wZTogUmVzb3VyY2VTY29wZSxcbiAgbm9kZTogdGV4LlRlbXBsYXRlRXhwcmVzc2lvbiB8IHRleC5UZW1wbGF0ZVdyYXBFeHByZXNzaW9uLFxuKSB7XG4gIGNvbnN0IHBhcnRzID0gbm9kZS5jaGlsZHJlbi5tYXAoKGNoaWxkKSA9PiAoe1xuICAgIG5vZGU6IGNoaWxkLFxuICAgIGV4cHI6IGNvbnZlcnRURkV4cHJlc3Npb25Bc3RUb1RzKHNjb3BlLCBjaGlsZCksXG4gIH0pKTtcblxuICBjb25zdCBsYXN0UGFydCA9IHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdO1xuICBpZiAodC5pc1N0cmluZ0xpdGVyYWwobGFzdFBhcnQuZXhwcikgJiYgbGFzdFBhcnQuZXhwci52YWx1ZSA9PT0gXCJcXG5cIikge1xuICAgIC8vIFRoaXMgaXMgYSBiaXQgb2YgYSBoYWNrLCBidXQgdGhlIHRyYWlsaW5nIG5ld2xpbmUgd2UgYWRkIGR1ZSB0b1xuICAgIC8vIGhlcmVkb2NzIGxvb2tzIHVnbHkgYW5kIHVubmVjZXNzYXJ5IGluIHRoZSBnZW5lcmF0ZWQgY29kZSwgc28gd2VcbiAgICAvLyB0cnkgdG8gcmVtb3ZlIGl0XG4gICAgcGFydHMucG9wKCk7XG4gIH1cblxuICBpZiAocGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHQuc3RyaW5nTGl0ZXJhbChub2RlLm1ldGEudmFsdWUpO1xuICB9XG5cbiAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiBwYXJ0c1swXS5leHByO1xuICB9XG5cbiAgbGV0IGlzU2NvcGVkVHJhdmVyc2FsID0gZmFsc2U7XG4gIGNvbnN0IGV4cHJlc3Npb25zOiB0LkV4cHJlc3Npb25bXSA9IFtdO1xuICBmb3IgKGNvbnN0IHsgbm9kZSwgZXhwciB9IG9mIHBhcnRzKSB7XG4gICAgaWYgKFxuICAgICAgdGV4LmlzU2NvcGVUcmF2ZXJzYWxFeHByZXNzaW9uKG5vZGUpICYmXG4gICAgICAhdC5pc1N0cmluZ0xpdGVyYWwoZXhwcikgJiZcbiAgICAgICF0LmlzQ2FsbEV4cHJlc3Npb24oZXhwcilcbiAgICApIHtcbiAgICAgIGV4cHJlc3Npb25zLnB1c2godC5zdHJpbmdMaXRlcmFsKFwiJHtcIikpO1xuICAgICAgaXNTY29wZWRUcmF2ZXJzYWwgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAvLyB3ZSBzaG91bGQgaWRlYWxseSBiZSBkb2luZyB0eXBlIGNvZXJjaW9uIG1vcmVcbiAgICAgIC8vIGNhcmVmdWxseSBoZXJlLCBiZWNhdXNlIGl0IG1heSBub3QgYWx3YXlzIGJlIG5lZWRlZFxuICAgICAgdC5pc0NhbGxFeHByZXNzaW9uKGV4cHIpXG4gICAgKSB7XG4gICAgICBzY29wZS5pbXBvcnRhYmxlcy5wdXNoKHtcbiAgICAgICAgY29uc3RydWN0TmFtZTogXCJUb2tlblwiLFxuICAgICAgICBwcm92aWRlcjogXCJjZGt0blwiLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cHJlc3Npb25zLnB1c2goXG4gICAgICAgIHRlbXBsYXRlLmV4cHJlc3Npb24oYFRva2VuLmFzU3RyaW5nKCUlZXhwciUlKWApKHtcbiAgICAgICAgICBleHByLFxuICAgICAgICB9KSBhcyB0LkV4cHJlc3Npb24sXG4gICAgICApO1xuICAgICAgY29udGludWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChpc1Njb3BlZFRyYXZlcnNhbCkge1xuICAgICAgICBleHByZXNzaW9ucy5wdXNoKHQuc3RyaW5nTGl0ZXJhbChcIn1cIikpO1xuICAgICAgICBpc1Njb3BlZFRyYXZlcnNhbCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICBleHByZXNzaW9ucy5wdXNoKGV4cHIpO1xuICB9XG5cbiAgaWYgKGlzU2NvcGVkVHJhdmVyc2FsKSB7XG4gICAgZXhwcmVzc2lvbnMucHVzaCh0LnN0cmluZ0xpdGVyYWwoXCJ9XCIpKTtcbiAgfVxuXG4gIHJldHVybiBleHByZXNzaW9uRm9yU2VyaWFsU3RyaW5nQ29uY2F0ZW5hdGlvbihzY29wZSwgZXhwcmVzc2lvbnMpO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0T2JqZWN0RXhwcmVzc2lvblRvVHMoXG4gIHNjb3BlOiBSZXNvdXJjZVNjb3BlLFxuICBub2RlOiB0ZXguT2JqZWN0RXhwcmVzc2lvbixcbikge1xuICByZXR1cm4gdC5vYmplY3RFeHByZXNzaW9uKFxuICAgIE9iamVjdC5lbnRyaWVzKG5vZGUubWV0YS5pdGVtcylcbiAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZUNoaWxkID0gdGV4LmdldENoaWxkV2l0aFZhbHVlKG5vZGUsIHZhbHVlKTtcbiAgICAgICAgaWYgKCF2YWx1ZUNoaWxkKSB7XG4gICAgICAgICAgbG9nZ2VyLmVycm9yKGBVbmFibGUgdG8gdmFsdWUgZm9yIG9iamVjdCBrZXkgJyR7a2V5fSc6ICR7dmFsdWV9YCk7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdC5vYmplY3RQcm9wZXJ0eShcbiAgICAgICAgICB0LmlkZW50aWZpZXIoa2V5KSxcbiAgICAgICAgICBjb252ZXJ0VEZFeHByZXNzaW9uQXN0VG9UcyhzY29wZSwgdmFsdWVDaGlsZCksXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigocykgPT4gcyAhPT0gbnVsbCkgYXMgdC5PYmplY3RQcm9wZXJ0eVtdLFxuICApO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0RnVuY3Rpb25DYWxsRXhwcmVzc2lvblRvVHMoXG4gIHNjb3BlOiBSZXNvdXJjZVNjb3BlLFxuICBub2RlOiB0ZXguRnVuY3Rpb25DYWxsRXhwcmVzc2lvbixcbikge1xuICBjb25zdCBmdW5jdGlvbk5hbWUgPSBub2RlLm1ldGEubmFtZTtcbiAgY29uc3QgbWFwcGluZyA9IGZ1bmN0aW9uc01hcFtmdW5jdGlvbk5hbWVdO1xuXG4gIGlmICghbWFwcGluZykge1xuICAgIGxvZ2dlci5lcnJvcihcbiAgICAgIGBVbmtub3duIGZ1bmN0aW9uICR7ZnVuY3Rpb25OYW1lfSBlbmNvdW50ZXJlZC4gJHtsZWF2ZUNvbW1lbnRUZXh0fWAsXG4gICAgKTtcbiAgICBjb25zdCBhcmd1bWVudEV4cHJlc3Npb25zID0gbm9kZS5jaGlsZHJlbi5tYXAoKGNoaWxkKSA9PlxuICAgICAgY29udmVydFRGRXhwcmVzc2lvbkFzdFRvVHMoc2NvcGUsIGNoaWxkKSxcbiAgICApO1xuXG4gICAgcmV0dXJuIHQuY2FsbEV4cHJlc3Npb24odC5pZGVudGlmaWVyKGZ1bmN0aW9uTmFtZSksIGFyZ3VtZW50RXhwcmVzc2lvbnMpO1xuICB9XG5cbiAgY29uc3QgdHJhbnNmb3JtZWROb2RlOiB0ZXguRnVuY3Rpb25DYWxsRXhwcmVzc2lvbiA9IG1hcHBpbmcudHJhbnNmb3JtZXJcbiAgICA/IG1hcHBpbmcudHJhbnNmb3JtZXIobm9kZSlcbiAgICA6IG5vZGU7XG5cbiAgY29uc3QgYXJndW1lbnRFeHByZXNzaW9ucyA9IHRyYW5zZm9ybWVkTm9kZS5jaGlsZHJlbi5tYXAoKGNoaWxkKSA9PlxuICAgIGNvbnZlcnRURkV4cHJlc3Npb25Bc3RUb1RzKHNjb3BlLCBjaGlsZCksXG4gICk7XG5cbiAgc2NvcGUuaW1wb3J0YWJsZXMucHVzaCh7XG4gICAgY29uc3RydWN0TmFtZTogXCJGblwiLFxuICAgIHByb3ZpZGVyOiBcImNka3RuXCIsXG4gIH0pO1xuXG4gIGNvbnN0IGNhbGxlZSA9IHQubWVtYmVyRXhwcmVzc2lvbihcbiAgICB0LmlkZW50aWZpZXIoXCJGblwiKSxcbiAgICB0LmlkZW50aWZpZXIobWFwcGluZy5uYW1lKSxcbiAgKTtcblxuICBpZiAoXG4gICAgbWFwcGluZy5wYXJhbWV0ZXJzLmxlbmd0aCA+IDAgJiZcbiAgICBtYXBwaW5nLnBhcmFtZXRlcnNbbWFwcGluZy5wYXJhbWV0ZXJzLmxlbmd0aCAtIDFdLnZhcmlhZGljXG4gICkge1xuICAgIGNvbnN0IGxhc3RQYXJhbWV0ZXJUeXBlID1cbiAgICAgIG1hcHBpbmcucGFyYW1ldGVyc1ttYXBwaW5nLnBhcmFtZXRlcnMubGVuZ3RoIC0gMV0udHlwZTtcbiAgICBjb25zdCBub25WYXJpYWRpY0FyZ3VtZW50cyA9IGFyZ3VtZW50RXhwcmVzc2lvbnMuc2xpY2UoXG4gICAgICAwLFxuICAgICAgbWFwcGluZy5wYXJhbWV0ZXJzLmxlbmd0aCAtIDEsXG4gICAgKTtcblxuICAgIGNvbnN0IGZuQ2FsbEFyZ3VtZW50cyA9IFtcbiAgICAgIC4uLm5vblZhcmlhZGljQXJndW1lbnRzLm1hcCgoYXJnRXhwciwgaW5kZXgpID0+XG4gICAgICAgIGNvZXJjZVR5cGUoXG4gICAgICAgICAgc2NvcGUsXG4gICAgICAgICAgYXJnRXhwcixcbiAgICAgICAgICBmaW5kRXhwcmVzc2lvblR5cGUoc2NvcGUsIGFyZ0V4cHIpLFxuICAgICAgICAgIG1hcHBpbmcucGFyYW1ldGVyc1tpbmRleF0udHlwZSxcbiAgICAgICAgKSxcbiAgICAgICksXG5cbiAgICAgIHQuYXJyYXlFeHByZXNzaW9uKFxuICAgICAgICBhcmd1bWVudEV4cHJlc3Npb25zXG4gICAgICAgICAgLnNsaWNlKG1hcHBpbmcucGFyYW1ldGVycy5sZW5ndGggLSAxKVxuICAgICAgICAgIC5tYXAoKGFyZ0V4cHIpID0+XG4gICAgICAgICAgICBjb2VyY2VUeXBlKFxuICAgICAgICAgICAgICBzY29wZSxcbiAgICAgICAgICAgICAgYXJnRXhwcixcbiAgICAgICAgICAgICAgZmluZEV4cHJlc3Npb25UeXBlKHNjb3BlLCBhcmdFeHByKSxcbiAgICAgICAgICAgICAgbGFzdFBhcmFtZXRlclR5cGUsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICApLFxuICAgIF07XG5cbiAgICByZXR1cm4gdC5jYWxsRXhwcmVzc2lvbihjYWxsZWUsIGZuQ2FsbEFyZ3VtZW50cyk7XG4gIH1cblxuICByZXR1cm4gdC5jYWxsRXhwcmVzc2lvbihcbiAgICBjYWxsZWUsXG4gICAgYXJndW1lbnRFeHByZXNzaW9ucy5tYXAoKGFyZ0V4cHIsIGluZGV4KSA9PlxuICAgICAgY29lcmNlVHlwZShcbiAgICAgICAgc2NvcGUsXG4gICAgICAgIGFyZ0V4cHIsXG4gICAgICAgIGZpbmRFeHByZXNzaW9uVHlwZShzY29wZSwgYXJnRXhwciksXG4gICAgICAgIG1hcHBpbmcucGFyYW1ldGVyc1tpbmRleF0udHlwZSxcbiAgICAgICksXG4gICAgKSxcbiAgKTtcbn1cblxuZnVuY3Rpb24gY29udmVydEluZGV4RXhwcmVzc2lvblRvVHMoXG4gIHNjb3BlOiBSZXNvdXJjZVNjb3BlLFxuICBub2RlOiB0ZXguSW5kZXhFeHByZXNzaW9uLFxuKSB7XG4gIGNvbnN0IGNvbGxlY3Rpb25FeHByZXNzaW9uQ2hpbGQgPSB0ZXguZ2V0Q2hpbGRXaXRoVmFsdWUoXG4gICAgbm9kZSxcbiAgICBub2RlLm1ldGEuY29sbGVjdGlvbkV4cHJlc3Npb24sXG4gICk7XG4gIGNvbnN0IGtleUV4cHJlc3Npb25DaGlsZCA9IHRleC5nZXRDaGlsZFdpdGhWYWx1ZShcbiAgICBub2RlLFxuICAgIG5vZGUubWV0YS5rZXlFeHByZXNzaW9uLFxuICApO1xuXG4gIGNvbnN0IGNvbGxlY3Rpb25FeHByZXNzaW9uID0gY29udmVydFRGRXhwcmVzc2lvbkFzdFRvVHMoXG4gICAgc2NvcGUsXG4gICAgY29sbGVjdGlvbkV4cHJlc3Npb25DaGlsZCEsXG4gICk7XG4gIGNvbnN0IGtleUV4cHJlc3Npb24gPSBjb252ZXJ0VEZFeHByZXNzaW9uQXN0VG9UcyhzY29wZSwga2V5RXhwcmVzc2lvbkNoaWxkISk7XG5cbiAgc2NvcGUuaW1wb3J0YWJsZXMucHVzaCh7XG4gICAgY29uc3RydWN0TmFtZTogXCJGblwiLFxuICAgIHByb3ZpZGVyOiBcImNka3RuXCIsXG4gIH0pO1xuICBjb25zdCBjYWxsZWUgPSB0Lm1lbWJlckV4cHJlc3Npb24oXG4gICAgdC5pZGVudGlmaWVyKFwiRm5cIiksXG4gICAgdC5pZGVudGlmaWVyKFwibG9va3VwTmVzdGVkXCIpLFxuICApO1xuICByZXR1cm4gdC5jYWxsRXhwcmVzc2lvbihjYWxsZWUsIFtcbiAgICBjb2xsZWN0aW9uRXhwcmVzc2lvbixcbiAgICB0LmFycmF5RXhwcmVzc2lvbihba2V5RXhwcmVzc2lvbl0pLFxuICBdKTtcbn1cblxuZnVuY3Rpb24gY29udmVydFNwbGF0RXhwcmVzc2lvblRvVHMoXG4gIHNjb3BlOiBSZXNvdXJjZVNjb3BlLFxuICBub2RlOiB0ZXguU3BsYXRFeHByZXNzaW9uLFxuKSB7XG4gIGNvbnN0IHNvdXJjZUV4cHJlc3Npb25DaGlsZCA9IHRleC5nZXRDaGlsZFdpdGhWYWx1ZShcbiAgICBub2RlLFxuICAgIG5vZGUubWV0YS5zb3VyY2VFeHByZXNzaW9uLFxuICApITtcbiAgY29uc3Qgc291cmNlRXhwcmVzc2lvbiA9IGNvbnZlcnRURkV4cHJlc3Npb25Bc3RUb1RzKFxuICAgIHNjb3BlLFxuICAgIHNvdXJjZUV4cHJlc3Npb25DaGlsZCxcbiAgKTtcblxuICAvLyBXZSBkb24ndCBjb252ZXJ0IHRoZSByZWxhdGl2ZSBleHByZXNzaW9uIGJlY2F1c2UgZXZlcnl0aGluZyBhZnRlciB0aGUgc3BsYXQgaXMgZ29pbmcgdG8gYmVcbiAgLy8gYSBzdHJpbmdcbiAgY29uc3QgcmVsYXRpdmVFeHByZXNzaW9uID0gbm9kZS5tZXRhLmVhY2hFeHByZXNzaW9uLnN0YXJ0c1dpdGgoXG4gICAgbm9kZS5tZXRhLmFub25TeW1ib2xFeHByZXNzaW9uLFxuICApXG4gICAgPyBub2RlLm1ldGEuZWFjaEV4cHJlc3Npb24uc2xpY2Uobm9kZS5tZXRhLmFub25TeW1ib2xFeHByZXNzaW9uLmxlbmd0aClcbiAgICA6IG5vZGUubWV0YS5lYWNoRXhwcmVzc2lvbjtcblxuICBjb25zdCBzZWdtZW50cyA9IHJlbGF0aXZlRXhwcmVzc2lvbi5zcGxpdCgvXFwufFxcW3xcXF0vKS5maWx0ZXIoKHMpID0+IHMpO1xuICBzY29wZS5pbXBvcnRhYmxlcy5wdXNoKHtcbiAgICBjb25zdHJ1Y3ROYW1lOiBcIkZuXCIsXG4gICAgcHJvdmlkZXI6IFwiY2RrdG5cIixcbiAgfSk7XG4gIGNvbnN0IGNhbGxlZSA9IHQubWVtYmVyRXhwcmVzc2lvbihcbiAgICB0LmlkZW50aWZpZXIoXCJGblwiKSxcbiAgICB0LmlkZW50aWZpZXIoXCJsb29rdXBOZXN0ZWRcIiksXG4gICk7XG5cbiAgcmV0dXJuIHQuY2FsbEV4cHJlc3Npb24oY2FsbGVlLCBbXG4gICAgc291cmNlRXhwcmVzc2lvbixcbiAgICB0LmFycmF5RXhwcmVzc2lvbihbXG4gICAgICAvLyB3ZSBkb24ndCBuZWVkIHRvIHVzZSB0aGUgYW5vblN5bWJvbEV4cHJlc3Npb24gaGVyZSBiZWNhdXNlXG4gICAgICAvLyBpdCBvbmx5IGNoYW5nZXMgYmV0d2VlbiAuKiBhbmQgWypdIHdoaWNoIHdlIGRvbid0IGNhcmUgYWJvdXRcbiAgICAgIHQuc3RyaW5nTGl0ZXJhbChcIipcIiksXG4gICAgICAuLi5zZWdtZW50cy5tYXAodC5zdHJpbmdMaXRlcmFsKSxcbiAgICBdKSxcbiAgXSk7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRDb25kaXRpb25hbEV4cHJlc3Npb25Ub1RzKFxuICBzY29wZTogUmVzb3VyY2VTY29wZSxcbiAgbm9kZTogdGV4LkNvbmRpdGlvbmFsRXhwcmVzc2lvbixcbikge1xuICBjb25zdCBjb25kaXRpb25DaGlsZCA9IHRleC5nZXRDaGlsZFdpdGhWYWx1ZShcbiAgICBub2RlLFxuICAgIG5vZGUubWV0YS5jb25kaXRpb25FeHByZXNzaW9uLFxuICApITtcbiAgbGV0IGNvbmRpdGlvbiA9IGNvbnZlcnRURkV4cHJlc3Npb25Bc3RUb1RzKHNjb3BlLCBjb25kaXRpb25DaGlsZCk7XG4gIGlmICh0LmlzSWRlbnRpZmllcihjb25kaXRpb24pICYmIGNhblVzZUZxbihjb25kaXRpb25DaGlsZCkpIHtcbiAgICAvLyBXZSBoYXZlIGEgcmVzb3VyY2Ugb3IgZGF0YSBzb3VyY2UgaGVyZSwgd2hpY2ggd2Ugd291bGQgbmVlZCB0b1xuICAgIC8vIHJlZmVyZW5jZSB1c2luZyBmcW5cbiAgICBjb25kaXRpb24gPSB0Lm1lbWJlckV4cHJlc3Npb24oY29uZGl0aW9uLCB0LmlkZW50aWZpZXIoXCJmcW5cIikpO1xuICB9XG5cbiAgY29uc3QgdHJ1ZUV4cHJlc3Npb24gPSBjb252ZXJ0VEZFeHByZXNzaW9uQXN0VG9UcyhcbiAgICBzY29wZSxcbiAgICB0ZXguZ2V0Q2hpbGRXaXRoVmFsdWUobm9kZSwgbm9kZS5tZXRhLnRydWVFeHByZXNzaW9uKSEsXG4gICk7XG5cbiAgY29uc3QgZmFsc2VFeHByZXNzaW9uID0gY29udmVydFRGRXhwcmVzc2lvbkFzdFRvVHMoXG4gICAgc2NvcGUsXG4gICAgdGV4LmdldENoaWxkV2l0aFZhbHVlKG5vZGUsIG5vZGUubWV0YS5mYWxzZUV4cHJlc3Npb24pISxcbiAgKTtcblxuICBzY29wZS5pbXBvcnRhYmxlcy5wdXNoKHtcbiAgICBjb25zdHJ1Y3ROYW1lOiBcImNvbmRpdGlvbmFsXCIsXG4gICAgcHJvdmlkZXI6IFwiY2RrdG5cIixcbiAgfSk7XG5cbiAgcmV0dXJuIHQuY2FsbEV4cHJlc3Npb24odC5pZGVudGlmaWVyKFwiY29uZGl0aW9uYWxcIiksIFtcbiAgICBjb25kaXRpb24sXG4gICAgdHJ1ZUV4cHJlc3Npb24sXG4gICAgZmFsc2VFeHByZXNzaW9uLFxuICBdKTtcbn1cblxuZnVuY3Rpb24gY29udmVydFR1cGxlRXhwcmVzc2lvblRvVHMoXG4gIHNjb3BlOiBSZXNvdXJjZVNjb3BlLFxuICBub2RlOiB0ZXguVHVwbGVFeHByZXNzaW9uLFxuKSB7XG4gIGNvbnN0IGV4cHJlc3Npb25zID0gbm9kZS5jaGlsZHJlbi5tYXAoKGNoaWxkKSA9PlxuICAgIGNvbnZlcnRURkV4cHJlc3Npb25Bc3RUb1RzKHNjb3BlLCBjaGlsZCksXG4gICk7XG5cbiAgcmV0dXJuIHQuYXJyYXlFeHByZXNzaW9uKGV4cHJlc3Npb25zKTtcbn1cblxuZnVuY3Rpb24gY29udmVydFJlbGF0aXZlVHJhdmVyc2FsRXhwcmVzc2lvblRvVHMoXG4gIHNjb3BlOiBSZXNvdXJjZVNjb3BlLFxuICBub2RlOiB0ZXguUmVsYXRpdmVUcmF2ZXJzYWxFeHByZXNzaW9uLFxuKSB7XG4gIGNvbnN0IHNlZ21lbnRzID0gbm9kZS5tZXRhLnRyYXZlcnNhbDtcblxuICAvLyBUaGUgbGVmdCBoYW5kIHNpZGUgLyBzb3VyY2Ugb2YgYSByZWxhdGl2ZSB0cmF2ZXJzYWwgaXMgbm90IGEgcHJvcGVyXG4gIC8vIG9iamVjdCAvIHJlc291cmNlIC8gZGF0YSB0aGluZyB0aGF0IGlzIGJlaW5nIHJlZmVyZW5jZWRcbiAgY29uc3Qgc291cmNlID0gY29udmVydFRGRXhwcmVzc2lvbkFzdFRvVHMoXG4gICAgc2NvcGUsXG4gICAgdGV4LmdldENoaWxkV2l0aFZhbHVlKG5vZGUsIG5vZGUubWV0YS5zb3VyY2VFeHByZXNzaW9uKSEsXG4gICk7XG5cbiAgc2NvcGUuaW1wb3J0YWJsZXMucHVzaCh7XG4gICAgY29uc3RydWN0TmFtZTogXCJGblwiLFxuICAgIHByb3ZpZGVyOiBcImNka3RuXCIsXG4gIH0pO1xuICBjb25zdCBjYWxsZWUgPSB0Lm1lbWJlckV4cHJlc3Npb24oXG4gICAgdC5pZGVudGlmaWVyKFwiRm5cIiksXG4gICAgdC5pZGVudGlmaWVyKFwibG9va3VwTmVzdGVkXCIpLFxuICApO1xuXG4gIHJldHVybiB0LmNhbGxFeHByZXNzaW9uKGNhbGxlZSwgW1xuICAgIHNvdXJjZSxcbiAgICB0LmFycmF5RXhwcmVzc2lvbihzZWdtZW50cy5tYXAoKHMpID0+IHQuc3RyaW5nTGl0ZXJhbChzLnNlZ21lbnQpKSksXG4gIF0pO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0Rm9yRXhwcmVzc2lvblRvVHMoXG4gIHNjb3BlOiBSZXNvdXJjZVNjb3BlLFxuICBub2RlOiB0ZXguRm9yRXhwcmVzc2lvbixcbikge1xuICBjb25zdCBjb2xsZWN0aW9uQ2hpbGQgPSB0ZXguZ2V0Q2hpbGRXaXRoVmFsdWUoXG4gICAgbm9kZSxcbiAgICBub2RlLm1ldGEuY29sbGVjdGlvbkV4cHJlc3Npb24sXG4gICkhO1xuXG4gIGxldCBjb2xsZWN0aW9uRXhwcmVzc2lvbiA9IGNvbnZlcnRURkV4cHJlc3Npb25Bc3RUb1RzKHNjb3BlLCBjb2xsZWN0aW9uQ2hpbGQpO1xuXG4gIGlmICh0LmlzSWRlbnRpZmllcihjb2xsZWN0aW9uRXhwcmVzc2lvbikgJiYgY2FuVXNlRnFuKGNvbGxlY3Rpb25DaGlsZCkpIHtcbiAgICAvLyBXZSBoYXZlIGEgcmVzb3VyY2Ugb3IgZGF0YSBzb3VyY2UgaGVyZSwgd2hpY2ggd2Ugd291bGQgbmVlZCB0b1xuICAgIC8vIHJlZmVyZW5jZSB1c2luZyBmcW5cbiAgICBjb2xsZWN0aW9uRXhwcmVzc2lvbiA9IHQubWVtYmVyRXhwcmVzc2lvbihcbiAgICAgIGNvbGxlY3Rpb25FeHByZXNzaW9uLFxuICAgICAgdC5pZGVudGlmaWVyKFwiZnFuXCIpLFxuICAgICk7XG4gIH1cblxuICBjb25zdCBjb2xsZWN0aW9uUmVxdWlyZXNXcmFwcGluZyA9ICF0LmlzU3RyaW5nTGl0ZXJhbChjb2xsZWN0aW9uRXhwcmVzc2lvbik7XG4gIGNvbnN0IGV4cHJlc3Npb25zID0gW107XG4gIGNvbnN0IGNvbmRpdGlvbkJvZHkgPSBub2RlLm1ldGEua2V5VmFyXG4gICAgPyBgJHtub2RlLm1ldGEua2V5VmFyfSwgJHtub2RlLm1ldGEudmFsVmFyfWBcbiAgICA6IG5vZGUubWV0YS52YWxWYXI7XG5cbiAgY29uc3Qgb3BlbkJyYWNlID0gbm9kZS5tZXRhLm9wZW5SYW5nZVZhbHVlO1xuICBjb25zdCBjbG9zZUJyYWNlID0gbm9kZS5tZXRhLmNsb3NlUmFuZ2VWYWx1ZTtcbiAgY29uc3QgZ3JvdXBlZCA9IG5vZGUubWV0YS5ncm91cGVkVmFsdWUgPyBcIi4uLlwiIDogXCJcIjtcbiAgY29uc3QgdmFsdWVFeHByZXNzaW9uID0gYCR7bm9kZS5tZXRhLnZhbHVlRXhwcmVzc2lvbn0ke2dyb3VwZWR9YDtcblxuICBjb25zdCBwcmVmaXggPSBgXFwkeyR7b3BlbkJyYWNlfSBmb3IgJHtjb25kaXRpb25Cb2R5fSBpbiBgO1xuICBjb25zdCBrZXlWYWx1ZSA9IG5vZGUubWV0YS5rZXlFeHByZXNzaW9uXG4gICAgPyBgIDogJHtub2RlLm1ldGEua2V5RXhwcmVzc2lvbn0gPT4gJHt2YWx1ZUV4cHJlc3Npb259YFxuICAgIDogYCA6ICR7dmFsdWVFeHByZXNzaW9ufWA7XG4gIGNvbnN0IGNvbmRpdGlvbmFsID0gbm9kZS5tZXRhLmNvbmRpdGlvbmFsRXhwcmVzc2lvbjtcbiAgY29uc3Qgc3VmZml4ID0gYCR7a2V5VmFsdWV9JHtcbiAgICBjb25kaXRpb25hbCA/IGAgaWYgJHtjb25kaXRpb25hbH1gIDogXCJcIlxuICB9JHtjbG9zZUJyYWNlfX1gO1xuXG4gIGV4cHJlc3Npb25zLnB1c2godC5zdHJpbmdMaXRlcmFsKHByZWZpeCkpO1xuICBpZiAoY29sbGVjdGlvblJlcXVpcmVzV3JhcHBpbmcpIHtcbiAgICBleHByZXNzaW9ucy5wdXNoKHQuc3RyaW5nTGl0ZXJhbChcIiR7XCIpKTtcbiAgfVxuICBleHByZXNzaW9ucy5wdXNoKGNvbGxlY3Rpb25FeHByZXNzaW9uKTtcbiAgaWYgKGNvbGxlY3Rpb25SZXF1aXJlc1dyYXBwaW5nKSB7XG4gICAgZXhwcmVzc2lvbnMucHVzaCh0LnN0cmluZ0xpdGVyYWwoXCJ9XCIpKTtcbiAgfVxuICBleHByZXNzaW9ucy5wdXNoKHQuc3RyaW5nTGl0ZXJhbChzdWZmaXgpKTtcblxuICByZXR1cm4gZXhwcmVzc2lvbkZvclNlcmlhbFN0cmluZ0NvbmNhdGVuYXRpb24oc2NvcGUsIGV4cHJlc3Npb25zKTtcbn1cblxuZnVuY3Rpb24gY29udmVydFRGRXhwcmVzc2lvbkFzdFRvVHMoXG4gIHNjb3BlOiBSZXNvdXJjZVNjb3BlLFxuICBub2RlOiB0ZXguRXhwcmVzc2lvblR5cGUsXG4pOiB0LkV4cHJlc3Npb24ge1xuICBpZiAodGV4LmlzTGl0ZXJhbFZhbHVlRXhwcmVzc2lvbihub2RlKSkge1xuICAgIHJldHVybiBjb252ZXJ0TGl0ZXJhbFZhbHVlRXhwcmVzc2lvblRvVHMoc2NvcGUsIG5vZGUpO1xuICB9XG5cbiAgaWYgKHRleC5pc1Njb3BlVHJhdmVyc2FsRXhwcmVzc2lvbihub2RlKSkge1xuICAgIHJldHVybiBjb252ZXJ0U2NvcGVUcmF2ZXJzYWxFeHByZXNzaW9uVG9UcyhzY29wZSwgbm9kZSk7XG4gIH1cblxuICBpZiAodGV4LmlzVW5hcnlPcEV4cHJlc3Npb24obm9kZSkpIHtcbiAgICByZXR1cm4gY29udmVydFVuYXJ5T3BFeHByZXNzaW9uVG9UcyhzY29wZSwgbm9kZSk7XG4gIH1cblxuICBpZiAodGV4LmlzQmluYXJ5T3BFeHByZXNzaW9uKG5vZGUpKSB7XG4gICAgcmV0dXJuIGNvbnZlcnRCaW5hcnlPcEV4cHJlc3Npb25Ub1RzKHNjb3BlLCBub2RlKTtcbiAgfVxuXG4gIGlmICh0ZXguaXNUZW1wbGF0ZUV4cHJlc3Npb24obm9kZSkgfHwgdGV4LmlzVGVtcGxhdGVXcmFwRXhwcmVzc2lvbihub2RlKSkge1xuICAgIHJldHVybiBjb252ZXJ0VGVtcGxhdGVFeHByZXNzaW9uVG9UcyhzY29wZSwgbm9kZSk7XG4gIH1cblxuICBpZiAodGV4LmlzT2JqZWN0RXhwcmVzc2lvbihub2RlKSkge1xuICAgIHJldHVybiBjb252ZXJ0T2JqZWN0RXhwcmVzc2lvblRvVHMoc2NvcGUsIG5vZGUpO1xuICB9XG5cbiAgaWYgKHRleC5pc0Z1bmN0aW9uQ2FsbEV4cHJlc3Npb24obm9kZSkpIHtcbiAgICByZXR1cm4gY29udmVydEZ1bmN0aW9uQ2FsbEV4cHJlc3Npb25Ub1RzKHNjb3BlLCBub2RlKTtcbiAgfVxuXG4gIGlmICh0ZXguaXNJbmRleEV4cHJlc3Npb24obm9kZSkpIHtcbiAgICByZXR1cm4gY29udmVydEluZGV4RXhwcmVzc2lvblRvVHMoc2NvcGUsIG5vZGUpO1xuICB9XG5cbiAgaWYgKHRleC5pc1NwbGF0RXhwcmVzc2lvbihub2RlKSkge1xuICAgIHJldHVybiBjb252ZXJ0U3BsYXRFeHByZXNzaW9uVG9UcyhzY29wZSwgbm9kZSk7XG4gIH1cblxuICBpZiAodGV4LmlzQ29uZGl0aW9uYWxFeHByZXNzaW9uKG5vZGUpKSB7XG4gICAgcmV0dXJuIGNvbnZlcnRDb25kaXRpb25hbEV4cHJlc3Npb25Ub1RzKHNjb3BlLCBub2RlKTtcbiAgfVxuXG4gIGlmICh0ZXguaXNUdXBsZUV4cHJlc3Npb24obm9kZSkpIHtcbiAgICByZXR1cm4gY29udmVydFR1cGxlRXhwcmVzc2lvblRvVHMoc2NvcGUsIG5vZGUpO1xuICB9XG5cbiAgaWYgKHRleC5pc1JlbGF0aXZlVHJhdmVyc2FsRXhwcmVzc2lvbihub2RlKSkge1xuICAgIHJldHVybiBjb252ZXJ0UmVsYXRpdmVUcmF2ZXJzYWxFeHByZXNzaW9uVG9UcyhzY29wZSwgbm9kZSk7XG4gIH1cblxuICBpZiAodGV4LmlzRm9yRXhwcmVzc2lvbihub2RlKSkge1xuICAgIHJldHVybiBjb252ZXJ0Rm9yRXhwcmVzc2lvblRvVHMoc2NvcGUsIG5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHQuc3RyaW5nTGl0ZXJhbChcIlwiKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4cHJlc3Npb25Bc3QoXG4gIGlucHV0OiBzdHJpbmcsXG4pOiBQcm9taXNlPHRleC5FeHByZXNzaW9uVHlwZT4ge1xuICBjb25zdCB7IHdyYXAsIHdyYXBPZmZzZXQgfSA9IHdyYXBUZXJyYWZvcm1FeHByZXNzaW9uKGlucHV0KTtcbiAgY29uc3QgYXN0ID0gYXdhaXQgZ2V0RXhwcmVzc2lvbkFzdChcIm1haW4udGZcIiwgd3JhcCk7XG5cbiAgaWYgKCFhc3QpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYXJzZSB0ZXJyYWZvcm0gZXhwcmVzc2lvbjogJHtpbnB1dH1gKTtcbiAgfVxuXG4gIGlmICh3cmFwT2Zmc2V0ICE9IDAgJiYgdGV4LmlzVGVtcGxhdGVXcmFwRXhwcmVzc2lvbihhc3QpKSB7XG4gICAgcmV0dXJuIGFzdC5jaGlsZHJlblswXTtcbiAgfVxuXG4gIHJldHVybiBhc3Q7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb252ZXJ0VGVycmFmb3JtRXhwcmVzc2lvblRvVHMoXG4gIHNjb3BlOiBSZXNvdXJjZVNjb3BlLFxuICBpbnB1dDogc3RyaW5nLFxuICB0YXJnZXRUeXBlOiAoKSA9PiBBdHRyaWJ1dGVUeXBlLFxuKTogUHJvbWlzZTx0LkV4cHJlc3Npb24+IHtcbiAgbG9nZ2VyLmRlYnVnKGBjb252ZXJ0VGVycmFmb3JtRXhwcmVzc2lvblRvVHMoJHtpbnB1dH0pYCk7XG4gIGNvbnN0IHRzRXhwcmVzc2lvbiA9IGNvbnZlcnRURkV4cHJlc3Npb25Bc3RUb1RzKFxuICAgIHNjb3BlLFxuICAgIGF3YWl0IGV4cHJlc3Npb25Bc3QoaW5wdXQpLFxuICApO1xuXG4gIHJldHVybiBjb2VyY2VUeXBlKFxuICAgIHNjb3BlLFxuICAgIHRzRXhwcmVzc2lvbixcbiAgICBmaW5kRXhwcmVzc2lvblR5cGUoc2NvcGUsIHRzRXhwcmVzc2lvbiksXG4gICAgdGFyZ2V0VHlwZSgpLFxuICApO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXh0cmFjdEl0ZXJhdG9yVmFyaWFibGVzRnJvbUV4cHJlc3Npb24oXG4gIGlucHV0OiBzdHJpbmcsXG4pOiBQcm9taXNlPEl0ZXJhdG9yVmFyaWFibGVSZWZlcmVuY2VbXT4ge1xuICBjb25zdCBwb3NzaWJsZVZhcmlhYmxlU3BvdHMgPSBhd2FpdCBnZXRSZWZlcmVuY2VzSW5FeHByZXNzaW9uKFxuICAgIFwibWFpbi50ZlwiLFxuICAgIGlucHV0LFxuICApO1xuXG4gIHJldHVybiBwb3NzaWJsZVZhcmlhYmxlU3BvdHNcbiAgICAuZmlsdGVyKChzcG90KSA9PiBzcG90LnZhbHVlLnN0YXJ0c1dpdGgoXCJlYWNoLlwiKSlcbiAgICAubWFwKChzcG90KSA9PiAoe1xuICAgICAgc3RhcnQ6IHNwb3Quc3RhcnRQb3NpdGlvbixcbiAgICAgIGVuZDogc3BvdC5lbmRQb3NpdGlvbixcbiAgICAgIHZhbHVlOiBzcG90LnZhbHVlLFxuICAgIH0pKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGR5bmFtaWNWYXJpYWJsZVRvQXN0KFxuICBzY29wZTogUHJvZ3JhbVNjb3BlLFxuICBub2RlOiB0ZXguU2NvcGVUcmF2ZXJzYWxFeHByZXNzaW9uLFxuICBpdGVyYXRvck5hbWU6IHN0cmluZyxcbiAgYmxvY2s6IHN0cmluZyA9IFwiZWFjaFwiLFxuKTogdC5FeHByZXNzaW9uIHtcbiAgaWYgKGl0ZXJhdG9yTmFtZSA9PT0gXCJkeW5hbWljLWJsb2NrXCIpIHtcbiAgICByZXR1cm4gZXhwcmVzc2lvbkZvclNlcmlhbFN0cmluZ0NvbmNhdGVuYXRpb24oc2NvcGUsIFtcbiAgICAgIHQuc3RyaW5nTGl0ZXJhbChcIiR7XCIpLFxuICAgICAgdC5zdHJpbmdMaXRlcmFsKGJsb2NrKSxcbiAgICAgIHQuc3RyaW5nTGl0ZXJhbChcIn1cIiksXG4gICAgXSk7XG4gIH1cbiAgaWYgKG5vZGUubWV0YS52YWx1ZSA9PT0gYCR7YmxvY2t9LmtleWApIHtcbiAgICByZXR1cm4gdC5tZW1iZXJFeHByZXNzaW9uKHQuaWRlbnRpZmllcihpdGVyYXRvck5hbWUpLCB0LmlkZW50aWZpZXIoXCJrZXlcIikpO1xuICB9XG4gIGlmIChub2RlLm1ldGEudmFsdWUgPT09IGAke2Jsb2NrfS52YWx1ZWApIHtcbiAgICByZXR1cm4gdC5tZW1iZXJFeHByZXNzaW9uKFxuICAgICAgdC5pZGVudGlmaWVyKGl0ZXJhdG9yTmFtZSksXG4gICAgICB0LmlkZW50aWZpZXIoXCJ2YWx1ZVwiKSxcbiAgICApO1xuICB9XG5cbiAgaWYgKGJsb2NrID09PSBcImNvdW50XCIgJiYgbm9kZS5tZXRhLnZhbHVlID09PSBgJHtibG9ja30uaW5kZXhgKSB7XG4gICAgcmV0dXJuIHQubWVtYmVyRXhwcmVzc2lvbihcbiAgICAgIHQuaWRlbnRpZmllcihpdGVyYXRvck5hbWUpLFxuICAgICAgdC5pZGVudGlmaWVyKFwiaW5kZXhcIiksXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHNlZ21lbnRzID0gbm9kZS5tZXRhLnRyYXZlcnNhbDtcblxuICBpZiAoXG4gICAgc2VnbWVudHMubGVuZ3RoID4gMiAmJlxuICAgIHNlZ21lbnRzWzBdLnNlZ21lbnQgPT09IGJsb2NrICYmXG4gICAgc2VnbWVudHNbMV0uc2VnbWVudCA9PT0gXCJ2YWx1ZVwiXG4gICkge1xuICAgIGNvbnN0IHNlZ21lbnRzQWZ0ZXJFYWNoVmFsdWUgPSBzZWdtZW50cy5zbGljZSgyKTtcbiAgICBzY29wZS5pbXBvcnRhYmxlcy5wdXNoKHtcbiAgICAgIGNvbnN0cnVjdE5hbWU6IFwiRm5cIixcbiAgICAgIHByb3ZpZGVyOiBcImNka3RuXCIsXG4gICAgfSk7XG4gICAgY29uc3QgY2FsbGVlID0gdC5tZW1iZXJFeHByZXNzaW9uKFxuICAgICAgdC5pZGVudGlmaWVyKFwiRm5cIiksXG4gICAgICB0LmlkZW50aWZpZXIoXCJsb29rdXBOZXN0ZWRcIiksXG4gICAgKTtcbiAgICByZXR1cm4gdC5jYWxsRXhwcmVzc2lvbihjYWxsZWUsIFtcbiAgICAgIHQubWVtYmVyRXhwcmVzc2lvbih0LmlkZW50aWZpZXIoaXRlcmF0b3JOYW1lKSwgdC5pZGVudGlmaWVyKFwidmFsdWVcIikpLFxuICAgICAgdC5hcnJheUV4cHJlc3Npb24oXG4gICAgICAgIHNlZ21lbnRzQWZ0ZXJFYWNoVmFsdWUubWFwKChwYXJ0KSA9PiB7XG4gICAgICAgICAgaWYgKHBhcnQudHlwZSA9PT0gXCJuYW1lVHJhdmVyc2FsXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0LnN0cmluZ0xpdGVyYWwocGFydC5zZWdtZW50KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHQuc3RyaW5nTGl0ZXJhbChgWyR7cGFydC5zZWdtZW50fV1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICBdKTtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihcbiAgICBgQ2FuIG5vdCBjcmVhdGUgQVNUIGZvciBpdGVyYXRvciB2YXJpYWJsZSBvZiAnJHtub2RlLm1ldGEudmFsdWV9J2AsXG4gICk7XG59XG4iXX0=
|
|
632
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwcmVzc2lvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZXhwcmVzc2lvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLGdEQUFrQztBQUNsQywrREFBdUM7QUFDdkMsbUNBQWdFO0FBTWhFLDhDQUE4RTtBQUM5RSw4Q0FHeUI7QUFDekIsNkRBQTZEO0FBQzdELDZDQUE4RDtBQUU5RCx1REFBa0Q7QUFDbEQsNkNBQWlEO0FBQ2pELDJDQUEyQztBQUUzQyxNQUFNLHdCQUF3QixHQUFHO0lBQy9CLFNBQVMsRUFBRSxJQUFJO0lBQ2YsVUFBVSxFQUFFLEtBQUs7SUFDakIsV0FBVyxFQUFFLElBQUk7SUFDakIsa0JBQWtCLEVBQUUsS0FBSztJQUN6QixRQUFRLEVBQUUsSUFBSTtJQUNkLGVBQWUsRUFBRSxLQUFLO0lBQ3RCLEtBQUssRUFBRSxJQUFJO0lBQ1gsUUFBUSxFQUFFLEtBQUs7SUFDZixHQUFHLEVBQUUsS0FBSztJQUNWLFFBQVEsRUFBRSxLQUFLO0lBQ2YsUUFBUSxFQUFFLEtBQUs7SUFDZixNQUFNLEVBQUUsS0FBSztJQUNiLE1BQU0sRUFBRSxLQUFLO0NBQ2QsQ0FBQztBQUVGLE1BQU0sdUJBQXVCLEdBQUc7SUFDOUIsVUFBVSxFQUFFLEtBQUs7SUFDakIsTUFBTSxFQUFFLFFBQVE7Q0FDakIsQ0FBQztBQUtGLFNBQVMsc0JBQXNCLENBQzdCLFVBQXdDLEVBQ3hDLFFBQVEsR0FBRyxLQUFLO0lBRWhCLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNkLElBQUksUUFBUSxJQUFJLGlDQUFHLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN2RCxJQUFJLEdBQUcsR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUNELE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFD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O3FCQUFNLENBQUM7b0JBQ04sT0FBTyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7Z0JBQzlDLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FDSDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUNiLGdEQUFnRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUNuRSxDQUFDO0FBQ0osQ0FBQztBQS9ERCxvREErREMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0ICogYXMgdCBmcm9tIFwiQGJhYmVsL3R5cGVzXCI7XG5pbXBvcnQgdGVtcGxhdGUgZnJvbSBcIkBiYWJlbC90ZW1wbGF0ZVwiO1xuaW1wb3J0IHsgY2FtZWxDYXNlLCBmaWxlQnVnQ29tbWVudFRleHQsIGxvZ2dlciB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQge1xuICBJdGVyYXRvclZhcmlhYmxlUmVmZXJlbmNlLFxuICBQcm9ncmFtU2NvcGUsXG4gIFJlc291cmNlU2NvcGUsXG59IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBnZXRSZWZlcmVuY2VzSW5FeHByZXNzaW9uLCBnZXRFeHByZXNzaW9uQXN0IH0gZnJvbSBcIkBjZGt0bi9oY2wyanNvblwiO1xuaW1wb3J0IHtcbiAgVEZFeHByZXNzaW9uU3ludGF4VHJlZSBhcyB0ZXgsXG4gIHdyYXBUZXJyYWZvcm1FeHByZXNzaW9uLFxufSBmcm9tIFwiQGNka3RuL2hjbDJqc29uXCI7XG5pbXBvcnQgeyBmdW5jdGlvbnNNYXAgfSBmcm9tIFwiLi9mdW5jdGlvbi1iaW5kaW5ncy9mdW5jdGlvbnNcIjtcbmltcG9ydCB7IGNvZXJjZVR5cGUsIGZpbmRFeHByZXNzaW9uVHlwZSB9IGZyb20gXCIuL2NvZXJjZVR5cGVcIjtcbmltcG9ydCB7IEF0dHJpYnV0ZVR5cGUgfSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcbmltcG9ydCB7IGdldFR5cGVBdFBhdGggfSBmcm9tIFwiLi90ZXJyYWZvcm1TY2hlbWFcIjtcbmltcG9ydCB7IGNvbnRhaW5zUmVmZXJlbmNlIH0gZnJvbSBcIi4vcmVmZXJlbmNlc1wiO1xuaW1wb3J0IHsgdmFyaWFibGVOYW1lIH0gZnJvbSBcIi4vdmFyaWFibGVzXCI7XG5cbmNvbnN0IHRmQmluYXJ5T3BlcmF0b3JzVG9DZGt0ZiA9IHtcbiAgbG9naWNhbE9yOiBcIm9yXCIsXG4gIGxvZ2ljYWxBbmQ6IFwiYW5kXCIsXG4gIGdyZWF0ZXJUaGFuOiBcImd0XCIsXG4gIGdyZWF0ZXJUaGFuT3JFcXVhbDogXCJndGVcIixcbiAgbGVzc1RoYW46IFwibHRcIixcbiAgbGVzc1RoYW5PckVxdWFsOiBcImx0ZVwiLFxuICBlcXVhbDogXCJlcVwiLFxuICBub3RFcXVhbDogXCJuZXFcIixcbiAgYWRkOiBcImFkZFwiLFxuICBzdWJ0cmFjdDogXCJzdWJcIixcbiAgbXVsdGlwbHk6IFwibXVsXCIsXG4gIGRpdmlkZTogXCJkaXZcIixcbiAgbW9kdWxvOiBcIm1vZFwiLFxufTtcblxuY29uc3QgdGZVbmFyeU9wZXJhdG9yc1RvQ2RrdGYgPSB7XG4gIGxvZ2ljYWxOb3Q6IFwibm90XCIsXG4gIG5lZ2F0ZTogXCJuZWdhdGVcIixcbn07XG5cbnR5cGUgc3VwcG9ydGVkQmluYXJ5T3BlcmF0b3JzID0ga2V5b2YgdHlwZW9mIHRmQmluYXJ5T3BlcmF0b3JzVG9DZGt0ZjtcbnR5cGUgc3VwcG9ydGVkVW5hcnlPcGVyYXRvcnMgPSBrZXlvZiB0eXBlb2YgdGZVbmFyeU9wZXJhdG9yc1RvQ2RrdGY7XG5cbmZ1bmN0aW9uIHRyYXZlcnNhbFBhcnRzVG9TdHJpbmcoXG4gIHRyYXZlcnNhbHM6IHRleC5UZXJyYWZvcm1UcmF2ZXJzYWxQYXJ0W10sXG4gIGFzU3VmZml4ID0gZmFsc2UsXG4pIHtcbiAgbGV0IHNlZWQgPSBcIlwiO1xuICBpZiAoYXNTdWZmaXggJiYgdGV4LmlzTmFtZVRyYXZlcnNhbFBhcnQodHJhdmVyc2Fsc1swXSkpIHtcbiAgICBzZWVkID0gXCIuXCI7XG4gIH1cbiAgcmV0dXJuIHRyYXZlcnNhbHMucmVkdWNlKChhY2MsIHBhcnQpID0+IHtcbiAgICBpZiAocGFydC50eXBlID09PSBcIm5hbWVUcmF2ZXJzYWxcIikge1xuICAgICAgaWYgKGFjYyA9PT0gc2VlZCkge1xuICAgICAgICByZXR1cm4gYCR7YWNjfSR7cGFydC5zZWdtZW50fWA7XG4gICAgICB9XG4gICAgICByZXR1cm4gYCR7YWNjfS4ke3BhcnQuc2VnbWVudH1gO1xuICAgIH1cbiAgICByZXR1cm4gYCR7YWNjfVske3BhcnQuc2VnbWVudH1dYDtcbiAgfSwgc2VlZCk7XG59XG5cbmZ1bmN0aW9uIGNhblVzZUZxbihleHByZXNzaW9uOiB0ZXguRXhwcmVzc2lvblR5cGUpIHtcbiAgaWYgKCF0ZXguaXNTY29wZVRyYXZlcnNhbEV4cHJlc3Npb24oZXhwcmVzc2lvbikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCByb290U2VnbWVudCA9IGV4cHJlc3Npb24ubWV0YS50cmF2ZXJzYWxbMF0uc2VnbWVudDtcblxuICByZXR1cm4gIVtcInZhclwiLCBcImxvY2FsXCJdLmluY2x1ZGVzKHJvb3RTZWdtZW50KTtcbn1cblxuZnVuY3Rpb24gdHJhdmVyc2FsVG9WYXJpYWJsZU5hbWUoXG4gIHNjb3BlOiBQcm9ncmFtU2NvcGUsXG4gIG5vZGU6IHRleC5FeHByZXNzaW9uVHlwZSxcbikge1xuICBpZiAoIXRleC5pc1Njb3BlVHJhdmVyc2FsRXhwcmVzc2lvbihub2RlKSkge1xuICAgIGxvZ2dlci5lcnJvcihcbiAgICAgIGBVbmV4cGVjdGVkIGV4cHJlc3Npb24gdHlwZSAke25vZGUudHlwZX0gd2l0aCB2YWx1ZSAke25vZGUubWV0YS52YWx1ZX0gcGFzc2VkIHRvIGNvbnZlcnQgdG8gYSB2YXJpYWJsZS4gJHtmaWxlQnVnQ29tbWVudFRleHR9YCxcbiAgICApO1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgY29uc3Qgc2VnbWVudHMgPSBub2RlLm1ldGEudHJhdmVyc2FsO1xuICBpZiAoc2VnbWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIG5vZGUubWV0YS5mdWxsQWNjZXNzb3I7XG4gIH1cbiAgY29uc3Qgcm9vdFNlZ21lbnQgPSBzZWdtZW50c1swXS5zZWdtZW50O1xuICBjb25zdCByZXNvdXJjZSA9XG4gICAgcm9vdFNlZ21lbnQgPT09IFwiZGF0YVwiXG4gICAgICA/IGAke3NlZ21lbnRzWzBdLnNlZ21lbnR9LiR7c2VnbWVudHNbMV0uc2VnbWVudH1gXG4gICAgICA6IHJvb3RTZWdtZW50O1xuICBjb25zdCBuYW1lID1cbiAgICByb290U2VnbWVudCA9PT0gXCJkYXRhXCIgPyBzZWdtZW50c1syXS5zZWdtZW50IDogc2VnbWVudHNbMV0uc2VnbWVudDtcblxuICByZXR1cm4gdmFyaWFibGVOYW1lKHNjb3BlLCByZXNvdXJjZSwgbmFtZSk7XG59XG5cbmZ1bmN0aW9uIGV4cHJlc3Npb25Gb3JTZXJpYWxTdHJpbmdDb25jYXRlbmF0aW9uKFxuICBzY29wZTogUmVzb3VyY2VTY29wZSxcbiAgbm9kZXM6IHQuRXhwcmVzc2lvbltdLFxuKSB7XG4gIGNvbnN0IHJlZHVjZWROb2RlcyA9IG5vZGVzLnJlZHVjZSgoYWNjLCBub2RlKSA9PiB7XG4gICAgY29uc3QgcHJldiA9IGFjY1thY2MubGVuZ3RoIC0gMV07XG4gICAgaWYgKCFwcmV2KSByZXR1cm4gW25vZGVdO1xuXG4gICAgaWYgKHQuaXNTdHJpbmdMaXRlcmFsKHByZXYpICYmIHQuaXNTdHJpbmdMaXRlcmFsKG5vZGUpKSB7XG4gICAgICBhY2MucG9wKCk7XG4gICAgICBhY2MucHVzaCh0LnN0cmluZ0xpdGVyYWwocHJldi52YWx1ZSArIG5vZGUudmFsdWUpKTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfVxuXG4gICAgYWNjLnB1c2gobm9kZSk7XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10gYXMgdC5FeHByZXNzaW9uW10pO1xuXG4gIHJldHVybiByZWR1Y2VkTm9kZXMucmVkdWNlKFxuICAgIChhY2M6IHQuRXhwcmVzc2lvbiB8IHVuZGVmaW5lZCwgbm9kZTogdC5FeHByZXNzaW9uKSA9PiB7XG4gICAgICBpZiAoIWFjYykge1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgIH1cblxuICAgICAgLy8gd3JhcCBhY2Nlc3MgdG8gZHluYW1pYyBibG9ja3MgaW4gVG9rZW4uYXNTdHJpbmcoKSBhcyB0aGV5IHJldHVybiBhIExhenlcbiAgICAgIC8vIGZvciAua2V5IGFuZCAudmFsdWUgd2hpY2ggY2FuJ3QgYmUgY29uY2F0ZW5hdGVkIGluIGxhbmd1YWdlcyBsaWtlIFB5dGhvblxuICAgICAgLy8gYmVjYXVzZSBKU0lJIGN1cnJlbnRseSBoYXMgbm8gc3VwcG9ydCBmb3IgdGhlIHRvU3RyaW5nKCkgbWV0aG9kIGluXG4gICAgICAvLyBsYW5ndWFnZXMgb3RoZXIgdGhhbiBUeXBlU2NyaXB0OiBodHRwczovL2dpdGh1Yi5jb20vYXdzL2pzaWkvaXNzdWVzLzM4MFxuICAgICAgLy8gZXhhbXBsZTogZHluYW1pY19pdGVyYXRvcjAua2V5IC8gZHluYW1pY19pdGVyYXRvcjAudmFsdWVcbiAgICAgIGlmIChcbiAgICAgICAgdC5pc01lbWJlckV4cHJlc3Npb24obm9kZSkgJiZcbiAgICAgICAgdC5pc0lkZW50aWZpZXIobm9kZS5vYmplY3QpICYmXG4gICAgICAgIE9iamVjdC52YWx1ZXMoc2NvcGUuc2NvcGVkVmFyaWFibGVzIHx8IHt9KS5pbmNsdWRlcyhub2RlLm9iamVjdC5uYW1lKSAmJlxuICAgICAgICB0LmlzSWRlbnRpZmllcihub2RlLnByb3BlcnR5KSAmJlxuICAgICAgICBbXCJrZXlcIiwgXCJ2YWx1ZVwiXS5pbmNsdWRlcyhub2RlLnByb3BlcnR5Lm5hbWUpXG4gICAgICApIHtcbiAgICAgICAgbm9kZSA9IGNvZXJjZVR5cGUoc2NvcGUsIG5vZGUsIFwiZHluYW1pY1wiLCBcInN0cmluZ1wiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHQuYmluYXJ5RXhwcmVzc2lvbihcIitcIiwgYWNjIGFzIHQuRXhwcmVzc2lvbiwgbm9kZSk7XG4gICAgfSxcbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0VGZSZXNvdXJjZVBhdGhGcm9tTm9kZShub2RlOiB0ZXguU2NvcGVUcmF2ZXJzYWxFeHByZXNzaW9uKSB7XG4gIGNvbnN0IHNlZ21lbnRzID0gbm9kZS5tZXRhLnRyYXZlcnNhbDtcbiAgbGV0IHJlc291cmNlID0gc2VnbWVudHNbMF0uc2VnbWVudDtcbiAgbGV0IHJlc3VsdCA9IFtdO1xuICBsZXQgYXR0cmlidXRlcyA9IFtdO1xuXG4gIGlmIChzZWdtZW50c1swXS5zZWdtZW50ID09PSBcImRhdGFcIikge1xuICAgIHJlc3VsdC5wdXNoKHNlZ21lbnRzWzBdLnNlZ21lbnQpO1xuICAgIHJlc291cmNlID0gc2VnbWVudHNbMV0uc2VnbWVudDtcbiAgICBhdHRyaWJ1dGVzID0gc2VnbWVudHMuc2xpY2UoMyk7IC8vIHdlIHdhbnQgdG8gc2tpcCB0aGUgdmFyaWFibGUgbmFtZVxuICB9IGVsc2Uge1xuICAgIGF0dHJpYnV0ZXMgPSBzZWdtZW50cy5zbGljZSgyKTsgLy8gd2Ugd2FudCB0byBza2lwIHRoZSB2YXJpYWJsZSBuYW1lXG4gIH1cblxuICBjb25zdCBbcHJvdmlkZXIsIC4uLnJlc291cmNlTmFtZUZyYWdtZW50c10gPSByZXNvdXJjZS5zcGxpdChcIl9cIik7XG5cbiAgLy8gSGFjazogVGhpcyBoYXBwZW5zIGluIHRoZSBjYXNlIG9mIGBleHRlcm5hbGAgcHJvdmlkZXJcbiAgLy8gd2hlcmUgdGhlIGRhdGEgc291cmNlIGRvZXMgbm90IGhhdmUgYSBwcm92aWRlciBuYW1lIHByZWZpeFxuICBpZiAocmVzb3VyY2VOYW1lRnJhZ21lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJlc291cmNlTmFtZUZyYWdtZW50cy5wdXNoKHByb3ZpZGVyKTtcbiAgfVxuXG4gIHJlc3VsdC5wdXNoKHByb3ZpZGVyKTtcbiAgcmVzdWx0LnB1c2gocmVzb3VyY2VOYW1lRnJhZ21lbnRzLmpvaW4oXCJfXCIpKTtcbiAgcmVzdWx0ID0gW1xuICAgIC4uLnJlc3VsdCxcbiAgICAuLi5hdHRyaWJ1dGVzLm1hcCgoc2VnKSA9PiB7XG4gICAgICBpZiAodGV4LmlzSW5kZXhUcmF2ZXJzYWxQYXJ0KHNlZykpIHtcbiAgICAgICAgcmV0dXJuIGBbJHtzZWcuc2VnbWVudH1dYDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzZWcuc2VnbWVudDtcbiAgICB9KSxcbiAgXTtcblxuICByZXR1cm4gcmVzdWx0LmpvaW4oXCIuXCIpO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0TGl0ZXJhbFZhbHVlRXhwcmVzc2lvblRvVHMoXG4gIF9zY29wZTogUmVzb3VyY2VTY29wZSxcbiAgbm9kZTogdGV4LkxpdGVyYWxWYWx1ZUV4cHJlc3Npb24sXG4pIHtcbiAgY29uc3QgbGl0ZXJhbFR5cGUgPSBub2RlLm1ldGEudHlwZTtcbiAgaWYgKGxpdGVyYWxUeXBlID09PSBcIm51bWJlclwiKSB7XG4gICAgcmV0dXJuIHQubnVtZXJpY0xpdGVyYWwoTnVtYmVyKG5vZGUubWV0YS52YWx1ZSkpO1xuICB9XG4gIGlmIChsaXRlcmFsVHlwZSA9PT0gXCJib29sXCIpIHtcbiAgICByZXR1cm4gdC5ib29sZWFuTGl0ZXJhbChub2RlLm1ldGEudmFsdWUgPT09IFwidHJ1ZVwiID8gdHJ1ZSA6IGZhbHNlKTtcbiAgfVxuXG4gIHJldHVybiB0LnN0cmluZ0xpdGVyYWwobm9kZS5tZXRhLnZhbHVlKTtcbn1cblxuZnVuY3Rpb24gY29udmVydFNjb3BlVHJhdmVyc2FsRXhwcmVzc2lvblRvVHMoXG4gIHNjb3BlOiBSZXNvdXJjZVNjb3BlLFxuICBub2RlOiB0ZXguU2NvcGVUcmF2ZXJzYWxFeHByZXNzaW9uLFxuKSB7XG4gIGNvbnN0IGhhc1JlZmVyZW5jZSA9IGNvbnRhaW5zUmVmZXJlbmNlKG5vZGUpO1xuXG4gIGNvbnN0IHNlZ21lbnRzID0gbm9kZS5tZXRhLnRyYXZlcnNhbDtcblxuICBpZiAoc2VnbWVudHNbMF0uc2VnbWVudCA9PT0gXCJlYWNoXCIgJiYgc2NvcGUuZm9yRWFjaEl0ZXJhdG9yTmFtZSkge1xuICAgIHJldHVybiBkeW5hbWljVmFyaWFibGVUb0FzdChzY29wZSwgbm9kZSwgc2NvcGUuZm9yRWFjaEl0ZXJhdG9yTmFtZSk7XG4gIH1cblxuICBpZiAoc2VnbWVudHNbMF0uc2VnbWVudCA9PT0gXCJjb3VudFwiICYmIHNjb3BlLmNvdW50SXRlcmF0b3JOYW1lKSB7XG4gICAgcmV0dXJuIGR5bmFtaWNWYXJpYWJsZVRvQXN0KHNjb3BlLCBub2RlLCBzY29wZS5jb3VudEl0ZXJhdG9yTmFtZSwgXCJjb3VudFwiKTtcbiAgfVxuXG4gIGlmIChzZWdtZW50c1swXS5zZWdtZW50ID09PSBcInNlbGZcIikge1xuICAgIHNjb3BlLmltcG9ydGFibGVzLnB1c2goe1xuICAgICAgY29uc3RydWN0TmFtZTogXCJUZXJyYWZvcm1TZWxmXCIsXG4gICAgICBwcm92aWRlcjogXCJjZGt0blwiLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHQuY2FsbEV4cHJlc3Npb24oXG4gICAgICB0Lm1lbWJlckV4cHJlc3Npb24odC5pZGVudGlmaWVyKFwiVGVycmFmb3JtU2VsZlwiKSwgdC5pZGVudGlmaWVyKFwiZ2V0QW55XCIpKSxcblxuICAgICAgW3Quc3RyaW5nTGl0ZXJhbCh0cmF2ZXJzYWxQYXJ0c1RvU3RyaW5nKHNlZ21lbnRzLnNsaWNlKDEpKSldLFxuICAgICk7XG4gIH1cblxuICAvLyBzZXR0aW5nLnZhbHVlLCBzZXR0aW5nLnZhbHVlWzFdLmlkXG4gIGNvbnN0IGR5bmFtaWNCbG9jayA9IHNjb3BlLnNjb3BlZFZhcmlhYmxlcz8uW3NlZ21lbnRzWzBdLnNlZ21lbnRdO1xuICBpZiAoZHluYW1pY0Jsb2NrKSB7XG4gICAgaWYgKGR5bmFtaWNCbG9jayA9PT0gXCJkeW5hbWljLWJsb2NrXCIpIHtcbiAgICAgIHJldHVybiBkeW5hbWljVmFyaWFibGVUb0FzdChcbiAgICAgICAgc2NvcGUsXG4gICAgICAgIG5vZGUsXG4gICAgICAgIGR5bmFtaWNCbG9jayxcbiAgICAgICAgdHJhdmVyc2FsUGFydHNUb1N0cmluZyhzZWdtZW50cyksXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gZHluYW1pY1ZhcmlhYmxlVG9Bc3Qoc2NvcGUsIG5vZGUsIGR5bmFtaWNCbG9jaywgc2VnbWVudHNbMF0uc2VnbWVudCk7XG4gIH1cblxuICAvLyBUaGlzIG1heSBiZSBhIHZhcmlhYmxlIHJlZmVyZW5jZSB0aGF0IHdlIGRvbid0IHVuZGVyc3RhbmQgeWV0LCBzbyB3ZSB3cmFwIGl0IGluIGEgdGVtcGxhdGUgc3RyaW5nXG4gIC8vIGZvciBUZXJyYWZvcm0gdG8gaGFuZGxlXG4gIGxldCB2YXJJZGVudGlmaWVyOiB0LkV4cHJlc3Npb24gPSB0LnN0cmluZ0xpdGVyYWwoXG4gICAgYFxcJHske25vZGUubWV0YS5mdWxsQWNjZXNzb3J9fWAsXG4gICk7XG5cbiAgaWYgKGhhc1JlZmVyZW5jZSkge1xuICAgIHZhcklkZW50aWZpZXIgPSB0LmlkZW50aWZpZXIoXG4gICAgICBjYW1lbENhc2UodHJhdmVyc2FsVG9WYXJpYWJsZU5hbWUoc2NvcGUsIG5vZGUpKSxcbiAgICApO1xuICB9XG5cbiAgaWYgKFtcInZhclwiLCBcImxvY2FsXCJdLmluY2x1ZGVzKHNlZ21lbnRzWzBdLnNlZ21lbnQpKSB7XG4gICAgY29uc3QgdmFyaWFibGVBY2Nlc3NvciA9XG4gICAgICBzZWdtZW50c1swXS5zZWdtZW50ID09PSBcInZhclwiXG4gICAgICAgID8gdC5tZW1iZXJFeHByZXNzaW9uKHZhcklkZW50aWZpZXIsIHQuaWRlbnRpZmllcihcInZhbHVlXCIpKVxuICAgICAgICA6IHZhcklkZW50aWZpZXI7XG5cbiAgICBpZiAoc2VnbWVudHMubGVuZ3RoID4gMikge1xuICAgICAgc2NvcGUuaW1wb3J0YWJsZXMucHVzaCh7XG4gICAgICAgIGNvbnN0cnVjdE5hbWU6IFwiRm5cIixcbiAgICAgICAgcHJvdmlkZXI6IFwiY2RrdG5cIixcbiAgICAgIH0pO1xuICAgICAgY29uc3QgY2FsbGVlID0gdC5tZW1iZXJFeHByZXNzaW9uKFxuICAgICAgICB0LmlkZW50aWZpZXIoXCJGblwiKSxcbiAgICAgICAgdC5pZGVudGlmaWVyKFwibG9va3VwTmVzdGVkXCIpLFxuICAgICAgKTtcbiAgICAgIHJldHVybiB0LmNhbGxFeHByZXNzaW9uKGNhbGxlZSwgW1xuICAgICAgICB2YXJpYWJsZUFjY2Vzc29yLFxuICAgICAgICB0LmFycmF5RXhwcmVzc2lvbihcbiAgICAgICAgICBzZWdtZW50cy5zbGljZSgyKS5tYXAoKHMpID0+IHQuc3RyaW5nTGl0ZXJhbChzLnNlZ21lbnQpKSxcbiAgICAgICAgKSxcbiAgICAgIF0pO1xuICAgIH1cblxuICAgIHJldHVybiB2YXJpYWJsZUFjY2Vzc29yO1xuICB9XG5cbiAgaWYgKCFoYXNSZWZlcmVuY2UgfHwgc2NvcGUud2l0aGluT3ZlcnJpZGVFeHByZXNzaW9uKSB7XG4gICAgcmV0dXJuIHZhcklkZW50aWZpZXI7XG4gIH1cblxuICBjb25zdCByb290U2VnbWVudCA9IHNlZ21lbnRzWzBdLnNlZ21lbnQ7XG4gIGNvbnN0IGF0dHJpYnV0ZUluZGV4ID0gcm9vdFNlZ21lbnQgPT09IFwiZGF0YVwiID8gMyA6IDI7XG4gIGNvbnN0IGF0dHJpYnV0ZVNlZ21lbnRzID0gc2VnbWVudHMuc2xpY2UoYXR0cmlidXRlSW5kZXgpO1xuICBjb25zdCBudW1lcmljQWNjZXNzb3JJbmRleCA9IGF0dHJpYnV0ZVNlZ21lbnRzLmZpbmRJbmRleCgoc2VnKSA9PlxuICAgIHRleC5pc0luZGV4VHJhdmVyc2FsUGFydChzZWcpLFxuICApO1xuICBsZXQgbWluQWNjZXNzb3JJbmRleCA9IG51bWVyaWNBY2Nlc3NvckluZGV4O1xuICBsZXQgbWFwQWNjZXNzb3JJbmRleCA9IC0xO1xuICBpZiAobnVtZXJpY0FjY2Vzc29ySW5kZXggPT09IC0xKSB7XG4gICAgLy8gb25seSBkbyB0aGlzIGlmIHdlIGhhdmUgdG8sIGlmIHdlIGFscmVhZHkgaGF2ZSBhXG4gICAgLy8gbnVtZXJpYyBhY2Nlc3Nvciwgd2UgZG9uJ3QgaGF2ZSB0byBkbyB0aGlzIGFkZGl0aW9uYWwgd29ya1xuICAgIGNvbnN0IHJlc291cmNlUGF0aCA9IGdldFRmUmVzb3VyY2VQYXRoRnJvbU5vZGUobm9kZSk7XG4gICAgbGV0IHVzaW5nU3ViUGF0aFR5cGUgPSBmYWxzZTtcbiAgICBjb25zdCBwYXJ0cyA9IHJlc291cmNlUGF0aC5zcGxpdChcIi5cIikuZmlsdGVyKChwKSA9PiBwICE9PSBcIlwiKTtcbiAgICBjb25zdCBtaW5QYXJ0cyA9IGF0dHJpYnV0ZUluZGV4OyAvLyB3ZSBuZWVkIHRvIHN0b3AgYmVmb3JlIGRhdGEuYXdzLnJlc291cmNlX25hbWUgb3IgYXdzLnJlc291cmNlX25hbWVcbiAgICBjb25zdCBvcmlnaW5hbFBhcnRzID0gcGFydHMubGVuZ3RoO1xuICAgIGxldCBoYXNNYXBBY2Nlc3NvciA9IGZhbHNlO1xuICAgIHdoaWxlIChwYXJ0cy5sZW5ndGggPj0gbWluUGFydHMpIHtcbiAgICAgIGNvbnN0IHR5cGUgPSBnZXRUeXBlQXRQYXRoKHNjb3BlLnByb3ZpZGVyU2NoZW1hLCBwYXJ0cy5qb2luKFwiLlwiKSk7XG4gICAgICBpZiAodHlwZSAhPT0gbnVsbCkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0eXBlKSAmJiB0eXBlWzBdID09PSBcIm1hcFwiICYmIHVzaW5nU3ViUGF0aFR5cGUpIHtcbiAgICAgICAgICBoYXNNYXBBY2Nlc3NvciA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHBhcnRzLnBvcCgpO1xuICAgICAgdXNpbmdTdWJQYXRoVHlwZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGhhc01hcEFjY2Vzc29yKSB7XG4gICAgICBtYXBBY2Nlc3NvckluZGV4ID0gb3JpZ2luYWxQYXJ0cyAtIHBhcnRzLmxlbmd0aCAtIDE7XG4gICAgICBtaW5BY2Nlc3NvckluZGV4ID0gbWFwQWNjZXNzb3JJbmRleDtcbiAgICB9XG4gIH1cblxuICBjb25zdCBuZWVkc1Byb3BlcnR5QWNjZXNzID0gbWluQWNjZXNzb3JJbmRleCA+PSAwO1xuXG4gIGNvbnN0IHJlZlNlZ21lbnRzID0gbmVlZHNQcm9wZXJ0eUFjY2Vzc1xuICAgID8gYXR0cmlidXRlU2VnbWVudHMuc2xpY2UoMCwgbWluQWNjZXNzb3JJbmRleClcbiAgICA6IGF0dHJpYnV0ZVNlZ21lbnRzO1xuICBjb25zdCBub25SZWZTZWdtZW50cyA9IG5lZWRzUHJvcGVydHlBY2Nlc3NcbiAgICA/IGF0dHJpYnV0ZVNlZ21lbnRzLnNsaWNlKG1pbkFjY2Vzc29ySW5kZXgpXG4gICAgOiBbXTtcblxuICBjb25zdCByZWYgPSByZWZTZWdtZW50cy5yZWR1Y2UoXG4gICAgKGFjYzogdC5FeHByZXNzaW9uLCBzZWcsIGluZGV4KSA9PlxuICAgICAgdC5tZW1iZXJFeHByZXNzaW9uKFxuICAgICAgICBhY2MsXG4gICAgICAgIHQuaWRlbnRpZmllcihcbiAgICAgICAgICBpbmRleCA9PT0gMCAmJiByb290U2VnbWVudCA9PT0gXCJtb2R1bGVcIlxuICAgICAgICAgICAgPyBjYW1lbENhc2Uoc2VnLnNlZ21lbnQgKyBcIk91dHB1dFwiKVxuICAgICAgICAgICAgOiBjYW1lbENhc2Uoc2VnLnNlZ21lbnQpLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICB2YXJJZGVudGlmaWVyLFxuICApO1xuXG4gIGlmIChub25SZWZTZWdtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gcmVmO1xuICB9XG5cbiAgc2NvcGUuaW1wb3J0YWJsZXMucHVzaCh7XG4gICAgY29uc3RydWN0TmFtZTogXCJGblwiLFxuICAgIHByb3ZpZGVyOiBcImNka3RuXCIsXG4gIH0pO1xuICBjb25zdCBjYWxsZWUgPSB0Lm1lbWJlckV4cHJlc3Npb24oXG4gICAgdC5pZGVudGlmaWVyKFwiRm5cIiksXG4gICAgdC5pZGVudGlmaWVyKFwibG9va3VwTmVzdGVkXCIpLFxuICApO1xuICByZXR1cm4gdC5jYWxsRXhwcmVzc2lvbihjYWxsZWUsIFtcbiAgICByZWYsXG4gICAgdC5hcnJheUV4cHJlc3Npb24obm9uUmVmU2VnbWVudHMubWFwKChzKSA9PiB0LnN0cmluZ0xpdGVyYWwocy5zZWdtZW50KSkpLFxuICBdKTtcbn1cblxuZnVuY3Rpb24gY29udmVydFVuYXJ5T3BFeHByZXNzaW9uVG9UcyhcbiAgc2NvcGU6IFJlc291cmNlU2NvcGUsXG4gIG5vZGU6IHRleC5VbmFyeU9wRXhwcmVzc2lvbixcbikge1xuICBjb25zdCBvcGVyYW5kID0gY29udmVydFRGRXhwcmVzc2lvbkFzdFRvVHMoXG4gICAgc2NvcGUsXG4gICAgdGV4LmdldENoaWxkV2l0aFZhbHVlKG5vZGUsIG5vZGUubWV0YS52YWx1ZUV4cHJlc3Npb24pISxcbiAgKTtcblxuICBsZXQgZm5OYW1lID0gbm9kZS5tZXRhLm9wZXJhdG9yO1xuICBpZiAodGZVbmFyeU9wZXJhdG9yc1RvQ2RrdGZbZm5OYW1lIGFzIHN1cHBvcnRlZFVuYXJ5T3BlcmF0b3JzXSkge1xuICAgIGZuTmFtZSA9IHRmVW5hcnlPcGVyYXRvcnNUb0Nka3RmW2ZuTmFtZSBhcyBzdXBwb3J0ZWRVbmFyeU9wZXJhdG9yc107XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgY29udmVydCB1bmtub3duIG9wZXJhdG9yICR7bm9kZS5tZXRhLm9wZXJhdG9yfWApO1xuICB9XG5cbiAgc2NvcGUuaW1wb3J0YWJsZXMucHVzaCh7XG4gICAgY29uc3RydWN0TmFtZTogXCJPcFwiLFxuICAgIHByb3ZpZGVyOiBcImNka3RuXCIsXG4gIH0pO1xuXG4gIGNvbnN0IGZuID0gdC5tZW1iZXJFeHByZXNzaW9uKHQuaWRlbnRpZmllcihcIk9wXCIpLCB0LmlkZW50aWZpZXIoZm5OYW1lKSk7XG5cbiAgcmV0dXJuIHQuY2FsbEV4cHJlc3Npb24oZm4sIFtvcGVyYW5kXSk7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRCaW5hcnlPcEV4cHJlc3Npb25Ub1RzKFxuICBzY29wZTogUmVzb3VyY2VTY29wZSxcbiAgbm9kZTogdGV4LkJpbmFyeU9wRXhwcmVzc2lvbixcbikge1xuICBjb25zdCBsZWZ0ID0gY29udmVydFRGRXhwcmVzc2lvbkFzdFRvVHMoXG4gICAgc2NvcGUsXG4gICAgdGV4LmdldENoaWxkV2l0aFZhbHVlKG5vZGUsIG5vZGUubWV0YS5saHNFeHByZXNzaW9uKSEsXG4gICk7XG4gIGNvbnN0IHJpZ2h0ID0gY29udmVydFRGRXhwcmVzc2lvbkFzdFRvVHMoXG4gICAgc2NvcGUsXG4gICAgdGV4LmdldENoaWxkV2l0aFZhbHVlKG5vZGUsIG5vZGUubWV0YS5yaHNFeHByZXNzaW9uKSEsXG4gICk7XG5cbiAgbGV0IGZuTmFtZSA9IG5vZGUubWV0YS5vcGVyYXRvcjtcbiAgaWYgKHRmQmluYXJ5T3BlcmF0b3JzVG9DZGt0Zltmbk5hbWUgYXMgc3VwcG9ydGVkQmluYXJ5T3BlcmF0b3JzXSkge1xuICAgIGZuTmFtZSA9IHRmQmluYXJ5T3BlcmF0b3JzVG9DZGt0Zltmbk5hbWUgYXMgc3VwcG9ydGVkQmluYXJ5T3BlcmF0b3JzXTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBjb252ZXJ0IHVua25vd24gb3BlcmF0b3IgJHtub2RlLm1ldGEub3BlcmF0b3J9YCk7XG4gIH1cblxuICBzY29wZS5pbXBvcnRhYmxlcy5wdXNoKHtcbiAgICBjb25zdHJ1Y3ROYW1lOiBcIk9wXCIsXG4gICAgcHJvdmlkZXI6IFwiY2RrdG5cIixcbiAgfSk7XG5cbiAgY29uc3QgZm4gPSB0Lm1lbWJlckV4cHJlc3Npb24odC5pZGVudGlmaWVyKFwiT3BcIiksIHQuaWRlbnRpZmllcihmbk5hbWUpKTtcbiAgcmV0dXJuIHQuY2FsbEV4cHJlc3Npb24oZm4sIFtsZWZ0LCByaWdodF0pO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0VGVtcGxhdGVFeHByZXNzaW9uVG9UcyhcbiAgc2NvcGU6IFJlc291cmNlU2NvcGUsXG4gIG5vZGU6IHRleC5UZW1wbGF0ZUV4cHJlc3Npb24gfCB0ZXguVGVtcGxhdGVXcmFwRXhwcmVzc2lvbixcbikge1xuICBjb25zdCBwYXJ0cyA9IG5vZGUuY2hpbGRyZW4ubWFwKChjaGlsZCkgPT4gKHtcbiAgICBub2RlOiBjaGlsZCxcbiAgICBleHByOiBjb252ZXJ0VEZFeHByZXNzaW9uQXN0VG9UcyhzY29wZSwgY2hpbGQpLFxuICB9KSk7XG5cbiAgY29uc3QgbGFzdFBhcnQgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXTtcbiAgaWYgKHQuaXNTdHJpbmdMaXRlcmFsKGxhc3RQYXJ0LmV4cHIpICYmIGxhc3RQYXJ0LmV4cHIudmFsdWUgPT09IFwiXFxuXCIpIHtcbiAgICAvLyBUaGlzIGlzIGEgYml0IG9mIGEgaGFjaywgYnV0IHRoZSB0cmFpbGluZyBuZXdsaW5lIHdlIGFkZCBkdWUgdG9cbiAgICAvLyBoZXJlZG9jcyBsb29rcyB1Z2x5IGFuZCB1bm5lY2Vzc2FyeSBpbiB0aGUgZ2VuZXJhdGVkIGNvZGUsIHNvIHdlXG4gICAgLy8gdHJ5IHRvIHJlbW92ZSBpdFxuICAgIHBhcnRzLnBvcCgpO1xuICB9XG5cbiAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB0LnN0cmluZ0xpdGVyYWwobm9kZS5tZXRhLnZhbHVlKTtcbiAgfVxuXG4gIGlmIChwYXJ0cy5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gcGFydHNbMF0uZXhwcjtcbiAgfVxuXG4gIGxldCBpc1Njb3BlZFRyYXZlcnNhbCA9IGZhbHNlO1xuICBjb25zdCBleHByZXNzaW9uczogdC5FeHByZXNzaW9uW10gPSBbXTtcbiAgZm9yIChjb25zdCB7IG5vZGUsIGV4cHIgfSBvZiBwYXJ0cykge1xuICAgIGlmIChcbiAgICAgIHRleC5pc1Njb3BlVHJhdmVyc2FsRXhwcmVzc2lvbihub2RlKSAmJlxuICAgICAgIXQuaXNTdHJpbmdMaXRlcmFsKGV4cHIpICYmXG4gICAgICAhdC5pc0NhbGxFeHByZXNzaW9uKGV4cHIpXG4gICAgKSB7XG4gICAgICBleHByZXNzaW9ucy5wdXNoKHQuc3RyaW5nTGl0ZXJhbChcIiR7XCIpKTtcbiAgICAgIGlzU2NvcGVkVHJhdmVyc2FsID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgLy8gd2Ugc2hvdWxkIGlkZWFsbHkgYmUgZG9pbmcgdHlwZSBjb2VyY2lvbiBtb3JlXG4gICAgICAvLyBjYXJlZnVsbHkgaGVyZSwgYmVjYXVzZSBpdCBtYXkgbm90IGFsd2F5cyBiZSBuZWVkZWRcbiAgICAgIHQuaXNDYWxsRXhwcmVzc2lvbihleHByKVxuICAgICkge1xuICAgICAgc2NvcGUuaW1wb3J0YWJsZXMucHVzaCh7XG4gICAgICAgIGNvbnN0cnVjdE5hbWU6IFwiVG9rZW5cIixcbiAgICAgICAgcHJvdmlkZXI6IFwiY2RrdG5cIixcbiAgICAgIH0pO1xuXG4gICAgICBleHByZXNzaW9ucy5wdXNoKFxuICAgICAgICB0ZW1wbGF0ZS5leHByZXNzaW9uKGBUb2tlbi5hc1N0cmluZyglJWV4cHIlJSlgKSh7XG4gICAgICAgICAgZXhwcixcbiAgICAgICAgfSkgYXMgdC5FeHByZXNzaW9uLFxuICAgICAgKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaXNTY29wZWRUcmF2ZXJzYWwpIHtcbiAgICAgICAgZXhwcmVzc2lvbnMucHVzaCh0LnN0cmluZ0xpdGVyYWwoXCJ9XCIpKTtcbiAgICAgICAgaXNTY29wZWRUcmF2ZXJzYWwgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgZXhwcmVzc2lvbnMucHVzaChleHByKTtcbiAgfVxuXG4gIGlmIChpc1Njb3BlZFRyYXZlcnNhbCkge1xuICAgIGV4cHJlc3Npb25zLnB1c2godC5zdHJpbmdMaXRlcmFsKFwifVwiKSk7XG4gIH1cblxuICByZXR1cm4gZXhwcmVzc2lvbkZvclNlcmlhbFN0cmluZ0NvbmNhdGVuYXRpb24oc2NvcGUsIGV4cHJlc3Npb25zKTtcbn1cblxuZnVuY3Rpb24gY29udmVydE9iamVjdEV4cHJlc3Npb25Ub1RzKFxuICBzY29wZTogUmVzb3VyY2VTY29wZSxcbiAgbm9kZTogdGV4Lk9iamVjdEV4cHJlc3Npb24sXG4pIHtcbiAgcmV0dXJuIHQub2JqZWN0RXhwcmVzc2lvbihcbiAgICBPYmplY3QuZW50cmllcyhub2RlLm1ldGEuaXRlbXMpXG4gICAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWVDaGlsZCA9IHRleC5nZXRDaGlsZFdpdGhWYWx1ZShub2RlLCB2YWx1ZSk7XG4gICAgICAgIGlmICghdmFsdWVDaGlsZCkge1xuICAgICAgICAgIGxvZ2dlci5lcnJvcihgVW5hYmxlIHRvIHZhbHVlIGZvciBvYmplY3Qga2V5ICcke2tleX0nOiAke3ZhbHVlfWApO1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHQub2JqZWN0UHJvcGVydHkoXG4gICAgICAgICAgdC5pZGVudGlmaWVyKGtleSksXG4gICAgICAgICAgY29udmVydFRGRXhwcmVzc2lvbkFzdFRvVHMoc2NvcGUsIHZhbHVlQ2hpbGQpLFxuICAgICAgICApO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoKHMpID0+IHMgIT09IG51bGwpIGFzIHQuT2JqZWN0UHJvcGVydHlbXSxcbiAgKTtcbn1cblxuZnVuY3Rpb24gY29udmVydEZ1bmN0aW9uQ2FsbEV4cHJlc3Npb25Ub1RzKFxuICBzY29wZTogUmVzb3VyY2VTY29wZSxcbiAgbm9kZTogdGV4LkZ1bmN0aW9uQ2FsbEV4cHJlc3Npb24sXG4pIHtcbiAgY29uc3QgZnVuY3Rpb25OYW1lID0gbm9kZS5tZXRhLm5hbWU7XG4gIGNvbnN0IG1hcHBpbmcgPSBmdW5jdGlvbnNNYXBbZnVuY3Rpb25OYW1lXTtcblxuICBpZiAoIW1hcHBpbmcpIHtcbiAgICBsb2dnZXIuZXJyb3IoXG4gICAgICBgVW5rbm93biBmdW5jdGlvbiAke2Z1bmN0aW9uTmFtZX0gZW5jb3VudGVyZWQuICR7ZmlsZUJ1Z0NvbW1lbnRUZXh0fWAsXG4gICAgKTtcbiAgICBjb25zdCBhcmd1bWVudEV4cHJlc3Npb25zID0gbm9kZS5jaGlsZHJlbi5tYXAoKGNoaWxkKSA9PlxuICAgICAgY29udmVydFRGRXhwcmVzc2lvbkFzdFRvVHMoc2NvcGUsIGNoaWxkKSxcbiAgICApO1xuXG4gICAgcmV0dXJuIHQuY2FsbEV4cHJlc3Npb24odC5pZGVudGlmaWVyKGZ1bmN0aW9uTmFtZSksIGFyZ3VtZW50RXhwcmVzc2lvbnMpO1xuICB9XG5cbiAgY29uc3QgdHJhbnNmb3JtZWROb2RlOiB0ZXguRnVuY3Rpb25DYWxsRXhwcmVzc2lvbiA9IG1hcHBpbmcudHJhbnNmb3JtZXJcbiAgICA/IG1hcHBpbmcudHJhbnNmb3JtZXIobm9kZSlcbiAgICA6IG5vZGU7XG5cbiAgY29uc3QgYXJndW1lbnRFeHByZXNzaW9ucyA9IHRyYW5zZm9ybWVkTm9kZS5jaGlsZHJlbi5tYXAoKGNoaWxkKSA9PlxuICAgIGNvbnZlcnRURkV4cHJlc3Npb25Bc3RUb1RzKHNjb3BlLCBjaGlsZCksXG4gICk7XG5cbiAgc2NvcGUuaW1wb3J0YWJsZXMucHVzaCh7XG4gICAgY29uc3RydWN0TmFtZTogXCJGblwiLFxuICAgIHByb3ZpZGVyOiBcImNka3RuXCIsXG4gIH0pO1xuXG4gIGNvbnN0IGNhbGxlZSA9IHQubWVtYmVyRXhwcmVzc2lvbihcbiAgICB0LmlkZW50aWZpZXIoXCJGblwiKSxcbiAgICB0LmlkZW50aWZpZXIobWFwcGluZy5uYW1lKSxcbiAgKTtcblxuICBpZiAoXG4gICAgbWFwcGluZy5wYXJhbWV0ZXJzLmxlbmd0aCA+IDAgJiZcbiAgICBtYXBwaW5nLnBhcmFtZXRlcnNbbWFwcGluZy5wYXJhbWV0ZXJzLmxlbmd0aCAtIDFdLnZhcmlhZGljXG4gICkge1xuICAgIGNvbnN0IGxhc3RQYXJhbWV0ZXJUeXBlID1cbiAgICAgIG1hcHBpbmcucGFyYW1ldGVyc1ttYXBwaW5nLnBhcmFtZXRlcnMubGVuZ3RoIC0gMV0udHlwZTtcbiAgICBjb25zdCBub25WYXJpYWRpY0FyZ3VtZW50cyA9IGFyZ3VtZW50RXhwcmVzc2lvbnMuc2xpY2UoXG4gICAgICAwLFxuICAgICAgbWFwcGluZy5wYXJhbWV0ZXJzLmxlbmd0aCAtIDEsXG4gICAgKTtcblxuICAgIGNvbnN0IGZuQ2FsbEFyZ3VtZW50cyA9IFtcbiAgICAgIC4uLm5vblZhcmlhZGljQXJndW1lbnRzLm1hcCgoYXJnRXhwciwgaW5kZXgpID0+XG4gICAgICAgIGNvZXJjZVR5cGUoXG4gICAgICAgICAgc2NvcGUsXG4gICAgICAgICAgYXJnRXhwcixcbiAgICAgICAgICBmaW5kRXhwcmVzc2lvblR5cGUoc2NvcGUsIGFyZ0V4cHIpLFxuICAgICAgICAgIG1hcHBpbmcucGFyYW1ldGVyc1tpbmRleF0udHlwZSxcbiAgICAgICAgKSxcbiAgICAgICksXG5cbiAgICAgIHQuYXJyYXlFeHByZXNzaW9uKFxuICAgICAgICBhcmd1bWVudEV4cHJlc3Npb25zXG4gICAgICAgICAgLnNsaWNlKG1hcHBpbmcucGFyYW1ldGVycy5sZW5ndGggLSAxKVxuICAgICAgICAgIC5tYXAoKGFyZ0V4cHIpID0+XG4gICAgICAgICAgICBjb2VyY2VUeXBlKFxuICAgICAgICAgICAgICBzY29wZSxcbiAgICAgICAgICAgICAgYXJnRXhwcixcbiAgICAgICAgICAgICAgZmluZEV4cHJlc3Npb25UeXBlKHNjb3BlLCBhcmdFeHByKSxcbiAgICAgICAgICAgICAgbGFzdFBhcmFtZXRlclR5cGUsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICApLFxuICAgIF07XG5cbiAgICByZXR1cm4gdC5jYWxsRXhwcmVzc2lvbihjYWxsZWUsIGZuQ2FsbEFyZ3VtZW50cyk7XG4gIH1cblxuICByZXR1cm4gdC5jYWxsRXhwcmVzc2lvbihcbiAgICBjYWxsZWUsXG4gICAgYXJndW1lbnRFeHByZXNzaW9ucy5tYXAoKGFyZ0V4cHIsIGluZGV4KSA9PlxuICAgICAgY29lcmNlVHlwZShcbiAgICAgICAgc2NvcGUsXG4gICAgICAgIGFyZ0V4cHIsXG4gICAgICAgIGZpbmRFeHByZXNzaW9uVHlwZShzY29wZSwgYXJnRXhwciksXG4gICAgICAgIG1hcHBpbmcucGFyYW1ldGVyc1tpbmRleF0udHlwZSxcbiAgICAgICksXG4gICAgKSxcbiAgKTtcbn1cblxuZnVuY3Rpb24gY29udmVydEluZGV4RXhwcmVzc2lvblRvVHMoXG4gIHNjb3BlOiBSZXNvdXJjZVNjb3BlLFxuICBub2RlOiB0ZXguSW5kZXhFeHByZXNzaW9uLFxuKSB7XG4gIGNvbnN0IGNvbGxlY3Rpb25FeHByZXNzaW9uQ2hpbGQgPSB0ZXguZ2V0Q2hpbGRXaXRoVmFsdWUoXG4gICAgbm9kZSxcbiAgICBub2RlLm1ldGEuY29sbGVjdGlvbkV4cHJlc3Npb24sXG4gICk7XG4gIGNvbnN0IGtleUV4cHJlc3Npb25DaGlsZCA9IHRleC5nZXRDaGlsZFdpdGhWYWx1ZShcbiAgICBub2RlLFxuICAgIG5vZGUubWV0YS5rZXlFeHByZXNzaW9uLFxuICApO1xuXG4gIGNvbnN0IGNvbGxlY3Rpb25FeHByZXNzaW9uID0gY29udmVydFRGRXhwcmVzc2lvbkFzdFRvVHMoXG4gICAgc2NvcGUsXG4gICAgY29sbGVjdGlvbkV4cHJlc3Npb25DaGlsZCEsXG4gICk7XG4gIGNvbnN0IGtleUV4cHJlc3Npb24gPSBjb252ZXJ0VEZFeHByZXNzaW9uQXN0VG9UcyhzY29wZSwga2V5RXhwcmVzc2lvbkNoaWxkISk7XG5cbiAgc2NvcGUuaW1wb3J0YWJsZXMucHVzaCh7XG4gICAgY29uc3RydWN0TmFtZTogXCJGblwiLFxuICAgIHByb3ZpZGVyOiBcImNka3RuXCIsXG4gIH0pO1xuICBjb25zdCBjYWxsZWUgPSB0Lm1lbWJlckV4cHJlc3Npb24oXG4gICAgdC5pZGVudGlmaWVyKFwiRm5cIiksXG4gICAgdC5pZGVudGlmaWVyKFwibG9va3VwTmVzdGVkXCIpLFxuICApO1xuICByZXR1cm4gdC5jYWxsRXhwcmVzc2lvbihjYWxsZWUsIFtcbiAgICBjb2xsZWN0aW9uRXhwcmVzc2lvbixcbiAgICB0LmFycmF5RXhwcmVzc2lvbihba2V5RXhwcmVzc2lvbl0pLFxuICBdKTtcbn1cblxuZnVuY3Rpb24gY29udmVydFNwbGF0RXhwcmVzc2lvblRvVHMoXG4gIHNjb3BlOiBSZXNvdXJjZVNjb3BlLFxuICBub2RlOiB0ZXguU3BsYXRFeHByZXNzaW9uLFxuKSB7XG4gIGNvbnN0IHNvdXJjZUV4cHJlc3Npb25DaGlsZCA9IHRleC5nZXRDaGlsZFdpdGhWYWx1ZShcbiAgICBub2RlLFxuICAgIG5vZGUubWV0YS5zb3VyY2VFeHByZXNzaW9uLFxuICApITtcbiAgY29uc3Qgc291cmNlRXhwcmVzc2lvbiA9IGNvbnZlcnRURkV4cHJlc3Npb25Bc3RUb1RzKFxuICAgIHNjb3BlLFxuICAgIHNvdXJjZUV4cHJlc3Npb25DaGlsZCxcbiAgKTtcblxuICAvLyBXZSBkb24ndCBjb252ZXJ0IHRoZSByZWxhdGl2ZSBleHByZXNzaW9uIGJlY2F1c2UgZXZlcnl0aGluZyBhZnRlciB0aGUgc3BsYXQgaXMgZ29pbmcgdG8gYmVcbiAgLy8gYSBzdHJpbmdcbiAgY29uc3QgcmVsYXRpdmVFeHByZXNzaW9uID0gbm9kZS5tZXRhLmVhY2hFeHByZXNzaW9uLnN0YXJ0c1dpdGgoXG4gICAgbm9kZS5tZXRhLmFub25TeW1ib2xFeHByZXNzaW9uLFxuICApXG4gICAgPyBub2RlLm1ldGEuZWFjaEV4cHJlc3Npb24uc2xpY2Uobm9kZS5tZXRhLmFub25TeW1ib2xFeHByZXNzaW9uLmxlbmd0aClcbiAgICA6IG5vZGUubWV0YS5lYWNoRXhwcmVzc2lvbjtcblxuICBjb25zdCBzZWdtZW50cyA9IHJlbGF0aXZlRXhwcmVzc2lvbi5zcGxpdCgvXFwufFxcW3xcXF0vKS5maWx0ZXIoKHMpID0+IHMpO1xuICBzY29wZS5pbXBvcnRhYmxlcy5wdXNoKHtcbiAgICBjb25zdHJ1Y3ROYW1lOiBcIkZuXCIsXG4gICAgcHJvdmlkZXI6IFwiY2RrdG5cIixcbiAgfSk7XG4gIGNvbnN0IGNhbGxlZSA9IHQubWVtYmVyRXhwcmVzc2lvbihcbiAgICB0LmlkZW50aWZpZXIoXCJGblwiKSxcbiAgICB0LmlkZW50aWZpZXIoXCJsb29rdXBOZXN0ZWRcIiksXG4gICk7XG5cbiAgcmV0dXJuIHQuY2FsbEV4cHJlc3Npb24oY2FsbGVlLCBbXG4gICAgc291cmNlRXhwcmVzc2lvbixcbiAgICB0LmFycmF5RXhwcmVzc2lvbihbXG4gICAgICAvLyB3ZSBkb24ndCBuZWVkIHRvIHVzZSB0aGUgYW5vblN5bWJvbEV4cHJlc3Npb24gaGVyZSBiZWNhdXNlXG4gICAgICAvLyBpdCBvbmx5IGNoYW5nZXMgYmV0d2VlbiAuKiBhbmQgWypdIHdoaWNoIHdlIGRvbid0IGNhcmUgYWJvdXRcbiAgICAgIHQuc3RyaW5nTGl0ZXJhbChcIipcIiksXG4gICAgICAuLi5zZWdtZW50cy5tYXAodC5zdHJpbmdMaXRlcmFsKSxcbiAgICBdKSxcbiAgXSk7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRDb25kaXRpb25hbEV4cHJlc3Npb25Ub1RzKFxuICBzY29wZTogUmVzb3VyY2VTY29wZSxcbiAgbm9kZTogdGV4LkNvbmRpdGlvbmFsRXhwcmVzc2lvbixcbikge1xuICBjb25zdCBjb25kaXRpb25DaGlsZCA9IHRleC5nZXRDaGlsZFdpdGhWYWx1ZShcbiAgICBub2RlLFxuICAgIG5vZGUubWV0YS5jb25kaXRpb25FeHByZXNzaW9uLFxuICApITtcbiAgbGV0IGNvbmRpdGlvbiA9IGNvbnZlcnRURkV4cHJlc3Npb25Bc3RUb1RzKHNjb3BlLCBjb25kaXRpb25DaGlsZCk7XG4gIGlmICh0LmlzSWRlbnRpZmllcihjb25kaXRpb24pICYmIGNhblVzZUZxbihjb25kaXRpb25DaGlsZCkpIHtcbiAgICAvLyBXZSBoYXZlIGEgcmVzb3VyY2Ugb3IgZGF0YSBzb3VyY2UgaGVyZSwgd2hpY2ggd2Ugd291bGQgbmVlZCB0b1xuICAgIC8vIHJlZmVyZW5jZSB1c2luZyBmcW5cbiAgICBjb25kaXRpb24gPSB0Lm1lbWJlckV4cHJlc3Npb24oY29uZGl0aW9uLCB0LmlkZW50aWZpZXIoXCJmcW5cIikpO1xuICB9XG5cbiAgY29uc3QgdHJ1ZUV4cHJlc3Npb24gPSBjb252ZXJ0VEZFeHByZXNzaW9uQXN0VG9UcyhcbiAgICBzY29wZSxcbiAgICB0ZXguZ2V0Q2hpbGRXaXRoVmFsdWUobm9kZSwgbm9kZS5tZXRhLnRydWVFeHByZXNzaW9uKSEsXG4gICk7XG5cbiAgY29uc3QgZmFsc2VFeHByZXNzaW9uID0gY29udmVydFRGRXhwcmVzc2lvbkFzdFRvVHMoXG4gICAgc2NvcGUsXG4gICAgdGV4LmdldENoaWxkV2l0aFZhbHVlKG5vZGUsIG5vZGUubWV0YS5mYWxzZUV4cHJlc3Npb24pISxcbiAgKTtcblxuICBzY29wZS5pbXBvcnRhYmxlcy5wdXNoKHtcbiAgICBjb25zdHJ1Y3ROYW1lOiBcImNvbmRpdGlvbmFsXCIsXG4gICAgcHJvdmlkZXI6IFwiY2RrdG5cIixcbiAgfSk7XG5cbiAgcmV0dXJuIHQuY2FsbEV4cHJlc3Npb24odC5pZGVudGlmaWVyKFwiY29uZGl0aW9uYWxcIiksIFtcbiAgICBjb25kaXRpb24sXG4gICAgdHJ1ZUV4cHJlc3Npb24sXG4gICAgZmFsc2VFeHByZXNzaW9uLFxuICBdKTtcbn1cblxuZnVuY3Rpb24gY29udmVydFR1cGxlRXhwcmVzc2lvblRvVHMoXG4gIHNjb3BlOiBSZXNvdXJjZVNjb3BlLFxuICBub2RlOiB0ZXguVHVwbGVFeHByZXNzaW9uLFxuKSB7XG4gIGNvbnN0IGV4cHJlc3Npb25zID0gbm9kZS5jaGlsZHJlbi5tYXAoKGNoaWxkKSA9PlxuICAgIGNvbnZlcnRURkV4cHJlc3Npb25Bc3RUb1RzKHNjb3BlLCBjaGlsZCksXG4gICk7XG5cbiAgcmV0dXJuIHQuYXJyYXlFeHByZXNzaW9uKGV4cHJlc3Npb25zKTtcbn1cblxuZnVuY3Rpb24gY29udmVydFJlbGF0aXZlVHJhdmVyc2FsRXhwcmVzc2lvblRvVHMoXG4gIHNjb3BlOiBSZXNvdXJjZVNjb3BlLFxuICBub2RlOiB0ZXguUmVsYXRpdmVUcmF2ZXJzYWxFeHByZXNzaW9uLFxuKSB7XG4gIGNvbnN0IHNlZ21lbnRzID0gbm9kZS5tZXRhLnRyYXZlcnNhbDtcblxuICAvLyBUaGUgbGVmdCBoYW5kIHNpZGUgLyBzb3VyY2Ugb2YgYSByZWxhdGl2ZSB0cmF2ZXJzYWwgaXMgbm90IGEgcHJvcGVyXG4gIC8vIG9iamVjdCAvIHJlc291cmNlIC8gZGF0YSB0aGluZyB0aGF0IGlzIGJlaW5nIHJlZmVyZW5jZWRcbiAgY29uc3Qgc291cmNlID0gY29udmVydFRGRXhwcmVzc2lvbkFzdFRvVHMoXG4gICAgc2NvcGUsXG4gICAgdGV4LmdldENoaWxkV2l0aFZhbHVlKG5vZGUsIG5vZGUubWV0YS5zb3VyY2VFeHByZXNzaW9uKSEsXG4gICk7XG5cbiAgc2NvcGUuaW1wb3J0YWJsZXMucHVzaCh7XG4gICAgY29uc3RydWN0TmFtZTogXCJGblwiLFxuICAgIHByb3ZpZGVyOiBcImNka3RuXCIsXG4gIH0pO1xuICBjb25zdCBjYWxsZWUgPSB0Lm1lbWJlckV4cHJlc3Npb24oXG4gICAgdC5pZGVudGlmaWVyKFwiRm5cIiksXG4gICAgdC5pZGVudGlmaWVyKFwibG9va3VwTmVzdGVkXCIpLFxuICApO1xuXG4gIHJldHVybiB0LmNhbGxFeHByZXNzaW9uKGNhbGxlZSwgW1xuICAgIHNvdXJjZSxcbiAgICB0LmFycmF5RXhwcmVzc2lvbihzZWdtZW50cy5tYXAoKHMpID0+IHQuc3RyaW5nTGl0ZXJhbChzLnNlZ21lbnQpKSksXG4gIF0pO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0Rm9yRXhwcmVzc2lvblRvVHMoXG4gIHNjb3BlOiBSZXNvdXJjZVNjb3BlLFxuICBub2RlOiB0ZXguRm9yRXhwcmVzc2lvbixcbikge1xuICBjb25zdCBjb2xsZWN0aW9uQ2hpbGQgPSB0ZXguZ2V0Q2hpbGRXaXRoVmFsdWUoXG4gICAgbm9kZSxcbiAgICBub2RlLm1ldGEuY29sbGVjdGlvbkV4cHJlc3Npb24sXG4gICkhO1xuXG4gIGxldCBjb2xsZWN0aW9uRXhwcmVzc2lvbiA9IGNvbnZlcnRURkV4cHJlc3Npb25Bc3RUb1RzKHNjb3BlLCBjb2xsZWN0aW9uQ2hpbGQpO1xuXG4gIGlmICh0LmlzSWRlbnRpZmllcihjb2xsZWN0aW9uRXhwcmVzc2lvbikgJiYgY2FuVXNlRnFuKGNvbGxlY3Rpb25DaGlsZCkpIHtcbiAgICAvLyBXZSBoYXZlIGEgcmVzb3VyY2Ugb3IgZGF0YSBzb3VyY2UgaGVyZSwgd2hpY2ggd2Ugd291bGQgbmVlZCB0b1xuICAgIC8vIHJlZmVyZW5jZSB1c2luZyBmcW5cbiAgICBjb2xsZWN0aW9uRXhwcmVzc2lvbiA9IHQubWVtYmVyRXhwcmVzc2lvbihcbiAgICAgIGNvbGxlY3Rpb25FeHByZXNzaW9uLFxuICAgICAgdC5pZGVudGlmaWVyKFwiZnFuXCIpLFxuICAgICk7XG4gIH1cblxuICBjb25zdCBjb2xsZWN0aW9uUmVxdWlyZXNXcmFwcGluZyA9ICF0LmlzU3RyaW5nTGl0ZXJhbChjb2xsZWN0aW9uRXhwcmVzc2lvbik7XG4gIGNvbnN0IGV4cHJlc3Npb25zID0gW107XG4gIGNvbnN0IGNvbmRpdGlvbkJvZHkgPSBub2RlLm1ldGEua2V5VmFyXG4gICAgPyBgJHtub2RlLm1ldGEua2V5VmFyfSwgJHtub2RlLm1ldGEudmFsVmFyfWBcbiAgICA6IG5vZGUubWV0YS52YWxWYXI7XG5cbiAgY29uc3Qgb3BlbkJyYWNlID0gbm9kZS5tZXRhLm9wZW5SYW5nZVZhbHVlO1xuICBjb25zdCBjbG9zZUJyYWNlID0gbm9kZS5tZXRhLmNsb3NlUmFuZ2VWYWx1ZTtcbiAgY29uc3QgZ3JvdXBlZCA9IG5vZGUubWV0YS5ncm91cGVkVmFsdWUgPyBcIi4uLlwiIDogXCJcIjtcbiAgY29uc3QgdmFsdWVFeHByZXNzaW9uID0gYCR7bm9kZS5tZXRhLnZhbHVlRXhwcmVzc2lvbn0ke2dyb3VwZWR9YDtcblxuICBjb25zdCBwcmVmaXggPSBgXFwkeyR7b3BlbkJyYWNlfSBmb3IgJHtjb25kaXRpb25Cb2R5fSBpbiBgO1xuICBjb25zdCBrZXlWYWx1ZSA9IG5vZGUubWV0YS5rZXlFeHByZXNzaW9uXG4gICAgPyBgIDogJHtub2RlLm1ldGEua2V5RXhwcmVzc2lvbn0gPT4gJHt2YWx1ZUV4cHJlc3Npb259YFxuICAgIDogYCA6ICR7dmFsdWVFeHByZXNzaW9ufWA7XG4gIGNvbnN0IGNvbmRpdGlvbmFsID0gbm9kZS5tZXRhLmNvbmRpdGlvbmFsRXhwcmVzc2lvbjtcbiAgY29uc3Qgc3VmZml4ID0gYCR7a2V5VmFsdWV9JHtcbiAgICBjb25kaXRpb25hbCA/IGAgaWYgJHtjb25kaXRpb25hbH1gIDogXCJcIlxuICB9JHtjbG9zZUJyYWNlfX1gO1xuXG4gIGV4cHJlc3Npb25zLnB1c2godC5zdHJpbmdMaXRlcmFsKHByZWZpeCkpO1xuICBpZiAoY29sbGVjdGlvblJlcXVpcmVzV3JhcHBpbmcpIHtcbiAgICBleHByZXNzaW9ucy5wdXNoKHQuc3RyaW5nTGl0ZXJhbChcIiR7XCIpKTtcbiAgfVxuICBleHByZXNzaW9ucy5wdXNoKGNvbGxlY3Rpb25FeHByZXNzaW9uKTtcbiAgaWYgKGNvbGxlY3Rpb25SZXF1aXJlc1dyYXBwaW5nKSB7XG4gICAgZXhwcmVzc2lvbnMucHVzaCh0LnN0cmluZ0xpdGVyYWwoXCJ9XCIpKTtcbiAgfVxuICBleHByZXNzaW9ucy5wdXNoKHQuc3RyaW5nTGl0ZXJhbChzdWZmaXgpKTtcblxuICByZXR1cm4gZXhwcmVzc2lvbkZvclNlcmlhbFN0cmluZ0NvbmNhdGVuYXRpb24oc2NvcGUsIGV4cHJlc3Npb25zKTtcbn1cblxuZnVuY3Rpb24gY29udmVydFRGRXhwcmVzc2lvbkFzdFRvVHMoXG4gIHNjb3BlOiBSZXNvdXJjZVNjb3BlLFxuICBub2RlOiB0ZXguRXhwcmVzc2lvblR5cGUsXG4pOiB0LkV4cHJlc3Npb24ge1xuICBpZiAodGV4LmlzTGl0ZXJhbFZhbHVlRXhwcmVzc2lvbihub2RlKSkge1xuICAgIHJldHVybiBjb252ZXJ0TGl0ZXJhbFZhbHVlRXhwcmVzc2lvblRvVHMoc2NvcGUsIG5vZGUpO1xuICB9XG5cbiAgaWYgKHRleC5pc1Njb3BlVHJhdmVyc2FsRXhwcmVzc2lvbihub2RlKSkge1xuICAgIHJldHVybiBjb252ZXJ0U2NvcGVUcmF2ZXJzYWxFeHByZXNzaW9uVG9UcyhzY29wZSwgbm9kZSk7XG4gIH1cblxuICBpZiAodGV4LmlzVW5hcnlPcEV4cHJlc3Npb24obm9kZSkpIHtcbiAgICByZXR1cm4gY29udmVydFVuYXJ5T3BFeHByZXNzaW9uVG9UcyhzY29wZSwgbm9kZSk7XG4gIH1cblxuICBpZiAodGV4LmlzQmluYXJ5T3BFeHByZXNzaW9uKG5vZGUpKSB7XG4gICAgcmV0dXJuIGNvbnZlcnRCaW5hcnlPcEV4cHJlc3Npb25Ub1RzKHNjb3BlLCBub2RlKTtcbiAgfVxuXG4gIGlmICh0ZXguaXNUZW1wbGF0ZUV4cHJlc3Npb24obm9kZSkgfHwgdGV4LmlzVGVtcGxhdGVXcmFwRXhwcmVzc2lvbihub2RlKSkge1xuICAgIHJldHVybiBjb252ZXJ0VGVtcGxhdGVFeHByZXNzaW9uVG9UcyhzY29wZSwgbm9kZSk7XG4gIH1cblxuICBpZiAodGV4LmlzT2JqZWN0RXhwcmVzc2lvbihub2RlKSkge1xuICAgIHJldHVybiBjb252ZXJ0T2JqZWN0RXhwcmVzc2lvblRvVHMoc2NvcGUsIG5vZGUpO1xuICB9XG5cbiAgaWYgKHRleC5pc0Z1bmN0aW9uQ2FsbEV4cHJlc3Npb24obm9kZSkpIHtcbiAgICByZXR1cm4gY29udmVydEZ1bmN0aW9uQ2FsbEV4cHJlc3Npb25Ub1RzKHNjb3BlLCBub2RlKTtcbiAgfVxuXG4gIGlmICh0ZXguaXNJbmRleEV4cHJlc3Npb24obm9kZSkpIHtcbiAgICByZXR1cm4gY29udmVydEluZGV4RXhwcmVzc2lvblRvVHMoc2NvcGUsIG5vZGUpO1xuICB9XG5cbiAgaWYgKHRleC5pc1NwbGF0RXhwcmVzc2lvbihub2RlKSkge1xuICAgIHJldHVybiBjb252ZXJ0U3BsYXRFeHByZXNzaW9uVG9UcyhzY29wZSwgbm9kZSk7XG4gIH1cblxuICBpZiAodGV4LmlzQ29uZGl0aW9uYWxFeHByZXNzaW9uKG5vZGUpKSB7XG4gICAgcmV0dXJuIGNvbnZlcnRDb25kaXRpb25hbEV4cHJlc3Npb25Ub1RzKHNjb3BlLCBub2RlKTtcbiAgfVxuXG4gIGlmICh0ZXguaXNUdXBsZUV4cHJlc3Npb24obm9kZSkpIHtcbiAgICByZXR1cm4gY29udmVydFR1cGxlRXhwcmVzc2lvblRvVHMoc2NvcGUsIG5vZGUpO1xuICB9XG5cbiAgaWYgKHRleC5pc1JlbGF0aXZlVHJhdmVyc2FsRXhwcmVzc2lvbihub2RlKSkge1xuICAgIHJldHVybiBjb252ZXJ0UmVsYXRpdmVUcmF2ZXJzYWxFeHByZXNzaW9uVG9UcyhzY29wZSwgbm9kZSk7XG4gIH1cblxuICBpZiAodGV4LmlzRm9yRXhwcmVzc2lvbihub2RlKSkge1xuICAgIHJldHVybiBjb252ZXJ0Rm9yRXhwcmVzc2lvblRvVHMoc2NvcGUsIG5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHQuc3RyaW5nTGl0ZXJhbChcIlwiKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4cHJlc3Npb25Bc3QoXG4gIGlucHV0OiBzdHJpbmcsXG4pOiBQcm9taXNlPHRleC5FeHByZXNzaW9uVHlwZT4ge1xuICBjb25zdCB7IHdyYXAsIHdyYXBPZmZzZXQgfSA9IHdyYXBUZXJyYWZvcm1FeHByZXNzaW9uKGlucHV0KTtcbiAgY29uc3QgYXN0ID0gYXdhaXQgZ2V0RXhwcmVzc2lvbkFzdChcIm1haW4udGZcIiwgd3JhcCk7XG5cbiAgaWYgKCFhc3QpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYXJzZSB0ZXJyYWZvcm0gZXhwcmVzc2lvbjogJHtpbnB1dH1gKTtcbiAgfVxuXG4gIGlmICh3cmFwT2Zmc2V0ICE9IDAgJiYgdGV4LmlzVGVtcGxhdGVXcmFwRXhwcmVzc2lvbihhc3QpKSB7XG4gICAgcmV0dXJuIGFzdC5jaGlsZHJlblswXTtcbiAgfVxuXG4gIHJldHVybiBhc3Q7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb252ZXJ0VGVycmFmb3JtRXhwcmVzc2lvblRvVHMoXG4gIHNjb3BlOiBSZXNvdXJjZVNjb3BlLFxuICBpbnB1dDogc3RyaW5nLFxuICB0YXJnZXRUeXBlOiAoKSA9PiBBdHRyaWJ1dGVUeXBlLFxuKTogUHJvbWlzZTx0LkV4cHJlc3Npb24+IHtcbiAgbG9nZ2VyLmRlYnVnKGBjb252ZXJ0VGVycmFmb3JtRXhwcmVzc2lvblRvVHMoJHtpbnB1dH0pYCk7XG4gIGNvbnN0IHRzRXhwcmVzc2lvbiA9IGNvbnZlcnRURkV4cHJlc3Npb25Bc3RUb1RzKFxuICAgIHNjb3BlLFxuICAgIGF3YWl0IGV4cHJlc3Npb25Bc3QoaW5wdXQpLFxuICApO1xuXG4gIHJldHVybiBjb2VyY2VUeXBlKFxuICAgIHNjb3BlLFxuICAgIHRzRXhwcmVzc2lvbixcbiAgICBmaW5kRXhwcmVzc2lvblR5cGUoc2NvcGUsIHRzRXhwcmVzc2lvbiksXG4gICAgdGFyZ2V0VHlwZSgpLFxuICApO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXh0cmFjdEl0ZXJhdG9yVmFyaWFibGVzRnJvbUV4cHJlc3Npb24oXG4gIGlucHV0OiBzdHJpbmcsXG4pOiBQcm9taXNlPEl0ZXJhdG9yVmFyaWFibGVSZWZlcmVuY2VbXT4ge1xuICBjb25zdCBwb3NzaWJsZVZhcmlhYmxlU3BvdHMgPSBhd2FpdCBnZXRSZWZlcmVuY2VzSW5FeHByZXNzaW9uKFxuICAgIFwibWFpbi50ZlwiLFxuICAgIGlucHV0LFxuICApO1xuXG4gIHJldHVybiBwb3NzaWJsZVZhcmlhYmxlU3BvdHNcbiAgICAuZmlsdGVyKChzcG90KSA9PiBzcG90LnZhbHVlLnN0YXJ0c1dpdGgoXCJlYWNoLlwiKSlcbiAgICAubWFwKChzcG90KSA9PiAoe1xuICAgICAgc3RhcnQ6IHNwb3Quc3RhcnRQb3NpdGlvbixcbiAgICAgIGVuZDogc3BvdC5lbmRQb3NpdGlvbixcbiAgICAgIHZhbHVlOiBzcG90LnZhbHVlLFxuICAgIH0pKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGR5bmFtaWNWYXJpYWJsZVRvQXN0KFxuICBzY29wZTogUHJvZ3JhbVNjb3BlLFxuICBub2RlOiB0ZXguU2NvcGVUcmF2ZXJzYWxFeHByZXNzaW9uLFxuICBpdGVyYXRvck5hbWU6IHN0cmluZyxcbiAgYmxvY2s6IHN0cmluZyA9IFwiZWFjaFwiLFxuKTogdC5FeHByZXNzaW9uIHtcbiAgaWYgKGl0ZXJhdG9yTmFtZSA9PT0gXCJkeW5hbWljLWJsb2NrXCIpIHtcbiAgICByZXR1cm4gZXhwcmVzc2lvbkZvclNlcmlhbFN0cmluZ0NvbmNhdGVuYXRpb24oc2NvcGUsIFtcbiAgICAgIHQuc3RyaW5nTGl0ZXJhbChcIiR7XCIpLFxuICAgICAgdC5zdHJpbmdMaXRlcmFsKGJsb2NrKSxcbiAgICAgIHQuc3RyaW5nTGl0ZXJhbChcIn1cIiksXG4gICAgXSk7XG4gIH1cbiAgaWYgKG5vZGUubWV0YS52YWx1ZSA9PT0gYCR7YmxvY2t9LmtleWApIHtcbiAgICByZXR1cm4gdC5tZW1iZXJFeHByZXNzaW9uKHQuaWRlbnRpZmllcihpdGVyYXRvck5hbWUpLCB0LmlkZW50aWZpZXIoXCJrZXlcIikpO1xuICB9XG4gIGlmIChub2RlLm1ldGEudmFsdWUgPT09IGAke2Jsb2NrfS52YWx1ZWApIHtcbiAgICByZXR1cm4gdC5tZW1iZXJFeHByZXNzaW9uKFxuICAgICAgdC5pZGVudGlmaWVyKGl0ZXJhdG9yTmFtZSksXG4gICAgICB0LmlkZW50aWZpZXIoXCJ2YWx1ZVwiKSxcbiAgICApO1xuICB9XG5cbiAgaWYgKGJsb2NrID09PSBcImNvdW50XCIgJiYgbm9kZS5tZXRhLnZhbHVlID09PSBgJHtibG9ja30uaW5kZXhgKSB7XG4gICAgcmV0dXJuIHQubWVtYmVyRXhwcmVzc2lvbihcbiAgICAgIHQuaWRlbnRpZmllcihpdGVyYXRvck5hbWUpLFxuICAgICAgdC5pZGVudGlmaWVyKFwiaW5kZXhcIiksXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHNlZ21lbnRzID0gbm9kZS5tZXRhLnRyYXZlcnNhbDtcblxuICBpZiAoXG4gICAgc2VnbWVudHMubGVuZ3RoID4gMiAmJlxuICAgIHNlZ21lbnRzWzBdLnNlZ21lbnQgPT09IGJsb2NrICYmXG4gICAgc2VnbWVudHNbMV0uc2VnbWVudCA9PT0gXCJ2YWx1ZVwiXG4gICkge1xuICAgIGNvbnN0IHNlZ21lbnRzQWZ0ZXJFYWNoVmFsdWUgPSBzZWdtZW50cy5zbGljZSgyKTtcbiAgICBzY29wZS5pbXBvcnRhYmxlcy5wdXNoKHtcbiAgICAgIGNvbnN0cnVjdE5hbWU6IFwiRm5cIixcbiAgICAgIHByb3ZpZGVyOiBcImNka3RuXCIsXG4gICAgfSk7XG4gICAgY29uc3QgY2FsbGVlID0gdC5tZW1iZXJFeHByZXNzaW9uKFxuICAgICAgdC5pZGVudGlmaWVyKFwiRm5cIiksXG4gICAgICB0LmlkZW50aWZpZXIoXCJsb29rdXBOZXN0ZWRcIiksXG4gICAgKTtcbiAgICByZXR1cm4gdC5jYWxsRXhwcmVzc2lvbihjYWxsZWUsIFtcbiAgICAgIHQubWVtYmVyRXhwcmVzc2lvbih0LmlkZW50aWZpZXIoaXRlcmF0b3JOYW1lKSwgdC5pZGVudGlmaWVyKFwidmFsdWVcIikpLFxuICAgICAgdC5hcnJheUV4cHJlc3Npb24oXG4gICAgICAgIHNlZ21lbnRzQWZ0ZXJFYWNoVmFsdWUubWFwKChwYXJ0KSA9PiB7XG4gICAgICAgICAgaWYgKHBhcnQudHlwZSA9PT0gXCJuYW1lVHJhdmVyc2FsXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0LnN0cmluZ0xpdGVyYWwocGFydC5zZWdtZW50KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHQuc3RyaW5nTGl0ZXJhbChgWyR7cGFydC5zZWdtZW50fV1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICBdKTtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihcbiAgICBgQ2FuIG5vdCBjcmVhdGUgQVNUIGZvciBpdGVyYXRvciB2YXJpYWJsZSBvZiAnJHtub2RlLm1ldGEudmFsdWV9J2AsXG4gICk7XG59XG4iXX0=
|