@pipeline-builder/pipeline-data 3.4.42 → 3.4.56
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.js +27 -10
- package/lib/api/query-builders.js +18 -1
- package/lib/api/reporting-service.d.ts +14 -1
- package/lib/api/reporting-service.js +40 -15
- package/lib/core/query-filters.d.ts +15 -0
- package/lib/core/query-filters.js +4 -1
- package/lib/database/drizzle-schema.d.ts +72 -0
- package/lib/database/drizzle-schema.js +17 -1
- package/package.json +7 -3
|
@@ -253,6 +253,9 @@ exports.message = (0, pg_core_1.pgTable)('messages', {
|
|
|
253
253
|
.$type()
|
|
254
254
|
.default('conversation')
|
|
255
255
|
.notNull(),
|
|
256
|
+
// Logical channel/inbox bucket — 'support', 'help', etc. Nullable so
|
|
257
|
+
// org-to-org conversations (which aren't channel-scoped) can omit it.
|
|
258
|
+
channel: (0, pg_core_1.varchar)('channel', { length: 50 }),
|
|
256
259
|
subject: (0, pg_core_1.varchar)('subject', { length: 500 })
|
|
257
260
|
.notNull(),
|
|
258
261
|
content: (0, pg_core_1.text)('content')
|
|
@@ -289,6 +292,7 @@ exports.message = (0, pg_core_1.pgTable)('messages', {
|
|
|
289
292
|
recipientOrgIdIdx: (0, pg_core_1.index)('message_recipient_org_id_idx').on(table.recipientOrgId),
|
|
290
293
|
threadIdIdx: (0, pg_core_1.index)('message_thread_id_idx').on(table.threadId),
|
|
291
294
|
messageTypeIdx: (0, pg_core_1.index)('message_message_type_idx').on(table.messageType),
|
|
295
|
+
channelIdx: (0, pg_core_1.index)('message_channel_idx').on(table.channel),
|
|
292
296
|
createdAtIdx: (0, pg_core_1.index)('message_created_at_idx').on(table.createdAt),
|
|
293
297
|
activeIdx: (0, pg_core_1.index)('message_active_idx').on(table.isActive),
|
|
294
298
|
// Composite index for inbox queries (recipient + active + created)
|
|
@@ -482,6 +486,13 @@ exports.complianceAuditLog = (0, pg_core_1.pgTable)('compliance_audit_log', {
|
|
|
482
486
|
createdAt: (0, pg_core_1.timestamp)('created_at', { withTimezone: true }).defaultNow().notNull(),
|
|
483
487
|
}, (table) => ({
|
|
484
488
|
orgCreatedAtIdx: (0, pg_core_1.index)('compliance_audit_org_created_idx').on(table.orgId, table.createdAt),
|
|
489
|
+
// DESC variant for the dominant "latest audit events per org" query
|
|
490
|
+
// pattern (audit log UIs sort newest-first). Postgres can use the asc
|
|
491
|
+
// index for desc scans, but a matching DESC index lets index-only scans
|
|
492
|
+
// satisfy `ORDER BY created_at DESC LIMIT n` without a reverse step.
|
|
493
|
+
// MIGRATION REQUIRED: run `pnpm drizzle-kit generate` after pulling.
|
|
494
|
+
orgCreatedAtDescIdx: (0, pg_core_1.index)('compliance_audit_org_created_desc_idx')
|
|
495
|
+
.on(table.orgId, (0, drizzle_orm_1.sql) `${table.createdAt} DESC`),
|
|
485
496
|
orgTargetResultIdx: (0, pg_core_1.index)('compliance_audit_org_target_result_idx')
|
|
486
497
|
.on(table.orgId, table.target, table.result),
|
|
487
498
|
scanIdIdx: (0, pg_core_1.index)('compliance_audit_scan_id_idx').on(table.scanId),
|
|
@@ -552,6 +563,11 @@ exports.complianceScan = (0, pg_core_1.pgTable)('compliance_scans', {
|
|
|
552
563
|
passCount: (0, pg_core_1.integer)('pass_count').default(0).notNull(),
|
|
553
564
|
warnCount: (0, pg_core_1.integer)('warn_count').default(0).notNull(),
|
|
554
565
|
blockCount: (0, pg_core_1.integer)('block_count').default(0).notNull(),
|
|
566
|
+
// True when the scan stopped early at a configured per-scan cap (so the
|
|
567
|
+
// counts above represent a subset, not the full entity universe). Surfaced
|
|
568
|
+
// in the scan-status UI so users know whether to widen the filter.
|
|
569
|
+
// MIGRATION REQUIRED: run `pnpm drizzle-kit generate` after pulling.
|
|
570
|
+
truncated: (0, pg_core_1.boolean)('truncated').default(false).notNull(),
|
|
555
571
|
startedAt: (0, pg_core_1.timestamp)('started_at', { withTimezone: true }),
|
|
556
572
|
completedAt: (0, pg_core_1.timestamp)('completed_at', { withTimezone: true }),
|
|
557
573
|
cancelledAt: (0, pg_core_1.timestamp)('cancelled_at', { withTimezone: true }),
|
|
@@ -946,4 +962,4 @@ exports.schema = {
|
|
|
946
962
|
complianceReport: exports.complianceReport,
|
|
947
963
|
complianceReportSchedule: exports.complianceReportSchedule,
|
|
948
964
|
};
|
|
949
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJpenpsZS1zY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YWJhc2UvZHJpenpsZS1zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7OztBQUd0Qyw2Q0FBa0M7QUFDbEMsaURBQWtJO0FBb0NsSTs7Ozs7Ozs7Ozs7R0FXRztBQUNVLFFBQUEsTUFBTSxHQUFHLElBQUEsaUJBQU8sRUFBQyxTQUFTLEVBQUU7SUFDdkMsY0FBYztJQUNkLEVBQUUsRUFBRSxJQUFBLGNBQUksRUFBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxhQUFhLEVBQUU7SUFFM0Msa0NBQWtDO0lBQ2xDLEtBQUssRUFBRSxJQUFBLGlCQUFPLEVBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO1NBQ3RDLE9BQU8sQ0FBQyxRQUFRLENBQUM7U0FDakIsT0FBTyxFQUFFO0lBRVosZUFBZTtJQUNmLFNBQVMsRUFBRSxJQUFBLGNBQUksRUFBQyxZQUFZLENBQUM7U0FDMUIsT0FBTyxDQUFDLFFBQVEsQ0FBQztTQUNqQixPQUFPLEVBQUU7SUFDWixTQUFTLEVBQUUsSUFBQSxtQkFBUyxFQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUN2RCxVQUFVLEVBQUU7U0FDWixPQUFPLEVBQUU7SUFDWixTQUFTLEVBQUUsSUFBQSxjQUFJLEVBQUMsWUFBWSxDQUFDO1NBQzFCLE9BQU8sQ0FBQyxRQUFRLENBQUM7U0FDakIsT0FBTyxFQUFFO0lBQ1osU0FBUyxFQUFFLElBQUEsbUJBQVMsRUFBQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7U0FDdkQsVUFBVSxFQUFFO1NBQ1osT0FBTyxFQUFFO0lBRVosMEJBQTBCO0lBQzFCLElBQUksRUFBRSxJQUFBLGlCQUFPLEVBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO1NBQ25DLE9BQU8sRUFBRTtJQUNaLFdBQVcsRUFBRSxJQUFBLGNBQUksRUFBQyxhQUFhLENBQUM7SUFDaEMsUUFBUSxFQUFFLElBQUEsZUFBSyxFQUFDLFVBQVUsQ0FBQztTQUN4QixLQUFLLEVBQVk7U0FDakIsT0FBTyxDQUFDLEVBQUUsQ0FBQztTQUNYLE9BQU8sRUFBRTtJQUNaLE9BQU8sRUFBRSxJQUFBLGlCQUFPLEVBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO1NBQ3hDLE9BQU8sQ0FBQyxPQUFPLENBQUM7U0FDaEIsT0FBTyxFQUFFO0lBRVosd0JBQXdCO0lBQ3hCLFFBQVEsRUFBRSxJQUFBLGlCQUFPLEVBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO1NBQzFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7U0FDbEIsT0FBTyxFQUFFO0lBRVosdUJBQXVCO0lBQ3ZCLFFBQVEsRUFBRSxJQUFBLGVBQUssRUFBQyxVQUFVLENBQUM7U0FDeEIsS0FBSyxFQUE2QztTQUNsRCxPQUFPLENBQUMsRUFBRSxDQUFDO1NBQ1gsT0FBTyxFQUFFO0lBQ1osVUFBVSxFQUFFLElBQUEsaUJBQU8sRUFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7U0FDL0MsS0FBSyxFQUFjO1NBQ25CLE9BQU8sQ0FBQyxlQUE2QixDQUFDO1NBQ3RDLE9BQU8sRUFBRTtJQUNaLFdBQVcsRUFBRSxJQUFBLGlCQUFPLEVBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO1NBQ2pELEtBQUssRUFBZTtTQUNwQixPQUFPLENBQUMsT0FBc0IsQ0FBQztTQUMvQixPQUFPLEVBQUU7SUFDWixPQUFPLEVBQUUsSUFBQSxpQkFBTyxFQUFDLFNBQVMsQ0FBQztJQUMzQixlQUFlLEVBQUUsSUFBQSxpQkFBTyxFQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO1NBQ3pELEtBQUssRUFBOEI7U0FDbkMsT0FBTyxDQUFDLE1BQU0sQ0FBQztTQUNmLE9BQU8sRUFBRTtJQUNaLE9BQU8sRUFBRSxJQUFBLGVBQUssRUFBQyxTQUFTLENBQUM7U0FDdEIsS0FBSyxFQUFrQjtTQUN2QixPQUFPLENBQUMsRUFBRSxDQUFDO1NBQ1gsT0FBTyxFQUFFO0lBQ1osc0JBQXNCLEVBQUUsSUFBQSxpQkFBTyxFQUFDLDBCQUEwQixFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBRTNFLHNCQUFzQjtJQUN0QixHQUFHLEVBQUUsSUFBQSxlQUFLLEVBQUMsS0FBSyxDQUFDO1NBQ2QsS0FBSyxFQUEwQjtTQUMvQixPQUFPLENBQUMsRUFBRSxDQUFDO1NBQ1gsT0FBTyxFQUFFO0lBQ1osU0FBUyxFQUFFLElBQUEsZUFBSyxFQUFDLFlBQVksQ0FBQztTQUMzQixLQUFLLEVBQTBCO1NBQy9CLE9BQU8sQ0FBQyxFQUFFLENBQUM7U0FDWCxPQUFPLEVBQUU7SUFDWixlQUFlLEVBQUUsSUFBQSxjQUFJLEVBQUMsa0JBQWtCLENBQUM7U0FDdEMsS0FBSyxFQUFFO1NBQ1AsT0FBTyxDQUFDLEVBQUUsQ0FBQztTQUNYLE9BQU8sRUFBRTtJQUNaLFFBQVEsRUFBRSxJQUFBLGNBQUksRUFBQyxVQUFVLENBQUM7U0FDdkIsS0FBSyxFQUFFO1NBQ1AsT0FBTyxDQUFDLEVBQUUsQ0FBQztTQUNYLE9BQU8sRUFBRTtJQUVaLHVCQUF1QjtJQUN2QixVQUFVLEVBQUUsSUFBQSxjQUFJLEVBQUMsWUFBWSxDQUFDO0lBQzlCLFNBQVMsRUFBRSxJQUFBLGlCQUFPLEVBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO1NBQzdDLE9BQU8sQ0FBQyxhQUFhLENBQUM7U0FDdEIsT0FBTyxFQUFFO0lBRVosd0JBQXdCO0lBQ3hCLGNBQWMsRUFBRSxJQUFBLGlCQUFPLEVBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7U0FDdkQsS0FBSyxFQUFrQjtTQUN2QixPQUFPLENBQUMsU0FBMkIsQ0FBQztTQUNwQyxPQUFPLEVBQUU7SUFDWixTQUFTLEVBQUUsSUFBQSxpQkFBTyxFQUFDLFlBQVksQ0FBQztTQUM3QixPQUFPLENBQUMsS0FBSyxDQUFDO1NBQ2QsT0FBTyxFQUFFO0lBQ1osUUFBUSxFQUFFLElBQUEsaUJBQU8sRUFBQyxXQUFXLENBQUM7U0FDM0IsT0FBTyxDQUFDLElBQUksQ0FBQztTQUNiLE9BQU8sRUFBRTtJQUVaLGtDQUFrQztJQUNsQyxTQUFTLEVBQUUsSUFBQSxtQkFBUyxFQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMxRCxTQUFTLEVBQUUsSUFBQSxjQUFJLEVBQUMsWUFBWSxDQUFDO0NBQzlCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDYiw2QkFBNkI7SUFDN0IsT0FBTyxFQUFFLElBQUEsZUFBSyxFQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7SUFDaEQsUUFBUSxFQUFFLElBQUEsZUFBSyxFQUFDLG1CQUFtQixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDcEQsVUFBVSxFQUFFLElBQUEsZUFBSyxFQUFDLG9CQUFvQixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFDekQsU0FBUyxFQUFFLElBQUEsZUFBSyxFQUFDLG1CQUFtQixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFDeEQsWUFBWSxFQUFFLElBQUEsZUFBSyxFQUFDLHVCQUF1QixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7SUFDaEUsWUFBWSxFQUFFLElBQUEsZUFBSyxFQUFDLHVCQUF1QixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7SUFFaEUsK0JBQStCO0lBQy9CLFdBQVcsRUFBRSxJQUFBLGVBQUssRUFBQyxxQkFBcUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBRTVELCtEQUErRDtJQUMvRCxZQUFZLEVBQUUsSUFBQSxlQUFLLEVBQUMsdUJBQXVCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDO0lBRTVFLDJFQUEyRTtJQUMzRSxrQkFBa0IsRUFBRSxJQUFBLGVBQUssRUFBQyw4QkFBOEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUUvRywwRUFBMEU7SUFDMUUsZ0JBQWdCLEVBQUUsSUFBQSxlQUFLLEVBQUMsNEJBQTRCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUEsaUJBQUcsRUFBQSxrQkFBa0IsQ0FBQztJQUVuSCw4Q0FBOEM7SUFDOUMsb0JBQW9CLEVBQUUsSUFBQSxxQkFBVyxFQUFDLGdDQUFnQyxDQUFDO1NBQ2hFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUU3QyxvQkFBb0I7SUFDcEIsWUFBWSxFQUFFLElBQUEsZUFBSyxFQUFFLHNCQUFzQixFQUN6QyxJQUFBLGlCQUFHLEVBQUEsR0FBRyxLQUFLLENBQUMsT0FBTyxvRUFBb0UsQ0FDeEY7Q0FDRixDQUFDLENBQUMsQ0FBQztBQUVKOzs7Ozs7Ozs7O0dBVUc7QUFDVSxRQUFBLFFBQVEsR0FBRyxJQUFBLGlCQUFPLEVBQUMsV0FBVyxFQUFFO0lBQzNDLGNBQWM7SUFDZCxFQUFFLEVBQUUsSUFBQSxjQUFJLEVBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsYUFBYSxFQUFFO0lBRTNDLGtDQUFrQztJQUNsQyxLQUFLLEVBQUUsSUFBQSxpQkFBTyxFQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztTQUN0QyxPQUFPLENBQUMsUUFBUSxDQUFDO1NBQ2pCLE9BQU8sRUFBRTtJQUVaLGVBQWU7SUFDZixTQUFTLEVBQUUsSUFBQSxjQUFJLEVBQUMsWUFBWSxDQUFDO1NBQzFCLE9BQU8sQ0FBQyxRQUFRLENBQUM7U0FDakIsT0FBTyxFQUFFO0lBQ1osU0FBUyxFQUFFLElBQUEsbUJBQVMsRUFBQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7U0FDdkQsVUFBVSxFQUFFO1NBQ1osT0FBTyxFQUFFO0lBQ1osU0FBUyxFQUFFLElBQUEsY0FBSSxFQUFDLFlBQVksQ0FBQztTQUMxQixPQUFPLENBQUMsUUFBUSxDQUFDO1NBQ2pCLE9BQU8sRUFBRTtJQUNaLFNBQVMsRUFBRSxJQUFBLG1CQUFTLEVBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO1NBQ3ZELFVBQVUsRUFBRTtTQUNaLE9BQU8sRUFBRTtJQUVaLDRCQUE0QjtJQUM1QixPQUFPLEVBQUUsSUFBQSxpQkFBTyxFQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztTQUN6QyxPQUFPLEVBQUU7SUFDWixZQUFZLEVBQUUsSUFBQSxpQkFBTyxFQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztTQUNuRCxPQUFPLEVBQUU7SUFDWixZQUFZLEVBQUUsSUFBQSxpQkFBTyxFQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN2RCxXQUFXLEVBQUUsSUFBQSxjQUFJLEVBQUMsYUFBYSxDQUFDO0lBQ2hDLFFBQVEsRUFBRSxJQUFBLGVBQUssRUFBQyxVQUFVLENBQUM7U0FDeEIsS0FBSyxFQUFZO1NBQ2pCLE9BQU8sQ0FBQyxFQUFFLENBQUM7U0FDWCxPQUFPLEVBQUU7SUFFWix5QkFBeUI7SUFDekIsS0FBSyxFQUFFLElBQUEsZUFBSyxFQUFDLE9BQU8sQ0FBQztTQUNsQixLQUFLLEVBQXlCO1NBQzlCLE9BQU8sRUFBRTtJQUVaLHdCQUF3QjtJQUN4QixjQUFjLEVBQUUsSUFBQSxpQkFBTyxFQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO1NBQ3ZELEtBQUssRUFBa0I7U0FDdkIsT0FBTyxDQUFDLFNBQTJCLENBQUM7U0FDcEMsT0FBTyxFQUFFO0lBQ1osU0FBUyxFQUFFLElBQUEsaUJBQU8sRUFBQyxZQUFZLENBQUM7U0FDN0IsT0FBTyxDQUFDLEtBQUssQ0FBQztTQUNkLE9BQU8sRUFBRTtJQUNaLFFBQVEsRUFBRSxJQUFBLGlCQUFPLEVBQUMsV0FBVyxDQUFDO1NBQzNCLE9BQU8sQ0FBQyxJQUFJLENBQUM7U0FDYixPQUFPLEVBQUU7SUFFWixrQ0FBa0M7SUFDbEMsU0FBUyxFQUFFLElBQUEsbUJBQVMsRUFBQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDMUQsU0FBUyxFQUFFLElBQUEsY0FBSSxFQUFDLFlBQVksQ0FBQztDQUM5QixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2IsNkJBQTZCO0lBQzdCLFVBQVUsRUFBRSxJQUFBLGVBQUssRUFBQyxzQkFBc0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQzNELGVBQWUsRUFBRSxJQUFBLGVBQUssRUFBQywyQkFBMkIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO0lBQzFFLFFBQVEsRUFBRSxJQUFBLGVBQUssRUFBQyxxQkFBcUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3RELFNBQVMsRUFBRSxJQUFBLGVBQUssRUFBQyxxQkFBcUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQzFELFlBQVksRUFBRSxJQUFBLGVBQUssRUFBQyx5QkFBeUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO0lBQ2xFLFlBQVksRUFBRSxJQUFBLGVBQUssRUFBQyx5QkFBeUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO0lBRWxFLCtEQUErRDtJQUMvRCxZQUFZLEVBQUUsSUFBQSxlQUFLLEVBQUMseUJBQXlCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDO0lBRTlFLDJFQUEyRTtJQUMzRSxrQkFBa0IsRUFBRSxJQUFBLGVBQUssRUFBQyxnQ0FBZ0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUVqSCwwRUFBMEU7SUFDMUUsZ0JBQWdCLEVBQUUsSUFBQSxlQUFLLEVBQUMsOEJBQThCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUEsaUJBQUcsRUFBQSxrQkFBa0IsQ0FBQztJQUVySCxzREFBc0Q7SUFDdEQsZ0JBQWdCLEVBQUUsSUFBQSxxQkFBVyxFQUFDLDZCQUE2QixDQUFDO1NBQ3pELEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQztDQUN0RCxDQUFDLENBQUMsQ0FBQztBQVlKOzs7Ozs7Ozs7OztHQVdHO0FBQ1UsUUFBQSxPQUFPLEdBQUcsSUFBQSxpQkFBTyxFQUFDLFVBQVUsRUFBRTtJQUN6QyxjQUFjO0lBQ2QsRUFBRSxFQUFFLElBQUEsY0FBSSxFQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLGFBQWEsRUFBRTtJQUUzQyxrQ0FBa0M7SUFDbEMsS0FBSyxFQUFFLElBQUEsaUJBQU8sRUFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7U0FDdEMsT0FBTyxDQUFDLFFBQVEsQ0FBQztTQUNqQixPQUFPLEVBQUU7SUFFWixlQUFlO0lBQ2YsU0FBUyxFQUFFLElBQUEsY0FBSSxFQUFDLFlBQVksQ0FBQztTQUMxQixPQUFPLENBQUMsUUFBUSxDQUFDO1NBQ2pCLE9BQU8sRUFBRTtJQUNaLFNBQVMsRUFBRSxJQUFBLG1CQUFTLEVBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO1NBQ3ZELFVBQVUsRUFBRTtTQUNaLE9BQU8sRUFBRTtJQUNaLFNBQVMsRUFBRSxJQUFBLGNBQUksRUFBQyxZQUFZLENBQUM7U0FDMUIsT0FBTyxDQUFDLFFBQVEsQ0FBQztTQUNqQixPQUFPLEVBQUU7SUFDWixTQUFTLEVBQUUsSUFBQSxtQkFBUyxFQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUN2RCxVQUFVLEVBQUU7U0FDWixPQUFPLEVBQUU7SUFFWixZQUFZO0lBQ1osUUFBUSxFQUFFLElBQUEsY0FBSSxFQUFDLFdBQVcsQ0FBQztJQUUzQixrQkFBa0I7SUFDbEIsY0FBYyxFQUFFLElBQUEsaUJBQU8sRUFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztTQUN6RCxPQUFPLEVBQUU7SUFFWixrQkFBa0I7SUFDbEIsV0FBVyxFQUFFLElBQUEsaUJBQU8sRUFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7U0FDakQsS0FBSyxFQUFlO1NBQ3BCLE9BQU8sQ0FBQyxjQUE2QixDQUFDO1NBQ3RDLE9BQU8sRUFBRTtJQUNaLE9BQU8sRUFBRSxJQUFBLGlCQUFPLEVBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO1NBQ3pDLE9BQU8sRUFBRTtJQUNaLE9BQU8sRUFBRSxJQUFBLGNBQUksRUFBQyxTQUFTLENBQUM7U0FDckIsT0FBTyxFQUFFO0lBRVosU0FBUztJQUNULDJFQUEyRTtJQUMzRSx1RUFBdUU7SUFDdkUsZ0NBQWdDO0lBQ2hDLE1BQU0sRUFBRSxJQUFBLGVBQUssRUFBQyxTQUFTLENBQUM7U0FDckIsS0FBSyxFQUEwQjtTQUMvQixPQUFPLENBQUMsRUFBRSxDQUFDO1NBQ1gsT0FBTyxFQUFFO0lBQ1osUUFBUSxFQUFFLElBQUEsaUJBQU8sRUFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7U0FDMUMsS0FBSyxFQUFtQjtTQUN4QixPQUFPLENBQUMsUUFBMkIsQ0FBQztTQUNwQyxPQUFPLEVBQUU7SUFFWix3QkFBd0I7SUFDeEIsY0FBYyxFQUFFLElBQUEsaUJBQU8sRUFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztTQUN2RCxLQUFLLEVBQWtCO1NBQ3ZCLE9BQU8sQ0FBQyxTQUEyQixDQUFDO1NBQ3BDLE9BQU8sRUFBRTtJQUNaLFNBQVMsRUFBRSxJQUFBLGlCQUFPLEVBQUMsWUFBWSxDQUFDO1NBQzdCLE9BQU8sQ0FBQyxLQUFLLENBQUM7U0FDZCxPQUFPLEVBQUU7SUFDWixRQUFRLEVBQUUsSUFBQSxpQkFBTyxFQUFDLFdBQVcsQ0FBQztTQUMzQixPQUFPLENBQUMsSUFBSSxDQUFDO1NBQ2IsT0FBTyxFQUFFO0lBRVosa0NBQWtDO0lBQ2xDLFNBQVMsRUFBRSxJQUFBLG1CQUFTLEVBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzFELFNBQVMsRUFBRSxJQUFBLGNBQUksRUFBQyxZQUFZLENBQUM7Q0FDOUIsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNiLDZCQUE2QjtJQUM3QixRQUFRLEVBQUUsSUFBQSxlQUFLLEVBQUMsb0JBQW9CLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUNyRCxpQkFBaUIsRUFBRSxJQUFBLGVBQUssRUFBQyw4QkFBOEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO0lBQ2pGLFdBQVcsRUFBRSxJQUFBLGVBQUssRUFBQyx1QkFBdUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQzlELGNBQWMsRUFBRSxJQUFBLGVBQUssRUFBQywwQkFBMEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO0lBQ3ZFLFlBQVksRUFBRSxJQUFBLGVBQUssRUFBQyx3QkFBd0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO0lBQ2pFLFNBQVMsRUFBRSxJQUFBLGVBQUssRUFBQyxvQkFBb0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBRXpELG1FQUFtRTtJQUNuRSx5QkFBeUIsRUFBRSxJQUFBLGVBQUssRUFBQyxzQ0FBc0MsQ0FBQztTQUNyRSxFQUFFLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUM7SUFFNUQsaURBQWlEO0lBQ2pELFlBQVksRUFBRSxJQUFBLGVBQUssRUFBQyx3QkFBd0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUM7Q0FDOUUsQ0FBQyxDQUFDLENBQUM7QUFFSjs7Ozs7OztHQU9HO0FBQ1UsUUFBQSxnQkFBZ0IsR0FBRyxJQUFBLGlCQUFPLEVBQUMsbUJBQW1CLEVBQUU7SUFDM0QsRUFBRSxFQUFFLElBQUEsY0FBSSxFQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLGFBQWEsRUFBRTtJQUMzQyxVQUFVLEVBQUUsSUFBQSxjQUFJLEVBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3pDLEtBQUssRUFBRSxJQUFBLGlCQUFPLEVBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ25ELFdBQVcsRUFBRSxJQUFBLGlCQUFPLEVBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFO0lBQ3hFLFlBQVksRUFBRSxJQUFBLGlCQUFPLEVBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ2pFLFNBQVMsRUFBRSxJQUFBLGlCQUFPLEVBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2hELE1BQU0sRUFBRSxJQUFBLGlCQUFPLEVBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ3pDLE9BQU8sRUFBRSxJQUFBLGlCQUFPLEVBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQzVDLFlBQVksRUFBRSxJQUFBLGlCQUFPLEVBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3RELFlBQVksRUFBRSxJQUFBLG1CQUFTLEVBQUMsZUFBZSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ2hFLFNBQVMsRUFBRSxJQUFBLGlCQUFPLEVBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ2pELFNBQVMsRUFBRSxJQUFBLG1CQUFTLEVBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFO0lBQ2pGLFNBQVMsRUFBRSxJQUFBLG1CQUFTLEVBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFO0NBQ2xGLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDYixhQUFhLEVBQUUsSUFBQSxlQUFLLEVBQUMsMEJBQTBCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztJQUNyRSxRQUFRLEVBQUUsSUFBQSxlQUFLLEVBQUMscUJBQXFCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUN0RCxZQUFZLEVBQUUsSUFBQSxlQUFLLEVBQUMseUJBQXlCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO0NBQzdFLENBQUMsQ0FBQyxDQUFDO0FBWUo7Ozs7Ozs7R0FPRztBQUNVLFFBQUEsYUFBYSxHQUFHLElBQUEsaUJBQU8sRUFBQyxpQkFBaUIsRUFBRTtJQUN0RCxFQUFFLEVBQUUsSUFBQSxjQUFJLEVBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsYUFBYSxFQUFFO0lBQzNDLFVBQVUsRUFBRSxJQUFBLGNBQUksRUFBQyxhQUFhLENBQUM7SUFDL0IsS0FBSyxFQUFFLElBQUEsaUJBQU8sRUFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDbkQsV0FBVyxFQUFFLElBQUEsaUJBQU8sRUFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQWUsQ0FBQyxPQUFPLEVBQUU7SUFDbkYsU0FBUyxFQUFFLElBQUEsaUJBQU8sRUFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQWEsQ0FBQyxPQUFPLEVBQUU7SUFDN0UsTUFBTSxFQUFFLElBQUEsaUJBQU8sRUFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDbkQsV0FBVyxFQUFFLElBQUEsaUJBQU8sRUFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDckQsV0FBVyxFQUFFLElBQUEsaUJBQU8sRUFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDckQsU0FBUyxFQUFFLElBQUEsaUJBQU8sRUFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDakQsVUFBVSxFQUFFLElBQUEsaUJBQU8sRUFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDbkQsWUFBWSxFQUFFLElBQUEsY0FBSSxFQUFDLGVBQWUsQ0FBQztJQUNuQyxTQUFTLEVBQUUsSUFBQSxtQkFBUyxFQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMxRCxXQUFXLEVBQUUsSUFBQSxtQkFBUyxFQUFDLGNBQWMsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUM5RCxVQUFVLEVBQUUsSUFBQSxpQkFBTyxFQUFDLGFBQWEsQ0FBQztJQUNsQyxNQUFNLEVBQUUsSUFBQSxlQUFLLEVBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxFQUEyQjtJQUN4RCxTQUFTLEVBQUUsSUFBQSxtQkFBUyxFQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sRUFBRTtDQUNsRixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2IsYUFBYSxFQUFFLElBQUEsZUFBSyxFQUFDLHVCQUF1QixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7SUFDbEUsUUFBUSxFQUFFLElBQUEsZUFBSyxFQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDbkQsWUFBWSxFQUFFLElBQUEsZUFBSyxFQUFDLGdCQUFnQixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7SUFDekQsU0FBUyxFQUFFLElBQUEsZUFBSyxFQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDckQsY0FBYyxFQUFFLElBQUEsZUFBSyxFQUFDLHdCQUF3QixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7SUFDckUsY0FBYyxFQUFFLElBQUEsZUFBSyxFQUFDLHdCQUF3QixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7SUFDckUsWUFBWSxFQUFFLElBQUEsZUFBSyxFQUFDLHNCQUFzQixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7SUFDL0QsaUJBQWlCLEVBQUUsSUFBQSxlQUFLLEVBQUMsNEJBQTRCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUM7SUFDeEcsa0JBQWtCLEVBQUUsSUFBQSxlQUFLLEVBQUMsNkJBQTZCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7Q0FDMUcsQ0FBQyxDQUFDLENBQUM7QUFpREo7Ozs7R0FJRztBQUNVLFFBQUEsZ0JBQWdCLEdBQUcsSUFBQSxpQkFBTyxFQUFDLHFCQUFxQixFQUFFO0lBQzdELEVBQUUsRUFBRSxJQUFBLGNBQUksRUFBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxhQUFhLEVBQUU7SUFDM0MsS0FBSyxFQUFFLElBQUEsaUJBQU8sRUFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3JFLFNBQVMsRUFBRSxJQUFBLGNBQUksRUFBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3pELFNBQVMsRUFBRSxJQUFBLG1CQUFTLEVBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFO0lBQ2pGLFNBQVMsRUFBRSxJQUFBLGNBQUksRUFBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3pELFNBQVMsRUFBRSxJQUFBLG1CQUFTLEVBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFO0lBRWpGLElBQUksRUFBRSxJQUFBLGlCQUFPLEVBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ2hELFdBQVcsRUFBRSxJQUFBLGNBQUksRUFBQyxhQUFhLENBQUM7SUFDaEMsT0FBTyxFQUFFLElBQUEsaUJBQU8sRUFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3RFLFVBQVUsRUFBRSxJQUFBLGlCQUFPLEVBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUUzRCxjQUFjLEVBQUUsSUFBQSxpQkFBTyxFQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO1NBQ3ZELEtBQUssRUFBa0IsQ0FBQyxPQUFPLENBQUMsU0FBMkIsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUN6RSxTQUFTLEVBQUUsSUFBQSxpQkFBTyxFQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDekQsUUFBUSxFQUFFLElBQUEsaUJBQU8sRUFBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3RELFNBQVMsRUFBRSxJQUFBLG1CQUFTLEVBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzFELFNBQVMsRUFBRSxJQUFBLGNBQUksRUFBQyxZQUFZLENBQUM7Q0FDOUIsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNiLFlBQVksRUFBRSxJQUFBLGVBQUssRUFBQyxrQ0FBa0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFDdkYsV0FBVyxFQUFFLElBQUEsZUFBSyxFQUFDLGdDQUFnQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7SUFDekUsb0JBQW9CLEVBQUUsSUFBQSxxQkFBVyxFQUFDLDJDQUEyQyxDQUFDO1NBQzNFLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztDQUM5QyxDQUFDLENBQUMsQ0FBQztBQUVKOzs7O0dBSUc7QUFDVSxRQUFBLGNBQWMsR0FBRyxJQUFBLGlCQUFPLEVBQUMsa0JBQWtCLEVBQUU7SUFDeEQsRUFBRSxFQUFFLElBQUEsY0FBSSxFQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLGFBQWEsRUFBRTtJQUMzQyxLQUFLLEVBQUUsSUFBQSxpQkFBTyxFQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDckUsU0FBUyxFQUFFLElBQUEsY0FBSSxFQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDekQsU0FBUyxFQUFFLElBQUEsbUJBQVMsRUFBQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLEVBQUU7SUFDakYsU0FBUyxFQUFFLElBQUEsY0FBSSxFQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDekQsU0FBUyxFQUFFLElBQUEsbUJBQVMsRUFBQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLEVBQUU7SUFFakYsZ0JBQWdCO0lBQ2hCLElBQUksRUFBRSxJQUFBLGlCQUFPLEVBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ2hELFdBQVcsRUFBRSxJQUFBLGNBQUksRUFBQyxhQUFhLENBQUM7SUFDaEMsUUFBUSxFQUFFLElBQUEsY0FBSSxFQUFDLFdBQVcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBZ0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLENBQUM7SUFDM0YsUUFBUSxFQUFFLElBQUEsaUJBQU8sRUFBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ2xELE1BQU0sRUFBRSxJQUFBLGlCQUFPLEVBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFjLENBQUMsT0FBTyxFQUFFO0lBQ3ZFLFFBQVEsRUFBRSxJQUFBLGlCQUFPLEVBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFFOUYsaUJBQWlCO0lBQ2pCLElBQUksRUFBRSxJQUFBLGVBQUssRUFBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBRTNELGFBQWE7SUFDYixhQUFhLEVBQUUsSUFBQSxtQkFBUyxFQUFDLGdCQUFnQixFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ2xFLGNBQWMsRUFBRSxJQUFBLG1CQUFTLEVBQUMsaUJBQWlCLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFFcEUsUUFBUTtJQUNSLEtBQUssRUFBRSxJQUFBLGlCQUFPLEVBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUVuRixxRUFBcUU7SUFDckUsZ0JBQWdCLEVBQUUsSUFBQSxjQUFJLEVBQUMscUJBQXFCLENBQUM7SUFFN0Msd0JBQXdCO0lBQ3hCLG9CQUFvQixFQUFFLElBQUEsaUJBQU8sRUFBQyx1QkFBdUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFFL0UseUJBQXlCO0lBQ3pCLEtBQUssRUFBRSxJQUFBLGlCQUFPLEVBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3hDLFFBQVEsRUFBRSxJQUFBLGlCQUFPLEVBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFnQjtJQUNuRSxLQUFLLEVBQUUsSUFBQSxlQUFLLEVBQUMsT0FBTyxDQUFDO0lBRXJCLCtEQUErRDtJQUMvRCxVQUFVLEVBQUUsSUFBQSxlQUFLLEVBQUMsWUFBWSxDQUFDLENBQUMsS0FBSyxFQUFtQjtJQUN4RCxhQUFhLEVBQUUsSUFBQSxpQkFBTyxFQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFxQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFFakcsd0JBQXdCO0lBQ3hCLGNBQWMsRUFBRSxJQUFBLGlCQUFPLEVBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7U0FDdkQsS0FBSyxFQUFrQixDQUFDLE9BQU8sQ0FBQyxTQUEyQixDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3pFLFNBQVMsRUFBRSxJQUFBLGlCQUFPLEVBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUN6RCxRQUFRLEVBQUUsSUFBQSxpQkFBTyxFQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDdEQsU0FBUyxFQUFFLElBQUEsbUJBQVMsRUFBQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDMUQsU0FBUyxFQUFFLElBQUEsY0FBSSxFQUFDLFlBQVksQ0FBQztDQUM5QixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2Isa0JBQWtCLEVBQUUsSUFBQSxlQUFLLEVBQUMsdUNBQXVDLENBQUM7U0FDL0QsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQ2hELFlBQVksRUFBRSxJQUFBLGVBQUssRUFBQyxnQ0FBZ0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFDckYsV0FBVyxFQUFFLElBQUEsZUFBSyxFQUFDLDhCQUE4QixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFDckUsUUFBUSxFQUFFLElBQUEsZUFBSyxFQUFDLDJCQUEyQixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDNUQsZ0JBQWdCLEVBQUUsSUFBQSxlQUFLLEVBQUMsb0NBQW9DLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQztJQUNyRixhQUFhLEVBQUUsSUFBQSxxQkFBVyxFQUFDLGlDQUFpQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQztDQUMxRixDQUFDLENBQUMsQ0FBQztBQUVKOzs7O0dBSUc7QUFDVSxRQUFBLHFCQUFxQixHQUFHLElBQUEsaUJBQU8sRUFBQyx5QkFBeUIsRUFBRTtJQUN0RSxFQUFFLEVBQUUsSUFBQSxjQUFJLEVBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsYUFBYSxFQUFFO0lBQzNDLE1BQU0sRUFBRSxJQUFBLGNBQUksRUFBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsc0JBQWMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUM7SUFDOUYsS0FBSyxFQUFFLElBQUEsaUJBQU8sRUFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDbkQsVUFBVSxFQUFFLElBQUEsaUJBQU8sRUFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSx5Q0FBeUM7SUFDdkcsYUFBYSxFQUFFLElBQUEsZUFBSyxFQUFDLGdCQUFnQixDQUFDLEVBQUUsbUNBQW1DO0lBQzNFLFNBQVMsRUFBRSxJQUFBLGNBQUksRUFBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDdkMsU0FBUyxFQUFFLElBQUEsbUJBQVMsRUFBQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLEVBQUU7Q0FDbEYsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNiLGdCQUFnQixFQUFFLElBQUEsZUFBSyxFQUFDLDBDQUEwQyxDQUFDO1NBQ2hFLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUM7SUFDcEMsZUFBZSxFQUFFLElBQUEsZUFBSyxFQUFDLHlDQUF5QyxDQUFDO1NBQzlELEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUM7SUFDbkMsU0FBUyxFQUFFLElBQUEsZUFBSyxFQUFDLHFDQUFxQyxDQUFDO1NBQ3BELEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0NBQ3BCLENBQUMsQ0FBQyxDQUFDO0FBRUo7Ozs7R0FJRztBQUNVLFFBQUEsa0JBQWtCLEdBQUcsSUFBQSxpQkFBTyxFQUFDLHNCQUFzQixFQUFFO0lBQ2hFLEVBQUUsRUFBRSxJQUFBLGNBQUksRUFBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxhQUFhLEVBQUU7SUFDM0MsS0FBSyxFQUFFLElBQUEsaUJBQU8sRUFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDbkQsTUFBTSxFQUFFLElBQUEsY0FBSSxFQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUNqQyxNQUFNLEVBQUUsSUFBQSxpQkFBTyxFQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBYyxDQUFDLE9BQU8sRUFBRTtJQUN2RSxNQUFNLEVBQUUsSUFBQSxpQkFBTyxFQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLDJDQUEyQztJQUNoRyxRQUFRLEVBQUUsSUFBQSxpQkFBTyxFQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUMvQyxVQUFVLEVBQUUsSUFBQSxpQkFBTyxFQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNuRCxNQUFNLEVBQUUsSUFBQSxpQkFBTyxFQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLHNCQUFzQjtJQUMzRSxVQUFVLEVBQUUsSUFBQSxlQUFLLEVBQUMsWUFBWSxDQUFDLENBQUMsS0FBSyxFQUE2QixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7SUFDOUUsU0FBUyxFQUFFLElBQUEsaUJBQU8sRUFBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDMUMsTUFBTSxFQUFFLElBQUEsY0FBSSxFQUFDLFNBQVMsQ0FBQyxFQUFFLHlDQUF5QztJQUNsRSxTQUFTLEVBQUUsSUFBQSxtQkFBUyxFQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sRUFBRTtDQUNsRixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2IsZUFBZSxFQUFFLElBQUEsZUFBSyxFQUFDLGtDQUFrQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQztJQUMzRixrQkFBa0IsRUFBRSxJQUFBLGVBQUssRUFBQyx3Q0FBd0MsQ0FBQztTQUNoRSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDOUMsU0FBUyxFQUFFLElBQUEsZUFBSyxFQUFDLDhCQUE4QixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7Q0FDbEUsQ0FBQyxDQUFDLENBQUM7QUFFSjs7OztHQUlHO0FBQ1UsUUFBQSxtQkFBbUIsR0FBRyxJQUFBLGlCQUFPLEVBQUMsdUJBQXVCLEVBQUU7SUFDbEUsRUFBRSxFQUFFLElBQUEsY0FBSSxFQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLGFBQWEsRUFBRTtJQUMzQyxLQUFLLEVBQUUsSUFBQSxpQkFBTyxFQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUNuRCxNQUFNLEVBQUUsSUFBQSxjQUFJLEVBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFjLENBQUMsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQzlGLFVBQVUsRUFBRSxJQUFBLGlCQUFPLEVBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFjLENBQUMsT0FBTyxFQUFFO0lBQ2hGLFFBQVEsRUFBRSxJQUFBLGNBQUksRUFBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDckMsVUFBVSxFQUFFLElBQUEsaUJBQU8sRUFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDbkQsTUFBTSxFQUFFLElBQUEsY0FBSSxFQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUNoQyxVQUFVLEVBQUUsSUFBQSxjQUFJLEVBQUMsYUFBYSxDQUFDO0lBQy9CLGVBQWUsRUFBRSxJQUFBLGNBQUksRUFBQyxrQkFBa0IsQ0FBQztJQUN6QyxNQUFNLEVBQUUsSUFBQSxpQkFBTyxFQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSwwQ0FBMEM7SUFDbEgsU0FBUyxFQUFFLElBQUEsbUJBQVMsRUFBQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDMUQsU0FBUyxFQUFFLElBQUEsY0FBSSxFQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUN2QyxTQUFTLEVBQUUsSUFBQSxtQkFBUyxFQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sRUFBRTtJQUNqRixTQUFTLEVBQUUsSUFBQSxjQUFJLEVBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3ZDLFNBQVMsRUFBRSxJQUFBLG1CQUFTLEVBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFO0NBQ2xGLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDYixtQkFBbUIsRUFBRSxJQUFBLHFCQUFXLEVBQUMsNkNBQTZDLENBQUM7U0FDNUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQ2hELFlBQVksRUFBRSxJQUFBLGVBQUssRUFBQyxxQ0FBcUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDeEYsWUFBWSxFQUFFLElBQUEsZUFBSyxFQUFDLHFDQUFxQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7SUFDOUUsV0FBVyxFQUFFLElBQUEsZUFBSyxFQUFDLG9DQUFvQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7Q0FDNUUsQ0FBQyxDQUFDLENBQUM7QUFFSjs7OztHQUlHO0FBQ1UsUUFBQSwwQkFBMEIsR0FBRyxJQUFBLGlCQUFPLEVBQUMsK0JBQStCLEVBQUU7SUFDakYsRUFBRSxFQUFFLElBQUEsY0FBSSxFQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLGFBQWEsRUFBRTtJQUMzQyxLQUFLLEVBQUUsSUFBQSxpQkFBTyxFQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUNuRCxNQUFNLEVBQUUsSUFBQSxjQUFJLEVBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFjLENBQUMsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQzlGLFlBQVksRUFBRSxJQUFBLGNBQUksRUFBQyxlQUFlLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDN0MsWUFBWSxFQUFFLElBQUEsbUJBQVMsRUFBQyxlQUFlLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLEVBQUU7SUFDdkYsUUFBUSxFQUFFLElBQUEsaUJBQU8sRUFBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3RELGFBQWEsRUFBRSxJQUFBLGVBQUssRUFBQyxnQkFBZ0IsQ0FBQyxDQUFDLEtBQUssRUFBMkI7SUFDdkUsY0FBYyxFQUFFLElBQUEsbUJBQVMsRUFBQyxpQkFBaUIsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNwRSxjQUFjLEVBQUUsSUFBQSxjQUFJLEVBQUMsaUJBQWlCLENBQUM7Q0FDeEMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNiLGFBQWEsRUFBRSxJQUFBLHFCQUFXLEVBQUMscUNBQXFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQy9GLFlBQVksRUFBRSxJQUFBLGVBQUssRUFBQyxvQ0FBb0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFDekYsT0FBTyxFQUFFLElBQUEsZUFBSyxFQUFDLDhCQUE4QixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7Q0FDaEUsQ0FBQyxDQUFDLENBQUM7QUFFSjs7OztHQUlHO0FBQ1UsUUFBQSxjQUFjLEdBQUcsSUFBQSxpQkFBTyxFQUFDLGtCQUFrQixFQUFFO0lBQ3hELEVBQUUsRUFBRSxJQUFBLGNBQUksRUFBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxhQUFhLEVBQUU7SUFDM0MsS0FBSyxFQUFFLElBQUEsaUJBQU8sRUFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDbkQsTUFBTSxFQUFFLElBQUEsaUJBQU8sRUFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSwwQkFBMEI7SUFDL0UsTUFBTSxFQUFFLElBQUEsZUFBSyxFQUFDLFFBQVEsQ0FBQyxFQUFFLDJDQUEyQztJQUNwRSxNQUFNLEVBQUUsSUFBQSxpQkFBTyxFQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxxREFBcUQ7SUFDN0gsV0FBVyxFQUFFLElBQUEsaUJBQU8sRUFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxrREFBa0Q7SUFDbEgsTUFBTSxFQUFFLElBQUEsY0FBSSxFQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUNqQyxhQUFhLEVBQUUsSUFBQSxpQkFBTyxFQUFDLGdCQUFnQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUM3RCxpQkFBaUIsRUFBRSxJQUFBLGlCQUFPLEVBQUMsb0JBQW9CLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3JFLFNBQVMsRUFBRSxJQUFBLGlCQUFPLEVBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUNyRCxTQUFTLEVBQUUsSUFBQSxpQkFBTyxFQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDckQsVUFBVSxFQUFFLElBQUEsaUJBQU8sRUFBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3ZELFNBQVMsRUFBRSxJQUFBLG1CQUFTLEVBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzFELFdBQVcsRUFBRSxJQUFBLG1CQUFTLEVBQUMsY0FBYyxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzlELFdBQVcsRUFBRSxJQUFBLG1CQUFTLEVBQUMsY0FBYyxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzlELFdBQVcsRUFBRSxJQUFBLGNBQUksRUFBQyxjQUFjLENBQUM7SUFDakMsU0FBUyxFQUFFLElBQUEsbUJBQVMsRUFBQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLEVBQUU7Q0FDbEYsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNiLGVBQWUsRUFBRSxJQUFBLGVBQUssRUFBQyxpQ0FBaUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUM7SUFDMUYsWUFBWSxFQUFFLElBQUEsZUFBSyxFQUFDLGdDQUFnQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztDQUNwRixDQUFDLENBQUMsQ0FBQztBQUVKOzs7O0dBSUc7QUFDVSxRQUFBLHNCQUFzQixHQUFHLElBQUEsaUJBQU8sRUFBQywyQkFBMkIsRUFBRTtJQUN6RSxFQUFFLEVBQUUsSUFBQSxjQUFJLEVBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsYUFBYSxFQUFFO0lBQzNDLEtBQUssRUFBRSxJQUFBLGlCQUFPLEVBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ25ELE1BQU0sRUFBRSxJQUFBLGlCQUFPLEVBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsMEJBQTBCO0lBQy9FLGNBQWMsRUFBRSxJQUFBLGlCQUFPLEVBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDckUsUUFBUSxFQUFFLElBQUEsaUJBQU8sRUFBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3RELFNBQVMsRUFBRSxJQUFBLG1CQUFTLEVBQUMsYUFBYSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzNELFNBQVMsRUFBRSxJQUFBLG1CQUFTLEVBQUMsYUFBYSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzNELFNBQVMsRUFBRSxJQUFBLGNBQUksRUFBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDdkMsU0FBUyxFQUFFLElBQUEsbUJBQVMsRUFBQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLEVBQUU7SUFDakYsU0FBUyxFQUFFLElBQUEsY0FBSSxFQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUN2QyxTQUFTLEVBQUUsSUFBQSxtQkFBUyxFQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sRUFBRTtDQUNsRixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2IsZ0JBQWdCLEVBQUUsSUFBQSxlQUFLLEVBQUMsMENBQTBDLENBQUM7U0FDaEUsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQztJQUN0QyxNQUFNLEVBQUUsSUFBQSxlQUFLLEVBQUMsa0NBQWtDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztDQUNsRSxDQUFDLENBQUMsQ0FBQztBQUVKOzs7O0dBSUc7QUFDVSxRQUFBLGdDQUFnQyxHQUFHLElBQUEsaUJBQU8sRUFBQyxxQ0FBcUMsRUFBRTtJQUM3RixFQUFFLEVBQUUsSUFBQSxjQUFJLEVBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsYUFBYSxFQUFFO0lBQzNDLEtBQUssRUFBRSxJQUFBLGlCQUFPLEVBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFO0lBQzVELGFBQWEsRUFBRSxJQUFBLGlCQUFPLEVBQUMsaUJBQWlCLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ2pFLGVBQWUsRUFBRSxJQUFBLGlCQUFPLEVBQUMsbUJBQW1CLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3RFLFVBQVUsRUFBRSxJQUFBLGlCQUFPLEVBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLDZCQUE2QjtJQUNoSCxjQUFjLEVBQUUsSUFBQSxpQkFBTyxFQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQzNELFlBQVksRUFBRSxJQUFBLG1CQUFTLEVBQUMsZ0JBQWdCLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDakUsV0FBVyxFQUFFLElBQUEsZUFBSyxFQUFDLGNBQWMsQ0FBQyxDQUFDLEtBQUssRUFBWSxFQUFFLHdCQUF3QjtJQUM5RSxVQUFVLEVBQUUsSUFBQSxpQkFBTyxFQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNuRCxhQUFhLEVBQUUsSUFBQSxpQkFBTyxFQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3pELFNBQVMsRUFBRSxJQUFBLG1CQUFTLEVBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFO0lBQ2pGLFNBQVMsRUFBRSxJQUFBLG1CQUFTLEVBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFO0NBQ2xGLENBQUMsQ0FBQztBQUVIOzs7O0dBSUc7QUFDVSxRQUFBLHlCQUF5QixHQUFHLElBQUEsaUJBQU8sRUFBQyw2QkFBNkIsRUFBRTtJQUM5RSxFQUFFLEVBQUUsSUFBQSxjQUFJLEVBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsYUFBYSxFQUFFO0lBQzNDLEtBQUssRUFBRSxJQUFBLGlCQUFPLEVBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ25ELE9BQU8sRUFBRSxJQUFBLGlCQUFPLEVBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsNEJBQTRCO0lBQ25GLE1BQU0sRUFBRSxJQUFBLGlCQUFPLEVBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsMEJBQTBCO0lBQy9FLE9BQU8sRUFBRSxJQUFBLGVBQUssRUFBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQTJCLENBQUMsT0FBTyxFQUFFO0lBQ3BFLG1CQUFtQixFQUFFLElBQUEsaUJBQU8sRUFBQyx1QkFBdUIsQ0FBQztJQUNyRCxZQUFZLEVBQUUsSUFBQSxjQUFJLEVBQUMsZUFBZSxDQUFDO0lBQ25DLFVBQVUsRUFBRSxJQUFBLGlCQUFPLEVBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUN2RCxXQUFXLEVBQUUsSUFBQSxtQkFBUyxFQUFDLGVBQWUsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMvRCxjQUFjLEVBQUUsSUFBQSxjQUFJLEVBQUMsa0JBQWtCLENBQUM7SUFDeEMsU0FBUyxFQUFFLElBQUEsbUJBQVMsRUFBQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLEVBQUU7Q0FDbEYsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNiLGVBQWUsRUFBRSxJQUFBLGVBQUssRUFBQyx5Q0FBeUMsQ0FBQztTQUM5RCxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDO0lBQ25DLGNBQWMsRUFBRSxJQUFBLGVBQUssRUFBQywwQ0FBMEMsQ0FBQztTQUM5RCxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDO0lBQ3RDLGVBQWUsRUFBRSxJQUFBLGVBQUssRUFBQywyQ0FBMkMsQ0FBQztTQUNoRSxFQUFFLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQztDQUM1QixDQUFDLENBQUMsQ0FBQztBQVNTLFFBQUEsY0FBYyxHQUFHLElBQUEsaUJBQU8sRUFBQyxrQkFBa0IsRUFBRTtJQUN4RCxFQUFFLEVBQUUsSUFBQSxjQUFJLEVBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsYUFBYSxFQUFFO0lBQzNDLEtBQUssRUFBRSxJQUFBLGlCQUFPLEVBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ25ELE1BQU0sRUFBRSxJQUFBLGNBQUksRUFBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDakMsSUFBSSxFQUFFLElBQUEsaUJBQU8sRUFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQXNCLENBQUMsT0FBTyxFQUFFO0lBQzNFLFNBQVMsRUFBRSxJQUFBLGNBQUksRUFBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDdkMsU0FBUyxFQUFFLElBQUEsbUJBQVMsRUFBQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLEVBQUU7SUFDakYsU0FBUyxFQUFFLElBQUEsbUJBQVMsRUFBQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLEVBQUU7Q0FDbEYsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNiLGFBQWEsRUFBRSxJQUFBLHFCQUFXLEVBQUMsaUNBQWlDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQzNGLFVBQVUsRUFBRSxJQUFBLGVBQUssRUFBQyw4QkFBOEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUM7Q0FDOUUsQ0FBQyxDQUFDLENBQUM7QUFFSjs7OztHQUlHO0FBQ1UsUUFBQSxnQkFBZ0IsR0FBRyxJQUFBLGlCQUFPLEVBQUMsb0JBQW9CLEVBQUU7SUFDNUQsRUFBRSxFQUFFLElBQUEsY0FBSSxFQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLGFBQWEsRUFBRTtJQUMzQyxLQUFLLEVBQUUsSUFBQSxpQkFBTyxFQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUNuRCxVQUFVLEVBQUUsSUFBQSxpQkFBTyxFQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLGdEQUFnRDtJQUM5RyxNQUFNLEVBQUUsSUFBQSxpQkFBTyxFQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLDBCQUEwQjtJQUMvRSxRQUFRLEVBQUUsSUFBQSxtQkFBUyxFQUFDLFdBQVcsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN4RCxNQUFNLEVBQUUsSUFBQSxtQkFBUyxFQUFDLFNBQVMsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNwRCxXQUFXLEVBQUUsSUFBQSxtQkFBUyxFQUFDLGNBQWMsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUM5RCxTQUFTLEVBQUUsSUFBQSxtQkFBUyxFQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMxRCxJQUFJLEVBQUUsSUFBQSxlQUFLLEVBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUEyQixDQUFDLE9BQU8sRUFBRTtJQUM5RCxNQUFNLEVBQUUsSUFBQSxpQkFBTyxFQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxhQUFhO0lBQ2xGLFdBQVcsRUFBRSxJQUFBLGNBQUksRUFBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDM0MsU0FBUyxFQUFFLElBQUEsbUJBQVMsRUFBQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLEVBQUU7Q0FDbEYsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNiLGVBQWUsRUFBRSxJQUFBLGVBQUssRUFBQyxtQ0FBbUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUM7Q0FDN0YsQ0FBQyxDQUFDLENBQUM7QUFFSjs7OztHQUlHO0FBQ1UsUUFBQSx3QkFBd0IsR0FBRyxJQUFBLGlCQUFPLEVBQUMsNkJBQTZCLEVBQUU7SUFDN0UsRUFBRSxFQUFFLElBQUEsY0FBSSxFQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLGFBQWEsRUFBRTtJQUMzQyxLQUFLLEVBQUUsSUFBQSxpQkFBTyxFQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUNuRCxVQUFVLEVBQUUsSUFBQSxpQkFBTyxFQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLHFCQUFxQjtJQUNuRixNQUFNLEVBQUUsSUFBQSxpQkFBTyxFQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLDBCQUEwQjtJQUMvRSxNQUFNLEVBQUUsSUFBQSxpQkFBTyxFQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDbkUsY0FBYyxFQUFFLElBQUEsaUJBQU8sRUFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUNyRSxRQUFRLEVBQUUsSUFBQSxpQkFBTyxFQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDdEQsU0FBUyxFQUFFLElBQUEsbUJBQVMsRUFBQyxhQUFhLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDM0QsU0FBUyxFQUFFLElBQUEsbUJBQVMsRUFBQyxhQUFhLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDM0QsU0FBUyxFQUFFLElBQUEsZUFBSyxFQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssRUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxvQkFBb0I7SUFDNUYsU0FBUyxFQUFFLElBQUEsY0FBSSxFQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUN2QyxTQUFTLEVBQUUsSUFBQSxtQkFBUyxFQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sRUFBRTtJQUNqRixTQUFTLEVBQUUsSUFBQSxjQUFJLEVBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3ZDLFNBQVMsRUFBRSxJQUFBLG1CQUFTLEVBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFO0NBQ2xGLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDYixnQkFBZ0IsRUFBRSxJQUFBLGVBQUssRUFBQyw0Q0FBNEMsQ0FBQztTQUNsRSxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDO0lBQ3RDLE1BQU0sRUFBRSxJQUFBLGVBQUssRUFBQyxvQ0FBb0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO0NBQ3BFLENBQUMsQ0FBQyxDQUFDO0FBRUo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDVSxRQUFBLFNBQVMsR0FBRyxJQUFBLGlCQUFPLEVBQUMsWUFBWSxFQUFFO0lBQzdDLEVBQUUsRUFBRSxJQUFBLGNBQUksRUFBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxhQUFhLEVBQUU7SUFFM0MsZ0JBQWdCO0lBQ2hCLEtBQUssRUFBRSxJQUFBLGlCQUFPLEVBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO1NBQ3RDLE9BQU8sQ0FBQyxRQUFRLENBQUM7U0FDakIsT0FBTyxFQUFFO0lBQ1osU0FBUyxFQUFFLElBQUEsY0FBSSxFQUFDLFlBQVksQ0FBQztTQUMxQixPQUFPLENBQUMsUUFBUSxDQUFDO1NBQ2pCLE9BQU8sRUFBRTtJQUNaLFNBQVMsRUFBRSxJQUFBLG1CQUFTLEVBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO1NBQ3ZELFVBQVUsRUFBRTtTQUNaLE9BQU8sRUFBRTtJQUNaLFNBQVMsRUFBRSxJQUFBLGNBQUksRUFBQyxZQUFZLENBQUM7U0FDMUIsT0FBTyxDQUFDLFFBQVEsQ0FBQztTQUNqQixPQUFPLEVBQUU7SUFDWixTQUFTLEVBQUUsSUFBQSxtQkFBUyxFQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUN2RCxVQUFVLEVBQUU7U0FDWixPQUFPLEVBQUU7SUFFWixXQUFXO0lBQ1gsSUFBSSxFQUFFLElBQUEsaUJBQU8sRUFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7U0FDbkMsT0FBTyxFQUFFO0lBQ1osV0FBVyxFQUFFLElBQUEsY0FBSSxFQUFDLGFBQWEsQ0FBQztJQUVoQyxzREFBc0Q7SUFDdEQscURBQXFEO0lBQ3JELFVBQVUsRUFBRSxJQUFBLGVBQUssRUFBQyxhQUFhLENBQUM7U0FDN0IsS0FBSyxFQUFnRztTQUNyRyxPQUFPLENBQUMsRUFBRSxDQUFDO1NBQ1gsT0FBTyxFQUFFO0lBRVosc0VBQXNFO0lBQ3RFLHlFQUF5RTtJQUN6RSw4QkFBOEI7SUFDOUIsVUFBVSxFQUFFLElBQUEsaUJBQU8sRUFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7U0FDOUMsS0FBSyxFQUFnQztTQUNyQyxPQUFPLENBQUMsU0FBUyxDQUFDO1NBQ2xCLE9BQU8sRUFBRTtJQUVaLDREQUE0RDtJQUM1RCxTQUFTLEVBQUUsSUFBQSxtQkFBUyxFQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMxRCxTQUFTLEVBQUUsSUFBQSxjQUFJLEVBQUMsWUFBWSxDQUFDO0NBQzlCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDYiwwRUFBMEU7SUFDMUUsZ0JBQWdCLEVBQUUsSUFBQSxlQUFLLEVBQUMsOEJBQThCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDO0lBQ3pGLDhDQUE4QztJQUM5QyxZQUFZLEVBQUUsSUFBQSxlQUFLLEVBQUMsMEJBQTBCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztJQUNuRSx5RUFBeUU7SUFDekUsdUVBQXVFO0lBQ3ZFLGtCQUFrQjtJQUNsQixVQUFVLEVBQUUsSUFBQSxxQkFBVyxFQUFDLDJCQUEyQixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQztDQUNqRixDQUFDLENBQUMsQ0FBQztBQUVKOzs7Ozs7O0dBT0c7QUFDVSxRQUFBLGNBQWMsR0FBRyxJQUFBLGlCQUFPLEVBQUMsa0JBQWtCLEVBQUU7SUFDeEQsRUFBRSxFQUFFLElBQUEsY0FBSSxFQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLGFBQWEsRUFBRTtJQUMzQyxXQUFXLEVBQUUsSUFBQSxjQUFJLEVBQUMsY0FBYyxDQUFDO1NBQzlCLE9BQU8sRUFBRTtJQUNaLHdFQUF3RTtJQUN4RSxrQ0FBa0M7SUFDbEMsUUFBUSxFQUFFLElBQUEsaUJBQU8sRUFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7U0FDNUMsT0FBTyxFQUFFO0lBQ1oscUVBQXFFO0lBQ3JFLHVFQUF1RTtJQUN2RSxPQUFPLEVBQUUsSUFBQSxpQkFBTyxFQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztTQUN6QyxPQUFPLENBQUMsTUFBTSxDQUFDO1NBQ2YsT0FBTyxFQUFFO0lBQ1osS0FBSyxFQUFFLElBQUEsaUJBQU8sRUFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7U0FDckMsT0FBTyxFQUFFO0lBQ1osdUVBQXVFO0lBQ3ZFLElBQUksRUFBRSxJQUFBLGlCQUFPLEVBQUMsTUFBTSxDQUFDO1NBQ2xCLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDVixPQUFPLEVBQUU7SUFDWixvRUFBb0U7SUFDcEUsT0FBTyxFQUFFLElBQUEsaUJBQU8sRUFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDNUMsNkRBQTZEO0lBQzdELE1BQU0sRUFBRSxJQUFBLGlCQUFPLEVBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ3pDLHVFQUF1RTtJQUN2RSxRQUFRLEVBQUUsSUFBQSxpQkFBTyxFQUFDLFVBQVUsQ0FBQztTQUMxQixPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQ1YsT0FBTyxFQUFFO0lBQ1oseUVBQXlFO0lBQ3pFLDBFQUEwRTtJQUMxRSw2QkFBNkI7SUFDN0IsSUFBSSxFQUFFLElBQUEsZUFBSyxFQUFDLE1BQU0sQ0FBQztTQUNoQixLQUFLLEVBQTBCO1NBQy9CLE9BQU8sQ0FBQyxFQUFFLENBQUM7U0FDWCxPQUFPLEVBQUU7Q0FDYixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2Isa0VBQWtFO0lBQ2xFLG9CQUFvQixFQUFFLElBQUEsZUFBSyxFQUFDLHdDQUF3QyxDQUFDO1NBQ2xFLEVBQUUsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUM7Q0FDekMsQ0FBQyxDQUFDLENBQUM7QUFFSjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFDVSxRQUFBLG1CQUFtQixHQUFHLElBQUEsaUJBQU8sRUFBQyx3QkFBd0IsRUFBRTtJQUNuRSxFQUFFLEVBQUUsSUFBQSxjQUFJLEVBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsYUFBYSxFQUFFO0lBQzNDLEtBQUssRUFBRSxJQUFBLGlCQUFPLEVBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBRW5ELFNBQVMsRUFBRSxJQUFBLGNBQUksRUFBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDdkMsU0FBUyxFQUFFLElBQUEsbUJBQVMsRUFBQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7U0FDdkQsVUFBVSxFQUFFO1NBQ1osT0FBTyxFQUFFO0lBQ1osU0FBUyxFQUFFLElBQUEsY0FBSSxFQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUN2QyxTQUFTLEVBQUUsSUFBQSxtQkFBUyxFQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUN2RCxVQUFVLEVBQUU7U0FDWixPQUFPLEVBQUU7SUFFWjt5REFDcUQ7SUFDckQsT0FBTyxFQUFFLElBQUEsaUJBQU8sRUFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7U0FDeEMsS0FBSyxFQUFrQztTQUN2QyxPQUFPLEVBQUU7SUFDWix3RkFBd0Y7SUFDeEYsTUFBTSxFQUFFLElBQUEsY0FBSSxFQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDNUMsK0NBQStDO0lBQy9DLEtBQUssRUFBRSxJQUFBLGlCQUFPLEVBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBRWxEOzhFQUMwRTtJQUMxRSxXQUFXLEVBQUUsSUFBQSxpQkFBTyxFQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztTQUNqRCxLQUFLLEVBQTBCO1NBQy9CLE9BQU8sQ0FBQyxTQUFTLENBQUM7U0FDbEIsT0FBTyxFQUFFO0lBQ1osT0FBTyxFQUFFLElBQUEsaUJBQU8sRUFBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBRW5ELGdFQUFnRTtJQUNoRSxTQUFTLEVBQUUsSUFBQSxtQkFBUyxFQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMxRCxTQUFTLEVBQUUsSUFBQSxjQUFJLEVBQUMsWUFBWSxDQUFDO0NBQzlCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDYix5Q0FBeUM7SUFDekMsTUFBTSxFQUFFLElBQUEsZUFBSyxFQUFDLCtCQUErQixDQUFDO1NBQzNDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUM7Q0FDbEMsQ0FBQyxDQUFDLENBQUM7QUFFSjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFDVSxRQUFBLFlBQVksR0FBRyxJQUFBLGlCQUFPLEVBQUMsaUJBQWlCLEVBQUU7SUFDckQsRUFBRSxFQUFFLElBQUEsY0FBSSxFQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLGFBQWEsRUFBRTtJQUMzQyxLQUFLLEVBQUUsSUFBQSxpQkFBTyxFQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUVuRCxTQUFTLEVBQUUsSUFBQSxjQUFJLEVBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3ZDLFNBQVMsRUFBRSxJQUFBLG1CQUFTLEVBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFO0lBQ2pGLFNBQVMsRUFBRSxJQUFBLGNBQUksRUFBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDdkMsU0FBUyxFQUFFLElBQUEsbUJBQVMsRUFBQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLEVBQUU7SUFFakY7O2tDQUU4QjtJQUM5QixJQUFJLEVBQUUsSUFBQSxpQkFBTyxFQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUNoRCxvRUFBb0U7SUFDcEUsSUFBSSxFQUFFLElBQUEsY0FBSSxFQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUM1Qix5RUFBeUU7SUFDekUsV0FBVyxFQUFFLElBQUEsaUJBQU8sRUFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQzVFLHlFQUF5RTtJQUN6RSxRQUFRLEVBQUUsSUFBQSxpQkFBTyxFQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztTQUMxQyxLQUFLLEVBQTBCO1NBQy9CLE9BQU8sQ0FBQyxTQUFTLENBQUM7U0FDbEIsT0FBTyxFQUFFO0lBQ1osa0VBQWtFO0lBQ2xFLE9BQU8sRUFBRSxJQUFBLGNBQUksRUFBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDbEMsbUVBQW1FO0lBQ25FLFdBQVcsRUFBRSxJQUFBLGNBQUksRUFBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBRXRELG1GQUFtRjtJQUNuRixPQUFPLEVBQUUsSUFBQSxpQkFBTyxFQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFFbkQsd0RBQXdEO0lBQ3hELFNBQVMsRUFBRSxJQUFBLG1CQUFTLEVBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzFELFNBQVMsRUFBRSxJQUFBLGNBQUksRUFBQyxZQUFZLENBQUM7Q0FDOUIsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNiLHNEQUFzRDtJQUN0RCxhQUFhLEVBQUUsSUFBQSxlQUFLLEVBQUMsZ0NBQWdDLENBQUM7U0FDbkQsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUNqQyxxRUFBcUU7SUFDckUsU0FBUyxFQUFFLElBQUEscUJBQVcsRUFBQyw0QkFBNEIsQ0FBQztTQUNqRCxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDO1NBQzNCLEtBQUssQ0FBQyxJQUFBLGlCQUFHLEVBQUEsb0JBQW9CLENBQUM7Q0FDbEMsQ0FBQyxDQUFDLENBQUM7QUFFSjs7R0FFRztBQUNVLFFBQUEsTUFBTSxHQUFHO0lBQ3BCLE1BQU0sRUFBTixjQUFNO0lBQ04sUUFBUSxFQUFSLGdCQUFRO0lBQ1IsT0FBTyxFQUFQLGVBQU87SUFDUCxnQkFBZ0IsRUFBaEIsd0JBQWdCO0lBQ2hCLGFBQWEsRUFBYixxQkFBYTtJQUNiLG1GQUFtRjtJQUNuRixTQUFTLEVBQVQsaUJBQVM7SUFDVCxjQUFjLEVBQWQsc0JBQWM7SUFDZCxrRUFBa0U7SUFDbEUsbUJBQW1CLEVBQW5CLDJCQUFtQjtJQUNuQixzRUFBc0U7SUFDdEUsWUFBWSxFQUFaLG9CQUFZO0lBQ1osb0JBQW9CO0lBQ3BCLGdCQUFnQixFQUFoQix3QkFBZ0I7SUFDaEIsY0FBYyxFQUFkLHNCQUFjO0lBQ2QscUJBQXFCLEVBQXJCLDZCQUFxQjtJQUNyQixrQkFBa0IsRUFBbEIsMEJBQWtCO0lBQ2xCLG1CQUFtQixFQUFuQiwyQkFBbUI7SUFDbkIsMEJBQTBCLEVBQTFCLGtDQUEwQjtJQUMxQixjQUFjLEVBQWQsc0JBQWM7SUFDZCxzQkFBc0IsRUFBdEIsOEJBQXNCO0lBQ3RCLGdDQUFnQyxFQUFoQyx3Q0FBZ0M7SUFDaEMseUJBQXlCLEVBQXpCLGlDQUF5QjtJQUN6QixjQUFjLEVBQWQsc0JBQWM7SUFDZCxnQkFBZ0IsRUFBaEIsd0JBQWdCO0lBQ2hCLHdCQUF3QixFQUF4QixnQ0FBd0I7Q0FDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBBY2Nlc3NNb2RpZmllciwgQ29tcHV0ZVR5cGUsIFBsdWdpblR5cGUsIE1ldGFEYXRhVHlwZSB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB7IHNxbCB9IGZyb20gJ2RyaXp6bGUtb3JtJztcbmltcG9ydCB7IGJvb2xlYW4sIGludGVnZXIsIHZhcmNoYXIsIHBnVGFibGUsIHRleHQsIHRpbWVzdGFtcCwgdXVpZCwganNvbmIsIGluZGV4LCB1bmlxdWVJbmRleCwgY2hlY2sgfSBmcm9tICdkcml6emxlLW9ybS9wZy1jb3JlJztcblxuLyoqXG4gKiBQaXBlbGluZSBidWlsZGVyIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBzdG9yZWQgaW4gZGF0YWJhc2UuXG4gKiBNaXJyb3JzIHRoZSBjYW5vbmljYWwgQnVpbGRlclByb3BzIGZyb20gcGlwZWxpbmUtY29yZSAoSlNPTi1zZXJpYWxpemFibGUgZm9ybSkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZWxpbmVCdWlsZGVyQ29uZmlnIHtcbiAgcmVhZG9ubHkgcHJvamVjdDogc3RyaW5nO1xuICByZWFkb25seSBvcmdhbml6YXRpb246IHN0cmluZztcbiAgcmVhZG9ubHkgcGlwZWxpbmVOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBnbG9iYWw/OiBNZXRhRGF0YVR5cGU7XG4gIHJlYWRvbmx5IHN5bnRoOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgcmVhZG9ubHkgZGVmYXVsdHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgcmVhZG9ubHkgcm9sZT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICByZWFkb25seSBzdGFnZXM/OiBQaXBlbGluZVN0YWdlQ29uZmlnW107XG59XG5cbi8qKlxuICogU3RhZ2UgY29uZmlndXJhdGlvbiBzdG9yZWQgaW4gZGF0YWJhc2UgKEpTT04tc2VyaWFsaXphYmxlKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQaXBlbGluZVN0YWdlQ29uZmlnIHtcbiAgcmVhZG9ubHkgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFsaWFzPzogc3RyaW5nO1xuICByZWFkb25seSBzdGVwczogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXTtcbn1cblxuLyoqXG4gKiBTZWNyZXQgcmVxdWlyZW1lbnQgZm9yIGEgcGx1Z2luLlxuICogRGVjbGFyZXMgbmFtZWQgc2VjcmV0cyB0aGUgcGx1Z2luIGV4cGVjdHMgYXQgYnVpbGQgdGltZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5TZWNyZXQge1xuICBuYW1lOiBzdHJpbmc7XG4gIHJlcXVpcmVkOiBib29sZWFuO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUYWJsZSBmb3Igc3RvcmluZyByZXVzYWJsZSBwbHVnaW4gY29uZmlndXJhdGlvbnMuXG4gKiBQbHVnaW5zIGRlZmluZSB0aGUgYmVoYXZpb3Igb2Ygc3ludGgvYnVpbGQgc3RlcHMgaW4gQ0RLIHBpcGVsaW5lcy5cbiAqXG4gKiBGZWF0dXJlcyAqIC0gVmVyc2lvbmluZyBzdXBwb3J0IHdpdGggc2VtYW50aWMgdmVyc2lvbmluZ1xuICogLSBBY2Nlc3MgY29udHJvbCB2aWEgb3JnSWQgYW5kIGFjY2Vzc01vZGlmaWVyXG4gKiAtIEZ1bGwgYXVkaXQgdHJhaWwgKGNyZWF0ZWQvdXBkYXRlZCBieS9hdClcbiAqIC0gRmxleGlibGUgbWV0YWRhdGEgc3RvcmFnZSB2aWEgSlNPTkJcbiAqIC0gU3VwcG9ydCBmb3IgYm90aCBTaGVsbFN0ZXAgYW5kIENvZGVCdWlsZFN0ZXAgdHlwZXNcbiAqXG4gKiBAdGFibGUgcGx1Z2luc1xuICovXG5leHBvcnQgY29uc3QgcGx1Z2luID0gcGdUYWJsZSgncGx1Z2lucycsIHtcbiAgLy8gUHJpbWFyeSBrZXlcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcblxuICAvLyBPcmdhbml6YXRpb24gYW5kIGFjY2VzcyBjb250cm9sXG4gIG9yZ0lkOiB2YXJjaGFyKCdvcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pXG4gICAgLmRlZmF1bHQoJ3N5c3RlbScpXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBBdWRpdCBmaWVsZHNcbiAgY3JlYXRlZEJ5OiB0ZXh0KCdjcmVhdGVkX2J5JylcbiAgICAuZGVmYXVsdCgnc3lzdGVtJylcbiAgICAubm90TnVsbCgpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pXG4gICAgLmRlZmF1bHROb3coKVxuICAgIC5ub3ROdWxsKCksXG4gIHVwZGF0ZWRCeTogdGV4dCgndXBkYXRlZF9ieScpXG4gICAgLmRlZmF1bHQoJ3N5c3RlbScpXG4gICAgLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KVxuICAgIC5kZWZhdWx0Tm93KClcbiAgICAubm90TnVsbCgpLFxuXG4gIC8vIENvcmUgcGx1Z2luIGluZm9ybWF0aW9uXG4gIG5hbWU6IHZhcmNoYXIoJ25hbWUnLCB7IGxlbmd0aDogMjU1IH0pXG4gICAgLm5vdE51bGwoKSxcbiAgZGVzY3JpcHRpb246IHRleHQoJ2Rlc2NyaXB0aW9uJyksXG4gIGtleXdvcmRzOiBqc29uYigna2V5d29yZHMnKVxuICAgIC4kdHlwZTxzdHJpbmdbXT4oKVxuICAgIC5kZWZhdWx0KFtdKVxuICAgIC5ub3ROdWxsKCksXG4gIHZlcnNpb246IHZhcmNoYXIoJ3ZlcnNpb24nLCB7IGxlbmd0aDogNTAgfSlcbiAgICAuZGVmYXVsdCgnMS4wLjAnKVxuICAgIC5ub3ROdWxsKCksXG5cbiAgLy8gUGx1Z2luIGNsYXNzaWZpY2F0aW9uXG4gIGNhdGVnb3J5OiB2YXJjaGFyKCdjYXRlZ29yeScsIHsgbGVuZ3RoOiA1MCB9KVxuICAgIC5kZWZhdWx0KCd1bmtub3duJylcbiAgICAubm90TnVsbCgpLFxuXG4gIC8vIFBsdWdpbiBjb25maWd1cmF0aW9uXG4gIG1ldGFkYXRhOiBqc29uYignbWV0YWRhdGEnKVxuICAgIC4kdHlwZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPj4oKVxuICAgIC5kZWZhdWx0KHt9KVxuICAgIC5ub3ROdWxsKCksXG4gIHBsdWdpblR5cGU6IHZhcmNoYXIoJ3BsdWdpbl90eXBlJywgeyBsZW5ndGg6IDUwIH0pXG4gICAgLiR0eXBlPFBsdWdpblR5cGU+KClcbiAgICAuZGVmYXVsdCgnQ29kZUJ1aWxkU3RlcCcgYXMgUGx1Z2luVHlwZSlcbiAgICAubm90TnVsbCgpLFxuICBjb21wdXRlVHlwZTogdmFyY2hhcignY29tcHV0ZV90eXBlJywgeyBsZW5ndGg6IDUwIH0pXG4gICAgLiR0eXBlPENvbXB1dGVUeXBlPigpXG4gICAgLmRlZmF1bHQoJ1NNQUxMJyBhcyBDb21wdXRlVHlwZSlcbiAgICAubm90TnVsbCgpLFxuICB0aW1lb3V0OiBpbnRlZ2VyKCd0aW1lb3V0JyksXG4gIGZhaWx1cmVCZWhhdmlvcjogdmFyY2hhcignZmFpbHVyZV9iZWhhdmlvcicsIHsgbGVuZ3RoOiAxMCB9KVxuICAgIC4kdHlwZTwnZmFpbCcgfCAnd2FybicgfCAnaWdub3JlJz4oKVxuICAgIC5kZWZhdWx0KCdmYWlsJylcbiAgICAubm90TnVsbCgpLFxuICBzZWNyZXRzOiBqc29uYignc2VjcmV0cycpXG4gICAgLiR0eXBlPFBsdWdpblNlY3JldFtdPigpXG4gICAgLmRlZmF1bHQoW10pXG4gICAgLm5vdE51bGwoKSxcbiAgcHJpbWFyeU91dHB1dERpcmVjdG9yeTogdmFyY2hhcigncHJpbWFyeV9vdXRwdXRfZGlyZWN0b3J5JywgeyBsZW5ndGg6IDI4IH0pLFxuXG4gIC8vIEJ1aWxkIGNvbmZpZ3VyYXRpb25cbiAgZW52OiBqc29uYignZW52JylcbiAgICAuJHR5cGU8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oKVxuICAgIC5kZWZhdWx0KHt9KVxuICAgIC5ub3ROdWxsKCksXG4gIGJ1aWxkQXJnczoganNvbmIoJ2J1aWxkX2FyZ3MnKVxuICAgIC4kdHlwZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PigpXG4gICAgLmRlZmF1bHQoe30pXG4gICAgLm5vdE51bGwoKSxcbiAgaW5zdGFsbENvbW1hbmRzOiB0ZXh0KCdpbnN0YWxsX2NvbW1hbmRzJylcbiAgICAuYXJyYXkoKVxuICAgIC5kZWZhdWx0KFtdKVxuICAgIC5ub3ROdWxsKCksXG4gIGNvbW1hbmRzOiB0ZXh0KCdjb21tYW5kcycpXG4gICAgLmFycmF5KClcbiAgICAuZGVmYXVsdChbXSlcbiAgICAubm90TnVsbCgpLFxuXG4gIC8vIERvY2tlciBjb25maWd1cmF0aW9uXG4gIGRvY2tlcmZpbGU6IHRleHQoJ2RvY2tlcmZpbGUnKSxcbiAgYnVpbGRUeXBlOiB2YXJjaGFyKCdidWlsZF90eXBlJywgeyBsZW5ndGg6IDIwIH0pXG4gICAgLmRlZmF1bHQoJ2J1aWxkX2ltYWdlJylcbiAgICAubm90TnVsbCgpLFxuXG4gIC8vIEFjY2VzcyBhbmQgdmlzaWJpbGl0eVxuICBhY2Nlc3NNb2RpZmllcjogdmFyY2hhcignYWNjZXNzX21vZGlmaWVyJywgeyBsZW5ndGg6IDEwIH0pXG4gICAgLiR0eXBlPEFjY2Vzc01vZGlmaWVyPigpXG4gICAgLmRlZmF1bHQoJ3ByaXZhdGUnIGFzIEFjY2Vzc01vZGlmaWVyKVxuICAgIC5ub3ROdWxsKCksXG4gIGlzRGVmYXVsdDogYm9vbGVhbignaXNfZGVmYXVsdCcpXG4gICAgLmRlZmF1bHQoZmFsc2UpXG4gICAgLm5vdE51bGwoKSxcbiAgaXNBY3RpdmU6IGJvb2xlYW4oJ2lzX2FjdGl2ZScpXG4gICAgLmRlZmF1bHQodHJ1ZSlcbiAgICAubm90TnVsbCgpLFxuXG4gIC8vIERlbGV0aW9uIHRyYWNraW5nIChzb2Z0IGRlbGV0ZSlcbiAgZGVsZXRlZEF0OiB0aW1lc3RhbXAoJ2RlbGV0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgZGVsZXRlZEJ5OiB0ZXh0KCdkZWxldGVkX2J5JyksXG59LCAodGFibGUpID0+ICh7XG4gIC8vIEluZGV4ZXMgZm9yIGNvbW1vbiBxdWVyaWVzXG4gIG5hbWVJZHg6IGluZGV4KCdwbHVnaW5fbmFtZV9pZHgnKS5vbih0YWJsZS5uYW1lKSxcbiAgb3JnSWRJZHg6IGluZGV4KCdwbHVnaW5fb3JnX2lkX2lkeCcpLm9uKHRhYmxlLm9yZ0lkKSxcbiAgdmVyc2lvbklkeDogaW5kZXgoJ3BsdWdpbl92ZXJzaW9uX2lkeCcpLm9uKHRhYmxlLnZlcnNpb24pLFxuICBhY3RpdmVJZHg6IGluZGV4KCdwbHVnaW5fYWN0aXZlX2lkeCcpLm9uKHRhYmxlLmlzQWN0aXZlKSxcbiAgY3JlYXRlZEF0SWR4OiBpbmRleCgncGx1Z2luX2NyZWF0ZWRfYXRfaWR4Jykub24odGFibGUuY3JlYXRlZEF0KSxcbiAgdXBkYXRlZEF0SWR4OiBpbmRleCgncGx1Z2luX3VwZGF0ZWRfYXRfaWR4Jykub24odGFibGUudXBkYXRlZEF0KSxcblxuICAvLyBDYXRlZ29yeSBpbmRleCBmb3IgZmlsdGVyaW5nXG4gIGNhdGVnb3J5SWR4OiBpbmRleCgncGx1Z2luX2NhdGVnb3J5X2lkeCcpLm9uKHRhYmxlLmNhdGVnb3J5KSxcblxuICAvLyBDb21wb3NpdGUgaW5kZXggZm9yIGNvbW1vbiBhY2Nlc3MgcGF0dGVybiAob3JnSWQgKyBpc0FjdGl2ZSlcbiAgb3JnQWN0aXZlSWR4OiBpbmRleCgncGx1Z2luX29yZ19hY3RpdmVfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLmlzQWN0aXZlKSxcblxuICAvLyBDb21wb3NpdGUgaW5kZXggZm9yIGZpbHRlcmVkIHF1ZXJpZXMgKG9yZ0lkICsgYWNjZXNzTW9kaWZpZXIgKyBpc0FjdGl2ZSlcbiAgb3JnQWNjZXNzQWN0aXZlSWR4OiBpbmRleCgncGx1Z2luX29yZ19hY2Nlc3NfYWN0aXZlX2lkeCcpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5hY2Nlc3NNb2RpZmllciwgdGFibGUuaXNBY3RpdmUpLFxuXG4gIC8vIFBhcnRpYWwgaW5kZXggZm9yIGFjdGl2ZS1vbmx5IHF1ZXJpZXMgKHNtYWxsZXIsIGZhc3RlciB0aGFuIGZ1bGwgaW5kZXgpXG4gIGFjdGl2ZU9ubHlPcmdJZHg6IGluZGV4KCdwbHVnaW5fYWN0aXZlX29ubHlfb3JnX2lkeCcpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5jcmVhdGVkQXQpLndoZXJlKHNxbGBpc19hY3RpdmUgPSB0cnVlYCksXG5cbiAgLy8gVW5pcXVlIGNvbnN0cmFpbnQgb24gbmFtZSArIHZlcnNpb24gKyBvcmdJZFxuICBuYW1lVmVyc2lvbk9yZ1VuaXF1ZTogdW5pcXVlSW5kZXgoJ3BsdWdpbl9uYW1lX3ZlcnNpb25fb3JnX3VuaXF1ZScpXG4gICAgLm9uKHRhYmxlLm5hbWUsIHRhYmxlLnZlcnNpb24sIHRhYmxlLm9yZ0lkKSxcblxuICAvLyBDaGVjayBjb25zdHJhaW50c1xuICB2ZXJzaW9uQ2hlY2s6IGNoZWNrKCAncGx1Z2luX3ZlcnNpb25fY2hlY2snLFxuICAgIHNxbGAke3RhYmxlLnZlcnNpb259IH4gJ15bMC05XStcXC5bMC05XStcXC5bMC05XSsoLVthLXpBLVowLTkuLV0rKT8oXFwrW2EtekEtWjAtOS4tXSspPyQnYCxcbiAgKSxcbn0pKTtcblxuLyoqXG4gKiBUYWJsZSBmb3Igc3RvcmluZyBwaXBlbGluZSBpbnN0YW5jZXMgYW5kIHRoZWlyIGZ1bGwgY29uZmlndXJhdGlvbi5cbiAqXG4gKiBGZWF0dXJlcyAqIC0gRnVsbCBCdWlsZGVyUHJvcHMgc2VyaWFsaXphdGlvbiBmb3IgcmVjb25zdHJ1Y3Rpb25cbiAqIC0gT3JnYW5pemF0aW9uLWxldmVsIGlzb2xhdGlvblxuICogLSBQaXBlbGluZSBzdGF0dXMgdHJhY2tpbmdcbiAqIC0gRXhlY3V0aW9uIGhpc3RvcnkgdHJhY2tpbmdcbiAqIC0gRmxleGlibGUgdGFnZ2luZyBzeXN0ZW1cbiAqXG4gKiBAdGFibGUgcGlwZWxpbmVzXG4gKi9cbmV4cG9ydCBjb25zdCBwaXBlbGluZSA9IHBnVGFibGUoJ3BpcGVsaW5lcycsIHtcbiAgLy8gUHJpbWFyeSBrZXlcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcblxuICAvLyBPcmdhbml6YXRpb24gYW5kIGFjY2VzcyBjb250cm9sXG4gIG9yZ0lkOiB2YXJjaGFyKCdvcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pXG4gICAgLmRlZmF1bHQoJ3N5c3RlbScpXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBBdWRpdCBmaWVsZHNcbiAgY3JlYXRlZEJ5OiB0ZXh0KCdjcmVhdGVkX2J5JylcbiAgICAuZGVmYXVsdCgnc3lzdGVtJylcbiAgICAubm90TnVsbCgpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pXG4gICAgLmRlZmF1bHROb3coKVxuICAgIC5ub3ROdWxsKCksXG4gIHVwZGF0ZWRCeTogdGV4dCgndXBkYXRlZF9ieScpXG4gICAgLmRlZmF1bHQoJ3N5c3RlbScpXG4gICAgLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KVxuICAgIC5kZWZhdWx0Tm93KClcbiAgICAubm90TnVsbCgpLFxuXG4gIC8vIENvcmUgcGlwZWxpbmUgaW5mb3JtYXRpb25cbiAgcHJvamVjdDogdmFyY2hhcigncHJvamVjdCcsIHsgbGVuZ3RoOiAyNTUgfSlcbiAgICAubm90TnVsbCgpLFxuICBvcmdhbml6YXRpb246IHZhcmNoYXIoJ29yZ2FuaXphdGlvbicsIHsgbGVuZ3RoOiAyNTUgfSlcbiAgICAubm90TnVsbCgpLFxuICBwaXBlbGluZU5hbWU6IHZhcmNoYXIoJ3BpcGVsaW5lX25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLFxuICBkZXNjcmlwdGlvbjogdGV4dCgnZGVzY3JpcHRpb24nKSxcbiAga2V5d29yZHM6IGpzb25iKCdrZXl3b3JkcycpXG4gICAgLiR0eXBlPHN0cmluZ1tdPigpXG4gICAgLmRlZmF1bHQoW10pXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBQaXBlbGluZSBjb25maWd1cmF0aW9uXG4gIHByb3BzOiBqc29uYigncHJvcHMnKVxuICAgIC4kdHlwZTxQaXBlbGluZUJ1aWxkZXJDb25maWc+KClcbiAgICAubm90TnVsbCgpLFxuXG4gIC8vIEFjY2VzcyBhbmQgdmlzaWJpbGl0eVxuICBhY2Nlc3NNb2RpZmllcjogdmFyY2hhcignYWNjZXNzX21vZGlmaWVyJywgeyBsZW5ndGg6IDEwIH0pXG4gICAgLiR0eXBlPEFjY2Vzc01vZGlmaWVyPigpXG4gICAgLmRlZmF1bHQoJ3ByaXZhdGUnIGFzIEFjY2Vzc01vZGlmaWVyKVxuICAgIC5ub3ROdWxsKCksXG4gIGlzRGVmYXVsdDogYm9vbGVhbignaXNfZGVmYXVsdCcpXG4gICAgLmRlZmF1bHQoZmFsc2UpXG4gICAgLm5vdE51bGwoKSxcbiAgaXNBY3RpdmU6IGJvb2xlYW4oJ2lzX2FjdGl2ZScpXG4gICAgLmRlZmF1bHQodHJ1ZSlcbiAgICAubm90TnVsbCgpLFxuXG4gIC8vIERlbGV0aW9uIHRyYWNraW5nIChzb2Z0IGRlbGV0ZSlcbiAgZGVsZXRlZEF0OiB0aW1lc3RhbXAoJ2RlbGV0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgZGVsZXRlZEJ5OiB0ZXh0KCdkZWxldGVkX2J5JyksXG59LCAodGFibGUpID0+ICh7XG4gIC8vIEluZGV4ZXMgZm9yIGNvbW1vbiBxdWVyaWVzXG4gIHByb2plY3RJZHg6IGluZGV4KCdwaXBlbGluZV9wcm9qZWN0X2lkeCcpLm9uKHRhYmxlLnByb2plY3QpLFxuICBvcmdhbml6YXRpb25JZHg6IGluZGV4KCdwaXBlbGluZV9vcmdhbml6YXRpb25faWR4Jykub24odGFibGUub3JnYW5pemF0aW9uKSxcbiAgb3JnSWRJZHg6IGluZGV4KCdwaXBlbGluZV9vcmdfaWRfaWR4Jykub24odGFibGUub3JnSWQpLFxuICBhY3RpdmVJZHg6IGluZGV4KCdwaXBlbGluZV9hY3RpdmVfaWR4Jykub24odGFibGUuaXNBY3RpdmUpLFxuICBjcmVhdGVkQXRJZHg6IGluZGV4KCdwaXBlbGluZV9jcmVhdGVkX2F0X2lkeCcpLm9uKHRhYmxlLmNyZWF0ZWRBdCksXG4gIHVwZGF0ZWRBdElkeDogaW5kZXgoJ3BpcGVsaW5lX3VwZGF0ZWRfYXRfaWR4Jykub24odGFibGUudXBkYXRlZEF0KSxcblxuICAvLyBDb21wb3NpdGUgaW5kZXggZm9yIGNvbW1vbiBhY2Nlc3MgcGF0dGVybiAob3JnSWQgKyBpc0FjdGl2ZSlcbiAgb3JnQWN0aXZlSWR4OiBpbmRleCgncGlwZWxpbmVfb3JnX2FjdGl2ZV9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUuaXNBY3RpdmUpLFxuXG4gIC8vIENvbXBvc2l0ZSBpbmRleCBmb3IgZmlsdGVyZWQgcXVlcmllcyAob3JnSWQgKyBhY2Nlc3NNb2RpZmllciArIGlzQWN0aXZlKVxuICBvcmdBY2Nlc3NBY3RpdmVJZHg6IGluZGV4KCdwaXBlbGluZV9vcmdfYWNjZXNzX2FjdGl2ZV9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUuYWNjZXNzTW9kaWZpZXIsIHRhYmxlLmlzQWN0aXZlKSxcblxuICAvLyBQYXJ0aWFsIGluZGV4IGZvciBhY3RpdmUtb25seSBxdWVyaWVzIChzbWFsbGVyLCBmYXN0ZXIgdGhhbiBmdWxsIGluZGV4KVxuICBhY3RpdmVPbmx5T3JnSWR4OiBpbmRleCgncGlwZWxpbmVfYWN0aXZlX29ubHlfb3JnX2lkeCcpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5jcmVhdGVkQXQpLndoZXJlKHNxbGBpc19hY3RpdmUgPSB0cnVlYCksXG5cbiAgLy8gVW5pcXVlIGNvbnN0cmFpbnQgb24gcHJvamVjdCArIG9yZ2FuaXphdGlvbiArIG9yZ0lkXG4gIHByb2plY3RPcmdVbmlxdWU6IHVuaXF1ZUluZGV4KCdwaXBlbGluZV9wcm9qZWN0X29yZ191bmlxdWUnKVxuICAgIC5vbih0YWJsZS5wcm9qZWN0LCB0YWJsZS5vcmdhbml6YXRpb24sIHRhYmxlLm9yZ0lkKSxcbn0pKTtcblxuLyoqXG4gKiBNZXNzYWdlIHR5cGUgaWRlbnRpZmllcnNcbiAqL1xuZXhwb3J0IHR5cGUgTWVzc2FnZVR5cGUgPSAnYW5ub3VuY2VtZW50JyB8ICdjb252ZXJzYXRpb24nO1xuXG4vKipcbiAqIE1lc3NhZ2UgcHJpb3JpdHkgbGV2ZWxzXG4gKi9cbmV4cG9ydCB0eXBlIE1lc3NhZ2VQcmlvcml0eSA9ICdub3JtYWwnIHwgJ2hpZ2gnIHwgJ3VyZ2VudCc7XG5cbi8qKlxuICogVGFibGUgZm9yIHN0b3JpbmcgaW50ZXJuYWwgbWVzc2FnZXMgYmV0d2VlbiBvcmdhbml6YXRpb25zIGFuZCB0aGUgc3lzdGVtIG9yZy5cbiAqXG4gKiBGZWF0dXJlcyAqIC0gQW5ub3VuY2VtZW50czogU3lzdGVtIG9yZyBicm9hZGNhc3RzIHRvIGFsbCBvcmdzIChyZWNpcGllbnRPcmdJZCA9ICcqJylcbiAqIC0gQ29udmVyc2F0aW9uczogVHdvLXdheSB0aHJlYWRlZCBtZXNzYWdpbmcgYmV0d2VlbiBhbiBvcmcgYW5kIHN5c3RlbSBvcmdcbiAqIC0gVGhyZWFkIHN1cHBvcnQgdmlhIHRocmVhZElkIChudWxsIGZvciByb290IG1lc3NhZ2VzLCByZWZlcmVuY2VzIHJvb3QgZm9yIHJlcGxpZXMpXG4gKiAtIFJlYWQgdHJhY2tpbmcgcGVyIG1lc3NhZ2VcbiAqIC0gUHJpb3JpdHkgbGV2ZWxzIChub3JtYWwsIGhpZ2gsIHVyZ2VudClcbiAqIC0gU29mdCBkZWxldGUgc3VwcG9ydFxuICpcbiAqIEB0YWJsZSBtZXNzYWdlc1xuICovXG5leHBvcnQgY29uc3QgbWVzc2FnZSA9IHBnVGFibGUoJ21lc3NhZ2VzJywge1xuICAvLyBQcmltYXJ5IGtleVxuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuXG4gIC8vIE9yZ2FuaXphdGlvbiBhbmQgYWNjZXNzIGNvbnRyb2xcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSlcbiAgICAuZGVmYXVsdCgnc3lzdGVtJylcbiAgICAubm90TnVsbCgpLFxuXG4gIC8vIEF1ZGl0IGZpZWxkc1xuICBjcmVhdGVkQnk6IHRleHQoJ2NyZWF0ZWRfYnknKVxuICAgIC5kZWZhdWx0KCdzeXN0ZW0nKVxuICAgIC5ub3ROdWxsKCksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSlcbiAgICAuZGVmYXVsdE5vdygpXG4gICAgLm5vdE51bGwoKSxcbiAgdXBkYXRlZEJ5OiB0ZXh0KCd1cGRhdGVkX2J5JylcbiAgICAuZGVmYXVsdCgnc3lzdGVtJylcbiAgICAubm90TnVsbCgpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pXG4gICAgLmRlZmF1bHROb3coKVxuICAgIC5ub3ROdWxsKCksXG5cbiAgLy8gVGhyZWFkaW5nXG4gIHRocmVhZElkOiB1dWlkKCd0aHJlYWRfaWQnKSxcblxuICAvLyBNZXNzYWdlIHJvdXRpbmdcbiAgcmVjaXBpZW50T3JnSWQ6IHZhcmNoYXIoJ3JlY2lwaWVudF9vcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBNZXNzYWdlIGNvbnRlbnRcbiAgbWVzc2FnZVR5cGU6IHZhcmNoYXIoJ21lc3NhZ2VfdHlwZScsIHsgbGVuZ3RoOiAyMCB9KVxuICAgIC4kdHlwZTxNZXNzYWdlVHlwZT4oKVxuICAgIC5kZWZhdWx0KCdjb252ZXJzYXRpb24nIGFzIE1lc3NhZ2VUeXBlKVxuICAgIC5ub3ROdWxsKCksXG4gIHN1YmplY3Q6IHZhcmNoYXIoJ3N1YmplY3QnLCB7IGxlbmd0aDogNTAwIH0pXG4gICAgLm5vdE51bGwoKSxcbiAgY29udGVudDogdGV4dCgnY29udGVudCcpXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBTdGF0dXNcbiAgLy8gYHJlYWRCeWAgaXMgdGhlIHBlci1wYXJ0aWNpcGFudCByZWFkLXJlY2VpcHQgbWFwOiBvcmdJZCDihpIgSVNPIHRpbWVzdGFtcC5cbiAgLy8gUmVjaXBpZW50IG1hcmtpbmcgdGhlIHRocmVhZCBkb2VzIE5PVCBmbGlwIHNlbmRlcidzIHZpZXcuIEVtcHR5IGB7fWBcbiAgLy8gbWVhbnMgbm9ib2R5IGhhcyByZWFkIGl0IHlldC5cbiAgcmVhZEJ5OiBqc29uYigncmVhZF9ieScpXG4gICAgLiR0eXBlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KClcbiAgICAuZGVmYXVsdCh7fSlcbiAgICAubm90TnVsbCgpLFxuICBwcmlvcml0eTogdmFyY2hhcigncHJpb3JpdHknLCB7IGxlbmd0aDogMjAgfSlcbiAgICAuJHR5cGU8TWVzc2FnZVByaW9yaXR5PigpXG4gICAgLmRlZmF1bHQoJ25vcm1hbCcgYXMgTWVzc2FnZVByaW9yaXR5KVxuICAgIC5ub3ROdWxsKCksXG5cbiAgLy8gQWNjZXNzIGFuZCB2aXNpYmlsaXR5XG4gIGFjY2Vzc01vZGlmaWVyOiB2YXJjaGFyKCdhY2Nlc3NfbW9kaWZpZXInLCB7IGxlbmd0aDogMTAgfSlcbiAgICAuJHR5cGU8QWNjZXNzTW9kaWZpZXI+KClcbiAgICAuZGVmYXVsdCgncHJpdmF0ZScgYXMgQWNjZXNzTW9kaWZpZXIpXG4gICAgLm5vdE51bGwoKSxcbiAgaXNEZWZhdWx0OiBib29sZWFuKCdpc19kZWZhdWx0JylcbiAgICAuZGVmYXVsdChmYWxzZSlcbiAgICAubm90TnVsbCgpLFxuICBpc0FjdGl2ZTogYm9vbGVhbignaXNfYWN0aXZlJylcbiAgICAuZGVmYXVsdCh0cnVlKVxuICAgIC5ub3ROdWxsKCksXG5cbiAgLy8gRGVsZXRpb24gdHJhY2tpbmcgKHNvZnQgZGVsZXRlKVxuICBkZWxldGVkQXQ6IHRpbWVzdGFtcCgnZGVsZXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBkZWxldGVkQnk6IHRleHQoJ2RlbGV0ZWRfYnknKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgLy8gSW5kZXhlcyBmb3IgY29tbW9uIHF1ZXJpZXNcbiAgb3JnSWRJZHg6IGluZGV4KCdtZXNzYWdlX29yZ19pZF9pZHgnKS5vbih0YWJsZS5vcmdJZCksXG4gIHJlY2lwaWVudE9yZ0lkSWR4OiBpbmRleCgnbWVzc2FnZV9yZWNpcGllbnRfb3JnX2lkX2lkeCcpLm9uKHRhYmxlLnJlY2lwaWVudE9yZ0lkKSxcbiAgdGhyZWFkSWRJZHg6IGluZGV4KCdtZXNzYWdlX3RocmVhZF9pZF9pZHgnKS5vbih0YWJsZS50aHJlYWRJZCksXG4gIG1lc3NhZ2VUeXBlSWR4OiBpbmRleCgnbWVzc2FnZV9tZXNzYWdlX3R5cGVfaWR4Jykub24odGFibGUubWVzc2FnZVR5cGUpLFxuICBjcmVhdGVkQXRJZHg6IGluZGV4KCdtZXNzYWdlX2NyZWF0ZWRfYXRfaWR4Jykub24odGFibGUuY3JlYXRlZEF0KSxcbiAgYWN0aXZlSWR4OiBpbmRleCgnbWVzc2FnZV9hY3RpdmVfaWR4Jykub24odGFibGUuaXNBY3RpdmUpLFxuXG4gIC8vIENvbXBvc2l0ZSBpbmRleCBmb3IgaW5ib3ggcXVlcmllcyAocmVjaXBpZW50ICsgYWN0aXZlICsgY3JlYXRlZClcbiAgcmVjaXBpZW50QWN0aXZlQ3JlYXRlZElkeDogaW5kZXgoJ21lc3NhZ2VfcmVjaXBpZW50X2FjdGl2ZV9jcmVhdGVkX2lkeCcpXG4gICAgLm9uKHRhYmxlLnJlY2lwaWVudE9yZ0lkLCB0YWJsZS5pc0FjdGl2ZSwgdGFibGUuY3JlYXRlZEF0KSxcblxuICAvLyBDb21wb3NpdGUgaW5kZXggZm9yIG9yZyBpbmJveCAob3JnSWQgKyBhY3RpdmUpXG4gIG9yZ0FjdGl2ZUlkeDogaW5kZXgoJ21lc3NhZ2Vfb3JnX2FjdGl2ZV9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUuaXNBY3RpdmUpLFxufSkpO1xuXG4vKipcbiAqIFBpcGVsaW5lIGRlcGxveW1lbnQgcmVnaXN0cnkuXG4gKiBNYXBzIGRlcGxveWVkIENvZGVQaXBlbGluZSBBUk5zIGJhY2sgdG8gcGlwZWxpbmUgcmVjb3JkcyBhbmQgb3JnIElEcy5cbiAqIFBvcHVsYXRlZCBieSB0aGUgZGVwbG95IGNvbW1hbmQgYWZ0ZXIgc3VjY2Vzc2Z1bCBDREsgZGVwbG95LlxuICogVXNlZCBieSB0aGUgcGlwZWxpbmUtZXZlbnRzIExhbWJkYSB0byByZXNvbHZlIEV2ZW50QnJpZGdlIGV2ZW50cyB0byBvcmctc2NvcGVkIHJlY29yZHMuXG4gKlxuICogQHRhYmxlIHBpcGVsaW5lX3JlZ2lzdHJ5XG4gKi9cbmV4cG9ydCBjb25zdCBwaXBlbGluZVJlZ2lzdHJ5ID0gcGdUYWJsZSgncGlwZWxpbmVfcmVnaXN0cnknLCB7XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG4gIHBpcGVsaW5lSWQ6IHV1aWQoJ3BpcGVsaW5lX2lkJykubm90TnVsbCgpLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHBpcGVsaW5lQXJuOiB2YXJjaGFyKCdwaXBlbGluZV9hcm4nLCB7IGxlbmd0aDogNTEyIH0pLm5vdE51bGwoKS51bmlxdWUoKSxcbiAgcGlwZWxpbmVOYW1lOiB2YXJjaGFyKCdwaXBlbGluZV9uYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIGFjY291bnRJZDogdmFyY2hhcignYWNjb3VudF9pZCcsIHsgbGVuZ3RoOiAxMiB9KSxcbiAgcmVnaW9uOiB2YXJjaGFyKCdyZWdpb24nLCB7IGxlbmd0aDogMzAgfSksXG4gIHByb2plY3Q6IHZhcmNoYXIoJ3Byb2plY3QnLCB7IGxlbmd0aDogMjU1IH0pLFxuICBvcmdhbml6YXRpb246IHZhcmNoYXIoJ29yZ2FuaXphdGlvbicsIHsgbGVuZ3RoOiAyNTUgfSksXG4gIGxhc3REZXBsb3llZDogdGltZXN0YW1wKCdsYXN0X2RlcGxveWVkJywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIHN0YWNrTmFtZTogdmFyY2hhcignc3RhY2tfbmFtZScsIHsgbGVuZ3RoOiAyNTUgfSksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICBwaXBlbGluZUlkSWR4OiBpbmRleCgncmVnaXN0cnlfcGlwZWxpbmVfaWRfaWR4Jykub24odGFibGUucGlwZWxpbmVJZCksXG4gIG9yZ0lkSWR4OiBpbmRleCgncmVnaXN0cnlfb3JnX2lkX2lkeCcpLm9uKHRhYmxlLm9yZ0lkKSxcbiAgb3JnUmVnaW9uSWR4OiBpbmRleCgncmVnaXN0cnlfb3JnX3JlZ2lvbl9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUucmVnaW9uKSxcbn0pKTtcblxuLyoqXG4gKiBFdmVudCBzb3VyY2UgaWRlbnRpZmllcnMgZm9yIHBpcGVsaW5lX2V2ZW50cy5cbiAqL1xuZXhwb3J0IHR5cGUgRXZlbnRTb3VyY2UgPSAnY29kZXBpcGVsaW5lJyB8ICdjb2RlYnVpbGQnIHwgJ3BsdWdpbi1idWlsZCc7XG5cbi8qKlxuICogRXZlbnQgdHlwZSBncmFudWxhcml0eSBsZXZlbHMgZm9yIHBpcGVsaW5lX2V2ZW50cy5cbiAqL1xuZXhwb3J0IHR5cGUgRXZlbnRUeXBlID0gJ1BJUEVMSU5FJyB8ICdTVEFHRScgfCAnQUNUSU9OJyB8ICdCVUlMRCc7XG5cbi8qKlxuICogUGlwZWxpbmUgZXhlY3V0aW9uIGFuZCBidWlsZCBldmVudHMuXG4gKiBDYXB0dXJlcyBDb2RlUGlwZWxpbmUvQ29kZUJ1aWxkIHN0YXRlIGNoYW5nZXMgZnJvbSBFdmVudEJyaWRnZVxuICogYW5kIHBsdWdpbiBEb2NrZXIgYnVpbGQgb3V0Y29tZXMgZnJvbSBCdWxsTVEuXG4gKiBBbGwgZXZlbnRzIGFyZSBvcmctc2NvcGVkIGZvciBtdWx0aS10ZW5hbnQgcmVwb3J0aW5nLlxuICpcbiAqIEB0YWJsZSBwaXBlbGluZV9ldmVudHNcbiAqL1xuZXhwb3J0IGNvbnN0IHBpcGVsaW5lRXZlbnQgPSBwZ1RhYmxlKCdwaXBlbGluZV9ldmVudHMnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG4gIHBpcGVsaW5lSWQ6IHV1aWQoJ3BpcGVsaW5lX2lkJyksXG4gIG9yZ0lkOiB2YXJjaGFyKCdvcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgZXZlbnRTb3VyY2U6IHZhcmNoYXIoJ2V2ZW50X3NvdXJjZScsIHsgbGVuZ3RoOiA1MCB9KS4kdHlwZTxFdmVudFNvdXJjZT4oKS5ub3ROdWxsKCksXG4gIGV2ZW50VHlwZTogdmFyY2hhcignZXZlbnRfdHlwZScsIHsgbGVuZ3RoOiA1MCB9KS4kdHlwZTxFdmVudFR5cGU+KCkubm90TnVsbCgpLFxuICBzdGF0dXM6IHZhcmNoYXIoJ3N0YXR1cycsIHsgbGVuZ3RoOiAyMCB9KS5ub3ROdWxsKCksXG4gIHBpcGVsaW5lQXJuOiB2YXJjaGFyKCdwaXBlbGluZV9hcm4nLCB7IGxlbmd0aDogNTEyIH0pLFxuICBleGVjdXRpb25JZDogdmFyY2hhcignZXhlY3V0aW9uX2lkJywgeyBsZW5ndGg6IDI1NSB9KSxcbiAgc3RhZ2VOYW1lOiB2YXJjaGFyKCdzdGFnZV9uYW1lJywgeyBsZW5ndGg6IDI1NSB9KSxcbiAgYWN0aW9uTmFtZTogdmFyY2hhcignYWN0aW9uX25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLFxuICBlcnJvck1lc3NhZ2U6IHRleHQoJ2Vycm9yX21lc3NhZ2UnKSxcbiAgc3RhcnRlZEF0OiB0aW1lc3RhbXAoJ3N0YXJ0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgY29tcGxldGVkQXQ6IHRpbWVzdGFtcCgnY29tcGxldGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGR1cmF0aW9uTXM6IGludGVnZXIoJ2R1cmF0aW9uX21zJyksXG4gIGRldGFpbDoganNvbmIoJ2RldGFpbCcpLiR0eXBlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PigpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIHBpcGVsaW5lSWRJZHg6IGluZGV4KCdldmVudF9waXBlbGluZV9pZF9pZHgnKS5vbih0YWJsZS5waXBlbGluZUlkKSxcbiAgb3JnSWRJZHg6IGluZGV4KCdldmVudF9vcmdfaWRfaWR4Jykub24odGFibGUub3JnSWQpLFxuICBldmVudFR5cGVJZHg6IGluZGV4KCdldmVudF90eXBlX2lkeCcpLm9uKHRhYmxlLmV2ZW50VHlwZSksXG4gIHN0YXR1c0lkeDogaW5kZXgoJ2V2ZW50X3N0YXR1c19pZHgnKS5vbih0YWJsZS5zdGF0dXMpLFxuICBwaXBlbGluZUFybklkeDogaW5kZXgoJ2V2ZW50X3BpcGVsaW5lX2Fybl9pZHgnKS5vbih0YWJsZS5waXBlbGluZUFybiksXG4gIGV4ZWN1dGlvbklkSWR4OiBpbmRleCgnZXZlbnRfZXhlY3V0aW9uX2lkX2lkeCcpLm9uKHRhYmxlLmV4ZWN1dGlvbklkKSxcbiAgY3JlYXRlZEF0SWR4OiBpbmRleCgnZXZlbnRfY3JlYXRlZF9hdF9pZHgnKS5vbih0YWJsZS5jcmVhdGVkQXQpLFxuICBvcmdUeXBlQ3JlYXRlZElkeDogaW5kZXgoJ2V2ZW50X29yZ190eXBlX2NyZWF0ZWRfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLmV2ZW50VHlwZSwgdGFibGUuY3JlYXRlZEF0KSxcbiAgb3JnU291cmNlU3RhdHVzSWR4OiBpbmRleCgnZXZlbnRfb3JnX3NvdXJjZV9zdGF0dXNfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLmV2ZW50U291cmNlLCB0YWJsZS5zdGF0dXMpLFxufSkpO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDb21wbGlhbmNlIFNlcnZpY2UgVGFibGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ29tcGxpYW5jZSBydWxlIHNldmVyaXR5IGxldmVscy5cbiAqL1xuZXhwb3J0IHR5cGUgUnVsZVNldmVyaXR5ID0gJ3dhcm5pbmcnIHwgJ2Vycm9yJyB8ICdjcml0aWNhbCc7XG5cbi8qKlxuICogQ29tcGxpYW5jZSBydWxlIHRhcmdldCBlbnRpdHkgdHlwZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFJ1bGVUYXJnZXQgPSAncGx1Z2luJyB8ICdwaXBlbGluZSc7XG5cbi8qKlxuICogQ29tcGxpYW5jZSBydWxlIG9wZXJhdG9ycyBmb3IgZmllbGQgZXZhbHVhdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgUnVsZU9wZXJhdG9yID1cbiAgfCAnZXEnIHwgJ25lcSdcbiAgfCAnY29udGFpbnMnIHwgJ25vdENvbnRhaW5zJ1xuICB8ICdyZWdleCdcbiAgfCAnZ3QnIHwgJ2d0ZScgfCAnbHQnIHwgJ2x0ZSdcbiAgfCAnaW4nIHwgJ25vdEluJ1xuICB8ICdleGlzdHMnIHwgJ25vdEV4aXN0cydcbiAgfCAnY291bnRHdCcgfCAnY291bnRMdCdcbiAgfCAnbGVuZ3RoR3QnIHwgJ2xlbmd0aEx0JztcblxuLyoqXG4gKiBDcm9zcy1maWVsZCBjb25kaXRpb24gbW9kZSBmb3IgbXVsdGktY29uZGl0aW9uIHJ1bGVzLlxuICovXG5leHBvcnQgdHlwZSBSdWxlQ29uZGl0aW9uTW9kZSA9ICdhbGwnIHwgJ2FueSc7XG5cbi8qKlxuICogUnVsZSBzY29wZSAgb3JnLWxldmVsIG9yIHB1Ymxpc2hlZCAoc3lzdGVtIG9yZyBvbmx5LCBvcHQtaW4gdmlhIHN1YnNjcmlwdGlvbikuXG4gKi9cbmV4cG9ydCB0eXBlIFJ1bGVTY29wZSA9ICdvcmcnIHwgJ3B1Ymxpc2hlZCc7XG5cbi8qKlxuICogQSBzaW5nbGUgY29uZGl0aW9uIGluIGEgY3Jvc3MtZmllbGQgcnVsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdWxlQ29uZGl0aW9uIHtcbiAgZmllbGQ/OiBzdHJpbmc7XG4gIG9wZXJhdG9yPzogUnVsZU9wZXJhdG9yO1xuICB2YWx1ZT86IHVua25vd247XG4gIGRlcGVuZHNPblJ1bGU/OiBzdHJpbmc7IC8vIHJ1bGUgSUQgIG9ubHkgZXZhbHVhdGUgaWYgcmVmZXJlbmNlZCBydWxlIHBhc3NlZFxufVxuXG4vKipcbiAqIENvbXBsaWFuY2UgcG9saWNpZXMgZ3JvdXAgcnVsZXMgaW50byBuYW1lZCBzZXRzIHRoYXQgY2FuIGJlIGVuYWJsZWQvZGlzYWJsZWQgdG9nZXRoZXIuXG4gKlxuICogQHRhYmxlIGNvbXBsaWFuY2VfcG9saWNpZXNcbiAqL1xuZXhwb3J0IGNvbnN0IGNvbXBsaWFuY2VQb2xpY3kgPSBwZ1RhYmxlKCdjb21wbGlhbmNlX3BvbGljaWVzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5kZWZhdWx0KCdzeXN0ZW0nKS5ub3ROdWxsKCksXG4gIGNyZWF0ZWRCeTogdGV4dCgnY3JlYXRlZF9ieScpLmRlZmF1bHQoJ3N5c3RlbScpLm5vdE51bGwoKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICB1cGRhdGVkQnk6IHRleHQoJ3VwZGF0ZWRfYnknKS5kZWZhdWx0KCdzeXN0ZW0nKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcblxuICBuYW1lOiB2YXJjaGFyKCduYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIGRlc2NyaXB0aW9uOiB0ZXh0KCdkZXNjcmlwdGlvbicpLFxuICB2ZXJzaW9uOiB2YXJjaGFyKCd2ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLmRlZmF1bHQoJzEuMC4wJykubm90TnVsbCgpLFxuICBpc1RlbXBsYXRlOiBib29sZWFuKCdpc190ZW1wbGF0ZScpLmRlZmF1bHQoZmFsc2UpLm5vdE51bGwoKSxcblxuICBhY2Nlc3NNb2RpZmllcjogdmFyY2hhcignYWNjZXNzX21vZGlmaWVyJywgeyBsZW5ndGg6IDEwIH0pXG4gICAgLiR0eXBlPEFjY2Vzc01vZGlmaWVyPigpLmRlZmF1bHQoJ3ByaXZhdGUnIGFzIEFjY2Vzc01vZGlmaWVyKS5ub3ROdWxsKCksXG4gIGlzRGVmYXVsdDogYm9vbGVhbignaXNfZGVmYXVsdCcpLmRlZmF1bHQoZmFsc2UpLm5vdE51bGwoKSxcbiAgaXNBY3RpdmU6IGJvb2xlYW4oJ2lzX2FjdGl2ZScpLmRlZmF1bHQodHJ1ZSkubm90TnVsbCgpLFxuICBkZWxldGVkQXQ6IHRpbWVzdGFtcCgnZGVsZXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBkZWxldGVkQnk6IHRleHQoJ2RlbGV0ZWRfYnknKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgb3JnQWN0aXZlSWR4OiBpbmRleCgnY29tcGxpYW5jZV9wb2xpY3lfb3JnX2FjdGl2ZV9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUuaXNBY3RpdmUpLFxuICB0ZW1wbGF0ZUlkeDogaW5kZXgoJ2NvbXBsaWFuY2VfcG9saWN5X3RlbXBsYXRlX2lkeCcpLm9uKHRhYmxlLmlzVGVtcGxhdGUpLFxuICBuYW1lT3JnVmVyc2lvblVuaXF1ZTogdW5pcXVlSW5kZXgoJ2NvbXBsaWFuY2VfcG9saWN5X25hbWVfb3JnX3ZlcnNpb25fdW5pcXVlJylcbiAgICAub24odGFibGUub3JnSWQsIHRhYmxlLm5hbWUsIHRhYmxlLnZlcnNpb24pLFxufSkpO1xuXG4vKipcbiAqIENvbXBsaWFuY2UgcnVsZXMgZGVmaW5lIGluZGl2aWR1YWwgY2hlY2tzIGFnYWluc3QgcGx1Z2luL3BpcGVsaW5lIGF0dHJpYnV0ZXMuXG4gKlxuICogQHRhYmxlIGNvbXBsaWFuY2VfcnVsZXNcbiAqL1xuZXhwb3J0IGNvbnN0IGNvbXBsaWFuY2VSdWxlID0gcGdUYWJsZSgnY29tcGxpYW5jZV9ydWxlcycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkuZGVmYXVsdCgnc3lzdGVtJykubm90TnVsbCgpLFxuICBjcmVhdGVkQnk6IHRleHQoJ2NyZWF0ZWRfYnknKS5kZWZhdWx0KCdzeXN0ZW0nKS5ub3ROdWxsKCksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEJ5OiB0ZXh0KCd1cGRhdGVkX2J5JykuZGVmYXVsdCgnc3lzdGVtJykubm90TnVsbCgpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG5cbiAgLy8gUnVsZSBpZGVudGl0eVxuICBuYW1lOiB2YXJjaGFyKCduYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIGRlc2NyaXB0aW9uOiB0ZXh0KCdkZXNjcmlwdGlvbicpLFxuICBwb2xpY3lJZDogdXVpZCgncG9saWN5X2lkJykucmVmZXJlbmNlcygoKSA9PiBjb21wbGlhbmNlUG9saWN5LmlkLCB7IG9uRGVsZXRlOiAnc2V0IG51bGwnIH0pLFxuICBwcmlvcml0eTogaW50ZWdlcigncHJpb3JpdHknKS5kZWZhdWx0KDApLm5vdE51bGwoKSxcbiAgdGFyZ2V0OiB2YXJjaGFyKCd0YXJnZXQnLCB7IGxlbmd0aDogMjAgfSkuJHR5cGU8UnVsZVRhcmdldD4oKS5ub3ROdWxsKCksXG4gIHNldmVyaXR5OiB2YXJjaGFyKCdzZXZlcml0eScsIHsgbGVuZ3RoOiAxMCB9KS4kdHlwZTxSdWxlU2V2ZXJpdHk+KCkuZGVmYXVsdCgnZXJyb3InKS5ub3ROdWxsKCksXG5cbiAgLy8gQ2F0ZWdvcml6YXRpb25cbiAgdGFnczoganNvbmIoJ3RhZ3MnKS4kdHlwZTxzdHJpbmdbXT4oKS5kZWZhdWx0KFtdKS5ub3ROdWxsKCksXG5cbiAgLy8gU2NoZWR1bGluZ1xuICBlZmZlY3RpdmVGcm9tOiB0aW1lc3RhbXAoJ2VmZmVjdGl2ZV9mcm9tJywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGVmZmVjdGl2ZVVudGlsOiB0aW1lc3RhbXAoJ2VmZmVjdGl2ZV91bnRpbCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuXG4gIC8vIFNjb3BlXG4gIHNjb3BlOiB2YXJjaGFyKCdzY29wZScsIHsgbGVuZ3RoOiAxMCB9KS4kdHlwZTxSdWxlU2NvcGU+KCkuZGVmYXVsdCgnb3JnJykubm90TnVsbCgpLFxuXG4gIC8vIEZvcmtpbmcgIHRyYWNrcyB3aGljaCBwdWJsaXNoZWQgcnVsZSB0aGlzIG9yZyBydWxlIHdhcyBjb3BpZWQgZnJvbVxuICBmb3JrZWRGcm9tUnVsZUlkOiB1dWlkKCdmb3JrZWRfZnJvbV9ydWxlX2lkJyksXG5cbiAgLy8gTm90aWZpY2F0aW9uIG92ZXJyaWRlXG4gIHN1cHByZXNzTm90aWZpY2F0aW9uOiBib29sZWFuKCdzdXBwcmVzc19ub3RpZmljYXRpb24nKS5kZWZhdWx0KGZhbHNlKS5ub3ROdWxsKCksXG5cbiAgLy8gU2luZ2xlLWZpZWxkIGNvbmRpdGlvblxuICBmaWVsZDogdmFyY2hhcignZmllbGQnLCB7IGxlbmd0aDogMTAwIH0pLFxuICBvcGVyYXRvcjogdmFyY2hhcignb3BlcmF0b3InLCB7IGxlbmd0aDogMjAgfSkuJHR5cGU8UnVsZU9wZXJhdG9yPigpLFxuICB2YWx1ZToganNvbmIoJ3ZhbHVlJyksXG5cbiAgLy8gQ3Jvc3MtZmllbGQgY29uZGl0aW9ucyAob3ZlcnJpZGVzIHNpbmdsZS1maWVsZCB3aGVuIHByZXNlbnQpXG4gIGNvbmRpdGlvbnM6IGpzb25iKCdjb25kaXRpb25zJykuJHR5cGU8UnVsZUNvbmRpdGlvbltdPigpLFxuICBjb25kaXRpb25Nb2RlOiB2YXJjaGFyKCdjb25kaXRpb25fbW9kZScsIHsgbGVuZ3RoOiA1IH0pLiR0eXBlPFJ1bGVDb25kaXRpb25Nb2RlPigpLmRlZmF1bHQoJ2FsbCcpLFxuXG4gIC8vIEFjY2VzcyBhbmQgdmlzaWJpbGl0eVxuICBhY2Nlc3NNb2RpZmllcjogdmFyY2hhcignYWNjZXNzX21vZGlmaWVyJywgeyBsZW5ndGg6IDEwIH0pXG4gICAgLiR0eXBlPEFjY2Vzc01vZGlmaWVyPigpLmRlZmF1bHQoJ3ByaXZhdGUnIGFzIEFjY2Vzc01vZGlmaWVyKS5ub3ROdWxsKCksXG4gIGlzRGVmYXVsdDogYm9vbGVhbignaXNfZGVmYXVsdCcpLmRlZmF1bHQoZmFsc2UpLm5vdE51bGwoKSxcbiAgaXNBY3RpdmU6IGJvb2xlYW4oJ2lzX2FjdGl2ZScpLmRlZmF1bHQodHJ1ZSkubm90TnVsbCgpLFxuICBkZWxldGVkQXQ6IHRpbWVzdGFtcCgnZGVsZXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBkZWxldGVkQnk6IHRleHQoJ2RlbGV0ZWRfYnknKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgb3JnVGFyZ2V0QWN0aXZlSWR4OiBpbmRleCgnY29tcGxpYW5jZV9ydWxlX29yZ190YXJnZXRfYWN0aXZlX2lkeCcpXG4gICAgLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS50YXJnZXQsIHRhYmxlLmlzQWN0aXZlKSxcbiAgb3JnUG9saWN5SWR4OiBpbmRleCgnY29tcGxpYW5jZV9ydWxlX29yZ19wb2xpY3lfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLnBvbGljeUlkKSxcbiAgcHJpb3JpdHlJZHg6IGluZGV4KCdjb21wbGlhbmNlX3J1bGVfcHJpb3JpdHlfaWR4Jykub24odGFibGUucHJpb3JpdHkpLFxuICBzY29wZUlkeDogaW5kZXgoJ2NvbXBsaWFuY2VfcnVsZV9zY29wZV9pZHgnKS5vbih0YWJsZS5zY29wZSksXG4gIGVmZmVjdGl2ZUZyb21JZHg6IGluZGV4KCdjb21wbGlhbmNlX3J1bGVfZWZmZWN0aXZlX2Zyb21faWR4Jykub24odGFibGUuZWZmZWN0aXZlRnJvbSksXG4gIG5hbWVPcmdVbmlxdWU6IHVuaXF1ZUluZGV4KCdjb21wbGlhbmNlX3J1bGVfbmFtZV9vcmdfdW5pcXVlJykub24odGFibGUub3JnSWQsIHRhYmxlLm5hbWUpLFxufSkpO1xuXG4vKipcbiAqIFRyYWNrcyBldmVyeSBjaGFuZ2UgdG8gY29tcGxpYW5jZSBydWxlcyBmb3IgdmVyc2lvbmluZyBhbmQgcm9sbGJhY2suXG4gKlxuICogQHRhYmxlIGNvbXBsaWFuY2VfcnVsZV9oaXN0b3J5XG4gKi9cbmV4cG9ydCBjb25zdCBjb21wbGlhbmNlUnVsZUhpc3RvcnkgPSBwZ1RhYmxlKCdjb21wbGlhbmNlX3J1bGVfaGlzdG9yeScsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgcnVsZUlkOiB1dWlkKCdydWxlX2lkJykubm90TnVsbCgpLnJlZmVyZW5jZXMoKCkgPT4gY29tcGxpYW5jZVJ1bGUuaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBjaGFuZ2VUeXBlOiB2YXJjaGFyKCdjaGFuZ2VfdHlwZScsIHsgbGVuZ3RoOiAyMCB9KS5ub3ROdWxsKCksIC8vIGNyZWF0ZWQgfCB1cGRhdGVkIHwgZGVsZXRlZCB8IHJlc3RvcmVkXG4gIHByZXZpb3VzU3RhdGU6IGpzb25iKCdwcmV2aW91c19zdGF0ZScpLCAvLyBmdWxsIHJ1bGUgc25hcHNob3QgYmVmb3JlIGNoYW5nZVxuICBjaGFuZ2VkQnk6IHRleHQoJ2NoYW5nZWRfYnknKS5ub3ROdWxsKCksXG4gIGNoYW5nZWRBdDogdGltZXN0YW1wKCdjaGFuZ2VkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgcnVsZUNoYW5nZWRBdElkeDogaW5kZXgoJ2NvbXBsaWFuY2VfcnVsZV9oaXN0b3J5X3J1bGVfY2hhbmdlZF9pZHgnKVxuICAgIC5vbih0YWJsZS5ydWxlSWQsIHRhYmxlLmNoYW5nZWRBdCksXG4gIG9yZ0NoYW5nZWRBdElkeDogaW5kZXgoJ2NvbXBsaWFuY2VfcnVsZV9oaXN0b3J5X29yZ19jaGFuZ2VkX2lkeCcpXG4gICAgLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5jaGFuZ2VkQXQpLFxuICBydWxlSWRJZHg6IGluZGV4KCdjb21wbGlhbmNlX3J1bGVfaGlzdG9yeV9ydWxlX2lkX2lkeCcpXG4gICAgLm9uKHRhYmxlLnJ1bGVJZCksXG59KSk7XG5cbi8qKlxuICogQ29tcGxpYW5jZSBhdWRpdCBsb2cgIHN0b3JlcyBldmVyeSBjb21wbGlhbmNlIGNoZWNrIHJlc3VsdC5cbiAqXG4gKiBAdGFibGUgY29tcGxpYW5jZV9hdWRpdF9sb2dcbiAqL1xuZXhwb3J0IGNvbnN0IGNvbXBsaWFuY2VBdWRpdExvZyA9IHBnVGFibGUoJ2NvbXBsaWFuY2VfYXVkaXRfbG9nJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHVzZXJJZDogdGV4dCgndXNlcl9pZCcpLm5vdE51bGwoKSxcbiAgdGFyZ2V0OiB2YXJjaGFyKCd0YXJnZXQnLCB7IGxlbmd0aDogMjAgfSkuJHR5cGU8UnVsZVRhcmdldD4oKS5ub3ROdWxsKCksXG4gIGFjdGlvbjogdmFyY2hhcignYWN0aW9uJywgeyBsZW5ndGg6IDIwIH0pLm5vdE51bGwoKSwgLy8gdXBsb2FkIHwgZGVwbG95IHwgY3JlYXRlIHwgdXBkYXRlIHwgc2NhblxuICBlbnRpdHlJZDogdmFyY2hhcignZW50aXR5X2lkJywgeyBsZW5ndGg6IDI1NSB9KSxcbiAgZW50aXR5TmFtZTogdmFyY2hhcignZW50aXR5X25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLFxuICByZXN1bHQ6IHZhcmNoYXIoJ3Jlc3VsdCcsIHsgbGVuZ3RoOiAxMCB9KS5ub3ROdWxsKCksIC8vIHBhc3MgfCB3YXJuIHwgYmxvY2tcbiAgdmlvbGF0aW9uczoganNvbmIoJ3Zpb2xhdGlvbnMnKS4kdHlwZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdPigpLmRlZmF1bHQoW10pLFxuICBydWxlQ291bnQ6IGludGVnZXIoJ3J1bGVfY291bnQnKS5ub3ROdWxsKCksXG4gIHNjYW5JZDogdXVpZCgnc2Nhbl9pZCcpLCAvLyBncm91cHMgZW50cmllcyBmcm9tIHRoZSBzYW1lIGJ1bGsgc2NhblxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIG9yZ0NyZWF0ZWRBdElkeDogaW5kZXgoJ2NvbXBsaWFuY2VfYXVkaXRfb3JnX2NyZWF0ZWRfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLmNyZWF0ZWRBdCksXG4gIG9yZ1RhcmdldFJlc3VsdElkeDogaW5kZXgoJ2NvbXBsaWFuY2VfYXVkaXRfb3JnX3RhcmdldF9yZXN1bHRfaWR4JylcbiAgICAub24odGFibGUub3JnSWQsIHRhYmxlLnRhcmdldCwgdGFibGUucmVzdWx0KSxcbiAgc2NhbklkSWR4OiBpbmRleCgnY29tcGxpYW5jZV9hdWRpdF9zY2FuX2lkX2lkeCcpLm9uKHRhYmxlLnNjYW5JZCksXG59KSk7XG5cbi8qKlxuICogUGVyLWVudGl0eSBleGVtcHRpb25zIGZyb20gc3BlY2lmaWMgY29tcGxpYW5jZSBydWxlcy5cbiAqXG4gKiBAdGFibGUgY29tcGxpYW5jZV9leGVtcHRpb25zXG4gKi9cbmV4cG9ydCBjb25zdCBjb21wbGlhbmNlRXhlbXB0aW9uID0gcGdUYWJsZSgnY29tcGxpYW5jZV9leGVtcHRpb25zJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHJ1bGVJZDogdXVpZCgncnVsZV9pZCcpLm5vdE51bGwoKS5yZWZlcmVuY2VzKCgpID0+IGNvbXBsaWFuY2VSdWxlLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSksXG4gIGVudGl0eVR5cGU6IHZhcmNoYXIoJ2VudGl0eV90eXBlJywgeyBsZW5ndGg6IDIwIH0pLiR0eXBlPFJ1bGVUYXJnZXQ+KCkubm90TnVsbCgpLFxuICBlbnRpdHlJZDogdXVpZCgnZW50aXR5X2lkJykubm90TnVsbCgpLFxuICBlbnRpdHlOYW1lOiB2YXJjaGFyKCdlbnRpdHlfbmFtZScsIHsgbGVuZ3RoOiAyNTUgfSksXG4gIHJlYXNvbjogdGV4dCgncmVhc29uJykubm90TnVsbCgpLFxuICBhcHByb3ZlZEJ5OiB0ZXh0KCdhcHByb3ZlZF9ieScpLFxuICByZWplY3Rpb25SZWFzb246IHRleHQoJ3JlamVjdGlvbl9yZWFzb24nKSxcbiAgc3RhdHVzOiB2YXJjaGFyKCdzdGF0dXMnLCB7IGxlbmd0aDogMjAgfSkuZGVmYXVsdCgncGVuZGluZycpLm5vdE51bGwoKSwgLy8gcGVuZGluZyB8IGFwcHJvdmVkIHwgcmVqZWN0ZWQgfCBleHBpcmVkXG4gIGV4cGlyZXNBdDogdGltZXN0YW1wKCdleHBpcmVzX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGNyZWF0ZWRCeTogdGV4dCgnY3JlYXRlZF9ieScpLm5vdE51bGwoKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICB1cGRhdGVkQnk6IHRleHQoJ3VwZGF0ZWRfYnknKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgb3JnUnVsZUVudGl0eVVuaXF1ZTogdW5pcXVlSW5kZXgoJ2NvbXBsaWFuY2VfZXhlbXB0aW9uX29yZ19ydWxlX2VudGl0eV91bmlxdWUnKVxuICAgIC5vbih0YWJsZS5vcmdJZCwgdGFibGUucnVsZUlkLCB0YWJsZS5lbnRpdHlJZCksXG4gIG9yZ1N0YXR1c0lkeDogaW5kZXgoJ2NvbXBsaWFuY2VfZXhlbXB0aW9uX29yZ19zdGF0dXNfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLnN0YXR1cyksXG4gIGV4cGlyZXNBdElkeDogaW5kZXgoJ2NvbXBsaWFuY2VfZXhlbXB0aW9uX2V4cGlyZXNfYXRfaWR4Jykub24odGFibGUuZXhwaXJlc0F0KSxcbiAgZW50aXR5SWRJZHg6IGluZGV4KCdjb21wbGlhbmNlX2V4ZW1wdGlvbl9lbnRpdHlfaWRfaWR4Jykub24odGFibGUuZW50aXR5SWQpLFxufSkpO1xuXG4vKipcbiAqIFRyYWNrcyB3aGljaCBvcmdzIGhhdmUgb3B0ZWQgaW50byBzeXN0ZW0tb3JnIHB1Ymxpc2hlZCBjb21wbGlhbmNlIHJ1bGVzLlxuICpcbiAqIEB0YWJsZSBjb21wbGlhbmNlX3J1bGVfc3Vic2NyaXB0aW9uc1xuICovXG5leHBvcnQgY29uc3QgY29tcGxpYW5jZVJ1bGVTdWJzY3JpcHRpb24gPSBwZ1RhYmxlKCdjb21wbGlhbmNlX3J1bGVfc3Vic2NyaXB0aW9ucycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBydWxlSWQ6IHV1aWQoJ3J1bGVfaWQnKS5ub3ROdWxsKCkucmVmZXJlbmNlcygoKSA9PiBjb21wbGlhbmNlUnVsZS5pZCwgeyBvbkRlbGV0ZTogJ2Nhc2NhZGUnIH0pLFxuICBzdWJzY3JpYmVkQnk6IHRleHQoJ3N1YnNjcmliZWRfYnknKS5ub3ROdWxsKCksXG4gIHN1YnNjcmliZWRBdDogdGltZXN0YW1wKCdzdWJzY3JpYmVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgaXNBY3RpdmU6IGJvb2xlYW4oJ2lzX2FjdGl2ZScpLmRlZmF1bHQodHJ1ZSkubm90TnVsbCgpLFxuICBwaW5uZWRWZXJzaW9uOiBqc29uYigncGlubmVkX3ZlcnNpb24nKS4kdHlwZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oKSxcbiAgdW5zdWJzY3JpYmVkQXQ6IHRpbWVzdGFtcCgndW5zdWJzY3JpYmVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIHVuc3Vic2NyaWJlZEJ5OiB0ZXh0KCd1bnN1YnNjcmliZWRfYnknKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgb3JnUnVsZVVuaXF1ZTogdW5pcXVlSW5kZXgoJ2NvbXBsaWFuY2VfcnVsZV9zdWJfb3JnX3J1bGVfdW5pcXVlJykub24odGFibGUub3JnSWQsIHRhYmxlLnJ1bGVJZCksXG4gIG9yZ0FjdGl2ZUlkeDogaW5kZXgoJ2NvbXBsaWFuY2VfcnVsZV9zdWJfb3JnX2FjdGl2ZV9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUuaXNBY3RpdmUpLFxuICBydWxlSWR4OiBpbmRleCgnY29tcGxpYW5jZV9ydWxlX3N1Yl9ydWxlX2lkeCcpLm9uKHRhYmxlLnJ1bGVJZCksXG59KSk7XG5cbi8qKlxuICogQnVsayBjb21wbGlhbmNlIHNjYW5zICB0cmFja3Mgc2NoZWR1bGVkIGFuZCBvbi1kZW1hbmQgc2NhbnMuXG4gKlxuICogQHRhYmxlIGNvbXBsaWFuY2Vfc2NhbnNcbiAqL1xuZXhwb3J0IGNvbnN0IGNvbXBsaWFuY2VTY2FuID0gcGdUYWJsZSgnY29tcGxpYW5jZV9zY2FucycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICB0YXJnZXQ6IHZhcmNoYXIoJ3RhcmdldCcsIHsgbGVuZ3RoOiAyMCB9KS5ub3ROdWxsKCksIC8vIHBsdWdpbiB8IHBpcGVsaW5lIHwgYWxsXG4gIGZpbHRlcjoganNvbmIoJ2ZpbHRlcicpLCAvLyBvcHRpb25hbCBlbnRpdHkgZmlsdGVyIGZvciBwYXJ0aWFsIHNjYW5zXG4gIHN0YXR1czogdmFyY2hhcignc3RhdHVzJywgeyBsZW5ndGg6IDIwIH0pLmRlZmF1bHQoJ3BlbmRpbmcnKS5ub3ROdWxsKCksIC8vIHBlbmRpbmcgfCBydW5uaW5nIHwgY29tcGxldGVkIHwgZmFpbGVkIHwgY2FuY2VsbGVkXG4gIHRyaWdnZXJlZEJ5OiB2YXJjaGFyKCd0cmlnZ2VyZWRfYnknLCB7IGxlbmd0aDogMjAgfSkubm90TnVsbCgpLCAvLyBtYW51YWwgfCBzY2hlZHVsZWQgfCBydWxlLWNoYW5nZSB8IHJ1bGUtZHJ5LXJ1blxuICB1c2VySWQ6IHRleHQoJ3VzZXJfaWQnKS5ub3ROdWxsKCksXG4gIHRvdGFsRW50aXRpZXM6IGludGVnZXIoJ3RvdGFsX2VudGl0aWVzJykuZGVmYXVsdCgwKS5ub3ROdWxsKCksXG4gIHByb2Nlc3NlZEVudGl0aWVzOiBpbnRlZ2VyKCdwcm9jZXNzZWRfZW50aXRpZXMnKS5kZWZhdWx0KDApLm5vdE51bGwoKSxcbiAgcGFzc0NvdW50OiBpbnRlZ2VyKCdwYXNzX2NvdW50JykuZGVmYXVsdCgwKS5ub3ROdWxsKCksXG4gIHdhcm5Db3VudDogaW50ZWdlcignd2Fybl9jb3VudCcpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICBibG9ja0NvdW50OiBpbnRlZ2VyKCdibG9ja19jb3VudCcpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICBzdGFydGVkQXQ6IHRpbWVzdGFtcCgnc3RhcnRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBjb21wbGV0ZWRBdDogdGltZXN0YW1wKCdjb21wbGV0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgY2FuY2VsbGVkQXQ6IHRpbWVzdGFtcCgnY2FuY2VsbGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGNhbmNlbGxlZEJ5OiB0ZXh0KCdjYW5jZWxsZWRfYnknKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICBvcmdDcmVhdGVkQXRJZHg6IGluZGV4KCdjb21wbGlhbmNlX3NjYW5fb3JnX2NyZWF0ZWRfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLmNyZWF0ZWRBdCksXG4gIG9yZ1N0YXR1c0lkeDogaW5kZXgoJ2NvbXBsaWFuY2Vfc2Nhbl9vcmdfc3RhdHVzX2lkeCcpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5zdGF0dXMpLFxufSkpO1xuXG4vKipcbiAqIENyb24tYmFzZWQgcmVjdXJyaW5nIHNjYW4gc2NoZWR1bGVzLlxuICpcbiAqIEB0YWJsZSBjb21wbGlhbmNlX3NjYW5fc2NoZWR1bGVzXG4gKi9cbmV4cG9ydCBjb25zdCBjb21wbGlhbmNlU2NhblNjaGVkdWxlID0gcGdUYWJsZSgnY29tcGxpYW5jZV9zY2FuX3NjaGVkdWxlcycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICB0YXJnZXQ6IHZhcmNoYXIoJ3RhcmdldCcsIHsgbGVuZ3RoOiAyMCB9KS5ub3ROdWxsKCksIC8vIHBsdWdpbiB8IHBpcGVsaW5lIHwgYWxsXG4gIGNyb25FeHByZXNzaW9uOiB2YXJjaGFyKCdjcm9uX2V4cHJlc3Npb24nLCB7IGxlbmd0aDogMTAwIH0pLm5vdE51bGwoKSxcbiAgaXNBY3RpdmU6IGJvb2xlYW4oJ2lzX2FjdGl2ZScpLmRlZmF1bHQodHJ1ZSkubm90TnVsbCgpLFxuICBsYXN0UnVuQXQ6IHRpbWVzdGFtcCgnbGFzdF9ydW5fYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgbmV4dFJ1bkF0OiB0aW1lc3RhbXAoJ25leHRfcnVuX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGNyZWF0ZWRCeTogdGV4dCgnY3JlYXRlZF9ieScpLm5vdE51bGwoKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICB1cGRhdGVkQnk6IHRleHQoJ3VwZGF0ZWRfYnknKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgYWN0aXZlTmV4dFJ1bklkeDogaW5kZXgoJ2NvbXBsaWFuY2Vfc2Nhbl9zY2hlZHVsZV9hY3RpdmVfbmV4dF9pZHgnKVxuICAgIC5vbih0YWJsZS5pc0FjdGl2ZSwgdGFibGUubmV4dFJ1bkF0KSxcbiAgb3JnSWR4OiBpbmRleCgnY29tcGxpYW5jZV9zY2FuX3NjaGVkdWxlX29yZ19pZHgnKS5vbih0YWJsZS5vcmdJZCksXG59KSk7XG5cbi8qKlxuICogUGVyLW9yZyBub3RpZmljYXRpb24gc2V0dGluZ3MgZm9yIGNvbXBsaWFuY2UgZXZlbnRzLlxuICpcbiAqIEB0YWJsZSBjb21wbGlhbmNlX25vdGlmaWNhdGlvbl9wcmVmZXJlbmNlc1xuICovXG5leHBvcnQgY29uc3QgY29tcGxpYW5jZU5vdGlmaWNhdGlvblByZWZlcmVuY2UgPSBwZ1RhYmxlKCdjb21wbGlhbmNlX25vdGlmaWNhdGlvbl9wcmVmZXJlbmNlcycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLnVuaXF1ZSgpLFxuICBub3RpZnlPbkJsb2NrOiBib29sZWFuKCdub3RpZnlfb25fYmxvY2snKS5kZWZhdWx0KHRydWUpLm5vdE51bGwoKSxcbiAgbm90aWZ5T25XYXJuaW5nOiBib29sZWFuKCdub3RpZnlfb25fd2FybmluZycpLmRlZmF1bHQoZmFsc2UpLm5vdE51bGwoKSxcbiAgZGlnZXN0TW9kZTogdmFyY2hhcignZGlnZXN0X21vZGUnLCB7IGxlbmd0aDogMjAgfSkuZGVmYXVsdCgnaW1tZWRpYXRlJykubm90TnVsbCgpLCAvLyBpbW1lZGlhdGUgfCBkYWlseSB8IHdlZWtseVxuICBkaWdlc3RTY2hlZHVsZTogdmFyY2hhcignZGlnZXN0X3NjaGVkdWxlJywgeyBsZW5ndGg6IDEwMCB9KSxcbiAgbGFzdERpZ2VzdEF0OiB0aW1lc3RhbXAoJ2xhc3RfZGlnZXN0X2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIHRhcmdldFVzZXJzOiBqc29uYigndGFyZ2V0X3VzZXJzJykuJHR5cGU8c3RyaW5nW10+KCksIC8vIG51bGwgPSBhbGwgb3JnIGFkbWluc1xuICB3ZWJob29rVXJsOiB2YXJjaGFyKCd3ZWJob29rX3VybCcsIHsgbGVuZ3RoOiA1MDAgfSksXG4gIHdlYmhvb2tTZWNyZXQ6IHZhcmNoYXIoJ3dlYmhvb2tfc2VjcmV0JywgeyBsZW5ndGg6IDI1NSB9KSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59KTtcblxuLyoqXG4gKiBMb2cgb2YgYWxsIGNvbXBsaWFuY2Ugbm90aWZpY2F0aW9ucyBzZW50LlxuICpcbiAqIEB0YWJsZSBjb21wbGlhbmNlX25vdGlmaWNhdGlvbl9sb2dcbiAqL1xuZXhwb3J0IGNvbnN0IGNvbXBsaWFuY2VOb3RpZmljYXRpb25Mb2cgPSBwZ1RhYmxlKCdjb21wbGlhbmNlX25vdGlmaWNhdGlvbl9sb2cnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG4gIG9yZ0lkOiB2YXJjaGFyKCdvcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgY2hhbm5lbDogdmFyY2hhcignY2hhbm5lbCcsIHsgbGVuZ3RoOiAyMCB9KS5ub3ROdWxsKCksIC8vIGluLWFwcCB8IHdlYmhvb2sgfCBkaWdlc3RcbiAgc3RhdHVzOiB2YXJjaGFyKCdzdGF0dXMnLCB7IGxlbmd0aDogMjAgfSkubm90TnVsbCgpLCAvLyBzZW50IHwgZmFpbGVkIHwgcGVuZGluZ1xuICBwYXlsb2FkOiBqc29uYigncGF5bG9hZCcpLiR0eXBlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PigpLm5vdE51bGwoKSxcbiAgd2ViaG9va1Jlc3BvbnNlQ29kZTogaW50ZWdlcignd2ViaG9va19yZXNwb25zZV9jb2RlJyksXG4gIHdlYmhvb2tFcnJvcjogdGV4dCgnd2ViaG9va19lcnJvcicpLFxuICByZXRyeUNvdW50OiBpbnRlZ2VyKCdyZXRyeV9jb3VudCcpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICBuZXh0UmV0cnlBdDogdGltZXN0YW1wKCduZXh0X3JldHJ5X2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIHJlbGF0ZWRBdWRpdElkOiB1dWlkKCdyZWxhdGVkX2F1ZGl0X2lkJyksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgb3JnQ3JlYXRlZEF0SWR4OiBpbmRleCgnY29tcGxpYW5jZV9ub3RpZmljYXRpb25fb3JnX2NyZWF0ZWRfaWR4JylcbiAgICAub24odGFibGUub3JnSWQsIHRhYmxlLmNyZWF0ZWRBdCksXG4gIHN0YXR1c1JldHJ5SWR4OiBpbmRleCgnY29tcGxpYW5jZV9ub3RpZmljYXRpb25fc3RhdHVzX3JldHJ5X2lkeCcpXG4gICAgLm9uKHRhYmxlLnN0YXR1cywgdGFibGUubmV4dFJldHJ5QXQpLFxuICByZWxhdGVkQXVkaXRJZHg6IGluZGV4KCdjb21wbGlhbmNlX25vdGlmaWNhdGlvbl9yZWxhdGVkX2F1ZGl0X2lkeCcpXG4gICAgLm9uKHRhYmxlLnJlbGF0ZWRBdWRpdElkKSxcbn0pKTtcblxuLyoqXG4gKiBDb21wbGlhbmNlLXNwZWNpZmljIFJCQUMgcm9sZXMuXG4gKlxuICogQHRhYmxlIGNvbXBsaWFuY2Vfcm9sZXNcbiAqL1xuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZVJvbGVUeXBlID0gJ2NvbXBsaWFuY2Utdmlld2VyJyB8ICdjb21wbGlhbmNlLWVkaXRvcicgfCAnY29tcGxpYW5jZS1hZG1pbic7XG5cbmV4cG9ydCBjb25zdCBjb21wbGlhbmNlUm9sZSA9IHBnVGFibGUoJ2NvbXBsaWFuY2Vfcm9sZXMnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG4gIG9yZ0lkOiB2YXJjaGFyKCdvcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgdXNlcklkOiB0ZXh0KCd1c2VyX2lkJykubm90TnVsbCgpLFxuICByb2xlOiB2YXJjaGFyKCdyb2xlJywgeyBsZW5ndGg6IDMwIH0pLiR0eXBlPENvbXBsaWFuY2VSb2xlVHlwZT4oKS5ub3ROdWxsKCksXG4gIGdyYW50ZWRCeTogdGV4dCgnZ3JhbnRlZF9ieScpLm5vdE51bGwoKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIG9yZ1VzZXJVbmlxdWU6IHVuaXF1ZUluZGV4KCdjb21wbGlhbmNlX3JvbGVfb3JnX3VzZXJfdW5pcXVlJykub24odGFibGUub3JnSWQsIHRhYmxlLnVzZXJJZCksXG4gIG9yZ1JvbGVJZHg6IGluZGV4KCdjb21wbGlhbmNlX3JvbGVfb3JnX3JvbGVfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLnJvbGUpLFxufSkpO1xuXG4vKipcbiAqIEdlbmVyYXRlZCBjb21wbGlhbmNlIHJlcG9ydHMuXG4gKlxuICogQHRhYmxlIGNvbXBsaWFuY2VfcmVwb3J0c1xuICovXG5leHBvcnQgY29uc3QgY29tcGxpYW5jZVJlcG9ydCA9IHBnVGFibGUoJ2NvbXBsaWFuY2VfcmVwb3J0cycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICByZXBvcnRUeXBlOiB2YXJjaGFyKCdyZXBvcnRfdHlwZScsIHsgbGVuZ3RoOiAzMCB9KS5ub3ROdWxsKCksIC8vIHN1bW1hcnkgfCBkZXRhaWxlZCB8IGF1ZGl0LXRyYWlsIHwgY29tcGFyaXNvblxuICB0YXJnZXQ6IHZhcmNoYXIoJ3RhcmdldCcsIHsgbGVuZ3RoOiAyMCB9KS5ub3ROdWxsKCksIC8vIHBsdWdpbiB8IHBpcGVsaW5lIHwgYWxsXG4gIGRhdGVGcm9tOiB0aW1lc3RhbXAoJ2RhdGVfZnJvbScsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBkYXRlVG86IHRpbWVzdGFtcCgnZGF0ZV90bycsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBjb21wYXJlRnJvbTogdGltZXN0YW1wKCdjb21wYXJlX2Zyb20nLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgY29tcGFyZVRvOiB0aW1lc3RhbXAoJ2NvbXBhcmVfdG8nLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgZGF0YToganNvbmIoJ2RhdGEnKS4kdHlwZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oKS5ub3ROdWxsKCksXG4gIGZvcm1hdDogdmFyY2hhcignZm9ybWF0JywgeyBsZW5ndGg6IDEwIH0pLmRlZmF1bHQoJ2pzb24nKS5ub3ROdWxsKCksIC8vIGpzb24gfCBjc3ZcbiAgZ2VuZXJhdGVkQnk6IHRleHQoJ2dlbmVyYXRlZF9ieScpLm5vdE51bGwoKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICBvcmdDcmVhdGVkQXRJZHg6IGluZGV4KCdjb21wbGlhbmNlX3JlcG9ydF9vcmdfY3JlYXRlZF9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUuY3JlYXRlZEF0KSxcbn0pKTtcblxuLyoqXG4gKiBDcm9uLWJhc2VkIHJlY3VycmluZyByZXBvcnQgZ2VuZXJhdGlvbiBzY2hlZHVsZXMuXG4gKlxuICogQHRhYmxlIGNvbXBsaWFuY2VfcmVwb3J0X3NjaGVkdWxlc1xuICovXG5leHBvcnQgY29uc3QgY29tcGxpYW5jZVJlcG9ydFNjaGVkdWxlID0gcGdUYWJsZSgnY29tcGxpYW5jZV9yZXBvcnRfc2NoZWR1bGVzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHJlcG9ydFR5cGU6IHZhcmNoYXIoJ3JlcG9ydF90eXBlJywgeyBsZW5ndGg6IDMwIH0pLm5vdE51bGwoKSwgLy8gc3VtbWFyeSB8IGRldGFpbGVkXG4gIHRhcmdldDogdmFyY2hhcigndGFyZ2V0JywgeyBsZW5ndGg6IDIwIH0pLm5vdE51bGwoKSwgLy8gcGx1Z2luIHwgcGlwZWxpbmUgfCBhbGxcbiAgZm9ybWF0OiB2YXJjaGFyKCdmb3JtYXQnLCB7IGxlbmd0aDogMTAgfSkuZGVmYXVsdCgnanNvbicpLm5vdE51bGwoKSxcbiAgY3JvbkV4cHJlc3Npb246IHZhcmNoYXIoJ2Nyb25fZXhwcmVzc2lvbicsIHsgbGVuZ3RoOiAxMDAgfSkubm90TnVsbCgpLFxuICBpc0FjdGl2ZTogYm9vbGVhbignaXNfYWN0aXZlJykuZGVmYXVsdCh0cnVlKS5ub3ROdWxsKCksXG4gIGxhc3RSdW5BdDogdGltZXN0YW1wKCdsYXN0X3J1bl9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBuZXh0UnVuQXQ6IHRpbWVzdGFtcCgnbmV4dF9ydW5fYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgZGVsaXZlclRvOiBqc29uYignZGVsaXZlcl90bycpLiR0eXBlPHN0cmluZ1tdPigpLmRlZmF1bHQoW10pLm5vdE51bGwoKSwgLy8gdXNlcklkcyB0byBub3RpZnlcbiAgY3JlYXRlZEJ5OiB0ZXh0KCdjcmVhdGVkX2J5Jykubm90TnVsbCgpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRCeTogdGV4dCgndXBkYXRlZF9ieScpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICBhY3RpdmVOZXh0UnVuSWR4OiBpbmRleCgnY29tcGxpYW5jZV9yZXBvcnRfc2NoZWR1bGVfYWN0aXZlX25leHRfaWR4JylcbiAgICAub24odGFibGUuaXNBY3RpdmUsIHRhYmxlLm5leHRSdW5BdCksXG4gIG9yZ0lkeDogaW5kZXgoJ2NvbXBsaWFuY2VfcmVwb3J0X3NjaGVkdWxlX29yZ19pZHgnKS5vbih0YWJsZS5vcmdJZCksXG59KSk7XG5cbi8qKlxuICogVXNlci1lZGl0YWJsZSBvYnNlcnZhYmlsaXR5IGRhc2hib2FyZC4gUmVwbGFjZXMgdGhlIGNvZGUtZGVmaW5lZCBkYXNoYm9hcmRzXG4gKiB1bmRlciBgZnJvbnRlbmQvc3JjL2xpYi9kYXNoYm9hcmRzLyoudHNgIHNvIG9wZXJhdG9ycyBjYW4gYWRkIHBhbmVscyBhbmRcbiAqIGN1c3RvbWl6ZSBsYXlvdXQgcGVyLW9yZyB3aXRob3V0IGEgcmVkZXBsb3kuXG4gKlxuICogYGxheW91dEpzb25gIGNhcnJpZXMgdGhlIHJlYWN0LWdyaWQtbGF5b3V0IGNvb3JkaW5hdGUgc2V0IGtleWVkIGJ5IHBhbmVsIGlkO1xuICogYGRhc2hib2FyZF9wYW5lbHNgIGhvbGRzIHRoZSBwYW5lbC1jb250ZW50IHJvd3Mgc28gYW4gTi1wYW5lbCBkYXNoYm9hcmRcbiAqIGRvZXNuJ3QgYmxvYXQgb25lIHJvdydzIEpTT04gdG8gc2V2ZXJhbCBLQi4gVGhlIGNhdGFsb2cgcXVlcnkgaXMgcmVmZXJlbmNlZFxuICogYnkga2V5IG9ubHkgKHNlZSBwbGF0Zm9ybS9zcmMvb2JzZXJ2YWJpbGl0eS9jYXRhbG9nLnRzKSAgdGhlIGRhc2hib2FyZFxuICogcmVjb3JkIG5ldmVyIGNhcnJpZXMgcmF3IFByb21RTC9Mb2dRTCwga2VlcGluZyB0aGUgY2F0YWxvZyBhcyB0aGUgc2VjdXJpdHlcbiAqIGJvdW5kYXJ5IGZvciB1cHN0cmVhbSBxdWVyeSBleGVjdXRpb24uXG4gKlxuICogVmlzaWJpbGl0eSBsYWRkZXIgKiAtIGBwcml2YXRlYCAgb25seSB0aGUgY3JlYXRvciBjYW4gcmVhZC93cml0ZVxuICogLSBgb3JnYCAgYW55b25lIGluIHRoZSBzYW1lIG9yZyBjYW4gcmVhZDsgb3JnIGFkbWlucyArIGNyZWF0b3IgY2FuIHdyaXRlXG4gKiAtIGBwdWJsaWNgICBldmVyeSBhdXRoZW50aWNhdGVkIHVzZXIgY2FuIHJlYWQ7IG9ubHkgc3lzYWRtaW5zIGNhbiB3cml0ZS5cbiAqIFVzZWQgZm9yIHRoZSA1IGRlZmF1bHQgZGFzaGJvYXJkcyAoYG9yZ19pZD0nc3lzdGVtJ2ApIHNvIHRoZVxuICogZXhpc3Rpbmcgc3lzdGVtLW9yZyB2aXNpYmlsaXR5IHJ1bGUgY292ZXJzIHRoZW0gYnkgZGVmYXVsdC5cbiAqXG4gKiBAdGFibGUgZGFzaGJvYXJkc1xuICovXG5leHBvcnQgY29uc3QgZGFzaGJvYXJkID0gcGdUYWJsZSgnZGFzaGJvYXJkcycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcblxuICAvLyBPcmcgKyBjcmVhdG9yXG4gIG9yZ0lkOiB2YXJjaGFyKCdvcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pXG4gICAgLmRlZmF1bHQoJ3N5c3RlbScpXG4gICAgLm5vdE51bGwoKSxcbiAgY3JlYXRlZEJ5OiB0ZXh0KCdjcmVhdGVkX2J5JylcbiAgICAuZGVmYXVsdCgnc3lzdGVtJylcbiAgICAubm90TnVsbCgpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pXG4gICAgLmRlZmF1bHROb3coKVxuICAgIC5ub3ROdWxsKCksXG4gIHVwZGF0ZWRCeTogdGV4dCgndXBkYXRlZF9ieScpXG4gICAgLmRlZmF1bHQoJ3N5c3RlbScpXG4gICAgLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KVxuICAgIC5kZWZhdWx0Tm93KClcbiAgICAubm90TnVsbCgpLFxuXG4gIC8vIElkZW50aXR5XG4gIG5hbWU6IHZhcmNoYXIoJ25hbWUnLCB7IGxlbmd0aDogMTUwIH0pXG4gICAgLm5vdE51bGwoKSxcbiAgZGVzY3JpcHRpb246IHRleHQoJ2Rlc2NyaXB0aW9uJyksXG5cbiAgLy8gcmVhY3QtZ3JpZC1sYXlvdXQgY29vcmRpbmF0ZSBzZXQga2V5ZWQgYnkgcGFuZWwgaWQuXG4gIC8vIFNoYXBlOiB7IFtwYW5lbElkXTogeyB4LCB5LCB3LCBoLCBtaW5XPywgbWluSD8gfSB9XG4gIGxheW91dEpzb246IGpzb25iKCdsYXlvdXRfanNvbicpXG4gICAgLiR0eXBlPFJlY29yZDxzdHJpbmcsIHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IHc6IG51bWJlcjsgaDogbnVtYmVyOyBtaW5XPzogbnVtYmVyOyBtaW5IPzogbnVtYmVyIH0+PigpXG4gICAgLmRlZmF1bHQoe30pXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBWaXNpYmlsaXR5ICBzZWUgaGVhZGVyIGZvciBsYWRkZXIgc2VtYW50aWNzLiBDb25zdHJhaW5lZCBhdCB0aGUgU1FMXG4gIC8vIGxheWVyIHRvbyB2aWEgYSBDSEVDSyBpbiBwb3N0Z3Jlcy1pbml0LnNxbCB0byBrZWVwIHR5cG9zIGZyb20gc25lYWtpbmdcbiAgLy8gcGFzdCB0aGUgYXBwbGljYXRpb24gbGF5ZXIuXG4gIHZpc2liaWxpdHk6IHZhcmNoYXIoJ3Zpc2liaWxpdHknLCB7IGxlbmd0aDogMTAgfSlcbiAgICAuJHR5cGU8J3ByaXZhdGUnIHwgJ29yZycgfCAncHVibGljJz4oKVxuICAgIC5kZWZhdWx0KCdwcml2YXRlJylcbiAgICAubm90TnVsbCgpLFxuXG4gIC8vIFNvZnQgZGVsZXRlIChtYXRjaGVzIHRoZSByZXN0IG9mIHRoZSBzY2hlbWEncyBjb252ZW50aW9uKVxuICBkZWxldGVkQXQ6IHRpbWVzdGFtcCgnZGVsZXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBkZWxldGVkQnk6IHRleHQoJ2RlbGV0ZWRfYnknKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgLy8gTGlzdGluZyBpcyBvcmctc2NvcGVkIGFuZCB2aXNpYmlsaXR5LWZpbHRlcmVkLCBzbyBib3RoIGdvIGluIHRoZSBpbmRleC5cbiAgb3JnVmlzaWJpbGl0eUlkeDogaW5kZXgoJ2Rhc2hib2FyZF9vcmdfdmlzaWJpbGl0eV9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUudmlzaWJpbGl0eSksXG4gIC8vIENvbnZlbmllbmNlIGZvciBcImFsbCBteSBkYXNoYm9hcmRzXCIgbGlzdGluZ1xuICBjcmVhdGVkQnlJZHg6IGluZGV4KCdkYXNoYm9hcmRfY3JlYXRlZF9ieV9pZHgnKS5vbih0YWJsZS5jcmVhdGVkQnkpLFxuICAvLyBTYW1lLW9yZyBkdXBsaWNhdGUtbmFtZSBndWFyZC4gVGhlIChvcmdJZCwgbmFtZSkgdHVwbGUgaXMgdW5pcXVlIGFtb25nXG4gIC8vIG5vbi1kZWxldGVkIHJvd3M7IHNvZnQtZGVsZXRlZCByb3dzIGFyZSBleGNsdWRlZCBzbyBuYW1lIHJldXNlIGFmdGVyXG4gIC8vIGRlbGV0aW9uIHdvcmtzLlxuICBuYW1lVW5pcXVlOiB1bmlxdWVJbmRleCgnZGFzaGJvYXJkX29yZ19uYW1lX3VuaXF1ZScpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5uYW1lKSxcbn0pKTtcblxuLyoqXG4gKiBBIHNpbmdsZSBwYW5lbCBpbnNpZGUgYSBkYXNoYm9hcmQuIFRoZSBjYXRhbG9nIGBxdWVyeUtleWAgaXMgdGhlIG9ubHkgdGhpbmdcbiAqIHRoZSBwYW5lbCBjYXJyaWVzIGZyb20gdGhlIHF1ZXJ5IHNpZGUgIHN1YnN0aXR1dGlvbiArIGV4ZWN1dGlvbiBoYXBwZW5zXG4gKiBzZXJ2ZXItc2lkZSB2aWEgdGhlIGV4aXN0aW5nIGNhdGFsb2csIHNvIG5vIFByb21RTC9Mb2dRTCB0cmF2ZWxzIHdpdGggdGhlXG4gKiBwYW5lbCByZWNvcmQuXG4gKlxuICogQHRhYmxlIGRhc2hib2FyZF9wYW5lbHNcbiAqL1xuZXhwb3J0IGNvbnN0IGRhc2hib2FyZFBhbmVsID0gcGdUYWJsZSgnZGFzaGJvYXJkX3BhbmVscycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgZGFzaGJvYXJkSWQ6IHV1aWQoJ2Rhc2hib2FyZF9pZCcpXG4gICAgLm5vdE51bGwoKSxcbiAgLy8gQ2F0YWxvZyBrZXkgKGUuZy4gYHBsdWdpbl9idWlsZHNfcGVyX21pbmApLiBUaGUgc2VydmVyIHZhbGlkYXRlcyB0aGlzXG4gIC8vIGFnYWluc3QgUVVFUklFUyBhdCByZW5kZXIgdGltZS5cbiAgcXVlcnlLZXk6IHZhcmNoYXIoJ3F1ZXJ5X2tleScsIHsgbGVuZ3RoOiAxMDAgfSlcbiAgICAubm90TnVsbCgpLFxuICAvLyAnc3RhdCcgfCAnbGluZScgfCAndGFibGUnIHwgJ3N0YWNrZWQtYmFyJyAga2VwdCBzdHJpbmdseS10eXBlZCBmb3JcbiAgLy8gZm9yd2FyZCBjb21wYXRpYmlsaXR5OyB0aGUgcmVuZGVyZXIgZmFsbHMgYmFjayB0byAnbGluZScgb24gdW5rbm93bi5cbiAgdml6S2luZDogdmFyY2hhcigndml6X2tpbmQnLCB7IGxlbmd0aDogMzAgfSlcbiAgICAuZGVmYXVsdCgnbGluZScpXG4gICAgLm5vdE51bGwoKSxcbiAgdGl0bGU6IHZhcmNoYXIoJ3RpdGxlJywgeyBsZW5ndGg6IDIwMCB9KVxuICAgIC5ub3ROdWxsKCksXG4gIC8vIFRhaWx3aW5kIGNvbC1zcGFuIHRpZXIgKDEtMTIsIGJ1dCBvbmx5IDMvNC82LzgvOS8xMiBhcmUgcmVuZGVyYWJsZSkuXG4gIHNwYW46IGludGVnZXIoJ3NwYW4nKVxuICAgIC5kZWZhdWx0KDYpXG4gICAgLm5vdE51bGwoKSxcbiAgLy8gT3B0aW9uYWw6IGxhYmVsIGtleSBmb3Igc2VyaWVzIGdyb3VwaW5nIChlLmcuICdzdGF0dXMnLCAnc3RhdGUnKS5cbiAgZ3JvdXBCeTogdmFyY2hhcignZ3JvdXBfYnknLCB7IGxlbmd0aDogNTAgfSksXG4gIC8vIE9wdGlvbmFsOiBjYXRhbG9nIGZvcm1hdCBrZXkgKCdwZXJjZW50JyB8ICdzZWNvbmRzJyB8Li4uKS5cbiAgZm9ybWF0OiB2YXJjaGFyKCdmb3JtYXQnLCB7IGxlbmd0aDogMjAgfSksXG4gIC8vIDAtYmFzZWQgcmVuZGVyIG9yZGVyIHdpdGhpbiB0aGUgZGFzaGJvYXJkLiBFZGl0b3IgcmVhc3NpZ25zIG9uIGRyYWcuXG4gIHBvc2l0aW9uOiBpbnRlZ2VyKCdwb3NpdGlvbicpXG4gICAgLmRlZmF1bHQoMClcbiAgICAubm90TnVsbCgpLFxuICAvLyBPcHRpb25hbCB0ZW1wbGF0ZSB2YXIgdmFsdWVzIGJvdW5kIGF0IHBhbmVsIGxldmVsIChlLmcuIGBwbHVnaW49WGAgZm9yXG4gIC8vIHRoZSBwZXItcGx1Z2luIGRyaWxsLWRvd24gcGFuZWwpLiBTYW5pdGl6ZWQgc2VydmVyLXNpZGUgdmlhIHRoZSBjYXRhbG9nXG4gIC8vIHN1YnN0aXR1dGVWYXJzIGFsbG93LWxpc3QuXG4gIHZhcnM6IGpzb25iKCd2YXJzJylcbiAgICAuJHR5cGU8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oKVxuICAgIC5kZWZhdWx0KHt9KVxuICAgIC5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIC8vIFRoZSByZW5kZXIgcGF0aCBpcyBcImZldGNoIGFsbCBwYW5lbHMgZm9yIGRhc2hib2FyZCBYIGluIG9yZGVyXCIuXG4gIGRhc2hib2FyZFBvc2l0aW9uSWR4OiBpbmRleCgnZGFzaGJvYXJkX3BhbmVsX2Rhc2hib2FyZF9wb3NpdGlvbl9pZHgnKVxuICAgIC5vbih0YWJsZS5kYXNoYm9hcmRJZCwgdGFibGUucG9zaXRpb24pLFxufSkpO1xuXG4vKipcbiAqIFBlci1vcmcgYWxlcnQgbm90aWZpY2F0aW9uIGRlc3RpbmF0aW9uLiBNdWx0aS10ZW5hbnQgYWxlcnRpbmcgcm91dGVzXG4gKiBBbGVydG1hbmFnZXIgd2ViaG9va3MgdG8gdGhlIHBsYXRmb3JtOyB0aGUgcGxhdGZvcm0gbG9va3MgdGhlIGZpcmluZ1xuICogYWxlcnQncyBgb3JnX2lkYCBsYWJlbCB1cCBoZXJlIGFuZCBmb3J3YXJkcyB0byBlYWNoIGVuYWJsZWQgZGVzdGluYXRpb24uXG4gKlxuICogQ2hhbm5lbHMgKiAtIGBzbGFja2AgIGB0YXJnZXRgIGlzIHRoZSBpbmNvbWluZy13ZWJob29rIFVSTFxuICogLSBgd2ViaG9va2AgIGB0YXJnZXRgIGlzIGFueSBIVFRQUyBVUkw7IHRoZSByZWxheSBwb3N0cyB0aGVcbiAqIEFsZXJ0bWFuYWdlciB2MiB3ZWJob29rIHBheWxvYWQgdmVyYmF0aW1cbiAqIC0gYGluLWFwcGAgIGB0YXJnZXRgIGlnbm9yZWQ7IHN1cmZhY2VzIGFzIGFuIGluLWFwcCBtZXNzYWdlIHZpYVxuICogdGhlIGV4aXN0aW5nIGBtZXNzYWdlc2AgdGFibGVcbiAqXG4gKiBTZWNyZXRzICogLSBGb3IgYHNsYWNrYC9gd2ViaG9va2AgY2hhbm5lbHMsIHRoZSBVUkwgaXRzZWxmIGlzIHRoZSBzZWNyZXQuIFdlIGRvbid0XG4gKiBsb2cgaXQgb24gYGRhc2hib2FyZC51cGRhdGVgIG9yIHN1cmZhY2UgdGhlIGZ1bGwgVVJMIG9uIEdFVCBlbmRwb2ludHNcbiAqIGFmdGVyIHdyaXRlOyBqdXN0IGEgbWFza2VkIHByZXZpZXcgKGxhc3QgMTIgY2hhcnMpLiBTdG9yZWQgaW4gY2xlYXJcbiAqIHRleHQgIHNhbWUgcG9zdHVyZSBhcyBgY29tcGxpYW5jZV9ub3RpZmljYXRpb25fcHJlZmVyZW5jZXMud2ViaG9va191cmxgXG4gKiBhbmQgY29uc2lzdGVudCB3aXRoIHRoZSByZXN0IG9mIHRoZSBhcHAncyBzZWNyZXQgaGFuZGxpbmcgZm9yIG9yZy1sZXZlbFxuICogaW50ZWdyYXRpb25zLiBJZiB3ZSBhZGQgYSBLTVMtZW5jcnlwdGlvbiB0aWVyIGZvciBhbnkgc2VjcmV0IGNvbHVtbixcbiAqIHRoaXMgaXMgb25lIG9mIHRoZSBmaXJzdCB0byBtaWdyYXRlLlxuICpcbiAqIEB0YWJsZSBvcmdfYWxlcnRfZGVzdGluYXRpb25zXG4gKi9cbmV4cG9ydCBjb25zdCBvcmdBbGVydERlc3RpbmF0aW9uID0gcGdUYWJsZSgnb3JnX2FsZXJ0X2Rlc3RpbmF0aW9ucycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuXG4gIGNyZWF0ZWRCeTogdGV4dCgnY3JlYXRlZF9ieScpLm5vdE51bGwoKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KVxuICAgIC5kZWZhdWx0Tm93KClcbiAgICAubm90TnVsbCgpLFxuICB1cGRhdGVkQnk6IHRleHQoJ3VwZGF0ZWRfYnknKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSlcbiAgICAuZGVmYXVsdE5vdygpXG4gICAgLm5vdE51bGwoKSxcblxuICAvKiogJ3NsYWNrJyB8ICd3ZWJob29rJyB8ICdpbi1hcHAnICBrZXB0IHN0cmluZ2x5IHNvIGZ1dHVyZSBjaGFubmVscyAoUEQsXG4gICAqIGVtYWlsKSBjYW4gYmUgYWRkZWQgd2l0aG91dCBhIHNjaGVtYSBtaWdyYXRpb24uICovXG4gIGNoYW5uZWw6IHZhcmNoYXIoJ2NoYW5uZWwnLCB7IGxlbmd0aDogMjAgfSlcbiAgICAuJHR5cGU8J3NsYWNrJyB8ICd3ZWJob29rJyB8ICdpbi1hcHAnPigpXG4gICAgLm5vdE51bGwoKSxcbiAgLyoqIENoYW5uZWwtc3BlY2lmaWMgdGFyZ2V0LiBTbGFjazogd2ViaG9vayBVUkwuIFdlYmhvb2s6IEhUVFBTIFVSTC4gSW4tYXBwOiBpZ25vcmVkLiAqL1xuICB0YXJnZXQ6IHRleHQoJ3RhcmdldCcpLmRlZmF1bHQoJycpLm5vdE51bGwoKSxcbiAgLyoqIEZyaWVuZGx5IGxhYmVsIHNob3duIGluIHRoZSBzZXR0aW5ncyBVSS4gKi9cbiAgbGFiZWw6IHZhcmNoYXIoJ2xhYmVsJywgeyBsZW5ndGg6IDEwMCB9KS5ub3ROdWxsKCksXG5cbiAgLyoqIExvd2VzdCBzZXZlcml0eSB0aGF0IHRyaWdnZXJzIHRoaXMgZGVzdGluYXRpb24gKCd3YXJuaW5nJyA9IHdhcm5pbmcrY3JpdGljYWwsXG4gICAqICdjcml0aWNhbCcgPSBjcml0aWNhbCBvbmx5KS4gTWlycm9ycyBBbGVydG1hbmFnZXIgc2V2ZXJpdHkgb3JkZXJpbmcuICovXG4gIG1pblNldmVyaXR5OiB2YXJjaGFyKCdtaW5fc2V2ZXJpdHknLCB7IGxlbmd0aDogMTAgfSlcbiAgICAuJHR5cGU8J3dhcm5pbmcnIHwgJ2NyaXRpY2FsJz4oKVxuICAgIC5kZWZhdWx0KCd3YXJuaW5nJylcbiAgICAubm90TnVsbCgpLFxuICBlbmFibGVkOiBib29sZWFuKCdlbmFibGVkJykuZGVmYXVsdCh0cnVlKS5ub3ROdWxsKCksXG5cbiAgLyoqIFNvZnQgZGVsZXRlIHNvIHdlIGtlZXAgYXVkaXQgaGlzdG9yeSBvZiB3aG8tZGVsZXRlZC13aGF0LiAqL1xuICBkZWxldGVkQXQ6IHRpbWVzdGFtcCgnZGVsZXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBkZWxldGVkQnk6IHRleHQoJ2RlbGV0ZWRfYnknKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgLy8gUGVyLW9yZyBsaXN0aW5nICB0aGUgb25seSBhY2Nlc3MgcGF0aC5cbiAgb3JnSWR4OiBpbmRleCgnb3JnX2FsZXJ0X2Rlc3RpbmF0aW9uX29yZ19pZHgnKVxuICAgIC5vbih0YWJsZS5vcmdJZCwgdGFibGUuZW5hYmxlZCksXG59KSk7XG5cbi8qKlxuICogIFBlci1vcmcgYWxlcnQgcnVsZXMgYXV0aG9yZWQgYnkgb3BlcmF0b3JzLlxuICpcbiAqIEVhY2ggcm93IG1hdGVyaWFsaXplcyBpbnRvIGEgYGdyb3Vwc1tdLnJ1bGVzW11gIGVudHJ5IGluIGEgUHJvbWV0aGV1c1xuICogYHJ1bGVfZmlsZXNgIFlBTUwuIFRoZSBtYXRlcmlhbGl6ZXIgZW5kcG9pbnRcbiAqIGBHRVQgL2FwaS9vYnNlcnZhYmlsaXR5L2FsZXJ0LXJ1bGVzL21hdGVyaWFsaXplZC55bWxgIHJlbmRlcnMgYWxsIGVuYWJsZWRcbiAqIHJ1bGVzIGFjcm9zcyBhbGwgb3JncyAoZGVsZXRlZD1udWxsKSBpbnRvIG9uZSBkb2N1bWVudDsgUHJvbWV0aGV1cyBwb2xsc1xuICogb3IgYSBzaWRlY2FyIGNvcGllcyBpdCBpbnRvIHRoZSBydWxlcyBkaXIuXG4gKlxuICogVGVuYW5jeSArIHNhZmV0eSAqIC0gYGV4cHJgIGlzIHVzZXItYXV0aG9yZWQgUHJvbVFMLiBUaGUgQ1JVRCByb3V0ZSBlbmZvcmNlcyB0aGF0IHRoZVxuICogZXhwcmVzc2lvbiBzdWJzdHJpbmctY29udGFpbnMgYG9yZ19pZD1cIjxvcmdJZD5cImAgc28gYW4gb3BlcmF0b3IgY2FuJ3RcbiAqIHdyaXRlIHJ1bGVzIHRoYXQgZmlyZSBvbiBvdGhlciBvcmdzJyBtZXRyaWNzLiBUaGlzIGlzIGEgY29hcnNlIGdhdGVcbiAqIChhIG1hbGZvcm1lZCBleHByZXNzaW9uIGNhbiBzdGlsbCBiZSBzeW50YWN0aWNhbGx5IHdyb25nKSBidXQgaXRcbiAqIGNsb3NlcyB0aGUgY3Jvc3MtdGVuYW50IGRhdGEgbGVhay4gUmVhbCBQcm9tUUwgcGFyc2luZyArIGF1dG9tYXRpY1xuICogb3JnX2lkIGluamVjdGlvbiBpcyBhIGZvbGxvdy1vbi5cbiAqIC0gVGhlIG1hdGVyaWFsaXplZCBydWxlIGNhcnJpZXMgYGxhYmVscy5vcmdfaWQgPSA8b3JnSWQ+YCBzbyB0aGVcbiAqIGFsZXJ0bWFuYWdlci1yZWxheSByb3V0ZXMgZmlyaW5nIGFsZXJ0cyB0byB0aGUgcmlnaHQgb3JnJ3NcbiAqIGRlc3RpbmF0aW9ucyAobWF0Y2hlcyB0aGUgYWxlcnQtcmVsYXkgbW9kZWwpLlxuICpcbiAqIEB0YWJsZSBvcmdfYWxlcnRfcnVsZXNcbiAqL1xuZXhwb3J0IGNvbnN0IG9yZ0FsZXJ0UnVsZSA9IHBnVGFibGUoJ29yZ19hbGVydF9ydWxlcycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuXG4gIGNyZWF0ZWRCeTogdGV4dCgnY3JlYXRlZF9ieScpLm5vdE51bGwoKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICB1cGRhdGVkQnk6IHRleHQoJ3VwZGF0ZWRfYnknKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcblxuICAvKiogT3BlcmF0b3Itc3VwcGxpZWQgcnVsZSBuYW1lLiBTYW5pdGl6ZWQgaW50byBhIHZhbGlkIFByb20gYWxlcnQgbmFtZSBhdFxuICAgKiBtYXRlcmlhbGl6YXRpb24gdGltZSAoYmVjb21lcyBgT3JnUnVsZV88b3JnSWQ+XzxzbHVnPmAgdG8gYXZvaWQgbmFtZVxuICAgKiBjb2xsaXNpb25zIGFjcm9zcyBvcmdzKS4gKi9cbiAgbmFtZTogdmFyY2hhcignbmFtZScsIHsgbGVuZ3RoOiAxMDAgfSkubm90TnVsbCgpLFxuICAvKiogUHJvbVFMIGV4cHJlc3Npb24uIE1VU1Qgc3Vic3RyaW5nLWNvbnRhaW4gYG9yZ19pZD1cIjxvcmdJZD5cImAuICovXG4gIGV4cHI6IHRleHQoJ2V4cHInKS5ub3ROdWxsKCksXG4gIC8qKiBgZm9yOiA1bWAgc3R5bGUgZHVyYXRpb24uIFZhbGlkYXRlZCBhZ2FpbnN0IFByb20ncyBkdXJhdGlvbiByZWdleC4gKi9cbiAgZm9yRHVyYXRpb246IHZhcmNoYXIoJ2Zvcl9kdXJhdGlvbicsIHsgbGVuZ3RoOiAyMCB9KS5kZWZhdWx0KCc1bScpLm5vdE51bGwoKSxcbiAgLyoqICd3YXJuaW5nJyB8ICdjcml0aWNhbCcgIG1hdGNoZXMgdGhlIHBsYXRmb3JtLXdpZGUgc2V2ZXJpdHkgbGFkZGVyLiAqL1xuICBzZXZlcml0eTogdmFyY2hhcignc2V2ZXJpdHknLCB7IGxlbmd0aDogMjAgfSlcbiAgICAuJHR5cGU8J3dhcm5pbmcnIHwgJ2NyaXRpY2FsJz4oKVxuICAgIC5kZWZhdWx0KCd3YXJuaW5nJylcbiAgICAubm90TnVsbCgpLFxuICAvKiogQWxlcnRtYW5hZ2VyIGBzdW1tYXJ5YCBhbm5vdGF0aW9uLiBTdXBwb3J0cyBge3sgJHZhbHVlIH19YC4gKi9cbiAgc3VtbWFyeTogdGV4dCgnc3VtbWFyeScpLm5vdE51bGwoKSxcbiAgLyoqIEFsZXJ0bWFuYWdlciBgZGVzY3JpcHRpb25gIGFubm90YXRpb24uIE9wdGlvbmFsOyAnJyBpcyBmaW5lLiAqL1xuICBkZXNjcmlwdGlvbjogdGV4dCgnZGVzY3JpcHRpb24nKS5kZWZhdWx0KCcnKS5ub3ROdWxsKCksXG5cbiAgLyoqIERpc2FibGVkIHJ1bGVzIGRvbid0IG1hdGVyaWFsaXplLiBMZXRzIG9wZXJhdG9ycyBzdGFnZSBydWxlcyB3aXRob3V0IGZpcmluZy4gKi9cbiAgZW5hYmxlZDogYm9vbGVhbignZW5hYmxlZCcpLmRlZmF1bHQodHJ1ZSkubm90TnVsbCgpLFxuXG4gIC8qKiBTb2Z0IGRlbGV0ZSBzbyB3ZSBrZWVwIGF1ZGl0IG9mIHdoby1kZWxldGVkLXdoYXQuICovXG4gIGRlbGV0ZWRBdDogdGltZXN0YW1wKCdkZWxldGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGRlbGV0ZWRCeTogdGV4dCgnZGVsZXRlZF9ieScpLFxufSwgKHRhYmxlKSA9PiAoe1xuICAvLyBQZXItb3JnIGxpc3RpbmcgKyBtYXRlcmlhbGl6ZXIncyBlbmFibGVkLW9ubHkgc2Nhbi5cbiAgb3JnRW5hYmxlZElkeDogaW5kZXgoJ29yZ19hbGVydF9ydWxlX29yZ19lbmFibGVkX2lkeCcpXG4gICAgLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5lbmFibGVkKSxcbiAgLy8gVW5pcXVlIHdpdGhpbiBhbiBvcmcgc28gb3BlcmF0b3JzIGNhbid0IGFjY2lkZW50YWxseSBjbG9uZSBhIHJ1bGUuXG4gIG9yZ05hbWVVcTogdW5pcXVlSW5kZXgoJ29yZ19hbGVydF9ydWxlX29yZ19uYW1lX3VxJylcbiAgICAub24odGFibGUub3JnSWQsIHRhYmxlLm5hbWUpXG4gICAgLndoZXJlKHNxbGBkZWxldGVkX2F0IElTIE5VTExgKSxcbn0pKTtcblxuLyoqXG4gKiBDb21wbGV0ZSBEcml6emxlIHNjaGVtYSBleHBvcnRcbiAqL1xuZXhwb3J0IGNvbnN0IHNjaGVtYSA9IHtcbiAgcGx1Z2luLFxuICBwaXBlbGluZSxcbiAgbWVzc2FnZSxcbiAgcGlwZWxpbmVSZWdpc3RyeSxcbiAgcGlwZWxpbmVFdmVudCxcbiAgLy8gT2JzZXJ2YWJpbGl0eSBkYXNoYm9hcmRzICh1c2VyLWVkaXRhYmxlIHJlcGxhY2VtZW50IGZvciBjb2RlLWRlZmluZWQgZGFzaGJvYXJkcylcbiAgZGFzaGJvYXJkLFxuICBkYXNoYm9hcmRQYW5lbCxcbiAgLy8gUGVyLW9yZyBhbGVydCBub3RpZmljYXRpb24gZGVzdGluYXRpb25zIChtdWx0aS10ZW5hbnQgYWxlcnRpbmcpXG4gIG9yZ0FsZXJ0RGVzdGluYXRpb24sXG4gIC8vIHBlci1vcmcgb3BlcmF0b3ItYXV0aG9yZWQgYWxlcnQgcnVsZXMgIG1hdGVyaWFsaXplZCBpbnRvIFByb20gWUFNTC5cbiAgb3JnQWxlcnRSdWxlLFxuICAvLyBDb21wbGlhbmNlIHRhYmxlc1xuICBjb21wbGlhbmNlUG9saWN5LFxuICBjb21wbGlhbmNlUnVsZSxcbiAgY29tcGxpYW5jZVJ1bGVIaXN0b3J5LFxuICBjb21wbGlhbmNlQXVkaXRMb2csXG4gIGNvbXBsaWFuY2VFeGVtcHRpb24sXG4gIGNvbXBsaWFuY2VSdWxlU3Vic2NyaXB0aW9uLFxuICBjb21wbGlhbmNlU2NhbixcbiAgY29tcGxpYW5jZVNjYW5TY2hlZHVsZSxcbiAgY29tcGxpYW5jZU5vdGlmaWNhdGlvblByZWZlcmVuY2UsXG4gIGNvbXBsaWFuY2VOb3RpZmljYXRpb25Mb2csXG4gIGNvbXBsaWFuY2VSb2xlLFxuICBjb21wbGlhbmNlUmVwb3J0LFxuICBjb21wbGlhbmNlUmVwb3J0U2NoZWR1bGUsXG59IGFzIGNvbnN0O1xuXG4vKipcbiAqIFR5cGVTY3JpcHQgdHlwZXMgcmVwcmVzZW50aW5nIGRhdGFiYXNlIHJvd3NcbiAqL1xuZXhwb3J0IHR5cGUgUGx1Z2luID0gdHlwZW9mIHBsdWdpbi4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBQbHVnaW5JbnNlcnQgPSB0eXBlb2YgcGx1Z2luLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgUGlwZWxpbmUgPSB0eXBlb2YgcGlwZWxpbmUuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUGlwZWxpbmVJbnNlcnQgPSB0eXBlb2YgcGlwZWxpbmUuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBNZXNzYWdlID0gdHlwZW9mIG1lc3NhZ2UuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgTWVzc2FnZUluc2VydCA9IHR5cGVvZiBtZXNzYWdlLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgUGlwZWxpbmVSZWdpc3RyeSA9IHR5cGVvZiBwaXBlbGluZVJlZ2lzdHJ5LiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBpcGVsaW5lUmVnaXN0cnlJbnNlcnQgPSB0eXBlb2YgcGlwZWxpbmVSZWdpc3RyeS4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIFBpcGVsaW5lRXZlbnQgPSB0eXBlb2YgcGlwZWxpbmVFdmVudC4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBQaXBlbGluZUV2ZW50SW5zZXJ0ID0gdHlwZW9mIHBpcGVsaW5lRXZlbnQuJGluZmVySW5zZXJ0O1xuXG4vLyBPYnNlcnZhYmlsaXR5IGRhc2hib2FyZHNcbmV4cG9ydCB0eXBlIERhc2hib2FyZCA9IHR5cGVvZiBkYXNoYm9hcmQuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgRGFzaGJvYXJkSW5zZXJ0ID0gdHlwZW9mIGRhc2hib2FyZC4kaW5mZXJJbnNlcnQ7XG5leHBvcnQgdHlwZSBEYXNoYm9hcmRVcGRhdGUgPSBQYXJ0aWFsPE9taXQ8RGFzaGJvYXJkSW5zZXJ0LCAnaWQnIHwgJ2NyZWF0ZWRBdCcgfCAnY3JlYXRlZEJ5Jz4+O1xuXG5leHBvcnQgdHlwZSBEYXNoYm9hcmRQYW5lbCA9IHR5cGVvZiBkYXNoYm9hcmRQYW5lbC4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBEYXNoYm9hcmRQYW5lbEluc2VydCA9IHR5cGVvZiBkYXNoYm9hcmRQYW5lbC4kaW5mZXJJbnNlcnQ7XG5leHBvcnQgdHlwZSBEYXNoYm9hcmRQYW5lbFVwZGF0ZSA9IFBhcnRpYWw8T21pdDxEYXNoYm9hcmRQYW5lbEluc2VydCwgJ2lkJz4+O1xuXG5leHBvcnQgdHlwZSBPcmdBbGVydERlc3RpbmF0aW9uID0gdHlwZW9mIG9yZ0FsZXJ0RGVzdGluYXRpb24uJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgT3JnQWxlcnREZXN0aW5hdGlvbkluc2VydCA9IHR5cGVvZiBvcmdBbGVydERlc3RpbmF0aW9uLiRpbmZlckluc2VydDtcbmV4cG9ydCB0eXBlIE9yZ0FsZXJ0RGVzdGluYXRpb25VcGRhdGUgPSBQYXJ0aWFsPE9taXQ8T3JnQWxlcnREZXN0aW5hdGlvbkluc2VydCwgJ2lkJyB8ICdjcmVhdGVkQXQnIHwgJ2NyZWF0ZWRCeScgfCAnb3JnSWQnPj47XG5cbi8qKlxuICogSGVscGVyIHR5cGVzIGZvciB3b3JraW5nIHdpdGggcGFydGlhbCB1cGRhdGVzXG4gKi9cbmV4cG9ydCB0eXBlIFBsdWdpblVwZGF0ZSA9IFBhcnRpYWw8T21pdDxQbHVnaW5JbnNlcnQsICdpZCcgfCAnY3JlYXRlZEF0JyB8ICdjcmVhdGVkQnknPj47XG5leHBvcnQgdHlwZSBQaXBlbGluZVVwZGF0ZSA9IFBhcnRpYWw8T21pdDxQaXBlbGluZUluc2VydCwgJ2lkJyB8ICdjcmVhdGVkQXQnIHwgJ2NyZWF0ZWRCeSc+PjtcbmV4cG9ydCB0eXBlIE1lc3NhZ2VVcGRhdGUgPSBQYXJ0aWFsPE9taXQ8TWVzc2FnZUluc2VydCwgJ2lkJyB8ICdjcmVhdGVkQXQnIHwgJ2NyZWF0ZWRCeSc+PjtcblxuLy8gQ29tcGxpYW5jZSB0eXBlc1xuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZVBvbGljeSA9IHR5cGVvZiBjb21wbGlhbmNlUG9saWN5LiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIENvbXBsaWFuY2VQb2xpY3lJbnNlcnQgPSB0eXBlb2YgY29tcGxpYW5jZVBvbGljeS4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIENvbXBsaWFuY2VSdWxlID0gdHlwZW9mIGNvbXBsaWFuY2VSdWxlLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIENvbXBsaWFuY2VSdWxlSW5zZXJ0ID0gdHlwZW9mIGNvbXBsaWFuY2VSdWxlLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZVJ1bGVIaXN0b3J5ID0gdHlwZW9mIGNvbXBsaWFuY2VSdWxlSGlzdG9yeS4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBDb21wbGlhbmNlUnVsZUhpc3RvcnlJbnNlcnQgPSB0eXBlb2YgY29tcGxpYW5jZVJ1bGVIaXN0b3J5LiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZUF1ZGl0TG9nID0gdHlwZW9mIGNvbXBsaWFuY2VBdWRpdExvZy4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBDb21wbGlhbmNlQXVkaXRMb2dJbnNlcnQgPSB0eXBlb2YgY29tcGxpYW5jZUF1ZGl0TG9nLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZUV4ZW1wdGlvbiA9IHR5cGVvZiBjb21wbGlhbmNlRXhlbXB0aW9uLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIENvbXBsaWFuY2VFeGVtcHRpb25JbnNlcnQgPSB0eXBlb2YgY29tcGxpYW5jZUV4ZW1wdGlvbi4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIENvbXBsaWFuY2VSdWxlU3Vic2NyaXB0aW9uID0gdHlwZW9mIGNvbXBsaWFuY2VSdWxlU3Vic2NyaXB0aW9uLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIENvbXBsaWFuY2VSdWxlU3Vic2NyaXB0aW9uSW5zZXJ0ID0gdHlwZW9mIGNvbXBsaWFuY2VSdWxlU3Vic2NyaXB0aW9uLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZVNjYW4gPSB0eXBlb2YgY29tcGxpYW5jZVNjYW4uJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZVNjYW5JbnNlcnQgPSB0eXBlb2YgY29tcGxpYW5jZVNjYW4uJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBDb21wbGlhbmNlU2NhblNjaGVkdWxlID0gdHlwZW9mIGNvbXBsaWFuY2VTY2FuU2NoZWR1bGUuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZVNjYW5TY2hlZHVsZUluc2VydCA9IHR5cGVvZiBjb21wbGlhbmNlU2NhblNjaGVkdWxlLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZU5vdGlmaWNhdGlvblByZWZlcmVuY2UgPSB0eXBlb2YgY29tcGxpYW5jZU5vdGlmaWNhdGlvblByZWZlcmVuY2UuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZU5vdGlmaWNhdGlvblByZWZlcmVuY2VJbnNlcnQgPSB0eXBlb2YgY29tcGxpYW5jZU5vdGlmaWNhdGlvblByZWZlcmVuY2UuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBDb21wbGlhbmNlTm90aWZpY2F0aW9uTG9nID0gdHlwZW9mIGNvbXBsaWFuY2VOb3RpZmljYXRpb25Mb2cuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZU5vdGlmaWNhdGlvbkxvZ0luc2VydCA9IHR5cGVvZiBjb21wbGlhbmNlTm90aWZpY2F0aW9uTG9nLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZVJvbGUgPSB0eXBlb2YgY29tcGxpYW5jZVJvbGUuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZVJvbGVJbnNlcnQgPSB0eXBlb2YgY29tcGxpYW5jZVJvbGUuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBDb21wbGlhbmNlUmVwb3J0ID0gdHlwZW9mIGNvbXBsaWFuY2VSZXBvcnQuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZVJlcG9ydEluc2VydCA9IHR5cGVvZiBjb21wbGlhbmNlUmVwb3J0LiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZVJlcG9ydFNjaGVkdWxlID0gdHlwZW9mIGNvbXBsaWFuY2VSZXBvcnRTY2hlZHVsZS4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBDb21wbGlhbmNlUmVwb3J0U2NoZWR1bGVJbnNlcnQgPSB0eXBlb2YgY29tcGxpYW5jZVJlcG9ydFNjaGVkdWxlLiRpbmZlckluc2VydDtcbiJdfQ==
|
|
965
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJpenpsZS1zY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YWJhc2UvZHJpenpsZS1zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7OztBQUd0Qyw2Q0FBa0M7QUFDbEMsaURBQWtJO0FBb0NsSTs7Ozs7Ozs7Ozs7R0FXRztBQUNVLFFBQUEsTUFBTSxHQUFHLElBQUEsaUJBQU8sRUFBQyxTQUFTLEVBQUU7SUFDdkMsY0FBYztJQUNkLEVBQUUsRUFBRSxJQUFBLGNBQUksRUFBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxhQUFhLEVBQUU7SUFFM0Msa0NBQWtDO0lBQ2xDLEtBQUssRUFBRSxJQUFBLGlCQUFPLEVBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO1NBQ3RDLE9BQU8sQ0FBQyxRQUFRLENBQUM7U0FDakIsT0FBTyxFQUFFO0lBRVosZUFBZTtJQUNmLFNBQVMsRUFBRSxJQUFBLGNBQUksRUFBQyxZQUFZLENBQUM7U0FDMUIsT0FBTyxDQUFDLFFBQVEsQ0FBQztTQUNqQixPQUFPLEVBQUU7SUFDWixTQUFTLEVBQUUsSUFBQSxtQkFBUyxFQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUN2RCxVQUFVLEVBQUU7U0FDWixPQUFPLEVBQUU7SUFDWixTQUFTLEVBQUUsSUFBQSxjQUFJLEVBQUMsWUFBWSxDQUFDO1NBQzFCLE9BQU8sQ0FBQyxRQUFRLENBQUM7U0FDakIsT0FBTyxFQUFFO0lBQ1osU0FBUyxFQUFFLElBQUEsbUJBQVMsRUFBQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7U0FDdkQsVUFBVSxFQUFFO1NBQ1osT0FBTyxFQUFFO0lBRVosMEJBQTBCO0lBQzFCLElBQUksRUFBRSxJQUFBLGlCQUFPLEVBQUMsTUFBTSxFQUFFLEVBQUUsTUFB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QUMsQ0FBQyxPQUFPLEVBQUU7SUFDekMsS0FBSyxFQUFFLElBQUEsaUJBQU8sRUFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDbkQsV0FBVyxFQUFFLElBQUEsaUJBQU8sRUFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUU7SUFDeEUsWUFBWSxFQUFFLElBQUEsaUJBQU8sRUFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDakUsU0FBUyxFQUFFLElBQUEsaUJBQU8sRUFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDaEQsTUFBTSxFQUFFLElBQUEsaUJBQU8sRUFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDekMsT0FBTyxFQUFFLElBQUEsaUJBQU8sRUFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDNUMsWUFBWSxFQUFFLElBQUEsaUJBQU8sRUFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDdEQsWUFBWSxFQUFFLElBQUEsbUJBQVMsRUFBQyxlQUFlLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDaEUsU0FBUyxFQUFFLElBQUEsaUJBQU8sRUFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDakQsU0FBUyxFQUFFLElBQUEsbUJBQVMsRUFBQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLEVBQUU7SUFDakYsU0FBUyxFQUFFLElBQUEsbUJBQVMsRUFBQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMs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bkIsMkJBQW1CO0lBQ25CLDBCQUEwQixFQUExQixrQ0FBMEI7SUFDMUIsY0FBYyxFQUFkLHNCQUFjO0lBQ2Qsc0JBQXNCLEVBQXRCLDhCQUFzQjtJQUN0QixnQ0FBZ0MsRUFBaEMsd0NBQWdDO0lBQ2hDLHlCQUF5QixFQUF6QixpQ0FBeUI7SUFDekIsY0FBYyxFQUFkLHNCQUFjO0lBQ2QsZ0JBQWdCLEVBQWhCLHdCQUFnQjtJQUNoQix3QkFBd0IsRUFBeEIsZ0NBQXdCO0NBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgQWNjZXNzTW9kaWZpZXIsIENvbXB1dGVUeXBlLCBQbHVnaW5UeXBlLCBNZXRhRGF0YVR5cGUgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgeyBzcWwgfSBmcm9tICdkcml6emxlLW9ybSc7XG5pbXBvcnQgeyBib29sZWFuLCBpbnRlZ2VyLCB2YXJjaGFyLCBwZ1RhYmxlLCB0ZXh0LCB0aW1lc3RhbXAsIHV1aWQsIGpzb25iLCBpbmRleCwgdW5pcXVlSW5kZXgsIGNoZWNrIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSc7XG5cbi8qKlxuICogUGlwZWxpbmUgYnVpbGRlciBjb25maWd1cmF0aW9uIHByb3BlcnRpZXMgc3RvcmVkIGluIGRhdGFiYXNlLlxuICogTWlycm9ycyB0aGUgY2Fub25pY2FsIEJ1aWxkZXJQcm9wcyBmcm9tIHBpcGVsaW5lLWNvcmUgKEpTT04tc2VyaWFsaXphYmxlIGZvcm0pLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBpcGVsaW5lQnVpbGRlckNvbmZpZyB7XG4gIHJlYWRvbmx5IHByb2plY3Q6IHN0cmluZztcbiAgcmVhZG9ubHkgb3JnYW5pemF0aW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBpcGVsaW5lTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgZ2xvYmFsPzogTWV0YURhdGFUeXBlO1xuICByZWFkb25seSBzeW50aDogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHJlYWRvbmx5IGRlZmF1bHRzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHJlYWRvbmx5IHJvbGU/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgcmVhZG9ubHkgc3RhZ2VzPzogUGlwZWxpbmVTdGFnZUNvbmZpZ1tdO1xufVxuXG4vKipcbiAqIFN0YWdlIGNvbmZpZ3VyYXRpb24gc3RvcmVkIGluIGRhdGFiYXNlIChKU09OLXNlcmlhbGl6YWJsZSkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZWxpbmVTdGFnZUNvbmZpZyB7XG4gIHJlYWRvbmx5IHN0YWdlTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBhbGlhcz86IHN0cmluZztcbiAgcmVhZG9ubHkgc3RlcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107XG59XG5cbi8qKlxuICogU2VjcmV0IHJlcXVpcmVtZW50IGZvciBhIHBsdWdpbi5cbiAqIERlY2xhcmVzIG5hbWVkIHNlY3JldHMgdGhlIHBsdWdpbiBleHBlY3RzIGF0IGJ1aWxkIHRpbWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luU2VjcmV0IHtcbiAgbmFtZTogc3RyaW5nO1xuICByZXF1aXJlZDogYm9vbGVhbjtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGFibGUgZm9yIHN0b3JpbmcgcmV1c2FibGUgcGx1Z2luIGNvbmZpZ3VyYXRpb25zLlxuICogUGx1Z2lucyBkZWZpbmUgdGhlIGJlaGF2aW9yIG9mIHN5bnRoL2J1aWxkIHN0ZXBzIGluIENESyBwaXBlbGluZXMuXG4gKlxuICogRmVhdHVyZXMgKiAtIFZlcnNpb25pbmcgc3VwcG9ydCB3aXRoIHNlbWFudGljIHZlcnNpb25pbmdcbiAqIC0gQWNjZXNzIGNvbnRyb2wgdmlhIG9yZ0lkIGFuZCBhY2Nlc3NNb2RpZmllclxuICogLSBGdWxsIGF1ZGl0IHRyYWlsIChjcmVhdGVkL3VwZGF0ZWQgYnkvYXQpXG4gKiAtIEZsZXhpYmxlIG1ldGFkYXRhIHN0b3JhZ2UgdmlhIEpTT05CXG4gKiAtIFN1cHBvcnQgZm9yIGJvdGggU2hlbGxTdGVwIGFuZCBDb2RlQnVpbGRTdGVwIHR5cGVzXG4gKlxuICogQHRhYmxlIHBsdWdpbnNcbiAqL1xuZXhwb3J0IGNvbnN0IHBsdWdpbiA9IHBnVGFibGUoJ3BsdWdpbnMnLCB7XG4gIC8vIFByaW1hcnkga2V5XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG5cbiAgLy8gT3JnYW5pemF0aW9uIGFuZCBhY2Nlc3MgY29udHJvbFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KVxuICAgIC5kZWZhdWx0KCdzeXN0ZW0nKVxuICAgIC5ub3ROdWxsKCksXG5cbiAgLy8gQXVkaXQgZmllbGRzXG4gIGNyZWF0ZWRCeTogdGV4dCgnY3JlYXRlZF9ieScpXG4gICAgLmRlZmF1bHQoJ3N5c3RlbScpXG4gICAgLm5vdE51bGwoKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KVxuICAgIC5kZWZhdWx0Tm93KClcbiAgICAubm90TnVsbCgpLFxuICB1cGRhdGVkQnk6IHRleHQoJ3VwZGF0ZWRfYnknKVxuICAgIC5kZWZhdWx0KCdzeXN0ZW0nKVxuICAgIC5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSlcbiAgICAuZGVmYXVsdE5vdygpXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBDb3JlIHBsdWdpbiBpbmZvcm1hdGlvblxuICBuYW1lOiB2YXJjaGFyKCduYW1lJywgeyBsZW5ndGg6IDI1NSB9KVxuICAgIC5ub3ROdWxsKCksXG4gIGRlc2NyaXB0aW9uOiB0ZXh0KCdkZXNjcmlwdGlvbicpLFxuICBrZXl3b3JkczoganNvbmIoJ2tleXdvcmRzJylcbiAgICAuJHR5cGU8c3RyaW5nW10+KClcbiAgICAuZGVmYXVsdChbXSlcbiAgICAubm90TnVsbCgpLFxuICB2ZXJzaW9uOiB2YXJjaGFyKCd2ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pXG4gICAgLmRlZmF1bHQoJzEuMC4wJylcbiAgICAubm90TnVsbCgpLFxuXG4gIC8vIFBsdWdpbiBjbGFzc2lmaWNhdGlvblxuICBjYXRlZ29yeTogdmFyY2hhcignY2F0ZWdvcnknLCB7IGxlbmd0aDogNTAgfSlcbiAgICAuZGVmYXVsdCgndW5rbm93bicpXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBQbHVnaW4gY29uZmlndXJhdGlvblxuICBtZXRhZGF0YToganNvbmIoJ21ldGFkYXRhJylcbiAgICAuJHR5cGU8UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj4+KClcbiAgICAuZGVmYXVsdCh7fSlcbiAgICAubm90TnVsbCgpLFxuICBwbHVnaW5UeXBlOiB2YXJjaGFyKCdwbHVnaW5fdHlwZScsIHsgbGVuZ3RoOiA1MCB9KVxuICAgIC4kdHlwZTxQbHVnaW5UeXBlPigpXG4gICAgLmRlZmF1bHQoJ0NvZGVCdWlsZFN0ZXAnIGFzIFBsdWdpblR5cGUpXG4gICAgLm5vdE51bGwoKSxcbiAgY29tcHV0ZVR5cGU6IHZhcmNoYXIoJ2NvbXB1dGVfdHlwZScsIHsgbGVuZ3RoOiA1MCB9KVxuICAgIC4kdHlwZTxDb21wdXRlVHlwZT4oKVxuICAgIC5kZWZhdWx0KCdTTUFMTCcgYXMgQ29tcHV0ZVR5cGUpXG4gICAgLm5vdE51bGwoKSxcbiAgdGltZW91dDogaW50ZWdlcigndGltZW91dCcpLFxuICBmYWlsdXJlQmVoYXZpb3I6IHZhcmNoYXIoJ2ZhaWx1cmVfYmVoYXZpb3InLCB7IGxlbmd0aDogMTAgfSlcbiAgICAuJHR5cGU8J2ZhaWwnIHwgJ3dhcm4nIHwgJ2lnbm9yZSc+KClcbiAgICAuZGVmYXVsdCgnZmFpbCcpXG4gICAgLm5vdE51bGwoKSxcbiAgc2VjcmV0czoganNvbmIoJ3NlY3JldHMnKVxuICAgIC4kdHlwZTxQbHVnaW5TZWNyZXRbXT4oKVxuICAgIC5kZWZhdWx0KFtdKVxuICAgIC5ub3ROdWxsKCksXG4gIHByaW1hcnlPdXRwdXREaXJlY3Rvcnk6IHZhcmNoYXIoJ3ByaW1hcnlfb3V0cHV0X2RpcmVjdG9yeScsIHsgbGVuZ3RoOiAyOCB9KSxcblxuICAvLyBCdWlsZCBjb25maWd1cmF0aW9uXG4gIGVudjoganNvbmIoJ2VudicpXG4gICAgLiR0eXBlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KClcbiAgICAuZGVmYXVsdCh7fSlcbiAgICAubm90TnVsbCgpLFxuICBidWlsZEFyZ3M6IGpzb25iKCdidWlsZF9hcmdzJylcbiAgICAuJHR5cGU8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oKVxuICAgIC5kZWZhdWx0KHt9KVxuICAgIC5ub3ROdWxsKCksXG4gIGluc3RhbGxDb21tYW5kczogdGV4dCgnaW5zdGFsbF9jb21tYW5kcycpXG4gICAgLmFycmF5KClcbiAgICAuZGVmYXVsdChbXSlcbiAgICAubm90TnVsbCgpLFxuICBjb21tYW5kczogdGV4dCgnY29tbWFuZHMnKVxuICAgIC5hcnJheSgpXG4gICAgLmRlZmF1bHQoW10pXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBEb2NrZXIgY29uZmlndXJhdGlvblxuICBkb2NrZXJmaWxlOiB0ZXh0KCdkb2NrZXJmaWxlJyksXG4gIGJ1aWxkVHlwZTogdmFyY2hhcignYnVpbGRfdHlwZScsIHsgbGVuZ3RoOiAyMCB9KVxuICAgIC5kZWZhdWx0KCdidWlsZF9pbWFnZScpXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBBY2Nlc3MgYW5kIHZpc2liaWxpdHlcbiAgYWNjZXNzTW9kaWZpZXI6IHZhcmNoYXIoJ2FjY2Vzc19tb2RpZmllcicsIHsgbGVuZ3RoOiAxMCB9KVxuICAgIC4kdHlwZTxBY2Nlc3NNb2RpZmllcj4oKVxuICAgIC5kZWZhdWx0KCdwcml2YXRlJyBhcyBBY2Nlc3NNb2RpZmllcilcbiAgICAubm90TnVsbCgpLFxuICBpc0RlZmF1bHQ6IGJvb2xlYW4oJ2lzX2RlZmF1bHQnKVxuICAgIC5kZWZhdWx0KGZhbHNlKVxuICAgIC5ub3ROdWxsKCksXG4gIGlzQWN0aXZlOiBib29sZWFuKCdpc19hY3RpdmUnKVxuICAgIC5kZWZhdWx0KHRydWUpXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBEZWxldGlvbiB0cmFja2luZyAoc29mdCBkZWxldGUpXG4gIGRlbGV0ZWRBdDogdGltZXN0YW1wKCdkZWxldGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGRlbGV0ZWRCeTogdGV4dCgnZGVsZXRlZF9ieScpLFxufSwgKHRhYmxlKSA9PiAoe1xuICAvLyBJbmRleGVzIGZvciBjb21tb24gcXVlcmllc1xuICBuYW1lSWR4OiBpbmRleCgncGx1Z2luX25hbWVfaWR4Jykub24odGFibGUubmFtZSksXG4gIG9yZ0lkSWR4OiBpbmRleCgncGx1Z2luX29yZ19pZF9pZHgnKS5vbih0YWJsZS5vcmdJZCksXG4gIHZlcnNpb25JZHg6IGluZGV4KCdwbHVnaW5fdmVyc2lvbl9pZHgnKS5vbih0YWJsZS52ZXJzaW9uKSxcbiAgYWN0aXZlSWR4OiBpbmRleCgncGx1Z2luX2FjdGl2ZV9pZHgnKS5vbih0YWJsZS5pc0FjdGl2ZSksXG4gIGNyZWF0ZWRBdElkeDogaW5kZXgoJ3BsdWdpbl9jcmVhdGVkX2F0X2lkeCcpLm9uKHRhYmxlLmNyZWF0ZWRBdCksXG4gIHVwZGF0ZWRBdElkeDogaW5kZXgoJ3BsdWdpbl91cGRhdGVkX2F0X2lkeCcpLm9uKHRhYmxlLnVwZGF0ZWRBdCksXG5cbiAgLy8gQ2F0ZWdvcnkgaW5kZXggZm9yIGZpbHRlcmluZ1xuICBjYXRlZ29yeUlkeDogaW5kZXgoJ3BsdWdpbl9jYXRlZ29yeV9pZHgnKS5vbih0YWJsZS5jYXRlZ29yeSksXG5cbiAgLy8gQ29tcG9zaXRlIGluZGV4IGZvciBjb21tb24gYWNjZXNzIHBhdHRlcm4gKG9yZ0lkICsgaXNBY3RpdmUpXG4gIG9yZ0FjdGl2ZUlkeDogaW5kZXgoJ3BsdWdpbl9vcmdfYWN0aXZlX2lkeCcpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5pc0FjdGl2ZSksXG5cbiAgLy8gQ29tcG9zaXRlIGluZGV4IGZvciBmaWx0ZXJlZCBxdWVyaWVzIChvcmdJZCArIGFjY2Vzc01vZGlmaWVyICsgaXNBY3RpdmUpXG4gIG9yZ0FjY2Vzc0FjdGl2ZUlkeDogaW5kZXgoJ3BsdWdpbl9vcmdfYWNjZXNzX2FjdGl2ZV9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUuYWNjZXNzTW9kaWZpZXIsIHRhYmxlLmlzQWN0aXZlKSxcblxuICAvLyBQYXJ0aWFsIGluZGV4IGZvciBhY3RpdmUtb25seSBxdWVyaWVzIChzbWFsbGVyLCBmYXN0ZXIgdGhhbiBmdWxsIGluZGV4KVxuICBhY3RpdmVPbmx5T3JnSWR4OiBpbmRleCgncGx1Z2luX2FjdGl2ZV9vbmx5X29yZ19pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUuY3JlYXRlZEF0KS53aGVyZShzcWxgaXNfYWN0aXZlID0gdHJ1ZWApLFxuXG4gIC8vIFVuaXF1ZSBjb25zdHJhaW50IG9uIG5hbWUgKyB2ZXJzaW9uICsgb3JnSWRcbiAgbmFtZVZlcnNpb25PcmdVbmlxdWU6IHVuaXF1ZUluZGV4KCdwbHVnaW5fbmFtZV92ZXJzaW9uX29yZ191bmlxdWUnKVxuICAgIC5vbih0YWJsZS5uYW1lLCB0YWJsZS52ZXJzaW9uLCB0YWJsZS5vcmdJZCksXG5cbiAgLy8gQ2hlY2sgY29uc3RyYWludHNcbiAgdmVyc2lvbkNoZWNrOiBjaGVjayggJ3BsdWdpbl92ZXJzaW9uX2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS52ZXJzaW9ufSB+ICdeWzAtOV0rXFwuWzAtOV0rXFwuWzAtOV0rKC1bYS16QS1aMC05Li1dKyk/KFxcK1thLXpBLVowLTkuLV0rKT8kJ2AsXG4gICksXG59KSk7XG5cbi8qKlxuICogVGFibGUgZm9yIHN0b3JpbmcgcGlwZWxpbmUgaW5zdGFuY2VzIGFuZCB0aGVpciBmdWxsIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogRmVhdHVyZXMgKiAtIEZ1bGwgQnVpbGRlclByb3BzIHNlcmlhbGl6YXRpb24gZm9yIHJlY29uc3RydWN0aW9uXG4gKiAtIE9yZ2FuaXphdGlvbi1sZXZlbCBpc29sYXRpb25cbiAqIC0gUGlwZWxpbmUgc3RhdHVzIHRyYWNraW5nXG4gKiAtIEV4ZWN1dGlvbiBoaXN0b3J5IHRyYWNraW5nXG4gKiAtIEZsZXhpYmxlIHRhZ2dpbmcgc3lzdGVtXG4gKlxuICogQHRhYmxlIHBpcGVsaW5lc1xuICovXG5leHBvcnQgY29uc3QgcGlwZWxpbmUgPSBwZ1RhYmxlKCdwaXBlbGluZXMnLCB7XG4gIC8vIFByaW1hcnkga2V5XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG5cbiAgLy8gT3JnYW5pemF0aW9uIGFuZCBhY2Nlc3MgY29udHJvbFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KVxuICAgIC5kZWZhdWx0KCdzeXN0ZW0nKVxuICAgIC5ub3ROdWxsKCksXG5cbiAgLy8gQXVkaXQgZmllbGRzXG4gIGNyZWF0ZWRCeTogdGV4dCgnY3JlYXRlZF9ieScpXG4gICAgLmRlZmF1bHQoJ3N5c3RlbScpXG4gICAgLm5vdE51bGwoKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KVxuICAgIC5kZWZhdWx0Tm93KClcbiAgICAubm90TnVsbCgpLFxuICB1cGRhdGVkQnk6IHRleHQoJ3VwZGF0ZWRfYnknKVxuICAgIC5kZWZhdWx0KCdzeXN0ZW0nKVxuICAgIC5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSlcbiAgICAuZGVmYXVsdE5vdygpXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBDb3JlIHBpcGVsaW5lIGluZm9ybWF0aW9uXG4gIHByb2plY3Q6IHZhcmNoYXIoJ3Byb2plY3QnLCB7IGxlbmd0aDogMjU1IH0pXG4gICAgLm5vdE51bGwoKSxcbiAgb3JnYW5pemF0aW9uOiB2YXJjaGFyKCdvcmdhbml6YXRpb24nLCB7IGxlbmd0aDogMjU1IH0pXG4gICAgLm5vdE51bGwoKSxcbiAgcGlwZWxpbmVOYW1lOiB2YXJjaGFyKCdwaXBlbGluZV9uYW1lJywgeyBsZW5ndGg6IDI1NSB9KSxcbiAgZGVzY3JpcHRpb246IHRleHQoJ2Rlc2NyaXB0aW9uJyksXG4gIGtleXdvcmRzOiBqc29uYigna2V5d29yZHMnKVxuICAgIC4kdHlwZTxzdHJpbmdbXT4oKVxuICAgIC5kZWZhdWx0KFtdKVxuICAgIC5ub3ROdWxsKCksXG5cbiAgLy8gUGlwZWxpbmUgY29uZmlndXJhdGlvblxuICBwcm9wczoganNvbmIoJ3Byb3BzJylcbiAgICAuJHR5cGU8UGlwZWxpbmVCdWlsZGVyQ29uZmlnPigpXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBBY2Nlc3MgYW5kIHZpc2liaWxpdHlcbiAgYWNjZXNzTW9kaWZpZXI6IHZhcmNoYXIoJ2FjY2Vzc19tb2RpZmllcicsIHsgbGVuZ3RoOiAxMCB9KVxuICAgIC4kdHlwZTxBY2Nlc3NNb2RpZmllcj4oKVxuICAgIC5kZWZhdWx0KCdwcml2YXRlJyBhcyBBY2Nlc3NNb2RpZmllcilcbiAgICAubm90TnVsbCgpLFxuICBpc0RlZmF1bHQ6IGJvb2xlYW4oJ2lzX2RlZmF1bHQnKVxuICAgIC5kZWZhdWx0KGZhbHNlKVxuICAgIC5ub3ROdWxsKCksXG4gIGlzQWN0aXZlOiBib29sZWFuKCdpc19hY3RpdmUnKVxuICAgIC5kZWZhdWx0KHRydWUpXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBEZWxldGlvbiB0cmFja2luZyAoc29mdCBkZWxldGUpXG4gIGRlbGV0ZWRBdDogdGltZXN0YW1wKCdkZWxldGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGRlbGV0ZWRCeTogdGV4dCgnZGVsZXRlZF9ieScpLFxufSwgKHRhYmxlKSA9PiAoe1xuICAvLyBJbmRleGVzIGZvciBjb21tb24gcXVlcmllc1xuICBwcm9qZWN0SWR4OiBpbmRleCgncGlwZWxpbmVfcHJvamVjdF9pZHgnKS5vbih0YWJsZS5wcm9qZWN0KSxcbiAgb3JnYW5pemF0aW9uSWR4OiBpbmRleCgncGlwZWxpbmVfb3JnYW5pemF0aW9uX2lkeCcpLm9uKHRhYmxlLm9yZ2FuaXphdGlvbiksXG4gIG9yZ0lkSWR4OiBpbmRleCgncGlwZWxpbmVfb3JnX2lkX2lkeCcpLm9uKHRhYmxlLm9yZ0lkKSxcbiAgYWN0aXZlSWR4OiBpbmRleCgncGlwZWxpbmVfYWN0aXZlX2lkeCcpLm9uKHRhYmxlLmlzQWN0aXZlKSxcbiAgY3JlYXRlZEF0SWR4OiBpbmRleCgncGlwZWxpbmVfY3JlYXRlZF9hdF9pZHgnKS5vbih0YWJsZS5jcmVhdGVkQXQpLFxuICB1cGRhdGVkQXRJZHg6IGluZGV4KCdwaXBlbGluZV91cGRhdGVkX2F0X2lkeCcpLm9uKHRhYmxlLnVwZGF0ZWRBdCksXG5cbiAgLy8gQ29tcG9zaXRlIGluZGV4IGZvciBjb21tb24gYWNjZXNzIHBhdHRlcm4gKG9yZ0lkICsgaXNBY3RpdmUpXG4gIG9yZ0FjdGl2ZUlkeDogaW5kZXgoJ3BpcGVsaW5lX29yZ19hY3RpdmVfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLmlzQWN0aXZlKSxcblxuICAvLyBDb21wb3NpdGUgaW5kZXggZm9yIGZpbHRlcmVkIHF1ZXJpZXMgKG9yZ0lkICsgYWNjZXNzTW9kaWZpZXIgKyBpc0FjdGl2ZSlcbiAgb3JnQWNjZXNzQWN0aXZlSWR4OiBpbmRleCgncGlwZWxpbmVfb3JnX2FjY2Vzc19hY3RpdmVfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLmFjY2Vzc01vZGlmaWVyLCB0YWJsZS5pc0FjdGl2ZSksXG5cbiAgLy8gUGFydGlhbCBpbmRleCBmb3IgYWN0aXZlLW9ubHkgcXVlcmllcyAoc21hbGxlciwgZmFzdGVyIHRoYW4gZnVsbCBpbmRleClcbiAgYWN0aXZlT25seU9yZ0lkeDogaW5kZXgoJ3BpcGVsaW5lX2FjdGl2ZV9vbmx5X29yZ19pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUuY3JlYXRlZEF0KS53aGVyZShzcWxgaXNfYWN0aXZlID0gdHJ1ZWApLFxuXG4gIC8vIFVuaXF1ZSBjb25zdHJhaW50IG9uIHByb2plY3QgKyBvcmdhbml6YXRpb24gKyBvcmdJZFxuICBwcm9qZWN0T3JnVW5pcXVlOiB1bmlxdWVJbmRleCgncGlwZWxpbmVfcHJvamVjdF9vcmdfdW5pcXVlJylcbiAgICAub24odGFibGUucHJvamVjdCwgdGFibGUub3JnYW5pemF0aW9uLCB0YWJsZS5vcmdJZCksXG59KSk7XG5cbi8qKlxuICogTWVzc2FnZSB0eXBlIGlkZW50aWZpZXJzXG4gKi9cbmV4cG9ydCB0eXBlIE1lc3NhZ2VUeXBlID0gJ2Fubm91bmNlbWVudCcgfCAnY29udmVyc2F0aW9uJztcblxuLyoqXG4gKiBNZXNzYWdlIHByaW9yaXR5IGxldmVsc1xuICovXG5leHBvcnQgdHlwZSBNZXNzYWdlUHJpb3JpdHkgPSAnbm9ybWFsJyB8ICdoaWdoJyB8ICd1cmdlbnQnO1xuXG4vKipcbiAqIFRhYmxlIGZvciBzdG9yaW5nIGludGVybmFsIG1lc3NhZ2VzIGJldHdlZW4gb3JnYW5pemF0aW9ucyBhbmQgdGhlIHN5c3RlbSBvcmcuXG4gKlxuICogRmVhdHVyZXMgKiAtIEFubm91bmNlbWVudHM6IFN5c3RlbSBvcmcgYnJvYWRjYXN0cyB0byBhbGwgb3JncyAocmVjaXBpZW50T3JnSWQgPSAnKicpXG4gKiAtIENvbnZlcnNhdGlvbnM6IFR3by13YXkgdGhyZWFkZWQgbWVzc2FnaW5nIGJldHdlZW4gYW4gb3JnIGFuZCBzeXN0ZW0gb3JnXG4gKiAtIFRocmVhZCBzdXBwb3J0IHZpYSB0aHJlYWRJZCAobnVsbCBmb3Igcm9vdCBtZXNzYWdlcywgcmVmZXJlbmNlcyByb290IGZvciByZXBsaWVzKVxuICogLSBSZWFkIHRyYWNraW5nIHBlciBtZXNzYWdlXG4gKiAtIFByaW9yaXR5IGxldmVscyAobm9ybWFsLCBoaWdoLCB1cmdlbnQpXG4gKiAtIFNvZnQgZGVsZXRlIHN1cHBvcnRcbiAqXG4gKiBAdGFibGUgbWVzc2FnZXNcbiAqL1xuZXhwb3J0IGNvbnN0IG1lc3NhZ2UgPSBwZ1RhYmxlKCdtZXNzYWdlcycsIHtcbiAgLy8gUHJpbWFyeSBrZXlcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcblxuICAvLyBPcmdhbml6YXRpb24gYW5kIGFjY2VzcyBjb250cm9sXG4gIG9yZ0lkOiB2YXJjaGFyKCdvcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pXG4gICAgLmRlZmF1bHQoJ3N5c3RlbScpXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBBdWRpdCBmaWVsZHNcbiAgY3JlYXRlZEJ5OiB0ZXh0KCdjcmVhdGVkX2J5JylcbiAgICAuZGVmYXVsdCgnc3lzdGVtJylcbiAgICAubm90TnVsbCgpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pXG4gICAgLmRlZmF1bHROb3coKVxuICAgIC5ub3ROdWxsKCksXG4gIHVwZGF0ZWRCeTogdGV4dCgndXBkYXRlZF9ieScpXG4gICAgLmRlZmF1bHQoJ3N5c3RlbScpXG4gICAgLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KVxuICAgIC5kZWZhdWx0Tm93KClcbiAgICAubm90TnVsbCgpLFxuXG4gIC8vIFRocmVhZGluZ1xuICB0aHJlYWRJZDogdXVpZCgndGhyZWFkX2lkJyksXG5cbiAgLy8gTWVzc2FnZSByb3V0aW5nXG4gIHJlY2lwaWVudE9yZ0lkOiB2YXJjaGFyKCdyZWNpcGllbnRfb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KVxuICAgIC5ub3ROdWxsKCksXG5cbiAgLy8gTWVzc2FnZSBjb250ZW50XG4gIG1lc3NhZ2VUeXBlOiB2YXJjaGFyKCdtZXNzYWdlX3R5cGUnLCB7IGxlbmd0aDogMjAgfSlcbiAgICAuJHR5cGU8TWVzc2FnZVR5cGU+KClcbiAgICAuZGVmYXVsdCgnY29udmVyc2F0aW9uJyBhcyBNZXNzYWdlVHlwZSlcbiAgICAubm90TnVsbCgpLFxuICAvLyBMb2dpY2FsIGNoYW5uZWwvaW5ib3ggYnVja2V0IOKAlCAnc3VwcG9ydCcsICdoZWxwJywgZXRjLiBOdWxsYWJsZSBzb1xuICAvLyBvcmctdG8tb3JnIGNvbnZlcnNhdGlvbnMgKHdoaWNoIGFyZW4ndCBjaGFubmVsLXNjb3BlZCkgY2FuIG9taXQgaXQuXG4gIGNoYW5uZWw6IHZhcmNoYXIoJ2NoYW5uZWwnLCB7IGxlbmd0aDogNTAgfSksXG4gIHN1YmplY3Q6IHZhcmNoYXIoJ3N1YmplY3QnLCB7IGxlbmd0aDogNTAwIH0pXG4gICAgLm5vdE51bGwoKSxcbiAgY29udGVudDogdGV4dCgnY29udGVudCcpXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBTdGF0dXNcbiAgLy8gYHJlYWRCeWAgaXMgdGhlIHBlci1wYXJ0aWNpcGFudCByZWFkLXJlY2VpcHQgbWFwOiBvcmdJZCDihpIgSVNPIHRpbWVzdGFtcC5cbiAgLy8gUmVjaXBpZW50IG1hcmtpbmcgdGhlIHRocmVhZCBkb2VzIE5PVCBmbGlwIHNlbmRlcidzIHZpZXcuIEVtcHR5IGB7fWBcbiAgLy8gbWVhbnMgbm9ib2R5IGhhcyByZWFkIGl0IHlldC5cbiAgcmVhZEJ5OiBqc29uYigncmVhZF9ieScpXG4gICAgLiR0eXBlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KClcbiAgICAuZGVmYXVsdCh7fSlcbiAgICAubm90TnVsbCgpLFxuICBwcmlvcml0eTogdmFyY2hhcigncHJpb3JpdHknLCB7IGxlbmd0aDogMjAgfSlcbiAgICAuJHR5cGU8TWVzc2FnZVByaW9yaXR5PigpXG4gICAgLmRlZmF1bHQoJ25vcm1hbCcgYXMgTWVzc2FnZVByaW9yaXR5KVxuICAgIC5ub3ROdWxsKCksXG5cbiAgLy8gQWNjZXNzIGFuZCB2aXNpYmlsaXR5XG4gIGFjY2Vzc01vZGlmaWVyOiB2YXJjaGFyKCdhY2Nlc3NfbW9kaWZpZXInLCB7IGxlbmd0aDogMTAgfSlcbiAgICAuJHR5cGU8QWNjZXNzTW9kaWZpZXI+KClcbiAgICAuZGVmYXVsdCgncHJpdmF0ZScgYXMgQWNjZXNzTW9kaWZpZXIpXG4gICAgLm5vdE51bGwoKSxcbiAgaXNEZWZhdWx0OiBib29sZWFuKCdpc19kZWZhdWx0JylcbiAgICAuZGVmYXVsdChmYWxzZSlcbiAgICAubm90TnVsbCgpLFxuICBpc0FjdGl2ZTogYm9vbGVhbignaXNfYWN0aXZlJylcbiAgICAuZGVmYXVsdCh0cnVlKVxuICAgIC5ub3ROdWxsKCksXG5cbiAgLy8gRGVsZXRpb24gdHJhY2tpbmcgKHNvZnQgZGVsZXRlKVxuICBkZWxldGVkQXQ6IHRpbWVzdGFtcCgnZGVsZXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBkZWxldGVkQnk6IHRleHQoJ2RlbGV0ZWRfYnknKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgLy8gSW5kZXhlcyBmb3IgY29tbW9uIHF1ZXJpZXNcbiAgb3JnSWRJZHg6IGluZGV4KCdtZXNzYWdlX29yZ19pZF9pZHgnKS5vbih0YWJsZS5vcmdJZCksXG4gIHJlY2lwaWVudE9yZ0lkSWR4OiBpbmRleCgnbWVzc2FnZV9yZWNpcGllbnRfb3JnX2lkX2lkeCcpLm9uKHRhYmxlLnJlY2lwaWVudE9yZ0lkKSxcbiAgdGhyZWFkSWRJZHg6IGluZGV4KCdtZXNzYWdlX3RocmVhZF9pZF9pZHgnKS5vbih0YWJsZS50aHJlYWRJZCksXG4gIG1lc3NhZ2VUeXBlSWR4OiBpbmRleCgnbWVzc2FnZV9tZXNzYWdlX3R5cGVfaWR4Jykub24odGFibGUubWVzc2FnZVR5cGUpLFxuICBjaGFubmVsSWR4OiBpbmRleCgnbWVzc2FnZV9jaGFubmVsX2lkeCcpLm9uKHRhYmxlLmNoYW5uZWwpLFxuICBjcmVhdGVkQXRJZHg6IGluZGV4KCdtZXNzYWdlX2NyZWF0ZWRfYXRfaWR4Jykub24odGFibGUuY3JlYXRlZEF0KSxcbiAgYWN0aXZlSWR4OiBpbmRleCgnbWVzc2FnZV9hY3RpdmVfaWR4Jykub24odGFibGUuaXNBY3RpdmUpLFxuXG4gIC8vIENvbXBvc2l0ZSBpbmRleCBmb3IgaW5ib3ggcXVlcmllcyAocmVjaXBpZW50ICsgYWN0aXZlICsgY3JlYXRlZClcbiAgcmVjaXBpZW50QWN0aXZlQ3JlYXRlZElkeDogaW5kZXgoJ21lc3NhZ2VfcmVjaXBpZW50X2FjdGl2ZV9jcmVhdGVkX2lkeCcpXG4gICAgLm9uKHRhYmxlLnJlY2lwaWVudE9yZ0lkLCB0YWJsZS5pc0FjdGl2ZSwgdGFibGUuY3JlYXRlZEF0KSxcblxuICAvLyBDb21wb3NpdGUgaW5kZXggZm9yIG9yZyBpbmJveCAob3JnSWQgKyBhY3RpdmUpXG4gIG9yZ0FjdGl2ZUlkeDogaW5kZXgoJ21lc3NhZ2Vfb3JnX2FjdGl2ZV9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUuaXNBY3RpdmUpLFxufSkpO1xuXG4vKipcbiAqIFBpcGVsaW5lIGRlcGxveW1lbnQgcmVnaXN0cnkuXG4gKiBNYXBzIGRlcGxveWVkIENvZGVQaXBlbGluZSBBUk5zIGJhY2sgdG8gcGlwZWxpbmUgcmVjb3JkcyBhbmQgb3JnIElEcy5cbiAqIFBvcHVsYXRlZCBieSB0aGUgZGVwbG95IGNvbW1hbmQgYWZ0ZXIgc3VjY2Vzc2Z1bCBDREsgZGVwbG95LlxuICogVXNlZCBieSB0aGUgcGlwZWxpbmUtZXZlbnRzIExhbWJkYSB0byByZXNvbHZlIEV2ZW50QnJpZGdlIGV2ZW50cyB0byBvcmctc2NvcGVkIHJlY29yZHMuXG4gKlxuICogQHRhYmxlIHBpcGVsaW5lX3JlZ2lzdHJ5XG4gKi9cbmV4cG9ydCBjb25zdCBwaXBlbGluZVJlZ2lzdHJ5ID0gcGdUYWJsZSgncGlwZWxpbmVfcmVnaXN0cnknLCB7XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG4gIHBpcGVsaW5lSWQ6IHV1aWQoJ3BpcGVsaW5lX2lkJykubm90TnVsbCgpLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHBpcGVsaW5lQXJuOiB2YXJjaGFyKCdwaXBlbGluZV9hcm4nLCB7IGxlbmd0aDogNTEyIH0pLm5vdE51bGwoKS51bmlxdWUoKSxcbiAgcGlwZWxpbmVOYW1lOiB2YXJjaGFyKCdwaXBlbGluZV9uYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIGFjY291bnRJZDogdmFyY2hhcignYWNjb3VudF9pZCcsIHsgbGVuZ3RoOiAxMiB9KSxcbiAgcmVnaW9uOiB2YXJjaGFyKCdyZWdpb24nLCB7IGxlbmd0aDogMzAgfSksXG4gIHByb2plY3Q6IHZhcmNoYXIoJ3Byb2plY3QnLCB7IGxlbmd0aDogMjU1IH0pLFxuICBvcmdhbml6YXRpb246IHZhcmNoYXIoJ29yZ2FuaXphdGlvbicsIHsgbGVuZ3RoOiAyNTUgfSksXG4gIGxhc3REZXBsb3llZDogdGltZXN0YW1wKCdsYXN0X2RlcGxveWVkJywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIHN0YWNrTmFtZTogdmFyY2hhcignc3RhY2tfbmFtZScsIHsgbGVuZ3RoOiAyNTUgfSksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICBwaXBlbGluZUlkSWR4OiBpbmRleCgncmVnaXN0cnlfcGlwZWxpbmVfaWRfaWR4Jykub24odGFibGUucGlwZWxpbmVJZCksXG4gIG9yZ0lkSWR4OiBpbmRleCgncmVnaXN0cnlfb3JnX2lkX2lkeCcpLm9uKHRhYmxlLm9yZ0lkKSxcbiAgb3JnUmVnaW9uSWR4OiBpbmRleCgncmVnaXN0cnlfb3JnX3JlZ2lvbl9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUucmVnaW9uKSxcbn0pKTtcblxuLyoqXG4gKiBFdmVudCBzb3VyY2UgaWRlbnRpZmllcnMgZm9yIHBpcGVsaW5lX2V2ZW50cy5cbiAqL1xuZXhwb3J0IHR5cGUgRXZlbnRTb3VyY2UgPSAnY29kZXBpcGVsaW5lJyB8ICdjb2RlYnVpbGQnIHwgJ3BsdWdpbi1idWlsZCc7XG5cbi8qKlxuICogRXZlbnQgdHlwZSBncmFudWxhcml0eSBsZXZlbHMgZm9yIHBpcGVsaW5lX2V2ZW50cy5cbiAqL1xuZXhwb3J0IHR5cGUgRXZlbnRUeXBlID0gJ1BJUEVMSU5FJyB8ICdTVEFHRScgfCAnQUNUSU9OJyB8ICdCVUlMRCc7XG5cbi8qKlxuICogUGlwZWxpbmUgZXhlY3V0aW9uIGFuZCBidWlsZCBldmVudHMuXG4gKiBDYXB0dXJlcyBDb2RlUGlwZWxpbmUvQ29kZUJ1aWxkIHN0YXRlIGNoYW5nZXMgZnJvbSBFdmVudEJyaWRnZVxuICogYW5kIHBsdWdpbiBEb2NrZXIgYnVpbGQgb3V0Y29tZXMgZnJvbSBCdWxsTVEuXG4gKiBBbGwgZXZlbnRzIGFyZSBvcmctc2NvcGVkIGZvciBtdWx0aS10ZW5hbnQgcmVwb3J0aW5nLlxuICpcbiAqIEB0YWJsZSBwaXBlbGluZV9ldmVudHNcbiAqL1xuZXhwb3J0IGNvbnN0IHBpcGVsaW5lRXZlbnQgPSBwZ1RhYmxlKCdwaXBlbGluZV9ldmVudHMnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG4gIHBpcGVsaW5lSWQ6IHV1aWQoJ3BpcGVsaW5lX2lkJyksXG4gIG9yZ0lkOiB2YXJjaGFyKCdvcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgZXZlbnRTb3VyY2U6IHZhcmNoYXIoJ2V2ZW50X3NvdXJjZScsIHsgbGVuZ3RoOiA1MCB9KS4kdHlwZTxFdmVudFNvdXJjZT4oKS5ub3ROdWxsKCksXG4gIGV2ZW50VHlwZTogdmFyY2hhcignZXZlbnRfdHlwZScsIHsgbGVuZ3RoOiA1MCB9KS4kdHlwZTxFdmVudFR5cGU+KCkubm90TnVsbCgpLFxuICBzdGF0dXM6IHZhcmNoYXIoJ3N0YXR1cycsIHsgbGVuZ3RoOiAyMCB9KS5ub3ROdWxsKCksXG4gIHBpcGVsaW5lQXJuOiB2YXJjaGFyKCdwaXBlbGluZV9hcm4nLCB7IGxlbmd0aDogNTEyIH0pLFxuICBleGVjdXRpb25JZDogdmFyY2hhcignZXhlY3V0aW9uX2lkJywgeyBsZW5ndGg6IDI1NSB9KSxcbiAgc3RhZ2VOYW1lOiB2YXJjaGFyKCdzdGFnZV9uYW1lJywgeyBsZW5ndGg6IDI1NSB9KSxcbiAgYWN0aW9uTmFtZTogdmFyY2hhcignYWN0aW9uX25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLFxuICBlcnJvck1lc3NhZ2U6IHRleHQoJ2Vycm9yX21lc3NhZ2UnKSxcbiAgc3RhcnRlZEF0OiB0aW1lc3RhbXAoJ3N0YXJ0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgY29tcGxldGVkQXQ6IHRpbWVzdGFtcCgnY29tcGxldGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGR1cmF0aW9uTXM6IGludGVnZXIoJ2R1cmF0aW9uX21zJyksXG4gIGRldGFpbDoganNvbmIoJ2RldGFpbCcpLiR0eXBlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PigpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIHBpcGVsaW5lSWRJZHg6IGluZGV4KCdldmVudF9waXBlbGluZV9pZF9pZHgnKS5vbih0YWJsZS5waXBlbGluZUlkKSxcbiAgb3JnSWRJZHg6IGluZGV4KCdldmVudF9vcmdfaWRfaWR4Jykub24odGFibGUub3JnSWQpLFxuICBldmVudFR5cGVJZHg6IGluZGV4KCdldmVudF90eXBlX2lkeCcpLm9uKHRhYmxlLmV2ZW50VHlwZSksXG4gIHN0YXR1c0lkeDogaW5kZXgoJ2V2ZW50X3N0YXR1c19pZHgnKS5vbih0YWJsZS5zdGF0dXMpLFxuICBwaXBlbGluZUFybklkeDogaW5kZXgoJ2V2ZW50X3BpcGVsaW5lX2Fybl9pZHgnKS5vbih0YWJsZS5waXBlbGluZUFybiksXG4gIGV4ZWN1dGlvbklkSWR4OiBpbmRleCgnZXZlbnRfZXhlY3V0aW9uX2lkX2lkeCcpLm9uKHRhYmxlLmV4ZWN1dGlvbklkKSxcbiAgY3JlYXRlZEF0SWR4OiBpbmRleCgnZXZlbnRfY3JlYXRlZF9hdF9pZHgnKS5vbih0YWJsZS5jcmVhdGVkQXQpLFxuICBvcmdUeXBlQ3JlYXRlZElkeDogaW5kZXgoJ2V2ZW50X29yZ190eXBlX2NyZWF0ZWRfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLmV2ZW50VHlwZSwgdGFibGUuY3JlYXRlZEF0KSxcbiAgb3JnU291cmNlU3RhdHVzSWR4OiBpbmRleCgnZXZlbnRfb3JnX3NvdXJjZV9zdGF0dXNfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLmV2ZW50U291cmNlLCB0YWJsZS5zdGF0dXMpLFxufSkpO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDb21wbGlhbmNlIFNlcnZpY2UgVGFibGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ29tcGxpYW5jZSBydWxlIHNldmVyaXR5IGxldmVscy5cbiAqL1xuZXhwb3J0IHR5cGUgUnVsZVNldmVyaXR5ID0gJ3dhcm5pbmcnIHwgJ2Vycm9yJyB8ICdjcml0aWNhbCc7XG5cbi8qKlxuICogQ29tcGxpYW5jZSBydWxlIHRhcmdldCBlbnRpdHkgdHlwZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFJ1bGVUYXJnZXQgPSAncGx1Z2luJyB8ICdwaXBlbGluZSc7XG5cbi8qKlxuICogQ29tcGxpYW5jZSBydWxlIG9wZXJhdG9ycyBmb3IgZmllbGQgZXZhbHVhdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgUnVsZU9wZXJhdG9yID1cbiAgfCAnZXEnIHwgJ25lcSdcbiAgfCAnY29udGFpbnMnIHwgJ25vdENvbnRhaW5zJ1xuICB8ICdyZWdleCdcbiAgfCAnZ3QnIHwgJ2d0ZScgfCAnbHQnIHwgJ2x0ZSdcbiAgfCAnaW4nIHwgJ25vdEluJ1xuICB8ICdleGlzdHMnIHwgJ25vdEV4aXN0cydcbiAgfCAnY291bnRHdCcgfCAnY291bnRMdCdcbiAgfCAnbGVuZ3RoR3QnIHwgJ2xlbmd0aEx0JztcblxuLyoqXG4gKiBDcm9zcy1maWVsZCBjb25kaXRpb24gbW9kZSBmb3IgbXVsdGktY29uZGl0aW9uIHJ1bGVzLlxuICovXG5leHBvcnQgdHlwZSBSdWxlQ29uZGl0aW9uTW9kZSA9ICdhbGwnIHwgJ2FueSc7XG5cbi8qKlxuICogUnVsZSBzY29wZSAgb3JnLWxldmVsIG9yIHB1Ymxpc2hlZCAoc3lzdGVtIG9yZyBvbmx5LCBvcHQtaW4gdmlhIHN1YnNjcmlwdGlvbikuXG4gKi9cbmV4cG9ydCB0eXBlIFJ1bGVTY29wZSA9ICdvcmcnIHwgJ3B1Ymxpc2hlZCc7XG5cbi8qKlxuICogQSBzaW5nbGUgY29uZGl0aW9uIGluIGEgY3Jvc3MtZmllbGQgcnVsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdWxlQ29uZGl0aW9uIHtcbiAgZmllbGQ/OiBzdHJpbmc7XG4gIG9wZXJhdG9yPzogUnVsZU9wZXJhdG9yO1xuICB2YWx1ZT86IHVua25vd247XG4gIGRlcGVuZHNPblJ1bGU/OiBzdHJpbmc7IC8vIHJ1bGUgSUQgIG9ubHkgZXZhbHVhdGUgaWYgcmVmZXJlbmNlZCBydWxlIHBhc3NlZFxufVxuXG4vKipcbiAqIENvbXBsaWFuY2UgcG9saWNpZXMgZ3JvdXAgcnVsZXMgaW50byBuYW1lZCBzZXRzIHRoYXQgY2FuIGJlIGVuYWJsZWQvZGlzYWJsZWQgdG9nZXRoZXIuXG4gKlxuICogQHRhYmxlIGNvbXBsaWFuY2VfcG9saWNpZXNcbiAqL1xuZXhwb3J0IGNvbnN0IGNvbXBsaWFuY2VQb2xpY3kgPSBwZ1RhYmxlKCdjb21wbGlhbmNlX3BvbGljaWVzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5kZWZhdWx0KCdzeXN0ZW0nKS5ub3ROdWxsKCksXG4gIGNyZWF0ZWRCeTogdGV4dCgnY3JlYXRlZF9ieScpLmRlZmF1bHQoJ3N5c3RlbScpLm5vdE51bGwoKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICB1cGRhdGVkQnk6IHRleHQoJ3VwZGF0ZWRfYnknKS5kZWZhdWx0KCdzeXN0ZW0nKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcblxuICBuYW1lOiB2YXJjaGFyKCduYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIGRlc2NyaXB0aW9uOiB0ZXh0KCdkZXNjcmlwdGlvbicpLFxuICB2ZXJzaW9uOiB2YXJjaGFyKCd2ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLmRlZmF1bHQoJzEuMC4wJykubm90TnVsbCgpLFxuICBpc1RlbXBsYXRlOiBib29sZWFuKCdpc190ZW1wbGF0ZScpLmRlZmF1bHQoZmFsc2UpLm5vdE51bGwoKSxcblxuICBhY2Nlc3NNb2RpZmllcjogdmFyY2hhcignYWNjZXNzX21vZGlmaWVyJywgeyBsZW5ndGg6IDEwIH0pXG4gICAgLiR0eXBlPEFjY2Vzc01vZGlmaWVyPigpLmRlZmF1bHQoJ3ByaXZhdGUnIGFzIEFjY2Vzc01vZGlmaWVyKS5ub3ROdWxsKCksXG4gIGlzRGVmYXVsdDogYm9vbGVhbignaXNfZGVmYXVsdCcpLmRlZmF1bHQoZmFsc2UpLm5vdE51bGwoKSxcbiAgaXNBY3RpdmU6IGJvb2xlYW4oJ2lzX2FjdGl2ZScpLmRlZmF1bHQodHJ1ZSkubm90TnVsbCgpLFxuICBkZWxldGVkQXQ6IHRpbWVzdGFtcCgnZGVsZXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBkZWxldGVkQnk6IHRleHQoJ2RlbGV0ZWRfYnknKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgb3JnQWN0aXZlSWR4OiBpbmRleCgnY29tcGxpYW5jZV9wb2xpY3lfb3JnX2FjdGl2ZV9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUuaXNBY3RpdmUpLFxuICB0ZW1wbGF0ZUlkeDogaW5kZXgoJ2NvbXBsaWFuY2VfcG9saWN5X3RlbXBsYXRlX2lkeCcpLm9uKHRhYmxlLmlzVGVtcGxhdGUpLFxuICBuYW1lT3JnVmVyc2lvblVuaXF1ZTogdW5pcXVlSW5kZXgoJ2NvbXBsaWFuY2VfcG9saWN5X25hbWVfb3JnX3ZlcnNpb25fdW5pcXVlJylcbiAgICAub24odGFibGUub3JnSWQsIHRhYmxlLm5hbWUsIHRhYmxlLnZlcnNpb24pLFxufSkpO1xuXG4vKipcbiAqIENvbXBsaWFuY2UgcnVsZXMgZGVmaW5lIGluZGl2aWR1YWwgY2hlY2tzIGFnYWluc3QgcGx1Z2luL3BpcGVsaW5lIGF0dHJpYnV0ZXMuXG4gKlxuICogQHRhYmxlIGNvbXBsaWFuY2VfcnVsZXNcbiAqL1xuZXhwb3J0IGNvbnN0IGNvbXBsaWFuY2VSdWxlID0gcGdUYWJsZSgnY29tcGxpYW5jZV9ydWxlcycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkuZGVmYXVsdCgnc3lzdGVtJykubm90TnVsbCgpLFxuICBjcmVhdGVkQnk6IHRleHQoJ2NyZWF0ZWRfYnknKS5kZWZhdWx0KCdzeXN0ZW0nKS5ub3ROdWxsKCksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEJ5OiB0ZXh0KCd1cGRhdGVkX2J5JykuZGVmYXVsdCgnc3lzdGVtJykubm90TnVsbCgpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG5cbiAgLy8gUnVsZSBpZGVudGl0eVxuICBuYW1lOiB2YXJjaGFyKCduYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIGRlc2NyaXB0aW9uOiB0ZXh0KCdkZXNjcmlwdGlvbicpLFxuICBwb2xpY3lJZDogdXVpZCgncG9saWN5X2lkJykucmVmZXJlbmNlcygoKSA9PiBjb21wbGlhbmNlUG9saWN5LmlkLCB7IG9uRGVsZXRlOiAnc2V0IG51bGwnIH0pLFxuICBwcmlvcml0eTogaW50ZWdlcigncHJpb3JpdHknKS5kZWZhdWx0KDApLm5vdE51bGwoKSxcbiAgdGFyZ2V0OiB2YXJjaGFyKCd0YXJnZXQnLCB7IGxlbmd0aDogMjAgfSkuJHR5cGU8UnVsZVRhcmdldD4oKS5ub3ROdWxsKCksXG4gIHNldmVyaXR5OiB2YXJjaGFyKCdzZXZlcml0eScsIHsgbGVuZ3RoOiAxMCB9KS4kdHlwZTxSdWxlU2V2ZXJpdHk+KCkuZGVmYXVsdCgnZXJyb3InKS5ub3ROdWxsKCksXG5cbiAgLy8gQ2F0ZWdvcml6YXRpb25cbiAgdGFnczoganNvbmIoJ3RhZ3MnKS4kdHlwZTxzdHJpbmdbXT4oKS5kZWZhdWx0KFtdKS5ub3ROdWxsKCksXG5cbiAgLy8gU2NoZWR1bGluZ1xuICBlZmZlY3RpdmVGcm9tOiB0aW1lc3RhbXAoJ2VmZmVjdGl2ZV9mcm9tJywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGVmZmVjdGl2ZVVudGlsOiB0aW1lc3RhbXAoJ2VmZmVjdGl2ZV91bnRpbCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuXG4gIC8vIFNjb3BlXG4gIHNjb3BlOiB2YXJjaGFyKCdzY29wZScsIHsgbGVuZ3RoOiAxMCB9KS4kdHlwZTxSdWxlU2NvcGU+KCkuZGVmYXVsdCgnb3JnJykubm90TnVsbCgpLFxuXG4gIC8vIEZvcmtpbmcgIHRyYWNrcyB3aGljaCBwdWJsaXNoZWQgcnVsZSB0aGlzIG9yZyBydWxlIHdhcyBjb3BpZWQgZnJvbVxuICBmb3JrZWRGcm9tUnVsZUlkOiB1dWlkKCdmb3JrZWRfZnJvbV9ydWxlX2lkJyksXG5cbiAgLy8gTm90aWZpY2F0aW9uIG92ZXJyaWRlXG4gIHN1cHByZXNzTm90aWZpY2F0aW9uOiBib29sZWFuKCdzdXBwcmVzc19ub3RpZmljYXRpb24nKS5kZWZhdWx0KGZhbHNlKS5ub3ROdWxsKCksXG5cbiAgLy8gU2luZ2xlLWZpZWxkIGNvbmRpdGlvblxuICBmaWVsZDogdmFyY2hhcignZmllbGQnLCB7IGxlbmd0aDogMTAwIH0pLFxuICBvcGVyYXRvcjogdmFyY2hhcignb3BlcmF0b3InLCB7IGxlbmd0aDogMjAgfSkuJHR5cGU8UnVsZU9wZXJhdG9yPigpLFxuICB2YWx1ZToganNvbmIoJ3ZhbHVlJyksXG5cbiAgLy8gQ3Jvc3MtZmllbGQgY29uZGl0aW9ucyAob3ZlcnJpZGVzIHNpbmdsZS1maWVsZCB3aGVuIHByZXNlbnQpXG4gIGNvbmRpdGlvbnM6IGpzb25iKCdjb25kaXRpb25zJykuJHR5cGU8UnVsZUNvbmRpdGlvbltdPigpLFxuICBjb25kaXRpb25Nb2RlOiB2YXJjaGFyKCdjb25kaXRpb25fbW9kZScsIHsgbGVuZ3RoOiA1IH0pLiR0eXBlPFJ1bGVDb25kaXRpb25Nb2RlPigpLmRlZmF1bHQoJ2FsbCcpLFxuXG4gIC8vIEFjY2VzcyBhbmQgdmlzaWJpbGl0eVxuICBhY2Nlc3NNb2RpZmllcjogdmFyY2hhcignYWNjZXNzX21vZGlmaWVyJywgeyBsZW5ndGg6IDEwIH0pXG4gICAgLiR0eXBlPEFjY2Vzc01vZGlmaWVyPigpLmRlZmF1bHQoJ3ByaXZhdGUnIGFzIEFjY2Vzc01vZGlmaWVyKS5ub3ROdWxsKCksXG4gIGlzRGVmYXVsdDogYm9vbGVhbignaXNfZGVmYXVsdCcpLmRlZmF1bHQoZmFsc2UpLm5vdE51bGwoKSxcbiAgaXNBY3RpdmU6IGJvb2xlYW4oJ2lzX2FjdGl2ZScpLmRlZmF1bHQodHJ1ZSkubm90TnVsbCgpLFxuICBkZWxldGVkQXQ6IHRpbWVzdGFtcCgnZGVsZXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBkZWxldGVkQnk6IHRleHQoJ2RlbGV0ZWRfYnknKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgb3JnVGFyZ2V0QWN0aXZlSWR4OiBpbmRleCgnY29tcGxpYW5jZV9ydWxlX29yZ190YXJnZXRfYWN0aXZlX2lkeCcpXG4gICAgLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS50YXJnZXQsIHRhYmxlLmlzQWN0aXZlKSxcbiAgb3JnUG9saWN5SWR4OiBpbmRleCgnY29tcGxpYW5jZV9ydWxlX29yZ19wb2xpY3lfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLnBvbGljeUlkKSxcbiAgcHJpb3JpdHlJZHg6IGluZGV4KCdjb21wbGlhbmNlX3J1bGVfcHJpb3JpdHlfaWR4Jykub24odGFibGUucHJpb3JpdHkpLFxuICBzY29wZUlkeDogaW5kZXgoJ2NvbXBsaWFuY2VfcnVsZV9zY29wZV9pZHgnKS5vbih0YWJsZS5zY29wZSksXG4gIGVmZmVjdGl2ZUZyb21JZHg6IGluZGV4KCdjb21wbGlhbmNlX3J1bGVfZWZmZWN0aXZlX2Zyb21faWR4Jykub24odGFibGUuZWZmZWN0aXZlRnJvbSksXG4gIG5hbWVPcmdVbmlxdWU6IHVuaXF1ZUluZGV4KCdjb21wbGlhbmNlX3J1bGVfbmFtZV9vcmdfdW5pcXVlJykub24odGFibGUub3JnSWQsIHRhYmxlLm5hbWUpLFxufSkpO1xuXG4vKipcbiAqIFRyYWNrcyBldmVyeSBjaGFuZ2UgdG8gY29tcGxpYW5jZSBydWxlcyBmb3IgdmVyc2lvbmluZyBhbmQgcm9sbGJhY2suXG4gKlxuICogQHRhYmxlIGNvbXBsaWFuY2VfcnVsZV9oaXN0b3J5XG4gKi9cbmV4cG9ydCBjb25zdCBjb21wbGlhbmNlUnVsZUhpc3RvcnkgPSBwZ1RhYmxlKCdjb21wbGlhbmNlX3J1bGVfaGlzdG9yeScsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgcnVsZUlkOiB1dWlkKCdydWxlX2lkJykubm90TnVsbCgpLnJlZmVyZW5jZXMoKCkgPT4gY29tcGxpYW5jZVJ1bGUuaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBjaGFuZ2VUeXBlOiB2YXJjaGFyKCdjaGFuZ2VfdHlwZScsIHsgbGVuZ3RoOiAyMCB9KS5ub3ROdWxsKCksIC8vIGNyZWF0ZWQgfCB1cGRhdGVkIHwgZGVsZXRlZCB8IHJlc3RvcmVkXG4gIHByZXZpb3VzU3RhdGU6IGpzb25iKCdwcmV2aW91c19zdGF0ZScpLCAvLyBmdWxsIHJ1bGUgc25hcHNob3QgYmVmb3JlIGNoYW5nZVxuICBjaGFuZ2VkQnk6IHRleHQoJ2NoYW5nZWRfYnknKS5ub3ROdWxsKCksXG4gIGNoYW5nZWRBdDogdGltZXN0YW1wKCdjaGFuZ2VkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgcnVsZUNoYW5nZWRBdElkeDogaW5kZXgoJ2NvbXBsaWFuY2VfcnVsZV9oaXN0b3J5X3J1bGVfY2hhbmdlZF9pZHgnKVxuICAgIC5vbih0YWJsZS5ydWxlSWQsIHRhYmxlLmNoYW5nZWRBdCksXG4gIG9yZ0NoYW5nZWRBdElkeDogaW5kZXgoJ2NvbXBsaWFuY2VfcnVsZV9oaXN0b3J5X29yZ19jaGFuZ2VkX2lkeCcpXG4gICAgLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5jaGFuZ2VkQXQpLFxuICBydWxlSWRJZHg6IGluZGV4KCdjb21wbGlhbmNlX3J1bGVfaGlzdG9yeV9ydWxlX2lkX2lkeCcpXG4gICAgLm9uKHRhYmxlLnJ1bGVJZCksXG59KSk7XG5cbi8qKlxuICogQ29tcGxpYW5jZSBhdWRpdCBsb2cgIHN0b3JlcyBldmVyeSBjb21wbGlhbmNlIGNoZWNrIHJlc3VsdC5cbiAqXG4gKiBAdGFibGUgY29tcGxpYW5jZV9hdWRpdF9sb2dcbiAqL1xuZXhwb3J0IGNvbnN0IGNvbXBsaWFuY2VBdWRpdExvZyA9IHBnVGFibGUoJ2NvbXBsaWFuY2VfYXVkaXRfbG9nJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHVzZXJJZDogdGV4dCgndXNlcl9pZCcpLm5vdE51bGwoKSxcbiAgdGFyZ2V0OiB2YXJjaGFyKCd0YXJnZXQnLCB7IGxlbmd0aDogMjAgfSkuJHR5cGU8UnVsZVRhcmdldD4oKS5ub3ROdWxsKCksXG4gIGFjdGlvbjogdmFyY2hhcignYWN0aW9uJywgeyBsZW5ndGg6IDIwIH0pLm5vdE51bGwoKSwgLy8gdXBsb2FkIHwgZGVwbG95IHwgY3JlYXRlIHwgdXBkYXRlIHwgc2NhblxuICBlbnRpdHlJZDogdmFyY2hhcignZW50aXR5X2lkJywgeyBsZW5ndGg6IDI1NSB9KSxcbiAgZW50aXR5TmFtZTogdmFyY2hhcignZW50aXR5X25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLFxuICByZXN1bHQ6IHZhcmNoYXIoJ3Jlc3VsdCcsIHsgbGVuZ3RoOiAxMCB9KS5ub3ROdWxsKCksIC8vIHBhc3MgfCB3YXJuIHwgYmxvY2tcbiAgdmlvbGF0aW9uczoganNvbmIoJ3Zpb2xhdGlvbnMnKS4kdHlwZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdPigpLmRlZmF1bHQoW10pLFxuICBydWxlQ291bnQ6IGludGVnZXIoJ3J1bGVfY291bnQnKS5ub3ROdWxsKCksXG4gIHNjYW5JZDogdXVpZCgnc2Nhbl9pZCcpLCAvLyBncm91cHMgZW50cmllcyBmcm9tIHRoZSBzYW1lIGJ1bGsgc2NhblxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIG9yZ0NyZWF0ZWRBdElkeDogaW5kZXgoJ2NvbXBsaWFuY2VfYXVkaXRfb3JnX2NyZWF0ZWRfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLmNyZWF0ZWRBdCksXG4gIC8vIERFU0MgdmFyaWFudCBmb3IgdGhlIGRvbWluYW50IFwibGF0ZXN0IGF1ZGl0IGV2ZW50cyBwZXIgb3JnXCIgcXVlcnlcbiAgLy8gcGF0dGVybiAoYXVkaXQgbG9nIFVJcyBzb3J0IG5ld2VzdC1maXJzdCkuIFBvc3RncmVzIGNhbiB1c2UgdGhlIGFzY1xuICAvLyBpbmRleCBmb3IgZGVzYyBzY2FucywgYnV0IGEgbWF0Y2hpbmcgREVTQyBpbmRleCBsZXRzIGluZGV4LW9ubHkgc2NhbnNcbiAgLy8gc2F0aXNmeSBgT1JERVIgQlkgY3JlYXRlZF9hdCBERVNDIExJTUlUIG5gIHdpdGhvdXQgYSByZXZlcnNlIHN0ZXAuXG4gIC8vIE1JR1JBVElPTiBSRVFVSVJFRDogcnVuIGBwbnBtIGRyaXp6bGUta2l0IGdlbmVyYXRlYCBhZnRlciBwdWxsaW5nLlxuICBvcmdDcmVhdGVkQXREZXNjSWR4OiBpbmRleCgnY29tcGxpYW5jZV9hdWRpdF9vcmdfY3JlYXRlZF9kZXNjX2lkeCcpXG4gICAgLm9uKHRhYmxlLm9yZ0lkLCBzcWxgJHt0YWJsZS5jcmVhdGVkQXR9IERFU0NgKSxcbiAgb3JnVGFyZ2V0UmVzdWx0SWR4OiBpbmRleCgnY29tcGxpYW5jZV9hdWRpdF9vcmdfdGFyZ2V0X3Jlc3VsdF9pZHgnKVxuICAgIC5vbih0YWJsZS5vcmdJZCwgdGFibGUudGFyZ2V0LCB0YWJsZS5yZXN1bHQpLFxuICBzY2FuSWRJZHg6IGluZGV4KCdjb21wbGlhbmNlX2F1ZGl0X3NjYW5faWRfaWR4Jykub24odGFibGUuc2NhbklkKSxcbn0pKTtcblxuLyoqXG4gKiBQZXItZW50aXR5IGV4ZW1wdGlvbnMgZnJvbSBzcGVjaWZpYyBjb21wbGlhbmNlIHJ1bGVzLlxuICpcbiAqIEB0YWJsZSBjb21wbGlhbmNlX2V4ZW1wdGlvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IGNvbXBsaWFuY2VFeGVtcHRpb24gPSBwZ1RhYmxlKCdjb21wbGlhbmNlX2V4ZW1wdGlvbnMnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG4gIG9yZ0lkOiB2YXJjaGFyKCdvcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgcnVsZUlkOiB1dWlkKCdydWxlX2lkJykubm90TnVsbCgpLnJlZmVyZW5jZXMoKCkgPT4gY29tcGxpYW5jZVJ1bGUuaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KSxcbiAgZW50aXR5VHlwZTogdmFyY2hhcignZW50aXR5X3R5cGUnLCB7IGxlbmd0aDogMjAgfSkuJHR5cGU8UnVsZVRhcmdldD4oKS5ub3ROdWxsKCksXG4gIGVudGl0eUlkOiB1dWlkKCdlbnRpdHlfaWQnKS5ub3ROdWxsKCksXG4gIGVudGl0eU5hbWU6IHZhcmNoYXIoJ2VudGl0eV9uYW1lJywgeyBsZW5ndGg6IDI1NSB9KSxcbiAgcmVhc29uOiB0ZXh0KCdyZWFzb24nKS5ub3ROdWxsKCksXG4gIGFwcHJvdmVkQnk6IHRleHQoJ2FwcHJvdmVkX2J5JyksXG4gIHJlamVjdGlvblJlYXNvbjogdGV4dCgncmVqZWN0aW9uX3JlYXNvbicpLFxuICBzdGF0dXM6IHZhcmNoYXIoJ3N0YXR1cycsIHsgbGVuZ3RoOiAyMCB9KS5kZWZhdWx0KCdwZW5kaW5nJykubm90TnVsbCgpLCAvLyBwZW5kaW5nIHwgYXBwcm92ZWQgfCByZWplY3RlZCB8IGV4cGlyZWRcbiAgZXhwaXJlc0F0OiB0aW1lc3RhbXAoJ2V4cGlyZXNfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgY3JlYXRlZEJ5OiB0ZXh0KCdjcmVhdGVkX2J5Jykubm90TnVsbCgpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRCeTogdGV4dCgndXBkYXRlZF9ieScpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICBvcmdSdWxlRW50aXR5VW5pcXVlOiB1bmlxdWVJbmRleCgnY29tcGxpYW5jZV9leGVtcHRpb25fb3JnX3J1bGVfZW50aXR5X3VuaXF1ZScpXG4gICAgLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5ydWxlSWQsIHRhYmxlLmVudGl0eUlkKSxcbiAgb3JnU3RhdHVzSWR4OiBpbmRleCgnY29tcGxpYW5jZV9leGVtcHRpb25fb3JnX3N0YXR1c19pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUuc3RhdHVzKSxcbiAgZXhwaXJlc0F0SWR4OiBpbmRleCgnY29tcGxpYW5jZV9leGVtcHRpb25fZXhwaXJlc19hdF9pZHgnKS5vbih0YWJsZS5leHBpcmVzQXQpLFxuICBlbnRpdHlJZElkeDogaW5kZXgoJ2NvbXBsaWFuY2VfZXhlbXB0aW9uX2VudGl0eV9pZF9pZHgnKS5vbih0YWJsZS5lbnRpdHlJZCksXG59KSk7XG5cbi8qKlxuICogVHJhY2tzIHdoaWNoIG9yZ3MgaGF2ZSBvcHRlZCBpbnRvIHN5c3RlbS1vcmcgcHVibGlzaGVkIGNvbXBsaWFuY2UgcnVsZXMuXG4gKlxuICogQHRhYmxlIGNvbXBsaWFuY2VfcnVsZV9zdWJzY3JpcHRpb25zXG4gKi9cbmV4cG9ydCBjb25zdCBjb21wbGlhbmNlUnVsZVN1YnNjcmlwdGlvbiA9IHBnVGFibGUoJ2NvbXBsaWFuY2VfcnVsZV9zdWJzY3JpcHRpb25zJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHJ1bGVJZDogdXVpZCgncnVsZV9pZCcpLm5vdE51bGwoKS5yZWZlcmVuY2VzKCgpID0+IGNvbXBsaWFuY2VSdWxlLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSksXG4gIHN1YnNjcmliZWRCeTogdGV4dCgnc3Vic2NyaWJlZF9ieScpLm5vdE51bGwoKSxcbiAgc3Vic2NyaWJlZEF0OiB0aW1lc3RhbXAoJ3N1YnNjcmliZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICBpc0FjdGl2ZTogYm9vbGVhbignaXNfYWN0aXZlJykuZGVmYXVsdCh0cnVlKS5ub3ROdWxsKCksXG4gIHBpbm5lZFZlcnNpb246IGpzb25iKCdwaW5uZWRfdmVyc2lvbicpLiR0eXBlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PigpLFxuICB1bnN1YnNjcmliZWRBdDogdGltZXN0YW1wKCd1bnN1YnNjcmliZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgdW5zdWJzY3JpYmVkQnk6IHRleHQoJ3Vuc3Vic2NyaWJlZF9ieScpLFxufSwgKHRhYmxlKSA9PiAoe1xuICBvcmdSdWxlVW5pcXVlOiB1bmlxdWVJbmRleCgnY29tcGxpYW5jZV9ydWxlX3N1Yl9vcmdfcnVsZV91bmlxdWUnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUucnVsZUlkKSxcbiAgb3JnQWN0aXZlSWR4OiBpbmRleCgnY29tcGxpYW5jZV9ydWxlX3N1Yl9vcmdfYWN0aXZlX2lkeCcpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5pc0FjdGl2ZSksXG4gIHJ1bGVJZHg6IGluZGV4KCdjb21wbGlhbmNlX3J1bGVfc3ViX3J1bGVfaWR4Jykub24odGFibGUucnVsZUlkKSxcbn0pKTtcblxuLyoqXG4gKiBCdWxrIGNvbXBsaWFuY2Ugc2NhbnMgIHRyYWNrcyBzY2hlZHVsZWQgYW5kIG9uLWRlbWFuZCBzY2Fucy5cbiAqXG4gKiBAdGFibGUgY29tcGxpYW5jZV9zY2Fuc1xuICovXG5leHBvcnQgY29uc3QgY29tcGxpYW5jZVNjYW4gPSBwZ1RhYmxlKCdjb21wbGlhbmNlX3NjYW5zJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHRhcmdldDogdmFyY2hhcigndGFyZ2V0JywgeyBsZW5ndGg6IDIwIH0pLm5vdE51bGwoKSwgLy8gcGx1Z2luIHwgcGlwZWxpbmUgfCBhbGxcbiAgZmlsdGVyOiBqc29uYignZmlsdGVyJyksIC8vIG9wdGlvbmFsIGVudGl0eSBmaWx0ZXIgZm9yIHBhcnRpYWwgc2NhbnNcbiAgc3RhdHVzOiB2YXJjaGFyKCdzdGF0dXMnLCB7IGxlbmd0aDogMjAgfSkuZGVmYXVsdCgncGVuZGluZycpLm5vdE51bGwoKSwgLy8gcGVuZGluZyB8IHJ1bm5pbmcgfCBjb21wbGV0ZWQgfCBmYWlsZWQgfCBjYW5jZWxsZWRcbiAgdHJpZ2dlcmVkQnk6IHZhcmNoYXIoJ3RyaWdnZXJlZF9ieScsIHsgbGVuZ3RoOiAyMCB9KS5ub3ROdWxsKCksIC8vIG1hbnVhbCB8IHNjaGVkdWxlZCB8IHJ1bGUtY2hhbmdlIHwgcnVsZS1kcnktcnVuXG4gIHVzZXJJZDogdGV4dCgndXNlcl9pZCcpLm5vdE51bGwoKSxcbiAgdG90YWxFbnRpdGllczogaW50ZWdlcigndG90YWxfZW50aXRpZXMnKS5kZWZhdWx0KDApLm5vdE51bGwoKSxcbiAgcHJvY2Vzc2VkRW50aXRpZXM6IGludGVnZXIoJ3Byb2Nlc3NlZF9lbnRpdGllcycpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICBwYXNzQ291bnQ6IGludGVnZXIoJ3Bhc3NfY291bnQnKS5kZWZhdWx0KDApLm5vdE51bGwoKSxcbiAgd2FybkNvdW50OiBpbnRlZ2VyKCd3YXJuX2NvdW50JykuZGVmYXVsdCgwKS5ub3ROdWxsKCksXG4gIGJsb2NrQ291bnQ6IGludGVnZXIoJ2Jsb2NrX2NvdW50JykuZGVmYXVsdCgwKS5ub3ROdWxsKCksXG4gIC8vIFRydWUgd2hlbiB0aGUgc2NhbiBzdG9wcGVkIGVhcmx5IGF0IGEgY29uZmlndXJlZCBwZXItc2NhbiBjYXAgKHNvIHRoZVxuICAvLyBjb3VudHMgYWJvdmUgcmVwcmVzZW50IGEgc3Vic2V0LCBub3QgdGhlIGZ1bGwgZW50aXR5IHVuaXZlcnNlKS4gU3VyZmFjZWRcbiAgLy8gaW4gdGhlIHNjYW4tc3RhdHVzIFVJIHNvIHVzZXJzIGtub3cgd2hldGhlciB0byB3aWRlbiB0aGUgZmlsdGVyLlxuICAvLyBNSUdSQVRJT04gUkVRVUlSRUQ6IHJ1biBgcG5wbSBkcml6emxlLWtpdCBnZW5lcmF0ZWAgYWZ0ZXIgcHVsbGluZy5cbiAgdHJ1bmNhdGVkOiBib29sZWFuKCd0cnVuY2F0ZWQnKS5kZWZhdWx0KGZhbHNlKS5ub3ROdWxsKCksXG4gIHN0YXJ0ZWRBdDogdGltZXN0YW1wKCdzdGFydGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGNvbXBsZXRlZEF0OiB0aW1lc3RhbXAoJ2NvbXBsZXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBjYW5jZWxsZWRBdDogdGltZXN0YW1wKCdjYW5jZWxsZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgY2FuY2VsbGVkQnk6IHRleHQoJ2NhbmNlbGxlZF9ieScpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIG9yZ0NyZWF0ZWRBdElkeDogaW5kZXgoJ2NvbXBsaWFuY2Vfc2Nhbl9vcmdfY3JlYXRlZF9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUuY3JlYXRlZEF0KSxcbiAgb3JnU3RhdHVzSWR4OiBpbmRleCgnY29tcGxpYW5jZV9zY2FuX29yZ19zdGF0dXNfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLnN0YXR1cyksXG59KSk7XG5cbi8qKlxuICogQ3Jvbi1iYXNlZCByZWN1cnJpbmcgc2NhbiBzY2hlZHVsZXMuXG4gKlxuICogQHRhYmxlIGNvbXBsaWFuY2Vfc2Nhbl9zY2hlZHVsZXNcbiAqL1xuZXhwb3J0IGNvbnN0IGNvbXBsaWFuY2VTY2FuU2NoZWR1bGUgPSBwZ1RhYmxlKCdjb21wbGlhbmNlX3NjYW5fc2NoZWR1bGVzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHRhcmdldDogdmFyY2hhcigndGFyZ2V0JywgeyBsZW5ndGg6IDIwIH0pLm5vdE51bGwoKSwgLy8gcGx1Z2luIHwgcGlwZWxpbmUgfCBhbGxcbiAgY3JvbkV4cHJlc3Npb246IHZhcmNoYXIoJ2Nyb25fZXhwcmVzc2lvbicsIHsgbGVuZ3RoOiAxMDAgfSkubm90TnVsbCgpLFxuICBpc0FjdGl2ZTogYm9vbGVhbignaXNfYWN0aXZlJykuZGVmYXVsdCh0cnVlKS5ub3ROdWxsKCksXG4gIGxhc3RSdW5BdDogdGltZXN0YW1wKCdsYXN0X3J1bl9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBuZXh0UnVuQXQ6IHRpbWVzdGFtcCgnbmV4dF9ydW5fYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgY3JlYXRlZEJ5OiB0ZXh0KCdjcmVhdGVkX2J5Jykubm90TnVsbCgpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRCeTogdGV4dCgndXBkYXRlZF9ieScpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICBhY3RpdmVOZXh0UnVuSWR4OiBpbmRleCgnY29tcGxpYW5jZV9zY2FuX3NjaGVkdWxlX2FjdGl2ZV9uZXh0X2lkeCcpXG4gICAgLm9uKHRhYmxlLmlzQWN0aXZlLCB0YWJsZS5uZXh0UnVuQXQpLFxuICBvcmdJZHg6IGluZGV4KCdjb21wbGlhbmNlX3NjYW5fc2NoZWR1bGVfb3JnX2lkeCcpLm9uKHRhYmxlLm9yZ0lkKSxcbn0pKTtcblxuLyoqXG4gKiBQZXItb3JnIG5vdGlmaWNhdGlvbiBzZXR0aW5ncyBmb3IgY29tcGxpYW5jZSBldmVudHMuXG4gKlxuICogQHRhYmxlIGNvbXBsaWFuY2Vfbm90aWZpY2F0aW9uX3ByZWZlcmVuY2VzXG4gKi9cbmV4cG9ydCBjb25zdCBjb21wbGlhbmNlTm90aWZpY2F0aW9uUHJlZmVyZW5jZSA9IHBnVGFibGUoJ2NvbXBsaWFuY2Vfbm90aWZpY2F0aW9uX3ByZWZlcmVuY2VzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCkudW5pcXVlKCksXG4gIG5vdGlmeU9uQmxvY2s6IGJvb2xlYW4oJ25vdGlmeV9vbl9ibG9jaycpLmRlZmF1bHQodHJ1ZSkubm90TnVsbCgpLFxuICBub3RpZnlPbldhcm5pbmc6IGJvb2xlYW4oJ25vdGlmeV9vbl93YXJuaW5nJykuZGVmYXVsdChmYWxzZSkubm90TnVsbCgpLFxuICBkaWdlc3RNb2RlOiB2YXJjaGFyKCdkaWdlc3RfbW9kZScsIHsgbGVuZ3RoOiAyMCB9KS5kZWZhdWx0KCdpbW1lZGlhdGUnKS5ub3ROdWxsKCksIC8vIGltbWVkaWF0ZSB8IGRhaWx5IHwgd2Vla2x5XG4gIGRpZ2VzdFNjaGVkdWxlOiB2YXJjaGFyKCdkaWdlc3Rfc2NoZWR1bGUnLCB7IGxlbmd0aDogMTAwIH0pLFxuICBsYXN0RGlnZXN0QXQ6IHRpbWVzdGFtcCgnbGFzdF9kaWdlc3RfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgdGFyZ2V0VXNlcnM6IGpzb25iKCd0YXJnZXRfdXNlcnMnKS4kdHlwZTxzdHJpbmdbXT4oKSwgLy8gbnVsbCA9IGFsbCBvcmcgYWRtaW5zXG4gIHdlYmhvb2tVcmw6IHZhcmNoYXIoJ3dlYmhvb2tfdXJsJywgeyBsZW5ndGg6IDUwMCB9KSxcbiAgd2ViaG9va1NlY3JldDogdmFyY2hhcignd2ViaG9va19zZWNyZXQnLCB7IGxlbmd0aDogMjU1IH0pLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0pO1xuXG4vKipcbiAqIExvZyBvZiBhbGwgY29tcGxpYW5jZSBub3RpZmljYXRpb25zIHNlbnQuXG4gKlxuICogQHRhYmxlIGNvbXBsaWFuY2Vfbm90aWZpY2F0aW9uX2xvZ1xuICovXG5leHBvcnQgY29uc3QgY29tcGxpYW5jZU5vdGlmaWNhdGlvbkxvZyA9IHBnVGFibGUoJ2NvbXBsaWFuY2Vfbm90aWZpY2F0aW9uX2xvZycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBjaGFubmVsOiB2YXJjaGFyKCdjaGFubmVsJywgeyBsZW5ndGg6IDIwIH0pLm5vdE51bGwoKSwgLy8gaW4tYXBwIHwgd2ViaG9vayB8IGRpZ2VzdFxuICBzdGF0dXM6IHZhcmNoYXIoJ3N0YXR1cycsIHsgbGVuZ3RoOiAyMCB9KS5ub3ROdWxsKCksIC8vIHNlbnQgfCBmYWlsZWQgfCBwZW5kaW5nXG4gIHBheWxvYWQ6IGpzb25iKCdwYXlsb2FkJykuJHR5cGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KCkubm90TnVsbCgpLFxuICB3ZWJob29rUmVzcG9uc2VDb2RlOiBpbnRlZ2VyKCd3ZWJob29rX3Jlc3BvbnNlX2NvZGUnKSxcbiAgd2ViaG9va0Vycm9yOiB0ZXh0KCd3ZWJob29rX2Vycm9yJyksXG4gIHJldHJ5Q291bnQ6IGludGVnZXIoJ3JldHJ5X2NvdW50JykuZGVmYXVsdCgwKS5ub3ROdWxsKCksXG4gIG5leHRSZXRyeUF0OiB0aW1lc3RhbXAoJ25leHRfcmV0cnlfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgcmVsYXRlZEF1ZGl0SWQ6IHV1aWQoJ3JlbGF0ZWRfYXVkaXRfaWQnKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICBvcmdDcmVhdGVkQXRJZHg6IGluZGV4KCdjb21wbGlhbmNlX25vdGlmaWNhdGlvbl9vcmdfY3JlYXRlZF9pZHgnKVxuICAgIC5vbih0YWJsZS5vcmdJZCwgdGFibGUuY3JlYXRlZEF0KSxcbiAgc3RhdHVzUmV0cnlJZHg6IGluZGV4KCdjb21wbGlhbmNlX25vdGlmaWNhdGlvbl9zdGF0dXNfcmV0cnlfaWR4JylcbiAgICAub24odGFibGUuc3RhdHVzLCB0YWJsZS5uZXh0UmV0cnlBdCksXG4gIHJlbGF0ZWRBdWRpdElkeDogaW5kZXgoJ2NvbXBsaWFuY2Vfbm90aWZpY2F0aW9uX3JlbGF0ZWRfYXVkaXRfaWR4JylcbiAgICAub24odGFibGUucmVsYXRlZEF1ZGl0SWQpLFxufSkpO1xuXG4vKipcbiAqIENvbXBsaWFuY2Utc3BlY2lmaWMgUkJBQyByb2xlcy5cbiAqXG4gKiBAdGFibGUgY29tcGxpYW5jZV9yb2xlc1xuICovXG5leHBvcnQgdHlwZSBDb21wbGlhbmNlUm9sZVR5cGUgPSAnY29tcGxpYW5jZS12aWV3ZXInIHwgJ2NvbXBsaWFuY2UtZWRpdG9yJyB8ICdjb21wbGlhbmNlLWFkbWluJztcblxuZXhwb3J0IGNvbnN0IGNvbXBsaWFuY2VSb2xlID0gcGdUYWJsZSgnY29tcGxpYW5jZV9yb2xlcycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICB1c2VySWQ6IHRleHQoJ3VzZXJfaWQnKS5ub3ROdWxsKCksXG4gIHJvbGU6IHZhcmNoYXIoJ3JvbGUnLCB7IGxlbmd0aDogMzAgfSkuJHR5cGU8Q29tcGxpYW5jZVJvbGVUeXBlPigpLm5vdE51bGwoKSxcbiAgZ3JhbnRlZEJ5OiB0ZXh0KCdncmFudGVkX2J5Jykubm90TnVsbCgpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgb3JnVXNlclVuaXF1ZTogdW5pcXVlSW5kZXgoJ2NvbXBsaWFuY2Vfcm9sZV9vcmdfdXNlcl91bmlxdWUnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUudXNlcklkKSxcbiAgb3JnUm9sZUlkeDogaW5kZXgoJ2NvbXBsaWFuY2Vfcm9sZV9vcmdfcm9sZV9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUucm9sZSksXG59KSk7XG5cbi8qKlxuICogR2VuZXJhdGVkIGNvbXBsaWFuY2UgcmVwb3J0cy5cbiAqXG4gKiBAdGFibGUgY29tcGxpYW5jZV9yZXBvcnRzXG4gKi9cbmV4cG9ydCBjb25zdCBjb21wbGlhbmNlUmVwb3J0ID0gcGdUYWJsZSgnY29tcGxpYW5jZV9yZXBvcnRzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHJlcG9ydFR5cGU6IHZhcmNoYXIoJ3JlcG9ydF90eXBlJywgeyBsZW5ndGg6IDMwIH0pLm5vdE51bGwoKSwgLy8gc3VtbWFyeSB8IGRldGFpbGVkIHwgYXVkaXQtdHJhaWwgfCBjb21wYXJpc29uXG4gIHRhcmdldDogdmFyY2hhcigndGFyZ2V0JywgeyBsZW5ndGg6IDIwIH0pLm5vdE51bGwoKSwgLy8gcGx1Z2luIHwgcGlwZWxpbmUgfCBhbGxcbiAgZGF0ZUZyb206IHRpbWVzdGFtcCgnZGF0ZV9mcm9tJywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGRhdGVUbzogdGltZXN0YW1wKCdkYXRlX3RvJywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGNvbXBhcmVGcm9tOiB0aW1lc3RhbXAoJ2NvbXBhcmVfZnJvbScsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBjb21wYXJlVG86IHRpbWVzdGFtcCgnY29tcGFyZV90bycsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBkYXRhOiBqc29uYignZGF0YScpLiR0eXBlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PigpLm5vdE51bGwoKSxcbiAgZm9ybWF0OiB2YXJjaGFyKCdmb3JtYXQnLCB7IGxlbmd0aDogMTAgfSkuZGVmYXVsdCgnanNvbicpLm5vdE51bGwoKSwgLy8ganNvbiB8IGNzdlxuICBnZW5lcmF0ZWRCeTogdGV4dCgnZ2VuZXJhdGVkX2J5Jykubm90TnVsbCgpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIG9yZ0NyZWF0ZWRBdElkeDogaW5kZXgoJ2NvbXBsaWFuY2VfcmVwb3J0X29yZ19jcmVhdGVkX2lkeCcpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5jcmVhdGVkQXQpLFxufSkpO1xuXG4vKipcbiAqIENyb24tYmFzZWQgcmVjdXJyaW5nIHJlcG9ydCBnZW5lcmF0aW9uIHNjaGVkdWxlcy5cbiAqXG4gKiBAdGFibGUgY29tcGxpYW5jZV9yZXBvcnRfc2NoZWR1bGVzXG4gKi9cbmV4cG9ydCBjb25zdCBjb21wbGlhbmNlUmVwb3J0U2NoZWR1bGUgPSBwZ1RhYmxlKCdjb21wbGlhbmNlX3JlcG9ydF9zY2hlZHVsZXMnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG4gIG9yZ0lkOiB2YXJjaGFyKCdvcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgcmVwb3J0VHlwZTogdmFyY2hhcigncmVwb3J0X3R5cGUnLCB7IGxlbmd0aDogMzAgfSkubm90TnVsbCgpLCAvLyBzdW1tYXJ5IHwgZGV0YWlsZWRcbiAgdGFyZ2V0OiB2YXJjaGFyKCd0YXJnZXQnLCB7IGxlbmd0aDogMjAgfSkubm90TnVsbCgpLCAvLyBwbHVnaW4gfCBwaXBlbGluZSB8IGFsbFxuICBmb3JtYXQ6IHZhcmNoYXIoJ2Zvcm1hdCcsIHsgbGVuZ3RoOiAxMCB9KS5kZWZhdWx0KCdqc29uJykubm90TnVsbCgpLFxuICBjcm9uRXhwcmVzc2lvbjogdmFyY2hhcignY3Jvbl9leHByZXNzaW9uJywgeyBsZW5ndGg6IDEwMCB9KS5ub3ROdWxsKCksXG4gIGlzQWN0aXZlOiBib29sZWFuKCdpc19hY3RpdmUnKS5kZWZhdWx0KHRydWUpLm5vdE51bGwoKSxcbiAgbGFzdFJ1bkF0OiB0aW1lc3RhbXAoJ2xhc3RfcnVuX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIG5leHRSdW5BdDogdGltZXN0YW1wKCduZXh0X3J1bl9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBkZWxpdmVyVG86IGpzb25iKCdkZWxpdmVyX3RvJykuJHR5cGU8c3RyaW5nW10+KCkuZGVmYXVsdChbXSkubm90TnVsbCgpLCAvLyB1c2VySWRzIHRvIG5vdGlmeVxuICBjcmVhdGVkQnk6IHRleHQoJ2NyZWF0ZWRfYnknKS5ub3ROdWxsKCksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEJ5OiB0ZXh0KCd1cGRhdGVkX2J5Jykubm90TnVsbCgpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIGFjdGl2ZU5leHRSdW5JZHg6IGluZGV4KCdjb21wbGlhbmNlX3JlcG9ydF9zY2hlZHVsZV9hY3RpdmVfbmV4dF9pZHgnKVxuICAgIC5vbih0YWJsZS5pc0FjdGl2ZSwgdGFibGUubmV4dFJ1bkF0KSxcbiAgb3JnSWR4OiBpbmRleCgnY29tcGxpYW5jZV9yZXBvcnRfc2NoZWR1bGVfb3JnX2lkeCcpLm9uKHRhYmxlLm9yZ0lkKSxcbn0pKTtcblxuLyoqXG4gKiBVc2VyLWVkaXRhYmxlIG9ic2VydmFiaWxpdHkgZGFzaGJvYXJkLiBSZXBsYWNlcyB0aGUgY29kZS1kZWZpbmVkIGRhc2hib2FyZHNcbiAqIHVuZGVyIGBmcm9udGVuZC9zcmMvbGliL2Rhc2hib2FyZHMvKi50c2Agc28gb3BlcmF0b3JzIGNhbiBhZGQgcGFuZWxzIGFuZFxuICogY3VzdG9taXplIGxheW91dCBwZXItb3JnIHdpdGhvdXQgYSByZWRlcGxveS5cbiAqXG4gKiBgbGF5b3V0SnNvbmAgY2FycmllcyB0aGUgcmVhY3QtZ3JpZC1sYXlvdXQgY29vcmRpbmF0ZSBzZXQga2V5ZWQgYnkgcGFuZWwgaWQ7XG4gKiBgZGFzaGJvYXJkX3BhbmVsc2AgaG9sZHMgdGhlIHBhbmVsLWNvbnRlbnQgcm93cyBzbyBhbiBOLXBhbmVsIGRhc2hib2FyZFxuICogZG9lc24ndCBibG9hdCBvbmUgcm93J3MgSlNPTiB0byBzZXZlcmFsIEtCLiBUaGUgY2F0YWxvZyBxdWVyeSBpcyByZWZlcmVuY2VkXG4gKiBieSBrZXkgb25seSAoc2VlIHBsYXRmb3JtL3NyYy9vYnNlcnZhYmlsaXR5L2NhdGFsb2cudHMpICB0aGUgZGFzaGJvYXJkXG4gKiByZWNvcmQgbmV2ZXIgY2FycmllcyByYXcgUHJvbVFML0xvZ1FMLCBrZWVwaW5nIHRoZSBjYXRhbG9nIGFzIHRoZSBzZWN1cml0eVxuICogYm91bmRhcnkgZm9yIHVwc3RyZWFtIHF1ZXJ5IGV4ZWN1dGlvbi5cbiAqXG4gKiBWaXNpYmlsaXR5IGxhZGRlciAqIC0gYHByaXZhdGVgICBvbmx5IHRoZSBjcmVhdG9yIGNhbiByZWFkL3dyaXRlXG4gKiAtIGBvcmdgICBhbnlvbmUgaW4gdGhlIHNhbWUgb3JnIGNhbiByZWFkOyBvcmcgYWRtaW5zICsgY3JlYXRvciBjYW4gd3JpdGVcbiAqIC0gYHB1YmxpY2AgIGV2ZXJ5IGF1dGhlbnRpY2F0ZWQgdXNlciBjYW4gcmVhZDsgb25seSBzeXNhZG1pbnMgY2FuIHdyaXRlLlxuICogVXNlZCBmb3IgdGhlIDUgZGVmYXVsdCBkYXNoYm9hcmRzIChgb3JnX2lkPSdzeXN0ZW0nYCkgc28gdGhlXG4gKiBleGlzdGluZyBzeXN0ZW0tb3JnIHZpc2liaWxpdHkgcnVsZSBjb3ZlcnMgdGhlbSBieSBkZWZhdWx0LlxuICpcbiAqIEB0YWJsZSBkYXNoYm9hcmRzXG4gKi9cbmV4cG9ydCBjb25zdCBkYXNoYm9hcmQgPSBwZ1RhYmxlKCdkYXNoYm9hcmRzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuXG4gIC8vIE9yZyArIGNyZWF0b3JcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSlcbiAgICAuZGVmYXVsdCgnc3lzdGVtJylcbiAgICAubm90TnVsbCgpLFxuICBjcmVhdGVkQnk6IHRleHQoJ2NyZWF0ZWRfYnknKVxuICAgIC5kZWZhdWx0KCdzeXN0ZW0nKVxuICAgIC5ub3ROdWxsKCksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSlcbiAgICAuZGVmYXVsdE5vdygpXG4gICAgLm5vdE51bGwoKSxcbiAgdXBkYXRlZEJ5OiB0ZXh0KCd1cGRhdGVkX2J5JylcbiAgICAuZGVmYXVsdCgnc3lzdGVtJylcbiAgICAubm90TnVsbCgpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pXG4gICAgLmRlZmF1bHROb3coKVxuICAgIC5ub3ROdWxsKCksXG5cbiAgLy8gSWRlbnRpdHlcbiAgbmFtZTogdmFyY2hhcignbmFtZScsIHsgbGVuZ3RoOiAxNTAgfSlcbiAgICAubm90TnVsbCgpLFxuICBkZXNjcmlwdGlvbjogdGV4dCgnZGVzY3JpcHRpb24nKSxcblxuICAvLyByZWFjdC1ncmlkLWxheW91dCBjb29yZGluYXRlIHNldCBrZXllZCBieSBwYW5lbCBpZC5cbiAgLy8gU2hhcGU6IHsgW3BhbmVsSWRdOiB7IHgsIHksIHcsIGgsIG1pblc/LCBtaW5IPyB9IH1cbiAgbGF5b3V0SnNvbjoganNvbmIoJ2xheW91dF9qc29uJylcbiAgICAuJHR5cGU8UmVjb3JkPHN0cmluZywgeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgdzogbnVtYmVyOyBoOiBudW1iZXI7IG1pblc/OiBudW1iZXI7IG1pbkg/OiBudW1iZXIgfT4+KClcbiAgICAuZGVmYXVsdCh7fSlcbiAgICAubm90TnVsbCgpLFxuXG4gIC8vIFZpc2liaWxpdHkgIHNlZSBoZWFkZXIgZm9yIGxhZGRlciBzZW1hbnRpY3MuIENvbnN0cmFpbmVkIGF0IHRoZSBTUUxcbiAgLy8gbGF5ZXIgdG9vIHZpYSBhIENIRUNLIGluIHBvc3RncmVzLWluaXQuc3FsIHRvIGtlZXAgdHlwb3MgZnJvbSBzbmVha2luZ1xuICAvLyBwYXN0IHRoZSBhcHBsaWNhdGlvbiBsYXllci5cbiAgdmlzaWJpbGl0eTogdmFyY2hhcigndmlzaWJpbGl0eScsIHsgbGVuZ3RoOiAxMCB9KVxuICAgIC4kdHlwZTwncHJpdmF0ZScgfCAnb3JnJyB8ICdwdWJsaWMnPigpXG4gICAgLmRlZmF1bHQoJ3ByaXZhdGUnKVxuICAgIC5ub3ROdWxsKCksXG5cbiAgLy8gU29mdCBkZWxldGUgKG1hdGNoZXMgdGhlIHJlc3Qgb2YgdGhlIHNjaGVtYSdzIGNvbnZlbnRpb24pXG4gIGRlbGV0ZWRBdDogdGltZXN0YW1wKCdkZWxldGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGRlbGV0ZWRCeTogdGV4dCgnZGVsZXRlZF9ieScpLFxufSwgKHRhYmxlKSA9PiAoe1xuICAvLyBMaXN0aW5nIGlzIG9yZy1zY29wZWQgYW5kIHZpc2liaWxpdHktZmlsdGVyZWQsIHNvIGJvdGggZ28gaW4gdGhlIGluZGV4LlxuICBvcmdWaXNpYmlsaXR5SWR4OiBpbmRleCgnZGFzaGJvYXJkX29yZ192aXNpYmlsaXR5X2lkeCcpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS52aXNpYmlsaXR5KSxcbiAgLy8gQ29udmVuaWVuY2UgZm9yIFwiYWxsIG15IGRhc2hib2FyZHNcIiBsaXN0aW5nXG4gIGNyZWF0ZWRCeUlkeDogaW5kZXgoJ2Rhc2hib2FyZF9jcmVhdGVkX2J5X2lkeCcpLm9uKHRhYmxlLmNyZWF0ZWRCeSksXG4gIC8vIFNhbWUtb3JnIGR1cGxpY2F0ZS1uYW1lIGd1YXJkLiBUaGUgKG9yZ0lkLCBuYW1lKSB0dXBsZSBpcyB1bmlxdWUgYW1vbmdcbiAgLy8gbm9uLWRlbGV0ZWQgcm93czsgc29mdC1kZWxldGVkIHJvd3MgYXJlIGV4Y2x1ZGVkIHNvIG5hbWUgcmV1c2UgYWZ0ZXJcbiAgLy8gZGVsZXRpb24gd29ya3MuXG4gIG5hbWVVbmlxdWU6IHVuaXF1ZUluZGV4KCdkYXNoYm9hcmRfb3JnX25hbWVfdW5pcXVlJykub24odGFibGUub3JnSWQsIHRhYmxlLm5hbWUpLFxufSkpO1xuXG4vKipcbiAqIEEgc2luZ2xlIHBhbmVsIGluc2lkZSBhIGRhc2hib2FyZC4gVGhlIGNhdGFsb2cgYHF1ZXJ5S2V5YCBpcyB0aGUgb25seSB0aGluZ1xuICogdGhlIHBhbmVsIGNhcnJpZXMgZnJvbSB0aGUgcXVlcnkgc2lkZSAgc3Vic3RpdHV0aW9uICsgZXhlY3V0aW9uIGhhcHBlbnNcbiAqIHNlcnZlci1zaWRlIHZpYSB0aGUgZXhpc3RpbmcgY2F0YWxvZywgc28gbm8gUHJvbVFML0xvZ1FMIHRyYXZlbHMgd2l0aCB0aGVcbiAqIHBhbmVsIHJlY29yZC5cbiAqXG4gKiBAdGFibGUgZGFzaGJvYXJkX3BhbmVsc1xuICovXG5leHBvcnQgY29uc3QgZGFzaGJvYXJkUGFuZWwgPSBwZ1RhYmxlKCdkYXNoYm9hcmRfcGFuZWxzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBkYXNoYm9hcmRJZDogdXVpZCgnZGFzaGJvYXJkX2lkJylcbiAgICAubm90TnVsbCgpLFxuICAvLyBDYXRhbG9nIGtleSAoZS5nLiBgcGx1Z2luX2J1aWxkc19wZXJfbWluYCkuIFRoZSBzZXJ2ZXIgdmFsaWRhdGVzIHRoaXNcbiAgLy8gYWdhaW5zdCBRVUVSSUVTIGF0IHJlbmRlciB0aW1lLlxuICBxdWVyeUtleTogdmFyY2hhcigncXVlcnlfa2V5JywgeyBsZW5ndGg6IDEwMCB9KVxuICAgIC5ub3ROdWxsKCksXG4gIC8vICdzdGF0JyB8ICdsaW5lJyB8ICd0YWJsZScgfCAnc3RhY2tlZC1iYXInICBrZXB0IHN0cmluZ2x5LXR5cGVkIGZvclxuICAvLyBmb3J3YXJkIGNvbXBhdGliaWxpdHk7IHRoZSByZW5kZXJlciBmYWxscyBiYWNrIHRvICdsaW5lJyBvbiB1bmtub3duLlxuICB2aXpLaW5kOiB2YXJjaGFyKCd2aXpfa2luZCcsIHsgbGVuZ3RoOiAzMCB9KVxuICAgIC5kZWZhdWx0KCdsaW5lJylcbiAgICAubm90TnVsbCgpLFxuICB0aXRsZTogdmFyY2hhcigndGl0bGUnLCB7IGxlbmd0aDogMjAwIH0pXG4gICAgLm5vdE51bGwoKSxcbiAgLy8gVGFpbHdpbmQgY29sLXNwYW4gdGllciAoMS0xMiwgYnV0IG9ubHkgMy80LzYvOC85LzEyIGFyZSByZW5kZXJhYmxlKS5cbiAgc3BhbjogaW50ZWdlcignc3BhbicpXG4gICAgLmRlZmF1bHQoNilcbiAgICAubm90TnVsbCgpLFxuICAvLyBPcHRpb25hbDogbGFiZWwga2V5IGZvciBzZXJpZXMgZ3JvdXBpbmcgKGUuZy4gJ3N0YXR1cycsICdzdGF0ZScpLlxuICBncm91cEJ5OiB2YXJjaGFyKCdncm91cF9ieScsIHsgbGVuZ3RoOiA1MCB9KSxcbiAgLy8gT3B0aW9uYWw6IGNhdGFsb2cgZm9ybWF0IGtleSAoJ3BlcmNlbnQnIHwgJ3NlY29uZHMnIHwuLi4pLlxuICBmb3JtYXQ6IHZhcmNoYXIoJ2Zvcm1hdCcsIHsgbGVuZ3RoOiAyMCB9KSxcbiAgLy8gMC1iYXNlZCByZW5kZXIgb3JkZXIgd2l0aGluIHRoZSBkYXNoYm9hcmQuIEVkaXRvciByZWFzc2lnbnMgb24gZHJhZy5cbiAgcG9zaXRpb246IGludGVnZXIoJ3Bvc2l0aW9uJylcbiAgICAuZGVmYXVsdCgwKVxuICAgIC5ub3ROdWxsKCksXG4gIC8vIE9wdGlvbmFsIHRlbXBsYXRlIHZhciB2YWx1ZXMgYm91bmQgYXQgcGFuZWwgbGV2ZWwgKGUuZy4gYHBsdWdpbj1YYCBmb3JcbiAgLy8gdGhlIHBlci1wbHVnaW4gZHJpbGwtZG93biBwYW5lbCkuIFNhbml0aXplZCBzZXJ2ZXItc2lkZSB2aWEgdGhlIGNhdGFsb2dcbiAgLy8gc3Vic3RpdHV0ZVZhcnMgYWxsb3ctbGlzdC5cbiAgdmFyczoganNvbmIoJ3ZhcnMnKVxuICAgIC4kdHlwZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PigpXG4gICAgLmRlZmF1bHQoe30pXG4gICAgLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgLy8gVGhlIHJlbmRlciBwYXRoIGlzIFwiZmV0Y2ggYWxsIHBhbmVscyBmb3IgZGFzaGJvYXJkIFggaW4gb3JkZXJcIi5cbiAgZGFzaGJvYXJkUG9zaXRpb25JZHg6IGluZGV4KCdkYXNoYm9hcmRfcGFuZWxfZGFzaGJvYXJkX3Bvc2l0aW9uX2lkeCcpXG4gICAgLm9uKHRhYmxlLmRhc2hib2FyZElkLCB0YWJsZS5wb3NpdGlvbiksXG59KSk7XG5cbi8qKlxuICogUGVyLW9yZyBhbGVydCBub3RpZmljYXRpb24gZGVzdGluYXRpb24uIE11bHRpLXRlbmFudCBhbGVydGluZyByb3V0ZXNcbiAqIEFsZXJ0bWFuYWdlciB3ZWJob29rcyB0byB0aGUgcGxhdGZvcm07IHRoZSBwbGF0Zm9ybSBsb29rcyB0aGUgZmlyaW5nXG4gKiBhbGVydCdzIGBvcmdfaWRgIGxhYmVsIHVwIGhlcmUgYW5kIGZvcndhcmRzIHRvIGVhY2ggZW5hYmxlZCBkZXN0aW5hdGlvbi5cbiAqXG4gKiBDaGFubmVscyAqIC0gYHNsYWNrYCAgYHRhcmdldGAgaXMgdGhlIGluY29taW5nLXdlYmhvb2sgVVJMXG4gKiAtIGB3ZWJob29rYCAgYHRhcmdldGAgaXMgYW55IEhUVFBTIFVSTDsgdGhlIHJlbGF5IHBvc3RzIHRoZVxuICogQWxlcnRtYW5hZ2VyIHYyIHdlYmhvb2sgcGF5bG9hZCB2ZXJiYXRpbVxuICogLSBgaW4tYXBwYCAgYHRhcmdldGAgaWdub3JlZDsgc3VyZmFjZXMgYXMgYW4gaW4tYXBwIG1lc3NhZ2UgdmlhXG4gKiB0aGUgZXhpc3RpbmcgYG1lc3NhZ2VzYCB0YWJsZVxuICpcbiAqIFNlY3JldHMgKiAtIEZvciBgc2xhY2tgL2B3ZWJob29rYCBjaGFubmVscywgdGhlIFVSTCBpdHNlbGYgaXMgdGhlIHNlY3JldC4gV2UgZG9uJ3RcbiAqIGxvZyBpdCBvbiBgZGFzaGJvYXJkLnVwZGF0ZWAgb3Igc3VyZmFjZSB0aGUgZnVsbCBVUkwgb24gR0VUIGVuZHBvaW50c1xuICogYWZ0ZXIgd3JpdGU7IGp1c3QgYSBtYXNrZWQgcHJldmlldyAobGFzdCAxMiBjaGFycykuIFN0b3JlZCBpbiBjbGVhclxuICogdGV4dCAgc2FtZSBwb3N0dXJlIGFzIGBjb21wbGlhbmNlX25vdGlmaWNhdGlvbl9wcmVmZXJlbmNlcy53ZWJob29rX3VybGBcbiAqIGFuZCBjb25zaXN0ZW50IHdpdGggdGhlIHJlc3Qgb2YgdGhlIGFwcCdzIHNlY3JldCBoYW5kbGluZyBmb3Igb3JnLWxldmVsXG4gKiBpbnRlZ3JhdGlvbnMuIElmIHdlIGFkZCBhIEtNUy1lbmNyeXB0aW9uIHRpZXIgZm9yIGFueSBzZWNyZXQgY29sdW1uLFxuICogdGhpcyBpcyBvbmUgb2YgdGhlIGZpcnN0IHRvIG1pZ3JhdGUuXG4gKlxuICogQHRhYmxlIG9yZ19hbGVydF9kZXN0aW5hdGlvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IG9yZ0FsZXJ0RGVzdGluYXRpb24gPSBwZ1RhYmxlKCdvcmdfYWxlcnRfZGVzdGluYXRpb25zJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG5cbiAgY3JlYXRlZEJ5OiB0ZXh0KCdjcmVhdGVkX2J5Jykubm90TnVsbCgpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pXG4gICAgLmRlZmF1bHROb3coKVxuICAgIC5ub3ROdWxsKCksXG4gIHVwZGF0ZWRCeTogdGV4dCgndXBkYXRlZF9ieScpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KVxuICAgIC5kZWZhdWx0Tm93KClcbiAgICAubm90TnVsbCgpLFxuXG4gIC8qKiAnc2xhY2snIHwgJ3dlYmhvb2snIHwgJ2luLWFwcCcgIGtlcHQgc3RyaW5nbHkgc28gZnV0dXJlIGNoYW5uZWxzIChQRCxcbiAgICogZW1haWwpIGNhbiBiZSBhZGRlZCB3aXRob3V0IGEgc2NoZW1hIG1pZ3JhdGlvbi4gKi9cbiAgY2hhbm5lbDogdmFyY2hhcignY2hhbm5lbCcsIHsgbGVuZ3RoOiAyMCB9KVxuICAgIC4kdHlwZTwnc2xhY2snIHwgJ3dlYmhvb2snIHwgJ2luLWFwcCc+KClcbiAgICAubm90TnVsbCgpLFxuICAvKiogQ2hhbm5lbC1zcGVjaWZpYyB0YXJnZXQuIFNsYWNrOiB3ZWJob29rIFVSTC4gV2ViaG9vazogSFRUUFMgVVJMLiBJbi1hcHA6IGlnbm9yZWQuICovXG4gIHRhcmdldDogdGV4dCgndGFyZ2V0JykuZGVmYXVsdCgnJykubm90TnVsbCgpLFxuICAvKiogRnJpZW5kbHkgbGFiZWwgc2hvd24gaW4gdGhlIHNldHRpbmdzIFVJLiAqL1xuICBsYWJlbDogdmFyY2hhcignbGFiZWwnLCB7IGxlbmd0aDogMTAwIH0pLm5vdE51bGwoKSxcblxuICAvKiogTG93ZXN0IHNldmVyaXR5IHRoYXQgdHJpZ2dlcnMgdGhpcyBkZXN0aW5hdGlvbiAoJ3dhcm5pbmcnID0gd2FybmluZytjcml0aWNhbCxcbiAgICogJ2NyaXRpY2FsJyA9IGNyaXRpY2FsIG9ubHkpLiBNaXJyb3JzIEFsZXJ0bWFuYWdlciBzZXZlcml0eSBvcmRlcmluZy4gKi9cbiAgbWluU2V2ZXJpdHk6IHZhcmNoYXIoJ21pbl9zZXZlcml0eScsIHsgbGVuZ3RoOiAxMCB9KVxuICAgIC4kdHlwZTwnd2FybmluZycgfCAnY3JpdGljYWwnPigpXG4gICAgLmRlZmF1bHQoJ3dhcm5pbmcnKVxuICAgIC5ub3ROdWxsKCksXG4gIGVuYWJsZWQ6IGJvb2xlYW4oJ2VuYWJsZWQnKS5kZWZhdWx0KHRydWUpLm5vdE51bGwoKSxcblxuICAvKiogU29mdCBkZWxldGUgc28gd2Uga2VlcCBhdWRpdCBoaXN0b3J5IG9mIHdoby1kZWxldGVkLXdoYXQuICovXG4gIGRlbGV0ZWRBdDogdGltZXN0YW1wKCdkZWxldGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGRlbGV0ZWRCeTogdGV4dCgnZGVsZXRlZF9ieScpLFxufSwgKHRhYmxlKSA9PiAoe1xuICAvLyBQZXItb3JnIGxpc3RpbmcgIHRoZSBvbmx5IGFjY2VzcyBwYXRoLlxuICBvcmdJZHg6IGluZGV4KCdvcmdfYWxlcnRfZGVzdGluYXRpb25fb3JnX2lkeCcpXG4gICAgLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5lbmFibGVkKSxcbn0pKTtcblxuLyoqXG4gKiAgUGVyLW9yZyBhbGVydCBydWxlcyBhdXRob3JlZCBieSBvcGVyYXRvcnMuXG4gKlxuICogRWFjaCByb3cgbWF0ZXJpYWxpemVzIGludG8gYSBgZ3JvdXBzW10ucnVsZXNbXWAgZW50cnkgaW4gYSBQcm9tZXRoZXVzXG4gKiBgcnVsZV9maWxlc2AgWUFNTC4gVGhlIG1hdGVyaWFsaXplciBlbmRwb2ludFxuICogYEdFVCAvYXBpL29ic2VydmFiaWxpdHkvYWxlcnQtcnVsZXMvbWF0ZXJpYWxpemVkLnltbGAgcmVuZGVycyBhbGwgZW5hYmxlZFxuICogcnVsZXMgYWNyb3NzIGFsbCBvcmdzIChkZWxldGVkPW51bGwpIGludG8gb25lIGRvY3VtZW50OyBQcm9tZXRoZXVzIHBvbGxzXG4gKiBvciBhIHNpZGVjYXIgY29waWVzIGl0IGludG8gdGhlIHJ1bGVzIGRpci5cbiAqXG4gKiBUZW5hbmN5ICsgc2FmZXR5ICogLSBgZXhwcmAgaXMgdXNlci1hdXRob3JlZCBQcm9tUUwuIFRoZSBDUlVEIHJvdXRlIGVuZm9yY2VzIHRoYXQgdGhlXG4gKiBleHByZXNzaW9uIHN1YnN0cmluZy1jb250YWlucyBgb3JnX2lkPVwiPG9yZ0lkPlwiYCBzbyBhbiBvcGVyYXRvciBjYW4ndFxuICogd3JpdGUgcnVsZXMgdGhhdCBmaXJlIG9uIG90aGVyIG9yZ3MnIG1ldHJpY3MuIFRoaXMgaXMgYSBjb2Fyc2UgZ2F0ZVxuICogKGEgbWFsZm9ybWVkIGV4cHJlc3Npb24gY2FuIHN0aWxsIGJlIHN5bnRhY3RpY2FsbHkgd3JvbmcpIGJ1dCBpdFxuICogY2xvc2VzIHRoZSBjcm9zcy10ZW5hbnQgZGF0YSBsZWFrLiBSZWFsIFByb21RTCBwYXJzaW5nICsgYXV0b21hdGljXG4gKiBvcmdfaWQgaW5qZWN0aW9uIGlzIGEgZm9sbG93LW9uLlxuICogLSBUaGUgbWF0ZXJpYWxpemVkIHJ1bGUgY2FycmllcyBgbGFiZWxzLm9yZ19pZCA9IDxvcmdJZD5gIHNvIHRoZVxuICogYWxlcnRtYW5hZ2VyLXJlbGF5IHJvdXRlcyBmaXJpbmcgYWxlcnRzIHRvIHRoZSByaWdodCBvcmcnc1xuICogZGVzdGluYXRpb25zIChtYXRjaGVzIHRoZSBhbGVydC1yZWxheSBtb2RlbCkuXG4gKlxuICogQHRhYmxlIG9yZ19hbGVydF9ydWxlc1xuICovXG5leHBvcnQgY29uc3Qgb3JnQWxlcnRSdWxlID0gcGdUYWJsZSgnb3JnX2FsZXJ0X3J1bGVzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG5cbiAgY3JlYXRlZEJ5OiB0ZXh0KCdjcmVhdGVkX2J5Jykubm90TnVsbCgpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRCeTogdGV4dCgndXBkYXRlZF9ieScpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuXG4gIC8qKiBPcGVyYXRvci1zdXBwbGllZCBydWxlIG5hbWUuIFNhbml0aXplZCBpbnRvIGEgdmFsaWQgUHJvbSBhbGVydCBuYW1lIGF0XG4gICAqIG1hdGVyaWFsaXphdGlvbiB0aW1lIChiZWNvbWVzIGBPcmdSdWxlXzxvcmdJZD5fPHNsdWc+YCB0byBhdm9pZCBuYW1lXG4gICAqIGNvbGxpc2lvbnMgYWNyb3NzIG9yZ3MpLiAqL1xuICBuYW1lOiB2YXJjaGFyKCduYW1lJywgeyBsZW5ndGg6IDEwMCB9KS5ub3ROdWxsKCksXG4gIC8qKiBQcm9tUUwgZXhwcmVzc2lvbi4gTVVTVCBzdWJzdHJpbmctY29udGFpbiBgb3JnX2lkPVwiPG9yZ0lkPlwiYC4gKi9cbiAgZXhwcjogdGV4dCgnZXhwcicpLm5vdE51bGwoKSxcbiAgLyoqIGBmb3I6IDVtYCBzdHlsZSBkdXJhdGlvbi4gVmFsaWRhdGVkIGFnYWluc3QgUHJvbSdzIGR1cmF0aW9uIHJlZ2V4LiAqL1xuICBmb3JEdXJhdGlvbjogdmFyY2hhcignZm9yX2R1cmF0aW9uJywgeyBsZW5ndGg6IDIwIH0pLmRlZmF1bHQoJzVtJykubm90TnVsbCgpLFxuICAvKiogJ3dhcm5pbmcnIHwgJ2NyaXRpY2FsJyAgbWF0Y2hlcyB0aGUgcGxhdGZvcm0td2lkZSBzZXZlcml0eSBsYWRkZXIuICovXG4gIHNldmVyaXR5OiB2YXJjaGFyKCdzZXZlcml0eScsIHsgbGVuZ3RoOiAyMCB9KVxuICAgIC4kdHlwZTwnd2FybmluZycgfCAnY3JpdGljYWwnPigpXG4gICAgLmRlZmF1bHQoJ3dhcm5pbmcnKVxuICAgIC5ub3ROdWxsKCksXG4gIC8qKiBBbGVydG1hbmFnZXIgYHN1bW1hcnlgIGFubm90YXRpb24uIFN1cHBvcnRzIGB7eyAkdmFsdWUgfX1gLiAqL1xuICBzdW1tYXJ5OiB0ZXh0KCdzdW1tYXJ5Jykubm90TnVsbCgpLFxuICAvKiogQWxlcnRtYW5hZ2VyIGBkZXNjcmlwdGlvbmAgYW5ub3RhdGlvbi4gT3B0aW9uYWw7ICcnIGlzIGZpbmUuICovXG4gIGRlc2NyaXB0aW9uOiB0ZXh0KCdkZXNjcmlwdGlvbicpLmRlZmF1bHQoJycpLm5vdE51bGwoKSxcblxuICAvKiogRGlzYWJsZWQgcnVsZXMgZG9uJ3QgbWF0ZXJpYWxpemUuIExldHMgb3BlcmF0b3JzIHN0YWdlIHJ1bGVzIHdpdGhvdXQgZmlyaW5nLiAqL1xuICBlbmFibGVkOiBib29sZWFuKCdlbmFibGVkJykuZGVmYXVsdCh0cnVlKS5ub3ROdWxsKCksXG5cbiAgLyoqIFNvZnQgZGVsZXRlIHNvIHdlIGtlZXAgYXVkaXQgb2Ygd2hvLWRlbGV0ZWQtd2hhdC4gKi9cbiAgZGVsZXRlZEF0OiB0aW1lc3RhbXAoJ2RlbGV0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgZGVsZXRlZEJ5OiB0ZXh0KCdkZWxldGVkX2J5JyksXG59LCAodGFibGUpID0+ICh7XG4gIC8vIFBlci1vcmcgbGlzdGluZyArIG1hdGVyaWFsaXplcidzIGVuYWJsZWQtb25seSBzY2FuLlxuICBvcmdFbmFibGVkSWR4OiBpbmRleCgnb3JnX2FsZXJ0X3J1bGVfb3JnX2VuYWJsZWRfaWR4JylcbiAgICAub24odGFibGUub3JnSWQsIHRhYmxlLmVuYWJsZWQpLFxuICAvLyBVbmlxdWUgd2l0aGluIGFuIG9yZyBzbyBvcGVyYXRvcnMgY2FuJ3QgYWNjaWRlbnRhbGx5IGNsb25lIGEgcnVsZS5cbiAgb3JnTmFtZVVxOiB1bmlxdWVJbmRleCgnb3JnX2FsZXJ0X3J1bGVfb3JnX25hbWVfdXEnKVxuICAgIC5vbih0YWJsZS5vcmdJZCwgdGFibGUubmFtZSlcbiAgICAud2hlcmUoc3FsYGRlbGV0ZWRfYXQgSVMgTlVMTGApLFxufSkpO1xuXG4vKipcbiAqIENvbXBsZXRlIERyaXp6bGUgc2NoZW1hIGV4cG9ydFxuICovXG5leHBvcnQgY29uc3Qgc2NoZW1hID0ge1xuICBwbHVnaW4sXG4gIHBpcGVsaW5lLFxuICBtZXNzYWdlLFxuICBwaXBlbGluZVJlZ2lzdHJ5LFxuICBwaXBlbGluZUV2ZW50LFxuICAvLyBPYnNlcnZhYmlsaXR5IGRhc2hib2FyZHMgKHVzZXItZWRpdGFibGUgcmVwbGFjZW1lbnQgZm9yIGNvZGUtZGVmaW5lZCBkYXNoYm9hcmRzKVxuICBkYXNoYm9hcmQsXG4gIGRhc2hib2FyZFBhbmVsLFxuICAvLyBQZXItb3JnIGFsZXJ0IG5vdGlmaWNhdGlvbiBkZXN0aW5hdGlvbnMgKG11bHRpLXRlbmFudCBhbGVydGluZylcbiAgb3JnQWxlcnREZXN0aW5hdGlvbixcbiAgLy8gcGVyLW9yZyBvcGVyYXRvci1hdXRob3JlZCBhbGVydCBydWxlcyAgbWF0ZXJpYWxpemVkIGludG8gUHJvbSBZQU1MLlxuICBvcmdBbGVydFJ1bGUsXG4gIC8vIENvbXBsaWFuY2UgdGFibGVzXG4gIGNvbXBsaWFuY2VQb2xpY3ksXG4gIGNvbXBsaWFuY2VSdWxlLFxuICBjb21wbGlhbmNlUnVsZUhpc3RvcnksXG4gIGNvbXBsaWFuY2VBdWRpdExvZyxcbiAgY29tcGxpYW5jZUV4ZW1wdGlvbixcbiAgY29tcGxpYW5jZVJ1bGVTdWJzY3JpcHRpb24sXG4gIGNvbXBsaWFuY2VTY2FuLFxuICBjb21wbGlhbmNlU2NhblNjaGVkdWxlLFxuICBjb21wbGlhbmNlTm90aWZpY2F0aW9uUHJlZmVyZW5jZSxcbiAgY29tcGxpYW5jZU5vdGlmaWNhdGlvbkxvZyxcbiAgY29tcGxpYW5jZVJvbGUsXG4gIGNvbXBsaWFuY2VSZXBvcnQsXG4gIGNvbXBsaWFuY2VSZXBvcnRTY2hlZHVsZSxcbn0gYXMgY29uc3Q7XG5cbi8qKlxuICogVHlwZVNjcmlwdCB0eXBlcyByZXByZXNlbnRpbmcgZGF0YWJhc2Ugcm93c1xuICovXG5leHBvcnQgdHlwZSBQbHVnaW4gPSB0eXBlb2YgcGx1Z2luLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBsdWdpbkluc2VydCA9IHR5cGVvZiBwbHVnaW4uJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBQaXBlbGluZSA9IHR5cGVvZiBwaXBlbGluZS4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBQaXBlbGluZUluc2VydCA9IHR5cGVvZiBwaXBlbGluZS4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIE1lc3NhZ2UgPSB0eXBlb2YgbWVzc2FnZS4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBNZXNzYWdlSW5zZXJ0ID0gdHlwZW9mIG1lc3NhZ2UuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBQaXBlbGluZVJlZ2lzdHJ5ID0gdHlwZW9mIHBpcGVsaW5lUmVnaXN0cnkuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUGlwZWxpbmVSZWdpc3RyeUluc2VydCA9IHR5cGVvZiBwaXBlbGluZVJlZ2lzdHJ5LiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgUGlwZWxpbmVFdmVudCA9IHR5cGVvZiBwaXBlbGluZUV2ZW50LiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBpcGVsaW5lRXZlbnRJbnNlcnQgPSB0eXBlb2YgcGlwZWxpbmVFdmVudC4kaW5mZXJJbnNlcnQ7XG5cbi8vIE9ic2VydmFiaWxpdHkgZGFzaGJvYXJkc1xuZXhwb3J0IHR5cGUgRGFzaGJvYXJkID0gdHlwZW9mIGRhc2hib2FyZC4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBEYXNoYm9hcmRJbnNlcnQgPSB0eXBlb2YgZGFzaGJvYXJkLiRpbmZlckluc2VydDtcbmV4cG9ydCB0eXBlIERhc2hib2FyZFVwZGF0ZSA9IFBhcnRpYWw8T21pdDxEYXNoYm9hcmRJbnNlcnQsICdpZCcgfCAnY3JlYXRlZEF0JyB8ICdjcmVhdGVkQnknPj47XG5cbmV4cG9ydCB0eXBlIERhc2hib2FyZFBhbmVsID0gdHlwZW9mIGRhc2hib2FyZFBhbmVsLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIERhc2hib2FyZFBhbmVsSW5zZXJ0ID0gdHlwZW9mIGRhc2hib2FyZFBhbmVsLiRpbmZlckluc2VydDtcbmV4cG9ydCB0eXBlIERhc2hib2FyZFBhbmVsVXBkYXRlID0gUGFydGlhbDxPbWl0PERhc2hib2FyZFBhbmVsSW5zZXJ0LCAnaWQnPj47XG5cbmV4cG9ydCB0eXBlIE9yZ0FsZXJ0RGVzdGluYXRpb24gPSB0eXBlb2Ygb3JnQWxlcnREZXN0aW5hdGlvbi4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBPcmdBbGVydERlc3RpbmF0aW9uSW5zZXJ0ID0gdHlwZW9mIG9yZ0FsZXJ0RGVzdGluYXRpb24uJGluZmVySW5zZXJ0O1xuZXhwb3J0IHR5cGUgT3JnQWxlcnREZXN0aW5hdGlvblVwZGF0ZSA9IFBhcnRpYWw8T21pdDxPcmdBbGVydERlc3RpbmF0aW9uSW5zZXJ0LCAnaWQnIHwgJ2NyZWF0ZWRBdCcgfCAnY3JlYXRlZEJ5JyB8ICdvcmdJZCc+PjtcblxuLyoqXG4gKiBIZWxwZXIgdHlwZXMgZm9yIHdvcmtpbmcgd2l0aCBwYXJ0aWFsIHVwZGF0ZXNcbiAqL1xuZXhwb3J0IHR5cGUgUGx1Z2luVXBkYXRlID0gUGFydGlhbDxPbWl0PFBsdWdpbkluc2VydCwgJ2lkJyB8ICdjcmVhdGVkQXQnIHwgJ2NyZWF0ZWRCeSc+PjtcbmV4cG9ydCB0eXBlIFBpcGVsaW5lVXBkYXRlID0gUGFydGlhbDxPbWl0PFBpcGVsaW5lSW5zZXJ0LCAnaWQnIHwgJ2NyZWF0ZWRBdCcgfCAnY3JlYXRlZEJ5Jz4+O1xuZXhwb3J0IHR5cGUgTWVzc2FnZVVwZGF0ZSA9IFBhcnRpYWw8T21pdDxNZXNzYWdlSW5zZXJ0LCAnaWQnIHwgJ2NyZWF0ZWRBdCcgfCAnY3JlYXRlZEJ5Jz4+O1xuXG4vLyBDb21wbGlhbmNlIHR5cGVzXG5leHBvcnQgdHlwZSBDb21wbGlhbmNlUG9saWN5ID0gdHlwZW9mIGNvbXBsaWFuY2VQb2xpY3kuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZVBvbGljeUluc2VydCA9IHR5cGVvZiBjb21wbGlhbmNlUG9saWN5LiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZVJ1bGUgPSB0eXBlb2YgY29tcGxpYW5jZVJ1bGUuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZVJ1bGVJbnNlcnQgPSB0eXBlb2YgY29tcGxpYW5jZVJ1bGUuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBDb21wbGlhbmNlUnVsZUhpc3RvcnkgPSB0eXBlb2YgY29tcGxpYW5jZVJ1bGVIaXN0b3J5LiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIENvbXBsaWFuY2VSdWxlSGlzdG9yeUluc2VydCA9IHR5cGVvZiBjb21wbGlhbmNlUnVsZUhpc3RvcnkuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBDb21wbGlhbmNlQXVkaXRMb2cgPSB0eXBlb2YgY29tcGxpYW5jZUF1ZGl0TG9nLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIENvbXBsaWFuY2VBdWRpdExvZ0luc2VydCA9IHR5cGVvZiBjb21wbGlhbmNlQXVkaXRMb2cuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBDb21wbGlhbmNlRXhlbXB0aW9uID0gdHlwZW9mIGNvbXBsaWFuY2VFeGVtcHRpb24uJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZUV4ZW1wdGlvbkluc2VydCA9IHR5cGVvZiBjb21wbGlhbmNlRXhlbXB0aW9uLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZVJ1bGVTdWJzY3JpcHRpb24gPSB0eXBlb2YgY29tcGxpYW5jZVJ1bGVTdWJzY3JpcHRpb24uJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgQ29tcGxpYW5jZVJ1bGVTdWJzY3JpcHRpb25JbnNlcnQgPSB0eXBlb2YgY29tcGxpYW5jZVJ1bGVTdWJzY3JpcHRpb24uJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBDb21wbGlhbmNlU2NhbiA9IHR5cGVvZiBjb21wbGlhbmNlU2Nhbi4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBDb21wbGlhbmNlU2Nhbkluc2VydCA9IHR5cGVvZiBjb21wbGlhbmNlU2Nhbi4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIENvbXBsaWFuY2VTY2FuU2NoZWR1bGUgPSB0eXBlb2YgY29tcGxpYW5jZVNjYW5TY2hlZHVsZS4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBDb21wbGlhbmNlU2NhblNjaGVkdWxlSW5zZXJ0ID0gdHlwZW9mIGNvbXBsaWFuY2VTY2FuU2NoZWR1bGUuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBDb21wbGlhbmNlTm90aWZpY2F0aW9uUHJlZmVyZW5jZSA9IHR5cGVvZiBjb21wbGlhbmNlTm90aWZpY2F0aW9uUHJlZmVyZW5jZS4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBDb21wbGlhbmNlTm90aWZpY2F0aW9uUHJlZmVyZW5jZUluc2VydCA9IHR5cGVvZiBjb21wbGlhbmNlTm90aWZpY2F0aW9uUHJlZmVyZW5jZS4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIENvbXBsaWFuY2VOb3RpZmljYXRpb25Mb2cgPSB0eXBlb2YgY29tcGxpYW5jZU5vdGlmaWNhdGlvbkxvZy4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBDb21wbGlhbmNlTm90aWZpY2F0aW9uTG9nSW5zZXJ0ID0gdHlwZW9mIGNvbXBsaWFuY2VOb3RpZmljYXRpb25Mb2cuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBDb21wbGlhbmNlUm9sZSA9IHR5cGVvZiBjb21wbGlhbmNlUm9sZS4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBDb21wbGlhbmNlUm9sZUluc2VydCA9IHR5cGVvZiBjb21wbGlhbmNlUm9sZS4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIENvbXBsaWFuY2VSZXBvcnQgPSB0eXBlb2YgY29tcGxpYW5jZVJlcG9ydC4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBDb21wbGlhbmNlUmVwb3J0SW5zZXJ0ID0gdHlwZW9mIGNvbXBsaWFuY2VSZXBvcnQuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBDb21wbGlhbmNlUmVwb3J0U2NoZWR1bGUgPSB0eXBlb2YgY29tcGxpYW5jZVJlcG9ydFNjaGVkdWxlLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIENvbXBsaWFuY2VSZXBvcnRTY2hlZHVsZUluc2VydCA9IHR5cGVvZiBjb21wbGlhbmNlUmVwb3J0U2NoZWR1bGUuJGluZmVySW5zZXJ0O1xuIl19
|