@pipeline-builder/pipeline-data 4.1.34 → 4.1.36
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.
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* Pure functions over the stored row — no I/O — so the same rules run in the
|
|
8
8
|
* resolver, in the policy-update route, and in tests.
|
|
9
9
|
*/
|
|
10
|
-
import { type BlockedListingRef, type BlockOnAdvisory, type OfficialInstalls, type PluginInstallPolicy, type PublisherTier } from '../database/drizzle-schema.js';
|
|
10
|
+
import { type BlockedListingRef, type BlockOnAdvisory, type OfficialInstalls, type ShadowingMode, type PluginInstallPolicy, type PublisherTier } from '../database/drizzle-schema.js';
|
|
11
11
|
/** An org's consumption policy, as the resolver applies it. */
|
|
12
12
|
export interface ConsumptionPolicy {
|
|
13
13
|
allowedTiers: PublisherTier[];
|
|
@@ -15,6 +15,8 @@ export interface ConsumptionPolicy {
|
|
|
15
15
|
secretsAllowedTiers: PublisherTier[];
|
|
16
16
|
blockOnAdvisory: BlockOnAdvisory;
|
|
17
17
|
officialInstalls: OfficialInstalls;
|
|
18
|
+
/** What to do when a name overrides a listing or the parent org's plugin. */
|
|
19
|
+
shadowing: ShadowingMode;
|
|
18
20
|
blockedListings: BlockedListingRef[];
|
|
19
21
|
}
|
|
20
22
|
/** The defaults (and the column defaults of `plugin_install_policies`). */
|
|
@@ -17,11 +17,17 @@ export const DEFAULT_CONSUMPTION_POLICY = Object.freeze({
|
|
|
17
17
|
secretsAllowedTiers: ['official', 'verified'],
|
|
18
18
|
blockOnAdvisory: 'critical',
|
|
19
19
|
officialInstalls: 'implicit',
|
|
20
|
+
// `warn`, not `deny`: shadowing is legitimate (an org overriding an Official
|
|
21
|
+
// plugin on purpose), so the default makes it visible without breaking a
|
|
22
|
+
// deployment that already relies on it. `deny` is the opt-in.
|
|
23
|
+
shadowing: 'warn',
|
|
20
24
|
blockedListings: [],
|
|
21
25
|
});
|
|
22
26
|
/** At most this many blocked listings per policy. */
|
|
23
27
|
export const MAX_BLOCKED_LISTINGS = 500;
|
|
24
28
|
const BLOCK_ORDER = ['never', 'critical', 'high'];
|
|
29
|
+
/** Increasing strictness, so the merge can take the greater of two. */
|
|
30
|
+
const SHADOW_ORDER = ['allow', 'warn', 'deny'];
|
|
25
31
|
const sortTiers = (tiers) => PUBLISHER_TIERS.filter((t) => new Set(tiers).has(t));
|
|
26
32
|
const listingKey = (r) => `${r.publisher}/${r.name}`;
|
|
27
33
|
function uniqueListings(refs) {
|
|
@@ -38,6 +44,7 @@ export function policyOf(row) {
|
|
|
38
44
|
requireApprovalTiers: sortTiers(row?.requireApprovalTiers ?? d.requireApprovalTiers),
|
|
39
45
|
secretsAllowedTiers: sortTiers(row?.secretsAllowedTiers ?? d.secretsAllowedTiers),
|
|
40
46
|
blockOnAdvisory: row?.blockOnAdvisory ?? d.blockOnAdvisory,
|
|
47
|
+
shadowing: row?.shadowing ?? d.shadowing,
|
|
41
48
|
officialInstalls: row?.officialInstalls ?? d.officialInstalls,
|
|
42
49
|
blockedListings: uniqueListings(row?.blockedListings ?? d.blockedListings),
|
|
43
50
|
};
|
|
@@ -57,6 +64,10 @@ export function mergeConsumptionPolicies(root, team) {
|
|
|
57
64
|
secretsAllowedTiers: intersect(root.secretsAllowedTiers, team.secretsAllowedTiers),
|
|
58
65
|
blockOnAdvisory: stricterBlock,
|
|
59
66
|
officialInstalls: root.officialInstalls === 'explicit' || team.officialInstalls === 'explicit' ? 'explicit' : 'implicit',
|
|
67
|
+
// Stricter of the two wins, like every other field here: a team must not be
|
|
68
|
+
// able to loosen a root that chose `deny`, which is the whole point of the
|
|
69
|
+
// setting — the team is the party doing the shadowing.
|
|
70
|
+
shadowing: SHADOW_ORDER.indexOf(root.shadowing) >= SHADOW_ORDER.indexOf(team.shadowing) ? root.shadowing : team.shadowing,
|
|
60
71
|
blockedListings: uniqueListings([...root.blockedListings, ...team.blockedListings]),
|
|
61
72
|
};
|
|
62
73
|
}
|
|
@@ -130,4 +141,4 @@ export function applyPolicyUpdate(base, input) {
|
|
|
130
141
|
}
|
|
131
142
|
return next;
|
|
132
143
|
}
|
|
133
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWNvbnN1bXB0aW9uLXBvbGljeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvcGx1Z2luLWNvbnN1bXB0aW9uLXBvbGljeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQU1MLGVBQWUsR0FDaEIsTUFBTSwrQkFBK0IsQ0FBQztBQWF2QywyRUFBMkU7QUFDM0UsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQWdDLE1BQU0sQ0FBQyxNQUFNLENBQW9CO0lBQ3RHLFlBQVksRUFBRSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUM7SUFDdEMsb0JBQW9CLEVBQUUsQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDO0lBQ2pELG1CQUFtQixFQUFFLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQztJQUM3QyxlQUFlLEVBQUUsVUFBVTtJQUMzQixnQkFBZ0IsRUFBRSxVQUFVO0lBQzVCLGVBQWUsRUFBRSxFQUFFO0NBQ3BCLENBQUMsQ0FBQztBQUVILHFEQUFxRDtBQUNyRCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLENBQUM7QUFFeEMsTUFBTSxXQUFXLEdBQStCLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUU5RSxNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQThCLEVBQW1CLEVBQUUsQ0FDcEUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFdkQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFvQixFQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBRWhGLFNBQVMsY0FBYyxDQUFDLElB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QUFLLFFBQVE7bUJBQ3hFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUMvRCxPQUFPLHdFQUF3RSxDQUFDO1lBQ2xGLENBQUM7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogQW4gb3JnJ3MgcGx1Z2luIENPTlNVTVBUSU9OIFBPTElDWTogd2hpY2ggcHVibGlzaGVyIHRpZXJzIGl0IHRydXN0cywgd2hpY2hcbiAqIGxpc3RpbmdzIGl0IGJsb2Nrcywgd2hpY2ggYWR2aXNvcnkgc2V2ZXJpdGllcyBibG9jayBhIHJlc29sdXRpb24sIGFuZCB3aGljaFxuICogdGllcnMgbWF5IHJlY2VpdmUgc2VjcmV0cy4gQXBwbGllZCBhdCBldmVyeSByZXNvbHV0aW9uIChzZWVcbiAqIC4vcGx1Z2luLXJlc29sdXRpb24udHMpIGFuZCBlZGl0ZWQgdGhyb3VnaCB0aGUgb3JnJ3MgcG9saWN5IHJvdy5cbiAqXG4gKiBQdXJlIGZ1bmN0aW9ucyBvdmVyIHRoZSBzdG9yZWQgcm93IOKAlCBubyBJL08g4oCUIHNvIHRoZSBzYW1lIHJ1bGVzIHJ1biBpbiB0aGVcbiAqIHJlc29sdmVyLCBpbiB0aGUgcG9saWN5LXVwZGF0ZSByb3V0ZSwgYW5kIGluIHRlc3RzLlxuICovXG5cbmltcG9ydCB7XG4gIHR5cGUgQmxvY2tlZExpc3RpbmdSZWYsXG4gIHR5cGUgQmxvY2tPbkFkdmlzb3J5LFxuICB0eXBlIE9mZmljaWFsSW5zdGFsbHMsXG4gIHR5cGUgUGx1Z2luSW5zdGFsbFBvbGljeSxcbiAgdHlwZSBQdWJsaXNoZXJUaWVyLFxuICBQVUJMSVNIRVJfVElFUlMsXG59IGZyb20gJy4uL2RhdGFiYXNlL2RyaXp6bGUtc2NoZW1hLmpzJztcblxuXG4vKiogQW4gb3JnJ3MgY29uc3VtcHRpb24gcG9saWN5LCBhcyB0aGUgcmVzb2x2ZXIgYXBwbGllcyBpdC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3VtcHRpb25Qb2xpY3kge1xuICBhbGxvd2VkVGllcnM6IFB1Ymxpc2hlclRpZXJbXTtcbiAgcmVxdWlyZUFwcHJvdmFsVGllcnM6IFB1Ymxpc2hlclRpZXJbXTtcbiAgc2VjcmV0c0FsbG93ZWRUaWVyczogUHVibGlzaGVyVGllcltdO1xuICBibG9ja09uQWR2aXNvcnk6IEJsb2NrT25BZHZpc29yeTtcbiAgb2ZmaWNpYWxJbnN0YWxsczogT2ZmaWNpYWxJbnN0YWxscztcbiAgYmxvY2tlZExpc3RpbmdzOiBCbG9ja2VkTGlzdGluZ1JlZltdO1xufVxuXG4vKiogVGhlIGRlZmF1bHRzIChhbmQgdGhlIGNvbHVtbiBkZWZhdWx0cyBvZiBgcGx1Z2luX2luc3RhbGxfcG9saWNpZXNgKS4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0NPTlNVTVBUSU9OX1BPTElDWTogUmVhZG9ubHk8Q29uc3VtcHRpb25Qb2xpY3k+ID0gT2JqZWN0LmZyZWV6ZTxDb25zdW1wdGlvblBvbGljeT4oe1xuICBhbGxvd2VkVGllcnM6IFsnb2ZmaWNpYWwnLCAndmVyaWZpZWQnXSxcbiAgcmVxdWlyZUFwcHJvdmFsVGllcnM6IFsnY29tbXVuaXR5JywgJ3VudmVyaWZpZWQnXSxcbiAgc2VjcmV0c0FsbG93ZWRUaWVyczogWydvZmZpY2lhbCcsICd2ZXJpZmllZCddLFxuICBibG9ja09uQWR2aXNvcnk6ICdjcml0aWNhbCcsXG4gIG9mZmljaWFsSW5zdGFsbHM6ICdpbXBsaWNpdCcsXG4gIGJsb2NrZWRMaXN0aW5nczogW10sXG59KTtcblxuLyoqIEF0IG1vc3QgdGhpcyBtYW55IGJsb2NrZWQgbGlzdGluZ3MgcGVyIHBvbGljeS4gKi9cbmV4cG9ydCBjb25zdCBNQVhfQkxPQ0tFRF9MSVNUSU5HUyA9IDUwMDtcblxuY29uc3QgQkxPQ0tfT1JERVI6IHJlYWRvbmx5IEJsb2NrT25BZHZpc29yeVtdID0gWyduZXZlcicsICdjcml0aWNhbCcsICdoaWdoJ107XG5cbmNvbnN0IHNvcnRUaWVycyA9ICh0aWVyczogSXRlcmFibGU8UHVibGlzaGVyVGllcj4pOiBQdWJsaXNoZXJUaWVyW10gPT5cbiAgUFVCTElTSEVSX1RJRVJTLmZpbHRlcigodCkgPT4gbmV3IFNldCh0aWVycykuaGFzKHQpKTtcblxuY29uc3QgbGlzdGluZ0tleSA9IChyOiBCbG9ja2VkTGlzdGluZ1JlZik6IHN0cmluZyA9PiBgJHtyLnB1Ymxpc2hlcn0vJHtyLm5hbWV9YDtcblxuZnVuY3Rpb24gdW5pcXVlTGlzdGluZ3MocmVmczogcmVhZG9ubHkgQmxvY2tlZExpc3RpbmdSZWZbXSk6IEJsb2NrZWRMaXN0aW5nUmVmW10ge1xuICBjb25zdCBzZWVuID0gbmV3IE1hcDxzdHJpbmcsIEJsb2NrZWRMaXN0aW5nUmVmPigpO1xuICBmb3IgKGNvbnN0IHIgb2YgcmVmcykgc2Vlbi5zZXQobGlzdGluZ0tleShyKSwgeyBwdWJsaXNoZXI6IHIucHVibGlzaGVyLCBuYW1lOiByLm5hbWUgfSk7XG4gIHJldHVybiBbLi4uc2Vlbi52YWx1ZXMoKV0uc29ydCgoYSwgYikgPT4gbGlzdGluZ0tleShhKS5sb2NhbGVDb21wYXJlKGxpc3RpbmdLZXkoYikpKTtcbn1cblxuLyoqIEEgc3RvcmVkIHBvbGljeSByb3cgKG9yIG5vbmUpIGFzIGEge0BsaW5rIENvbnN1bXB0aW9uUG9saWN5fS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwb2xpY3lPZihyb3c6IFBhcnRpYWw8UGx1Z2luSW5zdGFsbFBvbGljeT4gfCBudWxsIHwgdW5kZWZpbmVkKTogQ29uc3VtcHRpb25Qb2xpY3kge1xuICBjb25zdCBkID0gREVGQVVMVF9DT05TVU1QVElPTl9QT0xJQ1k7XG4gIHJldHVybiB7XG4gICAgYWxsb3dlZFRpZXJzOiBzb3J0VGllcnMocm93Py5hbGxvd2VkVGllcnMgPz8gZC5hbGxvd2VkVGllcnMpLFxuICAgIHJlcXVpcmVBcHByb3ZhbFRpZXJzOiBzb3J0VGllcnMocm93Py5yZXF1aXJlQXBwcm92YWxUaWVycyA/PyBkLnJlcXVpcmVBcHByb3ZhbFRpZXJzKSxcbiAgICBzZWNyZXRzQWxsb3dlZFRpZXJzOiBzb3J0VGllcnMocm93Py5zZWNyZXRzQWxsb3dlZFRpZXJzID8/IGQuc2VjcmV0c0FsbG93ZWRUaWVycyksXG4gICAgYmxvY2tPbkFkdmlzb3J5OiByb3c/LmJsb2NrT25BZHZpc29yeSA/PyBkLmJsb2NrT25BZHZpc29yeSxcbiAgICBvZmZpY2lhbEluc3RhbGxzOiByb3c/Lm9mZmljaWFsSW5zdGFsbHMgPz8gZC5vZmZpY2lhbEluc3RhbGxzLFxuICAgIGJsb2NrZWRMaXN0aW5nczogdW5pcXVlTGlzdGluZ3Mocm93Py5ibG9ja2VkTGlzdGluZ3MgPz8gZC5ibG9ja2VkTGlzdGluZ3MpLFxuICB9O1xufVxuXG4vKipcbiAqIEEgdGVhbSdzIHBvbGljeSB1bmRlciBpdHMgcm9vdCBvcmcnczogZWFjaCBmaWVsZCB0YWtlcyB0aGUgU1RSSUNURVIgb2ZcbiAqIHRoZSB0d28sIHNvIGEgdGVhbSBjYW4gbmFycm93IHdoYXQgaXRzIHJvb3QgYWxsb3dzIGJ1dCBuZXZlciB3aWRlbiBpdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlQ29uc3VtcHRpb25Qb2xpY2llcyhyb290OiBDb25zdW1wdGlvblBvbGljeSwgdGVhbTogQ29uc3VtcHRpb25Qb2xpY3kpOiBDb25zdW1wdGlvblBvbGljeSB7XG4gIGNvbnN0IGludGVyc2VjdCA9IChhOiBQdWJsaXNoZXJUaWVyW10sIGI6IFB1Ymxpc2hlclRpZXJbXSkgPT4gc29ydFRpZXJzKGEuZmlsdGVyKCh0KSA9PiBiLmluY2x1ZGVzKHQpKSk7XG4gIGNvbnN0IHVuaW9uID0gKGE6IFB1Ymxpc2hlclRpZXJbXSwgYjogUHVibGlzaGVyVGllcltdKSA9PiBzb3J0VGllcnMoWy4uLmEsIC4uLmJdKTtcbiAgY29uc3Qgc3RyaWN0ZXJCbG9jayA9IEJMT0NLX09SREVSLmluZGV4T2Yocm9vdC5ibG9ja09uQWR2aXNvcnkpID49IEJMT0NLX09SREVSLmluZGV4T2YodGVhbS5ibG9ja09uQWR2aXNvcnkpXG4gICAgPyByb290LmJsb2NrT25BZHZpc29yeSA6IHRlYW0uYmxvY2tPbkFkdmlzb3J5O1xuICByZXR1cm4ge1xuICAgIGFsbG93ZWRUaWVyczogaW50ZXJzZWN0KHJvb3QuYWxsb3dlZFRpZXJzLCB0ZWFtLmFsbG93ZWRUaWVycyksXG4gICAgcmVxdWlyZUFwcHJvdmFsVGllcnM6IHVuaW9uKHJvb3QucmVxdWlyZUFwcHJvdmFsVGllcnMsIHRlYW0ucmVxdWlyZUFwcHJvdmFsVGllcnMpLFxuICAgIHNlY3JldHNBbGxvd2VkVGllcnM6IGludGVyc2VjdChyb290LnNlY3JldHNBbGxvd2VkVGllcnMsIHRlYW0uc2VjcmV0c0FsbG93ZWRUaWVycyksXG4gICAgYmxvY2tPbkFkdmlzb3J5OiBzdHJpY3RlckJsb2NrLFxuICAgIG9mZmljaWFsSW5zdGFsbHM6IHJvb3Qub2ZmaWNpYWxJbnN0YWxscyA9PT0gJ2V4cGxpY2l0JyB8fCB0ZWFtLm9mZmljaWFsSW5zdGFsbHMgPT09ICdleHBsaWNpdCcgPyAnZXhwbGljaXQnIDogJ2ltcGxpY2l0JyxcbiAgICBibG9ja2VkTGlzdGluZ3M6IHVuaXF1ZUxpc3RpbmdzKFsuLi5yb290LmJsb2NrZWRMaXN0aW5ncywgLi4udGVhbS5ibG9ja2VkTGlzdGluZ3NdKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBUaGUgcG9saWN5IGFuIG9yZydzIHJlc29sdXRpb24gcnVucyB1bmRlci4gQSByb290IG9yZzogaXRzIG93biByb3cgKG9yIHRoZVxuICogZGVmYXVsdHMpLiBBIHRlYW0gKGByb290T3JnSWRgIHNldCk6IGl0cyByb290J3MgcG9saWN5LCBtZXJnZWQgd2l0aCB0aGVcbiAqIHRlYW0ncyBvd24gcm93IHdoZW4gaXQgaGFzIG9uZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVmZmVjdGl2ZUNvbnN1bXB0aW9uUG9saWN5KFxuICByb3dzOiBSZWFkb25seUFycmF5PFBhcnRpYWw8UGx1Z2luSW5zdGFsbFBvbGljeT4gJiB7IG9yZ0lkPzogc3RyaW5nIH0+LFxuICBvcmdJZDogc3RyaW5nLFxuICByb290T3JnSWQ/OiBzdHJpbmcsXG4pOiBDb25zdW1wdGlvblBvbGljeSB7XG4gIGNvbnN0IG93biA9IHJvd3MuZmluZCgocikgPT4gci5vcmdJZCA9PT0gb3JnSWQpID8/IG51bGw7XG4gIGlmICghcm9vdE9yZ0lkIHx8IHJvb3RPcmdJZCA9PT0gb3JnSWQpIHJldHVybiBwb2xpY3lPZihvd24pO1xuICBjb25zdCByb290ID0gcG9saWN5T2Yocm93cy5maW5kKChyKSA9PiByLm9yZ0lkID09PSByb290T3JnSWQpID8/IG51bGwpO1xuICByZXR1cm4gb3duID8gbWVyZ2VDb25zdW1wdGlvblBvbGljaWVzKHJvb3QsIHBvbGljeU9mKG93bikpIDogcm9vdDtcbn1cblxuY29uc3QgSEFORExFX1JFID0gL15bYS16MC05XSsoPzotW2EtejAtOV0rKSokLztcbmNvbnN0IE5BTUVfUkUgPSAvXlthLXowLTldW2EtejAtOS5fLV0qJC87XG5cbmZ1bmN0aW9uIHRpZXJMaXN0KHY6IHVua25vd24sIGZpZWxkOiBzdHJpbmcpOiBQdWJsaXNoZXJUaWVyW10gfCBzdHJpbmcge1xuICBpZiAoIUFycmF5LmlzQXJyYXkodikpIHJldHVybiBgJHtmaWVsZH0gbXVzdCBiZSBhbiBhcnJheSBvZiB0aWVyc2A7XG4gIGNvbnN0IGJhZCA9IHYuZmlsdGVyKCh0KSA9PiAhKFBVQkxJU0hFUl9USUVSUyBhcyByZWFkb25seSB1bmtub3duW10pLmluY2x1ZGVzKHQpKTtcbiAgaWYgKGJhZC5sZW5ndGgpIHJldHVybiBgJHtmaWVsZH0gaGFzIHVua25vd24gdGllcnM6ICR7YmFkLm1hcChTdHJpbmcpLmpvaW4oJywgJyl9YDtcbiAgcmV0dXJuIHNvcnRUaWVycyh2IGFzIFB1Ymxpc2hlclRpZXJbXSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGUgYSAocGFydGlhbCkgcG9saWN5IHVwZGF0ZSBvdmVyIGBiYXNlYC4gUmV0dXJucyB0aGUgZnVsbCBuZXcgcG9saWN5LFxuICogb3IgYW4gZXJyb3IgbWVzc2FnZS4gYGJsb2NrZWRMaXN0aW5nc2AgZW50cmllcyBhcmUgYHsgcHVibGlzaGVyLCBuYW1lIH1gIG9yXG4gKiBgXCJwdWJsaXNoZXIvbmFtZVwiYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UG9saWN5VXBkYXRlKGJhc2U6IENvbnN1bXB0aW9uUG9saWN5LCBpbnB1dDogdW5rbm93bik6IENvbnN1bXB0aW9uUG9saWN5IHwgc3RyaW5nIHtcbiAgaWYgKCFpbnB1dCB8fCB0eXBlb2YgaW5wdXQgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkoaW5wdXQpKSByZXR1cm4gJ2JvZHkgbXVzdCBiZSBhbiBvYmplY3QnO1xuICBjb25zdCBiID0gaW5wdXQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IG5leHQ6IENvbnN1bXB0aW9uUG9saWN5ID0geyAuLi5iYXNlIH07XG4gIGZvciAoY29uc3QgZmllbGQgb2YgWydhbGxvd2VkVGllcnMnLCAncmVxdWlyZUFwcHJvdmFsVGllcnMnLCAnc2VjcmV0c0FsbG93ZWRUaWVycyddIGFzIGNvbnN0KSB7XG4gICAgaWYgKGJbZmllbGRdID09PSB1bmRlZmluZWQpIGNvbnRpbnVlO1xuICAgIGNvbnN0IHRpZXJzID0gdGllckxpc3QoYltmaWVsZF0sIGZpZWxkKTtcbiAgICBpZiAodHlwZW9mIHRpZXJzID09PSAnc3RyaW5nJykgcmV0dXJuIHRpZXJzO1xuICAgIG5leHRbZmllbGRdID0gdGllcnM7XG4gIH1cbiAgaWYgKGIuYmxvY2tPbkFkdmlzb3J5ICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoIUJMT0NLX09SREVSLmluY2x1ZGVzKGIuYmxvY2tPbkFkdmlzb3J5IGFzIEJsb2NrT25BZHZpc29yeSkpIHJldHVybiAnYmxvY2tPbkFkdmlzb3J5IG11c3QgYmUgY3JpdGljYWwsIGhpZ2ggb3IgbmV2ZXInO1xuICAgIG5leHQuYmxvY2tPbkFkdmlzb3J5ID0gYi5ibG9ja09uQWR2aXNvcnkgYXMgQmxvY2tPbkFkdmlzb3J5O1xuICB9XG4gIGlmIChiLm9mZmljaWFsSW5zdGFsbHMgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmIChiLm9mZmljaWFsSW5zdGFsbHMgIT09ICdpbXBsaWNpdCcgJiYgYi5vZmZpY2lhbEluc3RhbGxzICE9PSAnZXhwbGljaXQnKSByZXR1cm4gJ29mZmljaWFsSW5zdGFsbHMgbXVzdCBiZSBpbXBsaWNpdCBvciBleHBsaWNpdCc7XG4gICAgbmV4dC5vZmZpY2lhbEluc3RhbGxzID0gYi5vZmZpY2lhbEluc3RhbGxzO1xuICB9XG4gIGlmIChiLmJsb2NrZWRMaXN0aW5ncyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGIuYmxvY2tlZExpc3RpbmdzKSkgcmV0dXJuICdibG9ja2VkTGlzdGluZ3MgbXVzdCBiZSBhbiBhcnJheSc7XG4gICAgaWYgKGIuYmxvY2tlZExpc3RpbmdzLmxlbmd0aCA+IE1BWF9CTE9DS0VEX0xJU1RJTkdTKSByZXR1cm4gYGF0IG1vc3QgJHtNQVhfQkxPQ0tFRF9MSVNUSU5HU30gYmxvY2tlZCBsaXN0aW5nc2A7XG4gICAgY29uc3QgcmVmczogQmxvY2tlZExpc3RpbmdSZWZbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgcmF3IG9mIGIuYmxvY2tlZExpc3RpbmdzKSB7XG4gICAgICBjb25zdCByZWYgPSB0eXBlb2YgcmF3ID09PSAnc3RyaW5nJ1xuICAgICAgICA/ICgoKSA9PiB7IGNvbnN0IFtwdWJsaXNoZXIsIG5hbWUsIGV4dHJhXSA9IHJhdy5zcGxpdCgnLycpOyByZXR1cm4gZXh0cmEgPT09IHVuZGVmaW5lZCA/IHsgcHVibGlzaGVyLCBuYW1lIH0gOiBudWxsOyB9KSgpXG4gICAgICAgIDogcmF3ICYmIHR5cGVvZiByYXcgPT09ICdvYmplY3QnID8geyBwdWJsaXNoZXI6IChyYXcgYXMgQmxvY2tlZExpc3RpbmdSZWYpLnB1Ymxpc2hlciwgbmFtZTogKHJhdyBhcyBCbG9ja2VkTGlzdGluZ1JlZikubmFtZSB9IDogbnVsbDtcbiAgICAgIGlmICghcmVmIHx8IHR5cGVvZiByZWYucHVibGlzaGVyICE9PSAnc3RyaW5nJyB8fCB0eXBlb2YgcmVmLm5hbWUgIT09ICdzdHJpbmcnXG4gICAgICAgIHx8ICFIQU5ETEVfUkUudGVzdChyZWYucHVibGlzaGVyKSB8fCAhTkFNRV9SRS50ZXN0KHJlZi5uYW1lKSkge1xuICAgICAgICByZXR1cm4gJ2VhY2ggYmxvY2tlZCBsaXN0aW5nIG11c3QgYmUgeyBwdWJsaXNoZXIsIG5hbWUgfSAob3IgXCJwdWJsaXNoZXIvbmFtZVwiKSc7XG4gICAgICB9XG4gICAgICByZWZzLnB1c2goeyBwdWJsaXNoZXI6IHJlZi5wdWJsaXNoZXIsIG5hbWU6IHJlZi5uYW1lIH0pO1xuICAgIH1cbiAgICBuZXh0LmJsb2NrZWRMaXN0aW5ncyA9IHVuaXF1ZUxpc3RpbmdzKHJlZnMpO1xuICB9XG4gIHJldHVybiBuZXh0O1xufVxuIl19
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWNvbnN1bXB0aW9uLXBvbGljeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvcGx1Z2luLWNvbnN1bXB0aW9uLXBvbGljeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQU9MLGVBQWUsR0FDaEIsTUFBTSwrQkFBK0IsQ0FBQztBQWV2QywyRUFBMkU7QUFDM0UsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQWdDLE1BQU0sQ0FBQyxNQUFNLENBQW9CO0lBQ3RHLFlBQVksRUFBRSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUM7SUFDdEMsb0JBQW9CLEVBQUUsQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDO0lBQ2pELG1CQUFtQixFQUFFLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQztJQUM3QyxlQUFlLEVBQUUsVUFBVTtJQUMzQixnQkFBZ0IsRUFBRSxVQUFVO0lBQzVCLDZFQUE2RTtJQUM3RSx5RUFBeUU7SUFDekUsOERBQThEO0lBQzlELFNBQVMsRUFBRSxNQUFNO0lBQ2pCLGVBQWUsRUFBRSxFQUFFO0NBQ3BCLENBQUMsQ0FBQztBQUVILHFEQUFxRDtBQUNyRCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLENBQUM7QUFFeEMsTUFBTSxXQUFXLEdBQStCLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM5RSx1RUFBdUU7QUFDdkUsTUFBTSxZQUFZLEdBQTZCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUV6RSxNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQThCLEVBQW1CLEVBQUUsQ0FDcEUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMs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R0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pILENBQUMsQ0FBQyxHQUFHLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRyxHQUF5QixDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUcsR0FBeUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ3ZJLElBQUksQ0FBQyxHQUFHLElBQUksT0FBTyxHQUFHLENBQUMsU0FBUyxLQUFLLFFBQVEsSUFBSSxPQUFPLEdBQUcsQ0FBQyxJQUFJLEtBQUssUUFBUTttQkFDeEUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQy9ELE9BQU8sd0VBQXdFLENBQUM7WUFDbEYsQ0FBQztZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDMUQsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBBbiBvcmcncyBwbHVnaW4gQ09OU1VNUFRJT04gUE9MSUNZOiB3aGljaCBwdWJsaXNoZXIgdGllcnMgaXQgdHJ1c3RzLCB3aGljaFxuICogbGlzdGluZ3MgaXQgYmxvY2tzLCB3aGljaCBhZHZpc29yeSBzZXZlcml0aWVzIGJsb2NrIGEgcmVzb2x1dGlvbiwgYW5kIHdoaWNoXG4gKiB0aWVycyBtYXkgcmVjZWl2ZSBzZWNyZXRzLiBBcHBsaWVkIGF0IGV2ZXJ5IHJlc29sdXRpb24gKHNlZVxuICogLi9wbHVnaW4tcmVzb2x1dGlvbi50cykgYW5kIGVkaXRlZCB0aHJvdWdoIHRoZSBvcmcncyBwb2xpY3kgcm93LlxuICpcbiAqIFB1cmUgZnVuY3Rpb25zIG92ZXIgdGhlIHN0b3JlZCByb3cg4oCUIG5vIEkvTyDigJQgc28gdGhlIHNhbWUgcnVsZXMgcnVuIGluIHRoZVxuICogcmVzb2x2ZXIsIGluIHRoZSBwb2xpY3ktdXBkYXRlIHJvdXRlLCBhbmQgaW4gdGVzdHMuXG4gKi9cblxuaW1wb3J0IHtcbiAgdHlwZSBCbG9ja2VkTGlzdGluZ1JlZixcbiAgdHlwZSBCbG9ja09uQWR2aXNvcnksXG4gIHR5cGUgT2ZmaWNpYWxJbnN0YWxscyxcbiAgdHlwZSBTaGFkb3dpbmdNb2RlLFxuICB0eXBlIFBsdWdpbkluc3RhbGxQb2xpY3ksXG4gIHR5cGUgUHVibGlzaGVyVGllcixcbiAgUFVCTElTSEVSX1RJRVJTLFxufSBmcm9tICcuLi9kYXRhYmFzZS9kcml6emxlLXNjaGVtYS5qcyc7XG5cblxuLyoqIEFuIG9yZydzIGNvbnN1bXB0aW9uIHBvbGljeSwgYXMgdGhlIHJlc29sdmVyIGFwcGxpZXMgaXQuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnN1bXB0aW9uUG9saWN5IHtcbiAgYWxsb3dlZFRpZXJzOiBQdWJsaXNoZXJUaWVyW107XG4gIHJlcXVpcmVBcHByb3ZhbFRpZXJzOiBQdWJsaXNoZXJUaWVyW107XG4gIHNlY3JldHNBbGxvd2VkVGllcnM6IFB1Ymxpc2hlclRpZXJbXTtcbiAgYmxvY2tPbkFkdmlzb3J5OiBCbG9ja09uQWR2aXNvcnk7XG4gIG9mZmljaWFsSW5zdGFsbHM6IE9mZmljaWFsSW5zdGFsbHM7XG4gIC8qKiBXaGF0IHRvIGRvIHdoZW4gYSBuYW1lIG92ZXJyaWRlcyBhIGxpc3Rpbmcgb3IgdGhlIHBhcmVudCBvcmcncyBwbHVnaW4uICovXG4gIHNoYWRvd2luZzogU2hhZG93aW5nTW9kZTtcbiAgYmxvY2tlZExpc3RpbmdzOiBCbG9ja2VkTGlzdGluZ1JlZltdO1xufVxuXG4vKiogVGhlIGRlZmF1bHRzIChhbmQgdGhlIGNvbHVtbiBkZWZhdWx0cyBvZiBgcGx1Z2luX2luc3RhbGxfcG9saWNpZXNgKS4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0NPTlNVTVBUSU9OX1BPTElDWTogUmVhZG9ubHk8Q29uc3VtcHRpb25Qb2xpY3k+ID0gT2JqZWN0LmZyZWV6ZTxDb25zdW1wdGlvblBvbGljeT4oe1xuICBhbGxvd2VkVGllcnM6IFsnb2ZmaWNpYWwnLCAndmVyaWZpZWQnXSxcbiAgcmVxdWlyZUFwcHJvdmFsVGllcnM6IFsnY29tbXVuaXR5JywgJ3VudmVyaWZpZWQnXSxcbiAgc2VjcmV0c0FsbG93ZWRUaWVyczogWydvZmZpY2lhbCcsICd2ZXJpZmllZCddLFxuICBibG9ja09uQWR2aXNvcnk6ICdjcml0aWNhbCcsXG4gIG9mZmljaWFsSW5zdGFsbHM6ICdpbXBsaWNpdCcsXG4gIC8vIGB3YXJuYCwgbm90IGBkZW55YDogc2hhZG93aW5nIGlzIGxlZ2l0aW1hdGUgKGFuIG9yZyBvdmVycmlkaW5nIGFuIE9mZmljaWFsXG4gIC8vIHBsdWdpbiBvbiBwdXJwb3NlKSwgc28gdGhlIGRlZmF1bHQgbWFrZXMgaXQgdmlzaWJsZSB3aXRob3V0IGJyZWFraW5nIGFcbiAgLy8gZGVwbG95bWVudCB0aGF0IGFscmVhZHkgcmVsaWVzIG9uIGl0LiBgZGVueWAgaXMgdGhlIG9wdC1pbi5cbiAgc2hhZG93aW5nOiAnd2FybicsXG4gIGJsb2NrZWRMaXN0aW5nczogW10sXG59KTtcblxuLyoqIEF0IG1vc3QgdGhpcyBtYW55IGJsb2NrZWQgbGlzdGluZ3MgcGVyIHBvbGljeS4gKi9cbmV4cG9ydCBjb25zdCBNQVhfQkxPQ0tFRF9MSVNUSU5HUyA9IDUwMDtcblxuY29uc3QgQkxPQ0tfT1JERVI6IHJlYWRvbmx5IEJsb2NrT25BZHZpc29yeVtdID0gWyduZXZlcicsICdjcml0aWNhbCcsICdoaWdoJ107XG4vKiogSW5jcmVhc2luZyBzdHJpY3RuZXNzLCBzbyB0aGUgbWVyZ2UgY2FuIHRha2UgdGhlIGdyZWF0ZXIgb2YgdHdvLiAqL1xuY29uc3QgU0hBRE9XX09SREVSOiByZWFkb25seSBTaGFkb3dpbmdNb2RlW10gPSBbJ2FsbG93JywgJ3dhcm4nLCAnZGVueSddO1xuXG5jb25zdCBzb3J0VGllcnMgPSAodGllcnM6IEl0ZXJhYmxlPFB1Ymxpc2hlclRpZXI+KTogUHVibGlzaGVyVGllcltdID0+XG4gIFBVQkxJU0hFUl9USUVSUy5maWx0ZXIoKHQpID0+IG5ldyBTZXQodGllcnMpLmhhcyh0KSk7XG5cbmNvbnN0IGxpc3RpbmdLZXkgPSAocjogQmxvY2tlZExpc3RpbmdSZWYpOiBzdHJpbmcgPT4gYCR7ci5wdWJsaXNoZXJ9LyR7ci5uYW1lfWA7XG5cbmZ1bmN0aW9uIHVuaXF1ZUxpc3RpbmdzKHJlZnM6IHJlYWRvbmx5IEJsb2NrZWRMaXN0aW5nUmVmW10pOiBCbG9ja2VkTGlzdGluZ1JlZltdIHtcbiAgY29uc3Qgc2VlbiA9IG5ldyBNYXA8c3RyaW5nLCBCbG9ja2VkTGlzdGluZ1JlZj4oKTtcbiAgZm9yIChjb25zdCByIG9mIHJlZnMpIHNlZW4uc2V0KGxpc3RpbmdLZXkociksIHsgcHVibGlzaGVyOiByLnB1Ymxpc2hlciwgbmFtZTogci5uYW1lIH0pO1xuICByZXR1cm4gWy4uLnNlZW4udmFsdWVzKCldLnNvcnQoKGEsIGIpID0+IGxpc3RpbmdLZXkoYSkubG9jYWxlQ29tcGFyZShsaXN0aW5nS2V5KGIpKSk7XG59XG5cbi8qKiBBIHN0b3JlZCBwb2xpY3kgcm93IChvciBub25lKSBhcyBhIHtAbGluayBDb25zdW1wdGlvblBvbGljeX0uICovXG5leHBvcnQgZnVuY3Rpb24gcG9saWN5T2Yocm93OiBQYXJ0aWFsPFBsdWdpbkluc3RhbGxQb2xpY3k+IHwgbnVsbCB8IHVuZGVmaW5lZCk6IENvbnN1bXB0aW9uUG9saWN5IHtcbiAgY29uc3QgZCA9IERFRkFVTFRfQ09OU1VNUFRJT05fUE9MSUNZO1xuICByZXR1cm4ge1xuICAgIGFsbG93ZWRUaWVyczogc29ydFRpZXJzKHJvdz8uYWxsb3dlZFRpZXJzID8/IGQuYWxsb3dlZFRpZXJzKSxcbiAgICByZXF1aXJlQXBwcm92YWxUaWVyczogc29ydFRpZXJzKHJvdz8ucmVxdWlyZUFwcHJvdmFsVGllcnMgPz8gZC5yZXF1aXJlQXBwcm92YWxUaWVycyksXG4gICAgc2VjcmV0c0FsbG93ZWRUaWVyczogc29ydFRpZXJzKHJvdz8uc2VjcmV0c0FsbG93ZWRUaWVycyA/PyBkLnNlY3JldHNBbGxvd2VkVGllcnMpLFxuICAgIGJsb2NrT25BZHZpc29yeTogcm93Py5ibG9ja09uQWR2aXNvcnkgPz8gZC5ibG9ja09uQWR2aXNvcnksXG4gICAgc2hhZG93aW5nOiByb3c/LnNoYWRvd2luZyA/PyBkLnNoYWRvd2luZyxcbiAgICBvZmZpY2lhbEluc3RhbGxzOiByb3c/Lm9mZmljaWFsSW5zdGFsbHMgPz8gZC5vZmZpY2lhbEluc3RhbGxzLFxuICAgIGJsb2NrZWRMaXN0aW5nczogdW5pcXVlTGlzdGluZ3Mocm93Py5ibG9ja2VkTGlzdGluZ3MgPz8gZC5ibG9ja2VkTGlzdGluZ3MpLFxuICB9O1xufVxuXG4vKipcbiAqIEEgdGVhbSdzIHBvbGljeSB1bmRlciBpdHMgcm9vdCBvcmcnczogZWFjaCBmaWVsZCB0YWtlcyB0aGUgU1RSSUNURVIgb2ZcbiAqIHRoZSB0d28sIHNvIGEgdGVhbSBjYW4gbmFycm93IHdoYXQgaXRzIHJvb3QgYWxsb3dzIGJ1dCBuZXZlciB3aWRlbiBpdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlQ29uc3VtcHRpb25Qb2xpY2llcyhyb290OiBDb25zdW1wdGlvblBvbGljeSwgdGVhbTogQ29uc3VtcHRpb25Qb2xpY3kpOiBDb25zdW1wdGlvblBvbGljeSB7XG4gIGNvbnN0IGludGVyc2VjdCA9IChhOiBQdWJsaXNoZXJUaWVyW10sIGI6IFB1Ymxpc2hlclRpZXJbXSkgPT4gc29ydFRpZXJzKGEuZmlsdGVyKCh0KSA9PiBiLmluY2x1ZGVzKHQpKSk7XG4gIGNvbnN0IHVuaW9uID0gKGE6IFB1Ymxpc2hlclRpZXJbXSwgYjogUHVibGlzaGVyVGllcltdKSA9PiBzb3J0VGllcnMoWy4uLmEsIC4uLmJdKTtcbiAgY29uc3Qgc3RyaWN0ZXJCbG9jayA9IEJMT0NLX09SREVSLmluZGV4T2Yocm9vdC5ibG9ja09uQWR2aXNvcnkpID49IEJMT0NLX09SREVSLmluZGV4T2YodGVhbS5ibG9ja09uQWR2aXNvcnkpXG4gICAgPyByb290LmJsb2NrT25BZHZpc29yeSA6IHRlYW0uYmxvY2tPbkFkdmlzb3J5O1xuICByZXR1cm4ge1xuICAgIGFsbG93ZWRUaWVyczogaW50ZXJzZWN0KHJvb3QuYWxsb3dlZFRpZXJzLCB0ZWFtLmFsbG93ZWRUaWVycyksXG4gICAgcmVxdWlyZUFwcHJvdmFsVGllcnM6IHVuaW9uKHJvb3QucmVxdWlyZUFwcHJvdmFsVGllcnMsIHRlYW0ucmVxdWlyZUFwcHJvdmFsVGllcnMpLFxuICAgIHNlY3JldHNBbGxvd2VkVGllcnM6IGludGVyc2VjdChyb290LnNlY3JldHNBbGxvd2VkVGllcnMsIHRlYW0uc2VjcmV0c0FsbG93ZWRUaWVycyksXG4gICAgYmxvY2tPbkFkdmlzb3J5OiBzdHJpY3RlckJsb2NrLFxuICAgIG9mZmljaWFsSW5zdGFsbHM6IHJvb3Qub2ZmaWNpYWxJbnN0YWxscyA9PT0gJ2V4cGxpY2l0JyB8fCB0ZWFtLm9mZmljaWFsSW5zdGFsbHMgPT09ICdleHBsaWNpdCcgPyAnZXhwbGljaXQnIDogJ2ltcGxpY2l0JyxcbiAgICAvLyBTdHJpY3RlciBvZiB0aGUgdHdvIHdpbnMsIGxpa2UgZXZlcnkgb3RoZXIgZmllbGQgaGVyZTogYSB0ZWFtIG11c3Qgbm90IGJlXG4gICAgLy8gYWJsZSB0byBsb29zZW4gYSByb290IHRoYXQgY2hvc2UgYGRlbnlgLCB3aGljaCBpcyB0aGUgd2hvbGUgcG9pbnQgb2YgdGhlXG4gICAgLy8gc2V0dGluZyDigJQgdGhlIHRlYW0gaXMgdGhlIHBhcnR5IGRvaW5nIHRoZSBzaGFkb3dpbmcuXG4gICAgc2hhZG93aW5nOiBTSEFET1dfT1JERVIuaW5kZXhPZihyb290LnNoYWRvd2luZykgPj0gU0hBRE9XX09SREVSLmluZGV4T2YodGVhbS5zaGFkb3dpbmcpID8gcm9vdC5zaGFkb3dpbmcgOiB0ZWFtLnNoYWRvd2luZyxcbiAgICBibG9ja2VkTGlzdGluZ3M6IHVuaXF1ZUxpc3RpbmdzKFsuLi5yb290LmJsb2NrZWRMaXN0aW5ncywgLi4udGVhbS5ibG9ja2VkTGlzdGluZ3NdKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBUaGUgcG9saWN5IGFuIG9yZydzIHJlc29sdXRpb24gcnVucyB1bmRlci4gQSByb290IG9yZzogaXRzIG93biByb3cgKG9yIHRoZVxuICogZGVmYXVsdHMpLiBBIHRlYW0gKGByb290T3JnSWRgIHNldCk6IGl0cyByb290J3MgcG9saWN5LCBtZXJnZWQgd2l0aCB0aGVcbiAqIHRlYW0ncyBvd24gcm93IHdoZW4gaXQgaGFzIG9uZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVmZmVjdGl2ZUNvbnN1bXB0aW9uUG9saWN5KFxuICByb3dzOiBSZWFkb25seUFycmF5PFBhcnRpYWw8UGx1Z2luSW5zdGFsbFBvbGljeT4gJiB7IG9yZ0lkPzogc3RyaW5nIH0+LFxuICBvcmdJZDogc3RyaW5nLFxuICByb290T3JnSWQ/OiBzdHJpbmcsXG4pOiBDb25zdW1wdGlvblBvbGljeSB7XG4gIGNvbnN0IG93biA9IHJvd3MuZmluZCgocikgPT4gci5vcmdJZCA9PT0gb3JnSWQpID8/IG51bGw7XG4gIGlmICghcm9vdE9yZ0lkIHx8IHJvb3RPcmdJZCA9PT0gb3JnSWQpIHJldHVybiBwb2xpY3lPZihvd24pO1xuICBjb25zdCByb290ID0gcG9saWN5T2Yocm93cy5maW5kKChyKSA9PiByLm9yZ0lkID09PSByb290T3JnSWQpID8/IG51bGwpO1xuICByZXR1cm4gb3duID8gbWVyZ2VDb25zdW1wdGlvblBvbGljaWVzKHJvb3QsIHBvbGljeU9mKG93bikpIDogcm9vdDtcbn1cblxuY29uc3QgSEFORExFX1JFID0gL15bYS16MC05XSsoPzotW2EtejAtOV0rKSokLztcbmNvbnN0IE5BTUVfUkUgPSAvXlthLXowLTldW2EtejAtOS5fLV0qJC87XG5cbmZ1bmN0aW9uIHRpZXJMaXN0KHY6IHVua25vd24sIGZpZWxkOiBzdHJpbmcpOiBQdWJsaXNoZXJUaWVyW10gfCBzdHJpbmcge1xuICBpZiAoIUFycmF5LmlzQXJyYXkodikpIHJldHVybiBgJHtmaWVsZH0gbXVzdCBiZSBhbiBhcnJheSBvZiB0aWVyc2A7XG4gIGNvbnN0IGJhZCA9IHYuZmlsdGVyKCh0KSA9PiAhKFBVQkxJU0hFUl9USUVSUyBhcyByZWFkb25seSB1bmtub3duW10pLmluY2x1ZGVzKHQpKTtcbiAgaWYgKGJhZC5sZW5ndGgpIHJldHVybiBgJHtmaWVsZH0gaGFzIHVua25vd24gdGllcnM6ICR7YmFkLm1hcChTdHJpbmcpLmpvaW4oJywgJyl9YDtcbiAgcmV0dXJuIHNvcnRUaWVycyh2IGFzIFB1Ymxpc2hlclRpZXJbXSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGUgYSAocGFydGlhbCkgcG9saWN5IHVwZGF0ZSBvdmVyIGBiYXNlYC4gUmV0dXJucyB0aGUgZnVsbCBuZXcgcG9saWN5LFxuICogb3IgYW4gZXJyb3IgbWVzc2FnZS4gYGJsb2NrZWRMaXN0aW5nc2AgZW50cmllcyBhcmUgYHsgcHVibGlzaGVyLCBuYW1lIH1gIG9yXG4gKiBgXCJwdWJsaXNoZXIvbmFtZVwiYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UG9saWN5VXBkYXRlKGJhc2U6IENvbnN1bXB0aW9uUG9saWN5LCBpbnB1dDogdW5rbm93bik6IENvbnN1bXB0aW9uUG9saWN5IHwgc3RyaW5nIHtcbiAgaWYgKCFpbnB1dCB8fCB0eXBlb2YgaW5wdXQgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkoaW5wdXQpKSByZXR1cm4gJ2JvZHkgbXVzdCBiZSBhbiBvYmplY3QnO1xuICBjb25zdCBiID0gaW5wdXQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IG5leHQ6IENvbnN1bXB0aW9uUG9saWN5ID0geyAuLi5iYXNlIH07XG4gIGZvciAoY29uc3QgZmllbGQgb2YgWydhbGxvd2VkVGllcnMnLCAncmVxdWlyZUFwcHJvdmFsVGllcnMnLCAnc2VjcmV0c0FsbG93ZWRUaWVycyddIGFzIGNvbnN0KSB7XG4gICAgaWYgKGJbZmllbGRdID09PSB1bmRlZmluZWQpIGNvbnRpbnVlO1xuICAgIGNvbnN0IHRpZXJzID0gdGllckxpc3QoYltmaWVsZF0sIGZpZWxkKTtcbiAgICBpZiAodHlwZW9mIHRpZXJzID09PSAnc3RyaW5nJykgcmV0dXJuIHRpZXJzO1xuICAgIG5leHRbZmllbGRdID0gdGllcnM7XG4gIH1cbiAgaWYgKGIuYmxvY2tPbkFkdmlzb3J5ICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoIUJMT0NLX09SREVSLmluY2x1ZGVzKGIuYmxvY2tPbkFkdmlzb3J5IGFzIEJsb2NrT25BZHZpc29yeSkpIHJldHVybiAnYmxvY2tPbkFkdmlzb3J5IG11c3QgYmUgY3JpdGljYWwsIGhpZ2ggb3IgbmV2ZXInO1xuICAgIG5leHQuYmxvY2tPbkFkdmlzb3J5ID0gYi5ibG9ja09uQWR2aXNvcnkgYXMgQmxvY2tPbkFkdmlzb3J5O1xuICB9XG4gIGlmIChiLm9mZmljaWFsSW5zdGFsbHMgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmIChiLm9mZmljaWFsSW5zdGFsbHMgIT09ICdpbXBsaWNpdCcgJiYgYi5vZmZpY2lhbEluc3RhbGxzICE9PSAnZXhwbGljaXQnKSByZXR1cm4gJ29mZmljaWFsSW5zdGFsbHMgbXVzdCBiZSBpbXBsaWNpdCBvciBleHBsaWNpdCc7XG4gICAgbmV4dC5vZmZpY2lhbEluc3RhbGxzID0gYi5vZmZpY2lhbEluc3RhbGxzO1xuICB9XG4gIGlmIChiLmJsb2NrZWRMaXN0aW5ncyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGIuYmxvY2tlZExpc3RpbmdzKSkgcmV0dXJuICdibG9ja2VkTGlzdGluZ3MgbXVzdCBiZSBhbiBhcnJheSc7XG4gICAgaWYgKGIuYmxvY2tlZExpc3RpbmdzLmxlbmd0aCA+IE1BWF9CTE9DS0VEX0xJU1RJTkdTKSByZXR1cm4gYGF0IG1vc3QgJHtNQVhfQkxPQ0tFRF9MSVNUSU5HU30gYmxvY2tlZCBsaXN0aW5nc2A7XG4gICAgY29uc3QgcmVmczogQmxvY2tlZExpc3RpbmdSZWZbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgcmF3IG9mIGIuYmxvY2tlZExpc3RpbmdzKSB7XG4gICAgICBjb25zdCByZWYgPSB0eXBlb2YgcmF3ID09PSAnc3RyaW5nJ1xuICAgICAgICA/ICgoKSA9PiB7IGNvbnN0IFtwdWJsaXNoZXIsIG5hbWUsIGV4dHJhXSA9IHJhdy5zcGxpdCgnLycpOyByZXR1cm4gZXh0cmEgPT09IHVuZGVmaW5lZCA/IHsgcHVibGlzaGVyLCBuYW1lIH0gOiBudWxsOyB9KSgpXG4gICAgICAgIDogcmF3ICYmIHR5cGVvZiByYXcgPT09ICdvYmplY3QnID8geyBwdWJsaXNoZXI6IChyYXcgYXMgQmxvY2tlZExpc3RpbmdSZWYpLnB1Ymxpc2hlciwgbmFtZTogKHJhdyBhcyBCbG9ja2VkTGlzdGluZ1JlZikubmFtZSB9IDogbnVsbDtcbiAgICAgIGlmICghcmVmIHx8IHR5cGVvZiByZWYucHVibGlzaGVyICE9PSAnc3RyaW5nJyB8fCB0eXBlb2YgcmVmLm5hbWUgIT09ICdzdHJpbmcnXG4gICAgICAgIHx8ICFIQU5ETEVfUkUudGVzdChyZWYucHVibGlzaGVyKSB8fCAhTkFNRV9SRS50ZXN0KHJlZi5uYW1lKSkge1xuICAgICAgICByZXR1cm4gJ2VhY2ggYmxvY2tlZCBsaXN0aW5nIG11c3QgYmUgeyBwdWJsaXNoZXIsIG5hbWUgfSAob3IgXCJwdWJsaXNoZXIvbmFtZVwiKSc7XG4gICAgICB9XG4gICAgICByZWZzLnB1c2goeyBwdWJsaXNoZXI6IHJlZi5wdWJsaXNoZXIsIG5hbWU6IHJlZi5uYW1lIH0pO1xuICAgIH1cbiAgICBuZXh0LmJsb2NrZWRMaXN0aW5ncyA9IHVuaXF1ZUxpc3RpbmdzKHJlZnMpO1xuICB9XG4gIHJldHVybiBuZXh0O1xufVxuIl19
|
|
@@ -14569,6 +14569,26 @@ export declare const schema: {
|
|
|
14569
14569
|
length: 10;
|
|
14570
14570
|
$type: "explicit" | "implicit";
|
|
14571
14571
|
}>;
|
|
14572
|
+
shadowing: import("drizzle-orm/pg-core").PgColumn<{
|
|
14573
|
+
name: "shadowing";
|
|
14574
|
+
tableName: "plugin_install_policies";
|
|
14575
|
+
dataType: "string";
|
|
14576
|
+
columnType: "PgVarchar";
|
|
14577
|
+
data: "allow" | "deny" | "warn";
|
|
14578
|
+
driverParam: string;
|
|
14579
|
+
notNull: true;
|
|
14580
|
+
hasDefault: true;
|
|
14581
|
+
isPrimaryKey: false;
|
|
14582
|
+
isAutoincrement: false;
|
|
14583
|
+
hasRuntimeDefault: false;
|
|
14584
|
+
enumValues: [string, ...string[]];
|
|
14585
|
+
baseColumn: never;
|
|
14586
|
+
identity: undefined;
|
|
14587
|
+
generated: undefined;
|
|
14588
|
+
}, {}, {
|
|
14589
|
+
length: 10;
|
|
14590
|
+
$type: "allow" | "deny" | "warn";
|
|
14591
|
+
}>;
|
|
14572
14592
|
blockedListings: import("drizzle-orm/pg-core").PgColumn<{
|
|
14573
14593
|
name: "blocked_listings";
|
|
14574
14594
|
tableName: "plugin_install_policies";
|
|
@@ -8,7 +8,7 @@ import type { PluginIcon, PluginSecret, PluginUploadedIcon } from './plugin.js';
|
|
|
8
8
|
* the current `HealthComponent` union and would reject an older row).
|
|
9
9
|
*/
|
|
10
10
|
export type HealthBreakdown = Record<string, HealthComponentScore>;
|
|
11
|
-
export { PUBLISHER_TIERS, LISTING_STATES, PUBLISH_REQUEST_KINDS, PUBLISH_REQUEST_STATUSES, OPEN_PUBLISH_REQUEST_STATUSES, INSTALL_VERSION_POLICIES, REVIEW_HOLD_REASONS, REVIEW_REPORT_CATEGORIES, SUBMISSION_STATUSES, type PublisherTier, type ListingState, type PublishRequestKind, type PublishRequestStatus, type PublishRequestLane, type InstallVersionPolicy, type InstallStatus, type BlockOnAdvisory, type OfficialInstalls, type ReviewStatus, type ReviewHoldReason, type ReviewReportCategory, type AdvisorySeverity, type AdvisoryState, type AdvisorySource, type SubmissionStatus, } from '@pipeline-builder/api-core';
|
|
11
|
+
export { PUBLISHER_TIERS, LISTING_STATES, PUBLISH_REQUEST_KINDS, PUBLISH_REQUEST_STATUSES, OPEN_PUBLISH_REQUEST_STATUSES, INSTALL_VERSION_POLICIES, REVIEW_HOLD_REASONS, REVIEW_REPORT_CATEGORIES, SUBMISSION_STATUSES, type PublisherTier, type ListingState, type PublishRequestKind, type PublishRequestStatus, type PublishRequestLane, type InstallVersionPolicy, type InstallStatus, type BlockOnAdvisory, type OfficialInstalls, type ShadowingMode, type ReviewStatus, type ReviewHoldReason, type ReviewReportCategory, type AdvisorySeverity, type AdvisoryState, type AdvisorySource, type SubmissionStatus, } from '@pipeline-builder/api-core';
|
|
12
12
|
/**
|
|
13
13
|
* A member's pending request to CHANGE an active install (its version or
|
|
14
14
|
* version policy) that needs an approver — crossing a major/breaking version,
|
|
@@ -4713,6 +4713,26 @@ export declare const pluginInstallPolicy: import("drizzle-orm/pg-core").PgTableW
|
|
|
4713
4713
|
length: 10;
|
|
4714
4714
|
$type: "explicit" | "implicit";
|
|
4715
4715
|
}>;
|
|
4716
|
+
shadowing: import("drizzle-orm/pg-core").PgColumn<{
|
|
4717
|
+
name: "shadowing";
|
|
4718
|
+
tableName: "plugin_install_policies";
|
|
4719
|
+
dataType: "string";
|
|
4720
|
+
columnType: "PgVarchar";
|
|
4721
|
+
data: "allow" | "deny" | "warn";
|
|
4722
|
+
driverParam: string;
|
|
4723
|
+
notNull: true;
|
|
4724
|
+
hasDefault: true;
|
|
4725
|
+
isPrimaryKey: false;
|
|
4726
|
+
isAutoincrement: false;
|
|
4727
|
+
hasRuntimeDefault: false;
|
|
4728
|
+
enumValues: [string, ...string[]];
|
|
4729
|
+
baseColumn: never;
|
|
4730
|
+
identity: undefined;
|
|
4731
|
+
generated: undefined;
|
|
4732
|
+
}, {}, {
|
|
4733
|
+
length: 10;
|
|
4734
|
+
$type: "allow" | "deny" | "warn";
|
|
4735
|
+
}>;
|
|
4716
4736
|
blockedListings: import("drizzle-orm/pg-core").PgColumn<{
|
|
4717
4737
|
name: "blocked_listings";
|
|
4718
4738
|
tableName: "plugin_install_policies";
|
|
@@ -565,6 +565,10 @@ export const pluginInstallPolicy = pgTable('plugin_install_policies', {
|
|
|
565
565
|
.default(['official', 'verified']).notNull(),
|
|
566
566
|
blockOnAdvisory: varchar('block_on_advisory', { length: 10 }).$type().default('critical').notNull(),
|
|
567
567
|
officialInstalls: varchar('official_installs', { length: 10 }).$type().default('implicit').notNull(),
|
|
568
|
+
// What to do when a name overrides a listing, or the parent org's plugin.
|
|
569
|
+
// Defaults to `warn`: shadowing can be deliberate, so the default surfaces it
|
|
570
|
+
// without breaking a deployment that already relies on one.
|
|
571
|
+
shadowing: varchar('shadowing', { length: 10 }).$type().default('warn').notNull(),
|
|
568
572
|
blockedListings: jsonb('blocked_listings').$type().default([]).notNull(),
|
|
569
573
|
updatedBy: text('updated_by'),
|
|
570
574
|
updatedAt: timestamp('updated_at', { withTimezone: true }).defaultNow().notNull(),
|
|
@@ -755,4 +759,4 @@ export const SEEDED_AUTO_APPROVAL_RULE_IDS = {
|
|
|
755
759
|
verifiedUpdates: '00000000-0000-4000-8000-00000000a001',
|
|
756
760
|
officialCatalog: '00000000-0000-4000-8000-00000000a002',
|
|
757
761
|
};
|
|
758
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNvc3lzdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2RhdGFiYXNlL3NjaGVtYS9lY29zeXN0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQWtEdEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsQyxPQUFPLEVBQ0wsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQy9HLFNBQVMsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE9BQU8sR0FDdEMsTUFBTSxxQkFBcUIsQ0FBQztBQVk3Qix1RUFBdUU7QUFDdkUsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFtQjtJQUM1QyxRQUFRO1FBQ04sT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztDQUNGLENBQUMsQ0FBQztBQUVILDhFQUE4RTtBQUM5RSw4RUFBOEU7QUFDOUUseURBQXlEO0FBQ3pELDhFQUE4RTtBQUU5RSxPQUFPLEVBQ0wsZUFBZSxFQUNmLGNBQWMsRUFDZCxxQkFBcUIsRUFDckIsd0JBQXdCLEVBQ3hCLDZCQUE2QixFQUM3Qix3QkFBd0IsRUFDeEIsbUJBQW1CLEVBQ25CLHdCQUF3QixFQUN4QixtQkFBbUIsR0FpQnBCLE1BQU0sNEJBQTRCLENBQUM7QUFpQ3BDLDhFQUE4RTtBQUM5RSwwQkFBMEI7QUFDMUIsOEVBQThFO0FBRTlFOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxZQUFZLEVBQUU7SUFDN0MsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxhQUFhLEVBQUU7SUFDM0MsVUFBVSxFQUFFLE9BQU8sQ0FBQyxjQUFjLEVBQUUsRUFB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QUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDcEUsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLHdCQUF3QixFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ2xGLGFBQWEsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDdEMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNyRSxjQUFjLEVBQUUsU0FBUyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0NBQ3RFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUVkLGtFQUFrRTtBQUNsRSxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxrQkFBa0IsQ0FBQztBQUM1RCxxRUFBcUU7QUFDckUsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsV0FBVyxDQUFDO0FBRXRELHdFQUF3RTtBQUN4RSxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRztJQUMzQyxlQUFlLEVBQUUsc0NBQXNDO0lBQ3ZELGVBQWUsRUFBRSxzQ0FBc0M7Q0FDL0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vL1xuLy8gUGx1Z2luIGVjb3N5c3RlbSB0YWJsZXMgKGRvY3MvcGx1Z2luLXB1Ymxpc2hpbmcubWQpLiBNaXJyb3JzIHRoZVxuLy8gXCJQTFVHSU4gRUNPU1lTVEVNXCIgc2VjdGlvbiBvZiBwb3N0Z3Jlcy1pbml0LnNxbCwgd2hpY2ggaXMgYXV0aG9yaXRhdGl2ZSBmb3Jcbi8vIHRoZSB0cmlnZ2VyLW1haW50YWluZWQgYHNlYXJjaF92ZWN0b3JgLCB0aGUgUkxTIHBvbGljaWVzIGFuZCB0aGUgcHVibGljIHZpZXdzLlxuLy9cbi8vIFR3byBraW5kcyBvZiB0YWJsZTpcbi8vICAgKiBFQ09TWVNURU0tR0xPQkFMIOKAlCBwdWJsaXNoZXJzLCBsaXN0aW5ncywgbGlzdGluZyB2ZXJzaW9ucywgdGhlIHB1Ymxpc2hcbi8vICAgICByZXF1ZXN0IHF1ZXVlLCByZXZpZXdzLCBhZHZpc29yaWVzLCBhbm9ueW1vdXMgc3VibWlzc2lvbnMsIOKApiBUaGVcbi8vICAgICBkaXJlY3RvcnkgaXMgaW5zdGFuY2Utd2lkZSwgc28gdGhlc2UgY2FycnkgTk8gYG9yZ19pZGA6IHRoZXkgYXJlIG5vdFxuLy8gICAgIHRlbmFudCBzY29wZWQsIHdyaXRlcyBhcmUgZ2F0ZWQgaW4gdGhlIHNlcnZpY2UgbGF5ZXIgKHN5c3RlbS1vcmctb25seVxuLy8gICAgIGFwcHJvdmFsKSwgYW5kIHRoZWlyIFJMUyBwb2xpY3kgYWRtaXRzIHRoZSBhcHBsaWNhdGlvbiByb2xlIG9ubHkuXG4vLyAgICAgYHB1Ymxpc2hlcnMub3duZXJfb3JnX2lkYCBpcyBkZWxpYmVyYXRlbHkgbm90IG5hbWVkIGBvcmdfaWRgOiBhIHB1Ymxpc2hlclxuLy8gICAgIG91dGxpdmVzIGl0cyBvcmcsIHNvIGl0IG11c3Qgc3RheSBvdXQgb2YgdGhlIG9yZyBjYXNjYWRlLCB3aGljaFxuLy8gICAgIHRyZWF0cyBldmVyeSBgb3JnX2lkYCB0YWJsZSBhcyB0aGUgb3JnJ3MgZGF0YS5cbi8vICAgKiBPUkctU0NPUEVEIOKAlCBwaXBlbGluZV9zdGVwX21hbmlmZXN0cywgcGx1Z2luX2luc3RhbGxzLFxuLy8gICAgIHBsdWdpbl9pbnN0YWxsX3BvbGljaWVzLCBwbHVnaW5fYWR2aXNvcnlfZGVsaXZlcmllczogYG9yZ19pZGAgKyB0aGVcbi8vICAgICBzdGFuZGFyZCBgcmxzX29yZ18qYCBwb2xpY2llcyArIEZPUkNFLCBhbmQgcGFydCBvZiB0aGUgb3JnIGNhc2NhZGUuXG4vL1xuLy8gVGhlIHR3byBgcHVibGljXypgIHZpZXdzIGFyZSBkZWNsYXJlZCB3aXRoIGBwZ1ZpZXcoLi4uKS5leGlzdGluZygpYCAoZHJpenpsZVxuLy8gbmV2ZXIgY3JlYXRlcyB0aGVtOyBwb3N0Z3Jlcy1pbml0LnNxbCBkb2VzKS4gVGhleSBhcmUgd2hhdCB0aGUgYW5vbnltb3VzXG4vLyBkaXJlY3RvcnkgQVBJIHJlYWRzLCBjb25uZWN0ZWQgYXMgYGVjb3N5c3RlbV9wdWJsaWNfcmVhZGVyYCDigJQgdGhlIG9ubHlcbi8vIHJlbGF0aW9ucyB0aGF0IHJvbGUgY2FuIFNFTEVDVC4gVGhleSBhcmUgZXhwb3J0ZWQgZm9yIHR5cGVkIHF1ZXJpZXMgYnV0IGtlcHRcbi8vIG91dCBvZiB0aGUgYWdncmVnYXRlIGBzY2hlbWFgIG9iamVjdCwgd2hpY2ggbGlzdHMgdGFibGVzIG9ubHkuXG4vL1xuXG5pbXBvcnQgdHlwZSB7XG4gIFB1Ymxpc2hlclRpZXIsXG4gIExpc3RpbmdTdGF0ZSxcbiAgUHVibGlzaFJlcXVlc3RLaW5kLFxuICBQdWJsaXNoUmVxdWVzdFN0YXR1cyxcbiAgUHVibGlzaFJlcXVlc3RMYW5lLFxuICBJbnN0YWxsVmVyc2lvblBvbGljeSxcbiAgSW5zdGFsbFN0YXR1cyxcbiAgQmxvY2tPbkFkdmlzb3J5LFxuICBPZmZpY2lhbEluc3RhbGxzLFxuICBSZXZpZXdTdGF0dXMsXG4gIFJldmlld0hvbGRSZWFzb24sXG4gIFJldmlld1JlcG9ydENhdGVnb3J5LFxuICBBZHZpc29yeVNldmVyaXR5LFxuICBBZHZpc29yeVN0YXRlLFxuICBBZHZpc29yeVNvdXJjZSxcbiAgU3VibWlzc2lvblN0YXR1cyxcbiAgUGx1Z2luU2NhbkZsYWcsXG4gIFBsdWdpblNjYW5TdW1tYXJ5LFxuICBQbHVnaW5TZWN1cml0eVJlY2lwaWVudE1vZGUsXG4gIFBsdWdpblNlY3VyaXR5RGlnZXN0TW9kZSxcbiAgSGVhbHRoQ29tcG9uZW50U2NvcmUsXG59IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB7IHNxbCB9IGZyb20gJ2RyaXp6bGUtb3JtJztcbmltcG9ydCB7XG4gIGJvb2xlYW4sIGNoZWNrLCBjdXN0b21UeXBlLCBkb3VibGVQcmVjaXNpb24sIGluZGV4LCBpbnRlZ2VyLCBqc29uYiwgcGdUYWJsZSwgcGdWaWV3LCBwcmltYXJ5S2V5LCBzbWFsbGludCwgdGV4dCxcbiAgdGltZXN0YW1wLCB1bmlxdWVJbmRleCwgdXVpZCwgdmFyY2hhcixcbn0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSc7XG5pbXBvcnQgdHlwZSB7IFBsdWdpbkljb24sIFBsdWdpblNlY3JldCwgUGx1Z2luVXBsb2FkZWRJY29uIH0gZnJvbSAnLi9wbHVnaW4uanMnO1xuXG4vKipcbiAqIFBlci1jb21wb25lbnQgaGVhbHRoIHNjb3JlcywgYXMgU1RPUkVELiBUaGUgY29tcG9uZW50IHNjb3JlIHNoYXBlIGlzXG4gKiBhcGktY29yZSdzIGBIZWFsdGhDb21wb25lbnRTY29yZWAg4oCUIG9ubHkgdGhlIGtleSBpcyB3aWRlbmVkIHRvIGBzdHJpbmdgLFxuICogYmVjYXVzZSBkcml6emxlJ3MgYCR0eXBlPD4oKWAgb24gYSBqc29uYiBjb2x1bW4gbXVzdCBhY2NlcHQgd2hhdGV2ZXJcbiAqIGNvbXBvbmVudCBzZXQgYSByb3cgd2FzIHdyaXR0ZW4gd2l0aCAoYXBpLWNvcmUncyBgSGVhbHRoQnJlYWtkb3duYCBrZXlzIG9uXG4gKiB0aGUgY3VycmVudCBgSGVhbHRoQ29tcG9uZW50YCB1bmlvbiBhbmQgd291bGQgcmVqZWN0IGFuIG9sZGVyIHJvdykuXG4gKi9cbmV4cG9ydCB0eXBlIEhlYWx0aEJyZWFrZG93biA9IFJlY29yZDxzdHJpbmcsIEhlYWx0aENvbXBvbmVudFNjb3JlPjtcblxuLyoqIFBvc3RncmVzIGB0c3ZlY3RvcmAsIHdoaWNoIGRyaXp6bGUtb3JtIGhhcyBubyBuYXRpdmUgY29sdW1uIGZvci4gKi9cbmNvbnN0IHRzdmVjdG9yID0gY3VzdG9tVHlwZTx7IGRhdGE6IHN0cmluZyB9Pih7XG4gIGRhdGFUeXBlKCkge1xuICAgIHJldHVybiAndHN2ZWN0b3InO1xuICB9LFxufSk7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gRW51bWVyYXRpb25zIOKAlCBkZWZpbmVkIGluIGFwaS1jb3JlJ3Mgd2lyZSB2b2NhYnVsYXJ5IHNvIHRoZSBmcm9udGVuZCBzaGFyZXNcbi8vIHRoZW07IGVhY2ggaXMgbWlycm9yZWQgYnkgYSBDSEVDSyBpbiBwb3N0Z3Jlcy1pbml0LnNxbFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCB7XG4gIFBVQkxJU0hFUl9USUVSUyxcbiAgTElTVElOR19TVEFURVMsXG4gIFBVQkxJU0hfUkVRVUVTVF9LSU5EUyxcbiAgUFVCTElTSF9SRVFVRVNUX1NUQVRVU0VTLFxuICBPUEVOX1BVQkxJU0hfUkVRVUVTVF9TVEFUVVNFUyxcbiAgSU5TVEFMTF9WRVJTSU9OX1BPTElDSUVTLFxuICBSRVZJRVdfSE9MRF9SRUFTT05TLFxuICBSRVZJRVdfUkVQT1JUX0NBVEVHT1JJRVMsXG4gIFNVQk1JU1NJT05fU1RBVFVTRVMsXG4gIHR5cGUgUHVibGlzaGVyVGllcixcbiAgdHlwZSBMaXN0aW5nU3RhdGUsXG4gIHR5cGUgUHVibGlzaFJlcXVlc3RLaW5kLFxuICB0eXBlIFB1Ymxpc2hSZXF1ZXN0U3RhdHVzLFxuICB0eXBlIFB1Ymxpc2hSZXF1ZXN0TGFuZSxcbiAgdHlwZSBJbnN0YWxsVmVyc2lvblBvbGljeSxcbiAgdHlwZSBJbnN0YWxsU3RhdHVzLFxuICB0eXBlIEJsb2NrT25BZHZpc29yeSxcbiAgdHlwZSBPZmZpY2lhbEluc3RhbGxzLFxuICB0eXBlIFJldmlld1N0YXR1cyxcbiAgdHlwZSBSZXZpZXdIb2xkUmVhc29uLFxuICB0eXBlIFJldmlld1JlcG9ydENhdGVnb3J5LFxuICB0eXBlIEFkdmlzb3J5U2V2ZXJpdHksXG4gIHR5cGUgQWR2aXNvcnlTdGF0ZSxcbiAgdHlwZSBBZHZpc29yeVNvdXJjZSxcbiAgdHlwZSBTdWJtaXNzaW9uU3RhdHVzLFxufSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5cbi8qKlxuICogQSBtZW1iZXIncyBwZW5kaW5nIHJlcXVlc3QgdG8gQ0hBTkdFIGFuIGFjdGl2ZSBpbnN0YWxsIChpdHMgdmVyc2lvbiBvclxuICogdmVyc2lvbiBwb2xpY3kpIHRoYXQgbmVlZHMgYW4gYXBwcm92ZXIg4oCUIGNyb3NzaW5nIGEgbWFqb3IvYnJlYWtpbmcgdmVyc2lvbixcbiAqIG9yIHdpZGVuaW5nIHRvIGBsYXRlc3RgLCBvbiBhbiBhcHByb3ZhbC1nYXRlZCB0aWVyLiBPbmUgcGVyIGluc3RhbGw7IGFuXG4gKiBhcHByb3ZlciAoYHBsdWdpbl9pbnN0YWxsczptYW5hZ2VgKSBhcHBsaWVzIG9yIHJlamVjdHMgaXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5zdGFsbENoYW5nZVJlcXVlc3Qge1xuICAvKiogVGhlIHZlcnNpb24gdGhlIGluc3RhbGwgd291bGQgbW92ZSB0by4gKi9cbiAgdmVyc2lvbjogc3RyaW5nO1xuICAvKiogVGhlIHZlcnNpb24gcG9saWN5IGl0IHdvdWxkIG1vdmUgdG8uICovXG4gIHZlcnNpb25Qb2xpY3k6IEluc3RhbGxWZXJzaW9uUG9saWN5O1xuICByZXF1ZXN0ZWRCeTogc3RyaW5nO1xuICAvKiogSVNPIHRpbWUgb2YgdGhlIHJlcXVlc3QuICovXG4gIHJlcXVlc3RlZEF0OiBzdHJpbmc7XG4gIG5vdGU6IHN0cmluZyB8IG51bGw7XG59XG4vKiogQSBgKHB1Ymxpc2hlciwgbmFtZSlgIGFuIG9yZydzIGNvbnN1bXB0aW9uIHBvbGljeSBibG9ja3MuICovXG5leHBvcnQgaW50ZXJmYWNlIEJsb2NrZWRMaXN0aW5nUmVmIHtcbiAgcHVibGlzaGVyOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbn1cblxuLyoqIEFuIGFub255bW91cyBzdWJtaXNzaW9uJ3MgYWNjZXB0ZWQgY2F0YWxvZyBtZXRhZGF0YSBhbmQgcGVyLWZpZWxkIHByb3ZlbmFuY2UuICovXG5leHBvcnQgaW50ZXJmYWNlIFN1Ym1pc3Npb25DYXRhbG9nIHtcbiAgdmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgc291cmNlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cblxuLyoqIE5vdGlmaWNhdGlvbiBldmVudCBudW1iZXIgKGBOMWAg4oCmIGBOMjlgKS4gKi9cbmV4cG9ydCB0eXBlIEVjb3N5c3RlbU5vdGlmaWNhdGlvbkV2ZW50ID0gYE4ke251bWJlcn1gO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEVjb3N5c3RlbS1nbG9iYWwgdGFibGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBBbiBvcmcncyBwdWJsaWMgaWRlbnRpdHkgKG9uZSBwZXIgcm9vdCBvcmcpLiBgb3duZXJPcmdJZGAgaXMgTlVMTCBmb3IgdGhlXG4gKiBwbGF0Zm9ybS1vd25lZCBgY29tbXVuaXR5YCBwdWJsaXNoZXIgYW5vbnltb3VzIHN1Ym1pc3Npb25zIGxhbmQgdW5kZXIuXG4gKlxuICogQHRhYmxlIHB1Ymxpc2hlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IHB1Ymxpc2hlciA9IHBnVGFibGUoJ3B1Ymxpc2hlcnMnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG4gIG93bmVyT3JnSWQ6IHZhcmNoYXIoJ293bmVyX29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkudW5pcXVlKCksXG4gIGhhbmRsZTogdmFyY2hhcignaGFuZGxlJywgeyBsZW5ndGg6IDM5IH0pLm5vdE51bGwoKS51bmlxdWUoKSxcbiAgZGlzcGxheU5hbWU6IHZhcmNoYXIoJ2Rpc3BsYXlfbmFtZScsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBkZXNjcmlwdGlvbjogdGV4dCgnZGVzY3JpcHRpb24nKSxcbiAgaG9tZXBhZ2VVcmw6IHZhcmNoYXIoJ2hvbWVwYWdlX3VybCcsIHsgbGVuZ3RoOiAyMDQ4IH0pLFxuICB0aWVyOiB2YXJjaGFyKCd0aWVyJywgeyBsZW5ndGg6IDIwIH0pLiR0eXBlPFB1Ymxpc2hlclRpZXI+KCkuZGVmYXVsdCgnY29tbXVuaXR5Jykubm90TnVsbCgpLFxuICB2ZXJpZmllZEF0OiB0aW1lc3RhbXAoJ3ZlcmlmaWVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIC8vIFZlcmlmaWVkIHB1Ymxpc2hlciBkb3duZ3JhZGVkIGJlbG93IFRlYW0ga2VlcHMgdGhlIHRpZXIgdW50aWwgdGhpcyBwYXNzZXMgKE4yOSkuXG4gIHZlcmlmaWVkR3JhY2VVbnRpbDogdGltZXN0YW1wKCd2ZXJpZmllZF9ncmFjZV91bnRpbCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICB0ZXJtc1ZlcnNpb246IHZhcmNoYXIoJ3Rlcm1zX3ZlcnNpb24nLCB7IGxlbmd0aDogNTAgfSksXG4gIHRlcm1zQWNjZXB0ZWRBdDogdGltZXN0YW1wKCd0ZXJtc19hY2NlcHRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBzdXNwZW5kZWRBdDogdGltZXN0YW1wKCdzdXNwZW5kZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgc3VzcGVuZFJlYXNvbjogdGV4dCgnc3VzcGVuZF9yZWFzb24nKSxcbiAgLy8gVzcgcm9sbC11cHMsIHdyaXR0ZW4gYnkgdGhlIHN0YXRzIHN3ZWVwOiBydW4td2VpZ2h0ZWQgMzAtZGF5IHN1Y2Nlc3MgcmF0ZVxuICAvLyBhbmQgdGhlIGluc3RhbGwtd2VpZ2h0ZWQgbWVhbiBoZWFsdGggc2NvcmUgb2YgaXRzIGxpc3RpbmdzIChOVUxMOiBub25lKS5cbiAgc3VjY2Vzc1JhdGUzMGQ6IGRvdWJsZVByZWNpc2lvbignc3VjY2Vzc19yYXRlXzMwZCcpLFxuICBoZWFsdGhTY29yZTogaW50ZWdlcignaGVhbHRoX3Njb3JlJyksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICBoYW5kbGVDaGVjazogY2hlY2soJ3B1Ymxpc2hlcnNfaGFuZGxlX2NoZWNrJywgc3FsYCR7dGFibGUuaGFuZGxlfSB+ICdeW2EtejAtOV1bYS16MC05LV0qJCdgKSxcbiAgdGllckNoZWNrOiBjaGVjaygncHVibGlzaGVyc190aWVyX2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS50aWVyfSBJTiAoJ29mZmljaWFsJywgJ3ZlcmlmaWVkJywgJ2NvbW11bml0eScsICd1bnZlcmlmaWVkJylgKSxcbn0pKTtcblxuLyoqXG4gKiBBIHBsdWdpbiBOQU1FIHB1Ymxpc2hlZCBieSBhIHB1Ymxpc2hlci4gUmV2aWV3cywgaW5zdGFsbHMsIHN0YXRzIGFuZCBzZWFyY2hcbiAqIGF0dGFjaCBoZXJlOyB0aGUgcGVyLXZlcnNpb24gcmVjb3JkcyBhcmUge0BsaW5rIHBsdWdpbkxpc3RpbmdWZXJzaW9ufS5cbiAqIGBzZWFyY2hWZWN0b3JgIGlzIG1haW50YWluZWQgYnkgYSB0cmlnZ2VyIGluIHBvc3RncmVzLWluaXQuc3FsIChuYW1lIEEsXG4gKiBrZXl3b3JkcyArIGNhdGVnb3J5IEIsIHN1bW1hcnkgQywgUkVBRE1FICsgZGVzY3JpcHRpb24gRCwgY29uZmlnIGBlbmdsaXNoYClcbiAqIOKAlCBuZXZlciB3cml0ZSBpdCBmcm9tIHRoZSBhcHBsaWNhdGlvbi5cbiAqXG4gKiBAdGFibGUgcGx1Z2luX2xpc3RpbmdzXG4gKi9cbmV4cG9ydCBjb25zdCBwbHVnaW5MaXN0aW5nID0gcGdUYWJsZSgncGx1Z2luX2xpc3RpbmdzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBwdWJsaXNoZXJJZDogdXVpZCgncHVibGlzaGVyX2lkJykubm90TnVsbCgpLnJlZmVyZW5jZXMoKCkgPT4gcHVibGlzaGVyLmlkKSxcbiAgbmFtZTogdmFyY2hhcignbmFtZScsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBjYXRlZ29yeTogdmFyY2hhcignY2F0ZWdvcnknLCB7IGxlbmd0aDogNTAgfSkuZGVmYXVsdCgndW5rbm93bicpLm5vdE51bGwoKSxcbiAgc3VtbWFyeTogdmFyY2hhcignc3VtbWFyeScsIHsgbGVuZ3RoOiAzMDAgfSksXG4gIGRlc2NyaXB0aW9uOiB0ZXh0KCdkZXNjcmlwdGlvbicpLFxuICByZWFkbWVIdG1sOiB0ZXh0KCdyZWFkbWVfaHRtbCcpLFxuICBsaWNlbnNlOiB2YXJjaGFyKCdsaWNlbnNlJywgeyBsZW5ndGg6IDY0IH0pLFxuICBob21lcGFnZVVybDogdmFyY2hhcignaG9tZXBhZ2VfdXJsJywgeyBsZW5ndGg6IDIwNDggfSksXG4gIHNvdXJjZVVybDogdmFyY2hhcignc291cmNlX3VybCcsIHsgbGVuZ3RoOiAyMDQ4IH0pLFxuICBpY29uOiBqc29uYignaWNvbicpLiR0eXBlPFBsdWdpbkljb24+KCksXG4gIHVwbG9hZGVkSWNvbjoganNvbmIoJ3VwbG9hZGVkX2ljb24nKS4kdHlwZTxQbHVnaW5VcGxvYWRlZEljb24+KCksXG4gIGtleXdvcmRzOiBqc29uYigna2V5d29yZHMnKS4kdHlwZTxzdHJpbmdbXT4oKS5kZWZhdWx0KFtdKS5ub3ROdWxsKCksXG4gIHN0YXRlOiB2YXJjaGFyKCdzdGF0ZScsIHsgbGVuZ3RoOiAyMCB9KS4kdHlwZTxMaXN0aW5nU3RhdGU+KCkuZGVmYXVsdCgnbGlzdGVkJykubm90TnVsbCgpLFxuICAvLyBQdWJsaXNoZXIgcGF1c2U6IG5vIG5ldyBpbnN0YWxsczsgZXhpc3RpbmcgaW5zdGFsbHMga2VlcCByZXNvbHZpbmcuXG4gIHBhdXNlZEF0OiB0aW1lc3RhbXAoJ3BhdXNlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBmZWF0dXJlZDogYm9vbGVhbignZmVhdHVyZWQnKS5kZWZhdWx0KGZhbHNlKS5ub3ROdWxsKCksXG4gIGxhdGVzdFZlcnNpb246IHZhcmNoYXIoJ2xhdGVzdF92ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLFxuICBzZWFyY2hWZWN0b3I6IHRzdmVjdG9yKCdzZWFyY2hfdmVjdG9yJyksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICBwdWJsaXNoZXJOYW1lVW5pcXVlOiB1bmlxdWVJbmRleCgncGx1Z2luX2xpc3RpbmdfcHVibGlzaGVyX25hbWVfdW5pcXVlJykub24odGFibGUucHVibGlzaGVySWQsIHRhYmxlLm5hbWUpLFxuICBzdGF0ZUNhdGVnb3J5SWR4OiBpbmRleCgncGx1Z2luX2xpc3Rpbmdfc3RhdGVfY2F0ZWdvcnlfaWR4Jykub24odGFibGUuc3RhdGUsIHRhYmxlLmNhdGVnb3J5KSxcbiAgdXBkYXRlZEF0SWR4OiBpbmRleCgncGx1Z2luX2xpc3RpbmdfdXBkYXRlZF9hdF9pZHgnKS5vbih0YWJsZS51cGRhdGVkQXQpLFxuICBzZWFyY2hWZWN0b3JJZHg6IGluZGV4KCdwbHVnaW5fbGlzdGluZ19zZWFyY2hfdmVjdG9yX2lkeCcpLnVzaW5nKCdnaW4nLCB0YWJsZS5zZWFyY2hWZWN0b3IpLFxuICAvLyBwZ190cmdtOiB0eXBvLXRvbGVyYW50IG5hbWUgbWF0Y2hpbmcgKFwidGVyYWZyb21cIiAtPiB0ZXJyYWZvcm0pLlxuICBuYW1lVHJnbUlkeDogaW5kZXgoJ3BsdWdpbl9saXN0aW5nX25hbWVfdHJnbV9pZHgnKS51c2luZygnZ2luJywgc3FsYCR7dGFibGUubmFtZX0gZ2luX3RyZ21fb3BzYCksXG4gIHN0YXRlQ2hlY2s6IGNoZWNrKCdwbHVnaW5fbGlzdGluZ3Nfc3RhdGVfY2hlY2snLFxuICAgIHNxbGAke3RhYmxlLnN0YXRlfSBJTiAoJ2xpc3RlZCcsICd1bm1haW50YWluZWQnLCAnc3VzcGVuZGVkJywgJ3RyYW5zZmVycmVkJylgKSxcbn0pKTtcblxuLyoqXG4gKiBUaGUgcHVibGljLCBmcm96ZW4gc3Vic2V0IG9mIGEgcGx1Z2luIHJlY29yZCBjYXB0dXJlZCBhdCBhcHByb3ZhbCwgc28gYVxuICogbGlzdGVkIHZlcnNpb24ga2VlcHMgc3ludGhlc2l6aW5nIGFmdGVyIHRoZSBwdWJsaXNoZXIgb3JnJ3Mgb3duIGBwbHVnaW5zYFxuICogcm93IGlzIGRlbGV0ZWQgb3IgcHVyZ2VkLiBPbmx5IHRoZSBrZXlzIHRoZSBgcHVibGljX2xpc3RlZF92ZXJzaW9uc2BcbiAqIHZpZXcgcHJvamVjdHMgYXJlIHB1YmxpYzsgdGhlIHJlc3QgaXMgdmlzaWJsZSB0byBpbnN0YWxsZXJzJyBzeW50aCBvbmx5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpc3RpbmdWZXJzaW9uU3BlY1NuYXBzaG90IHtcbiAgcGx1Z2luVHlwZT86IHN0cmluZztcbiAgY29tcHV0ZVR5cGU/OiBzdHJpbmc7XG4gIHNlY3JldHM/OiBQbHVnaW5TZWNyZXRbXTtcbiAgcmVxdWlyZWRNZXRhZGF0YT86IHN0cmluZ1tdO1xuICByZXF1aXJlZFZhcnM/OiBzdHJpbmdbXTtcbiAgbmV0d29ya0VncmVzcz86IHN0cmluZ1tdO1xuICBydW5Bc1Jvb3Q/OiBib29sZWFuO1xuICBsaWNlbnNlPzogc3RyaW5nO1xuICByZWFkbWVIdG1sPzogc3RyaW5nO1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xufVxuXG4vKipcbiAqIEEgdmVyc2lvbiBwdWJsaXNoZWQgdG8gYSBsaXN0aW5nIOKAlCB0aGUgY29weSBpbiB0aGUgcmVhZC1vbmx5IGBwdWJsaWMvKmBcbiAqIG5hbWVzcGFjZS4gSW1tdXRhYmxlIG9uY2Ugd3JpdHRlbiBhcGFydCBmcm9tIHBhdXNlIC8geWFuayAvXG4gKiBkZXByZWNhdGlvbi4gYHNvdXJjZVBsdWdpbklkYCBpcyBwcm92ZW5hbmNlIG9ubHkgKG5vIEZLOiB0aGUgb3JnIHJvdyBpc1xuICogc29mdC1kZWxldGVkIGFuZCBwdXJnZWQgb24gaXRzIG93biBzY2hlZHVsZSkuXG4gKlxuICogQHRhYmxlIHBsdWdpbl9saXN0aW5nX3ZlcnNpb25zXG4gKi9cbmV4cG9ydCBjb25zdCBwbHVnaW5MaXN0aW5nVmVyc2lvbiA9IHBnVGFibGUoJ3BsdWdpbl9saXN0aW5nX3ZlcnNpb25zJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBsaXN0aW5nSWQ6IHV1aWQoJ2xpc3RpbmdfaWQnKS5ub3ROdWxsKCkucmVmZXJlbmNlcygoKSA9PiBwbHVnaW5MaXN0aW5nLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSksXG4gIHNvdXJjZVBsdWdpbklkOiB1dWlkKCdzb3VyY2VfcGx1Z2luX2lkJyksXG4gIHZlcnNpb246IHZhcmNoYXIoJ3ZlcnNpb24nLCB7IGxlbmd0aDogNTAgfSkubm90TnVsbCgpLFxuICBpbWFnZURpZ2VzdDogdmFyY2hhcignaW1hZ2VfZGlnZXN0JywgeyBsZW5ndGg6IDcxIH0pLFxuICAvLyBwdWJsaWMvPGhhbmRsZT4vPG5hbWU+XG4gIGltYWdlUmVwb3NpdG9yeTogdmFyY2hhcignaW1hZ2VfcmVwb3NpdG9yeScsIHsgbGVuZ3RoOiA1MTIgfSksXG4gIHNwZWNTbmFwc2hvdDoganNvbmIoJ3NwZWNfc25hcHNob3QnKS4kdHlwZTxMaXN0aW5nVmVyc2lvblNwZWNTbmFwc2hvdD4oKS5kZWZhdWx0KHt9KS5ub3ROdWxsKCksXG4gIGJyZWFraW5nOiBib29sZWFuKCdicmVha2luZycpLmRlZmF1bHQoZmFsc2UpLm5vdE51bGwoKSxcbiAgcGF1c2VkQXQ6IHRpbWVzdGFtcCgncGF1c2VkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIHlhbmtlZEF0OiB0aW1lc3RhbXAoJ3lhbmtlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICB5YW5rUmVhc29uOiB0ZXh0KCd5YW5rX3JlYXNvbicpLFxuICBkZXByZWNhdGVkQXQ6IHRpbWVzdGFtcCgnZGVwcmVjYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBkZXByZWNhdGlvbk1lc3NhZ2U6IHRleHQoJ2RlcHJlY2F0aW9uX21lc3NhZ2UnKSxcbiAgY2hhbmdlbG9nOiB0ZXh0KCdjaGFuZ2Vsb2cnKSxcbiAgdnVsbkNyaXRpY2FsOiBpbnRlZ2VyKCd2dWxuX2NyaXRpY2FsJyksXG4gIHZ1bG5IaWdoOiBpbnRlZ2VyKCd2dWxuX2hpZ2gnKSxcbiAgLy8gRml4YWJsZSBzdWJzZXQgKGdyeXBlIHJlcG9ydHMgYSBmaXhlZCB2ZXJzaW9uKTsgTlVMTCA9IHVuc2Nhbm5lZC5cbiAgdnVsbkNyaXRpY2FsRml4YWJsZTogaW50ZWdlcigndnVsbl9jcml0aWNhbF9maXhhYmxlJyksXG4gIHZ1bG5IaWdoRml4YWJsZTogaW50ZWdlcigndnVsbl9oaWdoX2ZpeGFibGUnKSxcbiAgc2Nhbm5lZEF0OiB0aW1lc3RhbXAoJ3NjYW5uZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgLy8gVGhlIG5pZ2h0bHkgcmVzY2FuJ3MgZmxhZyAoZml4YWJsZSBjcml0aWNhbHMgb3ZlciBQTFVHSU5fVlVMTl9NQVhfQ1JJVElDQUwpOyBOVUxMID0gbm90IGZsYWdnZWQuXG4gIHNjYW5GbGFnZ2VkQXQ6IHRpbWVzdGFtcCgnc2Nhbl9mbGFnZ2VkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIHNjYW5GbGFnOiBqc29uYignc2Nhbl9mbGFnJykuJHR5cGU8UGx1Z2luU2NhbkZsYWc+KCksXG4gIC8qKlxuICAgKiBUaGUgTEFTVCByZXNjYW4ncyBmaW5kaW5ncyBmb3IgdGhpcyB2ZXJzaW9uLCB3cml0dGVuIHdoZXRoZXIgb3Igbm90IHRoZVxuICAgKiBnYXRpbmcgZmxhZyB0cmlwcGVkLlxuICAgKlxuICAgKiBgc2Nhbl9mbGFnYCBpcyBzZXQgb25seSB3aGlsZSBmaXhhYmxlIGNyaXRpY2FscyBleGNlZWRcbiAgICogUExVR0lOX1ZVTE5fTUFYX0NSSVRJQ0FMLCBzbyBhIHZlcnNpb24gY2Fycnlpbmcgb25seSBIaWdoIGZpbmRpbmdzIHN0b3Jlc1xuICAgKiBub3RoaW5nIOKAlCBhbmQgdGhlIHZ1bG5lcmFiaWxpdHkgcmVwb3J0IHNlY3Rpb24sIHdob3NlIHdob2xlIGpvYiBpcyB0byBzaG93XG4gICAqIENyaXRpY2FsIEFORCBIaWdoIGV4cG9zdXJlLCBoYWQgbm8gc291cmNlIHRvIHJlYWQuIFRoaXMgaG9sZHMgdGhlIGNvdW50cyBhbmRcbiAgICogdGhlIHRvcCBmaW5kaW5ncyBmb3IgZXZlcnkgaW4tdXNlIHZlcnNpb24sIGluZGVwZW5kZW50IG9mIHRoZSBnYXRlOiB3aGF0IGFcbiAgICogcmVwb3J0IHNob3dzIGFuZCB3aGF0IGEgYnVpbGQgcmVmdXNlcyBhcmUgZGlmZmVyZW50IHF1ZXN0aW9ucy5cbiAgICovXG4gIHNjYW5TdW1tYXJ5OiBqc29uYignc2Nhbl9zdW1tYXJ5JykuJHR5cGU8UGx1Z2luU2NhblN1bW1hcnk+KCksXG4gIC8vIFRoZSBiYXNlIGltYWdlJ3MgY29uZmlnIGBjcmVhdGVkYCB0aW1lLCByZWNvcmRlZCBhdCBwdWJsaXNoOyBOVUxMID0gdW5rbm93bi5cbiAgYmFzZUltYWdlQ3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2Jhc2VfaW1hZ2VfY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICAvLyBXaGVuIG1haW50ZW5hbmNlIGNvbGxlY3RlZCB0aGlzIGxvbmcteWFua2VkLCB1bnJlZmVyZW5jZWQgdmVyc2lvbidzIHB1YmxpYy8qIGltYWdlOyBOVUxMID0gc3RpbGwgc3RvcmVkLlxuICBpbWFnZUNvbGxlY3RlZEF0OiB0aW1lc3RhbXAoJ2ltYWdlX2NvbGxlY3RlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBwdWJsaXNoZWRBdDogdGltZXN0YW1wKCdwdWJsaXNoZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICBwdWJsaXNoZWRCeTogdGV4dCgncHVibGlzaGVkX2J5Jykubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICBsaXN0aW5nVmVyc2lvblVuaXF1ZTogdW5pcXVlSW5kZXgoJ3BsdWdpbl9saXN0aW5nX3ZlcnNpb25fdW5pcXVlJykub24odGFibGUubGlzdGluZ0lkLCB0YWJsZS52ZXJzaW9uKSxcbiAgLy8gcHVibGljLyogR0MgZ3VhcmQgKyBkaWdlc3QgbG9va3Vwcy5cbiAgZGlnZXN0SWR4OiBpbmRleCgncGx1Z2luX2xpc3RpbmdfdmVyc2lvbl9kaWdlc3RfaWR4Jykub24odGFibGUuaW1hZ2VEaWdlc3QpLFxuICB2ZXJzaW9uQ2hlY2s6IGNoZWNrKCdwbHVnaW5fbGlzdGluZ192ZXJzaW9uc192ZXJzaW9uX2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS52ZXJzaW9ufSB+ICdeWzAtOV0rXFwuWzAtOV0rXFwuWzAtOV0rKC1bYS16QS1aMC05Li1dKyk/KFxcK1thLXpBLVowLTkuLV0rKT8kJ2AsXG4gICksXG4gIGltYWdlRGlnZXN0Q2hlY2s6IGNoZWNrKCdwbHVnaW5fbGlzdGluZ192ZXJzaW9uc19pbWFnZV9kaWdlc3RfY2hlY2snLFxuICAgIHNxbGAke3RhYmxlLmltYWdlRGlnZXN0fSBJUyBOVUxMIE9SICR7dGFibGUuaW1hZ2VEaWdlc3R9IH4gJ15zaGEyNTY6WzAtOWEtZl17NjR9JCdgKSxcbn0pKTtcblxuLyoqXG4gKiBTZWN1cml0eSBhZHZpc29yeSBhZ2FpbnN0IGEgbGlzdGluZydzIHZlcnNpb24gcmFuZ2UuXG4gKlxuICogQHRhYmxlIHBsdWdpbl9hZHZpc29yaWVzXG4gKi9cbmV4cG9ydCBjb25zdCBwbHVnaW5BZHZpc29yeSA9IHBnVGFibGUoJ3BsdWdpbl9hZHZpc29yaWVzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBsaXN0aW5nSWQ6IHV1aWQoJ2xpc3RpbmdfaWQnKS5ub3ROdWxsKCkucmVmZXJlbmNlcygoKSA9PiBwbHVnaW5MaXN0aW5nLmlkKSxcbiAgcHVibGlzaGVySWQ6IHV1aWQoJ3B1Ymxpc2hlcl9pZCcpLm5vdE51bGwoKS5yZWZlcmVuY2VzKCgpID0+IHB1Ymxpc2hlci5pZCksXG4gIC8vIFNlbXZlciByYW5nZSBvZiBhZmZlY3RlZCB2ZXJzaW9ucy5cbiAgYWZmZWN0ZWRSYW5nZTogdmFyY2hhcignYWZmZWN0ZWRfcmFuZ2UnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgZml4ZWRWZXJzaW9uOiB2YXJjaGFyKCdmaXhlZF92ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLFxuICBzZXZlcml0eTogdmFyY2hhcignc2V2ZXJpdHknLCB7IGxlbmd0aDogMTAgfSkuJHR5cGU8QWR2aXNvcnlTZXZlcml0eT4oKS5ub3ROdWxsKCksXG4gIHN1bW1hcnk6IHZhcmNoYXIoJ3N1bW1hcnknLCB7IGxlbmd0aDogMzAwIH0pLm5vdE51bGwoKSxcbiAgZGV0YWlsc01kOiB0ZXh0KCdkZXRhaWxzX21kJyksXG4gIGRldGFpbHNIdG1sOiB0ZXh0KCdkZXRhaWxzX2h0bWwnKSxcbiAgY3ZlSWRzOiB0ZXh0KCdjdmVfaWRzJykuYXJyYXkoKS5kZWZhdWx0KFtdKS5ub3ROdWxsKCksXG4gIHN0YXRlOiB2YXJjaGFyKCdzdGF0ZScsIHsgbGVuZ3RoOiAyMCB9KS4kdHlwZTxBZHZpc29yeVN0YXRlPigpLmRlZmF1bHQoJ2RyYWZ0Jykubm90TnVsbCgpLFxuICBzb3VyY2U6IHZhcmNoYXIoJ3NvdXJjZScsIHsgbGVuZ3RoOiAyMCB9KS4kdHlwZTxBZHZpc29yeVNvdXJjZT4oKS5ub3ROdWxsKCksXG4gIGNyZWF0ZWRCeTogdGV4dCgnY3JlYXRlZF9ieScpLm5vdE51bGwoKSxcbiAgcHVibGlzaGVkQnk6IHRleHQoJ3B1Ymxpc2hlZF9ieScpLFxuICBwdWJsaXNoZWRBdDogdGltZXN0YW1wKCdwdWJsaXNoZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgd2l0aGRyYXduQXQ6IHRpbWVzdGFtcCgnd2l0aGRyYXduX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICBsaXN0aW5nU3RhdGVJZHg6IGluZGV4KCdwbHVnaW5fYWR2aXNvcnlfbGlzdGluZ19zdGF0ZV9pZHgnKS5vbih0YWJsZS5saXN0aW5nSWQsIHRhYmxlLnN0YXRlKSxcbiAgcHVibGlzaGVySWR4OiBpbmRleCgncGx1Z2luX2Fkdmlzb3J5X3B1Ymxpc2hlcl9pZHgnKS5vbih0YWJsZS5wdWJsaXNoZXJJZCksXG4gIHNldmVyaXR5Q2hlY2s6IGNoZWNrKCdwbHVnaW5fYWR2aXNvcmllc19zZXZlcml0eV9jaGVjaycsXG4gICAgc3FsYCR7dGFibGUuc2V2ZXJpdHl9IElOICgnY3JpdGljYWwnLCAnaGlnaCcsICdtZWRpdW0nLCAnbG93JylgKSxcbiAgc3RhdGVDaGVjazogY2hlY2soJ3BsdWdpbl9hZHZpc29yaWVzX3N0YXRlX2NoZWNrJywgc3FsYCR7dGFibGUuc3RhdGV9IElOICgnZHJhZnQnLCAncHVibGlzaGVkJywgJ3dpdGhkcmF3bicpYCksXG4gIHNvdXJjZUNoZWNrOiBjaGVjaygncGx1Z2luX2Fkdmlzb3JpZXNfc291cmNlX2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS5zb3VyY2V9IElOICgncHVibGlzaGVyJywgJ21vZGVyYXRvcicsICdjdmVfcmVzY2FuJywgJ3JldmlldycpYCksXG59KSk7XG5cbi8qKlxuICogQSBwcm9wb3NlZCBlbmFibGUgb3Igd2lkZW5pbmcgb2YgYW4gYXV0by1hcHByb3ZhbCBydWxlLCB3YWl0aW5nIGZvciBhIFNFQ09ORFxuICogRWNvc3lzdGVtIE1hbmFnZXIgKG5ldmVyIHRoZSBwcm9wb3NlcikuIERpc2FibGluZyBvciBkZWxldGluZyBhIHJ1bGVcbiAqIG5hcnJvd3MgaXQgYW5kIGFwcGxpZXMgYXQgb25jZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRvQXBwcm92YWxSdWxlUGVuZGluZ0NoYW5nZSB7XG4gIHJlcXVlc3RlZEJ5OiBzdHJpbmc7XG4gIHJlcXVlc3RlZEF0OiBzdHJpbmc7XG4gIGVuYWJsZWQ6IGJvb2xlYW47XG4gIG5hbWU6IHN0cmluZztcbiAgY29uZGl0aW9uczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8qKlxuICogU3lzdGVtLW9yZyBhdXRvLWFwcHJvdmFsIHJ1bGVzOyBlbmFibGluZyBvciB3aWRlbmluZyBvbmVcbiAqIG5lZWRzIGEgc2Vjb25kIGFwcHJvdmVyIChgcGVuZGluZ0NoYW5nZWApLlxuICpcbiAqIEB0YWJsZSBlY29zeXN0ZW1fYXV0b19hcHByb3ZhbF9ydWxlc1xuICovXG5leHBvcnQgY29uc3QgZWNvc3lzdGVtQXV0b0FwcHJvdmFsUnVsZSA9IHBnVGFibGUoJ2Vjb3N5c3RlbV9hdXRvX2FwcHJvdmFsX3J1bGVzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBuYW1lOiB2YXJjaGFyKCduYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIGVuYWJsZWQ6IGJvb2xlYW4oJ2VuYWJsZWQnKS5kZWZhdWx0KGZhbHNlKS5ub3ROdWxsKCksXG4gIGNvbmRpdGlvbnM6IGpzb25iKCdjb25kaXRpb25zJykuJHR5cGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KCkuZGVmYXVsdCh7fSkubm90TnVsbCgpLFxuICBjcmVhdGVkQnk6IHRleHQoJ2NyZWF0ZWRfYnknKS5ub3ROdWxsKCksXG4gIC8vIFNlY29uZCBhcHByb3ZlciAobmV2ZXIgdGhlIGNyZWF0b3IpLlxuICBhcHByb3ZlZEJ5OiB0ZXh0KCdhcHByb3ZlZF9ieScpLFxuICBwZW5kaW5nQ2hhbmdlOiBqc29uYigncGVuZGluZ19jaGFuZ2UnKS4kdHlwZTxBdXRvQXBwcm92YWxSdWxlUGVuZGluZ0NoYW5nZT4oKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59KTtcblxuLyoqXG4gKiBUaGUgc2luZ2xlIHF1ZXVlIHRoZSBFY29zeXN0ZW0gY29uc29sZSB3b3JrcyBmcm9tLiBgZGlnZXN0YCBpcyBwaW5uZWRcbiAqIGF0IHN1Ym1pdDogYXBwcm92YWwgcHVibGlzaGVzIGV4YWN0bHkgaXQsIG9yIGZhaWxzIGNsb3NlZC4gYHBsdWdpbklkYFxuICogaGFzIG5vIEZLICh0aGUgb3JnIHJvdyBpcyBzb2Z0LWRlbGV0ZWQgYW5kIHB1cmdlZCBvbiBpdHMgb3duIHNjaGVkdWxlKS5cbiAqXG4gKiBAdGFibGUgcGx1Z2luX3B1Ymxpc2hfcmVxdWVzdHNcbiAqL1xuZXhwb3J0IGNvbnN0IHBsdWdpblB1Ymxpc2hSZXF1ZXN0ID0gcGdUYWJsZSgncGx1Z2luX3B1Ymxpc2hfcmVxdWVzdHMnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG4gIHB1Ymxpc2hlcklkOiB1dWlkKCdwdWJsaXNoZXJfaWQnKS5ub3ROdWxsKCkucmVmZXJlbmNlcygoKSA9PiBwdWJsaXNoZXIuaWQpLFxuICBsaXN0aW5nSWQ6IHV1aWQoJ2xpc3RpbmdfaWQnKS5yZWZlcmVuY2VzKCgpID0+IHBsdWdpbkxpc3RpbmcuaWQpLFxuICBwbHVnaW5JZDogdXVpZCgncGx1Z2luX2lkJyksXG4gIHZlcnNpb246IHZhcmNoYXIoJ3ZlcnNpb24nLCB7IGxlbmd0aDogNTAgfSksXG4gIGRpZ2VzdDogdmFyY2hhcignZGlnZXN0JywgeyBsZW5ndGg6IDcxIH0pLFxuICBraW5kOiB2YXJjaGFyKCdraW5kJywgeyBsZW5ndGg6IDIwIH0pLiR0eXBlPFB1Ymxpc2hSZXF1ZXN0S2luZD4oKS5ub3ROdWxsKCksXG4gIHNlY3VyaXR5Rml4QWR2aXNvcnlJZDogdXVpZCgnc2VjdXJpdHlfZml4X2Fkdmlzb3J5X2lkJykucmVmZXJlbmNlcygoKSA9PiBwbHVnaW5BZHZpc29yeS5pZCksXG4gIHBheWxvYWQ6IGpzb25iKCdwYXlsb2FkJykuJHR5cGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KCkuZGVmYXVsdCh7fSkubm90TnVsbCgpLFxuICBzdGF0dXM6IHZhcmNoYXIoJ3N0YXR1cycsIHsgbGVuZ3RoOiAzMCB9KS4kdHlwZTxQdWJsaXNoUmVxdWVzdFN0YXR1cz4oKS5kZWZhdWx0KCdwZW5kaW5nJykubm90TnVsbCgpLFxuICBsYW5lOiB2YXJjaGFyKCdsYW5lJywgeyBsZW5ndGg6IDEwIH0pLiR0eXBlPFB1Ymxpc2hSZXF1ZXN0TGFuZT4oKS5kZWZhdWx0KCdzdGFuZGFyZCcpLm5vdE51bGwoKSxcbiAgc3VibWl0dGVkQnk6IHRleHQoJ3N1Ym1pdHRlZF9ieScpLm5vdE51bGwoKSxcbiAgc3VibWl0dGVkT3JnSWQ6IHZhcmNoYXIoJ3N1Ym1pdHRlZF9vcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLFxuICBmaXJzdEFwcHJvdmVkQnk6IHRleHQoJ2ZpcnN0X2FwcHJvdmVkX2J5JyksXG4gIGRlY2lkZWRCeTogdGV4dCgnZGVjaWRlZF9ieScpLFxuICBzZWNvbmRBcHByb3ZlZEJ5OiB0ZXh0KCdzZWNvbmRfYXBwcm92ZWRfYnknKSxcbiAgcmVhc29uOiB0ZXh0KCdyZWFzb24nKSxcbiAgYXV0b1J1bGVJZDogdXVpZCgnYXV0b19ydWxlX2lkJykucmVmZXJlbmNlcygoKSA9PiBlY29zeXN0ZW1BdXRvQXBwcm92YWxSdWxlLmlkKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICBkZWNpZGVkQXQ6IHRpbWVzdGFtcCgnZGVjaWRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxufSwgKHRhYmxlKSA9PiAoe1xuICBzdGF0dXNDcmVhdGVkSWR4OiBpbmRleCgncGx1Z2luX3B1Ymxpc2hfcmVxdWVzdF9zdGF0dXNfY3JlYXRlZF9pZHgnKS5vbih0YWJsZS5zdGF0dXMsIHRhYmxlLmNyZWF0ZWRBdCksXG4gIHB1Ymxpc2hlcklkeDogaW5kZXgoJ3BsdWdpbl9wdWJsaXNoX3JlcXVlc3RfcHVibGlzaGVyX2lkeCcpLm9uKHRhYmxlLnB1Ymxpc2hlcklkLCB0YWJsZS5jcmVhdGVkQXQpLFxuICAvLyBBdCBtb3N0IE9ORSBvcGVuIHJlcXVlc3Qgb2YgYSBraW5kIHBlciAocHVibGlzaGVyLCBsaXN0aW5nLCB2ZXJzaW9uKS4gQVxuICAvLyBuZXdfbGlzdGluZyBoYXMgbm8gbGlzdGluZyB5ZXQsIHNvIHRoZSByZXF1ZXN0ZWQgbmFtZSAocGF5bG9hZC0+PiduYW1lJylcbiAgLy8gc3RhbmRzIGluOyBDT0FMRVNDRSBiZWNhdXNlIE5VTExzIGFyZSBESVNUSU5DVCBpbiBhIHVuaXF1ZSBpbmRleC4gQWR2aXNvcnlcbiAgLy8gZHJhZnRzIGFyZSBleGVtcHQ6IGEgbGlzdGluZyBjYW4gY2Fycnkgc2V2ZXJhbCBhdCBvbmNlIChkaWZmZXJlbnQgcmFuZ2VzXG4gIC8vIGFuZCBDVkUgc2V0cyksIGVhY2ggZGVkdXBsaWNhdGVkIGJ5IHRoZSBhZHZpc29yeSBzZXJ2aWNlLiBNdXN0IG1hdGNoIHRoZVxuICAvLyBwb3N0Z3Jlcy1pbml0LnNxbCBleHByZXNzaW9uIGluZGV4LlxuICBvcGVuVW5pcXVlOiB1bmlxdWVJbmRleCgncGx1Z2luX3B1Ymxpc2hfcmVxdWVzdF9vcGVuX3VuaXF1ZScpXG4gICAgLm9uKFxuICAgICAgdGFibGUucHVibGlzaGVySWQsXG4gICAgICB0YWJsZS5raW5kLFxuICAgICAgc3FsYGNvYWxlc2NlKCR7dGFibGUubGlzdGluZ0lkfTo6dGV4dCwgJHt0YWJsZS5wYXlsb2FkfS0+PiduYW1lJywgJycpYCxcbiAgICAgIHNxbGBjb2FsZXNjZSgke3RhYmxlLnZlcnNpb259LCAnJylgLFxuICAgIClcbiAgICAud2hlcmUoc3FsYHN0YXR1cyBJTiAoJ3BlbmRpbmcnLCAncGVuZGluZ19zZWNvbmRfYXBwcm92YWwnKSBBTkQga2luZCA8PiAnYWR2aXNvcnknYCksXG4gIGRpZ2VzdENoZWNrOiBjaGVjaygncGx1Z2luX3B1Ymxpc2hfcmVxdWVzdHNfZGlnZXN0X2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS5kaWdlc3R9IElTIE5VTEwgT1IgJHt0YWJsZS5kaWdlc3R9IH4gJ15zaGEyNTY6WzAtOWEtZl17NjR9JCdgKSxcbiAga2luZENoZWNrOiBjaGVjaygncGx1Z2luX3B1Ymxpc2hfcmVxdWVzdHNfa2luZF9jaGVjaycsIHNxbGAke3RhYmxlLmtpbmR9IElOICgnbmV3X2xpc3RpbmcnLCAnbmV3X3ZlcnNpb24nLFxuICAgICdsaXN0aW5nX3VwZGF0ZScsICd5YW5rJywgJ3VucGF1c2UnLCAndHJhbnNmZXInLCAnY2xhaW0nLCAncHJvZmlsZV9jaGFuZ2UnLCAnYWR2aXNvcnknLCAndmVyaWZ5JywgJ21vZGVyYXRpb24nLFxuICAgICdzdWJtaXNzaW9uJylgKSxcbiAgc3RhdHVzQ2hlY2s6IGNoZWNrKCdwbHVnaW5fcHVibGlzaF9yZXF1ZXN0c19zdGF0dXNfY2hlY2snLFxuICAgIHNxbGAke3RhYmxlLnN0YXR1c30gSU4gKCdwZW5kaW5nJywgJ3BlbmRpbmdfc2Vjb25kX2FwcHJvdmFsJywgJ2FwcHJvdmVkJywgJ3JlamVjdGVkJywgJ3dpdGhkcmF3bicpYCksXG4gIGxhbmVDaGVjazogY2hlY2soJ3BsdWdpbl9wdWJsaXNoX3JlcXVlc3RzX2xhbmVfY2hlY2snLCBzcWxgJHt0YWJsZS5sYW5lfSBJTiAoJ3N0YW5kYXJkJywgJ3NlY3VyaXR5JylgKSxcbn0pKTtcblxuLyoqXG4gKiBOYW1lcyBoZWxkIGJhY2sgZnJvbSBoYW5kbGVzL2xpc3RpbmdzIChPZmZpY2lhbC9WZXJpZmllZCByZXNlcnZhdGlvbnMsXG4gKiBjb25mdXNhYmxlcykuIGBwdWJsaXNoZXJJZGAgPSB0aGUgcHVibGlzaGVyIHRoZSBuYW1lIGlzIHJlc2VydmVkIEZPUiwgaWYgYW55LlxuICpcbiAqIEB0YWJsZSBlY29zeXN0ZW1fcmVzZXJ2ZWRfbmFtZXNcbiAqL1xuZXhwb3J0IGNvbnN0IGVjb3N5c3RlbVJlc2VydmVkTmFtZSA9IHBnVGFibGUoJ2Vjb3N5c3RlbV9yZXNlcnZlZF9uYW1lcycsIHtcbiAgbmFtZTogdmFyY2hhcignbmFtZScsIHsgbGVuZ3RoOiAyNTUgfSkucHJpbWFyeUtleSgpLFxuICByZWFzb246IHRleHQoJ3JlYXNvbicpLFxuICBwdWJsaXNoZXJJZDogdXVpZCgncHVibGlzaGVyX2lkJykucmVmZXJlbmNlcygoKSA9PiBwdWJsaXNoZXIuaWQpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59KTtcblxuLyoqXG4gKiBJbnN0YW5jZS13aWRlIGVjb3N5c3RlbSBrbm9icyAoZmxhZ3MsIFNMQSwgdGhyZXNob2xkcyksIGtleS92YWx1ZS5cbiAqXG4gKiBAdGFibGUgZWNvc3lzdGVtX3NldHRpbmdzXG4gKi9cbmV4cG9ydCBjb25zdCBlY29zeXN0ZW1TZXR0aW5nID0gcGdUYWJsZSgnZWNvc3lzdGVtX3NldHRpbmdzJywge1xuICBrZXk6IHZhcmNoYXIoJ2tleScsIHsgbGVuZ3RoOiAxMDAgfSkucHJpbWFyeUtleSgpLFxuICB2YWx1ZToganNvbmIoJ3ZhbHVlJykuJHR5cGU8dW5rbm93bj4oKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRCeTogdGV4dCgndXBkYXRlZF9ieScpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59KTtcblxuLy8gYGVjb3N5c3RlbV9jb2xsZWN0aW9uc2Agd2FzIERFTEVURUQgaGVyZS4gSXQgbW9kZWxsZWQgY3VyYXRlZCBkaXJlY3RvcnkgY29sbGVjdGlvbnNcbi8vIChcIkZlYXR1cmVkXCIsIFwiU2VjdXJpdHkgc2Nhbm5lcnNcIikgYXMgc2x1ZyArIHRpdGxlICsgYSBKU09OQiBsaXN0IG9mIGxpc3RpbmcgaWRzLCBhbmRcbi8vIG5vdGhpbmcgZXZlciB3cm90ZSBvciByZWFkIG9uZSDigJQgdGhlIHB1YmxpYyBkaXJlY3RvcnkgcmFua3MgYW5kIGZhY2V0cyBsaXN0aW5nc1xuLy8gZGlyZWN0bHkuIEEgc2NoZW1hIHRlc3QgYXNzZXJ0aW5nIGl0cyBzaGFwZSB3YXMgdGhlIG9ubHkgdGhpbmcga2VlcGluZyBpdCBhbGl2ZS5cblxuLyoqXG4gKiBBIGxpc3RpbmcgcmV2aWV3LiBgYXV0aG9yT3JnSWRgIGZlZWRzIHRoZSBpbnRlZ3JpdHkgcnVsZXMgKG5vXG4gKiBzZWxmLXJldmlldywgcGVyLW9yZyByYXRlIGxpbWl0LCB2ZXJpZmllZCB1c2UpIGFuZCBpcyBORVZFUiBleHBvc2VkLiBHRFBSXG4gKiB1c2VyIGRlbGV0aW9uIGFub255bWl6ZXM6IGBhdXRob3JVc2VySWRgIGFuZCB0aGUgYm9keSBnbyBOVUxMLCB0aGUgcmF0aW5nIHN0YXlzLlxuICpcbiAqIEB0YWJsZSBwbHVnaW5fcmV2aWV3c1xuICovXG5leHBvcnQgY29uc3QgcGx1Z2luUmV2aWV3ID0gcGdUYWJsZSgncGx1Z2luX3Jldmlld3MnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG4gIGxpc3RpbmdJZDogdXVpZCgnbGlzdGluZ19pZCcpLm5vdE51bGwoKS5yZWZlcmVuY2VzKCgpID0+IHBsdWdpbkxpc3RpbmcuaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KSxcbiAgdmVyc2lvbjogdmFyY2hhcigndmVyc2lvbicsIHsgbGVuZ3RoOiA1MCB9KSxcbiAgcmF0aW5nOiBzbWFsbGludCgncmF0aW5nJykubm90TnVsbCgpLFxuICB0aXRsZTogdmFyY2hhcigndGl0bGUnLCB7IGxlbmd0aDogMTIwIH0pLFxuICBib2R5TWQ6IHRleHQoJ2JvZHlfbWQnKSxcbiAgYm9keUh0bWw6IHRleHQoJ2JvZHlfaHRtbCcpLFxuICBhdXRob3JVc2VySWQ6IHRleHQoJ2F1dGhvcl91c2VyX2lkJyksXG4gIGF1dGhvck9yZ0lkOiB2YXJjaGFyKCdhdXRob3Jfb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KSxcbiAgLy8gVGhlIG9ubHkgYXV0aG9yIGZpZWxkIGV2ZXIgc2hvd24gKHNuYXBzaG90IGF0IHdyaXRlIHRpbWU7IE5VTEwgb25jZSBhbm9ueW1pemVkKS5cbiAgYXV0aG9yRGlzcGxheU5hbWU6IHZhcmNoYXIoJ2F1dGhvcl9kaXNwbGF5X25hbWUnLCB7IGxlbmd0aDogMTAwIH0pLFxuICB2ZXJpZmllZFVzZTogYm9vbGVhbigndmVyaWZpZWRfdXNlJykuZGVmYXVsdChmYWxzZSkubm90TnVsbCgpLFxuICBzdGF0dXM6IHZhcmNoYXIoJ3N0YXR1cycsIHsgbGVuZ3RoOiAxMCB9KS4kdHlwZTxSZXZpZXdTdGF0dXM+KCkuZGVmYXVsdCgncHVibGlzaGVkJykubm90TnVsbCgpLFxuICBob2xkUmVhc29uOiB2YXJjaGFyKCdob2xkX3JlYXNvbicsIHsgbGVuZ3RoOiAyMCB9KS4kdHlwZTxSZXZpZXdIb2xkUmVhc29uPigpLFxuICBtb2RlcmF0aW9uUmVhc29uOiB0ZXh0KCdtb2RlcmF0aW9uX3JlYXNvbicpLFxuICBoZWxwZnVsQ291bnQ6IGludGVnZXIoJ2hlbHBmdWxfY291bnQnKS5kZWZhdWx0KDApLm5vdE51bGwoKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIGxpc3RpbmdBdXRob3JVbmlxdWU6IHVuaXF1ZUluZGV4KCdwbHVnaW5fcmV2aWV3X2xpc3RpbmdfYXV0aG9yX3VuaXF1ZScpLm9uKHRhYmxlLmxpc3RpbmdJZCwgdGFibGUuYXV0aG9yVXNlcklkKSxcbiAgbGlzdGluZ1N0YXR1c0NyZWF0ZWRJZHg6IGluZGV4KCdwbHVnaW5fcmV2aWV3X2xpc3Rpbmdfc3RhdHVzX2NyZWF0ZWRfaWR4JylcbiAgICAub24odGFibGUubGlzdGluZ0lkLCB0YWJsZS5zdGF0dXMsIHRhYmxlLmNyZWF0ZWRBdCksXG4gIC8vIFBlci1vcmcgZGFpbHkgcmV2aWV3IGNhcC5cbiAgYXV0aG9yT3JnQ3JlYXRlZElkeDogaW5kZXgoJ3BsdWdpbl9yZXZpZXdfYXV0aG9yX29yZ19jcmVhdGVkX2lkeCcpLm9uKHRhYmxlLmF1dGhvck9yZ0lkLCB0YWJsZS5jcmVhdGVkQXQpLFxuICAvLyBNb2RlcmF0aW9uIHF1ZXVlLlxuICBzdGF0dXNVcGRhdGVkSWR4OiBpbmRleCgncGx1Z2luX3Jldmlld19zdGF0dXNfdXBkYXRlZF9pZHgnKS5vbih0YWJsZS5zdGF0dXMsIHRhYmxlLnVwZGF0ZWRBdCksXG4gIHJhdGluZ0NoZWNrOiBjaGVjaygncGx1Z2luX3Jldmlld3NfcmF0aW5nX2NoZWNrJywgc3FsYCR7dGFibGUucmF0aW5nfSBCRVRXRUVOIDEgQU5EIDVgKSxcbiAgc3RhdHVzQ2hlY2s6IGNoZWNrKCdwbHVnaW5fcmV2aWV3c19zdGF0dXNfY2hlY2snLCBzcWxgJHt0YWJsZS5zdGF0dXN9IElOICgncHVibGlzaGVkJywgJ2hlbGQnLCAncmVtb3ZlZCcpYCksXG4gIGhvbGRSZWFzb25DaGVjazogY2hlY2soJ3BsdWdpbl9yZXZpZXdzX2hvbGRfcmVhc29uX2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS5ob2xkUmVhc29ufSBJTiAoJ3JlcG9ydHMnLCAnYnVyc3QnLCAnZmlsdGVyJywgJ3NlY3VyaXR5JywgJ21vZGVyYXRvcicpYCksXG59KSk7XG5cbi8qKlxuICogVGhlIG9uZSBwdWJsaWMgcHVibGlzaGVyIHJlcGx5IHRvIGEgcmV2aWV3LlxuICpcbiAqIEB0YWJsZSBwbHVnaW5fcmV2aWV3X3JlcGxpZXNcbiAqL1xuZXhwb3J0IGNvbnN0IHBsdWdpblJldmlld1JlcGx5ID0gcGdUYWJsZSgncGx1Z2luX3Jldmlld19yZXBsaWVzJywge1xuICByZXZpZXdJZDogdXVpZCgncmV2aWV3X2lkJykucHJpbWFyeUtleSgpLnJlZmVyZW5jZXMoKCkgPT4gcGx1Z2luUmV2aWV3LmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSksXG4gIHB1Ymxpc2hlcklkOiB1dWlkKCdwdWJsaXNoZXJfaWQnKS5ub3ROdWxsKCkucmVmZXJlbmNlcygoKSA9PiBwdWJsaXNoZXIuaWQpLFxuICBhdXRob3JVc2VySWQ6IHRleHQoJ2F1dGhvcl91c2VyX2lkJyksXG4gIGJvZHlNZDogdGV4dCgnYm9keV9tZCcpLm5vdE51bGwoKSxcbiAgYm9keUh0bWw6IHRleHQoJ2JvZHlfaHRtbCcpLm5vdE51bGwoKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59KTtcblxuLyoqXG4gKiBcIlJlcG9ydCByZXZpZXdcIiDigJQgb25lIHBlciByZXBvcnRlciBwZXIgcmV2aWV3OyBOIHJlcG9ydHMgYXV0by1ob2xkIGl0LlxuICpcbiAqIEB0YWJsZSBwbHVnaW5fcmV2aWV3X3JlcG9ydHNcbiAqL1xuZXhwb3J0IGNvbnN0IHBsdWdpblJldmlld1JlcG9ydCA9IHBnVGFibGUoJ3BsdWdpbl9yZXZpZXdfcmVwb3J0cycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgcmV2aWV3SWQ6IHV1aWQoJ3Jldmlld19pZCcpLm5vdE51bGwoKS5yZWZlcmVuY2VzKCgpID0+IHBsdWdpblJldmlldy5pZCwgeyBvbkRlbGV0ZTogJ2Nhc2NhZGUnIH0pLFxuICByZXBvcnRlclVzZXJJZDogdGV4dCgncmVwb3J0ZXJfdXNlcl9pZCcpLm5vdE51bGwoKSxcbiAgY2F0ZWdvcnk6IHZhcmNoYXIoJ2NhdGVnb3J5JywgeyBsZW5ndGg6IDIwIH0pLiR0eXBlPFJldmlld1JlcG9ydENhdGVnb3J5PigpLmRlZmF1bHQoJ2FidXNlJykubm90TnVsbCgpLFxuICByZWFzb246IHRleHQoJ3JlYXNvbicpLFxuICAvLyBTZXQgb25jZSBhIG1vZGVyYXRvciByZWxlYXNlZCBvciByZW1vdmVkIHRoZSByZXZpZXcuXG4gIHJlc29sdmVkQXQ6IHRpbWVzdGFtcCgncmVzb2x2ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICByZXZpZXdSZXBvcnRlclVuaXF1ZTogdW5pcXVlSW5kZXgoJ3BsdWdpbl9yZXZpZXdfcmVwb3J0X3VuaXF1ZScpLm9uKHRhYmxlLnJldmlld0lkLCB0YWJsZS5yZXBvcnRlclVzZXJJZCksXG4gIG9wZW5JZHg6IGluZGV4KCdwbHVnaW5fcmV2aWV3X3JlcG9ydF9vcGVuX2lkeCcpLm9uKHRhYmxlLnJldmlld0lkKS53aGVyZShzcWxgJHt0YWJsZS5yZXNvbHZlZEF0fSBJUyBOVUxMYCksXG4gIGNhdGVnb3J5Q2hlY2s6IGNoZWNrKCdwbHVnaW5fcmV2aWV3X3JlcG9ydHNfY2F0ZWdvcnlfY2hlY2snLFxuICAgIHNxbGAke3RhYmxlLmNhdGVnb3J5fSBJTiAoJ3NwYW0nLCAnYWJ1c2UnLCAnb2ZmX3RvcGljJywgJ3NlY3VyaXR5JylgKSxcbn0pKTtcblxuLyoqXG4gKiBPbmUgXCJoZWxwZnVsXCIgdm90ZSBwZXIgdXNlciBwZXIgcmV2aWV3LlxuICpcbiAqIEB0YWJsZSBwbHVnaW5fcmV2aWV3X3ZvdGVzXG4gKi9cbmV4cG9ydCBjb25zdCBwbHVnaW5SZXZpZXdWb3RlID0gcGdUYWJsZSgncGx1Z2luX3Jldmlld192b3RlcycsIHtcbiAgcmV2aWV3SWQ6IHV1aWQoJ3Jldmlld19pZCcpLm5vdE51bGwoKS5yZWZlcmVuY2VzKCgpID0+IHBsdWdpblJldmlldy5pZCwgeyBvbkRlbGV0ZTogJ2Nhc2NhZGUnIH0pLFxuICB1c2VySWQ6IHRleHQoJ3VzZXJfaWQnKS5ub3ROdWxsKCksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgcGs6IHByaW1hcnlLZXkoeyBjb2x1bW5zOiBbdGFibGUucmV2aWV3SWQsIHRhYmxlLnVzZXJJZF0gfSksXG59KSk7XG5cbi8qKlxuICogUmV2aWV3IGVkaXQgaGlzdG9yeTogdGhlIFBSSU9SIGNvbnRlbnQsIGFwcGVuZGVkIG9uIGV2ZXJ5IGVkaXQuXG4gKlxuICogQHRhYmxlIHBsdWdpbl9yZXZpZXdfaGlzdG9yeVxuICovXG5leHBvcnQgY29uc3QgcGx1Z2luUmV2aWV3SGlzdG9yeSA9IHBnVGFibGUoJ3BsdWdpbl9yZXZpZXdfaGlzdG9yeScsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgcmV2aWV3SWQ6IHV1aWQoJ3Jldmlld19pZCcpLm5vdE51bGwoKS5yZWZlcmVuY2VzKCgpID0+IHBsdWdpblJldmlldy5pZCwgeyBvbkRlbGV0ZTogJ2Nhc2NhZGUnIH0pLFxuICB2ZXJzaW9uOiB2YXJjaGFyKCd2ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLFxuICByYXRpbmc6IHNtYWxsaW50KCdyYXRpbmcnKS5ub3ROdWxsKCksXG4gIHRpdGxlOiB2YXJjaGFyKCd0aXRsZScsIHsgbGVuZ3RoOiAxMjAgfSksXG4gIGJvZHlNZDogdGV4dCgnYm9keV9tZCcpLFxuICBlZGl0ZWRBdDogdGltZXN0YW1wKCdlZGl0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICByZXZpZXdJZHg6IGluZGV4KCdwbHVnaW5fcmV2aWV3X2hpc3RvcnlfcmV2aWV3X2lkeCcpLm9uKHRhYmxlLnJldmlld0lkLCB0YWJsZS5lZGl0ZWRBdCksXG4gIHJhdGluZ0NoZWNrOiBjaGVjaygncGx1Z2luX3Jldmlld19oaXN0b3J5X3JhdGluZ19jaGVjaycsIHNxbGAke3RhYmxlLnJhdGluZ30gQkVUV0VFTiAxIEFORCA1YCksXG59KSk7XG5cbi8qKlxuICogRGVub3JtYWxpemVkIHBlci1saXN0aW5nIHN0YXRzLCByZWNvbXB1dGVkIGJ5IGEgam9iLiBgYWN0aXZlT3JnQ291bnRgIGlzXG4gKiBwdWJsaWMgb25seSB3aGVuID49IDUgKHRoZSBgcHVibGljX2xpc3RpbmdzYCB2aWV3IGVuZm9yY2VzIGl0KS5cbiAqXG4gKiBAdGFibGUgcGx1Z2luX3N0YXRzXG4gKi9cbmV4cG9ydCBjb25zdCBwbHVnaW5TdGF0cyA9IHBnVGFibGUoJ3BsdWdpbl9zdGF0cycsIHtcbiAgbGlzdGluZ0lkOiB1dWlkKCdsaXN0aW5nX2lkJykucHJpbWFyeUtleSgpLnJlZmVyZW5jZXMoKCkgPT4gcGx1Z2luTGlzdGluZy5pZCwgeyBvbkRlbGV0ZTogJ2Nhc2NhZGUnIH0pLFxuICByYXRpbmdCYXllczogZG91YmxlUHJlY2lzaW9uKCdyYXRpbmdfYmF5ZXMnKSxcbiAgcmF0aW5nQ291bnQ6IGludGVnZXIoJ3JhdGluZ19jb3VudCcpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICAvLyBTdGFyIGRpc3RyaWJ1dGlvbjogeyBcIjFcIjogbiwg4oCmLCBcIjVcIjogbiB9LlxuICBkaXN0OiBqc29uYignZGlzdCcpLiR0eXBlPFJlY29yZDxzdHJpbmcsIG51bWJlcj4+KCkuZGVmYXVsdCh7fSkubm90TnVsbCgpLFxuICAvLyBcIlJlY2VudCB2ZXJzaW9uc1wiIHJhdGluZyBvdmVyIHRoZSBsYXN0IHR3byBtaW5vcnMuXG4gIHJlY2VudFJhdGluZzogZG91YmxlUHJlY2lzaW9uKCdyZWNlbnRfcmF0aW5nJyksXG4gIGluc3RhbGxDb3VudDogaW50ZWdlcignaW5zdGFsbF9jb3VudCcpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICBhY3RpdmVPcmdDb3VudDogaW50ZWdlcignYWN0aXZlX29yZ19jb3VudCcpLmRlZmF1bHQoMCkubm90TnVsbCgpLFxuICBzdWNjZXNzUmF0ZTMwZDogZG91YmxlUHJlY2lzaW9uKCdzdWNjZXNzX3JhdGVfMzBkJyksXG4gIGhlYWx0aFNjb3JlOiBkb3VibGVQcmVjaXNpb24oJ2hlYWx0aF9zY29yZScpLFxuICAvLyBQZXItY29tcG9uZW50IGhlYWx0aCBzY29yZXMgYW5kIHdlaWdodHMsIGZvciB0aGUgYnJlYWtkb3duIHBhbmVsLlxuICBoZWFsdGhCcmVha2Rvd246IGpzb25iKCdoZWFsdGhfYnJlYWtkb3duJykuJHR5cGU8SGVhbHRoQnJlYWtkb3duPigpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59KTtcblxuLyoqXG4gKiBBbm9ueW1vdXMgcHVibGljIHN1Ym1pc3Npb24uIFRoZSBlbWFpbCBpcyBrZXB0IGhhc2hlZCAocmF0ZSBsaW1pdHMsXG4gKiBjbGFpbSBtYXRjaGluZykgYW5kIGVuY3J5cHRlZCAodGFrZWRvd24gbm90aWNlcyBvbmx5KSBhbmQgcHVyZ2VkIGF0XG4gKiBgZW1haWxQdXJnZUFmdGVyYC4gTm90aGluZyBoZXJlIGlzIGV2ZXIgbGlzdGVkIG9yIHJlc29sdmFibGUuXG4gKlxuICogQHRhYmxlIHBsdWdpbl9zdWJtaXNzaW9uc1xuICovXG5leHBvcnQgY29uc3QgcGx1Z2luU3VibWlzc2lvbiA9IHBnVGFibGUoJ3BsdWdpbl9zdWJtaXNzaW9ucycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgc3RhdHVzOiB2YXJjaGFyKCdzdGF0dXMnLCB7IGxlbmd0aDogMzAgfSkuJHR5cGU8U3VibWlzc2lvblN0YXR1cz4oKS5kZWZhdWx0KCdwZW5kaW5nX3ZlcmlmaWNhdGlvbicpLm5vdE51bGwoKSxcbiAgZW1haWxIYXNoOiB2YXJjaGFyKCdlbWFpbF9oYXNoJywgeyBsZW5ndGg6IDY0IH0pLFxuICBlbWFpbEVuYzogdGV4dCgnZW1haWxfZW5jJyksXG4gIHZlcmlmeVRva2VuSGFzaDogdmFyY2hhcigndmVyaWZ5X3Rva2VuX2hhc2gnLCB7IGxlbmd0aDogNjQgfSksXG4gIHZlcmlmeUV4cGlyZXNBdDogdGltZXN0YW1wKCd2ZXJpZnlfZXhwaXJlc19hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICB2ZXJpZmllZEF0OiB0aW1lc3RhbXAoJ3ZlcmlmaWVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIC8vIHNoYTI1NiBvZiB0aGUgc3RhdHVzIHRva2VuIChyZXR1cm5lZCBieSB2ZXJpZnkgYW5kIGluIE4xL04zL040IGVtYWlscykg4oCUXG4gIC8vIHRoZSBzdWJtaXR0ZXIncyBvbmx5IHJlYWQgaGFuZGxlIG9uIHRoZSBzdWJtaXNzaW9uLlxuICBzdGF0dXNUb2tlbkhhc2g6IHZhcmNoYXIoJ3N0YXR1c190b2tlbl9oYXNoJywgeyBsZW5ndGg6IDY0IH0pLFxuICBuYW1lOiB2YXJjaGFyKCduYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHZlcnNpb246IHZhcmNoYXIoJ3ZlcnNpb24nLCB7IGxlbmd0aDogNTAgfSkubm90TnVsbCgpLFxuICBzcGVjOiBqc29uYignc3BlYycpLiR0eXBlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PigpLmRlZmF1bHQoe30pLm5vdE51bGwoKSxcbiAgLy8gVGhlIGFjY2VwdC1vci1lZGl0IGNhdGFsb2cgdmFsdWVzICsgcHJvdmVuYW5jZSBhbmQgdGhlIERvY2tlcmZpbGUsXG4gIC8vIGNhcHR1cmVkIGF0IHN1Ym1pdCBzbyBtb2RlcmF0aW9uIHJldmlld3MgZXhhY3RseSB3aGF0IHdhcyBzdWJtaXR0ZWQuXG4gIGNhdGFsb2c6IGpzb25iKCdjYXRhbG9nJykuJHR5cGU8U3VibWlzc2lvbkNhdGFsb2c+KCkuZGVmYXVsdCh7IHZhbHVlczoge30sIHNvdXJjZXM6IHt9IH0pLm5vdE51bGwoKSxcbiAgZG9ja2VyZmlsZTogdGV4dCgnZG9ja2VyZmlsZScpLFxuICBhcnRpZmFjdEtleTogdmFyY2hhcignYXJ0aWZhY3Rfa2V5JywgeyBsZW5ndGg6IDEwMjQgfSksXG4gIHF1YXJhbnRpbmVJbWFnZVJlZjogdmFyY2hhcigncXVhcmFudGluZV9pbWFnZV9yZWYnLCB7IGxlbmd0aDogMTAyNCB9KSxcbiAgZ2F0ZVJlcG9ydDoganNvbmIoJ2dhdGVfcmVwb3J0JykuJHR5cGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KCksXG4gIGhldXJpc3RpY3M6IGpzb25iKCdoZXVyaXN0aWNzJykuJHR5cGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KCksXG4gIGxpc3RpbmdJZDogdXVpZCgnbGlzdGluZ19pZCcpLnJlZmVyZW5jZXMoKCkgPT4gcGx1Z2luTGlzdGluZy5pZCksXG4gIGRlY2lkZWRCeTogdGV4dCgnZGVjaWRlZF9ieScpLFxuICByZWFzb246IHRleHQoJ3JlYXNvbicpLFxuICBjbGllbnRJcEhhc2g6IHZhcmNoYXIoJ2NsaWVudF9pcF9oYXNoJywgeyBsZW5ndGg6IDY0IH0pLFxuICBleHBpcmVzQXQ6IHRpbWVzdGFtcCgnZXhwaXJlc19hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLm5vdE51bGwoKSxcbiAgZGVjaWRlZEF0OiB0aW1lc3RhbXAoJ2RlY2lkZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgZW1haWxQdXJnZUFmdGVyOiB0aW1lc3RhbXAoJ2VtYWlsX3B1cmdlX2FmdGVyJywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICBzdGF0dXNDcmVhdGVkSWR4OiBpbmRleCgncGx1Z2luX3N1Ym1pc3Npb25fc3RhdHVzX2NyZWF0ZWRfaWR4Jykub24odGFibGUuc3RhdHVzLCB0YWJsZS5jcmVhdGVkQXQpLFxuICAvLyBQZXItZW1haWwgLyBwZXItSVAgZGFpbHkgcmF0ZSBsaW1pdHMuXG4gIGVtYWlsQ3JlYXRlZElkeDogaW5kZXgoJ3BsdWdpbl9zdWJtaXNzaW9uX2VtYWlsX2NyZWF0ZWRfaWR4Jykub24odGFibGUuZW1haWxIYXNoLCB0YWJsZS5jcmVhdGVkQXQpLFxuICBpcENyZWF0ZWRJZHg6IGluZGV4KCdwbHVnaW5fc3VibWlzc2lvbl9pcF9jcmVhdGVkX2lkeCcpLm9uKHRhYmxlLmNsaWVudElwSGFzaCwgdGFibGUuY3JlYXRlZEF0KSxcbiAgdmVyaWZ5VG9rZW5VbmlxdWU6IHVuaXF1ZUluZGV4KCdwbHVnaW5fc3VibWlzc2lvbl92ZXJpZnlfdG9rZW5fdW5pcXVlJylcbiAgICAub24odGFibGUudmVyaWZ5VG9rZW5IYXNoKVxuICAgIC53aGVyZShzcWxgdmVyaWZ5X3Rva2VuX2hhc2ggSVMgTk9UIE5VTExgKSxcbiAgc3RhdHVzVG9rZW5VbmlxdWU6IHVuaXF1ZUluZGV4KCdwbHVnaW5fc3VibWlzc2lvbl9zdGF0dXNfdG9rZW5fdW5pcXVlJylcbiAgICAub24odGFibGUuc3RhdHVzVG9rZW5IYXNoKVxuICAgIC53aGVyZShzcWxgc3RhdHVzX3Rva2VuX2hhc2ggSVMgTk9UIE5VTExgKSxcbiAgc3RhdHVzQ2hlY2s6IGNoZWNrKCdwbHVnaW5fc3VibWlzc2lvbnNfc3RhdHVzX2NoZWNrJywgc3FsYCR7dGFibGUuc3RhdHVzfSBJTiAoJ3BlbmRpbmdfdmVyaWZpY2F0aW9uJyxcbiAgICAncGVuZGluZ19yZXZpZXcnLCAncHVibGlzaGluZycsICdnYXRlX2ZhaWxlZCcsICdhcHByb3ZlZCcsICdyZWplY3RlZCcsICdleHBpcmVkJywgJ2NsYWltZWQnKWApLFxufSkpO1xuXG4vKipcbiAqIFplcm8tcmVzdWx0IGRpcmVjdG9yeSBzZWFyY2hlcy4gTm8gdXNlciBkYXRhLiBgcXVlcnlgIGlzIHN0b3JlZCBub3JtYWxpemVkO1xuICogdGhlIG1haW50ZW5hbmNlIHN3ZWVwIGZvbGRzIHJlcGVhdHMgb2Ygb25lIChxdWVyeSwgY2F0ZWdvcnkpIGludG8gYSBzaW5nbGVcbiAqIHJvdyBjb3VudGluZyBgaGl0c2AsIHdpdGggYGNyZWF0ZWRfYXRgID0gdGhlIGxhdGVzdCBvbmUsIGFuZCBwcnVuZXMgcm93cyBub3RcbiAqIHNlZW4gZm9yIDMwIGRheXMuXG4gKlxuICogQHRhYmxlIGVjb3N5c3RlbV9zZWFyY2hfbWlzc2VzXG4gKi9cbmV4cG9ydCBjb25zdCBlY29zeXN0ZW1TZWFyY2hNaXNzID0gcGdUYWJsZSgnZWNvc3lzdGVtX3NlYXJjaF9taXNzZXMnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG4gIHF1ZXJ5OiB2YXJjaGFyKCdxdWVyeScsIHsgbGVuZ3RoOiAyMDAgfSkubm90TnVsbCgpLFxuICBjYXRlZ29yeTogdmFyY2hhcignY2F0ZWdvcnknLCB7IGxlbmd0aDogNTAgfSksXG4gIGhpdHM6IGludGVnZXIoJ2hpdHMnKS5kZWZhdWx0KDEpLm5vdE51bGwoKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICBjcmVhdGVkQXRJZHg6IGluZGV4KCdlY29zeXN0ZW1fc2VhcmNoX21pc3NfY3JlYXRlZF9pZHgnKS5vbih0YWJsZS5jcmVhdGVkQXQpLFxuICBoaXRzQ2hlY2s6IGNoZWNrKCdlY29zeXN0ZW1fc2VhcmNoX21pc3Nlc19oaXRzX2NoZWNrJywgc3FsYCR7dGFibGUuaGl0c30gPj0gMWApLFxufSkpO1xuXG4vKipcbiAqIE5vdGlmaWNhdGlvbiBkaWdlc3QvYmF0Y2hpbmcgcXVldWUuIFJvd3Mgc2hhcmluZyBhIGBkaWdlc3RLZXlgIGFyZVxuICogY29hbGVzY2VkIGludG8gb25lIGVtYWlsIGF0IGBkZWxpdmVyQWZ0ZXJgLlxuICpcbiAqIEB0YWJsZSBlY29zeXN0ZW1fbm90aWZpY2F0aW9uX3F1ZXVlXG4gKi9cbmV4cG9ydCBjb25zdCBlY29zeXN0ZW1Ob3RpZmljYXRpb25RdWV1ZSA9IHBnVGFibGUoJ2Vjb3N5c3RlbV9ub3RpZmljYXRpb25fcXVldWUnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG4gIHJlY2lwaWVudFVzZXJJZDogdGV4dCgncmVjaXBpZW50X3VzZXJfaWQnKSxcbiAgcmVjaXBpZW50T3JnSWQ6IHZhcmNoYXIoJ3JlY2lwaWVudF9vcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLFxuICBldmVudDogdmFyY2hhcignZXZlbnQnLCB7IGxlbmd0aDogOCB9KS4kdHlwZTxFY29zeXN0ZW1Ob3RpZmljYXRpb25FdmVudD4oKS5ub3ROdWxsKCksXG4gIGRpZ2VzdEtleTogdmFyY2hhcignZGlnZXN0X2tleScsIHsgbGVuZ3RoOiAyNTUgfSksXG4gIHBheWxvYWQ6IGpzb25iKCdwYXlsb2FkJykuJHR5cGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KCkuZGVmYXVsdCh7fSkubm90TnVsbCgpLFxuICBkZWxpdmVyQWZ0ZXI6IHRpbWVzdGFtcCgnZGVsaXZlcl9hZnRlcicsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIGRlbGl2ZXJlZEF0OiB0aW1lc3RhbXAoJ2RlbGl2ZXJlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIC8vIFRoZSBkaXNwYXRjaGVyJ3Mgc2NhbjogdW5kZWxpdmVyZWQgcm93cyB0aGF0IGFyZSBkdWUuXG4gIGR1ZUlkeDogaW5kZXgoJ2Vjb3N5c3RlbV9ub3RpZmljYXRpb25fZHVlX2lkeCcpLm9uKHRhYmxlLmRlbGl2ZXJBZnRlcikud2hlcmUoc3FsYGRlbGl2ZXJlZF9hdCBJUyBOVUxMYCksXG4gIGRpZ2VzdElkeDogaW5kZXgoJ2Vjb3N5c3RlbV9ub3RpZmljYXRpb25fZGlnZXN0X2lkeCcpLm9uKHRhYmxlLmRpZ2VzdEtleSkud2hlcmUoc3FsYGRlbGl2ZXJlZF9hdCBJUyBOVUxMYCksXG4gIGV2ZW50Q2hlY2s6IGNoZWNrKCdlY29zeXN0ZW1fbm90aWZpY2F0aW9uX3F1ZXVlX2V2ZW50X2NoZWNrJywgc3FsYCR7dGFibGUuZXZlbnR9IH4gJ15OKFsxLTldfDFbMC05XXwyWzAtOV0pJCdgKSxcbn0pKTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBPcmctc2NvcGVkIHRhYmxlcyAob3JnX2lkICsgcmxzX29yZ18qIHBvbGljaWVzICsgRk9SQ0U7IGluIHRoZSBvcmcgY2FzY2FkZSlcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIFN0ZXAgbWFuaWZlc3Q6IHdoaWNoIHBsdWdpbiBlYWNoIChwaXBlbGluZSwgc3RhZ2UsIGFjdGlvbikgcnVucyxcbiAqIHJlY29yZGVkIGF0IHN5bnRoLiBFdmVudCBpbmdlc3Qgam9pbnMgb24gaXQgdG8gc3RhbXBcbiAqIGBwaXBlbGluZV9ldmVudHMucGx1Z2luXypgLiBgcGx1Z2luUHVibGlzaGVyYCBpcyBOVUxMIGZvciBhbiBvd24tb3JnIHBsdWdpbi5cbiAqXG4gKiBAdGFibGUgcGlwZWxpbmVfc3RlcF9tYW5pZmVzdHNcbiAqL1xuZXhwb3J0IGNvbnN0IHBpcGVsaW5lU3RlcE1hbmlmZXN0ID0gcGdUYWJsZSgncGlwZWxpbmVfc3RlcF9tYW5pZmVzdHMnLCB7XG4gIHBpcGVsaW5lSWQ6IHV1aWQoJ3BpcGVsaW5lX2lkJykubm90TnVsbCgpLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHN0YWdlTmFtZTogdmFyY2hhcignc3RhZ2VfbmFtZScsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBhY3Rpb25OYW1lOiB2YXJjaGFyKCdhY3Rpb25fbmFtZScsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBwbHVnaW5QdWJsaXNoZXI6IHZhcmNoYXIoJ3BsdWdpbl9wdWJsaXNoZXInLCB7IGxlbmd0aDogMzkgfSksXG4gIC8qKiBUaGUgbGlzdGluZyBwdWJsaXNoZXIncyBpZCAoTlVMTCBmb3IgYW4gb3duLW9yZyBwbHVnaW4pIOKAlCB3aGF0IGNyb3NzLW9yZyBzdGF0cyBqb2luIG9uLiAqL1xuICBwbHVnaW5QdWJsaXNoZXJJZDogdXVpZCgncGx1Z2luX3B1Ymxpc2hlcl9pZCcpLFxuICBwbHVnaW5OYW1lOiB2YXJjaGFyKCdwbHVnaW5fbmFtZScsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBwbHVnaW5WZXJzaW9uOiB2YXJjaGFyKCdwbHVnaW5fdmVyc2lvbicsIHsgbGVuZ3RoOiA1MCB9KS5ub3ROdWxsKCksXG4gIGltYWdlRGlnZXN0OiB2YXJjaGFyKCdpbWFnZV9kaWdlc3QnLCB7IGxlbmd0aDogNzEgfSksXG4gIGltYWdlUmVwb3NpdG9yeTogdmFyY2hhcignaW1hZ2VfcmVwb3NpdG9yeScsIHsgbGVuZ3RoOiA1MTIgfSksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgcGs6IHByaW1hcnlLZXkoeyBjb2x1bW5zOiBbdGFibGUucGlwZWxpbmVJZCwgdGFibGUuc3RhZ2VOYW1lLCB0YWJsZS5hY3Rpb25OYW1lXSB9KSxcbiAgb3JnSWR4OiBpbmRleCgncGlwZWxpbmVfc3RlcF9tYW5pZmVzdF9vcmdfaWR4Jykub24odGFibGUub3JnSWQpLFxuICAvLyBwdWJsaWMvKiBHQyBndWFyZDogXCJkb2VzIGFueSBtYW5pZmVzdCBzdGlsbCByZWZlcmVuY2UgdGhpcyBkaWdlc3Q/XCJcbiAgZGlnZXN0SWR4OiBpbmRleCgncGlwZWxpbmVfc3RlcF9tYW5pZmVzdF9kaWdlc3RfaWR4Jykub24odGFibGUuaW1hZ2VEaWdlc3QpLFxuICAvLyBUaGUgb3V0ZGF0ZWQtcGx1Z2luIGFuZCB2dWxuZXJhYmlsaXR5IHJlcG9ydCBzZWN0aW9ucyBqb2luIG1hbmlmZXN0cyBvblxuICAvLyAobmFtZSwgdmVyc2lvbiwgZGlnZXN0KSBhY3Jvc3MgZXZlcnkgcGlwZWxpbmUgaW4gYW4gb3JnOyB3aXRob3V0IHRoaXMgdGhleVxuICAvLyBmdWxsLXNjYW4gdGhlIHRhYmxlLCB3aGljaCBpcyB0aGUgb25lIGpvaW4gaW4gdGhvc2Ugc2VjdGlvbnMgdGhhdCBncm93cyB3aXRoXG4gIC8vIHRoZSB3aG9sZSBpbnN0YW5jZSByYXRoZXIgdGhhbiB3aXRoIHRoZSBvcmcuXG4gIGxvb2t1cElkeDogaW5kZXgoJ3BpcGVsaW5lX3N0ZXBfbWFuaWZlc3RfbG9va3VwX2lkeCcpXG4gICAgLm9uKHRhYmxlLnBsdWdpbk5hbWUsIHRhYmxlLnBsdWdpblZlcnNpb24sIHRhYmxlLmltYWdlRGlnZXN0KSxcbiAgcGx1Z2luSWR4OiBpbmRleCgncGlwZWxpbmVfc3RlcF9tYW5pZmVzdF9wbHVnaW5faWR4Jykub24odGFibGUucGx1Z2luUHVibGlzaGVyLCB0YWJsZS5wbHVnaW5OYW1lKSxcbiAgcGx1Z2luUHVibGlzaGVySWRJZHg6IGluZGV4KCdwaXBlbGluZV9zdGVwX21hbmlmZXN0X3B1Ymxpc2hlcl9pZF9pZHgnKS5vbih0YWJsZS5wbHVnaW5QdWJsaXNoZXJJZCwgdGFibGUucGx1Z2luTmFtZSksXG59KSk7XG5cbi8qKlxuICogQW4gb3JnJ3MgaW5zdGFsbCBvZiBhIGxpc3RpbmcuIE9mZmljaWFsIGxpc3RpbmdzIGFyZSBpbnN0YWxsZWRcbiAqIGltcGxpY2l0bHkgKHZpcnR1YWwg4oCUIG5vIHJvdyk7IGEgcm93IGlzIGFuIGV4cGxpY2l0IGluc3RhbGwgb3Igb3ZlcnJpZGUuXG4gKlxuICogQHRhYmxlIHBsdWdpbl9pbnN0YWxsc1xuICovXG5leHBvcnQgY29uc3QgcGx1Z2luSW5zdGFsbCA9IHBnVGFibGUoJ3BsdWdpbl9pbnN0YWxscycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBsaXN0aW5nSWQ6IHV1aWQoJ2xpc3RpbmdfaWQnKS5ub3ROdWxsKCkucmVmZXJlbmNlcygoKSA9PiBwbHVnaW5MaXN0aW5nLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSksXG4gIHZlcnNpb25Qb2xpY3k6IHZhcmNoYXIoJ3ZlcnNpb25fcG9saWN5JywgeyBsZW5ndGg6IDEwIH0pLiR0eXBlPEluc3RhbGxWZXJzaW9uUG9saWN5PigpLmRlZmF1bHQoJ21pbm9yJykubm90TnVsbCgpLFxuICBwaW5uZWRWZXJzaW9uOiB2YXJjaGFyKCdwaW5uZWRfdmVyc2lvbicsIHsgbGVuZ3RoOiA1MCB9KSxcbiAgcmVzb2x2ZWRWZXJzaW9uOiB2YXJjaGFyKCdyZXNvbHZlZF92ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLFxuICBzdGF0dXM6IHZhcmNoYXIoJ3N0YXR1cycsIHsgbGVuZ3RoOiAyMCB9KS4kdHlwZTxJbnN0YWxsU3RhdHVzPigpLmRlZmF1bHQoJ2FjdGl2ZScpLm5vdE51bGwoKSxcbiAgaW5zdGFsbGVkQnk6IHRleHQoJ2luc3RhbGxlZF9ieScpLm5vdE51bGwoKSxcbiAgYXBwcm92ZWRCeTogdGV4dCgnYXBwcm92ZWRfYnknKSxcbiAgZGVjaWRlZEF0OiB0aW1lc3RhbXAoJ2RlY2lkZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgLyoqIEEgcGVuZGluZywgYXBwcm92YWwtZ2F0ZWQgY2hhbmdlIG9mIHRoaXMgaW5zdGFsbCAodXBncmFkZSAvIHBvbGljeSksIG9yIG51bGwuICovXG4gIHBlbmRpbmdDaGFuZ2U6IGpzb25iKCdwZW5kaW5nX2NoYW5nZScpLiR0eXBlPEluc3RhbGxDaGFuZ2VSZXF1ZXN0PigpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgb3JnTGlzdGluZ1VuaXF1ZTogdW5pcXVlSW5kZXgoJ3BsdWdpbl9pbnN0YWxsX29yZ19saXN0aW5nX3VuaXF1ZScpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5saXN0aW5nSWQpLFxuICAvLyBcIkluc3RhbGxpbmcgb3Jnc1wiIGZhbi1vdXQgZm9yIE44L04xMy9OMTQvTjIxL04yNi5cbiAgbGlzdGluZ1N0YXR1c0lkeDogaW5kZXgoJ3BsdWdpbl9pbnN0YWxsX2xpc3Rpbmdfc3RhdHVzX2lkeCcpLm9uKHRhYmxlLmxpc3RpbmdJZCwgdGFibGUuc3RhdHVzKSxcbiAgdmVyc2lvblBvbGljeUNoZWNrOiBjaGVjaygncGx1Z2luX2luc3RhbGxzX3ZlcnNpb25fcG9saWN5X2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS52ZXJzaW9uUG9saWN5fSBJTiAoJ3Bpbm5lZCcsICdwYXRjaCcsICdtaW5vcicsICdsYXRlc3QnKWApLFxuICBzdGF0dXNDaGVjazogY2hlY2soJ3BsdWdpbl9pbnN0YWxsc19zdGF0dXNfY2hlY2snLCBzcWxgJHt0YWJsZS5zdGF0dXN9IElOICgnYWN0aXZlJywgJ3BlbmRpbmdfYXBwcm92YWwnLCAnZGVuaWVkJylgKSxcbiAgcGlubmVkQ2hlY2s6IGNoZWNrKCdwbHVnaW5faW5zdGFsbF9waW5uZWRfY2hlY2snLFxuICAgIHNxbGAke3RhYmxlLnZlcnNpb25Qb2xpY3l9IDw+ICdwaW5uZWQnIE9SICR7dGFibGUucGlubmVkVmVyc2lvbn0gSVMgTk9UIE5VTExgKSxcbn0pKTtcblxuLyoqXG4gKiBPcmcgY29uc3VtcHRpb24gcG9saWN5LiBPbmUgcm93IHBlciBvcmc7IGFic2VudCA9IHRoZSBjb2x1bW4gZGVmYXVsdHMuXG4gKiBOb25lIG9mIHRoZXNlIHNhZmV0eSBjb250cm9scyBpcyBwbGFuLWdhdGVkLlxuICpcbiAqIEB0YWJsZSBwbHVnaW5faW5zdGFsbF9wb2xpY2llc1xuICovXG5leHBvcnQgY29uc3QgcGx1Z2luSW5zdGFsbFBvbGljeSA9IHBnVGFibGUoJ3BsdWdpbl9pbnN0YWxsX3BvbGljaWVzJywge1xuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5wcmltYXJ5S2V5KCksXG4gIGFsbG93ZWRUaWVyczogdGV4dCgnYWxsb3dlZF90aWVycycpLmFycmF5KCkuJHR5cGU8UHVibGlzaGVyVGllcltdPigpXG4gICAgLmRlZmF1bHQoWydvZmZpY2lhbCcsICd2ZXJpZmllZCddKS5ub3ROdWxsKCksXG4gIHJlcXVpcmVBcHByb3ZhbFRpZXJzOiB0ZXh0KCdyZXF1aXJlX2FwcHJvdmFsX3RpZXJzJykuYXJyYXkoKS4kdHlwZTxQdWJsaXNoZXJUaWVyW10+KClcbiAgICAuZGVmYXVsdChbJ2NvbW11bml0eScsICd1bnZlcmlmaWVkJ10pLm5vdE51bGwoKSxcbiAgc2VjcmV0c0FsbG93ZWRUaWVyczogdGV4dCgnc2VjcmV0c19hbGxvd2VkX3RpZXJzJykuYXJyYXkoKS4kdHlwZTxQdWJsaXNoZXJUaWVyW10+KClcbiAgICAuZGVmYXVsdChbJ29mZmljaWFsJywgJ3ZlcmlmaWVkJ10pLm5vdE51bGwoKSxcbiAgYmxvY2tPbkFkdmlzb3J5OiB2YXJjaGFyKCdibG9ja19vbl9hZHZpc29yeScsIHsgbGVuZ3RoOiAxMCB9KS4kdHlwZTxCbG9ja09uQWR2aXNvcnk+KCkuZGVmYXVsdCgnY3JpdGljYWwnKS5ub3ROdWxsKCksXG4gIG9mZmljaWFsSW5zdGFsbHM6IHZhcmNoYXIoJ29mZmljaWFsX2luc3RhbGxzJywgeyBsZW5ndGg6IDEwIH0pLiR0eXBlPE9mZmljaWFsSW5zdGFsbHM+KCkuZGVmYXVsdCgnaW1wbGljaXQnKS5ub3ROdWxsKCksXG4gIGJsb2NrZWRMaXN0aW5nczoganNvbmIoJ2Jsb2NrZWRfbGlzdGluZ3MnKS4kdHlwZTxCbG9ja2VkTGlzdGluZ1JlZltdPigpLmRlZmF1bHQoW10pLm5vdE51bGwoKSxcbiAgdXBkYXRlZEJ5OiB0ZXh0KCd1cGRhdGVkX2J5JyksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgYmxvY2tPbkFkdmlzb3J5Q2hlY2s6IGNoZWNrKCdwbHVnaW5faW5zdGFsbF9wb2xpY2llc19ibG9ja19vbl9hZHZpc29yeV9jaGVjaycsXG4gICAgc3FsYCR7dGFibGUuYmxvY2tPbkFkdmlzb3J5fSBJTiAoJ2NyaXRpY2FsJywgJ2hpZ2gnLCAnbmV2ZXInKWApLFxuICBvZmZpY2lhbEluc3RhbGxzQ2hlY2s6IGNoZWNrKCdwbHVnaW5faW5zdGFsbF9wb2xpY2llc19vZmZpY2lhbF9pbnN0YWxsc19jaGVjaycsXG4gICAgc3FsYCR7dGFibGUub2ZmaWNpYWxJbnN0YWxsc30gSU4gKCdpbXBsaWNpdCcsICdleHBsaWNpdCcpYCksXG4gIHRpZXJzQ2hlY2s6IGNoZWNrKCdwbHVnaW5faW5zdGFsbF9wb2xpY3lfdGllcnNfY2hlY2snLCBzcWxgXG4gICAgJHt0YWJsZS5hbGxvd2VkVGllcnN9IDxAIEFSUkFZWydvZmZpY2lhbCcsICd2ZXJpZmllZCcsICdjb21tdW5pdHknLCAndW52ZXJpZmllZCddOjpURVhUW11cbiAgICBBTkQgJHt0YWJsZS5yZXF1aXJlQXBwcm92YWxUaWVyc30gPEAgQVJSQVlbJ29mZmljaWFsJywgJ3ZlcmlmaWVkJywgJ2NvbW11bml0eScsICd1bnZlcmlmaWVkJ106OlRFWFRbXVxuICAgIEFORCAke3RhYmxlLnNlY3JldHNBbGxvd2VkVGllcnN9IDxAIEFSUkFZWydvZmZpY2lhbCcsICd2ZXJpZmllZCcsICdjb21tdW5pdHknLCAndW52ZXJpZmllZCddOjpURVhUW11gKSxcbn0pKTtcblxuLyoqXG4gKiBQZXItb3JnIHBsdWdpbiBzZWN1cml0eSBub3RpZmljYXRpb24gc2V0dGluZ3MgKGRvY3MvcGx1Z2luLXB1Ymxpc2hpbmcubWRcbiAqIFwiU2NhbiBnYXRlc1wiKTogd2hvIGhlYXJzIGFib3V0IGEgYmxvY2tlZCBidWlsZCAoTjMwKSBhbmQgYSByZXNjYW4gZmluZGluZ1xuICogKE4zMSksIGFuZCB3aGVyZSBlbHNlIHRoZXkgZ28uIE9uZSByb3cgcGVyIG9yZzsgYWJzZW50ID0gdGhlIGNvbHVtblxuICogZGVmYXVsdHMuIFRoZSB3ZWJob29rIHNlY3JldCBhbmQgdGhlIGV4dGVybmFsIGFkZHJlc3MgYXJlIHN0b3JlZCBFTkNSWVBURURcbiAqIChhcGktY29yZSBzZWNyZXQtZW5jcnlwdGlvbiwgdGhlIG9yZydzIGtleSkgYW5kIG5ldmVyIHJldHVybmVkOyB0aGUgYWRkcmVzc1xuICogaXMgdXNlZCBvbmx5IG9uY2UgY29uZmlybWVkIHRocm91Z2ggaXRzIGVtYWlsZWQgc2luZ2xlLXVzZSBsaW5rXG4gKiAoYGV4dGVybmFsX3ZlcmlmeV90b2tlbl9oYXNoYCwgc2hhMjU2IG9mIHRoZSB0b2tlbikuXG4gKlxuICogQHRhYmxlIHBsdWdpbl9zZWN1cml0eV9ub3RpZmljYXRpb25fcHJlZnNcbiAqL1xuZXhwb3J0IGNvbnN0IHBsdWdpblNlY3VyaXR5Tm90aWZpY2F0aW9uUHJlZiA9IHBnVGFibGUoJ3BsdWdpbl9zZWN1cml0eV9ub3RpZmljYXRpb25fcHJlZnMnLCB7XG4gIG9yZ0lkOiB2YXJjaGFyKCdvcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLnByaW1hcnlLZXkoKSxcbiAgcmVjaXBpZW50TW9kZTogdmFyY2hhcigncmVjaXBpZW50X21vZGUnLCB7IGxlbmd0aDogMTAgfSkuJHR5cGU8UGx1Z2luU2VjdXJpdHlSZWNpcGllbnRNb2RlPigpLmRlZmF1bHQoJ3dyaXRlcnMnKS5ub3ROdWxsKCksXG4gIHRhcmdldFVzZXJzOiB0ZXh0KCd0YXJnZXRfdXNlcnMnKS5hcnJheSgpLiR0eXBlPHN0cmluZ1tdPigpLmRlZmF1bHQoW10pLm5vdE51bGwoKSxcbiAgbm90aWZ5UmVzY2FuOiBib29sZWFuKCdub3RpZnlfcmVzY2FuJykuZGVmYXVsdCh0cnVlKS5ub3ROdWxsKCksXG4gIGRpZ2VzdE1vZGU6IHZhcmNoYXIoJ2RpZ2VzdF9tb2RlJywgeyBsZW5ndGg6IDEwIH0pLiR0eXBlPFBsdWdpblNlY3VyaXR5RGlnZXN0TW9kZT4oKS5kZWZhdWx0KCdpbW1lZGlhdGUnKS5ub3ROdWxsKCksXG4gIHdlYmhvb2tVcmw6IHZhcmNoYXIoJ3dlYmhvb2tfdXJsJywgeyBsZW5ndGg6IDIwNDggfSksXG4gIHdlYmhvb2tTZWNyZXQ6IHRleHQoJ3dlYmhvb2tfc2VjcmV0JyksXG4gIGV4dGVybmFsRW1haWxFbmM6IHRleHQoJ2V4dGVybmFsX2VtYWlsX2VuYycpLFxuICBleHRlcm5hbEVtYWlsSGFzaDogdmFyY2hhcignZXh0ZXJuYWxfZW1haWxfaGFzaCcsIHsgbGVuZ3RoOiA2NCB9KSxcbiAgZXh0ZXJuYWxFbWFpbFZlcmlmaWVkQXQ6IHRpbWVzdGFtcCgnZXh0ZXJuYWxfZW1haWxfdmVyaWZpZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgZXh0ZXJuYWxWZXJpZnlUb2tlbkhhc2g6IHZhcmNoYXIoJ2V4dGVybmFsX3ZlcmlmeV90b2tlbl9oYXNoJywgeyBsZW5ndGg6IDY0IH0pLFxuICBleHRlcm5hbFZlcmlmeUV4cGlyZXNBdDogdGltZXN0YW1wKCdleHRlcm5hbF92ZXJpZnlfZXhwaXJlc19hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICB1cGRhdGVkQnk6IHRleHQoJ3VwZGF0ZWRfYnknKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIHZlcmlmeVRva2VuSWR4OiB1bmlxdWVJbmRleCgncGx1Z2luX3NlY3VyaXR5X25vdGlmaWNhdGlvbl9wcmVmc192ZXJpZnlfdG9rZW5faWR4Jykub24odGFibGUuZXh0ZXJuYWxWZXJpZnlUb2tlbkhhc2gpLFxuICByZWNpcGllbnRNb2RlQ2hlY2s6IGNoZWNrKCdwbHVnaW5fc2VjdXJpdHlfbm90aWZpY2F0aW9uX3ByZWZzX3JlY2lwaWVudF9tb2RlX2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS5yZWNpcGllbnRNb2RlfSBJTiAoJ3dyaXRlcnMnLCAndXNlcnMnKWApLFxuICBkaWdlc3RNb2RlQ2hlY2s6IGNoZWNrKCdwbHVnaW5fc2VjdXJpdHlfbm90aWZpY2F0aW9uX3ByZWZzX2RpZ2VzdF9tb2RlX2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS5kaWdlc3RNb2RlfSBJTiAoJ2ltbWVkaWF0ZScsICdkYWlseScsICd3ZWVrbHknKWApLFxufSkpO1xuXG4vKipcbiAqIE4yMSBpZGVtcG90ZW5jeTogb25lIGRlbGl2ZXJ5IHBlciAoYWR2aXNvcnksIGluc3RhbGxpbmcgb3JnKSwgc28gYSByZXRyaWVkXG4gKiBmYW4tb3V0IG5ldmVyIG5vdGlmaWVzIGFuIG9yZyB0d2ljZS5cbiAqXG4gKiBAdGFibGUgcGx1Z2luX2Fkdmlzb3J5X2RlbGl2ZXJpZXNcbiAqL1xuZXhwb3J0IGNvbnN0IHBsdWdpbkFkdmlzb3J5RGVsaXZlcnkgPSBwZ1RhYmxlKCdwbHVnaW5fYWR2aXNvcnlfZGVsaXZlcmllcycsIHtcbiAgYWR2aXNvcnlJZDogdXVpZCgnYWR2aXNvcnlfaWQnKS5ub3ROdWxsKCkucmVmZXJlbmNlcygoKSA9PiBwbHVnaW5BZHZpc29yeS5pZCwgeyBvbkRlbGV0ZTogJ2Nhc2NhZGUnIH0pLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIGRlbGl2ZXJlZEF0OiB0aW1lc3RhbXAoJ2RlbGl2ZXJlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIHBrOiBwcmltYXJ5S2V5KHsgY29sdW1uczogW3RhYmxlLmFkdmlzb3J5SWQsIHRhYmxlLm9yZ0lkXSB9KSxcbiAgb3JnSWR4OiBpbmRleCgncGx1Z2luX2Fkdmlzb3J5X2RlbGl2ZXJ5X29yZ19pZHgnKS5vbih0YWJsZS5vcmdJZCksXG59KSk7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUHVibGljIHJlYWQgcGF0aCDigJQgdmlld3MgY3JlYXRlZCBieSBwb3N0Z3Jlcy1pbml0LnNxbFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogYHB1YmxpY19saXN0aW5nc2A6IGxpc3RlZCBhbmQgdW5tYWludGFpbmVkIGxpc3RpbmdzIG9mIG5vbi1zdXNwZW5kZWRcbiAqIHB1Ymxpc2hlcnMsIHB1YmxpYyBjb2x1bW5zIG9ubHksIGpvaW5lZCB3aXRoIHRoZSBwdWJsaXNoZXIncyBoYW5kbGUvbmFtZS90aWVyIGFuZCB0aGUgc3RhdHMuXG4gKiBSZWFkIGFzIGBlY29zeXN0ZW1fcHVibGljX3JlYWRlcmAgKHNlZSBwb3N0Z3Jlcy1pbml0LnNxbCkuXG4gKi9cbmV4cG9ydCBjb25zdCBwdWJsaWNMaXN0aW5ncyA9IHBnVmlldygncHVibGljX2xpc3RpbmdzJywge1xuICBpZDogdXVpZCgnaWQnKS5ub3ROdWxsKCksXG4gIHB1Ymxpc2hlckhhbmRsZTogdmFyY2hhcigncHVibGlzaGVyX2hhbmRsZScsIHsgbGVuZ3RoOiAzOSB9KS5ub3ROdWxsKCksXG4gIHB1Ymxpc2hlckRpc3BsYXlOYW1lOiB2YXJjaGFyKCdwdWJsaXNoZXJfZGlzcGxheV9uYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHB1Ymxpc2hlclRpZXI6IHZhcmNoYXIoJ3B1Ymxpc2hlcl90aWVyJywgeyBsZW5ndGg6IDIwIH0pLiR0eXBlPFB1Ymxpc2hlclRpZXI+KCkubm90TnVsbCgpLFxuICBwdWJsaXNoZXJWZXJpZmllZEF0OiB0aW1lc3RhbXAoJ3B1Ymxpc2hlcl92ZXJpZmllZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBuYW1lOiB2YXJjaGFyKCduYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIGNhdGVnb3J5OiB2YXJjaGFyKCdjYXRlZ29yeScsIHsgbGVuZ3RoOiA1MCB9KS5ub3ROdWxsKCksXG4gIHN1bW1hcnk6IHZhcmNoYXIoJ3N1bW1hcnknLCB7IGxlbmd0aDogMzAwIH0pLFxuICBkZXNjcmlwdGlvbjogdGV4dCgnZGVzY3JpcHRpb24nKSxcbiAgcmVhZG1lSHRtbDogdGV4dCgncmVhZG1lX2h0bWwnKSxcbiAgbGljZW5zZTogdmFyY2hhcignbGljZW5zZScsIHsgbGVuZ3RoOiA2NCB9KSxcbiAgaG9tZXBhZ2VVcmw6IHZhcmNoYXIoJ2hvbWVwYWdlX3VybCcsIHsgbGVuZ3RoOiAyMDQ4IH0pLFxuICBzb3VyY2VVcmw6IHZhcmNoYXIoJ3NvdXJjZV91cmwnLCB7IGxlbmd0aDogMjA0OCB9KSxcbiAgaWNvbjoganNvbmIoJ2ljb24nKS4kdHlwZTxQbHVnaW5JY29uPigpLFxuICB1cGxvYWRlZEljb246IGpzb25iKCd1cGxvYWRlZF9pY29uJykuJHR5cGU8UGx1Z2luVXBsb2FkZWRJY29uPigpLFxuICBrZXl3b3JkczoganNvbmIoJ2tleXdvcmRzJykuJHR5cGU8c3RyaW5nW10+KCkubm90TnVsbCgpLFxuICBmZWF0dXJlZDogYm9vbGVhbignZmVhdHVyZWQnKS5ub3ROdWxsKCksXG4gIGxhdGVzdFZlcnNpb246IHZhcmNoYXIoJ2xhdGVzdF92ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLFxuICBwYXVzZWRBdDogdGltZXN0YW1wKCdwYXVzZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgc2VhcmNoVmVjdG9yOiB0c3ZlY3Rvcignc2VhcmNoX3ZlY3RvcicpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5ub3ROdWxsKCksXG4gIHJhdGluZ0JheWVzOiBkb3VibGVQcmVjaXNpb24oJ3JhdGluZ19iYXllcycpLFxuICByYXRpbmdDb3VudDogaW50ZWdlcigncmF0aW5nX2NvdW50Jykubm90TnVsbCgpLFxuICByYXRpbmdEaXN0OiBqc29uYigncmF0aW5nX2Rpc3QnKS4kdHlwZTxSZWNvcmQ8c3RyaW5nLCBudW1iZXI+PigpLFxuICByZWNlbnRSYXRpbmc6IGRvdWJsZVByZWNpc2lvbigncmVjZW50X3JhdGluZycpLFxuICBpbnN0YWxsQ291bnQ6IGludGVnZXIoJ2luc3RhbGxfY291bnQnKS5ub3ROdWxsKCksXG4gIC8vIE5VTEwgYmVsb3cgdGhlIDUtb3JnIGRpc3BsYXkgdGhyZXNob2xkLlxuICBhY3RpdmVPcmdDb3VudDogaW50ZWdlcignYWN0aXZlX29yZ19jb3VudCcpLFxuICBzdWNjZXNzUmF0ZTMwZDogZG91YmxlUHJlY2lzaW9uKCdzdWNjZXNzX3JhdGVfMzBkJyksXG4gIGhlYWx0aFNjb3JlOiBkb3VibGVQcmVjaXNpb24oJ2hlYWx0aF9zY29yZScpLFxuICAvLyAnbGlzdGVkJyB8ICd1bm1haW50YWluZWQnIOKAlCB1bm1haW50YWluZWQgc3RheXMgcHVibGljIHdpdGggYSBiYW5uZXIuXG4gIHN0YXRlOiB2YXJjaGFyKCdzdGF0ZScsIHsgbGVuZ3RoOiAyMCB9KS4kdHlwZTxMaXN0aW5nU3RhdGU+KCkubm90TnVsbCgpLFxuICBoZWFsdGhCcmVha2Rvd246IGpzb25iKCdoZWFsdGhfYnJlYWtkb3duJykuJHR5cGU8SGVhbHRoQnJlYWtkb3duPigpLFxufSkuZXhpc3RpbmcoKTtcblxuLyoqXG4gKiBgcHVibGljX2xpc3RlZF92ZXJzaW9uc2A6IG5vbi1wYXVzZWQgdmVyc2lvbnMgb2YgbGlzdGVkIGxpc3RpbmdzICh5YW5rZWQgb25lc1xuICogaW5jbHVkZWQsIGZsYWdnZWQpLCB3aXRoIG9ubHkgdGhlIHB1YmxpYyBzdWJzZXQgb2YgdGhlIGZyb3plbiBzcGVjLlxuICovXG5leHBvcnQgY29uc3QgcHVibGljTGlzdGVkVmVyc2lvbnMgPSBwZ1ZpZXcoJ3B1YmxpY19saXN0ZWRfdmVyc2lvbnMnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLm5vdE51bGwoKSxcbiAgbGlzdGluZ0lkOiB1dWlkKCdsaXN0aW5nX2lkJykubm90TnVsbCgpLFxuICBwdWJsaXNoZXJIYW5kbGU6IHZhcmNoYXIoJ3B1Ymxpc2hlcl9oYW5kbGUnLCB7IGxlbmd0aDogMzkgfSkubm90TnVsbCgpLFxuICBuYW1lOiB2YXJjaGFyKCduYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHZlcnNpb246IHZhcmNoYXIoJ3ZlcnNpb24nLCB7IGxlbmd0aDogNTAgfSkubm90TnVsbCgpLFxuICBpbWFnZURpZ2VzdDogdmFyY2hhcignaW1hZ2VfZGlnZXN0JywgeyBsZW5ndGg6IDcxIH0pLFxuICBpbWFnZVJlcG9zaXRvcnk6IHZhcmNoYXIoJ2ltYWdlX3JlcG9zaXRvcnknLCB7IGxlbmd0aDogNTEyIH0pLFxuICBicmVha2luZzogYm9vbGVhbignYnJlYWtpbmcnKS5ub3ROdWxsKCksXG4gIGRlcHJlY2F0ZWRBdDogdGltZXN0YW1wKCdkZXByZWNhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGNoYW5nZWxvZzogdGV4dCgnY2hhbmdlbG9nJyksXG4gIHZ1bG5Dcml0aWNhbDogaW50ZWdlcigndnVsbl9jcml0aWNhbCcpLFxuICB2dWxuSGlnaDogaW50ZWdlcigndnVsbl9oaWdoJyksXG4gIHNjYW5uZWRBdDogdGltZXN0YW1wKCdzY2FubmVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIHB1Ymxpc2hlZEF0OiB0aW1lc3RhbXAoJ3B1Ymxpc2hlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLm5vdE51bGwoKSxcbiAgcGx1Z2luVHlwZTogdGV4dCgncGx1Z2luX3R5cGUnKSxcbiAgY29tcHV0ZVR5cGU6IHRleHQoJ2NvbXB1dGVfdHlwZScpLFxuICBzZWNyZXRzOiBqc29uYignc2VjcmV0cycpLiR0eXBlPFBsdWdpblNlY3JldFtdPigpLFxuICByZXF1aXJlZE1ldGFkYXRhOiBqc29uYigncmVxdWlyZWRfbWV0YWRhdGEnKS4kdHlwZTxzdHJpbmdbXT4oKSxcbiAgcmVxdWlyZWRWYXJzOiBqc29uYigncmVxdWlyZWRfdmFycycpLiR0eXBlPHN0cmluZ1tdPigpLFxuICBuZXR3b3JrRWdyZXNzOiBqc29uYignbmV0d29ya19lZ3Jlc3MnKS4kdHlwZTxzdHJpbmdbXT4oKSxcbiAgcnVuQXNSb290OiBib29sZWFuKCdydW5fYXNfcm9vdCcpLFxuICBsaWNlbnNlOiB0ZXh0KCdsaWNlbnNlJyksXG4gIHJlYWRtZUh0bWw6IHRleHQoJ3JlYWRtZV9odG1sJyksXG4gIC8vIFlhbmtlZCB2ZXJzaW9ucyBzdGF5IGxpc3RlZCAobWFya2VkKTsgdGhlIHlhbmsgcmVhc29uIGlzbid0IHB1YmxpYy5cbiAgeWFua2VkOiBib29sZWFuKCd5YW5rZWQnKS5ub3ROdWxsKCksXG4gIGRlcHJlY2F0aW9uTWVzc2FnZTogdGV4dCgnZGVwcmVjYXRpb25fbWVzc2FnZScpLFxuICBpbWFnZVNvdXJjZTogdGV4dCgnaW1hZ2Vfc291cmNlJyksXG4gIGJhc2VJbWFnZUNyZWF0ZWRBdDogdGltZXN0YW1wKCdiYXNlX2ltYWdlX2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgLy8gQXBwZW5kZWQgaW4gdGhlIHZpZXcgKENSRUFURSBPUiBSRVBMQUNFIFZJRVcgb25seSBhZGRzIGNvbHVtbnMgYXQgdGhlIGVuZCkuXG4gIHZ1bG5Dcml0aWNhbEZpeGFibGU6IGludGVnZXIoJ3Z1bG5fY3JpdGljYWxfZml4YWJsZScpLFxuICB2dWxuSGlnaEZpeGFibGU6IGludGVnZXIoJ3Z1bG5faGlnaF9maXhhYmxlJyksXG4gIHNjYW5GbGFnZ2VkQXQ6IHRpbWVzdGFtcCgnc2Nhbl9mbGFnZ2VkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG59KS5leGlzdGluZygpO1xuXG4vKipcbiAqIGBwdWJsaWNfYWR2aXNvcmllc2A6IFBVQkxJU0hFRCBhZHZpc29yaWVzIG9uIGxpc3RlZCBsaXN0aW5ncywgcHVibGljIGNvbHVtbnNcbiAqIG9ubHkgKG5vIHB1Ymxpc2hlci9vcmcgaWRzLCBubyBhdXRob3IsIG5vIGRyYWZ0cyBvciB3aXRoZHJhd24gcm93cykuXG4gKi9cbmV4cG9ydCBjb25zdCBwdWJsaWNBZHZpc29yaWVzID0gcGdWaWV3KCdwdWJsaWNfYWR2aXNvcmllcycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykubm90TnVsbCgpLFxuICBsaXN0aW5nSWQ6IHV1aWQoJ2xpc3RpbmdfaWQnKS5ub3ROdWxsKCksXG4gIHB1Ymxpc2hlckhhbmRsZTogdmFyY2hhcigncHVibGlzaGVyX2hhbmRsZScsIHsgbGVuZ3RoOiAzOSB9KS5ub3ROdWxsKCksXG4gIG5hbWU6IHZhcmNoYXIoJ25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgc2V2ZXJpdHk6IHZhcmNoYXIoJ3NldmVyaXR5JywgeyBsZW5ndGg6IDEwIH0pLiR0eXBlPEFkdmlzb3J5U2V2ZXJpdHk+KCkubm90TnVsbCgpLFxuICBzdW1tYXJ5OiB2YXJjaGFyKCdzdW1tYXJ5JywgeyBsZW5ndGg6IDMwMCB9KS5ub3ROdWxsKCksXG4gIGRldGFpbHNIdG1sOiB0ZXh0KCdkZXRhaWxzX2h0bWwnKSxcbiAgY3ZlSWRzOiB0ZXh0KCdjdmVfaWRzJykuYXJyYXkoKS5ub3ROdWxsKCksXG4gIGFmZmVjdGVkUmFuZ2U6IHZhcmNoYXIoJ2FmZmVjdGVkX3JhbmdlJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIGZpeGVkVmVyc2lvbjogdmFyY2hhcignZml4ZWRfdmVyc2lvbicsIHsgbGVuZ3RoOiA1MCB9KSxcbiAgcHVibGlzaGVkQXQ6IHRpbWVzdGFtcCgncHVibGlzaGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG59KS5leGlzdGluZygpO1xuXG4vKipcbiAqIGBwdWJsaWNfcmV2aWV3c2A6IFBVQkxJU0hFRCByZXZpZXdzIG9mIHB1YmxpYyAobm9uLXBhdXNlZCkgbGlzdGluZ3MsIHB1YmxpY1xuICogY29sdW1ucyBvbmx5IOKAlCB0aGUgYXV0aG9yJ3MgZGlzcGxheSBuYW1lLCBuZXZlciBhIHVzZXIgb3Igb3JnIGlkIOKAlFxuICogd2l0aCB0aGUgcHVibGlzaGVyJ3MgcmVwbHkuXG4gKi9cbmV4cG9ydCBjb25zdCBwdWJsaWNSZXZpZXdzID0gcGdWaWV3KCdwdWJsaWNfcmV2aWV3cycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykubm90TnVsbCgpLFxuICBsaXN0aW5nSWQ6IHV1aWQoJ2xpc3RpbmdfaWQnKS5ub3ROdWxsKCksXG4gIHB1Ymxpc2hlckhhbmRsZTogdmFyY2hhcigncHVibGlzaGVyX2hhbmRsZScsIHsgbGVuZ3RoOiAzOSB9KS5ub3ROdWxsKCksXG4gIG5hbWU6IHZhcmNoYXIoJ25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgdmVyc2lvbjogdmFyY2hhcigndmVyc2lvbicsIHsgbGVuZ3RoOiA1MCB9KSxcbiAgcmF0aW5nOiBzbWFsbGludCgncmF0aW5nJykubm90TnVsbCgpLFxuICB0aXRsZTogdmFyY2hhcigndGl0bGUnLCB7IGxlbmd0aDogMTIwIH0pLFxuICBib2R5SHRtbDogdGV4dCgnYm9keV9odG1sJyksXG4gIGF1dGhvckRpc3BsYXlOYW1lOiB2YXJjaGFyKCdhdXRob3JfZGlzcGxheV9uYW1lJywgeyBsZW5ndGg6IDEwMCB9KSxcbiAgdmVyaWZpZWRVc2U6IGJvb2xlYW4oJ3ZlcmlmaWVkX3VzZScpLm5vdE51bGwoKSxcbiAgaGVscGZ1bENvdW50OiBpbnRlZ2VyKCdoZWxwZnVsX2NvdW50Jykubm90TnVsbCgpLFxuICBlZGl0ZWQ6IGJvb2xlYW4oJ2VkaXRlZCcpLm5vdE51bGwoKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkubm90TnVsbCgpLFxuICBwdWJsaXNoZXJEaXNwbGF5TmFtZTogdmFyY2hhcigncHVibGlzaGVyX2Rpc3BsYXlfbmFtZScsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICByZXBseUJvZHlIdG1sOiB0ZXh0KCdyZXBseV9ib2R5X2h0bWwnKSxcbiAgcmVwbHlDcmVhdGVkQXQ6IHRpbWVzdGFtcCgncmVwbHlfY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICByZXBseVVwZGF0ZWRBdDogdGltZXN0YW1wKCdyZXBseV91cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG59KS5leGlzdGluZygpO1xuXG4vKiogVGhlIG9mZmljaWFsIHB1Ymxpc2hlcidzIGhhbmRsZSAodGhlIHN5c3RlbSBvcmcncyBjYXRhbG9nKS4gKi9cbmV4cG9ydCBjb25zdCBPRkZJQ0lBTF9QVUJMSVNIRVJfSEFORExFID0gJ3BpcGVsaW5lLWJ1aWxkZXInO1xuLyoqIFRoZSBwbGF0Zm9ybS1vd25lZCBwdWJsaXNoZXIgYW5vbnltb3VzIHN1Ym1pc3Npb25zIGxhbmQgdW5kZXIuICovXG5leHBvcnQgY29uc3QgQ09NTVVOSVRZX1BVQkxJU0hFUl9IQU5ETEUgPSAnY29tbXVuaXR5JztcblxuLyoqIEZpeGVkIGlkcyBvZiB0aGUgdHdvIGF1dG8tYXBwcm92YWwgcnVsZXMgcG9zdGdyZXMtaW5pdC5zcWwgc2VlZHMuICovXG5leHBvcnQgY29uc3QgU0VFREVEX0FVVE9fQVBQUk9WQUxfUlVMRV9JRFMgPSB7XG4gIHZlcmlmaWVkVXBkYXRlczogJzAwMDAwMDAwLTAwMDAtNDAwMC04MDAwLTAwMDAwMDAwYTAwMScsXG4gIG9mZmljaWFsQ2F0YWxvZzogJzAwMDAwMDAwLTAwMDAtNDAwMC04MDAwLTAwMDAwMDAwYTAwMicsXG59IGFzIGNvbnN0O1xuXG4vKipcbiAqIFR5cGVTY3JpcHQgdHlwZXMgcmVwcmVzZW50aW5nIGRhdGFiYXNlIHJvd3NcbiAqL1xuZXhwb3J0IHR5cGUgUHVibGlzaGVyID0gdHlwZW9mIHB1Ymxpc2hlci4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBQdWJsaXNoZXJJbnNlcnQgPSB0eXBlb2YgcHVibGlzaGVyLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgUGx1Z2luTGlzdGluZyA9IHR5cGVvZiBwbHVnaW5MaXN0aW5nLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBsdWdpbkxpc3RpbmdJbnNlcnQgPSB0eXBlb2YgcGx1Z2luTGlzdGluZy4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIFBsdWdpbkxpc3RpbmdWZXJzaW9uID0gdHlwZW9mIHBsdWdpbkxpc3RpbmdWZXJzaW9uLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBsdWdpbkxpc3RpbmdWZXJzaW9uSW5zZXJ0ID0gdHlwZW9mIHBsdWdpbkxpc3RpbmdWZXJzaW9uLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgUGx1Z2luQWR2aXNvcnkgPSB0eXBlb2YgcGx1Z2luQWR2aXNvcnkuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUGx1Z2luQWR2aXNvcnlJbnNlcnQgPSB0eXBlb2YgcGx1Z2luQWR2aXNvcnkuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBFY29zeXN0ZW1BdXRvQXBwcm92YWxSdWxlID0gdHlwZW9mIGVjb3N5c3RlbUF1dG9BcHByb3ZhbFJ1bGUuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgRWNvc3lzdGVtQXV0b0FwcHJvdmFsUnVsZUluc2VydCA9IHR5cGVvZiBlY29zeXN0ZW1BdXRvQXBwcm92YWxSdWxlLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgUGx1Z2luUHVibGlzaFJlcXVlc3QgPSB0eXBlb2YgcGx1Z2luUHVibGlzaFJlcXVlc3QuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUGx1Z2luUHVibGlzaFJlcXVlc3RJbnNlcnQgPSB0eXBlb2YgcGx1Z2luUHVibGlzaFJlcXVlc3QuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBFY29zeXN0ZW1SZXNlcnZlZE5hbWUgPSB0eXBlb2YgZWNvc3lzdGVtUmVzZXJ2ZWROYW1lLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIEVjb3N5c3RlbVJlc2VydmVkTmFtZUluc2VydCA9IHR5cGVvZiBlY29zeXN0ZW1SZXNlcnZlZE5hbWUuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBFY29zeXN0ZW1TZXR0aW5nID0gdHlwZW9mIGVjb3N5c3RlbVNldHRpbmcuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgRWNvc3lzdGVtU2V0dGluZ0luc2VydCA9IHR5cGVvZiBlY29zeXN0ZW1TZXR0aW5nLiRpbmZlckluc2VydDtcblxuXG5leHBvcnQgdHlwZSBQbHVnaW5SZXZpZXcgPSB0eXBlb2YgcGx1Z2luUmV2aWV3LiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBsdWdpblJldmlld0luc2VydCA9IHR5cGVvZiBwbHVnaW5SZXZpZXcuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBQbHVnaW5SZXZpZXdSZXBseSA9IHR5cGVvZiBwbHVnaW5SZXZpZXdSZXBseS4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBQbHVnaW5SZXZpZXdSZXBseUluc2VydCA9IHR5cGVvZiBwbHVnaW5SZXZpZXdSZXBseS4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIFBsdWdpblJldmlld1JlcG9ydCA9IHR5cGVvZiBwbHVnaW5SZXZpZXdSZXBvcnQuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUGx1Z2luUmV2aWV3UmVwb3J0SW5zZXJ0ID0gdHlwZW9mIHBsdWdpblJldmlld1JlcG9ydC4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIFBsdWdpblJldmlld1ZvdGUgPSB0eXBlb2YgcGx1Z2luUmV2aWV3Vm90ZS4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBQbHVnaW5SZXZpZXdWb3RlSW5zZXJ0ID0gdHlwZW9mIHBsdWdpblJldmlld1ZvdGUuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBQbHVnaW5SZXZpZXdIaXN0b3J5ID0gdHlwZW9mIHBsdWdpblJldmlld0hpc3RvcnkuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUGx1Z2luUmV2aWV3SGlzdG9yeUluc2VydCA9IHR5cGVvZiBwbHVnaW5SZXZpZXdIaXN0b3J5LiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgUGx1Z2luU3RhdHMgPSB0eXBlb2YgcGx1Z2luU3RhdHMuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUGx1Z2luU3RhdHNJbnNlcnQgPSB0eXBlb2YgcGx1Z2luU3RhdHMuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBQbHVnaW5TdWJtaXNzaW9uID0gdHlwZW9mIHBsdWdpblN1Ym1pc3Npb24uJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUGx1Z2luU3VibWlzc2lvbkluc2VydCA9IHR5cGVvZiBwbHVnaW5TdWJtaXNzaW9uLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgRWNvc3lzdGVtU2VhcmNoTWlzcyA9IHR5cGVvZiBlY29zeXN0ZW1TZWFyY2hNaXNzLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIEVjb3N5c3RlbVNlYXJjaE1pc3NJbnNlcnQgPSB0eXBlb2YgZWNvc3lzdGVtU2VhcmNoTWlzcy4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIEVjb3N5c3RlbU5vdGlmaWNhdGlvbiA9IHR5cGVvZiBlY29zeXN0ZW1Ob3RpZmljYXRpb25RdWV1ZS4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBFY29zeXN0ZW1Ob3RpZmljYXRpb25JbnNlcnQgPSB0eXBlb2YgZWNvc3lzdGVtTm90aWZpY2F0aW9uUXVldWUuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBQaXBlbGluZVN0ZXBNYW5pZmVzdCA9IHR5cGVvZiBwaXBlbGluZVN0ZXBNYW5pZmVzdC4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBQaXBlbGluZVN0ZXBNYW5pZmVzdEluc2VydCA9IHR5cGVvZiBwaXBlbGluZVN0ZXBNYW5pZmVzdC4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIFBsdWdpbkluc3RhbGwgPSB0eXBlb2YgcGx1Z2luSW5zdGFsbC4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBQbHVnaW5JbnN0YWxsSW5zZXJ0ID0gdHlwZW9mIHBsdWdpbkluc3RhbGwuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBQbHVnaW5JbnN0YWxsUG9saWN5ID0gdHlwZW9mIHBsdWdpbkluc3RhbGxQb2xpY3kuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUGx1Z2luSW5zdGFsbFBvbGljeUluc2VydCA9IHR5cGVvZiBwbHVnaW5JbnN0YWxsUG9saWN5LiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgUGx1Z2luU2VjdXJpdHlOb3RpZmljYXRpb25QcmVmID0gdHlwZW9mIHBsdWdpblNlY3VyaXR5Tm90aWZpY2F0aW9uUHJlZi4kaW5mZXJTZWxlY3Q7XG5cbmV4cG9ydCB0eXBlIFBsdWdpbkFkdmlzb3J5RGVsaXZlcnkgPSB0eXBlb2YgcGx1Z2luQWR2aXNvcnlEZWxpdmVyeS4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBQbHVnaW5BZHZpc29yeURlbGl2ZXJ5SW5zZXJ0ID0gdHlwZW9mIHBsdWdpbkFkdmlzb3J5RGVsaXZlcnkuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBQdWJsaWNMaXN0aW5nID0gdHlwZW9mIHB1YmxpY0xpc3RpbmdzLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFB1YmxpY0xpc3RlZFZlcnNpb24gPSB0eXBlb2YgcHVibGljTGlzdGVkVmVyc2lvbnMuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUHVibGljQWR2aXNvcnkgPSB0eXBlb2YgcHVibGljQWR2aXNvcmllcy4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBQdWJsaWNSZXZpZXcgPSB0eXBlb2YgcHVibGljUmV2aWV3cy4kaW5mZXJTZWxlY3Q7XG4iXX0=
|
|
762
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNvc3lzdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2RhdGFiYXNlL3NjaGVtYS9lY29zeXN0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQW1EdEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsQyxPQUFPLEVBQ0wsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQy9HLFNBQVMsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE9BQU8sR0FDdEMsTUFBTSxxQkFBcUIsQ0FBQztBQVk3Qix1RUFBdUU7QUFDdkUsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFtQjtJQUM1QyxRQUFRO1FBQ04sT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztDQUNGLENBQUMsQ0FBQztBQUVILDhFQUE4RTtBQUM5RSw4RUFBOEU7QUFDOUUseURBQXlEO0FBQ3pELDhFQUE4RTtBQUU5RSxPQUFPLEVBQ0wsZUFBZSxFQUNmLGNBQWMsRUFDZCxxQkFBcUIsRUFDckIsd0JBQXdCLEVBQ3hCLDZCQUE2QixFQUM3Qix3QkFBd0IsRUFDeEIsbUJBQW1CLEVBQ25CLHdCQUF3QixFQUN4QixtQkFBbUIsR0FrQnBCLE1BQU0sNEJBQTRCLENBQUM7QUFpQ3BDLDhFQUE4RTtBQUM5RSwwQkFBMEI7QUFDMUIsOEVBQThFO0FBRTlFOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxZQUFZLEVBQUU7SUFDN0MsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxhQUFhLEVBQUU7SUFDM0MsVUFBVSxFQUFFLE9BQU8sQ0FBQyxjQUFjLEVBQUUsRUFB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RTtJQUNoRCxNQUFNLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUNuQyxTQUFTLEVBQUUsU0FBUyxDQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUNwRSxTQUFTLEVBQUUsU0FBUyxDQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUNwRSxvQkFBb0IsRUFBRSxPQUFPLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDbEYsYUFBYSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUN0QyxjQUFjLEVBQUUsU0FBUyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3JFLGNBQWMsRUFBRSxTQUFTLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7Q0FDdEUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBRWQsa0VBQWtFO0FBQ2xFLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLGtCQUFrQixDQUFDO0FBQzVELHFFQUFxRTtBQUNyRSxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxXQUFXLENBQUM7QUFFdEQsd0VBQXdFO0FBQ3hFLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHO0lBQzNDLGVBQWUsRUFBRSxzQ0FBc0M7SUFDdkQsZUFBZSxFQUFFLHNDQUFzQztDQUMvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8vXG4vLyBQbHVnaW4gZWNvc3lzdGVtIHRhYmxlcyAoZG9jcy9wbHVnaW4tcHVibGlzaGluZy5tZCkuIE1pcnJvcnMgdGhlXG4vLyBcIlBMVUdJTiBFQ09TWVNURU1cIiBzZWN0aW9uIG9mIHBvc3RncmVzLWluaXQuc3FsLCB3aGljaCBpcyBhdXRob3JpdGF0aXZlIGZvclxuLy8gdGhlIHRyaWdnZXItbWFpbnRhaW5lZCBgc2VhcmNoX3ZlY3RvcmAsIHRoZSBSTFMgcG9saWNpZXMgYW5kIHRoZSBwdWJsaWMgdmlld3MuXG4vL1xuLy8gVHdvIGtpbmRzIG9mIHRhYmxlOlxuLy8gICAqIEVDT1NZU1RFTS1HTE9CQUwg4oCUIHB1Ymxpc2hlcnMsIGxpc3RpbmdzLCBsaXN0aW5nIHZlcnNpb25zLCB0aGUgcHVibGlzaFxuLy8gICAgIHJlcXVlc3QgcXVldWUsIHJldmlld3MsIGFkdmlzb3JpZXMsIGFub255bW91cyBzdWJtaXNzaW9ucywg4oCmIFRoZVxuLy8gICAgIGRpcmVjdG9yeSBpcyBpbnN0YW5jZS13aWRlLCBzbyB0aGVzZSBjYXJyeSBOTyBgb3JnX2lkYDogdGhleSBhcmUgbm90XG4vLyAgICAgdGVuYW50IHNjb3BlZCwgd3JpdGVzIGFyZSBnYXRlZCBpbiB0aGUgc2VydmljZSBsYXllciAoc3lzdGVtLW9yZy1vbmx5XG4vLyAgICAgYXBwcm92YWwpLCBhbmQgdGhlaXIgUkxTIHBvbGljeSBhZG1pdHMgdGhlIGFwcGxpY2F0aW9uIHJvbGUgb25seS5cbi8vICAgICBgcHVibGlzaGVycy5vd25lcl9vcmdfaWRgIGlzIGRlbGliZXJhdGVseSBub3QgbmFtZWQgYG9yZ19pZGA6IGEgcHVibGlzaGVyXG4vLyAgICAgb3V0bGl2ZXMgaXRzIG9yZywgc28gaXQgbXVzdCBzdGF5IG91dCBvZiB0aGUgb3JnIGNhc2NhZGUsIHdoaWNoXG4vLyAgICAgdHJlYXRzIGV2ZXJ5IGBvcmdfaWRgIHRhYmxlIGFzIHRoZSBvcmcncyBkYXRhLlxuLy8gICAqIE9SRy1TQ09QRUQg4oCUIHBpcGVsaW5lX3N0ZXBfbWFuaWZlc3RzLCBwbHVnaW5faW5zdGFsbHMsXG4vLyAgICAgcGx1Z2luX2luc3RhbGxfcG9saWNpZXMsIHBsdWdpbl9hZHZpc29yeV9kZWxpdmVyaWVzOiBgb3JnX2lkYCArIHRoZVxuLy8gICAgIHN0YW5kYXJkIGBybHNfb3JnXypgIHBvbGljaWVzICsgRk9SQ0UsIGFuZCBwYXJ0IG9mIHRoZSBvcmcgY2FzY2FkZS5cbi8vXG4vLyBUaGUgdHdvIGBwdWJsaWNfKmAgdmlld3MgYXJlIGRlY2xhcmVkIHdpdGggYHBnVmlldyguLi4pLmV4aXN0aW5nKClgIChkcml6emxlXG4vLyBuZXZlciBjcmVhdGVzIHRoZW07IHBvc3RncmVzLWluaXQuc3FsIGRvZXMpLiBUaGV5IGFyZSB3aGF0IHRoZSBhbm9ueW1vdXNcbi8vIGRpcmVjdG9yeSBBUEkgcmVhZHMsIGNvbm5lY3RlZCBhcyBgZWNvc3lzdGVtX3B1YmxpY19yZWFkZXJgIOKAlCB0aGUgb25seVxuLy8gcmVsYXRpb25zIHRoYXQgcm9sZSBjYW4gU0VMRUNULiBUaGV5IGFyZSBleHBvcnRlZCBmb3IgdHlwZWQgcXVlcmllcyBidXQga2VwdFxuLy8gb3V0IG9mIHRoZSBhZ2dyZWdhdGUgYHNjaGVtYWAgb2JqZWN0LCB3aGljaCBsaXN0cyB0YWJsZXMgb25seS5cbi8vXG5cbmltcG9ydCB0eXBlIHtcbiAgUHVibGlzaGVyVGllcixcbiAgTGlzdGluZ1N0YXRlLFxuICBQdWJsaXNoUmVxdWVzdEtpbmQsXG4gIFB1Ymxpc2hSZXF1ZXN0U3RhdHVzLFxuICBQdWJsaXNoUmVxdWVzdExhbmUsXG4gIEluc3RhbGxWZXJzaW9uUG9saWN5LFxuICBJbnN0YWxsU3RhdHVzLFxuICBCbG9ja09uQWR2aXNvcnksXG4gIE9mZmljaWFsSW5zdGFsbHMsXG4gIFNoYWRvd2luZ01vZGUsXG4gIFJldmlld1N0YXR1cyxcbiAgUmV2aWV3SG9sZFJlYXNvbixcbiAgUmV2aWV3UmVwb3J0Q2F0ZWdvcnksXG4gIEFkdmlzb3J5U2V2ZXJpdHksXG4gIEFkdmlzb3J5U3RhdGUsXG4gIEFkdmlzb3J5U291cmNlLFxuICBTdWJtaXNzaW9uU3RhdHVzLFxuICBQbHVnaW5TY2FuRmxhZyxcbiAgUGx1Z2luU2NhblN1bW1hcnksXG4gIFBsdWdpblNlY3VyaXR5UmVjaXBpZW50TW9kZSxcbiAgUGx1Z2luU2VjdXJpdHlEaWdlc3RNb2RlLFxuICBIZWFsdGhDb21wb25lbnRTY29yZSxcbn0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHsgc3FsIH0gZnJvbSAnZHJpenpsZS1vcm0nO1xuaW1wb3J0IHtcbiAgYm9vbGVhbiwgY2hlY2ssIGN1c3RvbVR5cGUsIGRvdWJsZVByZWNpc2lvbiwgaW5kZXgsIGludGVnZXIsIGpzb25iLCBwZ1RhYmxlLCBwZ1ZpZXcsIHByaW1hcnlLZXksIHNtYWxsaW50LCB0ZXh0LFxuICB0aW1lc3RhbXAsIHVuaXF1ZUluZGV4LCB1dWlkLCB2YXJjaGFyLFxufSBmcm9tICdkcml6emxlLW9ybS9wZy1jb3JlJztcbmltcG9ydCB0eXBlIHsgUGx1Z2luSWNvbiwgUGx1Z2luU2VjcmV0LCBQbHVnaW5VcGxvYWRlZEljb24gfSBmcm9tICcuL3BsdWdpbi5qcyc7XG5cbi8qKlxuICogUGVyLWNvbXBvbmVudCBoZWFsdGggc2NvcmVzLCBhcyBTVE9SRUQuIFRoZSBjb21wb25lbnQgc2NvcmUgc2hhcGUgaXNcbiAqIGFwaS1jb3JlJ3MgYEhlYWx0aENvbXBvbmVudFNjb3JlYCDigJQgb25seSB0aGUga2V5IGlzIHdpZGVuZWQgdG8gYHN0cmluZ2AsXG4gKiBiZWNhdXNlIGRyaXp6bGUncyBgJHR5cGU8PigpYCBvbiBhIGpzb25iIGNvbHVtbiBtdXN0IGFjY2VwdCB3aGF0ZXZlclxuICogY29tcG9uZW50IHNldCBhIHJvdyB3YXMgd3JpdHRlbiB3aXRoIChhcGktY29yZSdzIGBIZWFsdGhCcmVha2Rvd25gIGtleXMgb25cbiAqIHRoZSBjdXJyZW50IGBIZWFsdGhDb21wb25lbnRgIHVuaW9uIGFuZCB3b3VsZCByZWplY3QgYW4gb2xkZXIgcm93KS5cbiAqL1xuZXhwb3J0IHR5cGUgSGVhbHRoQnJlYWtkb3duID0gUmVjb3JkPHN0cmluZywgSGVhbHRoQ29tcG9uZW50U2NvcmU+O1xuXG4vKiogUG9zdGdyZXMgYHRzdmVjdG9yYCwgd2hpY2ggZHJpenpsZS1vcm0gaGFzIG5vIG5hdGl2ZSBjb2x1bW4gZm9yLiAqL1xuY29uc3QgdHN2ZWN0b3IgPSBjdXN0b21UeXBlPHsgZGF0YTogc3RyaW5nIH0+KHtcbiAgZGF0YVR5cGUoKSB7XG4gICAgcmV0dXJuICd0c3ZlY3Rvcic7XG4gIH0sXG59KTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBFbnVtZXJhdGlvbnMg4oCUIGRlZmluZWQgaW4gYXBpLWNvcmUncyB3aXJlIHZvY2FidWxhcnkgc28gdGhlIGZyb250ZW5kIHNoYXJlc1xuLy8gdGhlbTsgZWFjaCBpcyBtaXJyb3JlZCBieSBhIENIRUNLIGluIHBvc3RncmVzLWluaXQuc3FsXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IHtcbiAgUFVCTElTSEVSX1RJRVJTLFxuICBMSVNUSU5HX1NUQVRFUyxcbiAgUFVCTElTSF9SRVFVRVNUX0tJTkRTLFxuICBQVUJMSVNIX1JFUVVFU1RfU1RBVFVTRVMsXG4gIE9QRU5fUFVCTElTSF9SRVFVRVNUX1NUQVRVU0VTLFxuICBJTlNUQUxMX1ZFUlNJT05fUE9MSUNJRVMsXG4gIFJFVklFV19IT0xEX1JFQVNPTlMsXG4gIFJFVklFV19SRVBPUlRfQ0FURUdPUklFUyxcbiAgU1VCTUlTU0lPTl9TVEFUVVNFUyxcbiAgdHlwZSBQdWJsaXNoZXJUaWVyLFxuICB0eXBlIExpc3RpbmdTdGF0ZSxcbiAgdHlwZSBQdWJsaXNoUmVxdWVzdEtpbmQsXG4gIHR5cGUgUHVibGlzaFJlcXVlc3RTdGF0dXMsXG4gIHR5cGUgUHVibGlzaFJlcXVlc3RMYW5lLFxuICB0eXBlIEluc3RhbGxWZXJzaW9uUG9saWN5LFxuICB0eXBlIEluc3RhbGxTdGF0dXMsXG4gIHR5cGUgQmxvY2tPbkFkdmlzb3J5LFxuICB0eXBlIE9mZmljaWFsSW5zdGFsbHMsXG4gIHR5cGUgU2hhZG93aW5nTW9kZSxcbiAgdHlwZSBSZXZpZXdTdGF0dXMsXG4gIHR5cGUgUmV2aWV3SG9sZFJlYXNvbixcbiAgdHlwZSBSZXZpZXdSZXBvcnRDYXRlZ29yeSxcbiAgdHlwZSBBZHZpc29yeVNldmVyaXR5LFxuICB0eXBlIEFkdmlzb3J5U3RhdGUsXG4gIHR5cGUgQWR2aXNvcnlTb3VyY2UsXG4gIHR5cGUgU3VibWlzc2lvblN0YXR1cyxcbn0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuXG4vKipcbiAqIEEgbWVtYmVyJ3MgcGVuZGluZyByZXF1ZXN0IHRvIENIQU5HRSBhbiBhY3RpdmUgaW5zdGFsbCAoaXRzIHZlcnNpb24gb3JcbiAqIHZlcnNpb24gcG9saWN5KSB0aGF0IG5lZWRzIGFuIGFwcHJvdmVyIOKAlCBjcm9zc2luZyBhIG1ham9yL2JyZWFraW5nIHZlcnNpb24sXG4gKiBvciB3aWRlbmluZyB0byBgbGF0ZXN0YCwgb24gYW4gYXBwcm92YWwtZ2F0ZWQgdGllci4gT25lIHBlciBpbnN0YWxsOyBhblxuICogYXBwcm92ZXIgKGBwbHVnaW5faW5zdGFsbHM6bWFuYWdlYCkgYXBwbGllcyBvciByZWplY3RzIGl0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbGxDaGFuZ2VSZXF1ZXN0IHtcbiAgLyoqIFRoZSB2ZXJzaW9uIHRoZSBpbnN0YWxsIHdvdWxkIG1vdmUgdG8uICovXG4gIHZlcnNpb246IHN0cmluZztcbiAgLyoqIFRoZSB2ZXJzaW9uIHBvbGljeSBpdCB3b3VsZCBtb3ZlIHRvLiAqL1xuICB2ZXJzaW9uUG9saWN5OiBJbnN0YWxsVmVyc2lvblBvbGljeTtcbiAgcmVxdWVzdGVkQnk6IHN0cmluZztcbiAgLyoqIElTTyB0aW1lIG9mIHRoZSByZXF1ZXN0LiAqL1xuICByZXF1ZXN0ZWRBdDogc3RyaW5nO1xuICBub3RlOiBzdHJpbmcgfCBudWxsO1xufVxuLyoqIEEgYChwdWJsaXNoZXIsIG5hbWUpYCBhbiBvcmcncyBjb25zdW1wdGlvbiBwb2xpY3kgYmxvY2tzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBCbG9ja2VkTGlzdGluZ1JlZiB7XG4gIHB1Ymxpc2hlcjogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbi8qKiBBbiBhbm9ueW1vdXMgc3VibWlzc2lvbidzIGFjY2VwdGVkIGNhdGFsb2cgbWV0YWRhdGEgYW5kIHBlci1maWVsZCBwcm92ZW5hbmNlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdWJtaXNzaW9uQ2F0YWxvZyB7XG4gIHZhbHVlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHNvdXJjZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5cbi8qKiBOb3RpZmljYXRpb24gZXZlbnQgbnVtYmVyIChgTjFgIOKApiBgTjI5YCkuICovXG5leHBvcnQgdHlwZSBFY29zeXN0ZW1Ob3RpZmljYXRpb25FdmVudCA9IGBOJHtudW1iZXJ9YDtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBFY29zeXN0ZW0tZ2xvYmFsIHRhYmxlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogQW4gb3JnJ3MgcHVibGljIGlkZW50aXR5IChvbmUgcGVyIHJvb3Qgb3JnKS4gYG93bmVyT3JnSWRgIGlzIE5VTEwgZm9yIHRoZVxuICogcGxhdGZvcm0tb3duZWQgYGNvbW11bml0eWAgcHVibGlzaGVyIGFub255bW91cyBzdWJtaXNzaW9ucyBsYW5kIHVuZGVyLlxuICpcbiAqIEB0YWJsZSBwdWJsaXNoZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBwdWJsaXNoZXIgPSBwZ1RhYmxlKCdwdWJsaXNoZXJzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBvd25lck9yZ0lkOiB2YXJjaGFyKCdvd25lcl9vcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLnVuaXF1ZSgpLFxuICBoYW5kbGU6IHZhcmNoYXIoJ2hhbmRsZScsIHsgbGVuZ3RoOiAzOSB9KS5ub3ROdWxsKCkudW5pcXVlKCksXG4gIGRpc3BsYXlOYW1lOiB2YXJjaGFyKCdkaXNwbGF5X25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgZGVzY3JpcHRpb246IHRleHQoJ2Rlc2NyaXB0aW9uJyksXG4gIGhvbWVwYWdlVXJsOiB2YXJjaGFyKCdob21lcGFnZV91cmwnLCB7IGxlbmd0aDogMjA0OCB9KSxcbiAgdGllcjogdmFyY2hhcigndGllcicsIHsgbGVuZ3RoOiAyMCB9KS4kdHlwZTxQdWJsaXNoZXJUaWVyPigpLmRlZmF1bHQoJ2NvbW11bml0eScpLm5vdE51bGwoKSxcbiAgdmVyaWZpZWRBdDogdGltZXN0YW1wKCd2ZXJpZmllZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICAvLyBWZXJpZmllZCBwdWJsaXNoZXIgZG93bmdyYWRlZCBiZWxvdyBUZWFtIGtlZXBzIHRoZSB0aWVyIHVudGlsIHRoaXMgcGFzc2VzIChOMjkpLlxuICB2ZXJpZmllZEdyYWNlVW50aWw6IHRpbWVzdGFtcCgndmVyaWZpZWRfZ3JhY2VfdW50aWwnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgdGVybXNWZXJzaW9uOiB2YXJjaGFyKCd0ZXJtc192ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLFxuICB0ZXJtc0FjY2VwdGVkQXQ6IHRpbWVzdGFtcCgndGVybXNfYWNjZXB0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgc3VzcGVuZGVkQXQ6IHRpbWVzdGFtcCgnc3VzcGVuZGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIHN1c3BlbmRSZWFzb246IHRleHQoJ3N1c3BlbmRfcmVhc29uJyksXG4gIC8vIFc3IHJvbGwtdXBzLCB3cml0dGVuIGJ5IHRoZSBzdGF0cyBzd2VlcDogcnVuLXdlaWdodGVkIDMwLWRheSBzdWNjZXNzIHJhdGVcbiAgLy8gYW5kIHRoZSBpbnN0YWxsLXdlaWdodGVkIG1lYW4gaGVhbHRoIHNjb3JlIG9mIGl0cyBsaXN0aW5ncyAoTlVMTDogbm9uZSkuXG4gIHN1Y2Nlc3NSYXRlMzBkOiBkb3VibGVQcmVjaXNpb24oJ3N1Y2Nlc3NfcmF0ZV8zMGQnKSxcbiAgaGVhbHRoU2NvcmU6IGludGVnZXIoJ2hlYWx0aF9zY29yZScpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgaGFuZGxlQ2hlY2s6IGNoZWNrKCdwdWJsaXNoZXJzX2hhbmRsZV9jaGVjaycsIHNxbGAke3RhYmxlLmhhbmRsZX0gfiAnXlthLXowLTldW2EtejAtOS1dKiQnYCksXG4gIHRpZXJDaGVjazogY2hlY2soJ3B1Ymxpc2hlcnNfdGllcl9jaGVjaycsXG4gICAgc3FsYCR7dGFibGUudGllcn0gSU4gKCdvZmZpY2lhbCcsICd2ZXJpZmllZCcsICdjb21tdW5pdHknLCAndW52ZXJpZmllZCcpYCksXG59KSk7XG5cbi8qKlxuICogQSBwbHVnaW4gTkFNRSBwdWJsaXNoZWQgYnkgYSBwdWJsaXNoZXIuIFJldmlld3MsIGluc3RhbGxzLCBzdGF0cyBhbmQgc2VhcmNoXG4gKiBhdHRhY2ggaGVyZTsgdGhlIHBlci12ZXJzaW9uIHJlY29yZHMgYXJlIHtAbGluayBwbHVnaW5MaXN0aW5nVmVyc2lvbn0uXG4gKiBgc2VhcmNoVmVjdG9yYCBpcyBtYWludGFpbmVkIGJ5IGEgdHJpZ2dlciBpbiBwb3N0Z3Jlcy1pbml0LnNxbCAobmFtZSBBLFxuICoga2V5d29yZHMgKyBjYXRlZ29yeSBCLCBzdW1tYXJ5IEMsIFJFQURNRSArIGRlc2NyaXB0aW9uIEQsIGNvbmZpZyBgZW5nbGlzaGApXG4gKiDigJQgbmV2ZXIgd3JpdGUgaXQgZnJvbSB0aGUgYXBwbGljYXRpb24uXG4gKlxuICogQHRhYmxlIHBsdWdpbl9saXN0aW5nc1xuICovXG5leHBvcnQgY29uc3QgcGx1Z2luTGlzdGluZyA9IHBnVGFibGUoJ3BsdWdpbl9saXN0aW5ncycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgcHVibGlzaGVySWQ6IHV1aWQoJ3B1Ymxpc2hlcl9pZCcpLm5vdE51bGwoKS5yZWZlcmVuY2VzKCgpID0+IHB1Ymxpc2hlci5pZCksXG4gIG5hbWU6IHZhcmNoYXIoJ25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgY2F0ZWdvcnk6IHZhcmNoYXIoJ2NhdGVnb3J5JywgeyBsZW5ndGg6IDUwIH0pLmRlZmF1bHQoJ3Vua25vd24nKS5ub3ROdWxsKCksXG4gIHN1bW1hcnk6IHZhcmNoYXIoJ3N1bW1hcnknLCB7IGxlbmd0aDogMzAwIH0pLFxuICBkZXNjcmlwdGlvbjogdGV4dCgnZGVzY3JpcHRpb24nKSxcbiAgcmVhZG1lSHRtbDogdGV4dCgncmVhZG1lX2h0bWwnKSxcbiAgbGljZW5zZTogdmFyY2hhcignbGljZW5zZScsIHsgbGVuZ3RoOiA2NCB9KSxcbiAgaG9tZXBhZ2VVcmw6IHZhcmNoYXIoJ2hvbWVwYWdlX3VybCcsIHsgbGVuZ3RoOiAyMDQ4IH0pLFxuICBzb3VyY2VVcmw6IHZhcmNoYXIoJ3NvdXJjZV91cmwnLCB7IGxlbmd0aDogMjA0OCB9KSxcbiAgaWNvbjoganNvbmIoJ2ljb24nKS4kdHlwZTxQbHVnaW5JY29uPigpLFxuICB1cGxvYWRlZEljb246IGpzb25iKCd1cGxvYWRlZF9pY29uJykuJHR5cGU8UGx1Z2luVXBsb2FkZWRJY29uPigpLFxuICBrZXl3b3JkczoganNvbmIoJ2tleXdvcmRzJykuJHR5cGU8c3RyaW5nW10+KCkuZGVmYXVsdChbXSkubm90TnVsbCgpLFxuICBzdGF0ZTogdmFyY2hhcignc3RhdGUnLCB7IGxlbmd0aDogMjAgfSkuJHR5cGU8TGlzdGluZ1N0YXRlPigpLmRlZmF1bHQoJ2xpc3RlZCcpLm5vdE51bGwoKSxcbiAgLy8gUHVibGlzaGVyIHBhdXNlOiBubyBuZXcgaW5zdGFsbHM7IGV4aXN0aW5nIGluc3RhbGxzIGtlZXAgcmVzb2x2aW5nLlxuICBwYXVzZWRBdDogdGltZXN0YW1wKCdwYXVzZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgZmVhdHVyZWQ6IGJvb2xlYW4oJ2ZlYXR1cmVkJykuZGVmYXVsdChmYWxzZSkubm90TnVsbCgpLFxuICBsYXRlc3RWZXJzaW9uOiB2YXJjaGFyKCdsYXRlc3RfdmVyc2lvbicsIHsgbGVuZ3RoOiA1MCB9KSxcbiAgc2VhcmNoVmVjdG9yOiB0c3ZlY3Rvcignc2VhcmNoX3ZlY3RvcicpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgcHVibGlzaGVyTmFtZVVuaXF1ZTogdW5pcXVlSW5kZXgoJ3BsdWdpbl9saXN0aW5nX3B1Ymxpc2hlcl9uYW1lX3VuaXF1ZScpLm9uKHRhYmxlLnB1Ymxpc2hlcklkLCB0YWJsZS5uYW1lKSxcbiAgc3RhdGVDYXRlZ29yeUlkeDogaW5kZXgoJ3BsdWdpbl9saXN0aW5nX3N0YXRlX2NhdGVnb3J5X2lkeCcpLm9uKHRhYmxlLnN0YXRlLCB0YWJsZS5jYXRlZ29yeSksXG4gIHVwZGF0ZWRBdElkeDogaW5kZXgoJ3BsdWdpbl9saXN0aW5nX3VwZGF0ZWRfYXRfaWR4Jykub24odGFibGUudXBkYXRlZEF0KSxcbiAgc2VhcmNoVmVjdG9ySWR4OiBpbmRleCgncGx1Z2luX2xpc3Rpbmdfc2VhcmNoX3ZlY3Rvcl9pZHgnKS51c2luZygnZ2luJywgdGFibGUuc2VhcmNoVmVjdG9yKSxcbiAgLy8gcGdfdHJnbTogdHlwby10b2xlcmFudCBuYW1lIG1hdGNoaW5nIChcInRlcmFmcm9tXCIgLT4gdGVycmFmb3JtKS5cbiAgbmFtZVRyZ21JZHg6IGluZGV4KCdwbHVnaW5fbGlzdGluZ19uYW1lX3RyZ21faWR4JykudXNpbmcoJ2dpbicsIHNxbGAke3RhYmxlLm5hbWV9IGdpbl90cmdtX29wc2ApLFxuICBzdGF0ZUNoZWNrOiBjaGVjaygncGx1Z2luX2xpc3RpbmdzX3N0YXRlX2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS5zdGF0ZX0gSU4gKCdsaXN0ZWQnLCAndW5tYWludGFpbmVkJywgJ3N1c3BlbmRlZCcsICd0cmFuc2ZlcnJlZCcpYCksXG59KSk7XG5cbi8qKlxuICogVGhlIHB1YmxpYywgZnJvemVuIHN1YnNldCBvZiBhIHBsdWdpbiByZWNvcmQgY2FwdHVyZWQgYXQgYXBwcm92YWwsIHNvIGFcbiAqIGxpc3RlZCB2ZXJzaW9uIGtlZXBzIHN5bnRoZXNpemluZyBhZnRlciB0aGUgcHVibGlzaGVyIG9yZydzIG93biBgcGx1Z2luc2BcbiAqIHJvdyBpcyBkZWxldGVkIG9yIHB1cmdlZC4gT25seSB0aGUga2V5cyB0aGUgYHB1YmxpY19saXN0ZWRfdmVyc2lvbnNgXG4gKiB2aWV3IHByb2plY3RzIGFyZSBwdWJsaWM7IHRoZSByZXN0IGlzIHZpc2libGUgdG8gaW5zdGFsbGVycycgc3ludGggb25seS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaXN0aW5nVmVyc2lvblNwZWNTbmFwc2hvdCB7XG4gIHBsdWdpblR5cGU/OiBzdHJpbmc7XG4gIGNvbXB1dGVUeXBlPzogc3RyaW5nO1xuICBzZWNyZXRzPzogUGx1Z2luU2VjcmV0W107XG4gIHJlcXVpcmVkTWV0YWRhdGE/OiBzdHJpbmdbXTtcbiAgcmVxdWlyZWRWYXJzPzogc3RyaW5nW107XG4gIG5ldHdvcmtFZ3Jlc3M/OiBzdHJpbmdbXTtcbiAgcnVuQXNSb290PzogYm9vbGVhbjtcbiAgbGljZW5zZT86IHN0cmluZztcbiAgcmVhZG1lSHRtbD86IHN0cmluZztcbiAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBBIHZlcnNpb24gcHVibGlzaGVkIHRvIGEgbGlzdGluZyDigJQgdGhlIGNvcHkgaW4gdGhlIHJlYWQtb25seSBgcHVibGljLypgXG4gKiBuYW1lc3BhY2UuIEltbXV0YWJsZSBvbmNlIHdyaXR0ZW4gYXBhcnQgZnJvbSBwYXVzZSAvIHlhbmsgL1xuICogZGVwcmVjYXRpb24uIGBzb3VyY2VQbHVnaW5JZGAgaXMgcHJvdmVuYW5jZSBvbmx5IChubyBGSzogdGhlIG9yZyByb3cgaXNcbiAqIHNvZnQtZGVsZXRlZCBhbmQgcHVyZ2VkIG9uIGl0cyBvd24gc2NoZWR1bGUpLlxuICpcbiAqIEB0YWJsZSBwbHVnaW5fbGlzdGluZ192ZXJzaW9uc1xuICovXG5leHBvcnQgY29uc3QgcGx1Z2luTGlzdGluZ1ZlcnNpb24gPSBwZ1RhYmxlKCdwbHVnaW5fbGlzdGluZ192ZXJzaW9ucycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgbGlzdGluZ0lkOiB1dWlkKCdsaXN0aW5nX2lkJykubm90TnVsbCgpLnJlZmVyZW5jZXMoKCkgPT4gcGx1Z2luTGlzdGluZy5pZCwgeyBvbkRlbGV0ZTogJ2Nhc2NhZGUnIH0pLFxuICBzb3VyY2VQbHVnaW5JZDogdXVpZCgnc291cmNlX3BsdWdpbl9pZCcpLFxuICB2ZXJzaW9uOiB2YXJjaGFyKCd2ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLm5vdE51bGwoKSxcbiAgaW1hZ2VEaWdlc3Q6IHZhcmNoYXIoJ2ltYWdlX2RpZ2VzdCcsIHsgbGVuZ3RoOiA3MSB9KSxcbiAgLy8gcHVibGljLzxoYW5kbGU+LzxuYW1lPlxuICBpbWFnZVJlcG9zaXRvcnk6IHZhcmNoYXIoJ2ltYWdlX3JlcG9zaXRvcnknLCB7IGxlbmd0aDogNTEyIH0pLFxuICBzcGVjU25hcHNob3Q6IGpzb25iKCdzcGVjX3NuYXBzaG90JykuJHR5cGU8TGlzdGluZ1ZlcnNpb25TcGVjU25hcHNob3Q+KCkuZGVmYXVsdCh7fSkubm90TnVsbCgpLFxuICBicmVha2luZzogYm9vbGVhbignYnJlYWtpbmcnKS5kZWZhdWx0KGZhbHNlKS5ub3ROdWxsKCksXG4gIHBhdXNlZEF0OiB0aW1lc3RhbXAoJ3BhdXNlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICB5YW5rZWRBdDogdGltZXN0YW1wKCd5YW5rZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgeWFua1JlYXNvbjogdGV4dCgneWFua19yZWFzb24nKSxcbiAgZGVwcmVjYXRlZEF0OiB0aW1lc3RhbXAoJ2RlcHJlY2F0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgZGVwcmVjYXRpb25NZXNzYWdlOiB0ZXh0KCdkZXByZWNhdGlvbl9tZXNzYWdlJyksXG4gIGNoYW5nZWxvZzogdGV4dCgnY2hhbmdlbG9nJyksXG4gIHZ1bG5Dcml0aWNhbDogaW50ZWdlcigndnVsbl9jcml0aWNhbCcpLFxuICB2dWxuSGlnaDogaW50ZWdlcigndnVsbl9oaWdoJyksXG4gIC8vIEZpeGFibGUgc3Vic2V0IChncnlwZSByZXBvcnRzIGEgZml4ZWQgdmVyc2lvbik7IE5VTEwgPSB1bnNjYW5uZWQuXG4gIHZ1bG5Dcml0aWNhbEZpeGFibGU6IGludGVnZXIoJ3Z1bG5fY3JpdGljYWxfZml4YWJsZScpLFxuICB2dWxuSGlnaEZpeGFibGU6IGludGVnZXIoJ3Z1bG5faGlnaF9maXhhYmxlJyksXG4gIHNjYW5uZWRBdDogdGltZXN0YW1wKCdzY2FubmVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIC8vIFRoZSBuaWdodGx5IHJlc2NhbidzIGZsYWcgKGZpeGFibGUgY3JpdGljYWxzIG92ZXIgUExVR0lOX1ZVTE5fTUFYX0NSSVRJQ0FMKTsgTlVMTCA9IG5vdCBmbGFnZ2VkLlxuICBzY2FuRmxhZ2dlZEF0OiB0aW1lc3RhbXAoJ3NjYW5fZmxhZ2dlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBzY2FuRmxhZzoganNvbmIoJ3NjYW5fZmxhZycpLiR0eXBlPFBsdWdpblNjYW5GbGFnPigpLFxuICAvKipcbiAgICogVGhlIExBU1QgcmVzY2FuJ3MgZmluZGluZ3MgZm9yIHRoaXMgdmVyc2lvbiwgd3JpdHRlbiB3aGV0aGVyIG9yIG5vdCB0aGVcbiAgICogZ2F0aW5nIGZsYWcgdHJpcHBlZC5cbiAgICpcbiAgICogYHNjYW5fZmxhZ2AgaXMgc2V0IG9ubHkgd2hpbGUgZml4YWJsZSBjcml0aWNhbHMgZXhjZWVkXG4gICAqIFBMVUdJTl9WVUxOX01BWF9DUklUSUNBTCwgc28gYSB2ZXJzaW9uIGNhcnJ5aW5nIG9ubHkgSGlnaCBmaW5kaW5ncyBzdG9yZXNcbiAgICogbm90aGluZyDigJQgYW5kIHRoZSB2dWxuZXJhYmlsaXR5IHJlcG9ydCBzZWN0aW9uLCB3aG9zZSB3aG9sZSBqb2IgaXMgdG8gc2hvd1xuICAgKiBDcml0aWNhbCBBTkQgSGlnaCBleHBvc3VyZSwgaGFkIG5vIHNvdXJjZSB0byByZWFkLiBUaGlzIGhvbGRzIHRoZSBjb3VudHMgYW5kXG4gICAqIHRoZSB0b3AgZmluZGluZ3MgZm9yIGV2ZXJ5IGluLXVzZSB2ZXJzaW9uLCBpbmRlcGVuZGVudCBvZiB0aGUgZ2F0ZTogd2hhdCBhXG4gICAqIHJlcG9ydCBzaG93cyBhbmQgd2hhdCBhIGJ1aWxkIHJlZnVzZXMgYXJlIGRpZmZlcmVudCBxdWVzdGlvbnMuXG4gICAqL1xuICBzY2FuU3VtbWFyeToganNvbmIoJ3NjYW5fc3VtbWFyeScpLiR0eXBlPFBsdWdpblNjYW5TdW1tYXJ5PigpLFxuICAvLyBUaGUgYmFzZSBpbWFnZSdzIGNvbmZpZyBgY3JlYXRlZGAgdGltZSwgcmVjb3JkZWQgYXQgcHVibGlzaDsgTlVMTCA9IHVua25vd24uXG4gIGJhc2VJbWFnZUNyZWF0ZWRBdDogdGltZXN0YW1wKCdiYXNlX2ltYWdlX2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgLy8gV2hlbiBtYWludGVuYW5jZSBjb2xsZWN0ZWQgdGhpcyBsb25nLXlhbmtlZCwgdW5yZWZlcmVuY2VkIHZlcnNpb24ncyBwdWJsaWMvKiBpbWFnZTsgTlVMTCA9IHN0aWxsIHN0b3JlZC5cbiAgaW1hZ2VDb2xsZWN0ZWRBdDogdGltZXN0YW1wKCdpbWFnZV9jb2xsZWN0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgcHVibGlzaGVkQXQ6IHRpbWVzdGFtcCgncHVibGlzaGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgcHVibGlzaGVkQnk6IHRleHQoJ3B1Ymxpc2hlZF9ieScpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgbGlzdGluZ1ZlcnNpb25VbmlxdWU6IHVuaXF1ZUluZGV4KCdwbHVnaW5fbGlzdGluZ192ZXJzaW9uX3VuaXF1ZScpLm9uKHRhYmxlLmxpc3RpbmdJZCwgdGFibGUudmVyc2lvbiksXG4gIC8vIHB1YmxpYy8qIEdDIGd1YXJkICsgZGlnZXN0IGxvb2t1cHMuXG4gIGRpZ2VzdElkeDogaW5kZXgoJ3BsdWdpbl9saXN0aW5nX3ZlcnNpb25fZGlnZXN0X2lkeCcpLm9uKHRhYmxlLmltYWdlRGlnZXN0KSxcbiAgdmVyc2lvbkNoZWNrOiBjaGVjaygncGx1Z2luX2xpc3RpbmdfdmVyc2lvbnNfdmVyc2lvbl9jaGVjaycsXG4gICAgc3FsYCR7dGFibGUudmVyc2lvbn0gfiAnXlswLTldK1xcLlswLTldK1xcLlswLTldKygtW2EtekEtWjAtOS4tXSspPyhcXCtbYS16QS1aMC05Li1dKyk/JCdgLFxuICApLFxuICBpbWFnZURpZ2VzdENoZWNrOiBjaGVjaygncGx1Z2luX2xpc3RpbmdfdmVyc2lvbnNfaW1hZ2VfZGlnZXN0X2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS5pbWFnZURpZ2VzdH0gSVMgTlVMTCBPUiAke3RhYmxlLmltYWdlRGlnZXN0fSB+ICdec2hhMjU2OlswLTlhLWZdezY0fSQnYCksXG59KSk7XG5cbi8qKlxuICogU2VjdXJpdHkgYWR2aXNvcnkgYWdhaW5zdCBhIGxpc3RpbmcncyB2ZXJzaW9uIHJhbmdlLlxuICpcbiAqIEB0YWJsZSBwbHVnaW5fYWR2aXNvcmllc1xuICovXG5leHBvcnQgY29uc3QgcGx1Z2luQWR2aXNvcnkgPSBwZ1RhYmxlKCdwbHVnaW5fYWR2aXNvcmllcycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgbGlzdGluZ0lkOiB1dWlkKCdsaXN0aW5nX2lkJykubm90TnVsbCgpLnJlZmVyZW5jZXMoKCkgPT4gcGx1Z2luTGlzdGluZy5pZCksXG4gIHB1Ymxpc2hlcklkOiB1dWlkKCdwdWJsaXNoZXJfaWQnKS5ub3ROdWxsKCkucmVmZXJlbmNlcygoKSA9PiBwdWJsaXNoZXIuaWQpLFxuICAvLyBTZW12ZXIgcmFuZ2Ugb2YgYWZmZWN0ZWQgdmVyc2lvbnMuXG4gIGFmZmVjdGVkUmFuZ2U6IHZhcmNoYXIoJ2FmZmVjdGVkX3JhbmdlJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIGZpeGVkVmVyc2lvbjogdmFyY2hhcignZml4ZWRfdmVyc2lvbicsIHsgbGVuZ3RoOiA1MCB9KSxcbiAgc2V2ZXJpdHk6IHZhcmNoYXIoJ3NldmVyaXR5JywgeyBsZW5ndGg6IDEwIH0pLiR0eXBlPEFkdmlzb3J5U2V2ZXJpdHk+KCkubm90TnVsbCgpLFxuICBzdW1tYXJ5OiB2YXJjaGFyKCdzdW1tYXJ5JywgeyBsZW5ndGg6IDMwMCB9KS5ub3ROdWxsKCksXG4gIGRldGFpbHNNZDogdGV4dCgnZGV0YWlsc19tZCcpLFxuICBkZXRhaWxzSHRtbDogdGV4dCgnZGV0YWlsc19odG1sJyksXG4gIGN2ZUlkczogdGV4dCgnY3ZlX2lkcycpLmFycmF5KCkuZGVmYXVsdChbXSkubm90TnVsbCgpLFxuICBzdGF0ZTogdmFyY2hhcignc3RhdGUnLCB7IGxlbmd0aDogMjAgfSkuJHR5cGU8QWR2aXNvcnlTdGF0ZT4oKS5kZWZhdWx0KCdkcmFmdCcpLm5vdE51bGwoKSxcbiAgc291cmNlOiB2YXJjaGFyKCdzb3VyY2UnLCB7IGxlbmd0aDogMjAgfSkuJHR5cGU8QWR2aXNvcnlTb3VyY2U+KCkubm90TnVsbCgpLFxuICBjcmVhdGVkQnk6IHRleHQoJ2NyZWF0ZWRfYnknKS5ub3ROdWxsKCksXG4gIHB1Ymxpc2hlZEJ5OiB0ZXh0KCdwdWJsaXNoZWRfYnknKSxcbiAgcHVibGlzaGVkQXQ6IHRpbWVzdGFtcCgncHVibGlzaGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIHdpdGhkcmF3bkF0OiB0aW1lc3RhbXAoJ3dpdGhkcmF3bl9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgbGlzdGluZ1N0YXRlSWR4OiBpbmRleCgncGx1Z2luX2Fkdmlzb3J5X2xpc3Rpbmdfc3RhdGVfaWR4Jykub24odGFibGUubGlzdGluZ0lkLCB0YWJsZS5zdGF0ZSksXG4gIHB1Ymxpc2hlcklkeDogaW5kZXgoJ3BsdWdpbl9hZHZpc29yeV9wdWJsaXNoZXJfaWR4Jykub24odGFibGUucHVibGlzaGVySWQpLFxuICBzZXZlcml0eUNoZWNrOiBjaGVjaygncGx1Z2luX2Fkdmlzb3JpZXNfc2V2ZXJpdHlfY2hlY2snLFxuICAgIHNxbGAke3RhYmxlLnNldmVyaXR5fSBJTiAoJ2NyaXRpY2FsJywgJ2hpZ2gnLCAnbWVkaXVtJywgJ2xvdycpYCksXG4gIHN0YXRlQ2hlY2s6IGNoZWNrKCdwbHVnaW5fYWR2aXNvcmllc19zdGF0ZV9jaGVjaycsIHNxbGAke3RhYmxlLnN0YXRlfSBJTiAoJ2RyYWZ0JywgJ3B1Ymxpc2hlZCcsICd3aXRoZHJhd24nKWApLFxuICBzb3VyY2VDaGVjazogY2hlY2soJ3BsdWdpbl9hZHZpc29yaWVzX3NvdXJjZV9jaGVjaycsXG4gICAgc3FsYCR7dGFibGUuc291cmNlfSBJTiAoJ3B1Ymxpc2hlcicsICdtb2RlcmF0b3InLCAnY3ZlX3Jlc2NhbicsICdyZXZpZXcnKWApLFxufSkpO1xuXG4vKipcbiAqIEEgcHJvcG9zZWQgZW5hYmxlIG9yIHdpZGVuaW5nIG9mIGFuIGF1dG8tYXBwcm92YWwgcnVsZSwgd2FpdGluZyBmb3IgYSBTRUNPTkRcbiAqIEVjb3N5c3RlbSBNYW5hZ2VyIChuZXZlciB0aGUgcHJvcG9zZXIpLiBEaXNhYmxpbmcgb3IgZGVsZXRpbmcgYSBydWxlXG4gKiBuYXJyb3dzIGl0IGFuZCBhcHBsaWVzIGF0IG9uY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b0FwcHJvdmFsUnVsZVBlbmRpbmdDaGFuZ2Uge1xuICByZXF1ZXN0ZWRCeTogc3RyaW5nO1xuICByZXF1ZXN0ZWRBdDogc3RyaW5nO1xuICBlbmFibGVkOiBib29sZWFuO1xuICBuYW1lOiBzdHJpbmc7XG4gIGNvbmRpdGlvbnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKipcbiAqIFN5c3RlbS1vcmcgYXV0by1hcHByb3ZhbCBydWxlczsgZW5hYmxpbmcgb3Igd2lkZW5pbmcgb25lXG4gKiBuZWVkcyBhIHNlY29uZCBhcHByb3ZlciAoYHBlbmRpbmdDaGFuZ2VgKS5cbiAqXG4gKiBAdGFibGUgZWNvc3lzdGVtX2F1dG9fYXBwcm92YWxfcnVsZXNcbiAqL1xuZXhwb3J0IGNvbnN0IGVjb3N5c3RlbUF1dG9BcHByb3ZhbFJ1bGUgPSBwZ1RhYmxlKCdlY29zeXN0ZW1fYXV0b19hcHByb3ZhbF9ydWxlcycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgbmFtZTogdmFyY2hhcignbmFtZScsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBlbmFibGVkOiBib29sZWFuKCdlbmFibGVkJykuZGVmYXVsdChmYWxzZSkubm90TnVsbCgpLFxuICBjb25kaXRpb25zOiBqc29uYignY29uZGl0aW9ucycpLiR0eXBlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PigpLmRlZmF1bHQoe30pLm5vdE51bGwoKSxcbiAgY3JlYXRlZEJ5OiB0ZXh0KCdjcmVhdGVkX2J5Jykubm90TnVsbCgpLFxuICAvLyBTZWNvbmQgYXBwcm92ZXIgKG5ldmVyIHRoZSBjcmVhdG9yKS5cbiAgYXBwcm92ZWRCeTogdGV4dCgnYXBwcm92ZWRfYnknKSxcbiAgcGVuZGluZ0NoYW5nZToganNvbmIoJ3BlbmRpbmdfY2hhbmdlJykuJHR5cGU8QXV0b0FwcHJvdmFsUnVsZVBlbmRpbmdDaGFuZ2U+KCksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSk7XG5cbi8qKlxuICogVGhlIHNpbmdsZSBxdWV1ZSB0aGUgRWNvc3lzdGVtIGNvbnNvbGUgd29ya3MgZnJvbS4gYGRpZ2VzdGAgaXMgcGlubmVkXG4gKiBhdCBzdWJtaXQ6IGFwcHJvdmFsIHB1Ymxpc2hlcyBleGFjdGx5IGl0LCBvciBmYWlscyBjbG9zZWQuIGBwbHVnaW5JZGBcbiAqIGhhcyBubyBGSyAodGhlIG9yZyByb3cgaXMgc29mdC1kZWxldGVkIGFuZCBwdXJnZWQgb24gaXRzIG93biBzY2hlZHVsZSkuXG4gKlxuICogQHRhYmxlIHBsdWdpbl9wdWJsaXNoX3JlcXVlc3RzXG4gKi9cbmV4cG9ydCBjb25zdCBwbHVnaW5QdWJsaXNoUmVxdWVzdCA9IHBnVGFibGUoJ3BsdWdpbl9wdWJsaXNoX3JlcXVlc3RzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBwdWJsaXNoZXJJZDogdXVpZCgncHVibGlzaGVyX2lkJykubm90TnVsbCgpLnJlZmVyZW5jZXMoKCkgPT4gcHVibGlzaGVyLmlkKSxcbiAgbGlzdGluZ0lkOiB1dWlkKCdsaXN0aW5nX2lkJykucmVmZXJlbmNlcygoKSA9PiBwbHVnaW5MaXN0aW5nLmlkKSxcbiAgcGx1Z2luSWQ6IHV1aWQoJ3BsdWdpbl9pZCcpLFxuICB2ZXJzaW9uOiB2YXJjaGFyKCd2ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLFxuICBkaWdlc3Q6IHZhcmNoYXIoJ2RpZ2VzdCcsIHsgbGVuZ3RoOiA3MSB9KSxcbiAga2luZDogdmFyY2hhcigna2luZCcsIHsgbGVuZ3RoOiAyMCB9KS4kdHlwZTxQdWJsaXNoUmVxdWVzdEtpbmQ+KCkubm90TnVsbCgpLFxuICBzZWN1cml0eUZpeEFkdmlzb3J5SWQ6IHV1aWQoJ3NlY3VyaXR5X2ZpeF9hZHZpc29yeV9pZCcpLnJlZmVyZW5jZXMoKCkgPT4gcGx1Z2luQWR2aXNvcnkuaWQpLFxuICBwYXlsb2FkOiBqc29uYigncGF5bG9hZCcpLiR0eXBlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PigpLmRlZmF1bHQoe30pLm5vdE51bGwoKSxcbiAgc3RhdHVzOiB2YXJjaGFyKCdzdGF0dXMnLCB7IGxlbmd0aDogMzAgfSkuJHR5cGU8UHVibGlzaFJlcXVlc3RTdGF0dXM+KCkuZGVmYXVsdCgncGVuZGluZycpLm5vdE51bGwoKSxcbiAgbGFuZTogdmFyY2hhcignbGFuZScsIHsgbGVuZ3RoOiAxMCB9KS4kdHlwZTxQdWJsaXNoUmVxdWVzdExhbmU+KCkuZGVmYXVsdCgnc3RhbmRhcmQnKS5ub3ROdWxsKCksXG4gIHN1Ym1pdHRlZEJ5OiB0ZXh0KCdzdWJtaXR0ZWRfYnknKS5ub3ROdWxsKCksXG4gIHN1Ym1pdHRlZE9yZ0lkOiB2YXJjaGFyKCdzdWJtaXR0ZWRfb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KSxcbiAgZmlyc3RBcHByb3ZlZEJ5OiB0ZXh0KCdmaXJzdF9hcHByb3ZlZF9ieScpLFxuICBkZWNpZGVkQnk6IHRleHQoJ2RlY2lkZWRfYnknKSxcbiAgc2Vjb25kQXBwcm92ZWRCeTogdGV4dCgnc2Vjb25kX2FwcHJvdmVkX2J5JyksXG4gIHJlYXNvbjogdGV4dCgncmVhc29uJyksXG4gIGF1dG9SdWxlSWQ6IHV1aWQoJ2F1dG9fcnVsZV9pZCcpLnJlZmVyZW5jZXMoKCkgPT4gZWNvc3lzdGVtQXV0b0FwcHJvdmFsUnVsZS5pZCksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgZGVjaWRlZEF0OiB0aW1lc3RhbXAoJ2RlY2lkZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgc3RhdHVzQ3JlYXRlZElkeDogaW5kZXgoJ3BsdWdpbl9wdWJsaXNoX3JlcXVlc3Rfc3RhdHVzX2NyZWF0ZWRfaWR4Jykub24odGFibGUuc3RhdHVzLCB0YWJsZS5jcmVhdGVkQXQpLFxuICBwdWJsaXNoZXJJZHg6IGluZGV4KCdwbHVnaW5fcHVibGlzaF9yZXF1ZXN0X3B1Ymxpc2hlcl9pZHgnKS5vbih0YWJsZS5wdWJsaXNoZXJJZCwgdGFibGUuY3JlYXRlZEF0KSxcbiAgLy8gQXQgbW9zdCBPTkUgb3BlbiByZXF1ZXN0IG9mIGEga2luZCBwZXIgKHB1Ymxpc2hlciwgbGlzdGluZywgdmVyc2lvbikuIEFcbiAgLy8gbmV3X2xpc3RpbmcgaGFzIG5vIGxpc3RpbmcgeWV0LCBzbyB0aGUgcmVxdWVzdGVkIG5hbWUgKHBheWxvYWQtPj4nbmFtZScpXG4gIC8vIHN0YW5kcyBpbjsgQ09BTEVTQ0UgYmVjYXVzZSBOVUxMcyBhcmUgRElTVElOQ1QgaW4gYSB1bmlxdWUgaW5kZXguIEFkdmlzb3J5XG4gIC8vIGRyYWZ0cyBhcmUgZXhlbXB0OiBhIGxpc3RpbmcgY2FuIGNhcnJ5IHNldmVyYWwgYXQgb25jZSAoZGlmZmVyZW50IHJhbmdlc1xuICAvLyBhbmQgQ1ZFIHNldHMpLCBlYWNoIGRlZHVwbGljYXRlZCBieSB0aGUgYWR2aXNvcnkgc2VydmljZS4gTXVzdCBtYXRjaCB0aGVcbiAgLy8gcG9zdGdyZXMtaW5pdC5zcWwgZXhwcmVzc2lvbiBpbmRleC5cbiAgb3BlblVuaXF1ZTogdW5pcXVlSW5kZXgoJ3BsdWdpbl9wdWJsaXNoX3JlcXVlc3Rfb3Blbl91bmlxdWUnKVxuICAgIC5vbihcbiAgICAgIHRhYmxlLnB1Ymxpc2hlcklkLFxuICAgICAgdGFibGUua2luZCxcbiAgICAgIHNxbGBjb2FsZXNjZSgke3RhYmxlLmxpc3RpbmdJZH06OnRleHQsICR7dGFibGUucGF5bG9hZH0tPj4nbmFtZScsICcnKWAsXG4gICAgICBzcWxgY29hbGVzY2UoJHt0YWJsZS52ZXJzaW9ufSwgJycpYCxcbiAgICApXG4gICAgLndoZXJlKHNxbGBzdGF0dXMgSU4gKCdwZW5kaW5nJywgJ3BlbmRpbmdfc2Vjb25kX2FwcHJvdmFsJykgQU5EIGtpbmQgPD4gJ2Fkdmlzb3J5J2ApLFxuICBkaWdlc3RDaGVjazogY2hlY2soJ3BsdWdpbl9wdWJsaXNoX3JlcXVlc3RzX2RpZ2VzdF9jaGVjaycsXG4gICAgc3FsYCR7dGFibGUuZGlnZXN0fSBJUyBOVUxMIE9SICR7dGFibGUuZGlnZXN0fSB+ICdec2hhMjU2OlswLTlhLWZdezY0fSQnYCksXG4gIGtpbmRDaGVjazogY2hlY2soJ3BsdWdpbl9wdWJsaXNoX3JlcXVlc3RzX2tpbmRfY2hlY2snLCBzcWxgJHt0YWJsZS5raW5kfSBJTiAoJ25ld19saXN0aW5nJywgJ25ld192ZXJzaW9uJyxcbiAgICAnbGlzdGluZ191cGRhdGUnLCAneWFuaycsICd1bnBhdXNlJywgJ3RyYW5zZmVyJywgJ2NsYWltJywgJ3Byb2ZpbGVfY2hhbmdlJywgJ2Fkdmlzb3J5JywgJ3ZlcmlmeScsICdtb2RlcmF0aW9uJyxcbiAgICAnc3VibWlzc2lvbicpYCksXG4gIHN0YXR1c0NoZWNrOiBjaGVjaygncGx1Z2luX3B1Ymxpc2hfcmVxdWVzdHNfc3RhdHVzX2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS5zdGF0dXN9IElOICgncGVuZGluZycsICdwZW5kaW5nX3NlY29uZF9hcHByb3ZhbCcsICdhcHByb3ZlZCcsICdyZWplY3RlZCcsICd3aXRoZHJhd24nKWApLFxuICBsYW5lQ2hlY2s6IGNoZWNrKCdwbHVnaW5fcHVibGlzaF9yZXF1ZXN0c19sYW5lX2NoZWNrJywgc3FsYCR7dGFibGUubGFuZX0gSU4gKCdzdGFuZGFyZCcsICdzZWN1cml0eScpYCksXG59KSk7XG5cbi8qKlxuICogTmFtZXMgaGVsZCBiYWNrIGZyb20gaGFuZGxlcy9saXN0aW5ncyAoT2ZmaWNpYWwvVmVyaWZpZWQgcmVzZXJ2YXRpb25zLFxuICogY29uZnVzYWJsZXMpLiBgcHVibGlzaGVySWRgID0gdGhlIHB1Ymxpc2hlciB0aGUgbmFtZSBpcyByZXNlcnZlZCBGT1IsIGlmIGFueS5cbiAqXG4gKiBAdGFibGUgZWNvc3lzdGVtX3Jlc2VydmVkX25hbWVzXG4gKi9cbmV4cG9ydCBjb25zdCBlY29zeXN0ZW1SZXNlcnZlZE5hbWUgPSBwZ1RhYmxlKCdlY29zeXN0ZW1fcmVzZXJ2ZWRfbmFtZXMnLCB7XG4gIG5hbWU6IHZhcmNoYXIoJ25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLnByaW1hcnlLZXkoKSxcbiAgcmVhc29uOiB0ZXh0KCdyZWFzb24nKSxcbiAgcHVibGlzaGVySWQ6IHV1aWQoJ3B1Ymxpc2hlcl9pZCcpLnJlZmVyZW5jZXMoKCkgPT4gcHVibGlzaGVyLmlkKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSk7XG5cbi8qKlxuICogSW5zdGFuY2Utd2lkZSBlY29zeXN0ZW0ga25vYnMgKGZsYWdzLCBTTEEsIHRocmVzaG9sZHMpLCBrZXkvdmFsdWUuXG4gKlxuICogQHRhYmxlIGVjb3N5c3RlbV9zZXR0aW5nc1xuICovXG5leHBvcnQgY29uc3QgZWNvc3lzdGVtU2V0dGluZyA9IHBnVGFibGUoJ2Vjb3N5c3RlbV9zZXR0aW5ncycsIHtcbiAga2V5OiB2YXJjaGFyKCdrZXknLCB7IGxlbmd0aDogMTAwIH0pLnByaW1hcnlLZXkoKSxcbiAgdmFsdWU6IGpzb25iKCd2YWx1ZScpLiR0eXBlPHVua25vd24+KCkubm90TnVsbCgpLFxuICB1cGRhdGVkQnk6IHRleHQoJ3VwZGF0ZWRfYnknKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSk7XG5cbi8vIGBlY29zeXN0ZW1fY29sbGVjdGlvbnNgIHdhcyBERUxFVEVEIGhlcmUuIEl0IG1vZGVsbGVkIGN1cmF0ZWQgZGlyZWN0b3J5IGNvbGxlY3Rpb25zXG4vLyAoXCJGZWF0dXJlZFwiLCBcIlNlY3VyaXR5IHNjYW5uZXJzXCIpIGFzIHNsdWcgKyB0aXRsZSArIGEgSlNPTkIgbGlzdCBvZiBsaXN0aW5nIGlkcywgYW5kXG4vLyBub3RoaW5nIGV2ZXIgd3JvdGUgb3IgcmVhZCBvbmUg4oCUIHRoZSBwdWJsaWMgZGlyZWN0b3J5IHJhbmtzIGFuZCBmYWNldHMgbGlzdGluZ3Ncbi8vIGRpcmVjdGx5LiBBIHNjaGVtYSB0ZXN0IGFzc2VydGluZyBpdHMgc2hhcGUgd2FzIHRoZSBvbmx5IHRoaW5nIGtlZXBpbmcgaXQgYWxpdmUuXG5cbi8qKlxuICogQSBsaXN0aW5nIHJldmlldy4gYGF1dGhvck9yZ0lkYCBmZWVkcyB0aGUgaW50ZWdyaXR5IHJ1bGVzIChub1xuICogc2VsZi1yZXZpZXcsIHBlci1vcmcgcmF0ZSBsaW1pdCwgdmVyaWZpZWQgdXNlKSBhbmQgaXMgTkVWRVIgZXhwb3NlZC4gR0RQUlxuICogdXNlciBkZWxldGlvbiBhbm9ueW1pemVzOiBgYXV0aG9yVXNlcklkYCBhbmQgdGhlIGJvZHkgZ28gTlVMTCwgdGhlIHJhdGluZyBzdGF5cy5cbiAqXG4gKiBAdGFibGUgcGx1Z2luX3Jldmlld3NcbiAqL1xuZXhwb3J0IGNvbnN0IHBsdWdpblJldmlldyA9IHBnVGFibGUoJ3BsdWdpbl9yZXZpZXdzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBsaXN0aW5nSWQ6IHV1aWQoJ2xpc3RpbmdfaWQnKS5ub3ROdWxsKCkucmVmZXJlbmNlcygoKSA9PiBwbHVnaW5MaXN0aW5nLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSksXG4gIHZlcnNpb246IHZhcmNoYXIoJ3ZlcnNpb24nLCB7IGxlbmd0aDogNTAgfSksXG4gIHJhdGluZzogc21hbGxpbnQoJ3JhdGluZycpLm5vdE51bGwoKSxcbiAgdGl0bGU6IHZhcmNoYXIoJ3RpdGxlJywgeyBsZW5ndGg6IDEyMCB9KSxcbiAgYm9keU1kOiB0ZXh0KCdib2R5X21kJyksXG4gIGJvZHlIdG1sOiB0ZXh0KCdib2R5X2h0bWwnKSxcbiAgYXV0aG9yVXNlcklkOiB0ZXh0KCdhdXRob3JfdXNlcl9pZCcpLFxuICBhdXRob3JPcmdJZDogdmFyY2hhcignYXV0aG9yX29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSksXG4gIC8vIFRoZSBvbmx5IGF1dGhvciBmaWVsZCBldmVyIHNob3duIChzbmFwc2hvdCBhdCB3cml0ZSB0aW1lOyBOVUxMIG9uY2UgYW5vbnltaXplZCkuXG4gIGF1dGhvckRpc3BsYXlOYW1lOiB2YXJjaGFyKCdhdXRob3JfZGlzcGxheV9uYW1lJywgeyBsZW5ndGg6IDEwMCB9KSxcbiAgdmVyaWZpZWRVc2U6IGJvb2xlYW4oJ3ZlcmlmaWVkX3VzZScpLmRlZmF1bHQoZmFsc2UpLm5vdE51bGwoKSxcbiAgc3RhdHVzOiB2YXJjaGFyKCdzdGF0dXMnLCB7IGxlbmd0aDogMTAgfSkuJHR5cGU8UmV2aWV3U3RhdHVzPigpLmRlZmF1bHQoJ3B1Ymxpc2hlZCcpLm5vdE51bGwoKSxcbiAgaG9sZFJlYXNvbjogdmFyY2hhcignaG9sZF9yZWFzb24nLCB7IGxlbmd0aDogMjAgfSkuJHR5cGU8UmV2aWV3SG9sZFJlYXNvbj4oKSxcbiAgbW9kZXJhdGlvblJlYXNvbjogdGV4dCgnbW9kZXJhdGlvbl9yZWFzb24nKSxcbiAgaGVscGZ1bENvdW50OiBpbnRlZ2VyKCdoZWxwZnVsX2NvdW50JykuZGVmYXVsdCgwKS5ub3ROdWxsKCksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICBsaXN0aW5nQXV0aG9yVW5pcXVlOiB1bmlxdWVJbmRleCgncGx1Z2luX3Jldmlld19saXN0aW5nX2F1dGhvcl91bmlxdWUnKS5vbih0YWJsZS5saXN0aW5nSWQsIHRhYmxlLmF1dGhvclVzZXJJZCksXG4gIGxpc3RpbmdTdGF0dXNDcmVhdGVkSWR4OiBpbmRleCgncGx1Z2luX3Jldmlld19saXN0aW5nX3N0YXR1c19jcmVhdGVkX2lkeCcpXG4gICAgLm9uKHRhYmxlLmxpc3RpbmdJZCwgdGFibGUuc3RhdHVzLCB0YWJsZS5jcmVhdGVkQXQpLFxuICAvLyBQZXItb3JnIGRhaWx5IHJldmlldyBjYXAuXG4gIGF1dGhvck9yZ0NyZWF0ZWRJZHg6IGluZGV4KCdwbHVnaW5fcmV2aWV3X2F1dGhvcl9vcmdfY3JlYXRlZF9pZHgnKS5vbih0YWJsZS5hdXRob3JPcmdJZCwgdGFibGUuY3JlYXRlZEF0KSxcbiAgLy8gTW9kZXJhdGlvbiBxdWV1ZS5cbiAgc3RhdHVzVXBkYXRlZElkeDogaW5kZXgoJ3BsdWdpbl9yZXZpZXdfc3RhdHVzX3VwZGF0ZWRfaWR4Jykub24odGFibGUuc3RhdHVzLCB0YWJsZS51cGRhdGVkQXQpLFxuICByYXRpbmdDaGVjazogY2hlY2soJ3BsdWdpbl9yZXZpZXdzX3JhdGluZ19jaGVjaycsIHNxbGAke3RhYmxlLnJhdGluZ30gQkVUV0VFTiAxIEFORCA1YCksXG4gIHN0YXR1c0NoZWNrOiBjaGVjaygncGx1Z2luX3Jldmlld3Nfc3RhdHVzX2NoZWNrJywgc3FsYCR7dGFibGUuc3RhdHVzfSBJTiAoJ3B1Ymxpc2hlZCcsICdoZWxkJywgJ3JlbW92ZWQnKWApLFxuICBob2xkUmVhc29uQ2hlY2s6IGNoZWNrKCdwbHVnaW5fcmV2aWV3c19ob2xkX3JlYXNvbl9jaGVjaycsXG4gICAgc3FsYCR7dGFibGUuaG9sZFJlYXNvbn0gSU4gKCdyZXBvcnRzJywgJ2J1cnN0JywgJ2ZpbHRlcicsICdzZWN1cml0eScsICdtb2RlcmF0b3InKWApLFxufSkpO1xuXG4vKipcbiAqIFRoZSBvbmUgcHVibGljIHB1Ymxpc2hlciByZXBseSB0byBhIHJldmlldy5cbiAqXG4gKiBAdGFibGUgcGx1Z2luX3Jldmlld19yZXBsaWVzXG4gKi9cbmV4cG9ydCBjb25zdCBwbHVnaW5SZXZpZXdSZXBseSA9IHBnVGFibGUoJ3BsdWdpbl9yZXZpZXdfcmVwbGllcycsIHtcbiAgcmV2aWV3SWQ6IHV1aWQoJ3Jldmlld19pZCcpLnByaW1hcnlLZXkoKS5yZWZlcmVuY2VzKCgpID0+IHBsdWdpblJldmlldy5pZCwgeyBvbkRlbGV0ZTogJ2Nhc2NhZGUnIH0pLFxuICBwdWJsaXNoZXJJZDogdXVpZCgncHVibGlzaGVyX2lkJykubm90TnVsbCgpLnJlZmVyZW5jZXMoKCkgPT4gcHVibGlzaGVyLmlkKSxcbiAgYXV0aG9yVXNlcklkOiB0ZXh0KCdhdXRob3JfdXNlcl9pZCcpLFxuICBib2R5TWQ6IHRleHQoJ2JvZHlfbWQnKS5ub3ROdWxsKCksXG4gIGJvZHlIdG1sOiB0ZXh0KCdib2R5X2h0bWwnKS5ub3ROdWxsKCksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSk7XG5cbi8qKlxuICogXCJSZXBvcnQgcmV2aWV3XCIg4oCUIG9uZSBwZXIgcmVwb3J0ZXIgcGVyIHJldmlldzsgTiByZXBvcnRzIGF1dG8taG9sZCBpdC5cbiAqXG4gKiBAdGFibGUgcGx1Z2luX3Jldmlld19yZXBvcnRzXG4gKi9cbmV4cG9ydCBjb25zdCBwbHVnaW5SZXZpZXdSZXBvcnQgPSBwZ1RhYmxlKCdwbHVnaW5fcmV2aWV3X3JlcG9ydHMnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG4gIHJldmlld0lkOiB1dWlkKCdyZXZpZXdfaWQnKS5ub3ROdWxsKCkucmVmZXJlbmNlcygoKSA9PiBwbHVnaW5SZXZpZXcuaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KSxcbiAgcmVwb3J0ZXJVc2VySWQ6IHRleHQoJ3JlcG9ydGVyX3VzZXJfaWQnKS5ub3ROdWxsKCksXG4gIGNhdGVnb3J5OiB2YXJjaGFyKCdjYXRlZ29yeScsIHsgbGVuZ3RoOiAyMCB9KS4kdHlwZTxSZXZpZXdSZXBvcnRDYXRlZ29yeT4oKS5kZWZhdWx0KCdhYnVzZScpLm5vdE51bGwoKSxcbiAgcmVhc29uOiB0ZXh0KCdyZWFzb24nKSxcbiAgLy8gU2V0IG9uY2UgYSBtb2RlcmF0b3IgcmVsZWFzZWQgb3IgcmVtb3ZlZCB0aGUgcmV2aWV3LlxuICByZXNvbHZlZEF0OiB0aW1lc3RhbXAoJ3Jlc29sdmVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgcmV2aWV3UmVwb3J0ZXJVbmlxdWU6IHVuaXF1ZUluZGV4KCdwbHVnaW5fcmV2aWV3X3JlcG9ydF91bmlxdWUnKS5vbih0YWJsZS5yZXZpZXdJZCwgdGFibGUucmVwb3J0ZXJVc2VySWQpLFxuICBvcGVuSWR4OiBpbmRleCgncGx1Z2luX3Jldmlld19yZXBvcnRfb3Blbl9pZHgnKS5vbih0YWJsZS5yZXZpZXdJZCkud2hlcmUoc3FsYCR7dGFibGUucmVzb2x2ZWRBdH0gSVMgTlVMTGApLFxuICBjYXRlZ29yeUNoZWNrOiBjaGVjaygncGx1Z2luX3Jldmlld19yZXBvcnRzX2NhdGVnb3J5X2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS5jYXRlZ29yeX0gSU4gKCdzcGFtJywgJ2FidXNlJywgJ29mZl90b3BpYycsICdzZWN1cml0eScpYCksXG59KSk7XG5cbi8qKlxuICogT25lIFwiaGVscGZ1bFwiIHZvdGUgcGVyIHVzZXIgcGVyIHJldmlldy5cbiAqXG4gKiBAdGFibGUgcGx1Z2luX3Jldmlld192b3Rlc1xuICovXG5leHBvcnQgY29uc3QgcGx1Z2luUmV2aWV3Vm90ZSA9IHBnVGFibGUoJ3BsdWdpbl9yZXZpZXdfdm90ZXMnLCB7XG4gIHJldmlld0lkOiB1dWlkKCdyZXZpZXdfaWQnKS5ub3ROdWxsKCkucmVmZXJlbmNlcygoKSA9PiBwbHVnaW5SZXZpZXcuaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KSxcbiAgdXNlcklkOiB0ZXh0KCd1c2VyX2lkJykubm90TnVsbCgpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIHBrOiBwcmltYXJ5S2V5KHsgY29sdW1uczogW3RhYmxlLnJldmlld0lkLCB0YWJsZS51c2VySWRdIH0pLFxufSkpO1xuXG4vKipcbiAqIFJldmlldyBlZGl0IGhpc3Rvcnk6IHRoZSBQUklPUiBjb250ZW50LCBhcHBlbmRlZCBvbiBldmVyeSBlZGl0LlxuICpcbiAqIEB0YWJsZSBwbHVnaW5fcmV2aWV3X2hpc3RvcnlcbiAqL1xuZXhwb3J0IGNvbnN0IHBsdWdpblJldmlld0hpc3RvcnkgPSBwZ1RhYmxlKCdwbHVnaW5fcmV2aWV3X2hpc3RvcnknLCB7XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG4gIHJldmlld0lkOiB1dWlkKCdyZXZpZXdfaWQnKS5ub3ROdWxsKCkucmVmZXJlbmNlcygoKSA9PiBwbHVnaW5SZXZpZXcuaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KSxcbiAgdmVyc2lvbjogdmFyY2hhcigndmVyc2lvbicsIHsgbGVuZ3RoOiA1MCB9KSxcbiAgcmF0aW5nOiBzbWFsbGludCgncmF0aW5nJykubm90TnVsbCgpLFxuICB0aXRsZTogdmFyY2hhcigndGl0bGUnLCB7IGxlbmd0aDogMTIwIH0pLFxuICBib2R5TWQ6IHRleHQoJ2JvZHlfbWQnKSxcbiAgZWRpdGVkQXQ6IHRpbWVzdGFtcCgnZWRpdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgcmV2aWV3SWR4OiBpbmRleCgncGx1Z2luX3Jldmlld19oaXN0b3J5X3Jldmlld19pZHgnKS5vbih0YWJsZS5yZXZpZXdJZCwgdGFibGUuZWRpdGVkQXQpLFxuICByYXRpbmdDaGVjazogY2hlY2soJ3BsdWdpbl9yZXZpZXdfaGlzdG9yeV9yYXRpbmdfY2hlY2snLCBzcWxgJHt0YWJsZS5yYXRpbmd9IEJFVFdFRU4gMSBBTkQgNWApLFxufSkpO1xuXG4vKipcbiAqIERlbm9ybWFsaXplZCBwZXItbGlzdGluZyBzdGF0cywgcmVjb21wdXRlZCBieSBhIGpvYi4gYGFjdGl2ZU9yZ0NvdW50YCBpc1xuICogcHVibGljIG9ubHkgd2hlbiA+PSA1ICh0aGUgYHB1YmxpY19saXN0aW5nc2AgdmlldyBlbmZvcmNlcyBpdCkuXG4gKlxuICogQHRhYmxlIHBsdWdpbl9zdGF0c1xuICovXG5leHBvcnQgY29uc3QgcGx1Z2luU3RhdHMgPSBwZ1RhYmxlKCdwbHVnaW5fc3RhdHMnLCB7XG4gIGxpc3RpbmdJZDogdXVpZCgnbGlzdGluZ19pZCcpLnByaW1hcnlLZXkoKS5yZWZlcmVuY2VzKCgpID0+IHBsdWdpbkxpc3RpbmcuaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KSxcbiAgcmF0aW5nQmF5ZXM6IGRvdWJsZVByZWNpc2lvbigncmF0aW5nX2JheWVzJyksXG4gIHJhdGluZ0NvdW50OiBpbnRlZ2VyKCdyYXRpbmdfY291bnQnKS5kZWZhdWx0KDApLm5vdE51bGwoKSxcbiAgLy8gU3RhciBkaXN0cmlidXRpb246IHsgXCIxXCI6IG4sIOKApiwgXCI1XCI6IG4gfS5cbiAgZGlzdDoganNvbmIoJ2Rpc3QnKS4kdHlwZTxSZWNvcmQ8c3RyaW5nLCBudW1iZXI+PigpLmRlZmF1bHQoe30pLm5vdE51bGwoKSxcbiAgLy8gXCJSZWNlbnQgdmVyc2lvbnNcIiByYXRpbmcgb3ZlciB0aGUgbGFzdCB0d28gbWlub3JzLlxuICByZWNlbnRSYXRpbmc6IGRvdWJsZVByZWNpc2lvbigncmVjZW50X3JhdGluZycpLFxuICBpbnN0YWxsQ291bnQ6IGludGVnZXIoJ2luc3RhbGxfY291bnQnKS5kZWZhdWx0KDApLm5vdE51bGwoKSxcbiAgYWN0aXZlT3JnQ291bnQ6IGludGVnZXIoJ2FjdGl2ZV9vcmdfY291bnQnKS5kZWZhdWx0KDApLm5vdE51bGwoKSxcbiAgc3VjY2Vzc1JhdGUzMGQ6IGRvdWJsZVByZWNpc2lvbignc3VjY2Vzc19yYXRlXzMwZCcpLFxuICBoZWFsdGhTY29yZTogZG91YmxlUHJlY2lzaW9uKCdoZWFsdGhfc2NvcmUnKSxcbiAgLy8gUGVyLWNvbXBvbmVudCBoZWFsdGggc2NvcmVzIGFuZCB3ZWlnaHRzLCBmb3IgdGhlIGJyZWFrZG93biBwYW5lbC5cbiAgaGVhbHRoQnJlYWtkb3duOiBqc29uYignaGVhbHRoX2JyZWFrZG93bicpLiR0eXBlPEhlYWx0aEJyZWFrZG93bj4oKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSk7XG5cbi8qKlxuICogQW5vbnltb3VzIHB1YmxpYyBzdWJtaXNzaW9uLiBUaGUgZW1haWwgaXMga2VwdCBoYXNoZWQgKHJhdGUgbGltaXRzLFxuICogY2xhaW0gbWF0Y2hpbmcpIGFuZCBlbmNyeXB0ZWQgKHRha2Vkb3duIG5vdGljZXMgb25seSkgYW5kIHB1cmdlZCBhdFxuICogYGVtYWlsUHVyZ2VBZnRlcmAuIE5vdGhpbmcgaGVyZSBpcyBldmVyIGxpc3RlZCBvciByZXNvbHZhYmxlLlxuICpcbiAqIEB0YWJsZSBwbHVnaW5fc3VibWlzc2lvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IHBsdWdpblN1Ym1pc3Npb24gPSBwZ1RhYmxlKCdwbHVnaW5fc3VibWlzc2lvbnMnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG4gIHN0YXR1czogdmFyY2hhcignc3RhdHVzJywgeyBsZW5ndGg6IDMwIH0pLiR0eXBlPFN1Ym1pc3Npb25TdGF0dXM+KCkuZGVmYXVsdCgncGVuZGluZ192ZXJpZmljYXRpb24nKS5ub3ROdWxsKCksXG4gIGVtYWlsSGFzaDogdmFyY2hhcignZW1haWxfaGFzaCcsIHsgbGVuZ3RoOiA2NCB9KSxcbiAgZW1haWxFbmM6IHRleHQoJ2VtYWlsX2VuYycpLFxuICB2ZXJpZnlUb2tlbkhhc2g6IHZhcmNoYXIoJ3ZlcmlmeV90b2tlbl9oYXNoJywgeyBsZW5ndGg6IDY0IH0pLFxuICB2ZXJpZnlFeHBpcmVzQXQ6IHRpbWVzdGFtcCgndmVyaWZ5X2V4cGlyZXNfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgdmVyaWZpZWRBdDogdGltZXN0YW1wKCd2ZXJpZmllZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICAvLyBzaGEyNTYgb2YgdGhlIHN0YXR1cyB0b2tlbiAocmV0dXJuZWQgYnkgdmVyaWZ5IGFuZCBpbiBOMS9OMy9ONCBlbWFpbHMpIOKAlFxuICAvLyB0aGUgc3VibWl0dGVyJ3Mgb25seSByZWFkIGhhbmRsZSBvbiB0aGUgc3VibWlzc2lvbi5cbiAgc3RhdHVzVG9rZW5IYXNoOiB2YXJjaGFyKCdzdGF0dXNfdG9rZW5faGFzaCcsIHsgbGVuZ3RoOiA2NCB9KSxcbiAgbmFtZTogdmFyY2hhcignbmFtZScsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICB2ZXJzaW9uOiB2YXJjaGFyKCd2ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLm5vdE51bGwoKSxcbiAgc3BlYzoganNvbmIoJ3NwZWMnKS4kdHlwZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oKS5kZWZhdWx0KHt9KS5ub3ROdWxsKCksXG4gIC8vIFRoZSBhY2NlcHQtb3ItZWRpdCBjYXRhbG9nIHZhbHVlcyArIHByb3ZlbmFuY2UgYW5kIHRoZSBEb2NrZXJmaWxlLFxuICAvLyBjYXB0dXJlZCBhdCBzdWJtaXQgc28gbW9kZXJhdGlvbiByZXZpZXdzIGV4YWN0bHkgd2hhdCB3YXMgc3VibWl0dGVkLlxuICBjYXRhbG9nOiBqc29uYignY2F0YWxvZycpLiR0eXBlPFN1Ym1pc3Npb25DYXRhbG9nPigpLmRlZmF1bHQoeyB2YWx1ZXM6IHt9LCBzb3VyY2VzOiB7fSB9KS5ub3ROdWxsKCksXG4gIGRvY2tlcmZpbGU6IHRleHQoJ2RvY2tlcmZpbGUnKSxcbiAgYXJ0aWZhY3RLZXk6IHZhcmNoYXIoJ2FydGlmYWN0X2tleScsIHsgbGVuZ3RoOiAxMDI0IH0pLFxuICBxdWFyYW50aW5lSW1hZ2VSZWY6IHZhcmNoYXIoJ3F1YXJhbnRpbmVfaW1hZ2VfcmVmJywgeyBsZW5ndGg6IDEwMjQgfSksXG4gIGdhdGVSZXBvcnQ6IGpzb25iKCdnYXRlX3JlcG9ydCcpLiR0eXBlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PigpLFxuICBoZXVyaXN0aWNzOiBqc29uYignaGV1cmlzdGljcycpLiR0eXBlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PigpLFxuICBsaXN0aW5nSWQ6IHV1aWQoJ2xpc3RpbmdfaWQnKS5yZWZlcmVuY2VzKCgpID0+IHBsdWdpbkxpc3RpbmcuaWQpLFxuICBkZWNpZGVkQnk6IHRleHQoJ2RlY2lkZWRfYnknKSxcbiAgcmVhc29uOiB0ZXh0KCdyZWFzb24nKSxcbiAgY2xpZW50SXBIYXNoOiB2YXJjaGFyKCdjbGllbnRfaXBfaGFzaCcsIHsgbGVuZ3RoOiA2NCB9KSxcbiAgZXhwaXJlc0F0OiB0aW1lc3RhbXAoJ2V4cGlyZXNfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5ub3ROdWxsKCksXG4gIGRlY2lkZWRBdDogdGltZXN0YW1wKCdkZWNpZGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGVtYWlsUHVyZ2VBZnRlcjogdGltZXN0YW1wKCdlbWFpbF9wdXJnZV9hZnRlcicsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgc3RhdHVzQ3JlYXRlZElkeDogaW5kZXgoJ3BsdWdpbl9zdWJtaXNzaW9uX3N0YXR1c19jcmVhdGVkX2lkeCcpLm9uKHRhYmxlLnN0YXR1cywgdGFibGUuY3JlYXRlZEF0KSxcbiAgLy8gUGVyLWVtYWlsIC8gcGVyLUlQIGRhaWx5IHJhdGUgbGltaXRzLlxuICBlbWFpbENyZWF0ZWRJZHg6IGluZGV4KCdwbHVnaW5fc3VibWlzc2lvbl9lbWFpbF9jcmVhdGVkX2lkeCcpLm9uKHRhYmxlLmVtYWlsSGFzaCwgdGFibGUuY3JlYXRlZEF0KSxcbiAgaXBDcmVhdGVkSWR4OiBpbmRleCgncGx1Z2luX3N1Ym1pc3Npb25faXBfY3JlYXRlZF9pZHgnKS5vbih0YWJsZS5jbGllbnRJcEhhc2gsIHRhYmxlLmNyZWF0ZWRBdCksXG4gIHZlcmlmeVRva2VuVW5pcXVlOiB1bmlxdWVJbmRleCgncGx1Z2luX3N1Ym1pc3Npb25fdmVyaWZ5X3Rva2VuX3VuaXF1ZScpXG4gICAgLm9uKHRhYmxlLnZlcmlmeVRva2VuSGFzaClcbiAgICAud2hlcmUoc3FsYHZlcmlmeV90b2tlbl9oYXNoIElTIE5PVCBOVUxMYCksXG4gIHN0YXR1c1Rva2VuVW5pcXVlOiB1bmlxdWVJbmRleCgncGx1Z2luX3N1Ym1pc3Npb25fc3RhdHVzX3Rva2VuX3VuaXF1ZScpXG4gICAgLm9uKHRhYmxlLnN0YXR1c1Rva2VuSGFzaClcbiAgICAud2hlcmUoc3FsYHN0YXR1c190b2tlbl9oYXNoIElTIE5PVCBOVUxMYCksXG4gIHN0YXR1c0NoZWNrOiBjaGVjaygncGx1Z2luX3N1Ym1pc3Npb25zX3N0YXR1c19jaGVjaycsIHNxbGAke3RhYmxlLnN0YXR1c30gSU4gKCdwZW5kaW5nX3ZlcmlmaWNhdGlvbicsXG4gICAgJ3BlbmRpbmdfcmV2aWV3JywgJ3B1Ymxpc2hpbmcnLCAnZ2F0ZV9mYWlsZWQnLCAnYXBwcm92ZWQnLCAncmVqZWN0ZWQnLCAnZXhwaXJlZCcsICdjbGFpbWVkJylgKSxcbn0pKTtcblxuLyoqXG4gKiBaZXJvLXJlc3VsdCBkaXJlY3Rvcnkgc2VhcmNoZXMuIE5vIHVzZXIgZGF0YS4gYHF1ZXJ5YCBpcyBzdG9yZWQgbm9ybWFsaXplZDtcbiAqIHRoZSBtYWludGVuYW5jZSBzd2VlcCBmb2xkcyByZXBlYXRzIG9mIG9uZSAocXVlcnksIGNhdGVnb3J5KSBpbnRvIGEgc2luZ2xlXG4gKiByb3cgY291bnRpbmcgYGhpdHNgLCB3aXRoIGBjcmVhdGVkX2F0YCA9IHRoZSBsYXRlc3Qgb25lLCBhbmQgcHJ1bmVzIHJvd3Mgbm90XG4gKiBzZWVuIGZvciAzMCBkYXlzLlxuICpcbiAqIEB0YWJsZSBlY29zeXN0ZW1fc2VhcmNoX21pc3Nlc1xuICovXG5leHBvcnQgY29uc3QgZWNvc3lzdGVtU2VhcmNoTWlzcyA9IHBnVGFibGUoJ2Vjb3N5c3RlbV9zZWFyY2hfbWlzc2VzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBxdWVyeTogdmFyY2hhcigncXVlcnknLCB7IGxlbmd0aDogMjAwIH0pLm5vdE51bGwoKSxcbiAgY2F0ZWdvcnk6IHZhcmNoYXIoJ2NhdGVnb3J5JywgeyBsZW5ndGg6IDUwIH0pLFxuICBoaXRzOiBpbnRlZ2VyKCdoaXRzJykuZGVmYXVsdCgxKS5ub3ROdWxsKCksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgY3JlYXRlZEF0SWR4OiBpbmRleCgnZWNvc3lzdGVtX3NlYXJjaF9taXNzX2NyZWF0ZWRfaWR4Jykub24odGFibGUuY3JlYXRlZEF0KSxcbiAgaGl0c0NoZWNrOiBjaGVjaygnZWNvc3lzdGVtX3NlYXJjaF9taXNzZXNfaGl0c19jaGVjaycsIHNxbGAke3RhYmxlLmhpdHN9ID49IDFgKSxcbn0pKTtcblxuLyoqXG4gKiBOb3RpZmljYXRpb24gZGlnZXN0L2JhdGNoaW5nIHF1ZXVlLiBSb3dzIHNoYXJpbmcgYSBgZGlnZXN0S2V5YCBhcmVcbiAqIGNvYWxlc2NlZCBpbnRvIG9uZSBlbWFpbCBhdCBgZGVsaXZlckFmdGVyYC5cbiAqXG4gKiBAdGFibGUgZWNvc3lzdGVtX25vdGlmaWNhdGlvbl9xdWV1ZVxuICovXG5leHBvcnQgY29uc3QgZWNvc3lzdGVtTm90aWZpY2F0aW9uUXVldWUgPSBwZ1RhYmxlKCdlY29zeXN0ZW1fbm90aWZpY2F0aW9uX3F1ZXVlJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICByZWNpcGllbnRVc2VySWQ6IHRleHQoJ3JlY2lwaWVudF91c2VyX2lkJyksXG4gIHJlY2lwaWVudE9yZ0lkOiB2YXJjaGFyKCdyZWNpcGllbnRfb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KSxcbiAgZXZlbnQ6IHZhcmNoYXIoJ2V2ZW50JywgeyBsZW5ndGg6IDggfSkuJHR5cGU8RWNvc3lzdGVtTm90aWZpY2F0aW9uRXZlbnQ+KCkubm90TnVsbCgpLFxuICBkaWdlc3RLZXk6IHZhcmNoYXIoJ2RpZ2VzdF9rZXknLCB7IGxlbmd0aDogMjU1IH0pLFxuICBwYXlsb2FkOiBqc29uYigncGF5bG9hZCcpLiR0eXBlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PigpLmRlZmF1bHQoe30pLm5vdE51bGwoKSxcbiAgZGVsaXZlckFmdGVyOiB0aW1lc3RhbXAoJ2RlbGl2ZXJfYWZ0ZXInLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICBkZWxpdmVyZWRBdDogdGltZXN0YW1wKCdkZWxpdmVyZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICAvLyBUaGUgZGlzcGF0Y2hlcidzIHNjYW46IHVuZGVsaXZlcmVkIHJvd3MgdGhhdCBhcmUgZHVlLlxuICBkdWVJZHg6IGluZGV4KCdlY29zeXN0ZW1fbm90aWZpY2F0aW9uX2R1ZV9pZHgnKS5vbih0YWJsZS5kZWxpdmVyQWZ0ZXIpLndoZXJlKHNxbGBkZWxpdmVyZWRfYXQgSVMgTlVMTGApLFxuICBkaWdlc3RJZHg6IGluZGV4KCdlY29zeXN0ZW1fbm90aWZpY2F0aW9uX2RpZ2VzdF9pZHgnKS5vbih0YWJsZS5kaWdlc3RLZXkpLndoZXJlKHNxbGBkZWxpdmVyZWRfYXQgSVMgTlVMTGApLFxuICBldmVudENoZWNrOiBjaGVjaygnZWNvc3lzdGVtX25vdGlmaWNhdGlvbl9xdWV1ZV9ldmVudF9jaGVjaycsIHNxbGAke3RhYmxlLmV2ZW50fSB+ICdeTihbMS05XXwxWzAtOV18MlswLTldKSQnYCksXG59KSk7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gT3JnLXNjb3BlZCB0YWJsZXMgKG9yZ19pZCArIHJsc19vcmdfKiBwb2xpY2llcyArIEZPUkNFOyBpbiB0aGUgb3JnIGNhc2NhZGUpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBTdGVwIG1hbmlmZXN0OiB3aGljaCBwbHVnaW4gZWFjaCAocGlwZWxpbmUsIHN0YWdlLCBhY3Rpb24pIHJ1bnMsXG4gKiByZWNvcmRlZCBhdCBzeW50aC4gRXZlbnQgaW5nZXN0IGpvaW5zIG9uIGl0IHRvIHN0YW1wXG4gKiBgcGlwZWxpbmVfZXZlbnRzLnBsdWdpbl8qYC4gYHBsdWdpblB1Ymxpc2hlcmAgaXMgTlVMTCBmb3IgYW4gb3duLW9yZyBwbHVnaW4uXG4gKlxuICogQHRhYmxlIHBpcGVsaW5lX3N0ZXBfbWFuaWZlc3RzXG4gKi9cbmV4cG9ydCBjb25zdCBwaXBlbGluZVN0ZXBNYW5pZmVzdCA9IHBnVGFibGUoJ3BpcGVsaW5lX3N0ZXBfbWFuaWZlc3RzJywge1xuICBwaXBlbGluZUlkOiB1dWlkKCdwaXBlbGluZV9pZCcpLm5vdE51bGwoKSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBzdGFnZU5hbWU6IHZhcmNoYXIoJ3N0YWdlX25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgYWN0aW9uTmFtZTogdmFyY2hhcignYWN0aW9uX25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgcGx1Z2luUHVibGlzaGVyOiB2YXJjaGFyKCdwbHVnaW5fcHVibGlzaGVyJywgeyBsZW5ndGg6IDM5IH0pLFxuICAvKiogVGhlIGxpc3RpbmcgcHVibGlzaGVyJ3MgaWQgKE5VTEwgZm9yIGFuIG93bi1vcmcgcGx1Z2luKSDigJQgd2hhdCBjcm9zcy1vcmcgc3RhdHMgam9pbiBvbi4gKi9cbiAgcGx1Z2luUHVibGlzaGVySWQ6IHV1aWQoJ3BsdWdpbl9wdWJsaXNoZXJfaWQnKSxcbiAgcGx1Z2luTmFtZTogdmFyY2hhcigncGx1Z2luX25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgcGx1Z2luVmVyc2lvbjogdmFyY2hhcigncGx1Z2luX3ZlcnNpb24nLCB7IGxlbmd0aDogNTAgfSkubm90TnVsbCgpLFxuICBpbWFnZURpZ2VzdDogdmFyY2hhcignaW1hZ2VfZGlnZXN0JywgeyBsZW5ndGg6IDcxIH0pLFxuICBpbWFnZVJlcG9zaXRvcnk6IHZhcmNoYXIoJ2ltYWdlX3JlcG9zaXRvcnknLCB7IGxlbmd0aDogNTEyIH0pLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIHBrOiBwcmltYXJ5S2V5KHsgY29sdW1uczogW3RhYmxlLnBpcGVsaW5lSWQsIHRhYmxlLnN0YWdlTmFtZSwgdGFibGUuYWN0aW9uTmFtZV0gfSksXG4gIG9yZ0lkeDogaW5kZXgoJ3BpcGVsaW5lX3N0ZXBfbWFuaWZlc3Rfb3JnX2lkeCcpLm9uKHRhYmxlLm9yZ0lkKSxcbiAgLy8gcHVibGljLyogR0MgZ3VhcmQ6IFwiZG9lcyBhbnkgbWFuaWZlc3Qgc3RpbGwgcmVmZXJlbmNlIHRoaXMgZGlnZXN0P1wiXG4gIGRpZ2VzdElkeDogaW5kZXgoJ3BpcGVsaW5lX3N0ZXBfbWFuaWZlc3RfZGlnZXN0X2lkeCcpLm9uKHRhYmxlLmltYWdlRGlnZXN0KSxcbiAgLy8gVGhlIG91dGRhdGVkLXBsdWdpbiBhbmQgdnVsbmVyYWJpbGl0eSByZXBvcnQgc2VjdGlvbnMgam9pbiBtYW5pZmVzdHMgb25cbiAgLy8gKG5hbWUsIHZlcnNpb24sIGRpZ2VzdCkgYWNyb3NzIGV2ZXJ5IHBpcGVsaW5lIGluIGFuIG9yZzsgd2l0aG91dCB0aGlzIHRoZXlcbiAgLy8gZnVsbC1zY2FuIHRoZSB0YWJsZSwgd2hpY2ggaXMgdGhlIG9uZSBqb2luIGluIHRob3NlIHNlY3Rpb25zIHRoYXQgZ3Jvd3Mgd2l0aFxuICAvLyB0aGUgd2hvbGUgaW5zdGFuY2UgcmF0aGVyIHRoYW4gd2l0aCB0aGUgb3JnLlxuICBsb29rdXBJZHg6IGluZGV4KCdwaXBlbGluZV9zdGVwX21hbmlmZXN0X2xvb2t1cF9pZHgnKVxuICAgIC5vbih0YWJsZS5wbHVnaW5OYW1lLCB0YWJsZS5wbHVnaW5WZXJzaW9uLCB0YWJsZS5pbWFnZURpZ2VzdCksXG4gIHBsdWdpbklkeDogaW5kZXgoJ3BpcGVsaW5lX3N0ZXBfbWFuaWZlc3RfcGx1Z2luX2lkeCcpLm9uKHRhYmxlLnBsdWdpblB1Ymxpc2hlciwgdGFibGUucGx1Z2luTmFtZSksXG4gIHBsdWdpblB1Ymxpc2hlcklkSWR4OiBpbmRleCgncGlwZWxpbmVfc3RlcF9tYW5pZmVzdF9wdWJsaXNoZXJfaWRfaWR4Jykub24odGFibGUucGx1Z2luUHVibGlzaGVySWQsIHRhYmxlLnBsdWdpbk5hbWUpLFxufSkpO1xuXG4vKipcbiAqIEFuIG9yZydzIGluc3RhbGwgb2YgYSBsaXN0aW5nLiBPZmZpY2lhbCBsaXN0aW5ncyBhcmUgaW5zdGFsbGVkXG4gKiBpbXBsaWNpdGx5ICh2aXJ0dWFsIOKAlCBubyByb3cpOyBhIHJvdyBpcyBhbiBleHBsaWNpdCBpbnN0YWxsIG9yIG92ZXJyaWRlLlxuICpcbiAqIEB0YWJsZSBwbHVnaW5faW5zdGFsbHNcbiAqL1xuZXhwb3J0IGNvbnN0IHBsdWdpbkluc3RhbGwgPSBwZ1RhYmxlKCdwbHVnaW5faW5zdGFsbHMnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG4gIG9yZ0lkOiB2YXJjaGFyKCdvcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgbGlzdGluZ0lkOiB1dWlkKCdsaXN0aW5nX2lkJykubm90TnVsbCgpLnJlZmVyZW5jZXMoKCkgPT4gcGx1Z2luTGlzdGluZy5pZCwgeyBvbkRlbGV0ZTogJ2Nhc2NhZGUnIH0pLFxuICB2ZXJzaW9uUG9saWN5OiB2YXJjaGFyKCd2ZXJzaW9uX3BvbGljeScsIHsgbGVuZ3RoOiAxMCB9KS4kdHlwZTxJbnN0YWxsVmVyc2lvblBvbGljeT4oKS5kZWZhdWx0KCdtaW5vcicpLm5vdE51bGwoKSxcbiAgcGlubmVkVmVyc2lvbjogdmFyY2hhcigncGlubmVkX3ZlcnNpb24nLCB7IGxlbmd0aDogNTAgfSksXG4gIHJlc29sdmVkVmVyc2lvbjogdmFyY2hhcigncmVzb2x2ZWRfdmVyc2lvbicsIHsgbGVuZ3RoOiA1MCB9KSxcbiAgc3RhdHVzOiB2YXJjaGFyKCdzdGF0dXMnLCB7IGxlbmd0aDogMjAgfSkuJHR5cGU8SW5zdGFsbFN0YXR1cz4oKS5kZWZhdWx0KCdhY3RpdmUnKS5ub3ROdWxsKCksXG4gIGluc3RhbGxlZEJ5OiB0ZXh0KCdpbnN0YWxsZWRfYnknKS5ub3ROdWxsKCksXG4gIGFwcHJvdmVkQnk6IHRleHQoJ2FwcHJvdmVkX2J5JyksXG4gIGRlY2lkZWRBdDogdGltZXN0YW1wKCdkZWNpZGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIC8qKiBBIHBlbmRpbmcsIGFwcHJvdmFsLWdhdGVkIGNoYW5nZSBvZiB0aGlzIGluc3RhbGwgKHVwZ3JhZGUgLyBwb2xpY3kpLCBvciBudWxsLiAqL1xuICBwZW5kaW5nQ2hhbmdlOiBqc29uYigncGVuZGluZ19jaGFuZ2UnKS4kdHlwZTxJbnN0YWxsQ2hhbmdlUmVxdWVzdD4oKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIG9yZ0xpc3RpbmdVbmlxdWU6IHVuaXF1ZUluZGV4KCdwbHVnaW5faW5zdGFsbF9vcmdfbGlzdGluZ191bmlxdWUnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUubGlzdGluZ0lkKSxcbiAgLy8gXCJJbnN0YWxsaW5nIG9yZ3NcIiBmYW4tb3V0IGZvciBOOC9OMTMvTjE0L04yMS9OMjYuXG4gIGxpc3RpbmdTdGF0dXNJZHg6IGluZGV4KCdwbHVnaW5faW5zdGFsbF9saXN0aW5nX3N0YXR1c19pZHgnKS5vbih0YWJsZS5saXN0aW5nSWQsIHRhYmxlLnN0YXR1cyksXG4gIHZlcnNpb25Qb2xpY3lDaGVjazogY2hlY2soJ3BsdWdpbl9pbnN0YWxsc192ZXJzaW9uX3BvbGljeV9jaGVjaycsXG4gICAgc3FsYCR7dGFibGUudmVyc2lvblBvbGljeX0gSU4gKCdwaW5uZWQnLCAncGF0Y2gnLCAnbWlub3InLCAnbGF0ZXN0JylgKSxcbiAgc3RhdHVzQ2hlY2s6IGNoZWNrKCdwbHVnaW5faW5zdGFsbHNfc3RhdHVzX2NoZWNrJywgc3FsYCR7dGFibGUuc3RhdHVzfSBJTiAoJ2FjdGl2ZScsICdwZW5kaW5nX2FwcHJvdmFsJywgJ2RlbmllZCcpYCksXG4gIHBpbm5lZENoZWNrOiBjaGVjaygncGx1Z2luX2luc3RhbGxfcGlubmVkX2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS52ZXJzaW9uUG9saWN5fSA8PiAncGlubmVkJyBPUiAke3RhYmxlLnBpbm5lZFZlcnNpb259IElTIE5PVCBOVUxMYCksXG59KSk7XG5cbi8qKlxuICogT3JnIGNvbnN1bXB0aW9uIHBvbGljeS4gT25lIHJvdyBwZXIgb3JnOyBhYnNlbnQgPSB0aGUgY29sdW1uIGRlZmF1bHRzLlxuICogTm9uZSBvZiB0aGVzZSBzYWZldHkgY29udHJvbHMgaXMgcGxhbi1nYXRlZC5cbiAqXG4gKiBAdGFibGUgcGx1Z2luX2luc3RhbGxfcG9saWNpZXNcbiAqL1xuZXhwb3J0IGNvbnN0IHBsdWdpbkluc3RhbGxQb2xpY3kgPSBwZ1RhYmxlKCdwbHVnaW5faW5zdGFsbF9wb2xpY2llcycsIHtcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkucHJpbWFyeUtleSgpLFxuICBhbGxvd2VkVGllcnM6IHRleHQoJ2FsbG93ZWRfdGllcnMnKS5hcnJheSgpLiR0eXBlPFB1Ymxpc2hlclRpZXJbXT4oKVxuICAgIC5kZWZhdWx0KFsnb2ZmaWNpYWwnLCAndmVyaWZpZWQnXSkubm90TnVsbCgpLFxuICByZXF1aXJlQXBwcm92YWxUaWVyczogdGV4dCgncmVxdWlyZV9hcHByb3ZhbF90aWVycycpLmFycmF5KCkuJHR5cGU8UHVibGlzaGVyVGllcltdPigpXG4gICAgLmRlZmF1bHQoWydjb21tdW5pdHknLCAndW52ZXJpZmllZCddKS5ub3ROdWxsKCksXG4gIHNlY3JldHNBbGxvd2VkVGllcnM6IHRleHQoJ3NlY3JldHNfYWxsb3dlZF90aWVycycpLmFycmF5KCkuJHR5cGU8UHVibGlzaGVyVGllcltdPigpXG4gICAgLmRlZmF1bHQoWydvZmZpY2lhbCcsICd2ZXJpZmllZCddKS5ub3ROdWxsKCksXG4gIGJsb2NrT25BZHZpc29yeTogdmFyY2hhcignYmxvY2tfb25fYWR2aXNvcnknLCB7IGxlbmd0aDogMTAgfSkuJHR5cGU8QmxvY2tPbkFkdmlzb3J5PigpLmRlZmF1bHQoJ2NyaXRpY2FsJykubm90TnVsbCgpLFxuICBvZmZpY2lhbEluc3RhbGxzOiB2YXJjaGFyKCdvZmZpY2lhbF9pbnN0YWxscycsIHsgbGVuZ3RoOiAxMCB9KS4kdHlwZTxPZmZpY2lhbEluc3RhbGxzPigpLmRlZmF1bHQoJ2ltcGxpY2l0Jykubm90TnVsbCgpLFxuICAvLyBXaGF0IHRvIGRvIHdoZW4gYSBuYW1lIG92ZXJyaWRlcyBhIGxpc3RpbmcsIG9yIHRoZSBwYXJlbnQgb3JnJ3MgcGx1Z2luLlxuICAvLyBEZWZhdWx0cyB0byBgd2FybmA6IHNoYWRvd2luZyBjYW4gYmUgZGVsaWJlcmF0ZSwgc28gdGhlIGRlZmF1bHQgc3VyZmFjZXMgaXRcbiAgLy8gd2l0aG91dCBicmVha2luZyBhIGRlcGxveW1lbnQgdGhhdCBhbHJlYWR5IHJlbGllcyBvbiBvbmUuXG4gIHNoYWRvd2luZzogdmFyY2hhcignc2hhZG93aW5nJywgeyBsZW5ndGg6IDEwIH0pLiR0eXBlPFNoYWRvd2luZ01vZGU+KCkuZGVmYXVsdCgnd2FybicpLm5vdE51bGwoKSxcbiAgYmxvY2tlZExpc3RpbmdzOiBqc29uYignYmxvY2tlZF9saXN0aW5ncycpLiR0eXBlPEJsb2NrZWRMaXN0aW5nUmVmW10+KCkuZGVmYXVsdChbXSkubm90TnVsbCgpLFxuICB1cGRhdGVkQnk6IHRleHQoJ3VwZGF0ZWRfYnknKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICBibG9ja09uQWR2aXNvcnlDaGVjazogY2hlY2soJ3BsdWdpbl9pbnN0YWxsX3BvbGljaWVzX2Jsb2NrX29uX2Fkdmlzb3J5X2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS5ibG9ja09uQWR2aXNvcnl9IElOICgnY3JpdGljYWwnLCAnaGlnaCcsICduZXZlcicpYCksXG4gIG9mZmljaWFsSW5zdGFsbHNDaGVjazogY2hlY2soJ3BsdWdpbl9pbnN0YWxsX3BvbGljaWVzX29mZmljaWFsX2luc3RhbGxzX2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS5vZmZpY2lhbEluc3RhbGxzfSBJTiAoJ2ltcGxpY2l0JywgJ2V4cGxpY2l0JylgKSxcbiAgdGllcnNDaGVjazogY2hlY2soJ3BsdWdpbl9pbnN0YWxsX3BvbGljeV90aWVyc19jaGVjaycsIHNxbGBcbiAgICAke3RhYmxlLmFsbG93ZWRUaWVyc30gPEAgQVJSQVlbJ29mZmljaWFsJywgJ3ZlcmlmaWVkJywgJ2NvbW11bml0eScsICd1bnZlcmlmaWVkJ106OlRFWFRbXVxuICAgIEFORCAke3RhYmxlLnJlcXVpcmVBcHByb3ZhbFRpZXJzfSA8QCBBUlJBWVsnb2ZmaWNpYWwnLCAndmVyaWZpZWQnLCAnY29tbXVuaXR5JywgJ3VudmVyaWZpZWQnXTo6VEVYVFtdXG4gICAgQU5EICR7dGFibGUuc2VjcmV0c0FsbG93ZWRUaWVyc30gPEAgQVJSQVlbJ29mZmljaWFsJywgJ3ZlcmlmaWVkJywgJ2NvbW11bml0eScsICd1bnZlcmlmaWVkJ106OlRFWFRbXWApLFxufSkpO1xuXG4vKipcbiAqIFBlci1vcmcgcGx1Z2luIHNlY3VyaXR5IG5vdGlmaWNhdGlvbiBzZXR0aW5ncyAoZG9jcy9wbHVnaW4tcHVibGlzaGluZy5tZFxuICogXCJTY2FuIGdhdGVzXCIpOiB3aG8gaGVhcnMgYWJvdXQgYSBibG9ja2VkIGJ1aWxkIChOMzApIGFuZCBhIHJlc2NhbiBmaW5kaW5nXG4gKiAoTjMxKSwgYW5kIHdoZXJlIGVsc2UgdGhleSBnby4gT25lIHJvdyBwZXIgb3JnOyBhYnNlbnQgPSB0aGUgY29sdW1uXG4gKiBkZWZhdWx0cy4gVGhlIHdlYmhvb2sgc2VjcmV0IGFuZCB0aGUgZXh0ZXJuYWwgYWRkcmVzcyBhcmUgc3RvcmVkIEVOQ1JZUFRFRFxuICogKGFwaS1jb3JlIHNlY3JldC1lbmNyeXB0aW9uLCB0aGUgb3JnJ3Mga2V5KSBhbmQgbmV2ZXIgcmV0dXJuZWQ7IHRoZSBhZGRyZXNzXG4gKiBpcyB1c2VkIG9ubHkgb25jZSBjb25maXJtZWQgdGhyb3VnaCBpdHMgZW1haWxlZCBzaW5nbGUtdXNlIGxpbmtcbiAqIChgZXh0ZXJuYWxfdmVyaWZ5X3Rva2VuX2hhc2hgLCBzaGEyNTYgb2YgdGhlIHRva2VuKS5cbiAqXG4gKiBAdGFibGUgcGx1Z2luX3NlY3VyaXR5X25vdGlmaWNhdGlvbl9wcmVmc1xuICovXG5leHBvcnQgY29uc3QgcGx1Z2luU2VjdXJpdHlOb3RpZmljYXRpb25QcmVmID0gcGdUYWJsZSgncGx1Z2luX3NlY3VyaXR5X25vdGlmaWNhdGlvbl9wcmVmcycsIHtcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkucHJpbWFyeUtleSgpLFxuICByZWNpcGllbnRNb2RlOiB2YXJjaGFyKCdyZWNpcGllbnRfbW9kZScsIHsgbGVuZ3RoOiAxMCB9KS4kdHlwZTxQbHVnaW5TZWN1cml0eVJlY2lwaWVudE1vZGU+KCkuZGVmYXVsdCgnd3JpdGVycycpLm5vdE51bGwoKSxcbiAgdGFyZ2V0VXNlcnM6IHRleHQoJ3RhcmdldF91c2VycycpLmFycmF5KCkuJHR5cGU8c3RyaW5nW10+KCkuZGVmYXVsdChbXSkubm90TnVsbCgpLFxuICBub3RpZnlSZXNjYW46IGJvb2xlYW4oJ25vdGlmeV9yZXNjYW4nKS5kZWZhdWx0KHRydWUpLm5vdE51bGwoKSxcbiAgZGlnZXN0TW9kZTogdmFyY2hhcignZGlnZXN0X21vZGUnLCB7IGxlbmd0aDogMTAgfSkuJHR5cGU8UGx1Z2luU2VjdXJpdHlEaWdlc3RNb2RlPigpLmRlZmF1bHQoJ2ltbWVkaWF0ZScpLm5vdE51bGwoKSxcbiAgd2ViaG9va1VybDogdmFyY2hhcignd2ViaG9va191cmwnLCB7IGxlbmd0aDogMjA0OCB9KSxcbiAgd2ViaG9va1NlY3JldDogdGV4dCgnd2ViaG9va19zZWNyZXQnKSxcbiAgZXh0ZXJuYWxFbWFpbEVuYzogdGV4dCgnZXh0ZXJuYWxfZW1haWxfZW5jJyksXG4gIGV4dGVybmFsRW1haWxIYXNoOiB2YXJjaGFyKCdleHRlcm5hbF9lbWFpbF9oYXNoJywgeyBsZW5ndGg6IDY0IH0pLFxuICBleHRlcm5hbEVtYWlsVmVyaWZpZWRBdDogdGltZXN0YW1wKCdleHRlcm5hbF9lbWFpbF92ZXJpZmllZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBleHRlcm5hbFZlcmlmeVRva2VuSGFzaDogdmFyY2hhcignZXh0ZXJuYWxfdmVyaWZ5X3Rva2VuX2hhc2gnLCB7IGxlbmd0aDogNjQgfSksXG4gIGV4dGVybmFsVmVyaWZ5RXhwaXJlc0F0OiB0aW1lc3RhbXAoJ2V4dGVybmFsX3ZlcmlmeV9leHBpcmVzX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIHVwZGF0ZWRCeTogdGV4dCgndXBkYXRlZF9ieScpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgdmVyaWZ5VG9rZW5JZHg6IHVuaXF1ZUluZGV4KCdwbHVnaW5fc2VjdXJpdHlfbm90aWZpY2F0aW9uX3ByZWZzX3ZlcmlmeV90b2tlbl9pZHgnKS5vbih0YWJsZS5leHRlcm5hbFZlcmlmeVRva2VuSGFzaCksXG4gIHJlY2lwaWVudE1vZGVDaGVjazogY2hlY2soJ3BsdWdpbl9zZWN1cml0eV9ub3RpZmljYXRpb25fcHJlZnNfcmVjaXBpZW50X21vZGVfY2hlY2snLFxuICAgIHNxbGAke3RhYmxlLnJlY2lwaWVudE1vZGV9IElOICgnd3JpdGVycycsICd1c2VycycpYCksXG4gIGRpZ2VzdE1vZGVDaGVjazogY2hlY2soJ3BsdWdpbl9zZWN1cml0eV9ub3RpZmljYXRpb25fcHJlZnNfZGlnZXN0X21vZGVfY2hlY2snLFxuICAgIHNxbGAke3RhYmxlLmRpZ2VzdE1vZGV9IElOICgnaW1tZWRpYXRlJywgJ2RhaWx5JywgJ3dlZWtseScpYCksXG59KSk7XG5cbi8qKlxuICogTjIxIGlkZW1wb3RlbmN5OiBvbmUgZGVsaXZlcnkgcGVyIChhZHZpc29yeSwgaW5zdGFsbGluZyBvcmcpLCBzbyBhIHJldHJpZWRcbiAqIGZhbi1vdXQgbmV2ZXIgbm90aWZpZXMgYW4gb3JnIHR3aWNlLlxuICpcbiAqIEB0YWJsZSBwbHVnaW5fYWR2aXNvcnlfZGVsaXZlcmllc1xuICovXG5leHBvcnQgY29uc3QgcGx1Z2luQWR2aXNvcnlEZWxpdmVyeSA9IHBnVGFibGUoJ3BsdWdpbl9hZHZpc29yeV9kZWxpdmVyaWVzJywge1xuICBhZHZpc29yeUlkOiB1dWlkKCdhZHZpc29yeV9pZCcpLm5vdE51bGwoKS5yZWZlcmVuY2VzKCgpID0+IHBsdWdpbkFkdmlzb3J5LmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSksXG4gIG9yZ0lkOiB2YXJjaGFyKCdvcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgZGVsaXZlcmVkQXQ6IHRpbWVzdGFtcCgnZGVsaXZlcmVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgcGs6IHByaW1hcnlLZXkoeyBjb2x1bW5zOiBbdGFibGUuYWR2aXNvcnlJZCwgdGFibGUub3JnSWRdIH0pLFxuICBvcmdJZHg6IGluZGV4KCdwbHVnaW5fYWR2aXNvcnlfZGVsaXZlcnlfb3JnX2lkeCcpLm9uKHRhYmxlLm9yZ0lkKSxcbn0pKTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQdWJsaWMgcmVhZCBwYXRoIOKAlCB2aWV3cyBjcmVhdGVkIGJ5IHBvc3RncmVzLWluaXQuc3FsXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBgcHVibGljX2xpc3RpbmdzYDogbGlzdGVkIGFuZCB1bm1haW50YWluZWQgbGlzdGluZ3Mgb2Ygbm9uLXN1c3BlbmRlZFxuICogcHVibGlzaGVycywgcHVibGljIGNvbHVtbnMgb25seSwgam9pbmVkIHdpdGggdGhlIHB1Ymxpc2hlcidzIGhhbmRsZS9uYW1lL3RpZXIgYW5kIHRoZSBzdGF0cy5cbiAqIFJlYWQgYXMgYGVjb3N5c3RlbV9wdWJsaWNfcmVhZGVyYCAoc2VlIHBvc3RncmVzLWluaXQuc3FsKS5cbiAqL1xuZXhwb3J0IGNvbnN0IHB1YmxpY0xpc3RpbmdzID0gcGdWaWV3KCdwdWJsaWNfbGlzdGluZ3MnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLm5vdE51bGwoKSxcbiAgcHVibGlzaGVySGFuZGxlOiB2YXJjaGFyKCdwdWJsaXNoZXJfaGFuZGxlJywgeyBsZW5ndGg6IDM5IH0pLm5vdE51bGwoKSxcbiAgcHVibGlzaGVyRGlzcGxheU5hbWU6IHZhcmNoYXIoJ3B1Ymxpc2hlcl9kaXNwbGF5X25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgcHVibGlzaGVyVGllcjogdmFyY2hhcigncHVibGlzaGVyX3RpZXInLCB7IGxlbmd0aDogMjAgfSkuJHR5cGU8UHVibGlzaGVyVGllcj4oKS5ub3ROdWxsKCksXG4gIHB1Ymxpc2hlclZlcmlmaWVkQXQ6IHRpbWVzdGFtcCgncHVibGlzaGVyX3ZlcmlmaWVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIG5hbWU6IHZhcmNoYXIoJ25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgY2F0ZWdvcnk6IHZhcmNoYXIoJ2NhdGVnb3J5JywgeyBsZW5ndGg6IDUwIH0pLm5vdE51bGwoKSxcbiAgc3VtbWFyeTogdmFyY2hhcignc3VtbWFyeScsIHsgbGVuZ3RoOiAzMDAgfSksXG4gIGRlc2NyaXB0aW9uOiB0ZXh0KCdkZXNjcmlwdGlvbicpLFxuICByZWFkbWVIdG1sOiB0ZXh0KCdyZWFkbWVfaHRtbCcpLFxuICBsaWNlbnNlOiB2YXJjaGFyKCdsaWNlbnNlJywgeyBsZW5ndGg6IDY0IH0pLFxuICBob21lcGFnZVVybDogdmFyY2hhcignaG9tZXBhZ2VfdXJsJywgeyBsZW5ndGg6IDIwNDggfSksXG4gIHNvdXJjZVVybDogdmFyY2hhcignc291cmNlX3VybCcsIHsgbGVuZ3RoOiAyMDQ4IH0pLFxuICBpY29uOiBqc29uYignaWNvbicpLiR0eXBlPFBsdWdpbkljb24+KCksXG4gIHVwbG9hZGVkSWNvbjoganNvbmIoJ3VwbG9hZGVkX2ljb24nKS4kdHlwZTxQbHVnaW5VcGxvYWRlZEljb24+KCksXG4gIGtleXdvcmRzOiBqc29uYigna2V5d29yZHMnKS4kdHlwZTxzdHJpbmdbXT4oKS5ub3ROdWxsKCksXG4gIGZlYXR1cmVkOiBib29sZWFuKCdmZWF0dXJlZCcpLm5vdE51bGwoKSxcbiAgbGF0ZXN0VmVyc2lvbjogdmFyY2hhcignbGF0ZXN0X3ZlcnNpb24nLCB7IGxlbmd0aDogNTAgfSksXG4gIHBhdXNlZEF0OiB0aW1lc3RhbXAoJ3BhdXNlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBzZWFyY2hWZWN0b3I6IHRzdmVjdG9yKCdzZWFyY2hfdmVjdG9yJyksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkubm90TnVsbCgpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLm5vdE51bGwoKSxcbiAgcmF0aW5nQmF5ZXM6IGRvdWJsZVByZWNpc2lvbigncmF0aW5nX2JheWVzJyksXG4gIHJhdGluZ0NvdW50OiBpbnRlZ2VyKCdyYXRpbmdfY291bnQnKS5ub3ROdWxsKCksXG4gIHJhdGluZ0Rpc3Q6IGpzb25iKCdyYXRpbmdfZGlzdCcpLiR0eXBlPFJlY29yZDxzdHJpbmcsIG51bWJlcj4+KCksXG4gIHJlY2VudFJhdGluZzogZG91YmxlUHJlY2lzaW9uKCdyZWNlbnRfcmF0aW5nJyksXG4gIGluc3RhbGxDb3VudDogaW50ZWdlcignaW5zdGFsbF9jb3VudCcpLm5vdE51bGwoKSxcbiAgLy8gTlVMTCBiZWxvdyB0aGUgNS1vcmcgZGlzcGxheSB0aHJlc2hvbGQuXG4gIGFjdGl2ZU9yZ0NvdW50OiBpbnRlZ2VyKCdhY3RpdmVfb3JnX2NvdW50JyksXG4gIHN1Y2Nlc3NSYXRlMzBkOiBkb3VibGVQcmVjaXNpb24oJ3N1Y2Nlc3NfcmF0ZV8zMGQnKSxcbiAgaGVhbHRoU2NvcmU6IGRvdWJsZVByZWNpc2lvbignaGVhbHRoX3Njb3JlJyksXG4gIC8vICdsaXN0ZWQnIHwgJ3VubWFpbnRhaW5lZCcg4oCUIHVubWFpbnRhaW5lZCBzdGF5cyBwdWJsaWMgd2l0aCBhIGJhbm5lci5cbiAgc3RhdGU6IHZhcmNoYXIoJ3N0YXRlJywgeyBsZW5ndGg6IDIwIH0pLiR0eXBlPExpc3RpbmdTdGF0ZT4oKS5ub3ROdWxsKCksXG4gIGhlYWx0aEJyZWFrZG93bjoganNvbmIoJ2hlYWx0aF9icmVha2Rvd24nKS4kdHlwZTxIZWFsdGhCcmVha2Rvd24+KCksXG59KS5leGlzdGluZygpO1xuXG4vKipcbiAqIGBwdWJsaWNfbGlzdGVkX3ZlcnNpb25zYDogbm9uLXBhdXNlZCB2ZXJzaW9ucyBvZiBsaXN0ZWQgbGlzdGluZ3MgKHlhbmtlZCBvbmVzXG4gKiBpbmNsdWRlZCwgZmxhZ2dlZCksIHdpdGggb25seSB0aGUgcHVibGljIHN1YnNldCBvZiB0aGUgZnJvemVuIHNwZWMuXG4gKi9cbmV4cG9ydCBjb25zdCBwdWJsaWNMaXN0ZWRWZXJzaW9ucyA9IHBnVmlldygncHVibGljX2xpc3RlZF92ZXJzaW9ucycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykubm90TnVsbCgpLFxuICBsaXN0aW5nSWQ6IHV1aWQoJ2xpc3RpbmdfaWQnKS5ub3ROdWxsKCksXG4gIHB1Ymxpc2hlckhhbmRsZTogdmFyY2hhcigncHVibGlzaGVyX2hhbmRsZScsIHsgbGVuZ3RoOiAzOSB9KS5ub3ROdWxsKCksXG4gIG5hbWU6IHZhcmNoYXIoJ25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgdmVyc2lvbjogdmFyY2hhcigndmVyc2lvbicsIHsgbGVuZ3RoOiA1MCB9KS5ub3ROdWxsKCksXG4gIGltYWdlRGlnZXN0OiB2YXJjaGFyKCdpbWFnZV9kaWdlc3QnLCB7IGxlbmd0aDogNzEgfSksXG4gIGltYWdlUmVwb3NpdG9yeTogdmFyY2hhcignaW1hZ2VfcmVwb3NpdG9yeScsIHsgbGVuZ3RoOiA1MTIgfSksXG4gIGJyZWFraW5nOiBib29sZWFuKCdicmVha2luZycpLm5vdE51bGwoKSxcbiAgZGVwcmVjYXRlZEF0OiB0aW1lc3RhbXAoJ2RlcHJlY2F0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgY2hhbmdlbG9nOiB0ZXh0KCdjaGFuZ2Vsb2cnKSxcbiAgdnVsbkNyaXRpY2FsOiBpbnRlZ2VyKCd2dWxuX2NyaXRpY2FsJyksXG4gIHZ1bG5IaWdoOiBpbnRlZ2VyKCd2dWxuX2hpZ2gnKSxcbiAgc2Nhbm5lZEF0OiB0aW1lc3RhbXAoJ3NjYW5uZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgcHVibGlzaGVkQXQ6IHRpbWVzdGFtcCgncHVibGlzaGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkubm90TnVsbCgpLFxuICBwbHVnaW5UeXBlOiB0ZXh0KCdwbHVnaW5fdHlwZScpLFxuICBjb21wdXRlVHlwZTogdGV4dCgnY29tcHV0ZV90eXBlJyksXG4gIHNlY3JldHM6IGpzb25iKCdzZWNyZXRzJykuJHR5cGU8UGx1Z2luU2VjcmV0W10+KCksXG4gIHJlcXVpcmVkTWV0YWRhdGE6IGpzb25iKCdyZXF1aXJlZF9tZXRhZGF0YScpLiR0eXBlPHN0cmluZ1tdPigpLFxuICByZXF1aXJlZFZhcnM6IGpzb25iKCdyZXF1aXJlZF92YXJzJykuJHR5cGU8c3RyaW5nW10+KCksXG4gIG5ldHdvcmtFZ3Jlc3M6IGpzb25iKCduZXR3b3JrX2VncmVzcycpLiR0eXBlPHN0cmluZ1tdPigpLFxuICBydW5Bc1Jvb3Q6IGJvb2xlYW4oJ3J1bl9hc19yb290JyksXG4gIGxpY2Vuc2U6IHRleHQoJ2xpY2Vuc2UnKSxcbiAgcmVhZG1lSHRtbDogdGV4dCgncmVhZG1lX2h0bWwnKSxcbiAgLy8gWWFua2VkIHZlcnNpb25zIHN0YXkgbGlzdGVkIChtYXJrZWQpOyB0aGUgeWFuayByZWFzb24gaXNuJ3QgcHVibGljLlxuICB5YW5rZWQ6IGJvb2xlYW4oJ3lhbmtlZCcpLm5vdE51bGwoKSxcbiAgZGVwcmVjYXRpb25NZXNzYWdlOiB0ZXh0KCdkZXByZWNhdGlvbl9tZXNzYWdlJyksXG4gIGltYWdlU291cmNlOiB0ZXh0KCdpbWFnZV9zb3VyY2UnKSxcbiAgYmFzZUltYWdlQ3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2Jhc2VfaW1hZ2VfY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICAvLyBBcHBlbmRlZCBpbiB0aGUgdmlldyAoQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBvbmx5IGFkZHMgY29sdW1ucyBhdCB0aGUgZW5kKS5cbiAgdnVsbkNyaXRpY2FsRml4YWJsZTogaW50ZWdlcigndnVsbl9jcml0aWNhbF9maXhhYmxlJyksXG4gIHZ1bG5IaWdoRml4YWJsZTogaW50ZWdlcigndnVsbl9oaWdoX2ZpeGFibGUnKSxcbiAgc2NhbkZsYWdnZWRBdDogdGltZXN0YW1wKCdzY2FuX2ZsYWdnZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbn0pLmV4aXN0aW5nKCk7XG5cbi8qKlxuICogYHB1YmxpY19hZHZpc29yaWVzYDogUFVCTElTSEVEIGFkdmlzb3JpZXMgb24gbGlzdGVkIGxpc3RpbmdzLCBwdWJsaWMgY29sdW1uc1xuICogb25seSAobm8gcHVibGlzaGVyL29yZyBpZHMsIG5vIGF1dGhvciwgbm8gZHJhZnRzIG9yIHdpdGhkcmF3biByb3dzKS5cbiAqL1xuZXhwb3J0IGNvbnN0IHB1YmxpY0Fkdmlzb3JpZXMgPSBwZ1ZpZXcoJ3B1YmxpY19hZHZpc29yaWVzJywge1xuICBpZDogdXVpZCgnaWQnKS5ub3ROdWxsKCksXG4gIGxpc3RpbmdJZDogdXVpZCgnbGlzdGluZ19pZCcpLm5vdE51bGwoKSxcbiAgcHVibGlzaGVySGFuZGxlOiB2YXJjaGFyKCdwdWJsaXNoZXJfaGFuZGxlJywgeyBsZW5ndGg6IDM5IH0pLm5vdE51bGwoKSxcbiAgbmFtZTogdmFyY2hhcignbmFtZScsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBzZXZlcml0eTogdmFyY2hhcignc2V2ZXJpdHknLCB7IGxlbmd0aDogMTAgfSkuJHR5cGU8QWR2aXNvcnlTZXZlcml0eT4oKS5ub3ROdWxsKCksXG4gIHN1bW1hcnk6IHZhcmNoYXIoJ3N1bW1hcnknLCB7IGxlbmd0aDogMzAwIH0pLm5vdE51bGwoKSxcbiAgZGV0YWlsc0h0bWw6IHRleHQoJ2RldGFpbHNfaHRtbCcpLFxuICBjdmVJZHM6IHRleHQoJ2N2ZV9pZHMnKS5hcnJheSgpLm5vdE51bGwoKSxcbiAgYWZmZWN0ZWRSYW5nZTogdmFyY2hhcignYWZmZWN0ZWRfcmFuZ2UnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgZml4ZWRWZXJzaW9uOiB2YXJjaGFyKCdmaXhlZF92ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLFxuICBwdWJsaXNoZWRBdDogdGltZXN0YW1wKCdwdWJsaXNoZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbn0pLmV4aXN0aW5nKCk7XG5cbi8qKlxuICogYHB1YmxpY19yZXZpZXdzYDogUFVCTElTSEVEIHJldmlld3Mgb2YgcHVibGljIChub24tcGF1c2VkKSBsaXN0aW5ncywgcHVibGljXG4gKiBjb2x1bW5zIG9ubHkg4oCUIHRoZSBhdXRob3IncyBkaXNwbGF5IG5hbWUsIG5ldmVyIGEgdXNlciBvciBvcmcgaWQg4oCUXG4gKiB3aXRoIHRoZSBwdWJsaXNoZXIncyByZXBseS5cbiAqL1xuZXhwb3J0IGNvbnN0IHB1YmxpY1Jldmlld3MgPSBwZ1ZpZXcoJ3B1YmxpY19yZXZpZXdzJywge1xuICBpZDogdXVpZCgnaWQnKS5ub3ROdWxsKCksXG4gIGxpc3RpbmdJZDogdXVpZCgnbGlzdGluZ19pZCcpLm5vdE51bGwoKSxcbiAgcHVibGlzaGVySGFuZGxlOiB2YXJjaGFyKCdwdWJsaXNoZXJfaGFuZGxlJywgeyBsZW5ndGg6IDM5IH0pLm5vdE51bGwoKSxcbiAgbmFtZTogdmFyY2hhcignbmFtZScsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICB2ZXJzaW9uOiB2YXJjaGFyKCd2ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLFxuICByYXRpbmc6IHNtYWxsaW50KCdyYXRpbmcnKS5ub3ROdWxsKCksXG4gIHRpdGxlOiB2YXJjaGFyKCd0aXRsZScsIHsgbGVuZ3RoOiAxMjAgfSksXG4gIGJvZHlIdG1sOiB0ZXh0KCdib2R5X2h0bWwnKSxcbiAgYXV0aG9yRGlzcGxheU5hbWU6IHZhcmNoYXIoJ2F1dGhvcl9kaXNwbGF5X25hbWUnLCB7IGxlbmd0aDogMTAwIH0pLFxuICB2ZXJpZmllZFVzZTogYm9vbGVhbigndmVyaWZpZWRfdXNlJykubm90TnVsbCgpLFxuICBoZWxwZnVsQ291bnQ6IGludGVnZXIoJ2hlbHBmdWxfY291bnQnKS5ub3ROdWxsKCksXG4gIGVkaXRlZDogYm9vbGVhbignZWRpdGVkJykubm90TnVsbCgpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5ub3ROdWxsKCksXG4gIHB1Ymxpc2hlckRpc3BsYXlOYW1lOiB2YXJjaGFyKCdwdWJsaXNoZXJfZGlzcGxheV9uYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHJlcGx5Qm9keUh0bWw6IHRleHQoJ3JlcGx5X2JvZHlfaHRtbCcpLFxuICByZXBseUNyZWF0ZWRBdDogdGltZXN0YW1wKCdyZXBseV9jcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIHJlcGx5VXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3JlcGx5X3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbn0pLmV4aXN0aW5nKCk7XG5cbi8qKiBUaGUgb2ZmaWNpYWwgcHVibGlzaGVyJ3MgaGFuZGxlICh0aGUgc3lzdGVtIG9yZydzIGNhdGFsb2cpLiAqL1xuZXhwb3J0IGNvbnN0IE9GRklDSUFMX1BVQkxJU0hFUl9IQU5ETEUgPSAncGlwZWxpbmUtYnVpbGRlcic7XG4vKiogVGhlIHBsYXRmb3JtLW93bmVkIHB1Ymxpc2hlciBhbm9ueW1vdXMgc3VibWlzc2lvbnMgbGFuZCB1bmRlci4gKi9cbmV4cG9ydCBjb25zdCBDT01NVU5JVFlfUFVCTElTSEVSX0hBTkRMRSA9ICdjb21tdW5pdHknO1xuXG4vKiogRml4ZWQgaWRzIG9mIHRoZSB0d28gYXV0by1hcHByb3ZhbCBydWxlcyBwb3N0Z3Jlcy1pbml0LnNxbCBzZWVkcy4gKi9cbmV4cG9ydCBjb25zdCBTRUVERURfQVVUT19BUFBST1ZBTF9SVUxFX0lEUyA9IHtcbiAgdmVyaWZpZWRVcGRhdGVzOiAnMDAwMDAwMDAtMDAwMC00MDAwLTgwMDAtMDAwMDAwMDBhMDAxJyxcbiAgb2ZmaWNpYWxDYXRhbG9nOiAnMDAwMDAwMDAtMDAwMC00MDAwLTgwMDAtMDAwMDAwMDBhMDAyJyxcbn0gYXMgY29uc3Q7XG5cbi8qKlxuICogVHlwZVNjcmlwdCB0eXBlcyByZXByZXNlbnRpbmcgZGF0YWJhc2Ugcm93c1xuICovXG5leHBvcnQgdHlwZSBQdWJsaXNoZXIgPSB0eXBlb2YgcHVibGlzaGVyLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFB1Ymxpc2hlckluc2VydCA9IHR5cGVvZiBwdWJsaXNoZXIuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBQbHVnaW5MaXN0aW5nID0gdHlwZW9mIHBsdWdpbkxpc3RpbmcuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUGx1Z2luTGlzdGluZ0luc2VydCA9IHR5cGVvZiBwbHVnaW5MaXN0aW5nLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgUGx1Z2luTGlzdGluZ1ZlcnNpb24gPSB0eXBlb2YgcGx1Z2luTGlzdGluZ1ZlcnNpb24uJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUGx1Z2luTGlzdGluZ1ZlcnNpb25JbnNlcnQgPSB0eXBlb2YgcGx1Z2luTGlzdGluZ1ZlcnNpb24uJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBQbHVnaW5BZHZpc29yeSA9IHR5cGVvZiBwbHVnaW5BZHZpc29yeS4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBQbHVnaW5BZHZpc29yeUluc2VydCA9IHR5cGVvZiBwbHVnaW5BZHZpc29yeS4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIEVjb3N5c3RlbUF1dG9BcHByb3ZhbFJ1bGUgPSB0eXBlb2YgZWNvc3lzdGVtQXV0b0FwcHJvdmFsUnVsZS4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBFY29zeXN0ZW1BdXRvQXBwcm92YWxSdWxlSW5zZXJ0ID0gdHlwZW9mIGVjb3N5c3RlbUF1dG9BcHByb3ZhbFJ1bGUuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBQbHVnaW5QdWJsaXNoUmVxdWVzdCA9IHR5cGVvZiBwbHVnaW5QdWJsaXNoUmVxdWVzdC4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBQbHVnaW5QdWJsaXNoUmVxdWVzdEluc2VydCA9IHR5cGVvZiBwbHVnaW5QdWJsaXNoUmVxdWVzdC4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIEVjb3N5c3RlbVJlc2VydmVkTmFtZSA9IHR5cGVvZiBlY29zeXN0ZW1SZXNlcnZlZE5hbWUuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgRWNvc3lzdGVtUmVzZXJ2ZWROYW1lSW5zZXJ0ID0gdHlwZW9mIGVjb3N5c3RlbVJlc2VydmVkTmFtZS4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIEVjb3N5c3RlbVNldHRpbmcgPSB0eXBlb2YgZWNvc3lzdGVtU2V0dGluZy4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBFY29zeXN0ZW1TZXR0aW5nSW5zZXJ0ID0gdHlwZW9mIGVjb3N5c3RlbVNldHRpbmcuJGluZmVySW5zZXJ0O1xuXG5cbmV4cG9ydCB0eXBlIFBsdWdpblJldmlldyA9IHR5cGVvZiBwbHVnaW5SZXZpZXcuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUGx1Z2luUmV2aWV3SW5zZXJ0ID0gdHlwZW9mIHBsdWdpblJldmlldy4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIFBsdWdpblJldmlld1JlcGx5ID0gdHlwZW9mIHBsdWdpblJldmlld1JlcGx5LiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBsdWdpblJldmlld1JlcGx5SW5zZXJ0ID0gdHlwZW9mIHBsdWdpblJldmlld1JlcGx5LiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgUGx1Z2luUmV2aWV3UmVwb3J0ID0gdHlwZW9mIHBsdWdpblJldmlld1JlcG9ydC4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBQbHVnaW5SZXZpZXdSZXBvcnRJbnNlcnQgPSB0eXBlb2YgcGx1Z2luUmV2aWV3UmVwb3J0LiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgUGx1Z2luUmV2aWV3Vm90ZSA9IHR5cGVvZiBwbHVnaW5SZXZpZXdWb3RlLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBsdWdpblJldmlld1ZvdGVJbnNlcnQgPSB0eXBlb2YgcGx1Z2luUmV2aWV3Vm90ZS4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIFBsdWdpblJldmlld0hpc3RvcnkgPSB0eXBlb2YgcGx1Z2luUmV2aWV3SGlzdG9yeS4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBQbHVnaW5SZXZpZXdIaXN0b3J5SW5zZXJ0ID0gdHlwZW9mIHBsdWdpblJldmlld0hpc3RvcnkuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBQbHVnaW5TdGF0cyA9IHR5cGVvZiBwbHVnaW5TdGF0cy4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBQbHVnaW5TdGF0c0luc2VydCA9IHR5cGVvZiBwbHVnaW5TdGF0cy4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIFBsdWdpblN1Ym1pc3Npb24gPSB0eXBlb2YgcGx1Z2luU3VibWlzc2lvbi4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBQbHVnaW5TdWJtaXNzaW9uSW5zZXJ0ID0gdHlwZW9mIHBsdWdpblN1Ym1pc3Npb24uJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBFY29zeXN0ZW1TZWFyY2hNaXNzID0gdHlwZW9mIGVjb3N5c3RlbVNlYXJjaE1pc3MuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgRWNvc3lzdGVtU2VhcmNoTWlzc0luc2VydCA9IHR5cGVvZiBlY29zeXN0ZW1TZWFyY2hNaXNzLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgRWNvc3lzdGVtTm90aWZpY2F0aW9uID0gdHlwZW9mIGVjb3N5c3RlbU5vdGlmaWNhdGlvblF1ZXVlLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIEVjb3N5c3RlbU5vdGlmaWNhdGlvbkluc2VydCA9IHR5cGVvZiBlY29zeXN0ZW1Ob3RpZmljYXRpb25RdWV1ZS4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIFBpcGVsaW5lU3RlcE1hbmlmZXN0ID0gdHlwZW9mIHBpcGVsaW5lU3RlcE1hbmlmZXN0LiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBpcGVsaW5lU3RlcE1hbmlmZXN0SW5zZXJ0ID0gdHlwZW9mIHBpcGVsaW5lU3RlcE1hbmlmZXN0LiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgUGx1Z2luSW5zdGFsbCA9IHR5cGVvZiBwbHVnaW5JbnN0YWxsLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBsdWdpbkluc3RhbGxJbnNlcnQgPSB0eXBlb2YgcGx1Z2luSW5zdGFsbC4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIFBsdWdpbkluc3RhbGxQb2xpY3kgPSB0eXBlb2YgcGx1Z2luSW5zdGFsbFBvbGljeS4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBQbHVnaW5JbnN0YWxsUG9saWN5SW5zZXJ0ID0gdHlwZW9mIHBsdWdpbkluc3RhbGxQb2xpY3kuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBQbHVnaW5TZWN1cml0eU5vdGlmaWNhdGlvblByZWYgPSB0eXBlb2YgcGx1Z2luU2VjdXJpdHlOb3RpZmljYXRpb25QcmVmLiRpbmZlclNlbGVjdDtcblxuZXhwb3J0IHR5cGUgUGx1Z2luQWR2aXNvcnlEZWxpdmVyeSA9IHR5cGVvZiBwbHVnaW5BZHZpc29yeURlbGl2ZXJ5LiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBsdWdpbkFkdmlzb3J5RGVsaXZlcnlJbnNlcnQgPSB0eXBlb2YgcGx1Z2luQWR2aXNvcnlEZWxpdmVyeS4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIFB1YmxpY0xpc3RpbmcgPSB0eXBlb2YgcHVibGljTGlzdGluZ3MuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUHVibGljTGlzdGVkVmVyc2lvbiA9IHR5cGVvZiBwdWJsaWNMaXN0ZWRWZXJzaW9ucy4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBQdWJsaWNBZHZpc29yeSA9IHR5cGVvZiBwdWJsaWNBZHZpc29yaWVzLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFB1YmxpY1JldmlldyA9IHR5cGVvZiBwdWJsaWNSZXZpZXdzLiRpbmZlclNlbGVjdDtcbiJdfQ==
|
package/package.json
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"drizzle-orm": "0.45.3",
|
|
28
28
|
"pg": "8.23.0",
|
|
29
|
-
"@pipeline-builder/api-core": "5.0.
|
|
29
|
+
"@pipeline-builder/api-core": "5.0.11"
|
|
30
30
|
},
|
|
31
31
|
"keywords": [
|
|
32
32
|
"ci-cd",
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
"access": "public",
|
|
83
83
|
"registry": "https://registry.npmjs.org/"
|
|
84
84
|
},
|
|
85
|
-
"version": "4.1.
|
|
85
|
+
"version": "4.1.36",
|
|
86
86
|
"bugs": {
|
|
87
87
|
"url": "https://github.com/mwashburn160/pipeline-builder/issues"
|
|
88
88
|
},
|