sonamu 0.8.25 → 0.8.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth/knex-adapter.d.ts.map +1 -1
- package/dist/auth/knex-adapter.js +7 -3
- package/dist/cone/cone-generator.js +3 -3
- package/dist/database/puri-subset.test-d.js +9 -1
- package/dist/database/puri-subset.types.d.ts +1 -1
- package/dist/database/puri-subset.types.d.ts.map +1 -1
- package/dist/database/puri-subset.types.js +1 -1
- package/dist/testing/fixture-generator.js +5 -5
- package/dist/ui/ai-client.js +2 -2
- package/dist/ui/api.d.ts.map +1 -1
- package/dist/ui/api.js +14 -14
- package/dist/ui/cdd-service.d.ts +15 -18
- package/dist/ui/cdd-service.d.ts.map +1 -1
- package/dist/ui/cdd-service.js +246 -222
- package/dist/ui/cdd-types.d.ts +41 -68
- package/dist/ui/cdd-types.d.ts.map +1 -1
- package/dist/ui/cdd-types.js +2 -2
- package/dist/ui-web/assets/index-CKo0Z2Iu.css +1 -0
- package/dist/ui-web/assets/{index-CxiydzeC.js → index-DK-2aacv.js} +83 -83
- package/dist/ui-web/index.html +2 -2
- package/package.json +7 -3
- package/src/auth/knex-adapter.ts +3 -2
- package/src/cone/cone-generator.ts +2 -2
- package/src/database/puri-subset.test-d.ts +102 -0
- package/src/database/puri-subset.types.ts +1 -1
- package/src/skills/sonamu/SKILL.md +43 -0
- package/src/testing/fixture-generator.ts +4 -4
- package/src/ui/ai-client.ts +1 -1
- package/src/ui/api.ts +18 -17
- package/src/ui/cdd-service.ts +264 -254
- package/src/ui/cdd-types.ts +40 -75
- package/dist/ui-web/assets/index-BrQKU3j9.css +0 -1
package/dist/ui/ai-client.js
CHANGED
|
@@ -17,7 +17,7 @@ class AIClient {
|
|
|
17
17
|
...aiModule,
|
|
18
18
|
anthropic
|
|
19
19
|
};
|
|
20
|
-
this.model = anthropic("claude-sonnet-4-
|
|
20
|
+
this.model = anthropic("claude-sonnet-4-6");
|
|
21
21
|
} catch (error) {
|
|
22
22
|
console.warn("AI SDK packages not installed. Install @ai-sdk/anthropic and ai to use AI features.");
|
|
23
23
|
throw error;
|
|
@@ -479,4 +479,4 @@ updateEntity({ entityId: "Project", updates: { props: [{ name: "priority", type:
|
|
|
479
479
|
}
|
|
480
480
|
export const aiClient = new AIClient();
|
|
481
481
|
|
|
482
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91aS9haS1jbGllbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIGJpb21lLWlnbm9yZS1hbGwgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IEFJIFNES+ydmCDtg4DsnoXsnbQg66qF7ZmV7ZWY7KeAIOyViuyVhCBhbnnrpbwg7ZeI7Jqp7ZWoICovXG5pbXBvcnQgdHlwZSB7IExhbmd1YWdlTW9kZWwsIE1vZGVsTWVzc2FnZSwgU3RyZWFtVGV4dFJlc3VsdCB9IGZyb20gXCJhaVwiO1xuaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCI7XG5pbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCIuLi9hcGlcIjtcbmltcG9ydCB7IEVudGl0eU1hbmFnZXIgfSBmcm9tIFwiLi4vZW50aXR5L2VudGl0eS1tYW5hZ2VyXCI7XG5pbXBvcnQge1xuICB0eXBlIEVudGl0eVByb3AsXG4gIHR5cGUgRml4dHVyZVJlY29yZCxcbiAgZ2V0RW51bURlZlZhbHVlcyxcbiAgaXNJbnRlcm5hbFN1YnNldEZpZWxkLFxuICBub3JtYWxpemVTdWJzZXRGaWVsZCxcbiAgVGVtcGxhdGVPcHRpb25zLFxufSBmcm9tIFwiLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IG5vbk51bGxhYmxlIH0gZnJvbSBcIi4uL3V0aWxzL3V0aWxzXCI7XG5cbnR5cGUgVmFsaWRhdGlvbkVycm9yID0ge1xuICBmaWVsZDogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59O1xuXG5jbGFzcyBBSUNsaWVudCB7XG4gIHByaXZhdGUgbW9kZWw6IExhbmd1YWdlTW9kZWwgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBhaVNkazpcbiAgICB8ICh0eXBlb2YgaW1wb3J0KFwiYWlcIikgJiB7XG4gICAgICAgIGFudGhyb3BpYz86IHR5cGVvZiBpbXBvcnQoXCJAYWktc2RrL2FudGhyb3BpY1wiKS5hbnRocm9waWM7XG4gICAgICB9KVxuICAgIHwgbnVsbCA9IG51bGw7XG5cbiAgYXN5bmMgaW5pdCgpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBhbnRocm9waWMgfSA9IGF3YWl0IGltcG9ydChcIkBhaS1zZGsvYW50aHJvcGljXCIpO1xuICAgICAgY29uc3QgYWlNb2R1bGUgPSBhd2FpdCBpbXBvcnQoXCJhaVwiKTtcbiAgICAgIHRoaXMuYWlTZGsgPSB7IC4uLmFpTW9kdWxlLCBhbnRocm9waWMgfTtcbiAgICAgIHRoaXMubW9kZWwgPSBhbnRocm9waWMoXCJjbGF1ZGUtc29ubmV0LTQtNVwiKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBcIkFJIFNESyBwYWNrYWdlcyBub3QgaW5zdGFsbGVkLiBJbnN0YWxsIEBhaS1zZGsvYW50aHJvcGljIGFuZCBhaSB0byB1c2UgQUkgZmVhdHVyZXMuXCIsXG4gICAgICApO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRml4dHVyZShcbiAgICBtZXNzYWdlczogTW9kZWxNZXNzYWdlW10sXG4gICAgZml4dHVyZVJlY29yZHM6IEZpeHR1cmVSZWNvcmRbXSxcbiAgKTogU3RyZWFtVGV4dFJlc3VsdDxhbnksIGFueT4ge1xuICAgIGlmICghdGhpcy5haVNkayB8fCAhdGhpcy5tb2RlbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQUkgU0RLIG5vdCBpbml0aWFsaXplZC4gQ2FsbCBpbml0KCkgZmlyc3QuXCIpO1xuICAgIH1cblxuICAgIC8vIO2YhOyerCBmaXh0dXJlUmVjb3Jkc+yXkOyEnCDsgqzsmqnrkJwg7JeU7Yuw7Yuw65Ok7J2YIOq1rOyhsCDsoJXrs7Qg7IiY7KeRXG4gICAgY29uc3QgdXNlZEVudGl0eUlkcyA9IFsuLi5uZXcgU2V0KGZpeHR1cmVSZWNvcmRzLm1hcCgocikgPT4gci5lbnRpdHlJZCkpXTtcbiAgICBjb25zdCBlbnRpdHlTdHJ1Y3R1cmVzID0gdXNlZEVudGl0eUlkcy5tYXAoKGVudGl0eUlkKSA9PiB7XG4gICAgICBjb25zdCBlbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChlbnRpdHlJZCk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGVudGl0eUlkOiBlbnRpdHkuaWQsXG4gICAgICAgIHRhYmxlOiBlbnRpdHkudGFibGUsXG4gICAgICAgIHByb3BzOiBlbnRpdHkucHJvcHMsXG4gICAgICAgIHJlbGF0aW9uczogZW50aXR5LnJlbGF0aW9ucyxcbiAgICAgICAgZW51bUxhYmVsczogZW50aXR5LmVudW1MYWJlbHMsXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgY29uc3Qgc3lzdGVtTWVzc2FnZSA9IGBcbiAgICAgICAg64u57Iug7J2AIO2UveyKpOyzkCDroIjsvZTrk5zrpbwg7IiY7KCV7ZWY6rOgIOyDneyEse2VoCDsiJgg7J6I64qUIOuPhOyasOuvuOyeheuLiOuLpC5cblxuICAgICAgICDtmITsnqwg7ZS97Iqk7LOQIOugiOy9lOuTnDpcbiAgICAgICAgJHtKU09OLnN0cmluZ2lmeShmaXh0dXJlUmVjb3JkcywgbnVsbCwgMil9XG5cbiAgICAgICAg7JeU7Yuw7YuwIOq1rOyhsCDsoJXrs7Q6XG4gICAgICAgICR7SlNPTi5zdHJpbmdpZnkoZW50aXR5U3RydWN0dXJlcywgbnVsbCwgMil9XG5cbiAgICAgICAgIyMg7ZS97Iqk7LOQIOyImOyglVxuICAgICAgICDsgqzsmqnsnpDqsIAg7ZS97Iqk7LOQIOqwkiDsiJjsoJXsnYQg7JqU7LKt7ZWY66m0IHVwZGF0ZUZpeHR1cmVzIOuPhOq1rOulvCDsgqzsmqntlZjsl6wg67OA6rK97IKs7ZWt7J2EIOyggeyaqe2VmOyEuOyalC5cbiAgICAgICAgLSBmaXh0dXJlSWQ6IOyImOygle2VoCDtlL3siqTss5AgSUQgKO2YleyLnTogXCJFbnRpdHlJZCNpZFwiKVxuICAgICAgICAtIHVwZGF0ZXM6IOy7rOufvOuqheydhCDtgqTroZwsIOyDiCDqsJLsnYQg6rCS7Jy866GcIO2VmOuKlCDqsJ3ssrRcblxuICAgICAgICDsmIjsi5w6IFwiVXNlciMxXCIg7ZS97Iqk7LOQ7J2YIFwibmFtZVwiIOy7rOufvOydhCBcIu2Zjeq4uOuPmVwi7Jy866GcIOuzgOqyve2VmOugpOuptDpcbiAgICAgICAgdXBkYXRlRml4dHVyZXMoeyB1cGRhdGVzOiBbeyBmaXh0dXJlSWQ6IFwiVXNlciMxXCIsIHVwZGF0ZXM6IHsgbmFtZTogXCLtmY3quLjrj5lcIiB9IH1dIH0pXG5cbiAgICAgICAg67OA6rK965CgIOy7rOufvOydmCB0eXBl7J20IHJlbGF0aW9u7J24IOqyveyasCwg6rSA66CoIOyXlO2LsO2LsOyXkOuPhCDrsJjsmIHrkJjslrTslbwg7ZWgIOy7rOufvOydtCDsnojripTsp4Ag7ZmV7J247ZWY7IS47JqULlxuXG4gICAgICAgICMjIO2UveyKpOyzkCDsg53shLFcbiAgICAgICAg7IKs7Jqp7J6Q6rCAIOyDiOuhnOyatCDtlL3siqTss5Ag7IOd7ISx7J2EIOyalOyyre2VmOuptCBjcmVhdGVGaXh0dXJlcyDrj4Tqtazrpbwg7IKs7Jqp7ZWY7IS47JqULlxuICAgICAgICAtIGVudGl0eUlkOiDsg53shLHtlaAg7JeU7Yuw7YuwIElEXG4gICAgICAgIC0gaWQ6IOyDiCDroIjsvZTrk5zsnZggSUQgKOq4sOyhtCDtlL3siqTss5DsmYAg7KSR67O165CY7KeAIOyViuuKlCDsnYzsiJgg7IKs7JqpIOq2jOyepSwg7JiIOiAtMSwgLTIpXG4gICAgICAgIC0gY29sdW1uczog7Lus65+866qF7J2EIO2CpOuhnCwg6rCS7J2EIOqwkuycvOuhnCDtlZjripQg6rCd7LK0ICjsl5Tti7Dti7Ag6rWs7KGwIOywuOqzoClcblxuICAgICAgICDsmIjsi5w6IOyDiOuhnOyatCBVc2VyIO2UveyKpOyzkOulvCDsg53shLHtlZjroKTrqbQ6XG4gICAgICAgIGNyZWF0ZUZpeHR1cmVzKHsgZml4dHVyZXM6IFt7IGVudGl0eUlkOiBcIlVzZXJcIiwgaWQ6IC0xLCBjb2x1bW5zOiB7IG5hbWU6IFwi7ZmN6ri464+ZXCIsIGVtYWlsOiBcImhvbmdAZXhhbXBsZS5jb21cIiB9IH1dIH0pXG4gICAgICBgO1xuXG4gICAgY29uc3QgeyBzdHJlYW1UZXh0LCB0b29sIH0gPSB0aGlzLmFpU2RrO1xuXG4gICAgcmV0dXJuIHN0cmVhbVRleHQoe1xuICAgICAgbW9kZWw6IHRoaXMubW9kZWwsXG4gICAgICBzeXN0ZW06IHN5c3RlbU1lc3NhZ2UsXG4gICAgICBtZXNzYWdlcyxcbiAgICAgIHRvb2xzOiB7XG4gICAgICAgIHVwZGF0ZUZpeHR1cmVzOiB0b29sKHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgIFwi7ZS97Iqk7LOQIOugiOy9lOuTnOydmCDqsJLsnYQg7IiY7KCV7ZWp64uI64ukLiDsgqzsmqnsnpDqsIAg7Yq57KCVIOy7rOufvOydtOuCmCDqsJLsnYQg67OA6rK97ZW064us65286rOgIOyalOyyre2VoCDrlYwg7IKs7Jqp7ZWY7IS47JqULlwiLFxuICAgICAgICAgIGlucHV0U2NoZW1hOiB6Lm9iamVjdCh7XG4gICAgICAgICAgICB1cGRhdGVzOiB6LmFycmF5KFxuICAgICAgICAgICAgICB6Lm9iamVjdCh7XG4gICAgICAgICAgICAgICAgZml4dHVyZUlkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwi7IiY7KCV7ZWgIO2UveyKpOyzkCBJRCAo7ZiV7IudOiBFbnRpdHlJZCNpZClcIiksXG4gICAgICAgICAgICAgICAgdXBkYXRlczogelxuICAgICAgICAgICAgICAgICAgLnJlY29yZCh6LnN0cmluZygpLCB6LnVua25vd24oKSlcbiAgICAgICAgICAgICAgICAgIC5kZXNjcmliZShcIuy7rOufvOuqheydhCDtgqTroZwsIOyDiCDqsJLsnYQg6rCS7Jy866GcIO2VmOuKlCDqsJ3ssrRcIiksXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBleGVjdXRlOiBhc3luYyAoe1xuICAgICAgICAgICAgdXBkYXRlcyxcbiAgICAgICAgICB9OiB7XG4gICAgICAgICAgICB1cGRhdGVzOiBBcnJheTx7IGZpeHR1cmVJZDogc3RyaW5nOyB1cGRhdGVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9PjtcbiAgICAgICAgICB9KTogUHJvbWlzZTx7IHN1Y2Nlc3M6IGJvb2xlYW47IHVwZGF0ZWRSZWNvcmRzOiBGaXh0dXJlUmVjb3JkW10gfT4gPT4ge1xuICAgICAgICAgICAgLy8gZml4dHVyZVJlY29yZHPrpbwg67O17IKs7ZWY6rOgIOyXheuNsOydtO2KuCDsoIHsmqlcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRSZWNvcmRzOiBGaXh0dXJlUmVjb3JkW10gPSBmaXh0dXJlUmVjb3Jkcy5tYXAoKHJlY29yZCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB1cGRhdGUgPSB1cGRhdGVzLmZpbmQoXG4gICAgICAgICAgICAgICAgKHU6IHsgZml4dHVyZUlkOiBzdHJpbmcgfSkgPT4gdS5maXh0dXJlSWQgPT09IHJlY29yZC5maXh0dXJlSWQsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGlmICh1cGRhdGUpIHtcbiAgICAgICAgICAgICAgICAvLyBjb2x1bW5z7J2YIHZhbHVl66W8IOyXheuNsOydtO2KuFxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW2NvbHVtbk5hbWUsIG5ld1ZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh1cGRhdGUudXBkYXRlcykpIHtcbiAgICAgICAgICAgICAgICAgIHJlY29yZC5jb2x1bW5zW2NvbHVtbk5hbWVdLnZhbHVlID1cbiAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWUgYXMgRml4dHVyZVJlY29yZFtcImNvbHVtbnNcIl1bc3RyaW5nXVtcInZhbHVlXCJdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVjb3JkO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHJlY29yZDtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCB1cGRhdGVkUmVjb3JkcyB9O1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgICBjcmVhdGVGaXh0dXJlczogdG9vbCh7XG4gICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICBcIuyDiOuhnOyatCDtlL3siqTss5Ag66CI7L2U65Oc66W8IOyDneyEse2VqeuLiOuLpC4g7IKs7Jqp7J6Q6rCAIOyDiOuhnOyatCDrjbDsnbTthLDrpbwg7LaU6rCA7ZW064us65286rOgIOyalOyyre2VoCDrlYwg7IKs7Jqp7ZWY7IS47JqULlwiLFxuICAgICAgICAgIGlucHV0U2NoZW1hOiB6Lm9iamVjdCh7XG4gICAgICAgICAgICBmaXh0dXJlczogei5hcnJheShcbiAgICAgICAgICAgICAgei5vYmplY3Qoe1xuICAgICAgICAgICAgICAgIGVudGl0eUlkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwi7IOd7ISx7ZWgIOyXlO2LsO2LsCBJRFwiKSxcbiAgICAgICAgICAgICAgICBpZDogei5udW1iZXIoKS5kZXNjcmliZShcIuyDiCDroIjsvZTrk5zsnZggSUQgKOydjOyImCDqtozsnqUsIOyYiDogLTEsIC0yKVwiKSxcbiAgICAgICAgICAgICAgICBjb2x1bW5zOiB6XG4gICAgICAgICAgICAgICAgICAucmVjb3JkKHouc3RyaW5nKCksIHoudW5rbm93bigpKVxuICAgICAgICAgICAgICAgICAgLmRlc2NyaWJlKFwi7Lus65+866qF7J2EIO2CpOuhnCwg6rCS7J2EIOqwkuycvOuhnCDtlZjripQg6rCd7LK0XCIpLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgZXhlY3V0ZTogYXN5bmMgKHtcbiAgICAgICAgICAgIGZpeHR1cmVzLFxuICAgICAgICAgIH06IHtcbiAgICAgICAgICAgIGZpeHR1cmVzOiBBcnJheTx7IGVudGl0eUlkOiBzdHJpbmc7IGlkOiBudW1iZXI7IGNvbHVtbnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH0+O1xuICAgICAgICAgIH0pOiBQcm9taXNlPHsgc3VjY2VzczogYm9vbGVhbjsgdXBkYXRlZFJlY29yZHM6IEZpeHR1cmVSZWNvcmRbXSB9PiA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdSZWNvcmRzOiBGaXh0dXJlUmVjb3JkW10gPSBmaXh0dXJlcy5tYXAoXG4gICAgICAgICAgICAgIChmaXh0dXJlOiB7IGVudGl0eUlkOiBzdHJpbmc7IGlkOiBudW1iZXI7IGNvbHVtbnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChmaXh0dXJlLmVudGl0eUlkKTtcblxuICAgICAgICAgICAgICAgIC8vIOyXlO2LsO2LsCBwcm9wc+ulvCDquLDrsJjsnLzroZwgY29sdW1ucyDqtazshLFcbiAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5zOiBGaXh0dXJlUmVjb3JkW1wiY29sdW1uc1wiXSA9IHt9O1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcCBvZiBlbnRpdHkucHJvcHMpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChwcm9wLnR5cGUgPT09IFwidmlydHVhbFwiKSBjb250aW51ZTtcblxuICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gZml4dHVyZS5jb2x1bW5zW3Byb3AubmFtZV0gPz8gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgaWYgKHByb3AubmFtZSA9PT0gXCJjcmVhdGVkX2F0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8g7ZiE7J6sIOyLnOqwhOycvOuhnCDshKTsoJVcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgICBwcm9wLnR5cGUgPT09IFwicmVsYXRpb25cIiAmJlxuICAgICAgICAgICAgICAgICAgICAocHJvcC5yZWxhdGlvblR5cGUgPT09IFwiSGFzTWFueVwiIHx8IHByb3AucmVsYXRpb25UeXBlID09PSBcIk1hbnlUb01hbnlcIilcbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAvLyDrsLDsl7TroZwg67OA7ZmYXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV0uZmlsdGVyKG5vbk51bGxhYmxlKTtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgY29sdW1uc1twcm9wLm5hbWVdID0ge1xuICAgICAgICAgICAgICAgICAgICBwcm9wLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUgYXMgRml4dHVyZVJlY29yZFtcImNvbHVtbnNcIl1bc3RyaW5nXVtcInZhbHVlXCJdLFxuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgZml4dHVyZUlkOiBgJHtmaXh0dXJlLmVudGl0eUlkfSMke2ZpeHR1cmUuaWR9YCxcbiAgICAgICAgICAgICAgICAgIGVudGl0eUlkOiBmaXh0dXJlLmVudGl0eUlkLFxuICAgICAgICAgICAgICAgICAgaWQ6IGZpeHR1cmUuaWQsXG4gICAgICAgICAgICAgICAgICBjb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgZmV0Y2hlZFJlY29yZHM6IFtdLFxuICAgICAgICAgICAgICAgICAgYmVsb25nc1JlY29yZHM6IFtdLFxuICAgICAgICAgICAgICAgICAgb3ZlcnJpZGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAvLyDsg4gg66CI7L2U65Oc65Ok7J2YIHJlbGF0aW9uIOy7rOufvOydhCDtmZXsnbjtlZjsl6wg6riw7KG0IOugiOy9lOuTnOuTpOydmCDsl63rsKntlqUgcmVsYXRpb24g7JeF642w7J207Yq4XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG5ld1JlY29yZCBvZiBuZXdSZWNvcmRzKSB7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgW19jb2xOYW1lLCBjb2xdIG9mIE9iamVjdC5lbnRyaWVzKG5ld1JlY29yZC5jb2x1bW5zKSkge1xuICAgICAgICAgICAgICAgIGlmIChjb2wucHJvcC50eXBlICE9PSBcInJlbGF0aW9uXCIgfHwgY29sLnZhbHVlID09PSBudWxsKSBjb250aW51ZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRFbnRpdHlJZCA9IGNvbC5wcm9wLndpdGg7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVsYXRlZElkcyA9IEFycmF5LmlzQXJyYXkoY29sLnZhbHVlKSA/IGNvbC52YWx1ZSA6IFtjb2wudmFsdWVdO1xuXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCByZWxhdGVkSWQgb2YgcmVsYXRlZElkcykge1xuICAgICAgICAgICAgICAgICAgY29uc3QgcmVsYXRlZEZpeHR1cmVJZCA9IGAke3JlbGF0ZWRFbnRpdHlJZH0jJHtyZWxhdGVkSWR9YDtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRSZWNvcmQgPSBuZXdSZWNvcmRzLmZpbmQoKHIpID0+IHIuZml4dHVyZUlkID09PSByZWxhdGVkRml4dHVyZUlkKTtcblxuICAgICAgICAgICAgICAgICAgaWYgKHJlbGF0ZWRSZWNvcmQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8g7Jet67Cp7ZalIHJlbGF0aW9uIOywvuq4sFxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXZlcnNlQ29sID0gT2JqZWN0LmVudHJpZXMocmVsYXRlZFJlY29yZC5jb2x1bW5zKS5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgIChbLCBjXSkgPT4gYy5wcm9wLnR5cGUgPT09IFwicmVsYXRpb25cIiAmJiBjLnByb3Aud2l0aCA9PT0gbmV3UmVjb3JkLmVudGl0eUlkLFxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXZlcnNlQ29sKSB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgW3JldmVyc2VDb2xOYW1lLCByZXZlcnNlQ29sVmFsdWVdID0gcmV2ZXJzZUNvbDtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSByZXZlcnNlQ29sVmFsdWUudmFsdWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAvLyDsl63rsKntlqXsnbQg67Cw7Je07J24IOqyveyasCAoSGFzTWFueSwgTWFueVRvTWFueSlcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXZlcnNlQ29sVmFsdWUucHJvcC50eXBlID09PSBcInJlbGF0aW9uXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXZlcnNlQ29sVmFsdWUucHJvcC5yZWxhdGlvblR5cGUgPT09IFwiSGFzTWFueVwiIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldmVyc2VDb2xWYWx1ZS5wcm9wLnJlbGF0aW9uVHlwZSA9PT0gXCJNYW55VG9NYW55XCIpXG4gICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQoQXJyYXkuaXNBcnJheShjdXJyZW50VmFsdWUpLCBcImN1cnJlbnRWYWx1ZSBtdXN0IGJlIGFuIGFycmF5XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50VmFsdWUuaW5jbHVkZXMobmV3UmVjb3JkLmlkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGVkUmVjb3JkLmNvbHVtbnNbcmV2ZXJzZUNvbE5hbWVdID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnJldmVyc2VDb2xWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogWy4uLmN1cnJlbnRWYWx1ZSwgbmV3UmVjb3JkLmlkXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8g7Jet67Cp7Zal7J20IOuLqOydvCDqsJLsnbgg6rK97JqwIChCZWxvbmdzVG9PbmUsIE9uZVRvT25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRlZFJlY29yZC5jb2x1bW5zW3JldmVyc2VDb2xOYW1lXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucmV2ZXJzZUNvbFZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbmV3UmVjb3JkLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSwgdXBkYXRlZFJlY29yZHM6IG5ld1JlY29yZHMgfTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVFbnRpdHkobWVzc2FnZXM6IE1vZGVsTWVzc2FnZVtdKTogU3RyZWFtVGV4dFJlc3VsdDxhbnksIGFueT4ge1xuICAgIGlmICghdGhpcy5haVNkayB8fCAhdGhpcy5tb2RlbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQUkgU0RLIG5vdCBpbml0aWFsaXplZC4gQ2FsbCBpbml0KCkgZmlyc3QuXCIpO1xuICAgIH1cblxuICAgIC8vIGVudGl0eS5pbnN0cnVjdGlvbnMubWQg7YyM7J28IOydveq4sCAoZGlzdC91aSDrmJDripQgc3JjL3Vp7JeQ7IScIOyLpO2WieuQmOuvgOuhnCDtjKjtgqTsp4Ag66Oo7Yq4IOq4sOykgOycvOuhnCDsoJHqt7wpXG4gICAgY29uc3QgaW5zdHJ1Y3Rpb25zUGF0aCA9IHBhdGguam9pbihcbiAgICAgIGltcG9ydC5tZXRhLmRpcm5hbWUsXG4gICAgICBcIi4uXCIsXG4gICAgICBcIi4uXCIsXG4gICAgICBcInNyY1wiLFxuICAgICAgXCJ1aVwiLFxuICAgICAgXCJlbnRpdHkuaW5zdHJ1Y3Rpb25zLm1kXCIsXG4gICAgKTtcbiAgICBjb25zdCBpbnN0cnVjdGlvbnMgPSBmcy5yZWFkRmlsZVN5bmMoaW5zdHJ1Y3Rpb25zUGF0aCwgXCJ1dGYtOFwiKTtcblxuICAgIC8vIO2YhOyerCDrk7HroZ3rkJwg7JeU7Yuw7YuwIOygleuztCDsiJjsp5FcbiAgICBjb25zdCBlbnRpdHlJZHMgPSBFbnRpdHlNYW5hZ2VyLmdldEFsbElkcygpO1xuICAgIGNvbnN0IGV4aXN0aW5nRW50aXRpZXMgPSBlbnRpdHlJZHMubWFwKChlbnRpdHlJZCkgPT4ge1xuICAgICAgY29uc3QgZW50aXR5ID0gRW50aXR5TWFuYWdlci5nZXQoZW50aXR5SWQpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGVudGl0eS5pZCxcbiAgICAgICAgdGl0bGU6IGVudGl0eS50aXRsZSxcbiAgICAgICAgdGFibGU6IGVudGl0eS50YWJsZSxcbiAgICAgICAgcHJvcHM6IGVudGl0eS5wcm9wcy5tYXAoKHApID0+ICh7XG4gICAgICAgICAgbmFtZTogcC5uYW1lLFxuICAgICAgICAgIHR5cGU6IHAudHlwZSxcbiAgICAgICAgICBkZXNjOiBwLmRlc2MsXG4gICAgICAgIH0pKSxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBjb25zdCBzeXN0ZW1NZXNzYWdlID0gYFxu64u57Iug7J2AIFNvbmFtdSDtlITroIjsnoTsm4ztgazsl5DshJwgRW50aXR57JmAIEVudW3snYQg7IOd7ISx7ZWY64qUIOuPhOyasOuvuOyeheuLiOuLpC5cblxuJHtpbnN0cnVjdGlvbnN9XG5cbiMjIO2YhOyerCDrk7HroZ3rkJwgRW50aXR5IOuqqeuhnVxu64uk66W4IOyXlO2LsO2LsOyZgCDqtIDqs4QocmVsYXRpb24p66W8IOunuuqxsOuCmCBzdWJzZXTsl5DshJwg7LC47KGw7ZWgIOuVjCDrsJjrk5zsi5wg7JWE656YIOygleuztOulvCDtmZXsnbjtlZjshLjsmpQuXG5cbiR7SlNPTi5zdHJpbmdpZnkoZXhpc3RpbmdFbnRpdGllcywgbnVsbCwgMil9XG5cbiMjIFRvb2wg7IKs7JqpIOqwgOydtOuTnFxuXG4jIyMgRW50aXR5IOyDneyEsSAoY3JlYXRlRW50aXR5KVxu7IKs7Jqp7J6Q6rCAIOyDiOuhnOyatCBFbnRpdHkg7IOd7ISx7J2EIOyalOyyre2VmOuptCBjcmVhdGVFbnRpdHkg64+E6rWs66W8IOyCrOyaqe2VmOyEuOyalC5cbi0gZW50aXR5SWQ6IFBhc2NhbENhc2XroZwg65CcIEVudGl0eSBJRCAo7JiIOiBcIlVzZXJcIiwgXCJQcm9kdWN0Q2F0ZWdvcnlcIilcbi0gdGl0bGU6IO2VnOq4gCDsoJzrqqkgKOyYiDogXCLsgqzsmqnsnpBcIiwgXCLsg4Htkogg7Lm07YWM6rOg66asXCIpXG4tIHRhYmxlOiBzbmFrZV9jYXNl66GcIOuQnCDthYzsnbTruJTrqoUgKOyYiDogXCJ1c2Vyc1wiLCBcInByb2R1Y3RfY2F0ZWdvcmllc1wiKVxuLSBwYXJlbnRJZDog67aA66qoIEVudGl0eSBJRCAo7ISg7YOd7IKs7ZWtKVxuLSBwcm9wczogRW50aXR57J2YIO2UhOuhnO2NvO2LsCDrsLDsl7QgKOychCDrrLjshJzsnZggUHJvcGVydHkgVHlwZXMg7LC46rOgKVxuLSBpbmRleGVzOiDsnbjrjbHsiqQg67Cw7Je0XG4tIHN1YnNldHM6IOyEnOu4jOyFiyDsoJXsnZggKOq4sOuzuOqwkjogeyBBOiBbXCJpZFwiXSB9KVxuLSBlbnVtczogRW51bSDsoJXsnZhcblxuIyMjIEVudGl0eSDsiJjsoJUgKHVwZGF0ZUVudGl0eSlcbuq4sOyhtCBFbnRpdHnrpbwg7IiY7KCV7ZWgIOuVjCB1cGRhdGVFbnRpdHkg64+E6rWs66W8IOyCrOyaqe2VmOyEuOyalC4gRW51bSDstpTqsIAsIHByb3BzIOy2lOqwgC/siJjsoJUsIGluZGV4ZXMg7IiY7KCVIOuTsSDrqqjrk6Ag7IiY7KCVIOyekeyXheyXkCDsgqzsmqntlanri4jri6QuXG4tIGVudGl0eUlkOiDsiJjsoJXtlaAgRW50aXR5IElEXG4tIHVwZGF0ZXM6IOyImOygle2VoCDtlYTrk5zrk6QgKOu2gOu2hCDsl4XrjbDsnbTtirgpXG4gIC0gdGl0bGU6IOyXlO2LsO2LsCDtlZzquIAg7KCc66qpXG4gIC0gdGFibGU6IO2FjOydtOu4lOuqhVxuICAtIHByb3BzOiDstpTqsIDtlaAg7ZSE66Gc7Y287YuwIOuwsOyXtCAo6riw7KG0IHByb3Bz7JeQIOy2lOqwgCwg6rCZ7J2AIOydtOumhOydtOuptCDqtZDssrQpXG4gIC0gaW5kZXhlczog7LaU6rCA7ZWgIOyduOuNseyKpCDrsLDsl7QgKOq4sOyhtCBpbmRleGVz7JeQIOy2lOqwgClcbiAgLSBzdWJzZXRzOiDshJzruIzshYsg7KCV7J2YICjquLDsobQgc3Vic2V0c+yXkCDrs5HtlakpXG4gIC0gZW51bUxhYmVsczogRW51bSDsoJXsnZggKOq4sOyhtCBlbnVtTGFiZWxz7JeQIOuzke2VqSlcbi0gbW9kZTogXCJtZXJnZVwiKOq4sOuzuOqwkikg65iQ64qUIFwicmVwbGFjZVwiXG4gIC0gbWVyZ2U6IOq4sOyhtCDqsJLsl5Ag67OR7ZWpXG4gIC0gcmVwbGFjZTog7ZW064u5IO2VhOuTnCDsoITssrQg6rWQ7LK0XG5cbuyYiOyLnDogRW1wbG95ZWXsl5Ag7IOIIEVudW0g7LaU6rCAXG51cGRhdGVFbnRpdHkoeyBlbnRpdHlJZDogXCJFbXBsb3llZVwiLCB1cGRhdGVzOiB7IGVudW1MYWJlbHM6IHsgXCJFbXBsb3llZVJvbGVcIjogeyBcImFkbWluXCI6IFwi6rSA66as7J6QXCIsIFwidXNlclwiOiBcIuydvOuwmFwiIH0gfSB9IH0pXG5cbuyYiOyLnDogUHJvamVjdOyXkCDsg4gg7ZSE66Gc7Y287YuwIOy2lOqwgFxudXBkYXRlRW50aXR5KHsgZW50aXR5SWQ6IFwiUHJvamVjdFwiLCB1cGRhdGVzOiB7IHByb3BzOiBbeyBuYW1lOiBcInByaW9yaXR5XCIsIHR5cGU6IFwiaW50ZWdlclwiLCBkZXNjOiBcIuyasOyEoOyInOychFwiIH1dIH0gfSlcblxuIyMg7ZWE7IiYIOyCrO2VrVxuLSBFbnRpdHnsnZggcHJvcHPsl5DripQg7LWc7IaM7ZWcIGlkKGludGVnZXIsIHVuc2lnbmVkKSwgY3JlYXRlZF9hdCh0aW1lc3RhbXAp6rCAIO2PrO2VqOuQmOyWtOyVvCDtlanri4jri6QuXG4tIHJlbGF0aW9uIO2VhOuTnOuKlCBvblVwZGF0ZSwgb25EZWxldGXqsIAg7ZWE7IiY7J6F64uI64ukLiAo7JiI7Jm4OiBPbmVUb09uZeyXkOyEnCBoYXNKb2luQ29sdW1u7J20IGZhbHNl7J24IOqyveyasClcbi0gRW51bSBJROuKlCDrs7TthrUgRW50aXR5SWQgKyDsho3shLHrqoUg7ZiV7YOc7J6F64uI64ukICjsmIg6IFVzZXJTdGF0dXMsIFByb2R1Y3RUeXBlKVxuLSBzdWJzZXTsl5DshJwg64uk66W4IOyXlO2LsO2LsOydmCDtlITroZztjbzti7Drpbwg7LC47KGw7ZWgIOuVjOuKlCDrsJjrk5zsi5wg7ZW064u5IOyXlO2LsO2LsOydmCDsi6TsoJwg7ZSE66Gc7Y287Yuw66qF7J2EIOyCrOyaqe2VmOyEuOyalC5cblxuIyMg6rKA7KadIOyYpOulmCDsspjrpqxcbuuPhOq1rCDtmLjstpwg6rKw6rO866GcIOqygOymnSDsmKTrpZgodmFsaWRhdGlvbkVycm9ycynqsIAg67CY7ZmY65CY66m0OlxuMS4g7Jik66WYIOuplOyLnOyngOulvCDrtoTshJ3tlZjsl6wg66y47KCc7KCQ7J2EIO2MjOyVhe2VmOyEuOyalC5cbjIuIOyYpOulmOulvCDsiJjsoJXtlZwg642w7J207YSw66GcIGNyZWF0ZUVudGl0eeulvCDri6Tsi5wg7Zi47Lac7ZWY7IS47JqULlxuMy4g7IKs7Jqp7J6Q7JeQ6rKMIOyYpOulmOulvCDqt7jrjIDroZwg7KCE64us7ZWY7KeAIOunkOqzoCwg7IiY7KCVIO2bhCDsnqzsi5zrj4TtlZjshLjsmpQuXG5cbiMjIyDsnbzrsJjsoIHsnbgg6rKA7KadIOyYpOulmOyZgCDsiJjsoJUg67Cp67KVXG58IOyYpOulmCDrqZTsi5zsp4AgfCDsiJjsoJUg67Cp67KVIHxcbnwtLS0tLS0tLS0tLS18LS0tLS0tLS0tLXxcbnwgXCJpZCDtlITroZztjbzti7DqsIAg7ZWE7IiYXCIgfCBwcm9wc+yXkCB7IG5hbWU6IFwiaWRcIiwgdHlwZTogXCJpbnRlZ2VyXCIsIHVuc2lnbmVkOiB0cnVlIH0g7LaU6rCAIHxcbnwgXCJjcmVhdGVkX2F0IO2UhOuhnO2NvO2LsOqwgCDtlYTsiJhcIiB8IHByb3Bz7JeQIHsgbmFtZTogXCJjcmVhdGVkX2F0XCIsIHR5cGU6IFwidGltZXN0YW1wXCIsIGRiRGVmYXVsdDogXCJDVVJSRU5UX1RJTUVTVEFNUFwiIH0g7LaU6rCAIHxcbnwgXCJYeHhPcmRlckJ5IGVudW3snbQg7ZWE7IiYXCIgfCBlbnVtc+yXkCB7IFwiWHh4T3JkZXJCeVwiOiB7IFwiaWQtZGVzY1wiOiBcIklE7LWc7Iug7IicXCIgfSB9IOy2lOqwgCB8XG58IFwiWHh4U2VhcmNoRmllbGQgZW51beydtCDtlYTsiJhcIiB8IGVudW1z7JeQIHsgXCJYeHhTZWFyY2hGaWVsZFwiOiB7IFwiaWRcIjogXCJJRFwiIH0gfSDstpTqsIAgfFxufCBcInN0cmluZyDtg4DsnoXsnYAgbGVuZ3Ro6rCAIO2VhOyImFwiIHwg7ZW064u5IHByb3Dsl5AgbGVuZ3RoIOy2lOqwgCAo7JiIOiAyNTUpIHxcbnwgXCJ0ZXh0IO2DgOyeheydgCB0ZXh0VHlwZeydtCDtlYTsiJhcIiB8IO2VtOuLuSBwcm9w7JeQIHRleHRUeXBlIOy2lOqwgCAoXCJ0ZXh0XCIsIFwibWVkaXVtdGV4dFwiLCBcImxvbmd0ZXh0XCIpIHxcbnwgXCJvblVwZGF0ZeqwgCDtlYTsiJhcIiB8IO2VtOuLuSByZWxhdGlvbiBwcm9w7JeQIG9uVXBkYXRlLCBvbkRlbGV0ZSDstpTqsIAgKFwiQ0FTQ0FERVwiKSB8XG4gICAgICBgO1xuXG4gICAgY29uc3QgeyBzdHJlYW1UZXh0LCB0b29sLCBzdGVwQ291bnRJcyB9ID0gdGhpcy5haVNkaztcblxuICAgIHJldHVybiBzdHJlYW1UZXh0KHtcbiAgICAgIG1vZGVsOiB0aGlzLm1vZGVsIGFzIHVua25vd24gYXMgTGFuZ3VhZ2VNb2RlbCxcbiAgICAgIHN5c3RlbTogc3lzdGVtTWVzc2FnZSxcbiAgICAgIG1lc3NhZ2VzLFxuICAgICAgc3RvcFdoZW46IHN0ZXBDb3VudElzKDIpLFxuICAgICAgdG9vbHM6IHtcbiAgICAgICAgY3JlYXRlRW50aXR5OiB0b29sKHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgIFwi7IOI66Gc7Jq0IEVudGl0eeulvCDsg53shLHtlanri4jri6QuIOyCrOyaqeyekOqwgCDsg4jroZzsmrQg7JeU7Yuw7Yuw64KYIO2FjOydtOu4lCDsg53shLHsnYQg7JqU7LKt7ZWgIOuVjCDsgqzsmqntlZjshLjsmpQuXCIsXG4gICAgICAgICAgaW5wdXRTY2hlbWE6IFRlbXBsYXRlT3B0aW9ucy5zaGFwZS5lbnRpdHksXG4gICAgICAgICAgZXhlY3V0ZTogYXN5bmMgKFxuICAgICAgICAgICAgZW50aXR5OiB6LmluZmVyPHR5cGVvZiBUZW1wbGF0ZU9wdGlvbnMuc2hhcGUuZW50aXR5PixcbiAgICAgICAgICApOiBQcm9taXNlPHtcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGJvb2xlYW47XG4gICAgICAgICAgICBlbnRpdHlJZDogc3RyaW5nO1xuICAgICAgICAgICAgZXJyb3I/OiBzdHJpbmc7XG4gICAgICAgICAgICB2YWxpZGF0aW9uRXJyb3JzPzogVmFsaWRhdGlvbkVycm9yW107XG4gICAgICAgICAgfT4gPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgLy8g7J6F66ClIOqygOymnVxuICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0aW9uRXJyb3JzID0gdmFsaWRhdGVFbnRpdHlKc29uKGVudGl0eSk7XG5cbiAgICAgICAgICAgICAgaWYgKHZhbGlkYXRpb25FcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIGVudGl0eUlkOiBlbnRpdHkuZW50aXR5SWQsXG4gICAgICAgICAgICAgICAgICBlcnJvcjogYOqygOymnSDsmKTrpZg6ICR7dmFsaWRhdGlvbkVycm9ycy5tYXAoKGUpID0+IGBbJHtlLmZpZWxkfV0gJHtlLm1lc3NhZ2V9YCkuam9pbihcIiwgXCIpfWAsXG4gICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uRXJyb3JzLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBhd2FpdCBTb25hbXUuc3luY2VyLmNyZWF0ZUVudGl0eSh7XG4gICAgICAgICAgICAgICAgc3Vic2V0czogeyBBOiBbXCJpZFwiXSB9LFxuICAgICAgICAgICAgICAgIGVudW1zOiB7fSxcbiAgICAgICAgICAgICAgICAuLi5lbnRpdHksXG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIC8vIEVudGl0eU1hbmFnZXIg66as66Gc65OcXG4gICAgICAgICAgICAgIGF3YWl0IEVudGl0eU1hbmFnZXIucmVsb2FkKCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSwgZW50aXR5SWQ6IGVudGl0eS5lbnRpdHlJZCB9O1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IGUgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6IFwiVW5rbm93biBlcnJvclwiO1xuICAgICAgICAgICAgICByZXR1cm4geyBzdWNjZXNzOiBmYWxzZSwgZW50aXR5SWQ6IGVudGl0eS5lbnRpdHlJZCwgZXJyb3IgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgICAgdXBkYXRlRW50aXR5OiB0b29sKHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgIFwi6riw7KG0IEVudGl0eeulvCDsiJjsoJXtlanri4jri6QuIEVudW0g7LaU6rCALCBwcm9wcyDstpTqsIAv7IiY7KCVLCBpbmRleGVzIOyImOyglSwgc3Vic2V0cyDsiJjsoJUg65OxIOuqqOuToCDsl5Tti7Dti7Ag7IiY7KCVIOyekeyXheyXkCDsgqzsmqntlZjshLjsmpQuXCIsXG4gICAgICAgICAgaW5wdXRTY2hlbWE6IHoub2JqZWN0KHtcbiAgICAgICAgICAgIGVudGl0eUlkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwi7IiY7KCV7ZWgIEVudGl0eSBJRFwiKSxcbiAgICAgICAgICAgIHVwZGF0ZXM6IFRlbXBsYXRlT3B0aW9ucy5zaGFwZS5lbnRpdHkucGFydGlhbCgpLmRlc2NyaWJlKFwi7IiY7KCV7ZWgIO2VhOuTnOuTpFwiKSxcbiAgICAgICAgICAgIG1vZGU6IHpcbiAgICAgICAgICAgICAgLmVudW0oW1wibWVyZ2VcIiwgXCJyZXBsYWNlXCJdKVxuICAgICAgICAgICAgICAub3B0aW9uYWwoKVxuICAgICAgICAgICAgICAuZGVzY3JpYmUoXCLsiJjsoJUg66qo65OcOiBtZXJnZSjquLDrs7jqsJIsIOq4sOyhtCDqsJLsl5Ag67OR7ZWpKSDrmJDripQgcmVwbGFjZSjsoITssrQg6rWQ7LK0KVwiKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBleGVjdXRlOiBhc3luYyAoe1xuICAgICAgICAgICAgZW50aXR5SWQsXG4gICAgICAgICAgICB1cGRhdGVzLFxuICAgICAgICAgICAgbW9kZSA9IFwibWVyZ2VcIixcbiAgICAgICAgICB9OiB7XG4gICAgICAgICAgICBlbnRpdHlJZDogc3RyaW5nO1xuICAgICAgICAgICAgdXBkYXRlczogUGFydGlhbDx6LmluZmVyPHR5cGVvZiBUZW1wbGF0ZU9wdGlvbnMuc2hhcGUuZW50aXR5Pj47XG4gICAgICAgICAgICBtb2RlPzogXCJtZXJnZVwiIHwgXCJyZXBsYWNlXCI7XG4gICAgICAgICAgfSk6IFByb21pc2U8e1xuICAgICAgICAgICAgc3VjY2VzczogYm9vbGVhbjtcbiAgICAgICAgICAgIGVudGl0eUlkOiBzdHJpbmc7XG4gICAgICAgICAgICBlcnJvcj86IHN0cmluZztcbiAgICAgICAgICAgIHZhbGlkYXRpb25FcnJvcnM/OiBWYWxpZGF0aW9uRXJyb3JbXTtcbiAgICAgICAgICB9PiA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBlbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChlbnRpdHlJZCk7XG5cbiAgICAgICAgICAgICAgLy8gVXBkYXRlIGJhc2ljIHByb3BlcnRpZXNcbiAgICAgICAgICAgICAgaWYgKHVwZGF0ZXMuZW50aXR5SWQgIT09IHVuZGVmaW5lZCkgZW50aXR5LmlkID0gdXBkYXRlcy5lbnRpdHlJZDtcbiAgICAgICAgICAgICAgaWYgKHVwZGF0ZXMucGFyZW50SWQgIT09IHVuZGVmaW5lZCkgZW50aXR5LnBhcmVudElkID0gdXBkYXRlcy5wYXJlbnRJZDtcbiAgICAgICAgICAgICAgaWYgKHVwZGF0ZXMudGl0bGUgIT09IHVuZGVmaW5lZCkgZW50aXR5LnRpdGxlID0gdXBkYXRlcy50aXRsZTtcbiAgICAgICAgICAgICAgaWYgKHVwZGF0ZXMudGFibGUgIT09IHVuZGVmaW5lZCkgZW50aXR5LnRhYmxlID0gdXBkYXRlcy50YWJsZTtcbiAgICAgICAgICAgICAgaWYgKHVwZGF0ZXMuY29uZSAhPT0gdW5kZWZpbmVkKSBlbnRpdHkuY29uZSA9IHVwZGF0ZXMuY29uZTtcblxuICAgICAgICAgICAgICAvLyBwcm9wczogbWVyZ2Ug7IucIOydtOumhCDquLDspIAg67OR7ZWpLCByZXBsYWNlIOyLnCDqtZDssrRcbiAgICAgICAgICAgICAgaWYgKHVwZGF0ZXMucHJvcHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGlmIChtb2RlID09PSBcInJlcGxhY2VcIikge1xuICAgICAgICAgICAgICAgICAgZW50aXR5LnByb3BzID0gdXBkYXRlcy5wcm9wcyBhcyBFbnRpdHlQcm9wW107XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbmV3UHJvcCBvZiB1cGRhdGVzLnByb3BzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSW5kZXggPSBlbnRpdHkucHJvcHMuZmluZEluZGV4KChwKSA9PiBwLm5hbWUgPT09IG5ld1Byb3AubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ0luZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICBlbnRpdHkucHJvcHNbZXhpc3RpbmdJbmRleF0gPSBuZXdQcm9wIGFzIEVudGl0eVByb3A7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgZW50aXR5LnByb3BzLnB1c2gobmV3UHJvcCBhcyBFbnRpdHlQcm9wKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8vIGluZGV4ZXM6IG1lcmdlIOyLnCDstpTqsIAsIHJlcGxhY2Ug7IucIOq1kOyytFxuICAgICAgICAgICAgICBpZiAodXBkYXRlcy5pbmRleGVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBlbnRpdHkuaW5kZXhlcyA9XG4gICAgICAgICAgICAgICAgICBtb2RlID09PSBcInJlcGxhY2VcIiA/IHVwZGF0ZXMuaW5kZXhlcyA6IFsuLi5lbnRpdHkuaW5kZXhlcywgLi4udXBkYXRlcy5pbmRleGVzXTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8vIHN1YnNldHMsIHN1YnNldHNJbnRlcm5hbDogYXNzaWdu7Jy866GcIOuzke2VqSDrmJDripQg6rWQ7LK0XG4gICAgICAgICAgICAgIGlmICh1cGRhdGVzLnN1YnNldHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIC8vIE5vcm1hbGl6ZSBzdWJzZXQgZmllbGRzOiBzZXBhcmF0ZSBpbnRvIHN1YnNldHMgKG5vcm1hbCkgYW5kIHN1YnNldHNJbnRlcm5hbCAoaW50ZXJuYWwpXG4gICAgICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZFN1YnNldHM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSA9IHt9O1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRTdWJzZXRzSW50ZXJuYWw6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSA9IHt9O1xuXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBba2V5LCBmaWVsZHNdIG9mIE9iamVjdC5lbnRyaWVzKHVwZGF0ZXMuc3Vic2V0cykpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkQXJyYXkgPSBmaWVsZHMgYXMgc3RyaW5nW107XG4gICAgICAgICAgICAgICAgICBub3JtYWxpemVkU3Vic2V0c1trZXldID0gZmllbGRBcnJheVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChmOiBzdHJpbmcpID0+ICFpc0ludGVybmFsU3Vic2V0RmllbGQoZikpXG4gICAgICAgICAgICAgICAgICAgIC5tYXAobm9ybWFsaXplU3Vic2V0RmllbGQpO1xuICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZFN1YnNldHNJbnRlcm5hbFtrZXldID0gZmllbGRBcnJheVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGlzSW50ZXJuYWxTdWJzZXRGaWVsZClcbiAgICAgICAgICAgICAgICAgICAgLm1hcChub3JtYWxpemVTdWJzZXRGaWVsZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZW50aXR5LnN1YnNldHMgPVxuICAgICAgICAgICAgICAgICAgbW9kZSA9PT0gXCJyZXBsYWNlXCJcbiAgICAgICAgICAgICAgICAgICAgPyBub3JtYWxpemVkU3Vic2V0c1xuICAgICAgICAgICAgICAgICAgICA6IHsgLi4uZW50aXR5LnN1YnNldHMsIC4uLm5vcm1hbGl6ZWRTdWJzZXRzIH07XG4gICAgICAgICAgICAgICAgZW50aXR5LnN1YnNldHNJbnRlcm5hbCA9XG4gICAgICAgICAgICAgICAgICBtb2RlID09PSBcInJlcGxhY2VcIlxuICAgICAgICAgICAgICAgICAgICA/IG5vcm1hbGl6ZWRTdWJzZXRzSW50ZXJuYWxcbiAgICAgICAgICAgICAgICAgICAgOiB7IC4uLmVudGl0eS5zdWJzZXRzSW50ZXJuYWwsIC4uLm5vcm1hbGl6ZWRTdWJzZXRzSW50ZXJuYWwgfTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICh1cGRhdGVzLmVudW1zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb252ZXJ0ZWRFbnVtcyA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHVwZGF0ZXMuZW51bXMpLm1hcCgoW2tleSwgZW51bURlZl0pID0+IFtcbiAgICAgICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgICAgICBnZXRFbnVtRGVmVmFsdWVzKGVudW1EZWYpLFxuICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBlbnRpdHkuZW51bUxhYmVscyA9XG4gICAgICAgICAgICAgICAgICBtb2RlID09PSBcInJlcGxhY2VcIiA/IGNvbnZlcnRlZEVudW1zIDogeyAuLi5lbnRpdHkuZW51bUxhYmVscywgLi4uY29udmVydGVkRW51bXMgfTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8vIOyggOyepSDsoIQg6rKA7KadXG4gICAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRpb25FcnJvcnMgPSB2YWxpZGF0ZUVudGl0eUpzb24oe1xuICAgICAgICAgICAgICAgIC4uLmVudGl0eSxcbiAgICAgICAgICAgICAgICBlbnRpdHlJZDogZW50aXR5LmlkLFxuICAgICAgICAgICAgICAgIGVudW1zOiBlbnRpdHkuZW51bUxhYmVscyxcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgaWYgKHZhbGlkYXRpb25FcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIGVudGl0eUlkLFxuICAgICAgICAgICAgICAgICAgZXJyb3I6IGDqsoDspp0g7Jik66WYOiAke3ZhbGlkYXRpb25FcnJvcnMubWFwKChlKSA9PiBgWyR7ZS5maWVsZH1dICR7ZS5tZXNzYWdlfWApLmpvaW4oXCIsIFwiKX1gLFxuICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbkVycm9ycyxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgYXdhaXQgZW50aXR5LnNhdmUoKTtcblxuICAgICAgICAgICAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCBlbnRpdHlJZCB9O1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IGUgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6IFwiVW5rbm93biBlcnJvclwiO1xuICAgICAgICAgICAgICByZXR1cm4geyBzdWNjZXNzOiBmYWxzZSwgZW50aXR5SWQsIGVycm9yIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogRW50aXR5IEpTT07snbQgZW50aXR5Lmluc3RydWN0aW9ucy5tZOydmCDqt5zsuZnsnYQg65Sw66W064qU7KeAIOqygOymne2VqeuLiOuLpC5cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVFbnRpdHlKc29uKGlucHV0OiBUZW1wbGF0ZU9wdGlvbnNbXCJlbnRpdHlcIl0pOiBWYWxpZGF0aW9uRXJyb3JbXSB7XG4gIGNvbnN0IGVycm9yczogVmFsaWRhdGlvbkVycm9yW10gPSBbXTtcbiAgY29uc3QgeyBlbnRpdHlJZCwgcHJvcHMsIGVudW1zIH0gPSBpbnB1dDtcblxuICAvLyAxLiBpZCwgY3JlYXRlZF9hdCBwcm9wIO2VhOyImFxuICBjb25zdCBoYXNJZFByb3AgPSBwcm9wcz8uc29tZSgocCkgPT4gcC5uYW1lID09PSBcImlkXCIpO1xuICBpZiAoIWhhc0lkUHJvcCkge1xuICAgIGVycm9ycy5wdXNoKHsgZmllbGQ6IFwicHJvcHNcIiwgbWVzc2FnZTogXCJpZCDtlITroZztjbzti7DqsIAg7ZWE7IiY7J6F64uI64ukLlwiIH0pO1xuICB9XG4gIGNvbnN0IGhhc0NyZWF0ZWRBdFByb3AgPSBwcm9wcz8uc29tZSgocCkgPT4gcC5uYW1lID09PSBcImNyZWF0ZWRfYXRcIik7XG4gIGlmICghaGFzQ3JlYXRlZEF0UHJvcCkge1xuICAgIGVycm9ycy5wdXNoKHsgZmllbGQ6IFwicHJvcHNcIiwgbWVzc2FnZTogXCJjcmVhdGVkX2F0IO2UhOuhnO2NvO2LsOqwgCDtlYTsiJjsnoXri4jri6QuXCIgfSk7XG4gIH1cblxuICAvLyAyLiDtlYTsiJggZW51bSDqsoDspp06IEVudGl0eU5hbWVPcmRlckJ5LCBFbnRpdHlOYW1lU2VhcmNoRmllbGRcbiAgY29uc3Qgb3JkZXJCeUVudW1JZCA9IGAke2VudGl0eUlkfU9yZGVyQnlgO1xuICBjb25zdCBzZWFyY2hGaWVsZEVudW1JZCA9IGAke2VudGl0eUlkfVNlYXJjaEZpZWxkYDtcblxuICBpZiAoIWVudW1zPy5bb3JkZXJCeUVudW1JZF0pIHtcbiAgICBlcnJvcnMucHVzaCh7XG4gICAgICBmaWVsZDogXCJlbnVtc1wiLFxuICAgICAgbWVzc2FnZTogYCR7b3JkZXJCeUVudW1JZH0gZW51beydtCDtlYTsiJjsnoXri4jri6QuICjsmIg6IHsgXCJpZC1kZXNjXCI6IFwiSUTstZzsi6DsiJxcIiB9KWAsXG4gICAgfSk7XG4gIH1cbiAgaWYgKCFlbnVtcz8uW3NlYXJjaEZpZWxkRW51bUlkXSkge1xuICAgIGVycm9ycy5wdXNoKHtcbiAgICAgIGZpZWxkOiBcImVudW1zXCIsXG4gICAgICBtZXNzYWdlOiBgJHtzZWFyY2hGaWVsZEVudW1JZH0gZW51beydtCDtlYTsiJjsnoXri4jri6QuICjsmIg6IHsgXCJpZFwiOiBcIklEXCIgfSlgLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gMy4gZW51bSBwcm9w7J2YIGlk6rCAIGVudW1z7JeQIOygleydmOuQmOyWtCDsnojripTsp4Ag7ZmV7J24IChjcm9zcy1maWVsZCDqsoDspp0pXG4gIGZvciAoY29uc3QgcHJvcCBvZiBwcm9wcyA/PyBbXSkge1xuICAgIGlmIChwcm9wLnR5cGUgPT09IFwiZW51bVwiICYmICFlbnVtcz8uW3Byb3AuaWRdKSB7XG4gICAgICBlcnJvcnMucHVzaCh7XG4gICAgICAgIGZpZWxkOiBgcHJvcHMuJHtwcm9wLm5hbWV9YCxcbiAgICAgICAgbWVzc2FnZTogYGVudW0gaWQgXCIke3Byb3AuaWR9XCLqsIAgZW51bXPsl5Ag7KCV7J2Y65CY7Ja0IOyeiOyngCDslYrsirXri4jri6QuYCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlcnJvcnM7XG59XG5cbmV4cG9ydCBjb25zdCBhaUNsaWVudCA9IG5ldyBBSUNsaWVudCgpO1xuIl0sIm5hbWVzIjpbImFzc2VydCIsImZzIiwicGF0aCIsInoiLCJTb25hbXUiLCJFbnRpdHlNYW5hZ2VyIiwiZ2V0RW51bURlZlZhbHVlcyIsImlzSW50ZXJuYWxTdWJzZXRGaWVsZCIsIm5vcm1hbGl6ZVN1YnNldEZpZWxkIiwiVGVtcGxhdGVPcHRpb25zIiwibm9uTnVsbGFibGUiLCJBSUNsaWVudCIsIm1vZGVsIiwiYWlTZGsiLCJpbml0IiwiYW50aHJvcGljIiwiYWlNb2R1bGUiLCJlcnJvciIsImNvbnNvbGUiLCJ3YXJuIiwiaGFuZGxlRml4dHVyZSIsIm1lc3NhZ2VzIiwiZml4dHVyZVJlY29yZHMiLCJFcnJvciIsInVzZWRFbnRpdHlJZHMiLCJTZXQiLCJtYXAiLCJyIiwiZW50aXR5SWQiLCJlbnRpdHlTdHJ1Y3R1cmVzIiwiZW50aXR5IiwiZ2V0IiwiaWQiLCJ0YWJsZSIsInByb3BzIiwicmVsYXRpb25zIiwiZW51bUxhYmVscyIsInN5c3RlbU1lc3NhZ2UiLCJKU09OIiwic3RyaW5naWZ5Iiwic3RyZWFtVGV4dCIsInRvb2wiLCJzeXN0ZW0iLCJ0b29scyIsInVwZGF0ZUZpeHR1cmVzIiwiZGVzY3JpcHRpb24iLCJpbnB1dFNjaGVtYSIsIm9iamVjdCIsInVwZGF0ZXMiLCJhcnJheSIsImZpeHR1cmVJZCIsInN0cmluZyIsImRlc2NyaWJlIiwicmVjb3JkIiwidW5rbm93biIsImV4ZWN1dGUiLCJ1cGRhdGVkUmVjb3JkcyIsInVwZGF0ZSIsImZpbmQiLCJ1IiwiY29sdW1uTmFtZSIsIm5ld1ZhbHVlIiwiT2JqZWN0IiwiZW50cmllcyIsImNvbHVtbnMiLCJ2YWx1ZSIsInN1Y2Nlc3MiLCJjcmVhdGVGaXh0dXJlcyIsImZpeHR1cmVzIiwibnVtYmVyIiwibmV3UmVjb3JkcyIsImZpeHR1cmUiLCJwcm9wIiwidHlwZSIsIm5hbWUiLCJEYXRlIiwidG9JU09TdHJpbmciLCJyZWxhdGlvblR5cGUiLCJBcnJheSIsImlzQXJyYXkiLCJmaWx0ZXIiLCJmZXRjaGVkUmVjb3JkcyIsImJlbG9uZ3NSZWNvcmRzIiwib3ZlcnJpZGUiLCJuZXdSZWNvcmQiLCJfY29sTmFtZSIsImNvbCIsInJlbGF0ZWRFbnRpdHlJZCIsIndpdGgiLCJyZWxhdGVkSWRzIiwicmVsYXRlZElkIiwicmVsYXRlZEZpeHR1cmVJZCIsInJlbGF0ZWRSZWNvcmQiLCJyZXZlcnNlQ29sIiwiYyIsInJldmVyc2VDb2xOYW1lIiwicmV2ZXJzZUNvbFZhbHVlIiwiY3VycmVudFZhbHVlIiwiaW5jbHVkZXMiLCJoYW5kbGVFbnRpdHkiLCJpbnN0cnVjdGlvbnNQYXRoIiwiam9pbiIsImRpcm5hbWUiLCJpbnN0cnVjdGlvbnMiLCJyZWFkRmlsZVN5bmMiLCJlbnRpdHlJZHMiLCJnZXRBbGxJZHMiLCJleGlzdGluZ0VudGl0aWVzIiwidGl0bGUiLCJwIiwiZGVzYyIsInN0ZXBDb3VudElzIiwic3RvcFdoZW4iLCJjcmVhdGVFbnRpdHkiLCJzaGFwZSIsInZhbGlkYXRpb25FcnJvcnMiLCJ2YWxpZGF0ZUVudGl0eUpzb24iLCJsZW5ndGgiLCJlIiwiZmllbGQiLCJtZXNzYWdlIiwic3luY2VyIiwic3Vic2V0cyIsIkEiLCJlbnVtcyIsInJlbG9hZCIsInVwZGF0ZUVudGl0eSIsInBhcnRpYWwiLCJtb2RlIiwiZW51bSIsIm9wdGlvbmFsIiwidW5kZWZpbmVkIiwicGFyZW50SWQiLCJjb25lIiwibmV3UHJvcCIsImV4aXN0aW5nSW5kZXgiLCJmaW5kSW5kZXgiLCJwdXNoIiwiaW5kZXhlcyIsIm5vcm1hbGl6ZWRTdWJzZXRzIiwibm9ybWFsaXplZFN1YnNldHNJbnRlcm5hbCIsImtleSIsImZpZWxkcyIsImZpZWxkQXJyYXkiLCJmIiwic3Vic2V0c0ludGVybmFsIiwiY29udmVydGVkRW51bXMiLCJmcm9tRW50cmllcyIsImVudW1EZWYiLCJzYXZlIiwiaW5wdXQiLCJlcnJvcnMiLCJoYXNJZFByb3AiLCJzb21lIiwiaGFzQ3JlYXRlZEF0UHJvcCIsIm9yZGVyQnlFbnVtSWQiLCJzZWFyY2hGaWVsZEVudW1JZCIsImFpQ2xpZW50Il0sIm1hcHBpbmdzIjoiQUFBQSxpRkFBaUYsR0FFakYsT0FBT0EsWUFBWSxTQUFTO0FBQzVCLE9BQU9DLFFBQVEsS0FBSztBQUNwQixPQUFPQyxVQUFVLE9BQU87QUFDeEIsU0FBU0MsQ0FBQyxRQUFRLE1BQU07QUFDeEIsU0FBU0MsTUFBTSxRQUFRLGtC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
|
|
482
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91aS9haS1jbGllbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIGJpb21lLWlnbm9yZS1hbGwgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IEFJIFNES+ydmCDtg4DsnoXsnbQg66qF7ZmV7ZWY7KeAIOyViuyVhCBhbnnrpbwg7ZeI7Jqp7ZWoICovXG5pbXBvcnQgdHlwZSB7IExhbmd1YWdlTW9kZWwsIE1vZGVsTWVzc2FnZSwgU3RyZWFtVGV4dFJlc3VsdCB9IGZyb20gXCJhaVwiO1xuaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCI7XG5pbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCIuLi9hcGlcIjtcbmltcG9ydCB7IEVudGl0eU1hbmFnZXIgfSBmcm9tIFwiLi4vZW50aXR5L2VudGl0eS1tYW5hZ2VyXCI7XG5pbXBvcnQge1xuICB0eXBlIEVudGl0eVByb3AsXG4gIHR5cGUgRml4dHVyZVJlY29yZCxcbiAgZ2V0RW51bURlZlZhbHVlcyxcbiAgaXNJbnRlcm5hbFN1YnNldEZpZWxkLFxuICBub3JtYWxpemVTdWJzZXRGaWVsZCxcbiAgVGVtcGxhdGVPcHRpb25zLFxufSBmcm9tIFwiLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IG5vbk51bGxhYmxlIH0gZnJvbSBcIi4uL3V0aWxzL3V0aWxzXCI7XG5cbnR5cGUgVmFsaWRhdGlvbkVycm9yID0ge1xuICBmaWVsZDogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59O1xuXG5jbGFzcyBBSUNsaWVudCB7XG4gIHByaXZhdGUgbW9kZWw6IExhbmd1YWdlTW9kZWwgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBhaVNkazpcbiAgICB8ICh0eXBlb2YgaW1wb3J0KFwiYWlcIikgJiB7XG4gICAgICAgIGFudGhyb3BpYz86IHR5cGVvZiBpbXBvcnQoXCJAYWktc2RrL2FudGhyb3BpY1wiKS5hbnRocm9waWM7XG4gICAgICB9KVxuICAgIHwgbnVsbCA9IG51bGw7XG5cbiAgYXN5bmMgaW5pdCgpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBhbnRocm9waWMgfSA9IGF3YWl0IGltcG9ydChcIkBhaS1zZGsvYW50aHJvcGljXCIpO1xuICAgICAgY29uc3QgYWlNb2R1bGUgPSBhd2FpdCBpbXBvcnQoXCJhaVwiKTtcbiAgICAgIHRoaXMuYWlTZGsgPSB7IC4uLmFpTW9kdWxlLCBhbnRocm9waWMgfTtcbiAgICAgIHRoaXMubW9kZWwgPSBhbnRocm9waWMoXCJjbGF1ZGUtc29ubmV0LTQtNlwiKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBcIkFJIFNESyBwYWNrYWdlcyBub3QgaW5zdGFsbGVkLiBJbnN0YWxsIEBhaS1zZGsvYW50aHJvcGljIGFuZCBhaSB0byB1c2UgQUkgZmVhdHVyZXMuXCIsXG4gICAgICApO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRml4dHVyZShcbiAgICBtZXNzYWdlczogTW9kZWxNZXNzYWdlW10sXG4gICAgZml4dHVyZVJlY29yZHM6IEZpeHR1cmVSZWNvcmRbXSxcbiAgKTogU3RyZWFtVGV4dFJlc3VsdDxhbnksIGFueT4ge1xuICAgIGlmICghdGhpcy5haVNkayB8fCAhdGhpcy5tb2RlbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQUkgU0RLIG5vdCBpbml0aWFsaXplZC4gQ2FsbCBpbml0KCkgZmlyc3QuXCIpO1xuICAgIH1cblxuICAgIC8vIO2YhOyerCBmaXh0dXJlUmVjb3Jkc+yXkOyEnCDsgqzsmqnrkJwg7JeU7Yuw7Yuw65Ok7J2YIOq1rOyhsCDsoJXrs7Qg7IiY7KeRXG4gICAgY29uc3QgdXNlZEVudGl0eUlkcyA9IFsuLi5uZXcgU2V0KGZpeHR1cmVSZWNvcmRzLm1hcCgocikgPT4gci5lbnRpdHlJZCkpXTtcbiAgICBjb25zdCBlbnRpdHlTdHJ1Y3R1cmVzID0gdXNlZEVudGl0eUlkcy5tYXAoKGVudGl0eUlkKSA9PiB7XG4gICAgICBjb25zdCBlbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChlbnRpdHlJZCk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGVudGl0eUlkOiBlbnRpdHkuaWQsXG4gICAgICAgIHRhYmxlOiBlbnRpdHkudGFibGUsXG4gICAgICAgIHByb3BzOiBlbnRpdHkucHJvcHMsXG4gICAgICAgIHJlbGF0aW9uczogZW50aXR5LnJlbGF0aW9ucyxcbiAgICAgICAgZW51bUxhYmVsczogZW50aXR5LmVudW1MYWJlbHMsXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgY29uc3Qgc3lzdGVtTWVzc2FnZSA9IGBcbiAgICAgICAg64u57Iug7J2AIO2UveyKpOyzkCDroIjsvZTrk5zrpbwg7IiY7KCV7ZWY6rOgIOyDneyEse2VoCDsiJgg7J6I64qUIOuPhOyasOuvuOyeheuLiOuLpC5cblxuICAgICAgICDtmITsnqwg7ZS97Iqk7LOQIOugiOy9lOuTnDpcbiAgICAgICAgJHtKU09OLnN0cmluZ2lmeShmaXh0dXJlUmVjb3JkcywgbnVsbCwgMil9XG5cbiAgICAgICAg7JeU7Yuw7YuwIOq1rOyhsCDsoJXrs7Q6XG4gICAgICAgICR7SlNPTi5zdHJpbmdpZnkoZW50aXR5U3RydWN0dXJlcywgbnVsbCwgMil9XG5cbiAgICAgICAgIyMg7ZS97Iqk7LOQIOyImOyglVxuICAgICAgICDsgqzsmqnsnpDqsIAg7ZS97Iqk7LOQIOqwkiDsiJjsoJXsnYQg7JqU7LKt7ZWY66m0IHVwZGF0ZUZpeHR1cmVzIOuPhOq1rOulvCDsgqzsmqntlZjsl6wg67OA6rK97IKs7ZWt7J2EIOyggeyaqe2VmOyEuOyalC5cbiAgICAgICAgLSBmaXh0dXJlSWQ6IOyImOygle2VoCDtlL3siqTss5AgSUQgKO2YleyLnTogXCJFbnRpdHlJZCNpZFwiKVxuICAgICAgICAtIHVwZGF0ZXM6IOy7rOufvOuqheydhCDtgqTroZwsIOyDiCDqsJLsnYQg6rCS7Jy866GcIO2VmOuKlCDqsJ3ssrRcblxuICAgICAgICDsmIjsi5w6IFwiVXNlciMxXCIg7ZS97Iqk7LOQ7J2YIFwibmFtZVwiIOy7rOufvOydhCBcIu2Zjeq4uOuPmVwi7Jy866GcIOuzgOqyve2VmOugpOuptDpcbiAgICAgICAgdXBkYXRlRml4dHVyZXMoeyB1cGRhdGVzOiBbeyBmaXh0dXJlSWQ6IFwiVXNlciMxXCIsIHVwZGF0ZXM6IHsgbmFtZTogXCLtmY3quLjrj5lcIiB9IH1dIH0pXG5cbiAgICAgICAg67OA6rK965CgIOy7rOufvOydmCB0eXBl7J20IHJlbGF0aW9u7J24IOqyveyasCwg6rSA66CoIOyXlO2LsO2LsOyXkOuPhCDrsJjsmIHrkJjslrTslbwg7ZWgIOy7rOufvOydtCDsnojripTsp4Ag7ZmV7J247ZWY7IS47JqULlxuXG4gICAgICAgICMjIO2UveyKpOyzkCDsg53shLFcbiAgICAgICAg7IKs7Jqp7J6Q6rCAIOyDiOuhnOyatCDtlL3siqTss5Ag7IOd7ISx7J2EIOyalOyyre2VmOuptCBjcmVhdGVGaXh0dXJlcyDrj4Tqtazrpbwg7IKs7Jqp7ZWY7IS47JqULlxuICAgICAgICAtIGVudGl0eUlkOiDsg53shLHtlaAg7JeU7Yuw7YuwIElEXG4gICAgICAgIC0gaWQ6IOyDiCDroIjsvZTrk5zsnZggSUQgKOq4sOyhtCDtlL3siqTss5DsmYAg7KSR67O165CY7KeAIOyViuuKlCDsnYzsiJgg7IKs7JqpIOq2jOyepSwg7JiIOiAtMSwgLTIpXG4gICAgICAgIC0gY29sdW1uczog7Lus65+866qF7J2EIO2CpOuhnCwg6rCS7J2EIOqwkuycvOuhnCDtlZjripQg6rCd7LK0ICjsl5Tti7Dti7Ag6rWs7KGwIOywuOqzoClcblxuICAgICAgICDsmIjsi5w6IOyDiOuhnOyatCBVc2VyIO2UveyKpOyzkOulvCDsg53shLHtlZjroKTrqbQ6XG4gICAgICAgIGNyZWF0ZUZpeHR1cmVzKHsgZml4dHVyZXM6IFt7IGVudGl0eUlkOiBcIlVzZXJcIiwgaWQ6IC0xLCBjb2x1bW5zOiB7IG5hbWU6IFwi7ZmN6ri464+ZXCIsIGVtYWlsOiBcImhvbmdAZXhhbXBsZS5jb21cIiB9IH1dIH0pXG4gICAgICBgO1xuXG4gICAgY29uc3QgeyBzdHJlYW1UZXh0LCB0b29sIH0gPSB0aGlzLmFpU2RrO1xuXG4gICAgcmV0dXJuIHN0cmVhbVRleHQoe1xuICAgICAgbW9kZWw6IHRoaXMubW9kZWwsXG4gICAgICBzeXN0ZW06IHN5c3RlbU1lc3NhZ2UsXG4gICAgICBtZXNzYWdlcyxcbiAgICAgIHRvb2xzOiB7XG4gICAgICAgIHVwZGF0ZUZpeHR1cmVzOiB0b29sKHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgIFwi7ZS97Iqk7LOQIOugiOy9lOuTnOydmCDqsJLsnYQg7IiY7KCV7ZWp64uI64ukLiDsgqzsmqnsnpDqsIAg7Yq57KCVIOy7rOufvOydtOuCmCDqsJLsnYQg67OA6rK97ZW064us65286rOgIOyalOyyre2VoCDrlYwg7IKs7Jqp7ZWY7IS47JqULlwiLFxuICAgICAgICAgIGlucHV0U2NoZW1hOiB6Lm9iamVjdCh7XG4gICAgICAgICAgICB1cGRhdGVzOiB6LmFycmF5KFxuICAgICAgICAgICAgICB6Lm9iamVjdCh7XG4gICAgICAgICAgICAgICAgZml4dHVyZUlkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwi7IiY7KCV7ZWgIO2UveyKpOyzkCBJRCAo7ZiV7IudOiBFbnRpdHlJZCNpZClcIiksXG4gICAgICAgICAgICAgICAgdXBkYXRlczogelxuICAgICAgICAgICAgICAgICAgLnJlY29yZCh6LnN0cmluZygpLCB6LnVua25vd24oKSlcbiAgICAgICAgICAgICAgICAgIC5kZXNjcmliZShcIuy7rOufvOuqheydhCDtgqTroZwsIOyDiCDqsJLsnYQg6rCS7Jy866GcIO2VmOuKlCDqsJ3ssrRcIiksXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBleGVjdXRlOiBhc3luYyAoe1xuICAgICAgICAgICAgdXBkYXRlcyxcbiAgICAgICAgICB9OiB7XG4gICAgICAgICAgICB1cGRhdGVzOiBBcnJheTx7IGZpeHR1cmVJZDogc3RyaW5nOyB1cGRhdGVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9PjtcbiAgICAgICAgICB9KTogUHJvbWlzZTx7IHN1Y2Nlc3M6IGJvb2xlYW47IHVwZGF0ZWRSZWNvcmRzOiBGaXh0dXJlUmVjb3JkW10gfT4gPT4ge1xuICAgICAgICAgICAgLy8gZml4dHVyZVJlY29yZHPrpbwg67O17IKs7ZWY6rOgIOyXheuNsOydtO2KuCDsoIHsmqlcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRSZWNvcmRzOiBGaXh0dXJlUmVjb3JkW10gPSBmaXh0dXJlUmVjb3Jkcy5tYXAoKHJlY29yZCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB1cGRhdGUgPSB1cGRhdGVzLmZpbmQoXG4gICAgICAgICAgICAgICAgKHU6IHsgZml4dHVyZUlkOiBzdHJpbmcgfSkgPT4gdS5maXh0dXJlSWQgPT09IHJlY29yZC5maXh0dXJlSWQsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGlmICh1cGRhdGUpIHtcbiAgICAgICAgICAgICAgICAvLyBjb2x1bW5z7J2YIHZhbHVl66W8IOyXheuNsOydtO2KuFxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW2NvbHVtbk5hbWUsIG5ld1ZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh1cGRhdGUudXBkYXRlcykpIHtcbiAgICAgICAgICAgICAgICAgIHJlY29yZC5jb2x1bW5zW2NvbHVtbk5hbWVdLnZhbHVlID1cbiAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWUgYXMgRml4dHVyZVJlY29yZFtcImNvbHVtbnNcIl1bc3RyaW5nXVtcInZhbHVlXCJdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVjb3JkO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHJlY29yZDtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCB1cGRhdGVkUmVjb3JkcyB9O1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgICBjcmVhdGVGaXh0dXJlczogdG9vbCh7XG4gICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICBcIuyDiOuhnOyatCDtlL3siqTss5Ag66CI7L2U65Oc66W8IOyDneyEse2VqeuLiOuLpC4g7IKs7Jqp7J6Q6rCAIOyDiOuhnOyatCDrjbDsnbTthLDrpbwg7LaU6rCA7ZW064us65286rOgIOyalOyyre2VoCDrlYwg7IKs7Jqp7ZWY7IS47JqULlwiLFxuICAgICAgICAgIGlucHV0U2NoZW1hOiB6Lm9iamVjdCh7XG4gICAgICAgICAgICBmaXh0dXJlczogei5hcnJheShcbiAgICAgICAgICAgICAgei5vYmplY3Qoe1xuICAgICAgICAgICAgICAgIGVudGl0eUlkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwi7IOd7ISx7ZWgIOyXlO2LsO2LsCBJRFwiKSxcbiAgICAgICAgICAgICAgICBpZDogei5udW1iZXIoKS5kZXNjcmliZShcIuyDiCDroIjsvZTrk5zsnZggSUQgKOydjOyImCDqtozsnqUsIOyYiDogLTEsIC0yKVwiKSxcbiAgICAgICAgICAgICAgICBjb2x1bW5zOiB6XG4gICAgICAgICAgICAgICAgICAucmVjb3JkKHouc3RyaW5nKCksIHoudW5rbm93bigpKVxuICAgICAgICAgICAgICAgICAgLmRlc2NyaWJlKFwi7Lus65+866qF7J2EIO2CpOuhnCwg6rCS7J2EIOqwkuycvOuhnCDtlZjripQg6rCd7LK0XCIpLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgZXhlY3V0ZTogYXN5bmMgKHtcbiAgICAgICAgICAgIGZpeHR1cmVzLFxuICAgICAgICAgIH06IHtcbiAgICAgICAgICAgIGZpeHR1cmVzOiBBcnJheTx7IGVudGl0eUlkOiBzdHJpbmc7IGlkOiBudW1iZXI7IGNvbHVtbnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH0+O1xuICAgICAgICAgIH0pOiBQcm9taXNlPHsgc3VjY2VzczogYm9vbGVhbjsgdXBkYXRlZFJlY29yZHM6IEZpeHR1cmVSZWNvcmRbXSB9PiA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdSZWNvcmRzOiBGaXh0dXJlUmVjb3JkW10gPSBmaXh0dXJlcy5tYXAoXG4gICAgICAgICAgICAgIChmaXh0dXJlOiB7IGVudGl0eUlkOiBzdHJpbmc7IGlkOiBudW1iZXI7IGNvbHVtbnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChmaXh0dXJlLmVudGl0eUlkKTtcblxuICAgICAgICAgICAgICAgIC8vIOyXlO2LsO2LsCBwcm9wc+ulvCDquLDrsJjsnLzroZwgY29sdW1ucyDqtazshLFcbiAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5zOiBGaXh0dXJlUmVjb3JkW1wiY29sdW1uc1wiXSA9IHt9O1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcCBvZiBlbnRpdHkucHJvcHMpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChwcm9wLnR5cGUgPT09IFwidmlydHVhbFwiKSBjb250aW51ZTtcblxuICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gZml4dHVyZS5jb2x1bW5zW3Byb3AubmFtZV0gPz8gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgaWYgKHByb3AubmFtZSA9PT0gXCJjcmVhdGVkX2F0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8g7ZiE7J6sIOyLnOqwhOycvOuhnCDshKTsoJVcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgICBwcm9wLnR5cGUgPT09IFwicmVsYXRpb25cIiAmJlxuICAgICAgICAgICAgICAgICAgICAocHJvcC5yZWxhdGlvblR5cGUgPT09IFwiSGFzTWFueVwiIHx8IHByb3AucmVsYXRpb25UeXBlID09PSBcIk1hbnlUb01hbnlcIilcbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAvLyDrsLDsl7TroZwg67OA7ZmYXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV0uZmlsdGVyKG5vbk51bGxhYmxlKTtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgY29sdW1uc1twcm9wLm5hbWVdID0ge1xuICAgICAgICAgICAgICAgICAgICBwcm9wLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUgYXMgRml4dHVyZVJlY29yZFtcImNvbHVtbnNcIl1bc3RyaW5nXVtcInZhbHVlXCJdLFxuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgZml4dHVyZUlkOiBgJHtmaXh0dXJlLmVudGl0eUlkfSMke2ZpeHR1cmUuaWR9YCxcbiAgICAgICAgICAgICAgICAgIGVudGl0eUlkOiBmaXh0dXJlLmVudGl0eUlkLFxuICAgICAgICAgICAgICAgICAgaWQ6IGZpeHR1cmUuaWQsXG4gICAgICAgICAgICAgICAgICBjb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgZmV0Y2hlZFJlY29yZHM6IFtdLFxuICAgICAgICAgICAgICAgICAgYmVsb25nc1JlY29yZHM6IFtdLFxuICAgICAgICAgICAgICAgICAgb3ZlcnJpZGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAvLyDsg4gg66CI7L2U65Oc65Ok7J2YIHJlbGF0aW9uIOy7rOufvOydhCDtmZXsnbjtlZjsl6wg6riw7KG0IOugiOy9lOuTnOuTpOydmCDsl63rsKntlqUgcmVsYXRpb24g7JeF642w7J207Yq4XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG5ld1JlY29yZCBvZiBuZXdSZWNvcmRzKSB7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgW19jb2xOYW1lLCBjb2xdIG9mIE9iamVjdC5lbnRyaWVzKG5ld1JlY29yZC5jb2x1bW5zKSkge1xuICAgICAgICAgICAgICAgIGlmIChjb2wucHJvcC50eXBlICE9PSBcInJlbGF0aW9uXCIgfHwgY29sLnZhbHVlID09PSBudWxsKSBjb250aW51ZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRFbnRpdHlJZCA9IGNvbC5wcm9wLndpdGg7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVsYXRlZElkcyA9IEFycmF5LmlzQXJyYXkoY29sLnZhbHVlKSA/IGNvbC52YWx1ZSA6IFtjb2wudmFsdWVdO1xuXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCByZWxhdGVkSWQgb2YgcmVsYXRlZElkcykge1xuICAgICAgICAgICAgICAgICAgY29uc3QgcmVsYXRlZEZpeHR1cmVJZCA9IGAke3JlbGF0ZWRFbnRpdHlJZH0jJHtyZWxhdGVkSWR9YDtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRSZWNvcmQgPSBuZXdSZWNvcmRzLmZpbmQoKHIpID0+IHIuZml4dHVyZUlkID09PSByZWxhdGVkRml4dHVyZUlkKTtcblxuICAgICAgICAgICAgICAgICAgaWYgKHJlbGF0ZWRSZWNvcmQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8g7Jet67Cp7ZalIHJlbGF0aW9uIOywvuq4sFxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXZlcnNlQ29sID0gT2JqZWN0LmVudHJpZXMocmVsYXRlZFJlY29yZC5jb2x1bW5zKS5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgIChbLCBjXSkgPT4gYy5wcm9wLnR5cGUgPT09IFwicmVsYXRpb25cIiAmJiBjLnByb3Aud2l0aCA9PT0gbmV3UmVjb3JkLmVudGl0eUlkLFxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXZlcnNlQ29sKSB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgW3JldmVyc2VDb2xOYW1lLCByZXZlcnNlQ29sVmFsdWVdID0gcmV2ZXJzZUNvbDtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSByZXZlcnNlQ29sVmFsdWUudmFsdWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAvLyDsl63rsKntlqXsnbQg67Cw7Je07J24IOqyveyasCAoSGFzTWFueSwgTWFueVRvTWFueSlcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXZlcnNlQ29sVmFsdWUucHJvcC50eXBlID09PSBcInJlbGF0aW9uXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXZlcnNlQ29sVmFsdWUucHJvcC5yZWxhdGlvblR5cGUgPT09IFwiSGFzTWFueVwiIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldmVyc2VDb2xWYWx1ZS5wcm9wLnJlbGF0aW9uVHlwZSA9PT0gXCJNYW55VG9NYW55XCIpXG4gICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQoQXJyYXkuaXNBcnJheShjdXJyZW50VmFsdWUpLCBcImN1cnJlbnRWYWx1ZSBtdXN0IGJlIGFuIGFycmF5XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50VmFsdWUuaW5jbHVkZXMobmV3UmVjb3JkLmlkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGVkUmVjb3JkLmNvbHVtbnNbcmV2ZXJzZUNvbE5hbWVdID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnJldmVyc2VDb2xWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogWy4uLmN1cnJlbnRWYWx1ZSwgbmV3UmVjb3JkLmlkXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8g7Jet67Cp7Zal7J20IOuLqOydvCDqsJLsnbgg6rK97JqwIChCZWxvbmdzVG9PbmUsIE9uZVRvT25lKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRlZFJlY29yZC5jb2x1bW5zW3JldmVyc2VDb2xOYW1lXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucmV2ZXJzZUNvbFZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbmV3UmVjb3JkLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSwgdXBkYXRlZFJlY29yZHM6IG5ld1JlY29yZHMgfTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVFbnRpdHkobWVzc2FnZXM6IE1vZGVsTWVzc2FnZVtdKTogU3RyZWFtVGV4dFJlc3VsdDxhbnksIGFueT4ge1xuICAgIGlmICghdGhpcy5haVNkayB8fCAhdGhpcy5tb2RlbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQUkgU0RLIG5vdCBpbml0aWFsaXplZC4gQ2FsbCBpbml0KCkgZmlyc3QuXCIpO1xuICAgIH1cblxuICAgIC8vIGVudGl0eS5pbnN0cnVjdGlvbnMubWQg7YyM7J28IOydveq4sCAoZGlzdC91aSDrmJDripQgc3JjL3Vp7JeQ7IScIOyLpO2WieuQmOuvgOuhnCDtjKjtgqTsp4Ag66Oo7Yq4IOq4sOykgOycvOuhnCDsoJHqt7wpXG4gICAgY29uc3QgaW5zdHJ1Y3Rpb25zUGF0aCA9IHBhdGguam9pbihcbiAgICAgIGltcG9ydC5tZXRhLmRpcm5hbWUsXG4gICAgICBcIi4uXCIsXG4gICAgICBcIi4uXCIsXG4gICAgICBcInNyY1wiLFxuICAgICAgXCJ1aVwiLFxuICAgICAgXCJlbnRpdHkuaW5zdHJ1Y3Rpb25zLm1kXCIsXG4gICAgKTtcbiAgICBjb25zdCBpbnN0cnVjdGlvbnMgPSBmcy5yZWFkRmlsZVN5bmMoaW5zdHJ1Y3Rpb25zUGF0aCwgXCJ1dGYtOFwiKTtcblxuICAgIC8vIO2YhOyerCDrk7HroZ3rkJwg7JeU7Yuw7YuwIOygleuztCDsiJjsp5FcbiAgICBjb25zdCBlbnRpdHlJZHMgPSBFbnRpdHlNYW5hZ2VyLmdldEFsbElkcygpO1xuICAgIGNvbnN0IGV4aXN0aW5nRW50aXRpZXMgPSBlbnRpdHlJZHMubWFwKChlbnRpdHlJZCkgPT4ge1xuICAgICAgY29uc3QgZW50aXR5ID0gRW50aXR5TWFuYWdlci5nZXQoZW50aXR5SWQpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGVudGl0eS5pZCxcbiAgICAgICAgdGl0bGU6IGVudGl0eS50aXRsZSxcbiAgICAgICAgdGFibGU6IGVudGl0eS50YWJsZSxcbiAgICAgICAgcHJvcHM6IGVudGl0eS5wcm9wcy5tYXAoKHApID0+ICh7XG4gICAgICAgICAgbmFtZTogcC5uYW1lLFxuICAgICAgICAgIHR5cGU6IHAudHlwZSxcbiAgICAgICAgICBkZXNjOiBwLmRlc2MsXG4gICAgICAgIH0pKSxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBjb25zdCBzeXN0ZW1NZXNzYWdlID0gYFxu64u57Iug7J2AIFNvbmFtdSDtlITroIjsnoTsm4ztgazsl5DshJwgRW50aXR57JmAIEVudW3snYQg7IOd7ISx7ZWY64qUIOuPhOyasOuvuOyeheuLiOuLpC5cblxuJHtpbnN0cnVjdGlvbnN9XG5cbiMjIO2YhOyerCDrk7HroZ3rkJwgRW50aXR5IOuqqeuhnVxu64uk66W4IOyXlO2LsO2LsOyZgCDqtIDqs4QocmVsYXRpb24p66W8IOunuuqxsOuCmCBzdWJzZXTsl5DshJwg7LC47KGw7ZWgIOuVjCDrsJjrk5zsi5wg7JWE656YIOygleuztOulvCDtmZXsnbjtlZjshLjsmpQuXG5cbiR7SlNPTi5zdHJpbmdpZnkoZXhpc3RpbmdFbnRpdGllcywgbnVsbCwgMil9XG5cbiMjIFRvb2wg7IKs7JqpIOqwgOydtOuTnFxuXG4jIyMgRW50aXR5IOyDneyEsSAoY3JlYXRlRW50aXR5KVxu7IKs7Jqp7J6Q6rCAIOyDiOuhnOyatCBFbnRpdHkg7IOd7ISx7J2EIOyalOyyre2VmOuptCBjcmVhdGVFbnRpdHkg64+E6rWs66W8IOyCrOyaqe2VmOyEuOyalC5cbi0gZW50aXR5SWQ6IFBhc2NhbENhc2XroZwg65CcIEVudGl0eSBJRCAo7JiIOiBcIlVzZXJcIiwgXCJQcm9kdWN0Q2F0ZWdvcnlcIilcbi0gdGl0bGU6IO2VnOq4gCDsoJzrqqkgKOyYiDogXCLsgqzsmqnsnpBcIiwgXCLsg4Htkogg7Lm07YWM6rOg66asXCIpXG4tIHRhYmxlOiBzbmFrZV9jYXNl66GcIOuQnCDthYzsnbTruJTrqoUgKOyYiDogXCJ1c2Vyc1wiLCBcInByb2R1Y3RfY2F0ZWdvcmllc1wiKVxuLSBwYXJlbnRJZDog67aA66qoIEVudGl0eSBJRCAo7ISg7YOd7IKs7ZWtKVxuLSBwcm9wczogRW50aXR57J2YIO2UhOuhnO2NvO2LsCDrsLDsl7QgKOychCDrrLjshJzsnZggUHJvcGVydHkgVHlwZXMg7LC46rOgKVxuLSBpbmRleGVzOiDsnbjrjbHsiqQg67Cw7Je0XG4tIHN1YnNldHM6IOyEnOu4jOyFiyDsoJXsnZggKOq4sOuzuOqwkjogeyBBOiBbXCJpZFwiXSB9KVxuLSBlbnVtczogRW51bSDsoJXsnZhcblxuIyMjIEVudGl0eSDsiJjsoJUgKHVwZGF0ZUVudGl0eSlcbuq4sOyhtCBFbnRpdHnrpbwg7IiY7KCV7ZWgIOuVjCB1cGRhdGVFbnRpdHkg64+E6rWs66W8IOyCrOyaqe2VmOyEuOyalC4gRW51bSDstpTqsIAsIHByb3BzIOy2lOqwgC/siJjsoJUsIGluZGV4ZXMg7IiY7KCVIOuTsSDrqqjrk6Ag7IiY7KCVIOyekeyXheyXkCDsgqzsmqntlanri4jri6QuXG4tIGVudGl0eUlkOiDsiJjsoJXtlaAgRW50aXR5IElEXG4tIHVwZGF0ZXM6IOyImOygle2VoCDtlYTrk5zrk6QgKOu2gOu2hCDsl4XrjbDsnbTtirgpXG4gIC0gdGl0bGU6IOyXlO2LsO2LsCDtlZzquIAg7KCc66qpXG4gIC0gdGFibGU6IO2FjOydtOu4lOuqhVxuICAtIHByb3BzOiDstpTqsIDtlaAg7ZSE66Gc7Y287YuwIOuwsOyXtCAo6riw7KG0IHByb3Bz7JeQIOy2lOqwgCwg6rCZ7J2AIOydtOumhOydtOuptCDqtZDssrQpXG4gIC0gaW5kZXhlczog7LaU6rCA7ZWgIOyduOuNseyKpCDrsLDsl7QgKOq4sOyhtCBpbmRleGVz7JeQIOy2lOqwgClcbiAgLSBzdWJzZXRzOiDshJzruIzshYsg7KCV7J2YICjquLDsobQgc3Vic2V0c+yXkCDrs5HtlakpXG4gIC0gZW51bUxhYmVsczogRW51bSDsoJXsnZggKOq4sOyhtCBlbnVtTGFiZWxz7JeQIOuzke2VqSlcbi0gbW9kZTogXCJtZXJnZVwiKOq4sOuzuOqwkikg65iQ64qUIFwicmVwbGFjZVwiXG4gIC0gbWVyZ2U6IOq4sOyhtCDqsJLsl5Ag67OR7ZWpXG4gIC0gcmVwbGFjZTog7ZW064u5IO2VhOuTnCDsoITssrQg6rWQ7LK0XG5cbuyYiOyLnDogRW1wbG95ZWXsl5Ag7IOIIEVudW0g7LaU6rCAXG51cGRhdGVFbnRpdHkoeyBlbnRpdHlJZDogXCJFbXBsb3llZVwiLCB1cGRhdGVzOiB7IGVudW1MYWJlbHM6IHsgXCJFbXBsb3llZVJvbGVcIjogeyBcImFkbWluXCI6IFwi6rSA66as7J6QXCIsIFwidXNlclwiOiBcIuydvOuwmFwiIH0gfSB9IH0pXG5cbuyYiOyLnDogUHJvamVjdOyXkCDsg4gg7ZSE66Gc7Y287YuwIOy2lOqwgFxudXBkYXRlRW50aXR5KHsgZW50aXR5SWQ6IFwiUHJvamVjdFwiLCB1cGRhdGVzOiB7IHByb3BzOiBbeyBuYW1lOiBcInByaW9yaXR5XCIsIHR5cGU6IFwiaW50ZWdlclwiLCBkZXNjOiBcIuyasOyEoOyInOychFwiIH1dIH0gfSlcblxuIyMg7ZWE7IiYIOyCrO2VrVxuLSBFbnRpdHnsnZggcHJvcHPsl5DripQg7LWc7IaM7ZWcIGlkKGludGVnZXIsIHVuc2lnbmVkKSwgY3JlYXRlZF9hdCh0aW1lc3RhbXAp6rCAIO2PrO2VqOuQmOyWtOyVvCDtlanri4jri6QuXG4tIHJlbGF0aW9uIO2VhOuTnOuKlCBvblVwZGF0ZSwgb25EZWxldGXqsIAg7ZWE7IiY7J6F64uI64ukLiAo7JiI7Jm4OiBPbmVUb09uZeyXkOyEnCBoYXNKb2luQ29sdW1u7J20IGZhbHNl7J24IOqyveyasClcbi0gRW51bSBJROuKlCDrs7TthrUgRW50aXR5SWQgKyDsho3shLHrqoUg7ZiV7YOc7J6F64uI64ukICjsmIg6IFVzZXJTdGF0dXMsIFByb2R1Y3RUeXBlKVxuLSBzdWJzZXTsl5DshJwg64uk66W4IOyXlO2LsO2LsOydmCDtlITroZztjbzti7Drpbwg7LC47KGw7ZWgIOuVjOuKlCDrsJjrk5zsi5wg7ZW064u5IOyXlO2LsO2LsOydmCDsi6TsoJwg7ZSE66Gc7Y287Yuw66qF7J2EIOyCrOyaqe2VmOyEuOyalC5cblxuIyMg6rKA7KadIOyYpOulmCDsspjrpqxcbuuPhOq1rCDtmLjstpwg6rKw6rO866GcIOqygOymnSDsmKTrpZgodmFsaWRhdGlvbkVycm9ycynqsIAg67CY7ZmY65CY66m0OlxuMS4g7Jik66WYIOuplOyLnOyngOulvCDrtoTshJ3tlZjsl6wg66y47KCc7KCQ7J2EIO2MjOyVhe2VmOyEuOyalC5cbjIuIOyYpOulmOulvCDsiJjsoJXtlZwg642w7J207YSw66GcIGNyZWF0ZUVudGl0eeulvCDri6Tsi5wg7Zi47Lac7ZWY7IS47JqULlxuMy4g7IKs7Jqp7J6Q7JeQ6rKMIOyYpOulmOulvCDqt7jrjIDroZwg7KCE64us7ZWY7KeAIOunkOqzoCwg7IiY7KCVIO2bhCDsnqzsi5zrj4TtlZjshLjsmpQuXG5cbiMjIyDsnbzrsJjsoIHsnbgg6rKA7KadIOyYpOulmOyZgCDsiJjsoJUg67Cp67KVXG58IOyYpOulmCDrqZTsi5zsp4AgfCDsiJjsoJUg67Cp67KVIHxcbnwtLS0tLS0tLS0tLS18LS0tLS0tLS0tLXxcbnwgXCJpZCDtlITroZztjbzti7DqsIAg7ZWE7IiYXCIgfCBwcm9wc+yXkCB7IG5hbWU6IFwiaWRcIiwgdHlwZTogXCJpbnRlZ2VyXCIsIHVuc2lnbmVkOiB0cnVlIH0g7LaU6rCAIHxcbnwgXCJjcmVhdGVkX2F0IO2UhOuhnO2NvO2LsOqwgCDtlYTsiJhcIiB8IHByb3Bz7JeQIHsgbmFtZTogXCJjcmVhdGVkX2F0XCIsIHR5cGU6IFwidGltZXN0YW1wXCIsIGRiRGVmYXVsdDogXCJDVVJSRU5UX1RJTUVTVEFNUFwiIH0g7LaU6rCAIHxcbnwgXCJYeHhPcmRlckJ5IGVudW3snbQg7ZWE7IiYXCIgfCBlbnVtc+yXkCB7IFwiWHh4T3JkZXJCeVwiOiB7IFwiaWQtZGVzY1wiOiBcIklE7LWc7Iug7IicXCIgfSB9IOy2lOqwgCB8XG58IFwiWHh4U2VhcmNoRmllbGQgZW51beydtCDtlYTsiJhcIiB8IGVudW1z7JeQIHsgXCJYeHhTZWFyY2hGaWVsZFwiOiB7IFwiaWRcIjogXCJJRFwiIH0gfSDstpTqsIAgfFxufCBcInN0cmluZyDtg4DsnoXsnYAgbGVuZ3Ro6rCAIO2VhOyImFwiIHwg7ZW064u5IHByb3Dsl5AgbGVuZ3RoIOy2lOqwgCAo7JiIOiAyNTUpIHxcbnwgXCJ0ZXh0IO2DgOyeheydgCB0ZXh0VHlwZeydtCDtlYTsiJhcIiB8IO2VtOuLuSBwcm9w7JeQIHRleHRUeXBlIOy2lOqwgCAoXCJ0ZXh0XCIsIFwibWVkaXVtdGV4dFwiLCBcImxvbmd0ZXh0XCIpIHxcbnwgXCJvblVwZGF0ZeqwgCDtlYTsiJhcIiB8IO2VtOuLuSByZWxhdGlvbiBwcm9w7JeQIG9uVXBkYXRlLCBvbkRlbGV0ZSDstpTqsIAgKFwiQ0FTQ0FERVwiKSB8XG4gICAgICBgO1xuXG4gICAgY29uc3QgeyBzdHJlYW1UZXh0LCB0b29sLCBzdGVwQ291bnRJcyB9ID0gdGhpcy5haVNkaztcblxuICAgIHJldHVybiBzdHJlYW1UZXh0KHtcbiAgICAgIG1vZGVsOiB0aGlzLm1vZGVsIGFzIHVua25vd24gYXMgTGFuZ3VhZ2VNb2RlbCxcbiAgICAgIHN5c3RlbTogc3lzdGVtTWVzc2FnZSxcbiAgICAgIG1lc3NhZ2VzLFxuICAgICAgc3RvcFdoZW46IHN0ZXBDb3VudElzKDIpLFxuICAgICAgdG9vbHM6IHtcbiAgICAgICAgY3JlYXRlRW50aXR5OiB0b29sKHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgIFwi7IOI66Gc7Jq0IEVudGl0eeulvCDsg53shLHtlanri4jri6QuIOyCrOyaqeyekOqwgCDsg4jroZzsmrQg7JeU7Yuw7Yuw64KYIO2FjOydtOu4lCDsg53shLHsnYQg7JqU7LKt7ZWgIOuVjCDsgqzsmqntlZjshLjsmpQuXCIsXG4gICAgICAgICAgaW5wdXRTY2hlbWE6IFRlbXBsYXRlT3B0aW9ucy5zaGFwZS5lbnRpdHksXG4gICAgICAgICAgZXhlY3V0ZTogYXN5bmMgKFxuICAgICAgICAgICAgZW50aXR5OiB6LmluZmVyPHR5cGVvZiBUZW1wbGF0ZU9wdGlvbnMuc2hhcGUuZW50aXR5PixcbiAgICAgICAgICApOiBQcm9taXNlPHtcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGJvb2xlYW47XG4gICAgICAgICAgICBlbnRpdHlJZDogc3RyaW5nO1xuICAgICAgICAgICAgZXJyb3I/OiBzdHJpbmc7XG4gICAgICAgICAgICB2YWxpZGF0aW9uRXJyb3JzPzogVmFsaWRhdGlvbkVycm9yW107XG4gICAgICAgICAgfT4gPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgLy8g7J6F66ClIOqygOymnVxuICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0aW9uRXJyb3JzID0gdmFsaWRhdGVFbnRpdHlKc29uKGVudGl0eSk7XG5cbiAgICAgICAgICAgICAgaWYgKHZhbGlkYXRpb25FcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIGVudGl0eUlkOiBlbnRpdHkuZW50aXR5SWQsXG4gICAgICAgICAgICAgICAgICBlcnJvcjogYOqygOymnSDsmKTrpZg6ICR7dmFsaWRhdGlvbkVycm9ycy5tYXAoKGUpID0+IGBbJHtlLmZpZWxkfV0gJHtlLm1lc3NhZ2V9YCkuam9pbihcIiwgXCIpfWAsXG4gICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uRXJyb3JzLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBhd2FpdCBTb25hbXUuc3luY2VyLmNyZWF0ZUVudGl0eSh7XG4gICAgICAgICAgICAgICAgc3Vic2V0czogeyBBOiBbXCJpZFwiXSB9LFxuICAgICAgICAgICAgICAgIGVudW1zOiB7fSxcbiAgICAgICAgICAgICAgICAuLi5lbnRpdHksXG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIC8vIEVudGl0eU1hbmFnZXIg66as66Gc65OcXG4gICAgICAgICAgICAgIGF3YWl0IEVudGl0eU1hbmFnZXIucmVsb2FkKCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSwgZW50aXR5SWQ6IGVudGl0eS5lbnRpdHlJZCB9O1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IGUgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6IFwiVW5rbm93biBlcnJvclwiO1xuICAgICAgICAgICAgICByZXR1cm4geyBzdWNjZXNzOiBmYWxzZSwgZW50aXR5SWQ6IGVudGl0eS5lbnRpdHlJZCwgZXJyb3IgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgICAgdXBkYXRlRW50aXR5OiB0b29sKHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgIFwi6riw7KG0IEVudGl0eeulvCDsiJjsoJXtlanri4jri6QuIEVudW0g7LaU6rCALCBwcm9wcyDstpTqsIAv7IiY7KCVLCBpbmRleGVzIOyImOyglSwgc3Vic2V0cyDsiJjsoJUg65OxIOuqqOuToCDsl5Tti7Dti7Ag7IiY7KCVIOyekeyXheyXkCDsgqzsmqntlZjshLjsmpQuXCIsXG4gICAgICAgICAgaW5wdXRTY2hlbWE6IHoub2JqZWN0KHtcbiAgICAgICAgICAgIGVudGl0eUlkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwi7IiY7KCV7ZWgIEVudGl0eSBJRFwiKSxcbiAgICAgICAgICAgIHVwZGF0ZXM6IFRlbXBsYXRlT3B0aW9ucy5zaGFwZS5lbnRpdHkucGFydGlhbCgpLmRlc2NyaWJlKFwi7IiY7KCV7ZWgIO2VhOuTnOuTpFwiKSxcbiAgICAgICAgICAgIG1vZGU6IHpcbiAgICAgICAgICAgICAgLmVudW0oW1wibWVyZ2VcIiwgXCJyZXBsYWNlXCJdKVxuICAgICAgICAgICAgICAub3B0aW9uYWwoKVxuICAgICAgICAgICAgICAuZGVzY3JpYmUoXCLsiJjsoJUg66qo65OcOiBtZXJnZSjquLDrs7jqsJIsIOq4sOyhtCDqsJLsl5Ag67OR7ZWpKSDrmJDripQgcmVwbGFjZSjsoITssrQg6rWQ7LK0KVwiKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBleGVjdXRlOiBhc3luYyAoe1xuICAgICAgICAgICAgZW50aXR5SWQsXG4gICAgICAgICAgICB1cGRhdGVzLFxuICAgICAgICAgICAgbW9kZSA9IFwibWVyZ2VcIixcbiAgICAgICAgICB9OiB7XG4gICAgICAgICAgICBlbnRpdHlJZDogc3RyaW5nO1xuICAgICAgICAgICAgdXBkYXRlczogUGFydGlhbDx6LmluZmVyPHR5cGVvZiBUZW1wbGF0ZU9wdGlvbnMuc2hhcGUuZW50aXR5Pj47XG4gICAgICAgICAgICBtb2RlPzogXCJtZXJnZVwiIHwgXCJyZXBsYWNlXCI7XG4gICAgICAgICAgfSk6IFByb21pc2U8e1xuICAgICAgICAgICAgc3VjY2VzczogYm9vbGVhbjtcbiAgICAgICAgICAgIGVudGl0eUlkOiBzdHJpbmc7XG4gICAgICAgICAgICBlcnJvcj86IHN0cmluZztcbiAgICAgICAgICAgIHZhbGlkYXRpb25FcnJvcnM/OiBWYWxpZGF0aW9uRXJyb3JbXTtcbiAgICAgICAgICB9PiA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBlbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChlbnRpdHlJZCk7XG5cbiAgICAgICAgICAgICAgLy8gVXBkYXRlIGJhc2ljIHByb3BlcnRpZXNcbiAgICAgICAgICAgICAgaWYgKHVwZGF0ZXMuZW50aXR5SWQgIT09IHVuZGVmaW5lZCkgZW50aXR5LmlkID0gdXBkYXRlcy5lbnRpdHlJZDtcbiAgICAgICAgICAgICAgaWYgKHVwZGF0ZXMucGFyZW50SWQgIT09IHVuZGVmaW5lZCkgZW50aXR5LnBhcmVudElkID0gdXBkYXRlcy5wYXJlbnRJZDtcbiAgICAgICAgICAgICAgaWYgKHVwZGF0ZXMudGl0bGUgIT09IHVuZGVmaW5lZCkgZW50aXR5LnRpdGxlID0gdXBkYXRlcy50aXRsZTtcbiAgICAgICAgICAgICAgaWYgKHVwZGF0ZXMudGFibGUgIT09IHVuZGVmaW5lZCkgZW50aXR5LnRhYmxlID0gdXBkYXRlcy50YWJsZTtcbiAgICAgICAgICAgICAgaWYgKHVwZGF0ZXMuY29uZSAhPT0gdW5kZWZpbmVkKSBlbnRpdHkuY29uZSA9IHVwZGF0ZXMuY29uZTtcblxuICAgICAgICAgICAgICAvLyBwcm9wczogbWVyZ2Ug7IucIOydtOumhCDquLDspIAg67OR7ZWpLCByZXBsYWNlIOyLnCDqtZDssrRcbiAgICAgICAgICAgICAgaWYgKHVwZGF0ZXMucHJvcHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGlmIChtb2RlID09PSBcInJlcGxhY2VcIikge1xuICAgICAgICAgICAgICAgICAgZW50aXR5LnByb3BzID0gdXBkYXRlcy5wcm9wcyBhcyBFbnRpdHlQcm9wW107XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbmV3UHJvcCBvZiB1cGRhdGVzLnByb3BzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSW5kZXggPSBlbnRpdHkucHJvcHMuZmluZEluZGV4KChwKSA9PiBwLm5hbWUgPT09IG5ld1Byb3AubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ0luZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICBlbnRpdHkucHJvcHNbZXhpc3RpbmdJbmRleF0gPSBuZXdQcm9wIGFzIEVudGl0eVByb3A7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgZW50aXR5LnByb3BzLnB1c2gobmV3UHJvcCBhcyBFbnRpdHlQcm9wKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8vIGluZGV4ZXM6IG1lcmdlIOyLnCDstpTqsIAsIHJlcGxhY2Ug7IucIOq1kOyytFxuICAgICAgICAgICAgICBpZiAodXBkYXRlcy5pbmRleGVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBlbnRpdHkuaW5kZXhlcyA9XG4gICAgICAgICAgICAgICAgICBtb2RlID09PSBcInJlcGxhY2VcIiA/IHVwZGF0ZXMuaW5kZXhlcyA6IFsuLi5lbnRpdHkuaW5kZXhlcywgLi4udXBkYXRlcy5pbmRleGVzXTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8vIHN1YnNldHMsIHN1YnNldHNJbnRlcm5hbDogYXNzaWdu7Jy866GcIOuzke2VqSDrmJDripQg6rWQ7LK0XG4gICAgICAgICAgICAgIGlmICh1cGRhdGVzLnN1YnNldHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIC8vIE5vcm1hbGl6ZSBzdWJzZXQgZmllbGRzOiBzZXBhcmF0ZSBpbnRvIHN1YnNldHMgKG5vcm1hbCkgYW5kIHN1YnNldHNJbnRlcm5hbCAoaW50ZXJuYWwpXG4gICAgICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZFN1YnNldHM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSA9IHt9O1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRTdWJzZXRzSW50ZXJuYWw6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSA9IHt9O1xuXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBba2V5LCBmaWVsZHNdIG9mIE9iamVjdC5lbnRyaWVzKHVwZGF0ZXMuc3Vic2V0cykpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkQXJyYXkgPSBmaWVsZHMgYXMgc3RyaW5nW107XG4gICAgICAgICAgICAgICAgICBub3JtYWxpemVkU3Vic2V0c1trZXldID0gZmllbGRBcnJheVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChmOiBzdHJpbmcpID0+ICFpc0ludGVybmFsU3Vic2V0RmllbGQoZikpXG4gICAgICAgICAgICAgICAgICAgIC5tYXAobm9ybWFsaXplU3Vic2V0RmllbGQpO1xuICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZFN1YnNldHNJbnRlcm5hbFtrZXldID0gZmllbGRBcnJheVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGlzSW50ZXJuYWxTdWJzZXRGaWVsZClcbiAgICAgICAgICAgICAgICAgICAgLm1hcChub3JtYWxpemVTdWJzZXRGaWVsZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZW50aXR5LnN1YnNldHMgPVxuICAgICAgICAgICAgICAgICAgbW9kZSA9PT0gXCJyZXBsYWNlXCJcbiAgICAgICAgICAgICAgICAgICAgPyBub3JtYWxpemVkU3Vic2V0c1xuICAgICAgICAgICAgICAgICAgICA6IHsgLi4uZW50aXR5LnN1YnNldHMsIC4uLm5vcm1hbGl6ZWRTdWJzZXRzIH07XG4gICAgICAgICAgICAgICAgZW50aXR5LnN1YnNldHNJbnRlcm5hbCA9XG4gICAgICAgICAgICAgICAgICBtb2RlID09PSBcInJlcGxhY2VcIlxuICAgICAgICAgICAgICAgICAgICA/IG5vcm1hbGl6ZWRTdWJzZXRzSW50ZXJuYWxcbiAgICAgICAgICAgICAgICAgICAgOiB7IC4uLmVudGl0eS5zdWJzZXRzSW50ZXJuYWwsIC4uLm5vcm1hbGl6ZWRTdWJzZXRzSW50ZXJuYWwgfTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICh1cGRhdGVzLmVudW1zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb252ZXJ0ZWRFbnVtcyA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHVwZGF0ZXMuZW51bXMpLm1hcCgoW2tleSwgZW51bURlZl0pID0+IFtcbiAgICAgICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgICAgICBnZXRFbnVtRGVmVmFsdWVzKGVudW1EZWYpLFxuICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBlbnRpdHkuZW51bUxhYmVscyA9XG4gICAgICAgICAgICAgICAgICBtb2RlID09PSBcInJlcGxhY2VcIiA/IGNvbnZlcnRlZEVudW1zIDogeyAuLi5lbnRpdHkuZW51bUxhYmVscywgLi4uY29udmVydGVkRW51bXMgfTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8vIOyggOyepSDsoIQg6rKA7KadXG4gICAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRpb25FcnJvcnMgPSB2YWxpZGF0ZUVudGl0eUpzb24oe1xuICAgICAgICAgICAgICAgIC4uLmVudGl0eSxcbiAgICAgICAgICAgICAgICBlbnRpdHlJZDogZW50aXR5LmlkLFxuICAgICAgICAgICAgICAgIGVudW1zOiBlbnRpdHkuZW51bUxhYmVscyxcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgaWYgKHZhbGlkYXRpb25FcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIGVudGl0eUlkLFxuICAgICAgICAgICAgICAgICAgZXJyb3I6IGDqsoDspp0g7Jik66WYOiAke3ZhbGlkYXRpb25FcnJvcnMubWFwKChlKSA9PiBgWyR7ZS5maWVsZH1dICR7ZS5tZXNzYWdlfWApLmpvaW4oXCIsIFwiKX1gLFxuICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbkVycm9ycyxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgYXdhaXQgZW50aXR5LnNhdmUoKTtcblxuICAgICAgICAgICAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCBlbnRpdHlJZCB9O1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IGUgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6IFwiVW5rbm93biBlcnJvclwiO1xuICAgICAgICAgICAgICByZXR1cm4geyBzdWNjZXNzOiBmYWxzZSwgZW50aXR5SWQsIGVycm9yIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogRW50aXR5IEpTT07snbQgZW50aXR5Lmluc3RydWN0aW9ucy5tZOydmCDqt5zsuZnsnYQg65Sw66W064qU7KeAIOqygOymne2VqeuLiOuLpC5cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVFbnRpdHlKc29uKGlucHV0OiBUZW1wbGF0ZU9wdGlvbnNbXCJlbnRpdHlcIl0pOiBWYWxpZGF0aW9uRXJyb3JbXSB7XG4gIGNvbnN0IGVycm9yczogVmFsaWRhdGlvbkVycm9yW10gPSBbXTtcbiAgY29uc3QgeyBlbnRpdHlJZCwgcHJvcHMsIGVudW1zIH0gPSBpbnB1dDtcblxuICAvLyAxLiBpZCwgY3JlYXRlZF9hdCBwcm9wIO2VhOyImFxuICBjb25zdCBoYXNJZFByb3AgPSBwcm9wcz8uc29tZSgocCkgPT4gcC5uYW1lID09PSBcImlkXCIpO1xuICBpZiAoIWhhc0lkUHJvcCkge1xuICAgIGVycm9ycy5wdXNoKHsgZmllbGQ6IFwicHJvcHNcIiwgbWVzc2FnZTogXCJpZCDtlITroZztjbzti7DqsIAg7ZWE7IiY7J6F64uI64ukLlwiIH0pO1xuICB9XG4gIGNvbnN0IGhhc0NyZWF0ZWRBdFByb3AgPSBwcm9wcz8uc29tZSgocCkgPT4gcC5uYW1lID09PSBcImNyZWF0ZWRfYXRcIik7XG4gIGlmICghaGFzQ3JlYXRlZEF0UHJvcCkge1xuICAgIGVycm9ycy5wdXNoKHsgZmllbGQ6IFwicHJvcHNcIiwgbWVzc2FnZTogXCJjcmVhdGVkX2F0IO2UhOuhnO2NvO2LsOqwgCDtlYTsiJjsnoXri4jri6QuXCIgfSk7XG4gIH1cblxuICAvLyAyLiDtlYTsiJggZW51bSDqsoDspp06IEVudGl0eU5hbWVPcmRlckJ5LCBFbnRpdHlOYW1lU2VhcmNoRmllbGRcbiAgY29uc3Qgb3JkZXJCeUVudW1JZCA9IGAke2VudGl0eUlkfU9yZGVyQnlgO1xuICBjb25zdCBzZWFyY2hGaWVsZEVudW1JZCA9IGAke2VudGl0eUlkfVNlYXJjaEZpZWxkYDtcblxuICBpZiAoIWVudW1zPy5bb3JkZXJCeUVudW1JZF0pIHtcbiAgICBlcnJvcnMucHVzaCh7XG4gICAgICBmaWVsZDogXCJlbnVtc1wiLFxuICAgICAgbWVzc2FnZTogYCR7b3JkZXJCeUVudW1JZH0gZW51beydtCDtlYTsiJjsnoXri4jri6QuICjsmIg6IHsgXCJpZC1kZXNjXCI6IFwiSUTstZzsi6DsiJxcIiB9KWAsXG4gICAgfSk7XG4gIH1cbiAgaWYgKCFlbnVtcz8uW3NlYXJjaEZpZWxkRW51bUlkXSkge1xuICAgIGVycm9ycy5wdXNoKHtcbiAgICAgIGZpZWxkOiBcImVudW1zXCIsXG4gICAgICBtZXNzYWdlOiBgJHtzZWFyY2hGaWVsZEVudW1JZH0gZW51beydtCDtlYTsiJjsnoXri4jri6QuICjsmIg6IHsgXCJpZFwiOiBcIklEXCIgfSlgLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gMy4gZW51bSBwcm9w7J2YIGlk6rCAIGVudW1z7JeQIOygleydmOuQmOyWtCDsnojripTsp4Ag7ZmV7J24IChjcm9zcy1maWVsZCDqsoDspp0pXG4gIGZvciAoY29uc3QgcHJvcCBvZiBwcm9wcyA/PyBbXSkge1xuICAgIGlmIChwcm9wLnR5cGUgPT09IFwiZW51bVwiICYmICFlbnVtcz8uW3Byb3AuaWRdKSB7XG4gICAgICBlcnJvcnMucHVzaCh7XG4gICAgICAgIGZpZWxkOiBgcHJvcHMuJHtwcm9wLm5hbWV9YCxcbiAgICAgICAgbWVzc2FnZTogYGVudW0gaWQgXCIke3Byb3AuaWR9XCLqsIAgZW51bXPsl5Ag7KCV7J2Y65CY7Ja0IOyeiOyngCDslYrsirXri4jri6QuYCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlcnJvcnM7XG59XG5cbmV4cG9ydCBjb25zdCBhaUNsaWVudCA9IG5ldyBBSUNsaWVudCgpO1xuIl0sIm5hbWVzIjpbImFzc2VydCIsImZzIiwicGF0aCIsInoiLCJTb25hbXUiLCJFbnRpdHlNYW5hZ2VyIiwiZ2V0RW51bURlZlZhbHVlcyIsImlzSW50ZXJuYWxTdWJzZXRGaWVsZCIsIm5vcm1hbGl6ZVN1YnNldEZpZWxkIiwiVGVtcGxhdGVPcHRpb25zIiwibm9uTnVsbGFibGUiLCJBSUNsaWVudCIsIm1vZGVsIiwiYWlTZGsiLCJpbml0IiwiYW50aHJvcGljIiwiYWlNb2R1bGUiLCJlcnJvciIsImNvbnNvbGUiLCJ3YXJuIiwiaGFuZGxlRml4dHVyZSIsIm1lc3NhZ2VzIiwiZml4dHVyZVJlY29yZHMiLCJFcnJvciIsInVzZWRFbnRpdHlJZHMiLCJTZXQiLCJtYXAiLCJyIiwiZW50aXR5SWQiLCJlbnRpdHlTdHJ1Y3R1cmVzIiwiZW50aXR5IiwiZ2V0IiwiaWQiLCJ0YWJsZSIsInByb3BzIiwicmVsYXRpb25zIiwiZW51bUxhYmVscyIsInN5c3RlbU1lc3NhZ2UiLCJKU09OIiwic3RyaW5naWZ5Iiwic3RyZWFtVGV4dCIsInRvb2wiLCJzeXN0ZW0iLCJ0b29scyIsInVwZGF0ZUZpeHR1cmVzIiwiZGVzY3JpcHRpb24iLCJpbnB1dFNjaGVtYSIsIm9iamVjdCIsInVwZGF0ZXMiLCJhcnJheSIsImZpeHR1cmVJZCIsInN0cmluZyIsImRlc2NyaWJlIiwicmVjb3JkIiwidW5rbm93biIsImV4ZWN1dGUiLCJ1cGRhdGVkUmVjb3JkcyIsInVwZGF0ZSIsImZpbmQiLCJ1IiwiY29sdW1uTmFtZSIsIm5ld1ZhbHVlIiwiT2JqZWN0IiwiZW50cmllcyIsImNvbHVtbnMiLCJ2YWx1ZSIsInN1Y2Nlc3MiLCJjcmVhdGVGaXh0dXJlcyIsImZpeHR1cmVzIiwibnVtYmVyIiwibmV3UmVjb3JkcyIsImZpeHR1cmUiLCJwcm9wIiwidHlwZSIsIm5hbWUiLCJEYXRlIiwidG9JU09TdHJpbmciLCJyZWxhdGlvblR5cGUiLCJBcnJheSIsImlzQXJyYXkiLCJmaWx0ZXIiLCJmZXRjaGVkUmVjb3JkcyIsImJlbG9uZ3NSZWNvcmRzIiwib3ZlcnJpZGUiLCJuZXdSZWNvcmQiLCJfY29sTmFtZSIsImNvbCIsInJlbGF0ZWRFbnRpdHlJZCIsIndpdGgiLCJyZWxhdGVkSWRzIiwicmVsYXRlZElkIiwicmVsYXRlZEZpeHR1cmVJZCIsInJlbGF0ZWRSZWNvcmQiLCJyZXZlcnNlQ29sIiwiYyIsInJldmVyc2VDb2xOYW1lIiwicmV2ZXJzZUNvbFZhbHVlIiwiY3VycmVudFZhbHVlIiwiaW5jbHVkZXMiLCJoYW5kbGVFbnRpdHkiLCJpbnN0cnVjdGlvbnNQYXRoIiwiam9pbiIsImRpcm5hbWUiLCJpbnN0cnVjdGlvbnMiLCJyZWFkRmlsZVN5bmMiLCJlbnRpdHlJZHMiLCJnZXRBbGxJZHMiLCJleGlzdGluZ0VudGl0aWVzIiwidGl0bGUiLCJwIiwiZGVzYyIsInN0ZXBDb3VudElzIiwic3RvcFdoZW4iLCJjcmVhdGVFbnRpdHkiLCJzaGFwZSIsInZhbGlkYXRpb25FcnJvcnMiLCJ2YWxpZGF0ZUVudGl0eUpzb24iLCJsZW5ndGgiLCJlIiwiZmllbGQiLCJtZXNzYWdlIiwic3luY2VyIiwic3Vic2V0cyIsIkEiLCJlbnVtcyIsInJlbG9hZCIsInVwZGF0ZUVudGl0eSIsInBhcnRpYWwiLCJtb2RlIiwiZW51bSIsIm9wdGlvbmFsIiwidW5kZWZpbmVkIiwicGFyZW50SWQiLCJjb25lIiwibmV3UHJvcCIsImV4aXN0aW5nSW5kZXgiLCJmaW5kSW5kZXgiLCJwdXNoIiwiaW5kZXhlcyIsIm5vcm1hbGl6ZWRTdWJzZXRzIiwibm9ybWFsaXplZFN1YnNldHNJbnRlcm5hbCIsImtleSIsImZpZWxkcyIsImZpZWxkQXJyYXkiLCJmIiwic3Vic2V0c0ludGVybmFsIiwiY29udmVydGVkRW51bXMiLCJmcm9tRW50cmllcyIsImVudW1EZWYiLCJzYXZlIiwiaW5wdXQiLCJlcnJvcnMiLCJoYXNJZFByb3AiLCJzb21lIiwiaGFzQ3JlYXRlZEF0UHJvcCIsIm9yZGVyQnlFbnVtSWQiLCJzZWFyY2hGaWVsZEVudW1JZCIsImFpQ2xpZW50Il0sIm1hcHBpbmdzIjoiQUFBQSxpRkFBaUYsR0FFakYsT0FBT0EsWUFBWSxTQUFTO0FBQzVCLE9BQU9DLFFBQVEsS0FBSztBQUNwQixPQUFPQyxVQUFVLE9BQU87QUFDeEIsU0FBU0MsQ0FBQyxRQUFRLE1BQU07QUFDeEIsU0FBU0MsTUFBTSxRQUFRLGtC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
|
package/dist/ui/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/ui/api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/ui/api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAkD/C,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,eAAe,iBA04C/D"}
|