@jjrawlins/cdk-diff-pr-github-action 1.0.0 → 1.1.1

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.
Files changed (33) hide show
  1. package/.jsii +88 -52
  2. package/API.md +59 -37
  3. package/lib/CdkDiffIamTemplate.js +2 -2
  4. package/lib/CdkDiffIamTemplateStackSet.js +2 -2
  5. package/lib/CdkDiffStackWorkflow.d.ts +2 -2
  6. package/lib/CdkDiffStackWorkflow.js +2 -2
  7. package/lib/CdkDriftDetectionWorkflow.d.ts +5 -2
  8. package/lib/CdkDriftDetectionWorkflow.js +20 -4
  9. package/lib/CdkDriftIamTemplate.js +2 -2
  10. package/node_modules/@aws-sdk/core/dist-cjs/index.js +4 -44
  11. package/node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js +4 -44
  12. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonShapeDeserializer.js +1 -2
  13. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonShapeSerializer.js +1 -2
  14. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/experimental/SinglePassJsonShapeSerializer.js +1 -2
  15. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/QueryShapeSerializer.js +1 -2
  16. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlShapeSerializer.js +1 -2
  17. package/node_modules/@aws-sdk/core/package.json +1 -1
  18. package/node_modules/@smithy/core/dist-cjs/submodules/schema/index.js +7 -1
  19. package/node_modules/@smithy/core/dist-es/submodules/schema/schemas/NormalizedSchema.js +7 -1
  20. package/node_modules/@smithy/core/package.json +1 -1
  21. package/node_modules/@smithy/middleware-endpoint/package.json +2 -2
  22. package/node_modules/@smithy/middleware-retry/package.json +2 -2
  23. package/node_modules/@smithy/smithy-client/dist-cjs/index.js +29 -3
  24. package/node_modules/@smithy/smithy-client/dist-es/create-aggregated-client.js +29 -3
  25. package/node_modules/@smithy/smithy-client/dist-types/create-aggregated-client.d.ts +8 -1
  26. package/node_modules/@smithy/smithy-client/dist-types/ts3.4/create-aggregated-client.d.ts +8 -1
  27. package/node_modules/@smithy/smithy-client/package.json +3 -3
  28. package/node_modules/@smithy/util-defaults-mode-browser/package.json +2 -2
  29. package/node_modules/@smithy/util-defaults-mode-node/package.json +2 -2
  30. package/package.json +1 -1
  31. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/structIterator.js +0 -40
  32. package/node_modules/@aws-sdk/core/dist-types/submodules/protocols/structIterator.d.ts +0 -27
  33. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/structIterator.d.ts +0 -12
@@ -324,7 +324,7 @@ class CdkDiffIamTemplateStackSetGenerator {
324
324
  }
325
325
  exports.CdkDiffIamTemplateStackSetGenerator = CdkDiffIamTemplateStackSetGenerator;
326
326
  _a = JSII_RTTI_SYMBOL_1;
