@angular/compiler 17.3.0-next.1 → 17.3.0
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 +2 -2
- package/esm2022/src/render3/partial/class_metadata.mjs +1 -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_control_flow.mjs +5 -1
- package/esm2022/src/template/pipeline/ir/src/enums.mjs +7 -29
- package/esm2022/src/template/pipeline/ir/src/ops/create.mjs +1 -8
- package/esm2022/src/template/pipeline/ir/src/traits.mjs +1 -9
- package/esm2022/src/template/pipeline/src/ingest.mjs +1 -2
- package/esm2022/src/template/pipeline/src/phases/attribute_extraction.mjs +2 -2
- package/esm2022/src/template/pipeline/src/phases/const_collection.mjs +3 -3
- package/esm2022/src/template/pipeline/src/phases/extract_i18n_messages.mjs +2 -2
- package/esm2022/src/template/pipeline/src/phases/naming.mjs +2 -2
- package/esm2022/src/template/pipeline/src/phases/propagate_i18n_blocks.mjs +3 -2
- package/esm2022/src/template/pipeline/src/phases/remove_empty_bindings.mjs +2 -2
- package/esm2022/src/template/pipeline/src/phases/resolve_dollar_event.mjs +4 -4
- package/esm2022/src/template/pipeline/src/phases/resolve_i18n_element_placeholders.mjs +2 -2
- package/esm2022/src/template/pipeline/src/phases/resolve_i18n_expression_placeholders.mjs +4 -4
- package/esm2022/src/template/pipeline/src/phases/resolve_names.mjs +2 -2
- package/esm2022/src/template/pipeline/src/phases/temporary_variables.mjs +1 -1
- package/esm2022/src/template/pipeline/src/phases/transform_two_way_binding_set.mjs +11 -2
- package/esm2022/src/template/pipeline/src/phases/var_counting.mjs +2 -2
- package/esm2022/src/template/pipeline/src/phases/variable_optimization.mjs +1 -2
- package/esm2022/src/version.mjs +1 -1
- package/fesm2022/compiler.mjs +46 -71
- package/fesm2022/compiler.mjs.map +1 -1
- package/index.d.ts +79 -79
- package/package.json +2 -2
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
* Use of this source code is governed by an MIT-style license that can be
|
|
6
6
|
* found in the LICENSE file at https://angular.io/license
|
|
7
7
|
*/
|
|
8
|
-
import * as o from '../../../../../output/output_ast';
|
|
9
8
|
import { I18nContextKind, Namespace, OpKind } from '../enums';
|
|
10
9
|
import { SlotHandle } from '../handle';
|
|
11
10
|
import { OpList } from '../operations';
|
|
@@ -383,10 +382,4 @@ export function createI18nAttributesOp(xref, handle, target) {
|
|
|
383
382
|
...TRAIT_CONSUMES_SLOT,
|
|
384
383
|
};
|
|
385
384
|
}
|
|
386
|
-
export function literalOrArrayLiteral(value) {
|
|
387
|
-
if (Array.isArray(value)) {
|
|
388
|
-
return o.literalArr(value.map(literalOrArrayLiteral));
|
|
389
|
-
}
|
|
390
|
-
return o.literal(value, o.INFERRED_TYPE);
|
|
391
|
-
}
|
|
392
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXIvc3JjL3RlbXBsYXRlL3BpcGVsaW5lL2lyL3NyYy9vcHMvY3JlYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUlILE9BQU8sS0FBSyxDQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFHdEQsT0FBTyxFQUFnQyxlQUFlLEVBQXVCLFNBQVMsRUFBRSxNQUFNLEVBQWUsTUFBTSxVQUFVLENBQUM7QUFDOUgsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQUssTUFBTSxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBeUMsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFFM0csT0FBTyxFQUFZLE1BQU0sRUFBMEIsTUFBTSxVQUFVLENBQUM7QUFvQnBFOztHQUVHO0FBQ0gsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUN0QyxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxRQUFRO0lBQzdGLE1BQU0sQ0FBQyxjQUFjO0NBQ3RCLENBQUMsQ0FBQztBQUVIOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQixDQUFDLEVBQVk7SUFDakQsT0FBTyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUEwRkQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQ2hDLEdBQVcsRUFBRSxJQUFZLEVBQUUsU0FBb0IsRUFBRSxlQUE4QyxFQUMvRixlQUFnQyxFQUFFLGVBQWdDO0lBQ3BFLE9BQU87UUFDTCxJQUFJLEVBQUUs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LFVBQVUsc0JBQXNCLENBQ2xDLElBQVksRUFBRSxNQUFrQixFQUFFLE1BQWM7SUFDbEQsT0FBTztRQUNMLElBQUksRUFBRSxNQUFNLENBQUMsY0FBYztRQUMzQixJQUFJO1FBQ0osTUFBTTtRQUNOLE1BQU07UUFDTixvQkFBb0IsRUFBRSxJQUFJO1FBQzFCLEdBQUcsTUFBTTtRQUNULEdBQUcsbUJBQW1CO0tBQ3ZCLENBQUM7QUFDSixDQUFDO0FBUUQsTUFBTSxVQUFVLHFCQUFxQixDQUFDLEtBQVU7SUFDOUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDekIsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFDRCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUMzQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7U2VjdXJpdHlDb250ZXh0fSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb3JlJztcbmltcG9ydCAqIGFzIGkxOG4gZnJvbSAnLi4vLi4vLi4vLi4vLi4vaTE4bi9pMThuX2FzdCc7XG5pbXBvcnQgKiBhcyBvIGZyb20gJy4uLy4uLy4uLy4uLy4uL291dHB1dC9vdXRwdXRfYXN0JztcbmltcG9ydCB7UGFyc2VTb3VyY2VTcGFufSBmcm9tICcuLi8uLi8uLi8uLi8uLi9wYXJzZV91dGlsJztcbmltcG9ydCB7UjNEZWZlckJsb2NrTWV0YWRhdGF9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3JlbmRlcjMvdmlldy9hcGknO1xuaW1wb3J0IHtCaW5kaW5nS2luZCwgRGVmZXJUcmlnZ2VyS2luZCwgSTE4bkNvbnRleHRLaW5kLCBJMThuUGFyYW1WYWx1ZUZsYWdzLCBOYW1lc3BhY2UsIE9wS2luZCwgVGVtcGxhdGVLaW5kfSBmcm9tICcuLi9lbnVtcyc7XG5pbXBvcnQge1Nsb3RIYW5kbGV9IGZyb20gJy4uL2hhbmRsZSc7XG5pbXBvcnQge09wLCBPcExpc3QsIFhyZWZJZH0gZnJvbSAnLi4vb3BlcmF0aW9ucyc7XG5pbXBvcnQge0NvbnN1bWVzU2xvdE9wVHJhaXQsIENvbnN1bWVzVmFyc1RyYWl0LCBUUkFJVF9DT05TVU1FU19TTE9ULCBUUkFJVF9DT05TVU1FU19WQVJTfSBmcm9tICcuLi90cmFpdHMnO1xuXG5pbXBvcnQge0xpc3RFbmRPcCwgTkVXX09QLCBTdGF0ZW1lbnRPcCwgVmFyaWFibGVPcH0gZnJvbSAnLi9zaGFyZWQnO1xuXG5pbXBvcnQgdHlwZSB7VXBkYXRlT3B9IGZyb20gJy4vdXBkYXRlJztcblxuLyoqXG4gKiBBbiBvcGVyYXRpb24gdXNhYmxlIG9uIHRoZSBjcmVhdGlvbiBzaWRlIG9mIHRoZSBJUi5cbiAqL1xuZXhwb3J0IHR5cGUgQ3JlYXRlT3AgPVxuICAgIExpc3RFbmRPcDxDcmVhdGVPcD58U3RhdGVtZW50T3A8Q3JlYXRlT3A+fEVsZW1lbnRPcHxFbGVtZW50U3RhcnRPcHxFbGVtZW50RW5kT3B8Q29udGFpbmVyT3B8XG4gICAgQ29udGFpbmVyU3RhcnRPcHxDb250YWluZXJFbmRPcHxUZW1wbGF0ZU9wfEVuYWJsZUJpbmRpbmdzT3B8RGlzYWJsZUJpbmRpbmdzT3B8VGV4dE9wfExpc3RlbmVyT3B8XG4gICAgVHdvV2F5TGlzdGVuZXJPcHxQaXBlT3B8VmFyaWFibGVPcDxDcmVhdGVPcD58TmFtZXNwYWNlT3B8UHJvamVjdGlvbkRlZk9wfFByb2plY3Rpb25PcHxcbiAgICBFeHRyYWN0ZWRBdHRyaWJ1dGVPcHxEZWZlck9wfERlZmVyT25PcHxSZXBlYXRlckNyZWF0ZU9wfEkxOG5NZXNzYWdlT3B8STE4bk9wfEkxOG5TdGFydE9wfFxuICAgIEkxOG5FbmRPcHxJY3VTdGFydE9wfEljdUVuZE9wfEljdVBsYWNlaG9sZGVyT3B8STE4bkNvbnRleHRPcHxJMThuQXR0cmlidXRlc09wO1xuXG4vKipcbiAqIEFuIG9wZXJhdGlvbiByZXByZXNlbnRpbmcgdGhlIGNyZWF0aW9uIG9mIGFuIGVsZW1lbnQgb3IgY29udGFpbmVyLlxuICovXG5leHBvcnQgdHlwZSBFbGVtZW50T3JDb250YWluZXJPcHMgPVxuICAgIEVsZW1lbnRPcHxFbGVtZW50U3RhcnRPcHxDb250YWluZXJPcHxDb250YWluZXJTdGFydE9wfFRlbXBsYXRlT3B8UmVwZWF0ZXJDcmVhdGVPcDtcblxuLyoqXG4gKiBUaGUgc2V0IG9mIE9wS2luZHMgdGhhdCByZXByZXNlbnQgdGhlIGNyZWF0aW9uIG9mIGFuIGVsZW1lbnQgb3IgY29udGFpbmVyXG4gKi9cbmNvbnN0IGVsZW1lbnRDb250YWluZXJPcEtpbmRzID0gbmV3IFNldChbXG4gIE9wS2luZC5FbGVtZW50LCBPcEtpbmQuRWxlbWVudFN0YXJ0LCBPcEtpbmQuQ29udGFpbmVyLCBPcEtpbmQuQ29udGFpbmVyU3RhcnQsIE9wS2luZC5UZW1wbGF0ZSxcbiAgT3BLaW5kLlJlcGVhdGVyQ3JlYXRlXG5dKTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gb3BlcmF0aW9uIHJlcHJlc2VudHMgdGhlIGNyZWF0aW9uIG9mIGFuIGVsZW1lbnQgb3IgY29udGFpbmVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFbGVtZW50T3JDb250YWluZXJPcChvcDogQ3JlYXRlT3ApOiBvcCBpcyBFbGVtZW50T3JDb250YWluZXJPcHMge1xuICByZXR1cm4gZWxlbWVudENvbnRhaW5lck9wS2luZHMuaGFzKG9wLmtpbmQpO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudGF0aW9uIG9mIGEgbG9jYWwgcmVmZXJlbmNlIG9uIGFuIGVsZW1lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9jYWxSZWYge1xuICAvKipcbiAgICogVXNlci1kZWZpbmVkIG5hbWUgb2YgdGhlIGxvY2FsIHJlZiB2YXJpYWJsZS5cbiAgICovXG4gIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGFyZ2V0IG9mIHRoZSBsb2NhbCByZWZlcmVuY2UgdmFyaWFibGUgKG9mdGVuIGAnJ2ApLlxuICAgKi9cbiAgdGFyZ2V0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQmFzZSBpbnRlcmZhY2UgZm9yIGBFbGVtZW50YCwgYEVsZW1lbnRTdGFydGAsIGFuZCBgVGVtcGxhdGVgIG9wZXJhdGlvbnMsIGNvbnRhaW5pbmcgY29tbW9uIGZpZWxkc1xuICogdXNlZCB0byByZXByZXNlbnQgdGhlaXIgZWxlbWVudC1saWtlIG5hdHVyZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbGVtZW50T3JDb250YWluZXJPcEJhc2UgZXh0ZW5kcyBPcDxDcmVhdGVPcD4sIENvbnN1bWVzU2xvdE9wVHJhaXQge1xuICBraW5kOiBFbGVtZW50T3JDb250YWluZXJPcHNbJ2tpbmQnXTtcblxuICAvKipcbiAgICogYFhyZWZJZGAgYWxsb2NhdGVkIGZvciB0aGlzIGVsZW1lbnQuXG4gICAqXG4gICAqIFRoaXMgSUQgaXMgdXNlZCB0byByZWZlcmVuY2UgdGhpcyBlbGVtZW50IGZyb20gb3RoZXIgSVIgc3RydWN0dXJlcy5cbiAgICovXG4gIHhyZWY6IFhyZWZJZDtcblxuICAvKipcbiAgICogQXR0cmlidXRlcyBvZiB2YXJpb3VzIGtpbmRzIG9uIHRoaXMgZWxlbWVudC4gUmVwcmVzZW50ZWQgYXMgYSBgQ29uc3RJbmRleGAgcG9pbnRlciBpbnRvIHRoZVxuICAgKiBzaGFyZWQgYGNvbnN0c2AgYXJyYXkgb2YgdGhlIGNvbXBvbmVudCBjb21waWxhdGlvbi5cbiAgICovXG4gIGF0dHJpYnV0ZXM6IENvbnN0SW5kZXh8bnVsbDtcblxuICAvKipcbiAgICogTG9jYWwgcmVmZXJlbmNlcyB0byB0aGlzIGVsZW1lbnQuXG4gICAqXG4gICAqIEJlZm9yZSBsb2NhbCByZWYgcHJvY2Vzc2luZywgdGhpcyBpcyBhbiBhcnJheSBvZiBgTG9jYWxSZWZgIGRlY2xhcmF0aW9ucy5cbiAgICpcbiAgICogQWZ0ZXIgcHJvY2Vzc2luZywgaXQncyBhIGBDb25zdEluZGV4YCBwb2ludGVyIGludG8gdGhlIHNoYXJlZCBgY29uc3RzYCBhcnJheSBvZiB0aGUgY29tcG9uZW50XG4gICAqIGNvbXBpbGF0aW9uLlxuICAgKi9cbiAgbG9jYWxSZWZzOiBMb2NhbFJlZltdfENvbnN0SW5kZXh8bnVsbDtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGNvbnRhaW5lciBpcyBtYXJrZWQgYG5nTm9uQmluZGFibGVgLCB3aGljaCBkaXNhYmxlZCBBbmd1bGFyIGJpbmRpbmcgZm9yIGl0c2VsZiBhbmRcbiAgICogYWxsIGRlc2NlbmRhbnRzLlxuICAgKi9cbiAgbm9uQmluZGFibGU6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBzcGFuIG9mIHRoZSBlbGVtZW50J3Mgc3RhcnQgdGFnLlxuICAgKi9cbiAgc3RhcnRTb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW47XG5cbiAgLyoqXG4gICAqIFRoZSB3aG9sZSBzb3VyY2Ugc3BhbiBvZiB0aGUgZWxlbWVudCwgaW5jbHVkaW5nIGNoaWxkcmVuLlxuICAgKi9cbiAgd2hvbGVTb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWxlbWVudE9wQmFzZSBleHRlbmRzIEVsZW1lbnRPckNvbnRhaW5lck9wQmFzZSB7XG4gIGtpbmQ6IE9wS2luZC5FbGVtZW50fE9wS2luZC5FbGVtZW50U3RhcnR8T3BLaW5kLlRlbXBsYXRlfE9wS2luZC5SZXBlYXRlckNyZWF0ZTtcblxuICAvKipcbiAgICogVGhlIEhUTUwgdGFnIG5hbWUgZm9yIHRoaXMgZWxlbWVudC5cbiAgICovXG4gIHRhZzogc3RyaW5nfG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lc3BhY2Ugb2YgdGhpcyBlbGVtZW50LCB3aGljaCBjb250cm9scyB0aGUgcHJlY2VkaW5nIG5hbWVzcGFjZSBpbnN0cnVjdGlvbi5cbiAgICovXG4gIG5hbWVzcGFjZTogTmFtZXNwYWNlO1xufVxuXG4vKipcbiAqIExvZ2ljYWwgb3BlcmF0aW9uIHJlcHJlc2VudGluZyB0aGUgc3RhcnQgb2YgYW4gZWxlbWVudCBpbiB0aGUgY3JlYXRpb24gSVIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWxlbWVudFN0YXJ0T3AgZXh0ZW5kcyBFbGVtZW50T3BCYXNlIHtcbiAga2luZDogT3BLaW5kLkVsZW1lbnRTdGFydDtcblxuICAvKipcbiAgICogVGhlIGkxOG4gcGxhY2Vob2xkZXIgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhpcyBlbGVtZW50LlxuICAgKi9cbiAgaTE4blBsYWNlaG9sZGVyPzogaTE4bi5UYWdQbGFjZWhvbGRlcjtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYW4gYEVsZW1lbnRTdGFydE9wYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnRTdGFydE9wKFxuICAgIHRhZzogc3RyaW5nLCB4cmVmOiBYcmVmSWQsIG5hbWVzcGFjZTogTmFtZXNwYWNlLCBpMThuUGxhY2Vob2xkZXI6IGkxOG4uVGFnUGxhY2Vob2xkZXJ8dW5kZWZpbmVkLFxuICAgIHN0YXJ0U291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuLCB3aG9sZVNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbik6IEVsZW1lbnRTdGFydE9wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuRWxlbWVudFN0YXJ0LFxuICAgIHhyZWYsXG4gICAgdGFnLFxuICAgIGhhbmRsZTogbmV3IFNsb3RIYW5kbGUoKSxcbiAgICBhdHRyaWJ1dGVzOiBudWxsLFxuICAgIGxvY2FsUmVmczogW10sXG4gICAgbm9uQmluZGFibGU6IGZhbHNlLFxuICAgIG5hbWVzcGFjZSxcbiAgICBpMThuUGxhY2Vob2xkZXIsXG4gICAgc3RhcnRTb3VyY2VTcGFuLFxuICAgIHdob2xlU291cmNlU3BhbixcbiAgICAuLi5UUkFJVF9DT05TVU1FU19TTE9ULFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cblxuLyoqXG4gKiBMb2dpY2FsIG9wZXJhdGlvbiByZXByZXNlbnRpbmcgYW4gZWxlbWVudCB3aXRoIG5vIGNoaWxkcmVuIGluIHRoZSBjcmVhdGlvbiBJUi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbGVtZW50T3AgZXh0ZW5kcyBFbGVtZW50T3BCYXNlIHtcbiAga2luZDogT3BLaW5kLkVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBpMThuIHBsYWNlaG9sZGVyIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZWxlbWVudC5cbiAgICovXG4gIGkxOG5QbGFjZWhvbGRlcj86IGkxOG4uVGFnUGxhY2Vob2xkZXI7XG59XG5cbi8qKlxuICogTG9naWNhbCBvcGVyYXRpb24gcmVwcmVzZW50aW5nIGFuIGVtYmVkZGVkIHZpZXcgZGVjbGFyYXRpb24gaW4gdGhlIGNyZWF0aW9uIElSLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlT3AgZXh0ZW5kcyBFbGVtZW50T3BCYXNlIHtcbiAga2luZDogT3BLaW5kLlRlbXBsYXRlO1xuXG4gIHRlbXBsYXRlS2luZDogVGVtcGxhdGVLaW5kO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGRlY2xhcmF0aW9uIHNsb3RzIHVzZWQgYnkgdGhpcyB0ZW1wbGF0ZSwgb3IgYG51bGxgIGlmIHNsb3RzIGhhdmUgbm90IHlldCBiZWVuXG4gICAqIGFzc2lnbmVkLlxuICAgKi9cbiAgZGVjbHM6IG51bWJlcnxudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGJpbmRpbmcgdmFyaWFibGUgc2xvdHMgdXNlZCBieSB0aGlzIHRlbXBsYXRlLCBvciBgbnVsbGAgaWYgYmluZGluZyB2YXJpYWJsZXMgaGF2ZVxuICAgKiBub3QgeWV0IGJlZW4gY291bnRlZC5cbiAgICovXG4gIHZhcnM6IG51bWJlcnxudWxsO1xuXG4gIC8qKlxuICAgKiBTdWZmaXggdG8gYWRkIHRvIHRoZSBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQgdGVtcGxhdGUgZnVuY3Rpb24uXG4gICAqL1xuICBmdW5jdGlvbk5hbWVTdWZmaXg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGkxOG4gcGxhY2Vob2xkZXIgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhpcyB0ZW1wbGF0ZS5cbiAgICovXG4gIGkxOG5QbGFjZWhvbGRlcj86IGkxOG4uVGFnUGxhY2Vob2xkZXJ8aTE4bi5CbG9ja1BsYWNlaG9sZGVyO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGBUZW1wbGF0ZU9wYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRlbXBsYXRlT3AoXG4gICAgeHJlZjogWHJlZklkLCB0ZW1wbGF0ZUtpbmQ6IFRlbXBsYXRlS2luZCwgdGFnOiBzdHJpbmd8bnVsbCwgZnVuY3Rpb25OYW1lU3VmZml4OiBzdHJpbmcsXG4gICAgbmFtZXNwYWNlOiBOYW1lc3BhY2UsIGkxOG5QbGFjZWhvbGRlcjogaTE4bi5UYWdQbGFjZWhvbGRlcnxpMThuLkJsb2NrUGxhY2Vob2xkZXJ8dW5kZWZpbmVkLFxuICAgIHN0YXJ0U291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuLCB3aG9sZVNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbik6IFRlbXBsYXRlT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5UZW1wbGF0ZSxcbiAgICB4cmVmLFxuICAgIHRlbXBsYXRlS2luZCxcbiAgICBhdHRyaWJ1dGVzOiBudWxsLFxuICAgIHRhZyxcbiAgICBoYW5kbGU6IG5ldyBTbG90SGFuZGxlKCksXG4gICAgZnVuY3Rpb25OYW1lU3VmZml4LFxuICAgIGRlY2xzOiBudWxsLFxuICAgIHZhcnM6IG51bGwsXG4gICAgbG9jYWxSZWZzOiBbXSxcbiAgICBub25CaW5kYWJsZTogZmFsc2UsXG4gICAgbmFtZXNwYWNlLFxuICAgIGkxOG5QbGFjZWhvbGRlcixcbiAgICBzdGFydFNvdXJjZVNwYW4sXG4gICAgd2hvbGVTb3VyY2VTcGFuLFxuICAgIC4uLlRSQUlUX0NPTlNVTUVTX1NMT1QsXG4gICAgLi4uTkVXX09QLFxuICB9O1xufVxuXG4vKipcbiAqIEFuIG9wIHRoYXQgY3JlYXRlcyBhIHJlcGVhdGVyIChlLmcuIGEgZm9yIGxvb3ApLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcGVhdGVyQ3JlYXRlT3AgZXh0ZW5kcyBFbGVtZW50T3BCYXNlLCBDb25zdW1lc1ZhcnNUcmFpdCB7XG4gIGtpbmQ6IE9wS2luZC5SZXBlYXRlckNyZWF0ZTtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBkZWNsYXJhdGlvbiBzbG90cyB1c2VkIGJ5IHRoaXMgcmVwZWF0ZXIncyB0ZW1wbGF0ZSwgb3IgYG51bGxgIGlmIHNsb3RzIGhhdmUgbm90XG4gICAqIHlldCBiZWVuIGFzc2lnbmVkLlxuICAgKi9cbiAgZGVjbHM6IG51bWJlcnxudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGJpbmRpbmcgdmFyaWFibGUgc2xvdHMgdXNlZCBieSB0aGlzIHJlcGVhdGVyJ3MsIG9yIGBudWxsYCBpZiBiaW5kaW5nIHZhcmlhYmxlc1xuICAgKiBoYXZlIG5vdCB5ZXQgYmVlbiBjb3VudGVkLlxuICAgKi9cbiAgdmFyczogbnVtYmVyfG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBYcmVmIG9mIHRoZSBlbXB0eSB2aWV3IGZ1bmN0aW9uLiAoRm9yIHRoZSBwcmltYXJ5IHZpZXcgZnVuY3Rpb24sIHVzZSB0aGUgYHhyZWZgIHByb3BlcnR5KS5cbiAgICovXG4gIGVtcHR5VmlldzogWHJlZklkfG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSB0cmFjayBleHByZXNzaW9uIHRvIHVzZSB3aGlsZSBpdGVyYXRpbmcuXG4gICAqL1xuICB0cmFjazogby5FeHByZXNzaW9uO1xuXG4gIC8qKlxuICAgKiBgbnVsbGAgaW5pdGlhbGx5LCB0aGVuIGFuIGBvLkV4cHJlc3Npb25gLiBNaWdodCBiZSBhIHRyYWNrIGV4cHJlc3Npb24sIG9yIG1pZ2h0IGJlIGEgcmVmZXJlbmNlXG4gICAqIGludG8gdGhlIGNvbnN0YW50IHBvb2wuXG4gICAqL1xuICB0cmFja0J5Rm46IG8uRXhwcmVzc2lvbnxudWxsO1xuXG4gIC8qKlxuICAgKiBDb250ZXh0IHZhcmlhYmxlcyBhdmFpYWxhYmxlIGluIHRoaXMgYmxvY2suXG4gICAqL1xuICB2YXJOYW1lczogUmVwZWF0ZXJWYXJOYW1lcztcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgcmVwZWF0ZXIgdHJhY2sgZnVuY3Rpb24gcmVsaWVzIG9uIHRoZSBjb21wb25lbnQgaW5zdGFuY2UuXG4gICAqL1xuICB1c2VzQ29tcG9uZW50SW5zdGFuY2U6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFN1ZmZpeCB0byBhZGQgdG8gdGhlIG5hbWUgb2YgdGhlIGdlbmVyYXRlZCB0ZW1wbGF0ZSBmdW5jdGlvbi5cbiAgICovXG4gIGZ1bmN0aW9uTmFtZVN1ZmZpeDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUYWcgbmFtZSBmb3IgdGhlIGVtcHR5IGJsb2NrLlxuICAgKi9cbiAgZW1wdHlUYWc6IHN0cmluZ3xudWxsO1xuXG4gIC8qKlxuICAgKiBBdHRyaWJ1dGVzIG9mIHZhcmlvdXMga2luZHMgb24gdGhlIGVtcHR5IGJsb2NrLiBSZXByZXNlbnRlZCBhcyBhIGBDb25zdEluZGV4YCBwb2ludGVyIGludG8gdGhlXG4gICAqIHNoYXJlZCBgY29uc3RzYCBhcnJheSBvZiB0aGUgY29tcG9uZW50IGNvbXBpbGF0aW9uLlxuICAgKi9cbiAgZW1wdHlBdHRyaWJ1dGVzOiBDb25zdEluZGV4fG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBpMThuIHBsYWNlaG9sZGVyIGZvciB0aGUgcmVwZWF0ZWQgaXRlbSB0ZW1wbGF0ZS5cbiAgICovXG4gIGkxOG5QbGFjZWhvbGRlcjogaTE4bi5CbG9ja1BsYWNlaG9sZGVyfHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGkxOG4gcGxhY2Vob2xkZXIgZm9yIHRoZSBlbXB0eSB0ZW1wbGF0ZS5cbiAgICovXG4gIGVtcHR5STE4blBsYWNlaG9sZGVyOiBpMThuLkJsb2NrUGxhY2Vob2xkZXJ8dW5kZWZpbmVkO1xufVxuXG4vLyBUT0RPOiBhZGQgc291cmNlIHNwYW5zP1xuZXhwb3J0IGludGVyZmFjZSBSZXBlYXRlclZhck5hbWVzIHtcbiAgJGluZGV4OiBzdHJpbmc7XG4gICRjb3VudDogc3RyaW5nO1xuICAkZmlyc3Q6IHN0cmluZztcbiAgJGxhc3Q6IHN0cmluZztcbiAgJGV2ZW46IHN0cmluZztcbiAgJG9kZDogc3RyaW5nO1xuICAkaW1wbGljaXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlcGVhdGVyQ3JlYXRlT3AoXG4gICAgcHJpbWFyeVZpZXc6IFhyZWZJZCwgZW1wdHlWaWV3OiBYcmVmSWR8bnVsbCwgdGFnOiBzdHJpbmd8bnVsbCwgdHJhY2s6IG8uRXhwcmVzc2lvbixcbiAgICB2YXJOYW1lczogUmVwZWF0ZXJWYXJOYW1lcywgZW1wdHlUYWc6IHN0cmluZ3xudWxsLFxuICAgIGkxOG5QbGFjZWhvbGRlcjogaTE4bi5CbG9ja1BsYWNlaG9sZGVyfHVuZGVmaW5lZCxcbiAgICBlbXB0eUkxOG5QbGFjZWhvbGRlcjogaTE4bi5CbG9ja1BsYWNlaG9sZGVyfHVuZGVmaW5lZCwgc3RhcnRTb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4sXG4gICAgd2hvbGVTb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pOiBSZXBlYXRlckNyZWF0ZU9wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuUmVwZWF0ZXJDcmVhdGUsXG4gICAgYXR0cmlidXRlczogbnVsbCxcbiAgICB4cmVmOiBwcmltYXJ5VmlldyxcbiAgICBoYW5kbGU6IG5ldyBTbG90SGFuZGxlKCksXG4gICAgZW1wdHlWaWV3LFxuICAgIHRyYWNrLFxuICAgIHRyYWNrQnlGbjogbnVsbCxcbiAgICB0YWcsXG4gICAgZW1wdHlUYWcsXG4gICAgZW1wdHlBdHRyaWJ1dGVzOiBudWxsLFxuICAgIGZ1bmN0aW9uTmFtZVN1ZmZpeDogJ0ZvcicsXG4gICAgbmFtZXNwYWNlOiBOYW1lc3BhY2UuSFRNTCxcbiAgICBub25CaW5kYWJsZTogZmFsc2UsXG4gICAgbG9jYWxSZWZzOiBbXSxcbiAgICBkZWNsczogbnVsbCxcbiAgICB2YXJzOiBudWxsLFxuICAgIHZhck5hbWVzLFxuICAgIHVzZXNDb21wb25lbnRJbnN0YW5jZTogZmFsc2UsXG4gICAgaTE4blBsYWNlaG9sZGVyLFxuICAgIGVtcHR5STE4blBsYWNlaG9sZGVyLFxuICAgIHN0YXJ0U291cmNlU3BhbixcbiAgICB3aG9sZVNvdXJjZVNwYW4sXG4gICAgLi4uVFJBSVRfQ09OU1VNRVNfU0xPVCxcbiAgICAuLi5ORVdfT1AsXG4gICAgLi4uVFJBSVRfQ09OU1VNRVNfVkFSUyxcbiAgICBudW1TbG90c1VzZWQ6IGVtcHR5VmlldyA9PT0gbnVsbCA/IDIgOiAzLFxuICB9O1xufVxuXG4vKipcbiAqIExvZ2ljYWwgb3BlcmF0aW9uIHJlcHJlc2VudGluZyB0aGUgZW5kIG9mIGFuIGVsZW1lbnQgc3RydWN0dXJlIGluIHRoZSBjcmVhdGlvbiBJUi5cbiAqXG4gKiBQYWlycyB3aXRoIGFuIGBFbGVtZW50U3RhcnRgIG9wZXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbGVtZW50RW5kT3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4ge1xuICBraW5kOiBPcEtpbmQuRWxlbWVudEVuZDtcblxuICAvKipcbiAgICogVGhlIGBYcmVmSWRgIG9mIHRoZSBlbGVtZW50IGRlY2xhcmVkIHZpYSBgRWxlbWVudFN0YXJ0YC5cbiAgICovXG4gIHhyZWY6IFhyZWZJZDtcblxuICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW58bnVsbDtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYW4gYEVsZW1lbnRFbmRPcGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFbGVtZW50RW5kT3AoeHJlZjogWHJlZklkLCBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW58bnVsbCk6IEVsZW1lbnRFbmRPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLkVsZW1lbnRFbmQsXG4gICAgeHJlZixcbiAgICBzb3VyY2VTcGFuLFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cblxuLyoqXG4gKiBMb2dpY2FsIG9wZXJhdGlvbiByZXByZXNlbnRpbmcgdGhlIHN0YXJ0IG9mIGEgY29udGFpbmVyIGluIHRoZSBjcmVhdGlvbiBJUi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250YWluZXJTdGFydE9wIGV4dGVuZHMgRWxlbWVudE9yQ29udGFpbmVyT3BCYXNlIHtcbiAga2luZDogT3BLaW5kLkNvbnRhaW5lclN0YXJ0O1xufVxuXG4vKipcbiAqIExvZ2ljYWwgb3BlcmF0aW9uIHJlcHJlc2VudGluZyBhbiBlbXB0eSBjb250YWluZXIgaW4gdGhlIGNyZWF0aW9uIElSLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhaW5lck9wIGV4dGVuZHMgRWxlbWVudE9yQ29udGFpbmVyT3BCYXNlIHtcbiAga2luZDogT3BLaW5kLkNvbnRhaW5lcjtcbn1cblxuLyoqXG4gKiBMb2dpY2FsIG9wZXJhdGlvbiByZXByZXNlbnRpbmcgdGhlIGVuZCBvZiBhIGNvbnRhaW5lciBzdHJ1Y3R1cmUgaW4gdGhlIGNyZWF0aW9uIElSLlxuICpcbiAqIFBhaXJzIHdpdGggYW4gYENvbnRhaW5lclN0YXJ0YCBvcGVyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFpbmVyRW5kT3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4ge1xuICBraW5kOiBPcEtpbmQuQ29udGFpbmVyRW5kO1xuXG4gIC8qKlxuICAgKiBUaGUgYFhyZWZJZGAgb2YgdGhlIGVsZW1lbnQgZGVjbGFyZWQgdmlhIGBDb250YWluZXJTdGFydGAuXG4gICAqL1xuICB4cmVmOiBYcmVmSWQ7XG5cbiAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuO1xufVxuXG4vKipcbiAqIExvZ2ljYWwgb3BlcmF0aW9uIGNhdXNpbmcgYmluZGluZyB0byBiZSBkaXNhYmxlZCBpbiBkZXNjZW5kZW50cyBvZiBhIG5vbi1iaW5kYWJsZSBjb250YWluZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGlzYWJsZUJpbmRpbmdzT3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4ge1xuICBraW5kOiBPcEtpbmQuRGlzYWJsZUJpbmRpbmdzO1xuXG4gIC8qKlxuICAgKiBgWHJlZklkYCBvZiB0aGUgZWxlbWVudCB0aGF0IHdhcyBtYXJrZWQgbm9uLWJpbmRhYmxlLlxuICAgKi9cbiAgeHJlZjogWHJlZklkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGlzYWJsZUJpbmRpbmdzT3AoeHJlZjogWHJlZklkKTogRGlzYWJsZUJpbmRpbmdzT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5EaXNhYmxlQmluZGluZ3MsXG4gICAgeHJlZixcbiAgICAuLi5ORVdfT1AsXG4gIH07XG59XG5cbi8qKlxuICogTG9naWNhbCBvcGVyYXRpb24gY2F1c2luZyBiaW5kaW5nIHRvIGJlIHJlLWVuYWJsZWQgYWZ0ZXIgdmlzaXRpbmcgZGVzY2VuZGFudHMgb2YgYVxuICogbm9uLWJpbmRhYmxlIGNvbnRhaW5lci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmFibGVCaW5kaW5nc09wIGV4dGVuZHMgT3A8Q3JlYXRlT3A+IHtcbiAga2luZDogT3BLaW5kLkVuYWJsZUJpbmRpbmdzO1xuXG4gIC8qKlxuICAgKiBgWHJlZklkYCBvZiB0aGUgZWxlbWVudCB0aGF0IHdhcyBtYXJrZWQgbm9uLWJpbmRhYmxlLlxuICAgKi9cbiAgeHJlZjogWHJlZklkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRW5hYmxlQmluZGluZ3NPcCh4cmVmOiBYcmVmSWQpOiBFbmFibGVCaW5kaW5nc09wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuRW5hYmxlQmluZGluZ3MsXG4gICAgeHJlZixcbiAgICAuLi5ORVdfT1AsXG4gIH07XG59XG5cbi8qKlxuICogTG9naWNhbCBvcGVyYXRpb24gcmVwcmVzZW50aW5nIGEgdGV4dCBub2RlIGluIHRoZSBjcmVhdGlvbiBJUi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZXh0T3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4sIENvbnN1bWVzU2xvdE9wVHJhaXQge1xuICBraW5kOiBPcEtpbmQuVGV4dDtcblxuICAvKipcbiAgICogYFhyZWZJZGAgdXNlZCB0byByZWZlcmVuY2UgdGhpcyB0ZXh0IG5vZGUgaW4gb3RoZXIgSVIgc3RydWN0dXJlcy5cbiAgICovXG4gIHhyZWY6IFhyZWZJZDtcblxuICAvKipcbiAgICogVGhlIHN0YXRpYyBpbml0aWFsIHZhbHVlIG9mIHRoZSB0ZXh0IG5vZGUuXG4gICAqL1xuICBpbml0aWFsVmFsdWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBsYWNlaG9sZGVyIGZvciB0aGlzIHRleHQgaW4gaXRzIHBhcmVudCBJQ1UuIElmIHRoaXMgdGV4dCBpcyBub3QgcGFydCBvZiBhbiBJQ1UsIHRoZVxuICAgKiBwbGFjZWhvbGRlciBpcyBudWxsLlxuICAgKi9cbiAgaWN1UGxhY2Vob2xkZXI6IHN0cmluZ3xudWxsO1xuXG4gIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3BhbnxudWxsO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGBUZXh0T3BgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGV4dE9wKFxuICAgIHhyZWY6IFhyZWZJZCwgaW5pdGlhbFZhbHVlOiBzdHJpbmcsIGljdVBsYWNlaG9sZGVyOiBzdHJpbmd8bnVsbCxcbiAgICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW58bnVsbCk6IFRleHRPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLlRleHQsXG4gICAgeHJlZixcbiAgICBoYW5kbGU6IG5ldyBTbG90SGFuZGxlKCksXG4gICAgaW5pdGlhbFZhbHVlLFxuICAgIGljdVBsYWNlaG9sZGVyLFxuICAgIHNvdXJjZVNwYW4sXG4gICAgLi4uVFJBSVRfQ09OU1VNRVNfU0xPVCxcbiAgICAuLi5ORVdfT1AsXG4gIH07XG59XG5cbi8qKlxuICogTG9naWNhbCBvcGVyYXRpb24gcmVwcmVzZW50aW5nIGFuIGV2ZW50IGxpc3RlbmVyIG9uIGFuIGVsZW1lbnQgaW4gdGhlIGNyZWF0aW9uIElSLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpc3RlbmVyT3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4ge1xuICBraW5kOiBPcEtpbmQuTGlzdGVuZXI7XG5cbiAgdGFyZ2V0OiBYcmVmSWQ7XG4gIHRhcmdldFNsb3Q6IFNsb3RIYW5kbGU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBsaXN0ZW5lciBpcyBmcm9tIGEgaG9zdCBiaW5kaW5nLlxuICAgKi9cbiAgaG9zdExpc3RlbmVyOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBldmVudCB3aGljaCBpcyBiZWluZyBsaXN0ZW5lZCB0by5cbiAgICovXG4gIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGFnIG5hbWUgb2YgdGhlIGVsZW1lbnQgb24gd2hpY2ggdGhpcyBsaXN0ZW5lciBpcyBwbGFjZWQuIE1pZ2h0IGJlIG51bGwsIGlmIHRoaXMgbGlzdGVuZXJcbiAgICogYmVsb25ncyB0byBhIGhvc3QgYmluZGluZy5cbiAgICovXG4gIHRhZzogc3RyaW5nfG51bGw7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBgVXBkYXRlT3BgcyByZXByZXNlbnRpbmcgdGhlIGJvZHkgb2YgdGhlIGV2ZW50IGxpc3RlbmVyLlxuICAgKi9cbiAgaGFuZGxlck9wczogT3BMaXN0PFVwZGF0ZU9wPjtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgZnVuY3Rpb25cbiAgICovXG4gIGhhbmRsZXJGbk5hbWU6IHN0cmluZ3xudWxsO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgbGlzdGVuZXIgaXMga25vd24gdG8gY29uc3VtZSBgJGV2ZW50YCBpbiBpdHMgYm9keS5cbiAgICovXG4gIGNvbnN1bWVzRG9sbGFyRXZlbnQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGxpc3RlbmVyIGlzIGxpc3RlbmluZyBmb3IgYW4gYW5pbWF0aW9uIGV2ZW50LlxuICAgKi9cbiAgaXNBbmltYXRpb25MaXN0ZW5lcjogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGFuaW1hdGlvbiBwaGFzZSBvZiB0aGUgbGlzdGVuZXIuXG4gICAqL1xuICBhbmltYXRpb25QaGFzZTogc3RyaW5nfG51bGw7XG5cbiAgLyoqXG4gICAqIFNvbWUgZXZlbnQgbGlzdGVuZXJzIGNhbiBoYXZlIGEgdGFyZ2V0LCBlLmcuIGluIGBkb2N1bWVudDpkcmFnb3ZlcmAuXG4gICAqL1xuICBldmVudFRhcmdldDogc3RyaW5nfG51bGw7XG5cbiAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGBMaXN0ZW5lck9wYC4gSG9zdCBiaW5kaW5ncyByZXVzZSBhbGwgdGhlIGxpc3RlbmVyIGxvZ2ljLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTGlzdGVuZXJPcChcbiAgICB0YXJnZXQ6IFhyZWZJZCwgdGFyZ2V0U2xvdDogU2xvdEhhbmRsZSwgbmFtZTogc3RyaW5nLCB0YWc6IHN0cmluZ3xudWxsLFxuICAgIGhhbmRsZXJPcHM6IEFycmF5PFVwZGF0ZU9wPiwgYW5pbWF0aW9uUGhhc2U6IHN0cmluZ3xudWxsLCBldmVudFRhcmdldDogc3RyaW5nfG51bGwsXG4gICAgaG9zdExpc3RlbmVyOiBib29sZWFuLCBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pOiBMaXN0ZW5lck9wIHtcbiAgY29uc3QgaGFuZGxlckxpc3QgPSBuZXcgT3BMaXN0PFVwZGF0ZU9wPigpO1xuICBoYW5kbGVyTGlzdC5wdXNoKGhhbmRsZXJPcHMpO1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5MaXN0ZW5lcixcbiAgICB0YXJnZXQsXG4gICAgdGFyZ2V0U2xvdCxcbiAgICB0YWcsXG4gICAgaG9zdExpc3RlbmVyLFxuICAgIG5hbWUsXG4gICAgaGFuZGxlck9wczogaGFuZGxlckxpc3QsXG4gICAgaGFuZGxlckZuTmFtZTogbnVsbCxcbiAgICBjb25zdW1lc0RvbGxhckV2ZW50OiBmYWxzZSxcbiAgICBpc0FuaW1hdGlvbkxpc3RlbmVyOiBhbmltYXRpb25QaGFzZSAhPT0gbnVsbCxcbiAgICBhbmltYXRpb25QaGFzZSxcbiAgICBldmVudFRhcmdldCxcbiAgICBzb3VyY2VTcGFuLFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cblxuLyoqXG4gKiBMb2dpY2FsIG9wZXJhdGlvbiByZXByZXNlbnRpbmcgdGhlIGV2ZW50IHNpZGUgb2YgYSB0d28td2F5IGJpbmRpbmcgb24gYW4gZWxlbWVudFxuICogaW4gdGhlIGNyZWF0aW9uIElSLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFR3b1dheUxpc3RlbmVyT3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4ge1xuICBraW5kOiBPcEtpbmQuVHdvV2F5TGlzdGVuZXI7XG5cbiAgdGFyZ2V0OiBYcmVmSWQ7XG4gIHRhcmdldFNsb3Q6IFNsb3RIYW5kbGU7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGV2ZW50IHdoaWNoIGlzIGJlaW5nIGxpc3RlbmVkIHRvLlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUYWcgbmFtZSBvZiB0aGUgZWxlbWVudCBvbiB3aGljaCB0aGlzIGxpc3RlbmVyIGlzIHBsYWNlZC5cbiAgICovXG4gIHRhZzogc3RyaW5nfG51bGw7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBgVXBkYXRlT3BgcyByZXByZXNlbnRpbmcgdGhlIGJvZHkgb2YgdGhlIGV2ZW50IGxpc3RlbmVyLlxuICAgKi9cbiAgaGFuZGxlck9wczogT3BMaXN0PFVwZGF0ZU9wPjtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgZnVuY3Rpb25cbiAgICovXG4gIGhhbmRsZXJGbk5hbWU6IHN0cmluZ3xudWxsO1xuXG4gIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbjtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBgVHdvV2F5TGlzdGVuZXJPcGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUd29XYXlMaXN0ZW5lck9wKFxuICAgIHRhcmdldDogWHJlZklkLCB0YXJnZXRTbG90OiBTbG90SGFuZGxlLCBuYW1lOiBzdHJpbmcsIHRhZzogc3RyaW5nfG51bGwsXG4gICAgaGFuZGxlck9wczogQXJyYXk8VXBkYXRlT3A+LCBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pOiBUd29XYXlMaXN0ZW5lck9wIHtcbiAgY29uc3QgaGFuZGxlckxpc3QgPSBuZXcgT3BMaXN0PFVwZGF0ZU9wPigpO1xuICBoYW5kbGVyTGlzdC5wdXNoKGhhbmRsZXJPcHMpO1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5Ud29XYXlMaXN0ZW5lcixcbiAgICB0YXJnZXQsXG4gICAgdGFyZ2V0U2xvdCxcbiAgICB0YWcsXG4gICAgbmFtZSxcbiAgICBoYW5kbGVyT3BzOiBoYW5kbGVyTGlzdCxcbiAgICBoYW5kbGVyRm5OYW1lOiBudWxsLFxuICAgIHNvdXJjZVNwYW4sXG4gICAgLi4uTkVXX09QLFxuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBpcGVPcCBleHRlbmRzIE9wPENyZWF0ZU9wPiwgQ29uc3VtZXNTbG90T3BUcmFpdCB7XG4gIGtpbmQ6IE9wS2luZC5QaXBlO1xuICB4cmVmOiBYcmVmSWQ7XG4gIG5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBpcGVPcCh4cmVmOiBYcmVmSWQsIHNsb3Q6IFNsb3RIYW5kbGUsIG5hbWU6IHN0cmluZyk6IFBpcGVPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLlBpcGUsXG4gICAgeHJlZixcbiAgICBoYW5kbGU6IHNsb3QsXG4gICAgbmFtZSxcbiAgICAuLi5ORVdfT1AsXG4gICAgLi4uVFJBSVRfQ09OU1VNRVNfU0xPVCxcbiAgfTtcbn1cblxuLyoqXG4gKiBBbiBvcCBjb3JyZXNwb25kaW5nIHRvIGEgbmFtZXNwYWNlIGluc3RydWN0aW9uLCBmb3Igc3dpdGNoaW5nIGJldHdlZW4gSFRNTCwgU1ZHLCBhbmQgTWF0aE1MLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5hbWVzcGFjZU9wIGV4dGVuZHMgT3A8Q3JlYXRlT3A+IHtcbiAga2luZDogT3BLaW5kLk5hbWVzcGFjZTtcbiAgYWN0aXZlOiBOYW1lc3BhY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOYW1lc3BhY2VPcChuYW1lc3BhY2U6IE5hbWVzcGFjZSk6IE5hbWVzcGFjZU9wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuTmFtZXNwYWNlLFxuICAgIGFjdGl2ZTogbmFtZXNwYWNlLFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cblxuLyoqXG4gKiBBbiBvcCB0aGF0IGNyZWF0ZXMgYSBjb250ZW50IHByb2plY3Rpb24gc2xvdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9qZWN0aW9uRGVmT3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4ge1xuICBraW5kOiBPcEtpbmQuUHJvamVjdGlvbkRlZjtcblxuICAvLyBUaGUgcGFyc2VkIHNlbGVjdG9yIGluZm9ybWF0aW9uIGZvciB0aGlzIHByb2plY3Rpb24gZGVmLlxuICBkZWY6IG8uRXhwcmVzc2lvbnxudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUHJvamVjdGlvbkRlZk9wKGRlZjogby5FeHByZXNzaW9ufG51bGwpOiBQcm9qZWN0aW9uRGVmT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5Qcm9qZWN0aW9uRGVmLFxuICAgIGRlZixcbiAgICAuLi5ORVdfT1AsXG4gIH07XG59XG5cbi8qKlxuICogQW4gb3AgdGhhdCBjcmVhdGVzIGEgY29udGVudCBwcm9qZWN0aW9uIHNsb3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvamVjdGlvbk9wIGV4dGVuZHMgT3A8Q3JlYXRlT3A+LCBDb25zdW1lc1Nsb3RPcFRyYWl0IHtcbiAga2luZDogT3BLaW5kLlByb2plY3Rpb247XG5cbiAgeHJlZjogWHJlZklkO1xuXG4gIHByb2plY3Rpb25TbG90SW5kZXg6IG51bWJlcjtcblxuICBhdHRyaWJ1dGVzOiBudWxsfG8uTGl0ZXJhbEFycmF5RXhwcjtcblxuICBsb2NhbFJlZnM6IHN0cmluZ1tdO1xuXG4gIHNlbGVjdG9yOiBzdHJpbmc7XG5cbiAgaTE4blBsYWNlaG9sZGVyPzogaTE4bi5UYWdQbGFjZWhvbGRlcjtcblxuICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcm9qZWN0aW9uT3AoXG4gICAgeHJlZjogWHJlZklkLCBzZWxlY3Rvcjogc3RyaW5nLCBpMThuUGxhY2Vob2xkZXI6IGkxOG4uVGFnUGxhY2Vob2xkZXJ8dW5kZWZpbmVkLFxuICAgIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbik6IFByb2plY3Rpb25PcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLlByb2plY3Rpb24sXG4gICAgeHJlZixcbiAgICBoYW5kbGU6IG5ldyBTbG90SGFuZGxlKCksXG4gICAgc2VsZWN0b3IsXG4gICAgaTE4blBsYWNlaG9sZGVyLFxuICAgIHByb2plY3Rpb25TbG90SW5kZXg6IDAsXG4gICAgYXR0cmlidXRlczogbnVsbCxcbiAgICBsb2NhbFJlZnM6IFtdLFxuICAgIHNvdXJjZVNwYW4sXG4gICAgLi4uTkVXX09QLFxuICAgIC4uLlRSQUlUX0NPTlNVTUVTX1NMT1QsXG4gIH07XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBhdHRyaWJ1dGUgdGhhdCBoYXMgYmVlbiBleHRyYWN0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgY29uc3RzIGFycmF5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4dHJhY3RlZEF0dHJpYnV0ZU9wIGV4dGVuZHMgT3A8Q3JlYXRlT3A+IHtcbiAga2luZDogT3BLaW5kLkV4dHJhY3RlZEF0dHJpYnV0ZTtcblxuICAvKipcbiAgICogVGhlIGBYcmVmSWRgIG9mIHRoZSB0ZW1wbGF0ZS1saWtlIGVsZW1lbnQgdGhlIGV4dHJhY3RlZCBhdHRyaWJ1dGUgd2lsbCBiZWxvbmcgdG8uXG4gICAqL1xuICB0YXJnZXQ6IFhyZWZJZDtcblxuICAvKipcbiAgICogIFRoZSBraW5kIG9mIGJpbmRpbmcgcmVwcmVzZW50ZWQgYnkgdGhpcyBleHRyYWN0ZWQgYXR0cmlidXRlLlxuICAgKi9cbiAgYmluZGluZ0tpbmQ6IEJpbmRpbmdLaW5kO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZXNwYWNlIG9mIHRoZSBhdHRyaWJ1dGUgKG9yIG51bGwgaWYgbm9uZSkuXG4gICAqL1xuICBuYW1lc3BhY2U6IHN0cmluZ3xudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZXh0cmFjdGVkIGF0dHJpYnV0ZS5cbiAgICovXG4gIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZhbHVlIGV4cHJlc3Npb24gb2YgdGhlIGV4dHJhY3RlZCBhdHRyaWJ1dGUuXG4gICAqL1xuICBleHByZXNzaW9uOiBvLkV4cHJlc3Npb258bnVsbDtcblxuICAvKipcbiAgICogSWYgdGhpcyBhdHRyaWJ1dGUgaGFzIGEgY29ycmVzcG9uZGluZyBpMThuIGF0dHJpYnV0ZSAoZS5nLiBgaTE4bi1mb289XCJtOmRcImApLCB0aGVuIHRoaXMgaXMgdGhlXG4gICAqIGkxOG4gY29udGV4dCBmb3IgaXQuXG4gICAqL1xuICBpMThuQ29udGV4dDogWHJlZklkfG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBzZWN1cml0eSBjb250ZXh0IG9mIHRoZSBiaW5kaW5nLlxuICAgKi9cbiAgc2VjdXJpdHlDb250ZXh0OiBTZWN1cml0eUNvbnRleHR8U2VjdXJpdHlDb250ZXh0W107XG5cbiAgLyoqXG4gICAqIFRoZSB0cnVzdGVkIHZhbHVlIGZ1bmN0aW9uIGZvciB0aGlzIHByb3BlcnR5LlxuICAgKi9cbiAgdHJ1c3RlZFZhbHVlRm46IG8uRXhwcmVzc2lvbnxudWxsO1xuXG4gIGkxOG5NZXNzYWdlOiBpMThuLk1lc3NhZ2V8bnVsbDtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYW4gYEV4dHJhY3RlZEF0dHJpYnV0ZU9wYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUV4dHJhY3RlZEF0dHJpYnV0ZU9wKFxuICAgIHRhcmdldDogWHJlZklkLCBiaW5kaW5nS2luZDogQmluZGluZ0tpbmQsIG5hbWVzcGFjZTogc3RyaW5nfG51bGwsIG5hbWU6IHN0cmluZyxcbiAgICBleHByZXNzaW9uOiBvLkV4cHJlc3Npb258bnVsbCwgaTE4bkNvbnRleHQ6IFhyZWZJZHxudWxsLCBpMThuTWVzc2FnZTogaTE4bi5NZXNzYWdlfG51bGwsXG4gICAgc2VjdXJpdHlDb250ZXh0OiBTZWN1cml0eUNvbnRleHR8U2VjdXJpdHlDb250ZXh0W10pOiBFeHRyYWN0ZWRBdHRyaWJ1dGVPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLkV4dHJhY3RlZEF0dHJpYnV0ZSxcbiAgICB0YXJnZXQsXG4gICAgYmluZGluZ0tpbmQsXG4gICAgbmFtZXNwYWNlLFxuICAgIG5hbWUsXG4gICAgZXhwcmVzc2lvbixcbiAgICBpMThuQ29udGV4dCxcbiAgICBpMThuTWVzc2FnZSxcbiAgICBzZWN1cml0eUNvbnRleHQsXG4gICAgdHJ1c3RlZFZhbHVlRm46IG51bGwsXG4gICAgLi4uTkVXX09QLFxuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlZmVyT3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4sIENvbnN1bWVzU2xvdE9wVHJhaXQge1xuICBraW5kOiBPcEtpbmQuRGVmZXI7XG5cbiAgLyoqXG4gICAqIFRoZSB4cmVmIG9mIHRoaXMgZGVmZXIgb3AuXG4gICAqL1xuICB4cmVmOiBYcmVmSWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB4cmVmIG9mIHRoZSBtYWluIHZpZXcuXG4gICAqL1xuICBtYWluVmlldzogWHJlZklkO1xuXG4gIG1haW5TbG90OiBTbG90SGFuZGxlO1xuXG4gIC8qKlxuICAgKiBTZWNvbmRhcnkgbG9hZGluZyBibG9jayBhc3NvY2lhdGVkIHdpdGggdGhpcyBkZWZlciBvcC5cbiAgICovXG4gIGxvYWRpbmdWaWV3OiBYcmVmSWR8bnVsbDtcblxuICBsb2FkaW5nU2xvdDogU2xvdEhhbmRsZXxudWxsO1xuXG4gIC8qKlxuICAgKiBTZWNvbmRhcnkgcGxhY2Vob2xkZXIgYmxvY2sgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZGVmZXIgb3AuXG4gICAqL1xuICBwbGFjZWhvbGRlclZpZXc6IFhyZWZJZHxudWxsO1xuXG4gIHBsYWNlaG9sZGVyU2xvdDogU2xvdEhhbmRsZXxudWxsO1xuXG4gIC8qKlxuICAgKiBTZWNvbmRhcnkgZXJyb3IgYmxvY2sgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZGVmZXIgb3AuXG4gICAqL1xuICBlcnJvclZpZXc6IFhyZWZJZHxudWxsO1xuXG4gIGVycm9yU2xvdDogU2xvdEhhbmRsZXxudWxsO1xuXG4gIHBsYWNlaG9sZGVyTWluaW11bVRpbWU6IG51bWJlcnxudWxsO1xuICBsb2FkaW5nTWluaW11bVRpbWU6IG51bWJlcnxudWxsO1xuICBsb2FkaW5nQWZ0ZXJUaW1lOiBudW1iZXJ8bnVsbDtcblxuICBwbGFjZWhvbGRlckNvbmZpZzogby5FeHByZXNzaW9ufG51bGw7XG4gIGxvYWRpbmdDb25maWc6IG8uRXhwcmVzc2lvbnxudWxsO1xuXG4gIC8qKlxuICAgKiBNZXRhZGF0YSBhYm91dCB0aGlzIGRlZmVyIGJsb2NrLCBwcm92aWRlZCBieSB0aGUgcGFyc2VyLlxuICAgKi9cbiAgbWV0YWRhdGE6IFIzRGVmZXJCbG9ja01ldGFkYXRhO1xuXG4gIC8qKlxuICAgKiBBZnRlciBwcm9jZXNzaW5nLCB0aGUgcmVzb2x2ZXIgZnVuY3Rpb24gZm9yIHRoZSBkZWZlciBkZXBzIHdpbGwgYmUgZXh0cmFjdGVkIHRvIHRoZSBjb25zdGFudFxuICAgKiBwb29sLCBhbmQgYSByZWZlcmVuY2UgdG8gdGhhdCBmdW5jdGlvbiB3aWxsIGJlIHBvcHVsYXRlZCBoZXJlLlxuICAgKi9cbiAgcmVzb2x2ZXJGbjogby5FeHByZXNzaW9ufG51bGw7XG5cbiAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGVmZXJPcChcbiAgICB4cmVmOiBYcmVmSWQsIG1haW46IFhyZWZJZCwgbWFpblNsb3Q6IFNsb3RIYW5kbGUsIG1ldGFkYXRhOiBSM0RlZmVyQmxvY2tNZXRhZGF0YSxcbiAgICByZXNvbHZlckZuOiBvLkV4cHJlc3Npb258bnVsbCwgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKTogRGVmZXJPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLkRlZmVyLFxuICAgIHhyZWYsXG4gICAgaGFuZGxlOiBuZXcgU2xvdEhhbmRsZSgpLFxuICAgIG1haW5WaWV3OiBtYWluLFxuICAgIG1haW5TbG90LFxuICAgIGxvYWRpbmdWaWV3OiBudWxsLFxuICAgIGxvYWRpbmdTbG90OiBudWxsLFxuICAgIGxvYWRpbmdDb25maWc6IG51bGwsXG4gICAgbG9hZGluZ01pbmltdW1UaW1lOiBudWxsLFxuICAgIGxvYWRpbmdBZnRlclRpbWU6IG51bGwsXG4gICAgcGxhY2Vob2xkZXJWaWV3OiBudWxsLFxuICAgIHBsYWNlaG9sZGVyU2xvdDogbnVsbCxcbiAgICBwbGFjZWhvbGRlckNvbmZpZzogbnVsbCxcbiAgICBwbGFjZWhvbGRlck1pbmltdW1UaW1lOiBudWxsLFxuICAgIGVycm9yVmlldzogbnVsbCxcbiAgICBlcnJvclNsb3Q6IG51bGwsXG4gICAgbWV0YWRhdGEsXG4gICAgcmVzb2x2ZXJGbixcbiAgICBzb3VyY2VTcGFuLFxuICAgIC4uLk5FV19PUCxcbiAgICAuLi5UUkFJVF9DT05TVU1FU19TTE9ULFxuICAgIG51bVNsb3RzVXNlZDogMixcbiAgfTtcbn1cbmludGVyZmFjZSBEZWZlclRyaWdnZXJCYXNlIHtcbiAga2luZDogRGVmZXJUcmlnZ2VyS2luZDtcbn1cblxuaW50ZXJmYWNlIERlZmVyVHJpZ2dlcldpdGhUYXJnZXRCYXNlIGV4dGVuZHMgRGVmZXJUcmlnZ2VyQmFzZSB7XG4gIHRhcmdldE5hbWU6IHN0cmluZ3xudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgWHJlZiBvZiB0aGUgdGFyZ2V0ZWQgbmFtZS4gTWF5IGJlIGluIGEgZGlmZmVyZW50IHZpZXcuXG4gICAqL1xuICB0YXJnZXRYcmVmOiBYcmVmSWR8bnVsbDtcblxuICAvKipcbiAgICogVGhlIHNsb3QgaW5kZXggb2YgdGhlIG5hbWVkIHJlZmVyZW5jZSwgaW5zaWRlIHRoZSB2aWV3IHByb3ZpZGVkIGJlbG93LiBUaGlzIHNsb3QgbWF5IG5vdCBiZVxuICAgKiBpbnNpZGUgdGhlIGN1cnJlbnQgdmlldywgYW5kIGlzIGhhbmRsZWQgc3BlY2lhbGx5IGFzIGEgcmVzdWx0LlxuICAgKi9cbiAgdGFyZ2V0U2xvdDogU2xvdEhhbmRsZXxudWxsO1xuXG4gIHRhcmdldFZpZXc6IFhyZWZJZHxudWxsO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2Ygc3RlcHMgdG8gd2FsayB1cCBvciBkb3duIHRoZSB2aWV3IHRyZWUgdG8gZmluZCB0aGUgdGFyZ2V0IGxvY2FsUmVmLlxuICAgKi9cbiAgdGFyZ2V0U2xvdFZpZXdTdGVwczogbnVtYmVyfG51bGw7XG59XG5cbmludGVyZmFjZSBEZWZlcklkbGVUcmlnZ2VyIGV4dGVuZHMgRGVmZXJUcmlnZ2VyQmFzZSB7XG4gIGtpbmQ6IERlZmVyVHJpZ2dlcktpbmQuSWRsZTtcbn1cblxuaW50ZXJmYWNlIERlZmVySW1tZWRpYXRlVHJpZ2dlciBleHRlbmRzIERlZmVyVHJpZ2dlckJhc2Uge1xuICBraW5kOiBEZWZlclRyaWdnZXJLaW5kLkltbWVkaWF0ZTtcbn1cblxuaW50ZXJmYWNlIERlZmVySG92ZXJUcmlnZ2VyIGV4dGVuZHMgRGVmZXJUcmlnZ2VyV2l0aFRhcmdldEJhc2Uge1xuICBraW5kOiBEZWZlclRyaWdnZXJLaW5kLkhvdmVyO1xufVxuXG5pbnRlcmZhY2UgRGVmZXJUaW1lclRyaWdnZXIgZXh0ZW5kcyBEZWZlclRyaWdnZXJCYXNlIHtcbiAga2luZDogRGVmZXJUcmlnZ2VyS2luZC5UaW1lcjtcblxuICBkZWxheTogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgRGVmZXJJbnRlcmFjdGlvblRyaWdnZXIgZXh0ZW5kcyBEZWZlclRyaWdnZXJXaXRoVGFyZ2V0QmFzZSB7XG4gIGtpbmQ6IERlZmVyVHJpZ2dlcktpbmQuSW50ZXJhY3Rpb247XG59XG5cbmludGVyZmFjZSBEZWZlclZpZXdwb3J0VHJpZ2dlciBleHRlbmRzIERlZmVyVHJpZ2dlcldpdGhUYXJnZXRCYXNlIHtcbiAga2luZDogRGVmZXJUcmlnZ2VyS2luZC5WaWV3cG9ydDtcbn1cblxuLyoqXG4gKiBUaGUgdW5pb24gdHlwZSBvZiBhbGwgZGVmZXIgdHJpZ2dlciBpbnRlcmZhY2VzLlxuICovXG5leHBvcnQgdHlwZSBEZWZlclRyaWdnZXIgPSBEZWZlcklkbGVUcmlnZ2VyfERlZmVySW1tZWRpYXRlVHJpZ2dlcnxEZWZlclRpbWVyVHJpZ2dlcnxcbiAgICBEZWZlckhvdmVyVHJpZ2dlcnxEZWZlckludGVyYWN0aW9uVHJpZ2dlcnxEZWZlclZpZXdwb3J0VHJpZ2dlcjtcblxuZXhwb3J0IGludGVyZmFjZSBEZWZlck9uT3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4ge1xuICBraW5kOiBPcEtpbmQuRGVmZXJPbjtcblxuICBkZWZlcjogWHJlZklkO1xuXG4gIC8qKlxuICAgKiBUaGUgdHJpZ2dlciBmb3IgdGhpcyBkZWZlciBvcCAoZS5nLiBpZGxlLCBob3ZlciwgZXRjKS5cbiAgICovXG4gIHRyaWdnZXI6IERlZmVyVHJpZ2dlcjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBlbWl0IHRoZSBwcmVmZXRjaCB2ZXJzaW9uIG9mIHRoZSBpbnN0cnVjdGlvbi5cbiAgICovXG4gIHByZWZldGNoOiBib29sZWFuO1xuXG4gIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlZmVyT25PcChcbiAgICBkZWZlcjogWHJlZklkLCB0cmlnZ2VyOiBEZWZlclRyaWdnZXIsIHByZWZldGNoOiBib29sZWFuLFxuICAgIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbik6IERlZmVyT25PcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLkRlZmVyT24sXG4gICAgZGVmZXIsXG4gICAgdHJpZ2dlcixcbiAgICBwcmVmZXRjaCxcbiAgICBzb3VyY2VTcGFuLFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2luZ2xlIHZhbHVlIGluIGFuIGkxOG4gcGFyYW0gbWFwLiBFYWNoIHBsYWNlaG9sZGVyIGluIHRoZSBtYXAgbWF5IGhhdmUgbXVsdGlwbGUgb2ZcbiAqIHRoZXNlIHZhbHVlcyBhc3NvY2lhdGVkIHdpdGggaXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSTE4blBhcmFtVmFsdWUge1xuICAvKipcbiAgICogVGhlIHZhbHVlLiBUaGlzIGNhbiBiZSBlaXRoZXIgYSBzbG90IG51bWJlciwgc3BlY2lhbCBzdHJpbmcsIG9yIGNvbXBvdW5kLXZhbHVlIGNvbnNpc3Rpbmcgb2YgYW5cbiAgICogZWxlbWVudCBzbG90IG51bWJlciBhbmQgdGVtcGxhdGUgc2xvdCBudW1iZXIuXG4gICAqL1xuICB2YWx1ZTogc3RyaW5nfG51bWJlcnx7ZWxlbWVudDogbnVtYmVyLCB0ZW1wbGF0ZTogbnVtYmVyfTtcblxuICAvKipcbiAgICogVGhlIHN1Yi10ZW1wbGF0ZSBpbmRleCBhc3NvY2lhdGVkIHdpdGggdGhlIHZhbHVlLlxuICAgKi9cbiAgc3ViVGVtcGxhdGVJbmRleDogbnVtYmVyfG51bGw7XG5cbiAgLyoqXG4gICAqIEZsYWdzIGFzc29jaWF0ZWQgd2l0aCB0aGUgdmFsdWUuXG4gICAqL1xuICBmbGFnczogSTE4blBhcmFtVmFsdWVGbGFncztcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIGkxOG4gbWVzc2FnZSB0aGF0IGhhcyBiZWVuIGV4dHJhY3RlZCBmb3IgaW5jbHVzaW9uIGluIHRoZSBjb25zdHMgYXJyYXkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSTE4bk1lc3NhZ2VPcCBleHRlbmRzIE9wPENyZWF0ZU9wPiB7XG4gIGtpbmQ6IE9wS2luZC5JMThuTWVzc2FnZTtcblxuICAvKipcbiAgICogQW4gaWQgdXNlZCB0byByZWZlcmVuY2UgdGhpcyBtZXNzYWdlLlxuICAgKi9cbiAgeHJlZjogWHJlZklkO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGV4dCBmcm9tIHdoaWNoIHRoaXMgbWVzc2FnZSB3YXMgZXh0cmFjdGVkXG4gICAqIFRPRE86IHJlbW92ZSB0aGlzLCBhbmQgYWRkIGFub3RoZXIgcHJvcGVydHkgaGVyZSBpbnN0ZWFkIHRvIG1hdGNoIEV4dHJhY3RlZEF0dHJpYnV0ZXNcbiAgICovXG4gIGkxOG5Db250ZXh0OiBYcmVmSWQ7XG5cbiAgLyoqXG4gICAqIEEgcmVmZXJlbmNlIHRvIHRoZSBpMThuIG9wIHRoaXMgbWVzc2FnZSB3YXMgZXh0cmFjdGVkIGZyb20uXG4gICAqXG4gICAqIFRoaXMgbWlnaHQgYmUgbnVsbCwgd2hpY2ggbWVhbnMgdGhpcyBtZXNzYWdlIGlzIG5vdCBhc3NvY2lhdGVkIHdpdGggYSBibG9jay4gVGhpcyBwcm9iYWJseVxuICAgKiBtZWFucyBpdCBpcyBhbiBpMThuIGF0dHJpYnV0ZSdzIG1lc3NhZ2UuXG4gICAqL1xuICBpMThuQmxvY2s6IFhyZWZJZHxudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgaTE4biBtZXNzYWdlIHJlcHJlc2VudGVkIGJ5IHRoaXMgb3AuXG4gICAqL1xuICBtZXNzYWdlOiBpMThuLk1lc3NhZ2U7XG5cbiAgLyoqXG4gICAqIFRoZSBwbGFjZWhvbGRlciB1c2VkIGZvciB0aGlzIG1lc3NhZ2Ugd2hlbiBpdCBpcyByZWZlcmVuY2VkIGluIGFub3RoZXIgbWVzc2FnZS5cbiAgICogRm9yIGEgdG9wLWxldmVsIG1lc3NhZ2UgdGhhdCBpc24ndCByZWZlcmVuY2VkIGZyb20gYW5vdGhlciBtZXNzYWdlLCB0aGlzIHdpbGwgYmUgbnVsbC5cbiAgICovXG4gIG1lc3NhZ2VQbGFjZWhvbGRlcjogc3RyaW5nfG51bGw7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBtZXNzYWdlIG5lZWRzIHBvc3QtcHJvY2Vzc2luZy5cbiAgICovXG4gIG5lZWRzUG9zdHByb2Nlc3Npbmc6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwYXJhbSBtYXAsIHdpdGggcGxhY2Vob2xkZXJzIHJlcHJlc2VudGVkIGFzIGFuIGBFeHByZXNzaW9uYC5cbiAgICovXG4gIHBhcmFtczogTWFwPHN0cmluZywgby5FeHByZXNzaW9uPjtcblxuICAvKipcbiAgICogVGhlIHBvc3QtcHJvY2Vzc2luZyBwYXJhbSBtYXAsIHdpdGggcGxhY2Vob2xkZXJzIHJlcHJlc2VudGVkIGFzIGFuIGBFeHByZXNzaW9uYC5cbiAgICovXG4gIHBvc3Rwcm9jZXNzaW5nUGFyYW1zOiBNYXA8c3RyaW5nLCBvLkV4cHJlc3Npb24+O1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2Ygc3ViLW1lc3NhZ2VzIHRoYXQgYXJlIHJlZmVyZW5jZWQgYnkgdGhpcyBtZXNzYWdlLlxuICAgKi9cbiAgc3ViTWVzc2FnZXM6IFhyZWZJZFtdO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhbiBgRXh0cmFjdGVkTWVzc2FnZU9wYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUkxOG5NZXNzYWdlT3AoXG4gICAgeHJlZjogWHJlZklkLCBpMThuQ29udGV4dDogWHJlZklkLCBpMThuQmxvY2s6IFhyZWZJZHxudWxsLCBtZXNzYWdlOiBpMThuLk1lc3NhZ2UsXG4gICAgbWVzc2FnZVBsYWNlaG9sZGVyOiBzdHJpbmd8bnVsbCwgcGFyYW1zOiBNYXA8c3RyaW5nLCBvLkV4cHJlc3Npb24+LFxuICAgIHBvc3Rwcm9jZXNzaW5nUGFyYW1zOiBNYXA8c3RyaW5nLCBvLkV4cHJlc3Npb24+LCBuZWVkc1Bvc3Rwcm9jZXNzaW5nOiBib29sZWFuKTogSTE4bk1lc3NhZ2VPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLkkxOG5NZXNzYWdlLFxuICAgIHhyZWYsXG4gICAgaTE4bkNvbnRleHQsXG4gICAgaTE4bkJsb2NrLFxuICAgIG1lc3NhZ2UsXG4gICAgbWVzc2FnZVBsYWNlaG9sZGVyLFxuICAgIHBhcmFtcyxcbiAgICBwb3N0cHJvY2Vzc2luZ1BhcmFtcyxcbiAgICBuZWVkc1Bvc3Rwcm9jZXNzaW5nLFxuICAgIHN1Yk1lc3NhZ2VzOiBbXSxcbiAgICAuLi5ORVdfT1AsXG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSTE4bk9wQmFzZSBleHRlbmRzIE9wPENyZWF0ZU9wPiwgQ29uc3VtZXNTbG90T3BUcmFpdCB7XG4gIGtpbmQ6IE9wS2luZC5JMThuU3RhcnR8T3BLaW5kLkkxOG47XG5cbiAgLyoqXG4gICAqIGBYcmVmSWRgIGFsbG9jYXRlZCBmb3IgdGhpcyBpMThuIGJsb2NrLlxuICAgKi9cbiAgeHJlZjogWHJlZklkO1xuXG4gIC8qKlxuICAgKiBBIHJlZmVyZW5jZSB0byB0aGUgcm9vdCBpMThuIGJsb2NrIHRoYXQgdGhpcyBvbmUgYmVsb25ncyB0by4gRm9yIGEgcm9vdCBpMThuIGJsb2NrLCB0aGlzIGlzXG4gICAqIHRoZSBzYW1lIGFzIHhyZWYuXG4gICAqL1xuICByb290OiBYcmVmSWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBpMThuIG1ldGFkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG9wLlxuICAgKi9cbiAgbWVzc2FnZTogaTE4bi5NZXNzYWdlO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5kZXggaW4gdGhlIGNvbnN0cyBhcnJheSB3aGVyZSB0aGUgbWVzc2FnZSBpMThuIG1lc3NhZ2UgaXMgc3RvcmVkLlxuICAgKi9cbiAgbWVzc2FnZUluZGV4OiBDb25zdEluZGV4fG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBpbmRleCBvZiB0aGlzIHN1Yi1ibG9jayBpbiB0aGUgaTE4biBtZXNzYWdlLiBGb3IgYSByb290IGkxOG4gYmxvY2ssIHRoaXMgaXMgbnVsbC5cbiAgICovXG4gIHN1YlRlbXBsYXRlSW5kZXg6IG51bWJlcnxudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgaTE4biBjb250ZXh0IGdlbmVyYXRlZCBmcm9tIHRoaXMgYmxvY2suIEluaXRpYWxseSBudWxsLCB1bnRpbCB0aGUgY29udGV4dCBpcyBjcmVhdGVkLlxuICAgKi9cbiAgY29udGV4dDogWHJlZklkfG51bGw7XG5cbiAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFufG51bGw7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBlbXB0eSBpMThuIGJsb2NrLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEkxOG5PcCBleHRlbmRzIEkxOG5PcEJhc2Uge1xuICBraW5kOiBPcEtpbmQuSTE4bjtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBzdGFydCBvZiBhbiBpMThuIGJsb2NrLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEkxOG5TdGFydE9wIGV4dGVuZHMgSTE4bk9wQmFzZSB7XG4gIGtpbmQ6IE9wS2luZC5JMThuU3RhcnQ7XG59XG5cbi8qKlxuICogQ3JlYXRlIGFuIGBJMThuU3RhcnRPcGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJMThuU3RhcnRPcChcbiAgICB4cmVmOiBYcmVmSWQsIG1lc3NhZ2U6IGkxOG4uTWVzc2FnZSwgcm9vdDogWHJlZklkfHVuZGVmaW5lZCxcbiAgICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW58bnVsbCk6IEkxOG5TdGFydE9wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuSTE4blN0YXJ0LFxuICAgIHhyZWYsXG4gICAgaGFuZGxlOiBuZXcgU2xvdEhhbmRsZSgpLFxuICAgIHJvb3Q6IHJvb3QgPz8geHJlZixcbiAgICBtZXNzYWdlLFxuICAgIG1lc3NhZ2VJbmRleDogbnVsbCxcbiAgICBzdWJUZW1wbGF0ZUluZGV4OiBudWxsLFxuICAgIGNvbnRleHQ6IG51bGwsXG4gICAgc291cmNlU3BhbixcbiAgICAuLi5ORVdfT1AsXG4gICAgLi4uVFJBSVRfQ09OU1VNRVNfU0xPVCxcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBlbmQgb2YgYW4gaTE4biBibG9jay5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJMThuRW5kT3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4ge1xuICBraW5kOiBPcEtpbmQuSTE4bkVuZDtcblxuICAvKipcbiAgICogVGhlIGBYcmVmSWRgIG9mIHRoZSBgSTE4blN0YXJ0T3BgIHRoYXQgY3JlYXRlZCB0aGlzIGJsb2NrLlxuICAgKi9cbiAgeHJlZjogWHJlZklkO1xuXG4gIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3BhbnxudWxsO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhbiBgSTE4bkVuZE9wYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUkxOG5FbmRPcCh4cmVmOiBYcmVmSWQsIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3BhbnxudWxsKTogSTE4bkVuZE9wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuSTE4bkVuZCxcbiAgICB4cmVmLFxuICAgIHNvdXJjZVNwYW4sXG4gICAgLi4uTkVXX09QLFxuICB9O1xufVxuXG4vKipcbiAqIEFuIG9wIHRoYXQgcmVwcmVzZW50cyB0aGUgc3RhcnQgb2YgYW4gSUNVIGV4cHJlc3Npb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSWN1U3RhcnRPcCBleHRlbmRzIE9wPENyZWF0ZU9wPiB7XG4gIGtpbmQ6IE9wS2luZC5JY3VTdGFydDtcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBJQ1UuXG4gICAqL1xuICB4cmVmOiBYcmVmSWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBpMThuIG1lc3NhZ2UgZm9yIHRoaXMgSUNVLlxuICAgKi9cbiAgbWVzc2FnZTogaTE4bi5NZXNzYWdlO1xuXG4gIC8qKlxuICAgKiBQbGFjZWhvbGRlciB1c2VkIHRvIHJlZmVyZW5jZSB0aGlzIElDVSBpbiBvdGhlciBpMThuIG1lc3NhZ2VzLlxuICAgKi9cbiAgbWVzc2FnZVBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgcmVmZXJlbmNlIHRvIHRoZSBpMThuIGNvbnRleHQgZm9yIHRoaXMgb3AuIEluaXRpYWxseSBudWxsLCB1bnRpbCB0aGUgY29udGV4dCBpcyBjcmVhdGVkLlxuICAgKi9cbiAgY29udGV4dDogWHJlZklkfG51bGw7XG5cbiAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gSUNVIHN0YXJ0IG9wLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSWN1U3RhcnRPcChcbiAgICB4cmVmOiBYcmVmSWQsIG1lc3NhZ2U6IGkxOG4uTWVzc2FnZSwgbWVzc2FnZVBsYWNlaG9sZGVyOiBzdHJpbmcsXG4gICAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKTogSWN1U3RhcnRPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLkljdVN0YXJ0LFxuICAgIHhyZWYsXG4gICAgbWVzc2FnZSxcbiAgICBtZXNzYWdlUGxhY2Vob2xkZXIsXG4gICAgY29udGV4dDogbnVsbCxcbiAgICBzb3VyY2VTcGFuLFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cblxuLyoqXG4gKiBBbiBvcCB0aGF0IHJlcHJlc2VudHMgdGhlIGVuZCBvZiBhbiBJQ1UgZXhwcmVzc2lvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJY3VFbmRPcCBleHRlbmRzIE9wPENyZWF0ZU9wPiB7XG4gIGtpbmQ6IE9wS2luZC5JY3VFbmQ7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgY29ycmVzcG9uZGluZyBJY3VTdGFydE9wLlxuICAgKi9cbiAgeHJlZjogWHJlZklkO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gSUNVIGVuZCBvcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUljdUVuZE9wKHhyZWY6IFhyZWZJZCk6IEljdUVuZE9wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuSWN1RW5kLFxuICAgIHhyZWYsXG4gICAgLi4uTkVXX09QLFxuICB9O1xufVxuXG4vKipcbiAqIEFuIG9wIHRoYXQgcmVwcmVzZW50cyBhIHBsYWNlaG9sZGVyIGluIGFuIElDVSBleHByZXNzaW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEljdVBsYWNlaG9sZGVyT3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4ge1xuICBraW5kOiBPcEtpbmQuSWN1UGxhY2Vob2xkZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgSUNVIHBsYWNlaG9sZGVyLlxuICAgKi9cbiAgeHJlZjogWHJlZklkO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcGxhY2Vob2xkZXIgaW4gdGhlIElDVSBleHByZXNzaW9uLlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhdGljIHN0cmluZ3MgdG8gYmUgY29tYmluZWQgd2l0aCBkeW5hbWljIGV4cHJlc3Npb24gdmFsdWVzIHRvIGZvcm0gdGhlIHRleHQuIFRoaXMgd29ya3NcbiAgICogbGlrZSBpbnRlcnBvbGF0aW9uLCBidXQgdGhlIHN0cmluZ3MgYXJlIGNvbWJpbmVkIGF0IGNvbXBpbGUgdGltZSwgdXNpbmcgc3BlY2lhbCBwbGFjZWhvbGRlcnNcbiAgICogZm9yIHRoZSBkeW5hbWljIGV4cHJlc3Npb25zLCBhbmQgcHV0IGludG8gdGhlIHRyYW5zbGF0ZWQgbWVzc2FnZS5cbiAgICovXG4gIHN0cmluZ3M6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBQbGFjZWhvbGRlciB2YWx1ZXMgZm9yIHRoZSBpMThuIGV4cHJlc3Npb25zIHRvIGJlIGNvbWJpbmVkIHdpdGggdGhlIHN0YXRpYyBzdHJpbmdzIHRvIGZvcm0gdGhlXG4gICAqIGZ1bGwgcGxhY2Vob2xkZXIgdmFsdWUuXG4gICAqL1xuICBleHByZXNzaW9uUGxhY2Vob2xkZXJzOiBJMThuUGFyYW1WYWx1ZVtdO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gSUNVIHBsYWNlaG9sZGVyIG9wLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSWN1UGxhY2Vob2xkZXJPcChcbiAgICB4cmVmOiBYcmVmSWQsIG5hbWU6IHN0cmluZywgc3RyaW5nczogc3RyaW5nW10pOiBJY3VQbGFjZWhvbGRlck9wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuSWN1UGxhY2Vob2xkZXIsXG4gICAgeHJlZixcbiAgICBuYW1lLFxuICAgIHN0cmluZ3MsXG4gICAgZXhwcmVzc2lvblBsYWNlaG9sZGVyczogW10sXG4gICAgLi4uTkVXX09QLFxuICB9O1xufVxuXG4vKipcbiAqIEFuIGkxOG4gY29udGV4dCB0aGF0IGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSB0cmFuc2xhdGVkIGkxOG4gbWVzc2FnZS4gQSBzZXBhcmF0ZSBjb250ZXh0IGlzIGNyZWF0ZWRcbiAqIGZvciB0aHJlZSBkaWZmZXJlbnQgc2NlbmFyaW9zOlxuICpcbiAqIDEuIEZvciBlYWNoIHRvcC1sZXZlbCBpMThuIGJsb2NrLlxuICogMi4gRm9yIGVhY2ggSUNVIHJlZmVyZW5jZWQgYXMgYSBzdWItbWVzc2FnZS4gSUNVcyB0aGF0IGFyZSByZWZlcmVuY2VkIGFzIGEgc3ViLW1lc3NhZ2Ugd2lsbCBiZVxuICogICAgdXNlZCB0byBnZW5lcmF0ZSBhIHNlcGFyYXRlIGkxOG4gbWVzc2FnZSwgYnV0IHdpbGwgbm90IGJlIGV4dHJhY3RlZCBkaXJlY3RseSBpbnRvIHRoZSBjb25zdHNcbiAqICAgIGFycmF5LiBJbnN0ZWFkIHRoZXkgd2lsbCBiZSBwdWxsZWQgaW4gYXMgcGFydCBvZiB0aGUgaW5pdGlhbGl6YXRpb24gc3RhdGVtZW50cyBmb3IgdGhlIG1lc3NhZ2VcbiAqICAgIHRoYXQgcmVmZXJlbmNlcyB0aGVtLlxuICogMy4gRm9yIGVhY2ggaTE4biBhdHRyaWJ1dGUuXG4gKlxuICogQ2hpbGQgaTE4biBibG9ja3MsIHJlc3VsdGluZyBmcm9tIHRoZSB1c2Ugb2YgYW4gbmctdGVtcGxhdGUgaW5zaWRlIG9mIGEgcGFyZW50IGkxOG4gYmxvY2ssIGRvIG5vdFxuICogZ2VuZXJhdGUgYSBzZXBhcmF0ZSBjb250ZXh0LiBJbnN0ZWFkIHRoZWlyIGNvbnRlbnQgaXMgaW5jbHVkZWQgaW4gdGhlIHRyYW5zbGF0ZWQgbWVzc2FnZSBmb3JcbiAqIHRoZWlyIHJvb3QgYmxvY2suXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSTE4bkNvbnRleHRPcCBleHRlbmRzIE9wPENyZWF0ZU9wPiB7XG4gIGtpbmQ6IE9wS2luZC5JMThuQ29udGV4dDtcblxuICBjb250ZXh0S2luZDogSTE4bkNvbnRleHRLaW5kO1xuXG4gIC8qKlxuICAgKiBUaGUgaWQgb2YgdGhpcyBjb250ZXh0LlxuICAgKi9cbiAgeHJlZjogWHJlZklkO1xuXG4gIC8qKlxuICAgKiBBIHJlZmVyZW5jZSB0byB0aGUgSTE4blN0YXJ0T3Agb3IgSTE4bk9wIHRoaXMgY29udGV4dCBiZWxvbmdzIHRvLlxuICAgKlxuICAgKiBJdCBpcyBwb3NzaWJsZSBmb3IgbXVsdGlwbGUgY29udGV4dHMgdG8gYmVsb25nIHRvIHRoZSBzYW1lIGJsb2NrLCBzaW5jZSBib3RoIHRoZSBibG9jayBhbmQgYW55XG4gICAqIElDVXMgaW5zaWRlIHRoZSBibG9jayB3aWxsIGVhY2ggZ2V0IHRoZWlyIG93biBjb250ZXh0LlxuICAgKlxuICAgKiBUaGlzIG1pZ2h0IGJlIGBudWxsYCwgaW4gd2hpY2ggY2FzZSB0aGUgY29udGV4dCBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGFuIGkxOG4gYmxvY2suIFRoaXNcbiAgICogcHJvYmFibHkgbWVhbnMgdGhhdCBpdCBiZWxvbmdzIHRvIGFuIGkxOG4gYXR0cmlidXRlLlxuICAgKi9cbiAgaTE4bkJsb2NrOiBYcmVmSWR8bnVsbDtcblxuICAvKipcbiAgICogVGhlIGkxOG4gbWVzc2FnZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb250ZXh0LlxuICAgKi9cbiAgbWVzc2FnZTogaTE4bi5NZXNzYWdlO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFyYW0gbWFwIGZvciB0aGlzIGNvbnRleHQuXG4gICAqL1xuICBwYXJhbXM6IE1hcDxzdHJpbmcsIEkxOG5QYXJhbVZhbHVlW10+O1xuXG4gIC8qKlxuICAgKiBUaGUgcG9zdC1wcm9jZXNzaW5nIHBhcmFtIG1hcCBmb3IgdGhpcyBjb250ZXh0LlxuICAgKi9cbiAgcG9zdHByb2Nlc3NpbmdQYXJhbXM6IE1hcDxzdHJpbmcsIEkxOG5QYXJhbVZhbHVlW10+O1xuXG4gIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUkxOG5Db250ZXh0T3AoXG4gICAgY29udGV4dEtpbmQ6IEkxOG5Db250ZXh0S2luZCwgeHJlZjogWHJlZklkLCBpMThuQmxvY2s6IFhyZWZJZHxudWxsLCBtZXNzYWdlOiBpMThuLk1lc3NhZ2UsXG4gICAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKTogSTE4bkNvbnRleHRPcCB7XG4gIGlmIChpMThuQmxvY2sgPT09IG51bGwgJiYgY29udGV4dEtpbmQgIT09IEkxOG5Db250ZXh0S2luZC5BdHRyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdBc3NlcnRpb25FcnJvcjogaTE4bkJsb2NrIG11c3QgYmUgcHJvdmlkZWQgZm9yIG5vbi1hdHRyaWJ1dGUgY29udGV4dHMuJyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5JMThuQ29udGV4dCxcbiAgICBjb250ZXh0S2luZCxcbiAgICB4cmVmLFxuICAgIGkxOG5CbG9jayxcbiAgICBtZXNzYWdlLFxuICAgIHNvdXJjZVNwYW4sXG4gICAgcGFyYW1zOiBuZXcgTWFwKCksXG4gICAgcG9zdHByb2Nlc3NpbmdQYXJhbXM6IG5ldyBNYXAoKSxcbiAgICAuLi5ORVdfT1AsXG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSTE4bkF0dHJpYnV0ZXNPcCBleHRlbmRzIE9wPENyZWF0ZU9wPiwgQ29uc3VtZXNTbG90T3BUcmFpdCB7XG4gIGtpbmQ6IE9wS2luZC5JMThuQXR0cmlidXRlcztcblxuICAvKipcbiAgICogVGhlIGVsZW1lbnQgdGFyZ2V0ZWQgYnkgdGhlc2UgYXR0cmlidXRlcy5cbiAgICovXG4gIHRhcmdldDogWHJlZklkO1xuXG4gIC8qKlxuICAgKiBJMThuQXR0cmlidXRlcyBpbnN0cnVjdGlvbnMgY29ycmVzcG9uZCB0byBhIGNvbnN0IGFycmF5IHdpdGggY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi5cbiAgICovXG4gIGkxOG5BdHRyaWJ1dGVzQ29uZmlnOiBDb25zdEluZGV4fG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJMThuQXR0cmlidXRlc09wKFxuICAgIHhyZWY6IFhyZWZJZCwgaGFuZGxlOiBTbG90SGFuZGxlLCB0YXJnZXQ6IFhyZWZJZCk6IEkxOG5BdHRyaWJ1dGVzT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5JMThuQXR0cmlidXRlcyxcbiAgICB4cmVmLFxuICAgIGhhbmRsZSxcbiAgICB0YXJnZXQsXG4gICAgaTE4bkF0dHJpYnV0ZXNDb25maWc6IG51bGwsXG4gICAgLi4uTkVXX09QLFxuICAgIC4uLlRSQUlUX0NPTlNVTUVTX1NMT1QsXG4gIH07XG59XG5cbi8qKlxuICogQW4gaW5kZXggaW50byB0aGUgYGNvbnN0c2AgYXJyYXkgd2hpY2ggaXMgc2hhcmVkIGFjcm9zcyB0aGUgY29tcGlsYXRpb24gb2YgYWxsIHZpZXdzIGluIGFcbiAqIGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IHR5cGUgQ29uc3RJbmRleCA9IG51bWJlciZ7X19icmFuZDogJ0NvbnN0SW5kZXgnfTtcblxuZXhwb3J0IGZ1bmN0aW9uIGxpdGVyYWxPckFycmF5TGl0ZXJhbCh2YWx1ZTogYW55KTogby5FeHByZXNzaW9uIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIG8ubGl0ZXJhbEFycih2YWx1ZS5tYXAobGl0ZXJhbE9yQXJyYXlMaXRlcmFsKSk7XG4gIH1cbiAgcmV0dXJuIG8ubGl0ZXJhbCh2YWx1ZSwgby5JTkZFUlJFRF9UWVBFKTtcbn1cbiJdfQ==
|
|
385
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXIvc3JjL3RlbXBsYXRlL3BpcGVsaW5lL2lyL3NyYy9vcHMvY3JlYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQU9ILE9BQU8sRUFBZ0MsZUFBZSxFQUF1QixTQUFTLEVBQUUsTUFBTSxFQUFlLE1BQU0sVUFBVSxDQUFDO0FBQzlILE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxFQUFLLE1BQU0sRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQXlDLG1CQUFtQixFQUFFLG1CQUFtQixFQUFDLE1BQU0sV0FBVyxDQUFDO0FBRTNHLE9BQU8sRUFBWSxNQUFNLEVBQTBCLE1BQU0sVUFBVSxDQUFDO0FBb0JwRTs7R0FFRztBQUNILE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDdEMsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsUUFBUTtJQUM3RixNQUFNLENBQUMsY0FBYztDQUN0QixDQUFDLENBQUM7QUFFSDs7R0FFRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxFQUFZO0lBQ2pELE9BQU8sdUJBQXVCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBMEZEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUNoQyxHQUFXLEVBQUUsSUFBWSxFQUFFLFNBQW9CLEVBQUUsZUFBOEMsRUFDL0YsZUFBZ0MsRUFBRSxlQUFnQztJQUNwRSxPQUFPO1FBQ0wsSUFBSSxFQUFFLE1BQU0sQ0FBQyxZQUFZO1FBQ3pCLElBQUk7UUFDSixHQUFHO1FB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RSxNQUFjO0lBQ2xELE9BQU87UUFDTCxJQUFJLEVBQUUsTUFBTSxDQUFDLGNBQWM7UUFDM0IsSUFBSTtRQUNKLE1BQU07UUFDTixNQUFNO1FBQ04sb0JBQW9CLEVBQUUsSUFBSTtRQUMxQixHQUFHLE1BQU07UUFDVCxHQUFHLG1CQUFtQjtLQUN2QixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1NlY3VyaXR5Q29udGV4dH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29yZSc7XG5pbXBvcnQgKiBhcyBpMThuIGZyb20gJy4uLy4uLy4uLy4uLy4uL2kxOG4vaTE4bl9hc3QnO1xuaW1wb3J0ICogYXMgbyBmcm9tICcuLi8uLi8uLi8uLi8uLi9vdXRwdXQvb3V0cHV0X2FzdCc7XG5pbXBvcnQge1BhcnNlU291cmNlU3Bhbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vcGFyc2VfdXRpbCc7XG5pbXBvcnQge1IzRGVmZXJCbG9ja01ldGFkYXRhfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9yZW5kZXIzL3ZpZXcvYXBpJztcbmltcG9ydCB7QmluZGluZ0tpbmQsIERlZmVyVHJpZ2dlcktpbmQsIEkxOG5Db250ZXh0S2luZCwgSTE4blBhcmFtVmFsdWVGbGFncywgTmFtZXNwYWNlLCBPcEtpbmQsIFRlbXBsYXRlS2luZH0gZnJvbSAnLi4vZW51bXMnO1xuaW1wb3J0IHtTbG90SGFuZGxlfSBmcm9tICcuLi9oYW5kbGUnO1xuaW1wb3J0IHtPcCwgT3BMaXN0LCBYcmVmSWR9IGZyb20gJy4uL29wZXJhdGlvbnMnO1xuaW1wb3J0IHtDb25zdW1lc1Nsb3RPcFRyYWl0LCBDb25zdW1lc1ZhcnNUcmFpdCwgVFJBSVRfQ09OU1VNRVNfU0xPVCwgVFJBSVRfQ09OU1VNRVNfVkFSU30gZnJvbSAnLi4vdHJhaXRzJztcblxuaW1wb3J0IHtMaXN0RW5kT3AsIE5FV19PUCwgU3RhdGVtZW50T3AsIFZhcmlhYmxlT3B9IGZyb20gJy4vc2hhcmVkJztcblxuaW1wb3J0IHR5cGUge1VwZGF0ZU9wfSBmcm9tICcuL3VwZGF0ZSc7XG5cbi8qKlxuICogQW4gb3BlcmF0aW9uIHVzYWJsZSBvbiB0aGUgY3JlYXRpb24gc2lkZSBvZiB0aGUgSVIuXG4gKi9cbmV4cG9ydCB0eXBlIENyZWF0ZU9wID1cbiAgICBMaXN0RW5kT3A8Q3JlYXRlT3A+fFN0YXRlbWVudE9wPENyZWF0ZU9wPnxFbGVtZW50T3B8RWxlbWVudFN0YXJ0T3B8RWxlbWVudEVuZE9wfENvbnRhaW5lck9wfFxuICAgIENvbnRhaW5lclN0YXJ0T3B8Q29udGFpbmVyRW5kT3B8VGVtcGxhdGVPcHxFbmFibGVCaW5kaW5nc09wfERpc2FibGVCaW5kaW5nc09wfFRleHRPcHxMaXN0ZW5lck9wfFxuICAgIFR3b1dheUxpc3RlbmVyT3B8UGlwZU9wfFZhcmlhYmxlT3A8Q3JlYXRlT3A+fE5hbWVzcGFjZU9wfFByb2plY3Rpb25EZWZPcHxQcm9qZWN0aW9uT3B8XG4gICAgRXh0cmFjdGVkQXR0cmlidXRlT3B8RGVmZXJPcHxEZWZlck9uT3B8UmVwZWF0ZXJDcmVhdGVPcHxJMThuTWVzc2FnZU9wfEkxOG5PcHxJMThuU3RhcnRPcHxcbiAgICBJMThuRW5kT3B8SWN1U3RhcnRPcHxJY3VFbmRPcHxJY3VQbGFjZWhvbGRlck9wfEkxOG5Db250ZXh0T3B8STE4bkF0dHJpYnV0ZXNPcDtcblxuLyoqXG4gKiBBbiBvcGVyYXRpb24gcmVwcmVzZW50aW5nIHRoZSBjcmVhdGlvbiBvZiBhbiBlbGVtZW50IG9yIGNvbnRhaW5lci5cbiAqL1xuZXhwb3J0IHR5cGUgRWxlbWVudE9yQ29udGFpbmVyT3BzID1cbiAgICBFbGVtZW50T3B8RWxlbWVudFN0YXJ0T3B8Q29udGFpbmVyT3B8Q29udGFpbmVyU3RhcnRPcHxUZW1wbGF0ZU9wfFJlcGVhdGVyQ3JlYXRlT3A7XG5cbi8qKlxuICogVGhlIHNldCBvZiBPcEtpbmRzIHRoYXQgcmVwcmVzZW50IHRoZSBjcmVhdGlvbiBvZiBhbiBlbGVtZW50IG9yIGNvbnRhaW5lclxuICovXG5jb25zdCBlbGVtZW50Q29udGFpbmVyT3BLaW5kcyA9IG5ldyBTZXQoW1xuICBPcEtpbmQuRWxlbWVudCwgT3BLaW5kLkVsZW1lbnRTdGFydCwgT3BLaW5kLkNvbnRhaW5lciwgT3BLaW5kLkNvbnRhaW5lclN0YXJ0LCBPcEtpbmQuVGVtcGxhdGUsXG4gIE9wS2luZC5SZXBlYXRlckNyZWF0ZVxuXSk7XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIG9wZXJhdGlvbiByZXByZXNlbnRzIHRoZSBjcmVhdGlvbiBvZiBhbiBlbGVtZW50IG9yIGNvbnRhaW5lci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRWxlbWVudE9yQ29udGFpbmVyT3Aob3A6IENyZWF0ZU9wKTogb3AgaXMgRWxlbWVudE9yQ29udGFpbmVyT3BzIHtcbiAgcmV0dXJuIGVsZW1lbnRDb250YWluZXJPcEtpbmRzLmhhcyhvcC5raW5kKTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRhdGlvbiBvZiBhIGxvY2FsIHJlZmVyZW5jZSBvbiBhbiBlbGVtZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvY2FsUmVmIHtcbiAgLyoqXG4gICAqIFVzZXItZGVmaW5lZCBuYW1lIG9mIHRoZSBsb2NhbCByZWYgdmFyaWFibGUuXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRhcmdldCBvZiB0aGUgbG9jYWwgcmVmZXJlbmNlIHZhcmlhYmxlIChvZnRlbiBgJydgKS5cbiAgICovXG4gIHRhcmdldDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEJhc2UgaW50ZXJmYWNlIGZvciBgRWxlbWVudGAsIGBFbGVtZW50U3RhcnRgLCBhbmQgYFRlbXBsYXRlYCBvcGVyYXRpb25zLCBjb250YWluaW5nIGNvbW1vbiBmaWVsZHNcbiAqIHVzZWQgdG8gcmVwcmVzZW50IHRoZWlyIGVsZW1lbnQtbGlrZSBuYXR1cmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWxlbWVudE9yQ29udGFpbmVyT3BCYXNlIGV4dGVuZHMgT3A8Q3JlYXRlT3A+LCBDb25zdW1lc1Nsb3RPcFRyYWl0IHtcbiAga2luZDogRWxlbWVudE9yQ29udGFpbmVyT3BzWydraW5kJ107XG5cbiAgLyoqXG4gICAqIGBYcmVmSWRgIGFsbG9jYXRlZCBmb3IgdGhpcyBlbGVtZW50LlxuICAgKlxuICAgKiBUaGlzIElEIGlzIHVzZWQgdG8gcmVmZXJlbmNlIHRoaXMgZWxlbWVudCBmcm9tIG90aGVyIElSIHN0cnVjdHVyZXMuXG4gICAqL1xuICB4cmVmOiBYcmVmSWQ7XG5cbiAgLyoqXG4gICAqIEF0dHJpYnV0ZXMgb2YgdmFyaW91cyBraW5kcyBvbiB0aGlzIGVsZW1lbnQuIFJlcHJlc2VudGVkIGFzIGEgYENvbnN0SW5kZXhgIHBvaW50ZXIgaW50byB0aGVcbiAgICogc2hhcmVkIGBjb25zdHNgIGFycmF5IG9mIHRoZSBjb21wb25lbnQgY29tcGlsYXRpb24uXG4gICAqL1xuICBhdHRyaWJ1dGVzOiBDb25zdEluZGV4fG51bGw7XG5cbiAgLyoqXG4gICAqIExvY2FsIHJlZmVyZW5jZXMgdG8gdGhpcyBlbGVtZW50LlxuICAgKlxuICAgKiBCZWZvcmUgbG9jYWwgcmVmIHByb2Nlc3NpbmcsIHRoaXMgaXMgYW4gYXJyYXkgb2YgYExvY2FsUmVmYCBkZWNsYXJhdGlvbnMuXG4gICAqXG4gICAqIEFmdGVyIHByb2Nlc3NpbmcsIGl0J3MgYSBgQ29uc3RJbmRleGAgcG9pbnRlciBpbnRvIHRoZSBzaGFyZWQgYGNvbnN0c2AgYXJyYXkgb2YgdGhlIGNvbXBvbmVudFxuICAgKiBjb21waWxhdGlvbi5cbiAgICovXG4gIGxvY2FsUmVmczogTG9jYWxSZWZbXXxDb25zdEluZGV4fG51bGw7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBjb250YWluZXIgaXMgbWFya2VkIGBuZ05vbkJpbmRhYmxlYCwgd2hpY2ggZGlzYWJsZWQgQW5ndWxhciBiaW5kaW5nIGZvciBpdHNlbGYgYW5kXG4gICAqIGFsbCBkZXNjZW5kYW50cy5cbiAgICovXG4gIG5vbkJpbmRhYmxlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc3BhbiBvZiB0aGUgZWxlbWVudCdzIHN0YXJ0IHRhZy5cbiAgICovXG4gIHN0YXJ0U291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuO1xuXG4gIC8qKlxuICAgKiBUaGUgd2hvbGUgc291cmNlIHNwYW4gb2YgdGhlIGVsZW1lbnQsIGluY2x1ZGluZyBjaGlsZHJlbi5cbiAgICovXG4gIHdob2xlU291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVsZW1lbnRPcEJhc2UgZXh0ZW5kcyBFbGVtZW50T3JDb250YWluZXJPcEJhc2Uge1xuICBraW5kOiBPcEtpbmQuRWxlbWVudHxPcEtpbmQuRWxlbWVudFN0YXJ0fE9wS2luZC5UZW1wbGF0ZXxPcEtpbmQuUmVwZWF0ZXJDcmVhdGU7XG5cbiAgLyoqXG4gICAqIFRoZSBIVE1MIHRhZyBuYW1lIGZvciB0aGlzIGVsZW1lbnQuXG4gICAqL1xuICB0YWc6IHN0cmluZ3xudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZXNwYWNlIG9mIHRoaXMgZWxlbWVudCwgd2hpY2ggY29udHJvbHMgdGhlIHByZWNlZGluZyBuYW1lc3BhY2UgaW5zdHJ1Y3Rpb24uXG4gICAqL1xuICBuYW1lc3BhY2U6IE5hbWVzcGFjZTtcbn1cblxuLyoqXG4gKiBMb2dpY2FsIG9wZXJhdGlvbiByZXByZXNlbnRpbmcgdGhlIHN0YXJ0IG9mIGFuIGVsZW1lbnQgaW4gdGhlIGNyZWF0aW9uIElSLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVsZW1lbnRTdGFydE9wIGV4dGVuZHMgRWxlbWVudE9wQmFzZSB7XG4gIGtpbmQ6IE9wS2luZC5FbGVtZW50U3RhcnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBpMThuIHBsYWNlaG9sZGVyIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZWxlbWVudC5cbiAgICovXG4gIGkxOG5QbGFjZWhvbGRlcj86IGkxOG4uVGFnUGxhY2Vob2xkZXI7XG59XG5cbi8qKlxuICogQ3JlYXRlIGFuIGBFbGVtZW50U3RhcnRPcGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFbGVtZW50U3RhcnRPcChcbiAgICB0YWc6IHN0cmluZywgeHJlZjogWHJlZklkLCBuYW1lc3BhY2U6IE5hbWVzcGFjZSwgaTE4blBsYWNlaG9sZGVyOiBpMThuLlRhZ1BsYWNlaG9sZGVyfHVuZGVmaW5lZCxcbiAgICBzdGFydFNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbiwgd2hvbGVTb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pOiBFbGVtZW50U3RhcnRPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLkVsZW1lbnRTdGFydCxcbiAgICB4cmVmLFxuICAgIHRhZyxcbiAgICBoYW5kbGU6IG5ldyBTbG90SGFuZGxlKCksXG4gICAgYXR0cmlidXRlczogbnVsbCxcbiAgICBsb2NhbFJlZnM6IFtdLFxuICAgIG5vbkJpbmRhYmxlOiBmYWxzZSxcbiAgICBuYW1lc3BhY2UsXG4gICAgaTE4blBsYWNlaG9sZGVyLFxuICAgIHN0YXJ0U291cmNlU3BhbixcbiAgICB3aG9sZVNvdXJjZVNwYW4sXG4gICAgLi4uVFJBSVRfQ09OU1VNRVNfU0xPVCxcbiAgICAuLi5ORVdfT1AsXG4gIH07XG59XG5cbi8qKlxuICogTG9naWNhbCBvcGVyYXRpb24gcmVwcmVzZW50aW5nIGFuIGVsZW1lbnQgd2l0aCBubyBjaGlsZHJlbiBpbiB0aGUgY3JlYXRpb24gSVIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWxlbWVudE9wIGV4dGVuZHMgRWxlbWVudE9wQmFzZSB7XG4gIGtpbmQ6IE9wS2luZC5FbGVtZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgaTE4biBwbGFjZWhvbGRlciBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGVsZW1lbnQuXG4gICAqL1xuICBpMThuUGxhY2Vob2xkZXI/OiBpMThuLlRhZ1BsYWNlaG9sZGVyO1xufVxuXG4vKipcbiAqIExvZ2ljYWwgb3BlcmF0aW9uIHJlcHJlc2VudGluZyBhbiBlbWJlZGRlZCB2aWV3IGRlY2xhcmF0aW9uIGluIHRoZSBjcmVhdGlvbiBJUi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZU9wIGV4dGVuZHMgRWxlbWVudE9wQmFzZSB7XG4gIGtpbmQ6IE9wS2luZC5UZW1wbGF0ZTtcblxuICB0ZW1wbGF0ZUtpbmQ6IFRlbXBsYXRlS2luZDtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBkZWNsYXJhdGlvbiBzbG90cyB1c2VkIGJ5IHRoaXMgdGVtcGxhdGUsIG9yIGBudWxsYCBpZiBzbG90cyBoYXZlIG5vdCB5ZXQgYmVlblxuICAgKiBhc3NpZ25lZC5cbiAgICovXG4gIGRlY2xzOiBudW1iZXJ8bnVsbDtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBiaW5kaW5nIHZhcmlhYmxlIHNsb3RzIHVzZWQgYnkgdGhpcyB0ZW1wbGF0ZSwgb3IgYG51bGxgIGlmIGJpbmRpbmcgdmFyaWFibGVzIGhhdmVcbiAgICogbm90IHlldCBiZWVuIGNvdW50ZWQuXG4gICAqL1xuICB2YXJzOiBudW1iZXJ8bnVsbDtcblxuICAvKipcbiAgICogU3VmZml4IHRvIGFkZCB0byB0aGUgbmFtZSBvZiB0aGUgZ2VuZXJhdGVkIHRlbXBsYXRlIGZ1bmN0aW9uLlxuICAgKi9cbiAgZnVuY3Rpb25OYW1lU3VmZml4OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpMThuIHBsYWNlaG9sZGVyIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdGVtcGxhdGUuXG4gICAqL1xuICBpMThuUGxhY2Vob2xkZXI/OiBpMThuLlRhZ1BsYWNlaG9sZGVyfGkxOG4uQmxvY2tQbGFjZWhvbGRlcjtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBgVGVtcGxhdGVPcGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUZW1wbGF0ZU9wKFxuICAgIHhyZWY6IFhyZWZJZCwgdGVtcGxhdGVLaW5kOiBUZW1wbGF0ZUtpbmQsIHRhZzogc3RyaW5nfG51bGwsIGZ1bmN0aW9uTmFtZVN1ZmZpeDogc3RyaW5nLFxuICAgIG5hbWVzcGFjZTogTmFtZXNwYWNlLCBpMThuUGxhY2Vob2xkZXI6IGkxOG4uVGFnUGxhY2Vob2xkZXJ8aTE4bi5CbG9ja1BsYWNlaG9sZGVyfHVuZGVmaW5lZCxcbiAgICBzdGFydFNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbiwgd2hvbGVTb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pOiBUZW1wbGF0ZU9wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuVGVtcGxhdGUsXG4gICAgeHJlZixcbiAgICB0ZW1wbGF0ZUtpbmQsXG4gICAgYXR0cmlidXRlczogbnVsbCxcbiAgICB0YWcsXG4gICAgaGFuZGxlOiBuZXcgU2xvdEhhbmRsZSgpLFxuICAgIGZ1bmN0aW9uTmFtZVN1ZmZpeCxcbiAgICBkZWNsczogbnVsbCxcbiAgICB2YXJzOiBudWxsLFxuICAgIGxvY2FsUmVmczogW10sXG4gICAgbm9uQmluZGFibGU6IGZhbHNlLFxuICAgIG5hbWVzcGFjZSxcbiAgICBpMThuUGxhY2Vob2xkZXIsXG4gICAgc3RhcnRTb3VyY2VTcGFuLFxuICAgIHdob2xlU291cmNlU3BhbixcbiAgICAuLi5UUkFJVF9DT05TVU1FU19TTE9ULFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cblxuLyoqXG4gKiBBbiBvcCB0aGF0IGNyZWF0ZXMgYSByZXBlYXRlciAoZS5nLiBhIGZvciBsb29wKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBlYXRlckNyZWF0ZU9wIGV4dGVuZHMgRWxlbWVudE9wQmFzZSwgQ29uc3VtZXNWYXJzVHJhaXQge1xuICBraW5kOiBPcEtpbmQuUmVwZWF0ZXJDcmVhdGU7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgZGVjbGFyYXRpb24gc2xvdHMgdXNlZCBieSB0aGlzIHJlcGVhdGVyJ3MgdGVtcGxhdGUsIG9yIGBudWxsYCBpZiBzbG90cyBoYXZlIG5vdFxuICAgKiB5ZXQgYmVlbiBhc3NpZ25lZC5cbiAgICovXG4gIGRlY2xzOiBudW1iZXJ8bnVsbDtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBiaW5kaW5nIHZhcmlhYmxlIHNsb3RzIHVzZWQgYnkgdGhpcyByZXBlYXRlcidzLCBvciBgbnVsbGAgaWYgYmluZGluZyB2YXJpYWJsZXNcbiAgICogaGF2ZSBub3QgeWV0IGJlZW4gY291bnRlZC5cbiAgICovXG4gIHZhcnM6IG51bWJlcnxudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgWHJlZiBvZiB0aGUgZW1wdHkgdmlldyBmdW5jdGlvbi4gKEZvciB0aGUgcHJpbWFyeSB2aWV3IGZ1bmN0aW9uLCB1c2UgdGhlIGB4cmVmYCBwcm9wZXJ0eSkuXG4gICAqL1xuICBlbXB0eVZpZXc6IFhyZWZJZHxudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgdHJhY2sgZXhwcmVzc2lvbiB0byB1c2Ugd2hpbGUgaXRlcmF0aW5nLlxuICAgKi9cbiAgdHJhY2s6IG8uRXhwcmVzc2lvbjtcblxuICAvKipcbiAgICogYG51bGxgIGluaXRpYWxseSwgdGhlbiBhbiBgby5FeHByZXNzaW9uYC4gTWlnaHQgYmUgYSB0cmFjayBleHByZXNzaW9uLCBvciBtaWdodCBiZSBhIHJlZmVyZW5jZVxuICAgKiBpbnRvIHRoZSBjb25zdGFudCBwb29sLlxuICAgKi9cbiAgdHJhY2tCeUZuOiBvLkV4cHJlc3Npb258bnVsbDtcblxuICAvKipcbiAgICogQ29udGV4dCB2YXJpYWJsZXMgYXZhaWFsYWJsZSBpbiB0aGlzIGJsb2NrLlxuICAgKi9cbiAgdmFyTmFtZXM6IFJlcGVhdGVyVmFyTmFtZXM7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHJlcGVhdGVyIHRyYWNrIGZ1bmN0aW9uIHJlbGllcyBvbiB0aGUgY29tcG9uZW50IGluc3RhbmNlLlxuICAgKi9cbiAgdXNlc0NvbXBvbmVudEluc3RhbmNlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTdWZmaXggdG8gYWRkIHRvIHRoZSBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQgdGVtcGxhdGUgZnVuY3Rpb24uXG4gICAqL1xuICBmdW5jdGlvbk5hbWVTdWZmaXg6IHN0cmluZztcblxuICAvKipcbiAgICogVGFnIG5hbWUgZm9yIHRoZSBlbXB0eSBibG9jay5cbiAgICovXG4gIGVtcHR5VGFnOiBzdHJpbmd8bnVsbDtcblxuICAvKipcbiAgICogQXR0cmlidXRlcyBvZiB2YXJpb3VzIGtpbmRzIG9uIHRoZSBlbXB0eSBibG9jay4gUmVwcmVzZW50ZWQgYXMgYSBgQ29uc3RJbmRleGAgcG9pbnRlciBpbnRvIHRoZVxuICAgKiBzaGFyZWQgYGNvbnN0c2AgYXJyYXkgb2YgdGhlIGNvbXBvbmVudCBjb21waWxhdGlvbi5cbiAgICovXG4gIGVtcHR5QXR0cmlidXRlczogQ29uc3RJbmRleHxudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgaTE4biBwbGFjZWhvbGRlciBmb3IgdGhlIHJlcGVhdGVkIGl0ZW0gdGVtcGxhdGUuXG4gICAqL1xuICBpMThuUGxhY2Vob2xkZXI6IGkxOG4uQmxvY2tQbGFjZWhvbGRlcnx1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBpMThuIHBsYWNlaG9sZGVyIGZvciB0aGUgZW1wdHkgdGVtcGxhdGUuXG4gICAqL1xuICBlbXB0eUkxOG5QbGFjZWhvbGRlcjogaTE4bi5CbG9ja1BsYWNlaG9sZGVyfHVuZGVmaW5lZDtcbn1cblxuLy8gVE9ETzogYWRkIHNvdXJjZSBzcGFucz9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwZWF0ZXJWYXJOYW1lcyB7XG4gICRpbmRleDogc3RyaW5nO1xuICAkY291bnQ6IHN0cmluZztcbiAgJGZpcnN0OiBzdHJpbmc7XG4gICRsYXN0OiBzdHJpbmc7XG4gICRldmVuOiBzdHJpbmc7XG4gICRvZGQ6IHN0cmluZztcbiAgJGltcGxpY2l0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZXBlYXRlckNyZWF0ZU9wKFxuICAgIHByaW1hcnlWaWV3OiBYcmVmSWQsIGVtcHR5VmlldzogWHJlZklkfG51bGwsIHRhZzogc3RyaW5nfG51bGwsIHRyYWNrOiBvLkV4cHJlc3Npb24sXG4gICAgdmFyTmFtZXM6IFJlcGVhdGVyVmFyTmFtZXMsIGVtcHR5VGFnOiBzdHJpbmd8bnVsbCxcbiAgICBpMThuUGxhY2Vob2xkZXI6IGkxOG4uQmxvY2tQbGFjZWhvbGRlcnx1bmRlZmluZWQsXG4gICAgZW1wdHlJMThuUGxhY2Vob2xkZXI6IGkxOG4uQmxvY2tQbGFjZWhvbGRlcnx1bmRlZmluZWQsIHN0YXJ0U291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuLFxuICAgIHdob2xlU291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKTogUmVwZWF0ZXJDcmVhdGVPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLlJlcGVhdGVyQ3JlYXRlLFxuICAgIGF0dHJpYnV0ZXM6IG51bGwsXG4gICAgeHJlZjogcHJpbWFyeVZpZXcsXG4gICAgaGFuZGxlOiBuZXcgU2xvdEhhbmRsZSgpLFxuICAgIGVtcHR5VmlldyxcbiAgICB0cmFjayxcbiAgICB0cmFja0J5Rm46IG51bGwsXG4gICAgdGFnLFxuICAgIGVtcHR5VGFnLFxuICAgIGVtcHR5QXR0cmlidXRlczogbnVsbCxcbiAgICBmdW5jdGlvbk5hbWVTdWZmaXg6ICdGb3InLFxuICAgIG5hbWVzcGFjZTogTmFtZXNwYWNlLkhUTUwsXG4gICAgbm9uQmluZGFibGU6IGZhbHNlLFxuICAgIGxvY2FsUmVmczogW10sXG4gICAgZGVjbHM6IG51bGwsXG4gICAgdmFyczogbnVsbCxcbiAgICB2YXJOYW1lcyxcbiAgICB1c2VzQ29tcG9uZW50SW5zdGFuY2U6IGZhbHNlLFxuICAgIGkxOG5QbGFjZWhvbGRlcixcbiAgICBlbXB0eUkxOG5QbGFjZWhvbGRlcixcbiAgICBzdGFydFNvdXJjZVNwYW4sXG4gICAgd2hvbGVTb3VyY2VTcGFuLFxuICAgIC4uLlRSQUlUX0NPTlNVTUVTX1NMT1QsXG4gICAgLi4uTkVXX09QLFxuICAgIC4uLlRSQUlUX0NPTlNVTUVTX1ZBUlMsXG4gICAgbnVtU2xvdHNVc2VkOiBlbXB0eVZpZXcgPT09IG51bGwgPyAyIDogMyxcbiAgfTtcbn1cblxuLyoqXG4gKiBMb2dpY2FsIG9wZXJhdGlvbiByZXByZXNlbnRpbmcgdGhlIGVuZCBvZiBhbiBlbGVtZW50IHN0cnVjdHVyZSBpbiB0aGUgY3JlYXRpb24gSVIuXG4gKlxuICogUGFpcnMgd2l0aCBhbiBgRWxlbWVudFN0YXJ0YCBvcGVyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWxlbWVudEVuZE9wIGV4dGVuZHMgT3A8Q3JlYXRlT3A+IHtcbiAga2luZDogT3BLaW5kLkVsZW1lbnRFbmQ7XG5cbiAgLyoqXG4gICAqIFRoZSBgWHJlZklkYCBvZiB0aGUgZWxlbWVudCBkZWNsYXJlZCB2aWEgYEVsZW1lbnRTdGFydGAuXG4gICAqL1xuICB4cmVmOiBYcmVmSWQ7XG5cbiAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFufG51bGw7XG59XG5cbi8qKlxuICogQ3JlYXRlIGFuIGBFbGVtZW50RW5kT3BgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRWxlbWVudEVuZE9wKHhyZWY6IFhyZWZJZCwgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFufG51bGwpOiBFbGVtZW50RW5kT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5FbGVtZW50RW5kLFxuICAgIHhyZWYsXG4gICAgc291cmNlU3BhbixcbiAgICAuLi5ORVdfT1AsXG4gIH07XG59XG5cbi8qKlxuICogTG9naWNhbCBvcGVyYXRpb24gcmVwcmVzZW50aW5nIHRoZSBzdGFydCBvZiBhIGNvbnRhaW5lciBpbiB0aGUgY3JlYXRpb24gSVIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFpbmVyU3RhcnRPcCBleHRlbmRzIEVsZW1lbnRPckNvbnRhaW5lck9wQmFzZSB7XG4gIGtpbmQ6IE9wS2luZC5Db250YWluZXJTdGFydDtcbn1cblxuLyoqXG4gKiBMb2dpY2FsIG9wZXJhdGlvbiByZXByZXNlbnRpbmcgYW4gZW1wdHkgY29udGFpbmVyIGluIHRoZSBjcmVhdGlvbiBJUi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250YWluZXJPcCBleHRlbmRzIEVsZW1lbnRPckNvbnRhaW5lck9wQmFzZSB7XG4gIGtpbmQ6IE9wS2luZC5Db250YWluZXI7XG59XG5cbi8qKlxuICogTG9naWNhbCBvcGVyYXRpb24gcmVwcmVzZW50aW5nIHRoZSBlbmQgb2YgYSBjb250YWluZXIgc3RydWN0dXJlIGluIHRoZSBjcmVhdGlvbiBJUi5cbiAqXG4gKiBQYWlycyB3aXRoIGFuIGBDb250YWluZXJTdGFydGAgb3BlcmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhaW5lckVuZE9wIGV4dGVuZHMgT3A8Q3JlYXRlT3A+IHtcbiAga2luZDogT3BLaW5kLkNvbnRhaW5lckVuZDtcblxuICAvKipcbiAgICogVGhlIGBYcmVmSWRgIG9mIHRoZSBlbGVtZW50IGRlY2xhcmVkIHZpYSBgQ29udGFpbmVyU3RhcnRgLlxuICAgKi9cbiAgeHJlZjogWHJlZklkO1xuXG4gIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbjtcbn1cblxuLyoqXG4gKiBMb2dpY2FsIG9wZXJhdGlvbiBjYXVzaW5nIGJpbmRpbmcgdG8gYmUgZGlzYWJsZWQgaW4gZGVzY2VuZGVudHMgb2YgYSBub24tYmluZGFibGUgY29udGFpbmVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERpc2FibGVCaW5kaW5nc09wIGV4dGVuZHMgT3A8Q3JlYXRlT3A+IHtcbiAga2luZDogT3BLaW5kLkRpc2FibGVCaW5kaW5ncztcblxuICAvKipcbiAgICogYFhyZWZJZGAgb2YgdGhlIGVsZW1lbnQgdGhhdCB3YXMgbWFya2VkIG5vbi1iaW5kYWJsZS5cbiAgICovXG4gIHhyZWY6IFhyZWZJZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURpc2FibGVCaW5kaW5nc09wKHhyZWY6IFhyZWZJZCk6IERpc2FibGVCaW5kaW5nc09wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuRGlzYWJsZUJpbmRpbmdzLFxuICAgIHhyZWYsXG4gICAgLi4uTkVXX09QLFxuICB9O1xufVxuXG4vKipcbiAqIExvZ2ljYWwgb3BlcmF0aW9uIGNhdXNpbmcgYmluZGluZyB0byBiZSByZS1lbmFibGVkIGFmdGVyIHZpc2l0aW5nIGRlc2NlbmRhbnRzIG9mIGFcbiAqIG5vbi1iaW5kYWJsZSBjb250YWluZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5hYmxlQmluZGluZ3NPcCBleHRlbmRzIE9wPENyZWF0ZU9wPiB7XG4gIGtpbmQ6IE9wS2luZC5FbmFibGVCaW5kaW5ncztcblxuICAvKipcbiAgICogYFhyZWZJZGAgb2YgdGhlIGVsZW1lbnQgdGhhdCB3YXMgbWFya2VkIG5vbi1iaW5kYWJsZS5cbiAgICovXG4gIHhyZWY6IFhyZWZJZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVuYWJsZUJpbmRpbmdzT3AoeHJlZjogWHJlZklkKTogRW5hYmxlQmluZGluZ3NPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLkVuYWJsZUJpbmRpbmdzLFxuICAgIHhyZWYsXG4gICAgLi4uTkVXX09QLFxuICB9O1xufVxuXG4vKipcbiAqIExvZ2ljYWwgb3BlcmF0aW9uIHJlcHJlc2VudGluZyBhIHRleHQgbm9kZSBpbiB0aGUgY3JlYXRpb24gSVIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGV4dE9wIGV4dGVuZHMgT3A8Q3JlYXRlT3A+LCBDb25zdW1lc1Nsb3RPcFRyYWl0IHtcbiAga2luZDogT3BLaW5kLlRleHQ7XG5cbiAgLyoqXG4gICAqIGBYcmVmSWRgIHVzZWQgdG8gcmVmZXJlbmNlIHRoaXMgdGV4dCBub2RlIGluIG90aGVyIElSIHN0cnVjdHVyZXMuXG4gICAqL1xuICB4cmVmOiBYcmVmSWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGF0aWMgaW5pdGlhbCB2YWx1ZSBvZiB0aGUgdGV4dCBub2RlLlxuICAgKi9cbiAgaW5pdGlhbFZhbHVlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwbGFjZWhvbGRlciBmb3IgdGhpcyB0ZXh0IGluIGl0cyBwYXJlbnQgSUNVLiBJZiB0aGlzIHRleHQgaXMgbm90IHBhcnQgb2YgYW4gSUNVLCB0aGVcbiAgICogcGxhY2Vob2xkZXIgaXMgbnVsbC5cbiAgICovXG4gIGljdVBsYWNlaG9sZGVyOiBzdHJpbmd8bnVsbDtcblxuICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW58bnVsbDtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBgVGV4dE9wYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRleHRPcChcbiAgICB4cmVmOiBYcmVmSWQsIGluaXRpYWxWYWx1ZTogc3RyaW5nLCBpY3VQbGFjZWhvbGRlcjogc3RyaW5nfG51bGwsXG4gICAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFufG51bGwpOiBUZXh0T3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5UZXh0LFxuICAgIHhyZWYsXG4gICAgaGFuZGxlOiBuZXcgU2xvdEhhbmRsZSgpLFxuICAgIGluaXRpYWxWYWx1ZSxcbiAgICBpY3VQbGFjZWhvbGRlcixcbiAgICBzb3VyY2VTcGFuLFxuICAgIC4uLlRSQUlUX0NPTlNVTUVTX1NMT1QsXG4gICAgLi4uTkVXX09QLFxuICB9O1xufVxuXG4vKipcbiAqIExvZ2ljYWwgb3BlcmF0aW9uIHJlcHJlc2VudGluZyBhbiBldmVudCBsaXN0ZW5lciBvbiBhbiBlbGVtZW50IGluIHRoZSBjcmVhdGlvbiBJUi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaXN0ZW5lck9wIGV4dGVuZHMgT3A8Q3JlYXRlT3A+IHtcbiAga2luZDogT3BLaW5kLkxpc3RlbmVyO1xuXG4gIHRhcmdldDogWHJlZklkO1xuICB0YXJnZXRTbG90OiBTbG90SGFuZGxlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgbGlzdGVuZXIgaXMgZnJvbSBhIGhvc3QgYmluZGluZy5cbiAgICovXG4gIGhvc3RMaXN0ZW5lcjogYm9vbGVhbjtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgZXZlbnQgd2hpY2ggaXMgYmVpbmcgbGlzdGVuZWQgdG8uXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRhZyBuYW1lIG9mIHRoZSBlbGVtZW50IG9uIHdoaWNoIHRoaXMgbGlzdGVuZXIgaXMgcGxhY2VkLiBNaWdodCBiZSBudWxsLCBpZiB0aGlzIGxpc3RlbmVyXG4gICAqIGJlbG9uZ3MgdG8gYSBob3N0IGJpbmRpbmcuXG4gICAqL1xuICB0YWc6IHN0cmluZ3xudWxsO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgYFVwZGF0ZU9wYHMgcmVwcmVzZW50aW5nIHRoZSBib2R5IG9mIHRoZSBldmVudCBsaXN0ZW5lci5cbiAgICovXG4gIGhhbmRsZXJPcHM6IE9wTGlzdDxVcGRhdGVPcD47XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGZ1bmN0aW9uXG4gICAqL1xuICBoYW5kbGVyRm5OYW1lOiBzdHJpbmd8bnVsbDtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGxpc3RlbmVyIGlzIGtub3duIHRvIGNvbnN1bWUgYCRldmVudGAgaW4gaXRzIGJvZHkuXG4gICAqL1xuICBjb25zdW1lc0RvbGxhckV2ZW50OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBsaXN0ZW5lciBpcyBsaXN0ZW5pbmcgZm9yIGFuIGFuaW1hdGlvbiBldmVudC5cbiAgICovXG4gIGlzQW5pbWF0aW9uTGlzdGVuZXI6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBhbmltYXRpb24gcGhhc2Ugb2YgdGhlIGxpc3RlbmVyLlxuICAgKi9cbiAgYW5pbWF0aW9uUGhhc2U6IHN0cmluZ3xudWxsO1xuXG4gIC8qKlxuICAgKiBTb21lIGV2ZW50IGxpc3RlbmVycyBjYW4gaGF2ZSBhIHRhcmdldCwgZS5nLiBpbiBgZG9jdW1lbnQ6ZHJhZ292ZXJgLlxuICAgKi9cbiAgZXZlbnRUYXJnZXQ6IHN0cmluZ3xudWxsO1xuXG4gIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbjtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBgTGlzdGVuZXJPcGAuIEhvc3QgYmluZGluZ3MgcmV1c2UgYWxsIHRoZSBsaXN0ZW5lciBsb2dpYy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxpc3RlbmVyT3AoXG4gICAgdGFyZ2V0OiBYcmVmSWQsIHRhcmdldFNsb3Q6IFNsb3RIYW5kbGUsIG5hbWU6IHN0cmluZywgdGFnOiBzdHJpbmd8bnVsbCxcbiAgICBoYW5kbGVyT3BzOiBBcnJheTxVcGRhdGVPcD4sIGFuaW1hdGlvblBoYXNlOiBzdHJpbmd8bnVsbCwgZXZlbnRUYXJnZXQ6IHN0cmluZ3xudWxsLFxuICAgIGhvc3RMaXN0ZW5lcjogYm9vbGVhbiwgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKTogTGlzdGVuZXJPcCB7XG4gIGNvbnN0IGhhbmRsZXJMaXN0ID0gbmV3IE9wTGlzdDxVcGRhdGVPcD4oKTtcbiAgaGFuZGxlckxpc3QucHVzaChoYW5kbGVyT3BzKTtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuTGlzdGVuZXIsXG4gICAgdGFyZ2V0LFxuICAgIHRhcmdldFNsb3QsXG4gICAgdGFnLFxuICAgIGhvc3RMaXN0ZW5lcixcbiAgICBuYW1lLFxuICAgIGhhbmRsZXJPcHM6IGhhbmRsZXJMaXN0LFxuICAgIGhhbmRsZXJGbk5hbWU6IG51bGwsXG4gICAgY29uc3VtZXNEb2xsYXJFdmVudDogZmFsc2UsXG4gICAgaXNBbmltYXRpb25MaXN0ZW5lcjogYW5pbWF0aW9uUGhhc2UgIT09IG51bGwsXG4gICAgYW5pbWF0aW9uUGhhc2UsXG4gICAgZXZlbnRUYXJnZXQsXG4gICAgc291cmNlU3BhbixcbiAgICAuLi5ORVdfT1AsXG4gIH07XG59XG5cbi8qKlxuICogTG9naWNhbCBvcGVyYXRpb24gcmVwcmVzZW50aW5nIHRoZSBldmVudCBzaWRlIG9mIGEgdHdvLXdheSBiaW5kaW5nIG9uIGFuIGVsZW1lbnRcbiAqIGluIHRoZSBjcmVhdGlvbiBJUi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUd29XYXlMaXN0ZW5lck9wIGV4dGVuZHMgT3A8Q3JlYXRlT3A+IHtcbiAga2luZDogT3BLaW5kLlR3b1dheUxpc3RlbmVyO1xuXG4gIHRhcmdldDogWHJlZklkO1xuICB0YXJnZXRTbG90OiBTbG90SGFuZGxlO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBldmVudCB3aGljaCBpcyBiZWluZyBsaXN0ZW5lZCB0by5cbiAgICovXG4gIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGFnIG5hbWUgb2YgdGhlIGVsZW1lbnQgb24gd2hpY2ggdGhpcyBsaXN0ZW5lciBpcyBwbGFjZWQuXG4gICAqL1xuICB0YWc6IHN0cmluZ3xudWxsO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgYFVwZGF0ZU9wYHMgcmVwcmVzZW50aW5nIHRoZSBib2R5IG9mIHRoZSBldmVudCBsaXN0ZW5lci5cbiAgICovXG4gIGhhbmRsZXJPcHM6IE9wTGlzdDxVcGRhdGVPcD47XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGZ1bmN0aW9uXG4gICAqL1xuICBoYW5kbGVyRm5OYW1lOiBzdHJpbmd8bnVsbDtcblxuICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW47XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgYFR3b1dheUxpc3RlbmVyT3BgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVHdvV2F5TGlzdGVuZXJPcChcbiAgICB0YXJnZXQ6IFhyZWZJZCwgdGFyZ2V0U2xvdDogU2xvdEhhbmRsZSwgbmFtZTogc3RyaW5nLCB0YWc6IHN0cmluZ3xudWxsLFxuICAgIGhhbmRsZXJPcHM6IEFycmF5PFVwZGF0ZU9wPiwgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuKTogVHdvV2F5TGlzdGVuZXJPcCB7XG4gIGNvbnN0IGhhbmRsZXJMaXN0ID0gbmV3IE9wTGlzdDxVcGRhdGVPcD4oKTtcbiAgaGFuZGxlckxpc3QucHVzaChoYW5kbGVyT3BzKTtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuVHdvV2F5TGlzdGVuZXIsXG4gICAgdGFyZ2V0LFxuICAgIHRhcmdldFNsb3QsXG4gICAgdGFnLFxuICAgIG5hbWUsXG4gICAgaGFuZGxlck9wczogaGFuZGxlckxpc3QsXG4gICAgaGFuZGxlckZuTmFtZTogbnVsbCxcbiAgICBzb3VyY2VTcGFuLFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQaXBlT3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4sIENvbnN1bWVzU2xvdE9wVHJhaXQge1xuICBraW5kOiBPcEtpbmQuUGlwZTtcbiAgeHJlZjogWHJlZklkO1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQaXBlT3AoeHJlZjogWHJlZklkLCBzbG90OiBTbG90SGFuZGxlLCBuYW1lOiBzdHJpbmcpOiBQaXBlT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5QaXBlLFxuICAgIHhyZWYsXG4gICAgaGFuZGxlOiBzbG90LFxuICAgIG5hbWUsXG4gICAgLi4uTkVXX09QLFxuICAgIC4uLlRSQUlUX0NPTlNVTUVTX1NMT1QsXG4gIH07XG59XG5cbi8qKlxuICogQW4gb3AgY29ycmVzcG9uZGluZyB0byBhIG5hbWVzcGFjZSBpbnN0cnVjdGlvbiwgZm9yIHN3aXRjaGluZyBiZXR3ZWVuIEhUTUwsIFNWRywgYW5kIE1hdGhNTC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOYW1lc3BhY2VPcCBleHRlbmRzIE9wPENyZWF0ZU9wPiB7XG4gIGtpbmQ6IE9wS2luZC5OYW1lc3BhY2U7XG4gIGFjdGl2ZTogTmFtZXNwYWNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTmFtZXNwYWNlT3AobmFtZXNwYWNlOiBOYW1lc3BhY2UpOiBOYW1lc3BhY2VPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLk5hbWVzcGFjZSxcbiAgICBhY3RpdmU6IG5hbWVzcGFjZSxcbiAgICAuLi5ORVdfT1AsXG4gIH07XG59XG5cbi8qKlxuICogQW4gb3AgdGhhdCBjcmVhdGVzIGEgY29udGVudCBwcm9qZWN0aW9uIHNsb3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvamVjdGlvbkRlZk9wIGV4dGVuZHMgT3A8Q3JlYXRlT3A+IHtcbiAga2luZDogT3BLaW5kLlByb2plY3Rpb25EZWY7XG5cbiAgLy8gVGhlIHBhcnNlZCBzZWxlY3RvciBpbmZvcm1hdGlvbiBmb3IgdGhpcyBwcm9qZWN0aW9uIGRlZi5cbiAgZGVmOiBvLkV4cHJlc3Npb258bnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVByb2plY3Rpb25EZWZPcChkZWY6IG8uRXhwcmVzc2lvbnxudWxsKTogUHJvamVjdGlvbkRlZk9wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuUHJvamVjdGlvbkRlZixcbiAgICBkZWYsXG4gICAgLi4uTkVXX09QLFxuICB9O1xufVxuXG4vKipcbiAqIEFuIG9wIHRoYXQgY3JlYXRlcyBhIGNvbnRlbnQgcHJvamVjdGlvbiBzbG90LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb2plY3Rpb25PcCBleHRlbmRzIE9wPENyZWF0ZU9wPiwgQ29uc3VtZXNTbG90T3BUcmFpdCB7XG4gIGtpbmQ6IE9wS2luZC5Qcm9qZWN0aW9uO1xuXG4gIHhyZWY6IFhyZWZJZDtcblxuICBwcm9qZWN0aW9uU2xvdEluZGV4OiBudW1iZXI7XG5cbiAgYXR0cmlidXRlczogbnVsbHxvLkxpdGVyYWxBcnJheUV4cHI7XG5cbiAgbG9jYWxSZWZzOiBzdHJpbmdbXTtcblxuICBzZWxlY3Rvcjogc3RyaW5nO1xuXG4gIGkxOG5QbGFjZWhvbGRlcj86IGkxOG4uVGFnUGxhY2Vob2xkZXI7XG5cbiAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUHJvamVjdGlvbk9wKFxuICAgIHhyZWY6IFhyZWZJZCwgc2VsZWN0b3I6IHN0cmluZywgaTE4blBsYWNlaG9sZGVyOiBpMThuLlRhZ1BsYWNlaG9sZGVyfHVuZGVmaW5lZCxcbiAgICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pOiBQcm9qZWN0aW9uT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5Qcm9qZWN0aW9uLFxuICAgIHhyZWYsXG4gICAgaGFuZGxlOiBuZXcgU2xvdEhhbmRsZSgpLFxuICAgIHNlbGVjdG9yLFxuICAgIGkxOG5QbGFjZWhvbGRlcixcbiAgICBwcm9qZWN0aW9uU2xvdEluZGV4OiAwLFxuICAgIGF0dHJpYnV0ZXM6IG51bGwsXG4gICAgbG9jYWxSZWZzOiBbXSxcbiAgICBzb3VyY2VTcGFuLFxuICAgIC4uLk5FV19PUCxcbiAgICAuLi5UUkFJVF9DT05TVU1FU19TTE9ULFxuICB9O1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gYXR0cmlidXRlIHRoYXQgaGFzIGJlZW4gZXh0cmFjdGVkIGZvciBpbmNsdXNpb24gaW4gdGhlIGNvbnN0cyBhcnJheS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHRyYWN0ZWRBdHRyaWJ1dGVPcCBleHRlbmRzIE9wPENyZWF0ZU9wPiB7XG4gIGtpbmQ6IE9wS2luZC5FeHRyYWN0ZWRBdHRyaWJ1dGU7XG5cbiAgLyoqXG4gICAqIFRoZSBgWHJlZklkYCBvZiB0aGUgdGVtcGxhdGUtbGlrZSBlbGVtZW50IHRoZSBleHRyYWN0ZWQgYXR0cmlidXRlIHdpbGwgYmVsb25nIHRvLlxuICAgKi9cbiAgdGFyZ2V0OiBYcmVmSWQ7XG5cbiAgLyoqXG4gICAqICBUaGUga2luZCBvZiBiaW5kaW5nIHJlcHJlc2VudGVkIGJ5IHRoaXMgZXh0cmFjdGVkIGF0dHJpYnV0ZS5cbiAgICovXG4gIGJpbmRpbmdLaW5kOiBCaW5kaW5nS2luZDtcblxuICAvKipcbiAgICogVGhlIG5hbWVzcGFjZSBvZiB0aGUgYXR0cmlidXRlIChvciBudWxsIGlmIG5vbmUpLlxuICAgKi9cbiAgbmFtZXNwYWNlOiBzdHJpbmd8bnVsbDtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGV4dHJhY3RlZCBhdHRyaWJ1dGUuXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBleHByZXNzaW9uIG9mIHRoZSBleHRyYWN0ZWQgYXR0cmlidXRlLlxuICAgKi9cbiAgZXhwcmVzc2lvbjogby5FeHByZXNzaW9ufG51bGw7XG5cbiAgLyoqXG4gICAqIElmIHRoaXMgYXR0cmlidXRlIGhhcyBhIGNvcnJlc3BvbmRpbmcgaTE4biBhdHRyaWJ1dGUgKGUuZy4gYGkxOG4tZm9vPVwibTpkXCJgKSwgdGhlbiB0aGlzIGlzIHRoZVxuICAgKiBpMThuIGNvbnRleHQgZm9yIGl0LlxuICAgKi9cbiAgaTE4bkNvbnRleHQ6IFhyZWZJZHxudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VjdXJpdHkgY29udGV4dCBvZiB0aGUgYmluZGluZy5cbiAgICovXG4gIHNlY3VyaXR5Q29udGV4dDogU2VjdXJpdHlDb250ZXh0fFNlY3VyaXR5Q29udGV4dFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgdHJ1c3RlZCB2YWx1ZSBmdW5jdGlvbiBmb3IgdGhpcyBwcm9wZXJ0eS5cbiAgICovXG4gIHRydXN0ZWRWYWx1ZUZuOiBvLkV4cHJlc3Npb258bnVsbDtcblxuICBpMThuTWVzc2FnZTogaTE4bi5NZXNzYWdlfG51bGw7XG59XG5cbi8qKlxuICogQ3JlYXRlIGFuIGBFeHRyYWN0ZWRBdHRyaWJ1dGVPcGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFeHRyYWN0ZWRBdHRyaWJ1dGVPcChcbiAgICB0YXJnZXQ6IFhyZWZJZCwgYmluZGluZ0tpbmQ6IEJpbmRpbmdLaW5kLCBuYW1lc3BhY2U6IHN0cmluZ3xudWxsLCBuYW1lOiBzdHJpbmcsXG4gICAgZXhwcmVzc2lvbjogby5FeHByZXNzaW9ufG51bGwsIGkxOG5Db250ZXh0OiBYcmVmSWR8bnVsbCwgaTE4bk1lc3NhZ2U6IGkxOG4uTWVzc2FnZXxudWxsLFxuICAgIHNlY3VyaXR5Q29udGV4dDogU2VjdXJpdHlDb250ZXh0fFNlY3VyaXR5Q29udGV4dFtdKTogRXh0cmFjdGVkQXR0cmlidXRlT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5FeHRyYWN0ZWRBdHRyaWJ1dGUsXG4gICAgdGFyZ2V0LFxuICAgIGJpbmRpbmdLaW5kLFxuICAgIG5hbWVzcGFjZSxcbiAgICBuYW1lLFxuICAgIGV4cHJlc3Npb24sXG4gICAgaTE4bkNvbnRleHQsXG4gICAgaTE4bk1lc3NhZ2UsXG4gICAgc2VjdXJpdHlDb250ZXh0LFxuICAgIHRydXN0ZWRWYWx1ZUZuOiBudWxsLFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZWZlck9wIGV4dGVuZHMgT3A8Q3JlYXRlT3A+LCBDb25zdW1lc1Nsb3RPcFRyYWl0IHtcbiAga2luZDogT3BLaW5kLkRlZmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgeHJlZiBvZiB0aGlzIGRlZmVyIG9wLlxuICAgKi9cbiAgeHJlZjogWHJlZklkO1xuXG4gIC8qKlxuICAgKiBUaGUgeHJlZiBvZiB0aGUgbWFpbiB2aWV3LlxuICAgKi9cbiAgbWFpblZpZXc6IFhyZWZJZDtcblxuICBtYWluU2xvdDogU2xvdEhhbmRsZTtcblxuICAvKipcbiAgICogU2Vjb25kYXJ5IGxvYWRpbmcgYmxvY2sgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZGVmZXIgb3AuXG4gICAqL1xuICBsb2FkaW5nVmlldzogWHJlZklkfG51bGw7XG5cbiAgbG9hZGluZ1Nsb3Q6IFNsb3RIYW5kbGV8bnVsbDtcblxuICAvKipcbiAgICogU2Vjb25kYXJ5IHBsYWNlaG9sZGVyIGJsb2NrIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGRlZmVyIG9wLlxuICAgKi9cbiAgcGxhY2Vob2xkZXJWaWV3OiBYcmVmSWR8bnVsbDtcblxuICBwbGFjZWhvbGRlclNsb3Q6IFNsb3RIYW5kbGV8bnVsbDtcblxuICAvKipcbiAgICogU2Vjb25kYXJ5IGVycm9yIGJsb2NrIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGRlZmVyIG9wLlxuICAgKi9cbiAgZXJyb3JWaWV3OiBYcmVmSWR8bnVsbDtcblxuICBlcnJvclNsb3Q6IFNsb3RIYW5kbGV8bnVsbDtcblxuICBwbGFjZWhvbGRlck1pbmltdW1UaW1lOiBudW1iZXJ8bnVsbDtcbiAgbG9hZGluZ01pbmltdW1UaW1lOiBudW1iZXJ8bnVsbDtcbiAgbG9hZGluZ0FmdGVyVGltZTogbnVtYmVyfG51bGw7XG5cbiAgcGxhY2Vob2xkZXJDb25maWc6IG8uRXhwcmVzc2lvbnxudWxsO1xuICBsb2FkaW5nQ29uZmlnOiBvLkV4cHJlc3Npb258bnVsbDtcblxuICAvKipcbiAgICogTWV0YWRhdGEgYWJvdXQgdGhpcyBkZWZlciBibG9jaywgcHJvdmlkZWQgYnkgdGhlIHBhcnNlci5cbiAgICovXG4gIG1ldGFkYXRhOiBSM0RlZmVyQmxvY2tNZXRhZGF0YTtcblxuICAvKipcbiAgICogQWZ0ZXIgcHJvY2Vzc2luZywgdGhlIHJlc29sdmVyIGZ1bmN0aW9uIGZvciB0aGUgZGVmZXIgZGVwcyB3aWxsIGJlIGV4dHJhY3RlZCB0byB0aGUgY29uc3RhbnRcbiAgICogcG9vbCwgYW5kIGEgcmVmZXJlbmNlIHRvIHRoYXQgZnVuY3Rpb24gd2lsbCBiZSBwb3B1bGF0ZWQgaGVyZS5cbiAgICovXG4gIHJlc29sdmVyRm46IG8uRXhwcmVzc2lvbnxudWxsO1xuXG4gIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlZmVyT3AoXG4gICAgeHJlZjogWHJlZklkLCBtYWluOiBYcmVmSWQsIG1haW5TbG90OiBTbG90SGFuZGxlLCBtZXRhZGF0YTogUjNEZWZlckJsb2NrTWV0YWRhdGEsXG4gICAgcmVzb2x2ZXJGbjogby5FeHByZXNzaW9ufG51bGwsIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbik6IERlZmVyT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5EZWZlcixcbiAgICB4cmVmLFxuICAgIGhhbmRsZTogbmV3IFNsb3RIYW5kbGUoKSxcbiAgICBtYWluVmlldzogbWFpbixcbiAgICBtYWluU2xvdCxcbiAgICBsb2FkaW5nVmlldzogbnVsbCxcbiAgICBsb2FkaW5nU2xvdDogbnVsbCxcbiAgICBsb2FkaW5nQ29uZmlnOiBudWxsLFxuICAgIGxvYWRpbmdNaW5pbXVtVGltZTogbnVsbCxcbiAgICBsb2FkaW5nQWZ0ZXJUaW1lOiBudWxsLFxuICAgIHBsYWNlaG9sZGVyVmlldzogbnVsbCxcbiAgICBwbGFjZWhvbGRlclNsb3Q6IG51bGwsXG4gICAgcGxhY2Vob2xkZXJDb25maWc6IG51bGwsXG4gICAgcGxhY2Vob2xkZXJNaW5pbXVtVGltZTogbnVsbCxcbiAgICBlcnJvclZpZXc6IG51bGwsXG4gICAgZXJyb3JTbG90OiBudWxsLFxuICAgIG1ldGFkYXRhLFxuICAgIHJlc29sdmVyRm4sXG4gICAgc291cmNlU3BhbixcbiAgICAuLi5ORVdfT1AsXG4gICAgLi4uVFJBSVRfQ09OU1VNRVNfU0xPVCxcbiAgICBudW1TbG90c1VzZWQ6IDIsXG4gIH07XG59XG5pbnRlcmZhY2UgRGVmZXJUcmlnZ2VyQmFzZSB7XG4gIGtpbmQ6IERlZmVyVHJpZ2dlcktpbmQ7XG59XG5cbmludGVyZmFjZSBEZWZlclRyaWdnZXJXaXRoVGFyZ2V0QmFzZSBleHRlbmRzIERlZmVyVHJpZ2dlckJhc2Uge1xuICB0YXJnZXROYW1lOiBzdHJpbmd8bnVsbDtcblxuICAvKipcbiAgICogVGhlIFhyZWYgb2YgdGhlIHRhcmdldGVkIG5hbWUuIE1heSBiZSBpbiBhIGRpZmZlcmVudCB2aWV3LlxuICAgKi9cbiAgdGFyZ2V0WHJlZjogWHJlZklkfG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBzbG90IGluZGV4IG9mIHRoZSBuYW1lZCByZWZlcmVuY2UsIGluc2lkZSB0aGUgdmlldyBwcm92aWRlZCBiZWxvdy4gVGhpcyBzbG90IG1heSBub3QgYmVcbiAgICogaW5zaWRlIHRoZSBjdXJyZW50IHZpZXcsIGFuZCBpcyBoYW5kbGVkIHNwZWNpYWxseSBhcyBhIHJlc3VsdC5cbiAgICovXG4gIHRhcmdldFNsb3Q6IFNsb3RIYW5kbGV8bnVsbDtcblxuICB0YXJnZXRWaWV3OiBYcmVmSWR8bnVsbDtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIHN0ZXBzIHRvIHdhbGsgdXAgb3IgZG93biB0aGUgdmlldyB0cmVlIHRvIGZpbmQgdGhlIHRhcmdldCBsb2NhbFJlZi5cbiAgICovXG4gIHRhcmdldFNsb3RWaWV3U3RlcHM6IG51bWJlcnxudWxsO1xufVxuXG5pbnRlcmZhY2UgRGVmZXJJZGxlVHJpZ2dlciBleHRlbmRzIERlZmVyVHJpZ2dlckJhc2Uge1xuICBraW5kOiBEZWZlclRyaWdnZXJLaW5kLklkbGU7XG59XG5cbmludGVyZmFjZSBEZWZlckltbWVkaWF0ZVRyaWdnZXIgZXh0ZW5kcyBEZWZlclRyaWdnZXJCYXNlIHtcbiAga2luZDogRGVmZXJUcmlnZ2VyS2luZC5JbW1lZGlhdGU7XG59XG5cbmludGVyZmFjZSBEZWZlckhvdmVyVHJpZ2dlciBleHRlbmRzIERlZmVyVHJpZ2dlcldpdGhUYXJnZXRCYXNlIHtcbiAga2luZDogRGVmZXJUcmlnZ2VyS2luZC5Ib3Zlcjtcbn1cblxuaW50ZXJmYWNlIERlZmVyVGltZXJUcmlnZ2VyIGV4dGVuZHMgRGVmZXJUcmlnZ2VyQmFzZSB7XG4gIGtpbmQ6IERlZmVyVHJpZ2dlcktpbmQuVGltZXI7XG5cbiAgZGVsYXk6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIERlZmVySW50ZXJhY3Rpb25UcmlnZ2VyIGV4dGVuZHMgRGVmZXJUcmlnZ2VyV2l0aFRhcmdldEJhc2Uge1xuICBraW5kOiBEZWZlclRyaWdnZXJLaW5kLkludGVyYWN0aW9uO1xufVxuXG5pbnRlcmZhY2UgRGVmZXJWaWV3cG9ydFRyaWdnZXIgZXh0ZW5kcyBEZWZlclRyaWdnZXJXaXRoVGFyZ2V0QmFzZSB7XG4gIGtpbmQ6IERlZmVyVHJpZ2dlcktpbmQuVmlld3BvcnQ7XG59XG5cbi8qKlxuICogVGhlIHVuaW9uIHR5cGUgb2YgYWxsIGRlZmVyIHRyaWdnZXIgaW50ZXJmYWNlcy5cbiAqL1xuZXhwb3J0IHR5cGUgRGVmZXJUcmlnZ2VyID0gRGVmZXJJZGxlVHJpZ2dlcnxEZWZlckltbWVkaWF0ZVRyaWdnZXJ8RGVmZXJUaW1lclRyaWdnZXJ8XG4gICAgRGVmZXJIb3ZlclRyaWdnZXJ8RGVmZXJJbnRlcmFjdGlvblRyaWdnZXJ8RGVmZXJWaWV3cG9ydFRyaWdnZXI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVmZXJPbk9wIGV4dGVuZHMgT3A8Q3JlYXRlT3A+IHtcbiAga2luZDogT3BLaW5kLkRlZmVyT247XG5cbiAgZGVmZXI6IFhyZWZJZDtcblxuICAvKipcbiAgICogVGhlIHRyaWdnZXIgZm9yIHRoaXMgZGVmZXIgb3AgKGUuZy4gaWRsZSwgaG92ZXIsIGV0YykuXG4gICAqL1xuICB0cmlnZ2VyOiBEZWZlclRyaWdnZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZW1pdCB0aGUgcHJlZmV0Y2ggdmVyc2lvbiBvZiB0aGUgaW5zdHJ1Y3Rpb24uXG4gICAqL1xuICBwcmVmZXRjaDogYm9vbGVhbjtcblxuICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWZlck9uT3AoXG4gICAgZGVmZXI6IFhyZWZJZCwgdHJpZ2dlcjogRGVmZXJUcmlnZ2VyLCBwcmVmZXRjaDogYm9vbGVhbixcbiAgICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW4pOiBEZWZlck9uT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5EZWZlck9uLFxuICAgIGRlZmVyLFxuICAgIHRyaWdnZXIsXG4gICAgcHJlZmV0Y2gsXG4gICAgc291cmNlU3BhbixcbiAgICAuLi5ORVdfT1AsXG4gIH07XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNpbmdsZSB2YWx1ZSBpbiBhbiBpMThuIHBhcmFtIG1hcC4gRWFjaCBwbGFjZWhvbGRlciBpbiB0aGUgbWFwIG1heSBoYXZlIG11bHRpcGxlIG9mXG4gKiB0aGVzZSB2YWx1ZXMgYXNzb2NpYXRlZCB3aXRoIGl0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEkxOG5QYXJhbVZhbHVlIHtcbiAgLyoqXG4gICAqIFRoZSB2YWx1ZS4gVGhpcyBjYW4gYmUgZWl0aGVyIGEgc2xvdCBudW1iZXIsIHNwZWNpYWwgc3RyaW5nLCBvciBjb21wb3VuZC12YWx1ZSBjb25zaXN0aW5nIG9mIGFuXG4gICAqIGVsZW1lbnQgc2xvdCBudW1iZXIgYW5kIHRlbXBsYXRlIHNsb3QgbnVtYmVyLlxuICAgKi9cbiAgdmFsdWU6IHN0cmluZ3xudW1iZXJ8e2VsZW1lbnQ6IG51bWJlciwgdGVtcGxhdGU6IG51bWJlcn07XG5cbiAgLyoqXG4gICAqIFRoZSBzdWItdGVtcGxhdGUgaW5kZXggYXNzb2NpYXRlZCB3aXRoIHRoZSB2YWx1ZS5cbiAgICovXG4gIHN1YlRlbXBsYXRlSW5kZXg6IG51bWJlcnxudWxsO1xuXG4gIC8qKlxuICAgKiBGbGFncyBhc3NvY2lhdGVkIHdpdGggdGhlIHZhbHVlLlxuICAgKi9cbiAgZmxhZ3M6IEkxOG5QYXJhbVZhbHVlRmxhZ3M7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBpMThuIG1lc3NhZ2UgdGhhdCBoYXMgYmVlbiBleHRyYWN0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgY29uc3RzIGFycmF5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEkxOG5NZXNzYWdlT3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4ge1xuICBraW5kOiBPcEtpbmQuSTE4bk1lc3NhZ2U7XG5cbiAgLyoqXG4gICAqIEFuIGlkIHVzZWQgdG8gcmVmZXJlbmNlIHRoaXMgbWVzc2FnZS5cbiAgICovXG4gIHhyZWY6IFhyZWZJZDtcblxuICAvKipcbiAgICogVGhlIGNvbnRleHQgZnJvbSB3aGljaCB0aGlzIG1lc3NhZ2Ugd2FzIGV4dHJhY3RlZFxuICAgKiBUT0RPOiByZW1vdmUgdGhpcywgYW5kIGFkZCBhbm90aGVyIHByb3BlcnR5IGhlcmUgaW5zdGVhZCB0byBtYXRjaCBFeHRyYWN0ZWRBdHRyaWJ1dGVzXG4gICAqL1xuICBpMThuQ29udGV4dDogWHJlZklkO1xuXG4gIC8qKlxuICAgKiBBIHJlZmVyZW5jZSB0byB0aGUgaTE4biBvcCB0aGlzIG1lc3NhZ2Ugd2FzIGV4dHJhY3RlZCBmcm9tLlxuICAgKlxuICAgKiBUaGlzIG1pZ2h0IGJlIG51bGwsIHdoaWNoIG1lYW5zIHRoaXMgbWVzc2FnZSBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGEgYmxvY2suIFRoaXMgcHJvYmFibHlcbiAgICogbWVhbnMgaXQgaXMgYW4gaTE4biBhdHRyaWJ1dGUncyBtZXNzYWdlLlxuICAgKi9cbiAgaTE4bkJsb2NrOiBYcmVmSWR8bnVsbDtcblxuICAvKipcbiAgICogVGhlIGkxOG4gbWVzc2FnZSByZXByZXNlbnRlZCBieSB0aGlzIG9wLlxuICAgKi9cbiAgbWVzc2FnZTogaTE4bi5NZXNzYWdlO1xuXG4gIC8qKlxuICAgKiBUaGUgcGxhY2Vob2xkZXIgdXNlZCBmb3IgdGhpcyBtZXNzYWdlIHdoZW4gaXQgaXMgcmVmZXJlbmNlZCBpbiBhbm90aGVyIG1lc3NhZ2UuXG4gICAqIEZvciBhIHRvcC1sZXZlbCBtZXNzYWdlIHRoYXQgaXNuJ3QgcmVmZXJlbmNlZCBmcm9tIGFub3RoZXIgbWVzc2FnZSwgdGhpcyB3aWxsIGJlIG51bGwuXG4gICAqL1xuICBtZXNzYWdlUGxhY2Vob2xkZXI6IHN0cmluZ3xudWxsO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgbWVzc2FnZSBuZWVkcyBwb3N0LXByb2Nlc3NpbmcuXG4gICAqL1xuICBuZWVkc1Bvc3Rwcm9jZXNzaW5nOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFyYW0gbWFwLCB3aXRoIHBsYWNlaG9sZGVycyByZXByZXNlbnRlZCBhcyBhbiBgRXhwcmVzc2lvbmAuXG4gICAqL1xuICBwYXJhbXM6IE1hcDxzdHJpbmcsIG8uRXhwcmVzc2lvbj47XG5cbiAgLyoqXG4gICAqIFRoZSBwb3N0LXByb2Nlc3NpbmcgcGFyYW0gbWFwLCB3aXRoIHBsYWNlaG9sZGVycyByZXByZXNlbnRlZCBhcyBhbiBgRXhwcmVzc2lvbmAuXG4gICAqL1xuICBwb3N0cHJvY2Vzc2luZ1BhcmFtczogTWFwPHN0cmluZywgby5FeHByZXNzaW9uPjtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIHN1Yi1tZXNzYWdlcyB0aGF0IGFyZSByZWZlcmVuY2VkIGJ5IHRoaXMgbWVzc2FnZS5cbiAgICovXG4gIHN1Yk1lc3NhZ2VzOiBYcmVmSWRbXTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYW4gYEV4dHJhY3RlZE1lc3NhZ2VPcGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJMThuTWVzc2FnZU9wKFxuICAgIHhyZWY6IFhyZWZJZCwgaTE4bkNvbnRleHQ6IFhyZWZJZCwgaTE4bkJsb2NrOiBYcmVmSWR8bnVsbCwgbWVzc2FnZTogaTE4bi5NZXNzYWdlLFxuICAgIG1lc3NhZ2VQbGFjZWhvbGRlcjogc3RyaW5nfG51bGwsIHBhcmFtczogTWFwPHN0cmluZywgby5FeHByZXNzaW9uPixcbiAgICBwb3N0cHJvY2Vzc2luZ1BhcmFtczogTWFwPHN0cmluZywgby5FeHByZXNzaW9uPiwgbmVlZHNQb3N0cHJvY2Vzc2luZzogYm9vbGVhbik6IEkxOG5NZXNzYWdlT3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5JMThuTWVzc2FnZSxcbiAgICB4cmVmLFxuICAgIGkxOG5Db250ZXh0LFxuICAgIGkxOG5CbG9jayxcbiAgICBtZXNzYWdlLFxuICAgIG1lc3NhZ2VQbGFjZWhvbGRlcixcbiAgICBwYXJhbXMsXG4gICAgcG9zdHByb2Nlc3NpbmdQYXJhbXMsXG4gICAgbmVlZHNQb3N0cHJvY2Vzc2luZyxcbiAgICBzdWJNZXNzYWdlczogW10sXG4gICAgLi4uTkVXX09QLFxuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEkxOG5PcEJhc2UgZXh0ZW5kcyBPcDxDcmVhdGVPcD4sIENvbnN1bWVzU2xvdE9wVHJhaXQge1xuICBraW5kOiBPcEtpbmQuSTE4blN0YXJ0fE9wS2luZC5JMThuO1xuXG4gIC8qKlxuICAgKiBgWHJlZklkYCBhbGxvY2F0ZWQgZm9yIHRoaXMgaTE4biBibG9jay5cbiAgICovXG4gIHhyZWY6IFhyZWZJZDtcblxuICAvKipcbiAgICogQSByZWZlcmVuY2UgdG8gdGhlIHJvb3QgaTE4biBibG9jayB0aGF0IHRoaXMgb25lIGJlbG9uZ3MgdG8uIEZvciBhIHJvb3QgaTE4biBibG9jaywgdGhpcyBpc1xuICAgKiB0aGUgc2FtZSBhcyB4cmVmLlxuICAgKi9cbiAgcm9vdDogWHJlZklkO1xuXG4gIC8qKlxuICAgKiBUaGUgaTE4biBtZXRhZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhpcyBvcC5cbiAgICovXG4gIG1lc3NhZ2U6IGkxOG4uTWVzc2FnZTtcblxuICAvKipcbiAgICogVGhlIGluZGV4IGluIHRoZSBjb25zdHMgYXJyYXkgd2hlcmUgdGhlIG1lc3NhZ2UgaTE4biBtZXNzYWdlIGlzIHN0b3JlZC5cbiAgICovXG4gIG1lc3NhZ2VJbmRleDogQ29uc3RJbmRleHxudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5kZXggb2YgdGhpcyBzdWItYmxvY2sgaW4gdGhlIGkxOG4gbWVzc2FnZS4gRm9yIGEgcm9vdCBpMThuIGJsb2NrLCB0aGlzIGlzIG51bGwuXG4gICAqL1xuICBzdWJUZW1wbGF0ZUluZGV4OiBudW1iZXJ8bnVsbDtcblxuICAvKipcbiAgICogVGhlIGkxOG4gY29udGV4dCBnZW5lcmF0ZWQgZnJvbSB0aGlzIGJsb2NrLiBJbml0aWFsbHkgbnVsbCwgdW50aWwgdGhlIGNvbnRleHQgaXMgY3JlYXRlZC5cbiAgICovXG4gIGNvbnRleHQ6IFhyZWZJZHxudWxsO1xuXG4gIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3BhbnxudWxsO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gZW1wdHkgaTE4biBibG9jay5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJMThuT3AgZXh0ZW5kcyBJMThuT3BCYXNlIHtcbiAga2luZDogT3BLaW5kLkkxOG47XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgc3RhcnQgb2YgYW4gaTE4biBibG9jay5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJMThuU3RhcnRPcCBleHRlbmRzIEkxOG5PcEJhc2Uge1xuICBraW5kOiBPcEtpbmQuSTE4blN0YXJ0O1xufVxuXG4vKipcbiAqIENyZWF0ZSBhbiBgSTE4blN0YXJ0T3BgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSTE4blN0YXJ0T3AoXG4gICAgeHJlZjogWHJlZklkLCBtZXNzYWdlOiBpMThuLk1lc3NhZ2UsIHJvb3Q6IFhyZWZJZHx1bmRlZmluZWQsXG4gICAgc291cmNlU3BhbjogUGFyc2VTb3VyY2VTcGFufG51bGwpOiBJMThuU3RhcnRPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLkkxOG5TdGFydCxcbiAgICB4cmVmLFxuICAgIGhhbmRsZTogbmV3IFNsb3RIYW5kbGUoKSxcbiAgICByb290OiByb290ID8/IHhyZWYsXG4gICAgbWVzc2FnZSxcbiAgICBtZXNzYWdlSW5kZXg6IG51bGwsXG4gICAgc3ViVGVtcGxhdGVJbmRleDogbnVsbCxcbiAgICBjb250ZXh0OiBudWxsLFxuICAgIHNvdXJjZVNwYW4sXG4gICAgLi4uTkVXX09QLFxuICAgIC4uLlRSQUlUX0NPTlNVTUVTX1NMT1QsXG4gIH07XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgZW5kIG9mIGFuIGkxOG4gYmxvY2suXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSTE4bkVuZE9wIGV4dGVuZHMgT3A8Q3JlYXRlT3A+IHtcbiAga2luZDogT3BLaW5kLkkxOG5FbmQ7XG5cbiAgLyoqXG4gICAqIFRoZSBgWHJlZklkYCBvZiB0aGUgYEkxOG5TdGFydE9wYCB0aGF0IGNyZWF0ZWQgdGhpcyBibG9jay5cbiAgICovXG4gIHhyZWY6IFhyZWZJZDtcblxuICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW58bnVsbDtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYW4gYEkxOG5FbmRPcGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJMThuRW5kT3AoeHJlZjogWHJlZklkLCBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW58bnVsbCk6IEkxOG5FbmRPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLkkxOG5FbmQsXG4gICAgeHJlZixcbiAgICBzb3VyY2VTcGFuLFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cblxuLyoqXG4gKiBBbiBvcCB0aGF0IHJlcHJlc2VudHMgdGhlIHN0YXJ0IG9mIGFuIElDVSBleHByZXNzaW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEljdVN0YXJ0T3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4ge1xuICBraW5kOiBPcEtpbmQuSWN1U3RhcnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgSUNVLlxuICAgKi9cbiAgeHJlZjogWHJlZklkO1xuXG4gIC8qKlxuICAgKiBUaGUgaTE4biBtZXNzYWdlIGZvciB0aGlzIElDVS5cbiAgICovXG4gIG1lc3NhZ2U6IGkxOG4uTWVzc2FnZTtcblxuICAvKipcbiAgICogUGxhY2Vob2xkZXIgdXNlZCB0byByZWZlcmVuY2UgdGhpcyBJQ1UgaW4gb3RoZXIgaTE4biBtZXNzYWdlcy5cbiAgICovXG4gIG1lc3NhZ2VQbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHJlZmVyZW5jZSB0byB0aGUgaTE4biBjb250ZXh0IGZvciB0aGlzIG9wLiBJbml0aWFsbHkgbnVsbCwgdW50aWwgdGhlIGNvbnRleHQgaXMgY3JlYXRlZC5cbiAgICovXG4gIGNvbnRleHQ6IFhyZWZJZHxudWxsO1xuXG4gIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIElDVSBzdGFydCBvcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUljdVN0YXJ0T3AoXG4gICAgeHJlZjogWHJlZklkLCBtZXNzYWdlOiBpMThuLk1lc3NhZ2UsIG1lc3NhZ2VQbGFjZWhvbGRlcjogc3RyaW5nLFxuICAgIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbik6IEljdVN0YXJ0T3Age1xuICByZXR1cm4ge1xuICAgIGtpbmQ6IE9wS2luZC5JY3VTdGFydCxcbiAgICB4cmVmLFxuICAgIG1lc3NhZ2UsXG4gICAgbWVzc2FnZVBsYWNlaG9sZGVyLFxuICAgIGNvbnRleHQ6IG51bGwsXG4gICAgc291cmNlU3BhbixcbiAgICAuLi5ORVdfT1AsXG4gIH07XG59XG5cbi8qKlxuICogQW4gb3AgdGhhdCByZXByZXNlbnRzIHRoZSBlbmQgb2YgYW4gSUNVIGV4cHJlc3Npb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSWN1RW5kT3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4ge1xuICBraW5kOiBPcEtpbmQuSWN1RW5kO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIGNvcnJlc3BvbmRpbmcgSWN1U3RhcnRPcC5cbiAgICovXG4gIHhyZWY6IFhyZWZJZDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIElDVSBlbmQgb3AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJY3VFbmRPcCh4cmVmOiBYcmVmSWQpOiBJY3VFbmRPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLkljdUVuZCxcbiAgICB4cmVmLFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cblxuLyoqXG4gKiBBbiBvcCB0aGF0IHJlcHJlc2VudHMgYSBwbGFjZWhvbGRlciBpbiBhbiBJQ1UgZXhwcmVzc2lvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJY3VQbGFjZWhvbGRlck9wIGV4dGVuZHMgT3A8Q3JlYXRlT3A+IHtcbiAga2luZDogT3BLaW5kLkljdVBsYWNlaG9sZGVyO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIElDVSBwbGFjZWhvbGRlci5cbiAgICovXG4gIHhyZWY6IFhyZWZJZDtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHBsYWNlaG9sZGVyIGluIHRoZSBJQ1UgZXhwcmVzc2lvbi5cbiAgICovXG4gIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHN0YXRpYyBzdHJpbmdzIHRvIGJlIGNvbWJpbmVkIHdpdGggZHluYW1pYyBleHByZXNzaW9uIHZhbHVlcyB0byBmb3JtIHRoZSB0ZXh0LiBUaGlzIHdvcmtzXG4gICAqIGxpa2UgaW50ZXJwb2xhdGlvbiwgYnV0IHRoZSBzdHJpbmdzIGFyZSBjb21iaW5lZCBhdCBjb21waWxlIHRpbWUsIHVzaW5nIHNwZWNpYWwgcGxhY2Vob2xkZXJzXG4gICAqIGZvciB0aGUgZHluYW1pYyBleHByZXNzaW9ucywgYW5kIHB1dCBpbnRvIHRoZSB0cmFuc2xhdGVkIG1lc3NhZ2UuXG4gICAqL1xuICBzdHJpbmdzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUGxhY2Vob2xkZXIgdmFsdWVzIGZvciB0aGUgaTE4biBleHByZXNzaW9ucyB0byBiZSBjb21iaW5lZCB3aXRoIHRoZSBzdGF0aWMgc3RyaW5ncyB0byBmb3JtIHRoZVxuICAgKiBmdWxsIHBsYWNlaG9sZGVyIHZhbHVlLlxuICAgKi9cbiAgZXhwcmVzc2lvblBsYWNlaG9sZGVyczogSTE4blBhcmFtVmFsdWVbXTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIElDVSBwbGFjZWhvbGRlciBvcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUljdVBsYWNlaG9sZGVyT3AoXG4gICAgeHJlZjogWHJlZklkLCBuYW1lOiBzdHJpbmcsIHN0cmluZ3M6IHN0cmluZ1tdKTogSWN1UGxhY2Vob2xkZXJPcCB7XG4gIHJldHVybiB7XG4gICAga2luZDogT3BLaW5kLkljdVBsYWNlaG9sZGVyLFxuICAgIHhyZWYsXG4gICAgbmFtZSxcbiAgICBzdHJpbmdzLFxuICAgIGV4cHJlc3Npb25QbGFjZWhvbGRlcnM6IFtdLFxuICAgIC4uLk5FV19PUCxcbiAgfTtcbn1cblxuLyoqXG4gKiBBbiBpMThuIGNvbnRleHQgdGhhdCBpcyB1c2VkIHRvIGdlbmVyYXRlIGEgdHJhbnNsYXRlZCBpMThuIG1lc3NhZ2UuIEEgc2VwYXJhdGUgY29udGV4dCBpcyBjcmVhdGVkXG4gKiBmb3IgdGhyZWUgZGlmZmVyZW50IHNjZW5hcmlvczpcbiAqXG4gKiAxLiBGb3IgZWFjaCB0b3AtbGV2ZWwgaTE4biBibG9jay5cbiAqIDIuIEZvciBlYWNoIElDVSByZWZlcmVuY2VkIGFzIGEgc3ViLW1lc3NhZ2UuIElDVXMgdGhhdCBhcmUgcmVmZXJlbmNlZCBhcyBhIHN1Yi1tZXNzYWdlIHdpbGwgYmVcbiAqICAgIHVzZWQgdG8gZ2VuZXJhdGUgYSBzZXBhcmF0ZSBpMThuIG1lc3NhZ2UsIGJ1dCB3aWxsIG5vdCBiZSBleHRyYWN0ZWQgZGlyZWN0bHkgaW50byB0aGUgY29uc3RzXG4gKiAgICBhcnJheS4gSW5zdGVhZCB0aGV5IHdpbGwgYmUgcHVsbGVkIGluIGFzIHBhcnQgb2YgdGhlIGluaXRpYWxpemF0aW9uIHN0YXRlbWVudHMgZm9yIHRoZSBtZXNzYWdlXG4gKiAgICB0aGF0IHJlZmVyZW5jZXMgdGhlbS5cbiAqIDMuIEZvciBlYWNoIGkxOG4gYXR0cmlidXRlLlxuICpcbiAqIENoaWxkIGkxOG4gYmxvY2tzLCByZXN1bHRpbmcgZnJvbSB0aGUgdXNlIG9mIGFuIG5nLXRlbXBsYXRlIGluc2lkZSBvZiBhIHBhcmVudCBpMThuIGJsb2NrLCBkbyBub3RcbiAqIGdlbmVyYXRlIGEgc2VwYXJhdGUgY29udGV4dC4gSW5zdGVhZCB0aGVpciBjb250ZW50IGlzIGluY2x1ZGVkIGluIHRoZSB0cmFuc2xhdGVkIG1lc3NhZ2UgZm9yXG4gKiB0aGVpciByb290IGJsb2NrLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEkxOG5Db250ZXh0T3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4ge1xuICBraW5kOiBPcEtpbmQuSTE4bkNvbnRleHQ7XG5cbiAgY29udGV4dEtpbmQ6IEkxOG5Db250ZXh0S2luZDtcblxuICAvKipcbiAgICogVGhlIGlkIG9mIHRoaXMgY29udGV4dC5cbiAgICovXG4gIHhyZWY6IFhyZWZJZDtcblxuICAvKipcbiAgICogQSByZWZlcmVuY2UgdG8gdGhlIEkxOG5TdGFydE9wIG9yIEkxOG5PcCB0aGlzIGNvbnRleHQgYmVsb25ncyB0by5cbiAgICpcbiAgICogSXQgaXMgcG9zc2libGUgZm9yIG11bHRpcGxlIGNvbnRleHRzIHRvIGJlbG9uZyB0byB0aGUgc2FtZSBibG9jaywgc2luY2UgYm90aCB0aGUgYmxvY2sgYW5kIGFueVxuICAgKiBJQ1VzIGluc2lkZSB0aGUgYmxvY2sgd2lsbCBlYWNoIGdldCB0aGVpciBvd24gY29udGV4dC5cbiAgICpcbiAgICogVGhpcyBtaWdodCBiZSBgbnVsbGAsIGluIHdoaWNoIGNhc2UgdGhlIGNvbnRleHQgaXMgbm90IGFzc29jaWF0ZWQgd2l0aCBhbiBpMThuIGJsb2NrLiBUaGlzXG4gICAqIHByb2JhYmx5IG1lYW5zIHRoYXQgaXQgYmVsb25ncyB0byBhbiBpMThuIGF0dHJpYnV0ZS5cbiAgICovXG4gIGkxOG5CbG9jazogWHJlZklkfG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBpMThuIG1lc3NhZ2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGV4dC5cbiAgICovXG4gIG1lc3NhZ2U6IGkxOG4uTWVzc2FnZTtcblxuICAvKipcbiAgICogVGhlIHBhcmFtIG1hcCBmb3IgdGhpcyBjb250ZXh0LlxuICAgKi9cbiAgcGFyYW1zOiBNYXA8c3RyaW5nLCBJMThuUGFyYW1WYWx1ZVtdPjtcblxuICAvKipcbiAgICogVGhlIHBvc3QtcHJvY2Vzc2luZyBwYXJhbSBtYXAgZm9yIHRoaXMgY29udGV4dC5cbiAgICovXG4gIHBvc3Rwcm9jZXNzaW5nUGFyYW1zOiBNYXA8c3RyaW5nLCBJMThuUGFyYW1WYWx1ZVtdPjtcblxuICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJMThuQ29udGV4dE9wKFxuICAgIGNvbnRleHRLaW5kOiBJMThuQ29udGV4dEtpbmQsIHhyZWY6IFhyZWZJZCwgaTE4bkJsb2NrOiBYcmVmSWR8bnVsbCwgbWVzc2FnZTogaTE4bi5NZXNzYWdlLFxuICAgIHNvdXJjZVNwYW46IFBhcnNlU291cmNlU3Bhbik6IEkxOG5Db250ZXh0T3Age1xuICBpZiAoaTE4bkJsb2NrID09PSBudWxsICYmIGNvbnRleHRLaW5kICE9PSBJMThuQ29udGV4dEtpbmQuQXR0cikge1xuICAgIHRocm93IG5ldyBFcnJvcignQXNzZXJ0aW9uRXJyb3I6IGkxOG5CbG9jayBtdXN0IGJlIHByb3ZpZGVkIGZvciBub24tYXR0cmlidXRlIGNvbnRleHRzLicpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuSTE4bkNvbnRleHQsXG4gICAgY29udGV4dEtpbmQsXG4gICAgeHJlZixcbiAgICBpMThuQmxvY2ssXG4gICAgbWVzc2FnZSxcbiAgICBzb3VyY2VTcGFuLFxuICAgIHBhcmFtczogbmV3IE1hcCgpLFxuICAgIHBvc3Rwcm9jZXNzaW5nUGFyYW1zOiBuZXcgTWFwKCksXG4gICAgLi4uTkVXX09QLFxuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEkxOG5BdHRyaWJ1dGVzT3AgZXh0ZW5kcyBPcDxDcmVhdGVPcD4sIENvbnN1bWVzU2xvdE9wVHJhaXQge1xuICBraW5kOiBPcEtpbmQuSTE4bkF0dHJpYnV0ZXM7XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRhcmdldGVkIGJ5IHRoZXNlIGF0dHJpYnV0ZXMuXG4gICAqL1xuICB0YXJnZXQ6IFhyZWZJZDtcblxuICAvKipcbiAgICogSTE4bkF0dHJpYnV0ZXMgaW5zdHJ1Y3Rpb25zIGNvcnJlc3BvbmQgdG8gYSBjb25zdCBhcnJheSB3aXRoIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24uXG4gICAqL1xuICBpMThuQXR0cmlidXRlc0NvbmZpZzogQ29uc3RJbmRleHxudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSTE4bkF0dHJpYnV0ZXNPcChcbiAgICB4cmVmOiBYcmVmSWQsIGhhbmRsZTogU2xvdEhhbmRsZSwgdGFyZ2V0OiBYcmVmSWQpOiBJMThuQXR0cmlidXRlc09wIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBPcEtpbmQuSTE4bkF0dHJpYnV0ZXMsXG4gICAgeHJlZixcbiAgICBoYW5kbGUsXG4gICAgdGFyZ2V0LFxuICAgIGkxOG5BdHRyaWJ1dGVzQ29uZmlnOiBudWxsLFxuICAgIC4uLk5FV19PUCxcbiAgICAuLi5UUkFJVF9DT05TVU1FU19TTE9ULFxuICB9O1xufVxuXG4vKipcbiAqIEFuIGluZGV4IGludG8gdGhlIGBjb25zdHNgIGFycmF5IHdoaWNoIGlzIHNoYXJlZCBhY3Jvc3MgdGhlIGNvbXBpbGF0aW9uIG9mIGFsbCB2aWV3cyBpbiBhXG4gKiBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCB0eXBlIENvbnN0SW5kZXggPSBudW1iZXIme19fYnJhbmQ6ICdDb25zdEluZGV4J307XG4iXX0=
|
|
@@ -43,14 +43,6 @@ export const TRAIT_DEPENDS_ON_SLOT_CONTEXT = {
|
|
|
43
43
|
export const TRAIT_CONSUMES_VARS = {
|
|
44
44
|
[ConsumesVarsTrait]: true,
|
|
45
45
|
};
|
|
46
|
-
/**
|
|
47
|
-
* Default values for `UsesVarOffset` fields (used with the spread operator to initialize
|
|
48
|
-
* implementors of this trait).
|
|
49
|
-
*/
|
|
50
|
-
export const TRAIT_USES_VAR_OFFSET = {
|
|
51
|
-
[UsesVarOffset]: true,
|
|
52
|
-
varOffset: null,
|
|
53
|
-
};
|
|
54
46
|
/**
|
|
55
47
|
* Test whether an operation implements `ConsumesSlotOpTrait`.
|
|
56
48
|
*/
|
|
@@ -72,4 +64,4 @@ export function hasConsumesVarsTrait(value) {
|
|
|
72
64
|
export function hasUsesVarOffsetTrait(expr) {
|
|
73
65
|
return expr[UsesVarOffset] === true;
|
|
74
66
|
}
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhaXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXIvc3JjL3RlbXBsYXRlL3BpcGVsaW5lL2lyL3NyYy90cmFpdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBT0g7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBRW5EOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7QUFFbkU7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7QUFFeEQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBbUVyRDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBK0M7SUFDN0UsQ0FBQyxZQUFZLENBQUMsRUFBRSxJQUFJO0lBQ3BCLFlBQVksRUFBRSxDQUFDO0NBQ1AsQ0FBQztBQUVYOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUNxQjtJQUN6RCxDQUFDLG9CQUFvQixDQUFDLEVBQUUsSUFBSTtDQUNwQixDQUFDO0FBRWY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQXNCO0lBQ3BELENBQUMsaUJBQWlCLENBQUMsRUFBRSxJQUFJO0NBQ2pCLENBQUM7QUFFWDs7R0FFRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FBc0IsRUFBTztJQUMvRCxPQUFRLEVBQW1DLENBQUMsWUFBWSxDQUFDLEtBQUssSUFBSSxDQUFDO0FBQ3JFLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSw0QkFBNEIsQ0FBc0IsRUFBTztJQUV2RSxPQUFRLEVBQTJDLENBQUMsb0JBQW9CLENBQUMsS0FBSyxJQUFJLENBQUM7QUFDckYsQ0FBQztBQVFELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxLQUFVO0lBQzdDLE9BQVEsS0FBb0MsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLElBQUksQ0FBQztBQUMzRSxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQTJCLElBQVc7SUFFekUsT0FBUSxJQUFvQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLElBQUksQ0FBQztBQUN2RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB0eXBlIHtQYXJzZVNvdXJjZVNwYW59IGZyb20gJy4uLy4uLy4uLy4uL3BhcnNlX3V0aWwnO1xuaW1wb3J0IHR5cGUge0V4cHJlc3Npb259IGZyb20gJy4vZXhwcmVzc2lvbic7XG5pbXBvcnQgdHlwZSB7T3AsIFhyZWZJZH0gZnJvbSAnLi9vcGVyYXRpb25zJztcbmltcG9ydCB7U2xvdEhhbmRsZX0gZnJvbSAnLi9oYW5kbGUnO1xuXG4vKipcbiAqIE1hcmtlciBzeW1ib2wgZm9yIGBDb25zdW1lc1Nsb3RPcFRyYWl0YC5cbiAqL1xuZXhwb3J0IGNvbnN0IENvbnN1bWVzU2xvdCA9IFN5bWJvbCgnQ29uc3VtZXNTbG90Jyk7XG5cbi8qKlxuICogTWFya2VyIHN5bWJvbCBmb3IgYERlcGVuZHNPblNsb3RDb250ZXh0T3BUcmFpdGAuXG4gKi9cbmV4cG9ydCBjb25zdCBEZXBlbmRzT25TbG90Q29udGV4dCA9IFN5bWJvbCgnRGVwZW5kc09uU2xvdENvbnRleHQnKTtcblxuLyoqXG4gKiBNYXJrZXIgc3ltYm9sIGZvciBgQ29uc3VtZXNWYXJzYCB0cmFpdC5cbiAqL1xuZXhwb3J0IGNvbnN0IENvbnN1bWVzVmFyc1RyYWl0ID0gU3ltYm9sKCdDb25zdW1lc1ZhcnMnKTtcblxuLyoqXG4gKiBNYXJrZXIgc3ltYm9sIGZvciBgVXNlc1Zhck9mZnNldGAgdHJhaXQuXG4gKi9cbmV4cG9ydCBjb25zdCBVc2VzVmFyT2Zmc2V0ID0gU3ltYm9sKCdVc2VzVmFyT2Zmc2V0Jyk7XG5cbi8qKlxuICogTWFya3MgYW4gb3BlcmF0aW9uIGFzIHJlcXVpcmluZyBhbGxvY2F0aW9uIG9mIG9uZSBvciBtb3JlIGRhdGEgc2xvdHMgZm9yIHN0b3JhZ2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3VtZXNTbG90T3BUcmFpdCB7XG4gIHJlYWRvbmx5W0NvbnN1bWVzU2xvdF06IHRydWU7XG5cbiAgLyoqXG4gICAqIEFzc2lnbmVkIGRhdGEgc2xvdCAodGhlIHN0YXJ0aW5nIGluZGV4LCBpZiBtb3JlIHRoYW4gb25lIHNsb3QgaXMgbmVlZGVkKSBmb3IgdGhpcyBvcGVyYXRpb24sIG9yXG4gICAqIGBudWxsYCBpZiBzbG90cyBoYXZlIG5vdCB5ZXQgYmVlbiBhc3NpZ25lZC5cbiAgICovXG4gIGhhbmRsZTogU2xvdEhhbmRsZTtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBzbG90cyB3aGljaCB3aWxsIGJlIHVzZWQgYnkgdGhpcyBvcGVyYXRpb24uIEJ5IGRlZmF1bHQgMSwgYnV0IGNhbiBiZSBpbmNyZWFzZWQgaWZcbiAgICogbmVjZXNzYXJ5LlxuICAgKi9cbiAgbnVtU2xvdHNVc2VkOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIGBYcmVmSWRgIG9mIHRoaXMgb3BlcmF0aW9uIChlLmcuIHRoZSBlbGVtZW50IHN0b3JlZCBpbiB0aGUgYXNzaWduZWQgc2xvdCkuIFRoaXMgYFhyZWZJZGAgaXNcbiAgICogdXNlZCB0byBsaW5rIHRoaXMgYENvbnN1bWVzU2xvdE9wVHJhaXRgIG9wZXJhdGlvbiB3aXRoIGBEZXBlbmRzT25TbG90Q29udGV4dFRyYWl0YCBvclxuICAgKiBgVXNlc1Nsb3RJbmRleEV4cHJUcmFpdGAgaW1wbGVtZW50b3JzIGFuZCBlbnN1cmUgdGhhdCB0aGUgYXNzaWduZWQgc2xvdCBpcyBwcm9wYWdhdGVkIHRocm91Z2hcbiAgICogdGhlIElSIHRvIGFsbCBjb25zdW1lcnMuXG4gICAqL1xuICB4cmVmOiBYcmVmSWQ7XG59XG5cblxuLyoqXG4gKiBNYXJrcyBhbiBvcGVyYXRpb24gYXMgZGVwZW5kaW5nIG9uIHRoZSBydW50aW1lJ3MgaW1wbGljaXQgc2xvdCBjb250ZXh0IGJlaW5nIHNldCB0byBhIHBhcnRpY3VsYXJcbiAqIHNsb3QuXG4gKlxuICogVGhlIHJ1bnRpbWUgaGFzIGFuIGltcGxpY2l0IHNsb3QgY29udGV4dCB3aGljaCBpcyBhZGp1c3RlZCB1c2luZyB0aGUgYGFkdmFuY2UoKWAgaW5zdHJ1Y3Rpb25cbiAqIGR1cmluZyB0aGUgZXhlY3V0aW9uIG9mIHRlbXBsYXRlIHVwZGF0ZSBmdW5jdGlvbnMuIFRoaXMgdHJhaXQgbWFya3MgYW4gb3BlcmF0aW9uIGFzIHJlcXVpcmluZ1xuICogdGhpcyBpbXBsaWNpdCBjb250ZXh0IHRvIGJlIGBhZHZhbmNlKClgJ2QgdG8gcG9pbnQgYXQgYSBwYXJ0aWN1bGFyIHNsb3QgcHJpb3IgdG8gZXhlY3V0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlcGVuZHNPblNsb3RDb250ZXh0T3BUcmFpdCB7XG4gIHJlYWRvbmx5W0RlcGVuZHNPblNsb3RDb250ZXh0XTogdHJ1ZTtcblxuICAvKipcbiAgICogYFhyZWZJZGAgb2YgdGhlIGBDb25zdW1lc1Nsb3RPcFRyYWl0YCB3aGljaCB0aGUgaW1wbGljaXQgc2xvdCBjb250ZXh0IG11c3QgcmVmZXJlbmNlIGJlZm9yZVxuICAgKiB0aGlzIG9wZXJhdGlvbiBjYW4gYmUgZXhlY3V0ZWQuXG4gICAqL1xuICB0YXJnZXQ6IFhyZWZJZDtcblxuICBzb3VyY2VTcGFuOiBQYXJzZVNvdXJjZVNwYW47XG59XG5cbi8qKlxuICogTWFya2VyIHRyYWl0IGluZGljYXRpbmcgdGhhdCBhbiBvcGVyYXRpb24gb3IgZXhwcmVzc2lvbiBjb25zdW1lcyB2YXJpYWJsZSBzdG9yYWdlIHNwYWNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnN1bWVzVmFyc1RyYWl0IHtcbiAgW0NvbnN1bWVzVmFyc1RyYWl0XTogdHJ1ZTtcbn1cblxuLyoqXG4gKiBNYXJrZXIgdHJhaXQgaW5kaWNhdGluZyB0aGF0IGFuIGV4cHJlc3Npb24gcmVxdWlyZXMga25vd2xlZGdlIG9mIHRoZSBudW1iZXIgb2YgdmFyaWFibGUgc3RvcmFnZVxuICogc2xvdHMgdXNlZCBwcmlvciB0byBpdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2VzVmFyT2Zmc2V0VHJhaXQge1xuICBbVXNlc1Zhck9mZnNldF06IHRydWU7XG5cbiAgdmFyT2Zmc2V0OiBudW1iZXJ8bnVsbDtcbn1cblxuLyoqXG4gKiBEZWZhdWx0IHZhbHVlcyBmb3IgbW9zdCBgQ29uc3VtZXNTbG90T3BUcmFpdGAgZmllbGRzICh1c2VkIHdpdGggdGhlIHNwcmVhZCBvcGVyYXRvciB0byBpbml0aWFsaXplXG4gKiBpbXBsZW1lbnRvcnMgb2YgdGhlIHRyYWl0KS5cbiAqL1xuZXhwb3J0IGNvbnN0IFRSQUlUX0NPTlNVTUVTX1NMT1Q6IE9taXQ8Q29uc3VtZXNTbG90T3BUcmFpdCwgJ3hyZWYnfCdoYW5kbGUnPiA9IHtcbiAgW0NvbnN1bWVzU2xvdF06IHRydWUsXG4gIG51bVNsb3RzVXNlZDogMSxcbn0gYXMgY29uc3Q7XG5cbi8qKlxuICogRGVmYXVsdCB2YWx1ZXMgZm9yIG1vc3QgYERlcGVuZHNPblNsb3RDb250ZXh0T3BUcmFpdGAgZmllbGRzICh1c2VkIHdpdGggdGhlIHNwcmVhZCBvcGVyYXRvciB0b1xuICogaW5pdGlhbGl6ZSBpbXBsZW1lbnRvcnMgb2YgdGhlIHRyYWl0KS5cbiAqL1xuZXhwb3J0IGNvbnN0IFRSQUlUX0RFUEVORFNfT05fU0xPVF9DT05URVhUOlxuICAgIE9taXQ8RGVwZW5kc09uU2xvdENvbnRleHRPcFRyYWl0LCAndGFyZ2V0J3wnc291cmNlU3Bhbic+ID0ge1xuICAgICAgW0RlcGVuZHNPblNsb3RDb250ZXh0XTogdHJ1ZSxcbiAgICB9IGFzIGNvbnN0O1xuXG4vKipcbiAqIERlZmF1bHQgdmFsdWVzIGZvciBgVXNlc1ZhcnNgIGZpZWxkcyAodXNlZCB3aXRoIHRoZSBzcHJlYWQgb3BlcmF0b3IgdG8gaW5pdGlhbGl6ZVxuICogaW1wbGVtZW50b3JzIG9mIHRoZSB0cmFpdCkuXG4gKi9cbmV4cG9ydCBjb25zdCBUUkFJVF9DT05TVU1FU19WQVJTOiBDb25zdW1lc1ZhcnNUcmFpdCA9IHtcbiAgW0NvbnN1bWVzVmFyc1RyYWl0XTogdHJ1ZSxcbn0gYXMgY29uc3Q7XG5cbi8qKlxuICogVGVzdCB3aGV0aGVyIGFuIG9wZXJhdGlvbiBpbXBsZW1lbnRzIGBDb25zdW1lc1Nsb3RPcFRyYWl0YC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc0NvbnN1bWVzU2xvdFRyYWl0PE9wVCBleHRlbmRzIE9wPE9wVD4+KG9wOiBPcFQpOiBvcCBpcyBPcFQmQ29uc3VtZXNTbG90T3BUcmFpdCB7XG4gIHJldHVybiAob3AgYXMgUGFydGlhbDxDb25zdW1lc1Nsb3RPcFRyYWl0PilbQ29uc3VtZXNTbG90XSA9PT0gdHJ1ZTtcbn1cblxuLyoqXG4gKiBUZXN0IHdoZXRoZXIgYW4gb3BlcmF0aW9uIGltcGxlbWVudHMgYERlcGVuZHNPblNsb3RDb250ZXh0T3BUcmFpdGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNEZXBlbmRzT25TbG90Q29udGV4dFRyYWl0PE9wVCBleHRlbmRzIE9wPE9wVD4+KG9wOiBPcFQpOiBvcCBpcyBPcFQmXG4gICAgRGVwZW5kc09uU2xvdENvbnRleHRPcFRyYWl0IHtcbiAgcmV0dXJuIChvcCBhcyBQYXJ0aWFsPERlcGVuZHNPblNsb3RDb250ZXh0T3BUcmFpdD4pW0RlcGVuZHNPblNsb3RDb250ZXh0XSA9PT0gdHJ1ZTtcbn1cblxuLyoqXG4gKiBUZXN0IHdoZXRoZXIgYW4gb3BlcmF0aW9uIGltcGxlbWVudHMgYENvbnN1bWVzVmFyc1RyYWl0YC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc0NvbnN1bWVzVmFyc1RyYWl0PEV4cHJUIGV4dGVuZHMgRXhwcmVzc2lvbj4oZXhwcjogRXhwclQpOiBleHByIGlzIEV4cHJUJlxuICAgIENvbnN1bWVzVmFyc1RyYWl0O1xuZXhwb3J0IGZ1bmN0aW9uIGhhc0NvbnN1bWVzVmFyc1RyYWl0PE9wVCBleHRlbmRzIE9wPE9wVD4+KG9wOiBPcFQpOiBvcCBpcyBPcFQmQ29uc3VtZXNWYXJzVHJhaXQ7XG5leHBvcnQgZnVuY3Rpb24gaGFzQ29uc3VtZXNWYXJzVHJhaXQodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gKHZhbHVlIGFzIFBhcnRpYWw8Q29uc3VtZXNWYXJzVHJhaXQ+KVtDb25zdW1lc1ZhcnNUcmFpdF0gPT09IHRydWU7XG59XG5cbi8qKlxuICogVGVzdCB3aGV0aGVyIGFuIGV4cHJlc3Npb24gaW1wbGVtZW50cyBgVXNlc1Zhck9mZnNldFRyYWl0YC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc1VzZXNWYXJPZmZzZXRUcmFpdDxFeHByVCBleHRlbmRzIEV4cHJlc3Npb24+KGV4cHI6IEV4cHJUKTogZXhwciBpcyBFeHByVCZcbiAgICBVc2VzVmFyT2Zmc2V0VHJhaXQge1xuICByZXR1cm4gKGV4cHIgYXMgUGFydGlhbDxVc2VzVmFyT2Zmc2V0VHJhaXQ+KVtVc2VzVmFyT2Zmc2V0XSA9PT0gdHJ1ZTtcbn1cbiJdfQ==
|