dcdx 1.3.0-next.12 → 1.3.0-next.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/versions.json +1 -1
- package/lib/commands/apt.js +27 -18
- package/lib/commands/build.js +13 -5
- package/lib/commands/database.js +13 -5
- package/lib/commands/debug.js +13 -5
- package/lib/commands/install.js +13 -5
- package/lib/commands/reset.js +13 -5
- package/lib/commands/run.js +13 -5
- package/lib/commands/stop.js +13 -5
- package/lib/commands/update.js +13 -5
- package/lib/index.js +1 -1
- package/package.json +1 -1
package/lib/commands/debug.js
CHANGED
|
@@ -2061,6 +2061,17 @@ var jira = [
|
|
|
2061
2061
|
"8.8.0-RC02"
|
|
2062
2062
|
];
|
|
2063
2063
|
var confluence = [
|
|
2064
|
+
"9.2.0-beta3-ubuntu-jdk17",
|
|
2065
|
+
"9.2.0-beta3-jdk17",
|
|
2066
|
+
"eap-ubuntu-jdk17",
|
|
2067
|
+
"eap",
|
|
2068
|
+
"9.2.0-beta3",
|
|
2069
|
+
"eap-jdk17",
|
|
2070
|
+
"9.2.0-beta3-jdk21",
|
|
2071
|
+
"9.2.0-beta3-ubuntu-jdk21",
|
|
2072
|
+
"9.2.0-beta3-ubi9",
|
|
2073
|
+
"9.2.0-beta3-ubi9-jdk21",
|
|
2074
|
+
"9.2.0-beta3-ubi9-jdk17",
|
|
2064
2075
|
"8.9.7-jdk17",
|
|
2065
2076
|
"8.9.7",
|
|
2066
2077
|
"8.9.7-ubuntu-jdk17",
|
|
@@ -2450,6 +2461,7 @@ var confluence = [
|
|
|
2450
2461
|
"7",
|
|
2451
2462
|
"8.1.0",
|
|
2452
2463
|
"8.2.2-ubuntu-jdk11",
|
|
2464
|
+
"latest",
|
|
2453
2465
|
"8.6.0-jdk17",
|
|
2454
2466
|
"7.19.7",
|
|
2455
2467
|
"8.6.0-ubuntu-jdk17",
|
|
@@ -2461,7 +2473,6 @@ var confluence = [
|
|
|
2461
2473
|
"7.19.29",
|
|
2462
2474
|
"7.19",
|
|
2463
2475
|
"8.3.4-jdk11",
|
|
2464
|
-
"latest",
|
|
2465
2476
|
"8.3-jdk11",
|
|
2466
2477
|
"8.1.4-jdk17",
|
|
2467
2478
|
"8.5.17-ubuntu-jdk11",
|
|
@@ -2626,13 +2637,10 @@ var confluence = [
|
|
|
2626
2637
|
"8.6.0-ubi9",
|
|
2627
2638
|
"9.0.2-ubi9-jdk21",
|
|
2628
2639
|
"8.5.14-ubi9-jdk17",
|
|
2629
|
-
"eap-ubuntu-jdk17",
|
|
2630
|
-
"eap-jdk17",
|
|
2631
2640
|
"9.2.0-beta2-ubuntu-jdk21",
|
|
2632
2641
|
"9.2.0-beta2-jdk21",
|
|
2633
2642
|
"9.2.0-beta2-jdk17",
|
|
2634
2643
|
"9.2.0-beta2",
|
|
2635
|
-
"eap",
|
|
2636
2644
|
"9.2.0-beta2-ubuntu-jdk17",
|
|
2637
2645
|
"9.2.0-beta2-ubi9-jdk17",
|
|
2638
2646
|
"9.2.0-beta2-ubi9-jdk21",
|
|
@@ -10297,4 +10305,4 @@ process.on('SIGINT', () => {
|
|
|
10297
10305
|
console.log(`Received term signal, trying to stop gracefully 💪`);
|
|
10298
10306
|
gracefulExit();
|
|
10299
10307
|
});
|
|
10300
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWcuanMiLCJzb3VyY2VzIjpbIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvQWN0aW9uSGFuZGxlci5qcyIsIi4uLy4uL2Rpc3Qvc3JjL3R5cGVzL0RhdGFiYXNlLmpzIiwiLi4vLi4vZGlzdC9zcmMvdHlwZXMvQXBwbGljYXRpb24uanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2FtcHMuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2lzUmVjdXJzaXZlQnVpbGQuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL3Nob3dSZWN1cnNpdmVCdWlsZFdhcm5pbmcuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL0N1c3RvbUJ1aWxkZXIuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2RvY2tlci5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvaXNPZlR5cGUuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL3VwbS5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvSW5zdGFsbGVyLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9GaWxlV2F0Y2hlci5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvbGljZW5jZXMuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL3RvQWJzb2x1dGVQYXRoLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9uZXR3b3JrLmpzIiwiLi4vLi4vZGlzdC9zcmMvZGF0YWJhc2VzL2Jhc2UuanMiLCIuLi8uLi9kaXN0L3NyYy9kYXRhYmFzZXMvbXNzcWwuanMiLCIuLi8uLi9kaXN0L3NyYy9kYXRhYmFzZXMvbXlzcWwuanMiLCIuLi8uLi9kaXN0L3NyYy9kYXRhYmFzZXMvcG9zdGdyZXMuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2dldERhdGFiYXNlRW5naW5lLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9nZXRab2REZWZhdWx0cy5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2FwcGxpY2F0aW9ucy9iYXNlLmpzIiwiLi4vLi4vZGlzdC9zcmMvYXBwbGljYXRpb25zL2JhbWJvby5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2FwcGxpY2F0aW9ucy9iaXRidWNrZXQuanMiLCIuLi8uLi9kaXN0L3NyYy9hcHBsaWNhdGlvbnMvY29uZmx1ZW5jZS5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2FwcGxpY2F0aW9ucy9qaXJhLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9nZXRBcHBsaWNhdGlvbi5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvZ2V0VmVyc2lvbnMuanMiLCIuLi8uLi9kaXN0L3NyYy9jb21tYW5kcy9kZWJ1Zy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3luY0V4aXRIb29rLCBncmFjZWZ1bEV4aXQgfSBmcm9tICdleGl0LWhvb2snO1xuaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5leHBvcnQgY29uc3QgQWN0aW9uSGFuZGxlciA9IGFzeW5jIChwcm9ncmFtLCB7IGFjdGlvbiwgZXJyb3JIYW5kbGVyIH0sIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBvcHMgPSBvcHRpb25zIHx8IHByb2dyYW0ub3B0cygpO1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+IHtcbiAgICAgICAgbGV0IGVycm9yTWVzc2FnZSA9ICcnO1xuICAgICAgICBhc3luY0V4aXRIb29rKGFzeW5jIChjb2RlKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChjb2RlICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGVycm9ySGFuZGxlcihvcHMpLmNhdGNoKCgpID0+IG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2UudHJpbSgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdlIGFyZSByZWplY3RpbmcgdGhlIHByb21pc2UgdG8gYXZvaWQgdGhlXG4gICAgICAgICAgICAgICAgICAgIC8vIFwiQ2FsbGluZyBwcm9jZXNzLmV4aXRcIiBsb2cgbWVzc2FnZSBmcm9tIGV4aXQtaG9va1xuICAgICAgICAgICAgICAgICAgICByZWplY3QobnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogZXJyO1xuICAgICAgICAgICAgICAgIHJlamVjdChtZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgd2FpdDogNjAgKiAxICogMTAwMFxuICAgICAgICB9KTtcbiAgICAgICAgYWN0aW9uKG9wcykuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiB6LlpvZEVycm9yKSB7XG4gICAgICAgICAgICAgICAgZXJyLmlzc3Vlcy5mb3JFYWNoKGlzc3VlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlICs9IGBVbmFibGUgdG8gcGFyc2Ugb3B0aW9uICR7aXNzdWUucGF0aC5qb2luKCcsJyl9OiAke2lzc3VlLm1lc3NhZ2V9XFxuYDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yIHx8IHR5cGVvZiBlcnIgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gZXJyLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBncmFjZWZ1bEV4aXQoMSk7XG4gICAgICAgIH0pO1xuICAgIH0pLmNhdGNoKG1lc3NhZ2UgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcHJvZ3JhbS5lcnJvcihtZXNzYWdlKTtcbiAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGVycm9yIG1lc3NhZ2UsXG4gICAgICAgICAgICAvLyB3ZSBjYW4gYXNzdW1lIGEgY2xlYW4gZXhpdFxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuIiwiaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5pbXBvcnQgdmVyc2lvbnMgZnJvbSAnLi4vLi4vYXNzZXRzL3ZlcnNpb25zLmpzb24nO1xuZXhwb3J0IGNvbnN0IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcyA9IHouZW51bShbXG4gICAgJ3Bvc3RncmVzcWwnLFxuICAgICdteXNxbCcsXG4gICAgJ21zc3FsJ1xuXSk7XG5leHBvcnQgY29uc3QgU3VwcG9ydGVkTVNTUUxFZGl0aW9ucyA9IHouZW51bShbXG4gICAgJ0RldmVsb3BlcicsXG4gICAgJ0V4cHJlc3MnLFxuICAgICdTdGFuZGFyZCcsXG4gICAgJ0VudGVycHJpc2UnLFxuICAgICdFbnRlcnByaXNlQ29yZSdcbl0pO1xuZXhwb3J0IGNvbnN0IERhdGFiYXNlT3B0aW9ucyA9IHoub2JqZWN0KHtcbiAgICBuYW1lOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMsXG4gICAgcG9ydDogei5udW1iZXIoKS5vcih6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkpLFxuICAgIGRhdGFiYXNlOiB6LnN0cmluZygpLmRlZmF1bHQoJ2RjZHgnKSxcbiAgICB1c2VybmFtZTogei5zdHJpbmcoKS5kZWZhdWx0KCdkY2R4JyksXG4gICAgcGFzc3dvcmQ6IHouc3RyaW5nKCkuZGVmYXVsdCgnZGNkeCcpLFxuICAgIGNsZWFuOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBwcnVuZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgdmVyYm9zZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgZHJpdmVyOiB6LnN0cmluZygpXG59KTtcbmV4cG9ydCBjb25zdCBQb3N0Z3JlU1FMT3B0aW9ucyA9IERhdGFiYXNlT3B0aW9ucy5leHRlbmQoe1xuICAgIG5hbWU6IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLnBvc3RncmVzcWwpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsKSxcbiAgICB0YWc6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gdmVyc2lvbnNbU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsXS5pbmNsdWRlcyhpdGVtKSkuZGVmYXVsdCgnbGF0ZXN0JyksXG4gICAgcG9ydDogei5udW1iZXIoKS5vcih6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkpLmRlZmF1bHQoNTQzMiksXG4gICAgZHJpdmVyOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IGl0ZW0gPT09ICdvcmcucG9zdGdyZXNxbC5Ecml2ZXInKS5kZWZhdWx0KCdvcmcucG9zdGdyZXNxbC5Ecml2ZXInKVxufSk7XG5leHBvcnQgY29uc3QgTXlTUUxPcHRpb25zID0gRGF0YWJhc2VPcHRpb25zLmV4dGVuZCh7XG4gICAgbmFtZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLnJlZmluZShpdGVtID0+IGl0ZW0gPT09IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXlzcWwpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5teXNxbCksXG4gICAgdGFnOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IHZlcnNpb25zW1N1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXlzcWxdLmluY2x1ZGVzKGl0ZW0pKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBwb3J0OiB6Lm51bWJlcigpLm9yKHouc3RyaW5nKCkudHJhbnNmb3JtKE51bWJlcikucmVmaW5lKGl0ZW0gPT4gIWlzTmFOKGl0ZW0pKSkuZGVmYXVsdCgzMzA2KSxcbiAgICBkcml2ZXI6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gJ2NvbS5teXNxbC5qZGJjLkRyaXZlcicpLmRlZmF1bHQoJ2NvbS5teXNxbC5qZGJjLkRyaXZlcicpXG59KTtcbmV4cG9ydCBjb25zdCBNU1NRTE9wdGlvbnMgPSBEYXRhYmFzZU9wdGlvbnMuZXh0ZW5kKHtcbiAgICBuYW1lOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5tc3NxbCkuZGVmYXVsdChTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm1zc3FsKSxcbiAgICB0YWc6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gdmVyc2lvbnNbU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5tc3NxbF0uaW5jbHVkZXMoaXRlbSkpLmRlZmF1bHQoJ2xhdGVzdCcpLFxuICAgIGVkaXRpb246IFN1cHBvcnRlZE1TU1FMRWRpdGlvbnMuZGVmYXVsdCgnRGV2ZWxvcGVyJyksXG4gICAgcG9ydDogei5udW1iZXIoKS5vcih6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkpLmRlZmF1bHQoMTQzMyksXG4gICAgdXNlcm5hbWU6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gJ3NhJykuZGVmYXVsdCgnc2EnKSxcbiAgICBwYXNzd29yZDogei5zdHJpbmcoKS5kZWZhdWx0KCdEYXRhQ2VudGVyRFghJyksXG4gICAgZHJpdmVyOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IGl0ZW0gPT09ICdjb20ubWljcm9zb2Z0LnNxbHNlcnZlci5qZGJjLlNRTFNlcnZlckRyaXZlcicpLmRlZmF1bHQoJ2NvbS5taWNyb3NvZnQuc3Fsc2VydmVyLmpkYmMuU1FMU2VydmVyRHJpdmVyJylcbn0pO1xuIiwiaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5pbXBvcnQgeyBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMgfSBmcm9tICcuL0RhdGFiYXNlJztcbmV4cG9ydCBjb25zdCBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgPSB6LmVudW0oW1xuICAgICdqaXJhJyxcbiAgICAnY29uZmx1ZW5jZScsXG4gICAgJ2JpdGJ1Y2tldCcsXG4gICAgJ2JhbWJvbydcbl0pO1xuZXhwb3J0IGNvbnN0IEFwcGxpY2F0aW9uT3B0aW9ucyA9IHoub2JqZWN0KHtcbiAgICBuYW1lOiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMsXG4gICAgdGFnOiB6LnN0cmluZygpLmRlZmF1bHQoJ2xhdGVzdCcpLFxuICAgIGRhdGFiYXNlOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuZGVmYXVsdCgncG9zdGdyZXNxbCcpLFxuICAgIGRhdGFiYXNlVGFnOiB6LnN0cmluZygpLmRlZmF1bHQoJ2xhdGVzdCcpLFxuICAgIHBvcnQ6IHouc3RyaW5nKCkudHJhbnNmb3JtKE51bWJlcikucmVmaW5lKGl0ZW0gPT4gIWlzTmFOKGl0ZW0pKS5kZWZhdWx0KCc4MCcpLFxuICAgIGNvbnRleHRQYXRoOiB6LnN0cmluZygpLFxuICAgIHhtczogei5zdHJpbmcoKS5kZWZhdWx0KCcxMDI0bScpLFxuICAgIHhteDogei5zdHJpbmcoKS5kZWZhdWx0KCcxMDI0bScpLFxuICAgIHdhdGNoOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBleHQ6IHouYXJyYXkoei5zdHJpbmcoKSksXG4gICAgaW5zdGFsbDogei5ib29sZWFuKCksXG4gICAgb3V0cHV0RGlyZWN0b3J5OiB6LnN0cmluZygpLFxuICAgIGFjdGl2YXRlUHJvZmlsZXM6IHouc3RyaW5nKCksXG4gICAgY2xlYW46IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIHBydW5lOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBkZWJ1Zzogei5ib29sZWFuKCkuZGVmYXVsdCh0cnVlKSxcbiAgICBjd2Q6IHouc3RyaW5nKClcbn0pLnBhcnRpYWwoe1xuICAgIGNvbnRleHRQYXRoOiB0cnVlLFxuICAgIGV4dDogdHJ1ZSxcbiAgICBpbnN0YWxsOiB0cnVlLFxuICAgIG91dHB1dERpcmVjdG9yeTogdHJ1ZSxcbiAgICBhY3RpdmF0ZVByb2ZpbGVzOiB0cnVlLFxuICAgIGN3ZDogdHJ1ZVxufSk7XG4iLCJpbXBvcnQgeyBET01QYXJzZXIsIFhNTFNlcmlhbGl6ZXIgfSBmcm9tICdAeG1sZG9tL3htbGRvbSc7XG5pbXBvcnQgeyBzcGF3biB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgWE1MUGFyc2VyIH0gZnJvbSAnZmFzdC14bWwtcGFyc2VyJztcbmltcG9ydCB7IGV4aXN0c1N5bmMsIHJlYWRGaWxlU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdwYXRoJztcbmltcG9ydCB7IGN3ZCB9IGZyb20gJ3Byb2Nlc3MnO1xuaW1wb3J0IHhwYXRoIGZyb20gJ3hwYXRoJztcbmltcG9ydCB7IFN1cHBvcnRlZEFwcGxpY2F0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0FwcGxpY2F0aW9uJztcbmV4cG9ydCBjbGFzcyBBTVBTIHtcbiAgICBvcHRpb25zO1xuICAgIG1hdmVuID0gbnVsbDtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zID0ge1xuICAgICAgICBwcm9maWxlczogW11cbiAgICB9KSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQdWJsaWMgTWV0aG9kc1xuICAgIHN0b3AoKSB7XG4gICAgICAgIGlmICh0aGlzLm1hdmVuKSB7XG4gICAgICAgICAgICBjb25zdCBraWxsZWQgPSB0aGlzLm1hdmVuLmtpbGwoMCk7XG4gICAgICAgICAgICBpZiAoIWtpbGxlZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHRlcm1pbmF0ZSBleGlzdGluZyBNYXZlbiBwcm9jZXNzJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgYnVpbGQoYXJncykge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMubWF2ZW4pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBraWxsZWQgPSB0aGlzLm1hdmVuLmtpbGwoMCk7XG4gICAgICAgICAgICAgICAgaWYgKCFraWxsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignRmFpbGVkIHRvIHRlcm1pbmF0ZSBleGlzdGluZyBNYXZlbiBwcm9jZXNzJykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubWF2ZW4gPSBzcGF3bignbXZuJywgWydwYWNrYWdlJywgLi4uYXJnc10sIHsgY3dkOiB0aGlzLm9wdGlvbnM/LmN3ZCB8fCBjd2QoKSwgc3RkaW86ICdpbmhlcml0JyB9KTtcbiAgICAgICAgICAgIHRoaXMubWF2ZW4ub24oJ2V4aXQnLCAoY29kZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubWF2ZW4gPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChjb2RlID09PSAwIHx8IGNvZGUgPT09IDEzMCkge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGBNYXZlbiBleGl0ZWQgd2l0aCBjb2RlICR7Y29kZX1gKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpc0F0bGFzc2lhblBsdWdpbiA9ICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gdGhpcy5nZXROb2RlcygnLy8qW2xvY2FsLW5hbWUoKT1cXCdwYWNrYWdpbmdcXCddJyk7XG4gICAgICAgICAgICByZXR1cm4gbm9kZXMuc29tZShpdGVtID0+IGl0ZW0udGV4dENvbnRlbnQgPT09ICdhdGxhc3NpYW4tcGx1Z2luJyk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBnZXRBcHBsaWNhdGlvblZlcnNpb24oKSB7XG4gICAgICAgIGNvbnN0IGFwcGxpY2F0aW9ucyA9IHRoaXMuZ2V0QXBwbGljYXRpb25zKCk7XG4gICAgICAgIGlmIChhcHBsaWNhdGlvbnMuc2l6ZSA9PT0gMSkge1xuICAgICAgICAgICAgY29uc3QgWywgdmVyc2lvbl0gPSBBcnJheS5mcm9tKGFwcGxpY2F0aW9ucylbMF07XG4gICAgICAgICAgICByZXR1cm4gdmVyc2lvbjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChhcHBsaWNhdGlvbnMuc2l6ZSA+IDEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIEF0bGFzc2lhbiBQbHVnaW4gcHJvamVjdCBjb250YWlucyBtdWx0aXBsZSBBTVBTIGNvbmZpZ3VyYXRpb24sIHVuYWJsZSB0byBkZWNpZGUgd2hpY2ggcHJvZHVjdCB0byB1c2Ug8J+YsCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGdldEFwcGxpY2F0aW9uKCkge1xuICAgICAgICBjb25zdCBhcHBsaWNhdGlvbnMgPSB0aGlzLmdldEFwcGxpY2F0aW9ucygpO1xuICAgICAgICBpZiAoYXBwbGljYXRpb25zLnNpemUgPT09IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IFtuYW1lXSA9IEFycmF5LmZyb20oYXBwbGljYXRpb25zKVswXTtcbiAgICAgICAgICAgIHJldHVybiBuYW1lO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGFwcGxpY2F0aW9ucy5zaXplID4gMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgQXRsYXNzaWFuIFBsdWdpbiBwcm9qZWN0IGNvbnRhaW5zIG11bHRpcGxlIEFNUFMgY29uZmlndXJhdGlvbiwgdW5hYmxlIHRvIGRlY2lkZSB3aGljaCBwcm9kdWN0IHRvIHVzZSDwn5iwJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGdldEFwcGxpY2F0aW9ucygpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IE1hcCgpO1xuICAgICAgICBjb25zdCBub2RlcyA9IHRoaXMuZ2V0Tm9kZXMoJy8vKltsb2NhbC1uYW1lKCk9XFwnZ3JvdXBJZFxcJyBhbmQgdGV4dCgpPVxcJ2NvbS5hdGxhc3NpYW4ubWF2ZW4ucGx1Z2luc1xcJ10nKTtcbiAgICAgICAgY29uc3Qgbm9kZXNXaXRoQWN0aXZlUHJvZmlsZSA9IG5vZGVzLmZpbHRlcihub2RlID0+IHRoaXMuaXNBY3RpdmF0ZWRQcm9maWxlKG5vZGUpKTtcbiAgICAgICAgbm9kZXNXaXRoQWN0aXZlUHJvZmlsZS5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcbiAgICAgICAgICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBwbHVnaW4gfSA9IHRoaXMudG9PYmplY3QocGFyZW50Tm9kZSk7XG4gICAgICAgICAgICAgICAgaWYgKCdhbXBzLW1hdmVuLXBsdWdpbicgPT09IHBsdWdpbj8uYXJ0aWZhY3RJZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGNvbmZpZ3VyYXRpb24gfSA9IHBsdWdpbiB8fCB7fTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjb25maWd1cmF0aW9uPy5wcm9kdWN0cykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLnByb2R1Y3RzLmZvckVhY2goKHByb2R1Y3QpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3VwcG9ydGVkQXBwbGljYXRpb24gPSB0aGlzLmdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHByb2R1Y3QuaWQpIHx8IHRoaXMuZ2V0U3VwcG9ydGVkQXBwbGljYXRpb24ocHJvZHVjdC5pbnN0YW5jZUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRlZEFwcGxpY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy5kb1Byb3BlcnR5UmVwbGFjZW1lbnQocHJvZHVjdC52ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNldChzdXBwb3J0ZWRBcHBsaWNhdGlvbiwgdmVyc2lvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcHJvZHVjdCB9ID0gY29uZmlndXJhdGlvbj8ucHJvZHVjdHMgfHwge307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb2R1Y3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3VwcG9ydGVkQXBwbGljYXRpb24gPSB0aGlzLmdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHByb2R1Y3QuaWQpIHx8IHRoaXMuZ2V0U3VwcG9ydGVkQXBwbGljYXRpb24ocHJvZHVjdC5pbnN0YW5jZUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRlZEFwcGxpY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy5kb1Byb3BlcnR5UmVwbGFjZW1lbnQocHJvZHVjdC52ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNldChzdXBwb3J0ZWRBcHBsaWNhdGlvbiwgdmVyc2lvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1cHBvcnRlZEFwcGxpY2F0aW9uID0gdGhpcy5nZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbihwbHVnaW4/LmFydGlmYWN0SWQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy5nZXRWZXJzaW9uKG5vZGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3VwcG9ydGVkQXBwbGljYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXQoc3VwcG9ydGVkQXBwbGljYXRpb24sIHZlcnNpb24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByaXZhdGUgTWV0aG9kc1xuICAgIGdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZT8uaW5jbHVkZXMoU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5qaXJhKSkge1xuICAgICAgICAgICAgcmV0dXJuIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuamlyYTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWx1ZT8uaW5jbHVkZXMoU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5jb25mbHVlbmNlKSkge1xuICAgICAgICAgICAgcmV0dXJuIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuY29uZmx1ZW5jZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWx1ZT8uaW5jbHVkZXMoU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iYW1ib28pKSB7XG4gICAgICAgICAgICByZXR1cm4gU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iYW1ib287XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsdWU/LmluY2x1ZGVzKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYml0YnVja2V0KSkge1xuICAgICAgICAgICAgcmV0dXJuIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYml0YnVja2V0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBnZXRWZXJzaW9uKG5vZGUpIHtcbiAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcbiAgICAgICAgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgcGx1Z2luIH0gPSB0aGlzLnRvT2JqZWN0KHBhcmVudE5vZGUpO1xuICAgICAgICAgICAgY29uc3QgeyBjb25maWd1cmF0aW9uIH0gPSBwbHVnaW4gfHwge307XG4gICAgICAgICAgICBpZiAoY29uZmlndXJhdGlvbj8ucHJvZHVjdFZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb1Byb3BlcnR5UmVwbGFjZW1lbnQocGx1Z2luLmNvbmZpZ3VyYXRpb24ucHJvZHVjdFZlcnNpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY29uZmlndXJhdGlvbj8ucHJvZHVjdHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9kdWN0ID0gQXJyYXkuaXNBcnJheShjb25maWd1cmF0aW9uPy5wcm9kdWN0cykgPyBjb25maWd1cmF0aW9uPy5wcm9kdWN0c1swXSA6IGNvbmZpZ3VyYXRpb24ucHJvZHVjdHMucHJvZHVjdDtcbiAgICAgICAgICAgICAgICBpZiAocHJvZHVjdCAmJiBwcm9kdWN0LnZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9Qcm9wZXJ0eVJlcGxhY2VtZW50KHByb2R1Y3QudmVyc2lvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGRvUHJvcGVydHlSZXBsYWNlbWVudCh2YWx1ZSkge1xuICAgICAgICBsZXQgcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgIC8vIElmIHRoZXJlIGlzIGEgcHJvZmlsZSwgcmVwbGFjZSBwcm9maWxlIHByb3BlcnRpZXMgZmlyc3QgYXMgdGhleSB0YWtlIHByZWNlZGVuY2VcbiAgICAgICAgY29uc3QgcHJvZmlsZVByb3BlcnRpZXMgPSB0aGlzLmdldFByb3BlcnRpZXMoKTtcbiAgICAgICAgT2JqZWN0LmVudHJpZXMocHJvZmlsZVByb3BlcnRpZXMpLmZvckVhY2goKFtwcm9wZXJ0eUtleSwgcHJvcGVydHlWYWx1ZV0pID0+IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlQWxsKGAkXFx7JHtwcm9wZXJ0eUtleX19YCwgcHJvcGVydHlWYWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5nZXRQcm9wZXJ0aWVzKCk7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHByb3BlcnRpZXMpLmZvckVhY2goKFtwcm9wZXJ0eUtleSwgcHJvcGVydHlWYWx1ZV0pID0+IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlQWxsKGAkXFx7JHtwcm9wZXJ0eUtleX19YCwgcHJvcGVydHlWYWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBnZXRQcm9wZXJ0aWVzKCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICAgICAgY29uc3Qgbm9kZXMgPSB0aGlzLmdldE5vZGVzKCcvLypbbG9jYWwtbmFtZSgpPVxcJ3Byb3BlcnRpZXNcXCddJyk7XG4gICAgICAgIGNvbnN0IG5vZGVzV2l0aEFjdGl2ZVByb2ZpbGUgPSBub2Rlcy5maWx0ZXIobm9kZSA9PiB0aGlzLmlzQWN0aXZhdGVkUHJvZmlsZShub2RlKSk7XG4gICAgICAgIG5vZGVzV2l0aEFjdGl2ZVByb2ZpbGUuZm9yRWFjaChub2RlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgcHJvcGVydGllcyB9ID0gdGhpcy50b09iamVjdChub2RlKTtcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHByb3BlcnRpZXMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4gcmVzdWx0W2tleV0gPSB2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBnZXROb2RlcyhleHByZXNzaW9uLCBzaW5nbGUpIHtcbiAgICAgICAgY29uc3QgcG9tRmlsZVBhdGggPSBqb2luKHRoaXMub3B0aW9ucz8uY3dkIHx8IGN3ZCgpLCAnLi9wb20ueG1sJyk7XG4gICAgICAgIGNvbnN0IGhhc1BvbUZpbGUgPSBleGlzdHNTeW5jKHBvbUZpbGVQYXRoKTtcbiAgICAgICAgaWYgKGhhc1BvbUZpbGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHhtbCA9IHJlYWRGaWxlU3luYyhwb21GaWxlUGF0aCwgJ3V0ZjgnKTtcbiAgICAgICAgICAgIGNvbnN0IGRvYyA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoeG1sLCAndGV4dC94bWwnKTtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gc2luZ2xlID8geHBhdGguc2VsZWN0KGV4cHJlc3Npb24sIGRvYywgdHJ1ZSkgOiB4cGF0aC5zZWxlY3QoZXhwcmVzc2lvbiwgZG9jLCBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShub2RlcykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChzaW5nbGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICB0b09iamVjdChub2RlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZXIgPSBuZXcgWE1MUGFyc2VyKCk7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VyLnBhcnNlKG5ldyBYTUxTZXJpYWxpemVyKCkuc2VyaWFsaXplVG9TdHJpbmcobm9kZSkpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZpbmRQYXJlbnROb2RlQnlUYWdOYW1lKHRhZ05hbWUsIG5vZGUpIHtcbiAgICAgICAgY29uc3QgeyBwYXJlbnROb2RlIH0gPSBub2RlO1xuICAgICAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgaWYgKHBhcmVudE5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gdGFnTmFtZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudE5vZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5maW5kUGFyZW50Tm9kZUJ5VGFnTmFtZSh0YWdOYW1lLCBwYXJlbnROb2RlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaXNBY3RpdmF0ZWRQcm9maWxlKG5vZGUpIHtcbiAgICAgICAgY29uc3QgcHJvZmlsZVBhcmVudE5vZGUgPSB0aGlzLmZpbmRQYXJlbnROb2RlQnlUYWdOYW1lKCdwcm9maWxlJywgbm9kZSk7XG4gICAgICAgIGNvbnN0IHByb2ZpbGVOb2RlID0gcHJvZmlsZVBhcmVudE5vZGUgPyB0aGlzLnRvT2JqZWN0KHByb2ZpbGVQYXJlbnROb2RlKSA6IG51bGw7XG4gICAgICAgIGlmICghcHJvZmlsZU5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHByb2ZpbGVOb2RlICYmIChwcm9maWxlTm9kZS5hY3RpdmVCeURlZmF1bHQgPT09ICd0cnVlJyB8fCB0aGlzLm9wdGlvbnMucHJvZmlsZXMuaW5jbHVkZXMocHJvZmlsZU5vZGUucHJvZmlsZS5pZCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsImV4cG9ydCBjb25zdCBpc1JlY3Vyc2l2ZUJ1aWxkID0gKGxhc3RCdWlsZENvbXBsZXRlZCkgPT4gbGFzdEJ1aWxkQ29tcGxldGVkID4gKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gNSAqIDEwMDApO1xuIiwiZXhwb3J0IGNvbnN0IHNob3dSZWN1cnNpdmVCdWlsZFdhcm5pbmcgPSAob3V0cHV0RGlyZWN0b3J5KSA9PiB7XG4gICAgY29uc29sZS5sb2coYFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZWN1cnNpdmUgYnVpbGQgdHJpZ2dlciBkZXRlY3RlZC4gVGhlIGxhc3QgYnVpbGQgY29tcGxldGVkIGxhc3QgdGhhbiA1IHNlY29uZHMgYWdvXG5UaGlzIG1heSBpbmRpY2F0ZSB0aGF0IHRoZSBidWlsZCBjaGFuZ2VzIGZpbGVzIG91dHNpZGUgb2YgdGhlIG91dHB1dCBkaXJlY3RvcnlcbkFsdGVybmF0aXZlbHksIE1hdmVuIGlzIHVzaW5nIGEgZGlmZmVyZW50IG91dHB1dCBkaXJlY3RvcnkgdGhhbiBjb25maWd1cmVkOlxuJyR7b3V0cHV0RGlyZWN0b3J5fSdcblxuUGxlYXNlIG1ha2Ugc3VyZSB0byBjaGVjayB5b3VyIGJ1aWxkIHByb2Nlc3MgYW5kL29yIHNwZWNpZnkgYSBkaWZmZXJlbnQgb3V0cHV0IGRpcmVjdG9yeSB1c2luZyB0aGUgJy1vJyBvcHRpb25cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PWApO1xufTtcbiIsImltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgeyBjd2QgfSBmcm9tICdwcm9jZXNzJztcbmV4cG9ydCBjbGFzcyBDdXN0b21CdWlsZGVyIHtcbiAgICBvcHRpb25zO1xuICAgIHByb2MgPSBudWxsO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFB1YmxpYyBNZXRob2RzXG4gICAgc3RvcCgpIHtcbiAgICAgICAgaWYgKHRoaXMucHJvYykge1xuICAgICAgICAgICAgY29uc3Qga2lsbGVkID0gdGhpcy5wcm9jLmtpbGwoMCk7XG4gICAgICAgICAgICBpZiAoIWtpbGxlZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHRlcm1pbmF0ZSBleGlzdGluZyBidWlsZCBwcm9jZXNzJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgYnVpbGQoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcm9jKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2lsbGVkID0gdGhpcy5wcm9jLmtpbGwoMCk7XG4gICAgICAgICAgICAgICAgaWYgKCFraWxsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignRmFpbGVkIHRvIHRlcm1pbmF0ZSBleGlzdGluZyBidWlsZCBwcm9jZXNzJykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZXhlY1N5bmModGhpcy5vcHRpb25zLmNtZCwgeyBjd2Q6IHRoaXMub3B0aW9ucz8uY3dkIHx8IGN3ZCgpLCBzdGRpbzogJ2luaGVyaXQnIH0pO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHN0YXR1cyB9ID0gZXJyO1xuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoYEJ1aWxkIGV4aXRlZCB3aXRoIGNvZGUgJHtzdGF0dXN9YCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBzcGF3biB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IERvY2tlcm9kZSBmcm9tICdkb2NrZXJvZGUnO1xuaW1wb3J0IHsgY3dkIH0gZnJvbSAncHJvY2Vzcyc7XG5jb25zdCBkb2NrZXIgPSBuZXcgRG9ja2Vyb2RlKCk7XG5leHBvcnQgY29uc3QgZ2V0UnVubmluZ0NvbnRhaW5lcklkcyA9IGFzeW5jIChhcHBsaWNhdGlvbikgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lcnMgPSBhd2FpdCBkb2NrZXIubGlzdENvbnRhaW5lcnMoeyBmaWx0ZXJzOiB7XG4gICAgICAgICAgICBzdGF0dXM6IFsncnVubmluZyddLFxuICAgICAgICAgICAgbGFiZWw6IFtgY29tLmRvY2tlci5jb21wb3NlLnNlcnZpY2U9JHthcHBsaWNhdGlvbn1gXVxuICAgICAgICB9IH0pO1xuICAgIHJldHVybiBjb250YWluZXJzLm1hcChpdGVtID0+IGl0ZW0uSWQpO1xufTtcbmV4cG9ydCBjb25zdCBjb3B5ID0gYXN5bmMgKHNvdXJjZVBhdGgsIGRlc3RpbmF0aW9uUGF0aCkgPT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGRvY2tlciA9IHNwYXduKCdkb2NrZXInLCBbJ2NwJywgc291cmNlUGF0aCwgZGVzdGluYXRpb25QYXRoXSwgeyBjd2Q6IGN3ZCgpLCBzdGRpbzogJ2luaGVyaXQnIH0pO1xuICAgICAgICBkb2NrZXIub24oJ2Vycm9yJywgcmVqZWN0KTtcbiAgICAgICAgZG9ja2VyLm9uKCdleGl0JywgKGNvZGUpID0+IChjb2RlID09PSAwKSA/IHJlc29sdmUoKSA6IHJlamVjdChuZXcgRXJyb3IoYERvY2tlciBleGl0ZWQgd2l0aCBjb2RlICR7Y29kZX1gKSkpO1xuICAgIH0pO1xufTtcbiIsImV4cG9ydCBjb25zdCBpc09mVHlwZSA9IChvYmosIHByb3BlcnR5KSA9PiB7XG4gICAgcmV0dXJuIG9iaiAhPT0gbnVsbCAmJiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBwcm9wZXJ0eSBpbiBvYmo7XG59O1xuIiwiaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCBGb3JtRGF0YSBmcm9tICdmb3JtLWRhdGEnO1xuaW1wb3J0IHsgY3JlYXRlUmVhZFN0cmVhbSB9IGZyb20gJ2ZzJztcbmV4cG9ydCBjb25zdCB1cGxvYWRUb1VQTSA9IGFzeW5jIChiYXNlVXJsLCBwYXRoLCB1c2VybmFtZSwgcGFzc3dvcmQsIHZlcmJvc2UgPSB0cnVlKSA9PiB7XG4gICAgY29uc3QgY3JlZGVudGlhbHMgPSB1c2VybmFtZSAmJiBwYXNzd29yZCA/IEJ1ZmZlci5mcm9tKGAke3VzZXJuYW1lfToke3Bhc3N3b3JkfWApLnRvU3RyaW5nKCdiYXNlNjQnKSA6IG51bGw7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5nZXQoYCR7YmFzZVVybH0vcmVzdC9wbHVnaW5zLzEuMC8/b3NfYXV0aFR5cGU9YmFzaWNgLCBjcmVkZW50aWFscyA/IHtcbiAgICAgICAgaGVhZGVyczogeyAnQXV0aG9yaXphdGlvbic6IGBCYXNpYyAke2NyZWRlbnRpYWxzfWAgfVxuICAgIH0gOiB1bmRlZmluZWQpLmNhdGNoKGVyciA9PiB7XG4gICAgICAgIHZlcmJvc2UgJiYgY29uc29sZS5sb2coJ0ZhaWxlZCB0byB1cGxvYWQgcGx1Z2luIGFyY2hpdmUgZmlsZSB0byBVUE0sIHVuYWJsZSB0byByZXRyaWV2ZSB0b2tlbicsIGVycik7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0pO1xuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHJlc3BvbnNlLmhlYWRlcnNbJ3VwbS10b2tlbiddO1xuICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3BsdWdpbicsIGNyZWF0ZVJlYWRTdHJlYW0ocGF0aCkpO1xuICAgICAgICAgICAgYXdhaXQgYXhpb3MucG9zdChgJHtiYXNlVXJsfS9yZXN0L3BsdWdpbnMvMS4wLz90b2tlbj0ke3Rva2VufWAsIGZvcm1EYXRhLCB7IGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybURhdGEuZ2V0SGVhZGVycygpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jcmVkZW50aWFscyA/IHsgJ0F1dGhvcml6YXRpb24nOiBgQmFzaWMgJHtjcmVkZW50aWFsc31gIH0gOiB7fVxuICAgICAgICAgICAgICAgIH0gfSlcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB2ZXJib3NlICYmIGNvbnNvbGUubG9nKCdGaW5pc2hlZCB1cGxvYWRpbmcgcGx1Z2luIGFyY2hpdmUgdG8gVVBNJykpXG4gICAgICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB2ZXJib3NlICYmIGNvbnNvbGUubG9nKCdGYWlsZWQgdG8gdXBsb2FkIHBsdWdpbiBhcmNoaXZlIGZpbGUgdG8gVVBNJywgZXJyKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2ZXJib3NlICYmIGNvbnNvbGUubG9nKCdGYWlsZWQgdG8gdXBsb2FkIHBsdWdpbiBhcmNoaXZlIGZpbGUgdG8gVVBNLCB1bmFibGUgdG8gcmV0cmlldmUgdG9rZW4gZnJvbSBoZWFkZXJzOicsIEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlLmhlYWRlcnMsIG51bGwsIDIpKTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5leHBvcnQgY29uc3Qgd2FpdEZvclBsdWdpblRvQmVFbmFibGVkID0gYXN5bmMgKGFwcEtleSwgYmFzZVVybCwgdXNlcm5hbWUsIHBhc3N3b3JkLCB2ZXJib3NlID0gdHJ1ZSkgPT4ge1xuICAgIGNvbnN0IGNyZWRlbnRpYWxzID0gdXNlcm5hbWUgJiYgcGFzc3dvcmQgPyBCdWZmZXIuZnJvbShgJHt1c2VybmFtZX06JHtwYXNzd29yZH1gKS50b1N0cmluZygnYmFzZTY0JykgOiBudWxsO1xuICAgIHZlcmJvc2UgJiYgY29uc29sZS5sb2coJ1dhaXRpbmcgZm9yIHBsdWdpbiB0byBiZWNvbWUgZW5hYmxlZCcpO1xuICAgIGxldCBpc0VuYWJsZWQgPSBmYWxzZTtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIHdoaWxlICghaXNFbmFibGVkICYmIGNvdW50IDwgMTIwKSB7XG4gICAgICAgIHZlcmJvc2UgJiYgY29uc29sZS5sb2coYFdhaXRpbmcgZm9yIHBsdWdpbiB0byBiZWNvbWUgZW5hYmxlZC4uLiAke2NvdW50fXNgKTtcbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBheGlvcy5nZXQoYCR7YmFzZVVybH0vcmVzdC9wbHVnaW5zLzEuMC8ke2FwcEtleX0ta2V5YCwgY3JlZGVudGlhbHMgPyB7XG4gICAgICAgICAgICBoZWFkZXJzOiB7ICdBdXRob3JpemF0aW9uJzogYEJhc2ljICR7Y3JlZGVudGlhbHN9YCB9XG4gICAgICAgIH0gOiB1bmRlZmluZWQpLmNhdGNoKCgpID0+ICh7IGRhdGE6IHsgZW5hYmxlZDogZmFsc2UgfSB9KSk7XG4gICAgICAgIGlzRW5hYmxlZCA9IGRhdGE/LmVuYWJsZWQ7XG4gICAgICAgIGNvdW50Kys7XG4gICAgfVxuICAgIHJldHVybiBpc0VuYWJsZWQ7XG59O1xuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyTGljZW5zZSA9IGFzeW5jIChhcHBLZXksIGxpY2Vuc2UsIGJhc2VVcmwsIHVzZXJuYW1lLCBwYXNzd29yZCwgdmVyYm9zZSA9IHRydWUpID0+IHtcbiAgICBjb25zdCBjcmVkZW50aWFscyA9IHVzZXJuYW1lICYmIHBhc3N3b3JkID8gQnVmZmVyLmZyb20oYCR7dXNlcm5hbWV9OiR7cGFzc3dvcmR9YCkudG9TdHJpbmcoJ2Jhc2U2NCcpIDogbnVsbDtcbiAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IGF4aW9zLmdldChgJHtiYXNlVXJsfS9yZXN0L3BsdWdpbnMvMS4wLyR7YXBwS2V5fS1rZXkvbGljZW5zZWAsIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgJ1gtQXRsYXNzaWFuLVRva2VuJzogJ25vLWNoZWNrJyxcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vdm5kLmF0bC5wbHVnaW5zK2pzb24nLFxuICAgICAgICAgICAgLi4uY3JlZGVudGlhbHMgPyB7ICdBdXRob3JpemF0aW9uJzogYEJhc2ljICR7Y3JlZGVudGlhbHN9YCB9IDoge31cbiAgICAgICAgfVxuICAgIH0pLmNhdGNoKCgpID0+ICh7IGRhdGE6IHt9IH0pKTtcbiAgICBjb25zdCB7IHJhd0xpY2Vuc2UgfSA9IGRhdGE7XG4gICAgaWYgKCFyYXdMaWNlbnNlIHx8IHJhd0xpY2Vuc2UgIT09IGxpY2Vuc2UpIHtcbiAgICAgICAgYXdhaXQgYXhpb3MucHV0KGAke2Jhc2VVcmx9L3Jlc3QvcGx1Z2lucy8xLjAvJHthcHBLZXl9LWtleS9saWNlbnNlYCwgYHsgXCJyYXdMaWNlbnNlXCI6IFwiJHtsaWNlbnNlfVwiIH1gLCB7XG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgJ1gtQXRsYXNzaWFuLVRva2VuJzogJ25vLWNoZWNrJyxcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3ZuZC5hdGwucGx1Z2lucytqc29uJyxcbiAgICAgICAgICAgICAgICAuLi5jcmVkZW50aWFscyA/IHsgJ0F1dGhvcml6YXRpb24nOiBgQmFzaWMgJHtjcmVkZW50aWFsc31gIH0gOiB7fVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4gdmVyYm9zZSAmJiBjb25zb2xlLmxvZygnRmluaXNoZWQgdXBsb2FkaW5nIGxpY2Vuc2UgdG8gVVBNJykpXG4gICAgICAgICAgICAuY2F0Y2goZXJyID0+IHZlcmJvc2UgJiYgY29uc29sZS5sb2coJ0ZhaWxlZCB0byB1cGxvYWQgbGljZW5zZSB0byBVUE0nLCBlcnIpKTtcbiAgICB9XG59O1xuIiwiaW1wb3J0IHsgcmVzb2x2ZSBhcyByZXNvbHZlUGF0aCB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgY3dkIH0gZnJvbSAncHJvY2Vzcyc7XG5pbXBvcnQgKiBhcyBEb2NrZXIgZnJvbSAnLi9kb2NrZXInO1xuaW1wb3J0IHsgaXNPZlR5cGUgfSBmcm9tICcuL2lzT2ZUeXBlJztcbmltcG9ydCB7IHVwbG9hZFRvVVBNIH0gZnJvbSAnLi91cG0nO1xuZXhwb3J0IGNvbnN0IEluc3RhbGxlciA9IGFzeW5jIChuYW1lLCBwYXRoLCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3QgY29udGFpbmVySWRzID0gYXdhaXQgRG9ja2VyLmdldFJ1bm5pbmdDb250YWluZXJJZHMobmFtZSk7XG4gICAgaWYgKCFjb250YWluZXJJZHMgfHwgY29udGFpbmVySWRzLmxlbmd0aCA8PSAwKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBUaGVyZSBhcmUgbm8gcnVubmluZyBpbnN0YW5jZSBvZiAke25hbWV9LCB1bmFibGUgdG8gaW5zdGFsbCBwbHVnaW4g8J+klGApO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGVsc2UgaWYgKGNvbnRhaW5lcklkcy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBUaGVyZSBhcmUgbXVsdHBsZSBydW5uaW5nIGluc3RhbmNlIG9mICR7bmFtZX0sIHVuYWJsZSB0byBkZXRlcm1pbmUgd2hpY2ggb25lIHRvIHVzZSDwn6SUYCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29udGFpbmVySWQgPSBjb250YWluZXJJZHNbMF07XG4gICAgaWYgKGNvbnRhaW5lcklkKSB7XG4gICAgICAgIGlmIChvcHRpb25zLm9icikge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYEZvdW5kIHVwZGF0ZWQgcGx1Z2luLCB1cGxvYWRpbmcgaXQgdG8gVVBNIG9uIHJ1bm5pbmcgaW5zdGFuY2VzIG9mICR7bmFtZX1gKTtcbiAgICAgICAgICAgIGNvbnN0IGhvc3RVcmwgPSBpc09mVHlwZShvcHRpb25zLCAncG9ydCcpID8gYGxvY2FsaG9zdDoke29wdGlvbnMucG9ydH1gIDogYGxvY2FsaG9zdGA7XG4gICAgICAgICAgICBjb25zdCBiYXNlVXJsID0gb3B0aW9ucy51c2VybmFtZSAmJiBvcHRpb25zLnBhc3N3b3JkID8gYGh0dHA6Ly8ke29wdGlvbnMudXNlcm5hbWV9OiR7b3B0aW9ucy5wYXNzd29yZH1AJHtob3N0VXJsfWAgOiBgaHR0cDovLyR7aG9zdFVybH1gO1xuICAgICAgICAgICAgdXBsb2FkVG9VUE0ocmVzb2x2ZVBhdGgob3B0aW9ucy5jd2QgfHwgY3dkKCksIHBhdGgpLCBiYXNlVXJsKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBGb3VuZCB1cGRhdGVkIHBsdWdpbiwgdXBsb2FkaW5nIGl0IHRvIFF1aWNrUmVsb2FkIG9uIHJ1bm5pbmcgaW5zdGFuY2VzIG9mICR7bmFtZX1gKTtcbiAgICAgICAgICAgIGF3YWl0IERvY2tlci5jb3B5KHJlc29sdmVQYXRoKG9wdGlvbnMuY3dkIHx8IGN3ZCgpLCBwYXRoKSwgYCR7Y29udGFpbmVySWR9Oi9vcHQvcXVpY2tyZWxvYWQvYClcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiBjb25zb2xlLmxvZygnRmluaXNoZWQgdXBsb2FkaW5nIHBsdWdpbiBhcmNoaXZlIHRvIFF1aWNrUmVsb2FkJykpXG4gICAgICAgICAgICAgICAgLmNhdGNoKGVyciA9PiBjb25zb2xlLmxvZygnRmFpbGVkIHRvIHVwbG9hZCBwbHVnaW4gYXJjaGl2ZSBmaWxlIHRvIFF1aWNrUmVsb2FkJywgZXJyKSk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuIiwiaW1wb3J0IHsgd2F0Y2ggfSBmcm9tICdjaG9raWRhcic7XG5pbXBvcnQgeyBjd2QgfSBmcm9tICdwcm9jZXNzJztcbmltcG9ydCB7IGlzUmVjdXJzaXZlQnVpbGQgfSBmcm9tICcuLi9oZWxwZXJzL2lzUmVjdXJzaXZlQnVpbGQnO1xuaW1wb3J0IHsgc2hvd1JlY3Vyc2l2ZUJ1aWxkV2FybmluZyB9IGZyb20gJy4uL2hlbHBlcnMvc2hvd1JlY3Vyc2l2ZUJ1aWxkV2FybmluZyc7XG5pbXBvcnQgeyBBTVBTIH0gZnJvbSAnLi9hbXBzJztcbmltcG9ydCB7IEN1c3RvbUJ1aWxkZXIgfSBmcm9tICcuL0N1c3RvbUJ1aWxkZXInO1xuaW1wb3J0IHsgSW5zdGFsbGVyIH0gZnJvbSAnLi9JbnN0YWxsZXInO1xuZXhwb3J0IGNvbnN0IEZpbGVXYXRjaGVyID0gKG5hbWUsIG9wdGlvbnMsIG1hdmVuT3B0cywgaW5zdGFsbE9ubHkgPSBmYWxzZSkgPT4ge1xuICAgIGxldCBsYXN0QnVpbGRDb21wbGV0ZWQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICBjb25zdCBvdXRwdXREaXJlY3RvcnkgPSBvcHRpb25zLm91dHB1dERpcmVjdG9yeSB8fCAndGFyZ2V0JztcbiAgICBjb25zdCBwYXR0ZXJucyA9IG9wdGlvbnMuZXh0IHx8IFsnKiovKiddO1xuICAgIGNvbnNvbGUubG9nKGBXYXRjaGluZyBmaWxlc3lzdGVtIGZvciBjaGFuZ2VzIHRvIHNvdXJjZSBmaWxlcyAoJHtwYXR0ZXJucy5qb2luKCcsICcpfSlgKTtcbiAgICBjb25zdCBhbXBzID0gbmV3IEFNUFMoe1xuICAgICAgICBjd2Q6IG9wdGlvbnMuY3dkLFxuICAgICAgICBwcm9maWxlczogb3B0aW9ucy5hY3RpdmF0ZVByb2ZpbGVzPy5zcGxpdCgnLCcpIHx8IFtdXG4gICAgfSk7XG4gICAgY29uc3QgZGVsaXZlcmFibGVFeHRlbnNpb24gPSBvcHRpb25zLm9iciA/ICcub2JyJyA6ICcuamFyJztcbiAgICByZXR1cm4gd2F0Y2gocGF0dGVybnMsIHtcbiAgICAgICAgY3dkOiBvcHRpb25zLmN3ZCB8fCBjd2QoKSxcbiAgICAgICAgdXNlUG9sbGluZzogdHJ1ZSxcbiAgICAgICAgaW50ZXJ2YWw6IDIgKiAxMDAwLFxuICAgICAgICBiaW5hcnlJbnRlcnZhbDogMiAqIDEwMDAsXG4gICAgICAgIGF3YWl0V3JpdGVGaW5pc2g6IHRydWUsXG4gICAgICAgIHBlcnNpc3RlbnQ6IHRydWUsXG4gICAgICAgIGF0b21pYzogdHJ1ZVxuICAgIH0pLm9uKCdjaGFuZ2UnLCBhc3luYyAocGF0aCkgPT4ge1xuICAgICAgICBpZiAob3B0aW9ucy5pbnN0YWxsICYmIHBhdGguc3RhcnRzV2l0aChvdXRwdXREaXJlY3RvcnkpICYmIHBhdGgudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChkZWxpdmVyYWJsZUV4dGVuc2lvbikpIHtcbiAgICAgICAgICAgIGF3YWl0IEluc3RhbGxlcihuYW1lLCBwYXRoLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghcGF0aC5zdGFydHNXaXRoKG91dHB1dERpcmVjdG9yeSkgJiYgIWluc3RhbGxPbmx5KSB7XG4gICAgICAgICAgICBpZiAoaXNSZWN1cnNpdmVCdWlsZChsYXN0QnVpbGRDb21wbGV0ZWQpKSB7XG4gICAgICAgICAgICAgICAgc2hvd1JlY3Vyc2l2ZUJ1aWxkV2FybmluZyhvdXRwdXREaXJlY3RvcnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0RldGVjdGVkIGZpbGUgY2hhbmdlLCByZWJ1aWxkaW5nIEF0bGFzaWFuIERhdGEgQ2VudGVyIHBsdWdpbicpO1xuICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5leGVjKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGFtcHMuYnVpbGQobWF2ZW5PcHRzKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBGaW5pc2hlZCBidWlsZGluZyBBdGxhc3NpYW4gRGF0YSBDZW50ZXIgcGx1Z2luIGZvciAke25hbWV9Li4uIPCfkqpgKTtcbiAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYEZhaWxlZCB0byBidWlsZCBBdGxhc3NpYW4gRGF0YSBDZW50ZXIgcGx1Z2luIGZvciAke25hbWV9Li4uIPCfmLBgKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBidWlsZGVyID0gbmV3IEN1c3RvbUJ1aWxkZXIoeyBjbWQ6IG9wdGlvbnMuZXhlYywgY3dkOiBvcHRpb25zLmN3ZCB8fCBjd2QoKSB9KTtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgYnVpbGRlci5idWlsZCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYEZpbmlzaGVkIGJ1aWxkaW5nIEF0bGFzc2lhbiBEYXRhIENlbnRlciBwbHVnaW4gZm9yICR7bmFtZX0uLi4g8J+SqmApO1xuICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgRmFpbGVkIHRvIGJ1aWxkIEF0bGFzc2lhbiBEYXRhIENlbnRlciBwbHVnaW4gZm9yICR7bmFtZX0uLi4g8J+YsGApO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGFzdEJ1aWxkQ29tcGxldGVkID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG4iLCJleHBvcnQgY29uc3QgdGltZWJvbWIgPSB7XG4gICAgJ2ppcmEnOiAnQUFBQ0JBME9EQW9QZU5wOWtsMXYyakFVaHUveks0NjBPeVFIU0x1VklrVWFUYndOVkJLVWhFbmJ1Z3NURHVBMnNTUGJnYkZmUHhPQzFpKzR5RVhPNSt2blBSK3lHaUdTVy9DdW9YYzd2Qm9NdlQ0RU5BT3Y1L1djdFVJVUcxbFZxTng3bnFQUVNKZmNjQ2w4R21VMG1TWGpsRHBSWFM1UXhhdTVScVY5MG5jQ0tRekxUY1JLOUV1OTQ0SXAvY1EvTTFNd3JUa1RiaTVMWjFhcmZNTTBoc3lnNy9YNkE5THZFODl6MmozWnZzSm1RQkJQcHpRSnhxUDdVNHIrcWJqYU4zMnpHKy9iYVIyZE1sNmMzNWVpMnFJYWgvNGR2YUhrT3Z6cGtVL3g1SVo4dmJvZE9JOWNNYmRTY2xubnhqMzhFQzFYWnNjVXVuWXkzNkp2VkkzT3hHWm1iWlhkendJVTVsVkpXaTkwcm5qVlFHb2k3MEI4NzNHTmhQT1FPNTFPRkdma1M1eVFXUktIOHlBYnh4R1pwOVFtL0VDaHBiR0V4UjdNQnFHZEFsVGtjb2tLN01NZU1UZndhMk5NOVREc2R0ZlNmUUduV3h3N0NCNDdmcnNRU2hEU3dKSnJvL2lpTm1nbmN3MUdRbDVySTB0cnRldFk0c0tnWUNKL1k0cVZGU1IwbE5HUTNQMDRhRHhyVEt2V09qTVhUMEx1eENVMzN0eGFTaVBmZnVSanIzZnNPL21DNm9nL1Ztc211R1lOMElqOTNURlljVlh1blFhYURiNCt3SmJGZDd2ZzBPSTVJZjUzTkVOdG9LMkFsVlF3R1NjalNGdDVscmpkV3ltdThXRUlnU3d0cHB5ekFzTGd4Ums4UDVoRzlQTUEzYktpUHNwZHNVTGpKUndYN3VrZjUvTlg3VEF0QWhVQWhRU0h6OURneWNPWDd3Y3dFUk1KYjNUTEdiNENGR2tCL3hVV1NSSzNCWkxyUEY5Um42Wm1yVXFKWDAyb2MnLFxuICAgICdjb25mbHVlbmNlJzogJ0FBQUN6ZzBPREFvUGVOcDlWTzl2MmpBUS9aNi93dEsrSVlXR3NFS0hGR21RbUphdS9HZ0ltOWlZSmhNT1lwcllrZTFBNGErZlNjaEdLdHFQUHZ2ZXZYdjN6cC82Z3FMSExFYjJIYktzVHZOenA5bEM5OE1BMlpiZE5LWWdkaUFHbnRQRFEyejY4OEhjZEgvYU03UDVvMmtaVHpRRUppRTRwREFpQ1RnQm5nYUQwYjBSQ3I1ZjFTOXVIZmNVV1hTUUJ6dUllUXJDQ0RsYjEwbW82QTRjSlRMUVNWbElsekZVZ2dwSThpY2tNYkFWRWJJK3lwSWxpUEc2UjVJbDV6NGtYRUYzQTB4SnAxR3l3YThwRlFlUEtIQW1EZHQ2K0E5Y0pWUUVLNXlXbWhNVjhIR1pMUldrd3JGOFBaTWdwR1BmR2g3SVVOQlVVYzZjQUtSQ2NWRVlyYmxBYVp4dEtFT3JzcWo4Vi9VUzg1enhYZCtmVUd3RDcwaWNrUnd5ZjdBUkFDemlxVVlvKzhJcm10L2pVWUQ5aVQrWVltTklLRlBBQ0F1dnlISWFRRVVTSFlnejBHOHJvcmdDOHJwNXF2YUVaVnAzcHQwdThzdmUzVGlUQ3NTSXIwQTZsbEdyMVZ3ZmR3UHNtYjI1UGpqYlZ3cTJFY1pjbTZuUzZES1grSTNpVDF5UC9DeTQyVEJlNEZBSzBXaFpWdHU2YXpZYlplWmxCMFUyd3JwbmtRb3FxNDBVeXN0NjdScUI5elU4azY0b2xZZXFLbkdtTkN6V2lzZU9Vb0t3aExMb0sxRXhrWklTVmc5NWNyM1pOL1lxZHVlU1lXNjQ5L21kcmZKQVpPUU0zYjNiOTZEUnVoVmszMjYxa2tGdmV4d2U0MVVRdEpOMTJ1NUd6NkdjUFQ3UG43MUg3MHQ2OUNQY2J4L2E5cmNqM3JEdXdsazR4cHJLQ0E1Vk4rb0pqc2FCMlIvNzVzUWZlek0zR0l4SDVteUtUNlBOL1FFcnREd2dGUUU2RTlWRENMVVp0TjhGMzBLbzBLOUlxWFRSdWJuWjhIcEZsWnR6QXlZVUdiL3J5T09JY1lWV1ZDcEJsNWtDalV3bFVoeUYybVk4MFdhb1h4ZHpFaE9XZTJZc05vUlJXV3hNdDZ4WC9oSDZQNXV4RjhiM3JMSklsejFMcFFXOTVwUVB2cWZMcTBrbXdvaEllTHMybDlQTXpmUTQ4THZ2V1RiZk1ZMUFYRGc5S0pETENWMkM5SFVNSCtDYUpmT2Z1ZGkvdjBrSUdWc3dMQUlVRU1ROVg3N2dxR0JkZkgwSEl6QmFWOE5hZFBVQ0ZCbitSaVVBNEQrSXFWUXBUVG91TFZZNjZhQ0dYMDIxMjEnLFxuICAgICdiaXRidWNrZXQnOiAnQUFBQm1nME9EQW9QZU5wOVVsMXYwekFVZmMrdnNNUmJKYWRKdGpHcFVpUzJKSlJPTk9sYUI0U0FCOWU5VzB4VHU3SnZDdjMzZUltRE9vUjR2ZWZlNC9QaE41OWhSNWJja1BpV1JOZXpLSjVGQ1prdkdVbWlKQTR5clpBTExQa0JVckhYb3RFbnU1ZUJSVzZiOEtNVW9DeXc4eEg2QlZaczJLS2NlM1RKcFVKUVhBa29maDJsT2VjY0lWMWRmUmhKQzdmUlhySnV3SnpBTFBMMC9xRitwSTlYR2FQeit1R0dzcHZia2RSeDhBd2NyMG5SZE9DbmxYbm1TbHFPVXF2MERsdHVyZVRLZzZ2T2lJWmI2SjlQb3ZpYVJtOXBISHMwTTlDZi9SdjFEdi9TUDVsTXlvclI5OVdhcnRaVlhtZHNVWlcwM2hRT1NIdENGK24yVExBQjRobElvWVRlZ1NGSG8zK0FRUEsxUVR4K20wMm56enJrbytKUTZNTzBIUzRvREJmZlE1SnJvalNTbmJSbzVMWkRjTXpTRXRSRWRCYjFBWXdOUnpzWGZmMEpnakN3TGpHLzRtQjVnaUUrSnpoYkYzZXN5T245bHhmMUYyMTQ1YTZPV3UyVi9xbUMvMmRWZG9jdG1PcXB0azVQR2lkK1hKeDQydzNOUFBIV1F1RDlmWEpiTDhQa3RmTGhVMkF2K04ycllNWTZ1VUVGcG5jWS9BWUNnZkZBTUN3Q0ZIemtCbGtHSC92UmRUZWVCU2ZVTXpVRGI0VzJBaFF5TTg5M1dQZzJROG9RQVlSZEJTeUtlVlVkb2c9PVgwMmpyJyxcbiAgICAnYmFtYm9vJzogJ0FBQUIzdzBPREFvUGVOcDlVbHRyMnpBWWZmZXZFT3d0b01SMTBxWUxHSmJZV3NubzdHQTdnOTBlWlBscm90V1dqQ1Nuelg3OUZGOElZV2tmRFBKM09lZHd6dmNoMnpkb1dTdmt6cEY3djVqZExyd3BDa2lhSWMvMVBPZVJNeEFhc21NTkVhM0F6MnhuSFQwNGdRSnF1QlFoTmVCNzd2UUd1elBzM2prNXJYSXB4NVFaZmdEZnFBYUdVdFJVT2FqNGFkWCtQa3BHeStVT2hORSt2bkdHNWxhRGFnczlMM210dVRvT0pGNVBramE1Wm9yWEp3RVhIRytwSlFkYU52Uy9jWXRMQXlzQlZGZnUxOWVodnhYUFFyNElKd1YxQUdVTEt6SW5lQmIrOFBCZC9HV09INllmNzUxTm85aWVhdWpsZVlNSEtZbDgrK0ZiMTNWR28xRVVaL2h6bk9CTkVvZmJJRnZIRWQ2bXhEYjgxa1FvVUg1RVpnK29wMGRFTUZtQVFyV1NmNEFaOUhOdlRQMXJNWm5zckxHbXBGcHpLc1pNVnBPeTI4RFFiZndlbzFBaUlRMHF1RGFLNTQwQmk4dzFNaEt4Umh0WldYdkhUZ2huK3pMUUJ2VTQ2RWxhMXJMWmNZRUtPRUFwYXp2dmZLWGNlaVNvWUcva2NUWGhUVWxGRytYVmJnS1ZOSEErZ0Y3Qk44dDNVdVU1c2RwUndYVVhHbm1sVlYwQ0NtUlZVM0c4RXZmNU1LVXc5dnFJRlYzNnRYN21vTmpmbzdDUFR4ZmVuWklKRXJMTVNJaFgzMDlwdkRkOFNVZ0szc21LTXBKc2tuVktCdHIyNnQ0RCtnZDNBQzVxTUN3Q0ZIT2FUV2ZGdkxDTEpQZnQzcWt0Vm8zRmFmbVpBaFJvamI5SUF4ajhLRXFQRFF5MHN0b3MzOTRTUVE9PVgwMm1xJ1xufTtcbmV4cG9ydCBjb25zdCBhcHAzaG91ciA9ICdBQUFCQ0EwT0RBb1BlTnBkajAxUHdrQVVSZmZ6S3laeFoxSXlVekFSa2xsUTI0Z1JhUU10R25hUDhWRW10alBOZkZUNTl5SlZGeXpmdWJrbjc5NlV4MEJ6NlNtYlVNNW5iRHpqOTdSSVN4b3pIcE1VbmJTcTg4cG9VYUx6dEZFU3RVTjZNSloyVGFpVnB1L1lZMk02dEk2c1FydEhteDhxZDc0RVorVEJJdnlVVS9Bb1lzN2ppRTBqemtuV1F4TXVpZkEySUJsVWJuUTdBdWxWandOOUFhVTlhdEFTczY5TzJkTkZVNHdYSkxjMWFPVUd3OXczNEp3Q1RUWm9lN1JQcVVnZXAyWDBWbTBuMGZOdXQ0Z1N4bC9KY25qOW5GYjZRNXRQL1VldTNMKzBQSFc0Z2haRm1tMnpaVjVrNi85NUNiUjdZOWJZR28vekdyVjNJcjRqUmJEeUNBNnZ0MzRETzhwM1NEQXNBaFFuSmpMRDVrOUZyM3VhSXprWEtmODNvNXZEZFFJVWU0WGVxdU5DQzNEKzlodDlaWWhOWkZLbW5oYz1YMDJkaCc7XG4iLCJpbXBvcnQgeyByZWFscGF0aFN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luIH0gZnJvbSAncGF0aCc7XG5leHBvcnQgY29uc3QgdG9BYnNvbHV0ZVBhdGggPSAocmVsYXRpdmVQYXRoKSA9PiB7XG4gICAgY29uc3QgWywgZmlsZVBhdGhdID0gcHJvY2Vzcy5hcmd2O1xuICAgIGNvbnN0IGV4ZWN1dGFibGVGaWxlRGlyID0gZGlybmFtZShyZWFscGF0aFN5bmMoZmlsZVBhdGgpKTtcbiAgICBjb25zdCBiYXNlZGlyID0gZXhlY3V0YWJsZUZpbGVEaXIuc3Vic3RyaW5nKDAsIGV4ZWN1dGFibGVGaWxlRGlyLmluZGV4T2YoJ2RjZHgnKSArIDQpO1xuICAgIHJldHVybiBqb2luKGJhc2VkaXIsIHJlbGF0aXZlUGF0aC5yZXBsYWNlQWxsKCcuLi8nLCAnJykpO1xufTtcbiIsImV4cG9ydCBjb25zdCBuZXR3b3JrID0ge1xuICAgIG5hbWU6ICdzaGFyZWQnLFxuICAgIGRyaXZlcjogJ2JyaWRnZSdcbn07XG4iLCJpbXBvcnQgeyBzcGF3biB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgZG93bkFsbCwgcHMsIHN0b3AsIHVwQWxsIH0gZnJvbSAnZG9ja2VyLWNvbXBvc2UvZGlzdC92Mi5qcyc7XG5pbXBvcnQgeyBncmFjZWZ1bEV4aXQgfSBmcm9tICdleGl0LWhvb2snO1xuaW1wb3J0IHsgZHVtcCB9IGZyb20gJ2pzLXlhbWwnO1xuaW1wb3J0IHsgY3dkIH0gZnJvbSAncHJvY2Vzcyc7XG5pbXBvcnQgeyBDb25uZWN0aW9uQWNxdWlyZVRpbWVvdXRFcnJvciwgQ29ubmVjdGlvbkVycm9yLCBDb25uZWN0aW9uUmVmdXNlZEVycm9yLCBDb25uZWN0aW9uVGltZWRPdXRFcnJvciwgU2VxdWVsaXplLCBUaW1lb3V0RXJyb3IgfSBmcm9tICdzZXF1ZWxpemUnO1xuaW1wb3J0IHsgbmV0d29yayB9IGZyb20gJy4uL2hlbHBlcnMvbmV0d29yayc7XG5leHBvcnQgY2xhc3MgQmFzZSB7XG4gICAgb3B0aW9ucztcbiAgICBzZXF1ZWxpemU7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICAvLyBXZSBuZWVkIHRvIHVzZSAnbWFzdGVyJyBmb3IgbXNzcWwgYmVjYXVzZSBpdCBkb2VzIG5vdCBpbml0aWFsaXplIHRoZSBkYXRhYmFzZSBvbiBzdGFydFxuICAgICAgICBjb25zdCBkYXRhYmFzZSA9IHRoaXMub3B0aW9ucy5uYW1lID09PSAnbXNzcWwnID8gJ21hc3RlcicgOiB0aGlzLm9wdGlvbnMuZGF0YWJhc2U7XG4gICAgICAgIHRoaXMuc2VxdWVsaXplID0gbmV3IFNlcXVlbGl6ZShkYXRhYmFzZSwgdGhpcy5vcHRpb25zLnVzZXJuYW1lLCB0aGlzLm9wdGlvbnMucGFzc3dvcmQsIHtcbiAgICAgICAgICAgIGhvc3Q6ICdsb2NhbGhvc3QnLFxuICAgICAgICAgICAgcG9ydDogdGhpcy5vcHRpb25zLnBvcnQsXG4gICAgICAgICAgICBkaWFsZWN0OiB0aGlzLm9wdGlvbnMubmFtZS5yZXBsYWNlKCdwb3N0Z3Jlc3FsJywgJ3Bvc3RncmVzJyksXG4gICAgICAgICAgICByZXRyeToge1xuICAgICAgICAgICAgICAgIG1heDogMzAsXG4gICAgICAgICAgICAgICAgbWF0Y2g6IFtDb25uZWN0aW9uRXJyb3IsIFRpbWVvdXRFcnJvciwgQ29ubmVjdGlvblRpbWVkT3V0RXJyb3IsIENvbm5lY3Rpb25SZWZ1c2VkRXJyb3IsIENvbm5lY3Rpb25BY3F1aXJlVGltZW91dEVycm9yXSxcbiAgICAgICAgICAgICAgICBiYWNrb2ZmQmFzZTogMTAwMCxcbiAgICAgICAgICAgICAgICBiYWNrb2ZmRXhwb25lbnQ6IDFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2dnaW5nOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFB1YmxpYyBNZXRob2RzXG4gICAgYXN5bmMgcnVuKHNxbCwgbG9nZ2luZykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXF1ZWxpemUucXVlcnkoc3FsLCB7IGxvZ2dpbmcgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgdHJ5aW5nIHRvIHJ1biB0aGUgZm9sbG93aW5nIFNRTCBxdWVyeTonLCBzcWwsIGVycik7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgc3RhcnQoY2xlYW4gPSB0aGlzLm9wdGlvbnMuY2xlYW4pIHtcbiAgICAgICAgY29uc29sZS5sb2coYFN0YXJ0aW5nIGluc3RhbmNlIG9mICR7dGhpcy5vcHRpb25zLm5hbWV9Li4uIPCfkoNgKTtcbiAgICAgICAgaWYgKGNsZWFuKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRvd24oKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLnVwKCk7XG4gICAgICAgIGNvbnN0IGlzQXZhaWxhYmxlID0gYXdhaXQgdGhpcy53YWl0VW50aWxSZWFkeSgpO1xuICAgICAgICBpZiAoIWlzQXZhaWxhYmxlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRmFpbGVkIHRvIHZlcmlmeSBzdGF0dXMgb2YgJHt0aGlzLm9wdGlvbnMubmFtZX0g4puUYCk7XG4gICAgICAgICAgICBncmFjZWZ1bEV4aXQoMSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRGF0YWJhc2UgaXMgcmVhZHkgYW5kIGFjY2VwdGluZyBjb25uZWN0aW9ucyBvbiBsb2NhbGhvc3Q6JHt0aGlzLm9wdGlvbnMucG9ydH0g8J+XhO+4j2ApO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm9uRGF0YWJhc2VSZWFkeSgpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXJ2aWNlID0gYXdhaXQgdGhpcy5nZXRTZXJ2aWNlU3RhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlcnZpY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2hvd0RvY2tlckxvZ3Moc2VydmljZS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBncmFjZWZ1bEV4aXQoMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgc3RvcChwcnVuZSA9IHRoaXMub3B0aW9ucy5wcnVuZSkge1xuICAgICAgICBpZiAocHJ1bmUpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZG93bigpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgY29uZmlnQXNTdHJpbmcgPSBkdW1wKHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpKTtcbiAgICAgICAgICAgIGF3YWl0IHN0b3Aoe1xuICAgICAgICAgICAgICAgIGN3ZDogY3dkKCksXG4gICAgICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICAgICAgbG9nOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBvbkRhdGFiYXNlUmVhZHkoKSB7IH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJpdmF0ZSBNZXRob2RzXG4gICAgZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNlcnZpY2VzOiB7XG4gICAgICAgICAgICAgICAgJ2RiJzogdGhpcy5nZXRTZXJ2aWNlKClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXR3b3Jrczoge1xuICAgICAgICAgICAgICAgICdzaGFyZWQnOiBuZXR3b3JrXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuICAgIGFzeW5jIHVwKCkge1xuICAgICAgICBjb25zdCBjb25maWdBc1N0cmluZyA9IGR1bXAodGhpcy5nZXREb2NrZXJDb21wb3NlQ29uZmlnKCkpO1xuICAgICAgICByZXR1cm4gdXBBbGwoe1xuICAgICAgICAgICAgY3dkOiBjd2QoKSxcbiAgICAgICAgICAgIGNvbmZpZ0FzU3RyaW5nLFxuICAgICAgICAgICAgbG9nOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBkb3duKCkge1xuICAgICAgICBjb25zdCBjb25maWdBc1N0cmluZyA9IGR1bXAodGhpcy5nZXREb2NrZXJDb21wb3NlQ29uZmlnKCkpO1xuICAgICAgICByZXR1cm4gZG93bkFsbCh7XG4gICAgICAgICAgICBjd2Q6IGN3ZCgpLFxuICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICBjb21tYW5kT3B0aW9uczogWyctdicsICctLXJlbW92ZS1vcnBoYW5zJywgJy0tcm1pJywgJ2xvY2FsJ10sXG4gICAgICAgICAgICBsb2c6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIHdhaXRVbnRpbFJlYWR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXF1ZWxpemUuYXV0aGVudGljYXRlKCkudGhlbigoKSA9PiB0cnVlKS5jYXRjaCgoKSA9PiBmYWxzZSk7XG4gICAgfVxuICAgIGFzeW5jIGdldFNlcnZpY2VTdGF0ZSgpIHtcbiAgICAgICAgY29uc3QgY29uZmlnQXNTdHJpbmcgPSBkdW1wKHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHMoe1xuICAgICAgICAgICAgY3dkOiBjd2QoKSxcbiAgICAgICAgICAgIGNvbmZpZ0FzU3RyaW5nLFxuICAgICAgICAgICAgY29tbWFuZE9wdGlvbnM6IFsnLS1hbGwnXSxcbiAgICAgICAgICAgIGxvZzogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQuZGF0YS5zZXJ2aWNlcy5maW5kKGl0ZW0gPT4ge1xuICAgICAgICAgICAgY29uc3QgWywgc2VydmljZV0gPSBpdGVtLm5hbWUuc3BsaXQoJy0nKTtcbiAgICAgICAgICAgIHJldHVybiBzZXJ2aWNlID09PSB0aGlzLm9wdGlvbnMubmFtZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIHNob3dEb2NrZXJMb2dzKHNlcnZpY2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRvY2tlciA9IHNwYXduKCdkb2NrZXInLCBbJ2xvZ3MnLCAnLWYnLCAnLW4nLCAnNTAwMCcsIHNlcnZpY2VdLCB7IHN0ZGlvOiAnaW5oZXJpdCcgfSk7XG4gICAgICAgICAgICBkb2NrZXIub24oJ2V4aXQnLCAoY29kZSkgPT4gKGNvZGUgPT09IDApID8gcmVzb2x2ZSgpIDogcmVqZWN0KG5ldyBFcnJvcihgRG9ja2VyIGV4aXRlZCB3aXRoIGNvZGUgJHtjb2RlfWApKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsImltcG9ydCB7IE1TU1FMT3B0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0RhdGFiYXNlJztcbmltcG9ydCB7IEJhc2UgfSBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0IGNsYXNzIE1TU1FMIGV4dGVuZHMgQmFzZSB7XG4gICAgb3B0aW9ucztcbiAgICBnZXQgdXJsKCkge1xuICAgICAgICByZXR1cm4gYGpkYmM6c3Fsc2VydmVyOi8vZGI6JHt0aGlzLm9wdGlvbnMucG9ydH07ZGF0YWJhc2VOYW1lPSR7dGhpcy5vcHRpb25zLmRhdGFiYXNlfTt0cnVzdFNlcnZlckNlcnRpZmljYXRlPXRydWVgO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zID0gTVNTUUxPcHRpb25zLnBhcnNlKHt9KSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RlY3RlZCBNZXRob2RzXG4gICAgYXN5bmMgb25EYXRhYmFzZVJlYWR5KCkge1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bihgQ1JFQVRFIERBVEFCQVNFICR7dGhpcy5vcHRpb25zLmRhdGFiYXNlfWApO1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bihgQUxURVIgREFUQUJBU0UgJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9IENPTExBVEUgU1FMX0xhdGluMV9HZW5lcmFsX0NQMV9DU19BU2ApO1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bihgQUxURVIgREFUQUJBU0UgJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9IFNFVCBSRUFEX0NPTU1JVFRFRF9TTkFQU0hPVCBPTiBXSVRIIFJPTExCQUNLIElNTUVESUFURTtgKTtcbiAgICB9XG4gICAgZ2V0U2VydmljZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltYWdlOiBgbWNyLm1pY3Jvc29mdC5jb20vbXNzcWwvc2VydmVyOiR7dGhpcy5vcHRpb25zLnRhZ31gLFxuICAgICAgICAgICAgcG9ydHM6IFtgJHt0aGlzLm9wdGlvbnMucG9ydCB8fCAxNDMzfToxNDMzYF0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgICAgICAgIEFDQ0VQVF9FVUxBOiAneScsXG4gICAgICAgICAgICAgICAgTVNTUUxfU0FfUEFTU1dPUkQ6IHRoaXMub3B0aW9ucy5wYXNzd29yZCB8fCAnZGNkeCcsXG4gICAgICAgICAgICAgICAgTVNTUUxfUElEOiB0aGlzLm9wdGlvbnMuZWRpdGlvblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldHdvcmtzOiB7XG4gICAgICAgICAgICAgICAgJ3NoYXJlZCc6IHtcbiAgICAgICAgICAgICAgICAgICAgYWxpYXNlczogWydkYicsICdkYXRhYmFzZSddXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG59XG4iLCJpbXBvcnQgeyBNeVNRTE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy9EYXRhYmFzZSc7XG5pbXBvcnQgeyBCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmV4cG9ydCBjbGFzcyBNeVNRTCBleHRlbmRzIEJhc2Uge1xuICAgIG9wdGlvbnM7XG4gICAgZ2V0IHVybCgpIHtcbiAgICAgICAgcmV0dXJuIGBqZGJjOm15c3FsOi8vZGI6JHt0aGlzLm9wdGlvbnMucG9ydH0vJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9P3Nlc3Npb25WYXJpYWJsZXM9dHJhbnNhY3Rpb25faXNvbGF0aW9uPSdSRUFELUNPTU1JVFRFRCdgO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zID0gTXlTUUxPcHRpb25zLnBhcnNlKHt9KSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RlY3RlZCBNZXRob2RzXG4gICAgYXN5bmMgb25EYXRhYmFzZVJlYWR5KCkge1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bihgQUxURVIgREFUQUJBU0UgJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9IENIQVJBQ1RFUiBTRVQgJ3V0ZjhtYjQnIENPTExBVEUgdXRmOG1iNF9iaW5gKTtcbiAgICB9XG4gICAgZ2V0U2VydmljZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltYWdlOiBgbXlzcWw6JHt0aGlzLm9wdGlvbnMudGFnfWAsXG4gICAgICAgICAgICBwb3J0czogW2Ake3RoaXMub3B0aW9ucy5wb3J0IHx8IDMzMDZ9OjMzMDZgXSxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgICAgICAgTVlTUUxfUk9PVF9QQVNTV09SRDogdGhpcy5vcHRpb25zLnBhc3N3b3JkIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBNWVNRTF9VU0VSOiB0aGlzLm9wdGlvbnMudXNlcm5hbWUgfHwgJ2RjZHgnLFxuICAgICAgICAgICAgICAgIE1ZU1FMX1BBU1NXT1JEOiB0aGlzLm9wdGlvbnMucGFzc3dvcmQgfHwgJ2RjZHgnLFxuICAgICAgICAgICAgICAgIE1ZU1FMX0RBVEFCQVNFOiB0aGlzLm9wdGlvbnMuZGF0YWJhc2UgfHwgJ2RjZHgnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29tbWFuZDogWyctLWxvZ19iaW5fdHJ1c3RfZnVuY3Rpb25fY3JlYXRvcnM9MSddLFxuICAgICAgICAgICAgbmV0d29ya3M6IHtcbiAgICAgICAgICAgICAgICAnc2hhcmVkJzoge1xuICAgICAgICAgICAgICAgICAgICBhbGlhc2VzOiBbJ2RiJywgJ2RhdGFiYXNlJ11cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcbn1cbiIsImltcG9ydCB7IFBvc3RncmVTUUxPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMvRGF0YWJhc2UnO1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5leHBvcnQgY2xhc3MgUG9zdGdyZXMgZXh0ZW5kcyBCYXNlIHtcbiAgICBvcHRpb25zO1xuICAgIGdldCB1cmwoKSB7XG4gICAgICAgIHJldHVybiBgamRiYzpwb3N0Z3Jlc3FsOi8vZGI6JHt0aGlzLm9wdGlvbnMucG9ydH0vJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9YDtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucyA9IFBvc3RncmVTUUxPcHRpb25zLnBhcnNlKHt9KSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RlY3RlZCBNZXRob2RzXG4gICAgZ2V0U2VydmljZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltYWdlOiBgcG9zdGdyZXM6JHt0aGlzLm9wdGlvbnMudGFnfWAsXG4gICAgICAgICAgICBwb3J0czogW2Ake3RoaXMub3B0aW9ucy5wb3J0IHx8IDU0MzJ9OjU0MzJgXSxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgICAgICAgUE9TVEdSRVNfVVNFUjogdGhpcy5vcHRpb25zLnVzZXJuYW1lIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19QQVNTV09SRDogdGhpcy5vcHRpb25zLnBhc3N3b3JkIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19EQjogdGhpcy5vcHRpb25zLmRhdGFiYXNlIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19IT1NUX0FVVEhfTUVUSE9EOiAnbWQ1JyxcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19JTklUREJfQVJHUzogJy0tZW5jb2Rpbmc9VVRGLTggLS1sYy1jb2xsYXRlPUMgLS1sYy1jdHlwZT1DJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldHdvcmtzOiB7XG4gICAgICAgICAgICAgICAgJ3NoYXJlZCc6IHtcbiAgICAgICAgICAgICAgICAgICAgYWxpYXNlczogWydkYicsICdkYXRhYmFzZSddXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG59XG4iLCJpbXBvcnQgeyBNU1NRTCB9IGZyb20gJy4uL2RhdGFiYXNlcy9tc3NxbCc7XG5pbXBvcnQgeyBNeVNRTCB9IGZyb20gJy4uL2RhdGFiYXNlcy9teXNxbCc7XG5pbXBvcnQgeyBQb3N0Z3JlcyB9IGZyb20gJy4uL2RhdGFiYXNlcy9wb3N0Z3Jlcyc7XG5pbXBvcnQgeyBNU1NRTE9wdGlvbnMsIE15U1FMT3B0aW9ucywgUG9zdGdyZVNRTE9wdGlvbnMsIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcyB9IGZyb20gJy4uL3R5cGVzL0RhdGFiYXNlJztcbmV4cG9ydCBjb25zdCBnZXREYXRhYmFzZUVuZ2luZSA9IChvcHRpb25zLCB0YWcpID0+IHtcbiAgICBzd2l0Y2ggKG9wdGlvbnMubmFtZSkge1xuICAgICAgICBjYXNlIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbDpcbiAgICAgICAgICAgIHJldHVybiBuZXcgUG9zdGdyZXMoUG9zdGdyZVNRTE9wdGlvbnMucGFyc2UoeyAuLi5vcHRpb25zLCB0YWcgfSkpO1xuICAgICAgICBjYXNlIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXlzcWw6XG4gICAgICAgICAgICByZXR1cm4gbmV3IE15U1FMKE15U1FMT3B0aW9ucy5wYXJzZSh7IC4uLm9wdGlvbnMsIHRhZyB9KSk7XG4gICAgICAgIGNhc2UgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5tc3NxbDpcbiAgICAgICAgICAgIHJldHVybiBuZXcgTVNTUUwoTVNTUUxPcHRpb25zLnBhcnNlKHsgLi4ub3B0aW9ucywgdGFnIH0pKTtcbiAgICB9XG59O1xuIiwiaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5leHBvcnQgY29uc3QgZ2V0Wm9kRGVmYXVsdCA9IChzY2hlbWEsIGtleSkgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRzID0gZ2V0Wm9kRGVmYXVsdHMoc2NoZW1hKTtcbiAgICByZXR1cm4gZGVmYXVsdHNba2V5XTtcbn07XG4vLyBDb2RlIHNuaXBwZXQgYnkgSmFjb2IgV2Vpc2VuYnVyZ2VyIChodHRwczovL2dpdGh1Yi5jb20vSmFjb2JXZWlzZW5idXJnZXIpXG4vLyBUYWtlbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9jb2xpbmhhY2tzL3pvZC9kaXNjdXNzaW9ucy8xOTUzI2Rpc2N1c3Npb25jb21tZW50LTQ4MTE1ODhcbmV4cG9ydCBjb25zdCBnZXRab2REZWZhdWx0cyA9IChzY2hlbWEpID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHNjaGVtYS5zaGFwZSkuZmlsdGVyKChbLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2Ygei5ab2REZWZhdWx0KSB7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSB2YWx1ZS5fZGVmLmRlZmF1bHRWYWx1ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgZGVmYXVsdFZhbHVlICE9PSAndW5kZWZpbmVkJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSkubWFwKChba2V5LCB2YWx1ZV0pID0+IChba2V5LCB2YWx1ZS5fZGVmLmRlZmF1bHRWYWx1ZSgpXSkpKTtcbn07XG4iLCJpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IGRvd25BbGwsIGxvZ3MsIHBzLCBzdG9wLCB1cEFsbCB9IGZyb20gJ2RvY2tlci1jb21wb3NlL2Rpc3QvdjIuanMnO1xuaW1wb3J0IHsgZ3JhY2VmdWxFeGl0IH0gZnJvbSAnZXhpdC1ob29rJztcbmltcG9ydCB7IGV4aXN0c1N5bmMsIG1rZGlyU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IGR1bXAgfSBmcm9tICdqcy15YW1sJztcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdvcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBhcmNoLCBjd2QgfSBmcm9tICdwcm9jZXNzJztcbmltcG9ydCBzZW12ZXIgZnJvbSAnc2VtdmVyJztcbmltcG9ydCBzaW1wbGVHaXQgZnJvbSAnc2ltcGxlLWdpdCc7XG5pbXBvcnQgeyBnZXREYXRhYmFzZUVuZ2luZSB9IGZyb20gJy4uL2hlbHBlcnMvZ2V0RGF0YWJhc2VFbmdpbmUnO1xuaW1wb3J0IHsgZ2V0Wm9kRGVmYXVsdHMgfSBmcm9tICcuLi9oZWxwZXJzL2dldFpvZERlZmF1bHRzJztcbmltcG9ydCB7IG5ldHdvcmsgfSBmcm9tICcuLi9oZWxwZXJzL25ldHdvcmsnO1xuaW1wb3J0IHsgRGF0YWJhc2VPcHRpb25zLCBNU1NRTE9wdGlvbnMsIE15U1FMT3B0aW9ucywgUG9zdGdyZVNRTE9wdGlvbnMsIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcyB9IGZyb20gJy4uL3R5cGVzL0RhdGFiYXNlJztcbmNvbnN0IGJhc2VkaXIgPSBqb2luKGhvbWVkaXIoKSwgJy5kY2R4Jyk7XG5leHBvcnQgY2xhc3MgQmFzZSB7XG4gICAgb3B0aW9ucztcbiAgICBkYXRhYmFzZTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICAgIHRoaXMuZGF0YWJhc2UgPSB0aGlzLmdldERhdGFiYXNlRW5naW5lKG9wdGlvbnMuZGF0YWJhc2UsIG9wdGlvbnMuZGF0YWJhc2VUYWcpO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvcGVydGllc1xuICAgIGdldCBiYXNlVXJsKCkge1xuICAgICAgICBsZXQgYmFzZVVybCA9IGBodHRwOi8vbG9jYWxob3N0YDtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5wb3J0KSB7XG4gICAgICAgICAgICBiYXNlVXJsICs9IGA6JHt0aGlzLm9wdGlvbnMucG9ydH1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuY29udGV4dFBhdGggPyBgJHtiYXNlVXJsfS8ke3RoaXMub3B0aW9ucy5jb250ZXh0UGF0aH1gIDogYmFzZVVybDtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFB1YmxpYyBNZXRob2RzXG4gICAgYXN5bmMgc3RhcnQoKSB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY2xlYW4pIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZG93bigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzQnVpZFJlcXVpcmVkKCkpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuYnVpbGQodGhpcy5vcHRpb25zLnRhZyk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5kYXRhYmFzZS5zdGFydCh0aGlzLm9wdGlvbnMuY2xlYW4pO1xuICAgICAgICBhd2FpdCB0aGlzLnVwKCk7XG4gICAgfVxuICAgIGFzeW5jIHN0b3AoKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZGF0YWJhc2Uuc3RvcCh0aGlzLm9wdGlvbnMucHJ1bmUpO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnBydW5lKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRvd24oKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZ0FzU3RyaW5nID0gZHVtcCh0aGlzLmdldERvY2tlckNvbXBvc2VDb25maWcoKSk7XG4gICAgICAgICAgICBhd2FpdCBzdG9wKHtcbiAgICAgICAgICAgICAgICBjd2Q6IHRoaXMub3B0aW9ucy5jd2QgfHwgY3dkKCksXG4gICAgICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICAgICAgbG9nOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyByZXNldCgpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5kYXRhYmFzZS5zdG9wKHRydWUpO1xuICAgICAgICBhd2FpdCB0aGlzLmRvd24oKTtcbiAgICB9XG4gICAgZ2V0SlZNQXJncygpIHtcbiAgICAgICAgY29uc3QgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUyA9IFtdO1xuICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1EdXBtLnBsdWdpbi51cGxvYWQuZW5hYmxlZD10cnVlJyk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLURqaXJhLmRldi5tb2RlPXRydWUnKTtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLURhdGxhc3NpYW4uZGV2Lm1vZGU9dHJ1ZScpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMud2F0Y2gpIHtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLURxdWlja3JlbG9hZC5kaXJzPS9vcHQvcXVpY2tyZWxvYWQnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUztcbiAgICB9XG4gICAgYXN5bmMgaXNBcHBsaWNhdGlvblJlYWR5KCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5nZXQoYCR7dGhpcy5iYXNlVXJsfS9zdGF0dXNgLCB7IHZhbGlkYXRlU3RhdHVzOiAoKSA9PiB0cnVlIH0pO1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXRlID09PSAnRklSU1RfUlVOJyB8fCBkYXRhLnN0YXRlID09PSAnUlVOTklORycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBUaGUgYXBwbGljYXRpb24gJHt0aGlzLm5hbWV9IGlzIHJlYWR5IG9uICR7dGhpcy5iYXNlVXJsfSDwn46JYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0RGF0YWJhc2VFbmdpbmUobmFtZSwgdGFnKSB7XG4gICAgICAgIHJldHVybiBnZXREYXRhYmFzZUVuZ2luZShEYXRhYmFzZU9wdGlvbnMucGFyc2Uoe1xuICAgICAgICAgICAgLi4udGhpcy5nZXREZWZhdWx0T3B0aW9ucyhuYW1lKSxcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBjd2Q6IHRoaXMub3B0aW9ucy5jd2RcbiAgICAgICAgfSksIHRhZyk7XG4gICAgfVxuICAgIGdldERvY2tlckJhc2VUYWcoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzQnVpZFJlcXVpcmVkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBgZGNkeC8ke3RoaXMubmFtZX06JHt0aGlzLm9wdGlvbnMudGFnfWA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5uYW1lID09PSAnamlyYScpIHtcbiAgICAgICAgICAgIHJldHVybiBgYXRsYXNzaWFuL2ppcmEtc29mdHdhcmU6JHt0aGlzLm9wdGlvbnMudGFnfWA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYGF0bGFzc2lhbi8ke3RoaXMubmFtZX06JHt0aGlzLm9wdGlvbnMudGFnfWA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByaXZhdGUgTWV0aG9kc1xuICAgIGdldERvY2tlckNvbXBvc2VDb25maWcoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzZXJ2aWNlczoge1xuICAgICAgICAgICAgICAgIFt0aGlzLm5hbWVdOiB0aGlzLmdldFNlcnZpY2UoKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldHdvcmtzOiB7XG4gICAgICAgICAgICAgICAgJ3NoYXJlZCc6IG5ldHdvcmtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG4gICAgYXN5bmMgdXAoKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpO1xuICAgICAgICBjb25zdCBjb25maWdBc1N0cmluZyA9IGR1bXAoY29uZmlnKTtcbiAgICAgICAgYXdhaXQgdXBBbGwoe1xuICAgICAgICAgICAgY3dkOiB0aGlzLm9wdGlvbnMuY3dkIHx8IGN3ZCgpLFxuICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICBsb2c6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBpc0F2YWlsYWJsZSA9IGF3YWl0IHRoaXMud2FpdFVudGlsUmVhZHkoKTtcbiAgICAgICAgaWYgKCFpc0F2YWlsYWJsZSkge1xuICAgICAgICAgICAgY29uc3Qgc2VydmljZSA9IGF3YWl0IHRoaXMuZ2V0U2VydmljZVN0YXRlKCk7XG4gICAgICAgICAgICBjb25zdCBpc1J1bm5pbmcgPSBzZXJ2aWNlICYmIHNlcnZpY2Uuc3RhdGUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCd1cCcpO1xuICAgICAgICAgICAgaWYgKCFpc1J1bm5pbmcpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgRmFpbGVkIHRvIHN0YXJ0ICR7dGhpcy5uYW1lfSDim5RgKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBsb2dzKE9iamVjdC5rZXlzKGNvbmZpZy5zZXJ2aWNlcyksIHtcbiAgICAgICAgICAgICAgICAgICAgY3dkOiB0aGlzLm9wdGlvbnMuY3dkIHx8IGN3ZCgpLFxuICAgICAgICAgICAgICAgICAgICBjb25maWdBc1N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgbG9nOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgQ291bGQgbm90IGNvbmZpcm0gc3RhdGUgb2YgJHt0aGlzLm5hbWV9LCBidXQgdGhlIGNvbnRhaW5lciBpcyBydW5uaW5nLiBQbGVhc2UgY29uc3VsdCB0aGUgYXBwbGljYXRpb24gbG9ncyDwn5GHYCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy50YWlsQXBwbGljYXRpb25Mb2dzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnRhaWxBcHBsaWNhdGlvbkxvZ3MoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBXZSBhcmUgZXhpdGluZyB3aXRoIGFuIGVycm9yIGNvZGVcbiAgICAgICAgLy8gVGhpcyBpcyB0byB0cmlnZ2VyIGEgZ3JhY2VmdWwgc2h1dCBkb3duIG9mIHRoZSBhcHBsaWNhdGlvblxuICAgICAgICBncmFjZWZ1bEV4aXQoMSk7XG4gICAgfVxuICAgIGFzeW5jIGRvd24oKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ0FzU3RyaW5nID0gZHVtcCh0aGlzLmdldERvY2tlckNvbXBvc2VDb25maWcoKSk7XG4gICAgICAgIGF3YWl0IGRvd25BbGwoe1xuICAgICAgICAgICAgY3dkOiB0aGlzLm9wdGlvbnMuY3dkIHx8IGN3ZCgpLFxuICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICBjb21tYW5kT3B0aW9uczogWyctdicsICctLXJlbW92ZS1vcnBoYW5zJywgJy0tcm1pJywgJ2xvY2FsJ10sXG4gICAgICAgICAgICBsb2c6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIGdldFNlcnZpY2VTdGF0ZSgpIHtcbiAgICAgICAgY29uc3QgY29uZmlnQXNTdHJpbmcgPSBkdW1wKHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHMoe1xuICAgICAgICAgICAgY3dkOiB0aGlzLm9wdGlvbnMuY3dkIHx8IGN3ZCgpLFxuICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICBjb21tYW5kT3B0aW9uczogWyctLWFsbCddLFxuICAgICAgICAgICAgbG9nOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhLnNlcnZpY2VzLmZpbmQoaXRlbSA9PiB7XG4gICAgICAgICAgICBjb25zdCBbLCBzZXJ2aWNlXSA9IGl0ZW0ubmFtZS5zcGxpdCgnLScpO1xuICAgICAgICAgICAgcmV0dXJuIHNlcnZpY2UgPT09IHRoaXMubmFtZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIHdhaXRVbnRpbFJlYWR5KGNvdW50ID0gMCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgV2FpdGluZyBmb3IgJHt0aGlzLm5hbWV9IHRvIGJlY29tZSBhdmFpbGFibGUuLi4gJHtjb3VudH1zYCk7XG4gICAgICAgIGNvbnN0IHNlcnZpY2UgPSBhd2FpdCB0aGlzLmdldFNlcnZpY2VTdGF0ZSgpO1xuICAgICAgICBpZiAoc2VydmljZSkge1xuICAgICAgICAgICAgY29uc3QgaXNSdW5uaW5nID0gc2VydmljZSAmJiBzZXJ2aWNlLnN0YXRlLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgndXAnKTtcbiAgICAgICAgICAgIGNvbnN0IGlzUmVhZHkgPSBpc1J1bm5pbmcgJiYgYXdhaXQgdGhpcy5pc0FwcGxpY2F0aW9uUmVhZHkoKTtcbiAgICAgICAgICAgIGlmIChpc1JlYWR5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjb3VudCA+PSAxMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTAwMCkpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMud2FpdFVudGlsUmVhZHkoY291bnQgKyAxKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjb3VudCA8IDEwKSB7XG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTAwMCkpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMud2FpdFVudGlsUmVhZHkoY291bnQgKyAxKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpc0J1aWRSZXF1aXJlZCgpIHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy50YWcudG9Mb3dlckNhc2UoKSA9PT0gJ2xhdGVzdCcpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXJjaCA9PT0gJ2FybScgfHwgYXJjaCA9PT0gJ2FybTY0Jykge1xuICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMub3B0aW9ucy50YWcuaW5jbHVkZXMoJy0nKVxuICAgICAgICAgICAgICAgID8gdGhpcy5vcHRpb25zLnRhZy5zbGljZSgwLCB0aGlzLm9wdGlvbnMudGFnLmluZGV4T2YoJy0nKSlcbiAgICAgICAgICAgICAgICA6IHRoaXMub3B0aW9ucy50YWc7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbVZlclZlcnNpb24gPSBzZW12ZXIuY29lcmNlKHZlcnNpb24pO1xuICAgICAgICAgICAgICAgIGlmIChzZW1WZXJWZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT09ICdqaXJhJyB8fCB0aGlzLm5hbWUgPT09ICdiYW1ib28nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VtdmVyLmx0KHNlbVZlclZlcnNpb24sICc5LjAuMCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubmFtZSA9PT0gJ2NvbmZsdWVuY2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VtdmVyLmx0KHNlbVZlclZlcnNpb24sICc4LjAuMCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubmFtZSA9PT0gJ2JpdGJ1Y2tldCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZW12ZXIubHQoc2VtVmVyVmVyc2lvbiwgJzguMi4wJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGFzeW5jIGJ1aWxkKHZlcnNpb24pIHtcbiAgICAgICAgY29uc3QgcmVwb3NpdG9yeVVybCA9IHRoaXMuZ2V0RG9ja2VyUmVwb3NpdG9yeVVybCgpO1xuICAgICAgICBjb25zdCBjaGVja291dFBhdGggPSBqb2luKGJhc2VkaXIsIHRoaXMubmFtZSwgJ3NvdXJjZScpO1xuICAgICAgICBpZiAoIWV4aXN0c1N5bmMoY2hlY2tvdXRQYXRoKSkge1xuICAgICAgICAgICAgbWtkaXJTeW5jKGpvaW4oYmFzZWRpciwgdGhpcy5uYW1lKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICAgICAgICBhd2FpdCBzaW1wbGVHaXQoKS5jbG9uZShyZXBvc2l0b3J5VXJsLCBjaGVja291dFBhdGgsIHsgJy0tcmVjdXJzZS1zdWJtb2R1bGUnOiBudWxsIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYXdhaXQgc2ltcGxlR2l0KHsgYmFzZURpcjogY2hlY2tvdXRQYXRoIH0pLnB1bGwoeyAnLS1yZWN1cnNlLXN1Ym1vZHVsZSc6IG51bGwgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZG9ja2VyID0gc3Bhd24oJ2RvY2tlcicsIFsnYnVpbGQnLCAnLXQnLCBgZGNkeC8ke3RoaXMubmFtZX06JHt2ZXJzaW9ufWAsICctLWJ1aWxkLWFyZycsIGAke3RoaXMubmFtZS50b1VwcGVyQ2FzZSgpfV9WRVJTSU9OPSR7dmVyc2lvbn1gLCAnLiddLCB7IGN3ZDogY2hlY2tvdXRQYXRoLCBzdGRpbzogJ2luaGVyaXQnIH0pO1xuICAgICAgICAgICAgZG9ja2VyLm9uKCdleGl0JywgKGNvZGUpID0+IChjb2RlID09PSAwKSA/IHJlc29sdmUoKSA6IHJlamVjdChuZXcgRXJyb3IoYERvY2tlciBleGl0ZWQgd2l0aCBjb2RlICR7Y29kZX1gKSkpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0RG9ja2VyUmVwb3NpdG9yeVVybCgpIHtcbiAgICAgICAgY29uc3Qgc3VmZml4ID0gdGhpcy5uYW1lID09PSAnamlyYSdcbiAgICAgICAgICAgID8gJ2F0bGFzc2lhbi1qaXJhJ1xuICAgICAgICAgICAgOiB0aGlzLm5hbWUgPT09ICdiYW1ib28nXG4gICAgICAgICAgICAgICAgPyBgJHt0aGlzLm5hbWV9LXNlcnZlcmBcbiAgICAgICAgICAgICAgICA6IGBhdGxhc3NpYW4tJHt0aGlzLm5hbWV9LXNlcnZlcmA7XG4gICAgICAgIHJldHVybiBgaHR0cHM6Ly9iaXRidWNrZXQub3JnL2F0bGFzc2lhbi1kb2NrZXIvZG9ja2VyLSR7c3VmZml4fS5naXRgO1xuICAgIH1cbiAgICBhc3luYyB0YWlsQXBwbGljYXRpb25Mb2dzKCkge1xuICAgICAgICBjb25zdCBzZXJ2aWNlID0gYXdhaXQgdGhpcy5nZXRTZXJ2aWNlU3RhdGUoKTtcbiAgICAgICAgY29uc3QgaXNSdW5uaW5nID0gc2VydmljZSAmJiBzZXJ2aWNlLnN0YXRlLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgndXAnKTtcbiAgICAgICAgaWYgKGlzUnVubmluZykge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zaG93QXBwbGljYXRpb25Mb2dzKHNlcnZpY2UubmFtZSkuY2F0Y2goKCkgPT4gbnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgc2hvd0FwcGxpY2F0aW9uTG9ncyhzZXJ2aWNlKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkb2NrZXIgPSBzcGF3bignZG9ja2VyJywgWydleGVjJywgJy1pJywgc2VydmljZSwgYHRhaWxgLCBgLUZgLCBgLW5gLCBgNTAwMGAsIHRoaXMubG9nRmlsZVBhdGhdLCB7IGN3ZDogdGhpcy5vcHRpb25zLmN3ZCB8fCBjd2QoKSwgc3RkaW86ICdpbmhlcml0JyB9KTtcbiAgICAgICAgICAgIGRvY2tlci5vbignZXhpdCcsIChjb2RlKSA9PiAoY29kZSA9PT0gMCkgPyByZXNvbHZlKCkgOiByZWplY3QobmV3IEVycm9yKGBEb2NrZXIgZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCkpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGdldERlZmF1bHRPcHRpb25zKG5hbWUpIHtcbiAgICAgICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICAgICAgICBjYXNlIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbDpcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0Wm9kRGVmYXVsdHMoUG9zdGdyZVNRTE9wdGlvbnMpO1xuICAgICAgICAgICAgY2FzZSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsOlxuICAgICAgICAgICAgICAgIHJldHVybiBnZXRab2REZWZhdWx0cyhNeVNRTE9wdGlvbnMpO1xuICAgICAgICAgICAgY2FzZSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm1zc3FsOlxuICAgICAgICAgICAgICAgIHJldHVybiBnZXRab2REZWZhdWx0cyhNU1NRTE9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IHRpbWVib21iIH0gZnJvbSAnLi4vaGVscGVycy9saWNlbmNlcyc7XG5pbXBvcnQgeyB0b0Fic29sdXRlUGF0aCB9IGZyb20gJy4uL2hlbHBlcnMvdG9BYnNvbHV0ZVBhdGgnO1xuaW1wb3J0IHsgU3VwcG9ydGVkQXBwbGljYXRpb25zIH0gZnJvbSAnLi4vdHlwZXMvQXBwbGljYXRpb24nO1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5leHBvcnQgY2xhc3MgQmFtYm9vIGV4dGVuZHMgQmFzZSB7XG4gICAgbmFtZSA9IFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vO1xuICAgIGxvZ0ZpbGVQYXRoID0gJy92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYmFtYm9vL2xvZ3MvYXRsYXNzaWFuLWJhbWJvby5sb2cnO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIGdldFNlcnZpY2UoKSB7XG4gICAgICAgIGNvbnN0IGVudmlyb25tZW50ID0gdGhpcy5nZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnVpbGQ6IHtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzJyksXG4gICAgICAgICAgICAgICAgZG9ja2VyZmlsZV9pbmxpbmU6IGBcbkZST00gJHt0aGlzLmdldERvY2tlckJhc2VUYWcoKX1cbkNPUFkgLi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXIgL29wdC9hdGxhc3NpYW4vYmFtYm9vL2xpYi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXJcbkNPUFkgLi9xdWlja3JlbG9hZC01LjAuNC5qYXIgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iYW1ib28vc2hhcmVkL3BsdWdpbnMvcXVpY2tyZWxvYWQtNS4wLjQuamFyXG5SVU4gZWNobyBcIi9vcHQvcXVpY2tyZWxvYWRcIiA+IC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYmFtYm9vL3F1aWNrcmVsb2FkLnByb3BlcnRpZXM7IFxcXG4gICAgbWtkaXIgLXAgL29wdC9xdWlja3JlbG9hZDsgXFxcbiAgICBjaG93biAtUiBiYW1ib286YmFtYm9vIC9vcHQvcXVpY2tyZWxvYWQ7XG5cblJVTiBjaG93biAtUiBiYW1ib286YmFtYm9vIC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYmFtYm9vYFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBvcnRzOiBbXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5vcHRpb25zLnBvcnQgfHwgODB9OjgwODVgLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy5kZWJ1ZyA/IFsnNTAwNTo1MDA1J10gOiBbXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudCxcbiAgICAgICAgICAgIG5ldHdvcmtzOiBbJ3NoYXJlZCddXG4gICAgICAgIH07XG4gICAgfVxuICAgIGdldEpWTUFyZ3MoKSB7XG4gICAgICAgIGNvbnN0IEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MgPSBzdXBlci5nZXRKVk1BcmdzKCk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLVhkZWJ1ZycpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctYWdlbnRsaWI6amR3cD10cmFuc3BvcnQ9ZHRfc29ja2V0LHNlcnZlcj15LHN1c3BlbmQ9bixhZGRyZXNzPTUwMDUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUztcbiAgICB9XG4gICAgYXN5bmMgaXNBcHBsaWNhdGlvblJlYWR5KCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5nZXQoYCR7dGhpcy5iYXNlVXJsfS9zZXR1cC9zZXR1cEdlbmVyYWxDb25maWd1cmF0aW9uLmFjdGlvbmAsIHsgdmFsaWRhdGVTdGF0dXM6ICgpID0+IHRydWUgfSk7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2U/LnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFRoZSBhcHBsaWNhdGlvbiAke3RoaXMubmFtZX0gaXMgcmVhZHkgb24gJHt0aGlzLmJhc2VVcmx9IPCfjolgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByaXZhdGUgTWV0aG9kc1xuICAgIGdldEVudmlyb25tZW50VmFyaWFibGVzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLmNvbnRleHRQYXRoID8geyAnQVRMX1RPTUNBVF9DT05URVhUUEFUSCc6IHRoaXMub3B0aW9ucy5jb250ZXh0UGF0aCB9IDogJycsXG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMueG1zID8geyAnSlZNX01JTklNVU1fTUVNT1JZJzogdGhpcy5vcHRpb25zLnhtcyB9IDogJycsXG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMueG14ID8geyAnSlZNX01BWElNVU1fTUVNT1JZJzogdGhpcy5vcHRpb25zLnhteCB9IDogJycsXG4gICAgICAgICAgICAnSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUyc6IHRoaXMuZ2V0SlZNQXJncygpLmpvaW4oJyAnKSxcbiAgICAgICAgICAgICdBVExfQkFNQk9PX0VOQUJMRV9VTkFUVEVOREVEX1NFVFVQJzogJ3RydWUnLFxuICAgICAgICAgICAgJ0FUTF9MSUNFTlNFJzogdGltZWJvbWIuYmFtYm9vLFxuICAgICAgICAgICAgJ0FUTF9KREJDX1VSTCc6IHRoaXMuZGF0YWJhc2UudXJsLFxuICAgICAgICAgICAgJ0FUTF9KREJDX1VTRVInOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMudXNlcm5hbWUsXG4gICAgICAgICAgICAnQVRMX0pEQkNfUEFTU1dPUkQnOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMucGFzc3dvcmQsXG4gICAgICAgICAgICAnQVRMX0RCX1RZUEUnOiBgJHt0aGlzLmRhdGFiYXNlLm9wdGlvbnMubmFtZX1gLFxuICAgICAgICB9O1xuICAgIH1cbiAgICA7XG59XG4iLCJpbXBvcnQgeyB0aW1lYm9tYiB9IGZyb20gJy4uL2hlbHBlcnMvbGljZW5jZXMnO1xuaW1wb3J0IHsgdG9BYnNvbHV0ZVBhdGggfSBmcm9tICcuLi9oZWxwZXJzL3RvQWJzb2x1dGVQYXRoJztcbmltcG9ydCB7IFN1cHBvcnRlZEFwcGxpY2F0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0FwcGxpY2F0aW9uJztcbmltcG9ydCB7IEJhc2UgfSBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0IGNsYXNzIEJpdGJ1Y2tldCBleHRlbmRzIEJhc2Uge1xuICAgIG5hbWUgPSBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldDtcbiAgICBsb2dGaWxlUGF0aCA9ICcvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JpdGJ1Y2tldC9sb2cvYXRsYXNzaWFuLWJpdGJ1Y2tldC5sb2cnO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIGdldFNlcnZpY2UoKSB7XG4gICAgICAgIGNvbnN0IGVudmlyb25tZW50ID0gdGhpcy5nZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnVpbGQ6IHtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzJyksXG4gICAgICAgICAgICAgICAgZG9ja2VyZmlsZV9pbmxpbmU6IGBcbkZST00gJHt0aGlzLmdldERvY2tlckJhc2VUYWcoKX1cbkNPUFkgLi9xdWlja3JlbG9hZC01LjAuNC5qYXIgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iaXRidWNrZXQvcGx1Z2lucy9pbnN0YWxsZWQtcGx1Z2lucy9xdWlja3JlbG9hZC01LjAuNC5qYXJcbkNPUFkgLi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXIgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iaXRidWNrZXQvbGliL215c3FsLWNvbm5lY3Rvci1qLTguMy4wLmphclxuUlVOIGVjaG8gXCIvb3B0L3F1aWNrcmVsb2FkXCIgPiAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JpdGJ1Y2tldC9xdWlja3JlbG9hZC5wcm9wZXJ0aWVzOyBcXFxuICAgIG1rZGlyIC1wIC9vcHQvcXVpY2tyZWxvYWQ7IFxcXG4gICAgY2hvd24gLVIgYml0YnVja2V0OmJpdGJ1Y2tldCAvb3B0L3F1aWNrcmVsb2FkO1xuXG5SVU4gbWtkaXIgLXAgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iaXRidWNrZXQvc2hhcmVkOyBcXFxuICAgIHRvdWNoIC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYml0YnVja2V0L3NoYXJlZC9iaXRidWNrZXQucHJvcGVydGllczsgXFxcbiAgICBlY2hvIFwic2V0dXAubGljZW5zZT0ke3RpbWVib21iLmJpdGJ1Y2tldH1cIiA+PiAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JpdGJ1Y2tldC9zaGFyZWQvYml0YnVja2V0LnByb3BlcnRpZXM7XG5cblJVTiBjaG93biAtUiBiaXRidWNrZXQ6Yml0YnVja2V0IC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYml0YnVja2V0YFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBvcnRzOiBbXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5vcHRpb25zLnBvcnQgfHwgODB9Ojc5OTBgLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy5kZWJ1ZyA/IFsnNTAwNTo1MDA1J10gOiBbXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudCxcbiAgICAgICAgICAgIG5ldHdvcmtzOiBbJ3NoYXJlZCddXG4gICAgICAgIH07XG4gICAgfVxuICAgIGdldEpWTUFyZ3MoKSB7XG4gICAgICAgIGNvbnN0IEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MgPSBzdXBlci5nZXRKVk1BcmdzKCk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLVhkZWJ1ZycpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctYWdlbnRsaWI6amR3cD10cmFuc3BvcnQ9ZHRfc29ja2V0LHNlcnZlcj15LHN1c3BlbmQ9bixhZGRyZXNzPTUwMDUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByaXZhdGUgTWV0aG9kc1xuICAgIGdldEVudmlyb25tZW50VmFyaWFibGVzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnhtcyA/IHsgJ0pWTV9NSU5JTVVNX01FTU9SWSc6IHRoaXMub3B0aW9ucy54bXMgfSA6ICcnLFxuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnhteCA/IHsgJ0pWTV9NQVhJTVVNX01FTU9SWSc6IHRoaXMub3B0aW9ucy54bXggfSA6ICcnLFxuICAgICAgICAgICAgJ0pWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MnOiB0aGlzLmdldEpWTUFyZ3MoKS5qb2luKCcgJyksXG4gICAgICAgICAgICAnSkRCQ19VUkwnOiB0aGlzLmRhdGFiYXNlLnVybCxcbiAgICAgICAgICAgICdKREJDX1VTRVInOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMudXNlcm5hbWUsXG4gICAgICAgICAgICAnSkRCQ19QQVNTV09SRCc6IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy5wYXNzd29yZCxcbiAgICAgICAgICAgICdKREJDX0RSSVZFUic6IGAke3RoaXMuZGF0YWJhc2Uub3B0aW9ucy5kcml2ZXJ9YCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgO1xufVxuIiwiaW1wb3J0IHsgdGltZWJvbWIgfSBmcm9tICcuLi9oZWxwZXJzL2xpY2VuY2VzJztcbmltcG9ydCB7IHRvQWJzb2x1dGVQYXRoIH0gZnJvbSAnLi4vaGVscGVycy90b0Fic29sdXRlUGF0aCc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmV4cG9ydCBjbGFzcyBDb25mbHVlbmNlIGV4dGVuZHMgQmFzZSB7XG4gICAgbmFtZSA9IFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuY29uZmx1ZW5jZTtcbiAgICBsb2dGaWxlUGF0aCA9ICcvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2NvbmZsdWVuY2UvbG9ncy9hdGxhc3NpYW4tY29uZmx1ZW5jZS5sb2cnO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIGdldFNlcnZpY2UoKSB7XG4gICAgICAgIGNvbnN0IGVudmlyb25tZW50ID0gdGhpcy5nZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnVpbGQ6IHtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzJyksXG4gICAgICAgICAgICAgICAgZG9ja2VyZmlsZV9pbmxpbmU6IGBcbkZST00gJHt0aGlzLmdldERvY2tlckJhc2VUYWcoKX1cbkNPUFkgLi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXIgL29wdC9hdGxhc3NpYW4vY29uZmx1ZW5jZS9jb25mbHVlbmNlL1dFQi1JTkYvbGliL215c3FsLWNvbm5lY3Rvci1qLTguMy4wLmphclxuQ09QWSAuL3F1aWNrcmVsb2FkLTUuMC40LmphciAvb3B0L2F0bGFzc2lhbi9jb25mbHVlbmNlL2NvbmZsdWVuY2UvV0VCLUlORi9hdGxhc3NpYW4tYnVuZGxlZC1wbHVnaW5zL3F1aWNrcmVsb2FkLTUuMC40LmphclxuUlVOIGVjaG8gXCIvb3B0L3F1aWNrcmVsb2FkXCIgPiAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2NvbmZsdWVuY2UvcXVpY2tyZWxvYWQucHJvcGVydGllczsgXFxcbiAgICBta2RpciAtcCAvb3B0L3F1aWNrcmVsb2FkOyBcXFxuICAgIGNob3duIC1SIGNvbmZsdWVuY2U6Y29uZmx1ZW5jZSAvb3B0L3F1aWNrcmVsb2FkO1xuXG5SVU4gY2hvd24gLVIgY29uZmx1ZW5jZTpjb25mbHVlbmNlIC9vcHQvYXRsYXNzaWFuL2NvbmZsdWVuY2VgXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcG9ydHM6IFtcbiAgICAgICAgICAgICAgICBgJHt0aGlzLm9wdGlvbnMucG9ydCB8fCA4MH06ODA5MGAsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLmRlYnVnID8gWyc1MDA1OjUwMDUnXSA6IFtdLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGVudmlyb25tZW50LFxuICAgICAgICAgICAgbmV0d29ya3M6IFsnc2hhcmVkJ11cbiAgICAgICAgfTtcbiAgICB9XG4gICAgZ2V0SlZNQXJncygpIHtcbiAgICAgICAgY29uc3QgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUyA9IHN1cGVyLmdldEpWTUFyZ3MoKTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5kZWJ1Zykge1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctWGRlYnVnJyk7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1YcnVuamR3cDp0cmFuc3BvcnQ9ZHRfc29ja2V0LGFkZHJlc3M9Kjo1MDA1LHNlcnZlcj15LHN1c3BlbmQ9bicpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctRGNvbS5zdW4ubWFuYWdlbWVudC5qbXhyZW1vdGUucG9ydD05OTk5Jyk7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1EY29tLnN1bi5tYW5hZ2VtZW50LmpteHJlbW90ZS5ybWkucG9ydD05OTk4Jyk7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1EY29tLnN1bi5tYW5hZ2VtZW50LmpteHJlbW90ZS5hdXRoZW50aWNhdGU9ZmFsc2UnKTtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLURjb20uc3VuLm1hbmFnZW1lbnQuam14cmVtb3RlLnNzbD1mYWxzZScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJpdmF0ZSBNZXRob2RzXG4gICAgZ2V0RW52aXJvbm1lbnRWYXJpYWJsZXMoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMuY29udGV4dFBhdGggPyB7ICdBVExfVE9NQ0FUX0NPTlRFWFRQQVRIJzogdGhpcy5vcHRpb25zLmNvbnRleHRQYXRoIH0gOiAnJyxcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy54bXMgPyB7ICdKVk1fTUlOSU1VTV9NRU1PUlknOiB0aGlzLm9wdGlvbnMueG1zIH0gOiAnJyxcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy54bXggPyB7ICdKVk1fTUFYSU1VTV9NRU1PUlknOiB0aGlzLm9wdGlvbnMueG14IH0gOiAnJyxcbiAgICAgICAgICAgICdKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTJzogdGhpcy5nZXRKVk1BcmdzKCkuam9pbignICcpLFxuICAgICAgICAgICAgJ0FUTF9MSUNFTlNFX0tFWSc6IHRpbWVib21iLmNvbmZsdWVuY2UsXG4gICAgICAgICAgICAnQVRMX0pEQkNfVVJMJzogdGhpcy5kYXRhYmFzZS51cmwsXG4gICAgICAgICAgICAnQVRMX0pEQkNfVVNFUic6IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy51c2VybmFtZSxcbiAgICAgICAgICAgICdBVExfSkRCQ19QQVNTV09SRCc6IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy5wYXNzd29yZCxcbiAgICAgICAgICAgICdBVExfREJfVFlQRSc6IGAke3RoaXMuZGF0YWJhc2Uub3B0aW9ucy5uYW1lfWAsXG4gICAgICAgIH07XG4gICAgfVxuICAgIDtcbn1cbiIsImltcG9ydCB7IHRpbWVib21iIH0gZnJvbSAnLi4vaGVscGVycy9saWNlbmNlcyc7XG5pbXBvcnQgeyB0b0Fic29sdXRlUGF0aCB9IGZyb20gJy4uL2hlbHBlcnMvdG9BYnNvbHV0ZVBhdGgnO1xuaW1wb3J0IHsgU3VwcG9ydGVkQXBwbGljYXRpb25zIH0gZnJvbSAnLi4vdHlwZXMvQXBwbGljYXRpb24nO1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5leHBvcnQgY2xhc3MgSmlyYSBleHRlbmRzIEJhc2Uge1xuICAgIG5hbWUgPSBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmppcmE7XG4gICAgbG9nRmlsZVBhdGggPSAnL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9qaXJhL2xvZy9hdGxhc3NpYW4tamlyYS5sb2cnO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIGdldFNlcnZpY2UoKSB7XG4gICAgICAgIGNvbnN0IGVudmlyb25tZW50ID0gdGhpcy5nZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnVpbGQ6IHtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzJyksXG4gICAgICAgICAgICAgICAgZG9ja2VyZmlsZV9pbmxpbmU6IGBcbkZST00gJHt0aGlzLmdldERvY2tlckJhc2VUYWcoKX1cbkNPUFkgLi9qaXJhLWRhdGEtZ2VuZXJhdG9yLTUuMC4wLmphciAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2ppcmEvcGx1Z2lucy9pbnN0YWxsZWQtcGx1Z2lucy9qaXJhLWRhdGEtZ2VuZXJhdG9yLTUuMC4wLmphclxuQ09QWSAuL215c3FsLWNvbm5lY3Rvci1qLTguMy4wLmphciAvb3B0L2F0bGFzc2lhbi9qaXJhL2xpYi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXJcbkNPUFkgLi9xdWlja3JlbG9hZC01LjAuNC5qYXIgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9qaXJhL3BsdWdpbnMvaW5zdGFsbGVkLXBsdWdpbnMvcXVpY2tyZWxvYWQtNS4wLjQuamFyXG5SVU4gZWNobyBcIi9vcHQvcXVpY2tyZWxvYWRcIiA+IC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvamlyYS9xdWlja3JlbG9hZC5wcm9wZXJ0aWVzOyBcXFxuICAgIG1rZGlyIC1wIC9vcHQvcXVpY2tyZWxvYWQ7IFxcXG4gICAgY2hvd24gLVIgamlyYTpqaXJhIC9vcHQvcXVpY2tyZWxvYWQ7XG5cblJVTiBjaG93biAtUiBqaXJhOmppcmEgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9qaXJhYFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBvcnRzOiBbXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5vcHRpb25zLnBvcnR9OjgwODBgLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy5kZWJ1ZyA/IFsnNTAwNTo1MDA1J10gOiBbXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudCxcbiAgICAgICAgICAgIG5ldHdvcmtzOiBbJ3NoYXJlZCddXG4gICAgICAgIH07XG4gICAgfVxuICAgIGdldEpWTUFyZ3MoKSB7XG4gICAgICAgIGNvbnN0IEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MgPSBzdXBlci5nZXRKVk1BcmdzKCk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLVhkZWJ1ZycpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctYWdlbnRsaWI6amR3cD10cmFuc3BvcnQ9ZHRfc29ja2V0LHNlcnZlcj15LHN1c3BlbmQ9bixhZGRyZXNzPSo6NTAwNScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJpdmF0ZSBNZXRob2RzXG4gICAgZ2V0RW52aXJvbm1lbnRWYXJpYWJsZXMoKSB7XG4gICAgICAgIC8vIEZvciBzb21lIHJlYXNvbiwgSmlyYSB1c2VzIGEgZGlmZmVyZW50IHR5cGUgZm9yIHBvc3RncmVzXG4gICAgICAgIGNvbnN0IGRiVHlwZSA9IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy5uYW1lID09PSAncG9zdGdyZXNxbCcgPyAncG9zdGdyZXM3MicgOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMubmFtZTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy5jb250ZXh0UGF0aCA/IHsgJ0FUTF9UT01DQVRfQ09OVEVYVFBBVEgnOiB0aGlzLm9wdGlvbnMuY29udGV4dFBhdGggfSA6ICcnLFxuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnhtcyA/IHsgJ0pWTV9NSU5JTVVNX01FTU9SWSc6IHRoaXMub3B0aW9ucy54bXMgfSA6ICcnLFxuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnhteCA/IHsgJ0pWTV9NQVhJTVVNX01FTU9SWSc6IHRoaXMub3B0aW9ucy54bXggfSA6ICcnLFxuICAgICAgICAgICAgJ0pWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MnOiB0aGlzLmdldEpWTUFyZ3MoKS5qb2luKCcgJyksXG4gICAgICAgICAgICAnQVRMX0xJQ0VOU0VfS0VZJzogdGltZWJvbWIuY29uZmx1ZW5jZSxcbiAgICAgICAgICAgICdBVExfSkRCQ19VUkwnOiB0aGlzLmRhdGFiYXNlLnVybCxcbiAgICAgICAgICAgICdBVExfSkRCQ19VU0VSJzogdGhpcy5kYXRhYmFzZS5vcHRpb25zLnVzZXJuYW1lLFxuICAgICAgICAgICAgJ0FUTF9KREJDX1BBU1NXT1JEJzogdGhpcy5kYXRhYmFzZS5vcHRpb25zLnBhc3N3b3JkLFxuICAgICAgICAgICAgJ0FUTF9EQl9EUklWRVInOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMuZHJpdmVyLFxuICAgICAgICAgICAgJ0FUTF9EQl9UWVBFJzogZGJUeXBlLFxuICAgICAgICAgICAgJ0pJUkFfU0VUVVBfTElDRU5TRSc6IHRpbWVib21iLmppcmFcbiAgICAgICAgfTtcbiAgICB9XG4gICAgO1xufVxuIiwiaW1wb3J0IHsgQmFtYm9vIH0gZnJvbSAnLi4vYXBwbGljYXRpb25zL2JhbWJvbyc7XG5pbXBvcnQgeyBCaXRidWNrZXQgfSBmcm9tICcuLi9hcHBsaWNhdGlvbnMvYml0YnVja2V0JztcbmltcG9ydCB7IENvbmZsdWVuY2UgfSBmcm9tICcuLi9hcHBsaWNhdGlvbnMvY29uZmx1ZW5jZSc7XG5pbXBvcnQgeyBKaXJhIH0gZnJvbSAnLi4vYXBwbGljYXRpb25zL2ppcmEnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25PcHRpb25zLCBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5leHBvcnQgY29uc3QgZ2V0QXBwbGljYXRpb24gPSAob3B0aW9ucykgPT4ge1xuICAgIHN3aXRjaCAob3B0aW9ucy5uYW1lKSB7XG4gICAgICAgIGNhc2UgU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5qaXJhOiByZXR1cm4gbmV3IEppcmEoQXBwbGljYXRpb25PcHRpb25zLnBhcnNlKG9wdGlvbnMpKTtcbiAgICAgICAgY2FzZSBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2U6IHJldHVybiBuZXcgQ29uZmx1ZW5jZShBcHBsaWNhdGlvbk9wdGlvbnMucGFyc2Uob3B0aW9ucykpO1xuICAgICAgICBjYXNlIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vOiByZXR1cm4gbmV3IEJhbWJvbyhBcHBsaWNhdGlvbk9wdGlvbnMucGFyc2Uob3B0aW9ucykpO1xuICAgICAgICBjYXNlIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYml0YnVja2V0OiByZXR1cm4gbmV3IEJpdGJ1Y2tldChBcHBsaWNhdGlvbk9wdGlvbnMucGFyc2Uob3B0aW9ucykpO1xuICAgIH1cbn07XG4iLCJpbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyB0b0Fic29sdXRlUGF0aCB9IGZyb20gJy4vdG9BYnNvbHV0ZVBhdGgnO1xuZXhwb3J0IGNvbnN0IGdldFZlcnNpb25zID0gKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnQgPSByZWFkRmlsZVN5bmModG9BYnNvbHV0ZVBhdGgoJy4uLy4uL2Fzc2V0cy92ZXJzaW9ucy5qc29uJyksICd1dGYtOCcpO1xuICAgIGNvbnN0IHZlcnNpb25zID0gSlNPTi5wYXJzZShjb250ZW50KTtcbiAgICByZXR1cm4gdmVyc2lvbnM7XG59O1xuIiwiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0IHsgQ29tbWFuZCBhcyBDb21tYW5kZXIsIEludmFsaWRPcHRpb25Bcmd1bWVudEVycm9yLCBPcHRpb24gfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgZ3JhY2VmdWxFeGl0IH0gZnJvbSAnZXhpdC1ob29rJztcbmltcG9ydCB7IEFjdGlvbkhhbmRsZXIgfSBmcm9tICcuLi9oZWxwZXJzL0FjdGlvbkhhbmRsZXInO1xuaW1wb3J0IHsgQU1QUyB9IGZyb20gJy4uL2hlbHBlcnMvYW1wcyc7XG5pbXBvcnQgeyBGaWxlV2F0Y2hlciB9IGZyb20gJy4uL2hlbHBlcnMvRmlsZVdhdGNoZXInO1xuaW1wb3J0IHsgZ2V0QXBwbGljYXRpb24gfSBmcm9tICcuLi9oZWxwZXJzL2dldEFwcGxpY2F0aW9uJztcbmltcG9ydCB7IGdldFZlcnNpb25zIH0gZnJvbSAnLi4vaGVscGVycy9nZXRWZXJzaW9ucyc7XG5pbXBvcnQgeyBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMgfSBmcm9tICcuLi90eXBlcy9EYXRhYmFzZSc7XG5jb25zdCBwcm9ncmFtID0gbmV3IENvbW1hbmRlcigpO1xuY29uc3QgdmVyc2lvbnMgPSBnZXRWZXJzaW9ucygpO1xuY29uc3QgQ29tbWFuZCA9ICgpID0+IHtcbiAgICBsZXQgaW5zdGFuY2UgPSBudWxsO1xuICAgIGxldCBxdWlja1JlbG9hZCA9IG51bGw7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgYWN0aW9uOiAob3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbXBzID0gbmV3IEFNUFMoe1xuICAgICAgICAgICAgICAgICAgICBjd2Q6IG9wdGlvbnMuY3dkLFxuICAgICAgICAgICAgICAgICAgICBwcm9maWxlczogb3B0aW9ucy5hY3RpdmF0ZVByb2ZpbGVzPy5zcGxpdCgnLCcpIHx8IFtdXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKCFhbXBzLmlzQXRsYXNzaWFuUGx1Z2luKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZmluZCBhbiBBdGxhc3NpYW4gUGx1Z2luIHByb2plY3QgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IPCfpJQnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IGFtcHMuZ2V0QXBwbGljYXRpb24oKTtcbiAgICAgICAgICAgICAgICBpZiAoIW5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgQXRsYXNzaWFuIFBsdWdpbiBwcm9qZWN0IGRvZXMgbm90IGNvbnRhaW4gYW4gQU1QUyBjb25maWd1cmF0aW9uLCB1bmFibGUgdG8gZGV0ZWN0IHByb2R1Y3Qg8J+YsCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbnMudGFnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlcnNpb24gPSBhbXBzLmdldEFwcGxpY2F0aW9uVmVyc2lvbigpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGRldGVybWluZSB2ZXJzaW9uIGZyb20gQU1QUyBhbmQgbm8gcHJvZHVjdCB2ZXJzaW9uIHByb3ZpZGVkICgtLXRhZyknKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudGFnID0gdmVyc2lvbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXZlcnNpb25zW25hbWVdLmluY2x1ZGVzKG9wdGlvbnMudGFnKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFByb2R1Y3QgdmVyc2lvbiAnJHtvcHRpb25zLnRhZ30nIGlzIGludmFsaWQuIEFsbG93ZWQgY2hvaWNlcyBhcmUgJHt2ZXJzaW9uc1tuYW1lXS5qb2luKCcsICcpfS5gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuZGF0YWJhc2VUYWcgJiYgIXZlcnNpb25zW29wdGlvbnMuZGF0YWJhc2VdLmluY2x1ZGVzKG9wdGlvbnMuZGF0YWJhc2VUYWcpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRGF0YWJhc2UgdGFnICcke29wdGlvbnMuZGF0YWJhc2VUYWd9JyBpcyBpbnZhbGlkLiBBbGxvd2VkIGNob2ljZXMgYXJlICR7dmVyc2lvbnNbb3B0aW9ucy5kYXRhYmFzZV0uam9pbignLCAnKX0uYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLm9iciAmJiAhb3B0aW9ucy51c2VybmFtZSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wdGlvbkFyZ3VtZW50RXJyb3IoJ01pc3NpbmcgYXJndW1lbnQgXCItLXVzZXJuYW1lXCIsIHJlcXVpcmVkIGZvciBpbnN0YWxsaW5nIE9CUiBhcnRpZmFjdHMnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAob3B0aW9ucy5vYnIgJiYgIW9wdGlvbnMucGFzc3dvcmQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcHRpb25Bcmd1bWVudEVycm9yKCdNaXNzaW5nIGFyZ3VtZW50IFwiLS1wYXNzd29yZFwiLCByZXF1aXJlZCBmb3IgaW5zdGFsbGluZyBPQlIgYXJ0aWZhY3RzJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG1hdmVuT3B0cyA9IHByb2dyYW0uYXJncy5zbGljZSgpO1xuICAgICAgICAgICAgICAgIG1hdmVuT3B0cy5wdXNoKC4uLm9wdGlvbnMuYWN0aXZhdGVQcm9maWxlcyA/IFsnLVAnLCBvcHRpb25zLmFjdGl2YXRlUHJvZmlsZXNdIDogW10pO1xuICAgICAgICAgICAgICAgIHF1aWNrUmVsb2FkID0gRmlsZVdhdGNoZXIobmFtZSwgb3B0aW9ucywgbWF2ZW5PcHRzKTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZSA9IGdldEFwcGxpY2F0aW9uKHsgLi4ub3B0aW9ucywgbmFtZSB9KTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgU3RhcnRpbmcgJHtpbnN0YW5jZS5uYW1lfS4uLiDwn5KDYCk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2Uuc3RhcnQoKS50aGVuKHJlc29sdmUpLmNhdGNoKHJlamVjdCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3JIYW5kbGVyOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAocXVpY2tSZWxvYWQpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgU3RvcHBpbmcgZmlsZXN5c3RlbSB3YXRjaGVyLi4uIOKPs2ApO1xuICAgICAgICAgICAgICAgIGF3YWl0IHF1aWNrUmVsb2FkLmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaW5zdGFuY2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgU3RvcHBpbmcgJHtpbnN0YW5jZS5uYW1lfS4uLiDwn5KUYCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgaW5zdGFuY2Uuc3RvcCgpLmNhdGNoKCgpID0+IG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc29sZS5sb2coYFN1Y2Nlc3NmdWxseSBzdG9wcGVkIGFsbCBydW5uaW5nIHByb2Nlc3NlcyDwn5KqYCk7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbnByb2dyYW1cbiAgICAubmFtZSgnZGNkeCBkZWJ1ZycpXG4gICAgLmRlc2NyaXB0aW9uKGBTdGFydCB0aGUgaG9zdCBhcHBsaWNhdGlvbiBpbiBkZXYgbW9kZSBiYXNlZCBvbiB0aGUgQXRsYXNzaWFuIE1hdmVuIFBsdWdpbiBTdWl0ZSAoQU1QUykgY29uZmlndXJhdGlvbi5cbkFNUFMgY29uZmlndXJhdGlvbiBjYW4gYmUgb3ZlcnJpZGRlbiBieSB1c2luZyBhbnkgb2YgdGhlIGNvbW1hbmQtbGluZSBvcHRpb25zIGJlbG93LlxuXG5UaGlzIGNvbW1hbmQgd2lsbCBhdXRvbWF0aWNhbGx5IHdhdGNoIGZvciBmaWxlIGNoYW5nZXMgYW5kIGluc3RhbGwgdGhlIGFwcCBpbiB0aGUgcnVubmluZyBhcHBsaWNhdGlvbi5cblxuWW91IGNhbiBhZGQgTWF2ZW4gYnVpbGQgYXJndW1lbnRzIGFmdGVyIHRoZSBjb21tYW5kIG9wdGlvbnNgKVxuICAgIC51c2FnZSgnW29wdGlvbnNdIFsuLi5tYXZlbl9hcmd1bWVudHNdJylcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy10LCAtLXRhZyA8bmFtZT4nLCAnVGhlIERvY2tlciB0YWcgb2YgdGhlIGhvc3QgYXBwbGljYXRpb24nKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1kLCAtLWRhdGFiYXNlIDxuYW1lPicsICdUaGUgZGF0YWJhc2UgZW5naW5lIG9uIHdoaWNoIHRoZSBob3N0IGFwcGxpY2F0aW9uIHdpbGwgcnVuJykuY2hvaWNlcyhPYmplY3QudmFsdWVzKFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMpKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbCkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWRhdGFiYXNlLXRhZyA8bmFtZT4nLCAnVGhlIERvY2tlciB0YWcgb2YgdGhlIGRhdGFiYXNlIGVuZ2luZScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLXAsIC0tcG9ydCA8cG9ydD4nLCAnVGhlIEhUVFAgcG9ydCBvbiB3aGljaCB0aGUgaG9zdCBhcHBsaWNhdGlvbiB3aWxsIGJlIGFjY2Vzc2libGUnKS5kZWZhdWx0KCc4MCcpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLWMsIC0tY29udGV4dFBhdGggPGNvbnRleHRQYXRoPicsICdUaGUgY29udGV4dCBwYXRoIG9uIHdoaWNoIHRoZSBob3N0IGFwcGxpY2F0aW9uIHdpbGwgYmUgYWNjZXNzaWJsZScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS14bXMgPHZhbHVlPicsICdKVk0gbWluaW11bSBoZWFwIHNpemUnKS5kZWZhdWx0KCcxMDI0bScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS14bXggPHZhbHVlPicsICdKVk0gbWF4aW11bSBoZWFwIHNpemUnKS5kZWZhdWx0KCcxMDI0bScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1leHQgPHBhdHRlcm5zLi4uPicsICdHbG9iIHBhdHRlcm5zIHRvIHVzZSB3aGlsZSB3YXRjaGluZyBmb3IgZmlsZSBjaGFuZ2VzIChkZWZhdWx0cyB0byAqKi8qKScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLW8sIC0tb3V0cHV0RGlyZWN0b3J5IDxkaXJlY3Rvcnk+JywgJ091dHB1dCBkaXJlY3Rvcnkgd2hlcmUgdG8gbG9vayBmb3IgZ2VuZXJhdGVkIEpBUiBmaWxlcyAoZGVmYXVsdHMgdG8gYHRhcmdldGApJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLW9icicsICdVcGxvYWQgZ2VuZXJhdGVkIE9CUiBmaWxlIGluc3RlYWQgb2YgSkFSIGZpbGUgd2hlbiBpbnN0YWxsaW5nIHRoZSBhcHAnKS5kZWZhdWx0KGZhbHNlKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tdXNlcm5hbWUgPHVzZXJuYW1lPicsICdUaGUgdXNlcm5hbWUgb2YgdGhlIGFkbWluaXN0cmF0b3IgKHJlcXVpcmVkIHdpdGggLS1vYnIpJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLXBhc3N3b3JkIDxwYXNzd29yZD4nLCAnVGhlIHBhc3N3b3JkIG9mIHRoZSBhZG1pbmlzdHJhdG9yIChyZXF1aXJlZCB3aXRoIC0tb2JyKScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLVAsIC0tYWN0aXZhdGUtcHJvZmlsZXMgPGFyZz4nLCAnQ29tbWEtZGVsaW1pdGVkIGxpc3Qgb2YgcHJvZmlsZXMgdG8gYWN0aXZhdGUnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tY3dkIDxkaXJlY3Rvcnk+JywgJ1NwZWNpZnkgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IHdoZXJlIHRvIGZpbmQgdGhlIEFNUFMgY29uZmlndXJhdGlvbicpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1leGVjIDxjb21tYW5kPicsICdCdWlsZCBjb21tYW5kIHRvIHJ1biBpbnN0ZWFkIG9mIE1hdmVuJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWNsZWFuJywgJ1JlbW92ZSBkYXRhIGZpbGVzIGJlZm9yZSBzdGFydGluZyB0aGUgZGF0YWJhc2UnKS5kZWZhdWx0KGZhbHNlKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tcHJ1bmUnLCAnUmVtb3ZlIGRhdGEgZmlsZXMgd2hlbiBzdG9wcGluZyB0aGUgZGF0YWJhc2UnKS5kZWZhdWx0KGZhbHNlKSlcbiAgICAuYWN0aW9uKG9wdGlvbnMgPT4gQWN0aW9uSGFuZGxlcihwcm9ncmFtLCBDb21tYW5kKCksIHsgLi4ub3B0aW9ucywgZGVidWc6IHRydWUsIHdhdGNoOiB0cnVlLCBpbnN0YWxsOiB0cnVlIH0pKVxuICAgIC5zaG93SGVscEFmdGVyRXJyb3IodHJ1ZSk7XG5wcm9ncmFtLnBhcnNlQXN5bmMocHJvY2Vzcy5hcmd2KS5jYXRjaCgoKSA9PiBncmFjZWZ1bEV4aXQoMSkpO1xucHJvY2Vzcy5vbignU0lHSU5UJywgKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGBSZWNlaXZlZCB0ZXJtIHNpZ25hbCwgdHJ5aW5nIHRvIHN0b3AgZ3JhY2VmdWxseSDwn5KqYCk7XG4gICAgZ3JhY2VmdWxFeGl0KCk7XG59KTtcbiJdLCJuYW1lcyI6WyJ2ZXJzaW9ucyIsIkRvY2tlci5nZXRSdW5uaW5nQ29udGFpbmVySWRzIiwicmVzb2x2ZVBhdGgiLCJEb2NrZXIuY29weSIsIkJhc2UiLCJDb21tYW5kZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFTyxNQUFNLGFBQWEsR0FBRyxPQUFPLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsRUFBRSxPQUFPLEtBQUs7QUFDbkYsSUFBSSxNQUFNLEdBQUcsR0FBRyxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzFDLElBQUksTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEtBQUs7QUFDckMsUUFBUSxJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7QUFDOUIsUUFBUSxhQUFhLENBQUMsT0FBTyxJQUFJLEtBQUs7QUFDdEMsWUFBWSxJQUFJO0FBQ2hCLGdCQUFnQixJQUFJLElBQUksS0FBSyxDQUFDLEVBQUU7QUFDaEMsb0JBQW9CLE1BQU0sWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO0FBQzlELGlCQUFpQjtBQUNqQixnQkFBZ0IsSUFBSSxZQUFZLEVBQUU7QUFDbEMsb0JBQW9CLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7QUFDekQsaUJBQWlCO0FBQ2pCLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0Esb0JBQW9CLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqQyxpQkFBaUI7QUFDakIsYUFBYTtBQUNiLFlBQVksT0FBTyxHQUFHLEVBQUU7QUFDeEIsZ0JBQWdCLE1BQU0sT0FBTyxHQUFHLEdBQUcsWUFBWSxLQUFLLEdBQUcsR0FBRyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7QUFDekUsZ0JBQWdCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNoQyxhQUFhO0FBQ2IsU0FBUyxFQUFFO0FBQ1gsWUFBWSxJQUFJLEVBQUUsRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJO0FBQy9CLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSTtBQUNqQyxZQUFZLElBQUksR0FBRyxZQUFZLENBQUMsQ0FBQyxRQUFRLEVBQUU7QUFDM0MsZ0JBQWdCLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSTtBQUM1QyxvQkFBb0IsWUFBWSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDekcsaUJBQWlCLENBQUMsQ0FBQztBQUNuQixhQUFhO0FBQ2IsaUJBQWlCLElBQUksR0FBRyxZQUFZLEtBQUssSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7QUFDdEUsZ0JBQWdCLFlBQVksR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDOUMsYUFBYTtBQUNiLFlBQVksWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSTtBQUN4QixRQUFRLElBQUksT0FBTyxLQUFLLElBQUksRUFBRTtBQUM5QixZQUFZLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbkM7QUFDQTtBQUNBLFNBQVM7QUFDVCxhQUFhO0FBQ2IsWUFBWSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCLFNBQVM7QUFDVCxLQUFLLENBQUMsQ0FBQztBQUNQLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
10308
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWcuanMiLCJzb3VyY2VzIjpbIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvQWN0aW9uSGFuZGxlci5qcyIsIi4uLy4uL2Rpc3Qvc3JjL3R5cGVzL0RhdGFiYXNlLmpzIiwiLi4vLi4vZGlzdC9zcmMvdHlwZXMvQXBwbGljYXRpb24uanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2FtcHMuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2lzUmVjdXJzaXZlQnVpbGQuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL3Nob3dSZWN1cnNpdmVCdWlsZFdhcm5pbmcuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL0N1c3RvbUJ1aWxkZXIuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2RvY2tlci5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvaXNPZlR5cGUuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL3VwbS5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvSW5zdGFsbGVyLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9GaWxlV2F0Y2hlci5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvbGljZW5jZXMuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL3RvQWJzb2x1dGVQYXRoLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9uZXR3b3JrLmpzIiwiLi4vLi4vZGlzdC9zcmMvZGF0YWJhc2VzL2Jhc2UuanMiLCIuLi8uLi9kaXN0L3NyYy9kYXRhYmFzZXMvbXNzcWwuanMiLCIuLi8uLi9kaXN0L3NyYy9kYXRhYmFzZXMvbXlzcWwuanMiLCIuLi8uLi9kaXN0L3NyYy9kYXRhYmFzZXMvcG9zdGdyZXMuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2dldERhdGFiYXNlRW5naW5lLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9nZXRab2REZWZhdWx0cy5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2FwcGxpY2F0aW9ucy9iYXNlLmpzIiwiLi4vLi4vZGlzdC9zcmMvYXBwbGljYXRpb25zL2JhbWJvby5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2FwcGxpY2F0aW9ucy9iaXRidWNrZXQuanMiLCIuLi8uLi9kaXN0L3NyYy9hcHBsaWNhdGlvbnMvY29uZmx1ZW5jZS5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2FwcGxpY2F0aW9ucy9qaXJhLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9nZXRBcHBsaWNhdGlvbi5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvZ2V0VmVyc2lvbnMuanMiLCIuLi8uLi9kaXN0L3NyYy9jb21tYW5kcy9kZWJ1Zy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3luY0V4aXRIb29rLCBncmFjZWZ1bEV4aXQgfSBmcm9tICdleGl0LWhvb2snO1xuaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5leHBvcnQgY29uc3QgQWN0aW9uSGFuZGxlciA9IGFzeW5jIChwcm9ncmFtLCB7IGFjdGlvbiwgZXJyb3JIYW5kbGVyIH0sIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBvcHMgPSBvcHRpb25zIHx8IHByb2dyYW0ub3B0cygpO1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+IHtcbiAgICAgICAgbGV0IGVycm9yTWVzc2FnZSA9ICcnO1xuICAgICAgICBhc3luY0V4aXRIb29rKGFzeW5jIChjb2RlKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChjb2RlICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGVycm9ySGFuZGxlcihvcHMpLmNhdGNoKCgpID0+IG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2UudHJpbSgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdlIGFyZSByZWplY3RpbmcgdGhlIHByb21pc2UgdG8gYXZvaWQgdGhlXG4gICAgICAgICAgICAgICAgICAgIC8vIFwiQ2FsbGluZyBwcm9jZXNzLmV4aXRcIiBsb2cgbWVzc2FnZSBmcm9tIGV4aXQtaG9va1xuICAgICAgICAgICAgICAgICAgICByZWplY3QobnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogZXJyO1xuICAgICAgICAgICAgICAgIHJlamVjdChtZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgd2FpdDogNjAgKiAxICogMTAwMFxuICAgICAgICB9KTtcbiAgICAgICAgYWN0aW9uKG9wcykuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiB6LlpvZEVycm9yKSB7XG4gICAgICAgICAgICAgICAgZXJyLmlzc3Vlcy5mb3JFYWNoKGlzc3VlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlICs9IGBVbmFibGUgdG8gcGFyc2Ugb3B0aW9uICR7aXNzdWUucGF0aC5qb2luKCcsJyl9OiAke2lzc3VlLm1lc3NhZ2V9XFxuYDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yIHx8IHR5cGVvZiBlcnIgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gZXJyLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBncmFjZWZ1bEV4aXQoMSk7XG4gICAgICAgIH0pO1xuICAgIH0pLmNhdGNoKG1lc3NhZ2UgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcHJvZ3JhbS5lcnJvcihtZXNzYWdlKTtcbiAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGVycm9yIG1lc3NhZ2UsXG4gICAgICAgICAgICAvLyB3ZSBjYW4gYXNzdW1lIGEgY2xlYW4gZXhpdFxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuIiwiaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5pbXBvcnQgdmVyc2lvbnMgZnJvbSAnLi4vLi4vYXNzZXRzL3ZlcnNpb25zLmpzb24nO1xuZXhwb3J0IGNvbnN0IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcyA9IHouZW51bShbXG4gICAgJ3Bvc3RncmVzcWwnLFxuICAgICdteXNxbCcsXG4gICAgJ21zc3FsJ1xuXSk7XG5leHBvcnQgY29uc3QgU3VwcG9ydGVkTVNTUUxFZGl0aW9ucyA9IHouZW51bShbXG4gICAgJ0RldmVsb3BlcicsXG4gICAgJ0V4cHJlc3MnLFxuICAgICdTdGFuZGFyZCcsXG4gICAgJ0VudGVycHJpc2UnLFxuICAgICdFbnRlcnByaXNlQ29yZSdcbl0pO1xuZXhwb3J0IGNvbnN0IERhdGFiYXNlT3B0aW9ucyA9IHoub2JqZWN0KHtcbiAgICBuYW1lOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMsXG4gICAgcG9ydDogei5udW1iZXIoKS5vcih6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkpLFxuICAgIGRhdGFiYXNlOiB6LnN0cmluZygpLmRlZmF1bHQoJ2RjZHgnKSxcbiAgICB1c2VybmFtZTogei5zdHJpbmcoKS5kZWZhdWx0KCdkY2R4JyksXG4gICAgcGFzc3dvcmQ6IHouc3RyaW5nKCkuZGVmYXVsdCgnZGNkeCcpLFxuICAgIGNsZWFuOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBwcnVuZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgdmVyYm9zZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgZHJpdmVyOiB6LnN0cmluZygpXG59KTtcbmV4cG9ydCBjb25zdCBQb3N0Z3JlU1FMT3B0aW9ucyA9IERhdGFiYXNlT3B0aW9ucy5leHRlbmQoe1xuICAgIG5hbWU6IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLnBvc3RncmVzcWwpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsKSxcbiAgICB0YWc6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gdmVyc2lvbnNbU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsXS5pbmNsdWRlcyhpdGVtKSkuZGVmYXVsdCgnbGF0ZXN0JyksXG4gICAgcG9ydDogei5udW1iZXIoKS5vcih6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkpLmRlZmF1bHQoNTQzMiksXG4gICAgZHJpdmVyOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IGl0ZW0gPT09ICdvcmcucG9zdGdyZXNxbC5Ecml2ZXInKS5kZWZhdWx0KCdvcmcucG9zdGdyZXNxbC5Ecml2ZXInKVxufSk7XG5leHBvcnQgY29uc3QgTXlTUUxPcHRpb25zID0gRGF0YWJhc2VPcHRpb25zLmV4dGVuZCh7XG4gICAgbmFtZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLnJlZmluZShpdGVtID0+IGl0ZW0gPT09IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXlzcWwpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5teXNxbCksXG4gICAgdGFnOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IHZlcnNpb25zW1N1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXlzcWxdLmluY2x1ZGVzKGl0ZW0pKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBwb3J0OiB6Lm51bWJlcigpLm9yKHouc3RyaW5nKCkudHJhbnNmb3JtKE51bWJlcikucmVmaW5lKGl0ZW0gPT4gIWlzTmFOKGl0ZW0pKSkuZGVmYXVsdCgzMzA2KSxcbiAgICBkcml2ZXI6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gJ2NvbS5teXNxbC5qZGJjLkRyaXZlcicpLmRlZmF1bHQoJ2NvbS5teXNxbC5qZGJjLkRyaXZlcicpXG59KTtcbmV4cG9ydCBjb25zdCBNU1NRTE9wdGlvbnMgPSBEYXRhYmFzZU9wdGlvbnMuZXh0ZW5kKHtcbiAgICBuYW1lOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5tc3NxbCkuZGVmYXVsdChTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm1zc3FsKSxcbiAgICB0YWc6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gdmVyc2lvbnNbU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5tc3NxbF0uaW5jbHVkZXMoaXRlbSkpLmRlZmF1bHQoJ2xhdGVzdCcpLFxuICAgIGVkaXRpb246IFN1cHBvcnRlZE1TU1FMRWRpdGlvbnMuZGVmYXVsdCgnRGV2ZWxvcGVyJyksXG4gICAgcG9ydDogei5udW1iZXIoKS5vcih6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkpLmRlZmF1bHQoMTQzMyksXG4gICAgdXNlcm5hbWU6IHouc3RyaW5nKCkucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gJ3NhJykuZGVmYXVsdCgnc2EnKSxcbiAgICBwYXNzd29yZDogei5zdHJpbmcoKS5kZWZhdWx0KCdEYXRhQ2VudGVyRFghJyksXG4gICAgZHJpdmVyOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IGl0ZW0gPT09ICdjb20ubWljcm9zb2Z0LnNxbHNlcnZlci5qZGJjLlNRTFNlcnZlckRyaXZlcicpLmRlZmF1bHQoJ2NvbS5taWNyb3NvZnQuc3Fsc2VydmVyLmpkYmMuU1FMU2VydmVyRHJpdmVyJylcbn0pO1xuIiwiaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5pbXBvcnQgeyBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMgfSBmcm9tICcuL0RhdGFiYXNlJztcbmV4cG9ydCBjb25zdCBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgPSB6LmVudW0oW1xuICAgICdqaXJhJyxcbiAgICAnY29uZmx1ZW5jZScsXG4gICAgJ2JpdGJ1Y2tldCcsXG4gICAgJ2JhbWJvbydcbl0pO1xuZXhwb3J0IGNvbnN0IEFwcGxpY2F0aW9uT3B0aW9ucyA9IHoub2JqZWN0KHtcbiAgICBuYW1lOiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMsXG4gICAgdGFnOiB6LnN0cmluZygpLmRlZmF1bHQoJ2xhdGVzdCcpLFxuICAgIGRhdGFiYXNlOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuZGVmYXVsdCgncG9zdGdyZXNxbCcpLFxuICAgIGRhdGFiYXNlVGFnOiB6LnN0cmluZygpLmRlZmF1bHQoJ2xhdGVzdCcpLFxuICAgIHBvcnQ6IHouc3RyaW5nKCkudHJhbnNmb3JtKE51bWJlcikucmVmaW5lKGl0ZW0gPT4gIWlzTmFOKGl0ZW0pKS5kZWZhdWx0KCc4MCcpLFxuICAgIGNvbnRleHRQYXRoOiB6LnN0cmluZygpLFxuICAgIHhtczogei5zdHJpbmcoKS5kZWZhdWx0KCcxMDI0bScpLFxuICAgIHhteDogei5zdHJpbmcoKS5kZWZhdWx0KCcxMDI0bScpLFxuICAgIHdhdGNoOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBleHQ6IHouYXJyYXkoei5zdHJpbmcoKSksXG4gICAgaW5zdGFsbDogei5ib29sZWFuKCksXG4gICAgb3V0cHV0RGlyZWN0b3J5OiB6LnN0cmluZygpLFxuICAgIGFjdGl2YXRlUHJvZmlsZXM6IHouc3RyaW5nKCksXG4gICAgY2xlYW46IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIHBydW5lOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBkZWJ1Zzogei5ib29sZWFuKCkuZGVmYXVsdCh0cnVlKSxcbiAgICBjd2Q6IHouc3RyaW5nKClcbn0pLnBhcnRpYWwoe1xuICAgIGNvbnRleHRQYXRoOiB0cnVlLFxuICAgIGV4dDogdHJ1ZSxcbiAgICBpbnN0YWxsOiB0cnVlLFxuICAgIG91dHB1dERpcmVjdG9yeTogdHJ1ZSxcbiAgICBhY3RpdmF0ZVByb2ZpbGVzOiB0cnVlLFxuICAgIGN3ZDogdHJ1ZVxufSk7XG4iLCJpbXBvcnQgeyBET01QYXJzZXIsIFhNTFNlcmlhbGl6ZXIgfSBmcm9tICdAeG1sZG9tL3htbGRvbSc7XG5pbXBvcnQgeyBzcGF3biB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgWE1MUGFyc2VyIH0gZnJvbSAnZmFzdC14bWwtcGFyc2VyJztcbmltcG9ydCB7IGV4aXN0c1N5bmMsIHJlYWRGaWxlU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdwYXRoJztcbmltcG9ydCB7IGN3ZCB9IGZyb20gJ3Byb2Nlc3MnO1xuaW1wb3J0IHhwYXRoIGZyb20gJ3hwYXRoJztcbmltcG9ydCB7IFN1cHBvcnRlZEFwcGxpY2F0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0FwcGxpY2F0aW9uJztcbmV4cG9ydCBjbGFzcyBBTVBTIHtcbiAgICBvcHRpb25zO1xuICAgIG1hdmVuID0gbnVsbDtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zID0ge1xuICAgICAgICBwcm9maWxlczogW11cbiAgICB9KSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQdWJsaWMgTWV0aG9kc1xuICAgIHN0b3AoKSB7XG4gICAgICAgIGlmICh0aGlzLm1hdmVuKSB7XG4gICAgICAgICAgICBjb25zdCBraWxsZWQgPSB0aGlzLm1hdmVuLmtpbGwoMCk7XG4gICAgICAgICAgICBpZiAoIWtpbGxlZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHRlcm1pbmF0ZSBleGlzdGluZyBNYXZlbiBwcm9jZXNzJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgYnVpbGQoYXJncykge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMubWF2ZW4pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBraWxsZWQgPSB0aGlzLm1hdmVuLmtpbGwoMCk7XG4gICAgICAgICAgICAgICAgaWYgKCFraWxsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignRmFpbGVkIHRvIHRlcm1pbmF0ZSBleGlzdGluZyBNYXZlbiBwcm9jZXNzJykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubWF2ZW4gPSBzcGF3bignbXZuJywgWydwYWNrYWdlJywgLi4uYXJnc10sIHsgY3dkOiB0aGlzLm9wdGlvbnM/LmN3ZCB8fCBjd2QoKSwgc3RkaW86ICdpbmhlcml0JyB9KTtcbiAgICAgICAgICAgIHRoaXMubWF2ZW4ub24oJ2V4aXQnLCAoY29kZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubWF2ZW4gPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChjb2RlID09PSAwIHx8IGNvZGUgPT09IDEzMCkge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGBNYXZlbiBleGl0ZWQgd2l0aCBjb2RlICR7Y29kZX1gKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpc0F0bGFzc2lhblBsdWdpbiA9ICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gdGhpcy5nZXROb2RlcygnLy8qW2xvY2FsLW5hbWUoKT1cXCdwYWNrYWdpbmdcXCddJyk7XG4gICAgICAgICAgICByZXR1cm4gbm9kZXMuc29tZShpdGVtID0+IGl0ZW0udGV4dENvbnRlbnQgPT09ICdhdGxhc3NpYW4tcGx1Z2luJyk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBnZXRBcHBsaWNhdGlvblZlcnNpb24oKSB7XG4gICAgICAgIGNvbnN0IGFwcGxpY2F0aW9ucyA9IHRoaXMuZ2V0QXBwbGljYXRpb25zKCk7XG4gICAgICAgIGlmIChhcHBsaWNhdGlvbnMuc2l6ZSA9PT0gMSkge1xuICAgICAgICAgICAgY29uc3QgWywgdmVyc2lvbl0gPSBBcnJheS5mcm9tKGFwcGxpY2F0aW9ucylbMF07XG4gICAgICAgICAgICByZXR1cm4gdmVyc2lvbjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChhcHBsaWNhdGlvbnMuc2l6ZSA+IDEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIEF0bGFzc2lhbiBQbHVnaW4gcHJvamVjdCBjb250YWlucyBtdWx0aXBsZSBBTVBTIGNvbmZpZ3VyYXRpb24sIHVuYWJsZSB0byBkZWNpZGUgd2hpY2ggcHJvZHVjdCB0byB1c2Ug8J+YsCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGdldEFwcGxpY2F0aW9uKCkge1xuICAgICAgICBjb25zdCBhcHBsaWNhdGlvbnMgPSB0aGlzLmdldEFwcGxpY2F0aW9ucygpO1xuICAgICAgICBpZiAoYXBwbGljYXRpb25zLnNpemUgPT09IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IFtuYW1lXSA9IEFycmF5LmZyb20oYXBwbGljYXRpb25zKVswXTtcbiAgICAgICAgICAgIHJldHVybiBuYW1lO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGFwcGxpY2F0aW9ucy5zaXplID4gMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgQXRsYXNzaWFuIFBsdWdpbiBwcm9qZWN0IGNvbnRhaW5zIG11bHRpcGxlIEFNUFMgY29uZmlndXJhdGlvbiwgdW5hYmxlIHRvIGRlY2lkZSB3aGljaCBwcm9kdWN0IHRvIHVzZSDwn5iwJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGdldEFwcGxpY2F0aW9ucygpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IE1hcCgpO1xuICAgICAgICBjb25zdCBub2RlcyA9IHRoaXMuZ2V0Tm9kZXMoJy8vKltsb2NhbC1uYW1lKCk9XFwnZ3JvdXBJZFxcJyBhbmQgdGV4dCgpPVxcJ2NvbS5hdGxhc3NpYW4ubWF2ZW4ucGx1Z2luc1xcJ10nKTtcbiAgICAgICAgY29uc3Qgbm9kZXNXaXRoQWN0aXZlUHJvZmlsZSA9IG5vZGVzLmZpbHRlcihub2RlID0+IHRoaXMuaXNBY3RpdmF0ZWRQcm9maWxlKG5vZGUpKTtcbiAgICAgICAgbm9kZXNXaXRoQWN0aXZlUHJvZmlsZS5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcbiAgICAgICAgICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBwbHVnaW4gfSA9IHRoaXMudG9PYmplY3QocGFyZW50Tm9kZSk7XG4gICAgICAgICAgICAgICAgaWYgKCdhbXBzLW1hdmVuLXBsdWdpbicgPT09IHBsdWdpbj8uYXJ0aWZhY3RJZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGNvbmZpZ3VyYXRpb24gfSA9IHBsdWdpbiB8fCB7fTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjb25maWd1cmF0aW9uPy5wcm9kdWN0cykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLnByb2R1Y3RzLmZvckVhY2goKHByb2R1Y3QpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3VwcG9ydGVkQXBwbGljYXRpb24gPSB0aGlzLmdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHByb2R1Y3QuaWQpIHx8IHRoaXMuZ2V0U3VwcG9ydGVkQXBwbGljYXRpb24ocHJvZHVjdC5pbnN0YW5jZUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRlZEFwcGxpY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy5kb1Byb3BlcnR5UmVwbGFjZW1lbnQocHJvZHVjdC52ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNldChzdXBwb3J0ZWRBcHBsaWNhdGlvbiwgdmVyc2lvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcHJvZHVjdCB9ID0gY29uZmlndXJhdGlvbj8ucHJvZHVjdHMgfHwge307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb2R1Y3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3VwcG9ydGVkQXBwbGljYXRpb24gPSB0aGlzLmdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHByb2R1Y3QuaWQpIHx8IHRoaXMuZ2V0U3VwcG9ydGVkQXBwbGljYXRpb24ocHJvZHVjdC5pbnN0YW5jZUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRlZEFwcGxpY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy5kb1Byb3BlcnR5UmVwbGFjZW1lbnQocHJvZHVjdC52ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNldChzdXBwb3J0ZWRBcHBsaWNhdGlvbiwgdmVyc2lvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1cHBvcnRlZEFwcGxpY2F0aW9uID0gdGhpcy5nZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbihwbHVnaW4/LmFydGlmYWN0SWQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy5nZXRWZXJzaW9uKG5vZGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3VwcG9ydGVkQXBwbGljYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXQoc3VwcG9ydGVkQXBwbGljYXRpb24sIHZlcnNpb24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByaXZhdGUgTWV0aG9kc1xuICAgIGdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZT8uaW5jbHVkZXMoU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5qaXJhKSkge1xuICAgICAgICAgICAgcmV0dXJuIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuamlyYTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWx1ZT8uaW5jbHVkZXMoU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5jb25mbHVlbmNlKSkge1xuICAgICAgICAgICAgcmV0dXJuIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuY29uZmx1ZW5jZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWx1ZT8uaW5jbHVkZXMoU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iYW1ib28pKSB7XG4gICAgICAgICAgICByZXR1cm4gU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iYW1ib287XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsdWU/LmluY2x1ZGVzKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYml0YnVja2V0KSkge1xuICAgICAgICAgICAgcmV0dXJuIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYml0YnVja2V0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBnZXRWZXJzaW9uKG5vZGUpIHtcbiAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcbiAgICAgICAgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgcGx1Z2luIH0gPSB0aGlzLnRvT2JqZWN0KHBhcmVudE5vZGUpO1xuICAgICAgICAgICAgY29uc3QgeyBjb25maWd1cmF0aW9uIH0gPSBwbHVnaW4gfHwge307XG4gICAgICAgICAgICBpZiAoY29uZmlndXJhdGlvbj8ucHJvZHVjdFZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb1Byb3BlcnR5UmVwbGFjZW1lbnQocGx1Z2luLmNvbmZpZ3VyYXRpb24ucHJvZHVjdFZlcnNpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY29uZmlndXJhdGlvbj8ucHJvZHVjdHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9kdWN0ID0gQXJyYXkuaXNBcnJheShjb25maWd1cmF0aW9uPy5wcm9kdWN0cykgPyBjb25maWd1cmF0aW9uPy5wcm9kdWN0c1swXSA6IGNvbmZpZ3VyYXRpb24ucHJvZHVjdHMucHJvZHVjdDtcbiAgICAgICAgICAgICAgICBpZiAocHJvZHVjdCAmJiBwcm9kdWN0LnZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9Qcm9wZXJ0eVJlcGxhY2VtZW50KHByb2R1Y3QudmVyc2lvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGRvUHJvcGVydHlSZXBsYWNlbWVudCh2YWx1ZSkge1xuICAgICAgICBsZXQgcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgIC8vIElmIHRoZXJlIGlzIGEgcHJvZmlsZSwgcmVwbGFjZSBwcm9maWxlIHByb3BlcnRpZXMgZmlyc3QgYXMgdGhleSB0YWtlIHByZWNlZGVuY2VcbiAgICAgICAgY29uc3QgcHJvZmlsZVByb3BlcnRpZXMgPSB0aGlzLmdldFByb3BlcnRpZXMoKTtcbiAgICAgICAgT2JqZWN0LmVudHJpZXMocHJvZmlsZVByb3BlcnRpZXMpLmZvckVhY2goKFtwcm9wZXJ0eUtleSwgcHJvcGVydHlWYWx1ZV0pID0+IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlQWxsKGAkXFx7JHtwcm9wZXJ0eUtleX19YCwgcHJvcGVydHlWYWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5nZXRQcm9wZXJ0aWVzKCk7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHByb3BlcnRpZXMpLmZvckVhY2goKFtwcm9wZXJ0eUtleSwgcHJvcGVydHlWYWx1ZV0pID0+IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlQWxsKGAkXFx7JHtwcm9wZXJ0eUtleX19YCwgcHJvcGVydHlWYWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBnZXRQcm9wZXJ0aWVzKCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICAgICAgY29uc3Qgbm9kZXMgPSB0aGlzLmdldE5vZGVzKCcvLypbbG9jYWwtbmFtZSgpPVxcJ3Byb3BlcnRpZXNcXCddJyk7XG4gICAgICAgIGNvbnN0IG5vZGVzV2l0aEFjdGl2ZVByb2ZpbGUgPSBub2Rlcy5maWx0ZXIobm9kZSA9PiB0aGlzLmlzQWN0aXZhdGVkUHJvZmlsZShub2RlKSk7XG4gICAgICAgIG5vZGVzV2l0aEFjdGl2ZVByb2ZpbGUuZm9yRWFjaChub2RlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgcHJvcGVydGllcyB9ID0gdGhpcy50b09iamVjdChub2RlKTtcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHByb3BlcnRpZXMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4gcmVzdWx0W2tleV0gPSB2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBnZXROb2RlcyhleHByZXNzaW9uLCBzaW5nbGUpIHtcbiAgICAgICAgY29uc3QgcG9tRmlsZVBhdGggPSBqb2luKHRoaXMub3B0aW9ucz8uY3dkIHx8IGN3ZCgpLCAnLi9wb20ueG1sJyk7XG4gICAgICAgIGNvbnN0IGhhc1BvbUZpbGUgPSBleGlzdHNTeW5jKHBvbUZpbGVQYXRoKTtcbiAgICAgICAgaWYgKGhhc1BvbUZpbGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHhtbCA9IHJlYWRGaWxlU3luYyhwb21GaWxlUGF0aCwgJ3V0ZjgnKTtcbiAgICAgICAgICAgIGNvbnN0IGRvYyA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoeG1sLCAndGV4dC94bWwnKTtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gc2luZ2xlID8geHBhdGguc2VsZWN0KGV4cHJlc3Npb24sIGRvYywgdHJ1ZSkgOiB4cGF0aC5zZWxlY3QoZXhwcmVzc2lvbiwgZG9jLCBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShub2RlcykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChzaW5nbGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICB0b09iamVjdChub2RlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZXIgPSBuZXcgWE1MUGFyc2VyKCk7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VyLnBhcnNlKG5ldyBYTUxTZXJpYWxpemVyKCkuc2VyaWFsaXplVG9TdHJpbmcobm9kZSkpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZpbmRQYXJlbnROb2RlQnlUYWdOYW1lKHRhZ05hbWUsIG5vZGUpIHtcbiAgICAgICAgY29uc3QgeyBwYXJlbnROb2RlIH0gPSBub2RlO1xuICAgICAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgaWYgKHBhcmVudE5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gdGFnTmFtZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudE5vZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5maW5kUGFyZW50Tm9kZUJ5VGFnTmFtZSh0YWdOYW1lLCBwYXJlbnROb2RlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaXNBY3RpdmF0ZWRQcm9maWxlKG5vZGUpIHtcbiAgICAgICAgY29uc3QgcHJvZmlsZVBhcmVudE5vZGUgPSB0aGlzLmZpbmRQYXJlbnROb2RlQnlUYWdOYW1lKCdwcm9maWxlJywgbm9kZSk7XG4gICAgICAgIGNvbnN0IHByb2ZpbGVOb2RlID0gcHJvZmlsZVBhcmVudE5vZGUgPyB0aGlzLnRvT2JqZWN0KHByb2ZpbGVQYXJlbnROb2RlKSA6IG51bGw7XG4gICAgICAgIGlmICghcHJvZmlsZU5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHByb2ZpbGVOb2RlICYmIChwcm9maWxlTm9kZS5hY3RpdmVCeURlZmF1bHQgPT09ICd0cnVlJyB8fCB0aGlzLm9wdGlvbnMucHJvZmlsZXMuaW5jbHVkZXMocHJvZmlsZU5vZGUucHJvZmlsZS5pZCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsImV4cG9ydCBjb25zdCBpc1JlY3Vyc2l2ZUJ1aWxkID0gKGxhc3RCdWlsZENvbXBsZXRlZCkgPT4gbGFzdEJ1aWxkQ29tcGxldGVkID4gKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gNSAqIDEwMDApO1xuIiwiZXhwb3J0IGNvbnN0IHNob3dSZWN1cnNpdmVCdWlsZFdhcm5pbmcgPSAob3V0cHV0RGlyZWN0b3J5KSA9PiB7XG4gICAgY29uc29sZS5sb2coYFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZWN1cnNpdmUgYnVpbGQgdHJpZ2dlciBkZXRlY3RlZC4gVGhlIGxhc3QgYnVpbGQgY29tcGxldGVkIGxhc3QgdGhhbiA1IHNlY29uZHMgYWdvXG5UaGlzIG1heSBpbmRpY2F0ZSB0aGF0IHRoZSBidWlsZCBjaGFuZ2VzIGZpbGVzIG91dHNpZGUgb2YgdGhlIG91dHB1dCBkaXJlY3RvcnlcbkFsdGVybmF0aXZlbHksIE1hdmVuIGlzIHVzaW5nIGEgZGlmZmVyZW50IG91dHB1dCBkaXJlY3RvcnkgdGhhbiBjb25maWd1cmVkOlxuJyR7b3V0cHV0RGlyZWN0b3J5fSdcblxuUGxlYXNlIG1ha2Ugc3VyZSB0byBjaGVjayB5b3VyIGJ1aWxkIHByb2Nlc3MgYW5kL29yIHNwZWNpZnkgYSBkaWZmZXJlbnQgb3V0cHV0IGRpcmVjdG9yeSB1c2luZyB0aGUgJy1vJyBvcHRpb25cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PWApO1xufTtcbiIsImltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgeyBjd2QgfSBmcm9tICdwcm9jZXNzJztcbmV4cG9ydCBjbGFzcyBDdXN0b21CdWlsZGVyIHtcbiAgICBvcHRpb25zO1xuICAgIHByb2MgPSBudWxsO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFB1YmxpYyBNZXRob2RzXG4gICAgc3RvcCgpIHtcbiAgICAgICAgaWYgKHRoaXMucHJvYykge1xuICAgICAgICAgICAgY29uc3Qga2lsbGVkID0gdGhpcy5wcm9jLmtpbGwoMCk7XG4gICAgICAgICAgICBpZiAoIWtpbGxlZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHRlcm1pbmF0ZSBleGlzdGluZyBidWlsZCBwcm9jZXNzJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgYnVpbGQoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcm9jKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2lsbGVkID0gdGhpcy5wcm9jLmtpbGwoMCk7XG4gICAgICAgICAgICAgICAgaWYgKCFraWxsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignRmFpbGVkIHRvIHRlcm1pbmF0ZSBleGlzdGluZyBidWlsZCBwcm9jZXNzJykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZXhlY1N5bmModGhpcy5vcHRpb25zLmNtZCwgeyBjd2Q6IHRoaXMub3B0aW9ucz8uY3dkIHx8IGN3ZCgpLCBzdGRpbzogJ2luaGVyaXQnIH0pO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHN0YXR1cyB9ID0gZXJyO1xuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoYEJ1aWxkIGV4aXRlZCB3aXRoIGNvZGUgJHtzdGF0dXN9YCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBzcGF3biB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IERvY2tlcm9kZSBmcm9tICdkb2NrZXJvZGUnO1xuaW1wb3J0IHsgY3dkIH0gZnJvbSAncHJvY2Vzcyc7XG5jb25zdCBkb2NrZXIgPSBuZXcgRG9ja2Vyb2RlKCk7XG5leHBvcnQgY29uc3QgZ2V0UnVubmluZ0NvbnRhaW5lcklkcyA9IGFzeW5jIChhcHBsaWNhdGlvbikgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lcnMgPSBhd2FpdCBkb2NrZXIubGlzdENvbnRhaW5lcnMoeyBmaWx0ZXJzOiB7XG4gICAgICAgICAgICBzdGF0dXM6IFsncnVubmluZyddLFxuICAgICAgICAgICAgbGFiZWw6IFtgY29tLmRvY2tlci5jb21wb3NlLnNlcnZpY2U9JHthcHBsaWNhdGlvbn1gXVxuICAgICAgICB9IH0pO1xuICAgIHJldHVybiBjb250YWluZXJzLm1hcChpdGVtID0+IGl0ZW0uSWQpO1xufTtcbmV4cG9ydCBjb25zdCBjb3B5ID0gYXN5bmMgKHNvdXJjZVBhdGgsIGRlc3RpbmF0aW9uUGF0aCkgPT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGRvY2tlciA9IHNwYXduKCdkb2NrZXInLCBbJ2NwJywgc291cmNlUGF0aCwgZGVzdGluYXRpb25QYXRoXSwgeyBjd2Q6IGN3ZCgpLCBzdGRpbzogJ2luaGVyaXQnIH0pO1xuICAgICAgICBkb2NrZXIub24oJ2Vycm9yJywgcmVqZWN0KTtcbiAgICAgICAgZG9ja2VyLm9uKCdleGl0JywgKGNvZGUpID0+IChjb2RlID09PSAwKSA/IHJlc29sdmUoKSA6IHJlamVjdChuZXcgRXJyb3IoYERvY2tlciBleGl0ZWQgd2l0aCBjb2RlICR7Y29kZX1gKSkpO1xuICAgIH0pO1xufTtcbiIsImV4cG9ydCBjb25zdCBpc09mVHlwZSA9IChvYmosIHByb3BlcnR5KSA9PiB7XG4gICAgcmV0dXJuIG9iaiAhPT0gbnVsbCAmJiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBwcm9wZXJ0eSBpbiBvYmo7XG59O1xuIiwiaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCBGb3JtRGF0YSBmcm9tICdmb3JtLWRhdGEnO1xuaW1wb3J0IHsgY3JlYXRlUmVhZFN0cmVhbSB9IGZyb20gJ2ZzJztcbmV4cG9ydCBjb25zdCB1cGxvYWRUb1VQTSA9IGFzeW5jIChiYXNlVXJsLCBwYXRoLCB1c2VybmFtZSwgcGFzc3dvcmQsIHZlcmJvc2UgPSB0cnVlKSA9PiB7XG4gICAgY29uc3QgY3JlZGVudGlhbHMgPSB1c2VybmFtZSAmJiBwYXNzd29yZCA/IEJ1ZmZlci5mcm9tKGAke3VzZXJuYW1lfToke3Bhc3N3b3JkfWApLnRvU3RyaW5nKCdiYXNlNjQnKSA6IG51bGw7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5nZXQoYCR7YmFzZVVybH0vcmVzdC9wbHVnaW5zLzEuMC8/b3NfYXV0aFR5cGU9YmFzaWNgLCBjcmVkZW50aWFscyA/IHtcbiAgICAgICAgaGVhZGVyczogeyAnQXV0aG9yaXphdGlvbic6IGBCYXNpYyAke2NyZWRlbnRpYWxzfWAgfVxuICAgIH0gOiB1bmRlZmluZWQpLmNhdGNoKGVyciA9PiB7XG4gICAgICAgIHZlcmJvc2UgJiYgY29uc29sZS5sb2coJ0ZhaWxlZCB0byB1cGxvYWQgcGx1Z2luIGFyY2hpdmUgZmlsZSB0byBVUE0sIHVuYWJsZSB0byByZXRyaWV2ZSB0b2tlbicsIGVycik7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0pO1xuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHJlc3BvbnNlLmhlYWRlcnNbJ3VwbS10b2tlbiddO1xuICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3BsdWdpbicsIGNyZWF0ZVJlYWRTdHJlYW0ocGF0aCkpO1xuICAgICAgICAgICAgYXdhaXQgYXhpb3MucG9zdChgJHtiYXNlVXJsfS9yZXN0L3BsdWdpbnMvMS4wLz90b2tlbj0ke3Rva2VufWAsIGZvcm1EYXRhLCB7IGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybURhdGEuZ2V0SGVhZGVycygpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jcmVkZW50aWFscyA/IHsgJ0F1dGhvcml6YXRpb24nOiBgQmFzaWMgJHtjcmVkZW50aWFsc31gIH0gOiB7fVxuICAgICAgICAgICAgICAgIH0gfSlcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB2ZXJib3NlICYmIGNvbnNvbGUubG9nKCdGaW5pc2hlZCB1cGxvYWRpbmcgcGx1Z2luIGFyY2hpdmUgdG8gVVBNJykpXG4gICAgICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB2ZXJib3NlICYmIGNvbnNvbGUubG9nKCdGYWlsZWQgdG8gdXBsb2FkIHBsdWdpbiBhcmNoaXZlIGZpbGUgdG8gVVBNJywgZXJyKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2ZXJib3NlICYmIGNvbnNvbGUubG9nKCdGYWlsZWQgdG8gdXBsb2FkIHBsdWdpbiBhcmNoaXZlIGZpbGUgdG8gVVBNLCB1bmFibGUgdG8gcmV0cmlldmUgdG9rZW4gZnJvbSBoZWFkZXJzOicsIEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlLmhlYWRlcnMsIG51bGwsIDIpKTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5leHBvcnQgY29uc3Qgd2FpdEZvclBsdWdpblRvQmVFbmFibGVkID0gYXN5bmMgKGFwcEtleSwgYmFzZVVybCwgdXNlcm5hbWUsIHBhc3N3b3JkLCB2ZXJib3NlID0gdHJ1ZSkgPT4ge1xuICAgIGNvbnN0IGNyZWRlbnRpYWxzID0gdXNlcm5hbWUgJiYgcGFzc3dvcmQgPyBCdWZmZXIuZnJvbShgJHt1c2VybmFtZX06JHtwYXNzd29yZH1gKS50b1N0cmluZygnYmFzZTY0JykgOiBudWxsO1xuICAgIHZlcmJvc2UgJiYgY29uc29sZS5sb2coJ1dhaXRpbmcgZm9yIHBsdWdpbiB0byBiZWNvbWUgZW5hYmxlZCcpO1xuICAgIGxldCBpc0VuYWJsZWQgPSBmYWxzZTtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIHdoaWxlICghaXNFbmFibGVkICYmIGNvdW50IDwgMTIwKSB7XG4gICAgICAgIHZlcmJvc2UgJiYgY29uc29sZS5sb2coYFdhaXRpbmcgZm9yIHBsdWdpbiB0byBiZWNvbWUgZW5hYmxlZC4uLiAke2NvdW50fXNgKTtcbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBheGlvcy5nZXQoYCR7YmFzZVVybH0vcmVzdC9wbHVnaW5zLzEuMC8ke2FwcEtleX0ta2V5YCwgY3JlZGVudGlhbHMgPyB7XG4gICAgICAgICAgICBoZWFkZXJzOiB7ICdBdXRob3JpemF0aW9uJzogYEJhc2ljICR7Y3JlZGVudGlhbHN9YCB9XG4gICAgICAgIH0gOiB1bmRlZmluZWQpLmNhdGNoKCgpID0+ICh7IGRhdGE6IHsgZW5hYmxlZDogZmFsc2UgfSB9KSk7XG4gICAgICAgIGlzRW5hYmxlZCA9IGRhdGE/LmVuYWJsZWQ7XG4gICAgICAgIGNvdW50Kys7XG4gICAgfVxuICAgIHJldHVybiBpc0VuYWJsZWQ7XG59O1xuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyTGljZW5zZSA9IGFzeW5jIChhcHBLZXksIGxpY2Vuc2UsIGJhc2VVcmwsIHVzZXJuYW1lLCBwYXNzd29yZCwgdmVyYm9zZSA9IHRydWUpID0+IHtcbiAgICBjb25zdCBjcmVkZW50aWFscyA9IHVzZXJuYW1lICYmIHBhc3N3b3JkID8gQnVmZmVyLmZyb20oYCR7dXNlcm5hbWV9OiR7cGFzc3dvcmR9YCkudG9TdHJpbmcoJ2Jhc2U2NCcpIDogbnVsbDtcbiAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IGF4aW9zLmdldChgJHtiYXNlVXJsfS9yZXN0L3BsdWdpbnMvMS4wLyR7YXBwS2V5fS1rZXkvbGljZW5zZWAsIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgJ1gtQXRsYXNzaWFuLVRva2VuJzogJ25vLWNoZWNrJyxcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vdm5kLmF0bC5wbHVnaW5zK2pzb24nLFxuICAgICAgICAgICAgLi4uY3JlZGVudGlhbHMgPyB7ICdBdXRob3JpemF0aW9uJzogYEJhc2ljICR7Y3JlZGVudGlhbHN9YCB9IDoge31cbiAgICAgICAgfVxuICAgIH0pLmNhdGNoKCgpID0+ICh7IGRhdGE6IHt9IH0pKTtcbiAgICBjb25zdCB7IHJhd0xpY2Vuc2UgfSA9IGRhdGE7XG4gICAgaWYgKCFyYXdMaWNlbnNlIHx8IHJhd0xpY2Vuc2UgIT09IGxpY2Vuc2UpIHtcbiAgICAgICAgYXdhaXQgYXhpb3MucHV0KGAke2Jhc2VVcmx9L3Jlc3QvcGx1Z2lucy8xLjAvJHthcHBLZXl9LWtleS9saWNlbnNlYCwgYHsgXCJyYXdMaWNlbnNlXCI6IFwiJHtsaWNlbnNlfVwiIH1gLCB7XG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgJ1gtQXRsYXNzaWFuLVRva2VuJzogJ25vLWNoZWNrJyxcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3ZuZC5hdGwucGx1Z2lucytqc29uJyxcbiAgICAgICAgICAgICAgICAuLi5jcmVkZW50aWFscyA/IHsgJ0F1dGhvcml6YXRpb24nOiBgQmFzaWMgJHtjcmVkZW50aWFsc31gIH0gOiB7fVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4gdmVyYm9zZSAmJiBjb25zb2xlLmxvZygnRmluaXNoZWQgdXBsb2FkaW5nIGxpY2Vuc2UgdG8gVVBNJykpXG4gICAgICAgICAgICAuY2F0Y2goZXJyID0+IHZlcmJvc2UgJiYgY29uc29sZS5sb2coJ0ZhaWxlZCB0byB1cGxvYWQgbGljZW5zZSB0byBVUE0nLCBlcnIpKTtcbiAgICB9XG59O1xuIiwiaW1wb3J0IHsgcmVzb2x2ZSBhcyByZXNvbHZlUGF0aCB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgY3dkIH0gZnJvbSAncHJvY2Vzcyc7XG5pbXBvcnQgKiBhcyBEb2NrZXIgZnJvbSAnLi9kb2NrZXInO1xuaW1wb3J0IHsgaXNPZlR5cGUgfSBmcm9tICcuL2lzT2ZUeXBlJztcbmltcG9ydCB7IHVwbG9hZFRvVVBNIH0gZnJvbSAnLi91cG0nO1xuZXhwb3J0IGNvbnN0IEluc3RhbGxlciA9IGFzeW5jIChuYW1lLCBwYXRoLCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3QgY29udGFpbmVySWRzID0gYXdhaXQgRG9ja2VyLmdldFJ1bm5pbmdDb250YWluZXJJZHMobmFtZSk7XG4gICAgaWYgKCFjb250YWluZXJJZHMgfHwgY29udGFpbmVySWRzLmxlbmd0aCA8PSAwKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBUaGVyZSBhcmUgbm8gcnVubmluZyBpbnN0YW5jZSBvZiAke25hbWV9LCB1bmFibGUgdG8gaW5zdGFsbCBwbHVnaW4g8J+klGApO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGVsc2UgaWYgKGNvbnRhaW5lcklkcy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBUaGVyZSBhcmUgbXVsdHBsZSBydW5uaW5nIGluc3RhbmNlIG9mICR7bmFtZX0sIHVuYWJsZSB0byBkZXRlcm1pbmUgd2hpY2ggb25lIHRvIHVzZSDwn6SUYCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29udGFpbmVySWQgPSBjb250YWluZXJJZHNbMF07XG4gICAgaWYgKGNvbnRhaW5lcklkKSB7XG4gICAgICAgIGlmIChvcHRpb25zLm9icikge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYEZvdW5kIHVwZGF0ZWQgcGx1Z2luLCB1cGxvYWRpbmcgaXQgdG8gVVBNIG9uIHJ1bm5pbmcgaW5zdGFuY2VzIG9mICR7bmFtZX1gKTtcbiAgICAgICAgICAgIGNvbnN0IGhvc3RVcmwgPSBpc09mVHlwZShvcHRpb25zLCAncG9ydCcpID8gYGxvY2FsaG9zdDoke29wdGlvbnMucG9ydH1gIDogYGxvY2FsaG9zdGA7XG4gICAgICAgICAgICBjb25zdCBiYXNlVXJsID0gb3B0aW9ucy51c2VybmFtZSAmJiBvcHRpb25zLnBhc3N3b3JkID8gYGh0dHA6Ly8ke29wdGlvbnMudXNlcm5hbWV9OiR7b3B0aW9ucy5wYXNzd29yZH1AJHtob3N0VXJsfWAgOiBgaHR0cDovLyR7aG9zdFVybH1gO1xuICAgICAgICAgICAgdXBsb2FkVG9VUE0ocmVzb2x2ZVBhdGgob3B0aW9ucy5jd2QgfHwgY3dkKCksIHBhdGgpLCBiYXNlVXJsKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBGb3VuZCB1cGRhdGVkIHBsdWdpbiwgdXBsb2FkaW5nIGl0IHRvIFF1aWNrUmVsb2FkIG9uIHJ1bm5pbmcgaW5zdGFuY2VzIG9mICR7bmFtZX1gKTtcbiAgICAgICAgICAgIGF3YWl0IERvY2tlci5jb3B5KHJlc29sdmVQYXRoKG9wdGlvbnMuY3dkIHx8IGN3ZCgpLCBwYXRoKSwgYCR7Y29udGFpbmVySWR9Oi9vcHQvcXVpY2tyZWxvYWQvYClcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiBjb25zb2xlLmxvZygnRmluaXNoZWQgdXBsb2FkaW5nIHBsdWdpbiBhcmNoaXZlIHRvIFF1aWNrUmVsb2FkJykpXG4gICAgICAgICAgICAgICAgLmNhdGNoKGVyciA9PiBjb25zb2xlLmxvZygnRmFpbGVkIHRvIHVwbG9hZCBwbHVnaW4gYXJjaGl2ZSBmaWxlIHRvIFF1aWNrUmVsb2FkJywgZXJyKSk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuIiwiaW1wb3J0IHsgd2F0Y2ggfSBmcm9tICdjaG9raWRhcic7XG5pbXBvcnQgeyBjd2QgfSBmcm9tICdwcm9jZXNzJztcbmltcG9ydCB7IGlzUmVjdXJzaXZlQnVpbGQgfSBmcm9tICcuLi9oZWxwZXJzL2lzUmVjdXJzaXZlQnVpbGQnO1xuaW1wb3J0IHsgc2hvd1JlY3Vyc2l2ZUJ1aWxkV2FybmluZyB9IGZyb20gJy4uL2hlbHBlcnMvc2hvd1JlY3Vyc2l2ZUJ1aWxkV2FybmluZyc7XG5pbXBvcnQgeyBBTVBTIH0gZnJvbSAnLi9hbXBzJztcbmltcG9ydCB7IEN1c3RvbUJ1aWxkZXIgfSBmcm9tICcuL0N1c3RvbUJ1aWxkZXInO1xuaW1wb3J0IHsgSW5zdGFsbGVyIH0gZnJvbSAnLi9JbnN0YWxsZXInO1xuZXhwb3J0IGNvbnN0IEZpbGVXYXRjaGVyID0gKG5hbWUsIG9wdGlvbnMsIG1hdmVuT3B0cywgaW5zdGFsbE9ubHkgPSBmYWxzZSkgPT4ge1xuICAgIGxldCBsYXN0QnVpbGRDb21wbGV0ZWQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICBjb25zdCBvdXRwdXREaXJlY3RvcnkgPSBvcHRpb25zLm91dHB1dERpcmVjdG9yeSB8fCAndGFyZ2V0JztcbiAgICBjb25zdCBwYXR0ZXJucyA9IG9wdGlvbnMuZXh0IHx8IFsnKiovKiddO1xuICAgIGNvbnNvbGUubG9nKGBXYXRjaGluZyBmaWxlc3lzdGVtIGZvciBjaGFuZ2VzIHRvIHNvdXJjZSBmaWxlcyAoJHtwYXR0ZXJucy5qb2luKCcsICcpfSlgKTtcbiAgICBjb25zdCBhbXBzID0gbmV3IEFNUFMoe1xuICAgICAgICBjd2Q6IG9wdGlvbnMuY3dkLFxuICAgICAgICBwcm9maWxlczogb3B0aW9ucy5hY3RpdmF0ZVByb2ZpbGVzPy5zcGxpdCgnLCcpIHx8IFtdXG4gICAgfSk7XG4gICAgY29uc3QgZGVsaXZlcmFibGVFeHRlbnNpb24gPSBvcHRpb25zLm9iciA/ICcub2JyJyA6ICcuamFyJztcbiAgICByZXR1cm4gd2F0Y2gocGF0dGVybnMsIHtcbiAgICAgICAgY3dkOiBvcHRpb25zLmN3ZCB8fCBjd2QoKSxcbiAgICAgICAgdXNlUG9sbGluZzogdHJ1ZSxcbiAgICAgICAgaW50ZXJ2YWw6IDIgKiAxMDAwLFxuICAgICAgICBiaW5hcnlJbnRlcnZhbDogMiAqIDEwMDAsXG4gICAgICAgIGF3YWl0V3JpdGVGaW5pc2g6IHRydWUsXG4gICAgICAgIHBlcnNpc3RlbnQ6IHRydWUsXG4gICAgICAgIGF0b21pYzogdHJ1ZVxuICAgIH0pLm9uKCdjaGFuZ2UnLCBhc3luYyAocGF0aCkgPT4ge1xuICAgICAgICBpZiAob3B0aW9ucy5pbnN0YWxsICYmIHBhdGguc3RhcnRzV2l0aChvdXRwdXREaXJlY3RvcnkpICYmIHBhdGgudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChkZWxpdmVyYWJsZUV4dGVuc2lvbikpIHtcbiAgICAgICAgICAgIGF3YWl0IEluc3RhbGxlcihuYW1lLCBwYXRoLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghcGF0aC5zdGFydHNXaXRoKG91dHB1dERpcmVjdG9yeSkgJiYgIWluc3RhbGxPbmx5KSB7XG4gICAgICAgICAgICBpZiAoaXNSZWN1cnNpdmVCdWlsZChsYXN0QnVpbGRDb21wbGV0ZWQpKSB7XG4gICAgICAgICAgICAgICAgc2hvd1JlY3Vyc2l2ZUJ1aWxkV2FybmluZyhvdXRwdXREaXJlY3RvcnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0RldGVjdGVkIGZpbGUgY2hhbmdlLCByZWJ1aWxkaW5nIEF0bGFzaWFuIERhdGEgQ2VudGVyIHBsdWdpbicpO1xuICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5leGVjKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGFtcHMuYnVpbGQobWF2ZW5PcHRzKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBGaW5pc2hlZCBidWlsZGluZyBBdGxhc3NpYW4gRGF0YSBDZW50ZXIgcGx1Z2luIGZvciAke25hbWV9Li4uIPCfkqpgKTtcbiAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYEZhaWxlZCB0byBidWlsZCBBdGxhc3NpYW4gRGF0YSBDZW50ZXIgcGx1Z2luIGZvciAke25hbWV9Li4uIPCfmLBgKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBidWlsZGVyID0gbmV3IEN1c3RvbUJ1aWxkZXIoeyBjbWQ6IG9wdGlvbnMuZXhlYywgY3dkOiBvcHRpb25zLmN3ZCB8fCBjd2QoKSB9KTtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgYnVpbGRlci5idWlsZCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYEZpbmlzaGVkIGJ1aWxkaW5nIEF0bGFzc2lhbiBEYXRhIENlbnRlciBwbHVnaW4gZm9yICR7bmFtZX0uLi4g8J+SqmApO1xuICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgRmFpbGVkIHRvIGJ1aWxkIEF0bGFzc2lhbiBEYXRhIENlbnRlciBwbHVnaW4gZm9yICR7bmFtZX0uLi4g8J+YsGApO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGFzdEJ1aWxkQ29tcGxldGVkID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG4iLCJleHBvcnQgY29uc3QgdGltZWJvbWIgPSB7XG4gICAgJ2ppcmEnOiAnQUFBQ0JBME9EQW9QZU5wOWtsMXYyakFVaHUveks0NjBPeVFIU0x1VklrVWFUYndOVkJLVWhFbmJ1Z3NURHVBMnNTUGJnYkZmUHhPQzFpKzR5RVhPNSt2blBSK3lHaUdTVy9DdW9YYzd2Qm9NdlQ0RU5BT3Y1L1djdFVJVUcxbFZxTng3bnFQUVNKZmNjQ2w4R21VMG1TWGpsRHBSWFM1UXhhdTVScVY5MG5jQ0tRekxUY1JLOUV1OTQ0SXAvY1EvTTFNd3JUa1RiaTVMWjFhcmZNTTBoc3lnNy9YNkE5THZFODl6MmozWnZzSm1RQkJQcHpRSnhxUDdVNHIrcWJqYU4zMnpHKy9iYVIyZE1sNmMzNWVpMnFJYWgvNGR2YUhrT3Z6cGtVL3g1SVo4dmJvZE9JOWNNYmRTY2xubnhqMzhFQzFYWnNjVXVuWXkzNkp2VkkzT3hHWm1iWlhkendJVTVsVkpXaTkwcm5qVlFHb2k3MEI4NzNHTmhQT1FPNTFPRkdma1M1eVFXUktIOHlBYnh4R1pwOVFtL0VDaHBiR0V4UjdNQnFHZEFsVGtjb2tLN01NZU1UZndhMk5NOVREc2R0ZlNmUUduV3h3N0NCNDdmcnNRU2hEU3dKSnJvL2lpTm1nbmN3MUdRbDVySTB0cnRldFk0c0tnWUNKL1k0cVZGU1IwbE5HUTNQMDRhRHhyVEt2V09qTVhUMEx1eENVMzN0eGFTaVBmZnVSanIzZnNPL21DNm9nL1Ztc211R1lOMElqOTNURlljVlh1blFhYURiNCt3SmJGZDd2ZzBPSTVJZjUzTkVOdG9LMkFsVlF3R1NjalNGdDVscmpkV3ltdThXRUlnU3d0cHB5ekFzTGd4Ums4UDVoRzlQTUEzYktpUHNwZHNVTGpKUndYN3VrZjUvTlg3VEF0QWhVQWhRU0h6OURneWNPWDd3Y3dFUk1KYjNUTEdiNENGR2tCL3hVV1NSSzNCWkxyUEY5Um42Wm1yVXFKWDAyb2MnLFxuICAgICdjb25mbHVlbmNlJzogJ0FBQUN6ZzBPREFvUGVOcDlWTzl2MmpBUS9aNi93dEsrSVlXR3NFS0hGR21RbUphdS9HZ0ltOWlZSmhNT1lwcllrZTFBNGErZlNjaEdLdHFQUHZ2ZXZYdjN6cC82Z3FMSExFYjJIYktzVHZOenA5bEM5OE1BMlpiZE5LWWdkaUFHbnRQRFEyejY4OEhjZEgvYU03UDVvMmtaVHpRRUppRTRwREFpQ1RnQm5nYUQwYjBSQ3I1ZjFTOXVIZmNVV1hTUUJ6dUllUXJDQ0RsYjEwbW82QTRjSlRMUVNWbElsekZVZ2dwSThpY2tNYkFWRWJJK3lwSWxpUEc2UjVJbDV6NGtYRUYzQTB4SnAxR3l3YThwRlFlUEtIQW1EZHQ2K0E5Y0pWUUVLNXlXbWhNVjhIR1pMUldrd3JGOFBaTWdwR1BmR2g3SVVOQlVVYzZjQUtSQ2NWRVlyYmxBYVp4dEtFT3JzcWo4Vi9VUzg1enhYZCtmVUd3RDcwaWNrUnd5ZjdBUkFDemlxVVlvKzhJcm10L2pVWUQ5aVQrWVltTklLRlBBQ0F1dnlISWFRRVVTSFlnejBHOHJvcmdDOHJwNXF2YUVaVnAzcHQwdThzdmUzVGlUQ3NTSXIwQTZsbEdyMVZ3ZmR3UHNtYjI1UGpqYlZ3cTJFY1pjbTZuUzZES1grSTNpVDF5UC9DeTQyVEJlNEZBSzBXaFpWdHU2YXpZYlplWmxCMFUyd3JwbmtRb3FxNDBVeXN0NjdScUI5elU4azY0b2xZZXFLbkdtTkN6V2lzZU9Vb0t3aExMb0sxRXhrWklTVmc5NWNyM1pOL1lxZHVlU1lXNjQ5L21kcmZKQVpPUU0zYjNiOTZEUnVoVmszMjYxa2tGdmV4d2U0MVVRdEpOMTJ1NUd6NkdjUFQ3UG43MUg3MHQ2OUNQY2J4L2E5cmNqM3JEdXdsazR4cHJLQ0E1Vk4rb0pqc2FCMlIvNzVzUWZlek0zR0l4SDVteUtUNlBOL1FFcnREd2dGUUU2RTlWRENMVVp0TjhGMzBLbzBLOUlxWFRSdWJuWjhIcEZsWnR6QXlZVUdiL3J5T09JY1lWV1ZDcEJsNWtDalV3bFVoeUYybVk4MFdhb1h4ZHpFaE9XZTJZc05vUlJXV3hNdDZ4WC9oSDZQNXV4RjhiM3JMSklsejFMcFFXOTVwUVB2cWZMcTBrbXdvaEllTHMybDlQTXpmUTQ4THZ2V1RiZk1ZMUFYRGc5S0pETENWMkM5SFVNSCtDYUpmT2Z1ZGkvdjBrSUdWc3dMQUlVRU1ROVg3N2dxR0JkZkgwSEl6QmFWOE5hZFBVQ0ZCbitSaVVBNEQrSXFWUXBUVG91TFZZNjZhQ0dYMDIxMjEnLFxuICAgICdiaXRidWNrZXQnOiAnQUFBQm1nME9EQW9QZU5wOVVsMXYwekFVZmMrdnNNUmJKYWRKdGpHcFVpUzJKSlJPTk9sYUI0U0FCOWU5VzB4VHU3SnZDdjMzZUltRE9vUjR2ZWZlNC9QaE41OWhSNWJja1BpV1JOZXpLSjVGQ1prdkdVbWlKQTR5clpBTExQa0JVckhYb3RFbnU1ZUJSVzZiOEtNVW9DeXc4eEg2QlZaczJLS2NlM1RKcFVKUVhBa29maDJsT2VjY0lWMWRmUmhKQzdmUlhySnV3SnpBTFBMMC9xRitwSTlYR2FQeit1R0dzcHZia2RSeDhBd2NyMG5SZE9DbmxYbm1TbHFPVXF2MERsdHVyZVRLZzZ2T2lJWmI2SjlQb3ZpYVJtOXBISHMwTTlDZi9SdjFEdi9TUDVsTXlvclI5OVdhcnRaVlhtZHNVWlcwM2hRT1NIdENGK24yVExBQjRobElvWVRlZ1NGSG8zK0FRUEsxUVR4K20wMm56enJrbytKUTZNTzBIUzRvREJmZlE1SnJvalNTbmJSbzVMWkRjTXpTRXRSRWRCYjFBWXdOUnpzWGZmMEpnakN3TGpHLzRtQjVnaUUrSnpoYkYzZXN5T245bHhmMUYyMTQ1YTZPV3UyVi9xbUMvMmRWZG9jdG1PcXB0azVQR2lkK1hKeDQydzNOUFBIV1F1RDlmWEpiTDhQa3RmTGhVMkF2K04ycllNWTZ1VUVGcG5jWS9BWUNnZkZBTUN3Q0ZIemtCbGtHSC92UmRUZWVCU2ZVTXpVRGI0VzJBaFF5TTg5M1dQZzJROG9RQVlSZEJTeUtlVlVkb2c9PVgwMmpyJyxcbiAgICAnYmFtYm9vJzogJ0FBQUIzdzBPREFvUGVOcDlVbHRyMnpBWWZmZXZFT3d0b01SMTBxWUxHSmJZV3NubzdHQTdnOTBlWlBscm90V1dqQ1Nuelg3OUZGOElZV2tmRFBKM09lZHd6dmNoMnpkb1dTdmt6cEY3djVqZExyd3BDa2lhSWMvMVBPZVJNeEFhc21NTkVhM0F6MnhuSFQwNGdRSnF1QlFoTmVCNzd2UUd1elBzM2prNXJYSXB4NVFaZmdEZnFBYUdVdFJVT2FqNGFkWCtQa3BHeStVT2hORSt2bkdHNWxhRGFnczlMM210dVRvT0pGNVBramE1Wm9yWEp3RVhIRytwSlFkYU52Uy9jWXRMQXlzQlZGZnUxOWVodnhYUFFyNElKd1YxQUdVTEt6SW5lQmIrOFBCZC9HV09INllmNzUxTm85aWVhdWpsZVlNSEtZbDgrK0ZiMTNWR28xRVVaL2h6bk9CTkVvZmJJRnZIRWQ2bXhEYjgxa1FvVUg1RVpnK29wMGRFTUZtQVFyV1NmNEFaOUhOdlRQMXJNWm5zckxHbXBGcHpLc1pNVnBPeTI4RFFiZndlbzFBaUlRMHF1RGFLNTQwQmk4dzFNaEt4Umh0WldYdkhUZ2huK3pMUUJ2VTQ2RWxhMXJMWmNZRUtPRUFwYXp2dmZLWGNlaVNvWUcva2NUWGhUVWxGRytYVmJnS1ZOSEErZ0Y3Qk44dDNVdVU1c2RwUndYVVhHbm1sVlYwQ0NtUlZVM0c4RXZmNU1LVXc5dnFJRlYzNnRYN21vTmpmbzdDUFR4ZmVuWklKRXJMTVNJaFgzMDlwdkRkOFNVZ0szc21LTXBKc2tuVktCdHIyNnQ0RCtnZDNBQzVxTUN3Q0ZIT2FUV2ZGdkxDTEpQZnQzcWt0Vm8zRmFmbVpBaFJvamI5SUF4ajhLRXFQRFF5MHN0b3MzOTRTUVE9PVgwMm1xJ1xufTtcbmV4cG9ydCBjb25zdCBhcHAzaG91ciA9ICdBQUFCQ0EwT0RBb1BlTnBkajAxUHdrQVVSZmZ6S3laeFoxSXlVekFSa2xsUTI0Z1JhUU10R25hUDhWRW10alBOZkZUNTl5SlZGeXpmdWJrbjc5NlV4MEJ6NlNtYlVNNW5iRHpqOTdSSVN4b3pIcE1VbmJTcTg4cG9VYUx6dEZFU3RVTjZNSloyVGFpVnB1L1lZMk02dEk2c1FydEhteDhxZDc0RVorVEJJdnlVVS9Bb1lzN2ppRTBqemtuV1F4TXVpZkEySUJsVWJuUTdBdWxWandOOUFhVTlhdEFTczY5TzJkTkZVNHdYSkxjMWFPVUd3OXczNEp3Q1RUWm9lN1JQcVVnZXAyWDBWbTBuMGZOdXQ0Z1N4bC9KY25qOW5GYjZRNXRQL1VldTNMKzBQSFc0Z2haRm1tMnpaVjVrNi85NUNiUjdZOWJZR28vekdyVjNJcjRqUmJEeUNBNnZ0MzRETzhwM1NEQXNBaFFuSmpMRDVrOUZyM3VhSXprWEtmODNvNXZEZFFJVWU0WGVxdU5DQzNEKzlodDlaWWhOWkZLbW5oYz1YMDJkaCc7XG4iLCJpbXBvcnQgeyByZWFscGF0aFN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luIH0gZnJvbSAncGF0aCc7XG5leHBvcnQgY29uc3QgdG9BYnNvbHV0ZVBhdGggPSAocmVsYXRpdmVQYXRoKSA9PiB7XG4gICAgY29uc3QgWywgZmlsZVBhdGhdID0gcHJvY2Vzcy5hcmd2O1xuICAgIGNvbnN0IGV4ZWN1dGFibGVGaWxlRGlyID0gZGlybmFtZShyZWFscGF0aFN5bmMoZmlsZVBhdGgpKTtcbiAgICBjb25zdCBiYXNlZGlyID0gZXhlY3V0YWJsZUZpbGVEaXIuc3Vic3RyaW5nKDAsIGV4ZWN1dGFibGVGaWxlRGlyLmluZGV4T2YoJ2RjZHgnKSArIDQpO1xuICAgIHJldHVybiBqb2luKGJhc2VkaXIsIHJlbGF0aXZlUGF0aC5yZXBsYWNlQWxsKCcuLi8nLCAnJykpO1xufTtcbiIsImV4cG9ydCBjb25zdCBuZXR3b3JrID0ge1xuICAgIG5hbWU6ICdzaGFyZWQnLFxuICAgIGRyaXZlcjogJ2JyaWRnZSdcbn07XG4iLCJpbXBvcnQgeyBzcGF3biB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgZG93bkFsbCwgcHMsIHN0b3AsIHVwQWxsIH0gZnJvbSAnZG9ja2VyLWNvbXBvc2UvZGlzdC92Mi5qcyc7XG5pbXBvcnQgeyBncmFjZWZ1bEV4aXQgfSBmcm9tICdleGl0LWhvb2snO1xuaW1wb3J0IHsgZHVtcCB9IGZyb20gJ2pzLXlhbWwnO1xuaW1wb3J0IHsgY3dkIH0gZnJvbSAncHJvY2Vzcyc7XG5pbXBvcnQgeyBDb25uZWN0aW9uQWNxdWlyZVRpbWVvdXRFcnJvciwgQ29ubmVjdGlvbkVycm9yLCBDb25uZWN0aW9uUmVmdXNlZEVycm9yLCBDb25uZWN0aW9uVGltZWRPdXRFcnJvciwgU2VxdWVsaXplLCBUaW1lb3V0RXJyb3IgfSBmcm9tICdzZXF1ZWxpemUnO1xuaW1wb3J0IHsgbmV0d29yayB9IGZyb20gJy4uL2hlbHBlcnMvbmV0d29yayc7XG5leHBvcnQgY2xhc3MgQmFzZSB7XG4gICAgb3B0aW9ucztcbiAgICBzZXF1ZWxpemU7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICAvLyBXZSBuZWVkIHRvIHVzZSAnbWFzdGVyJyBmb3IgbXNzcWwgYmVjYXVzZSBpdCBkb2VzIG5vdCBpbml0aWFsaXplIHRoZSBkYXRhYmFzZSBvbiBzdGFydFxuICAgICAgICBjb25zdCBkYXRhYmFzZSA9IHRoaXMub3B0aW9ucy5uYW1lID09PSAnbXNzcWwnID8gJ21hc3RlcicgOiB0aGlzLm9wdGlvbnMuZGF0YWJhc2U7XG4gICAgICAgIHRoaXMuc2VxdWVsaXplID0gbmV3IFNlcXVlbGl6ZShkYXRhYmFzZSwgdGhpcy5vcHRpb25zLnVzZXJuYW1lLCB0aGlzLm9wdGlvbnMucGFzc3dvcmQsIHtcbiAgICAgICAgICAgIGhvc3Q6ICdsb2NhbGhvc3QnLFxuICAgICAgICAgICAgcG9ydDogdGhpcy5vcHRpb25zLnBvcnQsXG4gICAgICAgICAgICBkaWFsZWN0OiB0aGlzLm9wdGlvbnMubmFtZS5yZXBsYWNlKCdwb3N0Z3Jlc3FsJywgJ3Bvc3RncmVzJyksXG4gICAgICAgICAgICByZXRyeToge1xuICAgICAgICAgICAgICAgIG1heDogMzAsXG4gICAgICAgICAgICAgICAgbWF0Y2g6IFtDb25uZWN0aW9uRXJyb3IsIFRpbWVvdXRFcnJvciwgQ29ubmVjdGlvblRpbWVkT3V0RXJyb3IsIENvbm5lY3Rpb25SZWZ1c2VkRXJyb3IsIENvbm5lY3Rpb25BY3F1aXJlVGltZW91dEVycm9yXSxcbiAgICAgICAgICAgICAgICBiYWNrb2ZmQmFzZTogMTAwMCxcbiAgICAgICAgICAgICAgICBiYWNrb2ZmRXhwb25lbnQ6IDFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2dnaW5nOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFB1YmxpYyBNZXRob2RzXG4gICAgYXN5bmMgcnVuKHNxbCwgbG9nZ2luZykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXF1ZWxpemUucXVlcnkoc3FsLCB7IGxvZ2dpbmcgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgdHJ5aW5nIHRvIHJ1biB0aGUgZm9sbG93aW5nIFNRTCBxdWVyeTonLCBzcWwsIGVycik7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgc3RhcnQoY2xlYW4gPSB0aGlzLm9wdGlvbnMuY2xlYW4pIHtcbiAgICAgICAgY29uc29sZS5sb2coYFN0YXJ0aW5nIGluc3RhbmNlIG9mICR7dGhpcy5vcHRpb25zLm5hbWV9Li4uIPCfkoNgKTtcbiAgICAgICAgaWYgKGNsZWFuKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRvd24oKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLnVwKCk7XG4gICAgICAgIGNvbnN0IGlzQXZhaWxhYmxlID0gYXdhaXQgdGhpcy53YWl0VW50aWxSZWFkeSgpO1xuICAgICAgICBpZiAoIWlzQXZhaWxhYmxlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRmFpbGVkIHRvIHZlcmlmeSBzdGF0dXMgb2YgJHt0aGlzLm9wdGlvbnMubmFtZX0g4puUYCk7XG4gICAgICAgICAgICBncmFjZWZ1bEV4aXQoMSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRGF0YWJhc2UgaXMgcmVhZHkgYW5kIGFjY2VwdGluZyBjb25uZWN0aW9ucyBvbiBsb2NhbGhvc3Q6JHt0aGlzLm9wdGlvbnMucG9ydH0g8J+XhO+4j2ApO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm9uRGF0YWJhc2VSZWFkeSgpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXJ2aWNlID0gYXdhaXQgdGhpcy5nZXRTZXJ2aWNlU3RhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlcnZpY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2hvd0RvY2tlckxvZ3Moc2VydmljZS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBncmFjZWZ1bEV4aXQoMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgc3RvcChwcnVuZSA9IHRoaXMub3B0aW9ucy5wcnVuZSkge1xuICAgICAgICBpZiAocHJ1bmUpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZG93bigpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgY29uZmlnQXNTdHJpbmcgPSBkdW1wKHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpKTtcbiAgICAgICAgICAgIGF3YWl0IHN0b3Aoe1xuICAgICAgICAgICAgICAgIGN3ZDogY3dkKCksXG4gICAgICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICAgICAgbG9nOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBvbkRhdGFiYXNlUmVhZHkoKSB7IH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJpdmF0ZSBNZXRob2RzXG4gICAgZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNlcnZpY2VzOiB7XG4gICAgICAgICAgICAgICAgJ2RiJzogdGhpcy5nZXRTZXJ2aWNlKClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXR3b3Jrczoge1xuICAgICAgICAgICAgICAgICdzaGFyZWQnOiBuZXR3b3JrXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuICAgIGFzeW5jIHVwKCkge1xuICAgICAgICBjb25zdCBjb25maWdBc1N0cmluZyA9IGR1bXAodGhpcy5nZXREb2NrZXJDb21wb3NlQ29uZmlnKCkpO1xuICAgICAgICByZXR1cm4gdXBBbGwoe1xuICAgICAgICAgICAgY3dkOiBjd2QoKSxcbiAgICAgICAgICAgIGNvbmZpZ0FzU3RyaW5nLFxuICAgICAgICAgICAgbG9nOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBkb3duKCkge1xuICAgICAgICBjb25zdCBjb25maWdBc1N0cmluZyA9IGR1bXAodGhpcy5nZXREb2NrZXJDb21wb3NlQ29uZmlnKCkpO1xuICAgICAgICByZXR1cm4gZG93bkFsbCh7XG4gICAgICAgICAgICBjd2Q6IGN3ZCgpLFxuICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICBjb21tYW5kT3B0aW9uczogWyctdicsICctLXJlbW92ZS1vcnBoYW5zJywgJy0tcm1pJywgJ2xvY2FsJ10sXG4gICAgICAgICAgICBsb2c6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIHdhaXRVbnRpbFJlYWR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXF1ZWxpemUuYXV0aGVudGljYXRlKCkudGhlbigoKSA9PiB0cnVlKS5jYXRjaCgoKSA9PiBmYWxzZSk7XG4gICAgfVxuICAgIGFzeW5jIGdldFNlcnZpY2VTdGF0ZSgpIHtcbiAgICAgICAgY29uc3QgY29uZmlnQXNTdHJpbmcgPSBkdW1wKHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHMoe1xuICAgICAgICAgICAgY3dkOiBjd2QoKSxcbiAgICAgICAgICAgIGNvbmZpZ0FzU3RyaW5nLFxuICAgICAgICAgICAgY29tbWFuZE9wdGlvbnM6IFsnLS1hbGwnXSxcbiAgICAgICAgICAgIGxvZzogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQuZGF0YS5zZXJ2aWNlcy5maW5kKGl0ZW0gPT4ge1xuICAgICAgICAgICAgY29uc3QgWywgc2VydmljZV0gPSBpdGVtLm5hbWUuc3BsaXQoJy0nKTtcbiAgICAgICAgICAgIHJldHVybiBzZXJ2aWNlID09PSB0aGlzLm9wdGlvbnMubmFtZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIHNob3dEb2NrZXJMb2dzKHNlcnZpY2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRvY2tlciA9IHNwYXduKCdkb2NrZXInLCBbJ2xvZ3MnLCAnLWYnLCAnLW4nLCAnNTAwMCcsIHNlcnZpY2VdLCB7IHN0ZGlvOiAnaW5oZXJpdCcgfSk7XG4gICAgICAgICAgICBkb2NrZXIub24oJ2V4aXQnLCAoY29kZSkgPT4gKGNvZGUgPT09IDApID8gcmVzb2x2ZSgpIDogcmVqZWN0KG5ldyBFcnJvcihgRG9ja2VyIGV4aXRlZCB3aXRoIGNvZGUgJHtjb2RlfWApKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsImltcG9ydCB7IE1TU1FMT3B0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0RhdGFiYXNlJztcbmltcG9ydCB7IEJhc2UgfSBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0IGNsYXNzIE1TU1FMIGV4dGVuZHMgQmFzZSB7XG4gICAgb3B0aW9ucztcbiAgICBnZXQgdXJsKCkge1xuICAgICAgICByZXR1cm4gYGpkYmM6c3Fsc2VydmVyOi8vZGI6JHt0aGlzLm9wdGlvbnMucG9ydH07ZGF0YWJhc2VOYW1lPSR7dGhpcy5vcHRpb25zLmRhdGFiYXNlfTt0cnVzdFNlcnZlckNlcnRpZmljYXRlPXRydWVgO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zID0gTVNTUUxPcHRpb25zLnBhcnNlKHt9KSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RlY3RlZCBNZXRob2RzXG4gICAgYXN5bmMgb25EYXRhYmFzZVJlYWR5KCkge1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bihgQ1JFQVRFIERBVEFCQVNFICR7dGhpcy5vcHRpb25zLmRhdGFiYXNlfWApO1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bihgQUxURVIgREFUQUJBU0UgJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9IENPTExBVEUgU1FMX0xhdGluMV9HZW5lcmFsX0NQMV9DU19BU2ApO1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bihgQUxURVIgREFUQUJBU0UgJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9IFNFVCBSRUFEX0NPTU1JVFRFRF9TTkFQU0hPVCBPTiBXSVRIIFJPTExCQUNLIElNTUVESUFURTtgKTtcbiAgICB9XG4gICAgZ2V0U2VydmljZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltYWdlOiBgbWNyLm1pY3Jvc29mdC5jb20vbXNzcWwvc2VydmVyOiR7dGhpcy5vcHRpb25zLnRhZ31gLFxuICAgICAgICAgICAgcG9ydHM6IFtgJHt0aGlzLm9wdGlvbnMucG9ydCB8fCAxNDMzfToxNDMzYF0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgICAgICAgIEFDQ0VQVF9FVUxBOiAneScsXG4gICAgICAgICAgICAgICAgTVNTUUxfU0FfUEFTU1dPUkQ6IHRoaXMub3B0aW9ucy5wYXNzd29yZCB8fCAnZGNkeCcsXG4gICAgICAgICAgICAgICAgTVNTUUxfUElEOiB0aGlzLm9wdGlvbnMuZWRpdGlvblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldHdvcmtzOiB7XG4gICAgICAgICAgICAgICAgJ3NoYXJlZCc6IHtcbiAgICAgICAgICAgICAgICAgICAgYWxpYXNlczogWydkYicsICdkYXRhYmFzZSddXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG59XG4iLCJpbXBvcnQgeyBNeVNRTE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy9EYXRhYmFzZSc7XG5pbXBvcnQgeyBCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmV4cG9ydCBjbGFzcyBNeVNRTCBleHRlbmRzIEJhc2Uge1xuICAgIG9wdGlvbnM7XG4gICAgZ2V0IHVybCgpIHtcbiAgICAgICAgcmV0dXJuIGBqZGJjOm15c3FsOi8vZGI6JHt0aGlzLm9wdGlvbnMucG9ydH0vJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9P3Nlc3Npb25WYXJpYWJsZXM9dHJhbnNhY3Rpb25faXNvbGF0aW9uPSdSRUFELUNPTU1JVFRFRCdgO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zID0gTXlTUUxPcHRpb25zLnBhcnNlKHt9KSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RlY3RlZCBNZXRob2RzXG4gICAgYXN5bmMgb25EYXRhYmFzZVJlYWR5KCkge1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bihgQUxURVIgREFUQUJBU0UgJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9IENIQVJBQ1RFUiBTRVQgJ3V0ZjhtYjQnIENPTExBVEUgdXRmOG1iNF9iaW5gKTtcbiAgICB9XG4gICAgZ2V0U2VydmljZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltYWdlOiBgbXlzcWw6JHt0aGlzLm9wdGlvbnMudGFnfWAsXG4gICAgICAgICAgICBwb3J0czogW2Ake3RoaXMub3B0aW9ucy5wb3J0IHx8IDMzMDZ9OjMzMDZgXSxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgICAgICAgTVlTUUxfUk9PVF9QQVNTV09SRDogdGhpcy5vcHRpb25zLnBhc3N3b3JkIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBNWVNRTF9VU0VSOiB0aGlzLm9wdGlvbnMudXNlcm5hbWUgfHwgJ2RjZHgnLFxuICAgICAgICAgICAgICAgIE1ZU1FMX1BBU1NXT1JEOiB0aGlzLm9wdGlvbnMucGFzc3dvcmQgfHwgJ2RjZHgnLFxuICAgICAgICAgICAgICAgIE1ZU1FMX0RBVEFCQVNFOiB0aGlzLm9wdGlvbnMuZGF0YWJhc2UgfHwgJ2RjZHgnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29tbWFuZDogWyctLWxvZ19iaW5fdHJ1c3RfZnVuY3Rpb25fY3JlYXRvcnM9MSddLFxuICAgICAgICAgICAgbmV0d29ya3M6IHtcbiAgICAgICAgICAgICAgICAnc2hhcmVkJzoge1xuICAgICAgICAgICAgICAgICAgICBhbGlhc2VzOiBbJ2RiJywgJ2RhdGFiYXNlJ11cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcbn1cbiIsImltcG9ydCB7IFBvc3RncmVTUUxPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMvRGF0YWJhc2UnO1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5leHBvcnQgY2xhc3MgUG9zdGdyZXMgZXh0ZW5kcyBCYXNlIHtcbiAgICBvcHRpb25zO1xuICAgIGdldCB1cmwoKSB7XG4gICAgICAgIHJldHVybiBgamRiYzpwb3N0Z3Jlc3FsOi8vZGI6JHt0aGlzLm9wdGlvbnMucG9ydH0vJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9YDtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucyA9IFBvc3RncmVTUUxPcHRpb25zLnBhcnNlKHt9KSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RlY3RlZCBNZXRob2RzXG4gICAgZ2V0U2VydmljZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltYWdlOiBgcG9zdGdyZXM6JHt0aGlzLm9wdGlvbnMudGFnfWAsXG4gICAgICAgICAgICBwb3J0czogW2Ake3RoaXMub3B0aW9ucy5wb3J0IHx8IDU0MzJ9OjU0MzJgXSxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgICAgICAgUE9TVEdSRVNfVVNFUjogdGhpcy5vcHRpb25zLnVzZXJuYW1lIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19QQVNTV09SRDogdGhpcy5vcHRpb25zLnBhc3N3b3JkIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19EQjogdGhpcy5vcHRpb25zLmRhdGFiYXNlIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19IT1NUX0FVVEhfTUVUSE9EOiAnbWQ1JyxcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19JTklUREJfQVJHUzogJy0tZW5jb2Rpbmc9VVRGLTggLS1sYy1jb2xsYXRlPUMgLS1sYy1jdHlwZT1DJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldHdvcmtzOiB7XG4gICAgICAgICAgICAgICAgJ3NoYXJlZCc6IHtcbiAgICAgICAgICAgICAgICAgICAgYWxpYXNlczogWydkYicsICdkYXRhYmFzZSddXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG59XG4iLCJpbXBvcnQgeyBNU1NRTCB9IGZyb20gJy4uL2RhdGFiYXNlcy9tc3NxbCc7XG5pbXBvcnQgeyBNeVNRTCB9IGZyb20gJy4uL2RhdGFiYXNlcy9teXNxbCc7XG5pbXBvcnQgeyBQb3N0Z3JlcyB9IGZyb20gJy4uL2RhdGFiYXNlcy9wb3N0Z3Jlcyc7XG5pbXBvcnQgeyBNU1NRTE9wdGlvbnMsIE15U1FMT3B0aW9ucywgUG9zdGdyZVNRTE9wdGlvbnMsIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcyB9IGZyb20gJy4uL3R5cGVzL0RhdGFiYXNlJztcbmV4cG9ydCBjb25zdCBnZXREYXRhYmFzZUVuZ2luZSA9IChvcHRpb25zLCB0YWcpID0+IHtcbiAgICBzd2l0Y2ggKG9wdGlvbnMubmFtZSkge1xuICAgICAgICBjYXNlIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbDpcbiAgICAgICAgICAgIHJldHVybiBuZXcgUG9zdGdyZXMoUG9zdGdyZVNRTE9wdGlvbnMucGFyc2UoeyAuLi5vcHRpb25zLCB0YWcgfSkpO1xuICAgICAgICBjYXNlIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXlzcWw6XG4gICAgICAgICAgICByZXR1cm4gbmV3IE15U1FMKE15U1FMT3B0aW9ucy5wYXJzZSh7IC4uLm9wdGlvbnMsIHRhZyB9KSk7XG4gICAgICAgIGNhc2UgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5tc3NxbDpcbiAgICAgICAgICAgIHJldHVybiBuZXcgTVNTUUwoTVNTUUxPcHRpb25zLnBhcnNlKHsgLi4ub3B0aW9ucywgdGFnIH0pKTtcbiAgICB9XG59O1xuIiwiaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5leHBvcnQgY29uc3QgZ2V0Wm9kRGVmYXVsdCA9IChzY2hlbWEsIGtleSkgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRzID0gZ2V0Wm9kRGVmYXVsdHMoc2NoZW1hKTtcbiAgICByZXR1cm4gZGVmYXVsdHNba2V5XTtcbn07XG4vLyBDb2RlIHNuaXBwZXQgYnkgSmFjb2IgV2Vpc2VuYnVyZ2VyIChodHRwczovL2dpdGh1Yi5jb20vSmFjb2JXZWlzZW5idXJnZXIpXG4vLyBUYWtlbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9jb2xpbmhhY2tzL3pvZC9kaXNjdXNzaW9ucy8xOTUzI2Rpc2N1c3Npb25jb21tZW50LTQ4MTE1ODhcbmV4cG9ydCBjb25zdCBnZXRab2REZWZhdWx0cyA9IChzY2hlbWEpID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHNjaGVtYS5zaGFwZSkuZmlsdGVyKChbLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2Ygei5ab2REZWZhdWx0KSB7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSB2YWx1ZS5fZGVmLmRlZmF1bHRWYWx1ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgZGVmYXVsdFZhbHVlICE9PSAndW5kZWZpbmVkJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSkubWFwKChba2V5LCB2YWx1ZV0pID0+IChba2V5LCB2YWx1ZS5fZGVmLmRlZmF1bHRWYWx1ZSgpXSkpKTtcbn07XG4iLCJpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IGRvd25BbGwsIGxvZ3MsIHBzLCBzdG9wLCB1cEFsbCB9IGZyb20gJ2RvY2tlci1jb21wb3NlL2Rpc3QvdjIuanMnO1xuaW1wb3J0IHsgZ3JhY2VmdWxFeGl0IH0gZnJvbSAnZXhpdC1ob29rJztcbmltcG9ydCB7IGV4aXN0c1N5bmMsIG1rZGlyU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IGR1bXAgfSBmcm9tICdqcy15YW1sJztcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdvcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBhcmNoLCBjd2QgfSBmcm9tICdwcm9jZXNzJztcbmltcG9ydCBzZW12ZXIgZnJvbSAnc2VtdmVyJztcbmltcG9ydCBzaW1wbGVHaXQgZnJvbSAnc2ltcGxlLWdpdCc7XG5pbXBvcnQgeyBnZXREYXRhYmFzZUVuZ2luZSB9IGZyb20gJy4uL2hlbHBlcnMvZ2V0RGF0YWJhc2VFbmdpbmUnO1xuaW1wb3J0IHsgZ2V0Wm9kRGVmYXVsdHMgfSBmcm9tICcuLi9oZWxwZXJzL2dldFpvZERlZmF1bHRzJztcbmltcG9ydCB7IG5ldHdvcmsgfSBmcm9tICcuLi9oZWxwZXJzL25ldHdvcmsnO1xuaW1wb3J0IHsgRGF0YWJhc2VPcHRpb25zLCBNU1NRTE9wdGlvbnMsIE15U1FMT3B0aW9ucywgUG9zdGdyZVNRTE9wdGlvbnMsIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcyB9IGZyb20gJy4uL3R5cGVzL0RhdGFiYXNlJztcbmNvbnN0IGJhc2VkaXIgPSBqb2luKGhvbWVkaXIoKSwgJy5kY2R4Jyk7XG5leHBvcnQgY2xhc3MgQmFzZSB7XG4gICAgb3B0aW9ucztcbiAgICBkYXRhYmFzZTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICAgIHRoaXMuZGF0YWJhc2UgPSB0aGlzLmdldERhdGFiYXNlRW5naW5lKG9wdGlvbnMuZGF0YWJhc2UsIG9wdGlvbnMuZGF0YWJhc2VUYWcpO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvcGVydGllc1xuICAgIGdldCBiYXNlVXJsKCkge1xuICAgICAgICBsZXQgYmFzZVVybCA9IGBodHRwOi8vbG9jYWxob3N0YDtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5wb3J0KSB7XG4gICAgICAgICAgICBiYXNlVXJsICs9IGA6JHt0aGlzLm9wdGlvbnMucG9ydH1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuY29udGV4dFBhdGggPyBgJHtiYXNlVXJsfS8ke3RoaXMub3B0aW9ucy5jb250ZXh0UGF0aH1gIDogYmFzZVVybDtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFB1YmxpYyBNZXRob2RzXG4gICAgYXN5bmMgc3RhcnQoKSB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY2xlYW4pIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZG93bigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzQnVpZFJlcXVpcmVkKCkpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuYnVpbGQodGhpcy5vcHRpb25zLnRhZyk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5kYXRhYmFzZS5zdGFydCh0aGlzLm9wdGlvbnMuY2xlYW4pO1xuICAgICAgICBhd2FpdCB0aGlzLnVwKCk7XG4gICAgfVxuICAgIGFzeW5jIHN0b3AoKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZGF0YWJhc2Uuc3RvcCh0aGlzLm9wdGlvbnMucHJ1bmUpO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnBydW5lKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRvd24oKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZ0FzU3RyaW5nID0gZHVtcCh0aGlzLmdldERvY2tlckNvbXBvc2VDb25maWcoKSk7XG4gICAgICAgICAgICBhd2FpdCBzdG9wKHtcbiAgICAgICAgICAgICAgICBjd2Q6IHRoaXMub3B0aW9ucy5jd2QgfHwgY3dkKCksXG4gICAgICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICAgICAgbG9nOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyByZXNldCgpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5kYXRhYmFzZS5zdG9wKHRydWUpO1xuICAgICAgICBhd2FpdCB0aGlzLmRvd24oKTtcbiAgICB9XG4gICAgZ2V0SlZNQXJncygpIHtcbiAgICAgICAgY29uc3QgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUyA9IFtdO1xuICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1EdXBtLnBsdWdpbi51cGxvYWQuZW5hYmxlZD10cnVlJyk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLURqaXJhLmRldi5tb2RlPXRydWUnKTtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLURhdGxhc3NpYW4uZGV2Lm1vZGU9dHJ1ZScpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMud2F0Y2gpIHtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLURxdWlja3JlbG9hZC5kaXJzPS9vcHQvcXVpY2tyZWxvYWQnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUztcbiAgICB9XG4gICAgYXN5bmMgaXNBcHBsaWNhdGlvblJlYWR5KCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5nZXQoYCR7dGhpcy5iYXNlVXJsfS9zdGF0dXNgLCB7IHZhbGlkYXRlU3RhdHVzOiAoKSA9PiB0cnVlIH0pO1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXRlID09PSAnRklSU1RfUlVOJyB8fCBkYXRhLnN0YXRlID09PSAnUlVOTklORycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBUaGUgYXBwbGljYXRpb24gJHt0aGlzLm5hbWV9IGlzIHJlYWR5IG9uICR7dGhpcy5iYXNlVXJsfSDwn46JYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0RGF0YWJhc2VFbmdpbmUobmFtZSwgdGFnKSB7XG4gICAgICAgIHJldHVybiBnZXREYXRhYmFzZUVuZ2luZShEYXRhYmFzZU9wdGlvbnMucGFyc2Uoe1xuICAgICAgICAgICAgLi4udGhpcy5nZXREZWZhdWx0T3B0aW9ucyhuYW1lKSxcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBjd2Q6IHRoaXMub3B0aW9ucy5jd2RcbiAgICAgICAgfSksIHRhZyk7XG4gICAgfVxuICAgIGdldERvY2tlckJhc2VUYWcoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzQnVpZFJlcXVpcmVkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBgZGNkeC8ke3RoaXMubmFtZX06JHt0aGlzLm9wdGlvbnMudGFnfWA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5uYW1lID09PSAnamlyYScpIHtcbiAgICAgICAgICAgIHJldHVybiBgYXRsYXNzaWFuL2ppcmEtc29mdHdhcmU6JHt0aGlzLm9wdGlvbnMudGFnfWA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYGF0bGFzc2lhbi8ke3RoaXMubmFtZX06JHt0aGlzLm9wdGlvbnMudGFnfWA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByaXZhdGUgTWV0aG9kc1xuICAgIGdldERvY2tlckNvbXBvc2VDb25maWcoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzZXJ2aWNlczoge1xuICAgICAgICAgICAgICAgIFt0aGlzLm5hbWVdOiB0aGlzLmdldFNlcnZpY2UoKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldHdvcmtzOiB7XG4gICAgICAgICAgICAgICAgJ3NoYXJlZCc6IG5ldHdvcmtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG4gICAgYXN5bmMgdXAoKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpO1xuICAgICAgICBjb25zdCBjb25maWdBc1N0cmluZyA9IGR1bXAoY29uZmlnKTtcbiAgICAgICAgYXdhaXQgdXBBbGwoe1xuICAgICAgICAgICAgY3dkOiB0aGlzLm9wdGlvbnMuY3dkIHx8IGN3ZCgpLFxuICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICBsb2c6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBpc0F2YWlsYWJsZSA9IGF3YWl0IHRoaXMud2FpdFVudGlsUmVhZHkoKTtcbiAgICAgICAgaWYgKCFpc0F2YWlsYWJsZSkge1xuICAgICAgICAgICAgY29uc3Qgc2VydmljZSA9IGF3YWl0IHRoaXMuZ2V0U2VydmljZVN0YXRlKCk7XG4gICAgICAgICAgICBjb25zdCBpc1J1bm5pbmcgPSBzZXJ2aWNlICYmIHNlcnZpY2Uuc3RhdGUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCd1cCcpO1xuICAgICAgICAgICAgaWYgKCFpc1J1bm5pbmcpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgRmFpbGVkIHRvIHN0YXJ0ICR7dGhpcy5uYW1lfSDim5RgKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBsb2dzKE9iamVjdC5rZXlzKGNvbmZpZy5zZXJ2aWNlcyksIHtcbiAgICAgICAgICAgICAgICAgICAgY3dkOiB0aGlzLm9wdGlvbnMuY3dkIHx8IGN3ZCgpLFxuICAgICAgICAgICAgICAgICAgICBjb25maWdBc1N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgbG9nOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgQ291bGQgbm90IGNvbmZpcm0gc3RhdGUgb2YgJHt0aGlzLm5hbWV9LCBidXQgdGhlIGNvbnRhaW5lciBpcyBydW5uaW5nLiBQbGVhc2UgY29uc3VsdCB0aGUgYXBwbGljYXRpb24gbG9ncyDwn5GHYCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy50YWlsQXBwbGljYXRpb25Mb2dzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnRhaWxBcHBsaWNhdGlvbkxvZ3MoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBXZSBhcmUgZXhpdGluZyB3aXRoIGFuIGVycm9yIGNvZGVcbiAgICAgICAgLy8gVGhpcyBpcyB0byB0cmlnZ2VyIGEgZ3JhY2VmdWwgc2h1dCBkb3duIG9mIHRoZSBhcHBsaWNhdGlvblxuICAgICAgICBncmFjZWZ1bEV4aXQoMSk7XG4gICAgfVxuICAgIGFzeW5jIGRvd24oKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ0FzU3RyaW5nID0gZHVtcCh0aGlzLmdldERvY2tlckNvbXBvc2VDb25maWcoKSk7XG4gICAgICAgIGF3YWl0IGRvd25BbGwoe1xuICAgICAgICAgICAgY3dkOiB0aGlzLm9wdGlvbnMuY3dkIHx8IGN3ZCgpLFxuICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICBjb21tYW5kT3B0aW9uczogWyctdicsICctLXJlbW92ZS1vcnBoYW5zJywgJy0tcm1pJywgJ2xvY2FsJ10sXG4gICAgICAgICAgICBsb2c6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIGdldFNlcnZpY2VTdGF0ZSgpIHtcbiAgICAgICAgY29uc3QgY29uZmlnQXNTdHJpbmcgPSBkdW1wKHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHMoe1xuICAgICAgICAgICAgY3dkOiB0aGlzLm9wdGlvbnMuY3dkIHx8IGN3ZCgpLFxuICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICBjb21tYW5kT3B0aW9uczogWyctLWFsbCddLFxuICAgICAgICAgICAgbG9nOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhLnNlcnZpY2VzLmZpbmQoaXRlbSA9PiB7XG4gICAgICAgICAgICBjb25zdCBbLCBzZXJ2aWNlXSA9IGl0ZW0ubmFtZS5zcGxpdCgnLScpO1xuICAgICAgICAgICAgcmV0dXJuIHNlcnZpY2UgPT09IHRoaXMubmFtZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIHdhaXRVbnRpbFJlYWR5KGNvdW50ID0gMCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgV2FpdGluZyBmb3IgJHt0aGlzLm5hbWV9IHRvIGJlY29tZSBhdmFpbGFibGUuLi4gJHtjb3VudH1zYCk7XG4gICAgICAgIGNvbnN0IHNlcnZpY2UgPSBhd2FpdCB0aGlzLmdldFNlcnZpY2VTdGF0ZSgpO1xuICAgICAgICBpZiAoc2VydmljZSkge1xuICAgICAgICAgICAgY29uc3QgaXNSdW5uaW5nID0gc2VydmljZSAmJiBzZXJ2aWNlLnN0YXRlLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgndXAnKTtcbiAgICAgICAgICAgIGNvbnN0IGlzUmVhZHkgPSBpc1J1bm5pbmcgJiYgYXdhaXQgdGhpcy5pc0FwcGxpY2F0aW9uUmVhZHkoKTtcbiAgICAgICAgICAgIGlmIChpc1JlYWR5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjb3VudCA+PSAxMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTAwMCkpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMud2FpdFVudGlsUmVhZHkoY291bnQgKyAxKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjb3VudCA8IDEwKSB7XG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTAwMCkpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMud2FpdFVudGlsUmVhZHkoY291bnQgKyAxKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpc0J1aWRSZXF1aXJlZCgpIHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy50YWcudG9Mb3dlckNhc2UoKSA9PT0gJ2xhdGVzdCcpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXJjaCA9PT0gJ2FybScgfHwgYXJjaCA9PT0gJ2FybTY0Jykge1xuICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMub3B0aW9ucy50YWcuaW5jbHVkZXMoJy0nKVxuICAgICAgICAgICAgICAgID8gdGhpcy5vcHRpb25zLnRhZy5zbGljZSgwLCB0aGlzLm9wdGlvbnMudGFnLmluZGV4T2YoJy0nKSlcbiAgICAgICAgICAgICAgICA6IHRoaXMub3B0aW9ucy50YWc7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbVZlclZlcnNpb24gPSBzZW12ZXIuY29lcmNlKHZlcnNpb24pO1xuICAgICAgICAgICAgICAgIGlmIChzZW1WZXJWZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT09ICdqaXJhJyB8fCB0aGlzLm5hbWUgPT09ICdiYW1ib28nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VtdmVyLmx0KHNlbVZlclZlcnNpb24sICc5LjAuMCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubmFtZSA9PT0gJ2NvbmZsdWVuY2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VtdmVyLmx0KHNlbVZlclZlcnNpb24sICc4LjAuMCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubmFtZSA9PT0gJ2JpdGJ1Y2tldCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZW12ZXIubHQoc2VtVmVyVmVyc2lvbiwgJzguMi4wJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGFzeW5jIGJ1aWxkKHZlcnNpb24pIHtcbiAgICAgICAgY29uc3QgcmVwb3NpdG9yeVVybCA9IHRoaXMuZ2V0RG9ja2VyUmVwb3NpdG9yeVVybCgpO1xuICAgICAgICBjb25zdCBjaGVja291dFBhdGggPSBqb2luKGJhc2VkaXIsIHRoaXMubmFtZSwgJ3NvdXJjZScpO1xuICAgICAgICBpZiAoIWV4aXN0c1N5bmMoY2hlY2tvdXRQYXRoKSkge1xuICAgICAgICAgICAgbWtkaXJTeW5jKGpvaW4oYmFzZWRpciwgdGhpcy5uYW1lKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICAgICAgICBhd2FpdCBzaW1wbGVHaXQoKS5jbG9uZShyZXBvc2l0b3J5VXJsLCBjaGVja291dFBhdGgsIHsgJy0tcmVjdXJzZS1zdWJtb2R1bGUnOiBudWxsIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYXdhaXQgc2ltcGxlR2l0KHsgYmFzZURpcjogY2hlY2tvdXRQYXRoIH0pLnB1bGwoeyAnLS1yZWN1cnNlLXN1Ym1vZHVsZSc6IG51bGwgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZG9ja2VyID0gc3Bhd24oJ2RvY2tlcicsIFsnYnVpbGQnLCAnLXQnLCBgZGNkeC8ke3RoaXMubmFtZX06JHt2ZXJzaW9ufWAsICctLWJ1aWxkLWFyZycsIGAke3RoaXMubmFtZS50b1VwcGVyQ2FzZSgpfV9WRVJTSU9OPSR7dmVyc2lvbn1gLCAnLiddLCB7IGN3ZDogY2hlY2tvdXRQYXRoLCBzdGRpbzogJ2luaGVyaXQnIH0pO1xuICAgICAgICAgICAgZG9ja2VyLm9uKCdleGl0JywgKGNvZGUpID0+IChjb2RlID09PSAwKSA/IHJlc29sdmUoKSA6IHJlamVjdChuZXcgRXJyb3IoYERvY2tlciBleGl0ZWQgd2l0aCBjb2RlICR7Y29kZX1gKSkpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0RG9ja2VyUmVwb3NpdG9yeVVybCgpIHtcbiAgICAgICAgY29uc3Qgc3VmZml4ID0gdGhpcy5uYW1lID09PSAnamlyYSdcbiAgICAgICAgICAgID8gJ2F0bGFzc2lhbi1qaXJhJ1xuICAgICAgICAgICAgOiB0aGlzLm5hbWUgPT09ICdiYW1ib28nXG4gICAgICAgICAgICAgICAgPyBgJHt0aGlzLm5hbWV9LXNlcnZlcmBcbiAgICAgICAgICAgICAgICA6IGBhdGxhc3NpYW4tJHt0aGlzLm5hbWV9LXNlcnZlcmA7XG4gICAgICAgIHJldHVybiBgaHR0cHM6Ly9iaXRidWNrZXQub3JnL2F0bGFzc2lhbi1kb2NrZXIvZG9ja2VyLSR7c3VmZml4fS5naXRgO1xuICAgIH1cbiAgICBhc3luYyB0YWlsQXBwbGljYXRpb25Mb2dzKCkge1xuICAgICAgICBjb25zdCBzZXJ2aWNlID0gYXdhaXQgdGhpcy5nZXRTZXJ2aWNlU3RhdGUoKTtcbiAgICAgICAgY29uc3QgaXNSdW5uaW5nID0gc2VydmljZSAmJiBzZXJ2aWNlLnN0YXRlLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgndXAnKTtcbiAgICAgICAgaWYgKGlzUnVubmluZykge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zaG93QXBwbGljYXRpb25Mb2dzKHNlcnZpY2UubmFtZSkuY2F0Y2goKCkgPT4gbnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgc2hvd0FwcGxpY2F0aW9uTG9ncyhzZXJ2aWNlKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkb2NrZXIgPSBzcGF3bignZG9ja2VyJywgWydleGVjJywgJy1pJywgc2VydmljZSwgYHRhaWxgLCBgLUZgLCBgLW5gLCBgNTAwMGAsIHRoaXMubG9nRmlsZVBhdGhdLCB7IGN3ZDogdGhpcy5vcHRpb25zLmN3ZCB8fCBjd2QoKSwgc3RkaW86ICdpbmhlcml0JyB9KTtcbiAgICAgICAgICAgIGRvY2tlci5vbignZXhpdCcsIChjb2RlKSA9PiAoY29kZSA9PT0gMCkgPyByZXNvbHZlKCkgOiByZWplY3QobmV3IEVycm9yKGBEb2NrZXIgZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCkpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGdldERlZmF1bHRPcHRpb25zKG5hbWUpIHtcbiAgICAgICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICAgICAgICBjYXNlIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbDpcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0Wm9kRGVmYXVsdHMoUG9zdGdyZVNRTE9wdGlvbnMpO1xuICAgICAgICAgICAgY2FzZSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsOlxuICAgICAgICAgICAgICAgIHJldHVybiBnZXRab2REZWZhdWx0cyhNeVNRTE9wdGlvbnMpO1xuICAgICAgICAgICAgY2FzZSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm1zc3FsOlxuICAgICAgICAgICAgICAgIHJldHVybiBnZXRab2REZWZhdWx0cyhNU1NRTE9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IHRpbWVib21iIH0gZnJvbSAnLi4vaGVscGVycy9saWNlbmNlcyc7XG5pbXBvcnQgeyB0b0Fic29sdXRlUGF0aCB9IGZyb20gJy4uL2hlbHBlcnMvdG9BYnNvbHV0ZVBhdGgnO1xuaW1wb3J0IHsgU3VwcG9ydGVkQXBwbGljYXRpb25zIH0gZnJvbSAnLi4vdHlwZXMvQXBwbGljYXRpb24nO1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5leHBvcnQgY2xhc3MgQmFtYm9vIGV4dGVuZHMgQmFzZSB7XG4gICAgbmFtZSA9IFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vO1xuICAgIGxvZ0ZpbGVQYXRoID0gJy92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYmFtYm9vL2xvZ3MvYXRsYXNzaWFuLWJhbWJvby5sb2cnO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIGdldFNlcnZpY2UoKSB7XG4gICAgICAgIGNvbnN0IGVudmlyb25tZW50ID0gdGhpcy5nZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnVpbGQ6IHtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzJyksXG4gICAgICAgICAgICAgICAgZG9ja2VyZmlsZV9pbmxpbmU6IGBcbkZST00gJHt0aGlzLmdldERvY2tlckJhc2VUYWcoKX1cbkNPUFkgLi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXIgL29wdC9hdGxhc3NpYW4vYmFtYm9vL2xpYi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXJcbkNPUFkgLi9xdWlja3JlbG9hZC01LjAuNC5qYXIgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iYW1ib28vc2hhcmVkL3BsdWdpbnMvcXVpY2tyZWxvYWQtNS4wLjQuamFyXG5SVU4gZWNobyBcIi9vcHQvcXVpY2tyZWxvYWRcIiA+IC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYmFtYm9vL3F1aWNrcmVsb2FkLnByb3BlcnRpZXM7IFxcXG4gICAgbWtkaXIgLXAgL29wdC9xdWlja3JlbG9hZDsgXFxcbiAgICBjaG93biAtUiBiYW1ib286YmFtYm9vIC9vcHQvcXVpY2tyZWxvYWQ7XG5cblJVTiBjaG93biAtUiBiYW1ib286YmFtYm9vIC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYmFtYm9vYFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBvcnRzOiBbXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5vcHRpb25zLnBvcnQgfHwgODB9OjgwODVgLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy5kZWJ1ZyA/IFsnNTAwNTo1MDA1J10gOiBbXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudCxcbiAgICAgICAgICAgIG5ldHdvcmtzOiBbJ3NoYXJlZCddXG4gICAgICAgIH07XG4gICAgfVxuICAgIGdldEpWTUFyZ3MoKSB7XG4gICAgICAgIGNvbnN0IEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MgPSBzdXBlci5nZXRKVk1BcmdzKCk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLVhkZWJ1ZycpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctYWdlbnRsaWI6amR3cD10cmFuc3BvcnQ9ZHRfc29ja2V0LHNlcnZlcj15LHN1c3BlbmQ9bixhZGRyZXNzPTUwMDUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUztcbiAgICB9XG4gICAgYXN5bmMgaXNBcHBsaWNhdGlvblJlYWR5KCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5nZXQoYCR7dGhpcy5iYXNlVXJsfS9zZXR1cC9zZXR1cEdlbmVyYWxDb25maWd1cmF0aW9uLmFjdGlvbmAsIHsgdmFsaWRhdGVTdGF0dXM6ICgpID0+IHRydWUgfSk7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2U/LnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFRoZSBhcHBsaWNhdGlvbiAke3RoaXMubmFtZX0gaXMgcmVhZHkgb24gJHt0aGlzLmJhc2VVcmx9IPCfjolgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByaXZhdGUgTWV0aG9kc1xuICAgIGdldEVudmlyb25tZW50VmFyaWFibGVzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLmNvbnRleHRQYXRoID8geyAnQVRMX1RPTUNBVF9DT05URVhUUEFUSCc6IHRoaXMub3B0aW9ucy5jb250ZXh0UGF0aCB9IDogJycsXG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMueG1zID8geyAnSlZNX01JTklNVU1fTUVNT1JZJzogdGhpcy5vcHRpb25zLnhtcyB9IDogJycsXG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMueG14ID8geyAnSlZNX01BWElNVU1fTUVNT1JZJzogdGhpcy5vcHRpb25zLnhteCB9IDogJycsXG4gICAgICAgICAgICAnSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUyc6IHRoaXMuZ2V0SlZNQXJncygpLmpvaW4oJyAnKSxcbiAgICAgICAgICAgICdBVExfQkFNQk9PX0VOQUJMRV9VTkFUVEVOREVEX1NFVFVQJzogJ3RydWUnLFxuICAgICAgICAgICAgJ0FUTF9MSUNFTlNFJzogdGltZWJvbWIuYmFtYm9vLFxuICAgICAgICAgICAgJ0FUTF9KREJDX1VSTCc6IHRoaXMuZGF0YWJhc2UudXJsLFxuICAgICAgICAgICAgJ0FUTF9KREJDX1VTRVInOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMudXNlcm5hbWUsXG4gICAgICAgICAgICAnQVRMX0pEQkNfUEFTU1dPUkQnOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMucGFzc3dvcmQsXG4gICAgICAgICAgICAnQVRMX0RCX1RZUEUnOiBgJHt0aGlzLmRhdGFiYXNlLm9wdGlvbnMubmFtZX1gLFxuICAgICAgICB9O1xuICAgIH1cbiAgICA7XG59XG4iLCJpbXBvcnQgeyB0aW1lYm9tYiB9IGZyb20gJy4uL2hlbHBlcnMvbGljZW5jZXMnO1xuaW1wb3J0IHsgdG9BYnNvbHV0ZVBhdGggfSBmcm9tICcuLi9oZWxwZXJzL3RvQWJzb2x1dGVQYXRoJztcbmltcG9ydCB7IFN1cHBvcnRlZEFwcGxpY2F0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0FwcGxpY2F0aW9uJztcbmltcG9ydCB7IEJhc2UgfSBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0IGNsYXNzIEJpdGJ1Y2tldCBleHRlbmRzIEJhc2Uge1xuICAgIG5hbWUgPSBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldDtcbiAgICBsb2dGaWxlUGF0aCA9ICcvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JpdGJ1Y2tldC9sb2cvYXRsYXNzaWFuLWJpdGJ1Y2tldC5sb2cnO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIGdldFNlcnZpY2UoKSB7XG4gICAgICAgIGNvbnN0IGVudmlyb25tZW50ID0gdGhpcy5nZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnVpbGQ6IHtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzJyksXG4gICAgICAgICAgICAgICAgZG9ja2VyZmlsZV9pbmxpbmU6IGBcbkZST00gJHt0aGlzLmdldERvY2tlckJhc2VUYWcoKX1cbkNPUFkgLi9xdWlja3JlbG9hZC01LjAuNC5qYXIgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iaXRidWNrZXQvcGx1Z2lucy9pbnN0YWxsZWQtcGx1Z2lucy9xdWlja3JlbG9hZC01LjAuNC5qYXJcbkNPUFkgLi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXIgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iaXRidWNrZXQvbGliL215c3FsLWNvbm5lY3Rvci1qLTguMy4wLmphclxuUlVOIGVjaG8gXCIvb3B0L3F1aWNrcmVsb2FkXCIgPiAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JpdGJ1Y2tldC9xdWlja3JlbG9hZC5wcm9wZXJ0aWVzOyBcXFxuICAgIG1rZGlyIC1wIC9vcHQvcXVpY2tyZWxvYWQ7IFxcXG4gICAgY2hvd24gLVIgYml0YnVja2V0OmJpdGJ1Y2tldCAvb3B0L3F1aWNrcmVsb2FkO1xuXG5SVU4gbWtkaXIgLXAgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iaXRidWNrZXQvc2hhcmVkOyBcXFxuICAgIHRvdWNoIC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYml0YnVja2V0L3NoYXJlZC9iaXRidWNrZXQucHJvcGVydGllczsgXFxcbiAgICBlY2hvIFwic2V0dXAubGljZW5zZT0ke3RpbWVib21iLmJpdGJ1Y2tldH1cIiA+PiAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JpdGJ1Y2tldC9zaGFyZWQvYml0YnVja2V0LnByb3BlcnRpZXM7XG5cblJVTiBjaG93biAtUiBiaXRidWNrZXQ6Yml0YnVja2V0IC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYml0YnVja2V0YFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBvcnRzOiBbXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5vcHRpb25zLnBvcnQgfHwgODB9Ojc5OTBgLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy5kZWJ1ZyA/IFsnNTAwNTo1MDA1J10gOiBbXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudCxcbiAgICAgICAgICAgIG5ldHdvcmtzOiBbJ3NoYXJlZCddXG4gICAgICAgIH07XG4gICAgfVxuICAgIGdldEpWTUFyZ3MoKSB7XG4gICAgICAgIGNvbnN0IEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MgPSBzdXBlci5nZXRKVk1BcmdzKCk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLVhkZWJ1ZycpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctYWdlbnRsaWI6amR3cD10cmFuc3BvcnQ9ZHRfc29ja2V0LHNlcnZlcj15LHN1c3BlbmQ9bixhZGRyZXNzPTUwMDUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByaXZhdGUgTWV0aG9kc1xuICAgIGdldEVudmlyb25tZW50VmFyaWFibGVzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnhtcyA/IHsgJ0pWTV9NSU5JTVVNX01FTU9SWSc6IHRoaXMub3B0aW9ucy54bXMgfSA6ICcnLFxuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnhteCA/IHsgJ0pWTV9NQVhJTVVNX01FTU9SWSc6IHRoaXMub3B0aW9ucy54bXggfSA6ICcnLFxuICAgICAgICAgICAgJ0pWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MnOiB0aGlzLmdldEpWTUFyZ3MoKS5qb2luKCcgJyksXG4gICAgICAgICAgICAnSkRCQ19VUkwnOiB0aGlzLmRhdGFiYXNlLnVybCxcbiAgICAgICAgICAgICdKREJDX1VTRVInOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMudXNlcm5hbWUsXG4gICAgICAgICAgICAnSkRCQ19QQVNTV09SRCc6IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy5wYXNzd29yZCxcbiAgICAgICAgICAgICdKREJDX0RSSVZFUic6IGAke3RoaXMuZGF0YWJhc2Uub3B0aW9ucy5kcml2ZXJ9YCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgO1xufVxuIiwiaW1wb3J0IHsgdGltZWJvbWIgfSBmcm9tICcuLi9oZWxwZXJzL2xpY2VuY2VzJztcbmltcG9ydCB7IHRvQWJzb2x1dGVQYXRoIH0gZnJvbSAnLi4vaGVscGVycy90b0Fic29sdXRlUGF0aCc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmV4cG9ydCBjbGFzcyBDb25mbHVlbmNlIGV4dGVuZHMgQmFzZSB7XG4gICAgbmFtZSA9IFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuY29uZmx1ZW5jZTtcbiAgICBsb2dGaWxlUGF0aCA9ICcvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2NvbmZsdWVuY2UvbG9ncy9hdGxhc3NpYW4tY29uZmx1ZW5jZS5sb2cnO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIGdldFNlcnZpY2UoKSB7XG4gICAgICAgIGNvbnN0IGVudmlyb25tZW50ID0gdGhpcy5nZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnVpbGQ6IHtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzJyksXG4gICAgICAgICAgICAgICAgZG9ja2VyZmlsZV9pbmxpbmU6IGBcbkZST00gJHt0aGlzLmdldERvY2tlckJhc2VUYWcoKX1cbkNPUFkgLi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXIgL29wdC9hdGxhc3NpYW4vY29uZmx1ZW5jZS9jb25mbHVlbmNlL1dFQi1JTkYvbGliL215c3FsLWNvbm5lY3Rvci1qLTguMy4wLmphclxuQ09QWSAuL3F1aWNrcmVsb2FkLTUuMC40LmphciAvb3B0L2F0bGFzc2lhbi9jb25mbHVlbmNlL2NvbmZsdWVuY2UvV0VCLUlORi9hdGxhc3NpYW4tYnVuZGxlZC1wbHVnaW5zL3F1aWNrcmVsb2FkLTUuMC40LmphclxuUlVOIGVjaG8gXCIvb3B0L3F1aWNrcmVsb2FkXCIgPiAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2NvbmZsdWVuY2UvcXVpY2tyZWxvYWQucHJvcGVydGllczsgXFxcbiAgICBta2RpciAtcCAvb3B0L3F1aWNrcmVsb2FkOyBcXFxuICAgIGNob3duIC1SIGNvbmZsdWVuY2U6Y29uZmx1ZW5jZSAvb3B0L3F1aWNrcmVsb2FkO1xuXG5SVU4gY2hvd24gLVIgY29uZmx1ZW5jZTpjb25mbHVlbmNlIC9vcHQvYXRsYXNzaWFuL2NvbmZsdWVuY2VgXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcG9ydHM6IFtcbiAgICAgICAgICAgICAgICBgJHt0aGlzLm9wdGlvbnMucG9ydCB8fCA4MH06ODA5MGAsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLmRlYnVnID8gWyc1MDA1OjUwMDUnXSA6IFtdLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGVudmlyb25tZW50LFxuICAgICAgICAgICAgbmV0d29ya3M6IFsnc2hhcmVkJ11cbiAgICAgICAgfTtcbiAgICB9XG4gICAgZ2V0SlZNQXJncygpIHtcbiAgICAgICAgY29uc3QgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUyA9IHN1cGVyLmdldEpWTUFyZ3MoKTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5kZWJ1Zykge1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctWGRlYnVnJyk7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1YcnVuamR3cDp0cmFuc3BvcnQ9ZHRfc29ja2V0LGFkZHJlc3M9Kjo1MDA1LHNlcnZlcj15LHN1c3BlbmQ9bicpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctRGNvbS5zdW4ubWFuYWdlbWVudC5qbXhyZW1vdGUucG9ydD05OTk5Jyk7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1EY29tLnN1bi5tYW5hZ2VtZW50LmpteHJlbW90ZS5ybWkucG9ydD05OTk4Jyk7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1EY29tLnN1bi5tYW5hZ2VtZW50LmpteHJlbW90ZS5hdXRoZW50aWNhdGU9ZmFsc2UnKTtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLURjb20uc3VuLm1hbmFnZW1lbnQuam14cmVtb3RlLnNzbD1mYWxzZScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJpdmF0ZSBNZXRob2RzXG4gICAgZ2V0RW52aXJvbm1lbnRWYXJpYWJsZXMoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMuY29udGV4dFBhdGggPyB7ICdBVExfVE9NQ0FUX0NPTlRFWFRQQVRIJzogdGhpcy5vcHRpb25zLmNvbnRleHRQYXRoIH0gOiAnJyxcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy54bXMgPyB7ICdKVk1fTUlOSU1VTV9NRU1PUlknOiB0aGlzLm9wdGlvbnMueG1zIH0gOiAnJyxcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy54bXggPyB7ICdKVk1fTUFYSU1VTV9NRU1PUlknOiB0aGlzLm9wdGlvbnMueG14IH0gOiAnJyxcbiAgICAgICAgICAgICdKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTJzogdGhpcy5nZXRKVk1BcmdzKCkuam9pbignICcpLFxuICAgICAgICAgICAgJ0FUTF9MSUNFTlNFX0tFWSc6IHRpbWVib21iLmNvbmZsdWVuY2UsXG4gICAgICAgICAgICAnQVRMX0pEQkNfVVJMJzogdGhpcy5kYXRhYmFzZS51cmwsXG4gICAgICAgICAgICAnQVRMX0pEQkNfVVNFUic6IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy51c2VybmFtZSxcbiAgICAgICAgICAgICdBVExfSkRCQ19QQVNTV09SRCc6IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy5wYXNzd29yZCxcbiAgICAgICAgICAgICdBVExfREJfVFlQRSc6IGAke3RoaXMuZGF0YWJhc2Uub3B0aW9ucy5uYW1lfWAsXG4gICAgICAgIH07XG4gICAgfVxuICAgIDtcbn1cbiIsImltcG9ydCB7IHRpbWVib21iIH0gZnJvbSAnLi4vaGVscGVycy9saWNlbmNlcyc7XG5pbXBvcnQgeyB0b0Fic29sdXRlUGF0aCB9IGZyb20gJy4uL2hlbHBlcnMvdG9BYnNvbHV0ZVBhdGgnO1xuaW1wb3J0IHsgU3VwcG9ydGVkQXBwbGljYXRpb25zIH0gZnJvbSAnLi4vdHlwZXMvQXBwbGljYXRpb24nO1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5leHBvcnQgY2xhc3MgSmlyYSBleHRlbmRzIEJhc2Uge1xuICAgIG5hbWUgPSBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmppcmE7XG4gICAgbG9nRmlsZVBhdGggPSAnL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9qaXJhL2xvZy9hdGxhc3NpYW4tamlyYS5sb2cnO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIGdldFNlcnZpY2UoKSB7XG4gICAgICAgIGNvbnN0IGVudmlyb25tZW50ID0gdGhpcy5nZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnVpbGQ6IHtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzJyksXG4gICAgICAgICAgICAgICAgZG9ja2VyZmlsZV9pbmxpbmU6IGBcbkZST00gJHt0aGlzLmdldERvY2tlckJhc2VUYWcoKX1cbkNPUFkgLi9qaXJhLWRhdGEtZ2VuZXJhdG9yLTUuMC4wLmphciAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2ppcmEvcGx1Z2lucy9pbnN0YWxsZWQtcGx1Z2lucy9qaXJhLWRhdGEtZ2VuZXJhdG9yLTUuMC4wLmphclxuQ09QWSAuL215c3FsLWNvbm5lY3Rvci1qLTguMy4wLmphciAvb3B0L2F0bGFzc2lhbi9qaXJhL2xpYi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXJcbkNPUFkgLi9xdWlja3JlbG9hZC01LjAuNC5qYXIgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9qaXJhL3BsdWdpbnMvaW5zdGFsbGVkLXBsdWdpbnMvcXVpY2tyZWxvYWQtNS4wLjQuamFyXG5SVU4gZWNobyBcIi9vcHQvcXVpY2tyZWxvYWRcIiA+IC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvamlyYS9xdWlja3JlbG9hZC5wcm9wZXJ0aWVzOyBcXFxuICAgIG1rZGlyIC1wIC9vcHQvcXVpY2tyZWxvYWQ7IFxcXG4gICAgY2hvd24gLVIgamlyYTpqaXJhIC9vcHQvcXVpY2tyZWxvYWQ7XG5cblJVTiBjaG93biAtUiBqaXJhOmppcmEgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9qaXJhYFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBvcnRzOiBbXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5vcHRpb25zLnBvcnR9OjgwODBgLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy5kZWJ1ZyA/IFsnNTAwNTo1MDA1J10gOiBbXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudCxcbiAgICAgICAgICAgIG5ldHdvcmtzOiBbJ3NoYXJlZCddXG4gICAgICAgIH07XG4gICAgfVxuICAgIGdldEpWTUFyZ3MoKSB7XG4gICAgICAgIGNvbnN0IEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MgPSBzdXBlci5nZXRKVk1BcmdzKCk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLVhkZWJ1ZycpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctYWdlbnRsaWI6amR3cD10cmFuc3BvcnQ9ZHRfc29ja2V0LHNlcnZlcj15LHN1c3BlbmQ9bixhZGRyZXNzPSo6NTAwNScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJpdmF0ZSBNZXRob2RzXG4gICAgZ2V0RW52aXJvbm1lbnRWYXJpYWJsZXMoKSB7XG4gICAgICAgIC8vIEZvciBzb21lIHJlYXNvbiwgSmlyYSB1c2VzIGEgZGlmZmVyZW50IHR5cGUgZm9yIHBvc3RncmVzXG4gICAgICAgIGNvbnN0IGRiVHlwZSA9IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy5uYW1lID09PSAncG9zdGdyZXNxbCcgPyAncG9zdGdyZXM3MicgOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMubmFtZTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy5jb250ZXh0UGF0aCA/IHsgJ0FUTF9UT01DQVRfQ09OVEVYVFBBVEgnOiB0aGlzLm9wdGlvbnMuY29udGV4dFBhdGggfSA6ICcnLFxuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnhtcyA/IHsgJ0pWTV9NSU5JTVVNX01FTU9SWSc6IHRoaXMub3B0aW9ucy54bXMgfSA6ICcnLFxuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnhteCA/IHsgJ0pWTV9NQVhJTVVNX01FTU9SWSc6IHRoaXMub3B0aW9ucy54bXggfSA6ICcnLFxuICAgICAgICAgICAgJ0pWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MnOiB0aGlzLmdldEpWTUFyZ3MoKS5qb2luKCcgJyksXG4gICAgICAgICAgICAnQVRMX0xJQ0VOU0VfS0VZJzogdGltZWJvbWIuY29uZmx1ZW5jZSxcbiAgICAgICAgICAgICdBVExfSkRCQ19VUkwnOiB0aGlzLmRhdGFiYXNlLnVybCxcbiAgICAgICAgICAgICdBVExfSkRCQ19VU0VSJzogdGhpcy5kYXRhYmFzZS5vcHRpb25zLnVzZXJuYW1lLFxuICAgICAgICAgICAgJ0FUTF9KREJDX1BBU1NXT1JEJzogdGhpcy5kYXRhYmFzZS5vcHRpb25zLnBhc3N3b3JkLFxuICAgICAgICAgICAgJ0FUTF9EQl9EUklWRVInOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMuZHJpdmVyLFxuICAgICAgICAgICAgJ0FUTF9EQl9UWVBFJzogZGJUeXBlLFxuICAgICAgICAgICAgJ0pJUkFfU0VUVVBfTElDRU5TRSc6IHRpbWVib21iLmppcmFcbiAgICAgICAgfTtcbiAgICB9XG4gICAgO1xufVxuIiwiaW1wb3J0IHsgQmFtYm9vIH0gZnJvbSAnLi4vYXBwbGljYXRpb25zL2JhbWJvbyc7XG5pbXBvcnQgeyBCaXRidWNrZXQgfSBmcm9tICcuLi9hcHBsaWNhdGlvbnMvYml0YnVja2V0JztcbmltcG9ydCB7IENvbmZsdWVuY2UgfSBmcm9tICcuLi9hcHBsaWNhdGlvbnMvY29uZmx1ZW5jZSc7XG5pbXBvcnQgeyBKaXJhIH0gZnJvbSAnLi4vYXBwbGljYXRpb25zL2ppcmEnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25PcHRpb25zLCBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5leHBvcnQgY29uc3QgZ2V0QXBwbGljYXRpb24gPSAob3B0aW9ucykgPT4ge1xuICAgIHN3aXRjaCAob3B0aW9ucy5uYW1lKSB7XG4gICAgICAgIGNhc2UgU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5qaXJhOiByZXR1cm4gbmV3IEppcmEoQXBwbGljYXRpb25PcHRpb25zLnBhcnNlKG9wdGlvbnMpKTtcbiAgICAgICAgY2FzZSBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2U6IHJldHVybiBuZXcgQ29uZmx1ZW5jZShBcHBsaWNhdGlvbk9wdGlvbnMucGFyc2Uob3B0aW9ucykpO1xuICAgICAgICBjYXNlIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vOiByZXR1cm4gbmV3IEJhbWJvbyhBcHBsaWNhdGlvbk9wdGlvbnMucGFyc2Uob3B0aW9ucykpO1xuICAgICAgICBjYXNlIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYml0YnVja2V0OiByZXR1cm4gbmV3IEJpdGJ1Y2tldChBcHBsaWNhdGlvbk9wdGlvbnMucGFyc2Uob3B0aW9ucykpO1xuICAgIH1cbn07XG4iLCJpbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyB0b0Fic29sdXRlUGF0aCB9IGZyb20gJy4vdG9BYnNvbHV0ZVBhdGgnO1xuZXhwb3J0IGNvbnN0IGdldFZlcnNpb25zID0gKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnQgPSByZWFkRmlsZVN5bmModG9BYnNvbHV0ZVBhdGgoJy4uLy4uL2Fzc2V0cy92ZXJzaW9ucy5qc29uJyksICd1dGYtOCcpO1xuICAgIGNvbnN0IHZlcnNpb25zID0gSlNPTi5wYXJzZShjb250ZW50KTtcbiAgICByZXR1cm4gdmVyc2lvbnM7XG59O1xuIiwiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0IHsgQ29tbWFuZCBhcyBDb21tYW5kZXIsIEludmFsaWRPcHRpb25Bcmd1bWVudEVycm9yLCBPcHRpb24gfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgZ3JhY2VmdWxFeGl0IH0gZnJvbSAnZXhpdC1ob29rJztcbmltcG9ydCB7IEFjdGlvbkhhbmRsZXIgfSBmcm9tICcuLi9oZWxwZXJzL0FjdGlvbkhhbmRsZXInO1xuaW1wb3J0IHsgQU1QUyB9IGZyb20gJy4uL2hlbHBlcnMvYW1wcyc7XG5pbXBvcnQgeyBGaWxlV2F0Y2hlciB9IGZyb20gJy4uL2hlbHBlcnMvRmlsZVdhdGNoZXInO1xuaW1wb3J0IHsgZ2V0QXBwbGljYXRpb24gfSBmcm9tICcuLi9oZWxwZXJzL2dldEFwcGxpY2F0aW9uJztcbmltcG9ydCB7IGdldFZlcnNpb25zIH0gZnJvbSAnLi4vaGVscGVycy9nZXRWZXJzaW9ucyc7XG5pbXBvcnQgeyBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMgfSBmcm9tICcuLi90eXBlcy9EYXRhYmFzZSc7XG5jb25zdCBwcm9ncmFtID0gbmV3IENvbW1hbmRlcigpO1xuY29uc3QgdmVyc2lvbnMgPSBnZXRWZXJzaW9ucygpO1xuY29uc3QgQ29tbWFuZCA9ICgpID0+IHtcbiAgICBsZXQgaW5zdGFuY2UgPSBudWxsO1xuICAgIGxldCBxdWlja1JlbG9hZCA9IG51bGw7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgYWN0aW9uOiAob3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbXBzID0gbmV3IEFNUFMoe1xuICAgICAgICAgICAgICAgICAgICBjd2Q6IG9wdGlvbnMuY3dkLFxuICAgICAgICAgICAgICAgICAgICBwcm9maWxlczogb3B0aW9ucy5hY3RpdmF0ZVByb2ZpbGVzPy5zcGxpdCgnLCcpIHx8IFtdXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKCFhbXBzLmlzQXRsYXNzaWFuUGx1Z2luKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZmluZCBhbiBBdGxhc3NpYW4gUGx1Z2luIHByb2plY3QgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IPCfpJQnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IGFtcHMuZ2V0QXBwbGljYXRpb24oKTtcbiAgICAgICAgICAgICAgICBpZiAoIW5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgQXRsYXNzaWFuIFBsdWdpbiBwcm9qZWN0IGRvZXMgbm90IGNvbnRhaW4gYW4gQU1QUyBjb25maWd1cmF0aW9uLCB1bmFibGUgdG8gZGV0ZWN0IHByb2R1Y3Qg8J+YsCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbnMudGFnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlcnNpb24gPSBhbXBzLmdldEFwcGxpY2F0aW9uVmVyc2lvbigpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGRldGVybWluZSB2ZXJzaW9uIGZyb20gQU1QUyBhbmQgbm8gcHJvZHVjdCB2ZXJzaW9uIHByb3ZpZGVkICgtLXRhZyknKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudGFnID0gdmVyc2lvbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXZlcnNpb25zW25hbWVdLmluY2x1ZGVzKG9wdGlvbnMudGFnKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFByb2R1Y3QgdmVyc2lvbiAnJHtvcHRpb25zLnRhZ30nIGlzIGludmFsaWQuIEFsbG93ZWQgY2hvaWNlcyBhcmUgJHt2ZXJzaW9uc1tuYW1lXS5qb2luKCcsICcpfS5gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuZGF0YWJhc2VUYWcgJiYgIXZlcnNpb25zW29wdGlvbnMuZGF0YWJhc2VdLmluY2x1ZGVzKG9wdGlvbnMuZGF0YWJhc2VUYWcpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRGF0YWJhc2UgdGFnICcke29wdGlvbnMuZGF0YWJhc2VUYWd9JyBpcyBpbnZhbGlkLiBBbGxvd2VkIGNob2ljZXMgYXJlICR7dmVyc2lvbnNbb3B0aW9ucy5kYXRhYmFzZV0uam9pbignLCAnKX0uYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLm9iciAmJiAhb3B0aW9ucy51c2VybmFtZSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wdGlvbkFyZ3VtZW50RXJyb3IoJ01pc3NpbmcgYXJndW1lbnQgXCItLXVzZXJuYW1lXCIsIHJlcXVpcmVkIGZvciBpbnN0YWxsaW5nIE9CUiBhcnRpZmFjdHMnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAob3B0aW9ucy5vYnIgJiYgIW9wdGlvbnMucGFzc3dvcmQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcHRpb25Bcmd1bWVudEVycm9yKCdNaXNzaW5nIGFyZ3VtZW50IFwiLS1wYXNzd29yZFwiLCByZXF1aXJlZCBmb3IgaW5zdGFsbGluZyBPQlIgYXJ0aWZhY3RzJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG1hdmVuT3B0cyA9IHByb2dyYW0uYXJncy5zbGljZSgpO1xuICAgICAgICAgICAgICAgIG1hdmVuT3B0cy5wdXNoKC4uLm9wdGlvbnMuYWN0aXZhdGVQcm9maWxlcyA/IFsnLVAnLCBvcHRpb25zLmFjdGl2YXRlUHJvZmlsZXNdIDogW10pO1xuICAgICAgICAgICAgICAgIHF1aWNrUmVsb2FkID0gRmlsZVdhdGNoZXIobmFtZSwgb3B0aW9ucywgbWF2ZW5PcHRzKTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZSA9IGdldEFwcGxpY2F0aW9uKHsgLi4ub3B0aW9ucywgbmFtZSB9KTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgU3RhcnRpbmcgJHtpbnN0YW5jZS5uYW1lfS4uLiDwn5KDYCk7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2Uuc3RhcnQoKS50aGVuKHJlc29sdmUpLmNhdGNoKHJlamVjdCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3JIYW5kbGVyOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAocXVpY2tSZWxvYWQpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgU3RvcHBpbmcgZmlsZXN5c3RlbSB3YXRjaGVyLi4uIOKPs2ApO1xuICAgICAgICAgICAgICAgIGF3YWl0IHF1aWNrUmVsb2FkLmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaW5zdGFuY2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgU3RvcHBpbmcgJHtpbnN0YW5jZS5uYW1lfS4uLiDwn5KUYCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgaW5zdGFuY2Uuc3RvcCgpLmNhdGNoKCgpID0+IG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc29sZS5sb2coYFN1Y2Nlc3NmdWxseSBzdG9wcGVkIGFsbCBydW5uaW5nIHByb2Nlc3NlcyDwn5KqYCk7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbnByb2dyYW1cbiAgICAubmFtZSgnZGNkeCBkZWJ1ZycpXG4gICAgLmRlc2NyaXB0aW9uKGBTdGFydCB0aGUgaG9zdCBhcHBsaWNhdGlvbiBpbiBkZXYgbW9kZSBiYXNlZCBvbiB0aGUgQXRsYXNzaWFuIE1hdmVuIFBsdWdpbiBTdWl0ZSAoQU1QUykgY29uZmlndXJhdGlvbi5cbkFNUFMgY29uZmlndXJhdGlvbiBjYW4gYmUgb3ZlcnJpZGRlbiBieSB1c2luZyBhbnkgb2YgdGhlIGNvbW1hbmQtbGluZSBvcHRpb25zIGJlbG93LlxuXG5UaGlzIGNvbW1hbmQgd2lsbCBhdXRvbWF0aWNhbGx5IHdhdGNoIGZvciBmaWxlIGNoYW5nZXMgYW5kIGluc3RhbGwgdGhlIGFwcCBpbiB0aGUgcnVubmluZyBhcHBsaWNhdGlvbi5cblxuWW91IGNhbiBhZGQgTWF2ZW4gYnVpbGQgYXJndW1lbnRzIGFmdGVyIHRoZSBjb21tYW5kIG9wdGlvbnNgKVxuICAgIC51c2FnZSgnW29wdGlvbnNdIFsuLi5tYXZlbl9hcmd1bWVudHNdJylcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy10LCAtLXRhZyA8bmFtZT4nLCAnVGhlIERvY2tlciB0YWcgb2YgdGhlIGhvc3QgYXBwbGljYXRpb24nKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1kLCAtLWRhdGFiYXNlIDxuYW1lPicsICdUaGUgZGF0YWJhc2UgZW5naW5lIG9uIHdoaWNoIHRoZSBob3N0IGFwcGxpY2F0aW9uIHdpbGwgcnVuJykuY2hvaWNlcyhPYmplY3QudmFsdWVzKFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMpKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbCkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWRhdGFiYXNlLXRhZyA8bmFtZT4nLCAnVGhlIERvY2tlciB0YWcgb2YgdGhlIGRhdGFiYXNlIGVuZ2luZScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLXAsIC0tcG9ydCA8cG9ydD4nLCAnVGhlIEhUVFAgcG9ydCBvbiB3aGljaCB0aGUgaG9zdCBhcHBsaWNhdGlvbiB3aWxsIGJlIGFjY2Vzc2libGUnKS5kZWZhdWx0KCc4MCcpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLWMsIC0tY29udGV4dFBhdGggPGNvbnRleHRQYXRoPicsICdUaGUgY29udGV4dCBwYXRoIG9uIHdoaWNoIHRoZSBob3N0IGFwcGxpY2F0aW9uIHdpbGwgYmUgYWNjZXNzaWJsZScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS14bXMgPHZhbHVlPicsICdKVk0gbWluaW11bSBoZWFwIHNpemUnKS5kZWZhdWx0KCcxMDI0bScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS14bXggPHZhbHVlPicsICdKVk0gbWF4aW11bSBoZWFwIHNpemUnKS5kZWZhdWx0KCcxMDI0bScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1leHQgPHBhdHRlcm5zLi4uPicsICdHbG9iIHBhdHRlcm5zIHRvIHVzZSB3aGlsZSB3YXRjaGluZyBmb3IgZmlsZSBjaGFuZ2VzIChkZWZhdWx0cyB0byAqKi8qKScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLW8sIC0tb3V0cHV0RGlyZWN0b3J5IDxkaXJlY3Rvcnk+JywgJ091dHB1dCBkaXJlY3Rvcnkgd2hlcmUgdG8gbG9vayBmb3IgZ2VuZXJhdGVkIEpBUiBmaWxlcyAoZGVmYXVsdHMgdG8gYHRhcmdldGApJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLW9icicsICdVcGxvYWQgZ2VuZXJhdGVkIE9CUiBmaWxlIGluc3RlYWQgb2YgSkFSIGZpbGUgd2hlbiBpbnN0YWxsaW5nIHRoZSBhcHAnKS5kZWZhdWx0KGZhbHNlKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tdXNlcm5hbWUgPHVzZXJuYW1lPicsICdUaGUgdXNlcm5hbWUgb2YgdGhlIGFkbWluaXN0cmF0b3IgKHJlcXVpcmVkIHdpdGggLS1vYnIpJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLXBhc3N3b3JkIDxwYXNzd29yZD4nLCAnVGhlIHBhc3N3b3JkIG9mIHRoZSBhZG1pbmlzdHJhdG9yIChyZXF1aXJlZCB3aXRoIC0tb2JyKScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLVAsIC0tYWN0aXZhdGUtcHJvZmlsZXMgPGFyZz4nLCAnQ29tbWEtZGVsaW1pdGVkIGxpc3Qgb2YgcHJvZmlsZXMgdG8gYWN0aXZhdGUnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tY3dkIDxkaXJlY3Rvcnk+JywgJ1NwZWNpZnkgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IHdoZXJlIHRvIGZpbmQgdGhlIEFNUFMgY29uZmlndXJhdGlvbicpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1leGVjIDxjb21tYW5kPicsICdCdWlsZCBjb21tYW5kIHRvIHJ1biBpbnN0ZWFkIG9mIE1hdmVuJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWNsZWFuJywgJ1JlbW92ZSBkYXRhIGZpbGVzIGJlZm9yZSBzdGFydGluZyB0aGUgZGF0YWJhc2UnKS5kZWZhdWx0KGZhbHNlKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tcHJ1bmUnLCAnUmVtb3ZlIGRhdGEgZmlsZXMgd2hlbiBzdG9wcGluZyB0aGUgZGF0YWJhc2UnKS5kZWZhdWx0KGZhbHNlKSlcbiAgICAuYWN0aW9uKG9wdGlvbnMgPT4gQWN0aW9uSGFuZGxlcihwcm9ncmFtLCBDb21tYW5kKCksIHsgLi4ub3B0aW9ucywgZGVidWc6IHRydWUsIHdhdGNoOiB0cnVlLCBpbnN0YWxsOiB0cnVlIH0pKVxuICAgIC5zaG93SGVscEFmdGVyRXJyb3IodHJ1ZSk7XG5wcm9ncmFtLnBhcnNlQXN5bmMocHJvY2Vzcy5hcmd2KS5jYXRjaCgoKSA9PiBncmFjZWZ1bEV4aXQoMSkpO1xucHJvY2Vzcy5vbignU0lHSU5UJywgKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGBSZWNlaXZlZCB0ZXJtIHNpZ25hbCwgdHJ5aW5nIHRvIHN0b3AgZ3JhY2VmdWxseSDwn5KqYCk7XG4gICAgZ3JhY2VmdWxFeGl0KCk7XG59KTtcbiJdLCJuYW1lcyI6WyJ2ZXJzaW9ucyIsIkRvY2tlci5nZXRSdW5uaW5nQ29udGFpbmVySWRzIiwicmVzb2x2ZVBhdGgiLCJEb2NrZXIuY29weSIsIkJhc2UiLCJDb21tYW5kZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFTyxNQUFNLGFBQWEsR0FBRyxPQUFPLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsRUFBRSxPQUFPLEtBQUs7QUFDbkYsSUFBSSxNQUFNLEdBQUcsR0FBRyxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzFDLElBQUksTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEtBQUs7QUFDckMsUUFBUSxJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7QUFDOUIsUUFBUSxhQUFhLENBQUMsT0FBTyxJQUFJLEtBQUs7QUFDdEMsWUFBWSxJQUFJO0FBQ2hCLGdCQUFnQixJQUFJLElBQUksS0FBSyxDQUFDLEVBQUU7QUFDaEMsb0JBQW9CLE1BQU0sWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO0FBQzlELGlCQUFpQjtBQUNqQixnQkFBZ0IsSUFBSSxZQUFZLEVBQUU7QUFDbEMsb0JBQW9CLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7QUFDekQsaUJBQWlCO0FBQ2pCLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0Esb0JBQW9CLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqQyxpQkFBaUI7QUFDakIsYUFBYTtBQUNiLFlBQVksT0FBTyxHQUFHLEVBQUU7QUFDeEIsZ0JBQWdCLE1BQU0sT0FBTyxHQUFHLEdBQUcsWUFBWSxLQUFLLEdBQUcsR0FBRyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7QUFDekUsZ0JBQWdCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNoQyxhQUFhO0FBQ2IsU0FBUyxFQUFFO0FBQ1gsWUFBWSxJQUFJLEVBQUUsRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJO0FBQy9CLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSTtBQUNqQyxZQUFZLElBQUksR0FBRyxZQUFZLENBQUMsQ0FBQyxRQUFRLEVBQUU7QUFDM0MsZ0JBQWdCLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSTtBQUM1QyxvQkFBb0IsWUFBWSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDekcsaUJBQWlCLENBQUMsQ0FBQztBQUNuQixhQUFhO0FBQ2IsaUJBQWlCLElBQUksR0FBRyxZQUFZLEtBQUssSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7QUFDdEUsZ0JBQWdCLFlBQVksR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDOUMsYUFBYTtBQUNiLFlBQVksWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSTtBQUN4QixRQUFRLElBQUksT0FBTyxLQUFLLElBQUksRUFBRTtBQUM5QixZQUFZLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbkM7QUFDQTtBQUNBLFNBQVM7QUFDVCxhQUFhO0FBQ2IsWUFBWSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCLFNBQVM7QUFDVCxLQUFLLENBQUMsQ0FBQztBQUNQLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|