@pipeline-builder/pipeline-data 4.3.2 → 4.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/api/crud-service.d.ts +7 -0
- package/lib/api/crud-service.js +14 -3
- package/lib/api/ecosystem-privacy.d.ts +25 -0
- package/lib/api/ecosystem-privacy.js +58 -0
- package/lib/api/pipeline-step-resolution.d.ts +111 -0
- package/lib/api/pipeline-step-resolution.js +163 -0
- package/lib/api/plugin-consumption-policy.d.ts +8 -2
- package/lib/api/plugin-consumption-policy.js +20 -3
- package/lib/api/plugin-resolution.d.ts +26 -9
- package/lib/api/plugin-resolution.js +51 -33
- package/lib/api/public-directory.js +1 -1
- package/lib/api/reporting/analytics-queries.d.ts +6 -4
- package/lib/api/reporting/analytics-queries.js +15 -14
- package/lib/api/reporting/deploy-rollup.d.ts +2 -0
- package/lib/api/reporting/deploy-rollup.js +5 -1
- package/lib/api/reporting/failure-classifier.d.ts +2 -6
- package/lib/api/reporting/failure-classifier.js +22 -1
- package/lib/api/reporting/ingest.js +73 -16
- package/lib/api/reporting/plugin-exposure.d.ts +261 -15
- package/lib/api/reporting/plugin-exposure.js +423 -38
- package/lib/api/reporting/stakeholder/compose.d.ts +1 -1
- package/lib/api/reporting/stakeholder/compose.js +30 -1
- package/lib/api/reporting/stakeholder/store.d.ts +16 -2
- package/lib/api/reporting/stakeholder/store.js +17 -6
- package/lib/api/reporting/types.d.ts +80 -1
- package/lib/api/reporting/types.js +1 -1
- package/lib/api/reporting-service.d.ts +11 -4
- package/lib/api/reporting-service.js +106 -43
- package/lib/api/soft-delete-sweep.d.ts +8 -18
- package/lib/api/soft-delete-sweep.js +35 -5
- package/lib/api/support-cases.d.ts +380 -0
- package/lib/api/support-cases.js +671 -0
- package/lib/api/version-references.d.ts +80 -0
- package/lib/api/version-references.js +135 -0
- package/lib/core/query-filters.d.ts +3 -3
- package/lib/core/query-filters.js +1 -1
- package/lib/database/drizzle-schema.d.ts +4858 -2759
- package/lib/database/drizzle-schema.js +13 -3
- package/lib/database/index.d.ts +1 -1
- package/lib/database/index.js +2 -2
- package/lib/database/schema/ecosystem.d.ts +53 -0
- package/lib/database/schema/ecosystem.js +14 -3
- package/lib/database/schema/pipeline.d.ts +38 -0
- package/lib/database/schema/pipeline.js +20 -2
- package/lib/database/schema/plugin.d.ts +265 -0
- package/lib/database/schema/plugin.js +34 -3
- package/lib/database/schema/reporting-analytics.d.ts +786 -4
- package/lib/database/schema/reporting-analytics.js +111 -5
- package/lib/database/schema/support.d.ts +1093 -0
- package/lib/database/schema/support.js +323 -0
- package/lib/database/tenancy.d.ts +7 -5
- package/lib/database/tenancy.js +1 -1
- package/lib/index.d.ts +7 -3
- package/lib/index.js +11 -3
- package/lib/testing/exports.json +57 -0
- package/package.json +4 -3
|
@@ -460,4 +460,4 @@ export async function listPublicListingsForSitemap(max = 5000) {
|
|
|
460
460
|
return resultRows(res)
|
|
461
461
|
.map((r) => ({ publisher: r.publisher_handle, name: r.name, updatedAt: iso(r.updated_at) }));
|
|
462
462
|
}
|
|
463
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWRpcmVjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvcHVibGljLWRpcmVjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxHQUFHLEVBQVksTUFBTSxhQUFhLENBQUM7QUFFNUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWxELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQVVqRSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQTZCLENBQUMsV0FBVyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUUxSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQWtDLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFFbEgsc0ZBQXNGO0FBQ3RGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQztBQUV4Qyx1RUFBdUU7QUFDdkUsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsR0FBRyxDQUFDO0FBQzlDLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLEVBQUUsQ0FBQztBQUMxQyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxFQUFFLENBQUM7QUE2SHRDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBMEIsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUM5RixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxFQUFFLENBQUM7QUFDeEMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsRUFBRSxDQUFDO0FBMkVwQyxTQUFTLEdBQUcsQ0FBQyxDQUFxQztJQUNoRCxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDMUUsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBRUQsU0FBUyxHQUFHLENBQUMsQ0FBbUM7SUFDOUMsSUFBSSxDQUFDLENBQUM7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUNsQixPQUFPLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDekUsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEdBQXdFO0lBR3pHLE1BQU0sSUFBSSxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzlFLElBQUksR0FBRyxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUM5QixPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsNkJBQTZCLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2pJLENBQUM7SUFDRCxNQUFNLGNBQWMsR0FBRyxHQUFHLENBQUMsY0FBYyxLQUFLLFVBQVUsSUFBSSxHQUFHLENBQUMsY0FBYyxLQUFLLFVBQVUsQ0FBQztJQUM5RixJQUFJLGNBQWMsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ3BDLE9BQU8sRUFBRSxHQUFHLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFLENBQUM7SUFDbkcsQ0FBQztJQUNELE9BQU8sRUFBRSxHQUFHLElBQUksRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLENBQUM7QUFDM0MsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsR0FBcUI7SUFDakQsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMxQyxPQUFPO1FBQ0wsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsR0FBRyxDQUFDLHNCQUFzQixFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsY0FBYyxFQUFFO1FBQzlHLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtRQUNkLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTyxJQUFJLEVBQUU7UUFDMUIsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO1FBQ3RCLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUSxJQUFJLEVBQUU7UUFDNUIsYUFBYSxFQUFFLEdBQUcsQ0FBQyxjQUFjLElBQUksRUFBRTtRQUN2QyxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFO1FBQzFCLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDO1FBQzFCLE1BQU0sRUFBRSxXQUFXLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSTtRQUN6SSxZQUFZLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUM7UUFDcEMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoRixTQUFTLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7UUFDOUIsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLO0tBQ2pCLENBQUM7QUFDSixDQUFDO0FBRUQsZ0ZBQWdGO0FBQ2hGLFNBQVM7QUFDVCxnRkFBZ0Y7QUFFaEYsdUVBQXVFO0FBQ3ZFLE1BQU0sVUFBVSxjQUFjLENBQUMsQ0FBcUI7SUFDbEQsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsMEJBQTBCLENBQUMsQ0FBQztBQUNwRixDQUFDO0FBRUQsNkVBQTZFO0FBQzdFLFNBQVMsY0FBYyxDQUFDLENBQVM7SUFDL0IsT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNyRixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsSUFBWSxFQUFFLENBQVM7SUFDbkQsTUFBTSxLQUFLLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDbEQsTUFBTSxFQUFFLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDckMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFFRCxpRkFBaUY7QUFDakYsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE1BQWM7SUFDL0MsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUMxRSxDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE1BQTBCO0lBQzNELElBQUksQ0FBQyxNQUFNO1FBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxDQUFDLEdBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQXFCLENBQUMsQ0FBQyxDQUFDO1FBQy9GLE9BQU8sT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLEtBQXlCO0lBQzNDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sdUJBQXVCLENBQUM7SUFDdEUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0FBQ3ZFLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLFNBQVMsQ0FBQyxNQUE2QixFQUFFLENBQVM7SUFDekQsTUFBTSxLQUFLLEdBQVUsQ0FBQyxHQUFHLENBQUEscUJBQXFCLENBQUMsQ0FBQztJQUNoRCxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ04seUVBQXlFO1FBQ3pFLDZFQUE2RTtRQUM3RSwyRUFBMkU7UUFDM0UsOEVBQThFO1FBQzlFLDZFQUE2RTtRQUM3RSx1REFBdUQ7UUFDdkQsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUEsdURBQXVELENBQUMsd0JBQXdCLENBQUMsZ0JBQWdCLG9CQUFvQixvQkFBb0IsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqTSxDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsUUFBUTtRQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFBLGdCQUFnQixNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN0RSxJQUFJLE1BQU0sQ0FBQyxJQUFJO1FBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUEsc0JBQXNCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLElBQUksTUFBTSxDQUFDLE9BQU87UUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQSxlQUFlLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLElBQUksTUFBTSxDQUFDLFdBQVc7UUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQSxvQkFBb0IsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDaEYsSUFBSSxNQUFNLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3RDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVk7WUFDNUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQSwwREFBMEQ7WUFDL0QsQ0FBQyxDQUFDLEdBQUcsQ0FBQSwwREFBMEQsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFDRCxJQUFJLE1BQU0sQ0FBQyxTQUFTLEtBQUssU0FBUyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDeEUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUEscUJBQXFCLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFDRCxNQUFNLElBQUksR0FBRyxDQUFDO1FBQ1osQ0FBQyxDQUFDLEdBQUcsQ0FBQSw2REFBNkQsQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZO1FBQ3hHLENBQUMsQ0FBQyxHQUFHLENBQUEsU0FBUyxDQUFDO0lBQ2pCLE9BQU8sR0FBRyxDQUFBOzs7Ozs7O2FBT0MsSUFBSTs7Ozs7Ozs7YUFRSixHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUEsT0FBTyxDQUFDLEVBQUUsQ0FBQztBQUMzQyxDQUFDO0FBRUQsU0FBUyxPQUFPLENBQUMsSUFBbUIsRUFBRSxRQUFpQjtJQUNyRCxRQUFRLElBQUksS0FBSyxXQUFXLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDN0QsS0FBSyxXQUFXO1lBQ2QsdUVBQXVFO1lBQ3ZFLHlCQUF5QjtZQUN6QixPQUFPLEdBQUcsQ0FBQSwyRkFBMkYsQ0FBQztRQUN4RyxLQUFLLFFBQVE7WUFDWCxPQUFPLEdBQUcsQ0FBQSwyREFBMkQsQ0FBQztRQUN4RSxLQUFLLFVBQVU7WUFDYixPQUFPLEdBQUcsQ0FBQSw4QkFBOEIsQ0FBQztRQUMzQyxLQUFLLE1BQU07WUFDVCxPQUFPLEdBQUcsQ0FBQSxnQ0FBZ0MsQ0FBQztRQUM3QyxLQUFLLFFBQVE7WUFDWCxPQUFPLEdBQUcsQ0FBQSw0REFBNEQsQ0FBQztRQUN6RSxLQUFLLFNBQVMsQ0FBQztRQUNmO1lBQ0UsT0FBTyxHQUFHLENBQUEsMkJBQTJCLENBQUM7SUFDMUMsQ0FBQztBQUNILENBQUM7QUFFRCxvRkFBb0Y7QUFDcEYsTUFBTSxDQUFDLEtBQUssVUFBVSxvQkFBb0IsQ0FBQyxNQUE2QjtJQUN0RSxNQUFNLEVBQUUsR0FBRyxpQkFBaUIsRUFBRSxDQUFDO0lBQy9CLE1BQU0sQ0FBQyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkMsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxNQUFNLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO0lBQzlGLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFbEMsTUFBTSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUM7UUFDNUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUE7c0JBQ0ksSUFBSTs7O2tCQUdSLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztlQUMxQixLQUFLLFdBQVcsTUFBTSxFQUFFLENBQUM7UUFDcEMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUE7c0JBQ0ksSUFBSTs7Ozs7Ozt5R0FPK0UsQ0FBQztLQUN2RyxDQUFDLENBQUM7SUFFSCxNQUFNLElBQUksR0FBRyxVQUFVLENBQWdELE9BQU8sQ0FBQyxDQUFDO0lBQ2hGLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQzdCLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ04sTUFBTSxTQUFTLEdBQUcsRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDakcsSUFBSSxTQUFTLENBQUMsSUFBSSxJQUFJLFNBQVMsQ0FBQyxPQUFPO2dCQUFFLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQ3RFLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxNQUFNLEdBQW9DO1FBQzlDLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0tBQzFGLENBQUM7SUFjRixLQUFLLE1BQU0sQ0FBQyxJQUFJLFVBQVUsQ0FBVyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQy9DLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkIsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUTtZQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN6RSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxjQUFjO1lBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2xGLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU87WUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDMUUsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWTtZQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN4RixJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxhQUFhLEtBQUssSUFBSTtZQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUgsQ0FBQztJQUVELE9BQU87UUFDTCxLQUFLO1FBQ0wsTUFBTTtRQUNOLEtBQUs7UUFDTCxVQUFVLEVBQUUsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO0tBQzdGLENBQUM7QUFDSixDQUFDO0FBRUQsZ0ZBQWdGO0FBQ2hGLGFBQWE7QUFDYixnRkFBZ0Y7QUFFaEYsMEZBQTBGO0FBQzFGLE1BQU0sQ0FBQyxLQUFLLFVBQVUsb0JBQW9CLENBQUMsY0FBYyxHQUFHLENBQUM7SUFDM0QsTUFBTSxFQUFFLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztJQUMvQixNQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFBOzs7Ozs7Ozs7dUNBU0ssSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztJQUVoSCxNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBb0MsQ0FBQztJQUMvRCxLQUFLLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBeUQsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMxRixJQUFJLE9BQU8sR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixPQUFPLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDeEUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBQ0QsT0FBTyxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQTBDRDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGdCQUFnQixDQUFDLGVBQXVCLEVBQUUsSUFBWTtJQUMxRSxNQUFNLEVBQUUsR0FBRyxpQkFBaUIsRUFBRSxDQUFDO0lBQy9CLE1BQU0sVUFBVSxHQUFHLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUE7O2dDQUVULGVBQWUsZUFBZSxJQUFJO2FBQ3JELENBQUMsQ0FBQztJQUNiLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBbUIsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsSUFBSSxDQUFDLEdBQUc7UUFBRSxPQUFPLElBQUksQ0FBQztJQUV0QixNQUFNLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUNsRCxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQSwyREFBMkQsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2xGLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFBLHNEQUFzRCxHQUFHLENBQUMsRUFBRSw2QkFBNkIsQ0FBQztLQUN6RyxDQUFDLENBQUM7SUFDSCxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQWEsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDM0csTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFjLFdBQVcsQ0FBQyxDQUFDO0lBQzFELHdGQUF3RjtJQUN4RixNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLEdBQUcsQ0FBQyxjQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1dBQ2pGLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztXQUNsQyxJQUFJLENBQUM7SUFFVixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQztJQUNyQyxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEMsT0FBTztRQUNMLEdBQUcsSUFBSTtRQUNQLFVBQVUsRUFBRSxHQUFHLENBQUMsV0FBVyxJQUFJLE9BQU8sRUFBRSxXQUFXLElBQUksSUFBSTtRQUMzRCxXQUFXLEVBQUUsR0FBRyxDQUFDLFdBQVcsSUFBSSxFQUFFO1FBQ2xDLFdBQVcsRUFBRSxHQUFHLENBQUMsWUFBWTtRQUM3QixTQUFTLEVBQUUsR0FBRyxDQUFDLFVBQVU7UUFDekIsUUFBUSxFQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDaEMsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPO1lBQ2xCLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztZQUNoQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVE7WUFDcEIsVUFBVSxFQUFFLENBQUMsQ0FBQyxhQUFhLElBQUksSUFBSTtZQUNuQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsbUJBQW1CO1lBQ3pDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTTtZQUNoQixTQUFTLEVBQUUsQ0FBQyxDQUFDLFNBQVM7WUFDdEIsWUFBWSxFQUFFLENBQUMsQ0FBQyxhQUFhO1lBQzdCLFFBQVEsRUFBRSxDQUFDLENBQUMsU0FBUztZQUNyQixtQkFBbUIsRUFBRSxDQUFDLENBQUMscUJBQXFCLElBQUksSUFBSTtZQUNwRCxlQUFlLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixJQUFJLElBQUk7WUFDNUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDbEQsYUFBYSxFQUFFLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDaEUsV0FBVyxFQUFFLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQzNHLENBQUMsQ0FBQztRQUNILGFBQWEsRUFBRTtZQUNiLE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxXQUFXLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN4SCxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLElBQUksRUFBRTtZQUNsRCxZQUFZLEVBQUUsT0FBTyxFQUFFLGFBQWEsSUFBSSxFQUFFO1lBQzFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsWUFBWSxJQUFJLEVBQUU7WUFDeEMsc0JBQXNCLEVBQUUsSUFBSTtZQUM1QixhQUFhLEVBQUUsT0FBTyxFQUFFLGNBQWMsSUFBSSxFQUFFO1lBQzVDLFVBQVUsRUFBRSxPQUFPLEVBQUUsV0FBVyxJQUFJLEVBQUU7U0FDdkM7UUFDRCxXQUFXLEVBQUU7WUFDWCw0RUFBNEU7WUFDNUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxZQUFZLElBQUksSUFBSTtZQUNyQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFlBQVksSUFBSSxJQUFJO1lBQ3JDLFdBQVcsRUFBRSxPQUFPLEVBQUUsWUFBWSxJQUFJLElBQUk7WUFDMUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDL0QsWUFBWSxFQUFFLE9BQU8sRUFBRSxhQUFhLElBQUksSUFBSTtZQUM1QyxRQUFRLEVBQUUsT0FBTyxFQUFFLFNBQVMsSUFBSSxJQUFJO1lBQ3BDLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxxQkFBcUIsSUFBSSxJQUFJO1lBQzNELGVBQWUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLElBQUksSUFBSTtZQUNuRCxhQUFhLEVBQUUsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUM3RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVk7Z0JBQzVCLENBQUMsQ0FBQyx1QkFBdUIsa0JBQWtCLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLElBQUksa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTztnQkFDeEosQ0FBQyxDQUFDLElBQUk7U0FDVDtRQUNELFVBQVUsRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ25DLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRTtZQUNSLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUTtZQUNwQixPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU87WUFDbEIsYUFBYSxFQUFFLENBQUMsQ0FBQyxjQUFjO1lBQy9CLFlBQVksRUFBRSxDQUFDLENBQUMsYUFBYTtZQUM3QixXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7WUFDaEMsV0FBVyxFQUFFLENBQUMsQ0FBQyxZQUFZO1lBQzNCLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxJQUFJLEVBQUU7U0FDeEIsQ0FBQyxDQUFDO1FBQ0gsa0JBQWtCLEVBQUUsSUFBSTtZQUN0QixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDbkcsQ0FBQyxDQUFDLElBQUk7UUFDUixZQUFZLEVBQUUsR0FBRyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUc7UUFDL0YsY0FBYyxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvRSxlQUFlLEVBQUUsR0FBRyxDQUFDLGdCQUFnQixJQUFJLElBQUk7UUFDN0MsY0FBYyxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSTtLQUMxRyxDQUFDO0FBQ0osQ0FBQztBQUVELG1GQUFtRjtBQUNuRixNQUFNLENBQUMsS0FBSyxVQUFVLHNCQUFzQixDQUMxQyxlQUF1QixFQUFFLElBQVksRUFBRSxPQUFlO0lBRXRELE1BQU0sRUFBRSxHQUFHLGlCQUFpQixFQUFFLENBQUM7SUFDL0IsTUFBTSxHQUFHLEdBQUcsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQTs7Z0NBRUYsZUFBZSxlQUFlLElBQUksa0JBQWtCLE9BQU87O2FBRTlFLENBQUMsQ0FBQztJQUNiLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBbUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakcsSUFBSSxDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztBQUNsRixDQUFDO0FBeUJELFNBQVMsV0FBVyxDQUFDLElBQWdCO0lBQ25DLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDYixLQUFLLFFBQVEsRUFBRSxPQUFPLEdBQUcsQ0FBQSx5QkFBeUIsQ0FBQztRQUNuRCxLQUFLLFNBQVMsRUFBRSxPQUFPLEdBQUcsQ0FBQSwwREFBMEQsQ0FBQztRQUNyRixLQUFLLFFBQVEsRUFBRSxPQUFPLEdBQUcsQ0FBQSx5REFBeUQsQ0FBQztRQUNuRixLQUFLLFNBQVMsQ0FBQztRQUNmO1lBQ0UsdUVBQXVFO1lBQ3ZFLE9BQU8sR0FBRyxDQUFBLGdFQUFnRSxDQUFDO0lBQy9FLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxHQUE2QjtJQUMxRCxPQUFPO1FBQ0wsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFO1FBQ1YsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO1FBQ3ZCLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSztRQUNoQixRQUFRLEVBQUUsR0FBRyxDQUFDLFNBQVM7UUFDdkIsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO1FBQ3BCLE1BQU0sRUFBRSxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJO1FBQ2pGLFdBQVcsRUFBRSxHQUFHLENBQUMsWUFBWSxLQUFLLElBQUk7UUFDdEMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDO1FBQ3BDLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxLQUFLLElBQUk7UUFDM0IsU0FBUyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDO1FBQzlCLFNBQVMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQztRQUM5QixLQUFLLEVBQUUsR0FBRyxDQUFDLGVBQWU7WUFDeEIsQ0FBQyxDQUFDO2dCQUNBLFFBQVEsRUFBRSxHQUFHLENBQUMsZUFBZTtnQkFDN0Isb0JBQW9CLEVBQUUsR0FBRyxDQUFDLHNCQUFzQjtnQkFDaEQsU0FBUyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUM7Z0JBQ3BDLFNBQVMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDO2FBQ3JDO1lBQ0QsQ0FBQyxDQUFDLElBQUk7S0FDVCxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsaUJBQWlCLENBQUMsZUFBdUIsRUFBRSxJQUFZLEVBQUUsS0FBSyxHQUFzQixFQUFFO0lBQzFHLE1BQU0sRUFBRSxHQUFHLGlCQUFpQixFQUFFLENBQUM7SUFDL0IsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFpQixNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFBOztnQ0FFakMsZUFBZSxlQUFlLElBQUk7YUFDckQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakIsSUFBSSxDQUFDLE9BQU87UUFBRSxPQUFPLElBQUksQ0FBQztJQUUxQixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDdEYsTUFBTSxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3pELENBQUMsQ0FBQyxxQkFBcUI7UUFDdkIsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3RFLE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRCxNQUFNLEtBQUssR0FBVSxDQUFDLEdBQUcsQ0FBQSxnQkFBZ0IsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkQsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzNHLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFBLFlBQVksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBWSxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFBOzs7OzthQUs1QyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUEsT0FBTyxDQUFDO2dCQUN4QixXQUFXLENBQUMsSUFBSSxDQUFDO2FBQ3BCLEtBQUssV0FBVyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RCxPQUFPO1FBQ0wsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDO1FBQ2pDLEtBQUs7UUFDTCxVQUFVLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO0tBQzNGLENBQUM7QUFDSixDQUFDO0FBRUQsdUVBQXVFO0FBQ3ZFLE1BQU0sQ0FBQyxLQUFLLFVBQVUsNEJBQTRCLENBQUMsR0FBRyxHQUFHLElBQUk7SUFDM0QsTUFBTSxFQUFFLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztJQUMvQixNQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFBOzs4REFFNEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEcsT0FBTyxVQUFVLENBQXdFLEdBQUcsQ0FBQztTQUMxRixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2pHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBRdWVyaWVzIGJlaGluZCB0aGUgYW5vbnltb3VzIHB1YmxpYyBwbHVnaW4gZGlyZWN0b3J5XG4gKiAoZG9jcy9wbHVnaW4tcHVibGlzaGluZy5tZCkuXG4gKlxuICogRXZlcnkgcXVlcnkgaGVyZSByZWFkcyBPTkxZIHRoZSBgcHVibGljX2xpc3RpbmdzYCwgYHB1YmxpY19saXN0ZWRfdmVyc2lvbnNgLFxuICogYHB1YmxpY19hZHZpc29yaWVzYCBhbmQgYHB1YmxpY19yZXZpZXdzYCB2aWV3cywgdGhyb3VnaCB0aGUgYGVjb3N5c3RlbV9wdWJsaWNfcmVhZGVyYFxuICogY29ubmVjdGlvbiAoe0BsaW5rIGdldFB1YmxpY1JlYWRlckRifSkuIFRob3NlIHZpZXdzIGFscmVhZHkgZmlsdGVyIHRvIHB1YmxpY1xuICogcm93cyAobGlzdGVkL3VubWFpbnRhaW5lZCBsaXN0aW5ncyBvZiBub24tc3VzcGVuZGVkIHB1Ymxpc2hlcnMsIG5vbi1wYXVzZWRcbiAqIHZlcnNpb25zLCBwdWJsaXNoZWQgYWR2aXNvcmllcykgYW5kIHByb2plY3QgcHVibGljIGNvbHVtbnMgb25seSwgc28gbm90aGluZ1xuICogaGVyZSBuZWVkcyDigJQgb3IgaGFzIOKAlCBhIHRlbmFudCBjb250ZXh0LlxuICpcbiAqIFNlYXJjaDogUG9zdGdyZXMgZnVsbC10ZXh0IChgc2VhcmNoX3ZlY3RvcmAsIHdlaWdodGVkIG5hbWUgQSAvIGtleXdvcmRzIGFuZFxuICogY2F0ZWdvcnkgQiAvIHN1bW1hcnkgQyAvIFJFQURNRSBELCBgZW5nbGlzaGAgY29uZmlnKSBPUiBhIHRyaWdyYW0gbWF0Y2ggb24gdGhlXG4gKiBuYW1lICh0eXBvIHRvbGVyYW5jZSksIHJhbmtlZCBieSBgdHNfcmFua2AgKyBuYW1lIHNpbWlsYXJpdHksIGJsZW5kZWQgd2l0aCB0aGVcbiAqIEJheWVzaWFuIHJhdGluZyBhbmQgaW5zdGFsbCBjb3VudCB3aGVuIHByZXNlbnQuIFBhdXNlZCBsaXN0aW5ncyBhcmUgaGlkZGVuLlxuICovXG5cbmltcG9ydCB7IHNxbCwgdHlwZSBTUUwgfSBmcm9tICdkcml6emxlLW9ybSc7XG5cbmltcG9ydCB7IGFkdmlzb3J5UmFuZ2VDb3ZlcnMgfSBmcm9tICcuL3BsdWdpbi1hZHZpc29yaWVzLmpzJztcbmltcG9ydCB7IGNvbXBhcmVTZW12ZXIgfSBmcm9tICcuL3NlbXZlci1yYW5nZS5qcyc7XG5pbXBvcnQgdHlwZSB7IEhlYWx0aEJyZWFrZG93biB9IGZyb20gJy4uL2RhdGFiYXNlL2RyaXp6bGUtc2NoZW1hLmpzJztcbmltcG9ydCB7IHJlc3VsdFJvd3MgfSBmcm9tICcuLi9kYXRhYmFzZS9wZy1yZXN1bHQuanMnO1xuaW1wb3J0IHsgZ2V0UHVibGljUmVhZGVyRGIgfSBmcm9tICcuLi9kYXRhYmFzZS9wdWJsaWMtcmVhZGVyLmpzJztcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFB1YmxpYyBjb250cmFjdCAobWlycm9ycyBmcm9udGVuZC9zcmMvbGliL3B1YmxpYy1kaXJlY3RvcnkvdHlwZXMudHMpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgdHlwZSBEaXJlY3RvcnlUcnVzdFRpZXIgPSAnb2ZmaWNpYWwnIHwgJ3ZlcmlmaWVkJyB8ICdjb21tdW5pdHknIHwgJ3VudmVyaWZpZWQnO1xuZXhwb3J0IHR5cGUgRGlyZWN0b3J5SWNvbktpbmQgPSAndmVuZG9yJyB8ICd1cGxvYWRlZCcgfCAnbW9ub2dyYW0nIHwgJ2NhdGVnb3J5JztcbmV4cG9ydCB0eXBlIERpcmVjdG9yeVNvcnQgPSAncmVsZXZhbmNlJyB8ICdyYXRpbmcnIHwgJ2luc3RhbGxzJyB8ICd1cGRhdGVkJyB8ICduYW1lJyB8ICdoZWFsdGgnO1xuXG5leHBvcnQgY29uc3QgRElSRUNUT1JZX1NPUlRTOiByZWFkb25seSBEaXJlY3RvcnlTb3J0W10gPSBbJ3JlbGV2YW5jZScsICdyYXRpbmcnLCAnaW5zdGFsbHMnLCAndXBkYXRlZCcsICduYW1lJywgJ2hlYWx0aCddO1xuXG5leHBvcnQgY29uc3QgRElSRUNUT1JZX1RJRVJTOiByZWFkb25seSBEaXJlY3RvcnlUcnVzdFRpZXJbXSA9IFsnb2ZmaWNpYWwnLCAndmVyaWZpZWQnLCAnY29tbXVuaXR5JywgJ3VudmVyaWZpZWQnXTtcblxuLyoqIE1pbmltdW0gYHdvcmRfc2ltaWxhcml0eShxdWVyeSwgbmFtZSlgIGZvciBhIGZ1enp5IG5hbWUgbWF0Y2ggKHR5cG8gdG9sZXJhbmNlKS4gKi9cbmV4cG9ydCBjb25zdCBGVVpaWV9OQU1FX1RIUkVTSE9MRCA9IDAuMztcblxuLyoqIE1heCBxdWVyeSBsZW5ndGggYWNjZXB0ZWQgKGxvbmdlciBpcyB0cnVuY2F0ZWQsIG5ldmVyIGFuIGVycm9yKS4gKi9cbmV4cG9ydCBjb25zdCBESVJFQ1RPUllfTUFYX1FVRVJZX0xFTkdUSCA9IDEwMDtcbmV4cG9ydCBjb25zdCBESVJFQ1RPUllfREVGQVVMVF9MSU1JVCA9IDI0O1xuZXhwb3J0IGNvbnN0IERJUkVDVE9SWV9NQVhfTElNSVQgPSA2MDtcblxuZXhwb3J0IGludGVyZmFjZSBEaXJlY3RvcnlTZWFyY2hQYXJhbXMge1xuICBxPzogc3RyaW5nO1xuICBjYXRlZ29yeT86IHN0cmluZztcbiAgdGllcj86IERpcmVjdG9yeVRydXN0VGllcjtcbiAgbGljZW5zZT86IHN0cmluZztcbiAgY29tcHV0ZVR5cGU/OiBzdHJpbmc7XG4gIG5lZWRzU2VjcmV0cz86IGJvb2xlYW47XG4gIG1pblJhdGluZz86IG51bWJlcjtcbiAgc29ydD86IERpcmVjdG9yeVNvcnQ7XG4gIGN1cnNvcj86IHN0cmluZztcbiAgbGltaXQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlyZWN0b3J5TGlzdGluZ0NhcmQge1xuICBwdWJsaXNoZXI6IHsgaGFuZGxlOiBzdHJpbmc7IGRpc3BsYXlOYW1lOiBzdHJpbmc7IHRpZXI6IERpcmVjdG9yeVRydXN0VGllciB9O1xuICBuYW1lOiBzdHJpbmc7XG4gIHN1bW1hcnk6IHN0cmluZztcbiAgY2F0ZWdvcnk6IHN0cmluZztcbiAga2V5d29yZHM6IHN0cmluZ1tdO1xuICBsYXRlc3RWZXJzaW9uOiBzdHJpbmc7XG4gIGxpY2Vuc2U6IHN0cmluZztcbiAgaWNvblVybDogc3RyaW5nIHwgbnVsbDtcbiAgaWNvbktpbmQ6IERpcmVjdG9yeUljb25LaW5kO1xuICBpY29uS2V5OiBzdHJpbmcgfCBudWxsO1xuICBpY29uSGV4OiBzdHJpbmcgfCBudWxsO1xuICBpY29uQmFkZ2U6IHN0cmluZyB8IG51bGw7XG4gIHJhdGluZzogeyBzY29yZTogbnVtYmVyOyBjb3VudDogbnVtYmVyIH0gfCBudWxsO1xuICBpbnN0YWxsQ291bnQ6IG51bWJlcjtcbiAgLyoqIDDigJMxMDAgaGVhbHRoIHNjb3JlOyBudWxsIHdoZW4gZmV3ZXIgdGhhbiB0aHJlZSBjb21wb25lbnRzIGFyZSBrbm93bi4gKi9cbiAgaGVhbHRoU2NvcmU6IG51bWJlciB8IG51bGw7XG4gIHVwZGF0ZWRBdDogc3RyaW5nO1xuICBzdGF0ZTogJ2xpc3RlZCcgfCAndW5tYWludGFpbmVkJztcbiAgaGlnaGxpZ2h0PzogeyBuYW1lPzogc3RyaW5nOyBzdW1tYXJ5Pzogc3RyaW5nIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlyZWN0b3J5U2VhcmNoUmVzdWx0IHtcbiAgaXRlbXM6IERpcmVjdG9yeUxpc3RpbmdDYXJkW107XG4gIGZhY2V0czoge1xuICAgIGNhdGVnb3J5OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICAgIHRpZXI6IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG4gICAgbGljZW5zZTogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbiAgICBjb21wdXRlVHlwZTogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbiAgICBuZWVkc1NlY3JldHM6IHsgdHJ1ZTogbnVtYmVyOyBmYWxzZTogbnVtYmVyIH07XG4gIH07XG4gIHRvdGFsOiBudW1iZXI7XG4gIG5leHRDdXJzb3I6IHN0cmluZyB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlyZWN0b3J5Q2F0ZWdvcnlTdW1tYXJ5IHtcbiAgaWQ6IHN0cmluZztcbiAgY291bnQ6IG51bWJlcjtcbiAgdG9wOiBEaXJlY3RvcnlMaXN0aW5nQ2FyZFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpcmVjdG9yeUxpc3RpbmdWZXJzaW9uIHtcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBwdWJsaXNoZWRBdDogc3RyaW5nO1xuICBicmVha2luZzogYm9vbGVhbjtcbiAgZGVwcmVjYXRlZDogYm9vbGVhbjtcbiAgZGVwcmVjYXRpb25NZXNzYWdlOiBzdHJpbmcgfCBudWxsO1xuICB5YW5rZWQ6IGJvb2xlYW47XG4gIGNoYW5nZWxvZzogc3RyaW5nIHwgbnVsbDtcbiAgdnVsbkNyaXRpY2FsOiBudW1iZXIgfCBudWxsO1xuICB2dWxuSGlnaDogbnVtYmVyIHwgbnVsbDtcbiAgLyoqIE9mIHRob3NlLCB0aGUgZmluZGluZ3MgZ3J5cGUgcmVwb3J0cyBhIGZpeGVkIHZlcnNpb24gZm9yLiAqL1xuICB2dWxuQ3JpdGljYWxGaXhhYmxlOiBudW1iZXIgfCBudWxsO1xuICB2dWxuSGlnaEZpeGFibGU6IG51bWJlciB8IG51bGw7XG4gIHNjYW5uZWRBdDogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFdoZW4gdGhlIG5pZ2h0bHkgcmVzY2FuIGZsYWdnZWQgdGhpcyB2ZXJzaW9uIChmaXhhYmxlIGNyaXRpY2FscyBvdmVyIHRoZSBwbGF0Zm9ybSBmbG9vcik7IG51bGwgPSBub3QgZmxhZ2dlZC4gKi9cbiAgc2NhbkZsYWdnZWRBdDogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIElkcyBvZiB0aGUgcHVibGlzaGVkIGFkdmlzb3JpZXMgd2hvc2UgcmFuZ2UgY292ZXJzIHRoaXMgdmVyc2lvbi4gKi9cbiAgYWR2aXNvcnlJZHM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpcmVjdG9yeUxpc3RpbmdEZXRhaWwgZXh0ZW5kcyBEaXJlY3RvcnlMaXN0aW5nQ2FyZCB7XG4gIHJlYWRtZUh0bWw6IHN0cmluZyB8IG51bGw7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGhvbWVwYWdlVXJsOiBzdHJpbmcgfCBudWxsO1xuICBzb3VyY2VVcmw6IHN0cmluZyB8IG51bGw7XG4gIHZlcnNpb25zOiBEaXJlY3RvcnlMaXN0aW5nVmVyc2lvbltdO1xuICBjb25maWd1cmF0aW9uOiB7XG4gICAgc2VjcmV0czogeyBuYW1lOiBzdHJpbmc7IHJlcXVpcmVkOiBib29sZWFuOyBkZXNjcmlwdGlvbjogc3RyaW5nIH1bXTtcbiAgICByZXF1aXJlZE1ldGFkYXRhOiBzdHJpbmdbXTtcbiAgICByZXF1aXJlZFZhcnM6IHN0cmluZ1tdO1xuICAgIGNvbXB1dGVUeXBlOiBzdHJpbmc7XG4gICAgcHJpbWFyeU91dHB1dERpcmVjdG9yeTogc3RyaW5nIHwgbnVsbDtcbiAgICBuZXR3b3JrRWdyZXNzOiBzdHJpbmdbXTtcbiAgICBwbHVnaW5UeXBlOiBzdHJpbmc7XG4gIH07XG4gIHN1cHBseUNoYWluOiB7XG4gICAgc2lnbmVkOiBib29sZWFuO1xuICAgIGRpZ2VzdDogc3RyaW5nIHwgbnVsbDtcbiAgICBpbWFnZVNvdXJjZTogc3RyaW5nIHwgbnVsbDtcbiAgICBzY2FubmVkQXQ6IHN0cmluZyB8IG51bGw7XG4gICAgdnVsbkNyaXRpY2FsOiBudW1iZXIgfCBudWxsO1xuICAgIHZ1bG5IaWdoOiBudW1iZXIgfCBudWxsO1xuICAgIHZ1bG5Dcml0aWNhbEZpeGFibGU6IG51bWJlciB8IG51bGw7XG4gICAgdnVsbkhpZ2hGaXhhYmxlOiBudW1iZXIgfCBudWxsO1xuICAgIHNjYW5GbGFnZ2VkQXQ6IHN0cmluZyB8IG51bGw7XG4gICAgc2JvbVVybDogc3RyaW5nIHwgbnVsbDtcbiAgfTtcbiAgYWR2aXNvcmllczoge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgc2V2ZXJpdHk6IHN0cmluZztcbiAgICBzdW1tYXJ5OiBzdHJpbmc7XG4gICAgYWZmZWN0ZWRSYW5nZTogc3RyaW5nO1xuICAgIGZpeGVkVmVyc2lvbjogc3RyaW5nIHwgbnVsbDtcbiAgICBwdWJsaXNoZWRBdDogc3RyaW5nO1xuICAgIC8qKiBTZXJ2ZXItc2FuaXRpemVkIEhUTUwgKHRoZSBzdG9yZWQgcmVuZGVyIG9mIHRoZSBkZXRhaWxzIG1hcmtkb3duKS4gKi9cbiAgICBkZXRhaWxzSHRtbDogc3RyaW5nIHwgbnVsbDtcbiAgICBjdmVJZHM6IHN0cmluZ1tdO1xuICB9W107XG4gIHJhdGluZ0Rpc3RyaWJ1dGlvbjogUmVjb3JkPCcxJyB8ICcyJyB8ICczJyB8ICc0JyB8ICc1JywgbnVtYmVyPiB8IG51bGw7XG4gIC8qKiBUaGUgQmF5ZXNpYW4gcmF0aW5nIG92ZXIgcmV2aWV3cyBvZiB0aGUgbGFzdCB0d28gbWlub3IgdmVyc2lvbnMuICovXG4gIHJlY2VudFJhdGluZzogbnVtYmVyIHwgbnVsbDtcbiAgYWN0aXZlT3JnQ291bnQ6IG51bWJlciB8IG51bGw7XG4gIC8qKiBQZXItY29tcG9uZW50IGhlYWx0aCBzY29yZXMgYmVoaW5kIHtAbGluayBEaXJlY3RvcnlMaXN0aW5nQ2FyZC5oZWFsdGhTY29yZX0uICovXG4gIGhlYWx0aEJyZWFrZG93bjogSGVhbHRoQnJlYWtkb3duIHwgbnVsbDtcbiAgLyoqIDMwLWRheSBydW50aW1lIHN1Y2Nlc3MgcmF0ZSAoMC4uMSksIG9yIG51bGwgd2l0aCBubyBydW5zLiAqL1xuICBzdWNjZXNzUmF0ZTMwZDogbnVtYmVyIHwgbnVsbDtcbn1cblxuZXhwb3J0IHR5cGUgUmV2aWV3U29ydCA9ICdoZWxwZnVsJyB8ICdyZWNlbnQnIHwgJ2hpZ2hlc3QnIHwgJ2xvd2VzdCc7XG5leHBvcnQgY29uc3QgUkVWSUVXX1NPUlRTOiByZWFkb25seSBSZXZpZXdTb3J0W10gPSBbJ2hlbHBmdWwnLCAncmVjZW50JywgJ2hpZ2hlc3QnLCAnbG93ZXN0J107XG5leHBvcnQgY29uc3QgUkVWSUVXU19ERUZBVUxUX0xJTUlUID0gMTA7XG5leHBvcnQgY29uc3QgUkVWSUVXU19NQVhfTElNSVQgPSA1MDtcblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaWNSZXZpZXdSZXBseSB7XG4gIGJvZHlIdG1sOiBzdHJpbmc7XG4gIHB1Ymxpc2hlckRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xuICB1cGRhdGVkQXQ6IHN0cmluZztcbn1cblxuLyoqIE9uZSBwdWJsaXNoZWQgcmV2aWV3IGFzIHRoZSBkaXJlY3Rvcnkgc2hvd3MgaXQ6IGRpc3BsYXkgbmFtZSBvbmx5LCBuZXZlciBhbiBvcmcuICovXG5leHBvcnQgaW50ZXJmYWNlIFB1YmxpY1Jldmlld0l0ZW0ge1xuICBpZDogc3RyaW5nO1xuICByYXRpbmc6IG51bWJlcjtcbiAgdGl0bGU6IHN0cmluZyB8IG51bGw7XG4gIGJvZHlIdG1sOiBzdHJpbmcgfCBudWxsO1xuICB2ZXJzaW9uOiBzdHJpbmcgfCBudWxsO1xuICAvKiogTnVsbCBvbmNlIHRoZSBhdXRob3IncyBhY2NvdW50IHdhcyBkZWxldGVkICh0aGUgcmV2aWV3IGlzIGFub255bWl6ZWQpLiAqL1xuICBhdXRob3I6IHsgZGlzcGxheU5hbWU6IHN0cmluZyB9IHwgbnVsbDtcbiAgdmVyaWZpZWRVc2U6IGJvb2xlYW47XG4gIGhlbHBmdWxDb3VudDogbnVtYmVyO1xuICBlZGl0ZWQ6IGJvb2xlYW47XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xuICB1cGRhdGVkQXQ6IHN0cmluZztcbiAgcmVwbHk6IFB1YmxpY1Jldmlld1JlcGx5IHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaWNSZXZpZXdQYWdlIHtcbiAgcmV2aWV3czogUHVibGljUmV2aWV3SXRlbVtdO1xuICB0b3RhbDogbnVtYmVyO1xuICBuZXh0Q3Vyc29yOiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1YmxpY1Jldmlld1F1ZXJ5IHtcbiAgc29ydD86IFJldmlld1NvcnQ7XG4gIC8qKiBPbmx5IHJldmlld3Mgd2l0aCBleGFjdGx5IHRoaXMgbWFueSBzdGFycy4gKi9cbiAgcmF0aW5nPzogbnVtYmVyO1xuICBjdXJzb3I/OiBzdHJpbmc7XG4gIGxpbWl0PzogbnVtYmVyO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUm93IG1hcHBpbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBBIGBwdWJsaWNfbGlzdGluZ3NgIHJvdyBhcyB0aGUgcmF3IHF1ZXJpZXMgcmV0dXJuIGl0IChzbmFrZV9jYXNlKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGljTGlzdGluZ1JvdyB7XG4gIGlkOiBzdHJpbmc7XG4gIHB1Ymxpc2hlcl9oYW5kbGU6IHN0cmluZztcbiAgcHVibGlzaGVyX2Rpc3BsYXlfbmFtZTogc3RyaW5nO1xuICBwdWJsaXNoZXJfdGllcjogRGlyZWN0b3J5VHJ1c3RUaWVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGNhdGVnb3J5OiBzdHJpbmc7XG4gIHN1bW1hcnk6IHN0cmluZyB8IG51bGw7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcgfCBudWxsO1xuICByZWFkbWVfaHRtbDogc3RyaW5nIHwgbnVsbDtcbiAgbGljZW5zZTogc3RyaW5nIHwgbnVsbDtcbiAgaG9tZXBhZ2VfdXJsOiBzdHJpbmcgfCBudWxsO1xuICBzb3VyY2VfdXJsOiBzdHJpbmcgfCBudWxsO1xuICBpY29uOiB7IGtleTogc3RyaW5nOyBiYWRnZT86IHN0cmluZyB9IHwgbnVsbDtcbiAgdXBsb2FkZWRfaWNvbjogeyBrZXkyNTY6IHN0cmluZzsga2V5NjQ6IHN0cmluZyB9IHwgbnVsbDtcbiAga2V5d29yZHM6IHN0cmluZ1tdIHwgbnVsbDtcbiAgbGF0ZXN0X3ZlcnNpb246IHN0cmluZyB8IG51bGw7XG4gIHVwZGF0ZWRfYXQ6IERhdGUgfCBzdHJpbmc7XG4gIHJhdGluZ19iYXllczogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbDtcbiAgcmF0aW5nX2NvdW50OiBudW1iZXIgfCBzdHJpbmc7XG4gIHJhdGluZ19kaXN0OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+IHwgbnVsbDtcbiAgcmVjZW50X3JhdGluZz86IG51bWJlciB8IHN0cmluZyB8IG51bGw7XG4gIGluc3RhbGxfY291bnQ6IG51bWJlciB8IHN0cmluZztcbiAgYWN0aXZlX29yZ19jb3VudDogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbDtcbiAgaGVhbHRoX3Njb3JlPzogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbDtcbiAgaGVhbHRoX2JyZWFrZG93bj86IEhlYWx0aEJyZWFrZG93biB8IG51bGw7XG4gIHN1Y2Nlc3NfcmF0ZV8zMGQ/OiBudW1iZXIgfCBzdHJpbmcgfCBudWxsO1xuICBzdGF0ZTogJ2xpc3RlZCcgfCAndW5tYWludGFpbmVkJztcbn1cblxuZnVuY3Rpb24gbnVtKHY6IG51bWJlciB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBudW1iZXIge1xuICBjb25zdCBuID0gdHlwZW9mIHYgPT09ICdudW1iZXInID8gdiA6IE51bWJlci5wYXJzZUZsb2F0KFN0cmluZyh2ID8/ICcwJykpO1xuICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKG4pID8gbiA6IDA7XG59XG5cbmZ1bmN0aW9uIGlzbyh2OiBEYXRlIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gIGlmICghdikgcmV0dXJuICcnO1xuICByZXR1cm4gdiBpbnN0YW5jZW9mIERhdGUgPyB2LnRvSVNPU3RyaW5nKCkgOiBuZXcgRGF0ZSh2KS50b0lTT1N0cmluZygpO1xufVxuXG4vKipcbiAqIFRoZSBpY29uIGZhbGxiYWNrIGNoYWluOiB1cGxvYWRlZCAoaWYgdGhlIHRpZXIgbWF5IHVwbG9hZCkg4oaSIGN1cmF0ZWRcbiAqIHZlbmRvciBrZXkgKE9mZmljaWFsLCBhbmQgVmVyaWZpZWQgcHVibGlzaGVycyBmb3IgbWFya3MgdGhleSBvd24g4oCUIG93bmVyc2hpcFxuICogaXMgY2hlY2tlZCB3aGVuIHRoZSBpY29uIGlzIGFwcHJvdmVkKSDihpIgbW9ub2dyYW0uIENvbW11bml0eSBhbmQgYW5vbnltb3VzXG4gKiBsaXN0aW5ncyBjYW4gbmV2ZXIgc2hvdyBhIGN1cmF0ZWQgdmVuZG9yIG1hcmsuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlTGlzdGluZ0ljb24ocm93OiBQaWNrPFB1YmxpY0xpc3RpbmdSb3csICdwdWJsaXNoZXJfdGllcicgfCAnaWNvbicgfCAndXBsb2FkZWRfaWNvbic+KTogUGljazxcbiAgRGlyZWN0b3J5TGlzdGluZ0NhcmQsICdpY29uS2luZCcgfCAnaWNvblVybCcgfCAnaWNvbktleScgfCAnaWNvbkJhZGdlJyB8ICdpY29uSGV4J1xuPiB7XG4gIGNvbnN0IG5vbmUgPSB7IGljb25Vcmw6IG51bGwsIGljb25LZXk6IG51bGwsIGljb25CYWRnZTogbnVsbCwgaWNvbkhleDogbnVsbCB9O1xuICBpZiAocm93LnVwbG9hZGVkX2ljb24/LmtleTI1Nikge1xuICAgIHJldHVybiB7IC4uLm5vbmUsIGljb25LaW5kOiAndXBsb2FkZWQnLCBpY29uVXJsOiBgL2FwaS9wdWJsaWMvcGx1Z2lucy9pY29ucy8ke2VuY29kZVVSSUNvbXBvbmVudChyb3cudXBsb2FkZWRfaWNvbi5rZXkyNTYpfWAgfTtcbiAgfVxuICBjb25zdCBjdXJhdGVkQWxsb3dlZCA9IHJvdy5wdWJsaXNoZXJfdGllciA9PT0gJ29mZmljaWFsJyB8fCByb3cucHVibGlzaGVyX3RpZXIgPT09ICd2ZXJpZmllZCc7XG4gIGlmIChjdXJhdGVkQWxsb3dlZCAmJiByb3cuaWNvbj8ua2V5KSB7XG4gICAgcmV0dXJuIHsgLi4ubm9uZSwgaWNvbktpbmQ6ICd2ZW5kb3InLCBpY29uS2V5OiByb3cuaWNvbi5rZXksIGljb25CYWRnZTogcm93Lmljb24uYmFkZ2UgPz8gbnVsbCB9O1xuICB9XG4gIHJldHVybiB7IC4uLm5vbmUsIGljb25LaW5kOiAnbW9ub2dyYW0nIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0xpc3RpbmdDYXJkKHJvdzogUHVibGljTGlzdGluZ1Jvdyk6IERpcmVjdG9yeUxpc3RpbmdDYXJkIHtcbiAgY29uc3QgcmF0aW5nQ291bnQgPSBudW0ocm93LnJhdGluZ19jb3VudCk7XG4gIHJldHVybiB7XG4gICAgcHVibGlzaGVyOiB7IGhhbmRsZTogcm93LnB1Ymxpc2hlcl9oYW5kbGUsIGRpc3BsYXlOYW1lOiByb3cucHVibGlzaGVyX2Rpc3BsYXlfbmFtZSwgdGllcjogcm93LnB1Ymxpc2hlcl90aWVyIH0sXG4gICAgbmFtZTogcm93Lm5hbWUsXG4gICAgc3VtbWFyeTogcm93LnN1bW1hcnkgPz8gJycsXG4gICAgY2F0ZWdvcnk6IHJvdy5jYXRlZ29yeSxcbiAgICBrZXl3b3Jkczogcm93LmtleXdvcmRzID8/IFtdLFxuICAgIGxhdGVzdFZlcnNpb246IHJvdy5sYXRlc3RfdmVyc2lvbiA/PyAnJyxcbiAgICBsaWNlbnNlOiByb3cubGljZW5zZSA/PyAnJyxcbiAgICAuLi5yZXNvbHZlTGlzdGluZ0ljb24ocm93KSxcbiAgICByYXRpbmc6IHJhdGluZ0NvdW50ID4gMCAmJiByb3cucmF0aW5nX2JheWVzICE9IG51bGwgPyB7IHNjb3JlOiBNYXRoLnJvdW5kKG51bShyb3cucmF0aW5nX2JheWVzKSAqIDEwMCkgLyAxMDAsIGNvdW50OiByYXRpbmdDb3VudCB9IDogbnVsbCxcbiAgICBpbnN0YWxsQ291bnQ6IG51bShyb3cuaW5zdGFsbF9jb3VudCksXG4gICAgaGVhbHRoU2NvcmU6IHJvdy5oZWFsdGhfc2NvcmUgPT0gbnVsbCA/IG51bGwgOiBNYXRoLnJvdW5kKG51bShyb3cuaGVhbHRoX3Njb3JlKSksXG4gICAgdXBkYXRlZEF0OiBpc28ocm93LnVwZGF0ZWRfYXQpLFxuICAgIHN0YXRlOiByb3cuc3RhdGUsXG4gIH07XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZWFyY2hcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBOb3JtYWxpemUgdGhlIHVzZXIncyBxdWVyeTogY29sbGFwc2Ugd2hpdGVzcGFjZSwgY2FwIHRoZSBsZW5ndGguICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplUXVlcnkocTogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgcmV0dXJuIChxID8/ICcnKS5yZXBsYWNlKC9cXHMrL2csICcgJykudHJpbSgpLnNsaWNlKDAsIERJUkVDVE9SWV9NQVhfUVVFUllfTEVOR1RIKTtcbn1cblxuLyoqIFNlYXJjaCB0ZXJtcyBmb3IgaGlnaGxpZ2h0aW5nOiB3b3JkcyBvZiDiiaUgMiBjaGFyYWN0ZXJzLCByZWdleC1lc2NhcGVkLiAqL1xuZnVuY3Rpb24gaGlnaGxpZ2h0VGVybXMocTogc3RyaW5nKTogc3RyaW5nW10ge1xuICByZXR1cm4gWy4uLm5ldyBTZXQocS50b0xvd2VyQ2FzZSgpLnNwbGl0KC9bXmEtejAtOS5fLV0rLykuZmlsdGVyKCh0KSA9PiB0Lmxlbmd0aCA+PSAyKSldXG4gICAgLm1hcCgodCkgPT4gdC5yZXBsYWNlKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgJ1xcXFwkJicpKTtcbn1cblxuLyoqXG4gKiBXcmFwIG1hdGNoZWQgdGVybXMgaW4gYDxtYXJrPmAuIFRoZSBmcm9udGVuZCByZW5kZXJzIGV2ZXJ5dGhpbmcgZXhjZXB0IHRoZVxuICogYDxtYXJrPmAgbWFya2VycyBhcyBURVhUIChuZXZlciBIVE1MKSwgc28gdGhlIHNvdXJjZSB0ZXh0IGlzIG5vdCBlc2NhcGVkIGhlcmUuXG4gKiBSZXR1cm5zIHVuZGVmaW5lZCB3aGVuIG5vdGhpbmcgbWF0Y2hlZCAodGhlIGNhcmQgdGhlbiByZW5kZXJzIHBsYWluIHRleHQpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGlnaGxpZ2h0VGV4dCh0ZXh0OiBzdHJpbmcsIHE6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHRlcm1zID0gaGlnaGxpZ2h0VGVybXMocSk7XG4gIGlmICghdGV4dCB8fCB0ZXJtcy5sZW5ndGggPT09IDApIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IHJlID0gbmV3IFJlZ0V4cChgKCR7dGVybXMuam9pbignfCcpfSlgLCAnZ2knKTtcbiAgaWYgKCFyZS50ZXN0KHRleHQpKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4gdGV4dC5yZXBsYWNlKHJlLCAnPG1hcms+JDE8L21hcms+Jyk7XG59XG5cbi8qKiBPcGFxdWUgY3Vyc29yOiBhbiBvZmZzZXQsIGJhc2U2NHVybC1lbmNvZGVkIHNvIGNsaWVudHMgZG9uJ3QgZGVwZW5kIG9uIGl0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZU9mZnNldEN1cnNvcihvZmZzZXQ6IG51bWJlcik6IHN0cmluZyB7XG4gIHJldHVybiBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeSh7IG86IG9mZnNldCB9KSkudG9TdHJpbmcoJ2Jhc2U2NHVybCcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlT2Zmc2V0Q3Vyc29yKGN1cnNvcjogc3RyaW5nIHwgdW5kZWZpbmVkKTogbnVtYmVyIHtcbiAgaWYgKCFjdXJzb3IpIHJldHVybiAwO1xuICB0cnkge1xuICAgIGNvbnN0IG8gPSAoSlNPTi5wYXJzZShCdWZmZXIuZnJvbShjdXJzb3IsICdiYXNlNjR1cmwnKS50b1N0cmluZygndXRmOCcpKSBhcyB7IG8/OiB1bmtub3duIH0pLm87XG4gICAgcmV0dXJuIHR5cGVvZiBvID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNJbnRlZ2VyKG8pICYmIG8gPj0gMCAmJiBvIDw9IDEwXzAwMCA/IG8gOiAwO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuXG5mdW5jdGlvbiBjbGFtcExpbWl0KGxpbWl0OiBudW1iZXIgfCB1bmRlZmluZWQpOiBudW1iZXIge1xuICBpZiAoIWxpbWl0IHx8ICFOdW1iZXIuaXNGaW5pdGUobGltaXQpKSByZXR1cm4gRElSRUNUT1JZX0RFRkFVTFRfTElNSVQ7XG4gIHJldHVybiBNYXRoLm1pbihNYXRoLm1heChNYXRoLnRydW5jKGxpbWl0KSwgMSksIERJUkVDVE9SWV9NQVhfTElNSVQpO1xufVxuXG4vKipcbiAqIFRoZSBmaWx0ZXJlZCBiYXNlIHNldCBhcyBhIENURSBib2R5LiBFdmVyeSBzZWFyY2gsIGZhY2V0IGFuZCBjYXRlZ29yeSBxdWVyeVxuICogcmVhZHMgdGhyb3VnaCB0aGlzLCBzbyB0aGV5IGNhbid0IGRpc2FncmVlIGFib3V0IHdoYXQncyB2aXNpYmxlLlxuICovXG5mdW5jdGlvbiBiYXNlUXVlcnkocGFyYW1zOiBEaXJlY3RvcnlTZWFyY2hQYXJhbXMsIHE6IHN0cmluZyk6IFNRTCB7XG4gIGNvbnN0IHdoZXJlOiBTUUxbXSA9IFtzcWxgbC5wYXVzZWRfYXQgSVMgTlVMTGBdO1xuICBpZiAocSkge1xuICAgIC8vIEZ1bGwgdGV4dCwgT1IgYSBmdXp6eSBtYXRjaCBhZ2FpbnN0IHRoZSBiZXN0LW1hdGNoaW5nIFBBUlQgb2YgdGhlIG5hbWVcbiAgICAvLyAod29yZF9zaW1pbGFyaXR5OiBcInRlcmFmcm9tXCIg4oaSIHRlcnJhZm9ybS1wbGFuIHNjb3JlcyAwLjM2LCB3aGlsZSB1bnJlbGF0ZWRcbiAgICAvLyB3b3JkcyBzdGF5IOKJpCAwLjIg4oCUIHdob2xlLW5hbWUgc2ltaWxhcml0eSgpIGRpbHV0ZXMgYSBsb25nIG5hbWUgYmVsb3cgYW55XG4gICAgLy8gdXNlZnVsIHRocmVzaG9sZCkuIEV4cGxpY2l0IGZ1bmN0aW9uLCBub3QgdGhlIGA8JWAgb3BlcmF0b3IsIHNvIHRoZSBjdXQtb2ZmXG4gICAgLy8gZG9lc24ndCBkZXBlbmQgb24gYSBzZXNzaW9uIEdVQyBwZ2JvdW5jZXIgY2FuJ3QgY2FycnkuIEEgc2VxIHNjYW4gb3ZlciB0aGVcbiAgICAvLyBwdWJsaWMgbGlzdGluZ3MgKHRob3VzYW5kcyBvZiByb3dzIGF0IG1vc3QpIGlzIGZpbmUuXG4gICAgd2hlcmUucHVzaChzcWxgKGwuc2VhcmNoX3ZlY3RvciBAQCB3ZWJzZWFyY2hfdG9fdHNxdWVyeSgnZW5nbGlzaCcsICR7cX0pIE9SIHdvcmRfc2ltaWxhcml0eSgke3F9LCBsLm5hbWUpID49ICR7RlVaWllfTkFNRV9USFJFU0hPTER9IE9SIGwubmFtZSBJTElLRSAke2AlJHtxLnJlcGxhY2UoL1tcXFxcJV9dL2csICdcXFxcJCYnKX0lYH0pYCk7XG4gIH1cbiAgaWYgKHBhcmFtcy5jYXRlZ29yeSkgd2hlcmUucHVzaChzcWxgbC5jYXRlZ29yeSA9ICR7cGFyYW1zLmNhdGVnb3J5fWApO1xuICBpZiAocGFyYW1zLnRpZXIpIHdoZXJlLnB1c2goc3FsYGwucHVibGlzaGVyX3RpZXIgPSAke3BhcmFtcy50aWVyfWApO1xuICBpZiAocGFyYW1zLmxpY2Vuc2UpIHdoZXJlLnB1c2goc3FsYGwubGljZW5zZSA9ICR7cGFyYW1zLmxpY2Vuc2V9YCk7XG4gIGlmIChwYXJhbXMuY29tcHV0ZVR5cGUpIHdoZXJlLnB1c2goc3FsYHYuY29tcHV0ZV90eXBlID0gJHtwYXJhbXMuY29tcHV0ZVR5cGV9YCk7XG4gIGlmIChwYXJhbXMubmVlZHNTZWNyZXRzICE9PSB1bmRlZmluZWQpIHtcbiAgICB3aGVyZS5wdXNoKHBhcmFtcy5uZWVkc1NlY3JldHNcbiAgICAgID8gc3FsYGpzb25iX2FycmF5X2xlbmd0aChDT0FMRVNDRSh2LnNlY3JldHMsICdbXSc6Ompzb25iKSkgPiAwYFxuICAgICAgOiBzcWxganNvbmJfYXJyYXlfbGVuZ3RoKENPQUxFU0NFKHYuc2VjcmV0cywgJ1tdJzo6anNvbmIpKSA9IDBgKTtcbiAgfVxuICBpZiAocGFyYW1zLm1pblJhdGluZyAhPT0gdW5kZWZpbmVkICYmIE51bWJlci5pc0Zpbml0ZShwYXJhbXMubWluUmF0aW5nKSkge1xuICAgIHdoZXJlLnB1c2goc3FsYGwucmF0aW5nX2JheWVzID49ICR7cGFyYW1zLm1pblJhdGluZ31gKTtcbiAgfVxuICBjb25zdCByYW5rID0gcVxuICAgID8gc3FsYCh0c19yYW5rKGwuc2VhcmNoX3ZlY3Rvciwgd2Vic2VhcmNoX3RvX3RzcXVlcnkoJ2VuZ2xpc2gnLCAke3F9KSkgKyB3b3JkX3NpbWlsYXJpdHkoJHtxfSwgbC5uYW1lKSlgXG4gICAgOiBzcWxgMDo6cmVhbGA7XG4gIHJldHVybiBzcWxgXG4gICAgU0VMRUNUIGwuaWQsIGwucHVibGlzaGVyX2hhbmRsZSwgbC5wdWJsaXNoZXJfZGlzcGxheV9uYW1lLCBsLnB1Ymxpc2hlcl90aWVyLCBsLm5hbWUsIGwuY2F0ZWdvcnksXG4gICAgICAgICAgIGwuc3VtbWFyeSwgbC5kZXNjcmlwdGlvbiwgbC5yZWFkbWVfaHRtbCwgbC5saWNlbnNlLCBsLmhvbWVwYWdlX3VybCwgbC5zb3VyY2VfdXJsLCBsLmljb24sXG4gICAgICAgICAgIGwudXBsb2FkZWRfaWNvbiwgbC5rZXl3b3JkcywgbC5sYXRlc3RfdmVyc2lvbiwgbC51cGRhdGVkX2F0LCBsLnJhdGluZ19iYXllcywgbC5yYXRpbmdfY291bnQsXG4gICAgICAgICAgIGwucmF0aW5nX2Rpc3QsIGwuaW5zdGFsbF9jb3VudCwgbC5hY3RpdmVfb3JnX2NvdW50LCBsLmhlYWx0aF9zY29yZSwgbC5zdGF0ZSxcbiAgICAgICAgICAgdi5jb21wdXRlX3R5cGUsXG4gICAgICAgICAgIChqc29uYl9hcnJheV9sZW5ndGgoQ09BTEVTQ0Uodi5zZWNyZXRzLCAnW10nOjpqc29uYikpID4gMCkgQVMgbmVlZHNfc2VjcmV0cyxcbiAgICAgICAgICAgJHtyYW5rfSBBUyByYW5rXG4gICAgICBGUk9NIHB1YmxpY19saXN0aW5ncyBsXG4gICAgICBMRUZUIEpPSU4gTEFURVJBTCAoXG4gICAgICAgIFNFTEVDVCBwdi5jb21wdXRlX3R5cGUsIHB2LnNlY3JldHNcbiAgICAgICAgICBGUk9NIHB1YmxpY19saXN0ZWRfdmVyc2lvbnMgcHZcbiAgICAgICAgIFdIRVJFIHB2Lmxpc3RpbmdfaWQgPSBsLmlkIEFORCBwdi52ZXJzaW9uID0gbC5sYXRlc3RfdmVyc2lvbiBBTkQgTk9UIHB2LnlhbmtlZFxuICAgICAgICAgTElNSVQgMVxuICAgICAgKSB2IE9OIHRydWVcbiAgICAgV0hFUkUgJHtzcWwuam9pbih3aGVyZSwgc3FsYCBBTkQgYCl9YDtcbn1cblxuZnVuY3Rpb24gb3JkZXJCeShzb3J0OiBEaXJlY3RvcnlTb3J0LCBoYXNRdWVyeTogYm9vbGVhbik6IFNRTCB7XG4gIHN3aXRjaCAoc29ydCA9PT0gJ3JlbGV2YW5jZScgJiYgIWhhc1F1ZXJ5ID8gJ3VwZGF0ZWQnIDogc29ydCkge1xuICAgIGNhc2UgJ3JlbGV2YW5jZSc6XG4gICAgICAvLyBUZXh0IHJlbGV2YW5jZSBmaXJzdCwgbnVkZ2VkIGJ5IHJhdGluZyBhbmQgYWRvcHRpb24gc28gZXF1YWwgbWF0Y2hlc1xuICAgICAgLy8gZmF2b3VyIHByb3ZlbiBwbHVnaW5zLlxuICAgICAgcmV0dXJuIHNxbGAocmFuayAqICgxICsgQ09BTEVTQ0UocmF0aW5nX2JheWVzLCAwKSAvIDEwKSArIGxuKDEgKyBpbnN0YWxsX2NvdW50KSAvIDIwKSBERVNDLCBuYW1lIEFTQ2A7XG4gICAgY2FzZSAncmF0aW5nJzpcbiAgICAgIHJldHVybiBzcWxgcmF0aW5nX2JheWVzIERFU0MgTlVMTFMgTEFTVCwgcmF0aW5nX2NvdW50IERFU0MsIG5hbWUgQVNDYDtcbiAgICBjYXNlICdpbnN0YWxscyc6XG4gICAgICByZXR1cm4gc3FsYGluc3RhbGxfY291bnQgREVTQywgbmFtZSBBU0NgO1xuICAgIGNhc2UgJ25hbWUnOlxuICAgICAgcmV0dXJuIHNxbGBuYW1lIEFTQywgcHVibGlzaGVyX2hhbmRsZSBBU0NgO1xuICAgIGNhc2UgJ2hlYWx0aCc6XG4gICAgICByZXR1cm4gc3FsYGhlYWx0aF9zY29yZSBERVNDIE5VTExTIExBU1QsIGluc3RhbGxfY291bnQgREVTQywgbmFtZSBBU0NgO1xuICAgIGNhc2UgJ3VwZGF0ZWQnOlxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gc3FsYHVwZGF0ZWRfYXQgREVTQywgbmFtZSBBU0NgO1xuICB9XG59XG5cbi8qKiBTZWFyY2ggdGhlIGRpcmVjdG9yeTogb25lIHBhZ2Ugb2YgY2FyZHMsIGZhY2V0IGNvdW50cywgdG90YWwgYW5kIG5leHQgY3Vyc29yLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlYXJjaFB1YmxpY0xpc3RpbmdzKHBhcmFtczogRGlyZWN0b3J5U2VhcmNoUGFyYW1zKTogUHJvbWlzZTxEaXJlY3RvcnlTZWFyY2hSZXN1bHQ+IHtcbiAgY29uc3QgZGIgPSBnZXRQdWJsaWNSZWFkZXJEYigpO1xuICBjb25zdCBxID0gbm9ybWFsaXplUXVlcnkocGFyYW1zLnEpO1xuICBjb25zdCBsaW1pdCA9IGNsYW1wTGltaXQocGFyYW1zLmxpbWl0KTtcbiAgY29uc3Qgb2Zmc2V0ID0gZGVjb2RlT2Zmc2V0Q3Vyc29yKHBhcmFtcy5jdXJzb3IpO1xuICBjb25zdCBzb3J0ID0gcGFyYW1zLnNvcnQgJiYgRElSRUNUT1JZX1NPUlRTLmluY2x1ZGVzKHBhcmFtcy5zb3J0KSA/IHBhcmFtcy5zb3J0IDogJ3JlbGV2YW5jZSc7XG4gIGNvbnN0IGJhc2UgPSBiYXNlUXVlcnkocGFyYW1zLCBxKTtcblxuICBjb25zdCBbcGFnZVJlcywgZmFjZXRSZXNdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgIGRiLmV4ZWN1dGUoc3FsYFxuICAgICAgV0lUSCBiYXNlIEFTICgke2Jhc2V9KVxuICAgICAgU0VMRUNUIGJhc2UuKiwgQ09VTlQoKikgT1ZFUiAoKSBBUyB0b3RhbFxuICAgICAgICBGUk9NIGJhc2VcbiAgICAgICBPUkRFUiBCWSAke29yZGVyQnkoc29ydCwgcSAhPT0gJycpfVxuICAgICAgIExJTUlUICR7bGltaXR9IE9GRlNFVCAke29mZnNldH1gKSxcbiAgICBkYi5leGVjdXRlKHNxbGBcbiAgICAgIFdJVEggYmFzZSBBUyAoJHtiYXNlfSlcbiAgICAgIFNFTEVDVCBjYXRlZ29yeSwgcHVibGlzaGVyX3RpZXIsIGxpY2Vuc2UsIGNvbXB1dGVfdHlwZSwgbmVlZHNfc2VjcmV0cyxcbiAgICAgICAgICAgICBHUk9VUElORyhjYXRlZ29yeSkgQVMgZ19jYXRlZ29yeSwgR1JPVVBJTkcocHVibGlzaGVyX3RpZXIpIEFTIGdfdGllcixcbiAgICAgICAgICAgICBHUk9VUElORyhsaWNlbnNlKSBBUyBnX2xpY2Vuc2UsIEdST1VQSU5HKGNvbXB1dGVfdHlwZSkgQVMgZ19jb21wdXRlLFxuICAgICAgICAgICAgIEdST1VQSU5HKG5lZWRzX3NlY3JldHMpIEFTIGdfc2VjcmV0cyxcbiAgICAgICAgICAgICBDT1VOVCgqKSBBUyBuXG4gICAgICAgIEZST00gYmFzZVxuICAgICAgIEdST1VQIEJZIEdST1VQSU5HIFNFVFMgKChjYXRlZ29yeSksIChwdWJsaXNoZXJfdGllciksIChsaWNlbnNlKSwgKGNvbXB1dGVfdHlwZSksIChuZWVkc19zZWNyZXRzKSlgKSxcbiAgXSk7XG5cbiAgY29uc3QgcGFnZSA9IHJlc3VsdFJvd3M8UHVibGljTGlzdGluZ1JvdyAmIHsgdG90YWw6IG51bWJlciB8IHN0cmluZyB9PihwYWdlUmVzKTtcbiAgY29uc3QgdG90YWwgPSBwYWdlLmxlbmd0aCA+IDAgPyBudW0ocGFnZVswXSEudG90YWwpIDogMDtcbiAgY29uc3QgaXRlbXMgPSBwYWdlLm1hcCgocm93KSA9PiB7XG4gICAgY29uc3QgY2FyZCA9IHRvTGlzdGluZ0NhcmQocm93KTtcbiAgICBpZiAocSkge1xuICAgICAgY29uc3QgaGlnaGxpZ2h0ID0geyBuYW1lOiBoaWdobGlnaHRUZXh0KGNhcmQubmFtZSwgcSksIHN1bW1hcnk6IGhpZ2hsaWdodFRleHQoY2FyZC5zdW1tYXJ5LCBxKSB9O1xuICAgICAgaWYgKGhpZ2hsaWdodC5uYW1lIHx8IGhpZ2hsaWdodC5zdW1tYXJ5KSBjYXJkLmhpZ2hsaWdodCA9IGhpZ2hsaWdodDtcbiAgICB9XG4gICAgcmV0dXJuIGNhcmQ7XG4gIH0pO1xuXG4gIGNvbnN0IGZhY2V0czogRGlyZWN0b3J5U2VhcmNoUmVzdWx0WydmYWNldHMnXSA9IHtcbiAgICBjYXRlZ29yeToge30sIHRpZXI6IHt9LCBsaWNlbnNlOiB7fSwgY29tcHV0ZVR5cGU6IHt9LCBuZWVkc1NlY3JldHM6IHsgdHJ1ZTogMCwgZmFsc2U6IDAgfSxcbiAgfTtcbiAgdHlwZSBGYWNldFJvdyA9IHtcbiAgICBjYXRlZ29yeTogc3RyaW5nIHwgbnVsbDtcbiAgICBwdWJsaXNoZXJfdGllcjogc3RyaW5nIHwgbnVsbDtcbiAgICBsaWNlbnNlOiBzdHJpbmcgfCBudWxsO1xuICAgIGNvbXB1dGVfdHlwZTogc3RyaW5nIHwgbnVsbDtcbiAgICBuZWVkc19zZWNyZXRzOiBib29sZWFuIHwgbnVsbDtcbiAgICBnX2NhdGVnb3J5OiBudW1iZXI7XG4gICAgZ190aWVyOiBudW1iZXI7XG4gICAgZ19saWNlbnNlOiBudW1iZXI7XG4gICAgZ19jb21wdXRlOiBudW1iZXI7XG4gICAgZ19zZWNyZXRzOiBudW1iZXI7XG4gICAgbjogbnVtYmVyIHwgc3RyaW5nO1xuICB9O1xuICBmb3IgKGNvbnN0IHIgb2YgcmVzdWx0Um93czxGYWNldFJvdz4oZmFjZXRSZXMpKSB7XG4gICAgY29uc3QgbiA9IG51bShyLm4pO1xuICAgIGlmIChOdW1iZXIoci5nX2NhdGVnb3J5KSA9PT0gMCAmJiByLmNhdGVnb3J5KSBmYWNldHMuY2F0ZWdvcnlbci5jYXRlZ29yeV0gPSBuO1xuICAgIGVsc2UgaWYgKE51bWJlcihyLmdfdGllcikgPT09IDAgJiYgci5wdWJsaXNoZXJfdGllcikgZmFjZXRzLnRpZXJbci5wdWJsaXNoZXJfdGllcl0gPSBuO1xuICAgIGVsc2UgaWYgKE51bWJlcihyLmdfbGljZW5zZSkgPT09IDAgJiYgci5saWNlbnNlKSBmYWNldHMubGljZW5zZVtyLmxpY2Vuc2VdID0gbjtcbiAgICBlbHNlIGlmIChOdW1iZXIoci5nX2NvbXB1dGUpID09PSAwICYmIHIuY29tcHV0ZV90eXBlKSBmYWNldHMuY29tcHV0ZVR5cGVbci5jb21wdXRlX3R5cGVdID0gbjtcbiAgICBlbHNlIGlmIChOdW1iZXIoci5nX3NlY3JldHMpID09PSAwICYmIHIubmVlZHNfc2VjcmV0cyAhPT0gbnVsbCkgZmFjZXRzLm5lZWRzU2VjcmV0c1tyLm5lZWRzX3NlY3JldHMgPyAndHJ1ZScgOiAnZmFsc2UnXSA9IG47XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGl0ZW1zLFxuICAgIGZhY2V0cyxcbiAgICB0b3RhbCxcbiAgICBuZXh0Q3Vyc29yOiBvZmZzZXQgKyBpdGVtcy5sZW5ndGggPCB0b3RhbCA/IGVuY29kZU9mZnNldEN1cnNvcihvZmZzZXQgKyBpdGVtcy5sZW5ndGgpIDogbnVsbCxcbiAgfTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENhdGVnb3JpZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBFdmVyeSBjYXRlZ29yeSB3aXRoIGl0cyBsaXZlIGNvdW50IGFuZCBpdHMgdG9wIGxpc3RpbmdzIChieSByYXRpbmcsIHRoZW4gaW5zdGFsbHMpLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxpc3RQdWJsaWNDYXRlZ29yaWVzKHRvcFBlckNhdGVnb3J5ID0gMyk6IFByb21pc2U8RGlyZWN0b3J5Q2F0ZWdvcnlTdW1tYXJ5W10+IHtcbiAgY29uc3QgZGIgPSBnZXRQdWJsaWNSZWFkZXJEYigpO1xuICBjb25zdCByZXMgPSBhd2FpdCBkYi5leGVjdXRlKHNxbGBcbiAgICBXSVRIIHJhbmtlZCBBUyAoXG4gICAgICBTRUxFQ1QgbC4qLFxuICAgICAgICAgICAgIFJPV19OVU1CRVIoKSBPVkVSIChQQVJUSVRJT04gQlkgbC5jYXRlZ29yeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUkRFUiBCWSBsLnJhdGluZ19iYXllcyBERVNDIE5VTExTIExBU1QsIGwuaW5zdGFsbF9jb3VudCBERVNDLCBsLm5hbWUgQVNDKSBBUyBybixcbiAgICAgICAgICAgICBDT1VOVCgqKSBPVkVSIChQQVJUSVRJT04gQlkgbC5jYXRlZ29yeSkgQVMgY2F0ZWdvcnlfY291bnRcbiAgICAgICAgRlJPTSBwdWJsaWNfbGlzdGluZ3MgbFxuICAgICAgIFdIRVJFIGwucGF1c2VkX2F0IElTIE5VTExcbiAgICApXG4gICAgU0VMRUNUICogRlJPTSByYW5rZWQgV0hFUkUgcm4gPD0gJHtNYXRoLm1heCgwLCBNYXRoLm1pbih0b3BQZXJDYXRlZ29yeSwgMTApKX0gT1JERVIgQlkgY2F0ZWdvcnkgQVNDLCBybiBBU0NgKTtcblxuICBjb25zdCBieUNhdGVnb3J5ID0gbmV3IE1hcDxzdHJpbmcsIERpcmVjdG9yeUNhdGVnb3J5U3VtbWFyeT4oKTtcbiAgZm9yIChjb25zdCByb3cgb2YgcmVzdWx0Um93czxQdWJsaWNMaXN0aW5nUm93ICYgeyBjYXRlZ29yeV9jb3VudDogbnVtYmVyIHwgc3RyaW5nIH0+KHJlcykpIHtcbiAgICBsZXQgc3VtbWFyeSA9IGJ5Q2F0ZWdvcnkuZ2V0KHJvdy5jYXRlZ29yeSk7XG4gICAgaWYgKCFzdW1tYXJ5KSB7XG4gICAgICBzdW1tYXJ5ID0geyBpZDogcm93LmNhdGVnb3J5LCBjb3VudDogbnVtKHJvdy5jYXRlZ29yeV9jb3VudCksIHRvcDogW10gfTtcbiAgICAgIGJ5Q2F0ZWdvcnkuc2V0KHJvdy5jYXRlZ29yeSwgc3VtbWFyeSk7XG4gICAgfVxuICAgIHN1bW1hcnkudG9wLnB1c2godG9MaXN0aW5nQ2FyZChyb3cpKTtcbiAgfVxuICByZXR1cm4gWy4uLmJ5Q2F0ZWdvcnkudmFsdWVzKCldO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gT25lIGxpc3Rpbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbnR5cGUgVmVyc2lvblJvdyA9IHtcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBwdWJsaXNoZWRfYXQ6IERhdGUgfCBzdHJpbmc7XG4gIGJyZWFraW5nOiBib29sZWFuO1xuICBkZXByZWNhdGVkX2F0OiBEYXRlIHwgc3RyaW5nIHwgbnVsbDtcbiAgZGVwcmVjYXRpb25fbWVzc2FnZTogc3RyaW5nIHwgbnVsbDtcbiAgeWFua2VkOiBib29sZWFuO1xuICBjaGFuZ2Vsb2c6IHN0cmluZyB8IG51bGw7XG4gIHZ1bG5fY3JpdGljYWw6IG51bWJlciB8IG51bGw7XG4gIHZ1bG5faGlnaDogbnVtYmVyIHwgbnVsbDtcbiAgdnVsbl9jcml0aWNhbF9maXhhYmxlOiBudW1iZXIgfCBudWxsO1xuICB2dWxuX2hpZ2hfZml4YWJsZTogbnVtYmVyIHwgbnVsbDtcbiAgc2Nhbm5lZF9hdDogRGF0ZSB8IHN0cmluZyB8IG51bGw7XG4gIHNjYW5fZmxhZ2dlZF9hdDogRGF0ZSB8IHN0cmluZyB8IG51bGw7XG4gIGltYWdlX2RpZ2VzdDogc3RyaW5nIHwgbnVsbDtcbiAgaW1hZ2Vfc291cmNlOiBzdHJpbmcgfCBudWxsO1xuICBwbHVnaW5fdHlwZTogc3RyaW5nIHwgbnVsbDtcbiAgY29tcHV0ZV90eXBlOiBzdHJpbmcgfCBudWxsO1xuICBzZWNyZXRzOiB7IG5hbWU6IHN0cmluZzsgcmVxdWlyZWQ6IGJvb2xlYW47IGRlc2NyaXB0aW9uPzogc3RyaW5nIH1bXSB8IG51bGw7XG4gIHJlcXVpcmVkX21ldGFkYXRhOiBzdHJpbmdbXSB8IG51bGw7XG4gIHJlcXVpcmVkX3ZhcnM6IHN0cmluZ1tdIHwgbnVsbDtcbiAgbmV0d29ya19lZ3Jlc3M6IHN0cmluZ1tdIHwgbnVsbDtcbiAgcmVhZG1lX2h0bWw6IHN0cmluZyB8IG51bGw7XG59O1xuXG50eXBlIEFkdmlzb3J5Um93ID0ge1xuICBpZDogc3RyaW5nO1xuICBzZXZlcml0eTogc3RyaW5nO1xuICBzdW1tYXJ5OiBzdHJpbmc7XG4gIGFmZmVjdGVkX3JhbmdlOiBzdHJpbmc7XG4gIGZpeGVkX3ZlcnNpb246IHN0cmluZyB8IG51bGw7XG4gIHB1Ymxpc2hlZF9hdDogRGF0ZSB8IHN0cmluZyB8IG51bGw7XG4gIGRldGFpbHNfaHRtbDogc3RyaW5nIHwgbnVsbDtcbiAgY3ZlX2lkczogc3RyaW5nW10gfCBudWxsO1xufTtcblxuLyoqXG4gKiBPbmUgbGlzdGluZydzIHBhZ2UgZGF0YSwgb3IgbnVsbCB3aGVuIGl0IGlzbid0IHB1YmxpYyAodW5rbm93biwgc3VzcGVuZGVkLFxuICogdHJhbnNmZXJyZWQsIHBhdXNlZCBieSBpdHMgcHVibGlzaGVyIOKAlCBvciBpdHMgcHVibGlzaGVyIGlzIHN1c3BlbmRlZCkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRQdWJsaWNMaXN0aW5nKHB1Ymxpc2hlckhhbmRsZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBQcm9taXNlPERpcmVjdG9yeUxpc3RpbmdEZXRhaWwgfCBudWxsPiB7XG4gIGNvbnN0IGRiID0gZ2V0UHVibGljUmVhZGVyRGIoKTtcbiAgY29uc3QgbGlzdGluZ1JlcyA9IGF3YWl0IGRiLmV4ZWN1dGUoc3FsYFxuICAgIFNFTEVDVCAqIEZST00gcHVibGljX2xpc3RpbmdzXG4gICAgIFdIRVJFIHB1Ymxpc2hlcl9oYW5kbGUgPSAke3B1Ymxpc2hlckhhbmRsZX0gQU5EIG5hbWUgPSAke25hbWV9IEFORCBwYXVzZWRfYXQgSVMgTlVMTFxuICAgICBMSU1JVCAxYCk7XG4gIGNvbnN0IHJvdyA9IHJlc3VsdFJvd3M8UHVibGljTGlzdGluZ1Jvdz4obGlzdGluZ1JlcylbMF07XG4gIGlmICghcm93KSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBbdmVyc2lvblJlcywgYWR2aXNvcnlSZXNdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgIGRiLmV4ZWN1dGUoc3FsYFNFTEVDVCAqIEZST00gcHVibGljX2xpc3RlZF92ZXJzaW9ucyBXSEVSRSBsaXN0aW5nX2lkID0gJHtyb3cuaWR9YCksXG4gICAgZGIuZXhlY3V0ZShzcWxgU0VMRUNUICogRlJPTSBwdWJsaWNfYWR2aXNvcmllcyBXSEVSRSBsaXN0aW5nX2lkID0gJHtyb3cuaWR9IE9SREVSIEJZIHB1Ymxpc2hlZF9hdCBERVNDYCksXG4gIF0pO1xuICBjb25zdCB2ZXJzaW9uUm93cyA9IHJlc3VsdFJvd3M8VmVyc2lvblJvdz4odmVyc2lvblJlcykuc29ydCgoYSwgYikgPT4gY29tcGFyZVNlbXZlcihiLnZlcnNpb24sIGEudmVyc2lvbikpO1xuICBjb25zdCBhZHZpc29yeVJvd3MgPSByZXN1bHRSb3dzPEFkdmlzb3J5Um93PihhZHZpc29yeVJlcyk7XG4gIC8vIFRoZSB2ZXJzaW9uIHRoZSBwYWdlIGRlc2NyaWJlczogdGhlIGxpc3RpbmcncyBsYXRlc3QsIGVsc2UgdGhlIG5ld2VzdCBub24teWFua2VkIG9uZS5cbiAgY29uc3QgY3VycmVudCA9IHZlcnNpb25Sb3dzLmZpbmQoKHYpID0+IHYudmVyc2lvbiA9PT0gcm93LmxhdGVzdF92ZXJzaW9uICYmICF2LnlhbmtlZClcbiAgICA/PyB2ZXJzaW9uUm93cy5maW5kKCh2KSA9PiAhdi55YW5rZWQpXG4gICAgPz8gbnVsbDtcblxuICBjb25zdCBkaXN0ID0gcm93LnJhdGluZ19kaXN0ID8/IG51bGw7XG4gIGNvbnN0IGNhcmQgPSB0b0xpc3RpbmdDYXJkKHJvdyk7XG4gIHJldHVybiB7XG4gICAgLi4uY2FyZCxcbiAgICByZWFkbWVIdG1sOiByb3cucmVhZG1lX2h0bWwgPz8gY3VycmVudD8ucmVhZG1lX2h0bWwgPz8gbnVsbCxcbiAgICBkZXNjcmlwdGlvbjogcm93LmRlc2NyaXB0aW9uID8/ICcnLFxuICAgIGhvbWVwYWdlVXJsOiByb3cuaG9tZXBhZ2VfdXJsLFxuICAgIHNvdXJjZVVybDogcm93LnNvdXJjZV91cmwsXG4gICAgdmVyc2lvbnM6IHZlcnNpb25Sb3dzLm1hcCgodikgPT4gKHtcbiAgICAgIHZlcnNpb246IHYudmVyc2lvbixcbiAgICAgIHB1Ymxpc2hlZEF0OiBpc28odi5wdWJsaXNoZWRfYXQpLFxuICAgICAgYnJlYWtpbmc6IHYuYnJlYWtpbmcsXG4gICAgICBkZXByZWNhdGVkOiB2LmRlcHJlY2F0ZWRfYXQgIT0gbnVsbCxcbiAgICAgIGRlcHJlY2F0aW9uTWVzc2FnZTogdi5kZXByZWNhdGlvbl9tZXNzYWdlLFxuICAgICAgeWFua2VkOiB2LnlhbmtlZCxcbiAgICAgIGNoYW5nZWxvZzogdi5jaGFuZ2Vsb2csXG4gICAgICB2dWxuQ3JpdGljYWw6IHYudnVsbl9jcml0aWNhbCxcbiAgICAgIHZ1bG5IaWdoOiB2LnZ1bG5faGlnaCxcbiAgICAgIHZ1bG5Dcml0aWNhbEZpeGFibGU6IHYudnVsbl9jcml0aWNhbF9maXhhYmxlID8/IG51bGwsXG4gICAgICB2dWxuSGlnaEZpeGFibGU6IHYudnVsbl9oaWdoX2ZpeGFibGUgPz8gbnVsbCxcbiAgICAgIHNjYW5uZWRBdDogdi5zY2FubmVkX2F0ID8gaXNvKHYuc2Nhbm5lZF9hdCkgOiBudWxsLFxuICAgICAgc2NhbkZsYWdnZWRBdDogdi5zY2FuX2ZsYWdnZWRfYXQgPyBpc28odi5zY2FuX2ZsYWdnZWRfYXQpIDogbnVsbCxcbiAgICAgIGFkdmlzb3J5SWRzOiBhZHZpc29yeVJvd3MuZmlsdGVyKChhKSA9PiBhZHZpc29yeVJhbmdlQ292ZXJzKGEuYWZmZWN0ZWRfcmFuZ2UsIHYudmVyc2lvbikpLm1hcCgoYSkgPT4gYS5pZCksXG4gICAgfSkpLFxuICAgIGNvbmZpZ3VyYXRpb246IHtcbiAgICAgIHNlY3JldHM6IChjdXJyZW50Py5zZWNyZXRzID8/IFtdKS5tYXAoKHMpID0+ICh7IG5hbWU6IHMubmFtZSwgcmVxdWlyZWQ6IHMucmVxdWlyZWQsIGRlc2NyaXB0aW9uOiBzLmRlc2NyaXB0aW9uID8/ICcnIH0pKSxcbiAgICAgIHJlcXVpcmVkTWV0YWRhdGE6IGN1cnJlbnQ/LnJlcXVpcmVkX21ldGFkYXRhID8/IFtdLFxuICAgICAgcmVxdWlyZWRWYXJzOiBjdXJyZW50Py5yZXF1aXJlZF92YXJzID8/IFtdLFxuICAgICAgY29tcHV0ZVR5cGU6IGN1cnJlbnQ/LmNvbXB1dGVfdHlwZSA/PyAnJyxcbiAgICAgIHByaW1hcnlPdXRwdXREaXJlY3Rvcnk6IG51bGwsXG4gICAgICBuZXR3b3JrRWdyZXNzOiBjdXJyZW50Py5uZXR3b3JrX2VncmVzcyA/PyBbXSxcbiAgICAgIHBsdWdpblR5cGU6IGN1cnJlbnQ/LnBsdWdpbl90eXBlID8/ICcnLFxuICAgIH0sXG4gICAgc3VwcGx5Q2hhaW46IHtcbiAgICAgIC8vIEEgbGlzdGVkIHZlcnNpb24gZXhpc3RzIG9ubHkgYWZ0ZXIgdGhlIHBsYXRmb3JtIHJlLXNpZ25lZCBpdCBpbiBwdWJsaWMvKi5cbiAgICAgIHNpZ25lZDogY3VycmVudD8uaW1hZ2VfZGlnZXN0ICE9IG51bGwsXG4gICAgICBkaWdlc3Q6IGN1cnJlbnQ/LmltYWdlX2RpZ2VzdCA/PyBudWxsLFxuICAgICAgaW1hZ2VTb3VyY2U6IGN1cnJlbnQ/LmltYWdlX3NvdXJjZSA/PyBudWxsLFxuICAgICAgc2Nhbm5lZEF0OiBjdXJyZW50Py5zY2FubmVkX2F0ID8gaXNvKGN1cnJlbnQuc2Nhbm5lZF9hdCkgOiBudWxsLFxuICAgICAgdnVsbkNyaXRpY2FsOiBjdXJyZW50Py52dWxuX2NyaXRpY2FsID8/IG51bGwsXG4gICAgICB2dWxuSGlnaDogY3VycmVudD8udnVsbl9oaWdoID8/IG51bGwsXG4gICAgICB2dWxuQ3JpdGljYWxGaXhhYmxlOiBjdXJyZW50Py52dWxuX2NyaXRpY2FsX2ZpeGFibGUgPz8gbnVsbCxcbiAgICAgIHZ1bG5IaWdoRml4YWJsZTogY3VycmVudD8udnVsbl9oaWdoX2ZpeGFibGUgPz8gbnVsbCxcbiAgICAgIHNjYW5GbGFnZ2VkQXQ6IGN1cnJlbnQ/LnNjYW5fZmxhZ2dlZF9hdCA/IGlzbyhjdXJyZW50LnNjYW5fZmxhZ2dlZF9hdCkgOiBudWxsLFxuICAgICAgc2JvbVVybDogY3VycmVudD8uaW1hZ2VfZGlnZXN0XG4gICAgICAgID8gYC9hcGkvcHVibGljL3BsdWdpbnMvJHtlbmNvZGVVUklDb21wb25lbnQocm93LnB1Ymxpc2hlcl9oYW5kbGUpfS8ke2VuY29kZVVSSUNvbXBvbmVudChyb3cubmFtZSl9L3ZlcnNpb25zLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGN1cnJlbnQudmVyc2lvbil9L3Nib21gXG4gICAgICAgIDogbnVsbCxcbiAgICB9LFxuICAgIGFkdmlzb3JpZXM6IGFkdmlzb3J5Um93cy5tYXAoKGEpID0+ICh7XG4gICAgICBpZDogYS5pZCxcbiAgICAgIHNldmVyaXR5OiBhLnNldmVyaXR5LFxuICAgICAgc3VtbWFyeTogYS5zdW1tYXJ5LFxuICAgICAgYWZmZWN0ZWRSYW5nZTogYS5hZmZlY3RlZF9yYW5nZSxcbiAgICAgIGZpeGVkVmVyc2lvbjogYS5maXhlZF92ZXJzaW9uLFxuICAgICAgcHVibGlzaGVkQXQ6IGlzbyhhLnB1Ymxpc2hlZF9hdCksXG4gICAgICBkZXRhaWxzSHRtbDogYS5kZXRhaWxzX2h0bWwsXG4gICAgICBjdmVJZHM6IGEuY3ZlX2lkcyA/PyBbXSxcbiAgICB9KSksXG4gICAgcmF0aW5nRGlzdHJpYnV0aW9uOiBkaXN0XG4gICAgICA/IHsgMTogbnVtKGRpc3RbJzEnXSksIDI6IG51bShkaXN0WycyJ10pLCAzOiBudW0oZGlzdFsnMyddKSwgNDogbnVtKGRpc3RbJzQnXSksIDU6IG51bShkaXN0Wyc1J10pIH1cbiAgICAgIDogbnVsbCxcbiAgICByZWNlbnRSYXRpbmc6IHJvdy5yZWNlbnRfcmF0aW5nID09IG51bGwgPyBudWxsIDogTWF0aC5yb3VuZChudW0ocm93LnJlY2VudF9yYXRpbmcpICogMTAwKSAvIDEwMCxcbiAgICBhY3RpdmVPcmdDb3VudDogcm93LmFjdGl2ZV9vcmdfY291bnQgPT0gbnVsbCA/IG51bGwgOiBudW0ocm93LmFjdGl2ZV9vcmdfY291bnQpLFxuICAgIGhlYWx0aEJyZWFrZG93bjogcm93LmhlYWx0aF9icmVha2Rvd24gPz8gbnVsbCxcbiAgICBzdWNjZXNzUmF0ZTMwZDogcm93LnN1Y2Nlc3NfcmF0ZV8zMGQgPT0gbnVsbCA/IG51bGwgOiBNYXRoLnJvdW5kKG51bShyb3cuc3VjY2Vzc19yYXRlXzMwZCkgKiAxMDAwKSAvIDEwMDAsXG4gIH07XG59XG5cbi8qKiBPbmUgbGlzdGVkIHZlcnNpb24ncyBwdWJsaWMgaW1hZ2UgaWRlbnRpdHkgKGZvciB0aGUgU0JPTSBkb3dubG9hZCksIG9yIG51bGwuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UHVibGljTGlzdGVkVmVyc2lvbihcbiAgcHVibGlzaGVySGFuZGxlOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgdmVyc2lvbjogc3RyaW5nLFxuKTogUHJvbWlzZTx7IGltYWdlUmVwb3NpdG9yeTogc3RyaW5nOyBpbWFnZURpZ2VzdDogc3RyaW5nIH0gfCBudWxsPiB7XG4gIGNvbnN0IGRiID0gZ2V0UHVibGljUmVhZGVyRGIoKTtcbiAgY29uc3QgcmVzID0gYXdhaXQgZGIuZXhlY3V0ZShzcWxgXG4gICAgU0VMRUNUIGltYWdlX3JlcG9zaXRvcnksIGltYWdlX2RpZ2VzdCBGUk9NIHB1YmxpY19saXN0ZWRfdmVyc2lvbnNcbiAgICAgV0hFUkUgcHVibGlzaGVyX2hhbmRsZSA9ICR7cHVibGlzaGVySGFuZGxlfSBBTkQgbmFtZSA9ICR7bmFtZX0gQU5EIHZlcnNpb24gPSAke3ZlcnNpb259IEFORCBOT1QgeWFua2VkXG4gICAgICAgQU5EIGxpc3RpbmdfaWQgSU4gKFNFTEVDVCBpZCBGUk9NIHB1YmxpY19saXN0aW5ncyBXSEVSRSBwYXVzZWRfYXQgSVMgTlVMTClcbiAgICAgTElNSVQgMWApO1xuICBjb25zdCByb3cgPSByZXN1bHRSb3dzPHsgaW1hZ2VfcmVwb3NpdG9yeTogc3RyaW5nIHwgbnVsbDsgaW1hZ2VfZGlnZXN0OiBzdHJpbmcgfCBudWxsIH0+KHJlcylbMF07XG4gIGlmICghcm93Py5pbWFnZV9yZXBvc2l0b3J5IHx8ICFyb3cuaW1hZ2VfZGlnZXN0KSByZXR1cm4gbnVsbDtcbiAgcmV0dXJuIHsgaW1hZ2VSZXBvc2l0b3J5OiByb3cuaW1hZ2VfcmVwb3NpdG9yeSwgaW1hZ2VEaWdlc3Q6IHJvdy5pbWFnZV9kaWdlc3QgfTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldmlld3Ncbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbnR5cGUgUmV2aWV3Um93ID0ge1xuICBpZDogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmcgfCBudWxsO1xuICByYXRpbmc6IG51bWJlciB8IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZyB8IG51bGw7XG4gIGJvZHlfaHRtbDogc3RyaW5nIHwgbnVsbDtcbiAgYXV0aG9yX2Rpc3BsYXlfbmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgdmVyaWZpZWRfdXNlOiBib29sZWFuO1xuICBoZWxwZnVsX2NvdW50OiBudW1iZXIgfCBzdHJpbmc7XG4gIGVkaXRlZDogYm9vbGVhbjtcbiAgY3JlYXRlZF9hdDogRGF0ZSB8IHN0cmluZztcbiAgdXBkYXRlZF9hdDogRGF0ZSB8IHN0cmluZztcbiAgcHVibGlzaGVyX2Rpc3BsYXlfbmFtZTogc3RyaW5nO1xuICByZXBseV9ib2R5X2h0bWw6IHN0cmluZyB8IG51bGw7XG4gIHJlcGx5X2NyZWF0ZWRfYXQ6IERhdGUgfCBzdHJpbmcgfCBudWxsO1xuICByZXBseV91cGRhdGVkX2F0OiBEYXRlIHwgc3RyaW5nIHwgbnVsbDtcbiAgdG90YWw6IG51bWJlciB8IHN0cmluZztcbn07XG5cbmZ1bmN0aW9uIHJldmlld09yZGVyKHNvcnQ6IFJldmlld1NvcnQpOiBTUUwge1xuICBzd2l0Y2ggKHNvcnQpIHtcbiAgICBjYXNlICdyZWNlbnQnOiByZXR1cm4gc3FsYGNyZWF0ZWRfYXQgREVTQywgaWQgQVNDYDtcbiAgICBjYXNlICdoaWdoZXN0JzogcmV0dXJuIHNxbGByYXRpbmcgREVTQywgaGVscGZ1bF9jb3VudCBERVNDLCBjcmVhdGVkX2F0IERFU0MsIGlkIEFTQ2A7XG4gICAgY2FzZSAnbG93ZXN0JzogcmV0dXJuIHNxbGByYXRpbmcgQVNDLCBoZWxwZnVsX2NvdW50IERFU0MsIGNyZWF0ZWRfYXQgREVTQywgaWQgQVNDYDtcbiAgICBjYXNlICdoZWxwZnVsJzpcbiAgICBkZWZhdWx0OlxuICAgICAgLy8gVmVyaWZpZWQgdXNlIGJyZWFrcyB0aWVzOiBhbiBvcmcgdGhhdCBydW5zIHRoZSBwbHVnaW4ga25vd3MgaXQgYmVzdC5cbiAgICAgIHJldHVybiBzcWxgaGVscGZ1bF9jb3VudCBERVNDLCB2ZXJpZmllZF91c2UgREVTQywgY3JlYXRlZF9hdCBERVNDLCBpZCBBU0NgO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1B1YmxpY1Jldmlldyhyb3c6IE9taXQ8UmV2aWV3Um93LCAndG90YWwnPik6IFB1YmxpY1Jldmlld0l0ZW0ge1xuICByZXR1cm4ge1xuICAgIGlkOiByb3cuaWQsXG4gICAgcmF0aW5nOiBudW0ocm93LnJhdGluZyksXG4gICAgdGl0bGU6IHJvdy50aXRsZSxcbiAgICBib2R5SHRtbDogcm93LmJvZHlfaHRtbCxcbiAgICB2ZXJzaW9uOiByb3cudmVyc2lvbixcbiAgICBhdXRob3I6IHJvdy5hdXRob3JfZGlzcGxheV9uYW1lID8geyBkaXNwbGF5TmFtZTogcm93LmF1dGhvcl9kaXNwbGF5X25hbWUgfSA6IG51bGwsXG4gICAgdmVyaWZpZWRVc2U6IHJvdy52ZXJpZmllZF91c2UgPT09IHRydWUsXG4gICAgaGVscGZ1bENvdW50OiBudW0ocm93LmhlbHBmdWxfY291bnQpLFxuICAgIGVkaXRlZDogcm93LmVkaXRlZCA9PT0gdHJ1ZSxcbiAgICBjcmVhdGVkQXQ6IGlzbyhyb3cuY3JlYXRlZF9hdCksXG4gICAgdXBkYXRlZEF0OiBpc28ocm93LnVwZGF0ZWRfYXQpLFxuICAgIHJlcGx5OiByb3cucmVwbHlfYm9keV9odG1sXG4gICAgICA/IHtcbiAgICAgICAgYm9keUh0bWw6IHJvdy5yZXBseV9ib2R5X2h0bWwsXG4gICAgICAgIHB1Ymxpc2hlckRpc3BsYXlOYW1lOiByb3cucHVibGlzaGVyX2Rpc3BsYXlfbmFtZSxcbiAgICAgICAgY3JlYXRlZEF0OiBpc28ocm93LnJlcGx5X2NyZWF0ZWRfYXQpLFxuICAgICAgICB1cGRhdGVkQXQ6IGlzbyhyb3cucmVwbHlfdXBkYXRlZF9hdCksXG4gICAgICB9XG4gICAgICA6IG51bGwsXG4gIH07XG59XG5cbi8qKlxuICogT25lIHBhZ2Ugb2YgYSBsaXN0aW5nJ3MgcHVibGlzaGVkIHJldmlld3MgKHRoZSBkaXJlY3RvcnkncyBSZXZpZXdzIHRhYiksIG9yIG51bGxcbiAqIHdoZW4gdGhlIGxpc3RpbmcgaXNuJ3QgcHVibGljLiBIZWxkIGFuZCByZW1vdmVkIHJldmlld3MgbmV2ZXIgcmVhY2ggdGhlIHZpZXcuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsaXN0UHVibGljUmV2aWV3cyhwdWJsaXNoZXJIYW5kbGU6IHN0cmluZywgbmFtZTogc3RyaW5nLCBxdWVyeTogUHVibGljUmV2aWV3UXVlcnkgPSB7fSk6IFByb21pc2U8UHVibGljUmV2aWV3UGFnZSB8IG51bGw+IHtcbiAgY29uc3QgZGIgPSBnZXRQdWJsaWNSZWFkZXJEYigpO1xuICBjb25zdCBsaXN0aW5nID0gcmVzdWx0Um93czx7IGlkOiBzdHJpbmcgfT4oYXdhaXQgZGIuZXhlY3V0ZShzcWxgXG4gICAgU0VMRUNUIGlkIEZST00gcHVibGljX2xpc3RpbmdzXG4gICAgIFdIRVJFIHB1Ymxpc2hlcl9oYW5kbGUgPSAke3B1Ymxpc2hlckhhbmRsZX0gQU5EIG5hbWUgPSAke25hbWV9IEFORCBwYXVzZWRfYXQgSVMgTlVMTFxuICAgICBMSU1JVCAxYCkpWzBdO1xuICBpZiAoIWxpc3RpbmcpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHNvcnQgPSBxdWVyeS5zb3J0ICYmIFJFVklFV19TT1JUUy5pbmNsdWRlcyhxdWVyeS5zb3J0KSA/IHF1ZXJ5LnNvcnQgOiAnaGVscGZ1bCc7XG4gIGNvbnN0IGxpbWl0ID0gIXF1ZXJ5LmxpbWl0IHx8ICFOdW1iZXIuaXNGaW5pdGUocXVlcnkubGltaXQpXG4gICAgPyBSRVZJRVdTX0RFRkFVTFRfTElNSVRcbiAgICA6IE1hdGgubWluKE1hdGgubWF4KE1hdGgudHJ1bmMocXVlcnkubGltaXQpLCAxKSwgUkVWSUVXU19NQVhfTElNSVQpO1xuICBjb25zdCBvZmZzZXQgPSBkZWNvZGVPZmZzZXRDdXJzb3IocXVlcnkuY3Vyc29yKTtcbiAgY29uc3Qgd2hlcmU6IFNRTFtdID0gW3NxbGBsaXN0aW5nX2lkID0gJHtsaXN0aW5nLmlkfWBdO1xuICBpZiAocXVlcnkucmF0aW5nICE9PSB1bmRlZmluZWQgJiYgTnVtYmVyLmlzSW50ZWdlcihxdWVyeS5yYXRpbmcpICYmIHF1ZXJ5LnJhdGluZyA+PSAxICYmIHF1ZXJ5LnJhdGluZyA8PSA1KSB7XG4gICAgd2hlcmUucHVzaChzcWxgcmF0aW5nID0gJHtxdWVyeS5yYXRpbmd9YCk7XG4gIH1cbiAgY29uc3Qgcm93cyA9IHJlc3VsdFJvd3M8UmV2aWV3Um93Pihhd2FpdCBkYi5leGVjdXRlKHNxbGBcbiAgICBTRUxFQ1QgaWQsIHZlcnNpb24sIHJhdGluZywgdGl0bGUsIGJvZHlfaHRtbCwgYXV0aG9yX2Rpc3BsYXlfbmFtZSwgdmVyaWZpZWRfdXNlLCBoZWxwZnVsX2NvdW50LCBlZGl0ZWQsXG4gICAgICAgICAgIGNyZWF0ZWRfYXQsIHVwZGF0ZWRfYXQsIHB1Ymxpc2hlcl9kaXNwbGF5X25hbWUsIHJlcGx5X2JvZHlfaHRtbCwgcmVwbHlfY3JlYXRlZF9hdCwgcmVwbHlfdXBkYXRlZF9hdCxcbiAgICAgICAgICAgQ09VTlQoKikgT1ZFUiAoKSBBUyB0b3RhbFxuICAgICAgRlJPTSBwdWJsaWNfcmV2aWV3c1xuICAgICBXSEVSRSAke3NxbC5qb2luKHdoZXJlLCBzcWxgIEFORCBgKX1cbiAgICAgT1JERVIgQlkgJHtyZXZpZXdPcmRlcihzb3J0KX1cbiAgICAgTElNSVQgJHtsaW1pdH0gT0ZGU0VUICR7b2Zmc2V0fWApKTtcbiAgY29uc3QgdG90YWwgPSByb3dzLmxlbmd0aCA+IDAgPyBudW0ocm93c1swXSEudG90YWwpIDogMDtcbiAgcmV0dXJuIHtcbiAgICByZXZpZXdzOiByb3dzLm1hcCh0b1B1YmxpY1JldmlldyksXG4gICAgdG90YWwsXG4gICAgbmV4dEN1cnNvcjogb2Zmc2V0ICsgcm93cy5sZW5ndGggPCB0b3RhbCA/IGVuY29kZU9mZnNldEN1cnNvcihvZmZzZXQgKyByb3dzLmxlbmd0aCkgOiBudWxsLFxuICB9O1xufVxuXG4vKiogRXZlcnkgcHVibGljIGxpc3RpbmcncyBVUkwgcGFydHMgKyBsYXN0IHVwZGF0ZSwgZm9yIHRoZSBzaXRlbWFwLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxpc3RQdWJsaWNMaXN0aW5nc0ZvclNpdGVtYXAobWF4ID0gNTAwMCk6IFByb21pc2U8eyBwdWJsaXNoZXI6IHN0cmluZzsgbmFtZTogc3RyaW5nOyB1cGRhdGVkQXQ6IHN0cmluZyB9W10+IHtcbiAgY29uc3QgZGIgPSBnZXRQdWJsaWNSZWFkZXJEYigpO1xuICBjb25zdCByZXMgPSBhd2FpdCBkYi5leGVjdXRlKHNxbGBcbiAgICBTRUxFQ1QgcHVibGlzaGVyX2hhbmRsZSwgbmFtZSwgdXBkYXRlZF9hdCBGUk9NIHB1YmxpY19saXN0aW5nc1xuICAgICBXSEVSRSBwYXVzZWRfYXQgSVMgTlVMTCBPUkRFUiBCWSB1cGRhdGVkX2F0IERFU0MgTElNSVQgJHtNYXRoLm1pbihNYXRoLm1heChtYXgsIDEpLCA1MF8wMDApfWApO1xuICByZXR1cm4gcmVzdWx0Um93czx7IHB1Ymxpc2hlcl9oYW5kbGU6IHN0cmluZzsgbmFtZTogc3RyaW5nOyB1cGRhdGVkX2F0OiBEYXRlIHwgc3RyaW5nIH0+KHJlcylcbiAgICAubWFwKChyKSA9PiAoeyBwdWJsaXNoZXI6IHIucHVibGlzaGVyX2hhbmRsZSwgbmFtZTogci5uYW1lLCB1cGRhdGVkQXQ6IGlzbyhyLnVwZGF0ZWRfYXQpIH0pKTtcbn1cbiJdfQ==
|
|
463
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWRpcmVjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvcHVibGljLWRpcmVjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxHQUFHLEVBQVksTUFBTSxhQUFhLENBQUM7QUFFNUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWxELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQVdqRSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQTZCLENBQUMsV0FBVyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUUxSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQWtDLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFFbEgsc0ZBQXNGO0FBQ3RGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQztBQUV4Qyx1RUFBdUU7QUFDdkUsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsR0FBRyxDQUFDO0FBQzlDLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLEVBQUUsQ0FBQztBQUMxQyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxFQUFFLENBQUM7QUE2SHRDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBMEIsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUM5RixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxFQUFFLENB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IENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBRdWVyaWVzIGJlaGluZCB0aGUgYW5vbnltb3VzIHB1YmxpYyBwbHVnaW4gZGlyZWN0b3J5XG4gKiAoZG9jcy9wbHVnaW4tcHVibGlzaGluZy5tZCkuXG4gKlxuICogRXZlcnkgcXVlcnkgaGVyZSByZWFkcyBPTkxZIHRoZSBgcHVibGljX2xpc3RpbmdzYCwgYHB1YmxpY19saXN0ZWRfdmVyc2lvbnNgLFxuICogYHB1YmxpY19hZHZpc29yaWVzYCBhbmQgYHB1YmxpY19yZXZpZXdzYCB2aWV3cywgdGhyb3VnaCB0aGUgYGVjb3N5c3RlbV9wdWJsaWNfcmVhZGVyYFxuICogY29ubmVjdGlvbiAoe0BsaW5rIGdldFB1YmxpY1JlYWRlckRifSkuIFRob3NlIHZpZXdzIGFscmVhZHkgZmlsdGVyIHRvIHB1YmxpY1xuICogcm93cyAobGlzdGVkL3VubWFpbnRhaW5lZCBsaXN0aW5ncyBvZiBub24tc3VzcGVuZGVkIHB1Ymxpc2hlcnMsIG5vbi1wYXVzZWRcbiAqIHZlcnNpb25zLCBwdWJsaXNoZWQgYWR2aXNvcmllcykgYW5kIHByb2plY3QgcHVibGljIGNvbHVtbnMgb25seSwgc28gbm90aGluZ1xuICogaGVyZSBuZWVkcyDigJQgb3IgaGFzIOKAlCBhIHRlbmFudCBjb250ZXh0LlxuICpcbiAqIFNlYXJjaDogUG9zdGdyZXMgZnVsbC10ZXh0IChgc2VhcmNoX3ZlY3RvcmAsIHdlaWdodGVkIG5hbWUgQSAvIGtleXdvcmRzIGFuZFxuICogY2F0ZWdvcnkgQiAvIHN1bW1hcnkgQyAvIFJFQURNRSBELCBgZW5nbGlzaGAgY29uZmlnKSBPUiBhIHRyaWdyYW0gbWF0Y2ggb24gdGhlXG4gKiBuYW1lICh0eXBvIHRvbGVyYW5jZSksIHJhbmtlZCBieSBgdHNfcmFua2AgKyBuYW1lIHNpbWlsYXJpdHksIGJsZW5kZWQgd2l0aCB0aGVcbiAqIEJheWVzaWFuIHJhdGluZyBhbmQgaW5zdGFsbCBjb3VudCB3aGVuIHByZXNlbnQuIFBhdXNlZCBsaXN0aW5ncyBhcmUgaGlkZGVuLlxuICovXG5cbmltcG9ydCB7IHNxbCwgdHlwZSBTUUwgfSBmcm9tICdkcml6emxlLW9ybSc7XG5cbmltcG9ydCB7IGFkdmlzb3J5UmFuZ2VDb3ZlcnMgfSBmcm9tICcuL3BsdWdpbi1hZHZpc29yaWVzLmpzJztcbmltcG9ydCB7IGNvbXBhcmVTZW12ZXIgfSBmcm9tICcuL3NlbXZlci1yYW5nZS5qcyc7XG5pbXBvcnQgdHlwZSB7IEhlYWx0aEJyZWFrZG93biB9IGZyb20gJy4uL2RhdGFiYXNlL2RyaXp6bGUtc2NoZW1hLmpzJztcbmltcG9ydCB7IHJlc3VsdFJvd3MgfSBmcm9tICcuLi9kYXRhYmFzZS9wZy1yZXN1bHQuanMnO1xuaW1wb3J0IHsgZ2V0UHVibGljUmVhZGVyRGIgfSBmcm9tICcuLi9kYXRhYmFzZS9wdWJsaWMtcmVhZGVyLmpzJztcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFB1YmxpYyBjb250cmFjdCAobWlycm9ycyBmcm9udGVuZC9zcmMvbGliL3B1YmxpYy1kaXJlY3RvcnkvdHlwZXMudHMpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgdHlwZSBEaXJlY3RvcnlUcnVzdFRpZXIgPSAnb2ZmaWNpYWwnIHwgJ3ZlcmlmaWVkJyB8ICdjb21tdW5pdHknIHwgJ3VudmVyaWZpZWQnO1xuXG5leHBvcnQgdHlwZSBEaXJlY3RvcnlJY29uS2luZCA9ICd2ZW5kb3InIHwgJ3VwbG9hZGVkJyB8ICdtb25vZ3JhbScgfCAnY2F0ZWdvcnknO1xuZXhwb3J0IHR5cGUgRGlyZWN0b3J5U29ydCA9ICdyZWxldmFuY2UnIHwgJ3JhdGluZycgfCAnaW5zdGFsbHMnIHwgJ3VwZGF0ZWQnIHwgJ25hbWUnIHwgJ2hlYWx0aCc7XG5cbmV4cG9ydCBjb25zdCBESVJFQ1RPUllfU09SVFM6IHJlYWRvbmx5IERpcmVjdG9yeVNvcnRbXSA9IFsncmVsZXZhbmNlJywgJ3JhdGluZycsICdpbnN0YWxscycsICd1cGRhdGVkJywgJ25hbWUnLCAnaGVhbHRoJ107XG5cbmV4cG9ydCBjb25zdCBESVJFQ1RPUllfVElFUlM6IHJlYWRvbmx5IERpcmVjdG9yeVRydXN0VGllcltdID0gWydvZmZpY2lhbCcsICd2ZXJpZmllZCcsICdjb21tdW5pdHknLCAndW52ZXJpZmllZCddO1xuXG4vKiogTWluaW11bSBgd29yZF9zaW1pbGFyaXR5KHF1ZXJ5LCBuYW1lKWAgZm9yIGEgZnV6enkgbmFtZSBtYXRjaCAodHlwbyB0b2xlcmFuY2UpLiAqL1xuZXhwb3J0IGNvbnN0IEZVWlpZX05BTUVfVEhSRVNIT0xEID0gMC4zO1xuXG4vKiogTWF4IHF1ZXJ5IGxlbmd0aCBhY2NlcHRlZCAobG9uZ2VyIGlzIHRydW5jYXRlZCwgbmV2ZXIgYW4gZXJyb3IpLiAqL1xuZXhwb3J0IGNvbnN0IERJUkVDVE9SWV9NQVhfUVVFUllfTEVOR1RIID0gMTAwO1xuZXhwb3J0IGNvbnN0IERJUkVDVE9SWV9ERUZBVUxUX0xJTUlUID0gMjQ7XG5leHBvcnQgY29uc3QgRElSRUNUT1JZX01BWF9MSU1JVCA9IDYwO1xuXG5leHBvcnQgaW50ZXJmYWNlIERpcmVjdG9yeVNlYXJjaFBhcmFtcyB7XG4gIHE/OiBzdHJpbmc7XG4gIGNhdGVnb3J5Pzogc3RyaW5nO1xuICB0aWVyPzogRGlyZWN0b3J5VHJ1c3RUaWVyO1xuICBsaWNlbnNlPzogc3RyaW5nO1xuICBjb21wdXRlVHlwZT86IHN0cmluZztcbiAgbmVlZHNTZWNyZXRzPzogYm9vbGVhbjtcbiAgbWluUmF0aW5nPzogbnVtYmVyO1xuICBzb3J0PzogRGlyZWN0b3J5U29ydDtcbiAgY3Vyc29yPzogc3RyaW5nO1xuICBsaW1pdD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaXJlY3RvcnlMaXN0aW5nQ2FyZCB7XG4gIHB1Ymxpc2hlcjogeyBoYW5kbGU6IHN0cmluZzsgZGlzcGxheU5hbWU6IHN0cmluZzsgdGllcjogRGlyZWN0b3J5VHJ1c3RUaWVyIH07XG4gIG5hbWU6IHN0cmluZztcbiAgc3VtbWFyeTogc3RyaW5nO1xuICBjYXRlZ29yeTogc3RyaW5nO1xuICBrZXl3b3Jkczogc3RyaW5nW107XG4gIGxhdGVzdFZlcnNpb246IHN0cmluZztcbiAgbGljZW5zZTogc3RyaW5nO1xuICBpY29uVXJsOiBzdHJpbmcgfCBudWxsO1xuICBpY29uS2luZDogRGlyZWN0b3J5SWNvbktpbmQ7XG4gIGljb25LZXk6IHN0cmluZyB8IG51bGw7XG4gIGljb25IZXg6IHN0cmluZyB8IG51bGw7XG4gIGljb25CYWRnZTogc3RyaW5nIHwgbnVsbDtcbiAgcmF0aW5nOiB7IHNjb3JlOiBudW1iZXI7IGNvdW50OiBudW1iZXIgfSB8IG51bGw7XG4gIGluc3RhbGxDb3VudDogbnVtYmVyO1xuICAvKiogMOKAkzEwMCBoZWFsdGggc2NvcmU7IG51bGwgd2hlbiBmZXdlciB0aGFuIHRocmVlIGNvbXBvbmVudHMgYXJlIGtub3duLiAqL1xuICBoZWFsdGhTY29yZTogbnVtYmVyIHwgbnVsbDtcbiAgdXBkYXRlZEF0OiBzdHJpbmc7XG4gIHN0YXRlOiAnbGlzdGVkJyB8ICd1bm1haW50YWluZWQnO1xuICBoaWdobGlnaHQ/OiB7IG5hbWU/OiBzdHJpbmc7IHN1bW1hcnk/OiBzdHJpbmcgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaXJlY3RvcnlTZWFyY2hSZXN1bHQge1xuICBpdGVtczogRGlyZWN0b3J5TGlzdGluZ0NhcmRbXTtcbiAgZmFjZXRzOiB7XG4gICAgY2F0ZWdvcnk6IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG4gICAgdGllcjogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbiAgICBsaWNlbnNlOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICAgIGNvbXB1dGVUeXBlOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICAgIG5lZWRzU2VjcmV0czogeyB0cnVlOiBudW1iZXI7IGZhbHNlOiBudW1iZXIgfTtcbiAgfTtcbiAgdG90YWw6IG51bWJlcjtcbiAgbmV4dEN1cnNvcjogc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaXJlY3RvcnlDYXRlZ29yeVN1bW1hcnkge1xuICBpZDogc3RyaW5nO1xuICBjb3VudDogbnVtYmVyO1xuICB0b3A6IERpcmVjdG9yeUxpc3RpbmdDYXJkW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlyZWN0b3J5TGlzdGluZ1ZlcnNpb24ge1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIHB1Ymxpc2hlZEF0OiBzdHJpbmc7XG4gIGJyZWFraW5nOiBib29sZWFuO1xuICBkZXByZWNhdGVkOiBib29sZWFuO1xuICBkZXByZWNhdGlvbk1lc3NhZ2U6IHN0cmluZyB8IG51bGw7XG4gIHlhbmtlZDogYm9vbGVhbjtcbiAgY2hhbmdlbG9nOiBzdHJpbmcgfCBudWxsO1xuICB2dWxuQ3JpdGljYWw6IG51bWJlciB8IG51bGw7XG4gIHZ1bG5IaWdoOiBudW1iZXIgfCBudWxsO1xuICAvKiogT2YgdGhvc2UsIHRoZSBmaW5kaW5ncyBncnlwZSByZXBvcnRzIGEgZml4ZWQgdmVyc2lvbiBmb3IuICovXG4gIHZ1bG5Dcml0aWNhbEZpeGFibGU6IG51bWJlciB8IG51bGw7XG4gIHZ1bG5IaWdoRml4YWJsZTogbnVtYmVyIHwgbnVsbDtcbiAgc2Nhbm5lZEF0OiBzdHJpbmcgfCBudWxsO1xuICAvKiogV2hlbiB0aGUgbmlnaHRseSByZXNjYW4gZmxhZ2dlZCB0aGlzIHZlcnNpb24gKGZpeGFibGUgY3JpdGljYWxzIG92ZXIgdGhlIHBsYXRmb3JtIGZsb29yKTsgbnVsbCA9IG5vdCBmbGFnZ2VkLiAqL1xuICBzY2FuRmxhZ2dlZEF0OiBzdHJpbmcgfCBudWxsO1xuICAvKiogSWRzIG9mIHRoZSBwdWJsaXNoZWQgYWR2aXNvcmllcyB3aG9zZSByYW5nZSBjb3ZlcnMgdGhpcyB2ZXJzaW9uLiAqL1xuICBhZHZpc29yeUlkczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlyZWN0b3J5TGlzdGluZ0RldGFpbCBleHRlbmRzIERpcmVjdG9yeUxpc3RpbmdDYXJkIHtcbiAgcmVhZG1lSHRtbDogc3RyaW5nIHwgbnVsbDtcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgaG9tZXBhZ2VVcmw6IHN0cmluZyB8IG51bGw7XG4gIHNvdXJjZVVybDogc3RyaW5nIHwgbnVsbDtcbiAgdmVyc2lvbnM6IERpcmVjdG9yeUxpc3RpbmdWZXJzaW9uW107XG4gIGNvbmZpZ3VyYXRpb246IHtcbiAgICBzZWNyZXRzOiB7IG5hbWU6IHN0cmluZzsgcmVxdWlyZWQ6IGJvb2xlYW47IGRlc2NyaXB0aW9uOiBzdHJpbmcgfVtdO1xuICAgIHJlcXVpcmVkTWV0YWRhdGE6IHN0cmluZ1tdO1xuICAgIHJlcXVpcmVkVmFyczogc3RyaW5nW107XG4gICAgY29tcHV0ZVR5cGU6IHN0cmluZztcbiAgICBwcmltYXJ5T3V0cHV0RGlyZWN0b3J5OiBzdHJpbmcgfCBudWxsO1xuICAgIG5ldHdvcmtFZ3Jlc3M6IHN0cmluZ1tdO1xuICAgIHBsdWdpblR5cGU6IHN0cmluZztcbiAgfTtcbiAgc3VwcGx5Q2hhaW46IHtcbiAgICBzaWduZWQ6IGJvb2xlYW47XG4gICAgZGlnZXN0OiBzdHJpbmcgfCBudWxsO1xuICAgIGltYWdlU291cmNlOiBzdHJpbmcgfCBudWxsO1xuICAgIHNjYW5uZWRBdDogc3RyaW5nIHwgbnVsbDtcbiAgICB2dWxuQ3JpdGljYWw6IG51bWJlciB8IG51bGw7XG4gICAgdnVsbkhpZ2g6IG51bWJlciB8IG51bGw7XG4gICAgdnVsbkNyaXRpY2FsRml4YWJsZTogbnVtYmVyIHwgbnVsbDtcbiAgICB2dWxuSGlnaEZpeGFibGU6IG51bWJlciB8IG51bGw7XG4gICAgc2NhbkZsYWdnZWRBdDogc3RyaW5nIHwgbnVsbDtcbiAgICBzYm9tVXJsOiBzdHJpbmcgfCBudWxsO1xuICB9O1xuICBhZHZpc29yaWVzOiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBzZXZlcml0eTogc3RyaW5nO1xuICAgIHN1bW1hcnk6IHN0cmluZztcbiAgICBhZmZlY3RlZFJhbmdlOiBzdHJpbmc7XG4gICAgZml4ZWRWZXJzaW9uOiBzdHJpbmcgfCBudWxsO1xuICAgIHB1Ymxpc2hlZEF0OiBzdHJpbmc7XG4gICAgLyoqIFNlcnZlci1zYW5pdGl6ZWQgSFRNTCAodGhlIHN0b3JlZCByZW5kZXIgb2YgdGhlIGRldGFpbHMgbWFya2Rvd24pLiAqL1xuICAgIGRldGFpbHNIdG1sOiBzdHJpbmcgfCBudWxsO1xuICAgIGN2ZUlkczogc3RyaW5nW107XG4gIH1bXTtcbiAgcmF0aW5nRGlzdHJpYnV0aW9uOiBSZWNvcmQ8JzEnIHwgJzInIHwgJzMnIHwgJzQnIHwgJzUnLCBudW1iZXI+IHwgbnVsbDtcbiAgLyoqIFRoZSBCYXllc2lhbiByYXRpbmcgb3ZlciByZXZpZXdzIG9mIHRoZSBsYXN0IHR3byBtaW5vciB2ZXJzaW9ucy4gKi9cbiAgcmVjZW50UmF0aW5nOiBudW1iZXIgfCBudWxsO1xuICBhY3RpdmVPcmdDb3VudDogbnVtYmVyIHwgbnVsbDtcbiAgLyoqIFBlci1jb21wb25lbnQgaGVhbHRoIHNjb3JlcyBiZWhpbmQge0BsaW5rIERpcmVjdG9yeUxpc3RpbmdDYXJkLmhlYWx0aFNjb3JlfS4gKi9cbiAgaGVhbHRoQnJlYWtkb3duOiBIZWFsdGhCcmVha2Rvd24gfCBudWxsO1xuICAvKiogMzAtZGF5IHJ1bnRpbWUgc3VjY2VzcyByYXRlICgwLi4xKSwgb3IgbnVsbCB3aXRoIG5vIHJ1bnMuICovXG4gIHN1Y2Nlc3NSYXRlMzBkOiBudW1iZXIgfCBudWxsO1xufVxuXG5leHBvcnQgdHlwZSBSZXZpZXdTb3J0ID0gJ2hlbHBmdWwnIHwgJ3JlY2VudCcgfCAnaGlnaGVzdCcgfCAnbG93ZXN0JztcbmV4cG9ydCBjb25zdCBSRVZJRVdfU09SVFM6IHJlYWRvbmx5IFJldmlld1NvcnRbXSA9IFsnaGVscGZ1bCcsICdyZWNlbnQnLCAnaGlnaGVzdCcsICdsb3dlc3QnXTtcbmV4cG9ydCBjb25zdCBSRVZJRVdTX0RFRkFVTFRfTElNSVQgPSAxMDtcbmV4cG9ydCBjb25zdCBSRVZJRVdTX01BWF9MSU1JVCA9IDUwO1xuXG5leHBvcnQgaW50ZXJmYWNlIFB1YmxpY1Jldmlld1JlcGx5IHtcbiAgYm9keUh0bWw6IHN0cmluZztcbiAgcHVibGlzaGVyRGlzcGxheU5hbWU6IHN0cmluZztcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIHVwZGF0ZWRBdDogc3RyaW5nO1xufVxuXG4vKiogT25lIHB1Ymxpc2hlZCByZXZpZXcgYXMgdGhlIGRpcmVjdG9yeSBzaG93cyBpdDogZGlzcGxheSBuYW1lIG9ubHksIG5ldmVyIGFuIG9yZy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGljUmV2aWV3SXRlbSB7XG4gIGlkOiBzdHJpbmc7XG4gIHJhdGluZzogbnVtYmVyO1xuICB0aXRsZTogc3RyaW5nIHwgbnVsbDtcbiAgYm9keUh0bWw6IHN0cmluZyB8IG51bGw7XG4gIHZlcnNpb246IHN0cmluZyB8IG51bGw7XG4gIC8qKiBOdWxsIG9uY2UgdGhlIGF1dGhvcidzIGFjY291bnQgd2FzIGRlbGV0ZWQgKHRoZSByZXZpZXcgaXMgYW5vbnltaXplZCkuICovXG4gIGF1dGhvcjogeyBkaXNwbGF5TmFtZTogc3RyaW5nIH0gfCBudWxsO1xuICB2ZXJpZmllZFVzZTogYm9vbGVhbjtcbiAgaGVscGZ1bENvdW50OiBudW1iZXI7XG4gIGVkaXRlZDogYm9vbGVhbjtcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIHVwZGF0ZWRBdDogc3RyaW5nO1xuICByZXBseTogUHVibGljUmV2aWV3UmVwbHkgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1YmxpY1Jldmlld1BhZ2Uge1xuICByZXZpZXdzOiBQdWJsaWNSZXZpZXdJdGVtW107XG4gIHRvdGFsOiBudW1iZXI7XG4gIG5leHRDdXJzb3I6IHN0cmluZyB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGljUmV2aWV3UXVlcnkge1xuICBzb3J0PzogUmV2aWV3U29ydDtcbiAgLyoqIE9ubHkgcmV2aWV3cyB3aXRoIGV4YWN0bHkgdGhpcyBtYW55IHN0YXJzLiAqL1xuICByYXRpbmc/OiBudW1iZXI7XG4gIGN1cnNvcj86IHN0cmluZztcbiAgbGltaXQ/OiBudW1iZXI7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSb3cgbWFwcGluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIEEgYHB1YmxpY19saXN0aW5nc2Agcm93IGFzIHRoZSByYXcgcXVlcmllcyByZXR1cm4gaXQgKHNuYWtlX2Nhc2UpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQdWJsaWNMaXN0aW5nUm93IHtcbiAgaWQ6IHN0cmluZztcbiAgcHVibGlzaGVyX2hhbmRsZTogc3RyaW5nO1xuICBwdWJsaXNoZXJfZGlzcGxheV9uYW1lOiBzdHJpbmc7XG4gIHB1Ymxpc2hlcl90aWVyOiBEaXJlY3RvcnlUcnVzdFRpZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgY2F0ZWdvcnk6IHN0cmluZztcbiAgc3VtbWFyeTogc3RyaW5nIHwgbnVsbDtcbiAgZGVzY3JpcHRpb246IHN0cmluZyB8IG51bGw7XG4gIHJlYWRtZV9odG1sOiBzdHJpbmcgfCBudWxsO1xuICBsaWNlbnNlOiBzdHJpbmcgfCBudWxsO1xuICBob21lcGFnZV91cmw6IHN0cmluZyB8IG51bGw7XG4gIHNvdXJjZV91cmw6IHN0cmluZyB8IG51bGw7XG4gIGljb246IHsga2V5OiBzdHJpbmc7IGJhZGdlPzogc3RyaW5nIH0gfCBudWxsO1xuICB1cGxvYWRlZF9pY29uOiB7IGtleTI1Njogc3RyaW5nOyBrZXk2NDogc3RyaW5nIH0gfCBudWxsO1xuICBrZXl3b3Jkczogc3RyaW5nW10gfCBudWxsO1xuICBsYXRlc3RfdmVyc2lvbjogc3RyaW5nIHwgbnVsbDtcbiAgdXBkYXRlZF9hdDogRGF0ZSB8IHN0cmluZztcbiAgcmF0aW5nX2JheWVzOiBudW1iZXIgfCBzdHJpbmcgfCBudWxsO1xuICByYXRpbmdfY291bnQ6IG51bWJlciB8IHN0cmluZztcbiAgcmF0aW5nX2Rpc3Q6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gfCBudWxsO1xuICByZWNlbnRfcmF0aW5nPzogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbDtcbiAgaW5zdGFsbF9jb3VudDogbnVtYmVyIHwgc3RyaW5nO1xuICBhY3RpdmVfb3JnX2NvdW50OiBudW1iZXIgfCBzdHJpbmcgfCBudWxsO1xuICBoZWFsdGhfc2NvcmU/OiBudW1iZXIgfCBzdHJpbmcgfCBudWxsO1xuICBoZWFsdGhfYnJlYWtkb3duPzogSGVhbHRoQnJlYWtkb3duIHwgbnVsbDtcbiAgc3VjY2Vzc19yYXRlXzMwZD86IG51bWJlciB8IHN0cmluZyB8IG51bGw7XG4gIHN0YXRlOiAnbGlzdGVkJyB8ICd1bm1haW50YWluZWQnO1xufVxuXG5mdW5jdGlvbiBudW0odjogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IG51bWJlciB7XG4gIGNvbnN0IG4gPSB0eXBlb2YgdiA9PT0gJ251bWJlcicgPyB2IDogTnVtYmVyLnBhcnNlRmxvYXQoU3RyaW5nKHYgPz8gJzAnKSk7XG4gIHJldHVybiBOdW1iZXIuaXNGaW5pdGUobikgPyBuIDogMDtcbn1cblxuZnVuY3Rpb24gaXNvKHY6IERhdGUgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgaWYgKCF2KSByZXR1cm4gJyc7XG4gIHJldHVybiB2IGluc3RhbmNlb2YgRGF0ZSA/IHYudG9JU09TdHJpbmcoKSA6IG5ldyBEYXRlKHYpLnRvSVNPU3RyaW5nKCk7XG59XG5cbi8qKlxuICogVGhlIGljb24gZmFsbGJhY2sgY2hhaW46IHVwbG9hZGVkIChpZiB0aGUgdGllciBtYXkgdXBsb2FkKSDihpIgY3VyYXRlZFxuICogdmVuZG9yIGtleSAoT2ZmaWNpYWwsIGFuZCBWZXJpZmllZCBwdWJsaXNoZXJzIGZvciBtYXJrcyB0aGV5IG93biDigJQgb3duZXJzaGlwXG4gKiBpcyBjaGVja2VkIHdoZW4gdGhlIGljb24gaXMgYXBwcm92ZWQpIOKGkiBtb25vZ3JhbS4gQ29tbXVuaXR5IGFuZCBhbm9ueW1vdXNcbiAqIGxpc3RpbmdzIGNhbiBuZXZlciBzaG93IGEgY3VyYXRlZCB2ZW5kb3IgbWFyay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVMaXN0aW5nSWNvbihyb3c6IFBpY2s8UHVibGljTGlzdGluZ1JvdywgJ3B1Ymxpc2hlcl90aWVyJyB8ICdpY29uJyB8ICd1cGxvYWRlZF9pY29uJz4pOiBQaWNrPFxuICBEaXJlY3RvcnlMaXN0aW5nQ2FyZCwgJ2ljb25LaW5kJyB8ICdpY29uVXJsJyB8ICdpY29uS2V5JyB8ICdpY29uQmFkZ2UnIHwgJ2ljb25IZXgnXG4+IHtcbiAgY29uc3Qgbm9uZSA9IHsgaWNvblVybDogbnVsbCwgaWNvbktleTogbnVsbCwgaWNvbkJhZGdlOiBudWxsLCBpY29uSGV4OiBudWxsIH07XG4gIGlmIChyb3cudXBsb2FkZWRfaWNvbj8ua2V5MjU2KSB7XG4gICAgcmV0dXJuIHsgLi4ubm9uZSwgaWNvbktpbmQ6ICd1cGxvYWRlZCcsIGljb25Vcmw6IGAvYXBpL3B1YmxpYy9wbHVnaW5zL2ljb25zLyR7ZW5jb2RlVVJJQ29tcG9uZW50KHJvdy51cGxvYWRlZF9pY29uLmtleTI1Nil9YCB9O1xuICB9XG4gIGNvbnN0IGN1cmF0ZWRBbGxvd2VkID0gcm93LnB1Ymxpc2hlcl90aWVyID09PSAnb2ZmaWNpYWwnIHx8IHJvdy5wdWJsaXNoZXJfdGllciA9PT0gJ3ZlcmlmaWVkJztcbiAgaWYgKGN1cmF0ZWRBbGxvd2VkICYmIHJvdy5pY29uPy5rZXkpIHtcbiAgICByZXR1cm4geyAuLi5ub25lLCBpY29uS2luZDogJ3ZlbmRvcicsIGljb25LZXk6IHJvdy5pY29uLmtleSwgaWNvbkJhZGdlOiByb3cuaWNvbi5iYWRnZSA/PyBudWxsIH07XG4gIH1cbiAgcmV0dXJuIHsgLi4ubm9uZSwgaWNvbktpbmQ6ICdtb25vZ3JhbScgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvTGlzdGluZ0NhcmQocm93OiBQdWJsaWNMaXN0aW5nUm93KTogRGlyZWN0b3J5TGlzdGluZ0NhcmQge1xuICBjb25zdCByYXRpbmdDb3VudCA9IG51bShyb3cucmF0aW5nX2NvdW50KTtcbiAgcmV0dXJuIHtcbiAgICBwdWJsaXNoZXI6IHsgaGFuZGxlOiByb3cucHVibGlzaGVyX2hhbmRsZSwgZGlzcGxheU5hbWU6IHJvdy5wdWJsaXNoZXJfZGlzcGxheV9uYW1lLCB0aWVyOiByb3cucHVibGlzaGVyX3RpZXIgfSxcbiAgICBuYW1lOiByb3cubmFtZSxcbiAgICBzdW1tYXJ5OiByb3cuc3VtbWFyeSA/PyAnJyxcbiAgICBjYXRlZ29yeTogcm93LmNhdGVnb3J5LFxuICAgIGtleXdvcmRzOiByb3cua2V5d29yZHMgPz8gW10sXG4gICAgbGF0ZXN0VmVyc2lvbjogcm93LmxhdGVzdF92ZXJzaW9uID8/ICcnLFxuICAgIGxpY2Vuc2U6IHJvdy5saWNlbnNlID8/ICcnLFxuICAgIC4uLnJlc29sdmVMaXN0aW5nSWNvbihyb3cpLFxuICAgIHJhdGluZzogcmF0aW5nQ291bnQgPiAwICYmIHJvdy5yYXRpbmdfYmF5ZXMgIT0gbnVsbCA/IHsgc2NvcmU6IE1hdGgucm91bmQobnVtKHJvdy5yYXRpbmdfYmF5ZXMpICogMTAwKSAvIDEwMCwgY291bnQ6IHJhdGluZ0NvdW50IH0gOiBudWxsLFxuICAgIGluc3RhbGxDb3VudDogbnVtKHJvdy5pbnN0YWxsX2NvdW50KSxcbiAgICBoZWFsdGhTY29yZTogcm93LmhlYWx0aF9zY29yZSA9PSBudWxsID8gbnVsbCA6IE1hdGgucm91bmQobnVtKHJvdy5oZWFsdGhfc2NvcmUpKSxcbiAgICB1cGRhdGVkQXQ6IGlzbyhyb3cudXBkYXRlZF9hdCksXG4gICAgc3RhdGU6IHJvdy5zdGF0ZSxcbiAgfTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlYXJjaFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIE5vcm1hbGl6ZSB0aGUgdXNlcidzIHF1ZXJ5OiBjb2xsYXBzZSB3aGl0ZXNwYWNlLCBjYXAgdGhlIGxlbmd0aC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVRdWVyeShxOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICByZXR1cm4gKHEgPz8gJycpLnJlcGxhY2UoL1xccysvZywgJyAnKS50cmltKCkuc2xpY2UoMCwgRElSRUNUT1JZX01BWF9RVUVSWV9MRU5HVEgpO1xufVxuXG4vKiogU2VhcmNoIHRlcm1zIGZvciBoaWdobGlnaHRpbmc6IHdvcmRzIG9mIOKJpSAyIGNoYXJhY3RlcnMsIHJlZ2V4LWVzY2FwZWQuICovXG5mdW5jdGlvbiBoaWdobGlnaHRUZXJtcyhxOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIHJldHVybiBbLi4ubmV3IFNldChxLnRvTG93ZXJDYXNlKCkuc3BsaXQoL1teYS16MC05Ll8tXSsvKS5maWx0ZXIoKHQpID0+IHQubGVuZ3RoID49IDIpKV1cbiAgICAubWFwKCh0KSA9PiB0LnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCAnXFxcXCQmJykpO1xufVxuXG4vKipcbiAqIFdyYXAgbWF0Y2hlZCB0ZXJtcyBpbiBgPG1hcms+YC4gVGhlIGZyb250ZW5kIHJlbmRlcnMgZXZlcnl0aGluZyBleGNlcHQgdGhlXG4gKiBgPG1hcms+YCBtYXJrZXJzIGFzIFRFWFQgKG5ldmVyIEhUTUwpLCBzbyB0aGUgc291cmNlIHRleHQgaXMgbm90IGVzY2FwZWQgaGVyZS5cbiAqIFJldHVybnMgdW5kZWZpbmVkIHdoZW4gbm90aGluZyBtYXRjaGVkICh0aGUgY2FyZCB0aGVuIHJlbmRlcnMgcGxhaW4gdGV4dCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoaWdobGlnaHRUZXh0KHRleHQ6IHN0cmluZywgcTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgdGVybXMgPSBoaWdobGlnaHRUZXJtcyhxKTtcbiAgaWYgKCF0ZXh0IHx8IHRlcm1zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgY29uc3QgcmUgPSBuZXcgUmVnRXhwKGAoJHt0ZXJtcy5qb2luKCd8Jyl9KWAsICdnaScpO1xuICBpZiAoIXJlLnRlc3QodGV4dCkpIHJldHVybiB1bmRlZmluZWQ7XG4gIHJldHVybiB0ZXh0LnJlcGxhY2UocmUsICc8bWFyaz4kMTwvbWFyaz4nKTtcbn1cblxuLyoqIE9wYXF1ZSBjdXJzb3I6IGFuIG9mZnNldCwgYmFzZTY0dXJsLWVuY29kZWQgc28gY2xpZW50cyBkb24ndCBkZXBlbmQgb24gaXQuICovXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlT2Zmc2V0Q3Vyc29yKG9mZnNldDogbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKEpTT04uc3RyaW5naWZ5KHsgbzogb2Zmc2V0IH0pKS50b1N0cmluZygnYmFzZTY0dXJsJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVPZmZzZXRDdXJzb3IoY3Vyc29yOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBudW1iZXIge1xuICBpZiAoIWN1cnNvcikgcmV0dXJuIDA7XG4gIHRyeSB7XG4gICAgY29uc3QgbyA9IChKU09OLnBhcnNlKEJ1ZmZlci5mcm9tKGN1cnNvciwgJ2Jhc2U2NHVybCcpLnRvU3RyaW5nKCd1dGY4JykpIGFzIHsgbz86IHVua25vd24gfSkubztcbiAgICByZXR1cm4gdHlwZW9mIG8gPT09ICdudW1iZXInICYmIE51bWJlci5pc0ludGVnZXIobykgJiYgbyA+PSAwICYmIG8gPD0gMTBfMDAwID8gbyA6IDA7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNsYW1wTGltaXQobGltaXQ6IG51bWJlciB8IHVuZGVmaW5lZCk6IG51bWJlciB7XG4gIGlmICghbGltaXQgfHwgIU51bWJlci5pc0Zpbml0ZShsaW1pdCkpIHJldHVybiBESVJFQ1RPUllfREVGQVVMVF9MSU1JVDtcbiAgcmV0dXJuIE1hdGgubWluKE1hdGgubWF4KE1hdGgudHJ1bmMobGltaXQpLCAxKSwgRElSRUNUT1JZX01BWF9MSU1JVCk7XG59XG5cbi8qKlxuICogVGhlIGZpbHRlcmVkIGJhc2Ugc2V0IGFzIGEgQ1RFIGJvZHkuIEV2ZXJ5IHNlYXJjaCwgZmFjZXQgYW5kIGNhdGVnb3J5IHF1ZXJ5XG4gKiByZWFkcyB0aHJvdWdoIHRoaXMsIHNvIHRoZXkgY2FuJ3QgZGlzYWdyZWUgYWJvdXQgd2hhdCdzIHZpc2libGUuXG4gKi9cbmZ1bmN0aW9uIGJhc2VRdWVyeShwYXJhbXM6IERpcmVjdG9yeVNlYXJjaFBhcmFtcywgcTogc3RyaW5nKTogU1FMIHtcbiAgY29uc3Qgd2hlcmU6IFNRTFtdID0gW3NxbGBsLnBhdXNlZF9hdCBJUyBOVUxMYF07XG4gIGlmIChxKSB7XG4gICAgLy8gRnVsbCB0ZXh0LCBPUiBhIGZ1enp5IG1hdGNoIGFnYWluc3QgdGhlIGJlc3QtbWF0Y2hpbmcgUEFSVCBvZiB0aGUgbmFtZVxuICAgIC8vICh3b3JkX3NpbWlsYXJpdHk6IFwidGVyYWZyb21cIiDihpIgdGVycmFmb3JtLXBsYW4gc2NvcmVzIDAuMzYsIHdoaWxlIHVucmVsYXRlZFxuICAgIC8vIHdvcmRzIHN0YXkg4omkIDAuMiDigJQgd2hvbGUtbmFtZSBzaW1pbGFyaXR5KCkgZGlsdXRlcyBhIGxvbmcgbmFtZSBiZWxvdyBhbnlcbiAgICAvLyB1c2VmdWwgdGhyZXNob2xkKS4gRXhwbGljaXQgZnVuY3Rpb24sIG5vdCB0aGUgYDwlYCBvcGVyYXRvciwgc28gdGhlIGN1dC1vZmZcbiAgICAvLyBkb2Vzbid0IGRlcGVuZCBvbiBhIHNlc3Npb24gR1VDIHBnYm91bmNlciBjYW4ndCBjYXJyeS4gQSBzZXEgc2NhbiBvdmVyIHRoZVxuICAgIC8vIHB1YmxpYyBsaXN0aW5ncyAodGhvdXNhbmRzIG9mIHJvd3MgYXQgbW9zdCkgaXMgZmluZS5cbiAgICB3aGVyZS5wdXNoKHNxbGAobC5zZWFyY2hfdmVjdG9yIEBAIHdlYnNlYXJjaF90b190c3F1ZXJ5KCdlbmdsaXNoJywgJHtxfSkgT1Igd29yZF9zaW1pbGFyaXR5KCR7cX0sIGwubmFtZSkgPj0gJHtGVVpaWV9OQU1FX1RIUkVTSE9MRH0gT1IgbC5uYW1lIElMSUtFICR7YCUke3EucmVwbGFjZSgvW1xcXFwlX10vZywgJ1xcXFwkJicpfSVgfSlgKTtcbiAgfVxuICBpZiAocGFyYW1zLmNhdGVnb3J5KSB3aGVyZS5wdXNoKHNxbGBsLmNhdGVnb3J5ID0gJHtwYXJhbXMuY2F0ZWdvcnl9YCk7XG4gIGlmIChwYXJhbXMudGllcikgd2hlcmUucHVzaChzcWxgbC5wdWJsaXNoZXJfdGllciA9ICR7cGFyYW1zLnRpZXJ9YCk7XG4gIGlmIChwYXJhbXMubGljZW5zZSkgd2hlcmUucHVzaChzcWxgbC5saWNlbnNlID0gJHtwYXJhbXMubGljZW5zZX1gKTtcbiAgaWYgKHBhcmFtcy5jb21wdXRlVHlwZSkgd2hlcmUucHVzaChzcWxgdi5jb21wdXRlX3R5cGUgPSAke3BhcmFtcy5jb21wdXRlVHlwZX1gKTtcbiAgaWYgKHBhcmFtcy5uZWVkc1NlY3JldHMgIT09IHVuZGVmaW5lZCkge1xuICAgIHdoZXJlLnB1c2gocGFyYW1zLm5lZWRzU2VjcmV0c1xuICAgICAgPyBzcWxganNvbmJfYXJyYXlfbGVuZ3RoKENPQUxFU0NFKHYuc2VjcmV0cywgJ1tdJzo6anNvbmIpKSA+IDBgXG4gICAgICA6IHNxbGBqc29uYl9hcnJheV9sZW5ndGgoQ09BTEVTQ0Uodi5zZWNyZXRzLCAnW10nOjpqc29uYikpID0gMGApO1xuICB9XG4gIGlmIChwYXJhbXMubWluUmF0aW5nICE9PSB1bmRlZmluZWQgJiYgTnVtYmVyLmlzRmluaXRlKHBhcmFtcy5taW5SYXRpbmcpKSB7XG4gICAgd2hlcmUucHVzaChzcWxgbC5yYXRpbmdfYmF5ZXMgPj0gJHtwYXJhbXMubWluUmF0aW5nfWApO1xuICB9XG4gIGNvbnN0IHJhbmsgPSBxXG4gICAgPyBzcWxgKHRzX3JhbmsobC5zZWFyY2hfdmVjdG9yLCB3ZWJzZWFyY2hfdG9fdHNxdWVyeSgnZW5nbGlzaCcsICR7cX0pKSArIHdvcmRfc2ltaWxhcml0eSgke3F9LCBsLm5hbWUpKWBcbiAgICA6IHNxbGAwOjpyZWFsYDtcbiAgcmV0dXJuIHNxbGBcbiAgICBTRUxFQ1QgbC5pZCwgbC5wdWJsaXNoZXJfaGFuZGxlLCBsLnB1Ymxpc2hlcl9kaXNwbGF5X25hbWUsIGwucHVibGlzaGVyX3RpZXIsIGwubmFtZSwgbC5jYXRlZ29yeSxcbiAgICAgICAgICAgbC5zdW1tYXJ5LCBsLmRlc2NyaXB0aW9uLCBsLnJlYWRtZV9odG1sLCBsLmxpY2Vuc2UsIGwuaG9tZXBhZ2VfdXJsLCBsLnNvdXJjZV91cmwsIGwuaWNvbixcbiAgICAgICAgICAgbC51cGxvYWRlZF9pY29uLCBsLmtleXdvcmRzLCBsLmxhdGVzdF92ZXJzaW9uLCBsLnVwZGF0ZWRfYXQsIGwucmF0aW5nX2JheWVzLCBsLnJhdGluZ19jb3VudCxcbiAgICAgICAgICAgbC5yYXRpbmdfZGlzdCwgbC5pbnN0YWxsX2NvdW50LCBsLmFjdGl2ZV9vcmdfY291bnQsIGwuaGVhbHRoX3Njb3JlLCBsLnN0YXRlLFxuICAgICAgICAgICB2LmNvbXB1dGVfdHlwZSxcbiAgICAgICAgICAgKGpzb25iX2FycmF5X2xlbmd0aChDT0FMRVNDRSh2LnNlY3JldHMsICdbXSc6Ompzb25iKSkgPiAwKSBBUyBuZWVkc19zZWNyZXRzLFxuICAgICAgICAgICAke3Jhbmt9IEFTIHJhbmtcbiAgICAgIEZST00gcHVibGljX2xpc3RpbmdzIGxcbiAgICAgIExFRlQgSk9JTiBMQVRFUkFMIChcbiAgICAgICAgU0VMRUNUIHB2LmNvbXB1dGVfdHlwZSwgcHYuc2VjcmV0c1xuICAgICAgICAgIEZST00gcHVibGljX2xpc3RlZF92ZXJzaW9ucyBwdlxuICAgICAgICAgV0hFUkUgcHYubGlzdGluZ19pZCA9IGwuaWQgQU5EIHB2LnZlcnNpb24gPSBsLmxhdGVzdF92ZXJzaW9uIEFORCBOT1QgcHYueWFua2VkXG4gICAgICAgICBMSU1JVCAxXG4gICAgICApIHYgT04gdHJ1ZVxuICAgICBXSEVSRSAke3NxbC5qb2luKHdoZXJlLCBzcWxgIEFORCBgKX1gO1xufVxuXG5mdW5jdGlvbiBvcmRlckJ5KHNvcnQ6IERpcmVjdG9yeVNvcnQsIGhhc1F1ZXJ5OiBib29sZWFuKTogU1FMIHtcbiAgc3dpdGNoIChzb3J0ID09PSAncmVsZXZhbmNlJyAmJiAhaGFzUXVlcnkgPyAndXBkYXRlZCcgOiBzb3J0KSB7XG4gICAgY2FzZSAncmVsZXZhbmNlJzpcbiAgICAgIC8vIFRleHQgcmVsZXZhbmNlIGZpcnN0LCBudWRnZWQgYnkgcmF0aW5nIGFuZCBhZG9wdGlvbiBzbyBlcXVhbCBtYXRjaGVzXG4gICAgICAvLyBmYXZvdXIgcHJvdmVuIHBsdWdpbnMuXG4gICAgICByZXR1cm4gc3FsYChyYW5rICogKDEgKyBDT0FMRVNDRShyYXRpbmdfYmF5ZXMsIDApIC8gMTApICsgbG4oMSArIGluc3RhbGxfY291bnQpIC8gMjApIERFU0MsIG5hbWUgQVNDYDtcbiAgICBjYXNlICdyYXRpbmcnOlxuICAgICAgcmV0dXJuIHNxbGByYXRpbmdfYmF5ZXMgREVTQyBOVUxMUyBMQVNULCByYXRpbmdfY291bnQgREVTQywgbmFtZSBBU0NgO1xuICAgIGNhc2UgJ2luc3RhbGxzJzpcbiAgICAgIHJldHVybiBzcWxgaW5zdGFsbF9jb3VudCBERVNDLCBuYW1lIEFTQ2A7XG4gICAgY2FzZSAnbmFtZSc6XG4gICAgICByZXR1cm4gc3FsYG5hbWUgQVNDLCBwdWJsaXNoZXJfaGFuZGxlIEFTQ2A7XG4gICAgY2FzZSAnaGVhbHRoJzpcbiAgICAgIHJldHVybiBzcWxgaGVhbHRoX3Njb3JlIERFU0MgTlVMTFMgTEFTVCwgaW5zdGFsbF9jb3VudCBERVNDLCBuYW1lIEFTQ2A7XG4gICAgY2FzZSAndXBkYXRlZCc6XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzcWxgdXBkYXRlZF9hdCBERVNDLCBuYW1lIEFTQ2A7XG4gIH1cbn1cblxuLyoqIFNlYXJjaCB0aGUgZGlyZWN0b3J5OiBvbmUgcGFnZSBvZiBjYXJkcywgZmFjZXQgY291bnRzLCB0b3RhbCBhbmQgbmV4dCBjdXJzb3IuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VhcmNoUHVibGljTGlzdGluZ3MocGFyYW1zOiBEaXJlY3RvcnlTZWFyY2hQYXJhbXMpOiBQcm9taXNlPERpcmVjdG9yeVNlYXJjaFJlc3VsdD4ge1xuICBjb25zdCBkYiA9IGdldFB1YmxpY1JlYWRlckRiKCk7XG4gIGNvbnN0IHEgPSBub3JtYWxpemVRdWVyeShwYXJhbXMucSk7XG4gIGNvbnN0IGxpbWl0ID0gY2xhbXBMaW1pdChwYXJhbXMubGltaXQpO1xuICBjb25zdCBvZmZzZXQgPSBkZWNvZGVPZmZzZXRDdXJzb3IocGFyYW1zLmN1cnNvcik7XG4gIGNvbnN0IHNvcnQgPSBwYXJhbXMuc29ydCAmJiBESVJFQ1RPUllfU09SVFMuaW5jbHVkZXMocGFyYW1zLnNvcnQpID8gcGFyYW1zLnNvcnQgOiAncmVsZXZhbmNlJztcbiAgY29uc3QgYmFzZSA9IGJhc2VRdWVyeShwYXJhbXMsIHEpO1xuXG4gIGNvbnN0IFtwYWdlUmVzLCBmYWNldFJlc10gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgZGIuZXhlY3V0ZShzcWxgXG4gICAgICBXSVRIIGJhc2UgQVMgKCR7YmFzZX0pXG4gICAgICBTRUxFQ1QgYmFzZS4qLCBDT1VOVCgqKSBPVkVSICgpIEFTIHRvdGFsXG4gICAgICAgIEZST00gYmFzZVxuICAgICAgIE9SREVSIEJZICR7b3JkZXJCeShzb3J0LCBxICE9PSAnJyl9XG4gICAgICAgTElNSVQgJHtsaW1pdH0gT0ZGU0VUICR7b2Zmc2V0fWApLFxuICAgIGRiLmV4ZWN1dGUoc3FsYFxuICAgICAgV0lUSCBiYXNlIEFTICgke2Jhc2V9KVxuICAgICAgU0VMRUNUIGNhdGVnb3J5LCBwdWJsaXNoZXJfdGllciwgbGljZW5zZSwgY29tcHV0ZV90eXBlLCBuZWVkc19zZWNyZXRzLFxuICAgICAgICAgICAgIEdST1VQSU5HKGNhdGVnb3J5KSBBUyBnX2NhdGVnb3J5LCBHUk9VUElORyhwdWJsaXNoZXJfdGllcikgQVMgZ190aWVyLFxuICAgICAgICAgICAgIEdST1VQSU5HKGxpY2Vuc2UpIEFTIGdfbGljZW5zZSwgR1JPVVBJTkcoY29tcHV0ZV90eXBlKSBBUyBnX2NvbXB1dGUsXG4gICAgICAgICAgICAgR1JPVVBJTkcobmVlZHNfc2VjcmV0cykgQVMgZ19zZWNyZXRzLFxuICAgICAgICAgICAgIENPVU5UKCopIEFTIG5cbiAgICAgICAgRlJPTSBiYXNlXG4gICAgICAgR1JPVVAgQlkgR1JPVVBJTkcgU0VUUyAoKGNhdGVnb3J5KSwgKHB1Ymxpc2hlcl90aWVyKSwgKGxpY2Vuc2UpLCAoY29tcHV0ZV90eXBlKSwgKG5lZWRzX3NlY3JldHMpKWApLFxuICBdKTtcblxuICBjb25zdCBwYWdlID0gcmVzdWx0Um93czxQdWJsaWNMaXN0aW5nUm93ICYgeyB0b3RhbDogbnVtYmVyIHwgc3RyaW5nIH0+KHBhZ2VSZXMpO1xuICBjb25zdCB0b3RhbCA9IHBhZ2UubGVuZ3RoID4gMCA/IG51bShwYWdlWzBdIS50b3RhbCkgOiAwO1xuICBjb25zdCBpdGVtcyA9IHBhZ2UubWFwKChyb3cpID0+IHtcbiAgICBjb25zdCBjYXJkID0gdG9MaXN0aW5nQ2FyZChyb3cpO1xuICAgIGlmIChxKSB7XG4gICAgICBjb25zdCBoaWdobGlnaHQgPSB7IG5hbWU6IGhpZ2hsaWdodFRleHQoY2FyZC5uYW1lLCBxKSwgc3VtbWFyeTogaGlnaGxpZ2h0VGV4dChjYXJkLnN1bW1hcnksIHEpIH07XG4gICAgICBpZiAoaGlnaGxpZ2h0Lm5hbWUgfHwgaGlnaGxpZ2h0LnN1bW1hcnkpIGNhcmQuaGlnaGxpZ2h0ID0gaGlnaGxpZ2h0O1xuICAgIH1cbiAgICByZXR1cm4gY2FyZDtcbiAgfSk7XG5cbiAgY29uc3QgZmFjZXRzOiBEaXJlY3RvcnlTZWFyY2hSZXN1bHRbJ2ZhY2V0cyddID0ge1xuICAgIGNhdGVnb3J5OiB7fSwgdGllcjoge30sIGxpY2Vuc2U6IHt9LCBjb21wdXRlVHlwZToge30sIG5lZWRzU2VjcmV0czogeyB0cnVlOiAwLCBmYWxzZTogMCB9LFxuICB9O1xuICB0eXBlIEZhY2V0Um93ID0ge1xuICAgIGNhdGVnb3J5OiBzdHJpbmcgfCBudWxsO1xuICAgIHB1Ymxpc2hlcl90aWVyOiBzdHJpbmcgfCBudWxsO1xuICAgIGxpY2Vuc2U6IHN0cmluZyB8IG51bGw7XG4gICAgY29tcHV0ZV90eXBlOiBzdHJpbmcgfCBudWxsO1xuICAgIG5lZWRzX3NlY3JldHM6IGJvb2xlYW4gfCBudWxsO1xuICAgIGdfY2F0ZWdvcnk6IG51bWJlcjtcbiAgICBnX3RpZXI6IG51bWJlcjtcbiAgICBnX2xpY2Vuc2U6IG51bWJlcjtcbiAgICBnX2NvbXB1dGU6IG51bWJlcjtcbiAgICBnX3NlY3JldHM6IG51bWJlcjtcbiAgICBuOiBudW1iZXIgfCBzdHJpbmc7XG4gIH07XG4gIGZvciAoY29uc3QgciBvZiByZXN1bHRSb3dzPEZhY2V0Um93PihmYWNldFJlcykpIHtcbiAgICBjb25zdCBuID0gbnVtKHIubik7XG4gICAgaWYgKE51bWJlcihyLmdfY2F0ZWdvcnkpID09PSAwICYmIHIuY2F0ZWdvcnkpIGZhY2V0cy5jYXRlZ29yeVtyLmNhdGVnb3J5XSA9IG47XG4gICAgZWxzZSBpZiAoTnVtYmVyKHIuZ190aWVyKSA9PT0gMCAmJiByLnB1Ymxpc2hlcl90aWVyKSBmYWNldHMudGllcltyLnB1Ymxpc2hlcl90aWVyXSA9IG47XG4gICAgZWxzZSBpZiAoTnVtYmVyKHIuZ19saWNlbnNlKSA9PT0gMCAmJiByLmxpY2Vuc2UpIGZhY2V0cy5saWNlbnNlW3IubGljZW5zZV0gPSBuO1xuICAgIGVsc2UgaWYgKE51bWJlcihyLmdfY29tcHV0ZSkgPT09IDAgJiYgci5jb21wdXRlX3R5cGUpIGZhY2V0cy5jb21wdXRlVHlwZVtyLmNvbXB1dGVfdHlwZV0gPSBuO1xuICAgIGVsc2UgaWYgKE51bWJlcihyLmdfc2VjcmV0cykgPT09IDAgJiYgci5uZWVkc19zZWNyZXRzICE9PSBudWxsKSBmYWNldHMubmVlZHNTZWNyZXRzW3IubmVlZHNfc2VjcmV0cyA/ICd0cnVlJyA6ICdmYWxzZSddID0gbjtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgaXRlbXMsXG4gICAgZmFjZXRzLFxuICAgIHRvdGFsLFxuICAgIG5leHRDdXJzb3I6IG9mZnNldCArIGl0ZW1zLmxlbmd0aCA8IHRvdGFsID8gZW5jb2RlT2Zmc2V0Q3Vyc29yKG9mZnNldCArIGl0ZW1zLmxlbmd0aCkgOiBudWxsLFxuICB9O1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2F0ZWdvcmllc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIEV2ZXJ5IGNhdGVnb3J5IHdpdGggaXRzIGxpdmUgY291bnQgYW5kIGl0cyB0b3AgbGlzdGluZ3MgKGJ5IHJhdGluZywgdGhlbiBpbnN0YWxscykuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGlzdFB1YmxpY0NhdGVnb3JpZXModG9wUGVyQ2F0ZWdvcnkgPSAzKTogUHJvbWlzZTxEaXJlY3RvcnlDYXRlZ29yeVN1bW1hcnlbXT4ge1xuICBjb25zdCBkYiA9IGdldFB1YmxpY1JlYWRlckRiKCk7XG4gIGNvbnN0IHJlcyA9IGF3YWl0IGRiLmV4ZWN1dGUoc3FsYFxuICAgIFdJVEggcmFua2VkIEFTIChcbiAgICAgIFNFTEVDVCBsLiosXG4gICAgICAgICAgICAgUk9XX05VTUJFUigpIE9WRVIgKFBBUlRJVElPTiBCWSBsLmNhdGVnb3J5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9SREVSIEJZIGwucmF0aW5nX2JheWVzIERFU0MgTlVMTFMgTEFTVCwgbC5pbnN0YWxsX2NvdW50IERFU0MsIGwubmFtZSBBU0MpIEFTIHJuLFxuICAgICAgICAgICAgIENPVU5UKCopIE9WRVIgKFBBUlRJVElPTiBCWSBsLmNhdGVnb3J5KSBBUyBjYXRlZ29yeV9jb3VudFxuICAgICAgICBGUk9NIHB1YmxpY19saXN0aW5ncyBsXG4gICAgICAgV0hFUkUgbC5wYXVzZWRfYXQgSVMgTlVMTFxuICAgIClcbiAgICBTRUxFQ1QgKiBGUk9NIHJhbmtlZCBXSEVSRSBybiA8PSAke01hdGgubWF4KDAsIE1hdGgubWluKHRvcFBlckNhdGVnb3J5LCAxMCkpfSBPUkRFUiBCWSBjYXRlZ29yeSBBU0MsIHJuIEFTQ2ApO1xuXG4gIGNvbnN0IGJ5Q2F0ZWdvcnkgPSBuZXcgTWFwPHN0cmluZywgRGlyZWN0b3J5Q2F0ZWdvcnlTdW1tYXJ5PigpO1xuICBmb3IgKGNvbnN0IHJvdyBvZiByZXN1bHRSb3dzPFB1YmxpY0xpc3RpbmdSb3cgJiB7IGNhdGVnb3J5X2NvdW50OiBudW1iZXIgfCBzdHJpbmcgfT4ocmVzKSkge1xuICAgIGxldCBzdW1tYXJ5ID0gYnlDYXRlZ29yeS5nZXQocm93LmNhdGVnb3J5KTtcbiAgICBpZiAoIXN1bW1hcnkpIHtcbiAgICAgIHN1bW1hcnkgPSB7IGlkOiByb3cuY2F0ZWdvcnksIGNvdW50OiBudW0ocm93LmNhdGVnb3J5X2NvdW50KSwgdG9wOiBbXSB9O1xuICAgICAgYnlDYXRlZ29yeS5zZXQocm93LmNhdGVnb3J5LCBzdW1tYXJ5KTtcbiAgICB9XG4gICAgc3VtbWFyeS50b3AucHVzaCh0b0xpc3RpbmdDYXJkKHJvdykpO1xuICB9XG4gIHJldHVybiBbLi4uYnlDYXRlZ29yeS52YWx1ZXMoKV07XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBPbmUgbGlzdGluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxudHlwZSBWZXJzaW9uUm93ID0ge1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIHB1Ymxpc2hlZF9hdDogRGF0ZSB8IHN0cmluZztcbiAgYnJlYWtpbmc6IGJvb2xlYW47XG4gIGRlcHJlY2F0ZWRfYXQ6IERhdGUgfCBzdHJpbmcgfCBudWxsO1xuICBkZXByZWNhdGlvbl9tZXNzYWdlOiBzdHJpbmcgfCBudWxsO1xuICB5YW5rZWQ6IGJvb2xlYW47XG4gIGNoYW5nZWxvZzogc3RyaW5nIHwgbnVsbDtcbiAgdnVsbl9jcml0aWNhbDogbnVtYmVyIHwgbnVsbDtcbiAgdnVsbl9oaWdoOiBudW1iZXIgfCBudWxsO1xuICB2dWxuX2NyaXRpY2FsX2ZpeGFibGU6IG51bWJlciB8IG51bGw7XG4gIHZ1bG5faGlnaF9maXhhYmxlOiBudW1iZXIgfCBudWxsO1xuICBzY2FubmVkX2F0OiBEYXRlIHwgc3RyaW5nIHwgbnVsbDtcbiAgc2Nhbl9mbGFnZ2VkX2F0OiBEYXRlIHwgc3RyaW5nIHwgbnVsbDtcbiAgaW1hZ2VfZGlnZXN0OiBzdHJpbmcgfCBudWxsO1xuICBpbWFnZV9zb3VyY2U6IHN0cmluZyB8IG51bGw7XG4gIHBsdWdpbl90eXBlOiBzdHJpbmcgfCBudWxsO1xuICBjb21wdXRlX3R5cGU6IHN0cmluZyB8IG51bGw7XG4gIHNlY3JldHM6IHsgbmFtZTogc3RyaW5nOyByZXF1aXJlZDogYm9vbGVhbjsgZGVzY3JpcHRpb24/OiBzdHJpbmcgfVtdIHwgbnVsbDtcbiAgcmVxdWlyZWRfbWV0YWRhdGE6IHN0cmluZ1tdIHwgbnVsbDtcbiAgcmVxdWlyZWRfdmFyczogc3RyaW5nW10gfCBudWxsO1xuICBuZXR3b3JrX2VncmVzczogc3RyaW5nW10gfCBudWxsO1xuICByZWFkbWVfaHRtbDogc3RyaW5nIHwgbnVsbDtcbn07XG5cbnR5cGUgQWR2aXNvcnlSb3cgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHNldmVyaXR5OiBzdHJpbmc7XG4gIHN1bW1hcnk6IHN0cmluZztcbiAgYWZmZWN0ZWRfcmFuZ2U6IHN0cmluZztcbiAgZml4ZWRfdmVyc2lvbjogc3RyaW5nIHwgbnVsbDtcbiAgcHVibGlzaGVkX2F0OiBEYXRlIHwgc3RyaW5nIHwgbnVsbDtcbiAgZGV0YWlsc19odG1sOiBzdHJpbmcgfCBudWxsO1xuICBjdmVfaWRzOiBzdHJpbmdbXSB8IG51bGw7XG59O1xuXG4vKipcbiAqIE9uZSBsaXN0aW5nJ3MgcGFnZSBkYXRhLCBvciBudWxsIHdoZW4gaXQgaXNuJ3QgcHVibGljICh1bmtub3duLCBzdXNwZW5kZWQsXG4gKiB0cmFuc2ZlcnJlZCwgcGF1c2VkIGJ5IGl0cyBwdWJsaXNoZXIg4oCUIG9yIGl0cyBwdWJsaXNoZXIgaXMgc3VzcGVuZGVkKS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFB1YmxpY0xpc3RpbmcocHVibGlzaGVySGFuZGxlOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IFByb21pc2U8RGlyZWN0b3J5TGlzdGluZ0RldGFpbCB8IG51bGw+IHtcbiAgY29uc3QgZGIgPSBnZXRQdWJsaWNSZWFkZXJEYigpO1xuICBjb25zdCBsaXN0aW5nUmVzID0gYXdhaXQgZGIuZXhlY3V0ZShzcWxgXG4gICAgU0VMRUNUICogRlJPTSBwdWJsaWNfbGlzdGluZ3NcbiAgICAgV0hFUkUgcHVibGlzaGVyX2hhbmRsZSA9ICR7cHVibGlzaGVySGFuZGxlfSBBTkQgbmFtZSA9ICR7bmFtZX0gQU5EIHBhdXNlZF9hdCBJUyBOVUxMXG4gICAgIExJTUlUIDFgKTtcbiAgY29uc3Qgcm93ID0gcmVzdWx0Um93czxQdWJsaWNMaXN0aW5nUm93PihsaXN0aW5nUmVzKVswXTtcbiAgaWYgKCFyb3cpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IFt2ZXJzaW9uUmVzLCBhZHZpc29yeVJlc10gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgZGIuZXhlY3V0ZShzcWxgU0VMRUNUICogRlJPTSBwdWJsaWNfbGlzdGVkX3ZlcnNpb25zIFdIRVJFIGxpc3RpbmdfaWQgPSAke3Jvdy5pZH1gKSxcbiAgICBkYi5leGVjdXRlKHNxbGBTRUxFQ1QgKiBGUk9NIHB1YmxpY19hZHZpc29yaWVzIFdIRVJFIGxpc3RpbmdfaWQgPSAke3Jvdy5pZH0gT1JERVIgQlkgcHVibGlzaGVkX2F0IERFU0NgKSxcbiAgXSk7XG4gIGNvbnN0IHZlcnNpb25Sb3dzID0gcmVzdWx0Um93czxWZXJzaW9uUm93Pih2ZXJzaW9uUmVzKS5zb3J0KChhLCBiKSA9PiBjb21wYXJlU2VtdmVyKGIudmVyc2lvbiwgYS52ZXJzaW9uKSk7XG4gIGNvbnN0IGFkdmlzb3J5Um93cyA9IHJlc3VsdFJvd3M8QWR2aXNvcnlSb3c+KGFkdmlzb3J5UmVzKTtcbiAgLy8gVGhlIHZlcnNpb24gdGhlIHBhZ2UgZGVzY3JpYmVzOiB0aGUgbGlzdGluZydzIGxhdGVzdCwgZWxzZSB0aGUgbmV3ZXN0IG5vbi15YW5rZWQgb25lLlxuICBjb25zdCBjdXJyZW50ID0gdmVyc2lvblJvd3MuZmluZCgodikgPT4gdi52ZXJzaW9uID09PSByb3cubGF0ZXN0X3ZlcnNpb24gJiYgIXYueWFua2VkKVxuICAgID8/IHZlcnNpb25Sb3dzLmZpbmQoKHYpID0+ICF2LnlhbmtlZClcbiAgICA/PyBudWxsO1xuXG4gIGNvbnN0IGRpc3QgPSByb3cucmF0aW5nX2Rpc3QgPz8gbnVsbDtcbiAgY29uc3QgY2FyZCA9IHRvTGlzdGluZ0NhcmQocm93KTtcbiAgcmV0dXJuIHtcbiAgICAuLi5jYXJkLFxuICAgIHJlYWRtZUh0bWw6IHJvdy5yZWFkbWVfaHRtbCA/PyBjdXJyZW50Py5yZWFkbWVfaHRtbCA/PyBudWxsLFxuICAgIGRlc2NyaXB0aW9uOiByb3cuZGVzY3JpcHRpb24gPz8gJycsXG4gICAgaG9tZXBhZ2VVcmw6IHJvdy5ob21lcGFnZV91cmwsXG4gICAgc291cmNlVXJsOiByb3cuc291cmNlX3VybCxcbiAgICB2ZXJzaW9uczogdmVyc2lvblJvd3MubWFwKCh2KSA9PiAoe1xuICAgICAgdmVyc2lvbjogdi52ZXJzaW9uLFxuICAgICAgcHVibGlzaGVkQXQ6IGlzbyh2LnB1Ymxpc2hlZF9hdCksXG4gICAgICBicmVha2luZzogdi5icmVha2luZyxcbiAgICAgIGRlcHJlY2F0ZWQ6IHYuZGVwcmVjYXRlZF9hdCAhPSBudWxsLFxuICAgICAgZGVwcmVjYXRpb25NZXNzYWdlOiB2LmRlcHJlY2F0aW9uX21lc3NhZ2UsXG4gICAgICB5YW5rZWQ6IHYueWFua2VkLFxuICAgICAgY2hhbmdlbG9nOiB2LmNoYW5nZWxvZyxcbiAgICAgIHZ1bG5Dcml0aWNhbDogdi52dWxuX2NyaXRpY2FsLFxuICAgICAgdnVsbkhpZ2g6IHYudnVsbl9oaWdoLFxuICAgICAgdnVsbkNyaXRpY2FsRml4YWJsZTogdi52dWxuX2NyaXRpY2FsX2ZpeGFibGUgPz8gbnVsbCxcbiAgICAgIHZ1bG5IaWdoRml4YWJsZTogdi52dWxuX2hpZ2hfZml4YWJsZSA/PyBudWxsLFxuICAgICAgc2Nhbm5lZEF0OiB2LnNjYW5uZWRfYXQgPyBpc28odi5zY2FubmVkX2F0KSA6IG51bGwsXG4gICAgICBzY2FuRmxhZ2dlZEF0OiB2LnNjYW5fZmxhZ2dlZF9hdCA/IGlzbyh2LnNjYW5fZmxhZ2dlZF9hdCkgOiBudWxsLFxuICAgICAgYWR2aXNvcnlJZHM6IGFkdmlzb3J5Um93cy5maWx0ZXIoKGEpID0+IGFkdmlzb3J5UmFuZ2VDb3ZlcnMoYS5hZmZlY3RlZF9yYW5nZSwgdi52ZXJzaW9uKSkubWFwKChhKSA9PiBhLmlkKSxcbiAgICB9KSksXG4gICAgY29uZmlndXJhdGlvbjoge1xuICAgICAgc2VjcmV0czogKGN1cnJlbnQ/LnNlY3JldHMgPz8gW10pLm1hcCgocykgPT4gKHsgbmFtZTogcy5uYW1lLCByZXF1aXJlZDogcy5yZXF1aXJlZCwgZGVzY3JpcHRpb246IHMuZGVzY3JpcHRpb24gPz8gJycgfSkpLFxuICAgICAgcmVxdWlyZWRNZXRhZGF0YTogY3VycmVudD8ucmVxdWlyZWRfbWV0YWRhdGEgPz8gW10sXG4gICAgICByZXF1aXJlZFZhcnM6IGN1cnJlbnQ/LnJlcXVpcmVkX3ZhcnMgPz8gW10sXG4gICAgICBjb21wdXRlVHlwZTogY3VycmVudD8uY29tcHV0ZV90eXBlID8/ICcnLFxuICAgICAgcHJpbWFyeU91dHB1dERpcmVjdG9yeTogbnVsbCxcbiAgICAgIG5ldHdvcmtFZ3Jlc3M6IGN1cnJlbnQ/Lm5ldHdvcmtfZWdyZXNzID8/IFtdLFxuICAgICAgcGx1Z2luVHlwZTogY3VycmVudD8ucGx1Z2luX3R5cGUgPz8gJycsXG4gICAgfSxcbiAgICBzdXBwbHlDaGFpbjoge1xuICAgICAgLy8gQSBsaXN0ZWQgdmVyc2lvbiBleGlzdHMgb25seSBhZnRlciB0aGUgcGxhdGZvcm0gcmUtc2lnbmVkIGl0IGluIHB1YmxpYy8qLlxuICAgICAgc2lnbmVkOiBjdXJyZW50Py5pbWFnZV9kaWdlc3QgIT0gbnVsbCxcbiAgICAgIGRpZ2VzdDogY3VycmVudD8uaW1hZ2VfZGlnZXN0ID8/IG51bGwsXG4gICAgICBpbWFnZVNvdXJjZTogY3VycmVudD8uaW1hZ2Vfc291cmNlID8/IG51bGwsXG4gICAgICBzY2FubmVkQXQ6IGN1cnJlbnQ/LnNjYW5uZWRfYXQgPyBpc28oY3VycmVudC5zY2FubmVkX2F0KSA6IG51bGwsXG4gICAgICB2dWxuQ3JpdGljYWw6IGN1cnJlbnQ/LnZ1bG5fY3JpdGljYWwgPz8gbnVsbCxcbiAgICAgIHZ1bG5IaWdoOiBjdXJyZW50Py52dWxuX2hpZ2ggPz8gbnVsbCxcbiAgICAgIHZ1bG5Dcml0aWNhbEZpeGFibGU6IGN1cnJlbnQ/LnZ1bG5fY3JpdGljYWxfZml4YWJsZSA/PyBudWxsLFxuICAgICAgdnVsbkhpZ2hGaXhhYmxlOiBjdXJyZW50Py52dWxuX2hpZ2hfZml4YWJsZSA/PyBudWxsLFxuICAgICAgc2NhbkZsYWdnZWRBdDogY3VycmVudD8uc2Nhbl9mbGFnZ2VkX2F0ID8gaXNvKGN1cnJlbnQuc2Nhbl9mbGFnZ2VkX2F0KSA6IG51bGwsXG4gICAgICBzYm9tVXJsOiBjdXJyZW50Py5pbWFnZV9kaWdlc3RcbiAgICAgICAgPyBgL2FwaS9wdWJsaWMvcGx1Z2lucy8ke2VuY29kZVVSSUNvbXBvbmVudChyb3cucHVibGlzaGVyX2hhbmRsZSl9LyR7ZW5jb2RlVVJJQ29tcG9uZW50KHJvdy5uYW1lKX0vdmVyc2lvbnMvJHtlbmNvZGVVUklDb21wb25lbnQoY3VycmVudC52ZXJzaW9uKX0vc2JvbWBcbiAgICAgICAgOiBudWxsLFxuICAgIH0sXG4gICAgYWR2aXNvcmllczogYWR2aXNvcnlSb3dzLm1hcCgoYSkgPT4gKHtcbiAgICAgIGlkOiBhLmlkLFxuICAgICAgc2V2ZXJpdHk6IGEuc2V2ZXJpdHksXG4gICAgICBzdW1tYXJ5OiBhLnN1bW1hcnksXG4gICAgICBhZmZlY3RlZFJhbmdlOiBhLmFmZmVjdGVkX3JhbmdlLFxuICAgICAgZml4ZWRWZXJzaW9uOiBhLmZpeGVkX3ZlcnNpb24sXG4gICAgICBwdWJsaXNoZWRBdDogaXNvKGEucHVibGlzaGVkX2F0KSxcbiAgICAgIGRldGFpbHNIdG1sOiBhLmRldGFpbHNfaHRtbCxcbiAgICAgIGN2ZUlkczogYS5jdmVfaWRzID8/IFtdLFxuICAgIH0pKSxcbiAgICByYXRpbmdEaXN0cmlidXRpb246IGRpc3RcbiAgICAgID8geyAxOiBudW0oZGlzdFsnMSddKSwgMjogbnVtKGRpc3RbJzInXSksIDM6IG51bShkaXN0WyczJ10pLCA0OiBudW0oZGlzdFsnNCddKSwgNTogbnVtKGRpc3RbJzUnXSkgfVxuICAgICAgOiBudWxsLFxuICAgIHJlY2VudFJhdGluZzogcm93LnJlY2VudF9yYXRpbmcgPT0gbnVsbCA/IG51bGwgOiBNYXRoLnJvdW5kKG51bShyb3cucmVjZW50X3JhdGluZykgKiAxMDApIC8gMTAwLFxuICAgIGFjdGl2ZU9yZ0NvdW50OiByb3cuYWN0aXZlX29yZ19jb3VudCA9PSBudWxsID8gbnVsbCA6IG51bShyb3cuYWN0aXZlX29yZ19jb3VudCksXG4gICAgaGVhbHRoQnJlYWtkb3duOiByb3cuaGVhbHRoX2JyZWFrZG93biA/PyBudWxsLFxuICAgIHN1Y2Nlc3NSYXRlMzBkOiByb3cuc3VjY2Vzc19yYXRlXzMwZCA9PSBudWxsID8gbnVsbCA6IE1hdGgucm91bmQobnVtKHJvdy5zdWNjZXNzX3JhdGVfMzBkKSAqIDEwMDApIC8gMTAwMCxcbiAgfTtcbn1cblxuLyoqIE9uZSBsaXN0ZWQgdmVyc2lvbidzIHB1YmxpYyBpbWFnZSBpZGVudGl0eSAoZm9yIHRoZSBTQk9NIGRvd25sb2FkKSwgb3IgbnVsbC4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRQdWJsaWNMaXN0ZWRWZXJzaW9uKFxuICBwdWJsaXNoZXJIYW5kbGU6IHN0cmluZywgbmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcsXG4pOiBQcm9taXNlPHsgaW1hZ2VSZXBvc2l0b3J5OiBzdHJpbmc7IGltYWdlRGlnZXN0OiBzdHJpbmcgfSB8IG51bGw+IHtcbiAgY29uc3QgZGIgPSBnZXRQdWJsaWNSZWFkZXJEYigpO1xuICBjb25zdCByZXMgPSBhd2FpdCBkYi5leGVjdXRlKHNxbGBcbiAgICBTRUxFQ1QgaW1hZ2VfcmVwb3NpdG9yeSwgaW1hZ2VfZGlnZXN0IEZST00gcHVibGljX2xpc3RlZF92ZXJzaW9uc1xuICAgICBXSEVSRSBwdWJsaXNoZXJfaGFuZGxlID0gJHtwdWJsaXNoZXJIYW5kbGV9IEFORCBuYW1lID0gJHtuYW1lfSBBTkQgdmVyc2lvbiA9ICR7dmVyc2lvbn0gQU5EIE5PVCB5YW5rZWRcbiAgICAgICBBTkQgbGlzdGluZ19pZCBJTiAoU0VMRUNUIGlkIEZST00gcHVibGljX2xpc3RpbmdzIFdIRVJFIHBhdXNlZF9hdCBJUyBOVUxMKVxuICAgICBMSU1JVCAxYCk7XG4gIGNvbnN0IHJvdyA9IHJlc3VsdFJvd3M8eyBpbWFnZV9yZXBvc2l0b3J5OiBzdHJpbmcgfCBudWxsOyBpbWFnZV9kaWdlc3Q6IHN0cmluZyB8IG51bGwgfT4ocmVzKVswXTtcbiAgaWYgKCFyb3c/LmltYWdlX3JlcG9zaXRvcnkgfHwgIXJvdy5pbWFnZV9kaWdlc3QpIHJldHVybiBudWxsO1xuICByZXR1cm4geyBpbWFnZVJlcG9zaXRvcnk6IHJvdy5pbWFnZV9yZXBvc2l0b3J5LCBpbWFnZURpZ2VzdDogcm93LmltYWdlX2RpZ2VzdCB9O1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV2aWV3c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxudHlwZSBSZXZpZXdSb3cgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZyB8IG51bGw7XG4gIHJhdGluZzogbnVtYmVyIHwgc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nIHwgbnVsbDtcbiAgYm9keV9odG1sOiBzdHJpbmcgfCBudWxsO1xuICBhdXRob3JfZGlzcGxheV9uYW1lOiBzdHJpbmcgfCBudWxsO1xuICB2ZXJpZmllZF91c2U6IGJvb2xlYW47XG4gIGhlbHBmdWxfY291bnQ6IG51bWJlciB8IHN0cmluZztcbiAgZWRpdGVkOiBib29sZWFuO1xuICBjcmVhdGVkX2F0OiBEYXRlIHwgc3RyaW5nO1xuICB1cGRhdGVkX2F0OiBEYXRlIHwgc3RyaW5nO1xuICBwdWJsaXNoZXJfZGlzcGxheV9uYW1lOiBzdHJpbmc7XG4gIHJlcGx5X2JvZHlfaHRtbDogc3RyaW5nIHwgbnVsbDtcbiAgcmVwbHlfY3JlYXRlZF9hdDogRGF0ZSB8IHN0cmluZyB8IG51bGw7XG4gIHJlcGx5X3VwZGF0ZWRfYXQ6IERhdGUgfCBzdHJpbmcgfCBudWxsO1xuICB0b3RhbDogbnVtYmVyIHwgc3RyaW5nO1xufTtcblxuZnVuY3Rpb24gcmV2aWV3T3JkZXIoc29ydDogUmV2aWV3U29ydCk6IFNRTCB7XG4gIHN3aXRjaCAoc29ydCkge1xuICAgIGNhc2UgJ3JlY2VudCc6IHJldHVybiBzcWxgY3JlYXRlZF9hdCBERVNDLCBpZCBBU0NgO1xuICAgIGNhc2UgJ2hpZ2hlc3QnOiByZXR1cm4gc3FsYHJhdGluZyBERVNDLCBoZWxwZnVsX2NvdW50IERFU0MsIGNyZWF0ZWRfYXQgREVTQywgaWQgQVNDYDtcbiAgICBjYXNlICdsb3dlc3QnOiByZXR1cm4gc3FsYHJhdGluZyBBU0MsIGhlbHBmdWxfY291bnQgREVTQywgY3JlYXRlZF9hdCBERVNDLCBpZCBBU0NgO1xuICAgIGNhc2UgJ2hlbHBmdWwnOlxuICAgIGRlZmF1bHQ6XG4gICAgICAvLyBWZXJpZmllZCB1c2UgYnJlYWtzIHRpZXM6IGFuIG9yZyB0aGF0IHJ1bnMgdGhlIHBsdWdpbiBrbm93cyBpdCBiZXN0LlxuICAgICAgcmV0dXJuIHNxbGBoZWxwZnVsX2NvdW50IERFU0MsIHZlcmlmaWVkX3VzZSBERVNDLCBjcmVhdGVkX2F0IERFU0MsIGlkIEFTQ2A7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvUHVibGljUmV2aWV3KHJvdzogT21pdDxSZXZpZXdSb3csICd0b3RhbCc+KTogUHVibGljUmV2aWV3SXRlbSB7XG4gIHJldHVybiB7XG4gICAgaWQ6IHJvdy5pZCxcbiAgICByYXRpbmc6IG51bShyb3cucmF0aW5nKSxcbiAgICB0aXRsZTogcm93LnRpdGxlLFxuICAgIGJvZHlIdG1sOiByb3cuYm9keV9odG1sLFxuICAgIHZlcnNpb246IHJvdy52ZXJzaW9uLFxuICAgIGF1dGhvcjogcm93LmF1dGhvcl9kaXNwbGF5X25hbWUgPyB7IGRpc3BsYXlOYW1lOiByb3cuYXV0aG9yX2Rpc3BsYXlfbmFtZSB9IDogbnVsbCxcbiAgICB2ZXJpZmllZFVzZTogcm93LnZlcmlmaWVkX3VzZSA9PT0gdHJ1ZSxcbiAgICBoZWxwZnVsQ291bnQ6IG51bShyb3cuaGVscGZ1bF9jb3VudCksXG4gICAgZWRpdGVkOiByb3cuZWRpdGVkID09PSB0cnVlLFxuICAgIGNyZWF0ZWRBdDogaXNvKHJvdy5jcmVhdGVkX2F0KSxcbiAgICB1cGRhdGVkQXQ6IGlzbyhyb3cudXBkYXRlZF9hdCksXG4gICAgcmVwbHk6IHJvdy5yZXBseV9ib2R5X2h0bWxcbiAgICAgID8ge1xuICAgICAgICBib2R5SHRtbDogcm93LnJlcGx5X2JvZHlfaHRtbCxcbiAgICAgICAgcHVibGlzaGVyRGlzcGxheU5hbWU6IHJvdy5wdWJsaXNoZXJfZGlzcGxheV9uYW1lLFxuICAgICAgICBjcmVhdGVkQXQ6IGlzbyhyb3cucmVwbHlfY3JlYXRlZF9hdCksXG4gICAgICAgIHVwZGF0ZWRBdDogaXNvKHJvdy5yZXBseV91cGRhdGVkX2F0KSxcbiAgICAgIH1cbiAgICAgIDogbnVsbCxcbiAgfTtcbn1cblxuLyoqXG4gKiBPbmUgcGFnZSBvZiBhIGxpc3RpbmcncyBwdWJsaXNoZWQgcmV2aWV3cyAodGhlIGRpcmVjdG9yeSdzIFJldmlld3MgdGFiKSwgb3IgbnVsbFxuICogd2hlbiB0aGUgbGlzdGluZyBpc24ndCBwdWJsaWMuIEhlbGQgYW5kIHJlbW92ZWQgcmV2aWV3cyBuZXZlciByZWFjaCB0aGUgdmlldy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxpc3RQdWJsaWNSZXZpZXdzKHB1Ymxpc2hlckhhbmRsZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIHF1ZXJ5OiBQdWJsaWNSZXZpZXdRdWVyeSA9IHt9KTogUHJvbWlzZTxQdWJsaWNSZXZpZXdQYWdlIHwgbnVsbD4ge1xuICBjb25zdCBkYiA9IGdldFB1YmxpY1JlYWRlckRiKCk7XG4gIGNvbnN0IGxpc3RpbmcgPSByZXN1bHRSb3dzPHsgaWQ6IHN0cmluZyB9Pihhd2FpdCBkYi5leGVjdXRlKHNxbGBcbiAgICBTRUxFQ1QgaWQgRlJPTSBwdWJsaWNfbGlzdGluZ3NcbiAgICAgV0hFUkUgcHVibGlzaGVyX2hhbmRsZSA9ICR7cHVibGlzaGVySGFuZGxlfSBBTkQgbmFtZSA9ICR7bmFtZX0gQU5EIHBhdXNlZF9hdCBJUyBOVUxMXG4gICAgIExJTUlUIDFgKSlbMF07XG4gIGlmICghbGlzdGluZykgcmV0dXJuIG51bGw7XG5cbiAgY29uc3Qgc29ydCA9IHF1ZXJ5LnNvcnQgJiYgUkVWSUVXX1NPUlRTLmluY2x1ZGVzKHF1ZXJ5LnNvcnQpID8gcXVlcnkuc29ydCA6ICdoZWxwZnVsJztcbiAgY29uc3QgbGltaXQgPSAhcXVlcnkubGltaXQgfHwgIU51bWJlci5pc0Zpbml0ZShxdWVyeS5saW1pdClcbiAgICA/IFJFVklFV1NfREVGQVVMVF9MSU1JVFxuICAgIDogTWF0aC5taW4oTWF0aC5tYXgoTWF0aC50cnVuYyhxdWVyeS5saW1pdCksIDEpLCBSRVZJRVdTX01BWF9MSU1JVCk7XG4gIGNvbnN0IG9mZnNldCA9IGRlY29kZU9mZnNldEN1cnNvcihxdWVyeS5jdXJzb3IpO1xuICBjb25zdCB3aGVyZTogU1FMW10gPSBbc3FsYGxpc3RpbmdfaWQgPSAke2xpc3RpbmcuaWR9YF07XG4gIGlmIChxdWVyeS5yYXRpbmcgIT09IHVuZGVmaW5lZCAmJiBOdW1iZXIuaXNJbnRlZ2VyKHF1ZXJ5LnJhdGluZykgJiYgcXVlcnkucmF0aW5nID49IDEgJiYgcXVlcnkucmF0aW5nIDw9IDUpIHtcbiAgICB3aGVyZS5wdXNoKHNxbGByYXRpbmcgPSAke3F1ZXJ5LnJhdGluZ31gKTtcbiAgfVxuICBjb25zdCByb3dzID0gcmVzdWx0Um93czxSZXZpZXdSb3c+KGF3YWl0IGRiLmV4ZWN1dGUoc3FsYFxuICAgIFNFTEVDVCBpZCwgdmVyc2lvbiwgcmF0aW5nLCB0aXRsZSwgYm9keV9odG1sLCBhdXRob3JfZGlzcGxheV9uYW1lLCB2ZXJpZmllZF91c2UsIGhlbHBmdWxfY291bnQsIGVkaXRlZCxcbiAgICAgICAgICAgY3JlYXRlZF9hdCwgdXBkYXRlZF9hdCwgcHVibGlzaGVyX2Rpc3BsYXlfbmFtZSwgcmVwbHlfYm9keV9odG1sLCByZXBseV9jcmVhdGVkX2F0LCByZXBseV91cGRhdGVkX2F0LFxuICAgICAgICAgICBDT1VOVCgqKSBPVkVSICgpIEFTIHRvdGFsXG4gICAgICBGUk9NIHB1YmxpY19yZXZpZXdzXG4gICAgIFdIRVJFICR7c3FsLmpvaW4od2hlcmUsIHNxbGAgQU5EIGApfVxuICAgICBPUkRFUiBCWSAke3Jldmlld09yZGVyKHNvcnQpfVxuICAgICBMSU1JVCAke2xpbWl0fSBPRkZTRVQgJHtvZmZzZXR9YCkpO1xuICBjb25zdCB0b3RhbCA9IHJvd3MubGVuZ3RoID4gMCA/IG51bShyb3dzWzBdIS50b3RhbCkgOiAwO1xuICByZXR1cm4ge1xuICAgIHJldmlld3M6IHJvd3MubWFwKHRvUHVibGljUmV2aWV3KSxcbiAgICB0b3RhbCxcbiAgICBuZXh0Q3Vyc29yOiBvZmZzZXQgKyByb3dzLmxlbmd0aCA8IHRvdGFsID8gZW5jb2RlT2Zmc2V0Q3Vyc29yKG9mZnNldCArIHJvd3MubGVuZ3RoKSA6IG51bGwsXG4gIH07XG59XG5cbi8qKiBFdmVyeSBwdWJsaWMgbGlzdGluZydzIFVSTCBwYXJ0cyArIGxhc3QgdXBkYXRlLCBmb3IgdGhlIHNpdGVtYXAuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGlzdFB1YmxpY0xpc3RpbmdzRm9yU2l0ZW1hcChtYXggPSA1MDAwKTogUHJvbWlzZTx7IHB1Ymxpc2hlcjogc3RyaW5nOyBuYW1lOiBzdHJpbmc7IHVwZGF0ZWRBdDogc3RyaW5nIH1bXT4ge1xuICBjb25zdCBkYiA9IGdldFB1YmxpY1JlYWRlckRiKCk7XG4gIGNvbnN0IHJlcyA9IGF3YWl0IGRiLmV4ZWN1dGUoc3FsYFxuICAgIFNFTEVDVCBwdWJsaXNoZXJfaGFuZGxlLCBuYW1lLCB1cGRhdGVkX2F0IEZST00gcHVibGljX2xpc3RpbmdzXG4gICAgIFdIRVJFIHBhdXNlZF9hdCBJUyBOVUxMIE9SREVSIEJZIHVwZGF0ZWRfYXQgREVTQyBMSU1JVCAke01hdGgubWluKE1hdGgubWF4KG1heCwgMSksIDUwXzAwMCl9YCk7XG4gIHJldHVybiByZXN1bHRSb3dzPHsgcHVibGlzaGVyX2hhbmRsZTogc3RyaW5nOyBuYW1lOiBzdHJpbmc7IHVwZGF0ZWRfYXQ6IERhdGUgfCBzdHJpbmcgfT4ocmVzKVxuICAgIC5tYXAoKHIpID0+ICh7IHB1Ymxpc2hlcjogci5wdWJsaXNoZXJfaGFuZGxlLCBuYW1lOiByLm5hbWUsIHVwZGF0ZWRBdDogaXNvKHIudXBkYXRlZF9hdCkgfSkpO1xufVxuIl19
|
|
@@ -253,10 +253,12 @@ export declare function getUntrackedPipelines(scope: AnalyticsScope): Promise<st
|
|
|
253
253
|
* NOW. A Critical that was open last Tuesday and is fixed today is not something to
|
|
254
254
|
* put in front of a manager, and `fixed_at` is what says so.
|
|
255
255
|
*
|
|
256
|
-
*
|
|
257
|
-
*
|
|
258
|
-
*
|
|
259
|
-
*
|
|
256
|
+
* The SAME live predicate as the vulnerability section (`liveExposurePredicate`):
|
|
257
|
+
* an acceptance still in force and a false positive are excluded — someone with
|
|
258
|
+
* the authority to decide has done so in writing — while an acceptance PAST its
|
|
259
|
+
* deadline counts again, because that is what the deadline was for. The two
|
|
260
|
+
* readers once disagreed (this one kept false positives and dropped expired
|
|
261
|
+
* acceptances), so the panel and the needs-attention list contradicted each other.
|
|
260
262
|
*/
|
|
261
263
|
export declare function getVulnerablePipelines(scope: AnalyticsScope): Promise<string[]>;
|
|
262
264
|
/**
|