@angular/compiler 18.0.0-next.1 → 18.0.0-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/src/compiler.mjs +3 -3
- package/esm2022/src/compiler_facade_interface.mjs +1 -1
- package/esm2022/src/constant_pool.mjs +6 -3
- package/esm2022/src/jit_compiler_facade.mjs +9 -10
- package/esm2022/src/render3/partial/api.mjs +1 -1
- package/esm2022/src/render3/partial/class_metadata.mjs +24 -2
- package/esm2022/src/render3/partial/component.mjs +24 -1
- package/esm2022/src/render3/partial/directive.mjs +1 -1
- package/esm2022/src/render3/partial/factory.mjs +1 -1
- package/esm2022/src/render3/partial/injectable.mjs +1 -1
- package/esm2022/src/render3/partial/injector.mjs +1 -1
- package/esm2022/src/render3/partial/ng_module.mjs +1 -1
- package/esm2022/src/render3/partial/pipe.mjs +1 -1
- package/esm2022/src/render3/r3_ast.mjs +7 -4
- package/esm2022/src/render3/r3_class_metadata_compiler.mjs +46 -33
- package/esm2022/src/render3/r3_control_flow.mjs +18 -16
- package/esm2022/src/render3/r3_identifiers.mjs +2 -1
- package/esm2022/src/render3/r3_template_transform.mjs +2 -13
- package/esm2022/src/render3/view/api.mjs +1 -1
- package/esm2022/src/render3/view/compiler.mjs +2 -2
- package/esm2022/src/render3/view/t2_api.mjs +1 -1
- package/esm2022/src/render3/view/t2_binder.mjs +30 -20
- package/esm2022/src/shadow_css.mjs +2 -2
- package/esm2022/src/template/pipeline/ir/src/ops/create.mjs +4 -2
- package/esm2022/src/template/pipeline/ir/src/ops/update.mjs +1 -1
- package/esm2022/src/template/pipeline/src/ingest.mjs +65 -50
- package/esm2022/src/template/pipeline/src/instruction.mjs +9 -3
- package/esm2022/src/template/pipeline/src/phases/generate_variables.mjs +6 -1
- package/esm2022/src/template/pipeline/src/phases/naming.mjs +14 -2
- package/esm2022/src/template/pipeline/src/phases/propagate_i18n_blocks.mjs +2 -2
- package/esm2022/src/template/pipeline/src/phases/reify.mjs +21 -2
- package/esm2022/src/template/pipeline/src/phases/track_fn_optimization.mjs +4 -1
- package/esm2022/src/template/pipeline/src/phases/track_variables.mjs +2 -2
- package/esm2022/src/template/pipeline/src/phases/wrap_icus.mjs +2 -2
- package/esm2022/src/version.mjs +1 -1
- package/fesm2022/compiler.mjs +286 -160
- package/fesm2022/compiler.mjs.map +1 -1
- package/index.d.ts +50 -16
- package/package.json +2 -2
|
@@ -202,19 +202,21 @@ export function createProjectionDefOp(def) {
|
|
|
202
202
|
...NEW_OP,
|
|
203
203
|
};
|
|
204
204
|
}
|
|
205
|
-
export function createProjectionOp(xref, selector, i18nPlaceholder, sourceSpan) {
|
|
205
|
+
export function createProjectionOp(xref, selector, i18nPlaceholder, fallbackView, sourceSpan) {
|
|
206
206
|
return {
|
|
207
207
|
kind: OpKind.Projection,
|
|
208
208
|
xref,
|
|
209
209
|
handle: new SlotHandle(),
|
|
210
210
|
selector,
|
|
211
211
|
i18nPlaceholder,
|
|
212
|
+
fallbackView,
|
|
212
213
|
projectionSlotIndex: 0,
|
|
213
214
|
attributes: null,
|
|
214
215
|
localRefs: [],
|
|
215
216
|
sourceSpan,
|
|
216
217
|
...NEW_OP,
|
|
217
218
|
...TRAIT_CONSUMES_SLOT,
|
|
219
|
+
numSlotsUsed: fallbackView === null ? 1 : 2,
|
|
218
220
|
};
|
|
219
221
|
}
|
|
220
222
|
/**
|
|
@@ -382,4 +384,4 @@ export function createI18nAttributesOp(xref, handle, target) {
|
|
|
382
384
|
...TRAIT_CONSUMES_SLOT,
|
|
383
385
|
};
|
|
384
386
|
}
|
|
385
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXIvc3JjL3RlbXBsYXRlL3BpcGVsaW5lL2lyL3NyYy9vcHMvY3JlYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQU1ILE9BQU8sRUFBZ0MsZUFBZSxFQUF1QixTQUFTLEVBQUUsTUFBTSxFQUFlLE1BQU0sVUFBVSxDQUFDO0FBQzlILE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxFQUFLLE1BQU0sRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQXlDLG1CQUFtQixFQUFFLG1CQUFtQixFQUFDLE1BQU0sV0FBVyxDQUFDO0FBRTNHLE9BQU8sRUFBWSxNQUFNLEVBQTBCLE1BQU0sVUFBVSxDQUFDO0FBb0JwRTs7R0FFRztBQUNILE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDdEMsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsUUFBUTtJQUM3RixNQUFNLENBQUMsY0FBYztDQUN0QixDQUFDLENBQUM7QUFFSDs7R0FFRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxFQUFZO0lBQ2pELE9BQU8sdUJBQXVCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBMEZEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUNoQyxHQUFXLEVBQUUsSUFBWSxFQUFFLFNBQW9CLEVBQUUsZUFBOEMsRUFDL0YsZUFBZ0MsRUFBRSxlQUFnQztJQUNwRSxPQUFPO1FBQ0wsSUFBSSxFQUFFLE1BQU0sQ0FBQyxZQUFZO1FBQ3pCLElBQUk7UUFDSixHQUFHO1FBQ0gsTUFBTSxFQUFFLElBQUksVUFBVSxFQUFFO1FBQ3hCLFVBQVUsRUFBRSxJQUFJO1FBQ2hCLFNBQVMsRUFBRSxFQUFFO1FBQ2IsV0FBVyxFQUFFLEtBQUs7UUFDbEIsU0FBUztRQUNULGVBQWU7UUFDZixlQUFlO1FBQ2YsZUFBZTtRQUNmLEdBQUcsbUJBQW1CO1FBQ3RCLEdBQUcsTUFBTTtLQUNWLENBQUM7QUFDSixDQUFDO0FBNkNEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUM1QixJQUFZLEVBQUUsWUFBMEIsRUFBRSxHQUFnQixFQUFFLGtCQUEwQixFQUN0RixTQUFvQixFQUFFLGVBQW9FLEVBQzFGLGVBQWdDLEVBQUUsZUFBZ0M7SUFDcEUsT0FBTztRQUNMLElBQUksRUFBRSxNQUFNLENBQUMsUUFBUTtRQUNyQixJQUFJO1FBQ0osWUFBWTtRQUNaLFVBQVUsRUFBRSxJQUFJO1FBQ2hCLEdBQUc7UUFDSCxNQUFNLEVBQUUsSUFBSSxVQUFVLEVBQUU7UUFDeEIsa0JBQWtCO1FBQ2xCLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7UUFDVixTQUFTLEVBQUUsRUFBRTtRQUNiLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLFNBQVM7UUFDVCxlQUFlO1FBQ2YsZUFBZTtRQUNmLGVBQWU7UUFDZixHQUFHLG1CQUFtQjtRQUN0QixHQUFHLE1BQU07S0FDVixDQUFDO0FBQ0osQ0FBQztBQW9GRCxNQUFNLFVBQVUsc0JBQXNCLENBQ2xDLFdBQW1CLEVBQUUsU0FBc0IsRUFBRSxHQUFnQixFQUFFLEtBQW1CLEVBQ2xGLFFBQTBCLEVBQUUsUUFBcUIsRUFDakQsZUFBZ0QsRUFDaEQsb0JBQXFELEVBQUUsZUFBZ0MsRUFDdkYsZUFBZ0M7SUFDbEMsT0FBTztRQUNMLElBQUksRUFBRSxNQUFNLENBQUMsY0FBYztRQUMzQixVQUFVLEVBQUUsSUFBSTtRQUNoQixJQUFJLEVBQUUsV0FBVztRQUNqQixNQUFNLEVBQUUsSUFBSSxVQUFVLEVBQUU7UUFDeEIsU0FBUztRQUNULEtBQUs7UUFDTCxTQUFTLEVBQUUsSUFBSTtRQUNmLEdBQUc7UUFDSCxRQUFRO1FBQ1IsZUFBZSxFQUFFLElBQUk7UUFDckIsa0JBQWtCLEVBQUUsS0FBSztRQUN6QixTQUFTLEVBQUUsU0FBUyxDQUFDLElBQUk7UUFDekIsV0FBVyxFQUFFLEtBQUs7UUFDbEIsU0FBUyxFQUFFLEVBQUU7UUFDYixLQUFLLEVBQUUsSUFBSTtRQUNYLElBQUksRUFBRSxJQUFJO1FBQ1YsUUFBUTtRQUNSLHFCQUFxQixFQUFFLEtBQUs7UUFDNUIsZUFBZTtRQUNmLG9CQUFvQjtRQUNwQixlQUFlO1FBQ2YsZUFBZTtRQUNmLEdBQUcsbUJBQW1CO1FBQ3RCLEdBQUcsTUFBTTtRQUNULEdBQUcsbUJBQW1CO1FBQ3RCLFlBQVksRUFBRSxTQUFTLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDekMsQ0FBQztBQUNKLENBQUM7QUFrQkQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsSUFBWSxFQUFFLFVBQWdDO0lBQy9FLE9BQU87UUFDTCxJQUFJLEVBQUUsTUFBTSxDQUFDLFVBQVU7UUFDdkIsSUFBSTtRQUNKLFVBQVU7UUFDVixHQUFHLE1BQU07S0FDVixDQUFDO0FBQ0osQ0FBQztBQTRDRCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsSUFBWTtJQUNsRCxPQUFPO1FBQ0wsSUFBSSxFQUFFLE1BQU0sQ0FBQyxlQUFlO1FBQzVCLElBQUk7UUFDSixHQUFHLE1BQU07S0FDVixDQUFDO0FBQ0osQ0FBQztBQWVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxJQUFZO0lBQ2pELE9BQU87UUFDTCxJQUFJLEVBQUUsTUFBTSxDQUFDLGNBQWM7UUFDM0IsSUFBSTtRQUNKLEdBQUcsTUFBTTtLQUNWLENBQUM7QUFDSixDQUFDO0FBMkJEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FDeEIsSUFBWSxFQUFFLFlBQW9CLEVBQUUsY0FBMkIsRUFDL0QsVUFBZ0M7SUFDbEMsT0FBTztRQUNMLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtRQUNqQixJQUFJO1FBQ0osTUFBTSxFQUFFLElBQUksVUFBVSxFQUFFO1FBQ3hCLFlBQVk7UUFDWixjQUFjO1FBQ2QsVUFBVTtRQUNWLEdBQUcsbUJBQW1CO1FBQ3RCLEdBQUcsTUFBTTtLQUNWLENBQUM7QUFDSixDQUFDO0FBNEREOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUM1QixNQUFjLEVBQUUsVUFBc0IsRUFBRSxJQUFZLEVBQUUsR0FBZ0IsRUFDdEUsVUFBMkIsRUFBRSxjQUEyQixFQUFFLFdBQXdCLEVBQ2xGLFlBQXFCLEVBQUUsVUFBMkI7SUFDcEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxNQUFNLEVBQVksQ0FBQztJQUMzQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzdCLE9BQU87UUFDTCxJQUFJLEVBQUUsTUFBTSxDQUFDLFFBQVE7UUFDckIsTUFBTTtRQUNOLFVBQVU7UUFDVixHQUFHO1FBQ0gsWUFBWTtRQUNaLElBQUk7UUFDSixVQUFVLEVBQUUsV0FBVztRQUN2QixhQUFhLEVBQUUsSUFBSTtRQUNuQixtQkFBbUIsRUFBRSxLQUFLO1FBQzFCLG1CQUFtQixFQUFFLGNBQWMsS0FBSyxJQUFJO1FBQzVDLGNBQWM7UUFDZCxXQUFXO1FBQ1gsVUFBVTtRQUNWLEdBQUcsTUFBTTtLQUNWLENBQUM7QUFDSixDQUFDO0FBbUNEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQixDQUNsQyxNQUFjLEVBQUUsVUFBc0IsRUFBRSxJQUFZLEVBQUUsR0FBZ0IsRUFDdEUsVUFBMkIsRUFBRSxVQUEyQjtJQUMxRCxNQUFNLFdBQVcsR0FBRyxJQUFJLE1BQU0sRUFBWSxDQUFDO0lBQzNDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDN0IsT0FBTztRQUNMLElBQUksRUFBRSxNQUFNLENBQUMsY0FBYztRQUMzQixNQUFNO1FBQ04sVUFBVTtRQUNWLEdBQUc7UUFDSCxJQUFJO1FBQ0osVUFBVSxFQUFFLFdBQVc7UUFDdkIsYUFBYSxFQUFFLElBQUk7UUFDbkIsVUFBVTtRQUNWLEdBQUcsTUFBTTtLQUNWLENBQUM7QUFDSixDQUFDO0FBUUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxJQUFZLEVBQUUsSUFBZ0IsRUFBRSxJQUFZO0lBQ3ZFLE9BQU87UUFDTCxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7UUFDakIsSUFBSTtRQUNKLE1BQU0sRUFBRSxJQUFJO1FBQ1osSUFBSTtRQUNKLEdBQUcsTUFBTTtRQUNULEdBQUcsbUJBQW1CO0tBQ3ZCLENBQUM7QUFDSixDQUFDO0FBVUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLFNBQW9CO0lBQ3BELE9BQU87UUFDTCxJQUFJLEVBQUUsTUFBTSxDQUFDLFNBQVM7UUFDdEIsTUFBTSxFQUFFLFNBQVM7UUFDakIsR0FBRyxNQUFNO0tBQ1YsQ0FBQztBQUNKLENBQUM7QUFZRCxNQUFNLFVBQVUscUJBQXFCLENBQUMsR0FBc0I7SUFDMUQsT0FBTztRQUNMLElBQUksRUFBRSxNQUFNLENBQUMsYUFBYTtRQUMxQixHQUFHO1FBQ0gsR0FBRyxNQUFNO0tBQ1YsQ0FBQztBQUNKLENBQUM7QUF1QkQsTUFBTSxVQUFVLGtCQUFrQixDQUM5QixJQUFZLEVBQUUsUUFBZ0IsRUFBRSxlQUE4QyxFQUM5RSxVQUEyQjtJQUM3QixPQUFPO1FBQ0wsSUFBSSxFQUFFLE1BQU0sQ0FBQyxVQUFVO1FBQ3ZCLElBQUk7UUFDSixNQUFNLEVBQUUsSUFBSSxVQUFVLEVBQUU7UUFDeEIsUUFBUTtRQUNSLGVBQWU7UUFDZixtQkFBbUIsRUFBRSxDQUFDO1FBQ3RCLFVBQVUsRUFBRSxJQUFJO1FBQ2hCLFNBQVMsRUFBRSxFQUFFO1FBQ2IsVUFBVTtRQUNWLEdBQUcsTUFBTTtRQUNULEdBQUcsbUJBQW1CO0tBQ3ZCLENBQUM7QUFDSixDQUFDO0FBb0REOztHQUVHO0FBQ0gsTUFBTSxVQUFVLDBCQUEwQixDQUN0QyxNQUFjLEVBQUUsV0FBd0IsRUFBRSxTQUFzQixFQUFFLElBQVksRUFDOUUsVUFBNkIsRUFBRSxXQUF3QixFQUFFLFdBQThCLEVBQ3ZGLGVBQWtEO0lBQ3BELE9BQU87UUFDTCxJQUFJLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtRQUMvQixNQUFNO1FBQ04sV0FBVztRQUNYLFNBQVM7UUFDVCxJQUFJO1FBQ0osVUFBVTtRQUNWLFdBQVc7UUFDWCxXQUFXO1FBQ1gsZUFBZTtRQUNmLGNBQWMsRUFBRSxJQUFJO1FBQ3BCLEdBQUcsTUFBTTtLQUNWLENBQUM7QUFDSixDQUFDO0FBNkRELE1BQU0sVUFBVSxhQUFhLENBQ3pCLElBQVksRUFBRSxJQUFZLEVBQUUsUUFBb0IsRUFBRSxhQUF1QyxFQUN6RixVQUE2QixFQUFFLFVBQTJCO0lBQzVELE9BQU87UUFDTCxJQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUs7UUFDbEIsSUFBSTtRQUNKLE1BQU0sRUFBRSxJQUFJLFVBQVUsRUFBRTtRQUN4QixRQUFRLEVBQUUsSUFBSTtRQUNkLFFBQVE7UUFDUixXQUFXLEVBQUUsSUFBSTtRQUNqQixXQUFXLEVBQUUsSUFBSTtRQUNqQixhQUFhLEVBQUUsSUFBSTtRQUNuQixrQkFBa0IsRUFBRSxJQUFJO1FBQ3hCLGdCQUFnQixFQUFFLElBQUk7UUFDdEIsZUFBZSxFQUFFLElBQUk7UUFDckIsZUFBZSxFQUFFLElBQUk7UUFDckIsaUJBQWlCLEVBQUUsSUFBSTtRQUN2QixzQkFBc0IsRUFBRSxJQUFJO1FBQzVCLFNBQVMsRUFBRSxJQUFJO1FBQ2YsU0FBUyxFQUFFLElBQUk7UUFDZixhQUFhO1FBQ2IsVUFBVTtRQUNWLFVBQVU7UUFDVixHQUFHLE1BQU07UUFDVCxHQUFHLG1CQUFtQjtRQUN0QixZQUFZLEVBQUUsQ0FBQztLQUNoQixDQUFDO0FBQ0osQ0FBQztBQTZFRCxNQUFNLFVBQVUsZUFBZSxDQUMzQixLQUFhLEVBQUUsT0FBcUIsRUFBRSxRQUFpQixFQUN2RCxVQUEyQjtJQUM3QixPQUFPO1FBQ0wsSUFBSSxFQUFFLE1BQU0sQ0FBQyxPQUFPO1FBQ3BCLEtBQUs7UUFDTCxPQUFPO1FBQ1AsUUFBUTtRQUNSLFVBQVU7UUFDVixHQUFHLE1BQU07S0FDVixDQUFDO0FBQ0osQ0FBQztBQWlGRDs7R0FFRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FDL0IsSUFBWSxFQUFFLFdBQW1CLEVBQUUsU0FBc0IsRUFBRSxPQUFxQixFQUNoRixrQkFBK0IsRUFBRSxNQUFpQyxFQUNsRSxvQkFBK0MsRUFBRSxtQkFBNEI7SUFDL0UsT0FBTztRQUNMLElBQUksRUFBRSxNQUFNLENBQUMsV0FBVztRQUN4QixJQUFJO1FBQ0osV0FBVztRQUNYLFNBQVM7UUFDVCxPQUFPO1FBQ1Asa0JBQWtCO1FBQ2xCLE1BQU07UUFDTixvQkFBb0I7UUFDcEIsbUJBQW1CO1FBQ25CLFdBQVcsRUFBRSxFQUFFO1FBQ2YsR0FBRyxNQUFNO0tBQ1YsQ0FBQztBQUNKLENBQUM7QUFxREQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQzdCLElBQVksRUFBRSxPQUFxQixFQUFFLElBQXNCLEVBQzNELFVBQWdDO0lBQ2xDLE9BQU87UUFDTCxJQUFJLEVBQUUsTUFBTSxDQUFDLFNBQVM7UUFDdEIsSUFBSTtRQUNKLE1BQU0sRUFBRSxJQUFJLFVBQVUsRUFBRTtRQUN4QixJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUk7UUFDbEIsT0FBTztRQUNQLFlBQVksRUFBRSxJQUFJO1FBQ2xCLGdCQUFnQixFQUFFLElBQUk7UUFDdEIsT0FBTyxFQUFFLElBQUk7UUFDYixVQUFVO1FBQ1YsR0FBRyxNQUFNO1FBQ1QsR0FBRyxtQkFBbUI7S0FDdkIsQ0FBQztBQUNKLENBQUM7QUFnQkQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLElBQVksRUFBRSxVQUFnQztJQUM1RSxPQUFPO1FBQ0wsSUFBSSxFQUFFLE1BQU0sQ0FBQyxPQUFPO1FBQ3BCLElBQUk7UUFDSixVQUFVO1FBQ1YsR0FBRyxNQUFNO0tBQ1YsQ0FBQztBQUNKLENBQUM7QUErQkQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQzVCLElBQVksRUFBRSxPQUFxQixFQUFFLGtCQUEwQixFQUMvRCxVQUEyQjtJQUM3QixPQUFPO1FBQ0wsSUFBSSxFQUFFLE1BQU0sQ0FBQyxRQUFRO1FBQ3JCLElBQUk7UUFDSixPQUFPO1FBQ1Asa0JBQWtCO1FBQ2xCLE9BQU8sRUFBRSxJQUFJO1FBQ2IsVUFBVTtRQUNWLEdBQUcsTUFBTTtLQUNWLENBQUM7QUFDSixDQUFDO0FBY0Q7O0dBRUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLElBQVk7SUFDekMsT0FBTztRQUNMLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTTtRQUNuQixJQUFJO1FBQ0osR0FBRyxNQUFNO0tBQ1YsQ0FBQztBQUNKLENBQUM7QUFnQ0Q7O0dBRUc7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQ2xDLElBQVksRUFBRSxJQUFZLEVBQUUsT0FBaUI7SUFDL0MsT0FBTztRQUNMLElBQUksRUFBRSxNQUFNLENBQUMsY0FBYztRQUMzQixJQUFJO1FBQ0osSUFBSTtRQUNKLE9BQU87UUFDUCxzQkFBc0IsRUFBRSxFQUFFO1FBQzFCLEdBQUcsTUFBTTtLQUNWLENBQUM7QUFDSixDQUFDO0FBd0RELE1BQU0sVUFBVSxtQkFBbUIsQ0FDL0IsV0FBNEIsRUFBRSxJQUFZLEVBQUUsU0FBc0IsRUFBRSxPQUFxQixFQUN6RixVQUEyQjtJQUM3QixJQUFJLFNBQVMsS0FBSyxJQUFJLElBQUksV0FBVyxLQUFLLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMvRCxNQUFNLElBQUksS0FBSyxDQUFDLHdFQUF3RSxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLEVBQUUsTUFBTSxDQUFDLFdBQVc7UUFDeEIsV0FBVztRQUNYLElBQUk7UUFDSixTQUFTO1FBQ1QsT0FBTztRQUNQLFVBQVU7UUFDVixNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUU7UUFDakIsb0JBQW9CLEVBQUUsSUFBSSxHQUFHLEVBQUU7UUFDL0IsR0FBRyxNQUFNO0tBQ1YsQ0FBQztBQUNKLENBQUM7QUFnQkQsTUFBTSxVQUFVLHNCQUFzQixDQUNsQyxJQUFZLEVBQUUsTUFBa0IsRUFBRSxNQUFjO0lBQ2xELE9BQU87UUFDTCxJQUFJLEVBQUUsTUFBTSxDQUFDLGNBQWM7UUFDM0IsSUFBSTtRQUNKLE1BQU07UUFDTixNQUFNO1FBQ04sb0JBQW9CLEVBQUUsSUFBSTtRQUMxQixHQUFHLE1BQU07UUFDVCxHQUFHLG1CQUFtQjtLQUN2QixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1NlY3VyaXR5Q29udGV4dH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29yZSc7XG5pbXBvcnQgKiBhcyBpMThuIGZyb20gJy4uLy4uLy4uLy4uLy4uL2kxOG4vaTE4bl9hc3QnO1xuaW1wb3J0ICogYXMgbyBmcm9tICcuLi8uLi8uLi8uLi8uLi9vdXRwdXQvb3V0cHV0X2FzdCc7XG5pbXBvcnQge1BhcnNlU291cmNlU3Bhbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vcGFyc2VfdXRpbCc7XG5pbXBvcnQge0JpbmRpbmdLaW5kLCBEZWZlclRyaWdnZXJLaW5kLCBJMThuQ29udGV4dEtpbmQsIEkxOG5QYXJhbVZhbHVlRmxhZ3MsIE5hbWVzcGFjZSwgT3BLaW5kLCBUZW1wbGF0ZUtpbmR9IGZyb20gJy4uL2VudW1zJztcbmltcG9ydCB7U2xvdEhhbmRsZX0gZnJvbSAnLi4vaGFuZGxlJztcbmltcG9ydCB7T3AsIE9wTGlzdCwgWHJlZklkfSBmcm9tICcuLi9vcGVyYXRpb25zJztcbmltcG9ydCB7Q29uc3VtZXNTbG90T3BUcmFpdCwgQ29uc3VtZXNWYXJzVHJhaXQsIFRSQUlUX0NPTlNVTUVTX1NMT1QsIFRSQUlUX0NPTlNVTUVTX1ZBUlN9IGZyb20gJy4uL3RyYWl0cyc7XG5cbmltcG9ydCB7TGlzdEVuZE9wLCBORVdfT1AsIFN0YXRlbWVudE9wLCBWYXJpYWJsZU9wfSBmcm9tICcuL3NoYXJlZCc7XG5cbmltcG9ydCB0eXBlIHtVcGRhdGVPcH0gZnJvbSAnLi91cGRhdGUnO1xuXG4vKipcbiAqIEFuIG9wZXJhdGlvbiB1c2FibGUgb24gdGhlIGNyZWF0aW9uIHNpZGUgb2YgdGhlIElSLlxuICovXG5leHBvcnQgdHlwZSBDcmVhdGVPcCA9XG4gICAgTGlzdEVuZE9wPENyZWF0ZU9wPnxTdGF0ZW1lbnRPcDxDcmVhdGVPcD58RWxlbWVudE9wfEVsZW1lbnRTdGFydE9wfEVsZW1lbnRFbmRPcHxDb250YWluZXJPcHxcbiAgICBDb250YWluZXJTdGFydE9wfENvbnRhaW5lckVuZE9wfFRlbXBsYXRlT3B8RW5hYmxlQmluZGluZ3NPcHxEaXNhYmxlQmluZGluZ3NPcHxUZXh0T3B8TGlzdGVuZXJPcHxcbiAgICBUd29XYXlMaXN0ZW5lck9wfFBpcGVPcHxWYXJpYWJsZU9wPENyZWF0ZU9wPnxOYW1lc3BhY2VPcHxQcm9qZWN0aW9uRGVmT3B8UHJvamVjdGlvbk9wfFxuICAgIEV4dHJhY3RlZEF0dHJpYnV0ZU9wfERlZmVyT3B8RGVmZXJPbk9wfFJlcGVhdGVyQ3JlYXRlT3B8STE4bk1lc3NhZ2VPcHxJMThuT3B8STE4blN0YXJ0T3B8XG4gICAgSTE4bkVuZE9wfEljdVN0YXJ0T3B8SWN1RW5kT3B8SWN1UGxhY2Vob2xkZXJPcHxJMThuQ29udGV4dE9wfEkxOG5BdHRyaWJ1dGVzT3A7XG5cbi8qKlxuICogQW4gb3BlcmF0aW9uIHJlcHJlc2VudGluZyB0aGUgY3JlYXRpb24gb2YgYW4gZWxlbWVudCBvciBjb250YWluZXIuXG4gKi9cbmV4cG9ydCB0eXBlIEVsZW1lbnRPckNvbnRhaW5lck9wcyA9XG4gICAgRWxlbWVudE9wfEVsZW1lbnRTdGFydE9wfENvbnRhaW5lck9wfENvbnRhaW5lclN0YXJ0T3B8VGVtcGxhdGVPcHxSZXBlYXRlckNyZWF0ZU9wO1xuXG4vKipcbiAqIFRoZSBzZXQgb2YgT3BLaW5kcyB0aGF0IHJlcHJlc2VudCB0aGUgY3JlYXRpb24gb2YgYW4gZWxlbWVudCBvciBjb250YWluZXJcbiAqL1xuY29uc3QgZWxlbWVudENvbnRhaW5lck9wS2luZHMgPSBuZXcgU2V0KFtcbiAgT3BLaW5kLkVsZW1lbnQsIE9wS2luZC5FbGVtZW50U3RhcnQsIE9wS2luZC5Db250YWluZXIsIE9wS2luZC5Db250YWluZXJTdGFydCwgT3BLaW5kLlRlbXBsYXRlLFxuICBPcEtpbmQuUmVwZWF0ZXJDcmVhdGVcbl0pO1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBvcGVyYXRpb24gcmVwcmVzZW50cyB0aGUgY3JlYXRpb24gb2YgYW4gZWxlbWVudCBvciBjb250YWluZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0VsZW1lbnRPckNvbnRhaW5lck9wKG9wOiBDcmVhdGVPcCk6IG9wIGlzIEVsZW1lbnRPckNvbnRhaW5lck9wcyB7XG4gIHJldHVybiBlbGVtZW50Q29udGFpbmVyT3BLaW5kcy5oYXMob3Aua2luZCk7XG59XG5cbi8qKlxuICogUmVwcmVzZW50YXRpb24gb2YgYSBsb2NhbCByZWZlcmVuY2Ugb24gYW4gZWxlbWVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2NhbFJlZiB7XG4gIC8qKlxuICAgKiBVc2VyLWRlZmluZWQgbmFtZSBvZiB0aGUgbG9jYWwgcmVmIHZhcmlhYmxlLlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUYXJnZXQgb2YgdGhlIGxvY2FsIHJlZmVyZW5jZSB2YXJpYWJsZSAob2Z0ZW4gYCcnYCkuXG4gICAqL1xuICB0YXJnZXQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBCYXNlIGludGVyZmFjZSBmb3IgYEVsZW1lbnRgLCBgRWxlbWVudFN0YXJ0YCwgYW5kIGBUZW1wbGF0ZWAgb3BlcmF0aW9ucywgY29udGFpbmluZyBjb21tb24gZmllbGRzXG4gKiB1c2VkIHRvIHJlcHJlc2VudCB0aGVpciBlbGVtZW50LWxpa2UgbmF0dXJlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVsZW1lbnRPckNvbnRhaW5lck9wQmFzZSBleHRlbmRzIE9wPENyZWF0ZU9wPiwgQ29uc3VtZXNTbG90T3BUcmFpdCB7XG4gIGtpbmQ6IEVsZW1lbnRPckNvbnRhaW5lck9wc1sna2luZCddO1xuXG4gIC8qKlxuICAgKiBgWHJlZklkYCBhbGxvY2F0ZWQgZm9yIHRoaXMgZWxlbWVudC5cbiAgICpcbiAgICogVGhpcyBJRCBpcyB1c2VkIHRvIHJlZmVyZW5jZSB0aGlzIGVsZW1lbnQgZnJvbSBvdGhlciBJUiBzdHJ1Y3R1cmVzLlxuICAgKi9cbiAgeHJlZjogWHJlZklkO1xuXG4gIC8qKlxuICAgKiBBdHRyaWJ1dGVzIG9mIHZhcmlvdXMga2luZHMgb24gdGhpcyBlbGVtZW50LiBSZXByZXNlbnRlZCBhcyBhIGBDb25zdEluZGV4YCBwb2ludGVyIGludG8gdGhlXG4gICAqIHNoYXJlZCBgY29uc3RzYCBhcnJheSBvZiB0aGUgY29tcG9uZW50IGNvbXBpbGF0aW9uLlxuICAgKi9cbiAgYXR0cmlidXRlczogQ29uc3RJbmRleHxudWxsO1xuXG4gIC8qKlxuICAgKiBMb2NhbCByZWZlcmVuY2VzIHRvIHRoaXMgZWxlbWVudC5cbiAgICpcbiAgICogQmVmb3JlIGxvY2FsIHJlZiBwcm9jZXNzaW5nLCB0aGlzIGlzIGFuIGFycmF5IG9mIGBMb2NhbFJlZmAgZGVjbGFyYXRpb25zLlxuICAgKlxuICAgKiBBZnRlciBwcm9jZXNzaW5nLCBpdCdzIGEgYENvbnN0SW5kZXhgIHBvaW50ZXIgaW50byB0aGUgc2hhcmVkIGBjb25zdHNgIGFycmF5IG9mIHRoZSBjb21wb25lbnRcbiAgICogY29tcGlsYXRpb24uXG4gICAqL1xuICBsb2NhbFJlZnM6IExvY2FsUmVmW118Q29uc3RJbmRleHxudWxsO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgY29udGFpbmVyIGlzIG1hcmtlZCBgbmdOb25CaW5kYWJsZWAsIHdoaWNoIGRpc2FibGVkIEFuZ3VsYXIgYmluZGluZyBmb3IgaXRzZWxmIGFuZFxuICAgKiBhbGwgZGVzY2VuZGFudHMuXG4gICAqL1xuICBub25CaW5kYWJsZTogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHNwYW4gb2YgdGhlIGVsZW1lbnQncyBzdGFydCB0YWcuXG4gICAqL1xuICBzdGFydFNvdXJjZVNwYW46IFBhcnNlU291cmNlU3BhbjtcblxuICAvKipcbiAgICogVGhlIHdob2xlIHNvdXJjZSBzcGFuIG9mIHRoZSBlbGVtZW50LCBpbmNsdWRpbmcgY2hpbGRyZW4uXG4gICAqL1xuICB3aG9sZVNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbGVtZW50T3BCYXNlIGV4dGVuZHMgRWxlbWVudE9yQ29udGFpbmVyT3BCYXNlIHtcbiAga2luZDogT3BLaW5kLkVsZW1lbnR8T3BLaW5kLkVsZW1lbnRTdGFydHxPcEtpbmQuVGVtcGxhdGV8T3BLaW5kLlJlcGVhdGVyQ3JlYXRlO1xuXG4gIC8qKlxuICAgKiBUaGUgSFRNTCB0YWcgbmFtZSBmb3IgdGhpcyBlbGVtZW50LlxuICAgKi9cbiAgdGFnOiBzdHJpbmd8bnVsbDtcblxuICAvKipcbiAgICogVGhlIG5hbWVzcGFjZSBvZiB0aGlzIGVsZW1lbnQsIHdoaWNoIGNvbnRyb2xzIHRoZSBwcmVjZWRpbmcgbmFtZXNwYWNlIGluc3RydWN0aW9uLlxuICAgKi9cbiAgbmFtZXNwYWNlOiBOYW1lc3BhY2U7XG59XG5cbi8qKlxuICogTG9naWNhbCBvcGVyYXRpb24gcmVwcmVzZW50aW5nIHRoZSBzdGFydCBvZiBhbiBlbGVtZW50IGluIHRoZSBjcmVhdGlvbiBJUi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbGVtZW50U3RhcnRPcCBleHRlbmRzIEVsZW1lbnRPcEJhc2Uge1xuICBraW5kOiBPcEtpbmQuRWxlbWVudFN0YXJ0O1xuXG4gIC8qKlxuICAgKiBUaGUgaTE4biBwbGFjZWhvbGRlciBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGVsZW1lbnQuXG4gICAqL1xuICBpMThuUGxhY2Vob2xkZXI/OiBpMThuLlRhZ1BsYWNlaG9sZGVyO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhbiBgRWxlbWVudFN0YXJ0T3BgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRWxlbWVudFN0YXJ0T3AoXG4gICAgdGFnOiBzdHJpbmcsIHhyZWY6IFhyZWZJZCwgbmFtZXNwYWNlOiBOYW1lc3BhY2UsIGkxOG5QbGFjZWhvbGRlcjogaTE4bi5UYWdQbGFjZWhvbGRlcnx1bmRlZmluZWQsXG4gICAgc3RhcnRTb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4sIHdob2xlU291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKTogRWxlbWVudFN0YXJ0T3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5FbGVtZW50U3RhcnQsXG4gICAgeHJlZixcbiAgICB0YWcsXG4gICAgaGFuZGxlOiBuZXcgU2xvdEhhbmRsZSgpLFxuICAgIGF0dHJpYnV0ZXM6IG51bGwsXG4gICAgbG9jYWxSZWZzOiBbXSxcbiAgICBub25CaW5kYWJsZTogZmFsc2UsXG4gICAgbmFtZXNwYWNlLFxuICAgIGkxOG5QbGFjZWhvbGRlcixcbiAgICBzdGFydFNvdXJjZVNwYW4sXG4gICAgd2hvbGVTb3VyY2VTcGFuLFxuICAgIC4uLlRSQUlUX0NPTlNVTUVTX1NMT1QsXG4gICAgLi4uTkVXX09QLFxuICB9O1xufVxuXG4vKipcbiAqIExvZ2ljYWwgb3BlcmF0aW9uIHJlcHJlc2VudGluZyBhbiBlbGVtZW50IHdpdGggbm8gY2hpbGRyZW4gaW4gdGhlIGNyZWF0aW9uIElSLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVsZW1lbnRPcCBleHRlbmRzIEVsZW1lbnRPcEJhc2Uge1xuICBraW5kOiBPcEtpbmQuRWxlbWVudDtcblxuICAvKipcbiAgICogVGhlIGkxOG4gcGxhY2Vob2xkZXIgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhpcyBlbGVtZW50LlxuICAgKi9cbiAgaTE4blBsYWNlaG9sZGVyPzogaTE4bi5UYWdQbGFjZWhvbGRlcjtcbn1cblxuLyoqXG4gKiBMb2dpY2FsIG9wZXJhdGlvbiByZXByZXNlbnRpbmcgYW4gZW1iZWRkZWQgdmlldyBkZWNsYXJhdGlvbiBpbiB0aGUgY3JlYXRpb24gSVIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGVtcGxhdGVPcCBleHRlbmRzIEVsZW1lbnRPcEJhc2Uge1xuICBraW5kOiBPcEtpbmQuVGVtcGxhdGU7XG5cbiAgdGVtcGxhdGVLaW5kOiBUZW1wbGF0ZUtpbmQ7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgZGVjbGFyYXRpb24gc2xvdHMgdXNlZCBieSB0aGlzIHRlbXBsYXRlLCBvciBgbnVsbGAgaWYgc2xvdHMgaGF2ZSBub3QgeWV0IGJlZW5cbiAgICogYXNzaWduZWQuXG4gICAqL1xuICBkZWNsczogbnVtYmVyfG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgYmluZGluZyB2YXJpYWJsZSBzbG90cyB1c2VkIGJ5IHRoaXMgdGVtcGxhdGUsIG9yIGBudWxsYCBpZiBiaW5kaW5nIHZhcmlhYmxlcyBoYXZlXG4gICAqIG5vdCB5ZXQgYmVlbiBjb3VudGVkLlxuICAgKi9cbiAgdmFyczogbnVtYmVyfG51bGw7XG5cbiAgLyoqXG4gICAqIFN1ZmZpeCB0byBhZGQgdG8gdGhlIG5hbWUgb2YgdGhlIGdlbmVyYXRlZCB0ZW1wbGF0ZSBmdW5jdGlvbi5cbiAgICovXG4gIGZ1bmN0aW9uTmFtZVN1ZmZpeDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaTE4biBwbGFjZWhvbGRlciBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRlbXBsYXRlLlxuICAgKi9cbiAgaTE4blBsYWNlaG9sZGVyPzogaTE4bi5UYWdQbGFjZWhvbGRlcnxpMThuLkJsb2NrUGxhY2Vob2xkZXI7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgYFRlbXBsYXRlT3BgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGVtcGxhdGVPcChcbiAgICB4cmVmOiBYcmVmSWQsIHRlbXBsYXRlS2luZDogVGVtcGxhdGVLaW5kLCB0YWc6IHN0cmluZ3xudWxsLCBmdW5jdGlvbk5hbWVTdWZmaXg6IHN0cmluZyxcbiAgICBuYW1lc3BhY2U6IE5hbWVzcGFjZSwgaTE4blBsYWNlaG9sZGVyOiBpMThuLlRhZ1BsYWNlaG9sZGVyfGkxOG4uQmxvY2tQbGFjZWhvbGRlcnx1bmRlZmluZWQsXG4gICAgc3RhcnRTb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4sIHdob2xlU291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKTogVGVtcGxhdGVPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLlRlbXBsYXRlLFxuICAgIHhyZWYsXG4gICAgdGVtcGxhdGVLaW5kLFxuICAgIGF0dHJpYnV0ZXM6IG51bGwsXG4gICAgdGFnLFxuICAgIGhhbmRsZTogbmV3IFNsb3RIYW5kbGUoKSxcbiAgICBmdW5jdGlvbk5hbWVTdWZmaXgsXG4gICAgZGVjbHM6IG51bGwsXG4gICAgdmFyczogbnVsbCxcbiAgICBsb2NhbFJlZnM6IFtdLFxuICAgIG5vbkJpbmRhYmxlOiBmYWxzZSxcbiAgICBuYW1lc3BhY2UsXG4gICAgaTE4blBsYWNlaG9sZGVyLFxuICAgIHN0YXJ0U291cmNlU3BhbixcbiAgICB3aG9sZVNvdXJjZVNwYW4sXG4gICAgLi4uVFJBSVRfQ09OU1VNRVNfU0xPVCxcbiAgICAuLi5ORVdfT1AsXG4gIH07XG59XG5cbi8qKlxuICogQW4gb3AgdGhhdCBjcmVhdGVzIGEgcmVwZWF0ZXIgKGUuZy4gYSBmb3IgbG9vcCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwZWF0ZXJDcmVhdGVPcCBleHRlbmRzIEVsZW1lbnRPcEJhc2UsIENvbnN1bWVzVmFyc1RyYWl0IHtcbiAga2luZDogT3BLaW5kLlJlcGVhdGVyQ3JlYXRlO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGRlY2xhcmF0aW9uIHNsb3RzIHVzZWQgYnkgdGhpcyByZXBlYXRlcidzIHRlbXBsYXRlLCBvciBgbnVsbGAgaWYgc2xvdHMgaGF2ZSBub3RcbiAgICogeWV0IGJlZW4gYXNzaWduZWQuXG4gICAqL1xuICBkZWNsczogbnVtYmVyfG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgYmluZGluZyB2YXJpYWJsZSBzbG90cyB1c2VkIGJ5IHRoaXMgcmVwZWF0ZXIncywgb3IgYG51bGxgIGlmIGJpbmRpbmcgdmFyaWFibGVzXG4gICAqIGhhdmUgbm90IHlldCBiZWVuIGNvdW50ZWQuXG4gICAqL1xuICB2YXJzOiBudW1iZXJ8bnVsbDtcblxuICAvKipcbiAgICogVGhlIFhyZWYgb2YgdGhlIGVtcHR5IHZpZXcgZnVuY3Rpb24uIChGb3IgdGhlIHByaW1hcnkgdmlldyBmdW5jdGlvbiwgdXNlIHRoZSBgeHJlZmAgcHJvcGVydHkpLlxuICAgKi9cbiAgZW1wdHlWaWV3OiBYcmVmSWR8bnVsbDtcblxuICAvKipcbiAgICogVGhlIHRyYWNrIGV4cHJlc3Npb24gdG8gdXNlIHdoaWxlIGl0ZXJhdGluZy5cbiAgICovXG4gIHRyYWNrOiBvLkV4cHJlc3Npb247XG5cbiAgLyoqXG4gICAqIGBudWxsYCBpbml0aWFsbHksIHRoZW4gYW4gYG8uRXhwcmVzc2lvbmAuIE1pZ2h0IGJlIGEgdHJhY2sgZXhwcmVzc2lvbiwgb3IgbWlnaHQgYmUgYSByZWZlcmVuY2VcbiAgICogaW50byB0aGUgY29uc3RhbnQgcG9vbC5cbiAgICovXG4gIHRyYWNrQnlGbjogby5FeHByZXNzaW9ufG51bGw7XG5cbiAgLyoqXG4gICAqIENvbnRleHQgdmFyaWFibGVzIGF2YWlhbGFibGUgaW4gdGhpcyBibG9jay5cbiAgICovXG4gIHZhck5hbWVzOiBSZXBlYXRlclZhck5hbWVzO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSByZXBlYXRlciB0cmFjayBmdW5jdGlvbiByZWxpZXMgb24gdGhlIGNvbXBvbmVudCBpbnN0YW5jZS5cbiAgICovXG4gIHVzZXNDb21wb25lbnRJbnN0YW5jZTogYm9vbGVhbjtcblxuICAvKipcbiAgICogU3VmZml4IHRvIGFkZCB0byB0aGUgbmFtZSBvZiB0aGUgZ2VuZXJhdGVkIHRlbXBsYXRlIGZ1bmN0aW9uLlxuICAgKi9cbiAgZnVuY3Rpb25OYW1lU3VmZml4OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRhZyBuYW1lIGZvciB0aGUgZW1wdHkgYmxvY2suXG4gICAqL1xuICBlbXB0eVRhZzogc3RyaW5nfG51bGw7XG5cbiAgLyoqXG4gICAqIEF0dHJpYnV0ZXMgb2YgdmFyaW91cyBraW5kcyBvbiB0aGUgZW1wdHkgYmxvY2suIFJlcHJlc2VudGVkIGFzIGEgYENvbnN0SW5kZXhgIHBvaW50ZXIgaW50byB0aGVcbiAgICogc2hhcmVkIGBjb25zdHNgIGFycmF5IG9mIHRoZSBjb21wb25lbnQgY29tcGlsYXRpb24uXG4gICAqL1xuICBlbXB0eUF0dHJpYnV0ZXM6IENvbnN0SW5kZXh8bnVsbDtcblxuICAvKipcbiAgICogVGhlIGkxOG4gcGxhY2Vob2xkZXIgZm9yIHRoZSByZXBlYXRlZCBpdGVtIHRlbXBsYXRlLlxuICAgKi9cbiAgaTE4blBsYWNlaG9sZGVyOiBpMThuLkJsb2NrUGxhY2Vob2xkZXJ8dW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgaTE4biBwbGFjZWhvbGRlciBmb3IgdGhlIGVtcHR5IHRlbXBsYXRlLlxuICAgKi9cbiAgZW1wdHlJMThuUGxhY2Vob2xkZXI6IGkxOG4uQmxvY2tQbGFjZWhvbGRlcnx1bmRlZmluZWQ7XG59XG5cbi8vIFRPRE86IGFkZCBzb3VyY2Ugc3BhbnM/XG5leHBvcnQgaW50ZXJmYWNlIFJlcGVhdGVyVmFyTmFtZXMge1xuICAkaW5kZXg6IHN0cmluZztcbiAgJGNvdW50OiBzdHJpbmc7XG4gICRmaXJzdDogc3RyaW5nO1xuICAkbGFzdDogc3RyaW5nO1xuICAkZXZlbjogc3RyaW5nO1xuICAkb2RkOiBzdHJpbmc7XG4gICRpbXBsaWNpdDogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVwZWF0ZXJDcmVhdGVPcChcbiAgICBwcmltYXJ5VmlldzogWHJlZklkLCBlbXB0eVZpZXc6IFhyZWZJZHxudWxsLCB0YWc6IHN0cmluZ3xudWxsLCB0cmFjazogby5FeHByZXNzaW9uLFxuICAgIHZhck5hbWVzOiBSZXBlYXRlclZhck5hbWVzLCBlbXB0eVRhZzogc3RyaW5nfG51bGwsXG4gICAgaTE4blBsYWNlaG9sZGVyOiBpMThuLkJsb2NrUGxhY2Vob2xkZXJ8dW5kZWZpbmVkLFxuICAgIGVtcHR5STE4blBsYWNlaG9sZGVyOiBpMThuLkJsb2NrUGxhY2Vob2xkZXJ8dW5kZWZpbmVkLCBzdGFydFNvdXJjZVNwYW46IFBhcnNlU291cmNlU3BhbixcbiAgICB3aG9sZVNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbik6IFJlcGVhdGVyQ3JlYXRlT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5SZXBlYXRlckNyZWF0ZSxcbiAgICBhdHRyaWJ1dGVzOiBudWxsLFxuICAgIHhyZWY6IHByaW1hcnlWaWV3LFxuICAgIGhhbmRsZTogbmV3IFNsb3RIYW5kbGUoKSxcbiAgICBlbXB0eVZpZXcsXG4gICAgdHJhY2ssXG4gICAgdHJhY2tCeUZuOiBudWxsLFxuICAgIHRhZyxcbiAgICBlbXB0eVRhZyxcbiAgICBlbXB0eUF0dHJpYnV0ZXM6IG51bGwsXG4gICAgZnVuY3Rpb25OYW1lU3VmZml4OiAnRm9yJyxcbiAgICBuYW1lc3BhY2U6IE5hbWVzcGFjZS5IVE1MLFxuICAgIG5vbkJpbmRhYmxlOiBmYWxzZSxcbiAgICBsb2NhbFJlZnM6IFtdLFxuICAgIGRlY2xzOiBudWxsLFxuICAgIHZhcnM6IG51bGwsXG4gICAgdmFyTmFtZXMsXG4gICAgdXNlc0NvbXBvbmVudEluc3RhbmNlOiBmYWxzZSxcbiAgICBpMThuUGxhY2Vob2xkZXIsXG4gICAgZW1wdHlJMThuUGxhY2Vob2xkZXIsXG4gICAgc3RhcnRTb3VyY2VTcGFuLFxuICAgIHdob2xlU291cmNlU3BhbixcbiAgICAuLi5UUkFJVF9DT05TVU1FU19TTE9ULFxuICAgIC4uLk5FV19PUCxcbiAgICAuLi5UUkFJVF9DT05TVU1FU19WQVJTLFxuICAgIG51bVNsb3RzVXNlZDogZW1wdHlWaWV3ID09PSBudWxsID8gMiA6IDMsXG4gIH07XG59XG5cbi8qKlxuICogTG9naWNhbCBvcGVyYXRpb24gcmVwcmVzZW50aW5nIHRoZSBlbmQgb2YgYW4gZWxlbWVudCBzdHJ1Y3R1cmUgaW4gdGhlIGNyZWF0aW9uIElSLlxuICpcbiAqIFBhaXJzIHdpdGggYW4gYEVsZW1lbnRTdGFydGAgb3BlcmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVsZW1lbnRFbmRPcCBleHRlbmRzIE9wPENyZWF0ZU9wPiB7XG4gIGtpbmQ6IE9wS2luZC5FbGVtZW50RW5kO1xuXG4gIC8qKlxuICAgKiBUaGUgYFhyZWZJZGAgb2YgdGhlIGVsZW1lbnQgZGVjbGFyZWQgdmlhIGBFbGVtZW50U3RhcnRgLlxuICAgKi9cbiAgeHJlZjogWHJlZklkO1xuXG4gIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3BhbnxudWxsO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhbiBgRWxlbWVudEVuZE9wYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnRFbmRPcCh4cmVmOiBYcmVmSWQsIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3BhbnxudWxsKTogRWxlbWVudEVuZE9wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuRWxlbWVudEVuZCxcbiAgICB4cmVmLFxuICAgIHNvdXJjZVNwYW4sXG4gICAgLi4uTkVXX09QLFxuICB9O1xufVxuXG4vKipcbiAqIExvZ2ljYWwgb3BlcmF0aW9uIHJlcHJlc2VudGluZyB0aGUgc3RhcnQgb2YgYSBjb250YWluZXIgaW4gdGhlIGNyZWF0aW9uIElSLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhaW5lclN0YXJ0T3AgZXh0ZW5kcyBFbGVtZW50T3JDb250YWluZXJPcEJhc2Uge1xuICBraW5kOiBPcEtpbmQuQ29udGFpbmVyU3RhcnQ7XG59XG5cbi8qKlxuICogTG9naWNhbCBvcGVyYXRpb24gcmVwcmVzZW50aW5nIGFuIGVtcHR5IGNvbnRhaW5lciBpbiB0aGUgY3JlYXRpb24gSVIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFpbmVyT3AgZXh0ZW5kcyBFbGVtZW50T3JDb250YWluZXJPcEJhc2Uge1xuICBraW5kOiBPcEtpbmQuQ29udGFpbmVyO1xufVxuXG4vKipcbiAqIExvZ2ljYWwgb3BlcmF0aW9uIHJlcHJlc2VudGluZyB0aGUgZW5kIG9mIGEgY29udGFpbmVyIHN0cnVjdHVyZSBpbiB0aGUgY3JlYXRpb24gSVIuXG4gKlxuICogUGFpcnMgd2l0aCBhbiBgQ29udGFpbmVyU3RhcnRgIG9wZXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250YWluZXJFbmRPcCBleHRlbmRzIE9wPENyZWF0ZU9wPiB7XG4gIGtpbmQ6IE9wS2luZC5Db250YWluZXJFbmQ7XG5cbiAgLyoqXG4gICAqIFRoZSBgWHJlZklkYCBvZiB0aGUgZWxlbWVudCBkZWNsYXJlZCB2aWEgYENvbnRhaW5lclN0YXJ0YC5cbiAgICovXG4gIHhyZWY6IFhyZWZJZDtcblxuICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW47XG59XG5cbi8qKlxuICogTG9naWNhbCBvcGVyYXRpb24gY2F1c2luZyBiaW5kaW5nIHRvIGJlIGRpc2FibGVkIGluIGRlc2NlbmRlbnRzIG9mIGEgbm9uLWJpbmRhYmxlIGNvbnRhaW5lci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEaXNhYmxlQmluZGluZ3NPcCBleHRlbmRzIE9wPENyZWF0ZU9wPiB7XG4gIGtpbmQ6IE9wS2luZC5EaXNhYmxlQmluZGluZ3M7XG5cbiAgLyoqXG4gICAqIGBYcmVmSWRgIG9mIHRoZSBlbGVtZW50IHRoYXQgd2FzIG1hcmtlZCBub24tYmluZGFibGUuXG4gICAqL1xuICB4cmVmOiBYcmVmSWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEaXNhYmxlQmluZGluZ3NPcCh4cmVmOiBYcmVmSWQpOiBEaXNhYmxlQmluZGluZ3NPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLkRpc2FibGVCaW5kaW5ncyxcbiAgICB4cmVmLFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cblxuLyoqXG4gKiBMb2dpY2FsIG9wZXJhdGlvbiBjYXVzaW5nIGJpbmRpbmcgdG8gYmUgcmUtZW5hYmxlZCBhZnRlciB2aXNpdGluZyBkZXNjZW5kYW50cyBvZiBhXG4gKiBub24tYmluZGFibGUgY29udGFpbmVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVuYWJsZUJpbmRpbmdzT3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4ge1xuICBraW5kOiBPcEtpbmQuRW5hYmxlQmluZGluZ3M7XG5cbiAgLyoqXG4gICAqIGBYcmVmSWRgIG9mIHRoZSBlbGVtZW50IHRoYXQgd2FzIG1hcmtlZCBub24tYmluZGFibGUuXG4gICAqL1xuICB4cmVmOiBYcmVmSWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFbmFibGVCaW5kaW5nc09wKHhyZWY6IFhyZWZJZCk6IEVuYWJsZUJpbmRpbmdzT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5FbmFibGVCaW5kaW5ncyxcbiAgICB4cmVmLFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cblxuLyoqXG4gKiBMb2dpY2FsIG9wZXJhdGlvbiByZXByZXNlbnRpbmcgYSB0ZXh0IG5vZGUgaW4gdGhlIGNyZWF0aW9uIElSLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRleHRPcCBleHRlbmRzIE9wPENyZWF0ZU9wPiwgQ29uc3VtZXNTbG90T3BUcmFpdCB7XG4gIGtpbmQ6IE9wS2luZC5UZXh0O1xuXG4gIC8qKlxuICAgKiBgWHJlZklkYCB1c2VkIHRvIHJlZmVyZW5jZSB0aGlzIHRleHQgbm9kZSBpbiBvdGhlciBJUiBzdHJ1Y3R1cmVzLlxuICAgKi9cbiAgeHJlZjogWHJlZklkO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhdGljIGluaXRpYWwgdmFsdWUgb2YgdGhlIHRleHQgbm9kZS5cbiAgICovXG4gIGluaXRpYWxWYWx1ZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGxhY2Vob2xkZXIgZm9yIHRoaXMgdGV4dCBpbiBpdHMgcGFyZW50IElDVS4gSWYgdGhpcyB0ZXh0IGlzIG5vdCBwYXJ0IG9mIGFuIElDVSwgdGhlXG4gICAqIHBsYWNlaG9sZGVyIGlzIG51bGwuXG4gICAqL1xuICBpY3VQbGFjZWhvbGRlcjogc3RyaW5nfG51bGw7XG5cbiAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFufG51bGw7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgYFRleHRPcGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUZXh0T3AoXG4gICAgeHJlZjogWHJlZklkLCBpbml0aWFsVmFsdWU6IHN0cmluZywgaWN1UGxhY2Vob2xkZXI6IHN0cmluZ3xudWxsLFxuICAgIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3BhbnxudWxsKTogVGV4dE9wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuVGV4dCxcbiAgICB4cmVmLFxuICAgIGhhbmRsZTogbmV3IFNsb3RIYW5kbGUoKSxcbiAgICBpbml0aWFsVmFsdWUsXG4gICAgaWN1UGxhY2Vob2xkZXIsXG4gICAgc291cmNlU3BhbixcbiAgICAuLi5UUkFJVF9DT05TVU1FU19TTE9ULFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cblxuLyoqXG4gKiBMb2dpY2FsIG9wZXJhdGlvbiByZXByZXNlbnRpbmcgYW4gZXZlbnQgbGlzdGVuZXIgb24gYW4gZWxlbWVudCBpbiB0aGUgY3JlYXRpb24gSVIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdGVuZXJPcCBleHRlbmRzIE9wPENyZWF0ZU9wPiB7XG4gIGtpbmQ6IE9wS2luZC5MaXN0ZW5lcjtcblxuICB0YXJnZXQ6IFhyZWZJZDtcbiAgdGFyZ2V0U2xvdDogU2xvdEhhbmRsZTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGxpc3RlbmVyIGlzIGZyb20gYSBob3N0IGJpbmRpbmcuXG4gICAqL1xuICBob3N0TGlzdGVuZXI6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGV2ZW50IHdoaWNoIGlzIGJlaW5nIGxpc3RlbmVkIHRvLlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUYWcgbmFtZSBvZiB0aGUgZWxlbWVudCBvbiB3aGljaCB0aGlzIGxpc3RlbmVyIGlzIHBsYWNlZC4gTWlnaHQgYmUgbnVsbCwgaWYgdGhpcyBsaXN0ZW5lclxuICAgKiBiZWxvbmdzIHRvIGEgaG9zdCBiaW5kaW5nLlxuICAgKi9cbiAgdGFnOiBzdHJpbmd8bnVsbDtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGBVcGRhdGVPcGBzIHJlcHJlc2VudGluZyB0aGUgYm9keSBvZiB0aGUgZXZlbnQgbGlzdGVuZXIuXG4gICAqL1xuICBoYW5kbGVyT3BzOiBPcExpc3Q8VXBkYXRlT3A+O1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBmdW5jdGlvblxuICAgKi9cbiAgaGFuZGxlckZuTmFtZTogc3RyaW5nfG51bGw7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBsaXN0ZW5lciBpcyBrbm93biB0byBjb25zdW1lIGAkZXZlbnRgIGluIGl0cyBib2R5LlxuICAgKi9cbiAgY29uc3VtZXNEb2xsYXJFdmVudDogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgbGlzdGVuZXIgaXMgbGlzdGVuaW5nIGZvciBhbiBhbmltYXRpb24gZXZlbnQuXG4gICAqL1xuICBpc0FuaW1hdGlvbkxpc3RlbmVyOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgYW5pbWF0aW9uIHBoYXNlIG9mIHRoZSBsaXN0ZW5lci5cbiAgICovXG4gIGFuaW1hdGlvblBoYXNlOiBzdHJpbmd8bnVsbDtcblxuICAvKipcbiAgICogU29tZSBldmVudCBsaXN0ZW5lcnMgY2FuIGhhdmUgYSB0YXJnZXQsIGUuZy4gaW4gYGRvY3VtZW50OmRyYWdvdmVyYC5cbiAgICovXG4gIGV2ZW50VGFyZ2V0OiBzdHJpbmd8bnVsbDtcblxuICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW47XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgYExpc3RlbmVyT3BgLiBIb3N0IGJpbmRpbmdzIHJldXNlIGFsbCB0aGUgbGlzdGVuZXIgbG9naWMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMaXN0ZW5lck9wKFxuICAgIHRhcmdldDogWHJlZklkLCB0YXJnZXRTbG90OiBTbG90SGFuZGxlLCBuYW1lOiBzdHJpbmcsIHRhZzogc3RyaW5nfG51bGwsXG4gICAgaGFuZGxlck9wczogQXJyYXk8VXBkYXRlT3A+LCBhbmltYXRpb25QaGFzZTogc3RyaW5nfG51bGwsIGV2ZW50VGFyZ2V0OiBzdHJpbmd8bnVsbCxcbiAgICBob3N0TGlzdGVuZXI6IGJvb2xlYW4sIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbik6IExpc3RlbmVyT3Age1xuICBjb25zdCBoYW5kbGVyTGlzdCA9IG5ldyBPcExpc3Q8VXBkYXRlT3A+KCk7XG4gIGhhbmRsZXJMaXN0LnB1c2goaGFuZGxlck9wcyk7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLkxpc3RlbmVyLFxuICAgIHRhcmdldCxcbiAgICB0YXJnZXRTbG90LFxuICAgIHRhZyxcbiAgICBob3N0TGlzdGVuZXIsXG4gICAgbmFtZSxcbiAgICBoYW5kbGVyT3BzOiBoYW5kbGVyTGlzdCxcbiAgICBoYW5kbGVyRm5OYW1lOiBudWxsLFxuICAgIGNvbnN1bWVzRG9sbGFyRXZlbnQ6IGZhbHNlLFxuICAgIGlzQW5pbWF0aW9uTGlzdGVuZXI6IGFuaW1hdGlvblBoYXNlICE9PSBudWxsLFxuICAgIGFuaW1hdGlvblBoYXNlLFxuICAgIGV2ZW50VGFyZ2V0LFxuICAgIHNvdXJjZVNwYW4sXG4gICAgLi4uTkVXX09QLFxuICB9O1xufVxuXG4vKipcbiAqIExvZ2ljYWwgb3BlcmF0aW9uIHJlcHJlc2VudGluZyB0aGUgZXZlbnQgc2lkZSBvZiBhIHR3by13YXkgYmluZGluZyBvbiBhbiBlbGVtZW50XG4gKiBpbiB0aGUgY3JlYXRpb24gSVIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHdvV2F5TGlzdGVuZXJPcCBleHRlbmRzIE9wPENyZWF0ZU9wPiB7XG4gIGtpbmQ6IE9wS2luZC5Ud29XYXlMaXN0ZW5lcjtcblxuICB0YXJnZXQ6IFhyZWZJZDtcbiAgdGFyZ2V0U2xvdDogU2xvdEhhbmRsZTtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgZXZlbnQgd2hpY2ggaXMgYmVpbmcgbGlzdGVuZWQgdG8uXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRhZyBuYW1lIG9mIHRoZSBlbGVtZW50IG9uIHdoaWNoIHRoaXMgbGlzdGVuZXIgaXMgcGxhY2VkLlxuICAgKi9cbiAgdGFnOiBzdHJpbmd8bnVsbDtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGBVcGRhdGVPcGBzIHJlcHJlc2VudGluZyB0aGUgYm9keSBvZiB0aGUgZXZlbnQgbGlzdGVuZXIuXG4gICAqL1xuICBoYW5kbGVyT3BzOiBPcExpc3Q8VXBkYXRlT3A+O1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBmdW5jdGlvblxuICAgKi9cbiAgaGFuZGxlckZuTmFtZTogc3RyaW5nfG51bGw7XG5cbiAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGBUd29XYXlMaXN0ZW5lck9wYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVR3b1dheUxpc3RlbmVyT3AoXG4gICAgdGFyZ2V0OiBYcmVmSWQsIHRhcmdldFNsb3Q6IFNsb3RIYW5kbGUsIG5hbWU6IHN0cmluZywgdGFnOiBzdHJpbmd8bnVsbCxcbiAgICBoYW5kbGVyT3BzOiBBcnJheTxVcGRhdGVPcD4sIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbik6IFR3b1dheUxpc3RlbmVyT3Age1xuICBjb25zdCBoYW5kbGVyTGlzdCA9IG5ldyBPcExpc3Q8VXBkYXRlT3A+KCk7XG4gIGhhbmRsZXJMaXN0LnB1c2goaGFuZGxlck9wcyk7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLlR3b1dheUxpc3RlbmVyLFxuICAgIHRhcmdldCxcbiAgICB0YXJnZXRTbG90LFxuICAgIHRhZyxcbiAgICBuYW1lLFxuICAgIGhhbmRsZXJPcHM6IGhhbmRsZXJMaXN0LFxuICAgIGhhbmRsZXJGbk5hbWU6IG51bGwsXG4gICAgc291cmNlU3BhbixcbiAgICAuLi5ORVdfT1AsXG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZU9wIGV4dGVuZHMgT3A8Q3JlYXRlT3A+LCBDb25zdW1lc1Nsb3RPcFRyYWl0IHtcbiAga2luZDogT3BLaW5kLlBpcGU7XG4gIHhyZWY6IFhyZWZJZDtcbiAgbmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGlwZU9wKHhyZWY6IFhyZWZJZCwgc2xvdDogU2xvdEhhbmRsZSwgbmFtZTogc3RyaW5nKTogUGlwZU9wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuUGlwZSxcbiAgICB4cmVmLFxuICAgIGhhbmRsZTogc2xvdCxcbiAgICBuYW1lLFxuICAgIC4uLk5FV19PUCxcbiAgICAuLi5UUkFJVF9DT05TVU1FU19TTE9ULFxuICB9O1xufVxuXG4vKipcbiAqIEFuIG9wIGNvcnJlc3BvbmRpbmcgdG8gYSBuYW1lc3BhY2UgaW5zdHJ1Y3Rpb24sIGZvciBzd2l0Y2hpbmcgYmV0d2VlbiBIVE1MLCBTVkcsIGFuZCBNYXRoTUwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmFtZXNwYWNlT3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4ge1xuICBraW5kOiBPcEtpbmQuTmFtZXNwYWNlO1xuICBhY3RpdmU6IE5hbWVzcGFjZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU5hbWVzcGFjZU9wKG5hbWVzcGFjZTogTmFtZXNwYWNlKTogTmFtZXNwYWNlT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5OYW1lc3BhY2UsXG4gICAgYWN0aXZlOiBuYW1lc3BhY2UsXG4gICAgLi4uTkVXX09QLFxuICB9O1xufVxuXG4vKipcbiAqIEFuIG9wIHRoYXQgY3JlYXRlcyBhIGNvbnRlbnQgcHJvamVjdGlvbiBzbG90LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb2plY3Rpb25EZWZPcCBleHRlbmRzIE9wPENyZWF0ZU9wPiB7XG4gIGtpbmQ6IE9wS2luZC5Qcm9qZWN0aW9uRGVmO1xuXG4gIC8vIFRoZSBwYXJzZWQgc2VsZWN0b3IgaW5mb3JtYXRpb24gZm9yIHRoaXMgcHJvamVjdGlvbiBkZWYuXG4gIGRlZjogby5FeHByZXNzaW9ufG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcm9qZWN0aW9uRGVmT3AoZGVmOiBvLkV4cHJlc3Npb258bnVsbCk6IFByb2plY3Rpb25EZWZPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLlByb2plY3Rpb25EZWYsXG4gICAgZGVmLFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cblxuLyoqXG4gKiBBbiBvcCB0aGF0IGNyZWF0ZXMgYSBjb250ZW50IHByb2plY3Rpb24gc2xvdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9qZWN0aW9uT3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4sIENvbnN1bWVzU2xvdE9wVHJhaXQge1xuICBraW5kOiBPcEtpbmQuUHJvamVjdGlvbjtcblxuICB4cmVmOiBYcmVmSWQ7XG5cbiAgcHJvamVjdGlvblNsb3RJbmRleDogbnVtYmVyO1xuXG4gIGF0dHJpYnV0ZXM6IG51bGx8by5MaXRlcmFsQXJyYXlFeHByO1xuXG4gIGxvY2FsUmVmczogc3RyaW5nW107XG5cbiAgc2VsZWN0b3I6IHN0cmluZztcblxuICBpMThuUGxhY2Vob2xkZXI/OiBpMThuLlRhZ1BsYWNlaG9sZGVyO1xuXG4gIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVByb2plY3Rpb25PcChcbiAgICB4cmVmOiBYcmVmSWQsIHNlbGVjdG9yOiBzdHJpbmcsIGkxOG5QbGFjZWhvbGRlcjogaTE4bi5UYWdQbGFjZWhvbGRlcnx1bmRlZmluZWQsXG4gICAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKTogUHJvamVjdGlvbk9wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuUHJvamVjdGlvbixcbiAgICB4cmVmLFxuICAgIGhhbmRsZTogbmV3IFNsb3RIYW5kbGUoKSxcbiAgICBzZWxlY3RvcixcbiAgICBpMThuUGxhY2Vob2xkZXIsXG4gICAgcHJvamVjdGlvblNsb3RJbmRleDogMCxcbiAgICBhdHRyaWJ1dGVzOiBudWxsLFxuICAgIGxvY2FsUmVmczogW10sXG4gICAgc291cmNlU3BhbixcbiAgICAuLi5ORVdfT1AsXG4gICAgLi4uVFJBSVRfQ09OU1VNRVNfU0xPVCxcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIGF0dHJpYnV0ZSB0aGF0IGhhcyBiZWVuIGV4dHJhY3RlZCBmb3IgaW5jbHVzaW9uIGluIHRoZSBjb25zdHMgYXJyYXkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXh0cmFjdGVkQXR0cmlidXRlT3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4ge1xuICBraW5kOiBPcEtpbmQuRXh0cmFjdGVkQXR0cmlidXRlO1xuXG4gIC8qKlxuICAgKiBUaGUgYFhyZWZJZGAgb2YgdGhlIHRlbXBsYXRlLWxpa2UgZWxlbWVudCB0aGUgZXh0cmFjdGVkIGF0dHJpYnV0ZSB3aWxsIGJlbG9uZyB0by5cbiAgICovXG4gIHRhcmdldDogWHJlZklkO1xuXG4gIC8qKlxuICAgKiAgVGhlIGtpbmQgb2YgYmluZGluZyByZXByZXNlbnRlZCBieSB0aGlzIGV4dHJhY3RlZCBhdHRyaWJ1dGUuXG4gICAqL1xuICBiaW5kaW5nS2luZDogQmluZGluZ0tpbmQ7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lc3BhY2Ugb2YgdGhlIGF0dHJpYnV0ZSAob3IgbnVsbCBpZiBub25lKS5cbiAgICovXG4gIG5hbWVzcGFjZTogc3RyaW5nfG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBleHRyYWN0ZWQgYXR0cmlidXRlLlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgZXhwcmVzc2lvbiBvZiB0aGUgZXh0cmFjdGVkIGF0dHJpYnV0ZS5cbiAgICovXG4gIGV4cHJlc3Npb246IG8uRXhwcmVzc2lvbnxudWxsO1xuXG4gIC8qKlxuICAgKiBJZiB0aGlzIGF0dHJpYnV0ZSBoYXMgYSBjb3JyZXNwb25kaW5nIGkxOG4gYXR0cmlidXRlIChlLmcuIGBpMThuLWZvbz1cIm06ZFwiYCksIHRoZW4gdGhpcyBpcyB0aGVcbiAgICogaTE4biBjb250ZXh0IGZvciBpdC5cbiAgICovXG4gIGkxOG5Db250ZXh0OiBYcmVmSWR8bnVsbDtcblxuICAvKipcbiAgICogVGhlIHNlY3VyaXR5IGNvbnRleHQgb2YgdGhlIGJpbmRpbmcuXG4gICAqL1xuICBzZWN1cml0eUNvbnRleHQ6IFNlY3VyaXR5Q29udGV4dHxTZWN1cml0eUNvbnRleHRbXTtcblxuICAvKipcbiAgICogVGhlIHRydXN0ZWQgdmFsdWUgZnVuY3Rpb24gZm9yIHRoaXMgcHJvcGVydHkuXG4gICAqL1xuICB0cnVzdGVkVmFsdWVGbjogby5FeHByZXNzaW9ufG51bGw7XG5cbiAgaTE4bk1lc3NhZ2U6IGkxOG4uTWVzc2FnZXxudWxsO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhbiBgRXh0cmFjdGVkQXR0cmlidXRlT3BgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRXh0cmFjdGVkQXR0cmlidXRlT3AoXG4gICAgdGFyZ2V0OiBYcmVmSWQsIGJpbmRpbmdLaW5kOiBCaW5kaW5nS2luZCwgbmFtZXNwYWNlOiBzdHJpbmd8bnVsbCwgbmFtZTogc3RyaW5nLFxuICAgIGV4cHJlc3Npb246IG8uRXhwcmVzc2lvbnxudWxsLCBpMThuQ29udGV4dDogWHJlZklkfG51bGwsIGkxOG5NZXNzYWdlOiBpMThuLk1lc3NhZ2V8bnVsbCxcbiAgICBzZWN1cml0eUNvbnRleHQ6IFNlY3VyaXR5Q29udGV4dHxTZWN1cml0eUNvbnRleHRbXSk6IEV4dHJhY3RlZEF0dHJpYnV0ZU9wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuRXh0cmFjdGVkQXR0cmlidXRlLFxuICAgIHRhcmdldCxcbiAgICBiaW5kaW5nS2luZCxcbiAgICBuYW1lc3BhY2UsXG4gICAgbmFtZSxcbiAgICBleHByZXNzaW9uLFxuICAgIGkxOG5Db250ZXh0LFxuICAgIGkxOG5NZXNzYWdlLFxuICAgIHNlY3VyaXR5Q29udGV4dCxcbiAgICB0cnVzdGVkVmFsdWVGbjogbnVsbCxcbiAgICAuLi5ORVdfT1AsXG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVmZXJPcCBleHRlbmRzIE9wPENyZWF0ZU9wPiwgQ29uc3VtZXNTbG90T3BUcmFpdCB7XG4gIGtpbmQ6IE9wS2luZC5EZWZlcjtcblxuICAvKipcbiAgICogVGhlIHhyZWYgb2YgdGhpcyBkZWZlciBvcC5cbiAgICovXG4gIHhyZWY6IFhyZWZJZDtcblxuICAvKipcbiAgICogVGhlIHhyZWYgb2YgdGhlIG1haW4gdmlldy5cbiAgICovXG4gIG1haW5WaWV3OiBYcmVmSWQ7XG5cbiAgbWFpblNsb3Q6IFNsb3RIYW5kbGU7XG5cbiAgLyoqXG4gICAqIFNlY29uZGFyeSBsb2FkaW5nIGJsb2NrIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGRlZmVyIG9wLlxuICAgKi9cbiAgbG9hZGluZ1ZpZXc6IFhyZWZJZHxudWxsO1xuXG4gIGxvYWRpbmdTbG90OiBTbG90SGFuZGxlfG51bGw7XG5cbiAgLyoqXG4gICAqIFNlY29uZGFyeSBwbGFjZWhvbGRlciBibG9jayBhc3NvY2lhdGVkIHdpdGggdGhpcyBkZWZlciBvcC5cbiAgICovXG4gIHBsYWNlaG9sZGVyVmlldzogWHJlZklkfG51bGw7XG5cbiAgcGxhY2Vob2xkZXJTbG90OiBTbG90SGFuZGxlfG51bGw7XG5cbiAgLyoqXG4gICAqIFNlY29uZGFyeSBlcnJvciBibG9jayBhc3NvY2lhdGVkIHdpdGggdGhpcyBkZWZlciBvcC5cbiAgICovXG4gIGVycm9yVmlldzogWHJlZklkfG51bGw7XG5cbiAgZXJyb3JTbG90OiBTbG90SGFuZGxlfG51bGw7XG5cbiAgcGxhY2Vob2xkZXJNaW5pbXVtVGltZTogbnVtYmVyfG51bGw7XG4gIGxvYWRpbmdNaW5pbXVtVGltZTogbnVtYmVyfG51bGw7XG4gIGxvYWRpbmdBZnRlclRpbWU6IG51bWJlcnxudWxsO1xuXG4gIHBsYWNlaG9sZGVyQ29uZmlnOiBvLkV4cHJlc3Npb258bnVsbDtcbiAgbG9hZGluZ0NvbmZpZzogby5FeHByZXNzaW9ufG51bGw7XG5cbiAgLyoqXG4gICAqIERlcGVuZGluZyBvbiB0aGUgY29tcGlsYXRpb24gbW9kZSwgdGhlcmUgY2FuIGJlIGVpdGhlciBvbmUgZGVwZW5kZW5jeSByZXNvbHV0aW9uIGZ1bmN0aW9uXG4gICAqIHBlciBkZWZlcnJlZCBibG9jayBvciBvbmUgZm9yIHRoZSBlbnRpcmUgdGVtcGxhdGUuIFRoaXMgZmllbGQgY29udGFpbnMgdGhlIGZ1bmN0aW9uIHRoYXRcbiAgICogYmVsb25ncyBzcGVjaWZpY2FsbHkgdG8gdGhlIGN1cnJlbnQgZGVmZXJyZWQgYmxvY2suXG4gICAqL1xuICBvd25SZXNvbHZlckZuOiBvLkFycm93RnVuY3Rpb25FeHByfG51bGw7XG5cbiAgLyoqXG4gICAqIEFmdGVyIHByb2Nlc3NpbmcsIHRoZSByZXNvbHZlciBmdW5jdGlvbiBmb3IgdGhlIGRlZmVyIGRlcHMgd2lsbCBiZSBleHRyYWN0ZWQgdG8gdGhlIGNvbnN0YW50XG4gICAqIHBvb2wsIGFuZCBhIHJlZmVyZW5jZSB0byB0aGF0IGZ1bmN0aW9uIHdpbGwgYmUgcG9wdWxhdGVkIGhlcmUuXG4gICAqL1xuICByZXNvbHZlckZuOiBvLkV4cHJlc3Npb258bnVsbDtcblxuICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWZlck9wKFxuICAgIHhyZWY6IFhyZWZJZCwgbWFpbjogWHJlZklkLCBtYWluU2xvdDogU2xvdEhhbmRsZSwgb3duUmVzb2x2ZXJGbjogby5BcnJvd0Z1bmN0aW9uRXhwcnxudWxsLFxuICAgIHJlc29sdmVyRm46IG8uRXhwcmVzc2lvbnxudWxsLCBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pOiBEZWZlck9wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuRGVmZXIsXG4gICAgeHJlZixcbiAgICBoYW5kbGU6IG5ldyBTbG90SGFuZGxlKCksXG4gICAgbWFpblZpZXc6IG1haW4sXG4gICAgbWFpblNsb3QsXG4gICAgbG9hZGluZ1ZpZXc6IG51bGwsXG4gICAgbG9hZGluZ1Nsb3Q6IG51bGwsXG4gICAgbG9hZGluZ0NvbmZpZzogbnVsbCxcbiAgICBsb2FkaW5nTWluaW11bVRpbWU6IG51bGwsXG4gICAgbG9hZGluZ0FmdGVyVGltZTogbnVsbCxcbiAgICBwbGFjZWhvbGRlclZpZXc6IG51bGwsXG4gICAgcGxhY2Vob2xkZXJTbG90OiBudWxsLFxuICAgIHBsYWNlaG9sZGVyQ29uZmlnOiBudWxsLFxuICAgIHBsYWNlaG9sZGVyTWluaW11bVRpbWU6IG51bGwsXG4gICAgZXJyb3JWaWV3OiBudWxsLFxuICAgIGVycm9yU2xvdDogbnVsbCxcbiAgICBvd25SZXNvbHZlckZuLFxuICAgIHJlc29sdmVyRm4sXG4gICAgc291cmNlU3BhbixcbiAgICAuLi5ORVdfT1AsXG4gICAgLi4uVFJBSVRfQ09OU1VNRVNfU0xPVCxcbiAgICBudW1TbG90c1VzZWQ6IDIsXG4gIH07XG59XG5pbnRlcmZhY2UgRGVmZXJUcmlnZ2VyQmFzZSB7XG4gIGtpbmQ6IERlZmVyVHJpZ2dlcktpbmQ7XG59XG5cbmludGVyZmFjZSBEZWZlclRyaWdnZXJXaXRoVGFyZ2V0QmFzZSBleHRlbmRzIERlZmVyVHJpZ2dlckJhc2Uge1xuICB0YXJnZXROYW1lOiBzdHJpbmd8bnVsbDtcblxuICAvKipcbiAgICogVGhlIFhyZWYgb2YgdGhlIHRhcmdldGVkIG5hbWUuIE1heSBiZSBpbiBhIGRpZmZlcmVudCB2aWV3LlxuICAgKi9cbiAgdGFyZ2V0WHJlZjogWHJlZklkfG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBzbG90IGluZGV4IG9mIHRoZSBuYW1lZCByZWZlcmVuY2UsIGluc2lkZSB0aGUgdmlldyBwcm92aWRlZCBiZWxvdy4gVGhpcyBzbG90IG1heSBub3QgYmVcbiAgICogaW5zaWRlIHRoZSBjdXJyZW50IHZpZXcsIGFuZCBpcyBoYW5kbGVkIHNwZWNpYWxseSBhcyBhIHJlc3VsdC5cbiAgICovXG4gIHRhcmdldFNsb3Q6IFNsb3RIYW5kbGV8bnVsbDtcblxuICB0YXJnZXRWaWV3OiBYcmVmSWR8bnVsbDtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIHN0ZXBzIHRvIHdhbGsgdXAgb3IgZG93biB0aGUgdmlldyB0cmVlIHRvIGZpbmQgdGhlIHRhcmdldCBsb2NhbFJlZi5cbiAgICovXG4gIHRhcmdldFNsb3RWaWV3U3RlcHM6IG51bWJlcnxudWxsO1xufVxuXG5pbnRlcmZhY2UgRGVmZXJJZGxlVHJpZ2dlciBleHRlbmRzIERlZmVyVHJpZ2dlckJhc2Uge1xuICBraW5kOiBEZWZlclRyaWdnZXJLaW5kLklkbGU7XG59XG5cbmludGVyZmFjZSBEZWZlckltbWVkaWF0ZVRyaWdnZXIgZXh0ZW5kcyBEZWZlclRyaWdnZXJCYXNlIHtcbiAga2luZDogRGVmZXJUcmlnZ2VyS2luZC5JbW1lZGlhdGU7XG59XG5cbmludGVyZmFjZSBEZWZlckhvdmVyVHJpZ2dlciBleHRlbmRzIERlZmVyVHJpZ2dlcldpdGhUYXJnZXRCYXNlIHtcbiAga2luZDogRGVmZXJUcmlnZ2VyS2luZC5Ib3Zlcjtcbn1cblxuaW50ZXJmYWNlIERlZmVyVGltZXJUcmlnZ2VyIGV4dGVuZHMgRGVmZXJUcmlnZ2VyQmFzZSB7XG4gIGtpbmQ6IERlZmVyVHJpZ2dlcktpbmQuVGltZXI7XG5cbiAgZGVsYXk6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIERlZmVySW50ZXJhY3Rpb25UcmlnZ2VyIGV4dGVuZHMgRGVmZXJUcmlnZ2VyV2l0aFRhcmdldEJhc2Uge1xuICBraW5kOiBEZWZlclRyaWdnZXJLaW5kLkludGVyYWN0aW9uO1xufVxuXG5pbnRlcmZhY2UgRGVmZXJWaWV3cG9ydFRyaWdnZXIgZXh0ZW5kcyBEZWZlclRyaWdnZXJXaXRoVGFyZ2V0QmFzZSB7XG4gIGtpbmQ6IERlZmVyVHJpZ2dlcktpbmQuVmlld3BvcnQ7XG59XG5cbi8qKlxuICogVGhlIHVuaW9uIHR5cGUgb2YgYWxsIGRlZmVyIHRyaWdnZXIgaW50ZXJmYWNlcy5cbiAqL1xuZXhwb3J0IHR5cGUgRGVmZXJUcmlnZ2VyID0gRGVmZXJJZGxlVHJpZ2dlcnxEZWZlckltbWVkaWF0ZVRyaWdnZXJ8RGVmZXJUaW1lclRyaWdnZXJ8XG4gICAgRGVmZXJIb3ZlclRyaWdnZXJ8RGVmZXJJbnRlcmFjdGlvblRyaWdnZXJ8RGVmZXJWaWV3cG9ydFRyaWdnZXI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVmZXJPbk9wIGV4dGVuZHMgT3A8Q3JlYXRlT3A+IHtcbiAga2luZDogT3BLaW5kLkRlZmVyT247XG5cbiAgZGVmZXI6IFhyZWZJZDtcblxuICAvKipcbiAgICogVGhlIHRyaWdnZXIgZm9yIHRoaXMgZGVmZXIgb3AgKGUuZy4gaWRsZSwgaG92ZXIsIGV0YykuXG4gICAqL1xuICB0cmlnZ2VyOiBEZWZlclRyaWdnZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZW1pdCB0aGUgcHJlZmV0Y2ggdmVyc2lvbiBvZiB0aGUgaW5zdHJ1Y3Rpb24uXG4gICAqL1xuICBwcmVmZXRjaDogYm9vbGVhbjtcblxuICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWZlck9uT3AoXG4gICAgZGVmZXI6IFhyZWZJZCwgdHJpZ2dlcjogRGVmZXJUcmlnZ2VyLCBwcmVmZXRjaDogYm9vbGVhbixcbiAgICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pOiBEZWZlck9uT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5EZWZlck9uLFxuICAgIGRlZmVyLFxuICAgIHRyaWdnZXIsXG4gICAgcHJlZmV0Y2gsXG4gICAgc291cmNlU3BhbixcbiAgICAuLi5ORVdfT1AsXG4gIH07XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNpbmdsZSB2YWx1ZSBpbiBhbiBpMThuIHBhcmFtIG1hcC4gRWFjaCBwbGFjZWhvbGRlciBpbiB0aGUgbWFwIG1heSBoYXZlIG11bHRpcGxlIG9mXG4gKiB0aGVzZSB2YWx1ZXMgYXNzb2NpYXRlZCB3aXRoIGl0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEkxOG5QYXJhbVZhbHVlIHtcbiAgLyoqXG4gICAqIFRoZSB2YWx1ZS4gVGhpcyBjYW4gYmUgZWl0aGVyIGEgc2xvdCBudW1iZXIsIHNwZWNpYWwgc3RyaW5nLCBvciBjb21wb3VuZC12YWx1ZSBjb25zaXN0aW5nIG9mIGFuXG4gICAqIGVsZW1lbnQgc2xvdCBudW1iZXIgYW5kIHRlbXBsYXRlIHNsb3QgbnVtYmVyLlxuICAgKi9cbiAgdmFsdWU6IHN0cmluZ3xudW1iZXJ8e2VsZW1lbnQ6IG51bWJlciwgdGVtcGxhdGU6IG51bWJlcn07XG5cbiAgLyoqXG4gICAqIFRoZSBzdWItdGVtcGxhdGUgaW5kZXggYXNzb2NpYXRlZCB3aXRoIHRoZSB2YWx1ZS5cbiAgICovXG4gIHN1YlRlbXBsYXRlSW5kZXg6IG51bWJlcnxudWxsO1xuXG4gIC8qKlxuICAgKiBGbGFncyBhc3NvY2lhdGVkIHdpdGggdGhlIHZhbHVlLlxuICAgKi9cbiAgZmxhZ3M6IEkxOG5QYXJhbVZhbHVlRmxhZ3M7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBpMThuIG1lc3NhZ2UgdGhhdCBoYXMgYmVlbiBleHRyYWN0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgY29uc3RzIGFycmF5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEkxOG5NZXNzYWdlT3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4ge1xuICBraW5kOiBPcEtpbmQuSTE4bk1lc3NhZ2U7XG5cbiAgLyoqXG4gICAqIEFuIGlkIHVzZWQgdG8gcmVmZXJlbmNlIHRoaXMgbWVzc2FnZS5cbiAgICovXG4gIHhyZWY6IFhyZWZJZDtcblxuICAvKipcbiAgICogVGhlIGNvbnRleHQgZnJvbSB3aGljaCB0aGlzIG1lc3NhZ2Ugd2FzIGV4dHJhY3RlZFxuICAgKiBUT0RPOiByZW1vdmUgdGhpcywgYW5kIGFkZCBhbm90aGVyIHByb3BlcnR5IGhlcmUgaW5zdGVhZCB0byBtYXRjaCBFeHRyYWN0ZWRBdHRyaWJ1dGVzXG4gICAqL1xuICBpMThuQ29udGV4dDogWHJlZklkO1xuXG4gIC8qKlxuICAgKiBBIHJlZmVyZW5jZSB0byB0aGUgaTE4biBvcCB0aGlzIG1lc3NhZ2Ugd2FzIGV4dHJhY3RlZCBmcm9tLlxuICAgKlxuICAgKiBUaGlzIG1pZ2h0IGJlIG51bGwsIHdoaWNoIG1lYW5zIHRoaXMgbWVzc2FnZSBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGEgYmxvY2suIFRoaXMgcHJvYmFibHlcbiAgICogbWVhbnMgaXQgaXMgYW4gaTE4biBhdHRyaWJ1dGUncyBtZXNzYWdlLlxuICAgKi9cbiAgaTE4bkJsb2NrOiBYcmVmSWR8bnVsbDtcblxuICAvKipcbiAgICogVGhlIGkxOG4gbWVzc2FnZSByZXByZXNlbnRlZCBieSB0aGlzIG9wLlxuICAgKi9cbiAgbWVzc2FnZTogaTE4bi5NZXNzYWdlO1xuXG4gIC8qKlxuICAgKiBUaGUgcGxhY2Vob2xkZXIgdXNlZCBmb3IgdGhpcyBtZXNzYWdlIHdoZW4gaXQgaXMgcmVmZXJlbmNlZCBpbiBhbm90aGVyIG1lc3NhZ2UuXG4gICAqIEZvciBhIHRvcC1sZXZlbCBtZXNzYWdlIHRoYXQgaXNuJ3QgcmVmZXJlbmNlZCBmcm9tIGFub3RoZXIgbWVzc2FnZSwgdGhpcyB3aWxsIGJlIG51bGwuXG4gICAqL1xuICBtZXNzYWdlUGxhY2Vob2xkZXI6IHN0cmluZ3xudWxsO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgbWVzc2FnZSBuZWVkcyBwb3N0LXByb2Nlc3NpbmcuXG4gICAqL1xuICBuZWVkc1Bvc3Rwcm9jZXNzaW5nOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFyYW0gbWFwLCB3aXRoIHBsYWNlaG9sZGVycyByZXByZXNlbnRlZCBhcyBhbiBgRXhwcmVzc2lvbmAuXG4gICAqL1xuICBwYXJhbXM6IE1hcDxzdHJpbmcsIG8uRXhwcmVzc2lvbj47XG5cbiAgLyoqXG4gICAqIFRoZSBwb3N0LXByb2Nlc3NpbmcgcGFyYW0gbWFwLCB3aXRoIHBsYWNlaG9sZGVycyByZXByZXNlbnRlZCBhcyBhbiBgRXhwcmVzc2lvbmAuXG4gICAqL1xuICBwb3N0cHJvY2Vzc2luZ1BhcmFtczogTWFwPHN0cmluZywgby5FeHByZXNzaW9uPjtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIHN1Yi1tZXNzYWdlcyB0aGF0IGFyZSByZWZlcmVuY2VkIGJ5IHRoaXMgbWVzc2FnZS5cbiAgICovXG4gIHN1Yk1lc3NhZ2VzOiBYcmVmSWRbXTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYW4gYEV4dHJhY3RlZE1lc3NhZ2VPcGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJMThuTWVzc2FnZU9wKFxuICAgIHhyZWY6IFhyZWZJZCwgaTE4bkNvbnRleHQ6IFhyZWZJZCwgaTE4bkJsb2NrOiBYcmVmSWR8bnVsbCwgbWVzc2FnZTogaTE4bi5NZXNzYWdlLFxuICAgIG1lc3NhZ2VQbGFjZWhvbGRlcjogc3RyaW5nfG51bGwsIHBhcmFtczogTWFwPHN0cmluZywgby5FeHByZXNzaW9uPixcbiAgICBwb3N0cHJvY2Vzc2luZ1BhcmFtczogTWFwPHN0cmluZywgby5FeHByZXNzaW9uPiwgbmVlZHNQb3N0cHJvY2Vzc2luZzogYm9vbGVhbik6IEkxOG5NZXNzYWdlT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5JMThuTWVzc2FnZSxcbiAgICB4cmVmLFxuICAgIGkxOG5Db250ZXh0LFxuICAgIGkxOG5CbG9jayxcbiAgICBtZXNzYWdlLFxuICAgIG1lc3NhZ2VQbGFjZWhvbGRlcixcbiAgICBwYXJhbXMsXG4gICAgcG9zdHByb2Nlc3NpbmdQYXJhbXMsXG4gICAgbmVlZHNQb3N0cHJvY2Vzc2luZyxcbiAgICBzdWJNZXNzYWdlczogW10sXG4gICAgLi4uTkVXX09QLFxuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEkxOG5PcEJhc2UgZXh0ZW5kcyBPcDxDcmVhdGVPcD4sIENvbnN1bWVzU2xvdE9wVHJhaXQge1xuICBraW5kOiBPcEtpbmQuSTE4blN0YXJ0fE9wS2luZC5JMThuO1xuXG4gIC8qKlxuICAgKiBgWHJlZklkYCBhbGxvY2F0ZWQgZm9yIHRoaXMgaTE4biBibG9jay5cbiAgICovXG4gIHhyZWY6IFhyZWZJZDtcblxuICAvKipcbiAgICogQSByZWZlcmVuY2UgdG8gdGhlIHJvb3QgaTE4biBibG9jayB0aGF0IHRoaXMgb25lIGJlbG9uZ3MgdG8uIEZvciBhIHJvb3QgaTE4biBibG9jaywgdGhpcyBpc1xuICAgKiB0aGUgc2FtZSBhcyB4cmVmLlxuICAgKi9cbiAgcm9vdDogWHJlZklkO1xuXG4gIC8qKlxuICAgKiBUaGUgaTE4biBtZXRhZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhpcyBvcC5cbiAgICovXG4gIG1lc3NhZ2U6IGkxOG4uTWVzc2FnZTtcblxuICAvKipcbiAgICogVGhlIGluZGV4IGluIHRoZSBjb25zdHMgYXJyYXkgd2hlcmUgdGhlIG1lc3NhZ2UgaTE4biBtZXNzYWdlIGlzIHN0b3JlZC5cbiAgICovXG4gIG1lc3NhZ2VJbmRleDogQ29uc3RJbmRleHxudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5kZXggb2YgdGhpcyBzdWItYmxvY2sgaW4gdGhlIGkxOG4gbWVzc2FnZS4gRm9yIGEgcm9vdCBpMThuIGJsb2NrLCB0aGlzIGlzIG51bGwuXG4gICAqL1xuICBzdWJUZW1wbGF0ZUluZGV4OiBudW1iZXJ8bnVsbDtcblxuICAvKipcbiAgICogVGhlIGkxOG4gY29udGV4dCBnZW5lcmF0ZWQgZnJvbSB0aGlzIGJsb2NrLiBJbml0aWFsbHkgbnVsbCwgdW50aWwgdGhlIGNvbnRleHQgaXMgY3JlYXRlZC5cbiAgICovXG4gIGNvbnRleHQ6IFhyZWZJZHxudWxsO1xuXG4gIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3BhbnxudWxsO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gZW1wdHkgaTE4biBibG9jay5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJMThuT3AgZXh0ZW5kcyBJMThuT3BCYXNlIHtcbiAga2luZDogT3BLaW5kLkkxOG47XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgc3RhcnQgb2YgYW4gaTE4biBibG9jay5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJMThuU3RhcnRPcCBleHRlbmRzIEkxOG5PcEJhc2Uge1xuICBraW5kOiBPcEtpbmQuSTE4blN0YXJ0O1xufVxuXG4vKipcbiAqIENyZWF0ZSBhbiBgSTE4blN0YXJ0T3BgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSTE4blN0YXJ0T3AoXG4gICAgeHJlZjogWHJlZklkLCBtZXNzYWdlOiBpMThuLk1lc3NhZ2UsIHJvb3Q6IFhyZWZJZHx1bmRlZmluZWQsXG4gICAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFufG51bGwpOiBJMThuU3RhcnRPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLkkxOG5TdGFydCxcbiAgICB4cmVmLFxuICAgIGhhbmRsZTogbmV3IFNsb3RIYW5kbGUoKSxcbiAgICByb290OiByb290ID8/IHhyZWYsXG4gICAgbWVzc2FnZSxcbiAgICBtZXNzYWdlSW5kZXg6IG51bGwsXG4gICAgc3ViVGVtcGxhdGVJbmRleDogbnVsbCxcbiAgICBjb250ZXh0OiBudWxsLFxuICAgIHNvdXJjZVNwYW4sXG4gICAgLi4uTkVXX09QLFxuICAgIC4uLlRSQUlUX0NPTlNVTUVTX1NMT1QsXG4gIH07XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgZW5kIG9mIGFuIGkxOG4gYmxvY2suXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSTE4bkVuZE9wIGV4dGVuZHMgT3A8Q3JlYXRlT3A+IHtcbiAga2luZDogT3BLaW5kLkkxOG5FbmQ7XG5cbiAgLyoqXG4gICAqIFRoZSBgWHJlZklkYCBvZiB0aGUgYEkxOG5TdGFydE9wYCB0aGF0IGNyZWF0ZWQgdGhpcyBibG9jay5cbiAgICovXG4gIHhyZWY6IFhyZWZJZDtcblxuICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW58bnVsbDtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYW4gYEkxOG5FbmRPcGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJMThuRW5kT3AoeHJlZjogWHJlZklkLCBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW58bnVsbCk6IEkxOG5FbmRPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLkkxOG5FbmQsXG4gICAgeHJlZixcbiAgICBzb3VyY2VTcGFuLFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cblxuLyoqXG4gKiBBbiBvcCB0aGF0IHJlcHJlc2VudHMgdGhlIHN0YXJ0IG9mIGFuIElDVSBleHByZXNzaW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEljdVN0YXJ0T3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4ge1xuICBraW5kOiBPcEtpbmQuSWN1U3RhcnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgSUNVLlxuICAgKi9cbiAgeHJlZjogWHJlZklkO1xuXG4gIC8qKlxuICAgKiBUaGUgaTE4biBtZXNzYWdlIGZvciB0aGlzIElDVS5cbiAgICovXG4gIG1lc3NhZ2U6IGkxOG4uTWVzc2FnZTtcblxuICAvKipcbiAgICogUGxhY2Vob2xkZXIgdXNlZCB0byByZWZlcmVuY2UgdGhpcyBJQ1UgaW4gb3RoZXIgaTE4biBtZXNzYWdlcy5cbiAgICovXG4gIG1lc3NhZ2VQbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHJlZmVyZW5jZSB0byB0aGUgaTE4biBjb250ZXh0IGZvciB0aGlzIG9wLiBJbml0aWFsbHkgbnVsbCwgdW50aWwgdGhlIGNvbnRleHQgaXMgY3JlYXRlZC5cbiAgICovXG4gIGNvbnRleHQ6IFhyZWZJZHxudWxsO1xuXG4gIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIElDVSBzdGFydCBvcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUljdVN0YXJ0T3AoXG4gICAgeHJlZjogWHJlZklkLCBtZXNzYWdlOiBpMThuLk1lc3NhZ2UsIG1lc3NhZ2VQbGFjZWhvbGRlcjogc3RyaW5nLFxuICAgIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbik6IEljdVN0YXJ0T3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5JY3VTdGFydCxcbiAgICB4cmVmLFxuICAgIG1lc3NhZ2UsXG4gICAgbWVzc2FnZVBsYWNlaG9sZGVyLFxuICAgIGNvbnRleHQ6IG51bGwsXG4gICAgc291cmNlU3BhbixcbiAgICAuLi5ORVdfT1AsXG4gIH07XG59XG5cbi8qKlxuICogQW4gb3AgdGhhdCByZXByZXNlbnRzIHRoZSBlbmQgb2YgYW4gSUNVIGV4cHJlc3Npb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSWN1RW5kT3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4ge1xuICBraW5kOiBPcEtpbmQuSWN1RW5kO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIGNvcnJlc3BvbmRpbmcgSWN1U3RhcnRPcC5cbiAgICovXG4gIHhyZWY6IFhyZWZJZDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIElDVSBlbmQgb3AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJY3VFbmRPcCh4cmVmOiBYcmVmSWQpOiBJY3VFbmRPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLkljdUVuZCxcbiAgICB4cmVmLFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cblxuLyoqXG4gKiBBbiBvcCB0aGF0IHJlcHJlc2VudHMgYSBwbGFjZWhvbGRlciBpbiBhbiBJQ1UgZXhwcmVzc2lvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJY3VQbGFjZWhvbGRlck9wIGV4dGVuZHMgT3A8Q3JlYXRlT3A+IHtcbiAga2luZDogT3BLaW5kLkljdVBsYWNlaG9sZGVyO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIElDVSBwbGFjZWhvbGRlci5cbiAgICovXG4gIHhyZWY6IFhyZWZJZDtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHBsYWNlaG9sZGVyIGluIHRoZSBJQ1UgZXhwcmVzc2lvbi5cbiAgICovXG4gIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHN0YXRpYyBzdHJpbmdzIHRvIGJlIGNvbWJpbmVkIHdpdGggZHluYW1pYyBleHByZXNzaW9uIHZhbHVlcyB0byBmb3JtIHRoZSB0ZXh0LiBUaGlzIHdvcmtzXG4gICAqIGxpa2UgaW50ZXJwb2xhdGlvbiwgYnV0IHRoZSBzdHJpbmdzIGFyZSBjb21iaW5lZCBhdCBjb21waWxlIHRpbWUsIHVzaW5nIHNwZWNpYWwgcGxhY2Vob2xkZXJzXG4gICAqIGZvciB0aGUgZHluYW1pYyBleHByZXNzaW9ucywgYW5kIHB1dCBpbnRvIHRoZSB0cmFuc2xhdGVkIG1lc3NhZ2UuXG4gICAqL1xuICBzdHJpbmdzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUGxhY2Vob2xkZXIgdmFsdWVzIGZvciB0aGUgaTE4biBleHByZXNzaW9ucyB0byBiZSBjb21iaW5lZCB3aXRoIHRoZSBzdGF0aWMgc3RyaW5ncyB0byBmb3JtIHRoZVxuICAgKiBmdWxsIHBsYWNlaG9sZGVyIHZhbHVlLlxuICAgKi9cbiAgZXhwcmVzc2lvblBsYWNlaG9sZGVyczogSTE4blBhcmFtVmFsdWVbXTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIElDVSBwbGFjZWhvbGRlciBvcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUljdVBsYWNlaG9sZGVyT3AoXG4gICAgeHJlZjogWHJlZklkLCBuYW1lOiBzdHJpbmcsIHN0cmluZ3M6IHN0cmluZ1tdKTogSWN1UGxhY2Vob2xkZXJPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLkljdVBsYWNlaG9sZGVyLFxuICAgIHhyZWYsXG4gICAgbmFtZSxcbiAgICBzdHJpbmdzLFxuICAgIGV4cHJlc3Npb25QbGFjZWhvbGRlcnM6IFtdLFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cblxuLyoqXG4gKiBBbiBpMThuIGNvbnRleHQgdGhhdCBpcyB1c2VkIHRvIGdlbmVyYXRlIGEgdHJhbnNsYXRlZCBpMThuIG1lc3NhZ2UuIEEgc2VwYXJhdGUgY29udGV4dCBpcyBjcmVhdGVkXG4gKiBmb3IgdGhyZWUgZGlmZmVyZW50IHNjZW5hcmlvczpcbiAqXG4gKiAxLiBGb3IgZWFjaCB0b3AtbGV2ZWwgaTE4biBibG9jay5cbiAqIDIuIEZvciBlYWNoIElDVSByZWZlcmVuY2VkIGFzIGEgc3ViLW1lc3NhZ2UuIElDVXMgdGhhdCBhcmUgcmVmZXJlbmNlZCBhcyBhIHN1Yi1tZXNzYWdlIHdpbGwgYmVcbiAqICAgIHVzZWQgdG8gZ2VuZXJhdGUgYSBzZXBhcmF0ZSBpMThuIG1lc3NhZ2UsIGJ1dCB3aWxsIG5vdCBiZSBleHRyYWN0ZWQgZGlyZWN0bHkgaW50byB0aGUgY29uc3RzXG4gKiAgICBhcnJheS4gSW5zdGVhZCB0aGV5IHdpbGwgYmUgcHVsbGVkIGluIGFzIHBhcnQgb2YgdGhlIGluaXRpYWxpemF0aW9uIHN0YXRlbWVudHMgZm9yIHRoZSBtZXNzYWdlXG4gKiAgICB0aGF0IHJlZmVyZW5jZXMgdGhlbS5cbiAqIDMuIEZvciBlYWNoIGkxOG4gYXR0cmlidXRlLlxuICpcbiAqIENoaWxkIGkxOG4gYmxvY2tzLCByZXN1bHRpbmcgZnJvbSB0aGUgdXNlIG9mIGFuIG5nLXRlbXBsYXRlIGluc2lkZSBvZiBhIHBhcmVudCBpMThuIGJsb2NrLCBkbyBub3RcbiAqIGdlbmVyYXRlIGEgc2VwYXJhdGUgY29udGV4dC4gSW5zdGVhZCB0aGVpciBjb250ZW50IGlzIGluY2x1ZGVkIGluIHRoZSB0cmFuc2xhdGVkIG1lc3NhZ2UgZm9yXG4gKiB0aGVpciByb290IGJsb2NrLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEkxOG5Db250ZXh0T3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4ge1xuICBraW5kOiBPcEtpbmQuSTE4bkNvbnRleHQ7XG5cbiAgY29udGV4dEtpbmQ6IEkxOG5Db250ZXh0S2luZDtcblxuICAvKipcbiAgICogVGhlIGlkIG9mIHRoaXMgY29udGV4dC5cbiAgICovXG4gIHhyZWY6IFhyZWZJZDtcblxuICAvKipcbiAgICogQSByZWZlcmVuY2UgdG8gdGhlIEkxOG5TdGFydE9wIG9yIEkxOG5PcCB0aGlzIGNvbnRleHQgYmVsb25ncyB0by5cbiAgICpcbiAgICogSXQgaXMgcG9zc2libGUgZm9yIG11bHRpcGxlIGNvbnRleHRzIHRvIGJlbG9uZyB0byB0aGUgc2FtZSBibG9jaywgc2luY2UgYm90aCB0aGUgYmxvY2sgYW5kIGFueVxuICAgKiBJQ1VzIGluc2lkZSB0aGUgYmxvY2sgd2lsbCBlYWNoIGdldCB0aGVpciBvd24gY29udGV4dC5cbiAgICpcbiAgICogVGhpcyBtaWdodCBiZSBgbnVsbGAsIGluIHdoaWNoIGNhc2UgdGhlIGNvbnRleHQgaXMgbm90IGFzc29jaWF0ZWQgd2l0aCBhbiBpMThuIGJsb2NrLiBUaGlzXG4gICAqIHByb2JhYmx5IG1lYW5zIHRoYXQgaXQgYmVsb25ncyB0byBhbiBpMThuIGF0dHJpYnV0ZS5cbiAgICovXG4gIGkxOG5CbG9jazogWHJlZklkfG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBpMThuIG1lc3NhZ2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGV4dC5cbiAgICovXG4gIG1lc3NhZ2U6IGkxOG4uTWVzc2FnZTtcblxuICAvKipcbiAgICogVGhlIHBhcmFtIG1hcCBmb3IgdGhpcyBjb250ZXh0LlxuICAgKi9cbiAgcGFyYW1zOiBNYXA8c3RyaW5nLCBJMThuUGFyYW1WYWx1ZVtdPjtcblxuICAvKipcbiAgICogVGhlIHBvc3QtcHJvY2Vzc2luZyBwYXJhbSBtYXAgZm9yIHRoaXMgY29udGV4dC5cbiAgICovXG4gIHBvc3Rwcm9jZXNzaW5nUGFyYW1zOiBNYXA8c3RyaW5nLCBJMThuUGFyYW1WYWx1ZVtdPjtcblxuICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJMThuQ29udGV4dE9wKFxuICAgIGNvbnRleHRLaW5kOiBJMThuQ29udGV4dEtpbmQsIHhyZWY6IFhyZWZJZCwgaTE4bkJsb2NrOiBYcmVmSWR8bnVsbCwgbWVzc2FnZTogaTE4bi5NZXNzYWdlLFxuICAgIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbik6IEkxOG5Db250ZXh0T3Age1xuICBpZiAoaTE4bkJsb2NrID09PSBudWxsICYmIGNvbnRleHRLaW5kICE9PSBJMThuQ29udGV4dEtpbmQuQXR0cikge1xuICAgIHRocm93IG5ldyBFcnJvcignQXNzZXJ0aW9uRXJyb3I6IGkxOG5CbG9jayBtdXN0IGJlIHByb3ZpZGVkIGZvciBub24tYXR0cmlidXRlIGNvbnRleHRzLicpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuSTE4bkNvbnRleHQsXG4gICAgY29udGV4dEtpbmQsXG4gICAgeHJlZixcbiAgICBpMThuQmxvY2ssXG4gICAgbWVzc2FnZSxcbiAgICBzb3VyY2VTcGFuLFxuICAgIHBhcmFtczogbmV3IE1hcCgpLFxuICAgIHBvc3Rwcm9jZXNzaW5nUGFyYW1zOiBuZXcgTWFwKCksXG4gICAgLi4uTkVXX09QLFxuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEkxOG5BdHRyaWJ1dGVzT3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4sIENvbnN1bWVzU2xvdE9wVHJhaXQge1xuICBraW5kOiBPcEtpbmQuSTE4bkF0dHJpYnV0ZXM7XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRhcmdldGVkIGJ5IHRoZXNlIGF0dHJpYnV0ZXMuXG4gICAqL1xuICB0YXJnZXQ6IFhyZWZJZDtcblxuICAvKipcbiAgICogSTE4bkF0dHJpYnV0ZXMgaW5zdHJ1Y3Rpb25zIGNvcnJlc3BvbmQgdG8gYSBjb25zdCBhcnJheSB3aXRoIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24uXG4gICAqL1xuICBpMThuQXR0cmlidXRlc0NvbmZpZzogQ29uc3RJbmRleHxudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSTE4bkF0dHJpYnV0ZXNPcChcbiAgICB4cmVmOiBYcmVmSWQsIGhhbmRsZTogU2xvdEhhbmRsZSwgdGFyZ2V0OiBYcmVmSWQpOiBJMThuQXR0cmlidXRlc09wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuSTE4bkF0dHJpYnV0ZXMsXG4gICAgeHJlZixcbiAgICBoYW5kbGUsXG4gICAgdGFyZ2V0LFxuICAgIGkxOG5BdHRyaWJ1dGVzQ29uZmlnOiBudWxsLFxuICAgIC4uLk5FV19PUCxcbiAgICAuLi5UUkFJVF9DT05TVU1FU19TTE9ULFxuICB9O1xufVxuXG4vKipcbiAqIEFuIGluZGV4IGludG8gdGhlIGBjb25zdHNgIGFycmF5IHdoaWNoIGlzIHNoYXJlZCBhY3Jvc3MgdGhlIGNvbXBpbGF0aW9uIG9mIGFsbCB2aWV3cyBpbiBhXG4gKiBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCB0eXBlIENvbnN0SW5kZXggPSBudW1iZXIme19fYnJhbmQ6ICdDb25zdEluZGV4J307XG4iXX0=
|
|
387
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXIvc3JjL3RlbXBsYXRlL3BpcGVsaW5lL2lyL3NyYy9vcHMvY3JlYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQU1ILE9BQU8sRUFBZ0MsZUFBZSxFQUF1QixTQUFTLEVBQUUsTUFBTSxFQUFlLE1BQU0sVUFBVSxDQUFDO0FBQzlILE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxFQUFLLE1BQU0sRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQXlDLG1CQUFtQixFQUFFLG1CQUFtQixFQUFDLE1BQU0sV0FBVyxDQUFDO0FBRTNHLE9BQU8sRUFBWSxNQUFNLEVBQTBCLE1BQU0sVUFBVSxDQUFDO0FBb0JwRTs7R0FFRztBQUNILE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDdEMsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsUUFBUTtJQUM3RixNQUFNLENBQUMsY0FBYztDQUN0QixDQUFDLENBQUM7QUFFSDs7R0FFRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxFQUFZO0lBQ2pELE9BQU8sdUJBQXVCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBMEZEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUNoQyxHQUFXLEVBQUUsSUFBWSxFQUFFLFNBQW9CLEVBQUUsZUFBOEMsRUFDL0YsZUFBZ0MsRUFBRSxlQUFnQztJQUNwRSxPQUFPO1FBQ0wsSUFBSSxFQUFFLE1BQU0sQ0FBQyxZQUFZO1FBQ3pCLElBQUk7UUFDSixHQUFHO1FB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QUcsRUFBRTtRQUMvQixHQUFHLE1BQU07S0FDVixDQUFDO0FBQ0osQ0FBQztBQWdCRCxNQUFNLFVBQVUsc0JBQXNCLENBQ2xDLElBQVksRUFBRSxNQUFrQixFQUFFLE1BQWM7SUFDbEQsT0FBTztRQUNMLElBQUksRUFBRSxNQUFNLENBQUMsY0FBYztRQUMzQixJQUFJO1FBQ0osTUFBTTtRQUNOLE1BQU07UUFDTixvQkFBb0IsRUFBRSxJQUFJO1FBQzFCLEdBQUcsTUFBTTtRQUNULEdBQUcsbUJBQW1CO0tBQ3ZCLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7U2VjdXJpdHlDb250ZXh0fSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb3JlJztcbmltcG9ydCAqIGFzIGkxOG4gZnJvbSAnLi4vLi4vLi4vLi4vLi4vaTE4bi9pMThuX2FzdCc7XG5pbXBvcnQgKiBhcyBvIGZyb20gJy4uLy4uLy4uLy4uLy4uL291dHB1dC9vdXRwdXRfYXN0JztcbmltcG9ydCB7UGFyc2VTb3VyY2VTcGFufSBmcm9tICcuLi8uLi8uLi8uLi8uLi9wYXJzZV91dGlsJztcbmltcG9ydCB7QmluZGluZ0tpbmQsIERlZmVyVHJpZ2dlcktpbmQsIEkxOG5Db250ZXh0S2luZCwgSTE4blBhcmFtVmFsdWVGbGFncywgTmFtZXNwYWNlLCBPcEtpbmQsIFRlbXBsYXRlS2luZH0gZnJvbSAnLi4vZW51bXMnO1xuaW1wb3J0IHtTbG90SGFuZGxlfSBmcm9tICcuLi9oYW5kbGUnO1xuaW1wb3J0IHtPcCwgT3BMaXN0LCBYcmVmSWR9IGZyb20gJy4uL29wZXJhdGlvbnMnO1xuaW1wb3J0IHtDb25zdW1lc1Nsb3RPcFRyYWl0LCBDb25zdW1lc1ZhcnNUcmFpdCwgVFJBSVRfQ09OU1VNRVNfU0xPVCwgVFJBSVRfQ09OU1VNRVNfVkFSU30gZnJvbSAnLi4vdHJhaXRzJztcblxuaW1wb3J0IHtMaXN0RW5kT3AsIE5FV19PUCwgU3RhdGVtZW50T3AsIFZhcmlhYmxlT3B9IGZyb20gJy4vc2hhcmVkJztcblxuaW1wb3J0IHR5cGUge1VwZGF0ZU9wfSBmcm9tICcuL3VwZGF0ZSc7XG5cbi8qKlxuICogQW4gb3BlcmF0aW9uIHVzYWJsZSBvbiB0aGUgY3JlYXRpb24gc2lkZSBvZiB0aGUgSVIuXG4gKi9cbmV4cG9ydCB0eXBlIENyZWF0ZU9wID1cbiAgICBMaXN0RW5kT3A8Q3JlYXRlT3A+fFN0YXRlbWVudE9wPENyZWF0ZU9wPnxFbGVtZW50T3B8RWxlbWVudFN0YXJ0T3B8RWxlbWVudEVuZE9wfENvbnRhaW5lck9wfFxuICAgIENvbnRhaW5lclN0YXJ0T3B8Q29udGFpbmVyRW5kT3B8VGVtcGxhdGVPcHxFbmFibGVCaW5kaW5nc09wfERpc2FibGVCaW5kaW5nc09wfFRleHRPcHxMaXN0ZW5lck9wfFxuICAgIFR3b1dheUxpc3RlbmVyT3B8UGlwZU9wfFZhcmlhYmxlT3A8Q3JlYXRlT3A+fE5hbWVzcGFjZU9wfFByb2plY3Rpb25EZWZPcHxQcm9qZWN0aW9uT3B8XG4gICAgRXh0cmFjdGVkQXR0cmlidXRlT3B8RGVmZXJPcHxEZWZlck9uT3B8UmVwZWF0ZXJDcmVhdGVPcHxJMThuTWVzc2FnZU9wfEkxOG5PcHxJMThuU3RhcnRPcHxcbiAgICBJMThuRW5kT3B8SWN1U3RhcnRPcHxJY3VFbmRPcHxJY3VQbGFjZWhvbGRlck9wfEkxOG5Db250ZXh0T3B8STE4bkF0dHJpYnV0ZXNPcDtcblxuLyoqXG4gKiBBbiBvcGVyYXRpb24gcmVwcmVzZW50aW5nIHRoZSBjcmVhdGlvbiBvZiBhbiBlbGVtZW50IG9yIGNvbnRhaW5lci5cbiAqL1xuZXhwb3J0IHR5cGUgRWxlbWVudE9yQ29udGFpbmVyT3BzID1cbiAgICBFbGVtZW50T3B8RWxlbWVudFN0YXJ0T3B8Q29udGFpbmVyT3B8Q29udGFpbmVyU3RhcnRPcHxUZW1wbGF0ZU9wfFJlcGVhdGVyQ3JlYXRlT3A7XG5cbi8qKlxuICogVGhlIHNldCBvZiBPcEtpbmRzIHRoYXQgcmVwcmVzZW50IHRoZSBjcmVhdGlvbiBvZiBhbiBlbGVtZW50IG9yIGNvbnRhaW5lclxuICovXG5jb25zdCBlbGVtZW50Q29udGFpbmVyT3BLaW5kcyA9IG5ldyBTZXQoW1xuICBPcEtpbmQuRWxlbWVudCwgT3BLaW5kLkVsZW1lbnRTdGFydCwgT3BLaW5kLkNvbnRhaW5lciwgT3BLaW5kLkNvbnRhaW5lclN0YXJ0LCBPcEtpbmQuVGVtcGxhdGUsXG4gIE9wS2luZC5SZXBlYXRlckNyZWF0ZVxuXSk7XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIG9wZXJhdGlvbiByZXByZXNlbnRzIHRoZSBjcmVhdGlvbiBvZiBhbiBlbGVtZW50IG9yIGNvbnRhaW5lci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRWxlbWVudE9yQ29udGFpbmVyT3Aob3A6IENyZWF0ZU9wKTogb3AgaXMgRWxlbWVudE9yQ29udGFpbmVyT3BzIHtcbiAgcmV0dXJuIGVsZW1lbnRDb250YWluZXJPcEtpbmRzLmhhcyhvcC5raW5kKTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRhdGlvbiBvZiBhIGxvY2FsIHJlZmVyZW5jZSBvbiBhbiBlbGVtZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvY2FsUmVmIHtcbiAgLyoqXG4gICAqIFVzZXItZGVmaW5lZCBuYW1lIG9mIHRoZSBsb2NhbCByZWYgdmFyaWFibGUuXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRhcmdldCBvZiB0aGUgbG9jYWwgcmVmZXJlbmNlIHZhcmlhYmxlIChvZnRlbiBgJydgKS5cbiAgICovXG4gIHRhcmdldDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEJhc2UgaW50ZXJmYWNlIGZvciBgRWxlbWVudGAsIGBFbGVtZW50U3RhcnRgLCBhbmQgYFRlbXBsYXRlYCBvcGVyYXRpb25zLCBjb250YWluaW5nIGNvbW1vbiBmaWVsZHNcbiAqIHVzZWQgdG8gcmVwcmVzZW50IHRoZWlyIGVsZW1lbnQtbGlrZSBuYXR1cmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWxlbWVudE9yQ29udGFpbmVyT3BCYXNlIGV4dGVuZHMgT3A8Q3JlYXRlT3A+LCBDb25zdW1lc1Nsb3RPcFRyYWl0IHtcbiAga2luZDogRWxlbWVudE9yQ29udGFpbmVyT3BzWydraW5kJ107XG5cbiAgLyoqXG4gICAqIGBYcmVmSWRgIGFsbG9jYXRlZCBmb3IgdGhpcyBlbGVtZW50LlxuICAgKlxuICAgKiBUaGlzIElEIGlzIHVzZWQgdG8gcmVmZXJlbmNlIHRoaXMgZWxlbWVudCBmcm9tIG90aGVyIElSIHN0cnVjdHVyZXMuXG4gICAqL1xuICB4cmVmOiBYcmVmSWQ7XG5cbiAgLyoqXG4gICAqIEF0dHJpYnV0ZXMgb2YgdmFyaW91cyBraW5kcyBvbiB0aGlzIGVsZW1lbnQuIFJlcHJlc2VudGVkIGFzIGEgYENvbnN0SW5kZXhgIHBvaW50ZXIgaW50byB0aGVcbiAgICogc2hhcmVkIGBjb25zdHNgIGFycmF5IG9mIHRoZSBjb21wb25lbnQgY29tcGlsYXRpb24uXG4gICAqL1xuICBhdHRyaWJ1dGVzOiBDb25zdEluZGV4fG51bGw7XG5cbiAgLyoqXG4gICAqIExvY2FsIHJlZmVyZW5jZXMgdG8gdGhpcyBlbGVtZW50LlxuICAgKlxuICAgKiBCZWZvcmUgbG9jYWwgcmVmIHByb2Nlc3NpbmcsIHRoaXMgaXMgYW4gYXJyYXkgb2YgYExvY2FsUmVmYCBkZWNsYXJhdGlvbnMuXG4gICAqXG4gICAqIEFmdGVyIHByb2Nlc3NpbmcsIGl0J3MgYSBgQ29uc3RJbmRleGAgcG9pbnRlciBpbnRvIHRoZSBzaGFyZWQgYGNvbnN0c2AgYXJyYXkgb2YgdGhlIGNvbXBvbmVudFxuICAgKiBjb21waWxhdGlvbi5cbiAgICovXG4gIGxvY2FsUmVmczogTG9jYWxSZWZbXXxDb25zdEluZGV4fG51bGw7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBjb250YWluZXIgaXMgbWFya2VkIGBuZ05vbkJpbmRhYmxlYCwgd2hpY2ggZGlzYWJsZWQgQW5ndWxhciBiaW5kaW5nIGZvciBpdHNlbGYgYW5kXG4gICAqIGFsbCBkZXNjZW5kYW50cy5cbiAgICovXG4gIG5vbkJpbmRhYmxlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc3BhbiBvZiB0aGUgZWxlbWVudCdzIHN0YXJ0IHRhZy5cbiAgICovXG4gIHN0YXJ0U291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuO1xuXG4gIC8qKlxuICAgKiBUaGUgd2hvbGUgc291cmNlIHNwYW4gb2YgdGhlIGVsZW1lbnQsIGluY2x1ZGluZyBjaGlsZHJlbi5cbiAgICovXG4gIHdob2xlU291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVsZW1lbnRPcEJhc2UgZXh0ZW5kcyBFbGVtZW50T3JDb250YWluZXJPcEJhc2Uge1xuICBraW5kOiBPcEtpbmQuRWxlbWVudHxPcEtpbmQuRWxlbWVudFN0YXJ0fE9wS2luZC5UZW1wbGF0ZXxPcEtpbmQuUmVwZWF0ZXJDcmVhdGU7XG5cbiAgLyoqXG4gICAqIFRoZSBIVE1MIHRhZyBuYW1lIGZvciB0aGlzIGVsZW1lbnQuXG4gICAqL1xuICB0YWc6IHN0cmluZ3xudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZXNwYWNlIG9mIHRoaXMgZWxlbWVudCwgd2hpY2ggY29udHJvbHMgdGhlIHByZWNlZGluZyBuYW1lc3BhY2UgaW5zdHJ1Y3Rpb24uXG4gICAqL1xuICBuYW1lc3BhY2U6IE5hbWVzcGFjZTtcbn1cblxuLyoqXG4gKiBMb2dpY2FsIG9wZXJhdGlvbiByZXByZXNlbnRpbmcgdGhlIHN0YXJ0IG9mIGFuIGVsZW1lbnQgaW4gdGhlIGNyZWF0aW9uIElSLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVsZW1lbnRTdGFydE9wIGV4dGVuZHMgRWxlbWVudE9wQmFzZSB7XG4gIGtpbmQ6IE9wS2luZC5FbGVtZW50U3RhcnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBpMThuIHBsYWNlaG9sZGVyIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZWxlbWVudC5cbiAgICovXG4gIGkxOG5QbGFjZWhvbGRlcj86IGkxOG4uVGFnUGxhY2Vob2xkZXI7XG59XG5cbi8qKlxuICogQ3JlYXRlIGFuIGBFbGVtZW50U3RhcnRPcGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFbGVtZW50U3RhcnRPcChcbiAgICB0YWc6IHN0cmluZywgeHJlZjogWHJlZklkLCBuYW1lc3BhY2U6IE5hbWVzcGFjZSwgaTE4blBsYWNlaG9sZGVyOiBpMThuLlRhZ1BsYWNlaG9sZGVyfHVuZGVmaW5lZCxcbiAgICBzdGFydFNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbiwgd2hvbGVTb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pOiBFbGVtZW50U3RhcnRPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLkVsZW1lbnRTdGFydCxcbiAgICB4cmVmLFxuICAgIHRhZyxcbiAgICBoYW5kbGU6IG5ldyBTbG90SGFuZGxlKCksXG4gICAgYXR0cmlidXRlczogbnVsbCxcbiAgICBsb2NhbFJlZnM6IFtdLFxuICAgIG5vbkJpbmRhYmxlOiBmYWxzZSxcbiAgICBuYW1lc3BhY2UsXG4gICAgaTE4blBsYWNlaG9sZGVyLFxuICAgIHN0YXJ0U291cmNlU3BhbixcbiAgICB3aG9sZVNvdXJjZVNwYW4sXG4gICAgLi4uVFJBSVRfQ09OU1VNRVNfU0xPVCxcbiAgICAuLi5ORVdfT1AsXG4gIH07XG59XG5cbi8qKlxuICogTG9naWNhbCBvcGVyYXRpb24gcmVwcmVzZW50aW5nIGFuIGVsZW1lbnQgd2l0aCBubyBjaGlsZHJlbiBpbiB0aGUgY3JlYXRpb24gSVIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWxlbWVudE9wIGV4dGVuZHMgRWxlbWVudE9wQmFzZSB7XG4gIGtpbmQ6IE9wS2luZC5FbGVtZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgaTE4biBwbGFjZWhvbGRlciBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGVsZW1lbnQuXG4gICAqL1xuICBpMThuUGxhY2Vob2xkZXI/OiBpMThuLlRhZ1BsYWNlaG9sZGVyO1xufVxuXG4vKipcbiAqIExvZ2ljYWwgb3BlcmF0aW9uIHJlcHJlc2VudGluZyBhbiBlbWJlZGRlZCB2aWV3IGRlY2xhcmF0aW9uIGluIHRoZSBjcmVhdGlvbiBJUi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZU9wIGV4dGVuZHMgRWxlbWVudE9wQmFzZSB7XG4gIGtpbmQ6IE9wS2luZC5UZW1wbGF0ZTtcblxuICB0ZW1wbGF0ZUtpbmQ6IFRlbXBsYXRlS2luZDtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBkZWNsYXJhdGlvbiBzbG90cyB1c2VkIGJ5IHRoaXMgdGVtcGxhdGUsIG9yIGBudWxsYCBpZiBzbG90cyBoYXZlIG5vdCB5ZXQgYmVlblxuICAgKiBhc3NpZ25lZC5cbiAgICovXG4gIGRlY2xzOiBudW1iZXJ8bnVsbDtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBiaW5kaW5nIHZhcmlhYmxlIHNsb3RzIHVzZWQgYnkgdGhpcyB0ZW1wbGF0ZSwgb3IgYG51bGxgIGlmIGJpbmRpbmcgdmFyaWFibGVzIGhhdmVcbiAgICogbm90IHlldCBiZWVuIGNvdW50ZWQuXG4gICAqL1xuICB2YXJzOiBudW1iZXJ8bnVsbDtcblxuICAvKipcbiAgICogU3VmZml4IHRvIGFkZCB0byB0aGUgbmFtZSBvZiB0aGUgZ2VuZXJhdGVkIHRlbXBsYXRlIGZ1bmN0aW9uLlxuICAgKi9cbiAgZnVuY3Rpb25OYW1lU3VmZml4OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpMThuIHBsYWNlaG9sZGVyIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdGVtcGxhdGUuXG4gICAqL1xuICBpMThuUGxhY2Vob2xkZXI/OiBpMThuLlRhZ1BsYWNlaG9sZGVyfGkxOG4uQmxvY2tQbGFjZWhvbGRlcjtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBgVGVtcGxhdGVPcGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUZW1wbGF0ZU9wKFxuICAgIHhyZWY6IFhyZWZJZCwgdGVtcGxhdGVLaW5kOiBUZW1wbGF0ZUtpbmQsIHRhZzogc3RyaW5nfG51bGwsIGZ1bmN0aW9uTmFtZVN1ZmZpeDogc3RyaW5nLFxuICAgIG5hbWVzcGFjZTogTmFtZXNwYWNlLCBpMThuUGxhY2Vob2xkZXI6IGkxOG4uVGFnUGxhY2Vob2xkZXJ8aTE4bi5CbG9ja1BsYWNlaG9sZGVyfHVuZGVmaW5lZCxcbiAgICBzdGFydFNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbiwgd2hvbGVTb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pOiBUZW1wbGF0ZU9wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuVGVtcGxhdGUsXG4gICAgeHJlZixcbiAgICB0ZW1wbGF0ZUtpbmQsXG4gICAgYXR0cmlidXRlczogbnVsbCxcbiAgICB0YWcsXG4gICAgaGFuZGxlOiBuZXcgU2xvdEhhbmRsZSgpLFxuICAgIGZ1bmN0aW9uTmFtZVN1ZmZpeCxcbiAgICBkZWNsczogbnVsbCxcbiAgICB2YXJzOiBudWxsLFxuICAgIGxvY2FsUmVmczogW10sXG4gICAgbm9uQmluZGFibGU6IGZhbHNlLFxuICAgIG5hbWVzcGFjZSxcbiAgICBpMThuUGxhY2Vob2xkZXIsXG4gICAgc3RhcnRTb3VyY2VTcGFuLFxuICAgIHdob2xlU291cmNlU3BhbixcbiAgICAuLi5UUkFJVF9DT05TVU1FU19TTE9ULFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cblxuLyoqXG4gKiBBbiBvcCB0aGF0IGNyZWF0ZXMgYSByZXBlYXRlciAoZS5nLiBhIGZvciBsb29wKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBlYXRlckNyZWF0ZU9wIGV4dGVuZHMgRWxlbWVudE9wQmFzZSwgQ29uc3VtZXNWYXJzVHJhaXQge1xuICBraW5kOiBPcEtpbmQuUmVwZWF0ZXJDcmVhdGU7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgZGVjbGFyYXRpb24gc2xvdHMgdXNlZCBieSB0aGlzIHJlcGVhdGVyJ3MgdGVtcGxhdGUsIG9yIGBudWxsYCBpZiBzbG90cyBoYXZlIG5vdFxuICAgKiB5ZXQgYmVlbiBhc3NpZ25lZC5cbiAgICovXG4gIGRlY2xzOiBudW1iZXJ8bnVsbDtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBiaW5kaW5nIHZhcmlhYmxlIHNsb3RzIHVzZWQgYnkgdGhpcyByZXBlYXRlcidzLCBvciBgbnVsbGAgaWYgYmluZGluZyB2YXJpYWJsZXNcbiAgICogaGF2ZSBub3QgeWV0IGJlZW4gY291bnRlZC5cbiAgICovXG4gIHZhcnM6IG51bWJlcnxudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgWHJlZiBvZiB0aGUgZW1wdHkgdmlldyBmdW5jdGlvbi4gKEZvciB0aGUgcHJpbWFyeSB2aWV3IGZ1bmN0aW9uLCB1c2UgdGhlIGB4cmVmYCBwcm9wZXJ0eSkuXG4gICAqL1xuICBlbXB0eVZpZXc6IFhyZWZJZHxudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgdHJhY2sgZXhwcmVzc2lvbiB0byB1c2Ugd2hpbGUgaXRlcmF0aW5nLlxuICAgKi9cbiAgdHJhY2s6IG8uRXhwcmVzc2lvbjtcblxuICAvKipcbiAgICogYG51bGxgIGluaXRpYWxseSwgdGhlbiBhbiBgby5FeHByZXNzaW9uYC4gTWlnaHQgYmUgYSB0cmFjayBleHByZXNzaW9uLCBvciBtaWdodCBiZSBhIHJlZmVyZW5jZVxuICAgKiBpbnRvIHRoZSBjb25zdGFudCBwb29sLlxuICAgKi9cbiAgdHJhY2tCeUZuOiBvLkV4cHJlc3Npb258bnVsbDtcblxuICAvKipcbiAgICogQ29udGV4dCB2YXJpYWJsZXMgYXZhaWFsYWJsZSBpbiB0aGlzIGJsb2NrLlxuICAgKi9cbiAgdmFyTmFtZXM6IFJlcGVhdGVyVmFyTmFtZXM7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHJlcGVhdGVyIHRyYWNrIGZ1bmN0aW9uIHJlbGllcyBvbiB0aGUgY29tcG9uZW50IGluc3RhbmNlLlxuICAgKi9cbiAgdXNlc0NvbXBvbmVudEluc3RhbmNlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTdWZmaXggdG8gYWRkIHRvIHRoZSBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQgdGVtcGxhdGUgZnVuY3Rpb24uXG4gICAqL1xuICBmdW5jdGlvbk5hbWVTdWZmaXg6IHN0cmluZztcblxuICAvKipcbiAgICogVGFnIG5hbWUgZm9yIHRoZSBlbXB0eSBibG9jay5cbiAgICovXG4gIGVtcHR5VGFnOiBzdHJpbmd8bnVsbDtcblxuICAvKipcbiAgICogQXR0cmlidXRlcyBvZiB2YXJpb3VzIGtpbmRzIG9uIHRoZSBlbXB0eSBibG9jay4gUmVwcmVzZW50ZWQgYXMgYSBgQ29uc3RJbmRleGAgcG9pbnRlciBpbnRvIHRoZVxuICAgKiBzaGFyZWQgYGNvbnN0c2AgYXJyYXkgb2YgdGhlIGNvbXBvbmVudCBjb21waWxhdGlvbi5cbiAgICovXG4gIGVtcHR5QXR0cmlidXRlczogQ29uc3RJbmRleHxudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgaTE4biBwbGFjZWhvbGRlciBmb3IgdGhlIHJlcGVhdGVkIGl0ZW0gdGVtcGxhdGUuXG4gICAqL1xuICBpMThuUGxhY2Vob2xkZXI6IGkxOG4uQmxvY2tQbGFjZWhvbGRlcnx1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBpMThuIHBsYWNlaG9sZGVyIGZvciB0aGUgZW1wdHkgdGVtcGxhdGUuXG4gICAqL1xuICBlbXB0eUkxOG5QbGFjZWhvbGRlcjogaTE4bi5CbG9ja1BsYWNlaG9sZGVyfHVuZGVmaW5lZDtcbn1cblxuLy8gVE9ETzogYWRkIHNvdXJjZSBzcGFucz9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwZWF0ZXJWYXJOYW1lcyB7XG4gICRpbmRleDogU2V0PHN0cmluZz47XG4gICRpbXBsaWNpdDogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVwZWF0ZXJDcmVhdGVPcChcbiAgICBwcmltYXJ5VmlldzogWHJlZklkLCBlbXB0eVZpZXc6IFhyZWZJZHxudWxsLCB0YWc6IHN0cmluZ3xudWxsLCB0cmFjazogby5FeHByZXNzaW9uLFxuICAgIHZhck5hbWVzOiBSZXBlYXRlclZhck5hbWVzLCBlbXB0eVRhZzogc3RyaW5nfG51bGwsXG4gICAgaTE4blBsYWNlaG9sZGVyOiBpMThuLkJsb2NrUGxhY2Vob2xkZXJ8dW5kZWZpbmVkLFxuICAgIGVtcHR5STE4blBsYWNlaG9sZGVyOiBpMThuLkJsb2NrUGxhY2Vob2xkZXJ8dW5kZWZpbmVkLCBzdGFydFNvdXJjZVNwYW46IFBhcnNlU291cmNlU3BhbixcbiAgICB3aG9sZVNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbik6IFJlcGVhdGVyQ3JlYXRlT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5SZXBlYXRlckNyZWF0ZSxcbiAgICBhdHRyaWJ1dGVzOiBudWxsLFxuICAgIHhyZWY6IHByaW1hcnlWaWV3LFxuICAgIGhhbmRsZTogbmV3IFNsb3RIYW5kbGUoKSxcbiAgICBlbXB0eVZpZXcsXG4gICAgdHJhY2ssXG4gICAgdHJhY2tCeUZuOiBudWxsLFxuICAgIHRhZyxcbiAgICBlbXB0eVRhZyxcbiAgICBlbXB0eUF0dHJpYnV0ZXM6IG51bGwsXG4gICAgZnVuY3Rpb25OYW1lU3VmZml4OiAnRm9yJyxcbiAgICBuYW1lc3BhY2U6IE5hbWVzcGFjZS5IVE1MLFxuICAgIG5vbkJpbmRhYmxlOiBmYWxzZSxcbiAgICBsb2NhbFJlZnM6IFtdLFxuICAgIGRlY2xzOiBudWxsLFxuICAgIHZhcnM6IG51bGwsXG4gICAgdmFyTmFtZXMsXG4gICAgdXNlc0NvbXBvbmVudEluc3RhbmNlOiBmYWxzZSxcbiAgICBpMThuUGxhY2Vob2xkZXIsXG4gICAgZW1wdHlJMThuUGxhY2Vob2xkZXIsXG4gICAgc3RhcnRTb3VyY2VTcGFuLFxuICAgIHdob2xlU291cmNlU3BhbixcbiAgICAuLi5UUkFJVF9DT05TVU1FU19TTE9ULFxuICAgIC4uLk5FV19PUCxcbiAgICAuLi5UUkFJVF9DT05TVU1FU19WQVJTLFxuICAgIG51bVNsb3RzVXNlZDogZW1wdHlWaWV3ID09PSBudWxsID8gMiA6IDMsXG4gIH07XG59XG5cbi8qKlxuICogTG9naWNhbCBvcGVyYXRpb24gcmVwcmVzZW50aW5nIHRoZSBlbmQgb2YgYW4gZWxlbWVudCBzdHJ1Y3R1cmUgaW4gdGhlIGNyZWF0aW9uIElSLlxuICpcbiAqIFBhaXJzIHdpdGggYW4gYEVsZW1lbnRTdGFydGAgb3BlcmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVsZW1lbnRFbmRPcCBleHRlbmRzIE9wPENyZWF0ZU9wPiB7XG4gIGtpbmQ6IE9wS2luZC5FbGVtZW50RW5kO1xuXG4gIC8qKlxuICAgKiBUaGUgYFhyZWZJZGAgb2YgdGhlIGVsZW1lbnQgZGVjbGFyZWQgdmlhIGBFbGVtZW50U3RhcnRgLlxuICAgKi9cbiAgeHJlZjogWHJlZklkO1xuXG4gIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3BhbnxudWxsO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhbiBgRWxlbWVudEVuZE9wYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnRFbmRPcCh4cmVmOiBYcmVmSWQsIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3BhbnxudWxsKTogRWxlbWVudEVuZE9wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuRWxlbWVudEVuZCxcbiAgICB4cmVmLFxuICAgIHNvdXJjZVNwYW4sXG4gICAgLi4uTkVXX09QLFxuICB9O1xufVxuXG4vKipcbiAqIExvZ2ljYWwgb3BlcmF0aW9uIHJlcHJlc2VudGluZyB0aGUgc3RhcnQgb2YgYSBjb250YWluZXIgaW4gdGhlIGNyZWF0aW9uIElSLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhaW5lclN0YXJ0T3AgZXh0ZW5kcyBFbGVtZW50T3JDb250YWluZXJPcEJhc2Uge1xuICBraW5kOiBPcEtpbmQuQ29udGFpbmVyU3RhcnQ7XG59XG5cbi8qKlxuICogTG9naWNhbCBvcGVyYXRpb24gcmVwcmVzZW50aW5nIGFuIGVtcHR5IGNvbnRhaW5lciBpbiB0aGUgY3JlYXRpb24gSVIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFpbmVyT3AgZXh0ZW5kcyBFbGVtZW50T3JDb250YWluZXJPcEJhc2Uge1xuICBraW5kOiBPcEtpbmQuQ29udGFpbmVyO1xufVxuXG4vKipcbiAqIExvZ2ljYWwgb3BlcmF0aW9uIHJlcHJlc2VudGluZyB0aGUgZW5kIG9mIGEgY29udGFpbmVyIHN0cnVjdHVyZSBpbiB0aGUgY3JlYXRpb24gSVIuXG4gKlxuICogUGFpcnMgd2l0aCBhbiBgQ29udGFpbmVyU3RhcnRgIG9wZXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250YWluZXJFbmRPcCBleHRlbmRzIE9wPENyZWF0ZU9wPiB7XG4gIGtpbmQ6IE9wS2luZC5Db250YWluZXJFbmQ7XG5cbiAgLyoqXG4gICAqIFRoZSBgWHJlZklkYCBvZiB0aGUgZWxlbWVudCBkZWNsYXJlZCB2aWEgYENvbnRhaW5lclN0YXJ0YC5cbiAgICovXG4gIHhyZWY6IFhyZWZJZDtcblxuICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW47XG59XG5cbi8qKlxuICogTG9naWNhbCBvcGVyYXRpb24gY2F1c2luZyBiaW5kaW5nIHRvIGJlIGRpc2FibGVkIGluIGRlc2NlbmRlbnRzIG9mIGEgbm9uLWJpbmRhYmxlIGNvbnRhaW5lci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEaXNhYmxlQmluZGluZ3NPcCBleHRlbmRzIE9wPENyZWF0ZU9wPiB7XG4gIGtpbmQ6IE9wS2luZC5EaXNhYmxlQmluZGluZ3M7XG5cbiAgLyoqXG4gICAqIGBYcmVmSWRgIG9mIHRoZSBlbGVtZW50IHRoYXQgd2FzIG1hcmtlZCBub24tYmluZGFibGUuXG4gICAqL1xuICB4cmVmOiBYcmVmSWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEaXNhYmxlQmluZGluZ3NPcCh4cmVmOiBYcmVmSWQpOiBEaXNhYmxlQmluZGluZ3NPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLkRpc2FibGVCaW5kaW5ncyxcbiAgICB4cmVmLFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cblxuLyoqXG4gKiBMb2dpY2FsIG9wZXJhdGlvbiBjYXVzaW5nIGJpbmRpbmcgdG8gYmUgcmUtZW5hYmxlZCBhZnRlciB2aXNpdGluZyBkZXNjZW5kYW50cyBvZiBhXG4gKiBub24tYmluZGFibGUgY29udGFpbmVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVuYWJsZUJpbmRpbmdzT3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4ge1xuICBraW5kOiBPcEtpbmQuRW5hYmxlQmluZGluZ3M7XG5cbiAgLyoqXG4gICAqIGBYcmVmSWRgIG9mIHRoZSBlbGVtZW50IHRoYXQgd2FzIG1hcmtlZCBub24tYmluZGFibGUuXG4gICAqL1xuICB4cmVmOiBYcmVmSWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFbmFibGVCaW5kaW5nc09wKHhyZWY6IFhyZWZJZCk6IEVuYWJsZUJpbmRpbmdzT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5FbmFibGVCaW5kaW5ncyxcbiAgICB4cmVmLFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cblxuLyoqXG4gKiBMb2dpY2FsIG9wZXJhdGlvbiByZXByZXNlbnRpbmcgYSB0ZXh0IG5vZGUgaW4gdGhlIGNyZWF0aW9uIElSLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRleHRPcCBleHRlbmRzIE9wPENyZWF0ZU9wPiwgQ29uc3VtZXNTbG90T3BUcmFpdCB7XG4gIGtpbmQ6IE9wS2luZC5UZXh0O1xuXG4gIC8qKlxuICAgKiBgWHJlZklkYCB1c2VkIHRvIHJlZmVyZW5jZSB0aGlzIHRleHQgbm9kZSBpbiBvdGhlciBJUiBzdHJ1Y3R1cmVzLlxuICAgKi9cbiAgeHJlZjogWHJlZklkO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhdGljIGluaXRpYWwgdmFsdWUgb2YgdGhlIHRleHQgbm9kZS5cbiAgICovXG4gIGluaXRpYWxWYWx1ZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGxhY2Vob2xkZXIgZm9yIHRoaXMgdGV4dCBpbiBpdHMgcGFyZW50IElDVS4gSWYgdGhpcyB0ZXh0IGlzIG5vdCBwYXJ0IG9mIGFuIElDVSwgdGhlXG4gICAqIHBsYWNlaG9sZGVyIGlzIG51bGwuXG4gICAqL1xuICBpY3VQbGFjZWhvbGRlcjogc3RyaW5nfG51bGw7XG5cbiAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFufG51bGw7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgYFRleHRPcGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUZXh0T3AoXG4gICAgeHJlZjogWHJlZklkLCBpbml0aWFsVmFsdWU6IHN0cmluZywgaWN1UGxhY2Vob2xkZXI6IHN0cmluZ3xudWxsLFxuICAgIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3BhbnxudWxsKTogVGV4dE9wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuVGV4dCxcbiAgICB4cmVmLFxuICAgIGhhbmRsZTogbmV3IFNsb3RIYW5kbGUoKSxcbiAgICBpbml0aWFsVmFsdWUsXG4gICAgaWN1UGxhY2Vob2xkZXIsXG4gICAgc291cmNlU3BhbixcbiAgICAuLi5UUkFJVF9DT05TVU1FU19TTE9ULFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cblxuLyoqXG4gKiBMb2dpY2FsIG9wZXJhdGlvbiByZXByZXNlbnRpbmcgYW4gZXZlbnQgbGlzdGVuZXIgb24gYW4gZWxlbWVudCBpbiB0aGUgY3JlYXRpb24gSVIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdGVuZXJPcCBleHRlbmRzIE9wPENyZWF0ZU9wPiB7XG4gIGtpbmQ6IE9wS2luZC5MaXN0ZW5lcjtcblxuICB0YXJnZXQ6IFhyZWZJZDtcbiAgdGFyZ2V0U2xvdDogU2xvdEhhbmRsZTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGxpc3RlbmVyIGlzIGZyb20gYSBob3N0IGJpbmRpbmcuXG4gICAqL1xuICBob3N0TGlzdGVuZXI6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGV2ZW50IHdoaWNoIGlzIGJlaW5nIGxpc3RlbmVkIHRvLlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUYWcgbmFtZSBvZiB0aGUgZWxlbWVudCBvbiB3aGljaCB0aGlzIGxpc3RlbmVyIGlzIHBsYWNlZC4gTWlnaHQgYmUgbnVsbCwgaWYgdGhpcyBsaXN0ZW5lclxuICAgKiBiZWxvbmdzIHRvIGEgaG9zdCBiaW5kaW5nLlxuICAgKi9cbiAgdGFnOiBzdHJpbmd8bnVsbDtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGBVcGRhdGVPcGBzIHJlcHJlc2VudGluZyB0aGUgYm9keSBvZiB0aGUgZXZlbnQgbGlzdGVuZXIuXG4gICAqL1xuICBoYW5kbGVyT3BzOiBPcExpc3Q8VXBkYXRlT3A+O1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBmdW5jdGlvblxuICAgKi9cbiAgaGFuZGxlckZuTmFtZTogc3RyaW5nfG51bGw7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBsaXN0ZW5lciBpcyBrbm93biB0byBjb25zdW1lIGAkZXZlbnRgIGluIGl0cyBib2R5LlxuICAgKi9cbiAgY29uc3VtZXNEb2xsYXJFdmVudDogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgbGlzdGVuZXIgaXMgbGlzdGVuaW5nIGZvciBhbiBhbmltYXRpb24gZXZlbnQuXG4gICAqL1xuICBpc0FuaW1hdGlvbkxpc3RlbmVyOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgYW5pbWF0aW9uIHBoYXNlIG9mIHRoZSBsaXN0ZW5lci5cbiAgICovXG4gIGFuaW1hdGlvblBoYXNlOiBzdHJpbmd8bnVsbDtcblxuICAvKipcbiAgICogU29tZSBldmVudCBsaXN0ZW5lcnMgY2FuIGhhdmUgYSB0YXJnZXQsIGUuZy4gaW4gYGRvY3VtZW50OmRyYWdvdmVyYC5cbiAgICovXG4gIGV2ZW50VGFyZ2V0OiBzdHJpbmd8bnVsbDtcblxuICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW47XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgYExpc3RlbmVyT3BgLiBIb3N0IGJpbmRpbmdzIHJldXNlIGFsbCB0aGUgbGlzdGVuZXIgbG9naWMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMaXN0ZW5lck9wKFxuICAgIHRhcmdldDogWHJlZklkLCB0YXJnZXRTbG90OiBTbG90SGFuZGxlLCBuYW1lOiBzdHJpbmcsIHRhZzogc3RyaW5nfG51bGwsXG4gICAgaGFuZGxlck9wczogQXJyYXk8VXBkYXRlT3A+LCBhbmltYXRpb25QaGFzZTogc3RyaW5nfG51bGwsIGV2ZW50VGFyZ2V0OiBzdHJpbmd8bnVsbCxcbiAgICBob3N0TGlzdGVuZXI6IGJvb2xlYW4sIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbik6IExpc3RlbmVyT3Age1xuICBjb25zdCBoYW5kbGVyTGlzdCA9IG5ldyBPcExpc3Q8VXBkYXRlT3A+KCk7XG4gIGhhbmRsZXJMaXN0LnB1c2goaGFuZGxlck9wcyk7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLkxpc3RlbmVyLFxuICAgIHRhcmdldCxcbiAgICB0YXJnZXRTbG90LFxuICAgIHRhZyxcbiAgICBob3N0TGlzdGVuZXIsXG4gICAgbmFtZSxcbiAgICBoYW5kbGVyT3BzOiBoYW5kbGVyTGlzdCxcbiAgICBoYW5kbGVyRm5OYW1lOiBudWxsLFxuICAgIGNvbnN1bWVzRG9sbGFyRXZlbnQ6IGZhbHNlLFxuICAgIGlzQW5pbWF0aW9uTGlzdGVuZXI6IGFuaW1hdGlvblBoYXNlICE9PSBudWxsLFxuICAgIGFuaW1hdGlvblBoYXNlLFxuICAgIGV2ZW50VGFyZ2V0LFxuICAgIHNvdXJjZVNwYW4sXG4gICAgLi4uTkVXX09QLFxuICB9O1xufVxuXG4vKipcbiAqIExvZ2ljYWwgb3BlcmF0aW9uIHJlcHJlc2VudGluZyB0aGUgZXZlbnQgc2lkZSBvZiBhIHR3by13YXkgYmluZGluZyBvbiBhbiBlbGVtZW50XG4gKiBpbiB0aGUgY3JlYXRpb24gSVIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHdvV2F5TGlzdGVuZXJPcCBleHRlbmRzIE9wPENyZWF0ZU9wPiB7XG4gIGtpbmQ6IE9wS2luZC5Ud29XYXlMaXN0ZW5lcjtcblxuICB0YXJnZXQ6IFhyZWZJZDtcbiAgdGFyZ2V0U2xvdDogU2xvdEhhbmRsZTtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgZXZlbnQgd2hpY2ggaXMgYmVpbmcgbGlzdGVuZWQgdG8uXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRhZyBuYW1lIG9mIHRoZSBlbGVtZW50IG9uIHdoaWNoIHRoaXMgbGlzdGVuZXIgaXMgcGxhY2VkLlxuICAgKi9cbiAgdGFnOiBzdHJpbmd8bnVsbDtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGBVcGRhdGVPcGBzIHJlcHJlc2VudGluZyB0aGUgYm9keSBvZiB0aGUgZXZlbnQgbGlzdGVuZXIuXG4gICAqL1xuICBoYW5kbGVyT3BzOiBPcExpc3Q8VXBkYXRlT3A+O1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBmdW5jdGlvblxuICAgKi9cbiAgaGFuZGxlckZuTmFtZTogc3RyaW5nfG51bGw7XG5cbiAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGBUd29XYXlMaXN0ZW5lck9wYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVR3b1dheUxpc3RlbmVyT3AoXG4gICAgdGFyZ2V0OiBYcmVmSWQsIHRhcmdldFNsb3Q6IFNsb3RIYW5kbGUsIG5hbWU6IHN0cmluZywgdGFnOiBzdHJpbmd8bnVsbCxcbiAgICBoYW5kbGVyT3BzOiBBcnJheTxVcGRhdGVPcD4sIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbik6IFR3b1dheUxpc3RlbmVyT3Age1xuICBjb25zdCBoYW5kbGVyTGlzdCA9IG5ldyBPcExpc3Q8VXBkYXRlT3A+KCk7XG4gIGhhbmRsZXJMaXN0LnB1c2goaGFuZGxlck9wcyk7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLlR3b1dheUxpc3RlbmVyLFxuICAgIHRhcmdldCxcbiAgICB0YXJnZXRTbG90LFxuICAgIHRhZyxcbiAgICBuYW1lLFxuICAgIGhhbmRsZXJPcHM6IGhhbmRsZXJMaXN0LFxuICAgIGhhbmRsZXJGbk5hbWU6IG51bGwsXG4gICAgc291cmNlU3BhbixcbiAgICAuLi5ORVdfT1AsXG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZU9wIGV4dGVuZHMgT3A8Q3JlYXRlT3A+LCBDb25zdW1lc1Nsb3RPcFRyYWl0IHtcbiAga2luZDogT3BLaW5kLlBpcGU7XG4gIHhyZWY6IFhyZWZJZDtcbiAgbmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGlwZU9wKHhyZWY6IFhyZWZJZCwgc2xvdDogU2xvdEhhbmRsZSwgbmFtZTogc3RyaW5nKTogUGlwZU9wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuUGlwZSxcbiAgICB4cmVmLFxuICAgIGhhbmRsZTogc2xvdCxcbiAgICBuYW1lLFxuICAgIC4uLk5FV19PUCxcbiAgICAuLi5UUkFJVF9DT05TVU1FU19TTE9ULFxuICB9O1xufVxuXG4vKipcbiAqIEFuIG9wIGNvcnJlc3BvbmRpbmcgdG8gYSBuYW1lc3BhY2UgaW5zdHJ1Y3Rpb24sIGZvciBzd2l0Y2hpbmcgYmV0d2VlbiBIVE1MLCBTVkcsIGFuZCBNYXRoTUwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmFtZXNwYWNlT3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4ge1xuICBraW5kOiBPcEtpbmQuTmFtZXNwYWNlO1xuICBhY3RpdmU6IE5hbWVzcGFjZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU5hbWVzcGFjZU9wKG5hbWVzcGFjZTogTmFtZXNwYWNlKTogTmFtZXNwYWNlT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5OYW1lc3BhY2UsXG4gICAgYWN0aXZlOiBuYW1lc3BhY2UsXG4gICAgLi4uTkVXX09QLFxuICB9O1xufVxuXG4vKipcbiAqIEFuIG9wIHRoYXQgY3JlYXRlcyBhIGNvbnRlbnQgcHJvamVjdGlvbiBzbG90LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb2plY3Rpb25EZWZPcCBleHRlbmRzIE9wPENyZWF0ZU9wPiB7XG4gIGtpbmQ6IE9wS2luZC5Qcm9qZWN0aW9uRGVmO1xuXG4gIC8vIFRoZSBwYXJzZWQgc2VsZWN0b3IgaW5mb3JtYXRpb24gZm9yIHRoaXMgcHJvamVjdGlvbiBkZWYuXG4gIGRlZjogby5FeHByZXNzaW9ufG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcm9qZWN0aW9uRGVmT3AoZGVmOiBvLkV4cHJlc3Npb258bnVsbCk6IFByb2plY3Rpb25EZWZPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLlByb2plY3Rpb25EZWYsXG4gICAgZGVmLFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cblxuLyoqXG4gKiBBbiBvcCB0aGF0IGNyZWF0ZXMgYSBjb250ZW50IHByb2plY3Rpb24gc2xvdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9qZWN0aW9uT3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4sIENvbnN1bWVzU2xvdE9wVHJhaXQge1xuICBraW5kOiBPcEtpbmQuUHJvamVjdGlvbjtcblxuICB4cmVmOiBYcmVmSWQ7XG5cbiAgcHJvamVjdGlvblNsb3RJbmRleDogbnVtYmVyO1xuXG4gIGF0dHJpYnV0ZXM6IG51bGx8by5MaXRlcmFsQXJyYXlFeHByO1xuXG4gIGxvY2FsUmVmczogc3RyaW5nW107XG5cbiAgc2VsZWN0b3I6IHN0cmluZztcblxuICBpMThuUGxhY2Vob2xkZXI/OiBpMThuLlRhZ1BsYWNlaG9sZGVyO1xuXG4gIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3BhbjtcblxuICBmYWxsYmFja1ZpZXc6IFhyZWZJZHxudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUHJvamVjdGlvbk9wKFxuICAgIHhyZWY6IFhyZWZJZCwgc2VsZWN0b3I6IHN0cmluZywgaTE4blBsYWNlaG9sZGVyOiBpMThuLlRhZ1BsYWNlaG9sZGVyfHVuZGVmaW5lZCxcbiAgICBmYWxsYmFja1ZpZXc6IFhyZWZJZHxudWxsLCBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pOiBQcm9qZWN0aW9uT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5Qcm9qZWN0aW9uLFxuICAgIHhyZWYsXG4gICAgaGFuZGxlOiBuZXcgU2xvdEhhbmRsZSgpLFxuICAgIHNlbGVjdG9yLFxuICAgIGkxOG5QbGFjZWhvbGRlcixcbiAgICBmYWxsYmFja1ZpZXcsXG4gICAgcHJvamVjdGlvblNsb3RJbmRleDogMCxcbiAgICBhdHRyaWJ1dGVzOiBudWxsLFxuICAgIGxvY2FsUmVmczogW10sXG4gICAgc291cmNlU3BhbixcbiAgICAuLi5ORVdfT1AsXG4gICAgLi4uVFJBSVRfQ09OU1VNRVNfU0xPVCxcbiAgICBudW1TbG90c1VzZWQ6IGZhbGxiYWNrVmlldyA9PT0gbnVsbCA/IDEgOiAyLFxuICB9O1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gYXR0cmlidXRlIHRoYXQgaGFzIGJlZW4gZXh0cmFjdGVkIGZvciBpbmNsdXNpb24gaW4gdGhlIGNvbnN0cyBhcnJheS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHRyYWN0ZWRBdHRyaWJ1dGVPcCBleHRlbmRzIE9wPENyZWF0ZU9wPiB7XG4gIGtpbmQ6IE9wS2luZC5FeHRyYWN0ZWRBdHRyaWJ1dGU7XG5cbiAgLyoqXG4gICAqIFRoZSBgWHJlZklkYCBvZiB0aGUgdGVtcGxhdGUtbGlrZSBlbGVtZW50IHRoZSBleHRyYWN0ZWQgYXR0cmlidXRlIHdpbGwgYmVsb25nIHRvLlxuICAgKi9cbiAgdGFyZ2V0OiBYcmVmSWQ7XG5cbiAgLyoqXG4gICAqICBUaGUga2luZCBvZiBiaW5kaW5nIHJlcHJlc2VudGVkIGJ5IHRoaXMgZXh0cmFjdGVkIGF0dHJpYnV0ZS5cbiAgICovXG4gIGJpbmRpbmdLaW5kOiBCaW5kaW5nS2luZDtcblxuICAvKipcbiAgICogVGhlIG5hbWVzcGFjZSBvZiB0aGUgYXR0cmlidXRlIChvciBudWxsIGlmIG5vbmUpLlxuICAgKi9cbiAgbmFtZXNwYWNlOiBzdHJpbmd8bnVsbDtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGV4dHJhY3RlZCBhdHRyaWJ1dGUuXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBleHByZXNzaW9uIG9mIHRoZSBleHRyYWN0ZWQgYXR0cmlidXRlLlxuICAgKi9cbiAgZXhwcmVzc2lvbjogby5FeHByZXNzaW9ufG51bGw7XG5cbiAgLyoqXG4gICAqIElmIHRoaXMgYXR0cmlidXRlIGhhcyBhIGNvcnJlc3BvbmRpbmcgaTE4biBhdHRyaWJ1dGUgKGUuZy4gYGkxOG4tZm9vPVwibTpkXCJgKSwgdGhlbiB0aGlzIGlzIHRoZVxuICAgKiBpMThuIGNvbnRleHQgZm9yIGl0LlxuICAgKi9cbiAgaTE4bkNvbnRleHQ6IFhyZWZJZHxudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VjdXJpdHkgY29udGV4dCBvZiB0aGUgYmluZGluZy5cbiAgICovXG4gIHNlY3VyaXR5Q29udGV4dDogU2VjdXJpdHlDb250ZXh0fFNlY3VyaXR5Q29udGV4dFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgdHJ1c3RlZCB2YWx1ZSBmdW5jdGlvbiBmb3IgdGhpcyBwcm9wZXJ0eS5cbiAgICovXG4gIHRydXN0ZWRWYWx1ZUZuOiBvLkV4cHJlc3Npb258bnVsbDtcblxuICBpMThuTWVzc2FnZTogaTE4bi5NZXNzYWdlfG51bGw7XG59XG5cbi8qKlxuICogQ3JlYXRlIGFuIGBFeHRyYWN0ZWRBdHRyaWJ1dGVPcGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFeHRyYWN0ZWRBdHRyaWJ1dGVPcChcbiAgICB0YXJnZXQ6IFhyZWZJZCwgYmluZGluZ0tpbmQ6IEJpbmRpbmdLaW5kLCBuYW1lc3BhY2U6IHN0cmluZ3xudWxsLCBuYW1lOiBzdHJpbmcsXG4gICAgZXhwcmVzc2lvbjogby5FeHByZXNzaW9ufG51bGwsIGkxOG5Db250ZXh0OiBYcmVmSWR8bnVsbCwgaTE4bk1lc3NhZ2U6IGkxOG4uTWVzc2FnZXxudWxsLFxuICAgIHNlY3VyaXR5Q29udGV4dDogU2VjdXJpdHlDb250ZXh0fFNlY3VyaXR5Q29udGV4dFtdKTogRXh0cmFjdGVkQXR0cmlidXRlT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5FeHRyYWN0ZWRBdHRyaWJ1dGUsXG4gICAgdGFyZ2V0LFxuICAgIGJpbmRpbmdLaW5kLFxuICAgIG5hbWVzcGFjZSxcbiAgICBuYW1lLFxuICAgIGV4cHJlc3Npb24sXG4gICAgaTE4bkNvbnRleHQsXG4gICAgaTE4bk1lc3NhZ2UsXG4gICAgc2VjdXJpdHlDb250ZXh0LFxuICAgIHRydXN0ZWRWYWx1ZUZuOiBudWxsLFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZWZlck9wIGV4dGVuZHMgT3A8Q3JlYXRlT3A+LCBDb25zdW1lc1Nsb3RPcFRyYWl0IHtcbiAga2luZDogT3BLaW5kLkRlZmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgeHJlZiBvZiB0aGlzIGRlZmVyIG9wLlxuICAgKi9cbiAgeHJlZjogWHJlZklkO1xuXG4gIC8qKlxuICAgKiBUaGUgeHJlZiBvZiB0aGUgbWFpbiB2aWV3LlxuICAgKi9cbiAgbWFpblZpZXc6IFhyZWZJZDtcblxuICBtYWluU2xvdDogU2xvdEhhbmRsZTtcblxuICAvKipcbiAgICogU2Vjb25kYXJ5IGxvYWRpbmcgYmxvY2sgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZGVmZXIgb3AuXG4gICAqL1xuICBsb2FkaW5nVmlldzogWHJlZklkfG51bGw7XG5cbiAgbG9hZGluZ1Nsb3Q6IFNsb3RIYW5kbGV8bnVsbDtcblxuICAvKipcbiAgICogU2Vjb25kYXJ5IHBsYWNlaG9sZGVyIGJsb2NrIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGRlZmVyIG9wLlxuICAgKi9cbiAgcGxhY2Vob2xkZXJWaWV3OiBYcmVmSWR8bnVsbDtcblxuICBwbGFjZWhvbGRlclNsb3Q6IFNsb3RIYW5kbGV8bnVsbDtcblxuICAvKipcbiAgICogU2Vjb25kYXJ5IGVycm9yIGJsb2NrIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGRlZmVyIG9wLlxuICAgKi9cbiAgZXJyb3JWaWV3OiBYcmVmSWR8bnVsbDtcblxuICBlcnJvclNsb3Q6IFNsb3RIYW5kbGV8bnVsbDtcblxuICBwbGFjZWhvbGRlck1pbmltdW1UaW1lOiBudW1iZXJ8bnVsbDtcbiAgbG9hZGluZ01pbmltdW1UaW1lOiBudW1iZXJ8bnVsbDtcbiAgbG9hZGluZ0FmdGVyVGltZTogbnVtYmVyfG51bGw7XG5cbiAgcGxhY2Vob2xkZXJDb25maWc6IG8uRXhwcmVzc2lvbnxudWxsO1xuICBsb2FkaW5nQ29uZmlnOiBvLkV4cHJlc3Npb258bnVsbDtcblxuICAvKipcbiAgICogRGVwZW5kaW5nIG9uIHRoZSBjb21waWxhdGlvbiBtb2RlLCB0aGVyZSBjYW4gYmUgZWl0aGVyIG9uZSBkZXBlbmRlbmN5IHJlc29sdXRpb24gZnVuY3Rpb25cbiAgICogcGVyIGRlZmVycmVkIGJsb2NrIG9yIG9uZSBmb3IgdGhlIGVudGlyZSB0ZW1wbGF0ZS4gVGhpcyBmaWVsZCBjb250YWlucyB0aGUgZnVuY3Rpb24gdGhhdFxuICAgKiBiZWxvbmdzIHNwZWNpZmljYWxseSB0byB0aGUgY3VycmVudCBkZWZlcnJlZCBibG9jay5cbiAgICovXG4gIG93blJlc29sdmVyRm46IG8uRXhwcmVzc2lvbnxudWxsO1xuXG4gIC8qKlxuICAgKiBBZnRlciBwcm9jZXNzaW5nLCB0aGUgcmVzb2x2ZXIgZnVuY3Rpb24gZm9yIHRoZSBkZWZlciBkZXBzIHdpbGwgYmUgZXh0cmFjdGVkIHRvIHRoZSBjb25zdGFudFxuICAgKiBwb29sLCBhbmQgYSByZWZlcmVuY2UgdG8gdGhhdCBmdW5jdGlvbiB3aWxsIGJlIHBvcHVsYXRlZCBoZXJlLlxuICAgKi9cbiAgcmVzb2x2ZXJGbjogby5FeHByZXNzaW9ufG51bGw7XG5cbiAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGVmZXJPcChcbiAgICB4cmVmOiBYcmVmSWQsIG1haW46IFhyZWZJZCwgbWFpblNsb3Q6IFNsb3RIYW5kbGUsIG93blJlc29sdmVyRm46IG8uRXhwcmVzc2lvbnxudWxsLFxuICAgIHJlc29sdmVyRm46IG8uRXhwcmVzc2lvbnxudWxsLCBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pOiBEZWZlck9wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuRGVmZXIsXG4gICAgeHJlZixcbiAgICBoYW5kbGU6IG5ldyBTbG90SGFuZGxlKCksXG4gICAgbWFpblZpZXc6IG1haW4sXG4gICAgbWFpblNsb3QsXG4gICAgbG9hZGluZ1ZpZXc6IG51bGwsXG4gICAgbG9hZGluZ1Nsb3Q6IG51bGwsXG4gICAgbG9hZGluZ0NvbmZpZzogbnVsbCxcbiAgICBsb2FkaW5nTWluaW11bVRpbWU6IG51bGwsXG4gICAgbG9hZGluZ0FmdGVyVGltZTogbnVsbCxcbiAgICBwbGFjZWhvbGRlclZpZXc6IG51bGwsXG4gICAgcGxhY2Vob2xkZXJTbG90OiBudWxsLFxuICAgIHBsYWNlaG9sZGVyQ29uZmlnOiBudWxsLFxuICAgIHBsYWNlaG9sZGVyTWluaW11bVRpbWU6IG51bGwsXG4gICAgZXJyb3JWaWV3OiBudWxsLFxuICAgIGVycm9yU2xvdDogbnVsbCxcbiAgICBvd25SZXNvbHZlckZuLFxuICAgIHJlc29sdmVyRm4sXG4gICAgc291cmNlU3BhbixcbiAgICAuLi5ORVdfT1AsXG4gICAgLi4uVFJBSVRfQ09OU1VNRVNfU0xPVCxcbiAgICBudW1TbG90c1VzZWQ6IDIsXG4gIH07XG59XG5pbnRlcmZhY2UgRGVmZXJUcmlnZ2VyQmFzZSB7XG4gIGtpbmQ6IERlZmVyVHJpZ2dlcktpbmQ7XG59XG5cbmludGVyZmFjZSBEZWZlclRyaWdnZXJXaXRoVGFyZ2V0QmFzZSBleHRlbmRzIERlZmVyVHJpZ2dlckJhc2Uge1xuICB0YXJnZXROYW1lOiBzdHJpbmd8bnVsbDtcblxuICAvKipcbiAgICogVGhlIFhyZWYgb2YgdGhlIHRhcmdldGVkIG5hbWUuIE1heSBiZSBpbiBhIGRpZmZlcmVudCB2aWV3LlxuICAgKi9cbiAgdGFyZ2V0WHJlZjogWHJlZklkfG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBzbG90IGluZGV4IG9mIHRoZSBuYW1lZCByZWZlcmVuY2UsIGluc2lkZSB0aGUgdmlldyBwcm92aWRlZCBiZWxvdy4gVGhpcyBzbG90IG1heSBub3QgYmVcbiAgICogaW5zaWRlIHRoZSBjdXJyZW50IHZpZXcsIGFuZCBpcyBoYW5kbGVkIHNwZWNpYWxseSBhcyBhIHJlc3VsdC5cbiAgICovXG4gIHRhcmdldFNsb3Q6IFNsb3RIYW5kbGV8bnVsbDtcblxuICB0YXJnZXRWaWV3OiBYcmVmSWR8bnVsbDtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIHN0ZXBzIHRvIHdhbGsgdXAgb3IgZG93biB0aGUgdmlldyB0cmVlIHRvIGZpbmQgdGhlIHRhcmdldCBsb2NhbFJlZi5cbiAgICovXG4gIHRhcmdldFNsb3RWaWV3U3RlcHM6IG51bWJlcnxudWxsO1xufVxuXG5pbnRlcmZhY2UgRGVmZXJJZGxlVHJpZ2dlciBleHRlbmRzIERlZmVyVHJpZ2dlckJhc2Uge1xuICBraW5kOiBEZWZlclRyaWdnZXJLaW5kLklkbGU7XG59XG5cbmludGVyZmFjZSBEZWZlckltbWVkaWF0ZVRyaWdnZXIgZXh0ZW5kcyBEZWZlclRyaWdnZXJCYXNlIHtcbiAga2luZDogRGVmZXJUcmlnZ2VyS2luZC5JbW1lZGlhdGU7XG59XG5cbmludGVyZmFjZSBEZWZlckhvdmVyVHJpZ2dlciBleHRlbmRzIERlZmVyVHJpZ2dlcldpdGhUYXJnZXRCYXNlIHtcbiAga2luZDogRGVmZXJUcmlnZ2VyS2luZC5Ib3Zlcjtcbn1cblxuaW50ZXJmYWNlIERlZmVyVGltZXJUcmlnZ2VyIGV4dGVuZHMgRGVmZXJUcmlnZ2VyQmFzZSB7XG4gIGtpbmQ6IERlZmVyVHJpZ2dlcktpbmQuVGltZXI7XG5cbiAgZGVsYXk6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIERlZmVySW50ZXJhY3Rpb25UcmlnZ2VyIGV4dGVuZHMgRGVmZXJUcmlnZ2VyV2l0aFRhcmdldEJhc2Uge1xuICBraW5kOiBEZWZlclRyaWdnZXJLaW5kLkludGVyYWN0aW9uO1xufVxuXG5pbnRlcmZhY2UgRGVmZXJWaWV3cG9ydFRyaWdnZXIgZXh0ZW5kcyBEZWZlclRyaWdnZXJXaXRoVGFyZ2V0QmFzZSB7XG4gIGtpbmQ6IERlZmVyVHJpZ2dlcktpbmQuVmlld3BvcnQ7XG59XG5cbi8qKlxuICogVGhlIHVuaW9uIHR5cGUgb2YgYWxsIGRlZmVyIHRyaWdnZXIgaW50ZXJmYWNlcy5cbiAqL1xuZXhwb3J0IHR5cGUgRGVmZXJUcmlnZ2VyID0gRGVmZXJJZGxlVHJpZ2dlcnxEZWZlckltbWVkaWF0ZVRyaWdnZXJ8RGVmZXJUaW1lclRyaWdnZXJ8XG4gICAgRGVmZXJIb3ZlclRyaWdnZXJ8RGVmZXJJbnRlcmFjdGlvblRyaWdnZXJ8RGVmZXJWaWV3cG9ydFRyaWdnZXI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVmZXJPbk9wIGV4dGVuZHMgT3A8Q3JlYXRlT3A+IHtcbiAga2luZDogT3BLaW5kLkRlZmVyT247XG5cbiAgZGVmZXI6IFhyZWZJZDtcblxuICAvKipcbiAgICogVGhlIHRyaWdnZXIgZm9yIHRoaXMgZGVmZXIgb3AgKGUuZy4gaWRsZSwgaG92ZXIsIGV0YykuXG4gICAqL1xuICB0cmlnZ2VyOiBEZWZlclRyaWdnZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZW1pdCB0aGUgcHJlZmV0Y2ggdmVyc2lvbiBvZiB0aGUgaW5zdHJ1Y3Rpb24uXG4gICAqL1xuICBwcmVmZXRjaDogYm9vbGVhbjtcblxuICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWZlck9uT3AoXG4gICAgZGVmZXI6IFhyZWZJZCwgdHJpZ2dlcjogRGVmZXJUcmlnZ2VyLCBwcmVmZXRjaDogYm9vbGVhbixcbiAgICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pOiBEZWZlck9uT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5EZWZlck9uLFxuICAgIGRlZmVyLFxuICAgIHRyaWdnZXIsXG4gICAgcHJlZmV0Y2gsXG4gICAgc291cmNlU3BhbixcbiAgICAuLi5ORVdfT1AsXG4gIH07XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNpbmdsZSB2YWx1ZSBpbiBhbiBpMThuIHBhcmFtIG1hcC4gRWFjaCBwbGFjZWhvbGRlciBpbiB0aGUgbWFwIG1heSBoYXZlIG11bHRpcGxlIG9mXG4gKiB0aGVzZSB2YWx1ZXMgYXNzb2NpYXRlZCB3aXRoIGl0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEkxOG5QYXJhbVZhbHVlIHtcbiAgLyoqXG4gICAqIFRoZSB2YWx1ZS4gVGhpcyBjYW4gYmUgZWl0aGVyIGEgc2xvdCBudW1iZXIsIHNwZWNpYWwgc3RyaW5nLCBvciBjb21wb3VuZC12YWx1ZSBjb25zaXN0aW5nIG9mIGFuXG4gICAqIGVsZW1lbnQgc2xvdCBudW1iZXIgYW5kIHRlbXBsYXRlIHNsb3QgbnVtYmVyLlxuICAgKi9cbiAgdmFsdWU6IHN0cmluZ3xudW1iZXJ8e2VsZW1lbnQ6IG51bWJlciwgdGVtcGxhdGU6IG51bWJlcn07XG5cbiAgLyoqXG4gICAqIFRoZSBzdWItdGVtcGxhdGUgaW5kZXggYXNzb2NpYXRlZCB3aXRoIHRoZSB2YWx1ZS5cbiAgICovXG4gIHN1YlRlbXBsYXRlSW5kZXg6IG51bWJlcnxudWxsO1xuXG4gIC8qKlxuICAgKiBGbGFncyBhc3NvY2lhdGVkIHdpdGggdGhlIHZhbHVlLlxuICAgKi9cbiAgZmxhZ3M6IEkxOG5QYXJhbVZhbHVlRmxhZ3M7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBpMThuIG1lc3NhZ2UgdGhhdCBoYXMgYmVlbiBleHRyYWN0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgY29uc3RzIGFycmF5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEkxOG5NZXNzYWdlT3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4ge1xuICBraW5kOiBPcEtpbmQuSTE4bk1lc3NhZ2U7XG5cbiAgLyoqXG4gICAqIEFuIGlkIHVzZWQgdG8gcmVmZXJlbmNlIHRoaXMgbWVzc2FnZS5cbiAgICovXG4gIHhyZWY6IFhyZWZJZDtcblxuICAvKipcbiAgICogVGhlIGNvbnRleHQgZnJvbSB3aGljaCB0aGlzIG1lc3NhZ2Ugd2FzIGV4dHJhY3RlZFxuICAgKiBUT0RPOiByZW1vdmUgdGhpcywgYW5kIGFkZCBhbm90aGVyIHByb3BlcnR5IGhlcmUgaW5zdGVhZCB0byBtYXRjaCBFeHRyYWN0ZWRBdHRyaWJ1dGVzXG4gICAqL1xuICBpMThuQ29udGV4dDogWHJlZklkO1xuXG4gIC8qKlxuICAgKiBBIHJlZmVyZW5jZSB0byB0aGUgaTE4biBvcCB0aGlzIG1lc3NhZ2Ugd2FzIGV4dHJhY3RlZCBmcm9tLlxuICAgKlxuICAgKiBUaGlzIG1pZ2h0IGJlIG51bGwsIHdoaWNoIG1lYW5zIHRoaXMgbWVzc2FnZSBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGEgYmxvY2suIFRoaXMgcHJvYmFibHlcbiAgICogbWVhbnMgaXQgaXMgYW4gaTE4biBhdHRyaWJ1dGUncyBtZXNzYWdlLlxuICAgKi9cbiAgaTE4bkJsb2NrOiBYcmVmSWR8bnVsbDtcblxuICAvKipcbiAgICogVGhlIGkxOG4gbWVzc2FnZSByZXByZXNlbnRlZCBieSB0aGlzIG9wLlxuICAgKi9cbiAgbWVzc2FnZTogaTE4bi5NZXNzYWdlO1xuXG4gIC8qKlxuICAgKiBUaGUgcGxhY2Vob2xkZXIgdXNlZCBmb3IgdGhpcyBtZXNzYWdlIHdoZW4gaXQgaXMgcmVmZXJlbmNlZCBpbiBhbm90aGVyIG1lc3NhZ2UuXG4gICAqIEZvciBhIHRvcC1sZXZlbCBtZXNzYWdlIHRoYXQgaXNuJ3QgcmVmZXJlbmNlZCBmcm9tIGFub3RoZXIgbWVzc2FnZSwgdGhpcyB3aWxsIGJlIG51bGwuXG4gICAqL1xuICBtZXNzYWdlUGxhY2Vob2xkZXI6IHN0cmluZ3xudWxsO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgbWVzc2FnZSBuZWVkcyBwb3N0LXByb2Nlc3NpbmcuXG4gICAqL1xuICBuZWVkc1Bvc3Rwcm9jZXNzaW5nOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFyYW0gbWFwLCB3aXRoIHBsYWNlaG9sZGVycyByZXByZXNlbnRlZCBhcyBhbiBgRXhwcmVzc2lvbmAuXG4gICAqL1xuICBwYXJhbXM6IE1hcDxzdHJpbmcsIG8uRXhwcmVzc2lvbj47XG5cbiAgLyoqXG4gICAqIFRoZSBwb3N0LXByb2Nlc3NpbmcgcGFyYW0gbWFwLCB3aXRoIHBsYWNlaG9sZGVycyByZXByZXNlbnRlZCBhcyBhbiBgRXhwcmVzc2lvbmAuXG4gICAqL1xuICBwb3N0cHJvY2Vzc2luZ1BhcmFtczogTWFwPHN0cmluZywgby5FeHByZXNzaW9uPjtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIHN1Yi1tZXNzYWdlcyB0aGF0IGFyZSByZWZlcmVuY2VkIGJ5IHRoaXMgbWVzc2FnZS5cbiAgICovXG4gIHN1Yk1lc3NhZ2VzOiBYcmVmSWRbXTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYW4gYEV4dHJhY3RlZE1lc3NhZ2VPcGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJMThuTWVzc2FnZU9wKFxuICAgIHhyZWY6IFhyZWZJZCwgaTE4bkNvbnRleHQ6IFhyZWZJZCwgaTE4bkJsb2NrOiBYcmVmSWR8bnVsbCwgbWVzc2FnZTogaTE4bi5NZXNzYWdlLFxuICAgIG1lc3NhZ2VQbGFjZWhvbGRlcjogc3RyaW5nfG51bGwsIHBhcmFtczogTWFwPHN0cmluZywgby5FeHByZXNzaW9uPixcbiAgICBwb3N0cHJvY2Vzc2luZ1BhcmFtczogTWFwPHN0cmluZywgby5FeHByZXNzaW9uPiwgbmVlZHNQb3N0cHJvY2Vzc2luZzogYm9vbGVhbik6IEkxOG5NZXNzYWdlT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5JMThuTWVzc2FnZSxcbiAgICB4cmVmLFxuICAgIGkxOG5Db250ZXh0LFxuICAgIGkxOG5CbG9jayxcbiAgICBtZXNzYWdlLFxuICAgIG1lc3NhZ2VQbGFjZWhvbGRlcixcbiAgICBwYXJhbXMsXG4gICAgcG9zdHByb2Nlc3NpbmdQYXJhbXMsXG4gICAgbmVlZHNQb3N0cHJvY2Vzc2luZyxcbiAgICBzdWJNZXNzYWdlczogW10sXG4gICAgLi4uTkVXX09QLFxuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEkxOG5PcEJhc2UgZXh0ZW5kcyBPcDxDcmVhdGVPcD4sIENvbnN1bWVzU2xvdE9wVHJhaXQge1xuICBraW5kOiBPcEtpbmQuSTE4blN0YXJ0fE9wS2luZC5JMThuO1xuXG4gIC8qKlxuICAgKiBgWHJlZklkYCBhbGxvY2F0ZWQgZm9yIHRoaXMgaTE4biBibG9jay5cbiAgICovXG4gIHhyZWY6IFhyZWZJZDtcblxuICAvKipcbiAgICogQSByZWZlcmVuY2UgdG8gdGhlIHJvb3QgaTE4biBibG9jayB0aGF0IHRoaXMgb25lIGJlbG9uZ3MgdG8uIEZvciBhIHJvb3QgaTE4biBibG9jaywgdGhpcyBpc1xuICAgKiB0aGUgc2FtZSBhcyB4cmVmLlxuICAgKi9cbiAgcm9vdDogWHJlZklkO1xuXG4gIC8qKlxuICAgKiBUaGUgaTE4biBtZXRhZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhpcyBvcC5cbiAgICovXG4gIG1lc3NhZ2U6IGkxOG4uTWVzc2FnZTtcblxuICAvKipcbiAgICogVGhlIGluZGV4IGluIHRoZSBjb25zdHMgYXJyYXkgd2hlcmUgdGhlIG1lc3NhZ2UgaTE4biBtZXNzYWdlIGlzIHN0b3JlZC5cbiAgICovXG4gIG1lc3NhZ2VJbmRleDogQ29uc3RJbmRleHxudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5kZXggb2YgdGhpcyBzdWItYmxvY2sgaW4gdGhlIGkxOG4gbWVzc2FnZS4gRm9yIGEgcm9vdCBpMThuIGJsb2NrLCB0aGlzIGlzIG51bGwuXG4gICAqL1xuICBzdWJUZW1wbGF0ZUluZGV4OiBudW1iZXJ8bnVsbDtcblxuICAvKipcbiAgICogVGhlIGkxOG4gY29udGV4dCBnZW5lcmF0ZWQgZnJvbSB0aGlzIGJsb2NrLiBJbml0aWFsbHkgbnVsbCwgdW50aWwgdGhlIGNvbnRleHQgaXMgY3JlYXRlZC5cbiAgICovXG4gIGNvbnRleHQ6IFhyZWZJZHxudWxsO1xuXG4gIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3BhbnxudWxsO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gZW1wdHkgaTE4biBibG9jay5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJMThuT3AgZXh0ZW5kcyBJMThuT3BCYXNlIHtcbiAga2luZDogT3BLaW5kLkkxOG47XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgc3RhcnQgb2YgYW4gaTE4biBibG9jay5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJMThuU3RhcnRPcCBleHRlbmRzIEkxOG5PcEJhc2Uge1xuICBraW5kOiBPcEtpbmQuSTE4blN0YXJ0O1xufVxuXG4vKipcbiAqIENyZWF0ZSBhbiBgSTE4blN0YXJ0T3BgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSTE4blN0YXJ0T3AoXG4gICAgeHJlZjogWHJlZklkLCBtZXNzYWdlOiBpMThuLk1lc3NhZ2UsIHJvb3Q6IFhyZWZJZHx1bmRlZmluZWQsXG4gICAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFufG51bGwpOiBJMThuU3RhcnRPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLkkxOG5TdGFydCxcbiAgICB4cmVmLFxuICAgIGhhbmRsZTogbmV3IFNsb3RIYW5kbGUoKSxcbiAgICByb290OiByb290ID8/IHhyZWYsXG4gICAgbWVzc2FnZSxcbiAgICBtZXNzYWdlSW5kZXg6IG51bGwsXG4gICAgc3ViVGVtcGxhdGVJbmRleDogbnVsbCxcbiAgICBjb250ZXh0OiBudWxsLFxuICAgIHNvdXJjZVNwYW4sXG4gICAgLi4uTkVXX09QLFxuICAgIC4uLlRSQUlUX0NPTlNVTUVTX1NMT1QsXG4gIH07XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgZW5kIG9mIGFuIGkxOG4gYmxvY2suXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSTE4bkVuZE9wIGV4dGVuZHMgT3A8Q3JlYXRlT3A+IHtcbiAga2luZDogT3BLaW5kLkkxOG5FbmQ7XG5cbiAgLyoqXG4gICAqIFRoZSBgWHJlZklkYCBvZiB0aGUgYEkxOG5TdGFydE9wYCB0aGF0IGNyZWF0ZWQgdGhpcyBibG9jay5cbiAgICovXG4gIHhyZWY6IFhyZWZJZDtcblxuICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW58bnVsbDtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYW4gYEkxOG5FbmRPcGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJMThuRW5kT3AoeHJlZjogWHJlZklkLCBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW58bnVsbCk6IEkxOG5FbmRPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLkkxOG5FbmQsXG4gICAgeHJlZixcbiAgICBzb3VyY2VTcGFuLFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cblxuLyoqXG4gKiBBbiBvcCB0aGF0IHJlcHJlc2VudHMgdGhlIHN0YXJ0IG9mIGFuIElDVSBleHByZXNzaW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEljdVN0YXJ0T3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4ge1xuICBraW5kOiBPcEtpbmQuSWN1U3RhcnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgSUNVLlxuICAgKi9cbiAgeHJlZjogWHJlZklkO1xuXG4gIC8qKlxuICAgKiBUaGUgaTE4biBtZXNzYWdlIGZvciB0aGlzIElDVS5cbiAgICovXG4gIG1lc3NhZ2U6IGkxOG4uTWVzc2FnZTtcblxuICAvKipcbiAgICogUGxhY2Vob2xkZXIgdXNlZCB0byByZWZlcmVuY2UgdGhpcyBJQ1UgaW4gb3RoZXIgaTE4biBtZXNzYWdlcy5cbiAgICovXG4gIG1lc3NhZ2VQbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHJlZmVyZW5jZSB0byB0aGUgaTE4biBjb250ZXh0IGZvciB0aGlzIG9wLiBJbml0aWFsbHkgbnVsbCwgdW50aWwgdGhlIGNvbnRleHQgaXMgY3JlYXRlZC5cbiAgICovXG4gIGNvbnRleHQ6IFhyZWZJZHxudWxsO1xuXG4gIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIElDVSBzdGFydCBvcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUljdVN0YXJ0T3AoXG4gICAgeHJlZjogWHJlZklkLCBtZXNzYWdlOiBpMThuLk1lc3NhZ2UsIG1lc3NhZ2VQbGFjZWhvbGRlcjogc3RyaW5nLFxuICAgIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbik6IEljdVN0YXJ0T3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5JY3VTdGFydCxcbiAgICB4cmVmLFxuICAgIG1lc3NhZ2UsXG4gICAgbWVzc2FnZVBsYWNlaG9sZGVyLFxuICAgIGNvbnRleHQ6IG51bGwsXG4gICAgc291cmNlU3BhbixcbiAgICAuLi5ORVdfT1AsXG4gIH07XG59XG5cbi8qKlxuICogQW4gb3AgdGhhdCByZXByZXNlbnRzIHRoZSBlbmQgb2YgYW4gSUNVIGV4cHJlc3Npb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSWN1RW5kT3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4ge1xuICBraW5kOiBPcEtpbmQuSWN1RW5kO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIGNvcnJlc3BvbmRpbmcgSWN1U3RhcnRPcC5cbiAgICovXG4gIHhyZWY6IFhyZWZJZDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIElDVSBlbmQgb3AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJY3VFbmRPcCh4cmVmOiBYcmVmSWQpOiBJY3VFbmRPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLkljdUVuZCxcbiAgICB4cmVmLFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cblxuLyoqXG4gKiBBbiBvcCB0aGF0IHJlcHJlc2VudHMgYSBwbGFjZWhvbGRlciBpbiBhbiBJQ1UgZXhwcmVzc2lvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJY3VQbGFjZWhvbGRlck9wIGV4dGVuZHMgT3A8Q3JlYXRlT3A+IHtcbiAga2luZDogT3BLaW5kLkljdVBsYWNlaG9sZGVyO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIElDVSBwbGFjZWhvbGRlci5cbiAgICovXG4gIHhyZWY6IFhyZWZJZDtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHBsYWNlaG9sZGVyIGluIHRoZSBJQ1UgZXhwcmVzc2lvbi5cbiAgICovXG4gIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHN0YXRpYyBzdHJpbmdzIHRvIGJlIGNvbWJpbmVkIHdpdGggZHluYW1pYyBleHByZXNzaW9uIHZhbHVlcyB0byBmb3JtIHRoZSB0ZXh0LiBUaGlzIHdvcmtzXG4gICAqIGxpa2UgaW50ZXJwb2xhdGlvbiwgYnV0IHRoZSBzdHJpbmdzIGFyZSBjb21iaW5lZCBhdCBjb21waWxlIHRpbWUsIHVzaW5nIHNwZWNpYWwgcGxhY2Vob2xkZXJzXG4gICAqIGZvciB0aGUgZHluYW1pYyBleHByZXNzaW9ucywgYW5kIHB1dCBpbnRvIHRoZSB0cmFuc2xhdGVkIG1lc3NhZ2UuXG4gICAqL1xuICBzdHJpbmdzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUGxhY2Vob2xkZXIgdmFsdWVzIGZvciB0aGUgaTE4biBleHByZXNzaW9ucyB0byBiZSBjb21iaW5lZCB3aXRoIHRoZSBzdGF0aWMgc3RyaW5ncyB0byBmb3JtIHRoZVxuICAgKiBmdWxsIHBsYWNlaG9sZGVyIHZhbHVlLlxuICAgKi9cbiAgZXhwcmVzc2lvblBsYWNlaG9sZGVyczogSTE4blBhcmFtVmFsdWVbXTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIElDVSBwbGFjZWhvbGRlciBvcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUljdVBsYWNlaG9sZGVyT3AoXG4gICAgeHJlZjogWHJlZklkLCBuYW1lOiBzdHJpbmcsIHN0cmluZ3M6IHN0cmluZ1tdKTogSWN1UGxhY2Vob2xkZXJPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLkljdVBsYWNlaG9sZGVyLFxuICAgIHhyZWYsXG4gICAgbmFtZSxcbiAgICBzdHJpbmdzLFxuICAgIGV4cHJlc3Npb25QbGFjZWhvbGRlcnM6IFtdLFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cblxuLyoqXG4gKiBBbiBpMThuIGNvbnRleHQgdGhhdCBpcyB1c2VkIHRvIGdlbmVyYXRlIGEgdHJhbnNsYXRlZCBpMThuIG1lc3NhZ2UuIEEgc2VwYXJhdGUgY29udGV4dCBpcyBjcmVhdGVkXG4gKiBmb3IgdGhyZWUgZGlmZmVyZW50IHNjZW5hcmlvczpcbiAqXG4gKiAxLiBGb3IgZWFjaCB0b3AtbGV2ZWwgaTE4biBibG9jay5cbiAqIDIuIEZvciBlYWNoIElDVSByZWZlcmVuY2VkIGFzIGEgc3ViLW1lc3NhZ2UuIElDVXMgdGhhdCBhcmUgcmVmZXJlbmNlZCBhcyBhIHN1Yi1tZXNzYWdlIHdpbGwgYmVcbiAqICAgIHVzZWQgdG8gZ2VuZXJhdGUgYSBzZXBhcmF0ZSBpMThuIG1lc3NhZ2UsIGJ1dCB3aWxsIG5vdCBiZSBleHRyYWN0ZWQgZGlyZWN0bHkgaW50byB0aGUgY29uc3RzXG4gKiAgICBhcnJheS4gSW5zdGVhZCB0aGV5IHdpbGwgYmUgcHVsbGVkIGluIGFzIHBhcnQgb2YgdGhlIGluaXRpYWxpemF0aW9uIHN0YXRlbWVudHMgZm9yIHRoZSBtZXNzYWdlXG4gKiAgICB0aGF0IHJlZmVyZW5jZXMgdGhlbS5cbiAqIDMuIEZvciBlYWNoIGkxOG4gYXR0cmlidXRlLlxuICpcbiAqIENoaWxkIGkxOG4gYmxvY2tzLCByZXN1bHRpbmcgZnJvbSB0aGUgdXNlIG9mIGFuIG5nLXRlbXBsYXRlIGluc2lkZSBvZiBhIHBhcmVudCBpMThuIGJsb2NrLCBkbyBub3RcbiAqIGdlbmVyYXRlIGEgc2VwYXJhdGUgY29udGV4dC4gSW5zdGVhZCB0aGVpciBjb250ZW50IGlzIGluY2x1ZGVkIGluIHRoZSB0cmFuc2xhdGVkIG1lc3NhZ2UgZm9yXG4gKiB0aGVpciByb290IGJsb2NrLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEkxOG5Db250ZXh0T3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4ge1xuICBraW5kOiBPcEtpbmQuSTE4bkNvbnRleHQ7XG5cbiAgY29udGV4dEtpbmQ6IEkxOG5Db250ZXh0S2luZDtcblxuICAvKipcbiAgICogVGhlIGlkIG9mIHRoaXMgY29udGV4dC5cbiAgICovXG4gIHhyZWY6IFhyZWZJZDtcblxuICAvKipcbiAgICogQSByZWZlcmVuY2UgdG8gdGhlIEkxOG5TdGFydE9wIG9yIEkxOG5PcCB0aGlzIGNvbnRleHQgYmVsb25ncyB0by5cbiAgICpcbiAgICogSXQgaXMgcG9zc2libGUgZm9yIG11bHRpcGxlIGNvbnRleHRzIHRvIGJlbG9uZyB0byB0aGUgc2FtZSBibG9jaywgc2luY2UgYm90aCB0aGUgYmxvY2sgYW5kIGFueVxuICAgKiBJQ1VzIGluc2lkZSB0aGUgYmxvY2sgd2lsbCBlYWNoIGdldCB0aGVpciBvd24gY29udGV4dC5cbiAgICpcbiAgICogVGhpcyBtaWdodCBiZSBgbnVsbGAsIGluIHdoaWNoIGNhc2UgdGhlIGNvbnRleHQgaXMgbm90IGFzc29jaWF0ZWQgd2l0aCBhbiBpMThuIGJsb2NrLiBUaGlzXG4gICAqIHByb2JhYmx5IG1lYW5zIHRoYXQgaXQgYmVsb25ncyB0byBhbiBpMThuIGF0dHJpYnV0ZS5cbiAgICovXG4gIGkxOG5CbG9jazogWHJlZklkfG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBpMThuIG1lc3NhZ2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGV4dC5cbiAgICovXG4gIG1lc3NhZ2U6IGkxOG4uTWVzc2FnZTtcblxuICAvKipcbiAgICogVGhlIHBhcmFtIG1hcCBmb3IgdGhpcyBjb250ZXh0LlxuICAgKi9cbiAgcGFyYW1zOiBNYXA8c3RyaW5nLCBJMThuUGFyYW1WYWx1ZVtdPjtcblxuICAvKipcbiAgICogVGhlIHBvc3QtcHJvY2Vzc2luZyBwYXJhbSBtYXAgZm9yIHRoaXMgY29udGV4dC5cbiAgICovXG4gIHBvc3Rwcm9jZXNzaW5nUGFyYW1zOiBNYXA8c3RyaW5nLCBJMThuUGFyYW1WYWx1ZVtdPjtcblxuICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJMThuQ29udGV4dE9wKFxuICAgIGNvbnRleHRLaW5kOiBJMThuQ29udGV4dEtpbmQsIHhyZWY6IFhyZWZJZCwgaTE4bkJsb2NrOiBYcmVmSWR8bnVsbCwgbWVzc2FnZTogaTE4bi5NZXNzYWdlLFxuICAgIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbik6IEkxOG5Db250ZXh0T3Age1xuICBpZiAoaTE4bkJsb2NrID09PSBudWxsICYmIGNvbnRleHRLaW5kICE9PSBJMThuQ29udGV4dEtpbmQuQXR0cikge1xuICAgIHRocm93IG5ldyBFcnJvcignQXNzZXJ0aW9uRXJyb3I6IGkxOG5CbG9jayBtdXN0IGJlIHByb3ZpZGVkIGZvciBub24tYXR0cmlidXRlIGNvbnRleHRzLicpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuSTE4bkNvbnRleHQsXG4gICAgY29udGV4dEtpbmQsXG4gICAgeHJlZixcbiAgICBpMThuQmxvY2ssXG4gICAgbWVzc2FnZSxcbiAgICBzb3VyY2VTcGFuLFxuICAgIHBhcmFtczogbmV3IE1hcCgpLFxuICAgIHBvc3Rwcm9jZXNzaW5nUGFyYW1zOiBuZXcgTWFwKCksXG4gICAgLi4uTkVXX09QLFxuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEkxOG5BdHRyaWJ1dGVzT3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4sIENvbnN1bWVzU2xvdE9wVHJhaXQge1xuICBraW5kOiBPcEtpbmQuSTE4bkF0dHJpYnV0ZXM7XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRhcmdldGVkIGJ5IHRoZXNlIGF0dHJpYnV0ZXMuXG4gICAqL1xuICB0YXJnZXQ6IFhyZWZJZDtcblxuICAvKipcbiAgICogSTE4bkF0dHJpYnV0ZXMgaW5zdHJ1Y3Rpb25zIGNvcnJlc3BvbmQgdG8gYSBjb25zdCBhcnJheSB3aXRoIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24uXG4gICAqL1xuICBpMThuQXR0cmlidXRlc0NvbmZpZzogQ29uc3RJbmRleHxudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSTE4bkF0dHJpYnV0ZXNPcChcbiAgICB4cmVmOiBYcmVmSWQsIGhhbmRsZTogU2xvdEhhbmRsZSwgdGFyZ2V0OiBYcmVmSWQpOiBJMThuQXR0cmlidXRlc09wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuSTE4bkF0dHJpYnV0ZXMsXG4gICAgeHJlZixcbiAgICBoYW5kbGUsXG4gICAgdGFyZ2V0LFxuICAgIGkxOG5BdHRyaWJ1dGVzQ29uZmlnOiBudWxsLFxuICAgIC4uLk5FV19PUCxcbiAgICAuLi5UUkFJVF9DT05TVU1FU19TTE9ULFxuICB9O1xufVxuXG4vKipcbiAqIEFuIGluZGV4IGludG8gdGhlIGBjb25zdHNgIGFycmF5IHdoaWNoIGlzIHNoYXJlZCBhY3Jvc3MgdGhlIGNvbXBpbGF0aW9uIG9mIGFsbCB2aWV3cyBpbiBhXG4gKiBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCB0eXBlIENvbnN0SW5kZXggPSBudW1iZXIme19fYnJhbmQ6ICdDb25zdEluZGV4J307XG4iXX0=
|
|
@@ -260,4 +260,4 @@ export function createI18nApplyOp(owner, handle, sourceSpan) {
|
|
|
260
260
|
...NEW_OP,
|
|
261
261
|
};
|
|
262
262
|
}
|
|
263
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXIvc3JjL3RlbXBsYXRlL3BpcGVsaW5lL2lyL3NyYy9vcHMvdXBkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQU1ILE9BQU8sRUFBMEQsTUFBTSxFQUFlLE1BQU0sVUFBVSxDQUFDO0FBSXZHLE9BQU8sRUFBaUQsbUJBQW1CLEVBQUUsNkJBQTZCLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFFN0gsT0FBTyxFQUFZLE1BQU0sRUFBMEIsTUFBTSxVQUFVLENBQUM7QUFrQ3BFOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUNuQyxJQUFZLEVBQUUsYUFBNEIsRUFBRSxVQUEyQjtJQUN6RSxPQUFPO1FBQ0wsSUFBSSxFQUFFLE1BQU0sQ0FBQyxlQUFlO1FBQzVCLE1BQU0sRUFBRSxJQUFJO1FBQ1osYUFBYTtRQUNiLFVBQVU7UUFDVixHQUFHLDZCQUE2QjtRQUNoQyxHQUFHLG1CQUFtQjtRQUN0QixHQUFHLE1BQU07S0FDVixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sT0FBTyxhQUFhO0lBQ3hCLFlBQ2EsT0FBaUIsRUFBVyxXQUEyQixFQUN2RCxnQkFBMEI7UUFEMUIsWUFBTyxHQUFQLE9BQU8sQ0FBVTtRQUFXLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUN2RCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQVU7UUFDckMsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEYsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUNaLFdBQVcsQ0FBQyxNQUFNLGtFQUNsQixnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLENBQUM7SUFDSCxDQUFDO0NBQ0Y7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TixVQUFVO1FBQ1YsY0FBYztRQUNkLGVBQWU7UUFDZixjQUFjO1FBQ2QsS0FBSztRQUNMLElBQUk7UUFDSixVQUFVO1FBQ1YsR0FBRyxNQUFNO1FBQ1QsR0FBRyxtQkFBbUI7UUFDdEIsR0FBRyw2QkFBNkI7S0FDakMsQ0FBQztBQUNKLENBQUM7QUF5QkQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQzdCLEtBQWEsRUFBRSxNQUFrQixFQUFFLFVBQTJCO0lBQ2hFLE9BQU87UUFDTCxJQUFJLEVBQUUsTUFBTSxDQUFDLFNBQVM7UUFDdEIsS0FBSztRQUNMLE1BQU07UUFDTixVQUFVO1FBQ1YsR0FBRyxNQUFNO0tBQ1YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtTZWN1cml0eUNvbnRleHR9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvcmUnO1xuaW1wb3J0ICogYXMgaTE4biBmcm9tICcuLi8uLi8uLi8uLi8uLi9pMThuL2kxOG5fYXN0JztcbmltcG9ydCAqIGFzIG8gZnJvbSAnLi4vLi4vLi4vLi4vLi4vb3V0cHV0L291dHB1dF9hc3QnO1xuaW1wb3J0IHtQYXJzZVNvdXJjZVNwYW59IGZyb20gJy4uLy4uLy4uLy4uLy4uL3BhcnNlX3V0aWwnO1xuaW1wb3J0IHtCaW5kaW5nS2luZCwgSTE4bkV4cHJlc3Npb25Gb3IsIEkxOG5QYXJhbVJlc29sdXRpb25UaW1lLCBPcEtpbmQsIFRlbXBsYXRlS2luZH0gZnJvbSAnLi4vZW51bXMnO1xuaW1wb3J0IHR5cGUge0NvbmRpdGlvbmFsQ2FzZUV4cHJ9IGZyb20gJy4uL2V4cHJlc3Npb24nO1xuaW1wb3J0IHtTbG90SGFuZGxlfSBmcm9tICcuLi9oYW5kbGUnO1xuaW1wb3J0IHtPcCwgWHJlZklkfSBmcm9tICcuLi9vcGVyYXRpb25zJztcbmltcG9ydCB7Q29uc3VtZXNWYXJzVHJhaXQsIERlcGVuZHNPblNsb3RDb250ZXh0T3BUcmFpdCwgVFJBSVRfQ09OU1VNRVNfVkFSUywgVFJBSVRfREVQRU5EU19PTl9TTE9UX0NPTlRFWFR9IGZyb20gJy4uL3RyYWl0cyc7XG5pbXBvcnQgdHlwZSB7SG9zdFByb3BlcnR5T3B9IGZyb20gJy4vaG9zdCc7XG5pbXBvcnQge0xpc3RFbmRPcCwgTkVXX09QLCBTdGF0ZW1lbnRPcCwgVmFyaWFibGVPcH0gZnJvbSAnLi9zaGFyZWQnO1xuXG5cbi8qKlxuICogQW4gb3BlcmF0aW9uIHVzYWJsZSBvbiB0aGUgdXBkYXRlIHNpZGUgb2YgdGhlIElSLlxuICovXG5leHBvcnQgdHlwZSBVcGRhdGVPcCA9XG4gICAgTGlzdEVuZE9wPFVwZGF0ZU9wPnxTdGF0ZW1lbnRPcDxVcGRhdGVPcD58UHJvcGVydHlPcHxUd29XYXlQcm9wZXJ0eU9wfEF0dHJpYnV0ZU9wfFN0eWxlUHJvcE9wfFxuICAgIENsYXNzUHJvcE9wfFN0eWxlTWFwT3B8Q2xhc3NNYXBPcHxJbnRlcnBvbGF0ZVRleHRPcHxBZHZhbmNlT3B8VmFyaWFibGVPcDxVcGRhdGVPcD58QmluZGluZ09wfFxuICAgIEhvc3RQcm9wZXJ0eU9wfENvbmRpdGlvbmFsT3B8STE4bkV4cHJlc3Npb25PcHxJMThuQXBwbHlPcHxSZXBlYXRlck9wfERlZmVyV2hlbk9wO1xuXG4vKipcbiAqIEEgbG9naWNhbCBvcGVyYXRpb24gdG8gcGVyZm9ybSBzdHJpbmcgaW50ZXJwb2xhdGlvbiBvbiBhIHRleHQgbm9kZS5cbiAqXG4gKiBJbnRlcnBvbGF0aW9uIGlucHV0cyBhcmUgc3RvcmVkIGFzIHN0YXRpYyBgc3RyaW5nYHMgYW5kIGR5bmFtaWMgYG8uRXhwcmVzc2lvbmBzLCBpbiBzZXBhcmF0ZVxuICogYXJyYXlzLiBUaHVzLCB0aGUgaW50ZXJwb2xhdGlvbiBgQXt7Yn19Q3t7ZH19RWAgaXMgc3RvcmVkIGFzIDMgc3RhdGljIHN0cmluZ3MgYFsnQScsICdDJywgJ0UnXWBcbiAqIGFuZCAyIGR5bmFtaWMgZXhwcmVzc2lvbnMgYFtiLCBkXWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJwb2xhdGVUZXh0T3AgZXh0ZW5kcyBPcDxVcGRhdGVPcD4sIENvbnN1bWVzVmFyc1RyYWl0IHtcbiAga2luZDogT3BLaW5kLkludGVycG9sYXRlVGV4dDtcblxuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSB0ZXh0IG5vZGUgdG8gd2hpY2ggdGhlIGludGVycG9sYXRpb24gaXMgYm91bmQuXG4gICAqL1xuICB0YXJnZXQ6IFhyZWZJZDtcblxuICAvKipcbiAgICogVGhlIGludGVycG9sYXRlZCB2YWx1ZS5cbiAgICovXG4gIGludGVycG9sYXRpb246IEludGVycG9sYXRpb247XG5cbiAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhbiBgSW50ZXJwb2xhdGlvblRleHRPcGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJbnRlcnBvbGF0ZVRleHRPcChcbiAgICB4cmVmOiBYcmVmSWQsIGludGVycG9sYXRpb246IEludGVycG9sYXRpb24sIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbik6IEludGVycG9sYXRlVGV4dE9wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuSW50ZXJwb2xhdGVUZXh0LFxuICAgIHRhcmdldDogeHJlZixcbiAgICBpbnRlcnBvbGF0aW9uLFxuICAgIHNvdXJjZVNwYW4sXG4gICAgLi4uVFJBSVRfREVQRU5EU19PTl9TTE9UX0NPTlRFWFQsXG4gICAgLi4uVFJBSVRfQ09OU1VNRVNfVkFSUyxcbiAgICAuLi5ORVdfT1AsXG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyBJbnRlcnBvbGF0aW9uIHtcbiAgY29uc3RydWN0b3IoXG4gICAgICByZWFkb25seSBzdHJpbmdzOiBzdHJpbmdbXSwgcmVhZG9ubHkgZXhwcmVzc2lvbnM6IG8uRXhwcmVzc2lvbltdLFxuICAgICAgcmVhZG9ubHkgaTE4blBsYWNlaG9sZGVyczogc3RyaW5nW10pIHtcbiAgICBpZiAoaTE4blBsYWNlaG9sZGVycy5sZW5ndGggIT09IDAgJiYgaTE4blBsYWNlaG9sZGVycy5sZW5ndGggIT09IGV4cHJlc3Npb25zLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke1xuICAgICAgICAgIGV4cHJlc3Npb25zLmxlbmd0aH0gcGxhY2Vob2xkZXJzIHRvIG1hdGNoIGludGVycG9sYXRpb24gZXhwcmVzc2lvbiBjb3VudCwgYnV0IGdvdCAke1xuICAgICAgICAgIGkxOG5QbGFjZWhvbGRlcnMubGVuZ3RofWApO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEFuIGludGVybWVkaWF0ZSBiaW5kaW5nIG9wLCB0aGF0IGhhcyBub3QgeWV0IGJlZW4gcHJvY2Vzc2VkIGludG8gYW4gaW5kaXZpZHVhbCBwcm9wZXJ0eSxcbiAqIGF0dHJpYnV0ZSwgc3R5bGUsIGV0Yy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaW5kaW5nT3AgZXh0ZW5kcyBPcDxVcGRhdGVPcD4ge1xuICBraW5kOiBPcEtpbmQuQmluZGluZztcblxuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IG9uIHdoaWNoIHRoZSBwcm9wZXJ0eSBpcyBib3VuZC5cbiAgICovXG4gIHRhcmdldDogWHJlZklkO1xuXG4gIC8qKlxuICAgKiAgVGhlIGtpbmQgb2YgYmluZGluZyByZXByZXNlbnRlZCBieSB0aGlzIG9wLlxuICAgKi9cbiAgYmluZGluZ0tpbmQ6IEJpbmRpbmdLaW5kO1xuXG4gIC8qKlxuICAgKiAgVGhlIG5hbWUgb2YgdGhpcyBiaW5kaW5nLlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFeHByZXNzaW9uIHdoaWNoIGlzIGJvdW5kIHRvIHRoZSBwcm9wZXJ0eS5cbiAgICovXG4gIGV4cHJlc3Npb246IG8uRXhwcmVzc2lvbnxJbnRlcnBvbGF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgdW5pdCBvZiB0aGUgYm91bmQgdmFsdWUuXG4gICAqL1xuICB1bml0OiBzdHJpbmd8bnVsbDtcblxuICAvKipcbiAgICogVGhlIHNlY3VyaXR5IGNvbnRleHQgb2YgdGhlIGJpbmRpbmcuXG4gICAqL1xuICBzZWN1cml0eUNvbnRleHQ6IFNlY3VyaXR5Q29udGV4dHxTZWN1cml0eUNvbnRleHRbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgYmluZGluZyBpcyBhIFRleHRBdHRyaWJ1dGUgKGUuZy4gYHNvbWUtYXR0cj1cInNvbWUtdmFsdWVcImApLlxuICAgKlxuICAgKiBUaGlzIG5lZWRzIHRvIGJlIHRyYWNrZWQgZm9yIGNvbXBhdGlibGl0eSB3aXRoIGBUZW1wbGF0ZURlZmluaXRpb25CdWlsZGVyYCB3aGljaCB0cmVhdHMgYHN0eWxlYFxuICAgKiBhbmQgYGNsYXNzYCBUZXh0QXR0cmlidXRlcyBkaWZmZXJlbnRseSBmcm9tIGBbYXR0ci5zdHlsZV1gIGFuZCBgW2F0dHIuY2xhc3NdYC5cbiAgICovXG4gIGlzVGV4dEF0dHJpYnV0ZTogYm9vbGVhbjtcblxuICBpc1N0cnVjdHVyYWxUZW1wbGF0ZUF0dHJpYnV0ZTogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGJpbmRpbmcgaXMgb24gYSBzdHJ1Y3R1cmFsIHRlbXBsYXRlLlxuICAgKi9cbiAgdGVtcGxhdGVLaW5kOiBUZW1wbGF0ZUtpbmR8bnVsbDtcblxuICBpMThuQ29udGV4dDogWHJlZklkfG51bGw7XG4gIGkxOG5NZXNzYWdlOiBpMThuLk1lc3NhZ2V8bnVsbDtcblxuICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW47XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgYEJpbmRpbmdPcGAsIG5vdCB5ZXQgdHJhbnNmb3JtZWQgaW50byBhIHBhcnRpY3VsYXIgdHlwZSBvZiBiaW5kaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQmluZGluZ09wKFxuICAgIHRhcmdldDogWHJlZklkLCBraW5kOiBCaW5kaW5nS2luZCwgbmFtZTogc3RyaW5nLCBleHByZXNzaW9uOiBvLkV4cHJlc3Npb258SW50ZXJwb2xhdGlvbixcbiAgICB1bml0OiBzdHJpbmd8bnVsbCwgc2VjdXJpdHlDb250ZXh0OiBTZWN1cml0eUNvbnRleHR8U2VjdXJpdHlDb250ZXh0W10sIGlzVGV4dEF0dHJpYnV0ZTogYm9vbGVhbixcbiAgICBpc1N0cnVjdHVyYWxUZW1wbGF0ZUF0dHJpYnV0ZTogYm9vbGVhbiwgdGVtcGxhdGVLaW5kOiBUZW1wbGF0ZUtpbmR8bnVsbCxcbiAgICBpMThuTWVzc2FnZTogaTE4bi5NZXNzYWdlfG51bGwsIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbik6IEJpbmRpbmdPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLkJpbmRpbmcsXG4gICAgYmluZGluZ0tpbmQ6IGtpbmQsXG4gICAgdGFyZ2V0LFxuICAgIG5hbWUsXG4gICAgZXhwcmVzc2lvbixcbiAgICB1bml0LFxuICAgIHNlY3VyaXR5Q29udGV4dCxcbiAgICBpc1RleHRBdHRyaWJ1dGUsXG4gICAgaXNTdHJ1Y3R1cmFsVGVtcGxhdGVBdHRyaWJ1dGUsXG4gICAgdGVtcGxhdGVLaW5kLFxuICAgIGkxOG5Db250ZXh0OiBudWxsLFxuICAgIGkxOG5NZXNzYWdlLFxuICAgIHNvdXJjZVNwYW4sXG4gICAgLi4uTkVXX09QLFxuICB9O1xufVxuXG4vKipcbiAqIEEgbG9naWNhbCBvcGVyYXRpb24gcmVwcmVzZW50aW5nIGJpbmRpbmcgdG8gYSBwcm9wZXJ0eSBpbiB0aGUgdXBkYXRlIElSLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb3BlcnR5T3AgZXh0ZW5kcyBPcDxVcGRhdGVPcD4sIENvbnN1bWVzVmFyc1RyYWl0LCBEZXBlbmRzT25TbG90Q29udGV4dE9wVHJhaXQge1xuICBraW5kOiBPcEtpbmQuUHJvcGVydHk7XG5cbiAgLyoqXG4gICAqIFJlZmVyZW5jZSB0byB0aGUgZWxlbWVudCBvbiB3aGljaCB0aGUgcHJvcGVydHkgaXMgYm91bmQuXG4gICAqL1xuICB0YXJnZXQ6IFhyZWZJZDtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgYm91bmQgcHJvcGVydHkuXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4cHJlc3Npb24gd2hpY2ggaXMgYm91bmQgdG8gdGhlIHByb3BlcnR5LlxuICAgKi9cbiAgZXhwcmVzc2lvbjogby5FeHByZXNzaW9ufEludGVycG9sYXRpb247XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBwcm9wZXJ0eSBpcyBhbiBhbmltYXRpb24gdHJpZ2dlci5cbiAgICovXG4gIGlzQW5pbWF0aW9uVHJpZ2dlcjogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHNlY3VyaXR5IGNvbnRleHQgb2YgdGhlIGJpbmRpbmcuXG4gICAqL1xuICBzZWN1cml0eUNvbnRleHQ6IFNlY3VyaXR5Q29udGV4dHxTZWN1cml0eUNvbnRleHRbXTtcblxuICAvKipcbiAgICogVGhlIHNhbml0aXplciBmb3IgdGhpcyBwcm9wZXJ0eS5cbiAgICovXG4gIHNhbml0aXplcjogby5FeHByZXNzaW9ufG51bGw7XG5cbiAgaXNTdHJ1Y3R1cmFsVGVtcGxhdGVBdHRyaWJ1dGU6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBraW5kIG9mIHRlbXBsYXRlIHRhcmdldGVkIGJ5IHRoZSBiaW5kaW5nLCBvciBudWxsIGlmIHRoaXMgYmluZGluZyBkb2VzIG5vdCB0YXJnZXQgYVxuICAgKiB0ZW1wbGF0ZS5cbiAgICovXG4gIHRlbXBsYXRlS2luZDogVGVtcGxhdGVLaW5kfG51bGw7XG5cbiAgaTE4bkNvbnRleHQ6IFhyZWZJZHxudWxsO1xuICBpMThuTWVzc2FnZTogaTE4bi5NZXNzYWdlfG51bGw7XG5cbiAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGBQcm9wZXJ0eU9wYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVByb3BlcnR5T3AoXG4gICAgdGFyZ2V0OiBYcmVmSWQsIG5hbWU6IHN0cmluZywgZXhwcmVzc2lvbjogby5FeHByZXNzaW9ufEludGVycG9sYXRpb24sXG4gICAgaXNBbmltYXRpb25UcmlnZ2VyOiBib29sZWFuLCBzZWN1cml0eUNvbnRleHQ6IFNlY3VyaXR5Q29udGV4dHxTZWN1cml0eUNvbnRleHRbXSxcbiAgICBpc1N0cnVjdHVyYWxUZW1wbGF0ZUF0dHJpYnV0ZTogYm9vbGVhbiwgdGVtcGxhdGVLaW5kOiBUZW1wbGF0ZUtpbmR8bnVsbCxcbiAgICBpMThuQ29udGV4dDogWHJlZklkfG51bGwsIGkxOG5NZXNzYWdlOiBpMThuLk1lc3NhZ2V8bnVsbCxcbiAgICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pOiBQcm9wZXJ0eU9wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuUHJvcGVydHksXG4gICAgdGFyZ2V0LFxuICAgIG5hbWUsXG4gICAgZXhwcmVzc2lvbixcbiAgICBpc0FuaW1hdGlvblRyaWdnZXIsXG4gICAgc2VjdXJpdHlDb250ZXh0LFxuICAgIHNhbml0aXplcjogbnVsbCxcbiAgICBpc1N0cnVjdHVyYWxUZW1wbGF0ZUF0dHJpYnV0ZSxcbiAgICB0ZW1wbGF0ZUtpbmQsXG4gICAgaTE4bkNvbnRleHQsXG4gICAgaTE4bk1lc3NhZ2UsXG4gICAgc291cmNlU3BhbixcbiAgICAuLi5UUkFJVF9ERVBFTkRTX09OX1NMT1RfQ09OVEVYVCxcbiAgICAuLi5UUkFJVF9DT05TVU1FU19WQVJTLFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cblxuLyoqXG4gKiBBIGxvZ2ljYWwgb3BlcmF0aW9uIHJlcHJlc2VudGluZyB0aGUgcHJvcGVydHkgYmluZGluZyBzaWRlIG9mIGEgdHdvLXdheSBiaW5kaW5nIGluIHRoZSB1cGRhdGUgSVIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHdvV2F5UHJvcGVydHlPcCBleHRlbmRzIE9wPFVwZGF0ZU9wPiwgQ29uc3VtZXNWYXJzVHJhaXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXBlbmRzT25TbG90Q29udGV4dE9wVHJhaXQge1xuICBraW5kOiBPcEtpbmQuVHdvV2F5UHJvcGVydHk7XG5cbiAgLyoqXG4gICAqIFJlZmVyZW5jZSB0byB0aGUgZWxlbWVudCBvbiB3aGljaCB0aGUgcHJvcGVydHkgaXMgYm91bmQuXG4gICAqL1xuICB0YXJnZXQ6IFhyZWZJZDtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgcHJvcGVydHkuXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4cHJlc3Npb24gd2hpY2ggaXMgYm91bmQgdG8gdGhlIHByb3BlcnR5LlxuICAgKi9cbiAgZXhwcmVzc2lvbjogby5FeHByZXNzaW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VjdXJpdHkgY29udGV4dCBvZiB0aGUgYmluZGluZy5cbiAgICovXG4gIHNlY3VyaXR5Q29udGV4dDogU2VjdXJpdHlDb250ZXh0fFNlY3VyaXR5Q29udGV4dFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgc2FuaXRpemVyIGZvciB0aGlzIHByb3BlcnR5LlxuICAgKi9cbiAgc2FuaXRpemVyOiBvLkV4cHJlc3Npb258bnVsbDtcblxuICBpc1N0cnVjdHVyYWxUZW1wbGF0ZUF0dHJpYnV0ZTogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGtpbmQgb2YgdGVtcGxhdGUgdGFyZ2V0ZWQgYnkgdGhlIGJpbmRpbmcsIG9yIG51bGwgaWYgdGhpcyBiaW5kaW5nIGRvZXMgbm90IHRhcmdldCBhXG4gICAqIHRlbXBsYXRlLlxuICAgKi9cbiAgdGVtcGxhdGVLaW5kOiBUZW1wbGF0ZUtpbmR8bnVsbDtcblxuICBpMThuQ29udGV4dDogWHJlZklkfG51bGw7XG4gIGkxOG5NZXNzYWdlOiBpMThuLk1lc3NhZ2V8bnVsbDtcblxuICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW47XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgYFR3b1dheVByb3BlcnR5T3BgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVHdvV2F5UHJvcGVydHlPcChcbiAgICB0YXJnZXQ6IFhyZWZJZCwgbmFtZTogc3RyaW5nLCBleHByZXNzaW9uOiBvLkV4cHJlc3Npb24sXG4gICAgc2VjdXJpdHlDb250ZXh0OiBTZWN1cml0eUNvbnRleHR8U2VjdXJpdHlDb250ZXh0W10sIGlzU3RydWN0dXJhbFRlbXBsYXRlQXR0cmlidXRlOiBib29sZWFuLFxuICAgIHRlbXBsYXRlS2luZDogVGVtcGxhdGVLaW5kfG51bGwsIGkxOG5Db250ZXh0OiBYcmVmSWR8bnVsbCwgaTE4bk1lc3NhZ2U6IGkxOG4uTWVzc2FnZXxudWxsLFxuICAgIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbik6IFR3b1dheVByb3BlcnR5T3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5Ud29XYXlQcm9wZXJ0eSxcbiAgICB0YXJnZXQsXG4gICAgbmFtZSxcbiAgICBleHByZXNzaW9uLFxuICAgIHNlY3VyaXR5Q29udGV4dCxcbiAgICBzYW5pdGl6ZXI6IG51bGwsXG4gICAgaXNTdHJ1Y3R1cmFsVGVtcGxhdGVBdHRyaWJ1dGUsXG4gICAgdGVtcGxhdGVLaW5kLFxuICAgIGkxOG5Db250ZXh0LFxuICAgIGkxOG5NZXNzYWdlLFxuICAgIHNvdXJjZVNwYW4sXG4gICAgLi4uVFJBSVRfREVQRU5EU19PTl9TTE9UX0NPTlRFWFQsXG4gICAgLi4uVFJBSVRfQ09OU1VNRVNfVkFSUyxcbiAgICAuLi5ORVdfT1AsXG4gIH07XG59XG5cbi8qKlxuICogQSBsb2dpY2FsIG9wZXJhdGlvbiByZXByZXNlbnRpbmcgYmluZGluZyB0byBhIHN0eWxlIHByb3BlcnR5IGluIHRoZSB1cGRhdGUgSVIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3R5bGVQcm9wT3AgZXh0ZW5kcyBPcDxVcGRhdGVPcD4sIENvbnN1bWVzVmFyc1RyYWl0LCBEZXBlbmRzT25TbG90Q29udGV4dE9wVHJhaXQge1xuICBraW5kOiBPcEtpbmQuU3R5bGVQcm9wO1xuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgdG8gdGhlIGVsZW1lbnQgb24gd2hpY2ggdGhlIHByb3BlcnR5IGlzIGJvdW5kLlxuICAgKi9cbiAgdGFyZ2V0OiBYcmVmSWQ7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGJvdW5kIHByb3BlcnR5LlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFeHByZXNzaW9uIHdoaWNoIGlzIGJvdW5kIHRvIHRoZSBwcm9wZXJ0eS5cbiAgICovXG4gIGV4cHJlc3Npb246IG8uRXhwcmVzc2lvbnxJbnRlcnBvbGF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgdW5pdCBvZiB0aGUgYm91bmQgdmFsdWUuXG4gICAqL1xuICB1bml0OiBzdHJpbmd8bnVsbDtcblxuICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW47XG59XG5cbi8qKiBDcmVhdGUgYSBgU3R5bGVQcm9wT3BgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVN0eWxlUHJvcE9wKFxuICAgIHhyZWY6IFhyZWZJZCwgbmFtZTogc3RyaW5nLCBleHByZXNzaW9uOiBvLkV4cHJlc3Npb258SW50ZXJwb2xhdGlvbiwgdW5pdDogc3RyaW5nfG51bGwsXG4gICAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKTogU3R5bGVQcm9wT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5TdHlsZVByb3AsXG4gICAgdGFyZ2V0OiB4cmVmLFxuICAgIG5hbWUsXG4gICAgZXhwcmVzc2lvbixcbiAgICB1bml0LFxuICAgIHNvdXJjZVNwYW4sXG4gICAgLi4uVFJBSVRfREVQRU5EU19PTl9TTE9UX0NPTlRFWFQsXG4gICAgLi4uVFJBSVRfQ09OU1VNRVNfVkFSUyxcbiAgICAuLi5ORVdfT1AsXG4gIH07XG59XG5cbi8qKlxuICogQSBsb2dpY2FsIG9wZXJhdGlvbiByZXByZXNlbnRpbmcgYmluZGluZyB0byBhIGNsYXNzIHByb3BlcnR5IGluIHRoZSB1cGRhdGUgSVIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2xhc3NQcm9wT3AgZXh0ZW5kcyBPcDxVcGRhdGVPcD4sIENvbnN1bWVzVmFyc1RyYWl0LCBEZXBlbmRzT25TbG90Q29udGV4dE9wVHJhaXQge1xuICBraW5kOiBPcEtpbmQuQ2xhc3NQcm9wO1xuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgdG8gdGhlIGVsZW1lbnQgb24gd2hpY2ggdGhlIHByb3BlcnR5IGlzIGJvdW5kLlxuICAgKi9cbiAgdGFyZ2V0OiBYcmVmSWQ7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGJvdW5kIHByb3BlcnR5LlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFeHByZXNzaW9uIHdoaWNoIGlzIGJvdW5kIHRvIHRoZSBwcm9wZXJ0eS5cbiAgICovXG4gIGV4cHJlc3Npb246IG8uRXhwcmVzc2lvbjtcblxuICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW47XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgYENsYXNzUHJvcE9wYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNsYXNzUHJvcE9wKFxuICAgIHhyZWY6IFhyZWZJZCwgbmFtZTogc3RyaW5nLCBleHByZXNzaW9uOiBvLkV4cHJlc3Npb24sXG4gICAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKTogQ2xhc3NQcm9wT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5DbGFzc1Byb3AsXG4gICAgdGFyZ2V0OiB4cmVmLFxuICAgIG5hbWUsXG4gICAgZXhwcmVzc2lvbixcbiAgICBzb3VyY2VTcGFuLFxuICAgIC4uLlRSQUlUX0RFUEVORFNfT05fU0xPVF9DT05URVhULFxuICAgIC4uLlRSQUlUX0NPTlNVTUVTX1ZBUlMsXG4gICAgLi4uTkVXX09QLFxuICB9O1xufVxuXG4vKipcbiAqIEEgbG9naWNhbCBvcGVyYXRpb24gcmVwcmVzZW50aW5nIGJpbmRpbmcgdG8gYSBzdHlsZSBtYXAgaW4gdGhlIHVwZGF0ZSBJUi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdHlsZU1hcE9wIGV4dGVuZHMgT3A8VXBkYXRlT3A+LCBDb25zdW1lc1ZhcnNUcmFpdCwgRGVwZW5kc09uU2xvdENvbnRleHRPcFRyYWl0IHtcbiAga2luZDogT3BLaW5kLlN0eWxlTWFwO1xuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgdG8gdGhlIGVsZW1lbnQgb24gd2hpY2ggdGhlIHByb3BlcnR5IGlzIGJvdW5kLlxuICAgKi9cbiAgdGFyZ2V0OiBYcmVmSWQ7XG5cbiAgLyoqXG4gICAqIEV4cHJlc3Npb24gd2hpY2ggaXMgYm91bmQgdG8gdGhlIHByb3BlcnR5LlxuICAgKi9cbiAgZXhwcmVzc2lvbjogby5FeHByZXNzaW9ufEludGVycG9sYXRpb247XG5cbiAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuO1xufVxuXG4vKiogQ3JlYXRlIGEgYFN0eWxlTWFwT3BgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVN0eWxlTWFwT3AoXG4gICAgeHJlZjogWHJlZklkLCBleHByZXNzaW9uOiBvLkV4cHJlc3Npb258SW50ZXJwb2xhdGlvbiwgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKTogU3R5bGVNYXBPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLlN0eWxlTWFwLFxuICAgIHRhcmdldDogeHJlZixcbiAgICBleHByZXNzaW9uLFxuICAgIHNvdXJjZVNwYW4sXG4gICAgLi4uVFJBSVRfREVQRU5EU19PTl9TTE9UX0NPTlRFWFQsXG4gICAgLi4uVFJBSVRfQ09OU1VNRVNfVkFSUyxcbiAgICAuLi5ORVdfT1AsXG4gIH07XG59XG5cbi8qKlxuICogQSBsb2dpY2FsIG9wZXJhdGlvbiByZXByZXNlbnRpbmcgYmluZGluZyB0byBhIHN0eWxlIG1hcCBpbiB0aGUgdXBkYXRlIElSLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsYXNzTWFwT3AgZXh0ZW5kcyBPcDxVcGRhdGVPcD4sIENvbnN1bWVzVmFyc1RyYWl0LCBEZXBlbmRzT25TbG90Q29udGV4dE9wVHJhaXQge1xuICBraW5kOiBPcEtpbmQuQ2xhc3NNYXA7XG5cbiAgLyoqXG4gICAqIFJlZmVyZW5jZSB0byB0aGUgZWxlbWVudCBvbiB3aGljaCB0aGUgcHJvcGVydHkgaXMgYm91bmQuXG4gICAqL1xuICB0YXJnZXQ6IFhyZWZJZDtcblxuICAvKipcbiAgICogRXhwcmVzc2lvbiB3aGljaCBpcyBib3VuZCB0byB0aGUgcHJvcGVydHkuXG4gICAqL1xuICBleHByZXNzaW9uOiBvLkV4cHJlc3Npb258SW50ZXJwb2xhdGlvbjtcblxuICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW47XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgYENsYXNzTWFwT3BgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2xhc3NNYXBPcChcbiAgICB4cmVmOiBYcmVmSWQsIGV4cHJlc3Npb246IG8uRXhwcmVzc2lvbnxJbnRlcnBvbGF0aW9uLCBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pOiBDbGFzc01hcE9wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuQ2xhc3NNYXAsXG4gICAgdGFyZ2V0OiB4cmVmLFxuICAgIGV4cHJlc3Npb24sXG4gICAgc291cmNlU3BhbixcbiAgICAuLi5UUkFJVF9ERVBFTkRTX09OX1NMT1RfQ09OVEVYVCxcbiAgICAuLi5UUkFJVF9DT05TVU1FU19WQVJTLFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cblxuLyoqXG4gKiBBIGxvZ2ljYWwgb3BlcmF0aW9uIHJlcHJlc2VudGluZyBzZXR0aW5nIGFuIGF0dHJpYnV0ZSBvbiBhbiBlbGVtZW50IGluIHRoZSB1cGRhdGUgSVIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXR0cmlidXRlT3AgZXh0ZW5kcyBPcDxVcGRhdGVPcD4ge1xuICBraW5kOiBPcEtpbmQuQXR0cmlidXRlO1xuXG4gIC8qKlxuICAgKiBUaGUgYFhyZWZJZGAgb2YgdGhlIHRlbXBsYXRlLWxpa2UgZWxlbWVudCB0aGUgYXR0cmlidXRlIHdpbGwgYmVsb25nIHRvLlxuICAgKi9cbiAgdGFyZ2V0OiBYcmVmSWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lc3BhY2Ugb2YgdGhlIGF0dHJpYnV0ZSAob3IgbnVsbCBpZiBub25lKS5cbiAgICovXG4gIG5hbWVzcGFjZTogc3RyaW5nfG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBhdHRyaWJ1dGUuXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlLlxuICAgKi9cbiAgZXhwcmVzc2lvbjogby5FeHByZXNzaW9ufEludGVycG9sYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBzZWN1cml0eSBjb250ZXh0IG9mIHRoZSBiaW5kaW5nLlxuICAgKi9cbiAgc2VjdXJpdHlDb250ZXh0OiBTZWN1cml0eUNvbnRleHR8U2VjdXJpdHlDb250ZXh0W107XG5cbiAgLyoqXG4gICAqIFRoZSBzYW5pdGl6ZXIgZm9yIHRoaXMgYXR0cmlidXRlLlxuICAgKi9cbiAgc2FuaXRpemVyOiBvLkV4cHJlc3Npb258bnVsbDtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgYmluZGluZyBpcyBhIFRleHRBdHRyaWJ1dGUgKGUuZy4gYHNvbWUtYXR0cj1cInNvbWUtdmFsdWVcImApLlxuICAgKlxuICAgKiBUaGlzIG5lZWRzIHRvIGJlIHRyYWNrZWQgZm9yIGNvbXBhdGlibGl0eSB3aXRoIGBUZW1wbGF0ZURlZmluaXRpb25CdWlsZGVyYCB3aGljaCB0cmVhdHMgYHN0eWxlYFxuICAgKiBhbmQgYGNsYXNzYCBUZXh0QXR0cmlidXRlcyBkaWZmZXJlbnRseSBmcm9tIGBbYXR0ci5zdHlsZV1gIGFuZCBgW2F0dHIuY2xhc3NdYC5cbiAgICovXG4gIGlzVGV4dEF0dHJpYnV0ZTogYm9vbGVhbjtcblxuICBpc1N0cnVjdHVyYWxUZW1wbGF0ZUF0dHJpYnV0ZTogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGtpbmQgb2YgdGVtcGxhdGUgdGFyZ2V0ZWQgYnkgdGhlIGJpbmRpbmcsIG9yIG51bGwgaWYgdGhpcyBiaW5kaW5nIGRvZXMgbm90IHRhcmdldCBhXG4gICAqIHRlbXBsYXRlLlxuICAgKi9cbiAgdGVtcGxhdGVLaW5kOiBUZW1wbGF0ZUtpbmR8bnVsbDtcblxuICAvKipcbiAgICogVGhlIGkxOG4gY29udGV4dCwgaWYgdGhpcyBpcyBhbiBpMThuIGF0dHJpYnV0ZS5cbiAgICovXG4gIGkxOG5Db250ZXh0OiBYcmVmSWR8bnVsbDtcblxuICBpMThuTWVzc2FnZTogaTE4bi5NZXNzYWdlfG51bGw7XG5cbiAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhbiBgQXR0cmlidXRlT3BgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQXR0cmlidXRlT3AoXG4gICAgdGFyZ2V0OiBYcmVmSWQsIG5hbWVzcGFjZTogc3RyaW5nfG51bGwsIG5hbWU6IHN0cmluZywgZXhwcmVzc2lvbjogby5FeHByZXNzaW9ufEludGVycG9sYXRpb24sXG4gICAgc2VjdXJpdHlDb250ZXh0OiBTZWN1cml0eUNvbnRleHR8U2VjdXJpdHlDb250ZXh0W10sIGlzVGV4dEF0dHJpYnV0ZTogYm9vbGVhbixcbiAgICBpc1N0cnVjdHVyYWxUZW1wbGF0ZUF0dHJpYnV0ZTogYm9vbGVhbiwgdGVtcGxhdGVLaW5kOiBUZW1wbGF0ZUtpbmR8bnVsbCxcbiAgICBpMThuTWVzc2FnZTogaTE4bi5NZXNzYWdlfG51bGwsIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbik6IEF0dHJpYnV0ZU9wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuQXR0cmlidXRlLFxuICAgIHRhcmdldCxcbiAgICBuYW1lc3BhY2UsXG4gICAgbmFtZSxcbiAgICBleHByZXNzaW9uLFxuICAgIHNlY3VyaXR5Q29udGV4dCxcbiAgICBzYW5pdGl6ZXI6IG51bGwsXG4gICAgaXNUZXh0QXR0cmlidXRlLFxuICAgIGlzU3RydWN0dXJhbFRlbXBsYXRlQXR0cmlidXRlLFxuICAgIHRlbXBsYXRlS2luZCxcbiAgICBpMThuQ29udGV4dDogbnVsbCxcbiAgICBpMThuTWVzc2FnZSxcbiAgICBzb3VyY2VTcGFuLFxuICAgIC4uLlRSQUlUX0RFUEVORFNfT05fU0xPVF9DT05URVhULFxuICAgIC4uLlRSQUlUX0NPTlNVTUVTX1ZBUlMsXG4gICAgLi4uTkVXX09QLFxuICB9O1xufVxuXG4vKipcbiAqIExvZ2ljYWwgb3BlcmF0aW9uIHRvIGFkdmFuY2UgdGhlIHJ1bnRpbWUncyBpbnRlcm5hbCBzbG90IHBvaW50ZXIgaW4gdGhlIHVwZGF0ZSBJUi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZHZhbmNlT3AgZXh0ZW5kcyBPcDxVcGRhdGVPcD4ge1xuICBraW5kOiBPcEtpbmQuQWR2YW5jZTtcblxuICAvKipcbiAgICogRGVsdGEgYnkgd2hpY2ggdG8gYWR2YW5jZSB0aGUgcG9pbnRlci5cbiAgICovXG4gIGRlbHRhOiBudW1iZXI7XG5cbiAgLy8gU291cmNlIHNwYW4gb2YgdGhlIGJpbmRpbmcgdGhhdCBjYXVzZWQgdGhlIGFkdmFuY2VcbiAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhbiBgQWR2YW5jZU9wYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFkdmFuY2VPcChkZWx0YTogbnVtYmVyLCBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pOiBBZHZhbmNlT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5BZHZhbmNlLFxuICAgIGRlbHRhLFxuICAgIHNvdXJjZVNwYW4sXG4gICAgLi4uTkVXX09QLFxuICB9O1xufVxuXG4vKipcbiAqIExvZ2ljYWwgb3BlcmF0aW9uIHJlcHJlc2VudGluZyBhIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gaW4gdGhlIHVwZGF0ZSBJUi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25kaXRpb25hbE9wIGV4dGVuZHMgT3A8Q29uZGl0aW9uYWxPcD4sIERlcGVuZHNPblNsb3RDb250ZXh0T3BUcmFpdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnN1bWVzVmFyc1RyYWl0IHtcbiAga2luZDogT3BLaW5kLkNvbmRpdGlvbmFsO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5zZXJ0aW9uIHBvaW50LCB3aGljaCBpcyB0aGUgZmlyc3QgdGVtcGxhdGUgaW4gdGhlIGNyZWF0aW9uIGJsb2NrIGJlbG9uZ2luZyB0byB0aGlzXG4gICAqIGNvbmRpdGlvbi5cbiAgICovXG4gIHRhcmdldDogWHJlZklkO1xuXG4gIC8qKlxuICAgKiBUaGUgc2xvdCBvZiB0aGUgdGFyZ2V0LCB0byBiZSBwb3B1bGF0ZWQgZHVyaW5nIHNsb3QgYWxsb2NhdGlvbi5cbiAgICovXG4gIHRhcmdldFNsb3Q6IFNsb3RIYW5kbGU7XG5cbiAgLyoqXG4gICAqIFRoZSBtYWluIHRlc3QgZXhwcmVzc2lvbiAoZm9yIGEgc3dpdGNoKSwgb3IgYG51bGxgIChmb3IgYW4gaWYsIHdoaWNoIGhhcyBubyB0ZXN0XG4gICAqIGV4cHJlc3Npb24pLlxuICAgKi9cbiAgdGVzdDogby5FeHByZXNzaW9ufG51bGw7XG5cbiAgLyoqXG4gICAqIEVhY2ggcG9zc2libGUgZW1iZWRkZWQgdmlldyB0aGF0IGNvdWxkIGJlIGRpc3BsYXllZCBoYXMgYSBjb25kaXRpb24gKG9yIGlzIGRlZmF1bHQpLiBUaGlzXG4gICAqIHN0cnVjdHVyZSBtYXBzIGVhY2ggdmlldyB4cmVmIHRvIGl0cyBjb3JyZXNwb25kaW5nIGNvbmRpdGlvbi5cbiAgICovXG4gIGNvbmRpdGlvbnM6IEFycmF5PENvbmRpdGlvbmFsQ2FzZUV4cHI+O1xuXG4gIC8qKlxuICAgKiBBZnRlciBwcm9jZXNzaW5nLCB0aGlzIHdpbGwgYmUgYSBzaW5nbGUgY29sbGFwc2VkIEpvb3N0LWV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMgdGhlXG4gICAqIGNvbmRpdGlvbnMsIGFuZCB5aWVsZHMgdGhlIHNsb3QgbnVtYmVyIG9mIHRoZSB0ZW1wbGF0ZSB3aGljaCBzaG91bGQgYmUgZGlzcGxheWVkLlxuICAgKi9cbiAgcHJvY2Vzc2VkOiBvLkV4cHJlc3Npb258bnVsbDtcblxuICAvKipcbiAgICogQ29udHJvbCBmbG93IGNvbmRpdGlvbmFscyBjYW4gYWNjZXB0IGEgY29udGV4dCB2YWx1ZSAodGhpcyBpcyBhIHJlc3VsdCBvZiBzcGVjaWZ5aW5nIGFuXG4gICAqIGFsaWFzKS4gVGhpcyBleHByZXNzaW9uIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBjb25kaXRpb25hbCBpbnN0cnVjdGlvbidzIGNvbnRleHQgcGFyYW1ldGVyLlxuICAgKi9cbiAgY29udGV4dFZhbHVlOiBvLkV4cHJlc3Npb258bnVsbDtcblxuICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW47XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgY29uZGl0aW9uYWwgb3AsIHdoaWNoIHdpbGwgZGlzcGxheSBhbiBlbWJlZGRlZCB2aWV3IGFjY29yZGluZyB0byBhIGNvbmR0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29uZGl0aW9uYWxPcChcbiAgICB0YXJnZXQ6IFhyZWZJZCwgdGFyZ2V0U2xvdDogU2xvdEhhbmRsZSwgdGVzdDogby5FeHByZXNzaW9ufG51bGwsXG4gICAgY29uZGl0aW9uczogQXJyYXk8Q29uZGl0aW9uYWxDYXNlRXhwcj4sIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbik6IENvbmRpdGlvbmFsT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5Db25kaXRpb25hbCxcbiAgICB0YXJnZXQsXG4gICAgdGFyZ2V0U2xvdCxcbiAgICB0ZXN0LFxuICAgIGNvbmRpdGlvbnMsXG4gICAgcHJvY2Vzc2VkOiBudWxsLFxuICAgIHNvdXJjZVNwYW4sXG4gICAgY29udGV4dFZhbHVlOiBudWxsLFxuICAgIC4uLk5FV19PUCxcbiAgICAuLi5UUkFJVF9ERVBFTkRTX09OX1NMT1RfQ09OVEVYVCxcbiAgICAuLi5UUkFJVF9DT05TVU1FU19WQVJTLFxuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcGVhdGVyT3AgZXh0ZW5kcyBPcDxVcGRhdGVPcD4sIERlcGVuZHNPblNsb3RDb250ZXh0T3BUcmFpdCB7XG4gIGtpbmQ6IE9wS2luZC5SZXBlYXRlcjtcblxuICAvKipcbiAgICogVGhlIFJlcGVhdGVyQ3JlYXRlIG9wIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlcGVhdGVyLlxuICAgKi9cbiAgdGFyZ2V0OiBYcmVmSWQ7XG5cbiAgdGFyZ2V0U2xvdDogU2xvdEhhbmRsZTtcblxuICAvKipcbiAgICogVGhlIGNvbGxlY3Rpb24gcHJvdmlkZWQgdG8gdGhlIGZvciBsb29wIGFzIGl0cyBleHByZXNzaW9uLlxuICAgKi9cbiAgY29sbGVjdGlvbjogby5FeHByZXNzaW9uO1xuXG4gIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlcGVhdGVyT3AoXG4gICAgcmVwZWF0ZXJDcmVhdGU6IFhyZWZJZCwgdGFyZ2V0U2xvdDogU2xvdEhhbmRsZSwgY29sbGVjdGlvbjogby5FeHByZXNzaW9uLFxuICAgIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbik6IFJlcGVhdGVyT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5SZXBlYXRlcixcbiAgICB0YXJnZXQ6IHJlcGVhdGVyQ3JlYXRlLFxuICAgIHRhcmdldFNsb3QsXG4gICAgY29sbGVjdGlvbixcbiAgICBzb3VyY2VTcGFuLFxuICAgIC4uLk5FV19PUCxcbiAgICAuLi5UUkFJVF9ERVBFTkRTX09OX1NMT1RfQ09OVEVYVCxcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZWZlcldoZW5PcCBleHRlbmRzIE9wPFVwZGF0ZU9wPiwgRGVwZW5kc09uU2xvdENvbnRleHRPcFRyYWl0LCBDb25zdW1lc1ZhcnNUcmFpdCB7XG4gIGtpbmQ6IE9wS2luZC5EZWZlcldoZW47XG5cbiAgLyoqXG4gICAqIFRoZSBgZGVmZXJgIGNyZWF0ZSBvcCBhc3NvY2lhdGVkIHdpdGggdGhpcyB3aGVuIGNvbmRpdGlvbi5cbiAgICovXG4gIHRhcmdldDogWHJlZklkO1xuXG4gIC8qKlxuICAgKiBBIHVzZXItcHJvdmlkZWQgZXhwcmVzc2lvbiB0aGF0IHRyaWdnZXJzIHRoZSBkZWZlciBvcC5cbiAgICovXG4gIGV4cHI6IG8uRXhwcmVzc2lvbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBlbWl0IHRoZSBwcmVmZXRjaCB2ZXJzaW9uIG9mIHRoZSBpbnN0cnVjdGlvbi5cbiAgICovXG4gIHByZWZldGNoOiBib29sZWFuO1xuXG4gIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlZmVyV2hlbk9wKFxuICAgIHRhcmdldDogWHJlZklkLCBleHByOiBvLkV4cHJlc3Npb24sIHByZWZldGNoOiBib29sZWFuLFxuICAgIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbik6IERlZmVyV2hlbk9wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuRGVmZXJXaGVuLFxuICAgIHRhcmdldCxcbiAgICBleHByLFxuICAgIHByZWZldGNoLFxuICAgIHNvdXJjZVNwYW4sXG4gICAgLi4uTkVXX09QLFxuICAgIC4uLlRSQUlUX0RFUEVORFNfT05fU0xPVF9DT05URVhULFxuICAgIC4uLlRSQUlUX0NPTlNVTUVTX1ZBUlMsXG4gIH07XG59XG5cbi8qKlxuICogQW4gb3AgdGhhdCByZXByZXNlbnRzIGFuIGV4cHJlc3Npb24gaW4gYW4gaTE4biBtZXNzYWdlLlxuICpcbiAqIFRPRE86IFRoaXMgY2FuIHJlcHJlc2VudCBleHByZXNzaW9ucyB1c2VkIGluIGJvdGggaTE4biBhdHRyaWJ1dGVzIGFuZCBub3JtYWwgaTE4biBjb250ZW50LiBXZVxuICogbWF5IHdhbnQgdG8gc3BsaXQgdGhlc2UgaW50byB0d28gZGlmZmVyZW50IG9wIHR5cGVzLCBkZXJpdmluZyBmcm9tIHRoZSBzYW1lIGJhc2UgY2xhc3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSTE4bkV4cHJlc3Npb25PcCBleHRlbmRzIE9wPFVwZGF0ZU9wPiwgQ29uc3VtZXNWYXJzVHJhaXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXBlbmRzT25TbG90Q29udGV4dE9wVHJhaXQge1xuICBraW5kOiBPcEtpbmQuSTE4bkV4cHJlc3Npb247XG5cbiAgLyoqXG4gICAqIFRoZSBpMThuIGNvbnRleHQgdGhhdCB0aGlzIGV4cHJlc3Npb24gYmVsb25ncyB0by5cbiAgICovXG4gIGNvbnRleHQ6IFhyZWZJZDtcblxuICAvKipcbiAgICogVGhlIFhyZWYgb2YgdGhlIG9wIHRoYXQgd2UgbmVlZCB0byBgYWR2YW5jZWAgdG8uXG4gICAqXG4gICAqIEluIGFuIGkxOG4gYmxvY2ssIHRoaXMgaXMgaW5pdGlhbGx5IHRoZSBpMThuIHN0YXJ0IG9wLCBidXQgd2lsbCBldmVudHVhbGx5IGNvcnJlc3BvbmQgdG9cbiAgICogdGhlIGZpbmFsIHNsb3QgY29uc3VtZXIgaW4gdGhlIG93bmluZyBpMThuIGJsb2NrLlxuICAgKiBUT0RPOiBXZSBzaG91bGQgbWFrZSB0ZXh0IGkxOG5FeHByZXNzaW9ucyB0YXJnZXQgdGhlIGkxOG5FbmQgaW5zdHJ1Y3Rpb24sIGluc3RlYWQgdGhlIGxhc3RcbiAgICogc2xvdCBjb25zdW1lciBpbiB0aGUgaTE4biBibG9jay4gVGhpcyBtYWtlcyB0aGVtIHJlc2lsaWVudCB0byB0aGF0IGxhc3QgY29uc3VtZXIgYmVpbmdcbiAgICogZGVsZXRlZC4gKE9yIG5ldyBzbG90IGNvbnN1bWVycyBiZWluZyBhZGRlZCEpXG4gICAqXG4gICAqIEluIGFuIGkxOG4gYXR0cmlidXRlLCB0aGlzIGlzIHRoZSB4cmVmIG9mIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRTdGFydC9lbGVtZW50LlxuICAgKi9cbiAgdGFyZ2V0OiBYcmVmSWQ7XG5cbiAgLyoqXG4gICAqIEluIGFuIGkxOG4gYmxvY2ssIHRoaXMgc2hvdWxkIGJlIHRoZSBpMThuIHN0YXJ0IG9wLlxuICAgKlxuICAgKiBJbiBhbiBpMThuIGF0dHJpYnV0ZSwgdGhpcyB3aWxsIGJlIHRoZSB4cmVmIG9mIHRoZSBhdHRyaWJ1dGUgY29uZmlndXJhdGlvbiBpbnN0cnVjdGlvbi5cbiAgICovXG4gIGkxOG5Pd25lcjogWHJlZklkO1xuXG4gIC8qKlxuICAgKiBBIGhhbmRsZSBmb3IgdGhlIHNsb3QgdGhhdCB0aGlzIGV4cHJlc3Npb24gbW9kaWZpZXMuXG4gICAqIC0gSW4gYW4gaTE4biBibG9jaywgdGhpcyBpcyB0aGUgaGFuZGxlIG9mIHRoZSBibG9jay5cbiAgICogLSBJbiBhbiBpMThuIGF0dHJpYnV0ZSwgdGhpcyBpcyB0aGUgaGFuZGxlIG9mIHRoZSBjb3JyZXNwb25kaW5nIGkxOG5BdHRyaWJ1dGVzIGluc3RydWN0aW9uLlxuICAgKi9cbiAgaGFuZGxlOiBTbG90SGFuZGxlO1xuXG4gIC8qKlxuICAgKiBUaGUgZXhwcmVzc2lvbiB2YWx1ZS5cbiAgICovXG4gIGV4cHJlc3Npb246IG8uRXhwcmVzc2lvbjtcblxuICBpY3VQbGFjZWhvbGRlcjogWHJlZklkfG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBpMThuIHBsYWNlaG9sZGVyIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGV4cHJlc3Npb24uIFRoaXMgY2FuIGJlIG51bGwgaWYgdGhlIGV4cHJlc3Npb24gaXNcbiAgICogcGFydCBvZiBhbiBJQ1UgcGxhY2Vob2xkZXIuIEluIHRoaXMgY2FzZSBpdCBnZXRzIGNvbWJpbmVkIHdpdGggdGhlIHN0cmluZyBsaXRlcmFsIHZhbHVlIGFuZFxuICAgKiBvdGhlciBleHByZXNzaW9ucyBpbiB0aGUgSUNVIHBsYWNlaG9sZGVyIGFuZCBhc3NpZ25lZCB0byB0aGUgdHJhbnNsYXRlZCBtZXNzYWdlIHVuZGVyIHRoZSBJQ1VcbiAgICogcGxhY2Vob2xkZXIgbmFtZS5cbiAgICovXG4gIGkxOG5QbGFjZWhvbGRlcjogc3RyaW5nfG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIHRoYXQgdGhpcyBleHByZXNzaW9uIGlzIHJlc29sdmVkLlxuICAgKi9cbiAgcmVzb2x1dGlvblRpbWU6IEkxOG5QYXJhbVJlc29sdXRpb25UaW1lO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgaTE4biBleHByZXNzaW9uIGFwcGxpZXMgdG8gYSB0ZW1wbGF0ZSBvciB0byBhIGJpbmRpbmcuXG4gICAqL1xuICB1c2FnZTogSTE4bkV4cHJlc3Npb25Gb3I7XG5cbiAgLyoqXG4gICAqIElmIHRoaXMgaXMgYW4gSTE4bkV4cHJlc3Npb25Db250ZXh0LkJpbmRpbmcsIHRoaXMgZXhwcmVzc2lvbiBpcyBhc3NvY2lhdGVkIHdpdGggYSBuYW1lZFxuICAgKiBhdHRyaWJ1dGUuIFRoYXQgbmFtZSBpcyBzdG9yZWQgaGVyZS5cbiAgICovXG4gIG5hbWU6IHN0cmluZztcblxuICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW47XG59XG5cbi8qKlxuICogQ3JlYXRlIGFuIGkxOG4gZXhwcmVzc2lvbiBvcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUkxOG5FeHByZXNzaW9uT3AoXG4gICAgY29udGV4dDogWHJlZklkLCB0YXJnZXQ6IFhyZWZJZCwgaTE4bk93bmVyOiBYcmVmSWQsIGhhbmRsZTogU2xvdEhhbmRsZSxcbiAgICBleHByZXNzaW9uOiBvLkV4cHJlc3Npb24sIGljdVBsYWNlaG9sZGVyOiBYcmVmSWR8bnVsbCwgaTE4blBsYWNlaG9sZGVyOiBzdHJpbmd8bnVsbCxcbiAgICByZXNvbHV0aW9uVGltZTogSTE4blBhcmFtUmVzb2x1dGlvblRpbWUsIHVzYWdlOiBJMThuRXhwcmVzc2lvbkZvciwgbmFtZTogc3RyaW5nLFxuICAgIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbik6IEkxOG5FeHByZXNzaW9uT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5JMThuRXhwcmVzc2lvbixcbiAgICBjb250ZXh0LFxuICAgIHRhcmdldCxcbiAgICBpMThuT3duZXIsXG4gICAgaGFuZGxlLFxuICAgIGV4cHJlc3Npb24sXG4gICAgaWN1UGxhY2Vob2xkZXIsXG4gICAgaTE4blBsYWNlaG9sZGVyLFxuICAgIHJlc29sdXRpb25UaW1lLFxuICAgIHVzYWdlLFxuICAgIG5hbWUsXG4gICAgc291cmNlU3BhbixcbiAgICAuLi5ORVdfT1AsXG4gICAgLi4uVFJBSVRfQ09OU1VNRVNfVkFSUyxcbiAgICAuLi5UUkFJVF9ERVBFTkRTX09OX1NMT1RfQ09OVEVYVCxcbiAgfTtcbn1cblxuLyoqXG4gKiBBbiBvcCB0aGF0IHJlcHJlc2VudHMgYXBwbHlpbmcgYSBzZXQgb2YgaTE4biBleHByZXNzaW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJMThuQXBwbHlPcCBleHRlbmRzIE9wPFVwZGF0ZU9wPiB7XG4gIGtpbmQ6IE9wS2luZC5JMThuQXBwbHk7XG5cbiAgLyoqXG4gICAqIEluIGFuIGkxOG4gYmxvY2ssIHRoaXMgc2hvdWxkIGJlIHRoZSBpMThuIHN0YXJ0IG9wLlxuICAgKlxuICAgKiBJbiBhbiBpMThuIGF0dHJpYnV0ZSwgdGhpcyB3aWxsIGJlIHRoZSB4cmVmIG9mIHRoZSBhdHRyaWJ1dGUgY29uZmlndXJhdGlvbiBpbnN0cnVjdGlvbi5cbiAgICovXG4gIG93bmVyOiBYcmVmSWQ7XG5cbiAgLyoqXG4gICAqIEEgaGFuZGxlIGZvciB0aGUgc2xvdCB0aGF0IGkxOG4gYXBwbHkgaW5zdHJ1Y3Rpb24gc2hvdWxkIGFwcGx5IHRvLiBJbiBhbiBpMThuIGJsb2NrLCB0aGlzXG4gICAqIGlzIHRoZSBzbG90IG9mIHRoZSBpMThuIGJsb2NrIHRoaXMgZXhwcmVzc2lvbiBiZWxvbmdzIHRvLiBJbiBhbiBpMThuIGF0dHJpYnV0ZSwgdGhpcyBpcyB0aGVcbiAgICogc2xvdCBvZiB0aGUgY29ycmVzcG9uZGluZyBpMThuQXR0cmlidXRlcyBpbnN0cnVjdGlvbi5cbiAgICovXG4gIGhhbmRsZTogU2xvdEhhbmRsZTtcblxuICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW47XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBvcCB0byBhcHBseSBpMThuIGV4cHJlc3Npb24gb3BzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSTE4bkFwcGx5T3AoXG4gICAgb3duZXI6IFhyZWZJZCwgaGFuZGxlOiBTbG90SGFuZGxlLCBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pOiBJMThuQXBwbHlPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLkkxOG5BcHBseSxcbiAgICBvd25lcixcbiAgICBoYW5kbGUsXG4gICAgc291cmNlU3BhbixcbiAgICAuLi5ORVdfT1AsXG4gIH07XG59XG4iXX0=
|
|
263
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXIvc3JjL3RlbXBsYXRlL3BpcGVsaW5lL2lyL3NyYy9vcHMvdXBkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQU1ILE9BQU8sRUFBMEQsTUFBTSxFQUFlLE1BQU0sVUFBVSxDQUFDO0FBSXZHLE9BQU8sRUFBaUQsbUJBQW1CLEVBQUUsNkJBQTZCLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFFN0gsT0FBTyxFQUFZLE1BQU0sRUFBMEIsTUFBTSxVQUFVLENBQUM7QUFrQ3BFOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUNuQyxJQUFZLEVBQUUsYUFBNEIsRUFBRSxVQUEyQjtJQUN6RSxPQUFPO1FBQ0wsSUFBSSxFQUFFLE1BQU0sQ0FBQyxlQUFlO1FBQzVCLE1BQU0sRUFBRSxJQUFJO1FBQ1osYUFBYTtRQUNiLFVBQVU7UUFDVixHQUFHLDZCQUE2QjtRQUNoQyxHQUFHLG1CQUFtQjtRQUN0QixHQUFHLE1BQU07S0FDVixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sT0FBTyxhQUFhO0lBQ3hCLFlBQ2EsT0FBaUIsRUFBVyxXQUEyQixFQUN2RCxnQkFBMEI7UUFEMUIsWUFBTyxHQUFQLE9BQU8sQ0FBVTtRQUFXLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUN2RCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQVU7UUFDckMsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEYsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUNaLFdBQVcsQ0FBQyxNQUFNLGtFQUNsQixnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLENBQUM7SUFDSCxDQUFDO0NBQ0Y7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TixVQUFVO1FBQ1YsY0FBYztRQUNkLGVBQWU7UUFDZixjQUFjO1FBQ2QsS0FBSztRQUNMLElBQUk7UUFDSixVQUFVO1FBQ1YsR0FBRyxNQUFNO1FBQ1QsR0FBRyxtQkFBbUI7UUFDdEIsR0FBRyw2QkFBNkI7S0FDakMsQ0FBQztBQUNKLENBQUM7QUF5QkQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQzdCLEtBQWEsRUFBRSxNQUFrQixFQUFFLFVBQTJCO0lBQ2hFLE9BQU87UUFDTCxJQUFJLEVBQUUsTUFBTSxDQUFDLFNBQVM7UUFDdEIsS0FBSztRQUNMLE1BQU07UUFDTixVQUFVO1FBQ1YsR0FBRyxNQUFNO0tBQ1YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtTZWN1cml0eUNvbnRleHR9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvcmUnO1xuaW1wb3J0ICogYXMgaTE4biBmcm9tICcuLi8uLi8uLi8uLi8uLi9pMThuL2kxOG5fYXN0JztcbmltcG9ydCAqIGFzIG8gZnJvbSAnLi4vLi4vLi4vLi4vLi4vb3V0cHV0L291dHB1dF9hc3QnO1xuaW1wb3J0IHtQYXJzZVNvdXJjZVNwYW59IGZyb20gJy4uLy4uLy4uLy4uLy4uL3BhcnNlX3V0aWwnO1xuaW1wb3J0IHtCaW5kaW5nS2luZCwgSTE4bkV4cHJlc3Npb25Gb3IsIEkxOG5QYXJhbVJlc29sdXRpb25UaW1lLCBPcEtpbmQsIFRlbXBsYXRlS2luZH0gZnJvbSAnLi4vZW51bXMnO1xuaW1wb3J0IHR5cGUge0NvbmRpdGlvbmFsQ2FzZUV4cHJ9IGZyb20gJy4uL2V4cHJlc3Npb24nO1xuaW1wb3J0IHtTbG90SGFuZGxlfSBmcm9tICcuLi9oYW5kbGUnO1xuaW1wb3J0IHtPcCwgWHJlZklkfSBmcm9tICcuLi9vcGVyYXRpb25zJztcbmltcG9ydCB7Q29uc3VtZXNWYXJzVHJhaXQsIERlcGVuZHNPblNsb3RDb250ZXh0T3BUcmFpdCwgVFJBSVRfQ09OU1VNRVNfVkFSUywgVFJBSVRfREVQRU5EU19PTl9TTE9UX0NPTlRFWFR9IGZyb20gJy4uL3RyYWl0cyc7XG5pbXBvcnQgdHlwZSB7SG9zdFByb3BlcnR5T3B9IGZyb20gJy4vaG9zdCc7XG5pbXBvcnQge0xpc3RFbmRPcCwgTkVXX09QLCBTdGF0ZW1lbnRPcCwgVmFyaWFibGVPcH0gZnJvbSAnLi9zaGFyZWQnO1xuXG5cbi8qKlxuICogQW4gb3BlcmF0aW9uIHVzYWJsZSBvbiB0aGUgdXBkYXRlIHNpZGUgb2YgdGhlIElSLlxuICovXG5leHBvcnQgdHlwZSBVcGRhdGVPcCA9XG4gICAgTGlzdEVuZE9wPFVwZGF0ZU9wPnxTdGF0ZW1lbnRPcDxVcGRhdGVPcD58UHJvcGVydHlPcHxUd29XYXlQcm9wZXJ0eU9wfEF0dHJpYnV0ZU9wfFN0eWxlUHJvcE9wfFxuICAgIENsYXNzUHJvcE9wfFN0eWxlTWFwT3B8Q2xhc3NNYXBPcHxJbnRlcnBvbGF0ZVRleHRPcHxBZHZhbmNlT3B8VmFyaWFibGVPcDxVcGRhdGVPcD58QmluZGluZ09wfFxuICAgIEhvc3RQcm9wZXJ0eU9wfENvbmRpdGlvbmFsT3B8STE4bkV4cHJlc3Npb25PcHxJMThuQXBwbHlPcHxSZXBlYXRlck9wfERlZmVyV2hlbk9wO1xuXG4vKipcbiAqIEEgbG9naWNhbCBvcGVyYXRpb24gdG8gcGVyZm9ybSBzdHJpbmcgaW50ZXJwb2xhdGlvbiBvbiBhIHRleHQgbm9kZS5cbiAqXG4gKiBJbnRlcnBvbGF0aW9uIGlucHV0cyBhcmUgc3RvcmVkIGFzIHN0YXRpYyBgc3RyaW5nYHMgYW5kIGR5bmFtaWMgYG8uRXhwcmVzc2lvbmBzLCBpbiBzZXBhcmF0ZVxuICogYXJyYXlzLiBUaHVzLCB0aGUgaW50ZXJwb2xhdGlvbiBgQXt7Yn19Q3t7ZH19RWAgaXMgc3RvcmVkIGFzIDMgc3RhdGljIHN0cmluZ3MgYFsnQScsICdDJywgJ0UnXWBcbiAqIGFuZCAyIGR5bmFtaWMgZXhwcmVzc2lvbnMgYFtiLCBkXWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJwb2xhdGVUZXh0T3AgZXh0ZW5kcyBPcDxVcGRhdGVPcD4sIENvbnN1bWVzVmFyc1RyYWl0IHtcbiAga2luZDogT3BLaW5kLkludGVycG9sYXRlVGV4dDtcblxuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSB0ZXh0IG5vZGUgdG8gd2hpY2ggdGhlIGludGVycG9sYXRpb24gaXMgYm91bmQuXG4gICAqL1xuICB0YXJnZXQ6IFhyZWZJZDtcblxuICAvKipcbiAgICogVGhlIGludGVycG9sYXRlZCB2YWx1ZS5cbiAgICovXG4gIGludGVycG9sYXRpb246IEludGVycG9sYXRpb247XG5cbiAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhbiBgSW50ZXJwb2xhdGlvblRleHRPcGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJbnRlcnBvbGF0ZVRleHRPcChcbiAgICB4cmVmOiBYcmVmSWQsIGludGVycG9sYXRpb246IEludGVycG9sYXRpb24sIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbik6IEludGVycG9sYXRlVGV4dE9wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuSW50ZXJwb2xhdGVUZXh0LFxuICAgIHRhcmdldDogeHJlZixcbiAgICBpbnRlcnBvbGF0aW9uLFxuICAgIHNvdXJjZVNwYW4sXG4gICAgLi4uVFJBSVRfREVQRU5EU19PTl9TTE9UX0NPTlRFWFQsXG4gICAgLi4uVFJBSVRfQ09OU1VNRVNfVkFSUyxcbiAgICAuLi5ORVdfT1AsXG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyBJbnRlcnBvbGF0aW9uIHtcbiAgY29uc3RydWN0b3IoXG4gICAgICByZWFkb25seSBzdHJpbmdzOiBzdHJpbmdbXSwgcmVhZG9ubHkgZXhwcmVzc2lvbnM6IG8uRXhwcmVzc2lvbltdLFxuICAgICAgcmVhZG9ubHkgaTE4blBsYWNlaG9sZGVyczogc3RyaW5nW10pIHtcbiAgICBpZiAoaTE4blBsYWNlaG9sZGVycy5sZW5ndGggIT09IDAgJiYgaTE4blBsYWNlaG9sZGVycy5sZW5ndGggIT09IGV4cHJlc3Npb25zLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke1xuICAgICAgICAgIGV4cHJlc3Npb25zLmxlbmd0aH0gcGxhY2Vob2xkZXJzIHRvIG1hdGNoIGludGVycG9sYXRpb24gZXhwcmVzc2lvbiBjb3VudCwgYnV0IGdvdCAke1xuICAgICAgICAgIGkxOG5QbGFjZWhvbGRlcnMubGVuZ3RofWApO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEFuIGludGVybWVkaWF0ZSBiaW5kaW5nIG9wLCB0aGF0IGhhcyBub3QgeWV0IGJlZW4gcHJvY2Vzc2VkIGludG8gYW4gaW5kaXZpZHVhbCBwcm9wZXJ0eSxcbiAqIGF0dHJpYnV0ZSwgc3R5bGUsIGV0Yy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaW5kaW5nT3AgZXh0ZW5kcyBPcDxVcGRhdGVPcD4ge1xuICBraW5kOiBPcEtpbmQuQmluZGluZztcblxuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IG9uIHdoaWNoIHRoZSBwcm9wZXJ0eSBpcyBib3VuZC5cbiAgICovXG4gIHRhcmdldDogWHJlZklkO1xuXG4gIC8qKlxuICAgKiAgVGhlIGtpbmQgb2YgYmluZGluZyByZXByZXNlbnRlZCBieSB0aGlzIG9wLlxuICAgKi9cbiAgYmluZGluZ0tpbmQ6IEJpbmRpbmdLaW5kO1xuXG4gIC8qKlxuICAgKiAgVGhlIG5hbWUgb2YgdGhpcyBiaW5kaW5nLlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFeHByZXNzaW9uIHdoaWNoIGlzIGJvdW5kIHRvIHRoZSBwcm9wZXJ0eS5cbiAgICovXG4gIGV4cHJlc3Npb246IG8uRXhwcmVzc2lvbnxJbnRlcnBvbGF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgdW5pdCBvZiB0aGUgYm91bmQgdmFsdWUuXG4gICAqL1xuICB1bml0OiBzdHJpbmd8bnVsbDtcblxuICAvKipcbiAgICogVGhlIHNlY3VyaXR5IGNvbnRleHQgb2YgdGhlIGJpbmRpbmcuXG4gICAqL1xuICBzZWN1cml0eUNvbnRleHQ6IFNlY3VyaXR5Q29udGV4dHxTZWN1cml0eUNvbnRleHRbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgYmluZGluZyBpcyBhIFRleHRBdHRyaWJ1dGUgKGUuZy4gYHNvbWUtYXR0cj1cInNvbWUtdmFsdWVcImApLlxuICAgKlxuICAgKiBUaGlzIG5lZWRzIHRvIGJlIHRyYWNrZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBgVGVtcGxhdGVEZWZpbml0aW9uQnVpbGRlcmAgd2hpY2ggdHJlYXRzXG4gICAqIGBzdHlsZWAgYW5kIGBjbGFzc2AgVGV4dEF0dHJpYnV0ZXMgZGlmZmVyZW50bHkgZnJvbSBgW2F0dHIuc3R5bGVdYCBhbmQgYFthdHRyLmNsYXNzXWAuXG4gICAqL1xuICBpc1RleHRBdHRyaWJ1dGU6IGJvb2xlYW47XG5cbiAgaXNTdHJ1Y3R1cmFsVGVtcGxhdGVBdHRyaWJ1dGU6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBiaW5kaW5nIGlzIG9uIGEgc3RydWN0dXJhbCB0ZW1wbGF0ZS5cbiAgICovXG4gIHRlbXBsYXRlS2luZDogVGVtcGxhdGVLaW5kfG51bGw7XG5cbiAgaTE4bkNvbnRleHQ6IFhyZWZJZHxudWxsO1xuICBpMThuTWVzc2FnZTogaTE4bi5NZXNzYWdlfG51bGw7XG5cbiAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGBCaW5kaW5nT3BgLCBub3QgeWV0IHRyYW5zZm9ybWVkIGludG8gYSBwYXJ0aWN1bGFyIHR5cGUgb2YgYmluZGluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUJpbmRpbmdPcChcbiAgICB0YXJnZXQ6IFhyZWZJZCwga2luZDogQmluZGluZ0tpbmQsIG5hbWU6IHN0cmluZywgZXhwcmVzc2lvbjogby5FeHByZXNzaW9ufEludGVycG9sYXRpb24sXG4gICAgdW5pdDogc3RyaW5nfG51bGwsIHNlY3VyaXR5Q29udGV4dDogU2VjdXJpdHlDb250ZXh0fFNlY3VyaXR5Q29udGV4dFtdLCBpc1RleHRBdHRyaWJ1dGU6IGJvb2xlYW4sXG4gICAgaXNTdHJ1Y3R1cmFsVGVtcGxhdGVBdHRyaWJ1dGU6IGJvb2xlYW4sIHRlbXBsYXRlS2luZDogVGVtcGxhdGVLaW5kfG51bGwsXG4gICAgaTE4bk1lc3NhZ2U6IGkxOG4uTWVzc2FnZXxudWxsLCBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pOiBCaW5kaW5nT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5CaW5kaW5nLFxuICAgIGJpbmRpbmdLaW5kOiBraW5kLFxuICAgIHRhcmdldCxcbiAgICBuYW1lLFxuICAgIGV4cHJlc3Npb24sXG4gICAgdW5pdCxcbiAgICBzZWN1cml0eUNvbnRleHQsXG4gICAgaXNUZXh0QXR0cmlidXRlLFxuICAgIGlzU3RydWN0dXJhbFRlbXBsYXRlQXR0cmlidXRlLFxuICAgIHRlbXBsYXRlS2luZCxcbiAgICBpMThuQ29udGV4dDogbnVsbCxcbiAgICBpMThuTWVzc2FnZSxcbiAgICBzb3VyY2VTcGFuLFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cblxuLyoqXG4gKiBBIGxvZ2ljYWwgb3BlcmF0aW9uIHJlcHJlc2VudGluZyBiaW5kaW5nIHRvIGEgcHJvcGVydHkgaW4gdGhlIHVwZGF0ZSBJUi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9wZXJ0eU9wIGV4dGVuZHMgT3A8VXBkYXRlT3A+LCBDb25zdW1lc1ZhcnNUcmFpdCwgRGVwZW5kc09uU2xvdENvbnRleHRPcFRyYWl0IHtcbiAga2luZDogT3BLaW5kLlByb3BlcnR5O1xuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgdG8gdGhlIGVsZW1lbnQgb24gd2hpY2ggdGhlIHByb3BlcnR5IGlzIGJvdW5kLlxuICAgKi9cbiAgdGFyZ2V0OiBYcmVmSWQ7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGJvdW5kIHByb3BlcnR5LlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFeHByZXNzaW9uIHdoaWNoIGlzIGJvdW5kIHRvIHRoZSBwcm9wZXJ0eS5cbiAgICovXG4gIGV4cHJlc3Npb246IG8uRXhwcmVzc2lvbnxJbnRlcnBvbGF0aW9uO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcHJvcGVydHkgaXMgYW4gYW5pbWF0aW9uIHRyaWdnZXIuXG4gICAqL1xuICBpc0FuaW1hdGlvblRyaWdnZXI6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBzZWN1cml0eSBjb250ZXh0IG9mIHRoZSBiaW5kaW5nLlxuICAgKi9cbiAgc2VjdXJpdHlDb250ZXh0OiBTZWN1cml0eUNvbnRleHR8U2VjdXJpdHlDb250ZXh0W107XG5cbiAgLyoqXG4gICAqIFRoZSBzYW5pdGl6ZXIgZm9yIHRoaXMgcHJvcGVydHkuXG4gICAqL1xuICBzYW5pdGl6ZXI6IG8uRXhwcmVzc2lvbnxudWxsO1xuXG4gIGlzU3RydWN0dXJhbFRlbXBsYXRlQXR0cmlidXRlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUga2luZCBvZiB0ZW1wbGF0ZSB0YXJnZXRlZCBieSB0aGUgYmluZGluZywgb3IgbnVsbCBpZiB0aGlzIGJpbmRpbmcgZG9lcyBub3QgdGFyZ2V0IGFcbiAgICogdGVtcGxhdGUuXG4gICAqL1xuICB0ZW1wbGF0ZUtpbmQ6IFRlbXBsYXRlS2luZHxudWxsO1xuXG4gIGkxOG5Db250ZXh0OiBYcmVmSWR8bnVsbDtcbiAgaTE4bk1lc3NhZ2U6IGkxOG4uTWVzc2FnZXxudWxsO1xuXG4gIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbjtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBgUHJvcGVydHlPcGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcm9wZXJ0eU9wKFxuICAgIHRhcmdldDogWHJlZklkLCBuYW1lOiBzdHJpbmcsIGV4cHJlc3Npb246IG8uRXhwcmVzc2lvbnxJbnRlcnBvbGF0aW9uLFxuICAgIGlzQW5pbWF0aW9uVHJpZ2dlcjogYm9vbGVhbiwgc2VjdXJpdHlDb250ZXh0OiBTZWN1cml0eUNvbnRleHR8U2VjdXJpdHlDb250ZXh0W10sXG4gICAgaXNTdHJ1Y3R1cmFsVGVtcGxhdGVBdHRyaWJ1dGU6IGJvb2xlYW4sIHRlbXBsYXRlS2luZDogVGVtcGxhdGVLaW5kfG51bGwsXG4gICAgaTE4bkNvbnRleHQ6IFhyZWZJZHxudWxsLCBpMThuTWVzc2FnZTogaTE4bi5NZXNzYWdlfG51bGwsXG4gICAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKTogUHJvcGVydHlPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLlByb3BlcnR5LFxuICAgIHRhcmdldCxcbiAgICBuYW1lLFxuICAgIGV4cHJlc3Npb24sXG4gICAgaXNBbmltYXRpb25UcmlnZ2VyLFxuICAgIHNlY3VyaXR5Q29udGV4dCxcbiAgICBzYW5pdGl6ZXI6IG51bGwsXG4gICAgaXNTdHJ1Y3R1cmFsVGVtcGxhdGVBdHRyaWJ1dGUsXG4gICAgdGVtcGxhdGVLaW5kLFxuICAgIGkxOG5Db250ZXh0LFxuICAgIGkxOG5NZXNzYWdlLFxuICAgIHNvdXJjZVNwYW4sXG4gICAgLi4uVFJBSVRfREVQRU5EU19PTl9TTE9UX0NPTlRFWFQsXG4gICAgLi4uVFJBSVRfQ09OU1VNRVNfVkFSUyxcbiAgICAuLi5ORVdfT1AsXG4gIH07XG59XG5cbi8qKlxuICogQSBsb2dpY2FsIG9wZXJhdGlvbiByZXByZXNlbnRpbmcgdGhlIHByb3BlcnR5IGJpbmRpbmcgc2lkZSBvZiBhIHR3by13YXkgYmluZGluZyBpbiB0aGUgdXBkYXRlIElSLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFR3b1dheVByb3BlcnR5T3AgZXh0ZW5kcyBPcDxVcGRhdGVPcD4sIENvbnN1bWVzVmFyc1RyYWl0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwZW5kc09uU2xvdENvbnRleHRPcFRyYWl0IHtcbiAga2luZDogT3BLaW5kLlR3b1dheVByb3BlcnR5O1xuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgdG8gdGhlIGVsZW1lbnQgb24gd2hpY2ggdGhlIHByb3BlcnR5IGlzIGJvdW5kLlxuICAgKi9cbiAgdGFyZ2V0OiBYcmVmSWQ7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHByb3BlcnR5LlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFeHByZXNzaW9uIHdoaWNoIGlzIGJvdW5kIHRvIHRoZSBwcm9wZXJ0eS5cbiAgICovXG4gIGV4cHJlc3Npb246IG8uRXhwcmVzc2lvbjtcblxuICAvKipcbiAgICogVGhlIHNlY3VyaXR5IGNvbnRleHQgb2YgdGhlIGJpbmRpbmcuXG4gICAqL1xuICBzZWN1cml0eUNvbnRleHQ6IFNlY3VyaXR5Q29udGV4dHxTZWN1cml0eUNvbnRleHRbXTtcblxuICAvKipcbiAgICogVGhlIHNhbml0aXplciBmb3IgdGhpcyBwcm9wZXJ0eS5cbiAgICovXG4gIHNhbml0aXplcjogby5FeHByZXNzaW9ufG51bGw7XG5cbiAgaXNTdHJ1Y3R1cmFsVGVtcGxhdGVBdHRyaWJ1dGU6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBraW5kIG9mIHRlbXBsYXRlIHRhcmdldGVkIGJ5IHRoZSBiaW5kaW5nLCBvciBudWxsIGlmIHRoaXMgYmluZGluZyBkb2VzIG5vdCB0YXJnZXQgYVxuICAgKiB0ZW1wbGF0ZS5cbiAgICovXG4gIHRlbXBsYXRlS2luZDogVGVtcGxhdGVLaW5kfG51bGw7XG5cbiAgaTE4bkNvbnRleHQ6IFhyZWZJZHxudWxsO1xuICBpMThuTWVzc2FnZTogaTE4bi5NZXNzYWdlfG51bGw7XG5cbiAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGBUd29XYXlQcm9wZXJ0eU9wYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVR3b1dheVByb3BlcnR5T3AoXG4gICAgdGFyZ2V0OiBYcmVmSWQsIG5hbWU6IHN0cmluZywgZXhwcmVzc2lvbjogby5FeHByZXNzaW9uLFxuICAgIHNlY3VyaXR5Q29udGV4dDogU2VjdXJpdHlDb250ZXh0fFNlY3VyaXR5Q29udGV4dFtdLCBpc1N0cnVjdHVyYWxUZW1wbGF0ZUF0dHJpYnV0ZTogYm9vbGVhbixcbiAgICB0ZW1wbGF0ZUtpbmQ6IFRlbXBsYXRlS2luZHxudWxsLCBpMThuQ29udGV4dDogWHJlZklkfG51bGwsIGkxOG5NZXNzYWdlOiBpMThuLk1lc3NhZ2V8bnVsbCxcbiAgICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pOiBUd29XYXlQcm9wZXJ0eU9wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuVHdvV2F5UHJvcGVydHksXG4gICAgdGFyZ2V0LFxuICAgIG5hbWUsXG4gICAgZXhwcmVzc2lvbixcbiAgICBzZWN1cml0eUNvbnRleHQsXG4gICAgc2FuaXRpemVyOiBudWxsLFxuICAgIGlzU3RydWN0dXJhbFRlbXBsYXRlQXR0cmlidXRlLFxuICAgIHRlbXBsYXRlS2luZCxcbiAgICBpMThuQ29udGV4dCxcbiAgICBpMThuTWVzc2FnZSxcbiAgICBzb3VyY2VTcGFuLFxuICAgIC4uLlRSQUlUX0RFUEVORFNfT05fU0xPVF9DT05URVhULFxuICAgIC4uLlRSQUlUX0NPTlNVTUVTX1ZBUlMsXG4gICAgLi4uTkVXX09QLFxuICB9O1xufVxuXG4vKipcbiAqIEEgbG9naWNhbCBvcGVyYXRpb24gcmVwcmVzZW50aW5nIGJpbmRpbmcgdG8gYSBzdHlsZSBwcm9wZXJ0eSBpbiB0aGUgdXBkYXRlIElSLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0eWxlUHJvcE9wIGV4dGVuZHMgT3A8VXBkYXRlT3A+LCBDb25zdW1lc1ZhcnNUcmFpdCwgRGVwZW5kc09uU2xvdENvbnRleHRPcFRyYWl0IHtcbiAga2luZDogT3BLaW5kLlN0eWxlUHJvcDtcblxuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IG9uIHdoaWNoIHRoZSBwcm9wZXJ0eSBpcyBib3VuZC5cbiAgICovXG4gIHRhcmdldDogWHJlZklkO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBib3VuZCBwcm9wZXJ0eS5cbiAgICovXG4gIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogRXhwcmVzc2lvbiB3aGljaCBpcyBib3VuZCB0byB0aGUgcHJvcGVydHkuXG4gICAqL1xuICBleHByZXNzaW9uOiBvLkV4cHJlc3Npb258SW50ZXJwb2xhdGlvbjtcblxuICAvKipcbiAgICogVGhlIHVuaXQgb2YgdGhlIGJvdW5kIHZhbHVlLlxuICAgKi9cbiAgdW5pdDogc3RyaW5nfG51bGw7XG5cbiAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuO1xufVxuXG4vKiogQ3JlYXRlIGEgYFN0eWxlUHJvcE9wYC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTdHlsZVByb3BPcChcbiAgICB4cmVmOiBYcmVmSWQsIG5hbWU6IHN0cmluZywgZXhwcmVzc2lvbjogby5FeHByZXNzaW9ufEludGVycG9sYXRpb24sIHVuaXQ6IHN0cmluZ3xudWxsLFxuICAgIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbik6IFN0eWxlUHJvcE9wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuU3R5bGVQcm9wLFxuICAgIHRhcmdldDogeHJlZixcbiAgICBuYW1lLFxuICAgIGV4cHJlc3Npb24sXG4gICAgdW5pdCxcbiAgICBzb3VyY2VTcGFuLFxuICAgIC4uLlRSQUlUX0RFUEVORFNfT05fU0xPVF9DT05URVhULFxuICAgIC4uLlRSQUlUX0NPTlNVTUVTX1ZBUlMsXG4gICAgLi4uTkVXX09QLFxuICB9O1xufVxuXG4vKipcbiAqIEEgbG9naWNhbCBvcGVyYXRpb24gcmVwcmVzZW50aW5nIGJpbmRpbmcgdG8gYSBjbGFzcyBwcm9wZXJ0eSBpbiB0aGUgdXBkYXRlIElSLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsYXNzUHJvcE9wIGV4dGVuZHMgT3A8VXBkYXRlT3A+LCBDb25zdW1lc1ZhcnNUcmFpdCwgRGVwZW5kc09uU2xvdENvbnRleHRPcFRyYWl0IHtcbiAga2luZDogT3BLaW5kLkNsYXNzUHJvcDtcblxuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IG9uIHdoaWNoIHRoZSBwcm9wZXJ0eSBpcyBib3VuZC5cbiAgICovXG4gIHRhcmdldDogWHJlZklkO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBib3VuZCBwcm9wZXJ0eS5cbiAgICovXG4gIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogRXhwcmVzc2lvbiB3aGljaCBpcyBib3VuZCB0byB0aGUgcHJvcGVydHkuXG4gICAqL1xuICBleHByZXNzaW9uOiBvLkV4cHJlc3Npb247XG5cbiAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGBDbGFzc1Byb3BPcGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDbGFzc1Byb3BPcChcbiAgICB4cmVmOiBYcmVmSWQsIG5hbWU6IHN0cmluZywgZXhwcmVzc2lvbjogby5FeHByZXNzaW9uLFxuICAgIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbik6IENsYXNzUHJvcE9wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuQ2xhc3NQcm9wLFxuICAgIHRhcmdldDogeHJlZixcbiAgICBuYW1lLFxuICAgIGV4cHJlc3Npb24sXG4gICAgc291cmNlU3BhbixcbiAgICAuLi5UUkFJVF9ERVBFTkRTX09OX1NMT1RfQ09OVEVYVCxcbiAgICAuLi5UUkFJVF9DT05TVU1FU19WQVJTLFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cblxuLyoqXG4gKiBBIGxvZ2ljYWwgb3BlcmF0aW9uIHJlcHJlc2VudGluZyBiaW5kaW5nIHRvIGEgc3R5bGUgbWFwIGluIHRoZSB1cGRhdGUgSVIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3R5bGVNYXBPcCBleHRlbmRzIE9wPFVwZGF0ZU9wPiwgQ29uc3VtZXNWYXJzVHJhaXQsIERlcGVuZHNPblNsb3RDb250ZXh0T3BUcmFpdCB7XG4gIGtpbmQ6IE9wS2luZC5TdHlsZU1hcDtcblxuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IG9uIHdoaWNoIHRoZSBwcm9wZXJ0eSBpcyBib3VuZC5cbiAgICovXG4gIHRhcmdldDogWHJlZklkO1xuXG4gIC8qKlxuICAgKiBFeHByZXNzaW9uIHdoaWNoIGlzIGJvdW5kIHRvIHRoZSBwcm9wZXJ0eS5cbiAgICovXG4gIGV4cHJlc3Npb246IG8uRXhwcmVzc2lvbnxJbnRlcnBvbGF0aW9uO1xuXG4gIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbjtcbn1cblxuLyoqIENyZWF0ZSBhIGBTdHlsZU1hcE9wYC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTdHlsZU1hcE9wKFxuICAgIHhyZWY6IFhyZWZJZCwgZXhwcmVzc2lvbjogby5FeHByZXNzaW9ufEludGVycG9sYXRpb24sIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbik6IFN0eWxlTWFwT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5TdHlsZU1hcCxcbiAgICB0YXJnZXQ6IHhyZWYsXG4gICAgZXhwcmVzc2lvbixcbiAgICBzb3VyY2VTcGFuLFxuICAgIC4uLlRSQUlUX0RFUEVORFNfT05fU0xPVF9DT05URVhULFxuICAgIC4uLlRSQUlUX0NPTlNVTUVTX1ZBUlMsXG4gICAgLi4uTkVXX09QLFxuICB9O1xufVxuXG4vKipcbiAqIEEgbG9naWNhbCBvcGVyYXRpb24gcmVwcmVzZW50aW5nIGJpbmRpbmcgdG8gYSBzdHlsZSBtYXAgaW4gdGhlIHVwZGF0ZSBJUi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDbGFzc01hcE9wIGV4dGVuZHMgT3A8VXBkYXRlT3A+LCBDb25zdW1lc1ZhcnNUcmFpdCwgRGVwZW5kc09uU2xvdENvbnRleHRPcFRyYWl0IHtcbiAga2luZDogT3BLaW5kLkNsYXNzTWFwO1xuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgdG8gdGhlIGVsZW1lbnQgb24gd2hpY2ggdGhlIHByb3BlcnR5IGlzIGJvdW5kLlxuICAgKi9cbiAgdGFyZ2V0OiBYcmVmSWQ7XG5cbiAgLyoqXG4gICAqIEV4cHJlc3Npb24gd2hpY2ggaXMgYm91bmQgdG8gdGhlIHByb3BlcnR5LlxuICAgKi9cbiAgZXhwcmVzc2lvbjogby5FeHByZXNzaW9ufEludGVycG9sYXRpb247XG5cbiAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGBDbGFzc01hcE9wYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNsYXNzTWFwT3AoXG4gICAgeHJlZjogWHJlZklkLCBleHByZXNzaW9uOiBvLkV4cHJlc3Npb258SW50ZXJwb2xhdGlvbiwgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKTogQ2xhc3NNYXBPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLkNsYXNzTWFwLFxuICAgIHRhcmdldDogeHJlZixcbiAgICBleHByZXNzaW9uLFxuICAgIHNvdXJjZVNwYW4sXG4gICAgLi4uVFJBSVRfREVQRU5EU19PTl9TTE9UX0NPTlRFWFQsXG4gICAgLi4uVFJBSVRfQ09OU1VNRVNfVkFSUyxcbiAgICAuLi5ORVdfT1AsXG4gIH07XG59XG5cbi8qKlxuICogQSBsb2dpY2FsIG9wZXJhdGlvbiByZXByZXNlbnRpbmcgc2V0dGluZyBhbiBhdHRyaWJ1dGUgb24gYW4gZWxlbWVudCBpbiB0aGUgdXBkYXRlIElSLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZU9wIGV4dGVuZHMgT3A8VXBkYXRlT3A+IHtcbiAga2luZDogT3BLaW5kLkF0dHJpYnV0ZTtcblxuICAvKipcbiAgICogVGhlIGBYcmVmSWRgIG9mIHRoZSB0ZW1wbGF0ZS1saWtlIGVsZW1lbnQgdGhlIGF0dHJpYnV0ZSB3aWxsIGJlbG9uZyB0by5cbiAgICovXG4gIHRhcmdldDogWHJlZklkO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZXNwYWNlIG9mIHRoZSBhdHRyaWJ1dGUgKG9yIG51bGwgaWYgbm9uZSkuXG4gICAqL1xuICBuYW1lc3BhY2U6IHN0cmluZ3xudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgYXR0cmlidXRlLlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZS5cbiAgICovXG4gIGV4cHJlc3Npb246IG8uRXhwcmVzc2lvbnxJbnRlcnBvbGF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VjdXJpdHkgY29udGV4dCBvZiB0aGUgYmluZGluZy5cbiAgICovXG4gIHNlY3VyaXR5Q29udGV4dDogU2VjdXJpdHlDb250ZXh0fFNlY3VyaXR5Q29udGV4dFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgc2FuaXRpemVyIGZvciB0aGlzIGF0dHJpYnV0ZS5cbiAgICovXG4gIHNhbml0aXplcjogby5FeHByZXNzaW9ufG51bGw7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGJpbmRpbmcgaXMgYSBUZXh0QXR0cmlidXRlIChlLmcuIGBzb21lLWF0dHI9XCJzb21lLXZhbHVlXCJgKS5cbiAgICpcbiAgICogVGhpcyBuZWVkcyB0byBiZSB0cmFja2VkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggYFRlbXBsYXRlRGVmaW5pdGlvbkJ1aWxkZXJgIHdoaWNoIHRyZWF0c1xuICAgKiBgc3R5bGVgIGFuZCBgY2xhc3NgIFRleHRBdHRyaWJ1dGVzIGRpZmZlcmVudGx5IGZyb20gYFthdHRyLnN0eWxlXWAgYW5kIGBbYXR0ci5jbGFzc11gLlxuICAgKi9cbiAgaXNUZXh0QXR0cmlidXRlOiBib29sZWFuO1xuXG4gIGlzU3RydWN0dXJhbFRlbXBsYXRlQXR0cmlidXRlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUga2luZCBvZiB0ZW1wbGF0ZSB0YXJnZXRlZCBieSB0aGUgYmluZGluZywgb3IgbnVsbCBpZiB0aGlzIGJpbmRpbmcgZG9lcyBub3QgdGFyZ2V0IGFcbiAgICogdGVtcGxhdGUuXG4gICAqL1xuICB0ZW1wbGF0ZUtpbmQ6IFRlbXBsYXRlS2luZHxudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgaTE4biBjb250ZXh0LCBpZiB0aGlzIGlzIGFuIGkxOG4gYXR0cmlidXRlLlxuICAgKi9cbiAgaTE4bkNvbnRleHQ6IFhyZWZJZHxudWxsO1xuXG4gIGkxOG5NZXNzYWdlOiBpMThuLk1lc3NhZ2V8bnVsbDtcblxuICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW47XG59XG5cbi8qKlxuICogQ3JlYXRlIGFuIGBBdHRyaWJ1dGVPcGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBdHRyaWJ1dGVPcChcbiAgICB0YXJnZXQ6IFhyZWZJZCwgbmFtZXNwYWNlOiBzdHJpbmd8bnVsbCwgbmFtZTogc3RyaW5nLCBleHByZXNzaW9uOiBvLkV4cHJlc3Npb258SW50ZXJwb2xhdGlvbixcbiAgICBzZWN1cml0eUNvbnRleHQ6IFNlY3VyaXR5Q29udGV4dHxTZWN1cml0eUNvbnRleHRbXSwgaXNUZXh0QXR0cmlidXRlOiBib29sZWFuLFxuICAgIGlzU3RydWN0dXJhbFRlbXBsYXRlQXR0cmlidXRlOiBib29sZWFuLCB0ZW1wbGF0ZUtpbmQ6IFRlbXBsYXRlS2luZHxudWxsLFxuICAgIGkxOG5NZXNzYWdlOiBpMThuLk1lc3NhZ2V8bnVsbCwgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKTogQXR0cmlidXRlT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5BdHRyaWJ1dGUsXG4gICAgdGFyZ2V0LFxuICAgIG5hbWVzcGFjZSxcbiAgICBuYW1lLFxuICAgIGV4cHJlc3Npb24sXG4gICAgc2VjdXJpdHlDb250ZXh0LFxuICAgIHNhbml0aXplcjogbnVsbCxcbiAgICBpc1RleHRBdHRyaWJ1dGUsXG4gICAgaXNTdHJ1Y3R1cmFsVGVtcGxhdGVBdHRyaWJ1dGUsXG4gICAgdGVtcGxhdGVLaW5kLFxuICAgIGkxOG5Db250ZXh0OiBudWxsLFxuICAgIGkxOG5NZXNzYWdlLFxuICAgIHNvdXJjZVNwYW4sXG4gICAgLi4uVFJBSVRfREVQRU5EU19PTl9TTE9UX0NPTlRFWFQsXG4gICAgLi4uVFJBSVRfQ09OU1VNRVNfVkFSUyxcbiAgICAuLi5ORVdfT1AsXG4gIH07XG59XG5cbi8qKlxuICogTG9naWNhbCBvcGVyYXRpb24gdG8gYWR2YW5jZSB0aGUgcnVudGltZSdzIGludGVybmFsIHNsb3QgcG9pbnRlciBpbiB0aGUgdXBkYXRlIElSLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFkdmFuY2VPcCBleHRlbmRzIE9wPFVwZGF0ZU9wPiB7XG4gIGtpbmQ6IE9wS2luZC5BZHZhbmNlO1xuXG4gIC8qKlxuICAgKiBEZWx0YSBieSB3aGljaCB0byBhZHZhbmNlIHRoZSBwb2ludGVyLlxuICAgKi9cbiAgZGVsdGE6IG51bWJlcjtcblxuICAvLyBTb3VyY2Ugc3BhbiBvZiB0aGUgYmluZGluZyB0aGF0IGNhdXNlZCB0aGUgYWR2YW5jZVxuICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW47XG59XG5cbi8qKlxuICogQ3JlYXRlIGFuIGBBZHZhbmNlT3BgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQWR2YW5jZU9wKGRlbHRhOiBudW1iZXIsIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbik6IEFkdmFuY2VPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLkFkdmFuY2UsXG4gICAgZGVsdGEsXG4gICAgc291cmNlU3BhbixcbiAgICAuLi5ORVdfT1AsXG4gIH07XG59XG5cbi8qKlxuICogTG9naWNhbCBvcGVyYXRpb24gcmVwcmVzZW50aW5nIGEgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBpbiB0aGUgdXBkYXRlIElSLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbmRpdGlvbmFsT3AgZXh0ZW5kcyBPcDxDb25kaXRpb25hbE9wPiwgRGVwZW5kc09uU2xvdENvbnRleHRPcFRyYWl0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3VtZXNWYXJzVHJhaXQge1xuICBraW5kOiBPcEtpbmQuQ29uZGl0aW9uYWw7XG5cbiAgLyoqXG4gICAqIFRoZSBpbnNlcnRpb24gcG9pbnQsIHdoaWNoIGlzIHRoZSBmaXJzdCB0ZW1wbGF0ZSBpbiB0aGUgY3JlYXRpb24gYmxvY2sgYmVsb25naW5nIHRvIHRoaXNcbiAgICogY29uZGl0aW9uLlxuICAgKi9cbiAgdGFyZ2V0OiBYcmVmSWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBzbG90IG9mIHRoZSB0YXJnZXQsIHRvIGJlIHBvcHVsYXRlZCBkdXJpbmcgc2xvdCBhbGxvY2F0aW9uLlxuICAgKi9cbiAgdGFyZ2V0U2xvdDogU2xvdEhhbmRsZTtcblxuICAvKipcbiAgICogVGhlIG1haW4gdGVzdCBleHByZXNzaW9uIChmb3IgYSBzd2l0Y2gpLCBvciBgbnVsbGAgKGZvciBhbiBpZiwgd2hpY2ggaGFzIG5vIHRlc3RcbiAgICogZXhwcmVzc2lvbikuXG4gICAqL1xuICB0ZXN0OiBvLkV4cHJlc3Npb258bnVsbDtcblxuICAvKipcbiAgICogRWFjaCBwb3NzaWJsZSBlbWJlZGRlZCB2aWV3IHRoYXQgY291bGQgYmUgZGlzcGxheWVkIGhhcyBhIGNvbmRpdGlvbiAob3IgaXMgZGVmYXVsdCkuIFRoaXNcbiAgICogc3RydWN0dXJlIG1hcHMgZWFjaCB2aWV3IHhyZWYgdG8gaXRzIGNvcnJlc3BvbmRpbmcgY29uZGl0aW9uLlxuICAgKi9cbiAgY29uZGl0aW9uczogQXJyYXk8Q29uZGl0aW9uYWxDYXNlRXhwcj47XG5cbiAgLyoqXG4gICAqIEFmdGVyIHByb2Nlc3NpbmcsIHRoaXMgd2lsbCBiZSBhIHNpbmdsZSBjb2xsYXBzZWQgSm9vc3QtZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRlcyB0aGVcbiAgICogY29uZGl0aW9ucywgYW5kIHlpZWxkcyB0aGUgc2xvdCBudW1iZXIgb2YgdGhlIHRlbXBsYXRlIHdoaWNoIHNob3VsZCBiZSBkaXNwbGF5ZWQuXG4gICAqL1xuICBwcm9jZXNzZWQ6IG8uRXhwcmVzc2lvbnxudWxsO1xuXG4gIC8qKlxuICAgKiBDb250cm9sIGZsb3cgY29uZGl0aW9uYWxzIGNhbiBhY2NlcHQgYSBjb250ZXh0IHZhbHVlICh0aGlzIGlzIGEgcmVzdWx0IG9mIHNwZWNpZnlpbmcgYW5cbiAgICogYWxpYXMpLiBUaGlzIGV4cHJlc3Npb24gd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGNvbmRpdGlvbmFsIGluc3RydWN0aW9uJ3MgY29udGV4dCBwYXJhbWV0ZXIuXG4gICAqL1xuICBjb250ZXh0VmFsdWU6IG8uRXhwcmVzc2lvbnxudWxsO1xuXG4gIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbjtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBjb25kaXRpb25hbCBvcCwgd2hpY2ggd2lsbCBkaXNwbGF5IGFuIGVtYmVkZGVkIHZpZXcgYWNjb3JkaW5nIHRvIGEgY29uZHRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb25kaXRpb25hbE9wKFxuICAgIHRhcmdldDogWHJlZklkLCB0YXJnZXRTbG90OiBTbG90SGFuZGxlLCB0ZXN0OiBvLkV4cHJlc3Npb258bnVsbCxcbiAgICBjb25kaXRpb25zOiBBcnJheTxDb25kaXRpb25hbENhc2VFeHByPiwgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKTogQ29uZGl0aW9uYWxPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLkNvbmRpdGlvbmFsLFxuICAgIHRhcmdldCxcbiAgICB0YXJnZXRTbG90LFxuICAgIHRlc3QsXG4gICAgY29uZGl0aW9ucyxcbiAgICBwcm9jZXNzZWQ6IG51bGwsXG4gICAgc291cmNlU3BhbixcbiAgICBjb250ZXh0VmFsdWU6IG51bGwsXG4gICAgLi4uTkVXX09QLFxuICAgIC4uLlRSQUlUX0RFUEVORFNfT05fU0xPVF9DT05URVhULFxuICAgIC4uLlRSQUlUX0NPTlNVTUVTX1ZBUlMsXG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwZWF0ZXJPcCBleHRlbmRzIE9wPFVwZGF0ZU9wPiwgRGVwZW5kc09uU2xvdENvbnRleHRPcFRyYWl0IHtcbiAga2luZDogT3BLaW5kLlJlcGVhdGVyO1xuXG4gIC8qKlxuICAgKiBUaGUgUmVwZWF0ZXJDcmVhdGUgb3AgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcmVwZWF0ZXIuXG4gICAqL1xuICB0YXJnZXQ6IFhyZWZJZDtcblxuICB0YXJnZXRTbG90OiBTbG90SGFuZGxlO1xuXG4gIC8qKlxuICAgKiBUaGUgY29sbGVjdGlvbiBwcm92aWRlZCB0byB0aGUgZm9yIGxvb3AgYXMgaXRzIGV4cHJlc3Npb24uXG4gICAqL1xuICBjb2xsZWN0aW9uOiBvLkV4cHJlc3Npb247XG5cbiAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVwZWF0ZXJPcChcbiAgICByZXBlYXRlckNyZWF0ZTogWHJlZklkLCB0YXJnZXRTbG90OiBTbG90SGFuZGxlLCBjb2xsZWN0aW9uOiBvLkV4cHJlc3Npb24sXG4gICAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKTogUmVwZWF0ZXJPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLlJlcGVhdGVyLFxuICAgIHRhcmdldDogcmVwZWF0ZXJDcmVhdGUsXG4gICAgdGFyZ2V0U2xvdCxcbiAgICBjb2xsZWN0aW9uLFxuICAgIHNvdXJjZVNwYW4sXG4gICAgLi4uTkVXX09QLFxuICAgIC4uLlRSQUlUX0RFUEVORFNfT05fU0xPVF9DT05URVhULFxuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlZmVyV2hlbk9wIGV4dGVuZHMgT3A8VXBkYXRlT3A+LCBEZXBlbmRzT25TbG90Q29udGV4dE9wVHJhaXQsIENvbnN1bWVzVmFyc1RyYWl0IHtcbiAga2luZDogT3BLaW5kLkRlZmVyV2hlbjtcblxuICAvKipcbiAgICogVGhlIGBkZWZlcmAgY3JlYXRlIG9wIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHdoZW4gY29uZGl0aW9uLlxuICAgKi9cbiAgdGFyZ2V0OiBYcmVmSWQ7XG5cbiAgLyoqXG4gICAqIEEgdXNlci1wcm92aWRlZCBleHByZXNzaW9uIHRoYXQgdHJpZ2dlcnMgdGhlIGRlZmVyIG9wLlxuICAgKi9cbiAgZXhwcjogby5FeHByZXNzaW9uO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGVtaXQgdGhlIHByZWZldGNoIHZlcnNpb24gb2YgdGhlIGluc3RydWN0aW9uLlxuICAgKi9cbiAgcHJlZmV0Y2g6IGJvb2xlYW47XG5cbiAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGVmZXJXaGVuT3AoXG4gICAgdGFyZ2V0OiBYcmVmSWQsIGV4cHI6IG8uRXhwcmVzc2lvbiwgcHJlZmV0Y2g6IGJvb2xlYW4sXG4gICAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKTogRGVmZXJXaGVuT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5EZWZlcldoZW4sXG4gICAgdGFyZ2V0LFxuICAgIGV4cHIsXG4gICAgcHJlZmV0Y2gsXG4gICAgc291cmNlU3BhbixcbiAgICAuLi5ORVdfT1AsXG4gICAgLi4uVFJBSVRfREVQRU5EU19PTl9TTE9UX0NPTlRFWFQsXG4gICAgLi4uVFJBSVRfQ09OU1VNRVNfVkFSUyxcbiAgfTtcbn1cblxuLyoqXG4gKiBBbiBvcCB0aGF0IHJlcHJlc2VudHMgYW4gZXhwcmVzc2lvbiBpbiBhbiBpMThuIG1lc3NhZ2UuXG4gKlxuICogVE9ETzogVGhpcyBjYW4gcmVwcmVzZW50IGV4cHJlc3Npb25zIHVzZWQgaW4gYm90aCBpMThuIGF0dHJpYnV0ZXMgYW5kIG5vcm1hbCBpMThuIGNvbnRlbnQuIFdlXG4gKiBtYXkgd2FudCB0byBzcGxpdCB0aGVzZSBpbnRvIHR3byBkaWZmZXJlbnQgb3AgdHlwZXMsIGRlcml2aW5nIGZyb20gdGhlIHNhbWUgYmFzZSBjbGFzcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJMThuRXhwcmVzc2lvbk9wIGV4dGVuZHMgT3A8VXBkYXRlT3A+LCBDb25zdW1lc1ZhcnNUcmFpdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcGVuZHNPblNsb3RDb250ZXh0T3BUcmFpdCB7XG4gIGtpbmQ6IE9wS2luZC5JMThuRXhwcmVzc2lvbjtcblxuICAvKipcbiAgICogVGhlIGkxOG4gY29udGV4dCB0aGF0IHRoaXMgZXhwcmVzc2lvbiBiZWxvbmdzIHRvLlxuICAgKi9cbiAgY29udGV4dDogWHJlZklkO1xuXG4gIC8qKlxuICAgKiBUaGUgWHJlZiBvZiB0aGUgb3AgdGhhdCB3ZSBuZWVkIHRvIGBhZHZhbmNlYCB0by5cbiAgICpcbiAgICogSW4gYW4gaTE4biBibG9jaywgdGhpcyBpcyBpbml0aWFsbHkgdGhlIGkxOG4gc3RhcnQgb3AsIGJ1dCB3aWxsIGV2ZW50dWFsbHkgY29ycmVzcG9uZCB0b1xuICAgKiB0aGUgZmluYWwgc2xvdCBjb25zdW1lciBpbiB0aGUgb3duaW5nIGkxOG4gYmxvY2suXG4gICAqIFRPRE86IFdlIHNob3VsZCBtYWtlIHRleHQgaTE4bkV4cHJlc3Npb25zIHRhcmdldCB0aGUgaTE4bkVuZCBpbnN0cnVjdGlvbiwgaW5zdGVhZCB0aGUgbGFzdFxuICAgKiBzbG90IGNvbnN1bWVyIGluIHRoZSBpMThuIGJsb2NrLiBUaGlzIG1ha2VzIHRoZW0gcmVzaWxpZW50IHRvIHRoYXQgbGFzdCBjb25zdW1lciBiZWluZ1xuICAgKiBkZWxldGVkLiAoT3IgbmV3IHNsb3QgY29uc3VtZXJzIGJlaW5nIGFkZGVkISlcbiAgICpcbiAgICogSW4gYW4gaTE4biBhdHRyaWJ1dGUsIHRoaXMgaXMgdGhlIHhyZWYgb2YgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudFN0YXJ0L2VsZW1lbnQuXG4gICAqL1xuICB0YXJnZXQ6IFhyZWZJZDtcblxuICAvKipcbiAgICogSW4gYW4gaTE4biBibG9jaywgdGhpcyBzaG91bGQgYmUgdGhlIGkxOG4gc3RhcnQgb3AuXG4gICAqXG4gICAqIEluIGFuIGkxOG4gYXR0cmlidXRlLCB0aGlzIHdpbGwgYmUgdGhlIHhyZWYgb2YgdGhlIGF0dHJpYnV0ZSBjb25maWd1cmF0aW9uIGluc3RydWN0aW9uLlxuICAgKi9cbiAgaTE4bk93bmVyOiBYcmVmSWQ7XG5cbiAgLyoqXG4gICAqIEEgaGFuZGxlIGZvciB0aGUgc2xvdCB0aGF0IHRoaXMgZXhwcmVzc2lvbiBtb2RpZmllcy5cbiAgICogLSBJbiBhbiBpMThuIGJsb2NrLCB0aGlzIGlzIHRoZSBoYW5kbGUgb2YgdGhlIGJsb2NrLlxuICAgKiAtIEluIGFuIGkxOG4gYXR0cmlidXRlLCB0aGlzIGlzIHRoZSBoYW5kbGUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgaTE4bkF0dHJpYnV0ZXMgaW5zdHJ1Y3Rpb24uXG4gICAqL1xuICBoYW5kbGU6IFNsb3RIYW5kbGU7XG5cbiAgLyoqXG4gICAqIFRoZSBleHByZXNzaW9uIHZhbHVlLlxuICAgKi9cbiAgZXhwcmVzc2lvbjogby5FeHByZXNzaW9uO1xuXG4gIGljdVBsYWNlaG9sZGVyOiBYcmVmSWR8bnVsbDtcblxuICAvKipcbiAgICogVGhlIGkxOG4gcGxhY2Vob2xkZXIgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZXhwcmVzc2lvbi4gVGhpcyBjYW4gYmUgbnVsbCBpZiB0aGUgZXhwcmVzc2lvbiBpc1xuICAgKiBwYXJ0IG9mIGFuIElDVSBwbGFjZWhvbGRlci4gSW4gdGhpcyBjYXNlIGl0IGdldHMgY29tYmluZWQgd2l0aCB0aGUgc3RyaW5nIGxpdGVyYWwgdmFsdWUgYW5kXG4gICAqIG90aGVyIGV4cHJlc3Npb25zIGluIHRoZSBJQ1UgcGxhY2Vob2xkZXIgYW5kIGFzc2lnbmVkIHRvIHRoZSB0cmFuc2xhdGVkIG1lc3NhZ2UgdW5kZXIgdGhlIElDVVxuICAgKiBwbGFjZWhvbGRlciBuYW1lLlxuICAgKi9cbiAgaTE4blBsYWNlaG9sZGVyOiBzdHJpbmd8bnVsbDtcblxuICAvKipcbiAgICogVGhlIHRpbWUgdGhhdCB0aGlzIGV4cHJlc3Npb24gaXMgcmVzb2x2ZWQuXG4gICAqL1xuICByZXNvbHV0aW9uVGltZTogSTE4blBhcmFtUmVzb2x1dGlvblRpbWU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBpMThuIGV4cHJlc3Npb24gYXBwbGllcyB0byBhIHRlbXBsYXRlIG9yIHRvIGEgYmluZGluZy5cbiAgICovXG4gIHVzYWdlOiBJMThuRXhwcmVzc2lvbkZvcjtcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBhbiBJMThuRXhwcmVzc2lvbkNvbnRleHQuQmluZGluZywgdGhpcyBleHByZXNzaW9uIGlzIGFzc29jaWF0ZWQgd2l0aCBhIG5hbWVkXG4gICAqIGF0dHJpYnV0ZS4gVGhhdCBuYW1lIGlzIHN0b3JlZCBoZXJlLlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbjtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYW4gaTE4biBleHByZXNzaW9uIG9wLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSTE4bkV4cHJlc3Npb25PcChcbiAgICBjb250ZXh0OiBYcmVmSWQsIHRhcmdldDogWHJlZklkLCBpMThuT3duZXI6IFhyZWZJZCwgaGFuZGxlOiBTbG90SGFuZGxlLFxuICAgIGV4cHJlc3Npb246IG8uRXhwcmVzc2lvbiwgaWN1UGxhY2Vob2xkZXI6IFhyZWZJZHxudWxsLCBpMThuUGxhY2Vob2xkZXI6IHN0cmluZ3xudWxsLFxuICAgIHJlc29sdXRpb25UaW1lOiBJMThuUGFyYW1SZXNvbHV0aW9uVGltZSwgdXNhZ2U6IEkxOG5FeHByZXNzaW9uRm9yLCBuYW1lOiBzdHJpbmcsXG4gICAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKTogSTE4bkV4cHJlc3Npb25PcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLkkxOG5FeHByZXNzaW9uLFxuICAgIGNvbnRleHQsXG4gICAgdGFyZ2V0LFxuICAgIGkxOG5Pd25lcixcbiAgICBoYW5kbGUsXG4gICAgZXhwcmVzc2lvbixcbiAgICBpY3VQbGFjZWhvbGRlcixcbiAgICBpMThuUGxhY2Vob2xkZXIsXG4gICAgcmVzb2x1dGlvblRpbWUsXG4gICAgdXNhZ2UsXG4gICAgbmFtZSxcbiAgICBzb3VyY2VTcGFuLFxuICAgIC4uLk5FV19PUCxcbiAgICAuLi5UUkFJVF9DT05TVU1FU19WQVJTLFxuICAgIC4uLlRSQUlUX0RFUEVORFNfT05fU0xPVF9DT05URVhULFxuICB9O1xufVxuXG4vKipcbiAqIEFuIG9wIHRoYXQgcmVwcmVzZW50cyBhcHBseWluZyBhIHNldCBvZiBpMThuIGV4cHJlc3Npb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEkxOG5BcHBseU9wIGV4dGVuZHMgT3A8VXBkYXRlT3A+IHtcbiAga2luZDogT3BLaW5kLkkxOG5BcHBseTtcblxuICAvKipcbiAgICogSW4gYW4gaTE4biBibG9jaywgdGhpcyBzaG91bGQgYmUgdGhlIGkxOG4gc3RhcnQgb3AuXG4gICAqXG4gICAqIEluIGFuIGkxOG4gYXR0cmlidXRlLCB0aGlzIHdpbGwgYmUgdGhlIHhyZWYgb2YgdGhlIGF0dHJpYnV0ZSBjb25maWd1cmF0aW9uIGluc3RydWN0aW9uLlxuICAgKi9cbiAgb3duZXI6IFhyZWZJZDtcblxuICAvKipcbiAgICogQSBoYW5kbGUgZm9yIHRoZSBzbG90IHRoYXQgaTE4biBhcHBseSBpbnN0cnVjdGlvbiBzaG91bGQgYXBwbHkgdG8uIEluIGFuIGkxOG4gYmxvY2ssIHRoaXNcbiAgICogaXMgdGhlIHNsb3Qgb2YgdGhlIGkxOG4gYmxvY2sgdGhpcyBleHByZXNzaW9uIGJlbG9uZ3MgdG8uIEluIGFuIGkxOG4gYXR0cmlidXRlLCB0aGlzIGlzIHRoZVxuICAgKiBzbG90IG9mIHRoZSBjb3JyZXNwb25kaW5nIGkxOG5BdHRyaWJ1dGVzIGluc3RydWN0aW9uLlxuICAgKi9cbiAgaGFuZGxlOiBTbG90SGFuZGxlO1xuXG4gIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIG9wIHRvIGFwcGx5IGkxOG4gZXhwcmVzc2lvbiBvcHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJMThuQXBwbHlPcChcbiAgICBvd25lcjogWHJlZklkLCBoYW5kbGU6IFNsb3RIYW5kbGUsIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbik6IEkxOG5BcHBseU9wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuSTE4bkFwcGx5LFxuICAgIG93bmVyLFxuICAgIGhhbmRsZSxcbiAgICBzb3VyY2VTcGFuLFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cbiJdfQ==
|