@effect-app/infra 0.87.4 → 0.88.0
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/.cache/effect/095519d034161945a8d2616a506d3e7f35a9b3d868814f44c747429c60fc4e7f.content +36 -2
- package/.cache/effect/095519d034161945a8d2616a506d3e7f35a9b3d868814f44c747429c60fc4e7f.hash +1 -1
- package/.cache/effect/134218688132dfbdea493cbe1f26e73449f2759121df35ddd5448346b59c9a8d.content +24 -6
- package/.cache/effect/134218688132dfbdea493cbe1f26e73449f2759121df35ddd5448346b59c9a8d.hash +1 -1
- package/.cache/effect/14eb9da4ca6d22162888c7fdb7f39ab772d2a2dc6625db6031ecdb32ac89158f.content +75 -40
- package/.cache/effect/14eb9da4ca6d22162888c7fdb7f39ab772d2a2dc6625db6031ecdb32ac89158f.hash +1 -1
- package/.cache/effect/1bfd92946b11da4292f2ed99dc0e322462b60559148f9524abc20e26f70779e1.hash +1 -1
- package/.cache/effect/49c1bd9ec26e6df78b994d8df0bfe21b119803fa4aa46349bf4679fd0f1e7cda.content +3 -1
- package/.cache/effect/49c1bd9ec26e6df78b994d8df0bfe21b119803fa4aa46349bf4679fd0f1e7cda.hash +1 -1
- package/.cache/effect/58d4ccde8bd2db7829706db5bebd01b99900ee83f0f6a8413b53d17cbd69f510.content +1 -1
- package/.cache/effect/58d4ccde8bd2db7829706db5bebd01b99900ee83f0f6a8413b53d17cbd69f510.hash +1 -1
- package/.cache/effect/72a5a16a6b62b63cd71719c833091128207d7e6c823cb32293549b3dd58c451b.content +15 -7
- package/.cache/effect/72a5a16a6b62b63cd71719c833091128207d7e6c823cb32293549b3dd58c451b.hash +1 -1
- package/.cache/effect/7a9c33db6aedaf00093a132c1d4e48e9d043cef05e932b8a37da24d44e224248.hash +1 -1
- package/.cache/effect/8594f0f42afc0641b00e88998000cc47382a1d07da31f4a148f7976701ca22d5.hash +1 -1
- package/.cache/effect/c67d971634d2dc8118b40452b61c9a51620c35809be4a89982476aa80701d852.hash +1 -1
- package/.cache/effect/f38adf43700dab905456a534a0690eaf882cff2cd576c731f23d6d14a3c3d659.content +5 -1
- package/.cache/effect/f38adf43700dab905456a534a0690eaf882cff2cd576c731f23d6d14a3c3d659.hash +1 -1
- package/CHANGELOG.md +17 -0
- package/_cjs/services/QueueMaker/memQueue.cjs +13 -12
- package/_cjs/services/QueueMaker/memQueue.cjs.map +1 -1
- package/_cjs/services/QueueMaker/sbqueue.cjs +23 -22
- package/_cjs/services/QueueMaker/sbqueue.cjs.map +1 -1
- package/_cjs/services/QueueMaker/service.cjs.map +1 -1
- package/_cjs/services/Store/Memory.cjs +5 -4
- package/_cjs/services/Store/Memory.cjs.map +1 -1
- package/_src/services/QueueMaker/memQueue.ts +16 -19
- package/_src/services/QueueMaker/sbqueue.ts +18 -21
- package/_src/services/QueueMaker/service.ts +1 -3
- package/_src/services/Store/Memory.ts +6 -4
- package/dist/services/QueueMaker/memQueue.d.ts +3 -3
- package/dist/services/QueueMaker/memQueue.d.ts.map +1 -1
- package/dist/services/QueueMaker/memQueue.js +11 -10
- package/dist/services/QueueMaker/sbqueue.d.ts +3 -3
- package/dist/services/QueueMaker/sbqueue.d.ts.map +1 -1
- package/dist/services/QueueMaker/sbqueue.js +20 -19
- package/dist/services/QueueMaker/service.d.ts +1 -2
- package/dist/services/QueueMaker/service.d.ts.map +1 -1
- package/dist/services/QueueMaker/service.js +1 -1
- package/dist/services/RepositoryBase.d.ts +1 -1
- package/dist/services/Store/Memory.d.ts +6 -2
- package/dist/services/Store/Memory.d.ts.map +1 -1
- package/dist/services/Store/Memory.js +5 -4
- package/package.json +11 -11
package/.cache/effect/72a5a16a6b62b63cd71719c833091128207d7e6c823cb32293549b3dd58c451b.content
CHANGED
|
@@ -65,12 +65,16 @@ export function codeFilter(filter) {
|
|
|
65
65
|
return gtCaseInsensitive(k, p.value);
|
|
66
66
|
case "gte":
|
|
67
67
|
return gteCaseInsensitive(k, p.value);
|
|
68
|
+
case "includes":
|
|
69
|
+
return k.includes(p.value);
|
|
70
|
+
case "not-includes":
|
|
71
|
+
return !k.includes(p.value);
|
|
68
72
|
case "contains":
|
|
69
|
-
return k.toLowerCase().includes(p.value.toLowerCase());
|
|
73
|
+
return k.toLowerCase().includes((p.value).toLowerCase());
|
|
70
74
|
case "ends-with":
|
|
71
|
-
return k.toLowerCase().endsWith(p.value.toLowerCase());
|
|
75
|
+
return k.toLowerCase().endsWith((p.value).toLowerCase());
|
|
72
76
|
case "starts-with":
|
|
73
|
-
return k.toLowerCase().startsWith(p.value.toLowerCase());
|
|
77
|
+
return k.toLowerCase().startsWith((p.value).toLowerCase());
|
|
74
78
|
case "not-eq":
|
|
75
79
|
return !compareCaseInsensitive(k, p.value);
|
|
76
80
|
case "eq":
|
|
@@ -97,12 +101,16 @@ export function codeFilter(filter) {
|
|
|
97
101
|
return gtCaseInsensitive(k, p.value);
|
|
98
102
|
case "gte":
|
|
99
103
|
return gteCaseInsensitive(k, p.value);
|
|
104
|
+
case "includes":
|
|
105
|
+
return k.includes(p.value);
|
|
106
|
+
case "not-includes":
|
|
107
|
+
return !k.includes(p.value);
|
|
100
108
|
case "contains":
|
|
101
|
-
return k.toLowerCase().includes(p.value.toLowerCase());
|
|
109
|
+
return k.toLowerCase().includes((p.value).toLowerCase());
|
|
102
110
|
case "ends-with":
|
|
103
|
-
return k.toLowerCase().endsWith(p.value.toLowerCase());
|
|
111
|
+
return k.toLowerCase().endsWith((p.value).toLowerCase());
|
|
104
112
|
case "starts-with":
|
|
105
|
-
return k.toLowerCase().startsWith(p.value.toLowerCase());
|
|
113
|
+
return k.toLowerCase().startsWith((p.value).toLowerCase());
|
|
106
114
|
case "not-eq":
|
|
107
115
|
return p.key.includes(".-1.")
|
|
108
116
|
? get(x, p.key.split(".-1.")[0])
|
|
@@ -167,4 +175,4 @@ function gteCaseInsensitive(valA, valB) {
|
|
|
167
175
|
? valA.toLowerCase() >= valB.toLowerCase()
|
|
168
176
|
: valA >= valB;
|
|
169
177
|
}
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL1N0b3JlL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBRS9DLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBSWhFLE9BQU8sVUFBVSxNQUFNLGFBQWEsQ0FBQTtBQUVwQyxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FDdEIsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUssRUFDZixFQUFFLENBQ0wsQ0FBQztJQUNDLEdBQUcsQ0FBQztJQUNKLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO0NBQ3JCLENBQVEsQ0FBQTtBQUNYLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FDekIsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLENBQXdELENBQUksRUFBRSxPQUFrQixFQUFFLEVBQUUsQ0FDcEcsb0JBQVcsUUFBUSxDQUFDLEVBQUMsQ0FBQztJQUNwQixJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUU7UUFDWCxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ04scUNBQUEsT0FBTyxFQUNXLEdBQUcsRUFBRSxDQUFDLElBQUksOEJBQThCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNyRixDQUFBO0tBQ0Y7SUFDRCxJQUFJLHVCQUFBLE9BQU8sQ0FBUyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUU7UUFDdkQsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ2IscUJBQVksSUFBSSw4QkFBOEIsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLEtB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QUFDLFdBQVcsRUFBRTtRQUN6QyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtBQUNqQixDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxJQUFzQixFQUFFLElBQXNCO0lBQ3hFLE9BQU8sT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVE7UUFDekQsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1FBQzFDLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFBO0FBQ2xCLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLElBQXNCLEVBQUUsSUFBc0I7SUFDdkUsT0FBTyxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUTtRQUN6RCxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUU7UUFDekMsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7QUFDakIsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsSUFBc0IsRUFBRSxJQUFzQjtJQUN4RSxPQUFPLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRO1FBQ3pELENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtRQUMxQyxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQTtBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0IH0gZnJvbSBcIkBlZmZlY3QtYXBwL3ByZWx1ZGUvdXRpbHNcIlxuXG5pbXBvcnQgeyBPcHRpbWlzdGljQ29uY3VycmVuY3lFeGNlcHRpb24gfSBmcm9tIFwiLi4vLi4vZXJyb3JzLmpzXCJcblxuaW1wb3J0IHR5cGUgeyBGaWx0ZXIsIEZpbHRlckpvaW5TZWxlY3QsIFBlcnNpc3RlbmNlTW9kZWxUeXBlLCBTdXBwb3J0ZWRWYWx1ZXMyIH0gZnJvbSBcIi4vc2VydmljZS5qc1wiXG5cbmltcG9ydCBvYmplY3RIYXNoIGZyb20gXCJvYmplY3QtaGFzaFwiXG5cbmV4cG9ydCBjb25zdCBtYWtlRVRhZyA9IDxFIGV4dGVuZHMgUGVyc2lzdGVuY2VNb2RlbFR5cGU8SWQ+LCBJZCBleHRlbmRzIHN0cmluZz4oXG4gIHsgX2V0YWcsIC4uLmUgfTogRVxuKTogRSA9PlxuICAoe1xuICAgIC4uLmUsXG4gICAgX2V0YWc6IG9iamVjdEhhc2goZSlcbiAgfSkgYXMgYW55XG5leHBvcnQgY29uc3QgbWFrZVVwZGF0ZUVUYWcgPVxuICAobmFtZTogc3RyaW5nKSA9PiA8RSBleHRlbmRzIFBlcnNpc3RlbmNlTW9kZWxUeXBlPElkPiwgSWQgZXh0ZW5kcyBzdHJpbmc+KGU6IEUsIGN1cnJlbnQ6IE9wdGlvbjxFPikgPT5cbiAgICBFZmZlY3QuZ2VuKGZ1bmN0aW9uKigkKSB7XG4gICAgICBpZiAoZS5fZXRhZykge1xuICAgICAgICB5aWVsZCogJChcbiAgICAgICAgICBjdXJyZW50XG4gICAgICAgICAgICAuZW5jYXNlSW5FZmZlY3QoKCkgPT4gbmV3IE9wdGltaXN0aWNDb25jdXJyZW5jeUV4Y2VwdGlvbihuYW1lLCBlLmlkLCBcIlwiLCBlLl9ldGFnKSlcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgaWYgKGN1cnJlbnQuaXNTb21lKCkgJiYgY3VycmVudC52YWx1ZS5fZXRhZyAhPT0gZS5fZXRhZykge1xuICAgICAgICByZXR1cm4geWllbGQqICQoXG4gICAgICAgICAgRWZmZWN0LmZhaWwobmV3IE9wdGltaXN0aWNDb25jdXJyZW5jeUV4Y2VwdGlvbihuYW1lLCBjdXJyZW50LnZhbHVlLmlkLCBjdXJyZW50LnZhbHVlLl9ldGFnLCBlLl9ldGFnKSlcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgY29uc3QgbmV3RSA9IG1ha2VFVGFnKGUpXG4gICAgICByZXR1cm4gbmV3RVxuICAgIH0pXG5cbmV4cG9ydCBmdW5jdGlvbiBjb2RlRmlsdGVyPEUgZXh0ZW5kcyB7IGlkOiBzdHJpbmcgfSwgTkUgZXh0ZW5kcyBFPihmaWx0ZXI6IEZpbHRlcjxORT4pIHtcbiAgcmV0dXJuICh4OiBFKSA9PlxuICAgIGZpbHRlci50eXBlID09PSBcInN0YXJ0c1dpdGhcIlxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgID8gbG93ZXJjYXNlSWZTdHJpbmcoKHggYXMgYW55KVtmaWx0ZXIuYnldKS5zdGFydHNXaXRoKGZpbHRlci52YWx1ZS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICA/IE9wdGlvbih4IGFzIHVua25vd24gYXMgTkUpXG4gICAgICAgIDogT3B0aW9uLm5vbmVcbiAgICAgIDogZmlsdGVyLnR5cGUgPT09IFwiZW5kc1dpdGhcIlxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgID8gbG93ZXJjYXNlSWZTdHJpbmcoKHggYXMgYW55KVtmaWx0ZXIuYnldKS5lbmRzV2l0aChmaWx0ZXIudmFsdWUudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgPyBPcHRpb24oeCBhcyB1bmtub3duIGFzIE5FKVxuICAgICAgICA6IE9wdGlvbi5ub25lXG4gICAgICA6IGZpbHRlci50eXBlID09PSBcImNvbnRhaW5zXCJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1jYWxsXG4gICAgICA/IGxvd2VyY2FzZUlmU3RyaW5nKCh4IGFzIGFueSlbZmlsdGVyLmJ5XSkuaW5jbHVkZXMoZmlsdGVyLnZhbHVlLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgID8gT3B0aW9uKHggYXMgdW5rbm93biBhcyBORSlcbiAgICAgICAgOiBPcHRpb24ubm9uZVxuICAgICAgOiBmaWx0ZXIudHlwZSA9PT0gXCJqb2luX2ZpbmRcIlxuICAgICAgPyBmaWx0ZXIua2V5cy5zb21lKChrKSA9PiB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBnZXQoeCwgaykgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXVxuICAgICAgICAgIC8vIHdlIG1pbWljIHRoZSBiZWhhdmlvciBvZiBjb3Ntb3NkYjsgaWYgdGhlIHNoYXBlIGluIGRiIGRvZXMgbm90IG1hdGNoIHdoYXQgd2UncmUgbG9va2luZyBmb3IsIHdlIGltYWdpbmUgZmFsc2UgaGl0XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgICAmJiB2YWx1ZS5zb21lKCh2KSA9PiBjb21wYXJlQ2FzZUluc2Vuc2l0aXZlKHZbZmlsdGVyLnZhbHVlS2V5XSwgZmlsdGVyLnZhbHVlKSlcbiAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgICAgID8gT3B0aW9uKHggYXMgdW5rbm93biBhcyBORSlcbiAgICAgICAgOiBPcHRpb24ubm9uZVxuICAgICAgLy8gVE9ETzogc3VwcG9ydCBtaXhlZCBvci9hbmRcbiAgICAgIDogZmlsdGVyLm1vZGUgPT09IFwib3JcIlxuICAgICAgPyBmaWx0ZXJcbiAgICAgICAgICAud2hlcmVcbiAgICAgICAgICAuc29tZSgocCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgayA9IGdldCh4LCBwLmtleSlcbiAgICAgICAgICAgIHN3aXRjaCAocC50KSB7XG4gICAgICAgICAgICAgIGNhc2UgXCJpblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBwLnZhbHVlLmluY2x1ZGVzKGspXG4gICAgICAgICAgICAgIGNhc2UgXCJub3QtaW5cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gIXAudmFsdWUuaW5jbHVkZXMoaylcbiAgICAgICAgICAgICAgY2FzZSBcImx0XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGx0Q2FzZUluc2Vuc2l0aXZlKGssIHAudmFsdWUpXG4gICAgICAgICAgICAgIGNhc2UgXCJsdGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbHRlQ2FzZUluc2Vuc2l0aXZlKGssIHAudmFsdWUpXG4gICAgICAgICAgICAgIGNhc2UgXCJndFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBndENhc2VJbnNlbnNpdGl2ZShrLCBwLnZhbHVlKVxuICAgICAgICAgICAgICBjYXNlIFwiZ3RlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGd0ZUNhc2VJbnNlbnNpdGl2ZShrLCBwLnZhbHVlKVxuICAgICAgICAgICAgICBjYXNlIFwiY29udGFpbnNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gKGsgYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKChwLnZhbHVlIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICAgY2FzZSBcImVuZHMtd2l0aFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiAoayBhcyBzdHJpbmcpLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoKHAudmFsdWUgYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgICBjYXNlIFwic3RhcnRzLXdpdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gKGsgYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoKHAudmFsdWUgYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgICBjYXNlIFwibm90LWVxXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuICFjb21wYXJlQ2FzZUluc2Vuc2l0aXZlKGssIHAudmFsdWUpXG4gICAgICAgICAgICAgIGNhc2UgXCJlcVwiOlxuICAgICAgICAgICAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNhc2VJbnNlbnNpdGl2ZShrLCBwLnZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgID8gT3B0aW9uKHggYXMgdW5rbm93biBhcyBORSlcbiAgICAgICAgOiBPcHRpb24ubm9uZVxuICAgICAgOiBmaWx0ZXJcbiAgICAgICAgICAud2hlcmVcbiAgICAgICAgICAuZXZlcnkoKHApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGsgPSBnZXQoeCwgcC5rZXkpXG4gICAgICAgICAgICBzd2l0Y2ggKHAudCkge1xuICAgICAgICAgICAgICBjYXNlIFwiaW5cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gcC52YWx1ZS5pbmNsdWRlcyhrKVxuICAgICAgICAgICAgICBjYXNlIFwibm90LWluXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuICFwLnZhbHVlLmluY2x1ZGVzKGspXG4gICAgICAgICAgICAgIGNhc2UgXCJsdFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBsdENhc2VJbnNlbnNpdGl2ZShrLCBwLnZhbHVlKVxuICAgICAgICAgICAgICBjYXNlIFwibHRlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGx0ZUNhc2VJbnNlbnNpdGl2ZShrLCBwLnZhbHVlKVxuICAgICAgICAgICAgICBjYXNlIFwiZ3RcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZ3RDYXNlSW5zZW5zaXRpdmUoaywgcC52YWx1ZSlcbiAgICAgICAgICAgICAgY2FzZSBcImd0ZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBndGVDYXNlSW5zZW5zaXRpdmUoaywgcC52YWx1ZSlcbiAgICAgICAgICAgICAgY2FzZSBcImNvbnRhaW5zXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChrIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygocC52YWx1ZSBhcyBzdHJpbmcpLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRzLXdpdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gKGsgYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKChwLnZhbHVlIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICAgY2FzZSBcInN0YXJ0cy13aXRoXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChrIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKChwLnZhbHVlIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICAgY2FzZSBcIm5vdC1lcVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBwLmtleS5pbmNsdWRlcyhcIi4tMS5cIilcbiAgICAgICAgICAgICAgICAgID8gKGdldCh4LCBwLmtleS5zcGxpdChcIi4tMS5cIilbMF0pIGFzIGFueVtdKVxuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBvciB2cyBhbmRcbiAgICAgICAgICAgICAgICAgICAgLmV2ZXJ5KChfKSA9PiAhY29tcGFyZUNhc2VJbnNlbnNpdGl2ZShnZXQoXywgcC5rZXkuc3BsaXQoXCIuLTEuXCIpWzFdISksIHAudmFsdWUpKVxuICAgICAgICAgICAgICAgICAgOiAhY29tcGFyZUNhc2VJbnNlbnNpdGl2ZShrLCBwLnZhbHVlKVxuICAgICAgICAgICAgICBjYXNlIFwiZXFcIjpcbiAgICAgICAgICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHAua2V5LmluY2x1ZGVzKFwiLi0xLlwiKVxuICAgICAgICAgICAgICAgICAgPyAoZ2V0KHgsIHAua2V5LnNwbGl0KFwiLi0xLlwiKVswXSkgYXMgYW55W10pXG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IG9yIHZzIGFuZFxuICAgICAgICAgICAgICAgICAgICAuc29tZSgoXykgPT4gY29tcGFyZUNhc2VJbnNlbnNpdGl2ZShnZXQoXywgcC5rZXkuc3BsaXQoXCIuLTEuXCIpWzFdISksIHAudmFsdWUpKVxuICAgICAgICAgICAgICAgICAgOiBjb21wYXJlQ2FzZUluc2Vuc2l0aXZlKGssIHAudmFsdWUpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgID8gT3B0aW9uKHggYXMgdW5rbm93biBhcyBORSlcbiAgICAgIDogT3B0aW9uLm5vbmVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvZGVGaWx0ZXJKb2luU2VsZWN0PEUgZXh0ZW5kcyB7IGlkOiBzdHJpbmcgfSwgTkU+KFxuICBmaWx0ZXI6IEZpbHRlckpvaW5TZWxlY3Rcbikge1xuICByZXR1cm4gKHg6IEUpID0+XG4gICAgZmlsdGVyXG4gICAgICAua2V5c1xuICAgICAgLmZpbHRlck1hcCgoaykgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGdldCh4LCBrKVxuICAgICAgICAvLyB3ZSBtaW1pYyB0aGUgYmVoYXZpb3Igb2YgY29zbW9zZGI7IGlmIHRoZSBzaGFwZSBpbiBkYiBkb2VzIG5vdCBtYXRjaCB3aGF0IHdlJ3JlIGxvb2tpbmcgZm9yLCB3ZSBpbWFnaW5lIGZhbHNlIGhpdFxuICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgICA/IE9wdGlvbihcbiAgICAgICAgICAgICh2YWx1ZSBhcyByZWFkb25seSBORVtdKS5maWx0ZXJNYXAoKHYpID0+XG4gICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICAgIGNvbXBhcmVDYXNlSW5zZW5zaXRpdmUoKHYgYXMgYW55KVtmaWx0ZXIudmFsdWVLZXldLCBmaWx0ZXIudmFsdWUpXG4gICAgICAgICAgICAgICAgPyBPcHRpb24oeyAuLi52LCBfcm9vdElkOiB4LmlkIH0pXG4gICAgICAgICAgICAgICAgOiBPcHRpb24ubm9uZVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgICA6IE9wdGlvbi5ub25lXG4gICAgICB9KVxuICAgICAgLmZsYXRNYXAoKF8pID0+IF8pXG59XG5cbmZ1bmN0aW9uIGxvd2VyY2FzZUlmU3RyaW5nPFQ+KHZhbDogVCkge1xuICBpZiAodHlwZW9mIHZhbCA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiB2YWwudG9Mb3dlckNhc2UoKVxuICB9XG4gIHJldHVybiB2YWxcbn1cblxuZnVuY3Rpb24gY29tcGFyZUNhc2VJbnNlbnNpdGl2ZSh2YWxBOiB1bmtub3duLCB2YWxCOiB1bmtub3duKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsQiA9PT0gXCJzdHJpbmdcIiAmJiB0eXBlb2YgdmFsQSA9PT0gXCJzdHJpbmdcIlxuICAgID8gdmFsQS50b0xvd2VyQ2FzZSgpID09PSB2YWxCLnRvTG93ZXJDYXNlKClcbiAgICA6IHZhbEEgPT09IHZhbEJcbn1cblxuZnVuY3Rpb24gbHRDYXNlSW5zZW5zaXRpdmUodmFsQTogU3VwcG9ydGVkVmFsdWVzMiwgdmFsQjogU3VwcG9ydGVkVmFsdWVzMikge1xuICByZXR1cm4gdHlwZW9mIHZhbEIgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIHZhbEEgPT09IFwic3RyaW5nXCJcbiAgICA/IHZhbEEudG9Mb3dlckNhc2UoKSA8IHZhbEIudG9Mb3dlckNhc2UoKVxuICAgIDogdmFsQSA8IHZhbEJcbn1cblxuZnVuY3Rpb24gbHRlQ2FzZUluc2Vuc2l0aXZlKHZhbEE6IFN1cHBvcnRlZFZhbHVlczIsIHZhbEI6IFN1cHBvcnRlZFZhbHVlczIpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWxCID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiB2YWxBID09PSBcInN0cmluZ1wiXG4gICAgPyB2YWxBLnRvTG93ZXJDYXNlKCkgPD0gdmFsQi50b0xvd2VyQ2FzZSgpXG4gICAgOiB2YWxBIDw9IHZhbEJcbn1cblxuZnVuY3Rpb24gZ3RDYXNlSW5zZW5zaXRpdmUodmFsQTogU3VwcG9ydGVkVmFsdWVzMiwgdmFsQjogU3VwcG9ydGVkVmFsdWVzMikge1xuICByZXR1cm4gdHlwZW9mIHZhbEIgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIHZhbEEgPT09IFwic3RyaW5nXCJcbiAgICA/IHZhbEEudG9Mb3dlckNhc2UoKSA+IHZhbEIudG9Mb3dlckNhc2UoKVxuICAgIDogdmFsQSA+IHZhbEJcbn1cblxuZnVuY3Rpb24gZ3RlQ2FzZUluc2Vuc2l0aXZlKHZhbEE6IFN1cHBvcnRlZFZhbHVlczIsIHZhbEI6IFN1cHBvcnRlZFZhbHVlczIpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWxCID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiB2YWxBID09PSBcInN0cmluZ1wiXG4gICAgPyB2YWxBLnRvTG93ZXJDYXNlKCkgPj0gdmFsQi50b0xvd2VyQ2FzZSgpXG4gICAgOiB2YWxBID49IHZhbEJcbn1cbiJdfQ==
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL1N0b3JlL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBRS9DLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBSWhFLE9BQU8sVUFBVSxNQUFNLGFBQWEsQ0FBQTtBQUVwQyxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FDdEIsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUssRUFDZixFQUFFLENBQ0wsQ0FBQztJQUNDLEdBQUcsQ0FBQztJQUNKLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO0NBQ3JCLENBQVEsQ0FBQTtBQUNYLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FDekIsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLENBQXdELENBQUksRUFBRSxPQUFrQixFQUFFLEVBQUUsQ0FDcEcsb0JBQVcsUUFBUSxDQUFDLEVBQUMsQ0FBQztJQUNwQixJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUU7UUFDWCxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ04scUNBQUEsT0FBTyxFQUNXLEdBQUcsRUFBRSxDQUFDLElBQUksOEJBQThCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNyRixDQUFBO0tBQ0Y7SUFDRCxJQUFJLHVCQUFBLE9BQU8sQ0FBUyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUU7UUFDdkQsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ2IscUJBQVksSUFBSSw4QkFBOEIsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ3RHLENBQUE7S0FDRjtJQUNELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN4QixPQUFPLElBQUksQ0FBQTtBQUNiLENBQUMsQ0FBQyxDQUFBO0FBRU4sTUFBTSxVQUFVLFVBQVUsQ0FBeUMsTUFBa0I7SUFDbkYsT0FBTyxDQUFDLENBQUksRUFBRSxFQUFFLENBQ2QsTUFBTSxDQUFDLElBQUksS0FBSyxZQUFZO1FBQzFCLDhEQUE4RDtRQUM5RCxDQUFDLENBQUMsaUJBQWlCLENBQUUsQ0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQy9FLENBQUMsQ0FBQyxxQkFBTyxDQUFrQixDQUFDO1lBQzVCLENBQUMscUJBQVk7UUFDZixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVO1lBQzVCLDhEQUE4RDtZQUM5RCxDQUFDLENBQUMsaUJBQWlCLENBQUUsQ0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUM3RSxDQUFDLENBQUMscUJBQU8sQ0FBa0IsQ0FBQztnQkFDNUIsQ0FBQyxxQkFBWTtZQUNmLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFVBQVU7Z0JBQzVCLDhEQUE4RDtnQkFDOUQsNkRBQTZEO2dCQUM3RCxDQUFDLENBQUMsaUJBQWlCLENBQUUsQ0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUM3RSxDQUFDLENBQUMscUJBQU8sQ0FBa0IsQ0FBQztvQkFDNUIsQ0FBQyxxQkFBWTtnQkFDZixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxXQUFXO29CQUM3QixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTt3QkFDckIsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQThCLENBQUE7d0JBQ3BELG9IQUFvSDt3QkFDcEgsT0FBTyxDQUNMLEtBQUs7K0JBQ0YsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDL0UsQ0FBQTtvQkFDSCxDQUFDLENBQUM7d0JBQ0YsQ0FBQyxDQUFDLHFCQUFPLENBQWtCLENBQUM7d0JBQzVCLENBQUMscUJBQVk7b0JBQ2YsNkJBQTZCO29CQUM3QixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxJQUFJO3dCQUN0QixDQUFDLENBQUMsTUFBTTs2QkFDSCxLQUFLOzZCQUNMLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFOzRCQUNWLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBOzRCQUN2QixRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0NBQ1gsS0FBSyxJQUFJO29DQUNQLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0NBQzVCLEtBQUssUUFBUTtvQ0FDWCxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0NBQzdCLEtBQUssSUFBSTtvQ0FDUCxPQUFPLGlCQUFpQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7Z0NBQ3RDLEtBQUssS0FBSztvQ0FDUixPQUFPLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7Z0NBQ3ZDLEtBQUssSUFBSTtvQ0FDUCxPQUFPLGlCQUFpQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7Z0NBQ3RDLEtBQUssS0FBSztvQ0FDUixPQUFPLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7Z0NBQ3ZDLEtBQUssVUFBVTtvQ0FDYixPQUFRLENBQW1CLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtnQ0FDL0MsS0FBSyxjQUFjO29DQUNqQixPQUFPLENBQUUsQ0FBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO2dDQUNoRCxLQUFLLFVBQVU7b0NBQ2IsT0FBUSxDQUFZLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUE7Z0NBQ3RFLEtBQUssV0FBVztvQ0FDZCxPQUFRLENBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQTtnQ0FDdEUsS0FBSyxhQUFhO29DQUNoQixPQUFRLENBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQTtnQ0FDeEUsS0FBSyxRQUFRO29DQUNYLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO2dDQUM1QyxLQUFLLElBQUksQ0FBQztnQ0FDVixLQUFLLFNBQVM7b0NBQ1osT0FBTyxzQkFBc0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBOzZCQUM1Qzt3QkFDSCxDQUFDLENBQUM7NEJBQ0osQ0FBQyxDQUFDLHFCQUFPLENBQWtCLENBQUM7NEJBQzVCLENBQUMscUJBQVk7d0JBQ2YsQ0FBQyxDQUFDLE1BQU07NkJBQ0gsS0FBSzs2QkFDTCxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTs0QkFDWCxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTs0QkFDdkIsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dDQUNYLEtBQUssSUFBSTtvQ0FDUCxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFBO2dDQUM1QixLQUFLLFFBQVE7b0NBQ1gsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFBO2dDQUM3QixLQUFLLElBQUk7b0NBQ1AsT0FBTyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO2dDQUN0QyxLQUFLLEtBQUs7b0NBQ1IsT0FBTyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO2dDQUN2QyxLQUFLLElBQUk7b0NBQ1AsT0FBTyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO2dDQUN0QyxLQUFLLEtBQUs7b0NBQ1IsT0FBTyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO2dDQUN2QyxLQUFLLFVBQVU7b0NBQ2IsT0FBUSxDQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7Z0NBQy9DLEtBQUssY0FBYztvQ0FDakIsT0FBTyxDQUFFLENBQW1CLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtnQ0FDaEQsS0FBSyxVQUFVO29DQUNiLE9BQVEsQ0FBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFBO2dDQUN0RSxLQUFLLFdBQVc7b0NBQ2QsT0FBUSxDQUFZLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUE7Z0NBQ3RFLEtBQUssYUFBYTtvQ0FDaEIsT0FBUSxDQUFZLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUE7Z0NBQ3hFLEtBQUssUUFBUTtvQ0FDWCxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQzt3Q0FDM0IsQ0FBQyxDQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQVc7NENBQ3pDLGtCQUFrQjs2Q0FDakIsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7d0NBQ2xGLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7Z0NBQ3pDLEtBQUssSUFBSSxDQUFDO2dDQUNWLEtBQUssU0FBUztvQ0FDWixPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQzt3Q0FDM0IsQ0FBQyxDQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQVc7NENBQ3pDLGtCQUFrQjs2Q0FDakIsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO3dDQUNoRixDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTs2QkFDekM7d0JBQ0gsQ0FBQyxDQUFDOzRCQUNOLENBQUMsQ0FBQyxxQkFBTyxDQUFrQixDQUFDOzRCQUM1QixDQUFDLHFCQUFZLENBQUE7QUFDbkIsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsTUFBd0I7SUFFeEIsT0FBTyxDQUFDLENBQUksRUFBRSxFQUFFLENBQ2QsMEJBQUEsTUFBTTtTQUNILElBQUksRUFDTSxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ2YsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUN2QixvSEFBb0g7UUFDcEgsT0FBTyxLQUFLO1lBQ1YsQ0FBQyxDQUFDLHFCQUNBLDBCQUFDLEtBQXVCLEVBQVcsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN2Qyw4REFBOEQ7WUFDOUQsc0JBQXNCLENBQUUsQ0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUMvRCxDQUFDLENBQUMscUJBQU8sRUFBRSxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNqQyxDQUFDLHFCQUFZLENBQ2hCLENBQ0Y7WUFDRCxDQUFDLHFCQUFZLENBQUE7SUFDakIsQ0FBQyxDQUFDO1NBQ0QsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUN4QixDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBSSxHQUFNO0lBQ2xDLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFO1FBQzNCLE9BQU8sR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFBO0tBQ3pCO0lBQ0QsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDO0FBRUQsU0FBUyxzQkFBc0IsQ0FBQyxJQUFhLEVBQUUsSUFBYTtJQUMxRCxPQUFPLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRO1FBQ3pELENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssSUFBSSxDQUFDLFdBQVcsRUFBRTtRQUMzQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQTtBQUNuQixDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxJQUFzQixFQUFFLElBQXNCO0lBQ3ZFLE9BQU8sT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVE7UUFDekQsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFO1FBQ3pDLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO0FBQ2pCLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLElBQXNCLEVBQUUsSUFBc0I7SUFDeEUsT0FBTyxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUTtRQUN6RCxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7UUFDMUMsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUE7QUFDbEIsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUMsSUFBc0IsRUFBRSxJQUFzQjtJQUN2RSxPQUFPLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRO1FBQ3pELENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRTtRQUN6QyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtBQUNqQixDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxJQUFzQixFQUFFLElBQXNCO0lBQ3hFLE9BQU8sT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVE7UUFDekQsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1FBQzFDLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFBO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXQgfSBmcm9tIFwiQGVmZmVjdC1hcHAvcHJlbHVkZS91dGlsc1wiXG5cbmltcG9ydCB7IE9wdGltaXN0aWNDb25jdXJyZW5jeUV4Y2VwdGlvbiB9IGZyb20gXCIuLi8uLi9lcnJvcnMuanNcIlxuXG5pbXBvcnQgdHlwZSB7IEZpbHRlciwgRmlsdGVySm9pblNlbGVjdCwgUGVyc2lzdGVuY2VNb2RlbFR5cGUsIFN1cHBvcnRlZFZhbHVlczIgfSBmcm9tIFwiLi9zZXJ2aWNlLmpzXCJcblxuaW1wb3J0IG9iamVjdEhhc2ggZnJvbSBcIm9iamVjdC1oYXNoXCJcblxuZXhwb3J0IGNvbnN0IG1ha2VFVGFnID0gPEUgZXh0ZW5kcyBQZXJzaXN0ZW5jZU1vZGVsVHlwZTxJZD4sIElkIGV4dGVuZHMgc3RyaW5nPihcbiAgeyBfZXRhZywgLi4uZSB9OiBFXG4pOiBFID0+XG4gICh7XG4gICAgLi4uZSxcbiAgICBfZXRhZzogb2JqZWN0SGFzaChlKVxuICB9KSBhcyBhbnlcbmV4cG9ydCBjb25zdCBtYWtlVXBkYXRlRVRhZyA9XG4gIChuYW1lOiBzdHJpbmcpID0+IDxFIGV4dGVuZHMgUGVyc2lzdGVuY2VNb2RlbFR5cGU8SWQ+LCBJZCBleHRlbmRzIHN0cmluZz4oZTogRSwgY3VycmVudDogT3B0aW9uPEU+KSA9PlxuICAgIEVmZmVjdC5nZW4oZnVuY3Rpb24qKCQpIHtcbiAgICAgIGlmIChlLl9ldGFnKSB7XG4gICAgICAgIHlpZWxkKiAkKFxuICAgICAgICAgIGN1cnJlbnRcbiAgICAgICAgICAgIC5lbmNhc2VJbkVmZmVjdCgoKSA9PiBuZXcgT3B0aW1pc3RpY0NvbmN1cnJlbmN5RXhjZXB0aW9uKG5hbWUsIGUuaWQsIFwiXCIsIGUuX2V0YWcpKVxuICAgICAgICApXG4gICAgICB9XG4gICAgICBpZiAoY3VycmVudC5pc1NvbWUoKSAmJiBjdXJyZW50LnZhbHVlLl9ldGFnICE9PSBlLl9ldGFnKSB7XG4gICAgICAgIHJldHVybiB5aWVsZCogJChcbiAgICAgICAgICBFZmZlY3QuZmFpbChuZXcgT3B0aW1pc3RpY0NvbmN1cnJlbmN5RXhjZXB0aW9uKG5hbWUsIGN1cnJlbnQudmFsdWUuaWQsIGN1cnJlbnQudmFsdWUuX2V0YWcsIGUuX2V0YWcpKVxuICAgICAgICApXG4gICAgICB9XG4gICAgICBjb25zdCBuZXdFID0gbWFrZUVUYWcoZSlcbiAgICAgIHJldHVybiBuZXdFXG4gICAgfSlcblxuZXhwb3J0IGZ1bmN0aW9uIGNvZGVGaWx0ZXI8RSBleHRlbmRzIHsgaWQ6IHN0cmluZyB9LCBORSBleHRlbmRzIEU+KGZpbHRlcjogRmlsdGVyPE5FPikge1xuICByZXR1cm4gKHg6IEUpID0+XG4gICAgZmlsdGVyLnR5cGUgPT09IFwic3RhcnRzV2l0aFwiXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgPyBsb3dlcmNhc2VJZlN0cmluZygoeCBhcyBhbnkpW2ZpbHRlci5ieV0pLnN0YXJ0c1dpdGgoZmlsdGVyLnZhbHVlLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgID8gT3B0aW9uKHggYXMgdW5rbm93biBhcyBORSlcbiAgICAgICAgOiBPcHRpb24ubm9uZVxuICAgICAgOiBmaWx0ZXIudHlwZSA9PT0gXCJlbmRzV2l0aFwiXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgPyBsb3dlcmNhc2VJZlN0cmluZygoeCBhcyBhbnkpW2ZpbHRlci5ieV0pLmVuZHNXaXRoKGZpbHRlci52YWx1ZS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICA/IE9wdGlvbih4IGFzIHVua25vd24gYXMgTkUpXG4gICAgICAgIDogT3B0aW9uLm5vbmVcbiAgICAgIDogZmlsdGVyLnR5cGUgPT09IFwiY29udGFpbnNcIlxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWNhbGxcbiAgICAgID8gbG93ZXJjYXNlSWZTdHJpbmcoKHggYXMgYW55KVtmaWx0ZXIuYnldKS5pbmNsdWRlcyhmaWx0ZXIudmFsdWUudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgPyBPcHRpb24oeCBhcyB1bmtub3duIGFzIE5FKVxuICAgICAgICA6IE9wdGlvbi5ub25lXG4gICAgICA6IGZpbHRlci50eXBlID09PSBcImpvaW5fZmluZFwiXG4gICAgICA/IGZpbHRlci5rZXlzLnNvbWUoKGspID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IGdldCh4LCBrKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdXG4gICAgICAgICAgLy8gd2UgbWltaWMgdGhlIGJlaGF2aW9yIG9mIGNvc21vc2RiOyBpZiB0aGUgc2hhcGUgaW4gZGIgZG9lcyBub3QgbWF0Y2ggd2hhdCB3ZSdyZSBsb29raW5nIGZvciwgd2UgaW1hZ2luZSBmYWxzZSBoaXRcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICAgICYmIHZhbHVlLnNvbWUoKHYpID0+IGNvbXBhcmVDYXNlSW5zZW5zaXRpdmUodltmaWx0ZXIudmFsdWVLZXldLCBmaWx0ZXIudmFsdWUpKVxuICAgICAgICAgIClcbiAgICAgICAgfSlcbiAgICAgICAgPyBPcHRpb24oeCBhcyB1bmtub3duIGFzIE5FKVxuICAgICAgICA6IE9wdGlvbi5ub25lXG4gICAgICAvLyBUT0RPOiBzdXBwb3J0IG1peGVkIG9yL2FuZFxuICAgICAgOiBmaWx0ZXIubW9kZSA9PT0gXCJvclwiXG4gICAgICA/IGZpbHRlclxuICAgICAgICAgIC53aGVyZVxuICAgICAgICAgIC5zb21lKChwKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBrID0gZ2V0KHgsIHAua2V5KVxuICAgICAgICAgICAgc3dpdGNoIChwLnQpIHtcbiAgICAgICAgICAgICAgY2FzZSBcImluXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHAudmFsdWUuaW5jbHVkZXMoaylcbiAgICAgICAgICAgICAgY2FzZSBcIm5vdC1pblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiAhcC52YWx1ZS5pbmNsdWRlcyhrKVxuICAgICAgICAgICAgICBjYXNlIFwibHRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbHRDYXNlSW5zZW5zaXRpdmUoaywgcC52YWx1ZSlcbiAgICAgICAgICAgICAgY2FzZSBcImx0ZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBsdGVDYXNlSW5zZW5zaXRpdmUoaywgcC52YWx1ZSlcbiAgICAgICAgICAgICAgY2FzZSBcImd0XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGd0Q2FzZUluc2Vuc2l0aXZlKGssIHAudmFsdWUpXG4gICAgICAgICAgICAgIGNhc2UgXCJndGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZ3RlQ2FzZUluc2Vuc2l0aXZlKGssIHAudmFsdWUpXG4gICAgICAgICAgICAgIGNhc2UgXCJpbmNsdWRlc1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiAoayBhcyBBcnJheTxzdHJpbmc+KS5pbmNsdWRlcyhwLnZhbHVlKVxuICAgICAgICAgICAgICBjYXNlIFwibm90LWluY2x1ZGVzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuICEoayBhcyBBcnJheTxzdHJpbmc+KS5pbmNsdWRlcyhwLnZhbHVlKVxuICAgICAgICAgICAgICBjYXNlIFwiY29udGFpbnNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gKGsgYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKChwLnZhbHVlKS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgICBjYXNlIFwiZW5kcy13aXRoXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChrIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgocC52YWx1ZSkudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICAgY2FzZSBcInN0YXJ0cy13aXRoXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChrIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKChwLnZhbHVlKS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgICBjYXNlIFwibm90LWVxXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuICFjb21wYXJlQ2FzZUluc2Vuc2l0aXZlKGssIHAudmFsdWUpXG4gICAgICAgICAgICAgIGNhc2UgXCJlcVwiOlxuICAgICAgICAgICAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNhc2VJbnNlbnNpdGl2ZShrLCBwLnZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgID8gT3B0aW9uKHggYXMgdW5rbm93biBhcyBORSlcbiAgICAgICAgOiBPcHRpb24ubm9uZVxuICAgICAgOiBmaWx0ZXJcbiAgICAgICAgICAud2hlcmVcbiAgICAgICAgICAuZXZlcnkoKHApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGsgPSBnZXQoeCwgcC5rZXkpXG4gICAgICAgICAgICBzd2l0Y2ggKHAudCkge1xuICAgICAgICAgICAgICBjYXNlIFwiaW5cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gcC52YWx1ZS5pbmNsdWRlcyhrKVxuICAgICAgICAgICAgICBjYXNlIFwibm90LWluXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuICFwLnZhbHVlLmluY2x1ZGVzKGspXG4gICAgICAgICAgICAgIGNhc2UgXCJsdFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBsdENhc2VJbnNlbnNpdGl2ZShrLCBwLnZhbHVlKVxuICAgICAgICAgICAgICBjYXNlIFwibHRlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGx0ZUNhc2VJbnNlbnNpdGl2ZShrLCBwLnZhbHVlKVxuICAgICAgICAgICAgICBjYXNlIFwiZ3RcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZ3RDYXNlSW5zZW5zaXRpdmUoaywgcC52YWx1ZSlcbiAgICAgICAgICAgICAgY2FzZSBcImd0ZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBndGVDYXNlSW5zZW5zaXRpdmUoaywgcC52YWx1ZSlcbiAgICAgICAgICAgICAgY2FzZSBcImluY2x1ZGVzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChrIGFzIEFycmF5PHN0cmluZz4pLmluY2x1ZGVzKHAudmFsdWUpXG4gICAgICAgICAgICAgIGNhc2UgXCJub3QtaW5jbHVkZXNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gIShrIGFzIEFycmF5PHN0cmluZz4pLmluY2x1ZGVzKHAudmFsdWUpXG4gICAgICAgICAgICAgIGNhc2UgXCJjb250YWluc1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiAoayBhcyBzdHJpbmcpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoKHAudmFsdWUpLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRzLXdpdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gKGsgYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKChwLnZhbHVlKS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgICBjYXNlIFwic3RhcnRzLXdpdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gKGsgYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoKHAudmFsdWUpLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICAgICAgIGNhc2UgXCJub3QtZXFcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gcC5rZXkuaW5jbHVkZXMoXCIuLTEuXCIpXG4gICAgICAgICAgICAgICAgICA/IChnZXQoeCwgcC5rZXkuc3BsaXQoXCIuLTEuXCIpWzBdKSBhcyBhbnlbXSlcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogb3IgdnMgYW5kXG4gICAgICAgICAgICAgICAgICAgIC5ldmVyeSgoXykgPT4gIWNvbXBhcmVDYXNlSW5zZW5zaXRpdmUoZ2V0KF8sIHAua2V5LnNwbGl0KFwiLi0xLlwiKVsxXSEpLCBwLnZhbHVlKSlcbiAgICAgICAgICAgICAgICAgIDogIWNvbXBhcmVDYXNlSW5zZW5zaXRpdmUoaywgcC52YWx1ZSlcbiAgICAgICAgICAgICAgY2FzZSBcImVxXCI6XG4gICAgICAgICAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICAgICAgICAgIHJldHVybiBwLmtleS5pbmNsdWRlcyhcIi4tMS5cIilcbiAgICAgICAgICAgICAgICAgID8gKGdldCh4LCBwLmtleS5zcGxpdChcIi4tMS5cIilbMF0pIGFzIGFueVtdKVxuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBvciB2cyBhbmRcbiAgICAgICAgICAgICAgICAgICAgLnNvbWUoKF8pID0+IGNvbXBhcmVDYXNlSW5zZW5zaXRpdmUoZ2V0KF8sIHAua2V5LnNwbGl0KFwiLi0xLlwiKVsxXSEpLCBwLnZhbHVlKSlcbiAgICAgICAgICAgICAgICAgIDogY29tcGFyZUNhc2VJbnNlbnNpdGl2ZShrLCBwLnZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICA/IE9wdGlvbih4IGFzIHVua25vd24gYXMgTkUpXG4gICAgICA6IE9wdGlvbi5ub25lXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb2RlRmlsdGVySm9pblNlbGVjdDxFIGV4dGVuZHMgeyBpZDogc3RyaW5nIH0sIE5FPihcbiAgZmlsdGVyOiBGaWx0ZXJKb2luU2VsZWN0XG4pIHtcbiAgcmV0dXJuICh4OiBFKSA9PlxuICAgIGZpbHRlclxuICAgICAgLmtleXNcbiAgICAgIC5maWx0ZXJNYXAoKGspID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBnZXQoeCwgaylcbiAgICAgICAgLy8gd2UgbWltaWMgdGhlIGJlaGF2aW9yIG9mIGNvc21vc2RiOyBpZiB0aGUgc2hhcGUgaW4gZGIgZG9lcyBub3QgbWF0Y2ggd2hhdCB3ZSdyZSBsb29raW5nIGZvciwgd2UgaW1hZ2luZSBmYWxzZSBoaXRcbiAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgPyBPcHRpb24oXG4gICAgICAgICAgICAodmFsdWUgYXMgcmVhZG9ubHkgTkVbXSkuZmlsdGVyTWFwKCh2KSA9PlxuICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgICBjb21wYXJlQ2FzZUluc2Vuc2l0aXZlKCh2IGFzIGFueSlbZmlsdGVyLnZhbHVlS2V5XSwgZmlsdGVyLnZhbHVlKVxuICAgICAgICAgICAgICAgID8gT3B0aW9uKHsgLi4udiwgX3Jvb3RJZDogeC5pZCB9KVxuICAgICAgICAgICAgICAgIDogT3B0aW9uLm5vbmVcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgICAgOiBPcHRpb24ubm9uZVxuICAgICAgfSlcbiAgICAgIC5mbGF0TWFwKChfKSA9PiBfKVxufVxuXG5mdW5jdGlvbiBsb3dlcmNhc2VJZlN0cmluZzxUPih2YWw6IFQpIHtcbiAgaWYgKHR5cGVvZiB2YWwgPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gdmFsLnRvTG93ZXJDYXNlKClcbiAgfVxuICByZXR1cm4gdmFsXG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVDYXNlSW5zZW5zaXRpdmUodmFsQTogdW5rbm93biwgdmFsQjogdW5rbm93bikge1xuICByZXR1cm4gdHlwZW9mIHZhbEIgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIHZhbEEgPT09IFwic3RyaW5nXCJcbiAgICA/IHZhbEEudG9Mb3dlckNhc2UoKSA9PT0gdmFsQi50b0xvd2VyQ2FzZSgpXG4gICAgOiB2YWxBID09PSB2YWxCXG59XG5cbmZ1bmN0aW9uIGx0Q2FzZUluc2Vuc2l0aXZlKHZhbEE6IFN1cHBvcnRlZFZhbHVlczIsIHZhbEI6IFN1cHBvcnRlZFZhbHVlczIpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWxCID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiB2YWxBID09PSBcInN0cmluZ1wiXG4gICAgPyB2YWxBLnRvTG93ZXJDYXNlKCkgPCB2YWxCLnRvTG93ZXJDYXNlKClcbiAgICA6IHZhbEEgPCB2YWxCXG59XG5cbmZ1bmN0aW9uIGx0ZUNhc2VJbnNlbnNpdGl2ZSh2YWxBOiBTdXBwb3J0ZWRWYWx1ZXMyLCB2YWxCOiBTdXBwb3J0ZWRWYWx1ZXMyKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsQiA9PT0gXCJzdHJpbmdcIiAmJiB0eXBlb2YgdmFsQSA9PT0gXCJzdHJpbmdcIlxuICAgID8gdmFsQS50b0xvd2VyQ2FzZSgpIDw9IHZhbEIudG9Mb3dlckNhc2UoKVxuICAgIDogdmFsQSA8PSB2YWxCXG59XG5cbmZ1bmN0aW9uIGd0Q2FzZUluc2Vuc2l0aXZlKHZhbEE6IFN1cHBvcnRlZFZhbHVlczIsIHZhbEI6IFN1cHBvcnRlZFZhbHVlczIpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWxCID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiB2YWxBID09PSBcInN0cmluZ1wiXG4gICAgPyB2YWxBLnRvTG93ZXJDYXNlKCkgPiB2YWxCLnRvTG93ZXJDYXNlKClcbiAgICA6IHZhbEEgPiB2YWxCXG59XG5cbmZ1bmN0aW9uIGd0ZUNhc2VJbnNlbnNpdGl2ZSh2YWxBOiBTdXBwb3J0ZWRWYWx1ZXMyLCB2YWxCOiBTdXBwb3J0ZWRWYWx1ZXMyKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsQiA9PT0gXCJzdHJpbmdcIiAmJiB0eXBlb2YgdmFsQSA9PT0gXCJzdHJpbmdcIlxuICAgID8gdmFsQS50b0xvd2VyQ2FzZSgpID49IHZhbEIudG9Mb3dlckNhc2UoKVxuICAgIDogdmFsQSA+PSB2YWxCXG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
b4b12945fbdaa4d1e98b8a2095ca4363f267e0909cdb70da478a35926e8fbba5
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
4e41249ba004a7c0dc89e9306f2fcedc66585f6a43cff02e094f0d73d723bf8d
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
0ec005c7e521d652727c8ec2ca65980927e1818fc3bb92eb21dbc35d225bd027
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
0958fd132e2c918acec7e021223aec95701d820ac3efbcb7b6f5c96200d7c3ad
|
package/.cache/effect/f38adf43700dab905456a534a0690eaf882cff2cd576c731f23d6d14a3c3d659.content
CHANGED
|
@@ -295,6 +295,10 @@ export function buildWhereCosmosQuery(filter, name, importedMarkerId, skip, limi
|
|
|
295
295
|
return `(NOT ARRAY_CONTAINS(${v}, ${k}))`;
|
|
296
296
|
case "ends-with":
|
|
297
297
|
return `ENDSWITH(${k}, ${v}, true)`;
|
|
298
|
+
case "includes":
|
|
299
|
+
return `ARRAY_CONTAINS(${k}, ${v})`;
|
|
300
|
+
case "not-includes":
|
|
301
|
+
return `(NOT ARRAY_CONTAINS(${k}, ${v}))`;
|
|
298
302
|
case "contains":
|
|
299
303
|
return `CONTAINS(${k}, ${v}, true)`;
|
|
300
304
|
case "starts-with":
|
|
@@ -357,4 +361,4 @@ class CosmosDbOperationError {
|
|
|
357
361
|
export function CosmosStoreLive(config) {
|
|
358
362
|
return tsplus_module_1.toLayer(tsplus_module_1.flatMap(tsplus_module_1.config(config), makeCosmosStore), StoreMaker);
|
|
359
363
|
}
|
|
360
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29zbW9zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vX3NyYy9zZXJ2aWNlcy9TdG9yZS9Db3Ntb3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBDQUEwQyxDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQWFoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRXpDLG9EQUFvRDtBQUNwRCxNQUFNLFVBQVUsZUFBZSxDQUFDLEVBQUUsTUFBTSxFQUFpQjtJQUN2RCxPQUFPLG9CQUFXLFFBQVEsQ0FBQyxFQUFDLENBQUM7UUFDM0IsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUNyQyxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQ0osSUFBWSxFQUNaLElBQXlDLEVBQ3pDLE1BQXdCLEVBQ3hCLEVBQUUsQ0FDRixvQkFBVyxRQUFRLENBQUMsRUFBQyxDQUFDO2dCQUNwQixNQUFNLFdBQVcsR0FBRyxHQUFHLE1BQU0sR0FBRyxJQUFJLEVBQUUsQ0FBQTtnQkFDdEMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUNOLHdCQUFlLEdBQUcsRUFBRSxDQUNsQixFQUFFLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDO29CQUM5QixFQUFFLEVBQUUsV0FBVztvQkFDZixlQUFlLEVBQUUsTUFBTSxFQUFFLFVBQVU7d0JBQ2pDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFO3dCQUNuQyxDQUFDLENBQUMsU0FBUztpQkFDZCxDQUFDLENBQ0gsQ0FDRixDQUFBO2dCQUNELE1BQU0sU0FBUyxHQUFHLEVBQUUs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QixDQUM5QixNQUEyQyxFQUMzQyxJQUFZLEVBQ1osZ0JBQXdCLEVBQ3hCLElBQWEsRUFDYixLQUFjO0lBRWQsT0FBTyxNQUFNLENBQUMsSUFBSSxLQUFLLFlBQVk7V0FDNUIsTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVO1dBQzFCLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVTtRQUMvQixDQUFDLENBQUMsc0JBQXNCLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDO1FBQ3JFLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQTtBQUN4RSxDQUFDO0FBRUQsTUFBTSxzQkFBc0I7SUFDTDtJQUFyQixZQUFxQixPQUFlO1FBQWYsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUFHLENBQUM7Q0FDekM7QUFDRCxNQUFNLFVBQVUsZUFBZSxDQUFDLE1BQTZCO0lBQzNELE9BQU8sd0JBQUEsK0NBQUEsTUFBTSxHQUFnQixlQUFlLENBQUMsRUFBUyxVQUFVLENBQUMsQ0FBQTtBQUNuRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuXG5pbXBvcnQgeyBDb3Ntb3NDbGllbnQgfSBmcm9tIFwiQGVmZmVjdC1hcHAvaW5mcmEtYWRhcHRlcnMvY29zbW9zLWNsaWVudFwiXG5pbXBvcnQgeyBvbWl0IH0gZnJvbSBcIkBlZmZlY3QtYXBwL3ByZWx1ZGUvdXRpbHNcIlxuaW1wb3J0IHsgT3B0aW1pc3RpY0NvbmN1cnJlbmN5RXhjZXB0aW9uIH0gZnJvbSBcIi4uLy4uL2Vycm9ycy5qc1wiXG5pbXBvcnQgdHlwZSB7XG4gIEZpbHRlcixcbiAgRmlsdGVySm9pblNlbGVjdCxcbiAgSm9pbkZpbmRGaWx0ZXIsXG4gIExlZ2FjeUZpbHRlcixcbiAgUGVyc2lzdGVuY2VNb2RlbFR5cGUsXG4gIFN0b3JhZ2VDb25maWcsXG4gIFN0b3JlLFxuICBTdG9yZUNvbmZpZyxcbiAgU3RvcmVXaGVyZUZpbHRlcixcbiAgU3VwcG9ydGVkVmFsdWVzXG59IGZyb20gXCIuL3NlcnZpY2UuanNcIlxuaW1wb3J0IHsgU3RvcmVNYWtlciB9IGZyb20gXCIuL3NlcnZpY2UuanNcIlxuXG4vLyBUT0RPOiBSZXRyeSBvcGVyYXRpb24gd2hlbiBydW5uaW5nIGludG8gUlUgbGltaXQuXG5leHBvcnQgZnVuY3Rpb24gbWFrZUNvc21vc1N0b3JlKHsgcHJlZml4IH06IFN0b3JhZ2VDb25maWcpIHtcbiAgcmV0dXJuIEVmZmVjdC5nZW4oZnVuY3Rpb24qKCQpIHtcbiAgICBjb25zdCB7IGRiIH0gPSB5aWVsZCogJChDb3Ntb3NDbGllbnQpXG4gICAgcmV0dXJuIHtcbiAgICAgIG1ha2U6IDxJZCBleHRlbmRzIHN0cmluZywgUE0gZXh0ZW5kcyBQZXJzaXN0ZW5jZU1vZGVsVHlwZTxJZD4+KFxuICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgIHNlZWQ/OiBFZmZlY3Q8bmV2ZXIsIG5ldmVyLCBJdGVyYWJsZTxQTT4+LFxuICAgICAgICBjb25maWc/OiBTdG9yZUNvbmZpZzxQTT5cbiAgICAgICkgPT5cbiAgICAgICAgRWZmZWN0LmdlbihmdW5jdGlvbiooJCkge1xuICAgICAgICAgIGNvbnN0IGNvbnRhaW5lcklkID0gYCR7cHJlZml4fSR7bmFtZX1gXG4gICAgICAgICAgeWllbGQqICQoXG4gICAgICAgICAgICBFZmZlY3QucHJvbWlzZSgoKSA9PlxuICAgICAgICAgICAgICBkYi5jb250YWluZXJzLmNyZWF0ZUlmTm90RXhpc3RzKHtcbiAgICAgICAgICAgICAgICBpZDogY29udGFpbmVySWQsXG4gICAgICAgICAgICAgICAgdW5pcXVlS2V5UG9saWN5OiBjb25maWc/LnVuaXF1ZUtleXNcbiAgICAgICAgICAgICAgICAgID8geyB1bmlxdWVLZXlzOiBjb25maWcudW5pcXVlS2V5cyB9XG4gICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgICBjb25zdCBjb250YWluZXIgPSBkYi5jb250YWluZXIoY29udGFpbmVySWQpXG4gICAgICAgICAgY29uc3QgYnVsayA9IGNvbnRhaW5lci5pdGVtcy5idWxrLmJpbmQoY29udGFpbmVyLml0ZW1zKVxuICAgICAgICAgIGNvbnN0IGV4ZWNCYXRjaCA9IGNvbnRhaW5lci5pdGVtcy5iYXRjaC5iaW5kKGNvbnRhaW5lci5pdGVtcylcbiAgICAgICAgICBjb25zdCBpbXBvcnRlZE1hcmtlcklkID0gY29udGFpbmVySWRcblxuICAgICAgICAgIGNvbnN0IGJ1bGtTZXQgPSAoaXRlbXM6IE5vbkVtcHR5UmVhZG9ubHlBcnJheTxQTT4pID0+XG4gICAgICAgICAgICBFZmZlY3RcbiAgICAgICAgICAgICAgLmdlbihmdW5jdGlvbiooJCkge1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IGRpc2FibGUgYmF0Y2hpbmcgaWYgbmVlZCBhdG9taWNpdHlcbiAgICAgICAgICAgICAgICAvLyB3ZSBkZWxheSBhbmQgYmF0Y2ggdG8ga2VlcCBsb3cgYW1vdW50IG9mIFJVc1xuICAgICAgICAgICAgICAgIGNvbnN0IGIgPSBbLi4uaXRlbXNdLm1hcChcbiAgICAgICAgICAgICAgICAgICh4KSA9PlxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICBPcHRpb24uZnJvbU51bGxhYmxlKHguX2V0YWcpLm1hdGNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogXCJDcmVhdGVcIiBhcyBjb25zdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VCb2R5OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ub21pdCh4LCBcIl9ldGFnXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9wYXJ0aXRpb25LZXk6IGNvbmZpZz8ucGFydGl0aW9uVmFsdWUoeClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBhcyBhbnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbktleTogY29uZmlnPy5wYXJ0aXRpb25WYWx1ZSh4KVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAoZVRhZykgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogXCJSZXBsYWNlXCIgYXMgY29uc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB4LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZUJvZHk6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5vbWl0KHgsIFwiX2V0YWdcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3BhcnRpdGlvbktleTogY29uZmlnPy5wYXJ0aXRpb25WYWx1ZSh4KVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGFzIGFueSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWZNYXRjaDogZVRhZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGl0aW9uS2V5OiBjb25maWc/LnBhcnRpdGlvblZhbHVlKHgpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgXSBhcyBjb25zdFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBjb25zdCBiYXRjaGVzID0gYi5jaHVuayhjb25maWc/Lm1heEJ1bGtTaXplID8/IDEwKS50b1JlYWRvbmx5QXJyYXlcblxuICAgICAgICAgICAgICAgIGNvbnN0IGJhdGNoUmVzdWx0ID0geWllbGQqICQoXG4gICAgICAgICAgICAgICAgICBiYXRjaGVzXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKHgsIGkpID0+IFtpLCB4XSBhcyBjb25zdClcbiAgICAgICAgICAgICAgICAgICAgLmZvckVhY2hFZmZlY3QoXG4gICAgICAgICAgICAgICAgICAgICAgKFtpLCBiYXRjaF0pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBFZmZlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLnByb21pc2UoKCkgPT4gYnVsayhiYXRjaC5tYXAoKFssIG9wXSkgPT4gb3ApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmRlbGF5KER1cmF0aW9uLm1ha2VNaWxsaXMoaSA9PT0gMCA/IDAgOiAxMTAwKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmZsYXRNYXAoKHJlc3BvbnNlcykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZmZlY3QuZ2VuKGZ1bmN0aW9uKigkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByID0gcmVzcG9uc2VzLmZpbmQoKHgpID0+IHguc3RhdHVzQ29kZSA9PT0gNDEyIHx8IHguc3RhdHVzQ29kZSA9PT0gNDA0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiAkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVmZmVjdC5mYWlsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE9wdGltaXN0aWNDb25jdXJyZW5jeUV4Y2VwdGlvbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoci5yZXNvdXJjZUJvZHk/LltcImlkXCJdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcjIgPSByZXNwb25zZXMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHgpID0+IHguc3RhdHVzQ29kZSA+IDI5OSB8fCB4LnN0YXR1c0NvZGUgPCAyMDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqICQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWZmZWN0LmRpZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBDb3Ntb3NEYk9wZXJhdGlvbkVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm5vdCBhYmxlIHRvIHVwZGF0ZSByZWNvcmQ6IFwiICsgcjIuc3RhdHVzQ29kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJhdGNoLm1hcCgoW2VdLCBpKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZXRhZzogcmVzcG9uc2VzW2ldIS5lVGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgcmV0dXJuIGJhdGNoUmVzdWx0LmZsYXQoKSBhcyB1bmtub3duIGFzIE5vbkVtcHR5UmVhZG9ubHlBcnJheTxQTT5cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmluc3RydW1lbnQoXCJjb3Ntb3MuYnVsa1NldFwiKVxuICAgICAgICAgICAgICAubG9nQW5ub3RhdGUoXCJjb3Ntb3MuZGJcIiwgY29udGFpbmVySWQpXG5cbiAgICAgICAgICBjb25zdCBiYXRjaFNldCA9IChpdGVtczogTm9uRW1wdHlSZWFkb25seUFycmF5PFBNPikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIEVmZmVjdFxuICAgICAgICAgICAgICAuc3VzcGVuZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmF0Y2ggPSBbLi4uaXRlbXNdLm1hcChcbiAgICAgICAgICAgICAgICAgICh4KSA9PlxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICBPcHRpb24uZnJvbU51bGxhYmxlKHguX2V0YWcpLm1hdGNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogXCJDcmVhdGVcIiBhcyBjb25zdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VCb2R5OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ub21pdCh4LCBcIl9ldGFnXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9wYXJ0aXRpb25LZXk6IGNvbmZpZz8ucGFydGl0aW9uVmFsdWUoeClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBhcyBhbnlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKGVUYWcpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6IFwiUmVwbGFjZVwiIGFzIGNvbnN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogeC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VCb2R5OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ub21pdCh4LCBcIl9ldGFnXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9wYXJ0aXRpb25LZXk6IGNvbmZpZz8ucGFydGl0aW9uVmFsdWUoeClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBhcyBhbnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmTWF0Y2g6IGVUYWdcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBdIGFzIGNvbnN0XG4gICAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgICAgY29uc3QgZXggPSBiYXRjaC5tYXAoKFssIGNdKSA9PiBjKVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIEVmZmVjdFxuICAgICAgICAgICAgICAgICAgLnByb21pc2UoKCkgPT4gZXhlY0JhdGNoKGV4LCBleFswXT8ucmVzb3VyY2VCb2R5Ll9wYXJ0aXRpb25LZXkpKVxuICAgICAgICAgICAgICAgICAgLmZsYXRNYXAoKHgpID0+XG4gICAgICAgICAgICAgICAgICAgIEVmZmVjdC5nZW4oZnVuY3Rpb24qKCQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSB4LnJlc3VsdCA/PyBbXVxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0RmFpbGVkID0gcmVzdWx0LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAoeDogYW55KSA9PiB4LnN0YXR1c0NvZGUgPiAyOTkgfHwgeC5zdGF0dXNDb2RlIDwgMjAwXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdEZhaWxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29kZSA9IGZpcnN0RmFpbGVkLnN0YXR1c0NvZGUgPz8gMFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvZGUgPT09IDQxMiB8fCBjb2RlID09PSA0MDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiAkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVmZmVjdC5mYWlsKG5ldyBPcHRpbWlzdGljQ29uY3VycmVuY3lFeGNlcHRpb24obmFtZSwgXCJiYXRjaFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqICQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVmZmVjdC5kaWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IENvc21vc0RiT3BlcmF0aW9uRXJyb3IoXCJub3QgYWJsZSB0byB1cGRhdGUgcmVjb3JkOiBcIiArIGNvZGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYmF0Y2gubWFwKChbZV0sIGkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5lLFxuICAgICAgICAgICAgICAgICAgICAgICAgX2V0YWc6IHJlc3VsdFtpXT8uZVRhZ1xuICAgICAgICAgICAgICAgICAgICAgIH0pKSBhcyB1bmtub3duIGFzIE5vbkVtcHR5UmVhZG9ubHlBcnJheTxQTT5cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmluc3RydW1lbnQoXCJjb3Ntb3MuYmF0Y2hTZXRcIilcbiAgICAgICAgICAgICAgLmxvZ0Fubm90YXRlKFwiY29zbW9zLmRiXCIsIGNvbnRhaW5lcklkKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHM6IFN0b3JlPFBNLCBJZD4gPSB7XG4gICAgICAgICAgICBhbGw6IEVmZmVjdCh7XG4gICAgICAgICAgICAgIHF1ZXJ5OiBgU0VMRUNUICogRlJPTSAke25hbWV9IGYgV0hFUkUgZi5pZCAhPSBAaWRgLFxuICAgICAgICAgICAgICBwYXJhbWV0ZXJzOiBbeyBuYW1lOiBcIkBpZFwiLCB2YWx1ZTogaW1wb3J0ZWRNYXJrZXJJZCB9XVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLnRhcCgocSkgPT4gbG9nUXVlcnkocSkpXG4gICAgICAgICAgICAgIC5mbGF0TWFwKChxKSA9PlxuICAgICAgICAgICAgICAgIEVmZmVjdC5wcm9taXNlKCgpID0+XG4gICAgICAgICAgICAgICAgICBjb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgLml0ZW1zXG4gICAgICAgICAgICAgICAgICAgIC5xdWVyeTxQTT4ocSlcbiAgICAgICAgICAgICAgICAgICAgLmZldGNoQWxsKClcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKHsgcmVzb3VyY2VzIH0pID0+IHJlc291cmNlcylcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLmluc3RydW1lbnQoXCJjb3Ntb3MuYWxsXCIpXG4gICAgICAgICAgICAgIC5sb2dBbm5vdGF0ZShcImNvc21vcy5kYlwiLCBjb250YWluZXJJZCksXG4gICAgICAgICAgICBmaWx0ZXJKb2luU2VsZWN0OiA8VCBleHRlbmRzIG9iamVjdD4oXG4gICAgICAgICAgICAgIGZpbHRlcjogRmlsdGVySm9pblNlbGVjdCxcbiAgICAgICAgICAgICAgY3Vyc29yPzogeyBza2lwPzogbnVtYmVyOyBsaW1pdD86IG51bWJlciB9XG4gICAgICAgICAgICApID0+XG4gICAgICAgICAgICAgIGZpbHRlclxuICAgICAgICAgICAgICAgIC5rZXlzXG4gICAgICAgICAgICAgICAgLmZvckVhY2hFZmZlY3QoKGspID0+XG4gICAgICAgICAgICAgICAgICBFZmZlY3QoYnVpbGRGaWx0ZXJKb2luU2VsZWN0Q29zbW9zUXVlcnkoZmlsdGVyLCBrLCBuYW1lLCBjdXJzb3I/LnNraXAsIGN1cnNvcj8ubGltaXQpKVxuICAgICAgICAgICAgICAgICAgICAudGFwKChxKSA9PiBsb2dRdWVyeShxKSlcbiAgICAgICAgICAgICAgICAgICAgLmZsYXRNYXAoKHEpID0+XG4gICAgICAgICAgICAgICAgICAgICAgRWZmZWN0LnByb21pc2UoKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAuaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLnF1ZXJ5PFQ+KHEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5mZXRjaEFsbCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKCh7IHJlc291cmNlcyB9KSA9PiByZXNvdXJjZXMpXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5tYXAoKGEpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHYgPSBhXG4gICAgICAgICAgICAgICAgICAgIC5mbGF0TWFwKChfKSA9PiBfKVxuICAgICAgICAgICAgICAgICAgICAubWFwKCh4KSA9PlxuICAgICAgICAgICAgICAgICAgICAgIHNwcmVhZChcbiAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAoeyByLCAuLi5yZXN0IH06IGFueSkgPT4gKHsgLi4ucmVzdCwgLi4uciB9IGFzIFQgJiB7IF9yb290SWQ6IHN0cmluZyB9KVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHZcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5pbnN0cnVtZW50KFwiY29zbW9zLmZpbHRlckpvaW5TZWxlY3RcIilcbiAgICAgICAgICAgICAgICAubG9nQW5ub3RhdGUoXCJjb3Ntb3MuZGJcIiwgY29udGFpbmVySWQpLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXkgcmV0dXJuIGR1cGxpY2F0ZSByZXN1bHRzIGZvciBcImpvaW5fZmluZFwiLCB3aGVuIG1hdGNoaW5nIG1vcmUgdGhhbiBvbmNlLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBmaWx0ZXI6IChmaWx0ZXI6IEZpbHRlcjxQTT4sIGN1cnNvcj86IHsgc2tpcD86IG51bWJlcjsgbGltaXQ/OiBudW1iZXIgfSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBza2lwID0gY3Vyc29yPy5za2lwXG4gICAgICAgICAgICAgIGNvbnN0IGxpbWl0ID0gY3Vyc29yPy5saW1pdFxuICAgICAgICAgICAgICByZXR1cm4gKGZpbHRlci50eXBlID09PSBcImpvaW5fZmluZFwiXG4gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIHByb2JsZW0gaWYgb25lIG9mIHRoZSBtdWx0aXBsZSBqb2luZWQgYXJyYXlzIGNhbiBiZSBlbXB0eSFcbiAgICAgICAgICAgICAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy82MDMyMDc4MC9henVyZS1jb3Ntb3NkYi1zcWwtam9pbi1ub3QtcmV0dXJuaW5nLXJlc3VsdHMtd2hlbi10aGUtY2hpbGQtY29udGFpbnMtZW1wdHktYXJyYVxuICAgICAgICAgICAgICAgIC8vIHNvIHdlIHVzZSBtdWx0aXBsZSBxdWVyaWVzIGluc3RlYWQuXG4gICAgICAgICAgICAgICAgPyBmaWx0ZXJcbiAgICAgICAgICAgICAgICAgIC5rZXlzXG4gICAgICAgICAgICAgICAgICAuZm9yRWFjaEVmZmVjdCgoaykgPT5cbiAgICAgICAgICAgICAgICAgICAgRWZmZWN0KGJ1aWxkRmluZEpvaW5Db3Ntb3NRdWVyeShmaWx0ZXIsIGssIG5hbWUsIHNraXAsIGxpbWl0KSlcbiAgICAgICAgICAgICAgICAgICAgICAudGFwKChxKSA9PiBsb2dRdWVyeShxKSlcbiAgICAgICAgICAgICAgICAgICAgICAuZmxhdE1hcCgocSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEVmZmVjdC5wcm9taXNlKCgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5xdWVyeTxQTT4ocSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmV0Y2hBbGwoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKCh7IHJlc291cmNlcyB9KSA9PiByZXNvdXJjZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgLm1hcCgoXykgPT4gXy5mbGF0TWFwKChfKSA9PiBfKSlcbiAgICAgICAgICAgICAgICA6IEVmZmVjdChidWlsZENvc21vc1F1ZXJ5KGZpbHRlciwgbmFtZSwgaW1wb3J0ZWRNYXJrZXJJZCwgc2tpcCwgbGltaXQpKVxuICAgICAgICAgICAgICAgICAgLnRhcCgocSkgPT4gbG9nUXVlcnkocSkpXG4gICAgICAgICAgICAgICAgICAuZmxhdE1hcCgocSkgPT5cbiAgICAgICAgICAgICAgICAgICAgRWZmZWN0LnByb21pc2UoKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgICAgLnF1ZXJ5PHsgZjogUE0gfT4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5mZXRjaEFsbCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAudGhlbigoeyByZXNvdXJjZXMgfSkgPT4gcmVzb3VyY2VzLm1hcCgoXykgPT4gXy5mKSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAuaW5zdHJ1bWVudChcImNvc21vcy5maWx0ZXJcIilcbiAgICAgICAgICAgICAgICAubG9nQW5ub3RhdGUoXCJjb3Ntb3MuZGJcIiwgY29udGFpbmVySWQpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmluZDogKGlkKSA9PlxuICAgICAgICAgICAgICBFZmZlY3RcbiAgICAgICAgICAgICAgICAucHJvbWlzZSgoKSA9PlxuICAgICAgICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIC5pdGVtKGlkLCBjb25maWc/LnBhcnRpdGlvblZhbHVlKHsgaWQgfSBhcyBQTSkpXG4gICAgICAgICAgICAgICAgICAgIC5yZWFkPFBNPigpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKCh7IHJlc291cmNlIH0pID0+IE9wdGlvbi5mcm9tTnVsbGFibGUocmVzb3VyY2UpKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuaW5zdHJ1bWVudChcImNvc21vcy5maW5kXCIpXG4gICAgICAgICAgICAgICAgLmxvZ0Fubm90YXRlKFwiY29zbW9zLmRiXCIsIGNvbnRhaW5lcklkKSxcbiAgICAgICAgICAgIHNldDogKGUpID0+XG4gICAgICAgICAgICAgIE9wdGlvblxuICAgICAgICAgICAgICAgIC5mcm9tTnVsbGFibGUoZS5fZXRhZylcbiAgICAgICAgICAgICAgICAubWF0Y2goXG4gICAgICAgICAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgICAgICAgICBFZmZlY3QucHJvbWlzZSgoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5pdGVtcy5jcmVhdGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9wYXJ0aXRpb25LZXk6IGNvbmZpZz8ucGFydGl0aW9uVmFsdWUoZSlcbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgKGVUYWcpID0+XG4gICAgICAgICAgICAgICAgICAgIEVmZmVjdC5wcm9taXNlKCgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLml0ZW0oZS5pZCwgY29uZmlnPy5wYXJ0aXRpb25WYWx1ZShlKSkucmVwbGFjZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgLi4uZSwgX3BhcnRpdGlvbktleTogY29uZmlnPy5wYXJ0aXRpb25WYWx1ZShlKSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3NDb25kaXRpb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIklmTWF0Y2hcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb246IGVUYWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuZmxhdE1hcCgoeCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKHguc3RhdHVzQ29kZSA9PT0gNDEyIHx8IHguc3RhdHVzQ29kZSA9PT0gNDA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBFZmZlY3QuZmFpbChuZXcgT3B0aW1pc3RpY0NvbmN1cnJlbmN5RXhjZXB0aW9uKG5hbWUsIGUuaWQpKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaWYgKHguc3RhdHVzQ29kZSA+IDI5OSB8fCB4LnN0YXR1c0NvZGUgPCAyMDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVmZmVjdC5kaWUoXG4gICAgICAgICAgICAgICAgICAgICAgbmV3IENvc21vc0RiT3BlcmF0aW9uRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICBcIm5vdCBhYmxlIHRvIHVwZGF0ZSByZWNvcmQ6IFwiICsgeC5zdGF0dXNDb2RlXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICByZXR1cm4gRWZmZWN0KHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZSxcbiAgICAgICAgICAgICAgICAgICAgX2V0YWc6IHguZXRhZ1xuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5pbnN0cnVtZW50KFwiY29zbW9zLnNldFwiKVxuICAgICAgICAgICAgICAgIC5sb2dBbm5vdGF0ZShcImNvc21vcy5kYlwiLCBjb250YWluZXJJZCksXG4gICAgICAgICAgICBiYXRjaFNldCxcbiAgICAgICAgICAgIGJ1bGtTZXQsXG4gICAgICAgICAgICByZW1vdmU6IChlOiBQTSkgPT5cbiAgICAgICAgICAgICAgRWZmZWN0XG4gICAgICAgICAgICAgICAgLnByb21pc2UoKCkgPT4gY29udGFpbmVyLml0ZW0oZS5pZCwgY29uZmlnPy5wYXJ0aXRpb25WYWx1ZShlKSkuZGVsZXRlKCkpXG4gICAgICAgICAgICAgICAgLmluc3RydW1lbnQoXCJjb3Ntb3MucmVtb3ZlXCIpXG4gICAgICAgICAgICAgICAgLmxvZ0Fubm90YXRlKFwiY29zbW9zLmRiXCIsIGNvbnRhaW5lcklkKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIGhhbmRsZSBtb2NrIGRhdGFcbiAgICAgICAgICBjb25zdCBtYXJrZXIgPSB5aWVsZCogJChcbiAgICAgICAgICAgIEVmZmVjdC5wcm9taXNlKCgpID0+XG4gICAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgICAgIC5pdGVtKGltcG9ydGVkTWFya2VySWQsIGltcG9ydGVkTWFya2VySWQpXG4gICAgICAgICAgICAgICAgLnJlYWQ8eyBpZDogc3RyaW5nIH0+KClcbiAgICAgICAgICAgICAgICAudGhlbigoeyByZXNvdXJjZSB9KSA9PiBPcHRpb24uZnJvbU51bGxhYmxlKHJlc291cmNlKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG5cbiAgICAgICAgICBpZiAoIW1hcmtlci5pc1NvbWUoKSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJDcmVhdGluZyBtb2NrIGRhdGEgZm9yIFwiICsgbmFtZSlcbiAgICAgICAgICAgIGlmIChzZWVkKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG0gPSB5aWVsZCogJChzZWVkKVxuICAgICAgICAgICAgICB5aWVsZCogJChcbiAgICAgICAgICAgICAgICBFZmZlY3QobS50b05vbkVtcHR5QXJyYXkpXG4gICAgICAgICAgICAgICAgICAuZmxhdE1hcE9wdCgoYSkgPT5cbiAgICAgICAgICAgICAgICAgICAgc1xuICAgICAgICAgICAgICAgICAgICAgIC5idWxrU2V0KGEpXG4gICAgICAgICAgICAgICAgICAgICAgLm9yRGllXG4gICAgICAgICAgICAgICAgICAgICAgLy8gd2UgZGVsYXkgZXh0cmEgaGVyZSwgc28gdGhhdCBpbml0aWFsIGNyZWF0aW9uIGJldHdlZW4gQ29tcGFuaWVzL1BPcyBhbHNvIGhhdmUgYW4gaW50ZXJ2YWwgYmV0d2VlbiB0aGVtLlxuICAgICAgICAgICAgICAgICAgICAgIC5kZWxheShEdXJhdGlvbi5tYWtlTWlsbGlzKDExMDApKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBNYXJrIGFzIGltcG9ydGVkXG4gICAgICAgICAgICB5aWVsZCogJChcbiAgICAgICAgICAgICAgRWZmZWN0LnByb21pc2UoKCkgPT5cbiAgICAgICAgICAgICAgICBjb250YWluZXIuaXRlbXMuY3JlYXRlKHtcbiAgICAgICAgICAgICAgICAgIF9wYXJ0aXRpb25LZXk6IGltcG9ydGVkTWFya2VySWQsXG4gICAgICAgICAgICAgICAgICBpZDogaW1wb3J0ZWRNYXJrZXJJZFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHNcbiAgICAgICAgfSlcbiAgICB9XG4gIH0pXG59XG5cbmZ1bmN0aW9uIGxvZ1F1ZXJ5KHE6IHtcbiAgcXVlcnk6IHN0cmluZ1xuICBwYXJhbWV0ZXJzOiB7XG4gICAgbmFtZTogc3RyaW5nXG4gICAgdmFsdWU6IFN1cHBvcnRlZFZhbHVlcyB8IHJlYWRvbmx5IFN1cHBvcnRlZFZhbHVlc1tdXG4gIH1bXVxufSkge1xuICByZXR1cm4gRWZmZWN0XG4gICAgLmxvZ0RlYnVnKFwiY29zbW9zIHF1ZXJ5XCIpXG4gICAgLmFwcGx5KEVmZmVjdC5sb2dBbm5vdGF0ZXMoe1xuICAgICAgcXVlcnk6IHEucXVlcnksXG4gICAgICBwYXJhbWV0ZXJzOiBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgcS5wYXJhbWV0ZXJzLnJlZHVjZSgoYWNjLCB2KSA9PiB7XG4gICAgICAgICAgYWNjW3YubmFtZV0gPSB2LnZhbHVlXG4gICAgICAgICAgcmV0dXJuIGFjY1xuICAgICAgICB9LCB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBTdXBwb3J0ZWRWYWx1ZXMgfCByZWFkb25seSBTdXBwb3J0ZWRWYWx1ZXNbXT4pLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIDJcbiAgICAgIClcbiAgICB9KSlcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZDogc2hvdWxkIGJ1aWxkIFNlbGVjdCBpbnRvIFdoZXJlIHF1ZXJ5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEZpbHRlckpvaW5TZWxlY3RDb3Ntb3NRdWVyeShcbiAgZmlsdGVyOiBGaWx0ZXJKb2luU2VsZWN0LFxuICBrOiBzdHJpbmcsXG4gIG5hbWU6IHN0cmluZyxcbiAgc2tpcD86IG51bWJlcixcbiAgbGltaXQ/OiBudW1iZXJcbikge1xuICBjb25zdCBsbSA9IHNraXAgIT09IHVuZGVmaW5lZCB8fCBsaW1pdCAhPT0gdW5kZWZpbmVkID8gYE9GRlNFVCAke3NraXAgPz8gMH0gTElNSVQgJHtsaW1pdCA/PyA5OTk5OTl9YCA6IFwiXCJcbiAgcmV0dXJuIHtcbiAgICBxdWVyeTogYFxuU0VMRUNUIHIsIGYuaWQgYXMgX3Jvb3RJZFxuRlJPTSAke25hbWV9IGZcbkpPSU4gciBJTiBmLiR7a31cbldIRVJFIExPV0VSKHIuJHtmaWx0ZXIudmFsdWVLZXl9KSA9IExPV0VSKEB2YWx1ZSlcbiR7bG19XG5gLFxuICAgIHBhcmFtZXRlcnM6IFt7IG5hbWU6IFwiQHZhbHVlXCIsIHZhbHVlOiBmaWx0ZXIudmFsdWUgfV1cbiAgfVxufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkOiBpcyBub3cgcGFydCBvZiBXaGVyZSBxdWVyeSBhcyBrLi0xLnZhbHVlS2V5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEZpbmRKb2luQ29zbW9zUXVlcnkoXG4gIGZpbHRlcjogSm9pbkZpbmRGaWx0ZXIsXG4gIGs6IHN0cmluZyxcbiAgbmFtZTogc3RyaW5nLFxuICBza2lwPzogbnVtYmVyLFxuICBsaW1pdD86IG51bWJlclxuKSB7XG4gIGNvbnN0IGxtID0gc2tpcCAhPT0gdW5kZWZpbmVkIHx8IGxpbWl0ICE9PSB1bmRlZmluZWQgPyBgT0ZGU0VUICR7c2tpcCA/PyAwfSBMSU1JVCAke2xpbWl0ID8/IDk5OTk5OX1gIDogXCJcIlxuICByZXR1cm4ge1xuICAgIHF1ZXJ5OiBgXG5TRUxFQ1QgRElTVElOQ1QgVkFMVUUgZlxuRlJPTSAke25hbWV9IGZcbkpPSU4gciBJTiBmLiR7a31cbldIRVJFIExPV0VSKHIuJHtmaWx0ZXIudmFsdWVLZXl9KSA9IExPV0VSKEB2YWx1ZSlcbiR7bG19YCxcbiAgICBwYXJhbWV0ZXJzOiBbeyBuYW1lOiBcIkB2YWx1ZVwiLCB2YWx1ZTogZmlsdGVyLnZhbHVlIH1dXG4gIH1cbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZDogc2hvdWxkIGJ1aWxkIGludG8gV2hlcmUgcXVlcnlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkTGVnYWN5Q29zbW9zUXVlcnk8UE0+KFxuICBmaWx0ZXI6IExlZ2FjeUZpbHRlcjxQTT4sXG4gIG5hbWU6IHN0cmluZyxcbiAgaW1wb3J0ZWRNYXJrZXJJZDogc3RyaW5nLFxuICBza2lwPzogbnVtYmVyLFxuICBsaW1pdD86IG51bWJlclxuKSB7XG4gIGNvbnN0IGxtID0gc2tpcCAhPT0gdW5kZWZpbmVkIHx8IGxpbWl0ICE9PSB1bmRlZmluZWQgPyBgT0ZGU0VUICR7c2tpcCA/PyAwfSBMSU1JVCAke2xpbWl0ID8/IDk5OTk5OX1gIDogXCJcIlxuICByZXR1cm4ge1xuICAgIHF1ZXJ5OiBgXG4gICAgU0VMRUNUIGZcbiAgICBGUk9NICR7bmFtZX0gQVMgZlxuICAgIFdIRVJFIGYuaWQgIT0gQGlkIEFORCBmLiR7XG4gICAgICBTdHJpbmcoXG4gICAgICAgIGZpbHRlci5ieVxuICAgICAgKVxuICAgIH0gTElLRSBAZmlsdGVyXG4gICR7bG19YCxcbiAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICB7IG5hbWU6IFwiQGlkXCIsIHZhbHVlOiBpbXBvcnRlZE1hcmtlcklkIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6IFwiQGZpbHRlclwiLFxuICAgICAgICB2YWx1ZTogZmlsdGVyLnR5cGUgPT09IFwiZW5kc1dpdGhcIlxuICAgICAgICAgID8gYCUke2ZpbHRlci52YWx1ZX1gXG4gICAgICAgICAgOiBmaWx0ZXIudHlwZSA9PT0gXCJjb250YWluc1wiXG4gICAgICAgICAgPyBgJSR7ZmlsdGVyLnZhbHVlfSVgXG4gICAgICAgICAgOiBgJHtmaWx0ZXIudmFsdWV9JWBcbiAgICAgIH1cbiAgICBdXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkV2hlcmVDb3Ntb3NRdWVyeShcbiAgZmlsdGVyOiBTdG9yZVdoZXJlRmlsdGVyLFxuICBuYW1lOiBzdHJpbmcsXG4gIGltcG9ydGVkTWFya2VySWQ6IHN0cmluZyxcbiAgc2tpcD86IG51bWJlcixcbiAgbGltaXQ/OiBudW1iZXJcbikge1xuICBjb25zdCBsbSA9IHNraXAgIT09IHVuZGVmaW5lZCB8fCBsaW1pdCAhPT0gdW5kZWZpbmVkID8gYE9GRlNFVCAke3NraXAgPz8gMH0gTElNSVQgJHtsaW1pdCA/PyA5OTk5OTl9YCA6IFwiXCJcbiAgcmV0dXJuIHtcbiAgICBxdWVyeTogYFxuICAgIFNFTEVDVCBmXG4gICAgRlJPTSAke25hbWV9IEFTIGZcbiAgICAke1xuICAgICAgZmlsdGVyXG4gICAgICAgIC53aGVyZVxuICAgICAgICAuZmlsdGVyKChfKSA9PiBfLmtleS5pbmNsdWRlcyhcIi4tMS5cIikpXG4gICAgICAgIC5tYXAoKF8pID0+IF8ua2V5LnNwbGl0KFwiLi0xLlwiKVswXSlcbiAgICAgICAgLm1hcCgoXykgPT4gYEpPSU4gJHtffSBJTiBmLiR7X31gKVxuICAgICAgICAudW5pcShFcXVpdmFsZW5jZS5zdHJpbmcpXG4gICAgICAgIC5qb2luKFwiXFxuXCIpXG4gICAgfVxuICAgIFdIRVJFIGYuaWQgIT0gQGlkIEFORCAke1xuICAgICAgZmlsdGVyXG4gICAgICAgIC53aGVyZVxuICAgICAgICAubWFwKChfKSA9PlxuICAgICAgICAgIF8ua2V5LmluY2x1ZGVzKFwiLi0xLlwiKVxuICAgICAgICAgICAgPyB7IC4uLl8sIGY6IF8ua2V5LnNwbGl0KFwiLi0xLlwiKVswXSwga2V5OiBfLmtleS5zcGxpdChcIi4tMS5cIilbMV0hIH1cbiAgICAgICAgICAgIDogeyAuLi5fLCBmOiBcImZcIiB9XG4gICAgICAgIClcbiAgICAgICAgLm1hcChcbiAgICAgICAgICAoeCwgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgayA9IGAke3guZn0uJHt4LmtleX1gXG4gICAgICAgICAgICBjb25zdCB2ID0gYEB2JHtpfWBcblxuICAgICAgICAgICAgc3dpdGNoICh4LnQpIHtcbiAgICAgICAgICAgICAgY2FzZSBcImluXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBBUlJBWV9DT05UQUlOUygke3Z9LCAke2t9KWBcbiAgICAgICAgICAgICAgY2FzZSBcIm5vdC1pblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgKE5PVCBBUlJBWV9DT05UQUlOUygke3Z9LCAke2t9KSlgXG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRzLXdpdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYEVORFNXSVRIKCR7a30sICR7dn0sIHRydWUpYFxuICAgICAgICAgICAgICBjYXNlIFwiY29udGFpbnNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYENPTlRBSU5TKCR7a30sICR7dn0sIHRydWUpYFxuICAgICAgICAgICAgICBjYXNlIFwic3RhcnRzLXdpdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYFNUQVJUU1dJVEgoJHtrfSwgJHt2fSwgdHJ1ZSlgXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGxrID0gbG93ZXJJZk5lZWRlZChrLCB4LnZhbHVlKVxuICAgICAgICAgICAgY29uc3QgbHYgPSBsb3dlcklmTmVlZGVkKHYsIHgudmFsdWUpXG5cbiAgICAgICAgICAgIHN3aXRjaCAoeC50KSB7XG4gICAgICAgICAgICAgIGNhc2UgXCJsdFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtsa30gPCAke2x2fWBcbiAgICAgICAgICAgICAgY2FzZSBcImx0ZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtsa30gPD0gJHtsdn1gXG4gICAgICAgICAgICAgIGNhc2UgXCJndFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtsa30gPiAke2x2fWBcbiAgICAgICAgICAgICAgY2FzZSBcImd0ZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtsa30gPj0gJHtsdn1gXG4gICAgICAgICAgICAgIGNhc2UgXCJub3QtZXFcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geC52YWx1ZSA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgPyBgSVNfTlVMTCgke2t9KSA9IGZhbHNlYFxuICAgICAgICAgICAgICAgICAgOiBgJHtsa30gPD4gJHtsdn1gXG4gICAgICAgICAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICAgICAgICBjYXNlIFwiZXFcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geC52YWx1ZSA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgPyBgSVNfTlVMTCgke2t9KSA9IHRydWVgXG4gICAgICAgICAgICAgICAgICA6IGAke2xrfSA9ICR7bHZ9YFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgICAuam9pbihmaWx0ZXIubW9kZSA9PT0gXCJvclwiID8gXCIgT1IgXCIgOiBcIiBBTkQgXCIpXG4gICAgfVxuICAgICR7bG19YCxcbiAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICB7IG5hbWU6IFwiQGlkXCIsIHZhbHVlOiBpbXBvcnRlZE1hcmtlcklkIH0sXG4gICAgICAuLi5maWx0ZXJcbiAgICAgICAgLndoZXJlXG4gICAgICAgIC5tYXAoKHgsIGkpID0+ICh7XG4gICAgICAgICAgbmFtZTogYEB2JHtpfWAsXG4gICAgICAgICAgdmFsdWU6IHgudmFsdWVcbiAgICAgICAgfSkpXG4gICAgXVxuICB9XG59XG5cbi8vIGZ1bmN0aW9uIGlzQXJyYXkodDogU3VwcG9ydGVkVmFsdWVzIHwgcmVhZG9ubHkgU3VwcG9ydGVkVmFsdWVzW10pOiB0IGlzIHJlYWRvbmx5IFN1cHBvcnRlZFZhbHVlc1tdIHtcbi8vICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodClcbi8vIH1cblxuZnVuY3Rpb24gbG93ZXJJZk5lZWRlZChrZXk6IHVua25vd24sIHZhbHVlOiB1bmtub3duKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgPyBgTE9XRVIoJHtrZXl9KWAgOiBgJHtrZXl9YFxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRDb3Ntb3NRdWVyeTxQTT4oXG4gIGZpbHRlcjogTGVnYWN5RmlsdGVyPFBNPiB8IFN0b3JlV2hlcmVGaWx0ZXIsXG4gIG5hbWU6IHN0cmluZyxcbiAgaW1wb3J0ZWRNYXJrZXJJZDogc3RyaW5nLFxuICBza2lwPzogbnVtYmVyLFxuICBsaW1pdD86IG51bWJlclxuKSB7XG4gIHJldHVybiBmaWx0ZXIudHlwZSA9PT0gXCJzdGFydHNXaXRoXCJcbiAgICAgIHx8IGZpbHRlci50eXBlID09PSBcImVuZHNXaXRoXCJcbiAgICAgIHx8IGZpbHRlci50eXBlID09PSBcImNvbnRhaW5zXCJcbiAgICA/IGJ1aWxkTGVnYWN5Q29zbW9zUXVlcnkoZmlsdGVyLCBuYW1lLCBpbXBvcnRlZE1hcmtlcklkLCBza2lwLCBsaW1pdClcbiAgICA6IGJ1aWxkV2hlcmVDb3Ntb3NRdWVyeShmaWx0ZXIsIG5hbWUsIGltcG9ydGVkTWFya2VySWQsIHNraXAsIGxpbWl0KVxufVxuXG5jbGFzcyBDb3Ntb3NEYk9wZXJhdGlvbkVycm9yIHtcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgbWVzc2FnZTogc3RyaW5nKSB7fVxufVxuZXhwb3J0IGZ1bmN0aW9uIENvc21vc1N0b3JlTGl2ZShjb25maWc6IENvbmZpZzxTdG9yYWdlQ29uZmlnPikge1xuICByZXR1cm4gY29uZmlnLmNvbmZpZy5mbGF0TWFwKG1ha2VDb3Ntb3NTdG9yZSkudG9MYXllcihTdG9yZU1ha2VyKVxufVxuIl19
|
|
364
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29zbW9zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vX3NyYy9zZXJ2aWNlcy9TdG9yZS9Db3Ntb3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBDQUEwQyxDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQWFoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRXpDLG9EQUFvRDtBQUNwRCxNQUFNLFVBQVUsZUFBZSxDQUFDLEVBQUUsTUFBTSxFQUFpQjtJQUN2RCxPQUFPLG9CQUFXLFFBQVEsQ0FBQyxFQUFDLENBQUM7UUFDM0IsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUNyQyxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQ0osSUFBWSxFQUNaLElBQXlDLEVBQ3pDLE1BQXdCLEVBQ3hCLEVBQUUsQ0FDRixvQkFBVyxRQUFRLENBQUMsRUFBQyxDQUFDO2dCQUNwQixNQUFNLFdBQVcsR0FBRyxHQUFHLE1BQU0sR0FBRyxJQUFJLEVBQUUsQ0FBQTtnQkFDdEMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUNOLHdCQUFlLEdBQUcsRUFBRSxDQUNsQixFQUFFLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDO29CQUM5QixFQUFFLEVBQUUsV0FBVztvQkFDZixlQUFlLEVBQUUsTUFBTSxFQUFFLFVBQVU7d0JBQ2pDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFO3dCQUNuQyxDQUFDLENBQUMsU0FBUztpQkFDZCxDQUFDLENBQ0gsQ0FDRixDQUFBO2dCQUNELE1BQU0sU0FBUyxHQUFHLEVBQUUs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T0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUE7QUFDL0QsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsTUFBMkMsRUFDM0MsSUFBWSxFQUNaLGdCQUF3QixFQUN4QixJQUFhLEVBQ2IsS0FBYztJQUVkLE9BQU8sTUFBTSxDQUFDLElBQUksS0FBSyxZQUFZO1dBQzVCLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVTtXQUMxQixNQUFNLENBQUMsSUFBSSxLQUFLLFVBQVU7UUFDL0IsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQztRQUNyRSxDQUFDLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUE7QUFDeEUsQ0FBQztBQUVELE1BQU0sc0JBQXNCO0lBQ0w7SUFBckIsWUFBcUIsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7SUFBRyxDQUFDO0NBQ3pDO0FBQ0QsTUFBTSxVQUFVLGVBQWUsQ0FBQyxNQUE2QjtJQUMzRCxPQUFPLHdCQUFBLCtDQUFBLE1BQU0sR0FBZ0IsZUFBZSxDQUFDLEVBQVMsVUFBVSxDQUFDLENBQUE7QUFDbkUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cblxuaW1wb3J0IHsgQ29zbW9zQ2xpZW50IH0gZnJvbSBcIkBlZmZlY3QtYXBwL2luZnJhLWFkYXB0ZXJzL2Nvc21vcy1jbGllbnRcIlxuaW1wb3J0IHsgb21pdCB9IGZyb20gXCJAZWZmZWN0LWFwcC9wcmVsdWRlL3V0aWxzXCJcbmltcG9ydCB7IE9wdGltaXN0aWNDb25jdXJyZW5jeUV4Y2VwdGlvbiB9IGZyb20gXCIuLi8uLi9lcnJvcnMuanNcIlxuaW1wb3J0IHR5cGUge1xuICBGaWx0ZXIsXG4gIEZpbHRlckpvaW5TZWxlY3QsXG4gIEpvaW5GaW5kRmlsdGVyLFxuICBMZWdhY3lGaWx0ZXIsXG4gIFBlcnNpc3RlbmNlTW9kZWxUeXBlLFxuICBTdG9yYWdlQ29uZmlnLFxuICBTdG9yZSxcbiAgU3RvcmVDb25maWcsXG4gIFN0b3JlV2hlcmVGaWx0ZXIsXG4gIFN1cHBvcnRlZFZhbHVlc1xufSBmcm9tIFwiLi9zZXJ2aWNlLmpzXCJcbmltcG9ydCB7IFN0b3JlTWFrZXIgfSBmcm9tIFwiLi9zZXJ2aWNlLmpzXCJcblxuLy8gVE9ETzogUmV0cnkgb3BlcmF0aW9uIHdoZW4gcnVubmluZyBpbnRvIFJVIGxpbWl0LlxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VDb3Ntb3NTdG9yZSh7IHByZWZpeCB9OiBTdG9yYWdlQ29uZmlnKSB7XG4gIHJldHVybiBFZmZlY3QuZ2VuKGZ1bmN0aW9uKigkKSB7XG4gICAgY29uc3QgeyBkYiB9ID0geWllbGQqICQoQ29zbW9zQ2xpZW50KVxuICAgIHJldHVybiB7XG4gICAgICBtYWtlOiA8SWQgZXh0ZW5kcyBzdHJpbmcsIFBNIGV4dGVuZHMgUGVyc2lzdGVuY2VNb2RlbFR5cGU8SWQ+PihcbiAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICBzZWVkPzogRWZmZWN0PG5ldmVyLCBuZXZlciwgSXRlcmFibGU8UE0+PixcbiAgICAgICAgY29uZmlnPzogU3RvcmVDb25maWc8UE0+XG4gICAgICApID0+XG4gICAgICAgIEVmZmVjdC5nZW4oZnVuY3Rpb24qKCQpIHtcbiAgICAgICAgICBjb25zdCBjb250YWluZXJJZCA9IGAke3ByZWZpeH0ke25hbWV9YFxuICAgICAgICAgIHlpZWxkKiAkKFxuICAgICAgICAgICAgRWZmZWN0LnByb21pc2UoKCkgPT5cbiAgICAgICAgICAgICAgZGIuY29udGFpbmVycy5jcmVhdGVJZk5vdEV4aXN0cyh7XG4gICAgICAgICAgICAgICAgaWQ6IGNvbnRhaW5lcklkLFxuICAgICAgICAgICAgICAgIHVuaXF1ZUtleVBvbGljeTogY29uZmlnPy51bmlxdWVLZXlzXG4gICAgICAgICAgICAgICAgICA/IHsgdW5pcXVlS2V5czogY29uZmlnLnVuaXF1ZUtleXMgfVxuICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgICAgY29uc3QgY29udGFpbmVyID0gZGIuY29udGFpbmVyKGNvbnRhaW5lcklkKVxuICAgICAgICAgIGNvbnN0IGJ1bGsgPSBjb250YWluZXIuaXRlbXMuYnVsay5iaW5kKGNvbnRhaW5lci5pdGVtcylcbiAgICAgICAgICBjb25zdCBleGVjQmF0Y2ggPSBjb250YWluZXIuaXRlbXMuYmF0Y2guYmluZChjb250YWluZXIuaXRlbXMpXG4gICAgICAgICAgY29uc3QgaW1wb3J0ZWRNYXJrZXJJZCA9IGNvbnRhaW5lcklkXG5cbiAgICAgICAgICBjb25zdCBidWxrU2V0ID0gKGl0ZW1zOiBOb25FbXB0eVJlYWRvbmx5QXJyYXk8UE0+KSA9PlxuICAgICAgICAgICAgRWZmZWN0XG4gICAgICAgICAgICAgIC5nZW4oZnVuY3Rpb24qKCQpIHtcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBkaXNhYmxlIGJhdGNoaW5nIGlmIG5lZWQgYXRvbWljaXR5XG4gICAgICAgICAgICAgICAgLy8gd2UgZGVsYXkgYW5kIGJhdGNoIHRvIGtlZXAgbG93IGFtb3VudCBvZiBSVXNcbiAgICAgICAgICAgICAgICBjb25zdCBiID0gWy4uLml0ZW1zXS5tYXAoXG4gICAgICAgICAgICAgICAgICAoeCkgPT5cbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgT3B0aW9uLmZyb21OdWxsYWJsZSh4Ll9ldGFnKS5tYXRjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6IFwiQ3JlYXRlXCIgYXMgY29uc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlQm9keToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLm9taXQoeCwgXCJfZXRhZ1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcGFydGl0aW9uS2V5OiBjb25maWc/LnBhcnRpdGlvblZhbHVlKHgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gYXMgYW55LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aXRpb25LZXk6IGNvbmZpZz8ucGFydGl0aW9uVmFsdWUoeClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKGVUYWcpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6IFwiUmVwbGFjZVwiIGFzIGNvbnN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogeC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VCb2R5OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ub21pdCh4LCBcIl9ldGFnXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9wYXJ0aXRpb25LZXk6IGNvbmZpZz8ucGFydGl0aW9uVmFsdWUoeClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBhcyBhbnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmTWF0Y2g6IGVUYWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbktleTogY29uZmlnPy5wYXJ0aXRpb25WYWx1ZSh4KVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIF0gYXMgY29uc3RcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgY29uc3QgYmF0Y2hlcyA9IGIuY2h1bmsoY29uZmlnPy5tYXhCdWxrU2l6ZSA/PyAxMCkudG9SZWFkb25seUFycmF5XG5cbiAgICAgICAgICAgICAgICBjb25zdCBiYXRjaFJlc3VsdCA9IHlpZWxkKiAkKFxuICAgICAgICAgICAgICAgICAgYmF0Y2hlc1xuICAgICAgICAgICAgICAgICAgICAubWFwKCh4LCBpKSA9PiBbaSwgeF0gYXMgY29uc3QpXG4gICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoRWZmZWN0KFxuICAgICAgICAgICAgICAgICAgICAgIChbaSwgYmF0Y2hdKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRWZmZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5wcm9taXNlKCgpID0+IGJ1bGsoYmF0Y2gubWFwKChbLCBvcF0pID0+IG9wKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5kZWxheShEdXJhdGlvbi5tYWtlTWlsbGlzKGkgPT09IDAgPyAwIDogMTEwMCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5mbGF0TWFwKChyZXNwb25zZXMpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRWZmZWN0LmdlbihmdW5jdGlvbiooJCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgciA9IHJlc3BvbnNlcy5maW5kKCh4KSA9PiB4LnN0YXR1c0NvZGUgPT09IDQxMiB8fCB4LnN0YXR1c0NvZGUgPT09IDQwNClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCogJChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZmZlY3QuZmFpbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBPcHRpbWlzdGljQ29uY3VycmVuY3lFeGNlcHRpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHIucmVzb3VyY2VCb2R5Py5bXCJpZFwiXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHIyID0gcmVzcG9uc2VzLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4KSA9PiB4LnN0YXR1c0NvZGUgPiAyOTkgfHwgeC5zdGF0dXNDb2RlIDwgMjAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocjIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiAkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVmZmVjdC5kaWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQ29zbW9zRGJPcGVyYXRpb25FcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJub3QgYWJsZSB0byB1cGRhdGUgcmVjb3JkOiBcIiArIHIyLnN0YXR1c0NvZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBiYXRjaC5tYXAoKFtlXSwgaSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2V0YWc6IHJlc3BvbnNlc1tpXSEuZVRhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHJldHVybiBiYXRjaFJlc3VsdC5mbGF0KCkgYXMgdW5rbm93biBhcyBOb25FbXB0eVJlYWRvbmx5QXJyYXk8UE0+XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5pbnN0cnVtZW50KFwiY29zbW9zLmJ1bGtTZXRcIilcbiAgICAgICAgICAgICAgLmxvZ0Fubm90YXRlKFwiY29zbW9zLmRiXCIsIGNvbnRhaW5lcklkKVxuXG4gICAgICAgICAgY29uc3QgYmF0Y2hTZXQgPSAoaXRlbXM6IE5vbkVtcHR5UmVhZG9ubHlBcnJheTxQTT4pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBFZmZlY3RcbiAgICAgICAgICAgICAgLnN1c3BlbmQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJhdGNoID0gWy4uLml0ZW1zXS5tYXAoXG4gICAgICAgICAgICAgICAgICAoeCkgPT5cbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgT3B0aW9uLmZyb21OdWxsYWJsZSh4Ll9ldGFnKS5tYXRjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6IFwiQ3JlYXRlXCIgYXMgY29uc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlQm9keToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLm9taXQoeCwgXCJfZXRhZ1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcGFydGl0aW9uS2V5OiBjb25maWc/LnBhcnRpdGlvblZhbHVlKHgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gYXMgYW55XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIChlVGFnKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25UeXBlOiBcIlJlcGxhY2VcIiBhcyBjb25zdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHguaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlQm9keToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLm9taXQoeCwgXCJfZXRhZ1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcGFydGl0aW9uS2V5OiBjb25maWc/LnBhcnRpdGlvblZhbHVlKHgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gYXMgYW55LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZk1hdGNoOiBlVGFnXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgXSBhcyBjb25zdFxuICAgICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICAgIGNvbnN0IGV4ID0gYmF0Y2gubWFwKChbLCBjXSkgPT4gYylcblxuICAgICAgICAgICAgICAgIHJldHVybiBFZmZlY3RcbiAgICAgICAgICAgICAgICAgIC5wcm9taXNlKCgpID0+IGV4ZWNCYXRjaChleCwgZXhbMF0/LnJlc291cmNlQm9keS5fcGFydGl0aW9uS2V5KSlcbiAgICAgICAgICAgICAgICAgIC5mbGF0TWFwKCh4KSA9PlxuICAgICAgICAgICAgICAgICAgICBFZmZlY3QuZ2VuKGZ1bmN0aW9uKigkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0geC5yZXN1bHQgPz8gW11cbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaXJzdEZhaWxlZCA9IHJlc3VsdC5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHg6IGFueSkgPT4geC5zdGF0dXNDb2RlID4gMjk5IHx8IHguc3RhdHVzQ29kZSA8IDIwMFxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3RGYWlsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvZGUgPSBmaXJzdEZhaWxlZC5zdGF0dXNDb2RlID8/IDBcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2RlID09PSA0MTIgfHwgY29kZSA9PT0gNDA0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCogJChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZmZlY3QuZmFpbChuZXcgT3B0aW1pc3RpY0NvbmN1cnJlbmN5RXhjZXB0aW9uKG5hbWUsIFwiYmF0Y2hcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiAkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBFZmZlY3QuZGllKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBDb3Ntb3NEYk9wZXJhdGlvbkVycm9yKFwibm90IGFibGUgdG8gdXBkYXRlIHJlY29yZDogXCIgKyBjb2RlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJhdGNoLm1hcCgoW2VdLCBpKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9ldGFnOiByZXN1bHRbaV0/LmVUYWdcbiAgICAgICAgICAgICAgICAgICAgICB9KSkgYXMgdW5rbm93biBhcyBOb25FbXB0eVJlYWRvbmx5QXJyYXk8UE0+XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5pbnN0cnVtZW50KFwiY29zbW9zLmJhdGNoU2V0XCIpXG4gICAgICAgICAgICAgIC5sb2dBbm5vdGF0ZShcImNvc21vcy5kYlwiLCBjb250YWluZXJJZClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBzOiBTdG9yZTxQTSwgSWQ+ID0ge1xuICAgICAgICAgICAgYWxsOiBFZmZlY3Qoe1xuICAgICAgICAgICAgICBxdWVyeTogYFNFTEVDVCAqIEZST00gJHtuYW1lfSBmIFdIRVJFIGYuaWQgIT0gQGlkYCxcbiAgICAgICAgICAgICAgcGFyYW1ldGVyczogW3sgbmFtZTogXCJAaWRcIiwgdmFsdWU6IGltcG9ydGVkTWFya2VySWQgfV1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC50YXAoKHEpID0+IGxvZ1F1ZXJ5KHEpKVxuICAgICAgICAgICAgICAuZmxhdE1hcCgocSkgPT5cbiAgICAgICAgICAgICAgICBFZmZlY3QucHJvbWlzZSgoKSA9PlxuICAgICAgICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIC5pdGVtc1xuICAgICAgICAgICAgICAgICAgICAucXVlcnk8UE0+KHEpXG4gICAgICAgICAgICAgICAgICAgIC5mZXRjaEFsbCgpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKCh7IHJlc291cmNlcyB9KSA9PiByZXNvdXJjZXMpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5pbnN0cnVtZW50KFwiY29zbW9zLmFsbFwiKVxuICAgICAgICAgICAgICAubG9nQW5ub3RhdGUoXCJjb3Ntb3MuZGJcIiwgY29udGFpbmVySWQpLFxuICAgICAgICAgICAgZmlsdGVySm9pblNlbGVjdDogPFQgZXh0ZW5kcyBvYmplY3Q+KFxuICAgICAgICAgICAgICBmaWx0ZXI6IEZpbHRlckpvaW5TZWxlY3QsXG4gICAgICAgICAgICAgIGN1cnNvcj86IHsgc2tpcD86IG51bWJlcjsgbGltaXQ/OiBudW1iZXIgfVxuICAgICAgICAgICAgKSA9PlxuICAgICAgICAgICAgICBmaWx0ZXJcbiAgICAgICAgICAgICAgICAua2V5c1xuICAgICAgICAgICAgICAgIC5mb3JFYWNoRWZmZWN0KChrKSA9PlxuICAgICAgICAgICAgICAgICAgRWZmZWN0KGJ1aWxkRmlsdGVySm9pblNlbGVjdENvc21vc1F1ZXJ5KGZpbHRlciwgaywgbmFtZSwgY3Vyc29yPy5za2lwLCBjdXJzb3I/LmxpbWl0KSlcbiAgICAgICAgICAgICAgICAgICAgLnRhcCgocSkgPT4gbG9nUXVlcnkocSkpXG4gICAgICAgICAgICAgICAgICAgIC5mbGF0TWFwKChxKSA9PlxuICAgICAgICAgICAgICAgICAgICAgIEVmZmVjdC5wcm9taXNlKCgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLml0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5xdWVyeTxUPihxKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAuZmV0Y2hBbGwoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbigoeyByZXNvdXJjZXMgfSkgPT4gcmVzb3VyY2VzKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAubWFwKChhKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCB2ID0gYVxuICAgICAgICAgICAgICAgICAgICAuZmxhdE1hcCgoXykgPT4gXylcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgoeCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICBzcHJlYWQoXG4gICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgciwgLi4ucmVzdCB9OiBhbnkpID0+ICh7IC4uLnJlc3QsIC4uLnIgfSBhcyBUICYgeyBfcm9vdElkOiBzdHJpbmcgfSlcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIHJldHVybiB2XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuaW5zdHJ1bWVudChcImNvc21vcy5maWx0ZXJKb2luU2VsZWN0XCIpXG4gICAgICAgICAgICAgICAgLmxvZ0Fubm90YXRlKFwiY29zbW9zLmRiXCIsIGNvbnRhaW5lcklkKSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWF5IHJldHVybiBkdXBsaWNhdGUgcmVzdWx0cyBmb3IgXCJqb2luX2ZpbmRcIiwgd2hlbiBtYXRjaGluZyBtb3JlIHRoYW4gb25jZS5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZmlsdGVyOiAoZmlsdGVyOiBGaWx0ZXI8UE0+LCBjdXJzb3I/OiB7IHNraXA/OiBudW1iZXI7IGxpbWl0PzogbnVtYmVyIH0pID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgc2tpcCA9IGN1cnNvcj8uc2tpcFxuICAgICAgICAgICAgICBjb25zdCBsaW1pdCA9IGN1cnNvcj8ubGltaXRcbiAgICAgICAgICAgICAgcmV0dXJuIChmaWx0ZXIudHlwZSA9PT0gXCJqb2luX2ZpbmRcIlxuICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBwcm9ibGVtIGlmIG9uZSBvZiB0aGUgbXVsdGlwbGUgam9pbmVkIGFycmF5cyBjYW4gYmUgZW1wdHkhXG4gICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNjAzMjA3ODAvYXp1cmUtY29zbW9zZGItc3FsLWpvaW4tbm90LXJldHVybmluZy1yZXN1bHRzLXdoZW4tdGhlLWNoaWxkLWNvbnRhaW5zLWVtcHR5LWFycmFcbiAgICAgICAgICAgICAgICAvLyBzbyB3ZSB1c2UgbXVsdGlwbGUgcXVlcmllcyBpbnN0ZWFkLlxuICAgICAgICAgICAgICAgID8gZmlsdGVyXG4gICAgICAgICAgICAgICAgICAua2V5c1xuICAgICAgICAgICAgICAgICAgLmZvckVhY2hFZmZlY3QoKGspID0+XG4gICAgICAgICAgICAgICAgICAgIEVmZmVjdChidWlsZEZpbmRKb2luQ29zbW9zUXVlcnkoZmlsdGVyLCBrLCBuYW1lLCBza2lwLCBsaW1pdCkpXG4gICAgICAgICAgICAgICAgICAgICAgLnRhcCgocSkgPT4gbG9nUXVlcnkocSkpXG4gICAgICAgICAgICAgICAgICAgICAgLmZsYXRNYXAoKHEpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBFZmZlY3QucHJvbWlzZSgoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucXVlcnk8UE0+KHEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZldGNoQWxsKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbigoeyByZXNvdXJjZXMgfSkgPT4gcmVzb3VyY2VzKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIC5tYXAoKF8pID0+IF8uZmxhdE1hcCgoXykgPT4gXykpXG4gICAgICAgICAgICAgICAgOiBFZmZlY3QoYnVpbGRDb3Ntb3NRdWVyeShmaWx0ZXIsIG5hbWUsIGltcG9ydGVkTWFya2VySWQsIHNraXAsIGxpbWl0KSlcbiAgICAgICAgICAgICAgICAgIC50YXAoKHEpID0+IGxvZ1F1ZXJ5KHEpKVxuICAgICAgICAgICAgICAgICAgLmZsYXRNYXAoKHEpID0+XG4gICAgICAgICAgICAgICAgICAgIEVmZmVjdC5wcm9taXNlKCgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAuaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICAgIC5xdWVyeTx7IGY6IFBNIH0+KFxuICAgICAgICAgICAgICAgICAgICAgICAgICBxXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAuZmV0Y2hBbGwoKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oKHsgcmVzb3VyY2VzIH0pID0+IHJlc291cmNlcy5tYXAoKF8pID0+IF8uZikpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgLmluc3RydW1lbnQoXCJjb3Ntb3MuZmlsdGVyXCIpXG4gICAgICAgICAgICAgICAgLmxvZ0Fubm90YXRlKFwiY29zbW9zLmRiXCIsIGNvbnRhaW5lcklkKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZpbmQ6IChpZCkgPT5cbiAgICAgICAgICAgICAgRWZmZWN0XG4gICAgICAgICAgICAgICAgLnByb21pc2UoKCkgPT5cbiAgICAgICAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAuaXRlbShpZCwgY29uZmlnPy5wYXJ0aXRpb25WYWx1ZSh7IGlkIH0gYXMgUE0pKVxuICAgICAgICAgICAgICAgICAgICAucmVhZDxQTT4oKVxuICAgICAgICAgICAgICAgICAgICAudGhlbigoeyByZXNvdXJjZSB9KSA9PiBPcHRpb24uZnJvbU51bGxhYmxlKHJlc291cmNlKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmluc3RydW1lbnQoXCJjb3Ntb3MuZmluZFwiKVxuICAgICAgICAgICAgICAgIC5sb2dBbm5vdGF0ZShcImNvc21vcy5kYlwiLCBjb250YWluZXJJZCksXG4gICAgICAgICAgICBzZXQ6IChlKSA9PlxuICAgICAgICAgICAgICBPcHRpb25cbiAgICAgICAgICAgICAgICAuZnJvbU51bGxhYmxlKGUuX2V0YWcpXG4gICAgICAgICAgICAgICAgLm1hdGNoKFxuICAgICAgICAgICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgRWZmZWN0LnByb21pc2UoKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuaXRlbXMuY3JlYXRlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmUsXG4gICAgICAgICAgICAgICAgICAgICAgICBfcGFydGl0aW9uS2V5OiBjb25maWc/LnBhcnRpdGlvblZhbHVlKGUpXG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIChlVGFnKSA9PlxuICAgICAgICAgICAgICAgICAgICBFZmZlY3QucHJvbWlzZSgoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5pdGVtKGUuaWQsIGNvbmZpZz8ucGFydGl0aW9uVmFsdWUoZSkpLnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgICAgICAgICB7IC4uLmUsIF9wYXJ0aXRpb25LZXk6IGNvbmZpZz8ucGFydGl0aW9uVmFsdWUoZSkgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNzQ29uZGl0aW9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJJZk1hdGNoXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uOiBlVGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmZsYXRNYXAoKHgpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmICh4LnN0YXR1c0NvZGUgPT09IDQxMiB8fCB4LnN0YXR1c0NvZGUgPT09IDQwNCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRWZmZWN0LmZhaWwobmV3IE9wdGltaXN0aWNDb25jdXJyZW5jeUV4Y2VwdGlvbihuYW1lLCBlLmlkKSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGlmICh4LnN0YXR1c0NvZGUgPiAyOTkgfHwgeC5zdGF0dXNDb2RlIDwgMjAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBFZmZlY3QuZGllKFxuICAgICAgICAgICAgICAgICAgICAgIG5ldyBDb3Ntb3NEYk9wZXJhdGlvbkVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJub3QgYWJsZSB0byB1cGRhdGUgcmVjb3JkOiBcIiArIHguc3RhdHVzQ29kZVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIEVmZmVjdCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmUsXG4gICAgICAgICAgICAgICAgICAgIF9ldGFnOiB4LmV0YWdcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuaW5zdHJ1bWVudChcImNvc21vcy5zZXRcIilcbiAgICAgICAgICAgICAgICAubG9nQW5ub3RhdGUoXCJjb3Ntb3MuZGJcIiwgY29udGFpbmVySWQpLFxuICAgICAgICAgICAgYmF0Y2hTZXQsXG4gICAgICAgICAgICBidWxrU2V0LFxuICAgICAgICAgICAgcmVtb3ZlOiAoZTogUE0pID0+XG4gICAgICAgICAgICAgIEVmZmVjdFxuICAgICAgICAgICAgICAgIC5wcm9taXNlKCgpID0+IGNvbnRhaW5lci5pdGVtKGUuaWQsIGNvbmZpZz8ucGFydGl0aW9uVmFsdWUoZSkpLmRlbGV0ZSgpKVxuICAgICAgICAgICAgICAgIC5pbnN0cnVtZW50KFwiY29zbW9zLnJlbW92ZVwiKVxuICAgICAgICAgICAgICAgIC5sb2dBbm5vdGF0ZShcImNvc21vcy5kYlwiLCBjb250YWluZXJJZClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBoYW5kbGUgbW9jayBkYXRhXG4gICAgICAgICAgY29uc3QgbWFya2VyID0geWllbGQqICQoXG4gICAgICAgICAgICBFZmZlY3QucHJvbWlzZSgoKSA9PlxuICAgICAgICAgICAgICBjb250YWluZXJcbiAgICAgICAgICAgICAgICAuaXRlbShpbXBvcnRlZE1hcmtlcklkLCBpbXBvcnRlZE1hcmtlcklkKVxuICAgICAgICAgICAgICAgIC5yZWFkPHsgaWQ6IHN0cmluZyB9PigpXG4gICAgICAgICAgICAgICAgLnRoZW4oKHsgcmVzb3VyY2UgfSkgPT4gT3B0aW9uLmZyb21OdWxsYWJsZShyZXNvdXJjZSkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuXG4gICAgICAgICAgaWYgKCFtYXJrZXIuaXNTb21lKCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQ3JlYXRpbmcgbW9jayBkYXRhIGZvciBcIiArIG5hbWUpXG4gICAgICAgICAgICBpZiAoc2VlZCkge1xuICAgICAgICAgICAgICBjb25zdCBtID0geWllbGQqICQoc2VlZClcbiAgICAgICAgICAgICAgeWllbGQqICQoXG4gICAgICAgICAgICAgICAgRWZmZWN0KG0udG9Ob25FbXB0eUFycmF5KVxuICAgICAgICAgICAgICAgICAgLmZsYXRNYXBPcHQoKGEpID0+XG4gICAgICAgICAgICAgICAgICAgIHNcbiAgICAgICAgICAgICAgICAgICAgICAuYnVsa1NldChhKVxuICAgICAgICAgICAgICAgICAgICAgIC5vckRpZVxuICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIGRlbGF5IGV4dHJhIGhlcmUsIHNvIHRoYXQgaW5pdGlhbCBjcmVhdGlvbiBiZXR3ZWVuIENvbXBhbmllcy9QT3MgYWxzbyBoYXZlIGFuIGludGVydmFsIGJldHdlZW4gdGhlbS5cbiAgICAgICAgICAgICAgICAgICAgICAuZGVsYXkoRHVyYXRpb24ubWFrZU1pbGxpcygxMTAwKSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gTWFyayBhcyBpbXBvcnRlZFxuICAgICAgICAgICAgeWllbGQqICQoXG4gICAgICAgICAgICAgIEVmZmVjdC5wcm9taXNlKCgpID0+XG4gICAgICAgICAgICAgICAgY29udGFpbmVyLml0ZW1zLmNyZWF0ZSh7XG4gICAgICAgICAgICAgICAgICBfcGFydGl0aW9uS2V5OiBpbXBvcnRlZE1hcmtlcklkLFxuICAgICAgICAgICAgICAgICAgaWQ6IGltcG9ydGVkTWFya2VySWRcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBzXG4gICAgICAgIH0pXG4gICAgfVxuICB9KVxufVxuXG5mdW5jdGlvbiBsb2dRdWVyeShxOiB7XG4gIHF1ZXJ5OiBzdHJpbmdcbiAgcGFyYW1ldGVyczoge1xuICAgIG5hbWU6IHN0cmluZ1xuICAgIHZhbHVlOiBTdXBwb3J0ZWRWYWx1ZXMgfCByZWFkb25seSBTdXBwb3J0ZWRWYWx1ZXNbXVxuICB9W11cbn0pIHtcbiAgcmV0dXJuIEVmZmVjdFxuICAgIC5sb2dEZWJ1ZyhcImNvc21vcyBxdWVyeVwiKVxuICAgIC5hcHBseShFZmZlY3QubG9nQW5ub3RhdGVzKHtcbiAgICAgIHF1ZXJ5OiBxLnF1ZXJ5LFxuICAgICAgcGFyYW1ldGVyczogSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIHEucGFyYW1ldGVycy5yZWR1Y2UoKGFjYywgdikgPT4ge1xuICAgICAgICAgIGFjY1t2Lm5hbWVdID0gdi52YWx1ZVxuICAgICAgICAgIHJldHVybiBhY2NcbiAgICAgICAgfSwge30gYXMgUmVjb3JkPHN0cmluZywgU3VwcG9ydGVkVmFsdWVzIHwgcmVhZG9ubHkgU3VwcG9ydGVkVmFsdWVzW10+KSxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAyXG4gICAgICApXG4gICAgfSkpXG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQ6IHNob3VsZCBidWlsZCBTZWxlY3QgaW50byBXaGVyZSBxdWVyeVxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRGaWx0ZXJKb2luU2VsZWN0Q29zbW9zUXVlcnkoXG4gIGZpbHRlcjogRmlsdGVySm9pblNlbGVjdCxcbiAgazogc3RyaW5nLFxuICBuYW1lOiBzdHJpbmcsXG4gIHNraXA/OiBudW1iZXIsXG4gIGxpbWl0PzogbnVtYmVyXG4pIHtcbiAgY29uc3QgbG0gPSBza2lwICE9PSB1bmRlZmluZWQgfHwgbGltaXQgIT09IHVuZGVmaW5lZCA/IGBPRkZTRVQgJHtza2lwID8/IDB9IExJTUlUICR7bGltaXQgPz8gOTk5OTk5fWAgOiBcIlwiXG4gIHJldHVybiB7XG4gICAgcXVlcnk6IGBcblNFTEVDVCByLCBmLmlkIGFzIF9yb290SWRcbkZST00gJHtuYW1lfSBmXG5KT0lOIHIgSU4gZi4ke2t9XG5XSEVSRSBMT1dFUihyLiR7ZmlsdGVyLnZhbHVlS2V5fSkgPSBMT1dFUihAdmFsdWUpXG4ke2xtfVxuYCxcbiAgICBwYXJhbWV0ZXJzOiBbeyBuYW1lOiBcIkB2YWx1ZVwiLCB2YWx1ZTogZmlsdGVyLnZhbHVlIH1dXG4gIH1cbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZDogaXMgbm93IHBhcnQgb2YgV2hlcmUgcXVlcnkgYXMgay4tMS52YWx1ZUtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRGaW5kSm9pbkNvc21vc1F1ZXJ5KFxuICBmaWx0ZXI6IEpvaW5GaW5kRmlsdGVyLFxuICBrOiBzdHJpbmcsXG4gIG5hbWU6IHN0cmluZyxcbiAgc2tpcD86IG51bWJlcixcbiAgbGltaXQ/OiBudW1iZXJcbikge1xuICBjb25zdCBsbSA9IHNraXAgIT09IHVuZGVmaW5lZCB8fCBsaW1pdCAhPT0gdW5kZWZpbmVkID8gYE9GRlNFVCAke3NraXAgPz8gMH0gTElNSVQgJHtsaW1pdCA/PyA5OTk5OTl9YCA6IFwiXCJcbiAgcmV0dXJuIHtcbiAgICBxdWVyeTogYFxuU0VMRUNUIERJU1RJTkNUIFZBTFVFIGZcbkZST00gJHtuYW1lfSBmXG5KT0lOIHIgSU4gZi4ke2t9XG5XSEVSRSBMT1dFUihyLiR7ZmlsdGVyLnZhbHVlS2V5fSkgPSBMT1dFUihAdmFsdWUpXG4ke2xtfWAsXG4gICAgcGFyYW1ldGVyczogW3sgbmFtZTogXCJAdmFsdWVcIiwgdmFsdWU6IGZpbHRlci52YWx1ZSB9XVxuICB9XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQ6IHNob3VsZCBidWlsZCBpbnRvIFdoZXJlIHF1ZXJ5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZExlZ2FjeUNvc21vc1F1ZXJ5PFBNPihcbiAgZmlsdGVyOiBMZWdhY3lGaWx0ZXI8UE0+LFxuICBuYW1lOiBzdHJpbmcsXG4gIGltcG9ydGVkTWFya2VySWQ6IHN0cmluZyxcbiAgc2tpcD86IG51bWJlcixcbiAgbGltaXQ/OiBudW1iZXJcbikge1xuICBjb25zdCBsbSA9IHNraXAgIT09IHVuZGVmaW5lZCB8fCBsaW1pdCAhPT0gdW5kZWZpbmVkID8gYE9GRlNFVCAke3NraXAgPz8gMH0gTElNSVQgJHtsaW1pdCA/PyA5OTk5OTl9YCA6IFwiXCJcbiAgcmV0dXJuIHtcbiAgICBxdWVyeTogYFxuICAgIFNFTEVDVCBmXG4gICAgRlJPTSAke25hbWV9IEFTIGZcbiAgICBXSEVSRSBmLmlkICE9IEBpZCBBTkQgZi4ke1xuICAgICAgU3RyaW5nKFxuICAgICAgICBmaWx0ZXIuYnlcbiAgICAgIClcbiAgICB9IExJS0UgQGZpbHRlclxuICAke2xtfWAsXG4gICAgcGFyYW1ldGVyczogW1xuICAgICAgeyBuYW1lOiBcIkBpZFwiLCB2YWx1ZTogaW1wb3J0ZWRNYXJrZXJJZCB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBcIkBmaWx0ZXJcIixcbiAgICAgICAgdmFsdWU6IGZpbHRlci50eXBlID09PSBcImVuZHNXaXRoXCJcbiAgICAgICAgICA/IGAlJHtmaWx0ZXIudmFsdWV9YFxuICAgICAgICAgIDogZmlsdGVyLnR5cGUgPT09IFwiY29udGFpbnNcIlxuICAgICAgICAgID8gYCUke2ZpbHRlci52YWx1ZX0lYFxuICAgICAgICAgIDogYCR7ZmlsdGVyLnZhbHVlfSVgXG4gICAgICB9XG4gICAgXVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFdoZXJlQ29zbW9zUXVlcnkoXG4gIGZpbHRlcjogU3RvcmVXaGVyZUZpbHRlcixcbiAgbmFtZTogc3RyaW5nLFxuICBpbXBvcnRlZE1hcmtlcklkOiBzdHJpbmcsXG4gIHNraXA/OiBudW1iZXIsXG4gIGxpbWl0PzogbnVtYmVyXG4pIHtcbiAgY29uc3QgbG0gPSBza2lwICE9PSB1bmRlZmluZWQgfHwgbGltaXQgIT09IHVuZGVmaW5lZCA/IGBPRkZTRVQgJHtza2lwID8/IDB9IExJTUlUICR7bGltaXQgPz8gOTk5OTk5fWAgOiBcIlwiXG4gIHJldHVybiB7XG4gICAgcXVlcnk6IGBcbiAgICBTRUxFQ1QgZlxuICAgIEZST00gJHtuYW1lfSBBUyBmXG4gICAgJHtcbiAgICAgIGZpbHRlclxuICAgICAgICAud2hlcmVcbiAgICAgICAgLmZpbHRlcigoXykgPT4gXy5rZXkuaW5jbHVkZXMoXCIuLTEuXCIpKVxuICAgICAgICAubWFwKChfKSA9PiBfLmtleS5zcGxpdChcIi4tMS5cIilbMF0pXG4gICAgICAgIC5tYXAoKF8pID0+IGBKT0lOICR7X30gSU4gZi4ke199YClcbiAgICAgICAgLnVuaXEoRXF1aXZhbGVuY2Uuc3RyaW5nKVxuICAgICAgICAuam9pbihcIlxcblwiKVxuICAgIH1cbiAgICBXSEVSRSBmLmlkICE9IEBpZCBBTkQgJHtcbiAgICAgIGZpbHRlclxuICAgICAgICAud2hlcmVcbiAgICAgICAgLm1hcCgoXykgPT5cbiAgICAgICAgICBfLmtleS5pbmNsdWRlcyhcIi4tMS5cIilcbiAgICAgICAgICAgID8geyAuLi5fLCBmOiBfLmtleS5zcGxpdChcIi4tMS5cIilbMF0sIGtleTogXy5rZXkuc3BsaXQoXCIuLTEuXCIpWzFdISB9XG4gICAgICAgICAgICA6IHsgLi4uXywgZjogXCJmXCIgfVxuICAgICAgICApXG4gICAgICAgIC5tYXAoXG4gICAgICAgICAgKHgsIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGsgPSBgJHt4LmZ9LiR7eC5rZXl9YFxuICAgICAgICAgICAgY29uc3QgdiA9IGBAdiR7aX1gXG5cbiAgICAgICAgICAgIHN3aXRjaCAoeC50KSB7XG4gICAgICAgICAgICAgIGNhc2UgXCJpblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgQVJSQVlfQ09OVEFJTlMoJHt2fSwgJHtrfSlgXG4gICAgICAgICAgICAgIGNhc2UgXCJub3QtaW5cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYChOT1QgQVJSQVlfQ09OVEFJTlMoJHt2fSwgJHtrfSkpYFxuICAgICAgICAgICAgICBjYXNlIFwiZW5kcy13aXRoXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBFTkRTV0lUSCgke2t9LCAke3Z9LCB0cnVlKWBcbiAgICAgICAgICAgICAgY2FzZSBcImluY2x1ZGVzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBBUlJBWV9DT05UQUlOUygke2t9LCAke3Z9KWBcbiAgICAgICAgICAgICAgY2FzZSBcIm5vdC1pbmNsdWRlc1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgKE5PVCBBUlJBWV9DT05UQUlOUygke2t9LCAke3Z9KSlgXG4gICAgICAgICAgICAgIGNhc2UgXCJjb250YWluc1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgQ09OVEFJTlMoJHtrfSwgJHt2fSwgdHJ1ZSlgXG4gICAgICAgICAgICAgIGNhc2UgXCJzdGFydHMtd2l0aFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgU1RBUlRTV0lUSCgke2t9LCAke3Z9LCB0cnVlKWBcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbGsgPSBsb3dlcklmTmVlZGVkKGssIHgudmFsdWUpXG4gICAgICAgICAgICBjb25zdCBsdiA9IGxvd2VySWZOZWVkZWQodiwgeC52YWx1ZSlcblxuICAgICAgICAgICAgc3dpdGNoICh4LnQpIHtcbiAgICAgICAgICAgICAgY2FzZSBcImx0XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2xrfSA8ICR7bHZ9YFxuICAgICAgICAgICAgICBjYXNlIFwibHRlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2xrfSA8PSAke2x2fWBcbiAgICAgICAgICAgICAgY2FzZSBcImd0XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2xrfSA+ICR7bHZ9YFxuICAgICAgICAgICAgICBjYXNlIFwiZ3RlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2xrfSA+PSAke2x2fWBcbiAgICAgICAgICAgICAgY2FzZSBcIm5vdC1lcVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB4LnZhbHVlID09PSBudWxsXG4gICAgICAgICAgICAgICAgICA/IGBJU19OVUxMKCR7a30pID0gZmFsc2VgXG4gICAgICAgICAgICAgICAgICA6IGAke2xrfSA8PiAke2x2fWBcbiAgICAgICAgICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgICAgICAgIGNhc2UgXCJlcVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB4LnZhbHVlID09PSBudWxsXG4gICAgICAgICAgICAgICAgICA/IGBJU19OVUxMKCR7a30pID0gdHJ1ZWBcbiAgICAgICAgICAgICAgICAgIDogYCR7bGt9ID0gJHtsdn1gXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgICAgIC5qb2luKGZpbHRlci5tb2RlID09PSBcIm9yXCIgPyBcIiBPUiBcIiA6IFwiIEFORCBcIilcbiAgICB9XG4gICAgJHtsbX1gLFxuICAgIHBhcmFtZXRlcnM6IFtcbiAgICAgIHsgbmFtZTogXCJAaWRcIiwgdmFsdWU6IGltcG9ydGVkTWFya2VySWQgfSxcbiAgICAgIC4uLmZpbHRlclxuICAgICAgICAud2hlcmVcbiAgICAgICAgLm1hcCgoeCwgaSkgPT4gKHtcbiAgICAgICAgICBuYW1lOiBgQHYke2l9YCxcbiAgICAgICAgICB2YWx1ZTogeC52YWx1ZVxuICAgICAgICB9KSlcbiAgICBdXG4gIH1cbn1cblxuLy8gZnVuY3Rpb24gaXNBcnJheSh0OiBTdXBwb3J0ZWRWYWx1ZXMgfCByZWFkb25seSBTdXBwb3J0ZWRWYWx1ZXNbXSk6IHQgaXMgcmVhZG9ubHkgU3VwcG9ydGVkVmFsdWVzW10ge1xuLy8gICByZXR1cm4gQXJyYXkuaXNBcnJheSh0KVxuLy8gfVxuXG5mdW5jdGlvbiBsb3dlcklmTmVlZGVkKGtleTogdW5rbm93biwgdmFsdWU6IHVua25vd24pIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiA/IGBMT1dFUigke2tleX0pYCA6IGAke2tleX1gXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZENvc21vc1F1ZXJ5PFBNPihcbiAgZmlsdGVyOiBMZWdhY3lGaWx0ZXI8UE0+IHwgU3RvcmVXaGVyZUZpbHRlcixcbiAgbmFtZTogc3RyaW5nLFxuICBpbXBvcnRlZE1hcmtlcklkOiBzdHJpbmcsXG4gIHNraXA/OiBudW1iZXIsXG4gIGxpbWl0PzogbnVtYmVyXG4pIHtcbiAgcmV0dXJuIGZpbHRlci50eXBlID09PSBcInN0YXJ0c1dpdGhcIlxuICAgICAgfHwgZmlsdGVyLnR5cGUgPT09IFwiZW5kc1dpdGhcIlxuICAgICAgfHwgZmlsdGVyLnR5cGUgPT09IFwiY29udGFpbnNcIlxuICAgID8gYnVpbGRMZWdhY3lDb3Ntb3NRdWVyeShmaWx0ZXIsIG5hbWUsIGltcG9ydGVkTWFya2VySWQsIHNraXAsIGxpbWl0KVxuICAgIDogYnVpbGRXaGVyZUNvc21vc1F1ZXJ5KGZpbHRlciwgbmFtZSwgaW1wb3J0ZWRNYXJrZXJJZCwgc2tpcCwgbGltaXQpXG59XG5cbmNsYXNzIENvc21vc0RiT3BlcmF0aW9uRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihyZWFkb25seSBtZXNzYWdlOiBzdHJpbmcpIHt9XG59XG5leHBvcnQgZnVuY3Rpb24gQ29zbW9zU3RvcmVMaXZlKGNvbmZpZzogQ29uZmlnPFN0b3JhZ2VDb25maWc+KSB7XG4gIHJldHVybiBjb25maWcuY29uZmlnLmZsYXRNYXAobWFrZUNvc21vc1N0b3JlKS50b0xheWVyKFN0b3JlTWFrZXIpXG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
86abfcd3894752fc7211a2479161a1f24bc7df3ef89aaa7c2ff967fc7b5c673b
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# @effect-app/infra
|
|
2
2
|
|
|
3
|
+
## 0.88.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 8d312e3d: updater queue for updated requestcontext
|
|
8
|
+
|
|
9
|
+
## 0.87.5
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- aa3c98d1: update packages
|
|
14
|
+
- Updated dependencies [aa3c98d1]
|
|
15
|
+
- @effect-app/infra-adapters@0.59.1
|
|
16
|
+
- @effect-app/prelude@0.70.1
|
|
17
|
+
- @effect-app/schema@0.62.1
|
|
18
|
+
- @effect-app/core@0.68.1
|
|
19
|
+
|
|
3
20
|
## 0.87.4
|
|
4
21
|
|
|
5
22
|
### Patch Changes
|
|
@@ -7,14 +7,14 @@ exports.makeMemQueue = makeMemQueue;
|
|
|
7
7
|
var tsplus_module_1 = _interopRequireWildcard(require("effect/Effect"));
|
|
8
8
|
var tsplus_module_2 = _interopRequireWildcard(require("@effect-app/core/_ext/Iterable"));
|
|
9
9
|
var tsplus_module_3 = _interopRequireWildcard(require("@effect-app/infra/services/QueueMaker/errors"));
|
|
10
|
-
var tsplus_module_4 = _interopRequireWildcard(require("@effect-app/prelude/
|
|
11
|
-
var tsplus_module_5 = _interopRequireWildcard(require("@effect-app/
|
|
12
|
-
var tsplus_module_6 = _interopRequireWildcard(require("effect/
|
|
10
|
+
var tsplus_module_4 = _interopRequireWildcard(require("@effect-app/prelude/schema"));
|
|
11
|
+
var tsplus_module_5 = _interopRequireWildcard(require("@effect-app/infra/services/Store/Memory"));
|
|
12
|
+
var tsplus_module_6 = _interopRequireWildcard(require("@effect-app/prelude/utils"));
|
|
13
|
+
var tsplus_module_7 = _interopRequireWildcard(require("effect/Fiber"));
|
|
13
14
|
var _memQueue = require("@effect-app/infra-adapters/memQueue");
|
|
14
15
|
var _RequestContext = require("@effect-app/infra/RequestContext");
|
|
15
16
|
var _ids = require("@effect-app/prelude/ids");
|
|
16
17
|
var _RequestContextContainer = require("../RequestContextContainer.cjs");
|
|
17
|
-
var _Memory = require("../Store/Memory.cjs");
|
|
18
18
|
var _errors2 = require("./errors.cjs");
|
|
19
19
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
20
20
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
@@ -26,9 +26,10 @@ function makeMemQueue(queueName, queueDrainName, encoder, makeHandleEvent, provi
|
|
|
26
26
|
const mem = yield* $(_memQueue.MemQueue);
|
|
27
27
|
const q = yield* $(mem.getOrCreateQueue(queueName));
|
|
28
28
|
const qDrain = yield* $(mem.getOrCreateQueue(queueDrainName));
|
|
29
|
+
const rcc = yield* $(_RequestContextContainer.RequestContextContainer);
|
|
29
30
|
return {
|
|
30
31
|
publish: (...messages) => tsplus_module_1.gen(function* ($) {
|
|
31
|
-
const requestContext = yield* $(
|
|
32
|
+
const requestContext = yield* $(rcc.requestContext);
|
|
32
33
|
return yield* $(tsplus_module_3.forkDaemonReportQueue(tsplus_module_2.ext_forEach(messages, m => tsplus_module_1.asUnit(
|
|
33
34
|
// we JSON encode, because that is what the wire also does, and it reveals holes in e.g unknown encoders (Date->String)
|
|
34
35
|
tsplus_module_1.flatMap(tsplus_module_1.sync(() => JSON.stringify(encoder({
|
|
@@ -48,15 +49,15 @@ function makeMemQueue(queueName, queueDrainName, encoder, makeHandleEvent, provi
|
|
|
48
49
|
tsplus_module_1.flatMap(tsplus_module_1.orDie(tsplus_module_1.flatMap(tsplus_module_1.sync(() => JSON.parse(msg)), parseDrain)), ({
|
|
49
50
|
body,
|
|
50
51
|
meta
|
|
51
|
-
}) => provideContext(
|
|
52
|
+
}) => tsplus_module_1.zipRight(provideContext(silenceAndReportError(tsplus_module_1.zipRight(tsplus_module_1.annotateLogs({
|
|
53
|
+
body: tsplus_module_6.RecordPretty(tsplus_module_6.object$(body)),
|
|
54
|
+
meta: tsplus_module_6.RecordPretty(tsplus_module_6.object$(meta))
|
|
55
|
+
})(tsplus_module_1.logDebug(`$$ [${queueDrainName}] Processing incoming message`)), handleEvent(body)))))(tsplus_module_1.zipRight(tsplus_module_1.flatMap(rcc.requestContext, _ => tsplus_module_5.restoreFromRequestContext(_)))(rcc.start(_RequestContext.RequestContext.inherit(meta, {
|
|
52
56
|
id: (0, _ids.RequestId)(body.id),
|
|
53
57
|
locale: "en",
|
|
54
|
-
name:
|
|
55
|
-
}))
|
|
56
|
-
|
|
57
|
-
meta: tsplus_module_4.RecordPretty(tsplus_module_4.object$(meta))
|
|
58
|
-
})(tsplus_module_1.logDebug(`$$ [${queueDrainName}] Processing incoming message`)), () => _Memory.restoreFromRequestContext), handleEvent(body)))));
|
|
59
|
-
return yield* $(tsplus_module_1.forkScoped(tsplus_module_1.forever(silenceAndReportError(tsplus_module_1.flatMap(qDrain.take(), x => tsplus_module_1.flatMap(tsplus_module_1.fork(tsplus_module_1.uninterruptible(processMessage(x))), _ => tsplus_module_6.join(_)))
|
|
58
|
+
name: tsplus_module_4.ReasonableString(body._tag)
|
|
59
|
+
})))));
|
|
60
|
+
return yield* $(tsplus_module_1.forkScoped(tsplus_module_1.forever(silenceAndReportError(tsplus_module_1.flatMap(qDrain.take(), x => tsplus_module_1.flatMap(tsplus_module_1.fork(tsplus_module_1.uninterruptible(processMessage(x))), _ => tsplus_module_7.join(_)))
|
|
60
61
|
// TODO: normally a failed item would be returned to the queue and retried up to X times.
|
|
61
62
|
// .flatMap(_ => _._tag === "Failure" && !isInterrupted ? qDrain.offer(x) : Effect.unit) // TODO: retry count tracking and max retries.
|
|
62
63
|
))));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memQueue.cjs","names":["_memQueue","require","_RequestContext","_ids","_RequestContextContainer","
|
|
1
|
+
{"version":3,"file":"memQueue.cjs","names":["_memQueue","require","_RequestContext","_ids","_RequestContextContainer","_errors2","_getRequireWildcardCache","e","WeakMap","r","t","_interopRequireWildcard","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","makeMemQueue","queueName","queueDrainName","encoder","makeHandleEvent","provideContext","parseDrain","tsplus_module_1","gen","$","mem","MemQueue","q","getOrCreateQueue","qDrain","rcc","RequestContextContainer","publish","messages","requestContext","tsplus_module_3","forkDaemonReportQueue","tsplus_module_2","ext_forEach","m","asUnit","flatMap","sync","JSON","stringify","body","meta","_","offer","drain","handleEvent","silenceAndReportError","reportNonInterruptedFailure","name","processMessage","msg","orDie","parse","zipRight","annotateLogs","tsplus_module_6","RecordPretty","object$","logDebug","tsplus_module_5","restoreFromRequestContext","start","RequestContext","inherit","id","RequestId","locale","tsplus_module_4","ReasonableString","_tag","forkScoped","forever","take","x","fork","uninterruptible","tsplus_module_7","join"],"sources":["../../../_src/services/QueueMaker/memQueue.ts"],"sourcesContent":[null],"mappings":"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"}
|