327
- CdkDiffIamTemplateStackSetGenerator[_a] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDiffIamTemplateStackSetGenerator", version: "1.0.0" };
327
+ CdkDiffIamTemplateStackSetGenerator[_a] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDiffIamTemplateStackSetGenerator", version: "1.1.1" };
328
328
  /**
329
329
  * Projen construct that creates a CloudFormation StackSet template for org-wide deployment of
330
330
  * GitHub OIDC provider, OIDC role, and CDK Diff/Drift IAM roles.
@@ -369,5 +369,5 @@ class CdkDiffIamTemplateStackSet {
369
369
  }
370
370
  exports.CdkDiffIamTemplateStackSet = CdkDiffIamTemplateStackSet;
371
371
  _b = JSII_RTTI_SYMBOL_1;
372
- CdkDiffIamTemplateStackSet[_b] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDiffIamTemplateStackSet", version: "1.0.0" };
372
+ CdkDiffIamTemplateStackSet[_b] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDiffIamTemplateStackSet", version: "1.1.1" };
373
373
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2RrRGlmZklhbVRlbXBsYXRlU3RhY2tTZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQ2RrRGlmZklhbVRlbXBsYXRlU3RhY2tTZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBa0M7QUFFbEM7O0dBRUc7QUFDSCxJQUFZLHFCQU9YO0FBUEQsV0FBWSxxQkFBcUI7SUFDL0IseURBQXlEO0lBQ3pELDBEQUFpQyxDQUFBO0lBQ2pDLGlEQUFpRDtJQUNqRCxrREFBeUIsQ0FBQTtJQUN6QixtQ0FBbUM7SUFDbkMsc0NBQWEsQ0FBQTtBQUNmLENBQUMsRUFQVyxxQkFBcUIscUNBQXJCLHFCQUFxQixRQU9oQztBQWtHRDs7O0dBR0c7QUFDSCxNQUFhLG1DQUFtQztJQUM5Qzs7T0FFRztJQUNILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUErQztRQUNyRSxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxJQUFJLGdCQUFnQixDQUFDO1FBQzVELE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixJQUFJLGtCQUFrQixDQUFDO1FBQ3hFLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLElBQUksY0FBYyxDQUFDO1FBQzVELE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLElBQUkscUJBQXFCLENBQUMsSUFBSSxDQUFDO1FBQ3hFLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLHdCQUF3QixJQUFJLEtBQUssQ0FBQztRQUVqRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQ3RDLEtBQUssQ0FBQyxVQUFVLEVBQ2hCLFlBQVksRUFDWixpQkFBaUIsRUFDakIsYUFBYSxFQUNiLGFBQWEsRUFDYixLQUFLLENBQUMsV0FBVyxFQUNqQixnQkFBZ0IsQ0FDakIsQ0FBQztRQUVGLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQ7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Q3hCLDJCQUEyQixFQUFFLEtBQUssQ0FBQywyQkFBMkI7WUFDOUQsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1lBQ3RCLGNBQWMsRUFBRSxLQUFLLENBQUMsY0FBYztZQUNwQyxjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWM7U0FDckMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxnQkFBZ0IsR0FBMkI7WUFDL0MsaUJBQWlCLEVBQUUsc0RBQXNEO1lBQ3pFLGlCQUFpQixFQUFFLDhCQUE4QjtZQUNqRCwyQkFBMkIsRUFDekIseUhBQXlIO1lBQzNILDJCQUEyQixFQUFFLG9EQUFvRDtZQUNqRixpQkFBaUIsRUFBRSxrRUFBa0U7WUFDckYsbUJBQW1CLEVBQUUsZ0RBQWdEO1lBQ3JFLHlCQUF5QixFQUFFLDZDQUE2QztTQUN6RSxDQUFDO1FBRUYsS0FBSyxNQUFNLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUMzRCxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7Z0JBQzlCLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7Z0JBQ3ZDLFdBQVcsRUFBRSxRQUFRLEtBQUssaUJBQWlCO2dCQUMzQyxJQUFJLEVBQUUsT0FBTzthQUNkLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDOztBQXJDSCxnRUFzQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZXh0RmlsZSB9IGZyb20gJ3Byb2plbic7XG5cbi8qKlxuICogV2hpY2ggcm9sZXMgdG8gaW5jbHVkZSBpbiB0aGUgU3RhY2tTZXRcbiAqL1xuZXhwb3J0IGVudW0gU3RhY2tTZXRSb2xlU2VsZWN0aW9uIHtcbiAgLyoqIEluY2x1ZGUgb25seSB0aGUgY2hhbmdlc2V0IHJvbGUgKENka0NoYW5nZXNldFJvbGUpICovXG4gIENIQU5HRVNFVF9PTkxZID0gJ0NIQU5HRVNFVF9PTkxZJyxcbiAgLyoqIEluY2x1ZGUgb25seSB0aGUgZHJpZnQgcm9sZSAoQ2RrRHJpZnRSb2xlKSAqL1xuICBEUklGVF9PTkxZID0gJ0RSSUZUX09OTFknLFxuICAvKiogSW5jbHVkZSBib3RoIHJvbGVzIChkZWZhdWx0KSAqL1xuICBCT1RIID0gJ0JPVEgnLFxufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIFN0YWNrU2V0IGF1dG8tZGVwbG95bWVudFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YWNrU2V0QXV0b0RlcGxveW1lbnQge1xuICAvKiogRW5hYmxlIGF1dG8tZGVwbG95bWVudCB0byBuZXcgYWNjb3VudHMgaW4gdGFyZ2V0IE9VcyAoZGVmYXVsdDogdHJ1ZSkgKi9cbiAgcmVhZG9ubHkgZW5hYmxlZD86IGJvb2xlYW47XG4gIC8qKiBSZXRhaW4gc3RhY2tzIHdoZW4gYWNjb3VudCBsZWF2ZXMgT1UgKGRlZmF1bHQ6IGZhbHNlKSAqL1xuICByZWFkb25seSByZXRhaW5TdGFja3NPbkFjY291bnRSZW1vdmFsPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBHaXRIdWIgcmVwb3NpdG9yeSByZXN0cmljdGlvbnMgZm9yIE9JREMgYXV0aGVudGljYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHaXRIdWJPaWRjQ29uZmlnIHtcbiAgLyoqXG4gICAqIEdpdEh1YiBvcmdhbml6YXRpb24gb3IgdXNlcm5hbWUgKGUuZy4sICdteS1vcmcnIG9yICdteS11c2VybmFtZScpXG4gICAqL1xuICByZWFkb25seSBvd25lcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXBvc2l0b3J5IG5hbWVzIGFsbG93ZWQgdG8gYXNzdW1lIHRoZSByb2xlIChlLmcuLCBbJ3JlcG8xJywgJ3JlcG8yJ10pXG4gICAqIFVzZSBbJyonXSB0byBhbGxvdyBhbGwgcmVwb3MgaW4gdGhlIG9yZ2FuaXphdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb3NpdG9yaWVzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQnJhbmNoIHBhdHRlcm5zIGFsbG93ZWQgKGUuZy4sIFsnbWFpbicsICdyZWxlYXNlLyonXSlcbiAgICogRGVmYXVsdDogWycqJ10gKGFsbCBicmFuY2hlcylcbiAgICovXG4gIHJlYWRvbmx5IGJyYW5jaGVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgc3ViamVjdCBjbGFpbXMgZm9yIGZpbmUtZ3JhaW5lZCBhY2Nlc3NcbiAgICogZS5nLiwgWydwdWxsX3JlcXVlc3QnLCAnZW52aXJvbm1lbnQ6cHJvZHVjdGlvbiddXG4gICAqL1xuICByZWFkb25seSBhZGRpdGlvbmFsQ2xhaW1zPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogUHJvcHMgZm9yIGdlbmVyYXRpbmcgU3RhY2tTZXQgdGVtcGxhdGVzIChubyBQcm9qZW4gZGVwZW5kZW5jeSlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZGtEaWZmSWFtVGVtcGxhdGVTdGFja1NldEdlbmVyYXRvclByb3BzIHtcbiAgLyoqIEdpdEh1YiBPSURDIGNvbmZpZ3VyYXRpb24gZm9yIHJlcG8vYnJhbmNoIHJlc3RyaWN0aW9ucyAqL1xuICByZWFkb25seSBnaXRodWJPaWRjOiBHaXRIdWJPaWRjQ29uZmlnO1xuXG4gIC8qKiBOYW1lIG9mIHRoZSBHaXRIdWIgT0lEQyByb2xlIChkZWZhdWx0OiAnR2l0SHViT0lEQ1JvbGUnKSAqL1xuICByZWFkb25seSBvaWRjUm9sZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqIE5hbWUgb2YgdGhlIENka0NoYW5nZXNldFJvbGUgKGRlZmF1bHQ6ICdDZGtDaGFuZ2VzZXRSb2xlJykgKi9cbiAgcmVhZG9ubHkgY2hhbmdlc2V0Um9sZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqIE5hbWUgb2YgdGhlIENka0RyaWZ0Um9sZSAoZGVmYXVsdDogJ0Nka0RyaWZ0Um9sZScpICovXG4gIHJlYWRvbmx5IGRyaWZ0Um9sZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqIFdoaWNoIHJvbGVzIHRvIGluY2x1ZGUgKGRlZmF1bHQ6IEJPVEgpICovXG4gIHJlYWRvbmx5IHJvbGVTZWxlY3Rpb24/OiBTdGFja1NldFJvbGVTZWxlY3Rpb247XG5cbiAgLyoqIERlc2NyaXB0aW9uIGZvciB0aGUgU3RhY2tTZXQgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNraXAgY3JlYXRpbmcgdGhlIE9JREMgcHJvdmlkZXIgKHVzZSBleGlzdGluZyBvbmUpLlxuICAgKiBTZXQgdG8gdHJ1ZSBpZiBhY2NvdW50cyBhbHJlYWR5IGhhdmUgYSBHaXRIdWIgT0lEQyBwcm92aWRlci5cbiAgICogVGhlIHRlbXBsYXRlIHdpbGwgcmVmZXJlbmNlIHRoZSBleGlzdGluZyBwcm92aWRlciBieSBBUk4uXG4gICAqIERlZmF1bHQ6IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBza2lwT2lkY1Byb3ZpZGVyQ3JlYXRpb24/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFByb3BzIGZvciBnZW5lcmF0aW5nIFN0YWNrU2V0IENMSSBjb21tYW5kcyAobm8gUHJvamVuIGRlcGVuZGVuY3kpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2RrRGlmZklhbVRlbXBsYXRlU3RhY2tTZXRDb21tYW5kc1Byb3BzIHtcbiAgLyoqIE5hbWUgb2YgdGhlIFN0YWNrU2V0IChkZWZhdWx0OiAnY2RrLWRpZmYtd29ya2Zsb3ctaWFtLXN0YWNrc2V0JykgKi9cbiAgcmVhZG9ubHkgc3RhY2tTZXROYW1lPzogc3RyaW5nO1xuXG4gIC8qKiBQYXRoIHRvIHRoZSB0ZW1wbGF0ZSBmaWxlIChkZWZhdWx0OiAnY2RrLWRpZmYtd29ya2Zsb3ctc3RhY2tzZXQtdGVtcGxhdGUueWFtbCcpICovXG4gIHJlYWRvbmx5IHRlbXBsYXRlUGF0aD86IHN0cmluZztcblxuICAvKiogVGFyZ2V0IE9VcyBmb3IgZGVwbG95bWVudCAoZS5nLiwgWydvdS14eHh4LXh4eHh4eHh4JywgJ3IteHh4eCddKSAqL1xuICByZWFkb25seSB0YXJnZXRPcmdhbml6YXRpb25hbFVuaXRJZHM/OiBzdHJpbmdbXTtcblxuICAvKiogVGFyZ2V0IHJlZ2lvbnMgZm9yIGRlcGxveW1lbnQgKGUuZy4sIFsndXMtZWFzdC0xJywgJ2V1LXdlc3QtMSddKSAqL1xuICByZWFkb25seSByZWdpb25zPzogc3RyaW5nW107XG5cbiAgLyoqIEF1dG8tZGVwbG95bWVudCBjb25maWd1cmF0aW9uICovXG4gIHJlYWRvbmx5IGF1dG9EZXBsb3ltZW50PzogU3RhY2tTZXRBdXRvRGVwbG95bWVudDtcblxuICAvKipcbiAgICogV2hldGhlciB0byB1c2UgZGVsZWdhdGVkIGFkbWluIG1vZGUgZm9yIFN0YWNrU2V0IG9wZXJhdGlvbnMuXG4gICAqIElmIHRydWUsIGFkZHMgLS1jYWxsLWFzIERFTEVHQVRFRF9BRE1JTiB0byBjb21tYW5kcy5cbiAgICogRGVmYXVsdDogdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZWdhdGVkQWRtaW4/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFB1cmUgZ2VuZXJhdG9yIGNsYXNzIGZvciBTdGFja1NldCB0ZW1wbGF0ZXMgYW5kIGNvbW1hbmRzLlxuICogTm8gUHJvamVuIGRlcGVuZGVuY3kgLSBjYW4gYmUgdXNlZCBpbiBhbnkgcHJvamVjdC5cbiAqL1xuZXhwb3J0IGNsYXNzIENka0RpZmZJYW1UZW1wbGF0ZVN0YWNrU2V0R2VuZXJhdG9yIHtcbiAgLyoqXG4gICAqIEdlbmVyYXRlIHRoZSBDbG91ZEZvcm1hdGlvbiBTdGFja1NldCB0ZW1wbGF0ZSBhcyBhIFlBTUwgc3RyaW5nLlxuICAgKi9cbiAgc3RhdGljIGdlbmVyYXRlVGVtcGxhdGUocHJvcHM6IENka0RpZmZJYW1UZW1wbGF0ZVN0YWNrU2V0R2VuZXJhdG9yUHJvcHMpOiBzdHJpbmcge1xuICAgIGNvbnN0IG9pZGNSb2xlTmFtZSA9IHByb3BzLm9pZGNSb2xlTmFtZSA/PyAnR2l0SHViT0lEQ1JvbGUnO1xuICAgIGNvbnN0IGNoYW5nZXNldFJvbGVOYW1lID0gcHJvcHMuY2hhbmdlc2V0Um9sZU5hbWUgPz8gJ0Nka0NoYW5nZXNldFJvbGUnO1xuICAgIGNvbnN0IGRyaWZ0Um9sZU5hbWUgPSBwcm9wcy5kcmlmdFJvbGVOYW1lID8/ICdDZGtEcmlmdFJvbGUnO1xuICAgIGNvbnN0IHJvbGVTZWxlY3Rpb24gPSBwcm9wcy5yb2xlU2VsZWN0aW9uID8/IFN0YWNrU2V0Um9sZVNlbGVjdGlvbi5CT1RIO1xuICAgIGNvbnN0IHNraXBPaWRjUHJvdmlkZXIgPSBwcm9wcy5za2lwT2lkY1Byb3ZpZGVyQ3JlYXRpb24gPz8gZmFsc2U7XG5cbiAgICBjb25zdCBsaW5lcyA9IHRoaXMuZ2VuZXJhdGVUZW1wbGF0ZUxpbmVzKFxuICAgICAgcHJvcHMuZ2l0aHViT2lkYyxcbiAgICAgIG9pZGNSb2xlTmFtZSxcbiAgICAgIGNoYW5nZXNldFJvbGVOYW1lLFxuICAgICAgZHJpZnRSb2xlTmFtZSxcbiAgICAgIHJvbGVTZWxlY3Rpb24sXG4gICAgICBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIHNraXBPaWRjUHJvdmlkZXIsXG4gICAgKTtcblxuICAgIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBBV1MgQ0xJIGNvbW1hbmRzIGZvciBTdGFja1NldCBvcGVyYXRpb25zLlxuICAgKiBSZXR1cm5zIGEgbWFwIG9mIGNvbW1hbmQgbmFtZXMgdG8gc2hlbGwgY29tbWFuZHMuXG4gICAqL1xuICBzdGF0aWMgZ2VuZXJhdGVDb21tYW5kcyhwcm9wczogQ2RrRGlmZklhbVRlbXBsYXRlU3RhY2tTZXRDb21tYW5kc1Byb3BzID0ge30pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBjb25zdCBzdGFja1NldE5hbWUgPSBwcm9wcy5zdGFja1NldE5hbWUgPz8gJ2Nkay1kaWZmLXdvcmtmbG93LWlhbS1zdGFja3NldCc7XG4gICAgY29uc3QgdGVtcGxhdGVQYXRoID0gcHJvcHMudGVtcGxhdGVQYXRoID8/ICdjZGstZGlmZi13b3JrZmxvdy1zdGFja3NldC10ZW1wbGF0ZS55YW1sJztcbiAgICBjb25zdCByZWdpb25zID0gcHJvcHMucmVnaW9ucyA/PyBbJ3VzLWVhc3QtMSddO1xuICAgIGNvbnN0IHRhcmdldE9VcyA9IHByb3BzLnRhcmdldE9yZ2FuaXphdGlvbmFsVW5pdElkcyA/PyBbXTtcbiAgICBjb25zdCBhdXRvRGVwbG95RW5hYmxlZCA9IHByb3BzLmF1dG9EZXBsb3ltZW50Py5lbmFibGVkID8/IHRydWU7XG4gICAgY29uc3QgcmV0YWluU3RhY2tzID0gcHJvcHMuYXV0b0RlcGxveW1lbnQ/LnJldGFpblN0YWNrc09uQWNjb3VudFJlbW92YWwgPz8gZmFsc2U7XG4gICAgY29uc3QgZGVsZWdhdGVkQWRtaW4gPSBwcm9wcy5kZWxlZ2F0ZWRBZG1pbiA/PyB0cnVlO1xuICAgIGNvbnN0IGNhbGxBcyA9IGRlbGVnYXRlZEFkbWluID8gJyAtLWNhbGwtYXMgREVMRUdBVEVEX0FETUlOJyA6ICcnO1xuXG4gICAgY29uc3Qgb3VMaXN0ID0gdGFyZ2V0T1VzLmxlbmd0aCA+IDAgPyB0YXJnZXRPVXMuam9pbignLCcpIDogJzxPVV9JRFM+JztcbiAgICBjb25zdCByZWdpb25MaXN0ID0gcmVnaW9ucy5qb2luKCcgJyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgJ3N0YWNrc2V0LWNyZWF0ZSc6IGBhd3MgY2xvdWRmb3JtYXRpb24gY3JlYXRlLXN0YWNrLXNldCAtLXN0YWNrLXNldC1uYW1lICR7c3RhY2tTZXROYW1lfSAtLXRlbXBsYXRlLWJvZHkgZmlsZTovLyR7dGVtcGxhdGVQYXRofSAtLWNhcGFiaWxpdGllcyBDQVBBQklMSVRZX05BTUVEX0lBTSAtLXBlcm1pc3Npb24tbW9kZWwgU0VSVklDRV9NQU5BR0VEIC0tYXV0by1kZXBsb3ltZW50IEVuYWJsZWQ9JHthdXRvRGVwbG95RW5hYmxlZH0sUmV0YWluU3RhY2tzT25BY2NvdW50UmVtb3ZhbD0ke3JldGFpblN0YWNrc30ke2NhbGxBc31gLFxuICAgICAgJ3N0YWNrc2V0LXVwZGF0ZSc6IGBhd3MgY2xvdWRmb3JtYXRpb24gdXBkYXRlLXN0YWNrLXNldCAtLXN0YWNrLXNldC1uYW1lICR7c3RhY2tTZXROYW1lfSAtLXRlbXBsYXRlLWJvZHkgZmlsZTovLyR7dGVtcGxhdGVQYXRofSAtLWNhcGFiaWxpdGllcyBDQVBBQklMSVRZX05BTUVEX0lBTSR7Y2FsbEFzfWAsXG4gICAgICAnc3RhY2tzZXQtZGVwbG95LWluc3RhbmNlcyc6IGBhd3MgY2xvdWRmb3JtYXRpb24gY3JlYXRlLXN0YWNrLWluc3RhbmNlcyAtLXN0YWNrLXNldC1uYW1lICR7c3RhY2tTZXROYW1lfSAtLWRlcGxveW1lbnQtdGFyZ2V0cyBPcmdhbml6YXRpb25hbFVuaXRJZHM9JHtvdUxpc3R9IC0tcmVnaW9ucyAke3JlZ2lvbkxpc3R9JHtjYWxsQXN9YCxcbiAgICAgICdzdGFja3NldC1kZWxldGUtaW5zdGFuY2VzJzogYGF3cyBjbG91ZGZvcm1hdGlvbiBkZWxldGUtc3RhY2staW5zdGFuY2VzIC0tc3RhY2stc2V0LW5hbWUgJHtzdGFja1NldE5hbWV9IC0tZGVwbG95bWVudC10YXJnZXRzIE9yZ2FuaXphdGlvbmFsVW5pdElkcz0ke291TGlzdH0gLS1yZWdpb25zICR7cmVnaW9uTGlzdH0gLS1uby1yZXRhaW4tc3RhY2tzJHtjYWxsQXN9YCxcbiAgICAgICdzdGFja3NldC1kZWxldGUnOiBgYXdzIGNsb3VkZm9ybWF0aW9uIGRlbGV0ZS1zdGFjay1zZXQgLS1zdGFjay1zZXQtbmFtZSAke3N0YWNrU2V0TmFtZX0ke2NhbGxBc31gLFxuICAgICAgJ3N0YWNrc2V0LWRlc2NyaWJlJzogYGF3cyBjbG91ZGZvcm1hdGlvbiBkZXNjcmliZS1zdGFjay1zZXQgLS1zdGFjay1zZXQtbmFtZSAke3N0YWNrU2V0TmFtZX0ke2NhbGxBc31gLFxuICAgICAgJ3N0YWNrc2V0LWxpc3QtaW5zdGFuY2VzJzogYGF3cyBjbG91ZGZvcm1hdGlvbiBsaXN0LXN0YWNrLWluc3RhbmNlcyAtLXN0YWNrLXNldC1uYW1lICR7c3RhY2tTZXROYW1lfSR7Y2FsbEFzfWAsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdlbmVyYXRlVGVtcGxhdGVMaW5lcyhcbiAgICBnaXRodWJPaWRjOiBHaXRIdWJPaWRjQ29uZmlnLFxuICAgIG9pZGNSb2xlTmFtZTogc3RyaW5nLFxuICAgIGNoYW5nZXNldFJvbGVOYW1lOiBzdHJpbmcsXG4gICAgZHJpZnRSb2xlTmFtZTogc3RyaW5nLFxuICAgIHJvbGVTZWxlY3Rpb246IFN0YWNrU2V0Um9sZVNlbGVjdGlvbixcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZyxcbiAgICBza2lwT2lkY1Byb3ZpZGVyOiBib29sZWFuID0gZmFsc2UsXG4gICk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBsaW5lczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBkZXNjID0gZGVzY3JpcHRpb24gPz8gJ0dpdEh1YiBPSURDIGFuZCBJQU0gcm9sZXMgZm9yIENESyBEaWZmL0RyaWZ0IHdvcmtmbG93cyAoU3RhY2tTZXQgZGVwbG95bWVudCknO1xuXG4gICAgY29uc3QgaW5jbHVkZUNoYW5nZXNldCA9XG4gICAgICByb2xlU2VsZWN0aW9uID09PSBTdGFja1NldFJvbGVTZWxlY3Rpb24uQk9USCB8fCByb2xlU2VsZWN0aW9uID09PSBTdGFja1NldFJvbGVTZWxlY3Rpb24uQ0hBTkdFU0VUX09OTFk7XG4gICAgY29uc3QgaW5jbHVkZURyaWZ0ID1cbiAgICAgIHJvbGVTZWxlY3Rpb24gPT09IFN0YWNrU2V0Um9sZVNlbGVjdGlvbi5CT1RIIHx8IHJvbGVTZWxlY3Rpb24gPT09IFN0YWNrU2V0Um9sZVNlbGVjdGlvbi5EUklGVF9PTkxZO1xuXG4gICAgLy8gSGVhZGVyXG4gICAgbGluZXMucHVzaChcIkFXU1RlbXBsYXRlRm9ybWF0VmVyc2lvbjogJzIwMTAtMDktMDknXCIpO1xuICAgIGxpbmVzLnB1c2goYERlc2NyaXB0aW9uOiAnJHtkZXNjfSdgKTtcbiAgICBsaW5lcy5wdXNoKCcnKTtcblxuICAgIC8vIFJlc291cmNlc1xuICAgIGxpbmVzLnB1c2goJ1Jlc291cmNlczonKTtcblxuICAgIC8vIE9JREMgUHJvdmlkZXIgKG9ubHkgaWYgbm90IHNraXBwaW5nKVxuICAgIGlmICghc2tpcE9pZGNQcm92aWRlcikge1xuICAgICAgbGluZXMucHVzaCguLi50aGlzLmdlbmVyYXRlT2lkY1Byb3ZpZGVyTGluZXMoKSk7XG4gICAgfVxuXG4gICAgLy8gT0lEQyBSb2xlXG4gICAgbGluZXMucHVzaCguLi50aGlzLmdlbmVyYXRlT2lkY1JvbGVMaW5lcyhvaWRjUm9sZU5hbWUsIGdpdGh1Yk9pZGMsIHNraXBPaWRjUHJvdmlkZXIpKTtcblxuICAgIC8vIENoYW5nZXNldC9EcmlmdCByb2xlc1xuICAgIGlmIChpbmNsdWRlQ2hhbmdlc2V0KSB7XG4gICAgICBsaW5lcy5wdXNoKC4uLnRoaXMuZ2VuZXJhdGVDaGFuZ2VzZXRSb2xlTGluZXMoY2hhbmdlc2V0Um9sZU5hbWUpKTtcbiAgICB9XG5cbiAgICBpZiAoaW5jbHVkZURyaWZ0KSB7XG4gICAgICBsaW5lcy5wdXNoKC4uLnRoaXMuZ2VuZXJhdGVEcmlmdFJvbGVMaW5lcyhkcmlmdFJvbGVOYW1lKSk7XG4gICAgfVxuXG4gICAgLy8gT3V0cHV0c1xuICAgIGxpbmVzLnB1c2goJycpO1xuICAgIGxpbmVzLnB1c2goJ091dHB1dHM6Jyk7XG4gICAgaWYgKCFza2lwT2lkY1Byb3ZpZGVyKSB7XG4gICAgICBsaW5lcy5wdXNoKC4uLnRoaXMuZ2VuZXJhdGVPaWRjT3V0cHV0TGluZXMoKSk7XG4gICAgfVxuXG4gICAgLy8gQWx3YXlzIG91dHB1dCB0aGUgT0lEQyByb2xlIEFSTlxuICAgIGxpbmVzLnB1c2goLi4udGhpcy5nZW5lcmF0ZU9pZGNSb2xlT3V0cHV0TGluZXMoKSk7XG5cbiAgICBpZiAoaW5jbHVkZUNoYW5nZXNldCkge1xuICAgICAgbGluZXMucHVzaCguLi50aGlzLmdlbmVyYXRlQ2hhbmdlc2V0T3V0cHV0TGluZXMoKSk7XG4gICAgfVxuXG4gICAgaWYgKGluY2x1ZGVEcmlmdCkge1xuICAgICAgbGluZXMucHVzaCguLi50aGlzLmdlbmVyYXRlRHJpZnRPdXRwdXRMaW5lcygpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGluZXM7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZW5lcmF0ZU9pZGNQcm92aWRlckxpbmVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgJyAgIyBHaXRIdWIgT0lEQyBQcm92aWRlcicsXG4gICAgICAnICBHaXRIdWJPSURDUHJvdmlkZXI6JyxcbiAgICAgICcgICAgVHlwZTogQVdTOjpJQU06Ok9JRENQcm92aWRlcicsXG4gICAgICAnICAgIFByb3BlcnRpZXM6JyxcbiAgICAgICcgICAgICBVcmw6IGh0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20nLFxuICAgICAgJyAgICAgIENsaWVudElkTGlzdDonLFxuICAgICAgJyAgICAgICAgLSBzdHMuYW1hem9uYXdzLmNvbScsXG4gICAgICAnICAgICAgVGh1bWJwcmludExpc3Q6JyxcbiAgICAgICcgICAgICAgIC0gNjkzOGZkNGQ5OGJhYjAzZmFhZGI5N2IzNDM5NjgzMWUzNzgwYWVhMScsXG4gICAgICAnICAgICAgICAtIDFjNThhM2E4NTE4ZTg3NTliZjA3NWI3NmI3NTBkNGYyZGYyNjRmY2QnLFxuICAgICAgJycsXG4gICAgXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdlbmVyYXRlT2lkY1JvbGVMaW5lcyhcbiAgICByb2xlTmFtZTogc3RyaW5nLFxuICAgIGdpdGh1Yk9pZGM6IEdpdEh1Yk9pZGNDb25maWcsXG4gICAgc2tpcE9pZGNQcm92aWRlcjogYm9vbGVhbiA9IGZhbHNlLFxuICApOiBzdHJpbmdbXSB7XG4gICAgY29uc3Qgc3ViamVjdENsYWltcyA9IHRoaXMuYnVpbGRTdWJqZWN0Q2xhaW1zKGdpdGh1Yk9pZGMpO1xuXG4gICAgY29uc3QgbGluZXMgPSBbXG4gICAgICAnICAjIEdpdEh1YiBPSURDIFJvbGUgLSBhdXRoZW50aWNhdGVzIEdpdEh1YiBBY3Rpb25zIHdvcmtmbG93cycsXG4gICAgICAnICBHaXRIdWJPSURDUm9sZTonLFxuICAgICAgJyAgICBUeXBlOiBBV1M6OklBTTo6Um9sZScsXG4gICAgXTtcblxuICAgIC8vIE9ubHkgYWRkIERlcGVuZHNPbiBpZiB3ZSdyZSBjcmVhdGluZyB0aGUgcHJvdmlkZXJcbiAgICBpZiAoIXNraXBPaWRjUHJvdmlkZXIpIHtcbiAgICAgIGxpbmVzLnB1c2goJyAgICBEZXBlbmRzT246IEdpdEh1Yk9JRENQcm92aWRlcicpO1xuICAgIH1cblxuICAgIGxpbmVzLnB1c2goXG4gICAgICAnICAgIFByb3BlcnRpZXM6JyxcbiAgICAgIFwiICAgICAgUm9sZU5hbWU6ICdcIiArIHJvbGVOYW1lICsgXCInXCIsXG4gICAgICAnICAgICAgQXNzdW1lUm9sZVBvbGljeURvY3VtZW50OicsXG4gICAgICBcIiAgICAgICAgVmVyc2lvbjogJzIwMTItMTAtMTcnXCIsXG4gICAgICAnICAgICAgICBTdGF0ZW1lbnQ6JyxcbiAgICAgICcgICAgICAgICAgLSBFZmZlY3Q6IEFsbG93JyxcbiAgICAgICcgICAgICAgICAgICBQcmluY2lwYWw6JyxcbiAgICAgIFwiICAgICAgICAgICAgICBGZWRlcmF0ZWQ6ICFTdWIgJ2Fybjphd3M6aWFtOjoke0FXUzo6QWNjb3VudElkfTpvaWRjLXByb3ZpZGVyL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tJ1wiLFxuICAgICAgJyAgICAgICAgICAgIEFjdGlvbjogc3RzOkFzc3VtZVJvbGVXaXRoV2ViSWRlbnRpdHknLFxuICAgICAgJyAgICAgICAgICAgIENvbmRpdGlvbjonLFxuICAgICAgJyAgICAgICAgICAgICAgU3RyaW5nRXF1YWxzOicsXG4gICAgICBcIiAgICAgICAgICAgICAgICAndG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb206YXVkJzogJ3N0cy5hbWF6b25hd3MuY29tJ1wiLFxuICAgICAgJyAgICAgICAgICAgICAgU3RyaW5nTGlrZTonLFxuICAgICAgXCIgICAgICAgICAgICAgICAgJ3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tOnN1Yic6XCIsXG4gICAgKTtcblxuICAgIC8vIEFkZCBzdWJqZWN0IGNsYWltc1xuICAgIGZvciAoY29uc3QgY2xhaW0gb2Ygc3ViamVjdENsYWltcykge1xuICAgICAgbGluZXMucHVzaChgICAgICAgICAgICAgICAgICAgLSAnJHtjbGFpbX0nYCk7XG4gICAgfVxuXG4gICAgbGluZXMucHVzaCgnJyk7XG4gICAgcmV0dXJuIGxpbmVzO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYnVpbGRTdWJqZWN0Q2xhaW1zKGdpdGh1Yk9pZGM6IEdpdEh1Yk9pZGNDb25maWcpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgY2xhaW1zOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGJyYW5jaGVzID0gZ2l0aHViT2lkYy5icmFuY2hlcyA/PyBbJyonXTtcblxuICAgIGZvciAoY29uc3QgcmVwbyBvZiBnaXRodWJPaWRjLnJlcG9zaXRvcmllcykge1xuICAgICAgaWYgKHJlcG8gPT09ICcqJykge1xuICAgICAgICAvLyBXaWxkY2FyZCByZXBvIC0gYWxsb3cgYWxsIHJlcG9zIHdpdGggYnJhbmNoIHJlc3RyaWN0aW9uc1xuICAgICAgICBmb3IgKGNvbnN0IGJyYW5jaCBvZiBicmFuY2hlcykge1xuICAgICAgICAgIGlmIChicmFuY2ggPT09ICcqJykge1xuICAgICAgICAgICAgY2xhaW1zLnB1c2goYHJlcG86JHtnaXRodWJPaWRjLm93bmVyfS8qYCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNsYWltcy5wdXNoKGByZXBvOiR7Z2l0aHViT2lkYy5vd25lcn0vKjpyZWY6cmVmcy9oZWFkcy8ke2JyYW5jaH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNwZWNpZmljIHJlcG9cbiAgICAgICAgZm9yIChjb25zdCBicmFuY2ggb2YgYnJhbmNoZXMpIHtcbiAgICAgICAgICBpZiAoYnJhbmNoID09PSAnKicpIHtcbiAgICAgICAgICAgIGNsYWltcy5wdXNoKGByZXBvOiR7Z2l0aHViT2lkYy5vd25lcn0vJHtyZXBvfToqYCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNsYWltcy5wdXNoKGByZXBvOiR7Z2l0aHViT2lkYy5vd25lcn0vJHtyZXBvfTpyZWY6cmVmcy9oZWFkcy8ke2JyYW5jaH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZGQgYW55IGFkZGl0aW9uYWwgY2xhaW1zXG4gICAgaWYgKGdpdGh1Yk9pZGMuYWRkaXRpb25hbENsYWltcykge1xuICAgICAgZm9yIChjb25zdCBjbGFpbSBvZiBnaXRodWJPaWRjLmFkZGl0aW9uYWxDbGFpbXMpIHtcbiAgICAgICAgZm9yIChjb25zdCByZXBvIG9mIGdpdGh1Yk9pZGMucmVwb3NpdG9yaWVzKSB7XG4gICAgICAgICAgaWYgKHJlcG8gPT09ICcqJykge1xuICAgICAgICAgICAgY2xhaW1zLnB1c2goYHJlcG86JHtnaXRodWJPaWRjLm93bmVyfS8qOiR7Y2xhaW19YCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNsYWltcy5wdXNoKGByZXBvOiR7Z2l0aHViT2lkYy5vd25lcn0vJHtyZXBvfToke2NsYWltfWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjbGFpbXM7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZW5lcmF0ZUNoYW5nZXNldFJvbGVMaW5lcyhyb2xlTmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXG4gICAgICAnICAjIENsb3VkRm9ybWF0aW9uIENoYW5nZVNldCBSb2xlIC0gbWluaW1hbCBwZXJtaXNzaW9ucyBmb3IgY2hhbmdlc2V0IG9wZXJhdGlvbnMnLFxuICAgICAgJyAgQ2RrQ2hhbmdlc2V0Um9sZTonLFxuICAgICAgJyAgICBUeXBlOiBBV1M6OklBTTo6Um9sZScsXG4gICAgICAnICAgIERlcGVuZHNPbjogR2l0SHViT0lEQ1JvbGUnLFxuICAgICAgJyAgICBQcm9wZXJ0aWVzOicsXG4gICAgICBcIiAgICAgIFJvbGVOYW1lOiAnXCIgKyByb2xlTmFtZSArIFwiJ1wiLFxuICAgICAgJyAgICAgIEFzc3VtZVJvbGVQb2xpY3lEb2N1bWVudDonLFxuICAgICAgXCIgICAgICAgIFZlcnNpb246ICcyMDEyLTEwLTE3J1wiLFxuICAgICAgJyAgICAgICAgU3RhdGVtZW50OicsXG4gICAgICAnICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycsXG4gICAgICAnICAgICAgICAgICAgUHJpbmNpcGFsOicsXG4gICAgICAnICAgICAgICAgICAgICBBV1M6ICFHZXRBdHQgR2l0SHViT0lEQ1JvbGUuQXJuJyxcbiAgICAgICcgICAgICAgICAgICBBY3Rpb246IHN0czpBc3N1bWVSb2xlJyxcbiAgICAgICcgICAgICBQb2xpY2llczonLFxuICAgICAgJyAgICAgICAgLSBQb2xpY3lOYW1lOiBDbG91ZEZvcm1hdGlvbkNoYW5nZVNldEFjY2VzcycsXG4gICAgICAnICAgICAgICAgIFBvbGljeURvY3VtZW50OicsXG4gICAgICBcIiAgICAgICAgICAgIFZlcnNpb246ICcyMDEyLTEwLTE3J1wiLFxuICAgICAgJyAgICAgICAgICAgIFN0YXRlbWVudDonLFxuICAgICAgJyAgICAgICAgICAgICAgIyBDbG91ZEZvcm1hdGlvbiBjaGFuZ2VzZXQgb3BlcmF0aW9ucycsXG4gICAgICAnICAgICAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnLFxuICAgICAgJyAgICAgICAgICAgICAgICBBY3Rpb246JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkNyZWF0ZUNoYW5nZVNldCcsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZXNjcmliZUNoYW5nZVNldCcsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZWxldGVDaGFuZ2VTZXQnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246TGlzdENoYW5nZVNldHMnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246RGVzY3JpYmVTdGFja3MnLFxuICAgICAgXCIgICAgICAgICAgICAgICAgUmVzb3VyY2U6ICcqJ1wiLFxuICAgICAgJyAgICAgICAgICAgICAgIyBDREsgYm9vdHN0cmFwIGJ1Y2tldCBhY2Nlc3MgKGZvciBjaGFuZ2VzZXQgY3JlYXRpb24pJyxcbiAgICAgICcgICAgICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycsXG4gICAgICAnICAgICAgICAgICAgICAgIEFjdGlvbjonLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gczM6R2V0T2JqZWN0JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIHMzOlB1dE9iamVjdCcsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBzMzpEZWxldGVPYmplY3QnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gczM6TGlzdEJ1Y2tldCcsXG4gICAgICAnICAgICAgICAgICAgICAgIFJlc291cmNlOicsXG4gICAgICBcIiAgICAgICAgICAgICAgICAgIC0gIVN1YiAnYXJuOmF3czpzMzo6OmNkay0ke0FXUzo6QWNjb3VudElkfS0ke0FXUzo6UmVnaW9ufS0qJ1wiLFxuICAgICAgXCIgICAgICAgICAgICAgICAgICAtICFTdWIgJ2Fybjphd3M6czM6OjpjZGstJHtBV1M6OkFjY291bnRJZH0tJHtBV1M6OlJlZ2lvbn0tKi8qJ1wiLFxuICAgICAgJyAgICAgICAgICAgICAgIyBDREsgYm9vdHN0cmFwIHBhcmFtZXRlciBhY2Nlc3MnLFxuICAgICAgJyAgICAgICAgICAgICAgLSBFZmZlY3Q6IEFsbG93JyxcbiAgICAgICcgICAgICAgICAgICAgICAgQWN0aW9uOicsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBzc206R2V0UGFyYW1ldGVyJyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIHNzbTpHZXRQYXJhbWV0ZXJzJyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIHNzbTpHZXRQYXJhbWV0ZXJzQnlQYXRoJyxcbiAgICAgIFwiICAgICAgICAgICAgICAgIFJlc291cmNlOiAhU3ViICdhcm46YXdzOnNzbToke0FXUzo6UmVnaW9ufToke0FXUzo6QWNjb3VudElkfTpwYXJhbWV0ZXIvY2RrLWJvb3RzdHJhcC8qJ1wiLFxuICAgICAgJyAgICAgICAgICAgICAgIyBJQU0gUGFzc1JvbGUgZm9yIENESyBvcGVyYXRpb25zJyxcbiAgICAgICcgICAgICAgICAgICAgIC0gRWZmZWN0OiBBbGxvdycsXG4gICAgICAnICAgICAgICAgICAgICAgIEFjdGlvbjonLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gaWFtOlBhc3NSb2xlJyxcbiAgICAgIFwiICAgICAgICAgICAgICAgIFJlc291cmNlOiAnKidcIixcbiAgICAgICcgICAgICAgICAgICAgICAgQ29uZGl0aW9uOicsXG4gICAgICAnICAgICAgICAgICAgICAgICAgU3RyaW5nRXF1YWxzOicsXG4gICAgICBcIiAgICAgICAgICAgICAgICAgICAgJ2lhbTpQYXNzZWRUb1NlcnZpY2UnOiAnY2xvdWRmb3JtYXRpb24uYW1hem9uYXdzLmNvbSdcIixcbiAgICAgICcnLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZW5lcmF0ZURyaWZ0Um9sZUxpbmVzKHJvbGVOYW1lOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICcgICMgQ2xvdWRGb3JtYXRpb24gRHJpZnQgRGV0ZWN0aW9uIFJvbGUgLSBtaW5pbWFsIHBlcm1pc3Npb25zIGZvciBkcmlmdCBkZXRlY3Rpb24gb3BlcmF0aW9ucycsXG4gICAgICAnICBDZGtEcmlmdFJvbGU6JyxcbiAgICAgICcgICAgVHlwZTogQVdTOjpJQU06OlJvbGUnLFxuICAgICAgJyAgICBEZXBlbmRzT246IEdpdEh1Yk9JRENSb2xlJyxcbiAgICAgICcgICAgUHJvcGVydGllczonLFxuICAgICAgXCIgICAgICBSb2xlTmFtZTogJ1wiICsgcm9sZU5hbWUgKyBcIidcIixcbiAgICAgICcgICAgICBBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnQ6JyxcbiAgICAgIFwiICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNydcIixcbiAgICAgICcgICAgICAgIFN0YXRlbWVudDonLFxuICAgICAgJyAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnLFxuICAgICAgJyAgICAgICAgICAgIFByaW5jaXBhbDonLFxuICAgICAgJyAgICAgICAgICAgICAgQVdTOiAhR2V0QXR0IEdpdEh1Yk9JRENSb2xlLkFybicsXG4gICAgICAnICAgICAgICAgICAgQWN0aW9uOiBzdHM6QXNzdW1lUm9sZScsXG4gICAgICAnICAgICAgUG9saWNpZXM6JyxcbiAgICAgICcgICAgICAgIC0gUG9saWN5TmFtZTogQ2xvdWRGb3JtYXRpb25EcmlmdEFjY2VzcycsXG4gICAgICAnICAgICAgICAgIFBvbGljeURvY3VtZW50OicsXG4gICAgICBcIiAgICAgICAgICAgIFZlcnNpb246ICcyMDEyLTEwLTE3J1wiLFxuICAgICAgJyAgICAgICAgICAgIFN0YXRlbWVudDonLFxuICAgICAgJyAgICAgICAgICAgICAgIyBDbG91ZEZvcm1hdGlvbiBkcmlmdCBkZXRlY3Rpb24gb3BlcmF0aW9ucycsXG4gICAgICAnICAgICAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnLFxuICAgICAgJyAgICAgICAgICAgICAgICBBY3Rpb246JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkRldGVjdFN0YWNrRHJpZnQnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246RGVzY3JpYmVTdGFja0RyaWZ0RGV0ZWN0aW9uU3RhdHVzJyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkRlc2NyaWJlU3RhY2tSZXNvdXJjZURyaWZ0cycsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZXNjcmliZVN0YWNrcycsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpMaXN0U3RhY2tSZXNvdXJjZXMnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246RGV0ZWN0U3RhY2tSZXNvdXJjZURyaWZ0JyxcbiAgICAgIFwiICAgICAgICAgICAgICAgIFJlc291cmNlOiAnKidcIixcbiAgICAgICcnLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZW5lcmF0ZU9pZGNPdXRwdXRMaW5lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICcgIEdpdEh1Yk9JRENQcm92aWRlckFybjonLFxuICAgICAgXCIgICAgRGVzY3JpcHRpb246ICdBUk4gb2YgdGhlIEdpdEh1YiBPSURDIHByb3ZpZGVyJ1wiLFxuICAgICAgJyAgICBWYWx1ZTogIUdldEF0dCBHaXRIdWJPSURDUHJvdmlkZXIuQXJuJyxcbiAgICAgICcgICAgRXhwb3J0OicsXG4gICAgICBcIiAgICAgIE5hbWU6ICFTdWIgJyR7QVdTOjpTdGFja05hbWV9LUdpdEh1Yk9JRENQcm92aWRlckFybidcIixcbiAgICAgICcnLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZW5lcmF0ZU9pZGNSb2xlT3V0cHV0TGluZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXG4gICAgICAnICBHaXRIdWJPSURDUm9sZUFybjonLFxuICAgICAgXCIgICAgRGVzY3JpcHRpb246ICdBUk4gb2YgdGhlIEdpdEh1YiBPSURDIHJvbGUnXCIsXG4gICAgICAnICAgIFZhbHVlOiAhR2V0QXR0IEdpdEh1Yk9JRENSb2xlLkFybicsXG4gICAgICAnICAgIEV4cG9ydDonLFxuICAgICAgXCIgICAgICBOYW1lOiAhU3ViICcke0FXUzo6U3RhY2tOYW1lfS1HaXRIdWJPSURDUm9sZUFybidcIixcbiAgICAgICcnLFxuICAgICAgJyAgR2l0SHViT0lEQ1JvbGVOYW1lOicsXG4gICAgICBcIiAgICBEZXNjcmlwdGlvbjogJ05hbWUgb2YgdGhlIEdpdEh1YiBPSURDIHJvbGUnXCIsXG4gICAgICAnICAgIFZhbHVlOiAhUmVmIEdpdEh1Yk9JRENSb2xlJyxcbiAgICAgICcgICAgRXhwb3J0OicsXG4gICAgICBcIiAgICAgIE5hbWU6ICFTdWIgJyR7QVdTOjpTdGFja05hbWV9LUdpdEh1Yk9JRENSb2xlTmFtZSdcIixcbiAgICAgICcnLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZW5lcmF0ZUNoYW5nZXNldE91dHB1dExpbmVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgJyAgQ2RrQ2hhbmdlc2V0Um9sZUFybjonLFxuICAgICAgXCIgICAgRGVzY3JpcHRpb246ICdBUk4gb2YgdGhlIENESyBjaGFuZ2VzZXQgcm9sZSdcIixcbiAgICAgICcgICAgVmFsdWU6ICFHZXRBdHQgQ2RrQ2hhbmdlc2V0Um9sZS5Bcm4nLFxuICAgICAgJyAgICBFeHBvcnQ6JyxcbiAgICAgIFwiICAgICAgTmFtZTogIVN1YiAnJHtBV1M6OlN0YWNrTmFtZX0tQ2RrQ2hhbmdlc2V0Um9sZUFybidcIixcbiAgICAgICcnLFxuICAgICAgJyAgQ2RrQ2hhbmdlc2V0Um9sZU5hbWU6JyxcbiAgICAgIFwiICAgIERlc2NyaXB0aW9uOiAnTmFtZSBvZiB0aGUgQ0RLIGNoYW5nZXNldCByb2xlJ1wiLFxuICAgICAgJyAgICBWYWx1ZTogIVJlZiBDZGtDaGFuZ2VzZXRSb2xlJyxcbiAgICAgICcgICAgRXhwb3J0OicsXG4gICAgICBcIiAgICAgIE5hbWU6ICFTdWIgJyR7QVdTOjpTdGFja05hbWV9LUNka0NoYW5nZXNldFJvbGVOYW1lJ1wiLFxuICAgICAgJycsXG4gICAgXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdlbmVyYXRlRHJpZnRPdXRwdXRMaW5lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICcgIENka0RyaWZ0Um9sZUFybjonLFxuICAgICAgXCIgICAgRGVzY3JpcHRpb246ICdBUk4gb2YgdGhlIENESyBkcmlmdCBkZXRlY3Rpb24gcm9sZSdcIixcbiAgICAgICcgICAgVmFsdWU6ICFHZXRBdHQgQ2RrRHJpZnRSb2xlLkFybicsXG4gICAgICAnICAgIEV4cG9ydDonLFxuICAgICAgXCIgICAgICBOYW1lOiAhU3ViICcke0FXUzo6U3RhY2tOYW1lfS1DZGtEcmlmdFJvbGVBcm4nXCIsXG4gICAgICAnJyxcbiAgICAgICcgIENka0RyaWZ0Um9sZU5hbWU6JyxcbiAgICAgIFwiICAgIERlc2NyaXB0aW9uOiAnTmFtZSBvZiB0aGUgQ0RLIGRyaWZ0IGRldGVjdGlvbiByb2xlJ1wiLFxuICAgICAgJyAgICBWYWx1ZTogIVJlZiBDZGtEcmlmdFJvbGUnLFxuICAgICAgJyAgICBFeHBvcnQ6JyxcbiAgICAgIFwiICAgICAgTmFtZTogIVN1YiAnJHtBV1M6OlN0YWNrTmFtZX0tQ2RrRHJpZnRSb2xlTmFtZSdcIixcbiAgICBdO1xuICB9XG59XG5cbi8qKlxuICogUHJvcHMgZm9yIHRoZSBQcm9qZW4taW50ZWdyYXRlZCBTdGFja1NldCBjb25zdHJ1Y3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZGtEaWZmSWFtVGVtcGxhdGVTdGFja1NldFByb3BzIGV4dGVuZHMgQ2RrRGlmZklhbVRlbXBsYXRlU3RhY2tTZXRHZW5lcmF0b3JQcm9wcyB7XG4gIC8qKiBQcm9qZW4gcHJvamVjdCBpbnN0YW5jZSAqL1xuICByZWFkb25seSBwcm9qZWN0OiBhbnk7XG5cbiAgLyoqIE5hbWUgb2YgdGhlIFN0YWNrU2V0IChkZWZhdWx0OiAnY2RrLWRpZmYtd29ya2Zsb3ctaWFtLXN0YWNrc2V0JykgKi9cbiAgcmVhZG9ubHkgc3RhY2tTZXROYW1lPzogc3RyaW5nO1xuXG4gIC8qKiBPdXRwdXQgcGF0aCBmb3IgdGhlIHRlbXBsYXRlIGZpbGUgKGRlZmF1bHQ6ICdjZGstZGlmZi13b3JrZmxvdy1zdGFja3NldC10ZW1wbGF0ZS55YW1sJykgKi9cbiAgcmVhZG9ubHkgb3V0cHV0UGF0aD86IHN0cmluZztcblxuICAvKiogVGFyZ2V0IE9VcyBmb3IgZGVwbG95bWVudCAoZS5nLiwgWydvdS14eHh4LXh4eHh4eHh4JywgJ3IteHh4eCddKSAqL1xuICByZWFkb25seSB0YXJnZXRPcmdhbml6YXRpb25hbFVuaXRJZHM/OiBzdHJpbmdbXTtcblxuICAvKiogVGFyZ2V0IHJlZ2lvbnMgZm9yIGRlcGxveW1lbnQgKGUuZy4sIFsndXMtZWFzdC0xJywgJ2V1LXdlc3QtMSddKSAqL1xuICByZWFkb25seSByZWdpb25zPzogc3RyaW5nW107XG5cbiAgLyoqIEF1dG8tZGVwbG95bWVudCBjb25maWd1cmF0aW9uICovXG4gIHJlYWRvbmx5IGF1dG9EZXBsb3ltZW50PzogU3RhY2tTZXRBdXRvRGVwbG95bWVudDtcblxuICAvKipcbiAgICogV2hldGhlciB0byB1c2UgZGVsZWdhdGVkIGFkbWluIG1vZGUgZm9yIFN0YWNrU2V0IG9wZXJhdGlvbnMuXG4gICAqIElmIHRydWUsIGFkZHMgLS1jYWxsLWFzIERFTEVHQVRFRF9BRE1JTiB0byBjb21tYW5kcy5cbiAgICogSWYgZmFsc2UsIGFzc3VtZXMgcnVubmluZyBmcm9tIHRoZSBtYW5hZ2VtZW50IGFjY291bnQuXG4gICAqIERlZmF1bHQ6IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGRlbGVnYXRlZEFkbWluPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQcm9qZW4gY29uc3RydWN0IHRoYXQgY3JlYXRlcyBhIENsb3VkRm9ybWF0aW9uIFN0YWNrU2V0IHRlbXBsYXRlIGZvciBvcmctd2lkZSBkZXBsb3ltZW50IG9mXG4gKiBHaXRIdWIgT0lEQyBwcm92aWRlciwgT0lEQyByb2xlLCBhbmQgQ0RLIERpZmYvRHJpZnQgSUFNIHJvbGVzLlxuICpcbiAqIFRoaXMgcHJvdmlkZXMgYSBzZWxmLWNvbnRhaW5lZCBwZXItYWNjb3VudCBkZXBsb3ltZW50IHdpdGggbm8gcm9sZSBjaGFpbmluZyByZXF1aXJlZC5cbiAqXG4gKiBGb3Igbm9uLVByb2plbiBwcm9qZWN0cywgdXNlIGBDZGtEaWZmSWFtVGVtcGxhdGVTdGFja1NldEdlbmVyYXRvcmAgZGlyZWN0bHkuXG4gKi9cbmV4cG9ydCBjbGFzcyBDZGtEaWZmSWFtVGVtcGxhdGVTdGFja1NldCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzOiBDZGtEaWZmSWFtVGVtcGxhdGVTdGFja1NldFByb3BzKSB7XG4gICAgY29uc3Qgb3V0cHV0UGF0aCA9IHByb3BzLm91dHB1dFBhdGggPz8gJ2Nkay1kaWZmLXdvcmtmbG93LXN0YWNrc2V0LXRlbXBsYXRlLnlhbWwnO1xuICAgIGNvbnN0IHN0YWNrU2V0TmFtZSA9IHByb3BzLnN0YWNrU2V0TmFtZSA/PyAnY2RrLWRpZmYtd29ya2Zsb3ctaWFtLXN0YWNrc2V0JztcblxuICAgIC8vIEdlbmVyYXRlIHRlbXBsYXRlIHVzaW5nIHRoZSBnZW5lcmF0b3JcbiAgICBjb25zdCB0ZW1wbGF0ZSA9IENka0RpZmZJYW1UZW1wbGF0ZVN0YWNrU2V0R2VuZXJhdG9yLmdlbmVyYXRlVGVtcGxhdGUocHJvcHMpO1xuICAgIG5ldyBUZXh0RmlsZShwcm9wcy5wcm9qZWN0LCBvdXRwdXRQYXRoLCB7IGxpbmVzOiB0ZW1wbGF0ZS5zcGxpdCgnXFxuJykgfSk7XG5cbiAgICAvLyBHZW5lcmF0ZSBjb21tYW5kcyBhbmQgYWRkIGFzIFByb2plbiB0YXNrc1xuICAgIGNvbnN0IGNvbW1hbmRzID0gQ2RrRGlmZklhbVRlbXBsYXRlU3RhY2tTZXRHZW5lcmF0b3IuZ2VuZXJhdGVDb21tYW5kcyh7XG4gICAgICBzdGFja1NldE5hbWUsXG4gICAgICB0ZW1wbGF0ZVBhdGg6IG91dHB1dFBhdGgsXG4gICAgICB0YXJnZXRPcmdhbml6YXRpb25hbFVuaXRJZHM6IHByb3BzLnRhcmdldE9yZ2FuaXphdGlvbmFsVW5pdElkcyxcbiAgICAgIHJlZ2lvbnM6IHByb3BzLnJlZ2lvbnMsXG4gICAgICBhdXRvRGVwbG95bWVudDogcHJvcHMuYXV0b0RlcGxveW1lbnQsXG4gICAgICBkZWxlZ2F0ZWRBZG1pbjogcHJvcHMuZGVsZWdhdGVkQWRtaW4sXG4gICAgfSk7XG5cbiAgICBjb25zdCB0YXNrRGVzY3JpcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgJ3N0YWNrc2V0LWNyZWF0ZSc6ICdDcmVhdGUgdGhlIFN0YWNrU2V0IGZvciBvcmctd2lkZSBJQU0gcm9sZSBkZXBsb3ltZW50JyxcbiAgICAgICdzdGFja3NldC11cGRhdGUnOiAnVXBkYXRlIHRoZSBTdGFja1NldCB0ZW1wbGF0ZScsXG4gICAgICAnc3RhY2tzZXQtZGVwbG95LWluc3RhbmNlcyc6XG4gICAgICAgICdEZXBsb3kgc3RhY2sgaW5zdGFuY2VzIHRvIHRhcmdldCBPVXMgYW5kIHJlZ2lvbnMgKHBhc3MgLS1kZXBsb3ltZW50LXRhcmdldHMgT3JnYW5pemF0aW9uYWxVbml0SWRzPTxvdS1pZHM+IHRvIG92ZXJyaWRlKScsXG4gICAgICAnc3RhY2tzZXQtZGVsZXRlLWluc3RhbmNlcyc6ICdEZWxldGUgc3RhY2sgaW5zdGFuY2VzIGZyb20gdGFyZ2V0IE9VcyBhbmQgcmVnaW9ucycsXG4gICAgICAnc3RhY2tzZXQtZGVsZXRlJzogJ0RlbGV0ZSB0aGUgU3RhY2tTZXQgKHJlcXVpcmVzIGFsbCBpbnN0YW5jZXMgdG8gYmUgZGVsZXRlZCBmaXJzdCknLFxuICAgICAgJ3N0YWNrc2V0LWRlc2NyaWJlJzogJ0Rlc2NyaWJlIHRoZSBTdGFja1NldCBzdGF0dXMgYW5kIGNvbmZpZ3VyYXRpb24nLFxuICAgICAgJ3N0YWNrc2V0LWxpc3QtaW5zdGFuY2VzJzogJ0xpc3QgYWxsIHN0YWNrIGluc3RhbmNlcyBhbmQgdGhlaXIgc3RhdHVzZXMnLFxuICAgIH07XG5cbiAgICBmb3IgKGNvbnN0IFt0YXNrTmFtZSwgY29tbWFuZF0gb2YgT2JqZWN0LmVudHJpZXMoY29tbWFuZHMpKSB7XG4gICAgICBwcm9wcy5wcm9qZWN0LmFkZFRhc2sodGFza05hbWUsIHtcbiAgICAgICAgZGVzY3JpcHRpb246IHRhc2tEZXNjcmlwdGlvbnNbdGFza05hbWVdLFxuICAgICAgICByZWNlaXZlQXJnczogdGFza05hbWUgIT09ICdzdGFja3NldC1kZWxldGUnLFxuICAgICAgICBleGVjOiBjb21tYW5kLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -8,8 +8,8 @@ export interface CdkDiffStack {
8
8
  export interface CdkDiffStackWorkflowProps {
9
9
  readonly project: any;
10
10
  readonly stacks: CdkDiffStack[];
11
- readonly oidcRoleArn: string;
12
- readonly oidcRegion: string;
11
+ readonly oidcRoleArn?: string;
12
+ readonly oidcRegion?: string;
13
13
  readonly nodeVersion?: string;
14
14
  readonly cdkYarnCommand?: string;
15
15
  readonly scriptOutputPath?: string;
@@ -138,6 +138,6 @@ class CdkDiffStackWorkflow {
138
138
  }
139
139
  exports.CdkDiffStackWorkflow = CdkDiffStackWorkflow;
140
140
  _a = JSII_RTTI_SYMBOL_1;
141
- CdkDiffStackWorkflow[_a] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDiffStackWorkflow", version: "1.0.0" };
141
+ CdkDiffStackWorkflow[_a] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDiffStackWorkflow", version: "1.1.1" };
142
142
  CdkDiffStackWorkflow.scriptCreated = false;
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2RrRGlmZlN0YWNrV29ya2Zsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQ2RrRGlmZlN0YWNrV29ya2Zsb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4Q0FBMkQ7QUFDM0QsdUVBQWtFO0FBQ2xFLHFFQUFnRTtBQUVoRSxNQUFNLGtDQUFrQyxHQUFHLElBQUksQ0FBQztBQUNoRCxNQUFNLDRCQUE0QixHQUFHLElBQUksQ0FBQztBQUMxQyxNQUFNLDZCQUE2QixHQUFHLElBQUksQ0FBQztBQW1CM0MsTUFBYSxvQkFBb0I7SUFHL0IsWUFBWSxLQUFnQztRQUMxQyxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsY0FBYyxJQUFJLEtBQUssQ0FBQztRQUNyRCxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQztRQUNoRCxNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxxREFBcUQsQ0FBQztRQUV6Ryw4QkFBOEI7UUFDOUIsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXRDLDREQUE0RDtRQUM1RCxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDeEMsSUFBSSx5Q0FBa0IsQ0FBQztnQkFDckIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO2dCQUN0QixVQUFVLEVBQUUsZ0JBQWdCO2FBQzdCLENBQUMsQ0FBQztZQUNILG9CQUFvQixDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDNUMsQ0FBQztRQUVELDRDQUE0QztRQUM1QyxLQUFLLE1BQU0sS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQyxNQUFNLFlBQVksR0FBRyxRQUFRLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMvQyxNQUFNLEVBQUUsR0FBSSxLQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLGVBQU0sQ0FB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QkFDRjtvQkFDRDt3QkFDRSxJQUFJLEVBQUUsd0JBQXdCLEtBQUssQ0FBQyxTQUFTLEVBQUU7d0JBQy9DLEdBQUcsRUFBRSwwREFBMEQsS0FBSyxDQUFDLFNBQVMsaUJBQWlCLEtBQUssQ0FBQyxTQUFTLGFBQWEsS0FBSyxDQUFDLDJCQUEyQixFQUFFO3FCQUMvSjtpQkFDRjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFoSkgsb0RBaUpDOzs7QUFoSmdCLGtDQUFhLEdBQUcsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2l0SHViLCBHaXRodWJXb3JrZmxvdyB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViJztcbmltcG9ydCB7IEpvYlBlcm1pc3Npb24gfSBmcm9tICdwcm9qZW4vbGliL2dpdGh1Yi93b3JrZmxvd3MtbW9kZWwnO1xuaW1wb3J0IHsgQ2RrQ2hhbmdlc2V0U2NyaXB0IH0gZnJvbSAnLi9iaW4vY2RrLWNoYW5nZXNldC1zY3JpcHQnO1xuXG5jb25zdCBnaXRodWJBY3Rpb25zQXdzQ3JlZGVudGlhbHNWZXJzaW9uID0gJ3Y0JztcbmNvbnN0IGdpdGh1YkFjdGlvbnNDaGVja291dFZlcnNpb24gPSAndjQnO1xuY29uc3QgZ2l0aHViQWN0aW9uc1NldHVwTm9kZVZlcnNpb24gPSAndjQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENka0RpZmZTdGFjayB7XG4gIHJlYWRvbmx5IHN0YWNrTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBjaGFuZ2VzZXRSb2xlVG9Bc3N1bWVBcm46IHN0cmluZztcbiAgcmVhZG9ubHkgY2hhbmdlc2V0Um9sZVRvQXNzdW1lUmVnaW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG9pZGNSb2xlQXJuPzogc3RyaW5nOyAvLyBPcHRpb25hbCBvdmVycmlkZSBmb3IgT0lEQyByb2xlXG4gIHJlYWRvbmx5IG9pZGNSZWdpb24/OiBzdHJpbmc7IC8vIE9wdGlvbmFsIG92ZXJyaWRlIGZvciBPSURDIHJlZ2lvblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENka0RpZmZTdGFja1dvcmtmbG93UHJvcHMge1xuICByZWFkb25seSBwcm9qZWN0OiBhbnk7IC8vIGF2b2lkIGV4cG9ydGluZyBwcm9qZW4gdHlwZXMgaW4gcHVibGljIEFQSVxuICByZWFkb25seSBzdGFja3M6IENka0RpZmZTdGFja1tdO1xuICByZWFkb25seSBvaWRjUm9sZUFybjogc3RyaW5nOyAvLyBSZXF1aXJlZCBPSURDIHJvbGUgQVJOIGZvciBhbGwgc3RhY2tzIChvciBlYWNoIHN0YWNrIG11c3QgaGF2ZSBpdHMgb3duKVxuICByZWFkb25seSBvaWRjUmVnaW9uOiBzdHJpbmc7IC8vIFJlcXVpcmVkIE9JREMgcmVnaW9uIGZvciBhbGwgc3RhY2tzIChvciBlYWNoIHN0YWNrIG11c3QgaGF2ZSBpdHMgb3duKVxuICByZWFkb25seSBub2RlVmVyc2lvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgY2RrWWFybkNvbW1hbmQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNjcmlwdE91dHB1dFBhdGg/OiBzdHJpbmc7XG59XG5leHBvcnQgY2xhc3MgQ2RrRGlmZlN0YWNrV29ya2Zsb3cge1xuICBwcml2YXRlIHN0YXRpYyBzY3JpcHRDcmVhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IENka0RpZmZTdGFja1dvcmtmbG93UHJvcHMpIHtcbiAgICBjb25zdCBjZGtZYXJuQ29tbWFuZCA9IHByb3BzLmNka1lhcm5Db21tYW5kID8/ICdjZGsnO1xuICAgIGNvbnN0IG5vZGVWZXJzaW9uID0gcHJvcHMubm9kZVZlcnNpb24gPz8gJzI0LngnO1xuICAgIGNvbnN0IHNjcmlwdE91dHB1dFBhdGggPSBwcm9wcy5zY3JpcHRPdXRwdXRQYXRoID8/ICcuZ2l0aHViL3dvcmtmbG93cy9zY3JpcHRzL2Rlc2NyaWJlLWNmbi1jaGFuZ2VzZXQudHMnO1xuXG4gICAgLy8gVmFsaWRhdGUgT0lEQyBjb25maWd1cmF0aW9uXG4gICAgdGhpcy52YWxpZGF0ZU9pZGNDb25maWd1cmF0aW9uKHByb3BzKTtcblxuICAgIC8vIE9ubHkgY3JlYXRlIHRoZSBjaGFuZ2VzZXQgc2NyaXB0IG9uY2UgdG8gYXZvaWQgY29sbGlzaW9uc1xuICAgIGlmICghQ2RrRGlmZlN0YWNrV29ya2Zsb3cuc2NyaXB0Q3JlYXRlZCkge1xuICAgICAgbmV3IENka0NoYW5nZXNldFNjcmlwdCh7XG4gICAgICAgIHByb2plY3Q6IHByb3BzLnByb2plY3QsXG4gICAgICAgIG91dHB1dFBhdGg6IHNjcmlwdE91dHB1dFBhdGgsXG4gICAgICB9KTtcbiAgICAgIENka0RpZmZTdGFja1dvcmtmbG93LnNjcmlwdENyZWF0ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBhIHNlcGFyYXRlIHdvcmtmbG93IGZvciBlYWNoIHN0YWNrXG4gICAgZm9yIChjb25zdCBzdGFjayBvZiBwcm9wcy5zdGFja3MpIHtcbiAgICAgIGNvbnN0IHdvcmtmbG93TmFtZSA9IGBkaWZmLSR7c3RhY2suc3RhY2tOYW1lfWA7XG4gICAgICBjb25zdCBnaCA9IChwcm9wcyBhcyBhbnkpLnByb2plY3QuZ2l0aHViID8/IG5ldyBHaXRIdWIoKHByb3BzIGFzIGFueSkucHJvamVjdCk7XG4gICAgICBjb25zdCBkaWZmRGVwbG95V29ya2Zsb3cgPSBuZXcgR2l0aHViV29ya2Zsb3coZ2gsIHdvcmtmbG93TmFtZSwgeyBmaWxlTmFtZTogYCR7d29ya2Zsb3dOYW1lfS55bWxgIH0pO1xuXG4gICAgICB0aGlzLmNyZWF0ZVdvcmtmbG93Rm9yU3RhY2soZGlmZkRlcGxveVdvcmtmbG93LCBzdGFjaywgY2RrWWFybkNvbW1hbmQsIG5vZGVWZXJzaW9uLCBzY3JpcHRPdXRwdXRQYXRoLCBwcm9wcy5vaWRjUm9sZUFybiwgcHJvcHMub2lkY1JlZ2lvbik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZU9pZGNDb25maWd1cmF0aW9uKHByb3BzOiBDZGtEaWZmU3RhY2tXb3JrZmxvd1Byb3BzKTogdm9pZCB7XG4gICAgY29uc3QgaGFzRGVmYXVsdE9pZGNSb2xlID0gISFwcm9wcy5vaWRjUm9sZUFybjtcbiAgICBjb25zdCBoYXNEZWZhdWx0T2lkY1JlZ2lvbiA9ICEhcHJvcHMub2lkY1JlZ2lvbjtcblxuICAgIC8vIENoZWNrIGlmIGFsbCBzdGFja3MgaGF2ZSB0aGVpciBvd24gT0lEQyBjb25maWd1cmF0aW9uXG4gICAgY29uc3QgYWxsU3RhY2tzSGF2ZU9pZGNSb2xlID0gcHJvcHMuc3RhY2tzLmV2ZXJ5KHN0YWNrID0+ICEhc3RhY2sub2lkY1JvbGVBcm4pO1xuICAgIGNvbnN0IGFsbFN0YWNrc0hhdmVPaWRjUmVnaW9uID0gcHJvcHMuc3RhY2tzLmV2ZXJ5KHN0YWNrID0+ICEhc3RhY2sub2lkY1JlZ2lvbik7XG5cbiAgICAvLyBFaXRoZXIgZGVmYXVsdHMgbXVzdCBiZSBwcm92aWRlZCBPUiBhbGwgc3RhY2tzIG11c3QgaGF2ZSB0aGVpciBvd24gT0lEQyBjb25maWdcbiAgICBpZiAoIWhhc0RlZmF1bHRPaWRjUm9sZSAmJiAhYWxsU3RhY2tzSGF2ZU9pZGNSb2xlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VpdGhlciBwcm92aWRlIGRlZmF1bHQgb2lkY1JvbGVBcm4gb3Igc3BlY2lmeSBvaWRjUm9sZUFybiBmb3IgZWFjaCBzdGFjaycpO1xuICAgIH1cblxuICAgIGlmICghaGFzRGVmYXVsdE9pZGNSZWdpb24gJiYgIWFsbFN0YWNrc0hhdmVPaWRjUmVnaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VpdGhlciBwcm92aWRlIGRlZmF1bHQgb2lkY1JlZ2lvbiBvciBzcGVjaWZ5IG9pZGNSZWdpb24gZm9yIGVhY2ggc3RhY2snKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVdvcmtmbG93Rm9yU3RhY2soXG4gICAgd29ya2Zsb3c6IEdpdGh1YldvcmtmbG93LFxuICAgIHN0YWNrOiBDZGtEaWZmU3RhY2ssXG4gICAgY2RrWWFybkNvbW1hbmQ6IHN0cmluZyxcbiAgICBub2RlVmVyc2lvbjogc3RyaW5nLFxuICAgIHNjcmlwdE91dHB1dFBhdGg6IHN0cmluZyxcbiAgICBkZWZhdWx0T2lkY1JvbGVBcm46IHN0cmluZyxcbiAgICBkZWZhdWx0T2lkY1JlZ2lvbjogc3RyaW5nLFxuICApIHtcbiAgICB3b3JrZmxvdy5vbih7XG4gICAgICBwdWxsUmVxdWVzdDoge1xuICAgICAgICB0eXBlczogWydvcGVuZWQnLCAnc3luY2hyb25pemUnLCAncmVvcGVuZWQnXSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgd29ya2Zsb3cuYWRkSm9icyh7XG4gICAgICBkaWZmOiB7XG4gICAgICAgIHJ1bnNPbjogWyd1YnVudHUtbGF0ZXN0J10sXG4gICAgICAgIHBlcm1pc3Npb25zOiB7XG4gICAgICAgICAgaWRUb2tlbjogSm9iUGVybWlzc2lvbi5XUklURSxcbiAgICAgICAgICBjb250ZW50czogSm9iUGVybWlzc2lvbi5SRUFELFxuICAgICAgICAgIGlzc3VlczogSm9iUGVybWlzc2lvbi5XUklURSxcbiAgICAgICAgICBwdWxsUmVxdWVzdHM6IEpvYlBlcm1pc3Npb24uV1JJVEUsXG4gICAgICAgICAgcGFja2FnZXM6IEpvYlBlcm1pc3Npb24uUkVBRCxcbiAgICAgICAgfSxcbiAgICAgICAgZW52OiB7XG4gICAgICAgICAgR0lUSFVCX1RPS0VOOiAnJHt7IHNlY3JldHMuR0lUSFVCX1RPS0VOIH19JyxcbiAgICAgICAgfSxcbiAgICAgICAgc3RlcHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB1c2VzOiBgYWN0aW9ucy9jaGVja291dEAke2dpdGh1YkFjdGlvbnNDaGVja291dFZlcnNpb259YCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHVzZXM6IGBhY3Rpb25zL3NldHVwLW5vZGVAJHtnaXRodWJBY3Rpb25zU2V0dXBOb2RlVmVyc2lvbn1gLFxuICAgICAgICAgICAgd2l0aDoge1xuICAgICAgICAgICAgICAnbm9kZS12ZXJzaW9uJzogbm9kZVZlcnNpb24sXG4gICAgICAgICAgICAgICdyZWdpc3RyeS11cmwnOiAnaHR0cHM6Ly9ucG0ucGtnLmdpdGh1Yi5jb20nLFxuICAgICAgICAgICAgICAnc2NvcGUnOiAnQCR7eyBnaXRodWIucmVwb3NpdG9yeV9vd25lciB9fScsXG4gICAgICAgICAgICAgICd0b2tlbic6ICcke3sgc2VjcmV0cy5HSVRIVUJfVE9LRU4gfX0nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJ1bjogJ3lhcm4gaW5zdGFsbCAtLWZyb3plbi1sb2NrZmlsZScsXG4gICAgICAgICAgICBlbnY6IHtcbiAgICAgICAgICAgICAgTk9ERV9BVVRIX1RPS0VOOiAnJHt7IHNlY3JldHMuR0lUSFVCX1RPS0VOIH19JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB1c2VzOiBgYXdzLWFjdGlvbnMvY29uZmlndXJlLWF3cy1jcmVkZW50aWFsc0Ake2dpdGh1YkFjdGlvbnNBd3NDcmVkZW50aWFsc1ZlcnNpb259YCxcbiAgICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgICAgJ3JvbGUtdG8tYXNzdW1lJzogc3RhY2sub2lkY1JvbGVBcm4gPz8gZGVmYXVsdE9pZGNSb2xlQXJuLFxuICAgICAgICAgICAgICAnYXdzLXJlZ2lvbic6IHN0YWNrLm9pZGNSZWdpb24gPz8gZGVmYXVsdE9pZGNSZWdpb24sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogYENyZWF0ZSBDaGFuZ2VzZXQgZm9yICR7c3RhY2suc3RhY2tOYW1lfWAsXG4gICAgICAgICAgICBydW46IGB5YXJuICR7Y2RrWWFybkNvbW1hbmR9IGRlcGxveSAke3N0YWNrLnN0YWNrTmFtZX0gLS1uby1leGVjdXRlIC0tY2hhbmdlLXNldC1uYW1lICR7c3RhY2suc3RhY2tOYW1lfSAtLXJlcXVpcmUtYXBwcm92YWwgbmV2ZXJgLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdjcmVkcycsXG4gICAgICAgICAgICB1c2VzOiBgYXdzLWFjdGlvbnMvY29uZmlndXJlLWF3cy1jcmVkZW50aWFsc0Ake2dpdGh1YkFjdGlvbnNBd3NDcmVkZW50aWFsc1ZlcnNpb259YCxcbiAgICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgICAgJ3JvbGUtdG8tYXNzdW1lJzogc3RhY2sub2lkY1JvbGVBcm4gPz8gZGVmYXVsdE9pZGNSb2xlQXJuLFxuICAgICAgICAgICAgICAnYXdzLXJlZ2lvbic6IHN0YWNrLm9pZGNSZWdpb24gPz8gZGVmYXVsdE9pZGNSZWdpb24sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0Fzc3VtZSBDbG91ZEZvcm1hdGlvbiBDaGFuZ2VzZXQgUm9sZScsXG4gICAgICAgICAgICBpZDogJ2NoYW5nZXNldC1yb2xlJyxcbiAgICAgICAgICAgIHVzZXM6IGBhd3MtYWN0aW9ucy9jb25maWd1cmUtYXdzLWNyZWRlbnRpYWxzQCR7Z2l0aHViQWN0aW9uc0F3c0NyZWRlbnRpYWxzVmVyc2lvbn1gLFxuICAgICAgICAgICAgd2l0aDoge1xuICAgICAgICAgICAgICAncm9sZS10by1hc3N1bWUnOiBzdGFjay5jaGFuZ2VzZXRSb2xlVG9Bc3N1bWVBcm4sXG4gICAgICAgICAgICAgICdyb2xlLWNoYWluaW5nJzogdHJ1ZSxcbiAgICAgICAgICAgICAgJ3JvbGUtc2tpcC1zZXNzaW9uLXRhZ2dpbmcnOiB0cnVlLFxuICAgICAgICAgICAgICAnYXdzLXJlZ2lvbic6IHN0YWNrLmNoYW5nZXNldFJvbGVUb0Fzc3VtZVJlZ2lvbixcbiAgICAgICAgICAgICAgJ2F3cy1hY2Nlc3Mta2V5LWlkJzogJyR7eyBzdGVwcy5jcmVkcy5vdXRwdXRzLmF3cy1hY2Nlc3Mta2V5LWlkIH19JyxcbiAgICAgICAgICAgICAgJ2F3cy1zZWNyZXQtYWNjZXNzLWtleSc6ICcke3sgc3RlcHMuY3JlZHMub3V0cHV0cy5hd3Mtc2VjcmV0LWFjY2Vzcy1rZXkgfX0nLFxuICAgICAgICAgICAgICAnYXdzLXNlc3Npb24tdG9rZW4nOiAnJHt7IHN0ZXBzLmNyZWRzLm91dHB1dHMuYXdzLXNlc3Npb24tdG9rZW4gfX0nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IGBEZXNjcmliZSBjaGFuZ2Ugc2V0IGZvciAke3N0YWNrLnN0YWNrTmFtZX1gLFxuICAgICAgICAgICAgcnVuOiBgbnB4IHRzLW5vZGUgJHtzY3JpcHRPdXRwdXRQYXRofWAsXG4gICAgICAgICAgICBlbnY6IHtcbiAgICAgICAgICAgICAgU1RBQ0tfTkFNRTogc3RhY2suc3RhY2tOYW1lLFxuICAgICAgICAgICAgICBDSEFOR0VfU0VUX05BTUU6IHN0YWNrLnN0YWNrTmFtZSxcbiAgICAgICAgICAgICAgR0lUSFVCX0NPTU1FTlRfVVJMOiAnJHt7IGdpdGh1Yi5ldmVudC5wdWxsX3JlcXVlc3QuY29tbWVudHNfdXJsIH19JyxcbiAgICAgICAgICAgICAgR0lUSFVCX1RPS0VOOiAnJHt7IHNlY3JldHMuR0lUSFVCX1RPS0VOIH19JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBgRGVsZXRlIGNoYW5nZXNldCBmb3IgJHtzdGFjay5zdGFja05hbWV9YCxcbiAgICAgICAgICAgIHJ1bjogYGF3cyBjbG91ZGZvcm1hdGlvbiBkZWxldGUtY2hhbmdlLXNldCAtLWNoYW5nZS1zZXQtbmFtZSAke3N0YWNrLnN0YWNrTmFtZX0gLS1zdGFjay1uYW1lICR7c3RhY2suc3RhY2tOYW1lfSAtLXJlZ2lvbiAke3N0YWNrLmNoYW5nZXNldFJvbGVUb0Fzc3VtZVJlZ2lvbn1gLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2RrRGlmZlN0YWNrV29ya2Zsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQ2RrRGlmZlN0YWNrV29ya2Zsb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4Q0FBMkQ7QUFDM0QsdUVBQWtFO0FBQ2xFLHFFQUFnRTtBQUVoRSxNQUFNLGtDQUFrQyxHQUFHLElBQUksQ0FBQztBQUNoRCxNQUFNLDRCQUE0QixHQUFHLElBQUksQ0FBQztBQUMxQyxNQUFNLDZCQUE2QixHQUFHLElBQUksQ0FBQztBQW1CM0MsTUFBYSxvQkFBb0I7SUFHL0IsWUFBWSxLQUFnQztRQUMxQyxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsY0FBYyxJQUFJLEtBQUssQ0FBQztRQUNyRCxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQztRQUNoRCxNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxxREFBcUQsQ0FBQztRQUV6Ryw4QkFBOEI7UUFDOUIsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXRDLDREQUE0RDtRQUM1RCxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDeEMsSUFBSSx5Q0FBa0IsQ0FBQztnQkFDckIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO2dCQUN0QixVQUFVLEVBQUUsZ0JBQWdCO2FBQzdCLENBQUMsQ0FBQztZQUNILG9CQUFvQixDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDNUMsQ0FBQztRQUVELDRDQUE0QztRQUM1QyxLQUFLLE1BQU0sS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQyxNQUFNLFlBQVksR0FBRyxRQUFRLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMvQyxNQUFNLEVBQUUsR0FBSSxLQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLGVBQU0sQ0FB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QkFDRjtvQkFDRDt3QkFDRSxJQUFJLEVBQUUsd0JBQXdCLEtBQUssQ0FBQyxTQUFTLEVBQUU7d0JBQy9DLEdBQUcsRUFBRSwwREFBMEQsS0FBSyxDQUFDLFNBQVMsaUJBQWlCLEtBQUssQ0FBQyxTQUFTLGFBQWEsS0FBSyxDQUFDLDJCQUEyQixFQUFFO3FCQUMvSjtpQkFDRjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFoSkgsb0RBaUpDOzs7QUFoSmdCLGtDQUFhLEdBQUcsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2l0SHViLCBHaXRodWJXb3JrZmxvdyB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViJztcbmltcG9ydCB7IEpvYlBlcm1pc3Npb24gfSBmcm9tICdwcm9qZW4vbGliL2dpdGh1Yi93b3JrZmxvd3MtbW9kZWwnO1xuaW1wb3J0IHsgQ2RrQ2hhbmdlc2V0U2NyaXB0IH0gZnJvbSAnLi9iaW4vY2RrLWNoYW5nZXNldC1zY3JpcHQnO1xuXG5jb25zdCBnaXRodWJBY3Rpb25zQXdzQ3JlZGVudGlhbHNWZXJzaW9uID0gJ3Y0JztcbmNvbnN0IGdpdGh1YkFjdGlvbnNDaGVja291dFZlcnNpb24gPSAndjQnO1xuY29uc3QgZ2l0aHViQWN0aW9uc1NldHVwTm9kZVZlcnNpb24gPSAndjQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENka0RpZmZTdGFjayB7XG4gIHJlYWRvbmx5IHN0YWNrTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBjaGFuZ2VzZXRSb2xlVG9Bc3N1bWVBcm46IHN0cmluZztcbiAgcmVhZG9ubHkgY2hhbmdlc2V0Um9sZVRvQXNzdW1lUmVnaW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG9pZGNSb2xlQXJuPzogc3RyaW5nOyAvLyBPcHRpb25hbCBvdmVycmlkZSBmb3IgT0lEQyByb2xlXG4gIHJlYWRvbmx5IG9pZGNSZWdpb24/OiBzdHJpbmc7IC8vIE9wdGlvbmFsIG92ZXJyaWRlIGZvciBPSURDIHJlZ2lvblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENka0RpZmZTdGFja1dvcmtmbG93UHJvcHMge1xuICByZWFkb25seSBwcm9qZWN0OiBhbnk7IC8vIGF2b2lkIGV4cG9ydGluZyBwcm9qZW4gdHlwZXMgaW4gcHVibGljIEFQSVxuICByZWFkb25seSBzdGFja3M6IENka0RpZmZTdGFja1tdO1xuICByZWFkb25seSBvaWRjUm9sZUFybj86IHN0cmluZzsgLy8gRGVmYXVsdCBPSURDIHJvbGUgQVJOIGZvciBhbGwgc3RhY2tzIChvciBlYWNoIHN0YWNrIG11c3QgaGF2ZSBpdHMgb3duKVxuICByZWFkb25seSBvaWRjUmVnaW9uPzogc3RyaW5nOyAvLyBEZWZhdWx0IE9JREMgcmVnaW9uIGZvciBhbGwgc3RhY2tzIChvciBlYWNoIHN0YWNrIG11c3QgaGF2ZSBpdHMgb3duKVxuICByZWFkb25seSBub2RlVmVyc2lvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgY2RrWWFybkNvbW1hbmQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNjcmlwdE91dHB1dFBhdGg/OiBzdHJpbmc7XG59XG5leHBvcnQgY2xhc3MgQ2RrRGlmZlN0YWNrV29ya2Zsb3cge1xuICBwcml2YXRlIHN0YXRpYyBzY3JpcHRDcmVhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IENka0RpZmZTdGFja1dvcmtmbG93UHJvcHMpIHtcbiAgICBjb25zdCBjZGtZYXJuQ29tbWFuZCA9IHByb3BzLmNka1lhcm5Db21tYW5kID8/ICdjZGsnO1xuICAgIGNvbnN0IG5vZGVWZXJzaW9uID0gcHJvcHMubm9kZVZlcnNpb24gPz8gJzI0LngnO1xuICAgIGNvbnN0IHNjcmlwdE91dHB1dFBhdGggPSBwcm9wcy5zY3JpcHRPdXRwdXRQYXRoID8/ICcuZ2l0aHViL3dvcmtmbG93cy9zY3JpcHRzL2Rlc2NyaWJlLWNmbi1jaGFuZ2VzZXQudHMnO1xuXG4gICAgLy8gVmFsaWRhdGUgT0lEQyBjb25maWd1cmF0aW9uXG4gICAgdGhpcy52YWxpZGF0ZU9pZGNDb25maWd1cmF0aW9uKHByb3BzKTtcblxuICAgIC8vIE9ubHkgY3JlYXRlIHRoZSBjaGFuZ2VzZXQgc2NyaXB0IG9uY2UgdG8gYXZvaWQgY29sbGlzaW9uc1xuICAgIGlmICghQ2RrRGlmZlN0YWNrV29ya2Zsb3cuc2NyaXB0Q3JlYXRlZCkge1xuICAgICAgbmV3IENka0NoYW5nZXNldFNjcmlwdCh7XG4gICAgICAgIHByb2plY3Q6IHByb3BzLnByb2plY3QsXG4gICAgICAgIG91dHB1dFBhdGg6IHNjcmlwdE91dHB1dFBhdGgsXG4gICAgICB9KTtcbiAgICAgIENka0RpZmZTdGFja1dvcmtmbG93LnNjcmlwdENyZWF0ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBhIHNlcGFyYXRlIHdvcmtmbG93IGZvciBlYWNoIHN0YWNrXG4gICAgZm9yIChjb25zdCBzdGFjayBvZiBwcm9wcy5zdGFja3MpIHtcbiAgICAgIGNvbnN0IHdvcmtmbG93TmFtZSA9IGBkaWZmLSR7c3RhY2suc3RhY2tOYW1lfWA7XG4gICAgICBjb25zdCBnaCA9IChwcm9wcyBhcyBhbnkpLnByb2plY3QuZ2l0aHViID8/IG5ldyBHaXRIdWIoKHByb3BzIGFzIGFueSkucHJvamVjdCk7XG4gICAgICBjb25zdCBkaWZmRGVwbG95V29ya2Zsb3cgPSBuZXcgR2l0aHViV29ya2Zsb3coZ2gsIHdvcmtmbG93TmFtZSwgeyBmaWxlTmFtZTogYCR7d29ya2Zsb3dOYW1lfS55bWxgIH0pO1xuXG4gICAgICB0aGlzLmNyZWF0ZVdvcmtmbG93Rm9yU3RhY2soZGlmZkRlcGxveVdvcmtmbG93LCBzdGFjaywgY2RrWWFybkNvbW1hbmQsIG5vZGVWZXJzaW9uLCBzY3JpcHRPdXRwdXRQYXRoLCBwcm9wcy5vaWRjUm9sZUFybiwgcHJvcHMub2lkY1JlZ2lvbik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZU9pZGNDb25maWd1cmF0aW9uKHByb3BzOiBDZGtEaWZmU3RhY2tXb3JrZmxvd1Byb3BzKTogdm9pZCB7XG4gICAgY29uc3QgaGFzRGVmYXVsdE9pZGNSb2xlID0gISFwcm9wcy5vaWRjUm9sZUFybjtcbiAgICBjb25zdCBoYXNEZWZhdWx0T2lkY1JlZ2lvbiA9ICEhcHJvcHMub2lkY1JlZ2lvbjtcblxuICAgIC8vIENoZWNrIGlmIGFsbCBzdGFja3MgaGF2ZSB0aGVpciBvd24gT0lEQyBjb25maWd1cmF0aW9uXG4gICAgY29uc3QgYWxsU3RhY2tzSGF2ZU9pZGNSb2xlID0gcHJvcHMuc3RhY2tzLmV2ZXJ5KHN0YWNrID0+ICEhc3RhY2sub2lkY1JvbGVBcm4pO1xuICAgIGNvbnN0IGFsbFN0YWNrc0hhdmVPaWRjUmVnaW9uID0gcHJvcHMuc3RhY2tzLmV2ZXJ5KHN0YWNrID0+ICEhc3RhY2sub2lkY1JlZ2lvbik7XG5cbiAgICAvLyBFaXRoZXIgZGVmYXVsdHMgbXVzdCBiZSBwcm92aWRlZCBPUiBhbGwgc3RhY2tzIG11c3QgaGF2ZSB0aGVpciBvd24gT0lEQyBjb25maWdcbiAgICBpZiAoIWhhc0RlZmF1bHRPaWRjUm9sZSAmJiAhYWxsU3RhY2tzSGF2ZU9pZGNSb2xlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VpdGhlciBwcm92aWRlIGRlZmF1bHQgb2lkY1JvbGVBcm4gb3Igc3BlY2lmeSBvaWRjUm9sZUFybiBmb3IgZWFjaCBzdGFjaycpO1xuICAgIH1cblxuICAgIGlmICghaGFzRGVmYXVsdE9pZGNSZWdpb24gJiYgIWFsbFN0YWNrc0hhdmVPaWRjUmVnaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VpdGhlciBwcm92aWRlIGRlZmF1bHQgb2lkY1JlZ2lvbiBvciBzcGVjaWZ5IG9pZGNSZWdpb24gZm9yIGVhY2ggc3RhY2snKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVdvcmtmbG93Rm9yU3RhY2soXG4gICAgd29ya2Zsb3c6IEdpdGh1YldvcmtmbG93LFxuICAgIHN0YWNrOiBDZGtEaWZmU3RhY2ssXG4gICAgY2RrWWFybkNvbW1hbmQ6IHN0cmluZyxcbiAgICBub2RlVmVyc2lvbjogc3RyaW5nLFxuICAgIHNjcmlwdE91dHB1dFBhdGg6IHN0cmluZyxcbiAgICBkZWZhdWx0T2lkY1JvbGVBcm4/OiBzdHJpbmcsXG4gICAgZGVmYXVsdE9pZGNSZWdpb24/OiBzdHJpbmcsXG4gICkge1xuICAgIHdvcmtmbG93Lm9uKHtcbiAgICAgIHB1bGxSZXF1ZXN0OiB7XG4gICAgICAgIHR5cGVzOiBbJ29wZW5lZCcsICdzeW5jaHJvbml6ZScsICdyZW9wZW5lZCddLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICB3b3JrZmxvdy5hZGRKb2JzKHtcbiAgICAgIGRpZmY6IHtcbiAgICAgICAgcnVuc09uOiBbJ3VidW50dS1sYXRlc3QnXSxcbiAgICAgICAgcGVybWlzc2lvbnM6IHtcbiAgICAgICAgICBpZFRva2VuOiBKb2JQZXJtaXNzaW9uLldSSVRFLFxuICAgICAgICAgIGNvbnRlbnRzOiBKb2JQZXJtaXNzaW9uLlJFQUQsXG4gICAgICAgICAgaXNzdWVzOiBKb2JQZXJtaXNzaW9uLldSSVRFLFxuICAgICAgICAgIHB1bGxSZXF1ZXN0czogSm9iUGVybWlzc2lvbi5XUklURSxcbiAgICAgICAgICBwYWNrYWdlczogSm9iUGVybWlzc2lvbi5SRUFELFxuICAgICAgICB9LFxuICAgICAgICBlbnY6IHtcbiAgICAgICAgICBHSVRIVUJfVE9LRU46ICcke3sgc2VjcmV0cy5HSVRIVUJfVE9LRU4gfX0nLFxuICAgICAgICB9LFxuICAgICAgICBzdGVwczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHVzZXM6IGBhY3Rpb25zL2NoZWNrb3V0QCR7Z2l0aHViQWN0aW9uc0NoZWNrb3V0VmVyc2lvbn1gLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdXNlczogYGFjdGlvbnMvc2V0dXAtbm9kZUAke2dpdGh1YkFjdGlvbnNTZXR1cE5vZGVWZXJzaW9ufWAsXG4gICAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICAgICdub2RlLXZlcnNpb24nOiBub2RlVmVyc2lvbixcbiAgICAgICAgICAgICAgJ3JlZ2lzdHJ5LXVybCc6ICdodHRwczovL25wbS5wa2cuZ2l0aHViLmNvbScsXG4gICAgICAgICAgICAgICdzY29wZSc6ICdAJHt7IGdpdGh1Yi5yZXBvc2l0b3J5X293bmVyIH19JyxcbiAgICAgICAgICAgICAgJ3Rva2VuJzogJyR7eyBzZWNyZXRzLkdJVEhVQl9UT0tFTiB9fScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgcnVuOiAneWFybiBpbnN0YWxsIC0tZnJvemVuLWxvY2tmaWxlJyxcbiAgICAgICAgICAgIGVudjoge1xuICAgICAgICAgICAgICBOT0RFX0FVVEhfVE9LRU46ICcke3sgc2VjcmV0cy5HSVRIVUJfVE9LRU4gfX0nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHVzZXM6IGBhd3MtYWN0aW9ucy9jb25maWd1cmUtYXdzLWNyZWRlbnRpYWxzQCR7Z2l0aHViQWN0aW9uc0F3c0NyZWRlbnRpYWxzVmVyc2lvbn1gLFxuICAgICAgICAgICAgd2l0aDoge1xuICAgICAgICAgICAgICAncm9sZS10by1hc3N1bWUnOiBzdGFjay5vaWRjUm9sZUFybiA/PyBkZWZhdWx0T2lkY1JvbGVBcm4sXG4gICAgICAgICAgICAgICdhd3MtcmVnaW9uJzogc3RhY2sub2lkY1JlZ2lvbiA/PyBkZWZhdWx0T2lkY1JlZ2lvbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBgQ3JlYXRlIENoYW5nZXNldCBmb3IgJHtzdGFjay5zdGFja05hbWV9YCxcbiAgICAgICAgICAgIHJ1bjogYHlhcm4gJHtjZGtZYXJuQ29tbWFuZH0gZGVwbG95ICR7c3RhY2suc3RhY2tOYW1lfSAtLW5vLWV4ZWN1dGUgLS1jaGFuZ2Utc2V0LW5hbWUgJHtzdGFjay5zdGFja05hbWV9IC0tcmVxdWlyZS1hcHByb3ZhbCBuZXZlcmAsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ2NyZWRzJyxcbiAgICAgICAgICAgIHVzZXM6IGBhd3MtYWN0aW9ucy9jb25maWd1cmUtYXdzLWNyZWRlbnRpYWxzQCR7Z2l0aHViQWN0aW9uc0F3c0NyZWRlbnRpYWxzVmVyc2lvbn1gLFxuICAgICAgICAgICAgd2l0aDoge1xuICAgICAgICAgICAgICAncm9sZS10by1hc3N1bWUnOiBzdGFjay5vaWRjUm9sZUFybiA/PyBkZWZhdWx0T2lkY1JvbGVBcm4sXG4gICAgICAgICAgICAgICdhd3MtcmVnaW9uJzogc3RhY2sub2lkY1JlZ2lvbiA/PyBkZWZhdWx0T2lkY1JlZ2lvbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQXNzdW1lIENsb3VkRm9ybWF0aW9uIENoYW5nZXNldCBSb2xlJyxcbiAgICAgICAgICAgIGlkOiAnY2hhbmdlc2V0LXJvbGUnLFxuICAgICAgICAgICAgdXNlczogYGF3cy1hY3Rpb25zL2NvbmZpZ3VyZS1hd3MtY3JlZGVudGlhbHNAJHtnaXRodWJBY3Rpb25zQXdzQ3JlZGVudGlhbHNWZXJzaW9ufWAsXG4gICAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICAgICdyb2xlLXRvLWFzc3VtZSc6IHN0YWNrLmNoYW5nZXNldFJvbGVUb0Fzc3VtZUFybixcbiAgICAgICAgICAgICAgJ3JvbGUtY2hhaW5pbmcnOiB0cnVlLFxuICAgICAgICAgICAgICAncm9sZS1za2lwLXNlc3Npb24tdGFnZ2luZyc6IHRydWUsXG4gICAgICAgICAgICAgICdhd3MtcmVnaW9uJzogc3RhY2suY2hhbmdlc2V0Um9sZVRvQXNzdW1lUmVnaW9uLFxuICAgICAgICAgICAgICAnYXdzLWFjY2Vzcy1rZXktaWQnOiAnJHt7IHN0ZXBzLmNyZWRzLm91dHB1dHMuYXdzLWFjY2Vzcy1rZXktaWQgfX0nLFxuICAgICAgICAgICAgICAnYXdzLXNlY3JldC1hY2Nlc3Mta2V5JzogJyR7eyBzdGVwcy5jcmVkcy5vdXRwdXRzLmF3cy1zZWNyZXQtYWNjZXNzLWtleSB9fScsXG4gICAgICAgICAgICAgICdhd3Mtc2Vzc2lvbi10b2tlbic6ICcke3sgc3RlcHMuY3JlZHMub3V0cHV0cy5hd3Mtc2Vzc2lvbi10b2tlbiB9fScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogYERlc2NyaWJlIGNoYW5nZSBzZXQgZm9yICR7c3RhY2suc3RhY2tOYW1lfWAsXG4gICAgICAgICAgICBydW46IGBucHggdHMtbm9kZSAke3NjcmlwdE91dHB1dFBhdGh9YCxcbiAgICAgICAgICAgIGVudjoge1xuICAgICAgICAgICAgICBTVEFDS19OQU1FOiBzdGFjay5zdGFja05hbWUsXG4gICAgICAgICAgICAgIENIQU5HRV9TRVRfTkFNRTogc3RhY2suc3RhY2tOYW1lLFxuICAgICAgICAgICAgICBHSVRIVUJfQ09NTUVOVF9VUkw6ICcke3sgZ2l0aHViLmV2ZW50LnB1bGxfcmVxdWVzdC5jb21tZW50c191cmwgfX0nLFxuICAgICAgICAgICAgICBHSVRIVUJfVE9LRU46ICcke3sgc2VjcmV0cy5HSVRIVUJfVE9LRU4gfX0nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IGBEZWxldGUgY2hhbmdlc2V0IGZvciAke3N0YWNrLnN0YWNrTmFtZX1gLFxuICAgICAgICAgICAgcnVuOiBgYXdzIGNsb3VkZm9ybWF0aW9uIGRlbGV0ZS1jaGFuZ2Utc2V0IC0tY2hhbmdlLXNldC1uYW1lICR7c3RhY2suc3RhY2tOYW1lfSAtLXN0YWNrLW5hbWUgJHtzdGFjay5zdGFja05hbWV9IC0tcmVnaW9uICR7c3RhY2suY2hhbmdlc2V0Um9sZVRvQXNzdW1lUmVnaW9ufWAsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -3,6 +3,8 @@ export interface Stack {
3
3
  readonly driftDetectionRoleToAssumeRegion: string;
4
4
  readonly driftDetectionRoleToAssumeArn: string;
5
5
  readonly failOnDrift?: boolean;
6
+ readonly oidcRoleArn?: string;
7
+ readonly oidcRegion?: string;
6
8
  }
7
9
  export interface CdkDriftDetectionWorkflowProps {
8
10
  readonly scriptOutputPath?: string;
@@ -10,8 +12,8 @@ export interface CdkDriftDetectionWorkflowProps {
10
12
  readonly workflowName?: string;
11
13
  readonly schedule?: string;
12
14
  readonly createIssues?: boolean;
13
- readonly oidcRoleArn: string;
14
- readonly oidcRegion: string;
15
+ readonly oidcRoleArn?: string;
16
+ readonly oidcRegion?: string;
15
17
  readonly stacks: Stack[];
16
18
  readonly nodeVersion?: string;
17
19
  /**
@@ -29,4 +31,5 @@ export interface CdkDriftDetectionWorkflowProps {
29
31
  export declare class CdkDriftDetectionWorkflow {
30
32
  private static scriptCreated;
31
33
  constructor(props: CdkDriftDetectionWorkflowProps);
34
+ private validateOidcConfiguration;
32
35
  }
@@ -14,6 +14,8 @@ const githubActionsDownloadArtifactVersion = 'v5';
14
14
  const githubActionsGithubScriptVersion = 'v8';
15
15
  class CdkDriftDetectionWorkflow {
16
16
  constructor(props) {
17
+ // Validate OIDC configuration
18
+ this.validateOidcConfiguration(props);
17
19
  const name = props.workflowName ?? 'drift-detection';
18
20
  const fileName = toKebabCase(name) + '.yml';
19
21
  const nodeVersion = props.nodeVersion ?? '24.x';
@@ -89,9 +91,9 @@ class CdkDriftDetectionWorkflow {
89
91
  id: 'creds',
90
92
  uses: `aws-actions/configure-aws-credentials@${githubActionsAwsCredentialsVersion}`,
91
93
  with: {
92
- 'role-to-assume': props.oidcRoleArn,
94
+ 'role-to-assume': stack.oidcRoleArn ?? props.oidcRoleArn,
93
95
  'role-session-name': 'GitHubAction',
94
- 'aws-region': props.oidcRegion,
96
+ 'aws-region': stack.oidcRegion ?? props.oidcRegion,
95
97
  },
96
98
  },
97
99
  {
@@ -173,10 +175,24 @@ class CdkDriftDetectionWorkflow {
173
175
  };
174
176
  workflow.addJobs(jobs);
175
177
  }
178
+ validateOidcConfiguration(props) {
179
+ const hasDefaultOidcRole = !!props.oidcRoleArn;
180
+ const hasDefaultOidcRegion = !!props.oidcRegion;
181
+ // Check if all stacks have their own OIDC configuration
182
+ const allStacksHaveOidcRole = props.stacks.every(stack => !!stack.oidcRoleArn);
183
+ const allStacksHaveOidcRegion = props.stacks.every(stack => !!stack.oidcRegion);
184
+ // Either defaults must be provided OR all stacks must have their own OIDC config
185
+ if (!hasDefaultOidcRole && !allStacksHaveOidcRole) {
186
+ throw new Error('Either provide default oidcRoleArn or specify oidcRoleArn for each stack');
187
+ }
188
+ if (!hasDefaultOidcRegion && !allStacksHaveOidcRegion) {
189
+ throw new Error('Either provide default oidcRegion or specify oidcRegion for each stack');
190
+ }
191
+ }
176
192
  }
177
193
  exports.CdkDriftDetectionWorkflow = CdkDriftDetectionWorkflow;
178
194
  _a = JSII_RTTI_SYMBOL_1;
179
- CdkDriftDetectionWorkflow[_a] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDriftDetectionWorkflow", version: "1.0.0" };
195
+ CdkDriftDetectionWorkflow[_a] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDriftDetectionWorkflow", version: "1.1.1" };
180
196
  CdkDriftDetectionWorkflow.scriptCreated = false;
181
197
  function issueScript(stack, region, resultsFile) {
182
198
  // Construct a plain JS script string (no template string nesting mishaps)
@@ -278,4 +294,4 @@ function toGithubJobId(s) {
278
294
  }
279
295
  return out;
280
296
  }
281
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2RrRHJpZnREZXRlY3Rpb25Xb3JrZmxvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9DZGtEcmlmdERldGVjdGlvbldvcmtmbG93LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsOENBQTJEO0FBQzNELHVFQUFrRTtBQUNsRSxpRkFBMkU7QUFFM0UsTUFBTSxrQ0FBa0MsR0FBRyxJQUFJLENBQUM7QUFDaEQsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLENBQUM7QUFDMUMsTUFBTSw2QkFBNkIsR0FBRyxJQUFJLENBQUM7QUFDM0MsTUFBTSxrQ0FBa0MsR0FBRyxJQUFJLENBQUM7QUFDaEQsTUFBTSxvQ0FBb0MsR0FBRyxJQUFJLENBQUM7QUFDbEQsTUFBTSxnQ0FBZ0MsR0FBRyxJQUFJLENBQUM7QUFnRDlDLE1BQWEseUJBQXlCO0lBR3BDLFlBQVksS0FBcUM7UUFDL0MsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFlBQVksSUFBSSxpQkFBaUIsQ0FBQztRQUNyRCxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQzVDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDO1FBQ2hELE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDO1FBQ2hELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDOUIsTUFBTSxnQkFBZ0IsR0FBRSxLQUFLLENBQUMsZ0JBQWdCLElBQUksMkNBQTJDLENBQUM7UUFFOUYsa0VBQWtFO1FBQ2xFLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM3QyxJQUFJLG9EQUF1QixDQUFDO2dCQUMxQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87Z0JBQ3RCLFVBQVUsRUFBRSxnQkFBZ0I7YUFDN0IsQ0FBQyxDQUFDO1lBQ0gseUJBQXlCLENBQUMsYUFBYSxH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QUNwRCxzRUFBc0U7UUFDdEUsdUVBQXVFO1FBQ3ZFLDhEQUE4RDtRQUM5RCxFQUFFO1FBQ0YscUNBQXFDO1FBQ3JDLG1DQUFtQztRQUNuQyxrR0FBa0c7UUFDbEcsSUFBSTtLQUNMLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2YsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLENBQVM7SUFDNUIsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDaEYsQ0FBQztBQUdELFNBQVMsYUFBYSxDQUFDLENBQVM7SUFDOUIsNEZBQTRGO0lBQzVGLDJDQUEyQztJQUMzQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzdDLGlDQUFpQztJQUNqQyxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDOUIscUVBQXFFO0lBQ3JFLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsQyxnRkFBZ0Y7SUFDaEYsR0FBRyxHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QixrREFBa0Q7SUFDbEQsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNsQyxHQUFHLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2l0SHViLCBHaXRodWJXb3JrZmxvdyB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViJztcbmltcG9ydCB7IEpvYlBlcm1pc3Npb24gfSBmcm9tICdwcm9qZW4vbGliL2dpdGh1Yi93b3JrZmxvd3MtbW9kZWwnO1xuaW1wb3J0IHsgQ2RrRHJpZnREZXRlY3Rpb25TY3JpcHQgfSBmcm9tICcuL2Jpbi9jZGstZHJpZnQtZGV0ZWN0aW9uLXNjcmlwdCc7XG5cbmNvbnN0IGdpdGh1YkFjdGlvbnNBd3NDcmVkZW50aWFsc1ZlcnNpb24gPSAndjUnO1xuY29uc3QgZ2l0aHViQWN0aW9uc0NoZWNrb3V0VmVyc2lvbiA9ICd2NSc7XG5jb25zdCBnaXRodWJBY3Rpb25zU2V0dXBOb2RlVmVyc2lvbiA9ICd2NSc7XG5jb25zdCBnaXRodWJBY3Rpb25zVXBsb2FkQXJ0aWZhY3RWZXJzaW9uID0gJ3Y0JztcbmNvbnN0IGdpdGh1YkFjdGlvbnNEb3dubG9hZEFydGlmYWN0VmVyc2lvbiA9ICd2NSc7XG5jb25zdCBnaXRodWJBY3Rpb25zR2l0aHViU2NyaXB0VmVyc2lvbiA9ICd2OCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhY2sge1xuICByZWFkb25seSBzdGFja05hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgZHJpZnREZXRlY3Rpb25Sb2xlVG9Bc3N1bWVSZWdpb246IHN0cmluZztcbiAgcmVhZG9ubHkgZHJpZnREZXRlY3Rpb25Sb2xlVG9Bc3N1bWVBcm46IHN0cmluZztcbiAgcmVhZG9ubHkgZmFpbE9uRHJpZnQ/OiBib29sZWFuOyAvLyBpZiB0cnVlLCBmYWlsIGpvYiB3aGVuIGRyaWZ0IGRldGVjdGVkIChkZWZhdWx0IHRydWUpXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2RrRHJpZnREZXRlY3Rpb25Xb3JrZmxvd1Byb3BzIHtcbiAgcmVhZG9ubHkgc2NyaXB0T3V0cHV0UGF0aD86IHN0cmluZztcbiAgcmVhZG9ubHkgcHJvamVjdDogYW55OyAvLyBhdm9pZCBleHBvcnRpbmcgcHJvamVuIHR5cGVzIGluIHB1YmxpYyBBUElcbiAgcmVhZG9ubHkgd29ya2Zsb3dOYW1lPzogc3RyaW5nOyAvLyB3b3JrZmxvdyB3b3JrZmxvd05hbWUgKGFsc28gdXNlZCB0byBkZXJpdmUgZmlsZSB3b3JrZmxvd05hbWUpXG4gIHJlYWRvbmx5IHNjaGVkdWxlPzogc3RyaW5nOyAvLyBjcm9uIGV4cHJlc3Npb24sIGUuZy4gJzAgMCAqICogKidcbiAgcmVhZG9ubHkgY3JlYXRlSXNzdWVzPzogYm9vbGVhbjsgLy8gY3JlYXRlL3VwZGF0ZSBpc3N1ZSB3aGVuIGRyaWZ0IGRldGVjdGVkIG9uIHNjaGVkdWxlIChkZWZhdWx0IHRydWUpXG4gIHJlYWRvbmx5IG9pZGNSb2xlQXJuOiBzdHJpbmc7IC8vIGRlZmF1bHQgT0lEQyByb2xlIEFSTiB0byBhc3N1bWUgZm9yIGFsbCBzdGFja3NcbiAgcmVhZG9ubHkgb2lkY1JlZ2lvbjogc3RyaW5nOyAvLyBkZWZhdWx0IE9JREMgcmVnaW9uIHRvIGFzc3VtZSBmb3IgYWxsIHN0YWNrc1xuICByZWFkb25seSBzdGFja3M6IFN0YWNrW107XG4gIHJlYWRvbmx5IG5vZGVWZXJzaW9uPzogc3RyaW5nOyAvLyBlLmcuLCAnMjQueCdcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGhvb2sgdG8gYXBwZW5kIGFkZGl0aW9uYWwgR2l0SHViIEFjdGlvbnMgc3RlcHMgYWZ0ZXIgZHJpZnQgZGV0ZWN0aW9uIHBlciBzdGFjay5cbiAgICogWW91IGNhbiBzdXBwbHkgYSBzdGF0aWMgYXJyYXkgb2Ygc3RlcHMsIG9yIGEgZmFjdG9yeSB0aGF0IHJlY2VpdmVzIGNvbnRleHQgYW5kIHJldHVybnMgc3RlcHMuXG4gICAqL1xuICAvKipcbiAgICogT3B0aW9uYWwgYWRkaXRpb25hbCBHaXRIdWIgQWN0aW9uIHN0ZXBzIHRvIHJ1biBhZnRlciBkcmlmdCBkZXRlY3Rpb24gZm9yIGVhY2ggc3RhY2suXG4gICAqIFRoZXNlIHN0ZXBzIHJ1biBhZnRlciByZXN1bHRzIGFyZSB1cGxvYWRlZCBmb3IgZWFjaCBzdGFjay4gWW91IGNhbiBpbmNsdWRlXG4gICAqIGFueSBub3RpZmljYXRpb25zIHlvdSBsaWtlIChlLmcuLCBTbGFjaykuIFByb3ZpZGUgZXhwbGljaXQgaW5wdXRzIChlLmcuLCBwYXlsb2FkL21hcmtkb3duKVxuICAgKiBkaXJlY3RseSBpbiB5b3VyIHN0ZXAgd2l0aG91dCByZWx5aW5nIG9uIGEgcHJlLWdlbmVyYXRlZCBwYXlsb2FkLlxuICAgKi9cbiAgLy8gTk9URToganNpaSBkb2VzIG5vdCBzdXBwb3J0IGZ1bmN0aW9uIHR5cGVzIGluIHB1YmxpYyBBUElzOyB1c2UgJ2FueScgaGVyZSBhbmQgYWNjZXB0IGVpdGhlcjpcbiAgLy8gLSBBbiBhcnJheSBvZiBHaXRIdWIgc3RlcHMsIG9yXG4gIC8vIC0gQSBmdW5jdGlvbiAoY3R4OiB7IHN0YWNrOiBzdHJpbmcgfSkgPT4gR2l0SHViU3RlcFtdXG4gIC8vIFRoZSBjb25zdHJ1Y3RvciBoYW5kbGVzIGJvdGggYXQgcnVudGltZS5cbiAgcmVhZG9ubHkgcG9zdEdpdEh1YlN0ZXBzPzogYW55O1xufVxuXG50eXBlIEdpdEh1YlN0ZXAgPSB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGlkPzogc3RyaW5nO1xuICBpZj86IHN0cmluZztcbiAgdXNlcz86IHN0cmluZztcbiAgcnVuPzogc3RyaW5nO1xuICB3aXRoPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgZW52PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgY29udGludWVPbkVycm9yPzogYm9vbGVhbjtcbiAgc2hlbGw/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgY2xhc3MgQ2RrRHJpZnREZXRlY3Rpb25Xb3JrZmxvdyB7XG4gIHByaXZhdGUgc3RhdGljIHNjcmlwdENyZWF0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogQ2RrRHJpZnREZXRlY3Rpb25Xb3JrZmxvd1Byb3BzKSB7XG4gICAgY29uc3QgbmFtZSA9IHByb3BzLndvcmtmbG93TmFtZSA/PyAnZHJpZnQtZGV0ZWN0aW9uJztcbiAgICBjb25zdCBmaWxlTmFtZSA9IHRvS2ViYWJDYXNlKG5hbWUpICsgJy55bWwnO1xuICAgIGNvbnN0IG5vZGVWZXJzaW9uID0gcHJvcHMubm9kZVZlcnNpb24gPz8gJzI0LngnO1xuICAgIGNvbnN0IGNyZWF0ZUlzc3VlcyA9IHByb3BzLmNyZWF0ZUlzc3VlcyA/PyB0cnVlO1xuICAgIGNvbnN0IHByb2plY3QgPSBwcm9wcy5wcm9qZWN0O1xuICAgIGNvbnN0IHNjcmlwdE91dHB1dFBhdGg9IHByb3BzLnNjcmlwdE91dHB1dFBhdGggPz8gJy5naXRodWIvd29ya2Zsb3dzL3NjcmlwdHMvZGV0ZWN0LWRyaWZ0LnRzJztcblxuICAgIC8vIE9ubHkgY3JlYXRlIHRoZSBkcmlmdCBkZXRlY3Rpb24gc2NyaXB0IG9uY2UgdG8gYXZvaWQgY29sbGlzaW9uc1xuICAgIGlmICghQ2RrRHJpZnREZXRlY3Rpb25Xb3JrZmxvdy5zY3JpcHRDcmVhdGVkKSB7XG4gICAgICBuZXcgQ2RrRHJpZnREZXRlY3Rpb25TY3JpcHQoe1xuICAgICAgICBwcm9qZWN0OiBwcm9wcy5wcm9qZWN0LFxuICAgICAgICBvdXRwdXRQYXRoOiBzY3JpcHRPdXRwdXRQYXRoLFxuICAgICAgfSk7XG4gICAgICBDZGtEcmlmdERldGVjdGlvbldvcmtmbG93LnNjcmlwdENyZWF0ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGdoID0gKHByb2plY3QgYXMgYW55KS5naXRodWIgPz8gbmV3IEdpdEh1Yihwcm9qZWN0KTtcbiAgICBjb25zdCB3b3JrZmxvdyA9IG5ldyBHaXRodWJXb3JrZmxvdyhnaCwgbmFtZSwgeyBmaWxlTmFtZSB9KTtcblxuICAgIC8vIHRyaWdnZXJzOiBzY2hlZHVsZSArIG1hbnVhbCBkaXNwYXRjaCB3aXRoIHN0YWNrIGNob2ljZVxuICAgIGNvbnN0IHN0YWNrQ2hvaWNlcyA9IFsnYWxsJywgLi4ucHJvcHMuc3RhY2tzLm1hcCgocykgPT4gcy5zdGFja05hbWUpXTtcbiAgICB3b3JrZmxvdy5vbih7XG4gICAgICBzY2hlZHVsZTogcHJvcHMuc2NoZWR1bGUgPyBbeyBjcm9uOiBwcm9wcy5zY2hlZHVsZSB9XSA6IHVuZGVmaW5lZCxcbiAgICAgIHdvcmtmbG93RGlzcGF0Y2g6IHtcbiAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgc3RhY2s6IHtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlN0YWNrIHRvIGNoZWNrIGZvciBkcmlmdCAoJ2FsbCcgdG8gcnVuIGV2ZXJ5IHN0YWNrKVwiLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgdHlwZTogJ2Nob2ljZScsXG4gICAgICAgICAgICBvcHRpb25zOiBzdGFja0Nob2ljZXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBPbmUgam9iIHBlciBzdGFja1xuICAgIGNvbnN0IGpvYnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblxuICAgIGZvciAoY29uc3Qgc3RhY2sgb2YgcHJvcHMuc3RhY2tzKSB7XG4gICAgICBjb25zdCBzYW5pdGl6ZWRTdGFja05hbWUgPSB0b0tlYmFiQ2FzZSh0b0dpdGh1YkpvYklkKHN0YWNrLnN0YWNrTmFtZSkpO1xuICAgICAgY29uc3Qgb3JpZ2luYWxTdGFja05hbWUgPSBzdGFjay5zdGFja05hbWU7XG4gICAgICBjb25zdCBqb2JJZCA9IGBkcmlmdC0ke3Nhbml0aXplZFN0YWNrTmFtZX1gO1xuICAgICAgY29uc3QgcmVzdWx0c0ZpbGUgPSBgZHJpZnQtcmVzdWx0cy0ke3Nhbml0aXplZFN0YWNrTmFtZX0uanNvbmA7XG4gICAgICBjb25zdCBpbm5lckNvbmQgPSBcImdpdGh1Yi5ldmVudF9uYW1lID09ICdzY2hlZHVsZScgfHwgIWdpdGh1Yi5ldmVudC5pbnB1dHMuc3RhY2sgfHwgZ2l0aHViLmV2ZW50LmlucHV0cy5zdGFjayA9PSAnYWxsJyB8fCBnaXRodWIuZXZlbnQuaW5wdXRzLnN0YWNrID09ICdcIiArIHNhbml0aXplZFN0YWNrTmFtZSArIFwiJyB8fCBnaXRodWIuZXZlbnQuaW5wdXRzLnN0YWNrID09ICdcIiArIG9yaWdpbmFsU3RhY2tOYW1lICsgXCInXCI7XG4gICAgICBjb25zdCBjb25kRXhwciA9ICcke3sgJyArIGlubmVyQ29uZCArICcgfX0nO1xuICAgICAgY29uc3Qgbm90Q29uZEV4cHIgPSAnJHt7ICEoJyArIGlubmVyQ29uZCArICcpIH19JztcblxuICAgICAgY29uc3QgcmF3UG9zdCA9IHByb3BzLnBvc3RHaXRIdWJTdGVwcztcbiAgICAgIGNvbnN0IHBvc3RTdGVwczogR2l0SHViU3RlcFtdID0gdHlwZW9mIHJhd1Bvc3QgPT09ICdmdW5jdGlvbicgPyAocmF3UG9zdCBhcyAoY3R4OiB7IHN0YWNrOiBzdHJpbmcgfSkgPT4gR2l0SHViU3RlcFtdKSh7IHN0YWNrOiBzYW5pdGl6ZWRTdGFja05hbWUgfSkgOiAocmF3UG9zdCA/PyBbXSk7XG5cbiAgICAgIGpvYnNbam9iSWRdID0ge1xuICAgICAgICBuYW1lOiBgRHJpZnQgRGV0ZWN0aW9uIC0gJHtzYW5pdGl6ZWRTdGFja05hbWV9YCxcbiAgICAgICAgcnVuc09uOiBbJ3VidW50dS1sYXRlc3QnXSxcbiAgICAgICAgcGVybWlzc2lvbnM6IHtcbiAgICAgICAgICBjb250ZW50czogSm9iUGVybWlzc2lvbi5SRUFELFxuICAgICAgICAgIGlkVG9rZW46IEpvYlBlcm1pc3Npb24uV1JJVEUsXG4gICAgICAgICAgaXNzdWVzOiBKb2JQZXJtaXNzaW9uLldSSVRFLFxuICAgICAgICB9LFxuICAgICAgICBlbnY6IHtcbiAgICAgICAgICBBV1NfREVGQVVMVF9SRUdJT046IHN0YWNrLmRyaWZ0RGV0ZWN0aW9uUm9sZVRvQXNzdW1lUmVnaW9uLFxuICAgICAgICAgIEFXU19SRUdJT046IHN0YWNrLmRyaWZ0RGV0ZWN0aW9uUm9sZVRvQXNzdW1lUmVnaW9uLFxuICAgICAgICAgIERSSUZUX0RFVEVDVElPTl9PVVRQVVQ6IHJlc3VsdHNGaWxlLFxuICAgICAgICAgIFNUQUNLX0lEOiBzYW5pdGl6ZWRTdGFja05hbWUsXG4gICAgICAgICAgU1RBQ0tfTkFNRTogc3RhY2suc3RhY2tOYW1lLFxuICAgICAgICB9LFxuICAgICAgICAvLyBObyBqb2ItbGV2ZWwgY29uZGl0aW9uOyB3ZSBnYXRlIHN0ZXBzIHNvIHRoZSBqb2IgYWx3YXlzIGNvbXBsZXRlcyBhbmQgc3VtbWFyeSBjYW4gcnVuXG4gICAgICAgIHN0ZXBzOiBbXG4gICAgICAgICAgeyBuYW1lOiAnU2tpcCAoc3RhY2sgbm90IHNlbGVjdGVkKScsIGlmOiBub3RDb25kRXhwciwgcnVuOiAnZWNobyBcIlN0YWNrIG5vdCBzZWxlY3RlZDsgc2tpcHBpbmcgZHJpZnQgZGV0ZWN0aW9uIGZvciB0aGlzIGpvYi5cIicgfSxcbiAgICAgICAgICB7IG5hbWU6ICdDaGVja291dCcsIGlmOiBjb25kRXhwciwgdXNlczogYGFjdGlvbnMvY2hlY2tvdXRAJHtnaXRodWJBY3Rpb25zQ2hlY2tvdXRWZXJzaW9ufWAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnU2V0dXAgTm9kZS5qcycsXG4gICAgICAgICAgICBpZjogY29uZEV4cHIsXG4gICAgICAgICAgICB1c2VzOiBgYWN0aW9ucy9zZXR1cC1ub2RlQCR7Z2l0aHViQWN0aW9uc1NldHVwTm9kZVZlcnNpb259YCxcbiAgICAgICAgICAgIHdpdGg6IHsgJ25vZGUtdmVyc2lvbic6IG5vZGVWZXJzaW9uIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IG5hbWU6ICdJbnN0YWxsIGRlcGVuZGVuY2llcycsIGlmOiBjb25kRXhwciwgcnVuOiAneWFybiBpbnN0YWxsIC0tZnJvemVuLWxvY2tmaWxlIHx8IG5wbSBjaScsIGVudjogeyBHSVRIVUJfVE9LRU46ICcke3sgc2VjcmV0cy5HSVRIVUJfVE9LRU4gfX0nIH0gfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQVdTIENyZWRlbnRpYWxzJyxcbiAgICAgICAgICAgIGlmOiBjb25kRXhwcixcbiAgICAgICAgICAgIGlkOiAnY3JlZHMnLFxuICAgICAgICAgICAgdXNlczogYGF3cy1hY3Rpb25zL2NvbmZpZ3VyZS1hd3MtY3JlZGVudGlhbHNAJHtnaXRodWJBY3Rpb25zQXdzQ3JlZGVudGlhbHNWZXJzaW9ufWAsXG4gICAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICAgICdyb2xlLXRvLWFzc3VtZSc6IHByb3BzLm9pZGNSb2xlQXJuLFxuICAgICAgICAgICAgICAncm9sZS1zZXNzaW9uLW5hbWUnOiAnR2l0SHViQWN0aW9uJyxcbiAgICAgICAgICAgICAgJ2F3cy1yZWdpb24nOiBwcm9wcy5vaWRjUmVnaW9uLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdBc3N1bWUgRHJpZnQgRGV0ZWN0aW9uIFJvbGUnLFxuICAgICAgICAgICAgaWY6IGNvbmRFeHByLFxuICAgICAgICAgICAgdXNlczogYGF3cy1hY3Rpb25zL2NvbmZpZ3VyZS1hd3MtY3JlZGVudGlhbHNAJHtnaXRodWJBY3Rpb25zQXdzQ3JlZGVudGlhbHNWZXJzaW9ufWAsXG4gICAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICAgICdyb2xlLXRvLWFzc3VtZSc6IHN0YWNrLmRyaWZ0RGV0ZWN0aW9uUm9sZVRvQXNzdW1lQXJuLFxuICAgICAgICAgICAgICAncm9sZS1jaGFpbmluZyc6IHRydWUsXG4gICAgICAgICAgICAgICdyb2xlLXNraXAtc2Vzc2lvbi10YWdnaW5nJzogdHJ1ZSxcbiAgICAgICAgICAgICAgJ2F3cy1yZWdpb24nOiBzdGFjay5kcmlmdERldGVjdGlvblJvbGVUb0Fzc3VtZVJlZ2lvbixcbiAgICAgICAgICAgICAgJ2F3cy1hY2Nlc3Mta2V5LWlkJzogJyR7eyBzdGVwcy5jcmVkcy5vdXRwdXRzLmF3cy1hY2Nlc3Mta2V5LWlkIH19JyxcbiAgICAgICAgICAgICAgJ2F3cy1zZWNyZXQtYWNjZXNzLWtleSc6ICcke3sgc3RlcHMuY3JlZHMub3V0cHV0cy5hd3Mtc2VjcmV0LWFjY2Vzcy1rZXkgfX0nLFxuICAgICAgICAgICAgICAnYXdzLXNlc3Npb24tdG9rZW4nOiAnJHt7IHN0ZXBzLmNyZWRzLm91dHB1dHMuYXdzLXNlc3Npb24tdG9rZW4gfX0nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdEZXRlY3QgZHJpZnQnLFxuICAgICAgICAgICAgaWY6IGNvbmRFeHByLFxuICAgICAgICAgICAgaWQ6ICdkcmlmdCcsXG4gICAgICAgICAgICBjb250aW51ZU9uRXJyb3I6IHRydWUsIC8vIGFsbG93IGFydGlmYWN0IHVwbG9hZCBhbmQgaXNzdWUgY3JlYXRpb24gZXZlbiB3aGVuIGRyaWZ0IGlzIGRldGVjdGVkXG4gICAgICAgICAgICBydW46IFtcbiAgICAgICAgICAgICAgJ3NldCArZScsXG4gICAgICAgICAgICAgIC8vIFVzZSB0aGUgYnVuZGxlZCBzY3JpcHQgZnJvbSB0aGlzIHBhY2thZ2VcbiAgICAgICAgICAgICAgJ25vZGUgLi9ub2RlX21vZHVsZXMvQGpqcmF3bGlucy9jZGstZGlmZi1wci1naXRodWItYWN0aW9uL2xpYi9iaW4vZGV0ZWN0LWRyaWZ0LmpzJyxcbiAgICAgICAgICAgICAgJ3N0YXR1cz0kPycsXG4gICAgICAgICAgICAgICdpZiBbIC1mIFwiJERSSUZUX0RFVEVDVElPTl9PVVRQVVRcIiBdOyB0aGVuIGVjaG8gXCJSZXN1bHRzIGZpbGUgY3JlYXRlZDogJERSSUZUX0RFVEVDVElPTl9PVVRQVVRcIjsgZmknLFxuICAgICAgICAgICAgICAvLyBFeHBvc2UgdXNlZnVsIG91dHB1dHMgZm9yIGRvd25zdHJlYW0gc3RlcHNcbiAgICAgICAgICAgICAgXCJTVEFDS19BUk49JChhd3MgY2xvdWRmb3JtYXRpb24gZGVzY3JpYmUtc3RhY2tzIC0tc3RhY2stbmFtZSBcXFwiJFNUQUNLX05BTUVcXFwiIC0tcXVlcnkgJ1N0YWNrc1swXS5TdGFja0lkJyAtLW91dHB1dCB0ZXh0IDI+L2Rldi9udWxsIHx8IHRydWUpXCIsXG4gICAgICAgICAgICAgICdlY2hvIFwic3RhY2stYXJuPSRTVEFDS19BUk5cIiA+PiBcIiRHSVRIVUJfT1VUUFVUXCInLFxuICAgICAgICAgICAgICAnZXhpdCAkc3RhdHVzJyxcbiAgICAgICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgICAgICBlbnY6IHtcbiAgICAgICAgICAgICAgU1RBQ0tfTkFNRTogc3RhY2suc3RhY2tOYW1lLFxuICAgICAgICAgICAgICBBV1NfUkVHSU9OOiBzdGFjay5kcmlmdERldGVjdGlvblJvbGVUb0Fzc3VtZVJlZ2lvbixcbiAgICAgICAgICAgICAgRFJJRlRfREVURUNUSU9OX09VVFBVVDogcmVzdWx0c0ZpbGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ1VwbG9hZCByZXN1bHRzJyxcbiAgICAgICAgICAgIGlmOiBjb25kRXhwcixcbiAgICAgICAgICAgIHVzZXM6IGBhY3Rpb25zL3VwbG9hZC1hcnRpZmFjdEAke2dpdGh1YkFjdGlvbnNVcGxvYWRBcnRpZmFjdFZlcnNpb259YCxcbiAgICAgICAgICAgIHdpdGg6IHsgJ25hbWUnOiBgZHJpZnQtcmVzdWx0cy0ke3Nhbml0aXplZFN0YWNrTmFtZX1gLCAncGF0aCc6IHJlc3VsdHNGaWxlLCAnaWYtbm8tZmlsZXMtZm91bmQnOiAnaWdub3JlJyB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgLi4uKFxuICAgICAgICAgICAgY3JlYXRlSXNzdWVzXG4gICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6ICdDcmVhdGUgSXNzdWUgb24gRHJpZnQnLFxuICAgICAgICAgICAgICAgICAgaWY6IFwiYWx3YXlzKCkgJiYgc3RlcHMuZHJpZnQub3V0Y29tZSA9PSAnZmFpbHVyZSdcIixcbiAgICAgICAgICAgICAgICAgIGlkOiAnaXNzdWUnLFxuICAgICAgICAgICAgICAgICAgdXNlczogYGFjdGlvbnMvZ2l0aHViLXNjcmlwdEAke2dpdGh1YkFjdGlvbnNHaXRodWJTY3JpcHRWZXJzaW9ufWAsXG4gICAgICAgICAgICAgICAgICB3aXRoOiB7ICdyZXN1bHQtZW5jb2RpbmcnOiAnc3RyaW5nJywgJ3NjcmlwdCc6IGlzc3VlU2NyaXB0KHNhbml0aXplZFN0YWNrTmFtZSwgc3RhY2suZHJpZnREZXRlY3Rpb25Sb2xlVG9Bc3N1bWVSZWdpb24sIHJlc3VsdHNGaWxlKSB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgOiBbXVxuICAgICAgICAgICksXG4gICAgICAgICAgLi4ucG9zdFN0ZXBzLm1hcCgoc3RlcCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgczogYW55ID0geyAuLi4oc3RlcCBhcyBhbnkpIH07XG4gICAgICAgICAgICAvLyBCeSBkZWZhdWx0LCBvbmx5IHJ1biBleHRyYSBub3RpZmljYXRpb24gc3RlcHMgd2hlbiBkcmlmdCBvY2N1cnNcbiAgICAgICAgICAgIHMuaWYgPSBzLmlmID8/IFwiYWx3YXlzKCkgJiYgc3RlcHMuZHJpZnQub3V0Y29tZSA9PSAnZmFpbHVyZSdcIjtcbiAgICAgICAgICAgIHJldHVybiBzO1xuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBzdW1tYXJ5IGFnZ3JlZ2F0b3Igam9iXG4gICAgam9ic1snZHJpZnQtc3VtbWFyeSddID0ge1xuICAgICAgbmFtZTogJ0RyaWZ0IERldGVjdGlvbiBTdW1tYXJ5JyxcbiAgICAgIG5lZWRzOiBPYmplY3Qua2V5cyhqb2JzKS5maWx0ZXIoKGopID0+IGouc3RhcnRzV2l0aCgnZHJpZnQtJykgJiYgaiAhPT0gJ2RyaWZ0LXN1bW1hcnknKSxcbiAgICAgIHJ1bnNPbjogWyd1YnVudHUtbGF0ZXN0J10sXG4gICAgICBwZXJtaXNzaW9uczogeyBjb250ZW50czogSm9iUGVybWlzc2lvbi5SRUFEIH0sXG4gICAgICBzdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0Rvd25sb2FkIGFsbCBhcnRpZmFjdHMnLFxuICAgICAgICAgIHVzZXM6IGBhY3Rpb25zL2Rvd25sb2FkLWFydGlmYWN0QCR7Z2l0aHViQWN0aW9uc0Rvd25sb2FkQXJ0aWZhY3RWZXJzaW9ufWAsXG4gICAgICAgICAgd2l0aDogeyBwYXRoOiAnZHJpZnQtcmVzdWx0cycgfSxcbiAgICAgICAgfSxcbiAgICAgICAgeyBuYW1lOiAnR2VuZXJhdGUgc3VtbWFyeScsIHNoZWxsOiAnYmFzaCcsIHJ1bjogc3VtbWFyeVNjcmlwdCgpIH0sXG4gICAgICBdLFxuICAgIH07XG5cbiAgICB3b3JrZmxvdy5hZGRKb2JzKGpvYnMpO1xuICB9XG59XG5cblxuZnVuY3Rpb24gaXNzdWVTY3JpcHQoc3RhY2s6IHN0cmluZywgcmVnaW9uOiBzdHJpbmcsIHJlc3VsdHNGaWxlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBDb25zdHJ1Y3QgYSBwbGFpbiBKUyBzY3JpcHQgc3RyaW5nIChubyB0ZW1wbGF0ZSBzdHJpbmcgbmVzdGluZyBtaXNoYXBzKVxuICBjb25zdCBsaW5lcyA9IFtcbiAgICBcImNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTtcIixcbiAgICBgY29uc3QgcmVzdWx0c0ZpbGUgPSAnJHtyZXN1bHRzRmlsZX0nO2AsXG4gICAgXCJpZiAoIWZzLmV4aXN0c1N5bmMocmVzdWx0c0ZpbGUpKSB7IGNvbnNvbGUubG9nKCdObyByZXN1bHRzIGZpbGUgZm91bmQnKTsgcmV0dXJuICdOT19SRVNVTFRTJzsgfVwiLFxuICAgIFwiY29uc3QgcmVzdWx0cyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHJlc3VsdHNGaWxlLCAndXRmOCcpKTtcIixcbiAgICBcImNvbnN0IGRyaWZ0ZWRTdGFja3MgPSByZXN1bHRzLmZpbHRlcihyID0+IHIuZHJpZnRTdGF0dXMgPT09ICdEUklGVEVEJyk7XCIsXG4gICAgXCJpZiAoZHJpZnRlZFN0YWNrcy5sZW5ndGggPT09IDApIHsgY29uc29sZS5sb2coJ05vIGRyaWZ0IGRldGVjdGVkJyk7IHJldHVybiAnTk9fRFJJRlQnOyB9XCIsXG4gICAgYGNvbnN0IHRpdGxlID0gJ0RyaWZ0IERldGVjdGVkIGluICR7c3RhY2t9JztgLFxuICAgIGBsZXQgYm9keSA9ICcjIyBEcmlmdCBEZXRlY3Rpb24gUmVwb3J0XFxcXG5cXFxcbicgKyAnKipTdGFjazoqKiAke3N0YWNrfVxcXFxuJyArICcqKlJlZ2lvbjoqKiAke3JlZ2lvbn1cXFxcbicgKyAnKipUaW1lOioqICcgKyBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkgKyAnXFxcXG5cXFxcbic7YCxcbiAgICBcImJvZHkgKz0gJyMjIyBTdW1tYXJ5XFxcXG4nO1wiLFxuICAgIFwiYm9keSArPSAnLSBUb3RhbCBzdGFja3MgY2hlY2tlZDogJyArIHJlc3VsdHMubGVuZ3RoICsgJ1xcXFxuJztcIixcbiAgICBcImJvZHkgKz0gJy0gRHJpZnRlZCBzdGFja3M6ICcgKyBkcmlmdGVkU3RhY2tzLmxlbmd0aCArICdcXFxcblxcXFxuJztcIixcbiAgICBcImJvZHkgKz0gJyMjIyBEcmlmdGVkIFN0YWNrc1xcXFxuJztcIixcbiAgICAnZm9yIChjb25zdCBzIG9mIGRyaWZ0ZWRTdGFja3MpIHsnLFxuICAgICcgIGNvbnN0IHJlc291cmNlcyA9IHMuZHJpZnRlZFJlc291cmNlcyB8fCBbXTsnLFxuICAgIFwiICBib2R5ICs9ICcjIyMjICcgKyBzLnN0YWNrTmFtZSArICdcXFxcbic7XCIsXG4gICAgXCIgIGJvZHkgKz0gJy0gRHJpZnRlZCByZXNvdXJjZXM6ICcgKyByZXNvdXJjZXMubGVuZ3RoICsgJ1xcXFxuJztcIixcbiAgICBcIiAgZm9yIChjb25zdCByIG9mIHJlc291cmNlcykgeyBib2R5ICs9ICcgIC0gJyArIHIubG9naWNhbFJlc291cmNlSWQgKyAnICgnICsgci5yZXNvdXJjZVR5cGUgKyAnKVxcXFxuJzsgfVwiLFxuICAgIFwiICBib2R5ICs9ICdcXFxcbic7XCIsXG4gICAgJ30nLFxuICAgIFwiYm9keSArPSAnIyMjIEFjdGlvbiBSZXF1aXJlZFxcXFxuJyArICdQbGVhc2UgcmV2aWV3IHRoZSBkcmlmdGVkIHJlc291cmNlcyBhbmQgZWl0aGVyOlxcXFxuMS4gVXBkYXRlIHRoZSBpbmZyYXN0cnVjdHVyZSBjb2RlIHRvIG1hdGNoIHRoZSBhY3R1YWwgc3RhdGVcXFxcbjIuIFJlc3RvcmUgdGhlIHJlc291cmNlcyB0byBtYXRjaCB0aGUgZXhwZWN0ZWQgc3RhdGVcXFxcblxcXFxuJztcIixcbiAgICAnYm9keSArPSBgW1ZpZXcgd29ya2Zsb3cgcnVuXSgke2NvbnRleHQuc2VydmVyVXJsfS8ke2NvbnRleHQucmVwby5vd25lcn0vJHtjb250ZXh0LnJlcG8ucmVwb30vYWN0aW9ucy9ydW5zLyR7Y29udGV4dC5ydW5JZH0pYDsnLFxuICAgIC8vIExpc3Qgb3IgdXBkYXRlIGFuIGlzc3VlIHdpdGggbGFiZWxzXG4gICAgYGNvbnN0IGlzc3VlcyA9IGF3YWl0IGdpdGh1Yi5yZXN0Lmlzc3Vlcy5saXN0Rm9yUmVwbyh7IG93bmVyOiBjb250ZXh0LnJlcG8ub3duZXIsIHJlcG86IGNvbnRleHQucmVwby5yZXBvLCBzdGF0ZTogJ29wZW4nLCBsYWJlbHM6IFsnZHJpZnQtZGV0ZWN0aW9uJywgJyR7c3RhY2t9J10gfSk7YCxcbiAgICAnbGV0IGlzc3VlTnVtYmVyOycsXG4gICAgJ2lmIChpc3N1ZXMuZGF0YS5sZW5ndGggPT09IDApIHsnLFxuICAgIGAgIGNvbnN0IGNyZWF0ZWQgPSBhd2FpdCBnaXRodWIucmVzdC5pc3N1ZXMuY3JlYXRlKHsgb3duZXI6IGNvbnRleHQucmVwby5vd25lciwgcmVwbzogY29udGV4dC5yZXBvLnJlcG8sIHRpdGxlLCBib2R5LCBsYWJlbHM6IFsnZHJpZnQtZGV0ZWN0aW9uJywgJyR7c3RhY2t9J10gfSk7YCxcbiAgICAnICBpc3N1ZU51bWJlciA9IGNyZWF0ZWQuZGF0YS5udW1iZXI7JyxcbiAgICAnfSBlbHNlIHsnLFxuICAgICcgIGNvbnN0IGlzc3VlID0gaXNzdWVzLmRhdGFbMF07JyxcbiAgICAnICBpc3N1ZU51bWJlciA9IGlzc3VlLm51bWJlcjsnLFxuICAgICcgIGF3YWl0IGdpdGh1Yi5yZXN0Lmlzc3Vlcy5jcmVhdGVDb21tZW50KHsgb3duZXI6IGNvbnRleHQucmVwby5vd25lciwgcmVwbzogY29udGV4dC5yZXBvLnJlcG8sIGlzc3VlX251bWJlcjogaXNzdWUubnVtYmVyLCBib2R5IH0pOycsXG4gICAgJ30nLFxuICAgICdyZXR1cm4gU3RyaW5nKGlzc3VlTnVtYmVyID8/IFwiXCIpOycsXG4gIF07XG4gIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcbn1cblxuXG5mdW5jdGlvbiBzdW1tYXJ5U2NyaXB0KCk6IHN0cmluZyB7XG4gIHJldHVybiBbXG4gICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAnc2V0IC1lJyxcbiAgICAnZWNobyBcIiMjIERyaWZ0IERldGVjdGlvbiBTdW1tYXJ5XCIgPj4gJEdJVEhVQl9TVEVQX1NVTU1BUlknLFxuICAgICdlY2hvIFwiXCIgPj4gJEdJVEhVQl9TVEVQX1NVTU1BUlknLFxuICAgICcnLFxuICAgICd0b3RhbF9zdGFja3M9MCcsXG4gICAgJ3RvdGFsX2RyaWZ0ZWQ9MCcsXG4gICAgJ3RvdGFsX2Vycm9ycz0wJyxcbiAgICAnJyxcbiAgICAnc2hvcHQgLXMgbnVsbGdsb2InLFxuICAgICdmb3IgZmlsZSBpbiBkcmlmdC1yZXN1bHRzLSouanNvbiBkcmlmdC1yZXN1bHRzLyovZHJpZnQtcmVzdWx0cy0qLmpzb247IGRvJyxcbiAgICAnICBpZiBbWyAtZiBcIiRmaWxlXCIgXV07IHRoZW4nLFxuICAgICcgICAgc3RhY2s9JChiYXNlbmFtZSBcIiRmaWxlXCIgfCBzZWQgLUUgXFxcInMvXmRyaWZ0LXJlc3VsdHMtKFteLl0rKVxcXFwuanNvbiQvXFxcXDEvXFxcIiknLFxuICAgICcgICAgZWNobyBcIiMjIyBTdGFjazogJHN0YWNrXCIgPj4gJEdJVEhVQl9TVEVQX1NVTU1BUlknLFxuICAgICcgICAganEgLXIgXFwnJyArXG4gICAgICAnLiBhcyAkcmVzdWx0cyB8XFxuJyArXG4gICAgICAnXCItIFRvdGFsIHN0YWNrczogXCIgKyAoJHJlc3VsdHMgfCBsZW5ndGggfCB0b3N0cmluZykgKyBcIlxcXFxuXCIgK1xcbicgK1xuICAgICAgJ1wiLSBEcmlmdGVkOiBcIiArIChbLltdIHwgc2VsZWN0KC5kcmlmdFN0YXR1cyA9PSBcIkRSSUZURURcIildIHwgbGVuZ3RoIHwgdG9zdHJpbmcpICsgXCJcXFxcblwiICtcXG4nICtcbiAgICAgICdcIi0gRXJyb3JzOiBcIiArIChbLltdIHwgc2VsZWN0KC5lcnJvcildIHwgbGVuZ3RoIHwgdG9zdHJpbmcpICsgXCJcXFxcblwiICtcXG4nICtcbiAgICAgICcoWy5bXSB8IHNlbGVjdCguZHJpZnRTdGF0dXMgPT0gXCJEUklGVEVEXCIpXSB8IGlmIGxlbmd0aCA+IDAgdGhlbiBcIlxcXFxuKipEcmlmdGVkIHN0YWNrczoqKlxcXFxuXCIgKyAobWFwKFwiICAtIFwiICsgLnN0YWNrTmFtZSArIFwiIChcIiArICgoLmRyaWZ0ZWRSZXNvdXJjZXMgLy8gW10pIHwgbGVuZ3RoIHwgdG9zdHJpbmcpICsgXCIgcmVzb3VyY2VzKVwiKSB8IGpvaW4oXCJcXFxcblwiKSkgZWxzZSBcIlwiIGVuZClcXG4nICtcbiAgICAnXFwnJyArXG4gICAgJyBcIiRmaWxlXCIgPj4gJEdJVEhVQl9TVEVQX1NVTU1BUlknLFxuICAgICcgICAgZWNobyBcIlwiID4+ICRHSVRIVUJfU1RFUF9TVU1NQVJZJyxcbiAgICAnICAgIHRvdGFsX3N0YWNrcz0kKCh0b3RhbF9zdGFja3MgKyAkKGpxIFxcXCJsZW5ndGhcXFwiIFxcXCIkZmlsZVxcXCIpKSknLFxuICAgICcgICAgdG90YWxfZHJpZnRlZD0kKCh0b3RhbF9kcmlmdGVkICsgJChqcSBcXFwiWy5bXSB8IHNlbGVjdCguZHJpZnRTdGF0dXMgPT0gXFxcXFxcXCJEUklGVEVEXFxcXFxcXCIpXSB8IGxlbmd0aFxcXCIgXFxcIiRmaWxlXFxcIikpKScsXG4gICAgJyAgICB0b3RhbF9lcnJvcnM9JCgodG90YWxfZXJyb3JzICsgJChqcSBcXFwiWy5bXSB8IHNlbGVjdCguZXJyb3IpXSB8IGxlbmd0aFxcXCIgXFxcIiRmaWxlXFxcIikpKScsXG4gICAgJyAgZmknLFxuICAgICdkb25lJyxcbiAgICAnJyxcbiAgICAnZWNobyBcIiMjIyBPdmVyYWxsIFN1bW1hcnlcIiA+PiAkR0lUSFVCX1NURVBfU1VNTUFSWScsXG4gICAgJ2VjaG8gXCItIFRvdGFsIHN0YWNrcyBjaGVja2VkOiAkdG90YWxfc3RhY2tzXCIgPj4gJEdJVEhVQl9TVEVQX1NVTU1BUlknLFxuICAgICdlY2hvIFwiLSBUb3RhbCBkcmlmdGVkIHN0YWNrczogJHRvdGFsX2RyaWZ0ZWRcIiA+PiAkR0lUSFVCX1NURVBfU1VNTUFSWScsXG4gICAgJ2VjaG8gXCItIFRvdGFsIGVycm9yczogJHRvdGFsX2Vycm9yc1wiID4+ICRHSVRIVUJfU1RFUF9TVU1NQVJZJyxcbiAgICAnJyxcbiAgICAnaWYgW1sgJHRvdGFsX2RyaWZ0ZWQgLWd0IDAgXV07IHRoZW4nLFxuICAgICcgIGVjaG8gXCJcIiA+PiAkR0lUSFVCX1NURVBfU1VNTUFSWScsXG4gICAgJyAgZWNobyBcIuKaoO+4jyAqKkFjdGlvbiByZXF1aXJlZDoqKiBEcmlmdCBkZXRlY3RlZCBpbiAkdG90YWxfZHJpZnRlZCBzdGFja3NcIiA+PiAkR0lUSFVCX1NURVBfU1VNTUFSWScsXG4gICAgJ2ZpJyxcbiAgXS5qb2luKCdcXG4nKTtcbn1cblxuZnVuY3Rpb24gdG9LZWJhYkNhc2Uoczogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHMucmVwbGFjZSgvW15hLXpBLVowLTldKy9nLCAnLScpLnJlcGxhY2UoL14tK3wtKyQvZywgJycpLnRvTG93ZXJDYXNlKCk7XG59XG5cblxuZnVuY3Rpb24gdG9HaXRodWJKb2JJZChzOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBHaXRIdWIgam9iX2lkIG11c3Qgc3RhcnQgd2l0aCBhIGxldHRlciBvciB1bmRlcnNjb3JlIGFuZCBjb250YWluIG9ubHkgQS1aYS16MC05LCAnLScsICdfJ1xuICAvLyAxKSBSZXBsYWNlIGFueSBkaXNhbGxvd2VkIGNoYXJzIHdpdGggJy0nXG4gIGxldCBvdXQgPSBzLnJlcGxhY2UoL1teQS1aYS16MC05Xy1dKy9nLCAnLScpO1xuICAvLyAyKSBDb2xsYXBzZSBjb25zZWN1dGl2ZSBkYXNoZXNcbiAgb3V0ID0gb3V0LnJlcGxhY2UoLy0rL2csICctJyk7XG4gIC8vIDMpIFRyaW0gbGVhZGluZy90cmFpbGluZyBkYXNoZXMgKHVuZGVyc2NvcmVzIGFyZSBhbGxvd2VkIGF0IHN0YXJ0KVxuICBvdXQgPSBvdXQucmVwbGFjZSgvXi0rfC0rJC9nLCAnJyk7XG4gIC8vIDQpIExvd2VyY2FzZSBmb3IgY29uc2lzdGVuY3kgKG5vdCByZXF1aXJlZCBieSBHaXRIdWIgYnV0IGtlZXBzIHRoaW5ncyBzdGFibGUpXG4gIG91dCA9IG91dC50b0xvd2VyQ2FzZSgpO1xuICAvLyA1KSBFbnN1cmUgaXQgc3RhcnRzIHdpdGggYSBsZXR0ZXIgb3IgdW5kZXJzY29yZVxuICBpZiAoIW91dCB8fCAhL15bYS16X10vaS50ZXN0KG91dCkpIHtcbiAgICBvdXQgPSBgcy0ke291dH1gO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iXX0=
297
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2RrRHJpZnREZXRlY3Rpb25Xb3JrZmxvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9DZGtEcmlmdERldGVjdGlvbldvcmtmbG93LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsOENBQTJEO0FBQzNELHVFQUFrRTtBQUNsRSxpRkFBMkU7QUFFM0UsTUFBTSxrQ0FBa0MsR0FBRyxJQUFJLENBQUM7QUFDaEQsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLENBQUM7QUFDMUMsTUFBTSw2QkFBNkIsR0FBRyxJQUFJLENBQUM7QUFDM0MsTUFBTSxrQ0FBa0MsR0FBRyxJQUFJLENBQUM7QUFDaEQsTUFBTSxvQ0FBb0MsR0FBRyxJQUFJLENBQUM7QUFDbEQsTUFBTSxnQ0FBZ0MsR0FBRyxJQUFJLENBQUM7QUFrRDlDLE1BQWEseUJBQXlCO0lBR3BDLFlBQVksS0FBcUM7UUFDL0MsOEJBQThCO1FBQzlCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV0QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsWUFBWSxJQUFJLGlCQUFpQixDQUFDO1FBQ3JELE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDNUMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUM7UUFDaEQsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUM7UUFDaEQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUM5QixNQUFNLGdCQUFnQixHQUFFLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSwyQ0FBMkMsQ0FBQztRQUU5RixrRUFBa0U7UUFDbEUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzdDLElBQUksb0RBQXVCLENBQUM7Z0JBQzFCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztnQkFDdEIs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Q0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDaEYsQ0FBQztBQUdELFNBQVMsYUFBYSxDQUFDLENBQVM7SUFDOUIsNEZBQTRGO0lBQzVGLDJDQUEyQztJQUMzQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzdDLGlDQUFpQztJQUNqQyxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDOUIscUVBQXFFO0lBQ3JFLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsQyxnRkFBZ0Y7SUFDaEYsR0FBRyxHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QixrREFBa0Q7SUFDbEQsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNsQyxHQUFHLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2l0SHViLCBHaXRodWJXb3JrZmxvdyB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViJztcbmltcG9ydCB7IEpvYlBlcm1pc3Npb24gfSBmcm9tICdwcm9qZW4vbGliL2dpdGh1Yi93b3JrZmxvd3MtbW9kZWwnO1xuaW1wb3J0IHsgQ2RrRHJpZnREZXRlY3Rpb25TY3JpcHQgfSBmcm9tICcuL2Jpbi9jZGstZHJpZnQtZGV0ZWN0aW9uLXNjcmlwdCc7XG5cbmNvbnN0IGdpdGh1YkFjdGlvbnNBd3NDcmVkZW50aWFsc1ZlcnNpb24gPSAndjUnO1xuY29uc3QgZ2l0aHViQWN0aW9uc0NoZWNrb3V0VmVyc2lvbiA9ICd2NSc7XG5jb25zdCBnaXRodWJBY3Rpb25zU2V0dXBOb2RlVmVyc2lvbiA9ICd2NSc7XG5jb25zdCBnaXRodWJBY3Rpb25zVXBsb2FkQXJ0aWZhY3RWZXJzaW9uID0gJ3Y0JztcbmNvbnN0IGdpdGh1YkFjdGlvbnNEb3dubG9hZEFydGlmYWN0VmVyc2lvbiA9ICd2NSc7XG5jb25zdCBnaXRodWJBY3Rpb25zR2l0aHViU2NyaXB0VmVyc2lvbiA9ICd2OCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhY2sge1xuICByZWFkb25seSBzdGFja05hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgZHJpZnREZXRlY3Rpb25Sb2xlVG9Bc3N1bWVSZWdpb246IHN0cmluZztcbiAgcmVhZG9ubHkgZHJpZnREZXRlY3Rpb25Sb2xlVG9Bc3N1bWVBcm46IHN0cmluZztcbiAgcmVhZG9ubHkgZmFpbE9uRHJpZnQ/OiBib29sZWFuOyAvLyBpZiB0cnVlLCBmYWlsIGpvYiB3aGVuIGRyaWZ0IGRldGVjdGVkIChkZWZhdWx0IHRydWUpXG4gIHJlYWRvbmx5IG9pZGNSb2xlQXJuPzogc3RyaW5nOyAvLyBPcHRpb25hbCBvdmVycmlkZSBmb3IgT0lEQyByb2xlXG4gIHJlYWRvbmx5IG9pZGNSZWdpb24/OiBzdHJpbmc7IC8vIE9wdGlvbmFsIG92ZXJyaWRlIGZvciBPSURDIHJlZ2lvblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENka0RyaWZ0RGV0ZWN0aW9uV29ya2Zsb3dQcm9wcyB7XG4gIHJlYWRvbmx5IHNjcmlwdE91dHB1dFBhdGg/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByb2plY3Q6IGFueTsgLy8gYXZvaWQgZXhwb3J0aW5nIHByb2plbiB0eXBlcyBpbiBwdWJsaWMgQVBJXG4gIHJlYWRvbmx5IHdvcmtmbG93TmFtZT86IHN0cmluZzsgLy8gd29ya2Zsb3cgd29ya2Zsb3dOYW1lIChhbHNvIHVzZWQgdG8gZGVyaXZlIGZpbGUgd29ya2Zsb3dOYW1lKVxuICByZWFkb25seSBzY2hlZHVsZT86IHN0cmluZzsgLy8gY3JvbiBleHByZXNzaW9uLCBlLmcuICcwIDAgKiAqIConXG4gIHJlYWRvbmx5IGNyZWF0ZUlzc3Vlcz86IGJvb2xlYW47IC8vIGNyZWF0ZS91cGRhdGUgaXNzdWUgd2hlbiBkcmlmdCBkZXRlY3RlZCBvbiBzY2hlZHVsZSAoZGVmYXVsdCB0cnVlKVxuICByZWFkb25seSBvaWRjUm9sZUFybj86IHN0cmluZzsgLy8gZGVmYXVsdCBPSURDIHJvbGUgQVJOIHRvIGFzc3VtZSBmb3IgYWxsIHN0YWNrcyAob3IgZWFjaCBzdGFjayBtdXN0IGhhdmUgaXRzIG93bilcbiAgcmVhZG9ubHkgb2lkY1JlZ2lvbj86IHN0cmluZzsgLy8gZGVmYXVsdCBPSURDIHJlZ2lvbiB0byBhc3N1bWUgZm9yIGFsbCBzdGFja3MgKG9yIGVhY2ggc3RhY2sgbXVzdCBoYXZlIGl0cyBvd24pXG4gIHJlYWRvbmx5IHN0YWNrczogU3RhY2tbXTtcbiAgcmVhZG9ubHkgbm9kZVZlcnNpb24/OiBzdHJpbmc7IC8vIGUuZy4sICcyNC54J1xuICAvKipcbiAgICogT3B0aW9uYWwgaG9vayB0byBhcHBlbmQgYWRkaXRpb25hbCBHaXRIdWIgQWN0aW9ucyBzdGVwcyBhZnRlciBkcmlmdCBkZXRlY3Rpb24gcGVyIHN0YWNrLlxuICAgKiBZb3UgY2FuIHN1cHBseSBhIHN0YXRpYyBhcnJheSBvZiBzdGVwcywgb3IgYSBmYWN0b3J5IHRoYXQgcmVjZWl2ZXMgY29udGV4dCBhbmQgcmV0dXJucyBzdGVwcy5cbiAgICovXG4gIC8qKlxuICAgKiBPcHRpb25hbCBhZGRpdGlvbmFsIEdpdEh1YiBBY3Rpb24gc3RlcHMgdG8gcnVuIGFmdGVyIGRyaWZ0IGRldGVjdGlvbiBmb3IgZWFjaCBzdGFjay5cbiAgICogVGhlc2Ugc3RlcHMgcnVuIGFmdGVyIHJlc3VsdHMgYXJlIHVwbG9hZGVkIGZvciBlYWNoIHN0YWNrLiBZb3UgY2FuIGluY2x1ZGVcbiAgICogYW55IG5vdGlmaWNhdGlvbnMgeW91IGxpa2UgKGUuZy4sIFNsYWNrKS4gUHJvdmlkZSBleHBsaWNpdCBpbnB1dHMgKGUuZy4sIHBheWxvYWQvbWFya2Rvd24pXG4gICAqIGRpcmVjdGx5IGluIHlvdXIgc3RlcCB3aXRob3V0IHJlbHlpbmcgb24gYSBwcmUtZ2VuZXJhdGVkIHBheWxvYWQuXG4gICAqL1xuICAvLyBOT1RFOiBqc2lpIGRvZXMgbm90IHN1cHBvcnQgZnVuY3Rpb24gdHlwZXMgaW4gcHVibGljIEFQSXM7IHVzZSAnYW55JyBoZXJlIGFuZCBhY2NlcHQgZWl0aGVyOlxuICAvLyAtIEFuIGFycmF5IG9mIEdpdEh1YiBzdGVwcywgb3JcbiAgLy8gLSBBIGZ1bmN0aW9uIChjdHg6IHsgc3RhY2s6IHN0cmluZyB9KSA9PiBHaXRIdWJTdGVwW11cbiAgLy8gVGhlIGNvbnN0cnVjdG9yIGhhbmRsZXMgYm90aCBhdCBydW50aW1lLlxuICByZWFkb25seSBwb3N0R2l0SHViU3RlcHM/OiBhbnk7XG59XG5cbnR5cGUgR2l0SHViU3RlcCA9IHtcbiAgbmFtZT86IHN0cmluZztcbiAgaWQ/OiBzdHJpbmc7XG4gIGlmPzogc3RyaW5nO1xuICB1c2VzPzogc3RyaW5nO1xuICBydW4/OiBzdHJpbmc7XG4gIHdpdGg/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBlbnY/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBjb250aW51ZU9uRXJyb3I/OiBib29sZWFuO1xuICBzaGVsbD86IHN0cmluZztcbn07XG5cbmV4cG9ydCBjbGFzcyBDZGtEcmlmdERldGVjdGlvbldvcmtmbG93IHtcbiAgcHJpdmF0ZSBzdGF0aWMgc2NyaXB0Q3JlYXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBDZGtEcmlmdERldGVjdGlvbldvcmtmbG93UHJvcHMpIHtcbiAgICAvLyBWYWxpZGF0ZSBPSURDIGNvbmZpZ3VyYXRpb25cbiAgICB0aGlzLnZhbGlkYXRlT2lkY0NvbmZpZ3VyYXRpb24ocHJvcHMpO1xuXG4gICAgY29uc3QgbmFtZSA9IHByb3BzLndvcmtmbG93TmFtZSA/PyAnZHJpZnQtZGV0ZWN0aW9uJztcbiAgICBjb25zdCBmaWxlTmFtZSA9IHRvS2ViYWJDYXNlKG5hbWUpICsgJy55bWwnO1xuICAgIGNvbnN0IG5vZGVWZXJzaW9uID0gcHJvcHMubm9kZVZlcnNpb24gPz8gJzI0LngnO1xuICAgIGNvbnN0IGNyZWF0ZUlzc3VlcyA9IHByb3BzLmNyZWF0ZUlzc3VlcyA/PyB0cnVlO1xuICAgIGNvbnN0IHByb2plY3QgPSBwcm9wcy5wcm9qZWN0O1xuICAgIGNvbnN0IHNjcmlwdE91dHB1dFBhdGg9IHByb3BzLnNjcmlwdE91dHB1dFBhdGggPz8gJy5naXRodWIvd29ya2Zsb3dzL3NjcmlwdHMvZGV0ZWN0LWRyaWZ0LnRzJztcblxuICAgIC8vIE9ubHkgY3JlYXRlIHRoZSBkcmlmdCBkZXRlY3Rpb24gc2NyaXB0IG9uY2UgdG8gYXZvaWQgY29sbGlzaW9uc1xuICAgIGlmICghQ2RrRHJpZnREZXRlY3Rpb25Xb3JrZmxvdy5zY3JpcHRDcmVhdGVkKSB7XG4gICAgICBuZXcgQ2RrRHJpZnREZXRlY3Rpb25TY3JpcHQoe1xuICAgICAgICBwcm9qZWN0OiBwcm9wcy5wcm9qZWN0LFxuICAgICAgICBvdXRwdXRQYXRoOiBzY3JpcHRPdXRwdXRQYXRoLFxuICAgICAgfSk7XG4gICAgICBDZGtEcmlmdERldGVjdGlvbldvcmtmbG93LnNjcmlwdENyZWF0ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGdoID0gKHByb2plY3QgYXMgYW55KS5naXRodWIgPz8gbmV3IEdpdEh1Yihwcm9qZWN0KTtcbiAgICBjb25zdCB3b3JrZmxvdyA9IG5ldyBHaXRodWJXb3JrZmxvdyhnaCwgbmFtZSwgeyBmaWxlTmFtZSB9KTtcblxuICAgIC8vIHRyaWdnZXJzOiBzY2hlZHVsZSArIG1hbnVhbCBkaXNwYXRjaCB3aXRoIHN0YWNrIGNob2ljZVxuICAgIGNvbnN0IHN0YWNrQ2hvaWNlcyA9IFsnYWxsJywgLi4ucHJvcHMuc3RhY2tzLm1hcCgocykgPT4gcy5zdGFja05hbWUpXTtcbiAgICB3b3JrZmxvdy5vbih7XG4gICAgICBzY2hlZHVsZTogcHJvcHMuc2NoZWR1bGUgPyBbeyBjcm9uOiBwcm9wcy5zY2hlZHVsZSB9XSA6IHVuZGVmaW5lZCxcbiAgICAgIHdvcmtmbG93RGlzcGF0Y2g6IHtcbiAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgc3RhY2s6IHtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlN0YWNrIHRvIGNoZWNrIGZvciBkcmlmdCAoJ2FsbCcgdG8gcnVuIGV2ZXJ5IHN0YWNrKVwiLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgdHlwZTogJ2Nob2ljZScsXG4gICAgICAgICAgICBvcHRpb25zOiBzdGFja0Nob2ljZXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBPbmUgam9iIHBlciBzdGFja1xuICAgIGNvbnN0IGpvYnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblxuICAgIGZvciAoY29uc3Qgc3RhY2sgb2YgcHJvcHMuc3RhY2tzKSB7XG4gICAgICBjb25zdCBzYW5pdGl6ZWRTdGFja05hbWUgPSB0b0tlYmFiQ2FzZSh0b0dpdGh1YkpvYklkKHN0YWNrLnN0YWNrTmFtZSkpO1xuICAgICAgY29uc3Qgb3JpZ2luYWxTdGFja05hbWUgPSBzdGFjay5zdGFja05hbWU7XG4gICAgICBjb25zdCBqb2JJZCA9IGBkcmlmdC0ke3Nhbml0aXplZFN0YWNrTmFtZX1gO1xuICAgICAgY29uc3QgcmVzdWx0c0ZpbGUgPSBgZHJpZnQtcmVzdWx0cy0ke3Nhbml0aXplZFN0YWNrTmFtZX0uanNvbmA7XG4gICAgICBjb25zdCBpbm5lckNvbmQgPSBcImdpdGh1Yi5ldmVudF9uYW1lID09ICdzY2hlZHVsZScgfHwgIWdpdGh1Yi5ldmVudC5pbnB1dHMuc3RhY2sgfHwgZ2l0aHViLmV2ZW50LmlucHV0cy5zdGFjayA9PSAnYWxsJyB8fCBnaXRodWIuZXZlbnQuaW5wdXRzLnN0YWNrID09ICdcIiArIHNhbml0aXplZFN0YWNrTmFtZSArIFwiJyB8fCBnaXRodWIuZXZlbnQuaW5wdXRzLnN0YWNrID09ICdcIiArIG9yaWdpbmFsU3RhY2tOYW1lICsgXCInXCI7XG4gICAgICBjb25zdCBjb25kRXhwciA9ICcke3sgJyArIGlubmVyQ29uZCArICcgfX0nO1xuICAgICAgY29uc3Qgbm90Q29uZEV4cHIgPSAnJHt7ICEoJyArIGlubmVyQ29uZCArICcpIH19JztcblxuICAgICAgY29uc3QgcmF3UG9zdCA9IHByb3BzLnBvc3RHaXRIdWJTdGVwcztcbiAgICAgIGNvbnN0IHBvc3RTdGVwczogR2l0SHViU3RlcFtdID0gdHlwZW9mIHJhd1Bvc3QgPT09ICdmdW5jdGlvbicgPyAocmF3UG9zdCBhcyAoY3R4OiB7IHN0YWNrOiBzdHJpbmcgfSkgPT4gR2l0SHViU3RlcFtdKSh7IHN0YWNrOiBzYW5pdGl6ZWRTdGFja05hbWUgfSkgOiAocmF3UG9zdCA/PyBbXSk7XG5cbiAgICAgIGpvYnNbam9iSWRdID0ge1xuICAgICAgICBuYW1lOiBgRHJpZnQgRGV0ZWN0aW9uIC0gJHtzYW5pdGl6ZWRTdGFja05hbWV9YCxcbiAgICAgICAgcnVuc09uOiBbJ3VidW50dS1sYXRlc3QnXSxcbiAgICAgICAgcGVybWlzc2lvbnM6IHtcbiAgICAgICAgICBjb250ZW50czogSm9iUGVybWlzc2lvbi5SRUFELFxuICAgICAgICAgIGlkVG9rZW46IEpvYlBlcm1pc3Npb24uV1JJVEUsXG4gICAgICAgICAgaXNzdWVzOiBKb2JQZXJtaXNzaW9uLldSSVRFLFxuICAgICAgICB9LFxuICAgICAgICBlbnY6IHtcbiAgICAgICAgICBBV1NfREVGQVVMVF9SRUdJT046IHN0YWNrLmRyaWZ0RGV0ZWN0aW9uUm9sZVRvQXNzdW1lUmVnaW9uLFxuICAgICAgICAgIEFXU19SRUdJT046IHN0YWNrLmRyaWZ0RGV0ZWN0aW9uUm9sZVRvQXNzdW1lUmVnaW9uLFxuICAgICAgICAgIERSSUZUX0RFVEVDVElPTl9PVVRQVVQ6IHJlc3VsdHNGaWxlLFxuICAgICAgICAgIFNUQUNLX0lEOiBzYW5pdGl6ZWRTdGFja05hbWUsXG4gICAgICAgICAgU1RBQ0tfTkFNRTogc3RhY2suc3RhY2tOYW1lLFxuICAgICAgICB9LFxuICAgICAgICAvLyBObyBqb2ItbGV2ZWwgY29uZGl0aW9uOyB3ZSBnYXRlIHN0ZXBzIHNvIHRoZSBqb2IgYWx3YXlzIGNvbXBsZXRlcyBhbmQgc3VtbWFyeSBjYW4gcnVuXG4gICAgICAgIHN0ZXBzOiBbXG4gICAgICAgICAgeyBuYW1lOiAnU2tpcCAoc3RhY2sgbm90IHNlbGVjdGVkKScsIGlmOiBub3RDb25kRXhwciwgcnVuOiAnZWNobyBcIlN0YWNrIG5vdCBzZWxlY3RlZDsgc2tpcHBpbmcgZHJpZnQgZGV0ZWN0aW9uIGZvciB0aGlzIGpvYi5cIicgfSxcbiAgICAgICAgICB7IG5hbWU6ICdDaGVja291dCcsIGlmOiBjb25kRXhwciwgdXNlczogYGFjdGlvbnMvY2hlY2tvdXRAJHtnaXRodWJBY3Rpb25zQ2hlY2tvdXRWZXJzaW9ufWAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnU2V0dXAgTm9kZS5qcycsXG4gICAgICAgICAgICBpZjogY29uZEV4cHIsXG4gICAgICAgICAgICB1c2VzOiBgYWN0aW9ucy9zZXR1cC1ub2RlQCR7Z2l0aHViQWN0aW9uc1NldHVwTm9kZVZlcnNpb259YCxcbiAgICAgICAgICAgIHdpdGg6IHsgJ25vZGUtdmVyc2lvbic6IG5vZGVWZXJzaW9uIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IG5hbWU6ICdJbnN0YWxsIGRlcGVuZGVuY2llcycsIGlmOiBjb25kRXhwciwgcnVuOiAneWFybiBpbnN0YWxsIC0tZnJvemVuLWxvY2tmaWxlIHx8IG5wbSBjaScsIGVudjogeyBHSVRIVUJfVE9LRU46ICcke3sgc2VjcmV0cy5HSVRIVUJfVE9LRU4gfX0nIH0gfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnQVdTIENyZWRlbnRpYWxzJyxcbiAgICAgICAgICAgIGlmOiBjb25kRXhwcixcbiAgICAgICAgICAgIGlkOiAnY3JlZHMnLFxuICAgICAgICAgICAgdXNlczogYGF3cy1hY3Rpb25zL2NvbmZpZ3VyZS1hd3MtY3JlZGVudGlhbHNAJHtnaXRodWJBY3Rpb25zQXdzQ3JlZGVudGlhbHNWZXJzaW9ufWAsXG4gICAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICAgICdyb2xlLXRvLWFzc3VtZSc6IHN0YWNrLm9pZGNSb2xlQXJuID8/IHByb3BzLm9pZGNSb2xlQXJuLFxuICAgICAgICAgICAgICAncm9sZS1zZXNzaW9uLW5hbWUnOiAnR2l0SHViQWN0aW9uJyxcbiAgICAgICAgICAgICAgJ2F3cy1yZWdpb24nOiBzdGFjay5vaWRjUmVnaW9uID8/IHByb3BzLm9pZGNSZWdpb24sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0Fzc3VtZSBEcmlmdCBEZXRlY3Rpb24gUm9sZScsXG4gICAgICAgICAgICBpZjogY29uZEV4cHIsXG4gICAgICAgICAgICB1c2VzOiBgYXdzLWFjdGlvbnMvY29uZmlndXJlLWF3cy1jcmVkZW50aWFsc0Ake2dpdGh1YkFjdGlvbnNBd3NDcmVkZW50aWFsc1ZlcnNpb259YCxcbiAgICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgICAgJ3JvbGUtdG8tYXNzdW1lJzogc3RhY2suZHJpZnREZXRlY3Rpb25Sb2xlVG9Bc3N1bWVBcm4sXG4gICAgICAgICAgICAgICdyb2xlLWNoYWluaW5nJzogdHJ1ZSxcbiAgICAgICAgICAgICAgJ3JvbGUtc2tpcC1zZXNzaW9uLXRhZ2dpbmcnOiB0cnVlLFxuICAgICAgICAgICAgICAnYXdzLXJlZ2lvbic6IHN0YWNrLmRyaWZ0RGV0ZWN0aW9uUm9sZVRvQXNzdW1lUmVnaW9uLFxuICAgICAgICAgICAgICAnYXdzLWFjY2Vzcy1rZXktaWQnOiAnJHt7IHN0ZXBzLmNyZWRzLm91dHB1dHMuYXdzLWFjY2Vzcy1rZXktaWQgfX0nLFxuICAgICAgICAgICAgICAnYXdzLXNlY3JldC1hY2Nlc3Mta2V5JzogJyR7eyBzdGVwcy5jcmVkcy5vdXRwdXRzLmF3cy1zZWNyZXQtYWNjZXNzLWtleSB9fScsXG4gICAgICAgICAgICAgICdhd3Mtc2Vzc2lvbi10b2tlbic6ICcke3sgc3RlcHMuY3JlZHMub3V0cHV0cy5hd3Mtc2Vzc2lvbi10b2tlbiB9fScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0RldGVjdCBkcmlmdCcsXG4gICAgICAgICAgICBpZjogY29uZEV4cHIsXG4gICAgICAgICAgICBpZDogJ2RyaWZ0JyxcbiAgICAgICAgICAgIGNvbnRpbnVlT25FcnJvcjogdHJ1ZSwgLy8gYWxsb3cgYXJ0aWZhY3QgdXBsb2FkIGFuZCBpc3N1ZSBjcmVhdGlvbiBldmVuIHdoZW4gZHJpZnQgaXMgZGV0ZWN0ZWRcbiAgICAgICAgICAgIHJ1bjogW1xuICAgICAgICAgICAgICAnc2V0ICtlJyxcbiAgICAgICAgICAgICAgLy8gVXNlIHRoZSBidW5kbGVkIHNjcmlwdCBmcm9tIHRoaXMgcGFja2FnZVxuICAgICAgICAgICAgICAnbm9kZSAuL25vZGVfbW9kdWxlcy9AampyYXdsaW5zL2Nkay1kaWZmLXByLWdpdGh1Yi1hY3Rpb24vbGliL2Jpbi9kZXRlY3QtZHJpZnQuanMnLFxuICAgICAgICAgICAgICAnc3RhdHVzPSQ/JyxcbiAgICAgICAgICAgICAgJ2lmIFsgLWYgXCIkRFJJRlRfREVURUNUSU9OX09VVFBVVFwiIF07IHRoZW4gZWNobyBcIlJlc3VsdHMgZmlsZSBjcmVhdGVkOiAkRFJJRlRfREVURUNUSU9OX09VVFBVVFwiOyBmaScsXG4gICAgICAgICAgICAgIC8vIEV4cG9zZSB1c2VmdWwgb3V0cHV0cyBmb3IgZG93bnN0cmVhbSBzdGVwc1xuICAgICAgICAgICAgICBcIlNUQUNLX0FSTj0kKGF3cyBjbG91ZGZvcm1hdGlvbiBkZXNjcmliZS1zdGFja3MgLS1zdGFjay1uYW1lIFxcXCIkU1RBQ0tfTkFNRVxcXCIgLS1xdWVyeSAnU3RhY2tzWzBdLlN0YWNrSWQnIC0tb3V0cHV0IHRleHQgMj4vZGV2L251bGwgfHwgdHJ1ZSlcIixcbiAgICAgICAgICAgICAgJ2VjaG8gXCJzdGFjay1hcm49JFNUQUNLX0FSTlwiID4+IFwiJEdJVEhVQl9PVVRQVVRcIicsXG4gICAgICAgICAgICAgICdleGl0ICRzdGF0dXMnLFxuICAgICAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgICAgIGVudjoge1xuICAgICAgICAgICAgICBTVEFDS19OQU1FOiBzdGFjay5zdGFja05hbWUsXG4gICAgICAgICAgICAgIEFXU19SRUdJT046IHN0YWNrLmRyaWZ0RGV0ZWN0aW9uUm9sZVRvQXNzdW1lUmVnaW9uLFxuICAgICAgICAgICAgICBEUklGVF9ERVRFQ1RJT05fT1VUUFVUOiByZXN1bHRzRmlsZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnVXBsb2FkIHJlc3VsdHMnLFxuICAgICAgICAgICAgaWY6IGNvbmRFeHByLFxuICAgICAgICAgICAgdXNlczogYGFjdGlvbnMvdXBsb2FkLWFydGlmYWN0QCR7Z2l0aHViQWN0aW9uc1VwbG9hZEFydGlmYWN0VmVyc2lvbn1gLFxuICAgICAgICAgICAgd2l0aDogeyAnbmFtZSc6IGBkcmlmdC1yZXN1bHRzLSR7c2FuaXRpemVkU3RhY2tOYW1lfWAsICdwYXRoJzogcmVzdWx0c0ZpbGUsICdpZi1uby1maWxlcy1mb3VuZCc6ICdpZ25vcmUnIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICAuLi4oXG4gICAgICAgICAgICBjcmVhdGVJc3N1ZXNcbiAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbmFtZTogJ0NyZWF0ZSBJc3N1ZSBvbiBEcmlmdCcsXG4gICAgICAgICAgICAgICAgICBpZjogXCJhbHdheXMoKSAmJiBzdGVwcy5kcmlmdC5vdXRjb21lID09ICdmYWlsdXJlJ1wiLFxuICAgICAgICAgICAgICAgICAgaWQ6ICdpc3N1ZScsXG4gICAgICAgICAgICAgICAgICB1c2VzOiBgYWN0aW9ucy9naXRodWItc2NyaXB0QCR7Z2l0aHViQWN0aW9uc0dpdGh1YlNjcmlwdFZlcnNpb259YCxcbiAgICAgICAgICAgICAgICAgIHdpdGg6IHsgJ3Jlc3VsdC1lbmNvZGluZyc6ICdzdHJpbmcnLCAnc2NyaXB0JzogaXNzdWVTY3JpcHQoc2FuaXRpemVkU3RhY2tOYW1lLCBzdGFjay5kcmlmdERldGVjdGlvblJvbGVUb0Fzc3VtZVJlZ2lvbiwgcmVzdWx0c0ZpbGUpIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICA6IFtdXG4gICAgICAgICAgKSxcbiAgICAgICAgICAuLi5wb3N0U3RlcHMubWFwKChzdGVwKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzOiBhbnkgPSB7IC4uLihzdGVwIGFzIGFueSkgfTtcbiAgICAgICAgICAgIC8vIEJ5IGRlZmF1bHQsIG9ubHkgcnVuIGV4dHJhIG5vdGlmaWNhdGlvbiBzdGVwcyB3aGVuIGRyaWZ0IG9jY3Vyc1xuICAgICAgICAgICAgcy5pZiA9IHMuaWYgPz8gXCJhbHdheXMoKSAmJiBzdGVwcy5kcmlmdC5vdXRjb21lID09ICdmYWlsdXJlJ1wiO1xuICAgICAgICAgICAgcmV0dXJuIHM7XG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIHN1bW1hcnkgYWdncmVnYXRvciBqb2JcbiAgICBqb2JzWydkcmlmdC1zdW1tYXJ5J10gPSB7XG4gICAgICBuYW1lOiAnRHJpZnQgRGV0ZWN0aW9uIFN1bW1hcnknLFxuICAgICAgbmVlZHM6IE9iamVjdC5rZXlzKGpvYnMpLmZpbHRlcigoaikgPT4gai5zdGFydHNXaXRoKCdkcmlmdC0nKSAmJiBqICE9PSAnZHJpZnQtc3VtbWFyeScpLFxuICAgICAgcnVuc09uOiBbJ3VidW50dS1sYXRlc3QnXSxcbiAgICAgIHBlcm1pc3Npb25zOiB7IGNvbnRlbnRzOiBKb2JQZXJtaXNzaW9uLlJFQUQgfSxcbiAgICAgIHN0ZXBzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnRG93bmxvYWQgYWxsIGFydGlmYWN0cycsXG4gICAgICAgICAgdXNlczogYGFjdGlvbnMvZG93bmxvYWQtYXJ0aWZhY3RAJHtnaXRodWJBY3Rpb25zRG93bmxvYWRBcnRpZmFjdFZlcnNpb259YCxcbiAgICAgICAgICB3aXRoOiB7IHBhdGg6ICdkcmlmdC1yZXN1bHRzJyB9LFxuICAgICAgICB9LFxuICAgICAgICB7IG5hbWU6ICdHZW5lcmF0ZSBzdW1tYXJ5Jywgc2hlbGw6ICdiYXNoJywgcnVuOiBzdW1tYXJ5U2NyaXB0KCkgfSxcbiAgICAgIF0sXG4gICAgfTtcblxuICAgIHdvcmtmbG93LmFkZEpvYnMoam9icyk7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlT2lkY0NvbmZpZ3VyYXRpb24ocHJvcHM6IENka0RyaWZ0RGV0ZWN0aW9uV29ya2Zsb3dQcm9wcyk6IHZvaWQge1xuICAgIGNvbnN0IGhhc0RlZmF1bHRPaWRjUm9sZSA9ICEhcHJvcHMub2lkY1JvbGVBcm47XG4gICAgY29uc3QgaGFzRGVmYXVsdE9pZGNSZWdpb24gPSAhIXByb3BzLm9pZGNSZWdpb247XG5cbiAgICAvLyBDaGVjayBpZiBhbGwgc3RhY2tzIGhhdmUgdGhlaXIgb3duIE9JREMgY29uZmlndXJhdGlvblxuICAgIGNvbnN0IGFsbFN0YWNrc0hhdmVPaWRjUm9sZSA9IHByb3BzLnN0YWNrcy5ldmVyeShzdGFjayA9PiAhIXN0YWNrLm9pZGNSb2xlQXJuKTtcbiAgICBjb25zdCBhbGxTdGFja3NIYXZlT2lkY1JlZ2lvbiA9IHByb3BzLnN0YWNrcy5ldmVyeShzdGFjayA9PiAhIXN0YWNrLm9pZGNSZWdpb24pO1xuXG4gICAgLy8gRWl0aGVyIGRlZmF1bHRzIG11c3QgYmUgcHJvdmlkZWQgT1IgYWxsIHN0YWNrcyBtdXN0IGhhdmUgdGhlaXIgb3duIE9JREMgY29uZmlnXG4gICAgaWYgKCFoYXNEZWZhdWx0T2lkY1JvbGUgJiYgIWFsbFN0YWNrc0hhdmVPaWRjUm9sZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFaXRoZXIgcHJvdmlkZSBkZWZhdWx0IG9pZGNSb2xlQXJuIG9yIHNwZWNpZnkgb2lkY1JvbGVBcm4gZm9yIGVhY2ggc3RhY2snKTtcbiAgICB9XG5cbiAgICBpZiAoIWhhc0RlZmF1bHRPaWRjUmVnaW9uICYmICFhbGxTdGFja3NIYXZlT2lkY1JlZ2lvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFaXRoZXIgcHJvdmlkZSBkZWZhdWx0IG9pZGNSZWdpb24gb3Igc3BlY2lmeSBvaWRjUmVnaW9uIGZvciBlYWNoIHN0YWNrJyk7XG4gICAgfVxuICB9XG59XG5cblxuZnVuY3Rpb24gaXNzdWVTY3JpcHQoc3RhY2s6IHN0cmluZywgcmVnaW9uOiBzdHJpbmcsIHJlc3VsdHNGaWxlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBDb25zdHJ1Y3QgYSBwbGFpbiBKUyBzY3JpcHQgc3RyaW5nIChubyB0ZW1wbGF0ZSBzdHJpbmcgbmVzdGluZyBtaXNoYXBzKVxuICBjb25zdCBsaW5lcyA9IFtcbiAgICBcImNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTtcIixcbiAgICBgY29uc3QgcmVzdWx0c0ZpbGUgPSAnJHtyZXN1bHRzRmlsZX0nO2AsXG4gICAgXCJpZiAoIWZzLmV4aXN0c1N5bmMocmVzdWx0c0ZpbGUpKSB7IGNvbnNvbGUubG9nKCdObyByZXN1bHRzIGZpbGUgZm91bmQnKTsgcmV0dXJuICdOT19SRVNVTFRTJzsgfVwiLFxuICAgIFwiY29uc3QgcmVzdWx0cyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHJlc3VsdHNGaWxlLCAndXRmOCcpKTtcIixcbiAgICBcImNvbnN0IGRyaWZ0ZWRTdGFja3MgPSByZXN1bHRzLmZpbHRlcihyID0+IHIuZHJpZnRTdGF0dXMgPT09ICdEUklGVEVEJyk7XCIsXG4gICAgXCJpZiAoZHJpZnRlZFN0YWNrcy5sZW5ndGggPT09IDApIHsgY29uc29sZS5sb2coJ05vIGRyaWZ0IGRldGVjdGVkJyk7IHJldHVybiAnTk9fRFJJRlQnOyB9XCIsXG4gICAgYGNvbnN0IHRpdGxlID0gJ0RyaWZ0IERldGVjdGVkIGluICR7c3RhY2t9JztgLFxuICAgIGBsZXQgYm9keSA9ICcjIyBEcmlmdCBEZXRlY3Rpb24gUmVwb3J0XFxcXG5cXFxcbicgKyAnKipTdGFjazoqKiAke3N0YWNrfVxcXFxuJyArICcqKlJlZ2lvbjoqKiAke3JlZ2lvbn1cXFxcbicgKyAnKipUaW1lOioqICcgKyBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkgKyAnXFxcXG5cXFxcbic7YCxcbiAgICBcImJvZHkgKz0gJyMjIyBTdW1tYXJ5XFxcXG4nO1wiLFxuICAgIFwiYm9keSArPSAnLSBUb3RhbCBzdGFja3MgY2hlY2tlZDogJyArIHJlc3VsdHMubGVuZ3RoICsgJ1xcXFxuJztcIixcbiAgICBcImJvZHkgKz0gJy0gRHJpZnRlZCBzdGFja3M6ICcgKyBkcmlmdGVkU3RhY2tzLmxlbmd0aCArICdcXFxcblxcXFxuJztcIixcbiAgICBcImJvZHkgKz0gJyMjIyBEcmlmdGVkIFN0YWNrc1xcXFxuJztcIixcbiAgICAnZm9yIChjb25zdCBzIG9mIGRyaWZ0ZWRTdGFja3MpIHsnLFxuICAgICcgIGNvbnN0IHJlc291cmNlcyA9IHMuZHJpZnRlZFJlc291cmNlcyB8fCBbXTsnLFxuICAgIFwiICBib2R5ICs9ICcjIyMjICcgKyBzLnN0YWNrTmFtZSArICdcXFxcbic7XCIsXG4gICAgXCIgIGJvZHkgKz0gJy0gRHJpZnRlZCByZXNvdXJjZXM6ICcgKyByZXNvdXJjZXMubGVuZ3RoICsgJ1xcXFxuJztcIixcbiAgICBcIiAgZm9yIChjb25zdCByIG9mIHJlc291cmNlcykgeyBib2R5ICs9ICcgIC0gJyArIHIubG9naWNhbFJlc291cmNlSWQgKyAnICgnICsgci5yZXNvdXJjZVR5cGUgKyAnKVxcXFxuJzsgfVwiLFxuICAgIFwiICBib2R5ICs9ICdcXFxcbic7XCIsXG4gICAgJ30nLFxuICAgIFwiYm9keSArPSAnIyMjIEFjdGlvbiBSZXF1aXJlZFxcXFxuJyArICdQbGVhc2UgcmV2aWV3IHRoZSBkcmlmdGVkIHJlc291cmNlcyBhbmQgZWl0aGVyOlxcXFxuMS4gVXBkYXRlIHRoZSBpbmZyYXN0cnVjdHVyZSBjb2RlIHRvIG1hdGNoIHRoZSBhY3R1YWwgc3RhdGVcXFxcbjIuIFJlc3RvcmUgdGhlIHJlc291cmNlcyB0byBtYXRjaCB0aGUgZXhwZWN0ZWQgc3RhdGVcXFxcblxcXFxuJztcIixcbiAgICAnYm9keSArPSBgW1ZpZXcgd29ya2Zsb3cgcnVuXSgke2NvbnRleHQuc2VydmVyVXJsfS8ke2NvbnRleHQucmVwby5vd25lcn0vJHtjb250ZXh0LnJlcG8ucmVwb30vYWN0aW9ucy9ydW5zLyR7Y29udGV4dC5ydW5JZH0pYDsnLFxuICAgIC8vIExpc3Qgb3IgdXBkYXRlIGFuIGlzc3VlIHdpdGggbGFiZWxzXG4gICAgYGNvbnN0IGlzc3VlcyA9IGF3YWl0IGdpdGh1Yi5yZXN0Lmlzc3Vlcy5saXN0Rm9yUmVwbyh7IG93bmVyOiBjb250ZXh0LnJlcG8ub3duZXIsIHJlcG86IGNvbnRleHQucmVwby5yZXBvLCBzdGF0ZTogJ29wZW4nLCBsYWJlbHM6IFsnZHJpZnQtZGV0ZWN0aW9uJywgJyR7c3RhY2t9J10gfSk7YCxcbiAgICAnbGV0IGlzc3VlTnVtYmVyOycsXG4gICAgJ2lmIChpc3N1ZXMuZGF0YS5sZW5ndGggPT09IDApIHsnLFxuICAgIGAgIGNvbnN0IGNyZWF0ZWQgPSBhd2FpdCBnaXRodWIucmVzdC5pc3N1ZXMuY3JlYXRlKHsgb3duZXI6IGNvbnRleHQucmVwby5vd25lciwgcmVwbzogY29udGV4dC5yZXBvLnJlcG8sIHRpdGxlLCBib2R5LCBsYWJlbHM6IFsnZHJpZnQtZGV0ZWN0aW9uJywgJyR7c3RhY2t9J10gfSk7YCxcbiAgICAnICBpc3N1ZU51bWJlciA9IGNyZWF0ZWQuZGF0YS5udW1iZXI7JyxcbiAgICAnfSBlbHNlIHsnLFxuICAgICcgIGNvbnN0IGlzc3VlID0gaXNzdWVzLmRhdGFbMF07JyxcbiAgICAnICBpc3N1ZU51bWJlciA9IGlzc3VlLm51bWJlcjsnLFxuICAgICcgIGF3YWl0IGdpdGh1Yi5yZXN0Lmlzc3Vlcy5jcmVhdGVDb21tZW50KHsgb3duZXI6IGNvbnRleHQucmVwby5vd25lciwgcmVwbzogY29udGV4dC5yZXBvLnJlcG8sIGlzc3VlX251bWJlcjogaXNzdWUubnVtYmVyLCBib2R5IH0pOycsXG4gICAgJ30nLFxuICAgICdyZXR1cm4gU3RyaW5nKGlzc3VlTnVtYmVyID8/IFwiXCIpOycsXG4gIF07XG4gIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcbn1cblxuXG5mdW5jdGlvbiBzdW1tYXJ5U2NyaXB0KCk6IHN0cmluZyB7XG4gIHJldHVybiBbXG4gICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAnc2V0IC1lJyxcbiAgICAnZWNobyBcIiMjIERyaWZ0IERldGVjdGlvbiBTdW1tYXJ5XCIgPj4gJEdJVEhVQl9TVEVQX1NVTU1BUlknLFxuICAgICdlY2hvIFwiXCIgPj4gJEdJVEhVQl9TVEVQX1NVTU1BUlknLFxuICAgICcnLFxuICAgICd0b3RhbF9zdGFja3M9MCcsXG4gICAgJ3RvdGFsX2RyaWZ0ZWQ9MCcsXG4gICAgJ3RvdGFsX2Vycm9ycz0wJyxcbiAgICAnJyxcbiAgICAnc2hvcHQgLXMgbnVsbGdsb2InLFxuICAgICdmb3IgZmlsZSBpbiBkcmlmdC1yZXN1bHRzLSouanNvbiBkcmlmdC1yZXN1bHRzLyovZHJpZnQtcmVzdWx0cy0qLmpzb247IGRvJyxcbiAgICAnICBpZiBbWyAtZiBcIiRmaWxlXCIgXV07IHRoZW4nLFxuICAgICcgICAgc3RhY2s9JChiYXNlbmFtZSBcIiRmaWxlXCIgfCBzZWQgLUUgXFxcInMvXmRyaWZ0LXJlc3VsdHMtKFteLl0rKVxcXFwuanNvbiQvXFxcXDEvXFxcIiknLFxuICAgICcgICAgZWNobyBcIiMjIyBTdGFjazogJHN0YWNrXCIgPj4gJEdJVEhVQl9TVEVQX1NVTU1BUlknLFxuICAgICcgICAganEgLXIgXFwnJyArXG4gICAgICAnLiBhcyAkcmVzdWx0cyB8XFxuJyArXG4gICAgICAnXCItIFRvdGFsIHN0YWNrczogXCIgKyAoJHJlc3VsdHMgfCBsZW5ndGggfCB0b3N0cmluZykgKyBcIlxcXFxuXCIgK1xcbicgK1xuICAgICAgJ1wiLSBEcmlmdGVkOiBcIiArIChbLltdIHwgc2VsZWN0KC5kcmlmdFN0YXR1cyA9PSBcIkRSSUZURURcIildIHwgbGVuZ3RoIHwgdG9zdHJpbmcpICsgXCJcXFxcblwiICtcXG4nICtcbiAgICAgICdcIi0gRXJyb3JzOiBcIiArIChbLltdIHwgc2VsZWN0KC5lcnJvcildIHwgbGVuZ3RoIHwgdG9zdHJpbmcpICsgXCJcXFxcblwiICtcXG4nICtcbiAgICAgICcoWy5bXSB8IHNlbGVjdCguZHJpZnRTdGF0dXMgPT0gXCJEUklGVEVEXCIpXSB8IGlmIGxlbmd0aCA+IDAgdGhlbiBcIlxcXFxuKipEcmlmdGVkIHN0YWNrczoqKlxcXFxuXCIgKyAobWFwKFwiICAtIFwiICsgLnN0YWNrTmFtZSArIFwiIChcIiArICgoLmRyaWZ0ZWRSZXNvdXJjZXMgLy8gW10pIHwgbGVuZ3RoIHwgdG9zdHJpbmcpICsgXCIgcmVzb3VyY2VzKVwiKSB8IGpvaW4oXCJcXFxcblwiKSkgZWxzZSBcIlwiIGVuZClcXG4nICtcbiAgICAnXFwnJyArXG4gICAgJyBcIiRmaWxlXCIgPj4gJEdJVEhVQl9TVEVQX1NVTU1BUlknLFxuICAgICcgICAgZWNobyBcIlwiID4+ICRHSVRIVUJfU1RFUF9TVU1NQVJZJyxcbiAgICAnICAgIHRvdGFsX3N0YWNrcz0kKCh0b3RhbF9zdGFja3MgKyAkKGpxIFxcXCJsZW5ndGhcXFwiIFxcXCIkZmlsZVxcXCIpKSknLFxuICAgICcgICAgdG90YWxfZHJpZnRlZD0kKCh0b3RhbF9kcmlmdGVkICsgJChqcSBcXFwiWy5bXSB8IHNlbGVjdCguZHJpZnRTdGF0dXMgPT0gXFxcXFxcXCJEUklGVEVEXFxcXFxcXCIpXSB8IGxlbmd0aFxcXCIgXFxcIiRmaWxlXFxcIikpKScsXG4gICAgJyAgICB0b3RhbF9lcnJvcnM9JCgodG90YWxfZXJyb3JzICsgJChqcSBcXFwiWy5bXSB8IHNlbGVjdCguZXJyb3IpXSB8IGxlbmd0aFxcXCIgXFxcIiRmaWxlXFxcIikpKScsXG4gICAgJyAgZmknLFxuICAgICdkb25lJyxcbiAgICAnJyxcbiAgICAnZWNobyBcIiMjIyBPdmVyYWxsIFN1bW1hcnlcIiA+PiAkR0lUSFVCX1NURVBfU1VNTUFSWScsXG4gICAgJ2VjaG8gXCItIFRvdGFsIHN0YWNrcyBjaGVja2VkOiAkdG90YWxfc3RhY2tzXCIgPj4gJEdJVEhVQl9TVEVQX1NVTU1BUlknLFxuICAgICdlY2hvIFwiLSBUb3RhbCBkcmlmdGVkIHN0YWNrczogJHRvdGFsX2RyaWZ0ZWRcIiA+PiAkR0lUSFVCX1NURVBfU1VNTUFSWScsXG4gICAgJ2VjaG8gXCItIFRvdGFsIGVycm9yczogJHRvdGFsX2Vycm9yc1wiID4+ICRHSVRIVUJfU1RFUF9TVU1NQVJZJyxcbiAgICAnJyxcbiAgICAnaWYgW1sgJHRvdGFsX2RyaWZ0ZWQgLWd0IDAgXV07IHRoZW4nLFxuICAgICcgIGVjaG8gXCJcIiA+PiAkR0lUSFVCX1NURVBfU1VNTUFSWScsXG4gICAgJyAgZWNobyBcIuKaoO+4jyAqKkFjdGlvbiByZXF1aXJlZDoqKiBEcmlmdCBkZXRlY3RlZCBpbiAkdG90YWxfZHJpZnRlZCBzdGFja3NcIiA+PiAkR0lUSFVCX1NURVBfU1VNTUFSWScsXG4gICAgJ2ZpJyxcbiAgXS5qb2luKCdcXG4nKTtcbn1cblxuZnVuY3Rpb24gdG9LZWJhYkNhc2Uoczogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHMucmVwbGFjZSgvW15hLXpBLVowLTldKy9nLCAnLScpLnJlcGxhY2UoL14tK3wtKyQvZywgJycpLnRvTG93ZXJDYXNlKCk7XG59XG5cblxuZnVuY3Rpb24gdG9HaXRodWJKb2JJZChzOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBHaXRIdWIgam9iX2lkIG11c3Qgc3RhcnQgd2l0aCBhIGxldHRlciBvciB1bmRlcnNjb3JlIGFuZCBjb250YWluIG9ubHkgQS1aYS16MC05LCAnLScsICdfJ1xuICAvLyAxKSBSZXBsYWNlIGFueSBkaXNhbGxvd2VkIGNoYXJzIHdpdGggJy0nXG4gIGxldCBvdXQgPSBzLnJlcGxhY2UoL1teQS1aYS16MC05Xy1dKy9nLCAnLScpO1xuICAvLyAyKSBDb2xsYXBzZSBjb25zZWN1dGl2ZSBkYXNoZXNcbiAgb3V0ID0gb3V0LnJlcGxhY2UoLy0rL2csICctJyk7XG4gIC8vIDMpIFRyaW0gbGVhZGluZy90cmFpbGluZyBkYXNoZXMgKHVuZGVyc2NvcmVzIGFyZSBhbGxvd2VkIGF0IHN0YXJ0KVxuICBvdXQgPSBvdXQucmVwbGFjZSgvXi0rfC0rJC9nLCAnJyk7XG4gIC8vIDQpIExvd2VyY2FzZSBmb3IgY29uc2lzdGVuY3kgKG5vdCByZXF1aXJlZCBieSBHaXRIdWIgYnV0IGtlZXBzIHRoaW5ncyBzdGFibGUpXG4gIG91dCA9IG91dC50b0xvd2VyQ2FzZSgpO1xuICAvLyA1KSBFbnN1cmUgaXQgc3RhcnRzIHdpdGggYSBsZXR0ZXIgb3IgdW5kZXJzY29yZVxuICBpZiAoIW91dCB8fCAhL15bYS16X10vaS50ZXN0KG91dCkpIHtcbiAgICBvdXQgPSBgcy0ke291dH1gO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG4iXX0=
@@ -79,7 +79,7 @@ class CdkDriftIamTemplateGenerator {
79
79
  }
80
80
  exports.CdkDriftIamTemplateGenerator = CdkDriftIamTemplateGenerator;
81
81
  _a = JSII_RTTI_SYMBOL_1;
82
- CdkDriftIamTemplateGenerator[_a] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDriftIamTemplateGenerator", version: "1.0.0" };
82
+ CdkDriftIamTemplateGenerator[_a] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDriftIamTemplateGenerator", version: "1.1.1" };
83
83
  /**
84
84
  * Projen construct that emits a CloudFormation template with minimal IAM permissions
85
85
  * for the CDK Drift Detection Workflow.
@@ -102,5 +102,5 @@ class CdkDriftIamTemplate {
102
102
  }
103
103
  exports.CdkDriftIamTemplate = CdkDriftIamTemplate;
104
104
  _b = JSII_RTTI_SYMBOL_1;
105
- CdkDriftIamTemplate[_b] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDriftIamTemplate", version: "1.0.0" };
105
+ CdkDriftIamTemplate[_b] = { fqn: "@jjrawlins/cdk-diff-pr-github-action.CdkDriftIamTemplate", version: "1.1.1" };
106
106
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2RrRHJpZnRJYW1UZW1wbGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9DZGtEcmlmdElhbVRlbXBsYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQWtDO0FBY2xDOzs7R0FHRztBQUNILE1BQWEsNEJBQTRCO0lBQ3ZDOztPQUVHO0lBQ0gsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQXdDO1FBQzlELE1BQU0sS0FBSyxHQUFHO1lBQ1osd0NBQXdDO1lBQ3hDLDBEQUEwRDtZQUMxRCxFQUFFO1lBQ0YsYUFBYTtZQUNiLHNCQUFzQjtZQUN0QixrQkFBa0I7WUFDbEIseUZBQXlGO1lBQ3pGLGlCQUFpQixLQUFLLENBQUMsV0FBVyxHQUFHO1lBQ3JDLEVBQUU7WUFDRixZQUFZO1lBQ1osOEZBQThGO1lBQzlGLGlCQUFpQjtZQUNqQiwwQkFBMEI7WUFDMUIsaUJBQWlCO1lBQ2pCLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxRQUFRLEdBQUcsR0FBRztZQUMxQyxpQ0FBaUM7WUFDakMsK0JBQStCO1lBQy9CLG9CQUFvQjtZQUNwQiwyQkFBMkI7WUFDM0Isd0JBQXdCO1lBQ3hCLDJDQUEyQztZQUMzQyxvQ0FBb0M7WUFDcEMsd0JBQXdCO1lBQ3hCLDZCQUE2QjtZQUM3Qix3Q0FBd0MsR0FBRyxLQUFLLENBQUMsVUFBVSxHQUFHLEdBQUc7WUFDakUsaUJBQWlCO1lBQ2pCLGlEQUFpRDtZQUNqRCwyQkFBMkI7WUFDM0IsbUNBQW1DO1lBQ25DLHdCQUF3QjtZQUN4QiwyREFBMkQ7WUFDM0QsK0JBQStCO1lBQy9CLHlCQUF5QjtZQUN6QixxREFBcUQ7WUFDckQsc0VBQXNFO1lBQ3RFLGdFQUFnRTtZQUNoRSxtREFBbUQ7WUFDbkQsdURBQXVEO1lBQ3ZELDZEQUE2RDtZQUM3RCwrQkFBK0I7WUFDL0IsRUFBRTtZQUNGLFVBQVU7WUFDVixvQkFBb0I7WUFDcEIsd0RBQXdEO1lBQ3hELHFDQUFxQztZQUNyQyxhQUFhO1lBQ2Isc0RBQXNEO1lBQ3RELEVBQUU7WUFDRixxQkFBcUI7WUFDckIseURBQXlEO1lBQ3pELDhCQUE4QjtZQUM5QixhQUFhO1lBQ2IsdURBQXVEO1NBQ3hELENBQUM7UUFFRixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLHFCQUFxQixDQUFDLGVBQXVCLHNDQUFzQztRQUN4RixPQUFPLDZDQUE2QyxZQUFZLCtFQUErRSxDQUFDO0lBQ2xKLENBQUM7O0FBckVILG9FQXNFQzs7O0FBWUQ7Ozs7O0dBS0c7QUFDSCxNQUFhLG1CQUFtQjtJQUM5QixZQUFZLEtBQStCO1FBQ3pDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLElBQUksc0NBQXNDLENBQUM7UUFFOUUsd0NBQXdDO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLDRCQUE0QixDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RFLElBQUksaUJBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV6RSxrQkFBa0I7UUFDbEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsOEJBQThCLEVBQUU7WUFDcEQsV0FBVyxFQUNULHVJQUF1STtZQUN6SSxXQUFXLEVBQUUsSUFBSTtZQUNqQixJQUFJLEVBQUUsNEJBQTRCLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDO1NBQ3JFLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBZkgsa0RBZ0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGV4dEZpbGUgfSBmcm9tICdwcm9qZW4nO1xuXG4vKipcbiAqIFByb3BzIGZvciBnZW5lcmF0aW5nIENESyBEcmlmdCBJQU0gdGVtcGxhdGVzIChubyBQcm9qZW4gZGVwZW5kZW5jeSlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZGtEcmlmdElhbVRlbXBsYXRlR2VuZXJhdG9yUHJvcHMge1xuICAvKiogTmFtZSBmb3IgdGhlIElBTSByb2xlICovXG4gIHJlYWRvbmx5IHJvbGVOYW1lOiBzdHJpbmc7XG4gIC8qKiBBUk4gb2YgdGhlIGV4aXN0aW5nIEdpdEh1YiBPSURDIHJvbGUgdGhhdCBjYW4gYXNzdW1lIHRoaXMgZHJpZnQgcm9sZSAqL1xuICByZWFkb25seSBvaWRjUm9sZUFybjogc3RyaW5nO1xuICAvKiogUmVnaW9uIGZvciB0aGUgT0lEQyB0cnVzdCBjb25kaXRpb24gKi9cbiAgcmVhZG9ubHkgb2lkY1JlZ2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFB1cmUgZ2VuZXJhdG9yIGNsYXNzIGZvciBDREsgRHJpZnQgSUFNIHRlbXBsYXRlcy5cbiAqIE5vIFByb2plbiBkZXBlbmRlbmN5IC0gY2FuIGJlIHVzZWQgaW4gYW55IHByb2plY3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBDZGtEcmlmdElhbVRlbXBsYXRlR2VuZXJhdG9yIHtcbiAgLyoqXG4gICAqIEdlbmVyYXRlIHRoZSBDbG91ZEZvcm1hdGlvbiBJQU0gdGVtcGxhdGUgYXMgYSBZQU1MIHN0cmluZy5cbiAgICovXG4gIHN0YXRpYyBnZW5lcmF0ZVRlbXBsYXRlKHByb3BzOiBDZGtEcmlmdElhbVRlbXBsYXRlR2VuZXJhdG9yUHJvcHMpOiBzdHJpbmcge1xuICAgIGNvbnN0IGxpbmVzID0gW1xuICAgICAgXCJBV1NUZW1wbGF0ZUZvcm1hdFZlcnNpb246ICcyMDEwLTA5LTA5J1wiLFxuICAgICAgXCJEZXNjcmlwdGlvbjogJ0lBTSByb2xlIGZvciBDREsgRHJpZnQgRGV0ZWN0aW9uIFdvcmtmbG93J1wiLFxuICAgICAgJycsXG4gICAgICAnUGFyYW1ldGVyczonLFxuICAgICAgJyAgR2l0SHViT0lEQ1JvbGVBcm46JyxcbiAgICAgICcgICAgVHlwZTogU3RyaW5nJyxcbiAgICAgIFwiICAgIERlc2NyaXB0aW9uOiAnQVJOIG9mIHRoZSBleGlzdGluZyBHaXRIdWIgT0lEQyByb2xlIHRoYXQgY2FuIGFzc3VtZSB0aGlzIGRyaWZ0IHJvbGUnXCIsXG4gICAgICBgICAgIERlZmF1bHQ6ICcke3Byb3BzLm9pZGNSb2xlQXJufSdgLFxuICAgICAgJycsXG4gICAgICAnUmVzb3VyY2VzOicsXG4gICAgICAnICAjIENsb3VkRm9ybWF0aW9uIERyaWZ0IERldGVjdGlvbiBSb2xlIC0gbWluaW1hbCBwZXJtaXNzaW9ucyBmb3IgZHJpZnQgZGV0ZWN0aW9uIG9wZXJhdGlvbnMnLFxuICAgICAgJyAgQ2RrRHJpZnRSb2xlOicsXG4gICAgICAnICAgIFR5cGU6IEFXUzo6SUFNOjpSb2xlJyxcbiAgICAgICcgICAgUHJvcGVydGllczonLFxuICAgICAgXCIgICAgICBSb2xlTmFtZTogJ1wiICsgcHJvcHMucm9sZU5hbWUgKyBcIidcIixcbiAgICAgICcgICAgICBBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnQ6JyxcbiAgICAgIFwiICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNydcIixcbiAgICAgICcgICAgICAgIFN0YXRlbWVudDonLFxuICAgICAgJyAgICAgICAgICAtIEVmZmVjdDogQWxsb3cnLFxuICAgICAgJyAgICAgICAgICAgIFByaW5jaXBhbDonLFxuICAgICAgJyAgICAgICAgICAgICAgQVdTOiAhUmVmIEdpdEh1Yk9JRENSb2xlQXJuJyxcbiAgICAgICcgICAgICAgICAgICBBY3Rpb246IHN0czpBc3N1bWVSb2xlJyxcbiAgICAgICcgICAgICAgICAgICBDb25kaXRpb246JyxcbiAgICAgICcgICAgICAgICAgICAgIFN0cmluZ0VxdWFsczonLFxuICAgICAgXCIgICAgICAgICAgICAgICAgYXdzOlJlcXVlc3RlZFJlZ2lvbjogJ1wiICsgcHJvcHMub2lkY1JlZ2lvbiArIFwiJ1wiLFxuICAgICAgJyAgICAgIFBvbGljaWVzOicsXG4gICAgICAnICAgICAgICAtIFBvbGljeU5hbWU6IENsb3VkRm9ybWF0aW9uRHJpZnRBY2Nlc3MnLFxuICAgICAgJyAgICAgICAgICBQb2xpY3lEb2N1bWVudDonLFxuICAgICAgXCIgICAgICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNydcIixcbiAgICAgICcgICAgICAgICAgICBTdGF0ZW1lbnQ6JyxcbiAgICAgICcgICAgICAgICAgICAgICMgQ2xvdWRGb3JtYXRpb24gZHJpZnQgZGV0ZWN0aW9uIG9wZXJhdGlvbnMnLFxuICAgICAgJyAgICAgICAgICAgICAgLSBFZmZlY3Q6IEFsbG93JyxcbiAgICAgICcgICAgICAgICAgICAgICAgQWN0aW9uOicsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZXRlY3RTdGFja0RyaWZ0JyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkRlc2NyaWJlU3RhY2tEcmlmdERldGVjdGlvblN0YXR1cycsXG4gICAgICAnICAgICAgICAgICAgICAgICAgLSBjbG91ZGZvcm1hdGlvbjpEZXNjcmliZVN0YWNrUmVzb3VyY2VEcmlmdHMnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246RGVzY3JpYmVTdGFja3MnLFxuICAgICAgJyAgICAgICAgICAgICAgICAgIC0gY2xvdWRmb3JtYXRpb246TGlzdFN0YWNrUmVzb3VyY2VzJyxcbiAgICAgICcgICAgICAgICAgICAgICAgICAtIGNsb3VkZm9ybWF0aW9uOkRldGVjdFN0YWNrUmVzb3VyY2VEcmlmdCcsXG4gICAgICBcIiAgICAgICAgICAgICAgICBSZXNvdXJjZTogJyonXCIsXG4gICAgICAnJyxcbiAgICAgICdPdXRwdXRzOicsXG4gICAgICAnICBDZGtEcmlmdFJvbGVBcm46JyxcbiAgICAgIFwiICAgIERlc2NyaXB0aW9uOiAnQVJOIG9mIHRoZSBDREsgZHJpZnQgZGV0ZWN0aW9uIHJvbGUnXCIsXG4gICAgICAnICAgIFZhbHVlOiAhR2V0QXR0IENka0RyaWZ0Um9sZS5Bcm4nLFxuICAgICAgJyAgICBFeHBvcnQ6JyxcbiAgICAgIFwiICAgICAgTmFtZTogIVN1YiAnJHtBV1M6OlN0YWNrTmFtZX0tQ2RrRHJpZnRSb2xlQXJuJ1wiLFxuICAgICAgJycsXG4gICAgICAnICBDZGtEcmlmdFJvbGVOYW1lOicsXG4gICAgICBcIiAgICBEZXNjcmlwdGlvbjogJ05hbWUgb2YgdGhlIENESyBkcmlmdCBkZXRlY3Rpb24gcm9sZSdcIixcbiAgICAgICcgICAgVmFsdWU6ICFSZWYgQ2RrRHJpZnRSb2xlJyxcbiAgICAgICcgICAgRXhwb3J0OicsXG4gICAgICBcIiAgICAgIE5hbWU6ICFTdWIgJyR7QVdTOjpTdGFja05hbWV9LUNka0RyaWZ0Um9sZU5hbWUnXCIsXG4gICAgXTtcblxuICAgIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSB0aGUgQVdTIENMSSBkZXBsb3kgY29tbWFuZCBmb3IgdGhlIElBTSB0ZW1wbGF0ZS5cbiAgICovXG4gIHN0YXRpYyBnZW5lcmF0ZURlcGxveUNvbW1hbmQodGVtcGxhdGVQYXRoOiBzdHJpbmcgPSAnY2RrLWRyaWZ0LXdvcmtmbG93LWlhbS10ZW1wbGF0ZS55YW1sJyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBhd3MgY2xvdWRmb3JtYXRpb24gZGVwbG95IC0tdGVtcGxhdGUtZmlsZSAke3RlbXBsYXRlUGF0aH0gLS1zdGFjay1uYW1lIGNkay1kcmlmdC13b3JrZmxvdy1pYW0tcm9sZSAtLWNhcGFiaWxpdGllcyBDQVBBQklMSVRZX05BTUVEX0lBTWA7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wcyBmb3IgdGhlIFByb2plbi1pbnRlZ3JhdGVkIENESyBEcmlmdCBJQU0gdGVtcGxhdGUgY29uc3RydWN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2RrRHJpZnRJYW1UZW1wbGF0ZVByb3BzIGV4dGVuZHMgQ2RrRHJpZnRJYW1UZW1wbGF0ZUdlbmVyYXRvclByb3BzIHtcbiAgLyoqIFByb2plbiBwcm9qZWN0IGluc3RhbmNlICovXG4gIHJlYWRvbmx5IHByb2plY3Q6IGFueTtcbiAgLyoqIE91dHB1dCBwYXRoIGZvciB0aGUgdGVtcGxhdGUgZmlsZSAoZGVmYXVsdDogJ2Nkay1kcmlmdC13b3JrZmxvdy1pYW0tdGVtcGxhdGUueWFtbCcpICovXG4gIHJlYWRvbmx5IG91dHB1dFBhdGg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvamVuIGNvbnN0cnVjdCB0aGF0IGVtaXRzIGEgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGUgd2l0aCBtaW5pbWFsIElBTSBwZXJtaXNzaW9uc1xuICogZm9yIHRoZSBDREsgRHJpZnQgRGV0ZWN0aW9uIFdvcmtmbG93LlxuICpcbiAqIEZvciBub24tUHJvamVuIHByb2plY3RzLCB1c2UgYENka0RyaWZ0SWFtVGVtcGxhdGVHZW5lcmF0b3JgIGRpcmVjdGx5LlxuICovXG5leHBvcnQgY2xhc3MgQ2RrRHJpZnRJYW1UZW1wbGF0ZSB7XG4gIGNvbnN0cnVjdG9yKHByb3BzOiBDZGtEcmlmdElhbVRlbXBsYXRlUHJvcHMpIHtcbiAgICBjb25zdCBvdXRwdXRQYXRoID0gcHJvcHMub3V0cHV0UGF0aCA/PyAnY2RrLWRyaWZ0LXdvcmtmbG93LWlhbS10ZW1wbGF0ZS55YW1sJztcblxuICAgIC8vIEdlbmVyYXRlIHRlbXBsYXRlIHVzaW5nIHRoZSBnZW5lcmF0b3JcbiAgICBjb25zdCB0ZW1wbGF0ZSA9IENka0RyaWZ0SWFtVGVtcGxhdGVHZW5lcmF0b3IuZ2VuZXJhdGVUZW1wbGF0ZShwcm9wcyk7XG4gICAgbmV3IFRleHRGaWxlKHByb3BzLnByb2plY3QsIG91dHB1dFBhdGgsIHsgbGluZXM6IHRlbXBsYXRlLnNwbGl0KCdcXG4nKSB9KTtcblxuICAgIC8vIEFkZCBkZXBsb3kgdGFza1xuICAgIHByb3BzLnByb2plY3QuYWRkVGFzaygnZGVwbG95LWNka2RyaWZ0LWlhbS10ZW1wbGF0ZScsIHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnRGVwbG95IHRoZSBDREsgRHJpZnQgRGV0ZWN0aW9uIElBTSB0ZW1wbGF0ZSB2aWEgQ2xvdWRGb3JtYXRpb24gKGFjY2VwdHMgZXh0cmEgQVdTIENMSSBhcmdzLCBlLmcuLCAtLXBhcmFtZXRlci1vdmVycmlkZXMgS2V5PVZhbHVlLi4uKScsXG4gICAgICByZWNlaXZlQXJnczogdHJ1ZSxcbiAgICAgIGV4ZWM6IENka0RyaWZ0SWFtVGVtcGxhdGVHZW5lcmF0b3IuZ2VuZXJhdGVEZXBsb3lDb21tYW5kKG91dHB1dFBhdGgpLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -572,46 +572,6 @@ class SerdeContextConfig {
572
572
  }
573
573
  }
574
574
 
575
- function* serializingStructIterator(ns, sourceObject) {
576
- if (ns.isUnitSchema()) {
577
- return;
578
- }
579
- const struct = ns.getSchema();
580
- for (let i = 0; i < struct[4].length; ++i) {
581
- const key = struct[4][i];
582
- const memberSchema = struct[5][i];
583
- const memberNs = new schema.NormalizedSchema([memberSchema, 0], key);
584
- if (!(key in sourceObject) && !memberNs.isIdempotencyToken()) {
585
- continue;
586
- }
587
- yield [key, memberNs];
588
- }
589
- }
590
- function* deserializingStructIterator(ns, sourceObject, nameTrait) {
591
- if (ns.isUnitSchema()) {
592
- return;
593
- }
594
- const struct = ns.getSchema();
595
- let keysRemaining = Object.keys(sourceObject).filter((k) => k !== "__type").length;
596
- for (let i = 0; i < struct[4].length; ++i) {
597
- if (keysRemaining === 0) {
598
- break;
599
- }
600
- const key = struct[4][i];
601
- const memberSchema = struct[5][i];
602
- const memberNs = new schema.NormalizedSchema([memberSchema, 0], key);
603
- let serializationKey = key;
604
- if (nameTrait) {
605
- serializationKey = memberNs.getMergedTraits()[nameTrait] ?? key;
606
- }
607
- if (!(serializationKey in sourceObject)) {
608
- continue;
609
- }
610
- yield [key, memberNs];
611
- keysRemaining -= 1;
612
- }
613
- }
614
-
615
575
  class UnionSerde {
616
576
  from;
617
577
  to;
@@ -739,7 +699,7 @@ class JsonShapeDeserializer extends SerdeContextConfig {
739
699
  if (union) {
740
700
  unionSerde = new UnionSerde(record, out);
741
701
  }
742
- for (const [memberName, memberSchema] of deserializingStructIterator(ns, record, jsonName ? "jsonName" : false)) {
702
+ for (const [memberName, memberSchema] of ns.structIterator()) {
743
703
  let fromKey = memberName;
744
704
  if (jsonName) {
745
705
  fromKey = memberSchema.getMergedTraits().jsonName ?? fromKey;
@@ -948,7 +908,7 @@ class JsonShapeSerializer extends SerdeContextConfig {
948
908
  if (jsonName) {
949
909
  nameMap = {};
950
910
  }
951
- for (const [memberName, memberSchema] of serializingStructIterator(ns, record)) {
911
+ for (const [memberName, memberSchema] of ns.structIterator()) {
952
912
  const serializableValue = this._write(memberSchema, record[memberName], ns);
953
913
  if (serializableValue !== undefined) {
954
914
  let targetKey = memberName;
@@ -1567,7 +1527,7 @@ class QueryShapeSerializer extends SerdeContextConfig {
1567
1527
  else if (ns.isStructSchema()) {
1568
1528
  if (value && typeof value === "object") {
1569
1529
  let didWriteMember = false;
1570
- for (const [memberName, member] of serializingStructIterator(ns, value)) {
1530
+ for (const [memberName, member] of ns.structIterator()) {
1571
1531
  if (value[memberName] == null && !member.isIdempotencyToken()) {
1572
1532
  continue;
1573
1533
  }
@@ -1868,7 +1828,7 @@ class XmlShapeSerializer extends SerdeContextConfig {
1868
1828
  }
1869
1829
  const structXmlNode = xmlBuilder.XmlNode.of(name);
1870
1830
  const [xmlnsAttr, xmlns] = this.getXmlnsAttribute(ns, parentXmlns);
1871
- for (const [memberName, memberSchema] of serializingStructIterator(ns, value)) {
1831
+ for (const [memberName, memberSchema] of ns.structIterator()) {
1872
1832
  const val = value[memberName];
1873
1833
  if (val != null || memberSchema.isIdempotencyToken()) {
1874
1834
  if (memberSchema.getMergedTraits().xmlAttribute) {
@@ -234,46 +234,6 @@ class SerdeContextConfig {
234
234
  }
235
235
  }
236
236
 
237
- function* serializingStructIterator(ns, sourceObject) {
238
- if (ns.isUnitSchema()) {
239
- return;
240
- }
241
- const struct = ns.getSchema();
242
- for (let i = 0; i < struct[4].length; ++i) {
243
- const key = struct[4][i];
244
- const memberSchema = struct[5][i];
245
- const memberNs = new schema.NormalizedSchema([memberSchema, 0], key);
246
- if (!(key in sourceObject) && !memberNs.isIdempotencyToken()) {
247
- continue;
248
- }
249
- yield [key, memberNs];
250
- }
251
- }
252
- function* deserializingStructIterator(ns, sourceObject, nameTrait) {
253
- if (ns.isUnitSchema()) {
254
- return;
255
- }
256
- const struct = ns.getSchema();
257
- let keysRemaining = Object.keys(sourceObject).filter((k) => k !== "__type").length;
258
- for (let i = 0; i < struct[4].length; ++i) {
259
- if (keysRemaining === 0) {
260
- break;
261
- }
262
- const key = struct[4][i];
263
- const memberSchema = struct[5][i];
264
- const memberNs = new schema.NormalizedSchema([memberSchema, 0], key);
265
- let serializationKey = key;
266
- if (nameTrait) {
267
- serializationKey = memberNs.getMergedTraits()[nameTrait] ?? key;
268
- }
269
- if (!(serializationKey in sourceObject)) {
270
- continue;
271
- }
272
- yield [key, memberNs];
273
- keysRemaining -= 1;
274
- }
275
- }
276
-
277
237
  class UnionSerde {
278
238
  from;
279
239
  to;
@@ -401,7 +361,7 @@ class JsonShapeDeserializer extends SerdeContextConfig {
401
361
  if (union) {
402
362
  unionSerde = new UnionSerde(record, out);
403
363
  }
404
- for (const [memberName, memberSchema] of deserializingStructIterator(ns, record, jsonName ? "jsonName" : false)) {
364
+ for (const [memberName, memberSchema] of ns.structIterator()) {
405
365
  let fromKey = memberName;
406
366
  if (jsonName) {
407
367
  fromKey = memberSchema.getMergedTraits().jsonName ?? fromKey;
@@ -610,7 +570,7 @@ class JsonShapeSerializer extends SerdeContextConfig {
610
570
  if (jsonName) {
611
571
  nameMap = {};
612
572
  }
613
- for (const [memberName, memberSchema] of serializingStructIterator(ns, record)) {
573
+ for (const [memberName, memberSchema] of ns.structIterator()) {
614
574
  const serializableValue = this._write(memberSchema, record[memberName], ns);
615
575
  if (serializableValue !== undefined) {
616
576
  let targetKey = memberName;
@@ -1229,7 +1189,7 @@ class QueryShapeSerializer extends SerdeContextConfig {
1229
1189
  else if (ns.isStructSchema()) {
1230
1190
  if (value && typeof value === "object") {
1231
1191
  let didWriteMember = false;
1232
- for (const [memberName, member] of serializingStructIterator(ns, value)) {
1192
+ for (const [memberName, member] of ns.structIterator()) {
1233
1193
  if (value[memberName] == null && !member.isIdempotencyToken()) {
1234
1194
  continue;
1235
1195
  }
@@ -1530,7 +1490,7 @@ class XmlShapeSerializer extends SerdeContextConfig {
1530
1490
  }
1531
1491
  const structXmlNode = xmlBuilder.XmlNode.of(name);
1532
1492
  const [xmlnsAttr, xmlns] = this.getXmlnsAttribute(ns, parentXmlns);
1533
- for (const [memberName, memberSchema] of serializingStructIterator(ns, value)) {
1493
+ for (const [memberName, memberSchema] of ns.structIterator()) {
1534
1494
  const val = value[memberName];
1535
1495
  if (val != null || memberSchema.isIdempotencyToken()) {
1536
1496
  if (memberSchema.getMergedTraits().xmlAttribute) {