@fovestta2/web-angular 1.1.7 → 1.1.8

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.
@@ -1445,4 +1445,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
1445
1445
  }], validationError: [{
1446
1446
  type: Output
1447
1447
  }] } });
1448
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXVwZGF0ZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Z2LWNvbnRyb2xzL3NyYy9saWIvYWRkLXVwZGF0ZS1mb3JtL2FkZC11cGRhdGUtZm9ybS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNkZBLCtCQUErQjtBQUMvQixPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxHQUlQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBTUwsbUJBQW1CLEVBQ25CLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELDhCQUE4QjtBQUM5QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNoRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM1RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUs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Ozs7Ozs7Ozs7R0EyVVQ7eUdBd2lCUSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0ksZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEZpZWxkVHlwZSA9XHJcbiAgfCAndGV4dCdcclxuICB8ICdlbWFpbCdcclxuICB8ICdudW1iZXInXHJcbiAgfCAnc2VsZWN0J1xyXG4gIHwgJ25hbWUtY29kZSdcclxuICB8ICdjaGVja2JveCdcclxuICB8ICd0ZXh0YXJlYSdcclxuICB8ICdkYXRlJ1xyXG4gIHwgJ3Bhc3N3b3JkJ1xyXG4gIHwgJ3JhZGlvJ1xyXG4gIHwgJ2ZpbGUnXHJcbiAgfCAnbW9udGgteWVhcidcclxuICB8ICdwaG9uZSdcclxuICB8ICd1YW4nXHJcbiAgfCAncGYnXHJcbiAgfCAnZXNpJ1xyXG4gIHwgJ2lmc2MnXHJcbiAgfCAnbWljcidcclxuICB8ICdpYmFuJ1xyXG4gIHwgJ3NlcnZpY2UtcGVyaW9kJ1xyXG4gIHwgJ3NjYW4nXHJcbiAgfCAnZG9jdW1lbnQnXHJcbiAgfCAndGltZSdcclxuICB8ICd0b2dnbGUnO1xyXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uVHlwZSA9XHJcbiAgfCAncmVxdWlyZWQnXHJcbiAgfCAnZW1haWwnXHJcbiAgfCAnbWluTGVuZ3RoJ1xyXG4gIHwgJ21heExlbmd0aCdcclxuICB8ICdwYXR0ZXJuJ1xyXG4gIHwgJ21pbidcclxuICB8ICdtYXgnXHJcbiAgfCAnY3VzdG9tJ1xyXG4gIHwgJ2R1cGxpY2F0ZSdcclxuICB8ICdwYXNzd29yZENvbXBsZXhpdHknO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGaWVsZFZhbGlkYXRpb24ge1xyXG4gIHR5cGU6IFZhbGlkYXRpb25UeXBlO1xyXG4gIHZhbHVlPzogYW55OyAvLyBGb3IgbWluTGVuZ3RoLCBtYXhMZW5ndGgsIG1pbiwgbWF4LCBwYXR0ZXJuXHJcbiAgbWVzc2FnZT86IHN0cmluZzsgLy8gQ3VzdG9tIGVycm9yIG1lc3NhZ2VcclxuICB2YWxpZGF0b3I/OiAodmFsdWU6IGFueSwgZm9ybUdyb3VwPzogRm9ybUdyb3VwKSA9PiBib29sZWFuOyAvLyBGb3IgY3VzdG9tIHZhbGlkYXRpb25cclxuICBwYXJhbXM/OiBhbnk7IC8vIEZvciBjb21wbGV4IHZhbGlkYXRpb24gcnVsZXMgbGlrZSBwYXNzd29yZENvbXBsZXhpdHlcclxuICBlcnJvcktleT86IHN0cmluZzsgLy8gU3BlY2lmaWMgZXJyb3Iga2V5IHRvIHJldHVyblxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1Db2x1bW4ge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIHR5cGU6IEZpZWxkVHlwZTtcclxuICBwbGFjZWhvbGRlcj86IHN0cmluZztcclxuICByZXF1aXJlZD86IGJvb2xlYW4gfCAoKGZvcm1Hcm91cDogRm9ybUdyb3VwKSA9PiBib29sZWFuKTtcclxuICBvcHRpb25zPzogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogYW55IH1bXTsgLy8gRm9yIHNlbGVjdCBmaWVsZHNcclxuICB2YWxpZGF0aW9ucz86IEZpZWxkVmFsaWRhdGlvbltdO1xyXG4gIHZhbHVlPzogYW55OyAvLyBEZWZhdWx0IHZhbHVlXHJcbiAgZGlzYWJsZWQ/OiBib29sZWFuIHwgKChmb3JtR3JvdXA6IEZvcm1Hcm91cCkgPT4gYm9vbGVhbik7XHJcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xyXG4gIGhpZGRlbj86IGJvb2xlYW47XHJcbiAgaGludD86IHN0cmluZztcclxuICBjb2xTcGFuPzogbnVtYmVyO1xyXG4gIG9uQ2hhbmdlPzogKHZhbHVlOiBhbnksIGZvcm1Hcm91cDogRm9ybUdyb3VwKSA9PiB2b2lkO1xyXG4gIGFjY2VwdD86IHN0cmluZzsgLy8gRm9yIGZpbGUgaW5wdXQgKGUuZy4sICdpbWFnZS8qJylcclxuICBmaWxlUHJldmlldz86IGJvb2xlYW47IC8vIFNob3cgaW1hZ2UgcHJldmlld1xyXG4gIHNob3dUaW1lUGlja2VyPzogYm9vbGVhbjsgLy8gU2hvdyB0aW1lIHBpY2tlciBmb3IgdGV4dCBmaWVsZHNcclxuICBhbGxvd0FscGhhYmV0c09ubHk/OiBib29sZWFuO1xyXG4gIG1heExlbmd0aD86IG51bWJlcjtcclxuICBsYXlvdXQ/OiAndmVydGljYWwnIHwgJ2hvcml6b250YWwnOyAvLyBGb3IgcmFkaW8gZ3JvdXBcclxuICBzZXJ2aWNlUGVyaW9kQ29uZmlnPzogeyBzdGFydEZpZWxkOiBzdHJpbmc7IGVuZEZpZWxkOiBzdHJpbmcgfTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGb3JtU2VjdGlvbiB7XHJcbiAgdGl0bGU/OiBzdHJpbmc7IC8vIFNlY3Rpb24gaGVhZGluZyAoZS5nLiwgXCJQRVJTT05BTCBJTkZPUk1BVElPTlwiKVxyXG4gIGZpZWxkczogRm9ybUNvbHVtbltdO1xyXG4gIGlzUmVwZWF0YWJsZT86IGJvb2xlYW47XHJcbiAgc2VjdGlvbktleT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGb3JtQ29uZmlnIHtcclxuICBzZWN0aW9uczogRm9ybVNlY3Rpb25bXTtcclxuICBzdWJtaXRMYWJlbD86IHN0cmluZztcclxuICByZXNldExhYmVsPzogc3RyaW5nO1xyXG4gIG9uU3VibWl0OiAoZGF0YTogYW55KSA9PiB2b2lkO1xyXG4gIG9uUmVzZXQ/OiAoKSA9PiB2b2lkO1xyXG4gIG9uQ2FuY2VsOiAoKSA9PiB2b2lkO1xyXG4gIGNhbmNlbExhYmVsPzogc3RyaW5nO1xyXG4gIGZvcm1UaXRsZT86IHN0cmluZztcclxuICBtYXhDb2xzUGVyUm93PzogbnVtYmVyO1xyXG4gIGRpc2FibGVTdWJtaXQ/OiBib29sZWFuO1xyXG4gIGRpc2FibGVDYW5jZWw/OiBib29sZWFuO1xyXG4gIGhpZGVTdWJtaXQ/OiBib29sZWFuO1xyXG4gIGhpZGVDYW5jZWw/OiBib29sZWFuO1xyXG59XHJcblxyXG4vLyBhZGQtdXBkYXRlLWZvcm0uY29tcG9uZW50LnRzXHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIEVsZW1lbnRSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIEZvcm1CdWlsZGVyLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIEZvcm1Hcm91cCxcclxuICBGb3JtQXJyYXksXHJcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICBWYWxpZGF0b3JzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG4vLyBJbXBvcnQgeW91ciBsaWJyYXJ5IG1vZHVsZXNcclxuaW1wb3J0IHsgRnZFbnRyeUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtZW50cnktZmllbGQvZnYtZW50cnktZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZOdW1iZXJGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LW51bWJlci1maWVsZC9mdi1udW1iZXItZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWRyb3Bkb3duL2Z2LWRyb3Bkb3duLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2UmFkaW9Hcm91cENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LXJhZGlvLWdyb3VwL2Z2LXJhZGlvLWdyb3VwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2Q2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi9mdi1jaGVja2JveC9mdi1jaGVja2JveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGdkRhdGVGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWRhdGUtZmllbGQvZnYtZGF0ZS1maWVsZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGdk1vbnRoWWVhckZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtbW9udGgteWVhci1maWVsZC9mdi1tb250aC15ZWFyLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2RmlsZVNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtZmlsZS1zZWxlY3Rvci9mdi1maWxlLXNlbGVjdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2SW1hZ2VTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWltYWdlLXNlbGVjdG9yL2Z2LWltYWdlLXNlbGVjdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2UmljaFRleHRFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi9mdi1yaWNoLXRleHQtZWRpdG9yL2Z2LXJpY2gtdGV4dC1lZGl0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZOYW1lQ29kZUNvbXBvbmVudCB9IGZyb20gJy4uL2Z2LW5hbWUtY29kZS9mdi1uYW1lLWNvZGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZQaG9uZUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtcGhvbmUtZmllbGQvZnYtcGhvbmUtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZVYW5GaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LXVhbi1maWVsZC9mdi11YW4tZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZQZkZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtcGYtZmllbGQvZnYtcGYtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZFc2lGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWVzaS1maWVsZC9mdi1lc2ktZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZJZnNjRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi1pZnNjLWZpZWxkL2Z2LWlmc2MtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZNaWNyRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi1taWNyLWZpZWxkL2Z2LW1pY3ItZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZJYmFuRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi1pYmFuLWZpZWxkL2Z2LWliYW4tZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZFbWFpbEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtZW1haWwtZmllbGQvZnYtZW1haWwtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZQYXNzd29yZEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtcGFzc3dvcmQtZmllbGQvZnYtcGFzc3dvcmQtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZTZXJ2aWNlUGVyaW9kQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtc2VydmljZS1wZXJpb2QvZnYtc2VydmljZS1wZXJpb2QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZEb2N1bWVudEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtZG9jdW1lbnQtZmllbGQvZnYtZG9jdW1lbnQtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZUaW1lRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi10aW1lLWZpZWxkL2Z2LXRpbWUtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZUb2dnbGVDb21wb25lbnQgfSBmcm9tICcuLi9mdi10b2dnbGUvZnYtdG9nZ2xlLmNvbXBvbmVudCc7XHJcblxyXG5cclxuXHJcbi8vIEltcG9ydCBWYWxpZGF0aW9uIFR5cGVzXHJcbmltcG9ydCB7IFZhbGlkYXRpb25TY2hlbWEsIFZhbGlkYXRpb25SdWxlIH0gZnJvbSAnQGZvdmVzdHRhMi92YWxpZGF0aW9uLWVuZ2luZSc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWFkZC11cGRhdGUtZm9ybScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgRnZFbnRyeUZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZOdW1iZXJGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2RHJvcGRvd25Db21wb25lbnQsXHJcbiAgICBGdlJhZGlvR3JvdXBDb21wb25lbnQsXHJcbiAgICBGdkNoZWNrYm94Q29tcG9uZW50LFxyXG4gICAgRnZEYXRlRmllbGRDb21wb25lbnQsXHJcbiAgICBGdk1vbnRoWWVhckZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZGaWxlU2VsZWN0b3JDb21wb25lbnQsXHJcbiAgICBGdkltYWdlU2VsZWN0b3JDb21wb25lbnQsXHJcbiAgICBGdlJpY2hUZXh0RWRpdG9yQ29tcG9uZW50LFxyXG4gICAgRnZOYW1lQ29kZUNvbXBvbmVudCxcclxuICAgIEZ2UGhvbmVGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2VWFuRmllbGRDb21wb25lbnQsXHJcbiAgICBGdlBmRmllbGRDb21wb25lbnQsXHJcbiAgICBGdkVzaUZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZJZnNjRmllbGRDb21wb25lbnQsXHJcbiAgICBGdk1pY3JGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2SWJhbkZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZFbWFpbEZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZQYXNzd29yZEZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZTZXJ2aWNlUGVyaW9kQ29tcG9uZW50LFxyXG4gICAgRnZEb2N1bWVudEZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZUaW1lRmllbGRDb21wb25lbnQsXHJcbiAgICBGdlRvZ2dsZUNvbXBvbmVudFxyXG4gIF0sXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1oZWFkZXJcIiAqbmdJZj1cImNvbmZpZy5mb3JtVGl0bGVcIj5cclxuICAgICAgICA8aDI+e3sgY29uZmlnLmZvcm1UaXRsZSB9fTwvaDI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKG5nU3VibWl0KT1cImhhbmRsZVN1Ym1pdCgpXCIgY2xhc3M9XCJkeW5hbWljLWZvcm1cIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIGNvbmZpZy5zZWN0aW9uc1wiIGNsYXNzPVwiZm9ybS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICA8aDMgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCIgKm5nSWY9XCJzZWN0aW9uLnRpdGxlXCI+XHJcbiAgICAgICAgICAgIHt7IHNlY3Rpb24udGl0bGUgfX1cclxuICAgICAgICAgIDwvaDM+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlY3Rpb24uaXNSZXBlYXRhYmxlICYmIHNlY3Rpb24uc2VjdGlvbktleTsgZWxzZSBmbGF0U2VjdGlvblwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBncm91cCBvZiBnZXRTZWN0aW9uQXJyYXkoc2VjdGlvbikuY29udHJvbHM7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cInJlcGVhdGFibGUtZ3JvdXAtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVwZWF0YWJsZS1hY3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWljb24gYnRuLWFkZFwiIChjbGljayk9XCJhZGRTZWN0aW9uSXRlbShzZWN0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjMmVjYzcxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTUgMTFoLTR2NGgtMnYtNEg3di0yaDRWN2gydjRoNHYyelwiLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWljb24gYnRuLXJlbW92ZVwiIChjbGljayk9XCJyZW1vdmVTZWN0aW9uSXRlbShzZWN0aW9uLCBpKVwiICpuZ0lmPVwiZ2V0U2VjdGlvbkFycmF5KHNlY3Rpb24pLmNvbnRyb2xzLmxlbmd0aCA+IDFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI2U3NGMzY1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem01IDExSDd2LTJoMTB2MnpcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkcy1yb3dcIj5cclxuICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2Ygc2VjdGlvbi5maWVsZHNcIj5cclxuICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWVsZFJlbmRlcmVyOyBjb250ZXh0OiB7IGNvbHVtbjogY29sdW1uLCBjb250cm9sOiBncm91cC5nZXQoY29sdW1uLm5hbWUpLCBncm91cDogZ3JvdXAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZmxhdFNlY3Rpb24+XHJcbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRzLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHNlY3Rpb24uZmllbGRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRSZW5kZXJlcjsgY29udGV4dDogeyBjb2x1bW46IGNvbHVtbiwgY29udHJvbDogZ2V0Q29udHJvbChjb2x1bW4ubmFtZSksIGdyb3VwOiBmb3JtIH1cIj5cclxuICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZmllbGRSZW5kZXJlciBsZXQtY29sdW1uPVwiY29sdW1uXCIgbGV0LWNvbnRyb2w9XCJjb250cm9sXCIgbGV0LWdyb3VwPVwiZ3JvdXBcIj5cclxuICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtd3JhcHBlclwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCInZmllbGQtJyArIGNvbHVtbi50eXBlXCJcclxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImNvbHVtbi5oaWRkZW4gPyB7IGRpc3BsYXk6ICdub25lJyB9IDoge31cIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmdyaWQtY29sdW1uXT1cIidzcGFuICcgKyAoY29sdW1uLmNvbFNwYW4gfHwgMSlcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3RleHQnICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWVudHJ5LWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5wbGFjZWhvbGRlciB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbiwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGaWVsZERpc2FibGVkKGNvbHVtbiwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthbGxvd0FscGhhYmV0c09ubHldPVwiY29sdW1uLmFsbG93QWxwaGFiZXRzT25seSB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW21heExlbmd0aF09XCJjb2x1bW4ubWF4TGVuZ3RoIHx8IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVGaWVsZENoYW5nZShjb2x1bW4ubmFtZSwgJGV2ZW50LCBjb250cm9sLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvZnYtZW50cnktZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdlbWFpbCcgJiYgIWNvbHVtbi5oaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtZW1haWwtZmllbGRcclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29sdW1uLnBsYWNlaG9sZGVyIHx8ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4sIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRmllbGREaXNhYmxlZChjb2x1bW4sIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wsIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9mdi1lbWFpbC1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3Bhc3N3b3JkJyAmJiAhY29sdW1uLmhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1wYXNzd29yZC1maWVsZFxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJydcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbiwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGaWVsZERpc2FibGVkKGNvbHVtbiwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlRmllbGRDaGFuZ2UoY29sdW1uLm5hbWUsICRldmVudCwgY29udHJvbCwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LXBhc3N3b3JkLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnbnVtYmVyJyAmJiAhY29sdW1uLmhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1udW1iZXItZmllbGRcclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29sdW1uLnBsYWNlaG9sZGVyIHx8ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4sIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRmllbGREaXNhYmxlZChjb2x1bW4sIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wsIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9mdi1udW1iZXItZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdzZWxlY3QnICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWRyb3Bkb3duXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5wbGFjZWhvbGRlciB8fCAnU2VsZWN0IG9wdGlvbidcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cImNvbHVtbi5vcHRpb25zIHx8IFtdXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4sIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRmllbGREaXNhYmxlZChjb2x1bW4sIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wsIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9mdi1kcm9wZG93bj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2NoZWNrYm94JyAmJiAhY29sdW1uLmhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1jaGVja2JveFxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0ZpZWxkRGlzYWJsZWQoY29sdW1uLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVGaWVsZENoYW5nZShjb2x1bW4ubmFtZSwgJGV2ZW50LCBjb250cm9sLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvZnYtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICd0b2dnbGUnICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LXRvZ2dsZVxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0ZpZWxkRGlzYWJsZWQoY29sdW1uLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVGaWVsZENoYW5nZShjb2x1bW4ubmFtZSwgJGV2ZW50LCBjb250cm9sLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvZnYtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAncmFkaW8nICYmICFjb2x1bW4uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1yYWRpby1ncm91cFxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cImNvbHVtbi5vcHRpb25zIHx8IFtdXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGaWVsZERpc2FibGVkKGNvbHVtbiwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICBbbGF5b3V0XT1cImNvbHVtbi5sYXlvdXQgfHwgJ3ZlcnRpY2FsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wsIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9mdi1yYWRpby1ncm91cD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2RhdGUnICYmICFjb2x1bW4uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1kYXRlLWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0ZpZWxkRGlzYWJsZWQoY29sdW1uLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVGaWVsZENoYW5nZShjb2x1bW4ubmFtZSwgJGV2ZW50LCBjb250cm9sLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvZnYtZGF0ZS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ21vbnRoLXllYXInICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LW1vbnRoLXllYXItZmllbGRcclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4sIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRmllbGREaXNhYmxlZChjb2x1bW4sIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZU1vbnRoWWVhckNoYW5nZShjb2x1bW4ubmFtZSwgJGV2ZW50LCBjb250cm9sLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvZnYtbW9udGgteWVhci1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3RleHRhcmVhJyAmJiAhY29sdW1uLmhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1yaWNoLXRleHQtZWRpdG9yXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5wbGFjZWhvbGRlciB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0ZpZWxkRGlzYWJsZWQoY29sdW1uLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVGaWVsZENoYW5nZShjb2x1bW4ubmFtZSwgJGV2ZW50LCBjb250cm9sLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvZnYtcmljaC10ZXh0LWVkaXRvcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2ZpbGUnICYmICFjb2x1bW4uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0ltYWdlRmllbGQoY29sdW1uKTsgZWxzZSBzdGFuZGFyZEZpbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZnYtaW1hZ2Utc2VsZWN0b3JcclxuICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5wbGFjZWhvbGRlciB8fCAnU2VsZWN0IGltYWdlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbiwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0ZpZWxkRGlzYWJsZWQoY29sdW1uLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uRmlsZUNoYW5nZSgkZXZlbnQsIGNvbHVtbi5uYW1lLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8L2Z2LWltYWdlLXNlbGVjdG9yPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc3RhbmRhcmRGaWxlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmdi1maWxlLXNlbGVjdG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCBmaWxlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbYWNjZXB0XT1cImNvbHVtbi5hY2NlcHQgfHwgJyovKidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4sIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGaWVsZERpc2FibGVkKGNvbHVtbiwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbkZpbGVDaGFuZ2UoJGV2ZW50LCBjb2x1bW4ubmFtZSwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9mdi1maWxlLXNlbGVjdG9yPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnbmFtZS1jb2RlJyAmJiAhY29sdW1uLmhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1uYW1lLWNvZGVcclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29sdW1uLnBsYWNlaG9sZGVyIHx8ICdTZWFyY2ggYnkgQ29kZSBvciBOYW1lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiY29sdW1uLm9wdGlvbnMgPyBtYXBTZWFyY2hPcHRpb25zKGNvbHVtbi5vcHRpb25zKSA6IFtdXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4sIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRmllbGREaXNhYmxlZChjb2x1bW4sIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wsIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9mdi1uYW1lLWNvZGU+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdwaG9uZScgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LXBob25lLWZpZWxkIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIiBbY29udHJvbF09XCJjb250cm9sXCIgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uLCBncm91cClcIiBbZGlzYWJsZWRdPVwiaXNGaWVsZERpc2FibGVkKGNvbHVtbiwgZ3JvdXApXCI+PC9mdi1waG9uZS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3VhbicgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LXVhbi1maWVsZCBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCIgW2NvbnRyb2xdPVwiY29udHJvbFwiIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbiwgZ3JvdXApXCIgW2Rpc2FibGVkXT1cImlzRmllbGREaXNhYmxlZChjb2x1bW4sIGdyb3VwKVwiPjwvZnYtdWFuLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAncGYnICYmICFjb2x1bW4uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1wZi1maWVsZCBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCIgW2NvbnRyb2xdPVwiY29udHJvbFwiIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbiwgZ3JvdXApXCIgW2Rpc2FibGVkXT1cImlzRmllbGREaXNhYmxlZChjb2x1bW4sIGdyb3VwKVwiPjwvZnYtcGYtZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdlc2knICYmICFjb2x1bW4uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1lc2ktZmllbGQgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiIFtjb250cm9sXT1cImNvbnRyb2xcIiBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4sIGdyb3VwKVwiIFtkaXNhYmxlZF09XCJpc0ZpZWxkRGlzYWJsZWQoY29sdW1uLCBncm91cClcIj48L2Z2LWVzaS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2lmc2MnICYmICFjb2x1bW4uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1pZnNjLWZpZWxkIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIiBbY29udHJvbF09XCJjb250cm9sXCIgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uLCBncm91cClcIiBbZGlzYWJsZWRdPVwiaXNGaWVsZERpc2FibGVkKGNvbHVtbiwgZ3JvdXApXCI+PC9mdi1pZnNjLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnbWljcicgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LW1pY3ItZmllbGQgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiIFtjb250cm9sXT1cImNvbnRyb2xcIiBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4sIGdyb3VwKVwiIFtkaXNhYmxlZF09XCJpc0ZpZWxkRGlzYWJsZWQoY29sdW1uLCBncm91cClcIj48L2Z2LW1pY3ItZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdpYmFuJyAmJiAhY29sdW1uLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtaWJhbi1maWVsZCBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCIgW2NvbnRyb2xdPVwiY29udHJvbFwiIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbiwgZ3JvdXApXCIgW2Rpc2FibGVkXT1cImlzRmllbGREaXNhYmxlZChjb2x1bW4sIGdyb3VwKVwiPjwvZnYtaWJhbi1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3NlcnZpY2UtcGVyaW9kJyAmJiAhY29sdW1uLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgPGZ2LXNlcnZpY2UtcGVyaW9kXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJncm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbc3RhcnRGaWVsZF09XCJjb2x1bW4uc2VydmljZVBlcmlvZENvbmZpZz8uc3RhcnRGaWVsZCB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZW5kRmllbGRdPVwiY29sdW1uLnNlcnZpY2VQZXJpb2RDb25maWc/LmVuZEZpZWxkIHx8ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgPjwvZnYtc2VydmljZS1wZXJpb2Q+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdkb2N1bWVudCcgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWRvY3VtZW50LWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5wbGFjZWhvbGRlciB8fCAnVXBsb2FkJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FjY2VwdF09XCJjb2x1bW4uYWNjZXB0IHx8ICdhcHBsaWNhdGlvbi9wZGYsaW1hZ2UvKidcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbiwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGaWVsZERpc2FibGVkKGNvbHVtbiwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlRmllbGRDaGFuZ2UoY29sdW1uLm5hbWUsICRldmVudCwgY29udHJvbCwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LWRvY3VtZW50LWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAndGltZScgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LXRpbWUtZmllbGRcclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29sdW1uLnBsYWNlaG9sZGVyIHx8ICctLTotLSdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbiwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGaWVsZERpc2FibGVkKGNvbHVtbiwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlRmllbGRDaGFuZ2UoY29sdW1uLm5hbWUsICRldmVudCwgY29udHJvbCwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LXRpbWUtZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWFjdGlvbnNcIj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCIhY29uZmlnLmhpZGVTdWJtaXRcIlxyXG4gICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29uZmlnLmRpc2FibGVTdWJtaXRcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBjb25maWcuc3VibWl0TGFiZWwgfHwgJ1NhdmUnIH19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCIhY29uZmlnLmhpZGVDYW5jZWxcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY29uZmlnLm9uQ2FuY2VsKClcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29uZmlnLmRpc2FibGVDYW5jZWxcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBjb25maWcuY2FuY2VsTGFiZWwgfHwgJ0NhbmNlbCcgfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Zvcm0+XHJcbiAgICA8L2Rpdj5cclxuICBgLFxyXG4gIHN0eWxlczogYFxyXG5cclxuICBAaW1wb3J0IHVybCgnaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1Qb3BwaW5zOndnaHRAMzAwOzQwMDs1MDA7NjAwOzcwMCZkaXNwbGF5PXN3YXAnKTtcclxuICBAaW1wb3J0IHVybCgnaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9pY29uP2ZhbWlseT1NYXRlcmlhbCtJY29ucycpO1xyXG4gICAgKntcclxuICAgICAgZm9udC1mYW1pbHk6IFwiUG9wcGluc1wiICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbiAgICAuZm9ybS1jb250YWluZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAjZjVmNWY1O1xyXG4gICAgICBwYWRkaW5nOiA1cHggMTBweCAxMHB4O1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA4cHg7XHJcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xyXG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICB9XHJcblxyXG4gICAgLmVycm9yLWJvcmRlciB7XHJcbiAgICAgYm9yZGVyLWNvbG9yOiByZWQgIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcbiAgICAuaGlkZGVue1xyXG4gICAgICBkaXNwbGF5Om5vbmUgIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcbiAgICAuZm9ybS1oZWFkZXIge1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiA1cHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmZvcm0taGVhZGVyIGgyIHtcclxuICAgICAgbWFyZ2luOiAwO1xyXG4gICAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgICAgIGNvbG9yOiAjMzAzMDMwO1xyXG4gICAgfVxyXG5cclxuICAgIC5keW5hbWljLWZvcm0ge1xyXG4gICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICAgICAgcGFkZGluZzogMTBweDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xyXG4gICAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xyXG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICB9XHJcblxyXG4gICAgLmZvcm0tc2VjdGlvbiB7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206MTBweDtcclxuICAgIH1cclxuXHJcbiAgICAuc2VjdGlvbi10aXRsZSB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICAgICAgY29sb3I6ICMzMDMwMzA7XHJcbiAgICAgIG1hcmdpbjogMCAwIDE2cHggMDtcclxuICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxuICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5maWVsZHMtcm93IHtcclxuICAgICAgZGlzcGxheTogZ3JpZDtcclxuICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNSwxZnIpO1xyXG4gICAgICBnYXA6IDE2cHg7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICBvdmVyZmxvdzogdmlzaWJsZTtcclxuICAgIH1cclxuXHJcbiAgICAuZm9ybS1maWVsZC13cmFwcGVyIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICBtaW4td2lkdGg6IDA7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICBvdmVyZmxvdzogdmlzaWJsZTtcclxuICAgIH1cclxuXHJcbiAgICAucGFzc3dvcmQtdG9nZ2xlLWJ0biB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHJpZ2h0OiAxMHB4O1xyXG4gIHRvcDogMzJweDtcclxuICBiYWNrZ3JvdW5kOiBub25lO1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgcGFkZGluZzogNHB4O1xyXG4gIGNvbG9yOiAjNjY2O1xyXG59XHJcblxyXG4ucGFzc3dvcmQtdG9nZ2xlLWJ0bjpob3ZlciB7XHJcbiAgY29sb3I6ICMzMzM7XHJcbn1cclxuXHJcbi5wYXNzd29yZC10b2dnbGUtYnRuIC5tYXRlcmlhbC1pY29ucyB7XHJcbiAgZm9udC1zaXplOiAyMHB4O1xyXG4gIHdpZHRoOiBhdXRvO1xyXG4gIGhlaWdodDogYXV0bztcclxuICBwYWRkaW5nOiAwO1xyXG59XHJcblxyXG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgYW5kIChtYXgtd2lkdGg6IDE0MDBweCkge1xyXG4gICAgICAuZmllbGRzLXJvdyB7XHJcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNSwxZnIpO1xyXG4gICAgICB9XHJcbiAgICAgIC5mb3JtLWNvbnRyb2wge1xyXG4gICAgICAgIHdpZHRoOiAxODBweDtcclxuICAgICAgICBtYXgtd2lkdGg6IDE4MHB4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDEyMDBweCkge1xyXG4gICAgICAuZmllbGRzLXJvdyB7XHJcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywxZnIpO1xyXG4gICAgICB9XHJcbiAgICAgIC5mb3JtLWNvbnRyb2wge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiA5OTJweCkge1xyXG4gICAgICAuZmllbGRzLXJvdyB7XHJcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwxZnIpO1xyXG4gICAgICAgIGdhcDogMTJweDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xyXG4gICAgICAuZmllbGRzLXJvdyB7XHJcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwxZnIpO1xyXG4gICAgICAgIGdhcDogMTBweDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2NDBweCkge1xyXG4gICAgICAuZmllbGRzLXJvdyB7XHJcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XHJcbiAgICAgICAgZ2FwOiAxMnB4O1xyXG4gICAgICB9XHJcbiAgICAgIC5mb3JtLWZpZWxkLXdyYXBwZXIge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmNoZWNrYm94LWxhYmVsIHtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICBtYXJnaW46IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLmZvcm0tYWN0aW9ucyB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XHJcbiAgICAgIGdhcDogMTJweDtcclxuICAgICAgbWFyZ2luLXRvcDogMjBweDtcclxuICAgIH1cclxuXHJcbiAgICAuYnRuIHtcclxuICAgICAgcGFkZGluZzogOHB4IDE2cHg7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0bi1wcmltYXJ5IHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwNmFmZjtcclxuICAgICAgY29sb3I6IHdoaXRlO1xyXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjMDA2YWZmO1xyXG4gICAgfVxyXG5cclxuICAgIC5idG4tcHJpbWFyeTpob3Zlcjpub3QoOmRpc2FibGVkKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDU2Y2M7XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0bi1vdXRsaW5lIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICAgIGNvbG9yOiAjMzAzMDMwO1xyXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjZGNkY2RjO1xyXG4gICAgfVxyXG5cclxuICAgIC5idG4tb3V0bGluZTpob3Zlcjpub3QoOmRpc2FibGVkKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0bjpkaXNhYmxlZCB7XHJcbiAgICAgIG9wYWNpdHk6IDAuNjtcclxuICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcclxuICAgIH1cclxuXHJcblxyXG4uZmlsZS1uYW1lIHtcclxuICBmb250LXNpemU6IDEycHg7XHJcbiAgY29sb3I6ICM2NjY7XHJcbiAgbWFyZ2luOiA4cHg7XHJcbiAgbWFyZ2luLXRvcDogMTBweDtcclxufVxyXG5cclxuLmZpbGUtbGFiZWwge1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIG1hcmdpbi1ib3R0b206IDZweDtcclxuICAgIGNvbG9yOiAjMTUxZDQ4O1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG59XHJcblxyXG4gICAgLnJhZGlvLWxhYmVsIHtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIG1hcmdpbi1ib3R0b206IDE1cHg7XHJcbiAgY29sb3I6ICMxNTFENDg7XHJcbiAgZm9udC1zaXplOiAxNHB4O1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG59XHJcblxyXG4ucmFkaW8tZ3JvdXAge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZ2FwOiAyMHB4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbn1cclxuXHJcbi5yYWRpby1pdGVtIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgZ2FwOiA2cHg7XHJcbn1cclxuXHJcbmlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XHJcbiAgd2lkdGg6IDE4cHg7XHJcbiAgaGVpZ2h0OiAxOHB4O1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBhY2NlbnQtY29sb3I6ICMzNDk4ZGI7XHJcbn1cclxuXHJcbi5yYWRpby1vcHRpb24tbGFiZWwge1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBtYXJnaW46IDA7XHJcbiAgZm9udC13ZWlnaHQ6IDQwMDtcclxufVxyXG5cclxuICAgIC5oaW50IHtcclxuICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICBjb2xvcjogIzdmOGM4ZDtcclxuICAgICAgbWFyZ2luLXRvcDogNHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5lcnJvci1tZXNzYWdlIHtcclxuICAgICAgY29sb3I6ICNlNzRjM2M7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgICAgbWFyZ2luLXRvcDogNHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5mb3JtLWFjdGlvbnMge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBnYXA6IDhweDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgICBnYXA6IDEycHg7XHJcbiAgICAgIHBhZGRpbmctdG9wOiA1cHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0biB7XHJcbiAgICAgIHBhZGRpbmc6IDhweCAyMHB4O1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDdweDtcclxuICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xyXG4gICAgfVxyXG5cclxuICAgIC5idG4tcHJpbWFyeSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDZBRkY7XHJcbiAgICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgIH1cclxuXHJcbiAgICAuYnRuLXByaW1hcnk6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjk4MGI5O1xyXG4gICAgfVxyXG5cclxuICAgIC5idG4tcHJpbWFyeTpkaXNhYmxlZCB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNiZGMzYzc7XHJcbiAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0bi1zZWNvbmRhcnkge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTVhNWE2O1xyXG4gICAgICBjb2xvcjogd2hpdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0bi1zZWNvbmRhcnk6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjN2Y4YzhkO1xyXG4gICAgfVxyXG5cclxuICAgIC5idG4tb3V0bGluZSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzMDMwMzA7XHJcbiAgICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgIH1cclxuXHJcbiAgICAuYnRuLW91dGxpbmU6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmIyYjJiZmY7XHJcbiAgICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgIH1cclxuXHJcbiAgICAubW9udGgteWVhci13cmFwcGVyIHtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAubW9udGgteWVhci13cmFwcGVyIC5mb3JtLWNvbnRyb2wge1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiA0NXB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5tb250aC1waWNrZXItaGlkZGVuIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBvcGFjaXR5OiAwO1xyXG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxuICAgICAgd2lkdGg6IDA7XHJcbiAgICAgIGhlaWdodDogMDtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICBwYWRkaW5nOiAwO1xyXG4gICAgICBtYXJnaW46IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLm1vbnRoLXBpY2tlci1idG4ge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHJpZ2h0OiA1cHg7XHJcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgcGFkZGluZzogNXB4O1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgY29sb3I6ICM2NjY7XHJcbiAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMnM7XHJcbiAgICAgIHotaW5kZXg6IDE7XHJcbiAgICB9XHJcblxyXG4gICAgLm1vbnRoLXBpY2tlci1idG46aG92ZXI6bm90KDpkaXNhYmxlZCkge1xyXG4gICAgICBjb2xvcjogIzM0OThkYjtcclxuICAgIH1cclxuXHJcbiAgICAubW9udGgtcGlja2VyLWJ0bjpkaXNhYmxlZCB7XHJcbiAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgICAgIG9wYWNpdHk6IDAuNTtcclxuICAgIH1cclxuXHJcbiAgICAubW9udGgtcGlja2VyLWJ0biAubWF0ZXJpYWwtaWNvbnMge1xyXG4gICAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgICAgIHdpZHRoOiBhdXRvO1xyXG4gICAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLnNlYXJjaC1zZWxlY3Qtd3JhcHBlciB7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgLnNlYXJjaC1zZWxlY3QtaW5wdXQge1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5zZWFyY2gtc2VsZWN0LWRyb3Bkb3duIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IGNhbGMoMTAwJSArIDRweCk7XHJcbiAgICAgIGxlZnQ6IDA7XHJcbiAgICAgIHJpZ2h0OiBhdXRvO1xyXG4gICAgICBtaW4td2lkdGg6IDEwMCU7XHJcbiAgICAgIG1heC13aWR0aDogY2FsYygxMDB2dyAtIDE2cHgpO1xyXG4gICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICAgICAgYm9yZGVyOiAxcHggc29saWQgI2QzZDNkMztcclxuICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gICAgICBtYXgtaGVpZ2h0OiAyMjBweDtcclxuICAgICAgb3ZlcmZsb3cteTogYXV0bztcclxuICAgICAgYm94LXNoYWRvdzogMCA0cHggMTBweCByZ2JhKDAsMCwwLDAuMDgpO1xyXG4gICAgICB6LWluZGV4OiA1O1xyXG4gICAgICBwYWRkaW5nOiA2cHggMDtcclxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xyXG4gICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xcyBlYXNlLW91dDtcclxuICAgIH1cclxuXHJcbiAgICAuc2VhcmNoLXNlbGVjdC1vcHRpb24ge1xyXG4gICAgICBwYWRkaW5nOiA4cHggMTJweDtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBnYXA6IDhweDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMmYyZjI7XHJcbiAgICB9XHJcblxyXG4gICAgLnNlYXJjaC1zZWxlY3Qtb3B0aW9uOmxhc3QtY2hpbGQge1xyXG4gICAgICBib3JkZXItYm90dG9tOiBub25lO1xyXG4gICAgfVxyXG5cclxuICAgIC5zZWFyY2gtc2VsZWN0LW9wdGlvbjpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQ6ICNmNWY5ZmY7XHJcbiAgICB9XHJcblxyXG4gICAgLnJlcGVhdGFibGUtZ3JvdXAtd3JhcHBlciB7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmY7XHJcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2VlZTtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XHJcbiAgICAgICAgcGFkZGluZzogMjBweCAxMDBweCAyMHB4IDIwcHg7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDtcclxuICAgICAgICBib3gtc2hhZG93OiAwIDFweCAycHggcmdiYSgwLDAsMCwwLjA1KTtcclxuICAgIH1cclxuICAgIC5yZXBlYXRhYmxlLWFjdGlvbnMge1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICB0b3A6IDQ1cHg7XHJcbiAgICAgICAgcmlnaHQ6IDE1cHg7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBnYXA6IDhweDtcclxuICAgICAgICB6LWluZGV4OiAxMDtcclxuICAgIH1cclxuICAgIC5idG4taWNvbiB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcclxuICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAgIHBhZGRpbmc6IDRweDtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4ycztcclxuICAgIH1cclxuICAgIC5idG4taWNvbjpob3ZlciB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogI2YwZjBmMDtcclxuICAgIH1cclxuXHJcbiAgICAub3B0aW9uLWNvZGUge1xyXG4gICAgICBjb2xvcjogIzAwNTJjYztcclxuICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICAgICAgbWluLXdpZHRoOiA5MHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5vcHRpb24tbmFtZSB7XHJcbiAgICAgIGNvbG9yOiAjMTUxZDQ4O1xyXG4gICAgICBmb250LXdlaWdodDogNTAwO1xyXG4gICAgfVxyXG5cclxuICAgIC50aW1lLXBpY2tlci13cmFwcGVyIHtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAudGltZS1pbnB1dCB7XHJcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDQ1cHg7XHJcbiAgICAgIGZsZXg6IDE7XHJcbiAgICB9XHJcblxyXG4gICAgLnRpbWUtcGlja2VyLWJ0biB7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgcmlnaHQ6IDVweDtcclxuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICBwYWRkaW5nOiA1cHg7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICBjb2xvcjogIzY2NjtcclxuICAgICAgdHJhbnNpdGlvbjogY29sb3IgMC4ycztcclxuICAgICAgei1pbmRleDogMTtcclxuICAgIH1cclxuXHJcbiAgICAudGltZS1waWNrZXItYnRuOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcclxuICAgICAgY29sb3I6ICMzNDk4ZGI7XHJcbiAgICB9XHJcblxyXG4gICAgLnRpbWUtcGlja2VyLWJ0bjpkaXNhYmxlZCB7XHJcbiAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgICAgIG9wYWNpdHk6IDAuNTtcclxuICAgIH1cclxuXHJcbiAgICAudGltZS1waWNrZXItYnRuIC5tYXRlcmlhbC1pY29ucyB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMjBweDtcclxuICAgICAgd2lkdGg6IGF1dG87XHJcbiAgICAgIGhlaWdodDogYXV0bztcclxuICAgICAgcGFkZGluZzogMDtcclxuICAgIH1cclxuXHJcbiAgICBpbnB1dFt0eXBlPVwidGltZVwiXSB7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIH1cclxuXHJcbiAgICBpbnB1dFt0eXBlPVwidGltZVwiXTo6LXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9yIHtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICBvcGFjaXR5OiAwO1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHJpZ2h0OiAwO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgfVxyXG5cclxuICAgIC5kYXRlLXBpY2tlci1maWVsZCB7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG5cclxuICAgIC5kYXRlLXBpY2tlci1maWVsZCA6Om5nLWRlZXAgLm1hdC1tZGMtZm9ybS1maWVsZCB7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG5cclxuICAgIC5kYXRlLXBpY2tlci1maWVsZCA6Om5nLWRlZXAgLm1hdC1tZGMtdGV4dC1maWVsZC13cmFwcGVyIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcclxuICAgIH1cclxuXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tZGMtdGV4dC1maWVsZC0tb3V0bGluZWQgLm1kYy1ub3RjaGVkLW91dGxpbmVfX2xlYWRpbmcsXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tZGMtdGV4dC1maWVsZC0tb3V0bGluZWQgLm1kYy1ub3RjaGVkLW91dGxpbmVfX25vdGNoLFxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkIC5tZGMtbm90Y2hlZC1vdXRsaW5lX190cmFpbGluZyB7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogIzhDQkJBODtcclxuICAgIH1cclxuXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tZGMtdGV4dC1maWVsZC0tb3V0bGluZWQ6bm90KC5tZGMtdGV4dC1maWVsZC0tZGlzYWJsZWQpIC5tZGMtbm90Y2hlZC1vdXRsaW5lX19sZWFkaW5nLFxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkOm5vdCgubWRjLXRleHQtZmllbGQtLWRpc2FibGVkKSAubWRjLW5vdGNoZWQtb3V0bGluZV9fbm90Y2gsXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tZGMtdGV4dC1maWVsZC0tb3V0bGluZWQ6bm90KC5tZGMtdGV4dC1maWVsZC0tZGlzYWJsZWQpIC5tZGMtbm90Y2hlZC1vdXRsaW5lX190cmFpbGluZyB7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogIzhDQkJBODtcclxuICAgIH1cclxuXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tZGMtdGV4dC1maWVsZC0tb3V0bGluZWQubWRjLXRleHQtZmllbGQtLWZvY3VzZWQgLm1kYy1ub3RjaGVkLW91dGxpbmVfX2xlYWRpbmcsXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tZGMtdGV4dC1maWVsZC0tb3V0bGluZWQubWRjLXRleHQtZmllbGQtLWZvY3VzZWQgLm1kYy1ub3RjaGVkLW91dGxpbmVfX25vdGNoLFxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkLm1kYy10ZXh0LWZpZWxkLS1mb2N1c2VkIC5tZGMtbm90Y2hlZC1vdXRsaW5lX190cmFpbGluZyB7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogIzM0OThkYjtcclxuICAgIH1cclxuXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQuZXJyb3ItYm9yZGVyIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkIC5tZGMtbm90Y2hlZC1vdXRsaW5lX19sZWFkaW5nLFxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkLmVycm9yLWJvcmRlciA6Om5nLWRlZXAgLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZCAubWRjLW5vdGNoZWQtb3V0bGluZV9fbm90Y2gsXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQuZXJyb3ItYm9yZGVyIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkIC5tZGMtbm90Y2hlZC1vdXRsaW5lX190cmFpbGluZyB7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogcmVkICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWF0LW1kYy1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyIHtcclxuICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgIH1cclxuXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tYXQtbWRjLWZvcm0tZmllbGQtaW5wdXQtY29udHJvbCBpbnB1dCB7XHJcbiAgICAgIGZvbnQtZmFtaWx5OiBcIlBvcHBpbnNcIiAhaW1wb3J0YW50O1xyXG4gICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgICAgIGNvbG9yOiAjMWYyYjQxO1xyXG4gICAgfVxyXG4gIGAsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBZGRVcGRhdGVGb3JtQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQElucHV0KCkgY29uZmlnITogRm9ybUNvbmZpZztcclxuICBAT3V0cHV0KCkgdmFsaWRhdGlvbkVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgZm9ybSE6IEZvcm1Hcm91cDtcclxuICBzdWJtaXR0ZWQgPSBmYWxzZTtcclxuICBwcml2YXRlIGZpbGVQcmV2aWV3czogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKTtcclxuICBwcml2YXRlIGZpbGVOYW1lczogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKTtcclxuICBwcml2YXRlIHZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBwcml2YXRlIHBhc3N3b3JkVmlzaWJpbGl0eTogTWFwPHN0cmluZywgYm9vbGVhbj4gPSBuZXcgTWFwKCk7XHJcbiAgcHJpdmF0ZSBzZWFyY2hRdWVyaWVzOiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcCgpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBob3N0UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5pbml0aWFsaXplRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogaW1wb3J0KCdAYW5ndWxhci9jb3JlJykuU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2NvbmZpZyddICYmICFjaGFuZ2VzWydjb25maWcnXS5maXJzdENoYW5nZSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZUV4aXN0aW5nRm9ybSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlRXhpc3RpbmdGb3JtKCkge1xyXG4gICAgaWYgKCF0aGlzLmZvcm0pIHtcclxuICAgICAgdGhpcy5pbml0aWFsaXplRm9ybSgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jb25maWcuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICBpZiAoIXNlY3Rpb24uaXNSZXBlYXRhYmxlKSB7XHJcbiAgICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldChjb2x1bW4ubmFtZSk7XHJcbiAgICAgICAgICBpZiAoY29udHJvbCkge1xyXG4gICAgICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gdGhpcy5idWlsZFZhbGlkYXRvcnMoY29sdW1uLnZhbGlkYXRpb25zLCB0aGlzLmZvcm0pO1xyXG4gICAgICAgICAgICBjb250cm9sLnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XHJcbiAgICAgICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBpc0Rpc2FibGVkID0gdGhpcy5pc0ZpZWxkRGlzYWJsZWQoY29sdW1uLCB0aGlzLmZvcm0pO1xyXG4gICAgICAgICAgICBpZiAoaXNEaXNhYmxlZCAmJiBjb250cm9sLmVuYWJsZWQpIGNvbnRyb2wuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKCFpc0Rpc2FibGVkICYmIGNvbnRyb2wuZGlzYWJsZWQpIGNvbnRyb2wuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBpbml0aWFsVmFsdWUgPSBjb2x1bW4udmFsdWUgfHwgJyc7XHJcbiAgICAgICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ21vbnRoLXllYXInICYmIGluaXRpYWxWYWx1ZSkgaW5pdGlhbFZhbHVlID0gdGhpcy5mb3JtYXRNb250aFllYXJWYWx1ZShpbml0aWFsVmFsdWUpO1xyXG4gICAgICAgICAgICBjb25zdCBuZXdDb250cm9sID0gdGhpcy5mYi5jb250cm9sKHsgdmFsdWU6IGluaXRpYWxWYWx1ZSwgZGlzYWJsZWQ6ICh0eXBlb2YgY29sdW1uLmRpc2FibGVkID09PSAnYm9vbGVhbicgPyBjb2x1bW4uZGlzYWJsZWQgOiBmYWxzZSkgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSB0aGlzLmJ1aWxkVmFsaWRhdG9ycyhjb2x1bW4udmFsaWRhdGlvbnMsIHRoaXMuZm9ybSk7XHJcbiAgICAgICAgICAgIG5ld0NvbnRyb2wuc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2woY29sdW1uLm5hbWUsIG5ld0NvbnRyb2wpO1xyXG5cclxuICAgICAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gbmV3Q29udHJvbC52YWx1ZUNoYW5nZXNcclxuICAgICAgICAgICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxyXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb2wgPSB0aGlzLmdldENvbHVtbkJ5TmFtZShjb2x1bW4ubmFtZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29sPy5vbkNoYW5nZSkgY29sLm9uQ2hhbmdlKHZhbHVlLCB0aGlzLmZvcm0pO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgLy8gTGlmZWN5Y2xlIGhvb2sgLSBjYW4gYmUgdXNlZCBmb3IgZGF0ZXBpY2tlciBpbml0aWFsaXphdGlvbiBpZiBuZWVkZWRcclxuICB9XHJcblxyXG4gIGdldENvbHVtbldpZHRoKGNvbHVtbjogRm9ybUNvbHVtbik6IHN0cmluZyB7XHJcbiAgICBjb25zdCBtYXhDb2xzID0gdGhpcy5jb25maWcubWF4Q29sc1BlclJvdyB8fCA1O1xyXG4gICAgY29uc3QgY29sU3BhbiA9IE1hdGgubWluKGNvbHVtbi5jb2xTcGFuIHx8IDEsIG1heENvbHMpO1xyXG4gICAgcmV0dXJuIGBjYWxjKCR7KGNvbFNwYW4gLyBtYXhDb2xzKSAqIDEwMH0lIC0gMTZweClgO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udHJvbChuYW1lOiBzdHJpbmcpOiBGb3JtQ29udHJvbCB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldChuYW1lKSBhcyBGb3JtQ29udHJvbDtcclxuICB9XHJcblxyXG4gIC8vIDIuIEhFTFBFUjogQ29udmVydCB5b3VyIEZpZWxkVmFsaWRhdGlvbltdIHRvIHRoZSBsaWJyYXJ5J3MgVmFsaWRhdGlvblNjaGVtYVxyXG4gIGdldFNjaGVtYShjb2x1bW46IEZvcm1Db2x1bW4sIGdyb3VwOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uU2NoZW1hIHtcclxuICAgIGNvbnN0IHJ1bGVzOiBWYWxpZGF0aW9uUnVsZVtdID0gW107XHJcbiAgICBjb25zdCBlcnJvclByaW9yaXR5OiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0IGlzUmVxdWlyZWRWYWx1ZSA9IHR5cGVvZiBjb2x1bW4ucmVxdWlyZWQgPT09ICdmdW5jdGlvbidcclxuICAgICAgPyBjb2x1bW4ucmVxdWlyZWQoZ3JvdXAgYXMgRm9ybUdyb3VwKVxyXG4gICAgICA6IGNvbHVtbi5yZXF1aXJlZDtcclxuXHJcbiAgICBsZXQgcmVxdWlyZWRSdWxlQWRkZWQgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAoY29sdW1uLnZhbGlkYXRpb25zKSB7XHJcbiAgICAgIGNvbHVtbi52YWxpZGF0aW9ucy5mb3JFYWNoKCh2KSA9PiB7XHJcbiAgICAgICAgc3dpdGNoICh2LnR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgJ3JlcXVpcmVkJzpcclxuICAgICAgICAgICAgY29uc3QgZW5hYmxlZCA9IGlzUmVxdWlyZWRWYWx1ZSA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6ICEhaXNSZXF1aXJlZFZhbHVlO1xyXG4gICAgICAgICAgICBpZiAoZW5hYmxlZCkge1xyXG4gICAgICAgICAgICAgIHJ1bGVzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgbmFtZTogJ3JlcXVpcmVkJyxcclxuICAgICAgICAgICAgICAgIHBhcmFtczogeyBlbmFibGVkOiB0cnVlIH0sXHJcbiAgICAgICAgICAgICAgICBlcnJvcktleTogJ0VSUl9SRVFVSVJFRCcsXHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiB2Lm1lc3NhZ2UgfHwgJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQnXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgZXJyb3JQcmlvcml0eS5wdXNoKCdyZXF1aXJlZCcpO1xyXG4gICAgICAgICAgICAgIHJlcXVpcmVkUnVsZUFkZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ2VtYWlsJzpcclxuICAgICAgICAgICAgcnVsZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogJ3JlZ2V4JyxcclxuICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgIHBhdHRlcm46ICdeW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcXFxcLlthLXpBLVpdezIsfSQnLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgZXJyb3JLZXk6ICdFUlJfUkVHRVhfTUlTTUFUQ0gnLFxyXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHYubWVzc2FnZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZXJyb3JQcmlvcml0eS5wdXNoKCdyZWdleCcpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ21pbkxlbmd0aCc6XHJcbiAgICAgICAgICAgIHJ1bGVzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6ICdtaW5MZW5ndGgnLFxyXG4gICAgICAgICAgICAgIHBhcmFtczogeyB2YWx1ZTogdi52YWx1ZSB9LFxyXG4gICAgICAgICAgICAgIGVycm9yS2V5OiAnRVJSX01JTl9MRU5HVEgnLFxyXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHYubWVzc2FnZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZXJyb3JQcmlvcml0eS5wdXNoKCdtaW5MZW5ndGgnKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdtYXhMZW5ndGgnOlxyXG4gICAgICAgICAgICBydWxlcy5wdXNoKHtcclxuICAgICAgICAgICAgICBuYW1lOiAnbWF4TGVuZ3RoJyxcclxuICAgICAgICAgICAgICBwYXJhbXM6IHsgdmFsdWU6IHYudmFsdWUgfSxcclxuICAgICAgICAgICAgICBlcnJvcktleTogJ0VSUl9NQVhfTEVOR1RIJyxcclxuICAgICAgICAgICAgICBtZXNzYWdlOiB2Lm1lc3NhZ2VcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGVycm9yUHJpb3JpdHkucHVzaCgnbWF4TGVuZ3RoJyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAncGF0dGVybic6XHJcbiAgICAgICAgICAgIHJ1bGVzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6ICdyZWdleCcsXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7IHBhdHRlcm46IHYudmFsdWUgfSxcclxuICAgICAgICAgICAgICBlcnJvcktleTogJ0VSUl9SRUdFWF9NSVNNQVRDSCcsXHJcbiAgICAgICAgICAgICAgbWVzc2FnZTogdi5tZXNzYWdlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBlcnJvclByaW9yaXR5LnB1c2goJ3JlZ2V4Jyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAncGFzc3dvcmRDb21wbGV4aXR5JzpcclxuICAgICAgICAgICAgcnVsZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogJ3Bhc3N3b3JkQ29tcGxleGl0eScsXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB2LnBhcmFtcyB8fCB7XHJcbiAgICAgICAgICAgICAgICByZXF1aXJlVXBwZXJjYXNlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZUxvd2VyY2FzZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVOdW1iZXI6IHRydWUsXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlU3BlY2lhbENoYXI6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBtaW5MZW5ndGg6IDhcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGVycm9yS2V5OiB2LmVycm9yS2V5IHx8ICdFUlJfUEFTU1dPUkRfQ09NUExFWElUWV9JTlZBTElEJyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGVycm9yUHJpb3JpdHkucHVzaCgncGFzc3dvcmRDb21wbGV4aXR5Jyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnbWluJzpcclxuICAgICAgICAgICAgcnVsZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogJ21pbicsXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7IHZhbHVlOiB2LnZhbHVlIH0sXHJcbiAgICAgICAgICAgICAgZXJyb3JLZXk6ICdFUlJfTUlOX1ZBTFVFJyxcclxuICAgICAgICAgICAgICBtZXNzYWdlOiB2Lm1lc3NhZ2VcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGVycm9yUHJpb3JpdHkucHVzaCgnbWluJyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnbWF4JzpcclxuICAgICAgICAgICAgcnVsZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogJ21heCcsXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7IHZhbHVlOiB2LnZhbHVlIH0sXHJcbiAgICAgICAgICAgICAgZXJyb3JLZXk6ICdFUlJfTUFYX1ZBTFVFJyxcclxuICAgICAgICAgICAgICBtZXNzYWdlOiB2Lm1lc3NhZ2VcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGVycm9yUHJpb3JpdHkucHVzaCgnbWF4Jyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnY3VzdG9tJzpcclxuICAgICAgICAgICAgcnVsZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogJ2N1c3RvbScsXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7IHZhbGlkYXRvcjogdi52YWxpZGF0b3IgfSxcclxuICAgICAgICAgICAgICBlcnJvcktleTogdi5tZXNzYWdlIHx8IHYuZXJyb3JLZXkgfHwgJ0VSUl9DVVNUT01fSU5WQUxJRCcsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBlcnJvclByaW9yaXR5LnB1c2goJ2N1c3RvbScpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ2R1cGxpY2F0ZSc6XHJcbiAgICAgICAgICAgIHJ1bGVzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6ICdkdXBsaWNhdGUnLFxyXG4gICAgICAgICAgICAgIHBhcmFtczogeyBleGlzdGluZ1ZhbHVlczogdi52YWx1ZSB9LFxyXG4gICAgICAgICAgICAgIGVycm9yS2V5OiB2LmVycm9yS2V5IHx8ICdFUlJfRFVQTElDQVRFJyxcclxuICAgICAgICAgICAgICBtZXNzYWdlOiB2Lm1lc3NhZ2VcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGVycm9yUHJpb3JpdHkucHVzaCgnZHVwbGljYXRlJyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWYgaXQgd2FzIGV2YWx1YXRlZCBhcyByZXF1aXJlZCBidXQgbm90IHByZXNlbnQgaW4gdGhlIHZhbGlkYXRpb25zIGxpc3RcclxuICAgIGlmICghcmVxdWlyZWRSdWxlQWRkZWQgJiYgaXNSZXF1aXJlZFZhbHVlID09PSB0cnVlKSB7XHJcbiAgICAgIHJ1bGVzLnB1c2goe1xyXG4gICAgICAgIG5hbWU6ICdyZXF1aXJlZCcsXHJcbiAgICAgICAgcGFyYW1zOiB7IGVuYWJsZWQ6IHRydWUgfSxcclxuICAgICAgICBlcnJvcktleTogJ0VSUl9SRVFVSVJFRCcsXHJcbiAgICAgICAgbWVzc2FnZTogJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQnXHJcbiAgICAgIH0pO1xyXG4gICAgICBlcnJvclByaW9yaXR5LnB1c2goJ3JlcXVpcmVkJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTWFwICduYW1lLWNvZGUnIHRvICdEcm9wZG93bicgb3Igc2ltaWxhciBmb3IgdmFsaWRhdGlvbiBzY2hlbWEgcHVycG9zZXMgaWYgbmVlZGVkXHJcbiAgICBsZXQgY29udHJvbFR5cGUgPSBjb2x1bW4udHlwZTtcclxuICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ25hbWUtY29kZScpIHtcclxuICAgICAgY29udHJvbFR5cGUgPSAnc2VsZWN0JzsgLy8gVHJlYXQgYXMgc2VsZWN0IGZvciBzY2hlbWEgbG9va3VwIGlmIGxpYnJhcnkgZXhwZWN0cyAnc2VsZWN0JyBvciAnRHJvcGRvd24nXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY29udHJvbFR5cGU6IGNvbnRyb2xUeXBlLFxyXG4gICAgICBlcnJvclByaW9yaXR5OiBlcnJvclByaW9yaXR5LFxyXG4gICAgICBydWxlczogcnVsZXMsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgaXNJbWFnZUZpZWxkKGNvbHVtbjogRm9ybUNvbHVtbik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgY29sdW1uLnR5cGUgPT09ICdmaWxlJyAmJlxyXG4gICAgICAoY29sdW1uLmFjY2VwdD8uc3RhcnRzV2l0aCgnaW1hZ2UnKSB8fCBjb2x1bW4uZmlsZVByZXZpZXcgPT09IHRydWUpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gSGVscGVycyBmb3IgUmVwZWF0YWJsZSBTZWN0aW9uc1xyXG4gIGdldFNlY3Rpb25BcnJheShzZWN0aW9uOiBGb3JtU2VjdGlvbik6IEZvcm1BcnJheSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldChzZWN0aW9uLnNlY3Rpb25LZXkhKSBhcyBGb3JtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVTZWN0aW9uR3JvdXAoc2VjdGlvbjogRm9ybVNlY3Rpb24pOiBGb3JtR3JvdXAge1xyXG4gICAgY29uc3QgZ3JvdXBDb25maWc6IGFueSA9IHt9O1xyXG4gICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgIGxldCBpbml0aWFsVmFsdWUgPSBjb2x1bW4udmFsdWUgfHwgJyc7XHJcbiAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ21vbnRoLXllYXInICYmIGluaXRpYWxWYWx1ZSkge1xyXG4gICAgICAgIGluaXRpYWxWYWx1ZSA9IHRoaXMuZm9ybWF0TW9udGhZZWFyVmFsdWUoaW5pdGlhbFZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgICBncm91cENvbmZpZ1tjb2x1bW4ubmFtZV0gPSBbXHJcbiAgICAgICAgeyB2YWx1ZTogaW5pdGlhbFZhbHVlLCBkaXNhYmxlZDogKHR5cGVvZiBjb2x1bW4uZGlzYWJsZWQgPT09ICdib29sZWFuJyA/IGNvbHVtbi5kaXNhYmxlZCA6IGZhbHNlKSB9LFxyXG4gICAgICBdO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgZ3JvdXAgPSB0aGlzLmZiLmdyb3VwKGdyb3VwQ29uZmlnKTtcclxuXHJcbiAgICAvLyBBcHBseSBWYWxpZGF0b3JzIGFuZCBJbml0aWFsIFN0YXRlc1xyXG4gICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSB0aGlzLmJ1aWxkVmFsaWRhdG9ycyhjb2x1bW4udmFsaWRhdGlvbnMsIGdyb3VwKTtcclxuICAgICAgY29uc3QgY29udHJvbCA9IGdyb3VwLmdldChjb2x1bW4ubmFtZSk7XHJcblxyXG4gICAgICBpZiAodmFsaWRhdG9ycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgY29udHJvbD8uc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcclxuICAgICAgICBjb250cm9sPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgaXNEaXNhYmxlZCA9IHRoaXMuaXNGaWVsZERpc2FibGVkKGNvbHVtbiwgZ3JvdXApO1xyXG4gICAgICBpZiAoaXNEaXNhYmxlZCAmJiBjb250cm9sPy5lbmFibGVkKSBjb250cm9sLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICBlbHNlIGlmICghaXNEaXNhYmxlZCAmJiBjb250cm9sPy5kaXNhYmxlZCkgY29udHJvbC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGdyb3VwO1xyXG4gIH1cclxuXHJcbiAgYWRkU2VjdGlvbkl0ZW0oc2VjdGlvbjogRm9ybVNlY3Rpb24pIHtcclxuICAgIGNvbnN0IGFycmF5ID0gdGhpcy5nZXRTZWN0aW9uQXJyYXkoc2VjdGlvbik7XHJcbiAgICBhcnJheS5wdXNoKHRoaXMuY3JlYXRlU2VjdGlvbkdyb3VwKHNlY3Rpb24pKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZVNlY3Rpb25JdGVtKHNlY3Rpb246IEZvcm1TZWN0aW9uLCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBhcnJheSA9IHRoaXMuZ2V0U2VjdGlvbkFycmF5KHNlY3Rpb24pO1xyXG4gICAgaWYgKGFycmF5Lmxlbmd0aCA+IDEpIHtcclxuICAgICAgYXJyYXkucmVtb3ZlQXQoaW5kZXgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNDb250cm9sSW52YWxpZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISEoY29udHJvbCAmJiBjb250cm9sLmludmFsaWQgJiYgKGNvbnRyb2wudG91Y2hlZCB8fCB0aGlzLnN1Ym1pdHRlZCkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RXJyb3JNZXNzYWdlRm9yQ29udHJvbChcclxuICAgIGNvbHVtbjogRm9ybUNvbHVtbixcclxuICAgIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IG51bGxcclxuICApOiBzdHJpbmcge1xyXG4gICAgaWYgKCFjb250cm9sPy5lcnJvcnMpIHJldHVybiAnJztcclxuICAgIGNvbnN0IGZpZWxkID0gY29udHJvbDtcclxuICAgIGNvbnN0IGVycm9ycyA9IGZpZWxkLmVycm9ycyE7XHJcblxyXG4gICAgaWYgKGVycm9yc1snY3VzdG9tJ10pIHtcclxuICAgICAgY29uc3QgY3VzdG9tVmFsaWRhdGlvbiA9IGNvbHVtbj8udmFsaWRhdGlvbnM/LmZpbmQoXHJcbiAgICAgICAgKHYpID0+IHYudHlwZSA9PT0gJ2N1c3RvbSdcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIGN1c3RvbVZhbGlkYXRpb24/Lm1lc3NhZ2UgfHwgJ0ludmFsaWQgZmllbGQnO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGVycm9yS2V5cyA9IE9iamVjdC5rZXlzKGVycm9ycyk7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBlcnJvcktleXMpIHtcclxuICAgICAgY29uc3QgdmFsaWRhdGlvbiA9IGNvbHVtbj8udmFsaWRhdGlvbnM/LmZpbmQoKHYpID0+IHYudHlwZSA9PT0ga2V5KTtcclxuICAgICAgaWYgKHZhbGlkYXRpb24gJiYgdmFsaWRhdGlvbi5tZXNzYWdlKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRpb24ubWVzc2FnZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChlcnJvcnNbJ3JlcXVpcmVkJ10pIHJldHVybiBgJHtjb2x1bW4/LmxhYmVsfSBpcyByZXF1aXJlZGA7XHJcbiAgICBpZiAoZXJyb3JzWydlbWFpbCddKSByZXR1cm4gJ0ludmFsaWQgZW1haWwgZm9ybWF0JztcclxuICAgIGlmIChlcnJvcnNbJ21pbmxlbmd0aCddKVxyXG4gICAgICByZXR1cm4gYE1pbmltdW0gbGVuZ3RoIGlzICR7ZXJyb3JzWydtaW5sZW5ndGgnXS5yZXF1aXJlZExlbmd0aH1gO1xyXG4gICAgaWYgKGVycm9yc1snbWF4bGVuZ3RoJ10pXHJcbiAgICAgIHJldHVybiBgTWF4aW11bSBsZW5ndGggaXMgJHtlcnJvcnNbJ21heGxlbmd0aCddLnJlcXVpcmVkTGVuZ3RofWA7XHJcbiAgICBpZiAoZXJyb3JzWydtaW4nXSlcclxuICAgICAgcmV0dXJuIGBNaW5pbXVtIHZhbHVlIGlzICR7ZXJyb3JzWydtaW4nXS5taW59YDtcclxuICAgIGlmIChlcnJvcnNbJ21heCddKVxyXG4gICAgICByZXR1cm4gYE1heGltdW0gdmFsdWUgaXMgJHtlcnJvcnNbJ21heCddLm1heH1gO1xyXG4gICAgaWYgKGVycm9yc1sncGF0dGVybiddKSByZXR1cm4gJ0ludmFsaWQgZm9ybWF0JztcclxuICAgIGlmIChlcnJvcnNbJ2R1cGxpY2F0ZSddKSByZXR1cm4gY29sdW1uPy52YWxpZGF0aW9ucz8uZmluZCh2ID0+IHYudHlwZSA9PT0gJ2R1cGxpY2F0ZScpPy5tZXNzYWdlIHx8IGAke2NvbHVtbj8ubGFiZWx9IGFscmVhZHkgZXhpc3RzYDtcclxuXHJcbiAgICByZXR1cm4gJ0ludmFsaWQgZmllbGQnO1xyXG4gIH1cclxuXHJcbiAgaXNGaWVsZERpc2FibGVkKGNvbHVtbjogRm9ybUNvbHVtbiwgZ3JvdXA6IEFic3RyYWN0Q29udHJvbCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHR5cGVvZiBjb2x1bW4uZGlzYWJsZWQgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgcmV0dXJuIGNvbHVtbi5kaXNhYmxlZChncm91cCBhcyBGb3JtR3JvdXApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG4gIGluaXRpYWxpemVGb3JtKCkge1xyXG4gICAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcclxuICAgIGNvbnN0IGZvcm1Hcm91cENvbmZpZzogYW55ID0ge307XHJcblxyXG4gICAgdGhpcy5jb25maWcuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICBpZiAoc2VjdGlvbi5pc1JlcGVhdGFibGUgJiYgc2VjdGlvbi5zZWN0aW9uS2V5KSB7XHJcbiAgICAgICAgZm9ybUdyb3VwQ29uZmlnW3NlY3Rpb24uc2VjdGlvbktleV0gPSB0aGlzLmZiLmFycmF5KFtcclxuICAgICAgICAgIHRoaXMuY3JlYXRlU2VjdGlvbkdyb3VwKHNlY3Rpb24pLFxyXG4gICAgICAgIF0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNlY3Rpb24uZmllbGRzLmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG4gICAgICAgICAgbGV0IGluaXRpYWxWYWx1ZSA9IGNvbHVtbi52YWx1ZSB8fCAnJztcclxuXHJcbiAgICAgICAgICAvLyBGb3JtYXQgbW9udGgteWVhciBmaWVsZHMgdG8gWVlZWS1NTSBmb3JtYXRcclxuICAgICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ21vbnRoLXllYXInICYmIGluaXRpYWxWYWx1ZSkge1xyXG4gICAgICAgICAgICBpbml0aWFsVmFsdWUgPSB0aGlzLmZvcm1hdE1vbnRoWWVhclZhbHVlKGluaXRpYWxWYWx1ZSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgZm9ybUdyb3VwQ29uZmlnW2NvbHVtbi5uYW1lXSA9IFtcclxuICAgICAgICAgICAgeyB2YWx1ZTogaW5pdGlhbFZhbHVlLCBkaXNhYmxlZDogKHR5cGVvZiBjb2x1bW4uZGlzYWJsZWQgPT09ICdib29sZWFuJyA/IGNvbHVtbi5kaXNhYmxlZCA6IGZhbHNlKSB9LFxyXG4gICAgICAgICAgICBudWxsLCAvLyBXZSdsbCBzZXQgdmFsaWRhdG9ycyBhZnRlciBmb3JtIGNyZWF0aW9uXHJcbiAgICAgICAgICBdO1xyXG5cclxuICAgICAgICAgIC8vIElmIGl0J3MgYSBmaWxlIGZpZWxkIHdpdGggYW4gZXhpc3RpbmcgdmFsdWUsIHNldCB0aGUgcHJldmlld1xyXG4gICAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnZmlsZScgJiYgY29sdW1uLnZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsZVByZXZpZXdzLnNldChjb2x1bW4ubmFtZSwgY29sdW1uLnZhbHVlKTtcclxuICAgICAgICAgICAgLy8gRXh0cmFjdCBmaWxlbmFtZSBmcm9tIFVSTCBvciBiYXNlNjRcclxuICAgICAgICAgICAgY29uc3QgZmlsZU5hbWUgPSB0aGlzLmV4dHJhY3RGaWxlTmFtZShjb2x1bW4udmFsdWUpO1xyXG4gICAgICAgICAgICBpZiAoZmlsZU5hbWUpIHtcclxuICAgICAgICAgICAgICB0aGlzLmZpbGVOYW1lcy5zZXQoY29sdW1uLm5hbWUsIGZpbGVOYW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKGZvcm1Hcm91cENvbmZpZyk7XHJcblxyXG4gICAgdGhpcy5jb25maWcuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICBpZiAoIXNlY3Rpb24uaXNSZXBlYXRhYmxlKSB7XHJcbiAgICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gdGhpcy5idWlsZFZhbGlkYXRvcnMoXHJcbiAgICAgICAgICAgIGNvbHVtbi52YWxpZGF0aW9ucyxcclxuICAgICAgICAgICAgdGhpcy5mb3JtXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaWYgKHZhbGlkYXRvcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KGNvbHVtbi5uYW1lKT8uc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldChjb2x1bW4ubmFtZSk/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZhbHVlIGNoYW5nZXMgZm9yIGFsbCBmaWVsZHMgdG8gdHJpZ2dlciBvbkNoYW5nZSBoYW5kbGVyc1xyXG4gICAgT2JqZWN0LmtleXModGhpcy5mb3JtLmNvbnRyb2xzKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5nZXQoa2V5KTtcclxuICAgICAgaWYgKGNvbnRyb2wpIHtcclxuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBjb250cm9sLnZhbHVlQ2hhbmdlc1xyXG4gICAgICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuZ2V0Q29sdW1uQnlOYW1lKGtleSk7XHJcbiAgICAgICAgICAgIGlmIChjb2x1bW4/Lm9uQ2hhbmdlKSB7XHJcbiAgICAgICAgICAgICAgY29sdW1uLm9uQ2hhbmdlKHZhbHVlLCB0aGlzLmZvcm0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAvLyBDbGVhbiB1cCBhbGwgc3Vic2NyaXB0aW9ucyB0byBwcmV2ZW50IG1lbW9yeSBsZWFrc1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZVN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3ViKSA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9ucyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRmllbGRDaGFuZ2UoXHJcbiAgICBmaWVsZE5hbWU6IHN0cmluZyxcclxuICAgIGV2ZW50VmFsdWU/OiBhbnksXHJcbiAgICBjb250cm9sPzogQWJzdHJhY3RDb250cm9sLFxyXG4gICAgZ3JvdXA/OiBBYnN0cmFjdENvbnRyb2xcclxuICApIHtcclxuICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuZ2V0Q29sdW1uQnlOYW1lKGZpZWxkTmFtZSk7XHJcbiAgICBjb25zdCBmb3JtQ29udHJvbCA9IGNvbnRyb2wgfHwgdGhpcy5mb3JtLmdldChmaWVsZE5hbWUpO1xyXG4gICAgY29uc3QgZm9ybUdyb3VwID0gKGdyb3VwIGFzIEZvcm1Hcm91cCkgfHwgdGhpcy5mb3JtO1xyXG5cclxuICAgIC8vIEZvcm1hdCBtb250aC15ZWFyIGZpZWxkcyAoZXNwZWNpYWxseSBleHBpcnlEYXRlKSB0byBZWVlZLU1NXHJcbiAgICBpZiAoY29sdW1uPy50eXBlID09PSAnbW9udGgteWVhcicgJiYgZXZlbnRWYWx1ZSkge1xyXG4gICAgICBjb25zdCBmb3JtYXR0ZWRWYWx1ZSA9IHRoaXMuZm9ybWF0TW9udGhZZWFyVmFsdWUoZXZlbnRWYWx1ZSk7XHJcbiAgICAgIGlmIChmb3JtQ29udHJvbCAmJiBmb3JtYXR0ZWRWYWx1ZSAhPT0gZXZlbnRWYWx1ZSkge1xyXG4gICAgICAgIGZvcm1Db250cm9sLnNldFZhbHVlKGZvcm1hdHRlZFZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgZXZlbnRWYWx1ZSA9IGZvcm1hdHRlZFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNvbHVtbj8ub25DaGFuZ2UpIHtcclxuICAgICAgLy8gVXNlIHRoZSBldmVudCB2YWx1ZSBkaXJlY3RseSAod2hhdCB0aGUgdXNlciBqdXN0IHNlbGVjdGVkL3R5cGVkKVxyXG4gICAgICAvLyBUaGlzIGVuc3VyZXMgd2UgaGF2ZSB0aGUgY29ycmVjdCB2YWx1ZSBldmVuIGlmIGZvcm0gY29udHJvbCBoYXNuJ3QgdXBkYXRlZCB5ZXRcclxuICAgICAgY29uc3QgdmFsdWVUb1Bhc3MgPVxyXG4gICAgICAgIGV2ZW50VmFsdWUgIT09IHVuZGVmaW5lZCA/IGV2ZW50VmFsdWUgOiBmb3JtQ29udHJvbD8udmFsdWU7XHJcbiAgICAgIGNvbnN0IG9uQ2hhbmdlRm4gPSBjb2x1bW4ub25DaGFuZ2U7IC8vIFN0b3JlIHRoZSBmdW5jdGlvbiByZWZlcmVuY2VcclxuXHJcbiAgICAgIC8vIFN0b3JlIHRoZSBzZWxlY3RlZCB2YWx1ZSAtIHRoaXMgaXMgd2hhdCB0aGUgdXNlciBjaG9zZVxyXG4gICAgICBjb25zdCBzZWxlY3RlZFZhbHVlID0gdmFsdWVUb1Bhc3M7XHJcblxyXG4gICAgICAvLyBFbnN1cmUgdGhlIGZvcm0gY29udHJvbCBoYXMgdGhlIHNlbGVjdGVkIHZhbHVlIGJlZm9yZSBjYWxsaW5nIG9uQ2hhbmdlXHJcbiAgICAgIGlmIChmb3JtQ29udHJvbCAmJiBzZWxlY3RlZFZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBpZiAoZm9ybUNvbnRyb2wudmFsdWUgIT09IHNlbGVjdGVkVmFsdWUpIHtcclxuICAgICAgICAgIGZvcm1Db250cm9sLnNldFZhbHVlKHNlbGVjdGVkVmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIENhbGwgb25DaGFuZ2Ugd2l0aCB0aGUgc2VsZWN0ZWQgdmFsdWVcclxuICAgICAgaWYgKG9uQ2hhbmdlRm4pIHtcclxuICAgICAgICBvbkNoYW5nZUZuKHNlbGVjdGVkVmFsdWUsIGZvcm1Hcm91cCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFJlc3RvcmUgdGhlIHZhbHVlIGZvciB0aGUgZmllbGQgdGhhdCB0cmlnZ2VyZWQgdGhlIGNoYW5nZSBpZiBpdCB3YXMgY2xlYXJlZCBieSBvbkNoYW5nZVxyXG4gICAgICAvLyBUaGlzIGlzIGNyaXRpY2FsOiBpZiBvbkNoYW5nZSBjbGVhcnMgdGhlIGZpZWxkIHRoYXQgd2FzIGp1c3QgY2hhbmdlZCwgd2UgcmVzdG9yZSBpdFxyXG4gICAgICAvLyBPbmx5IHJlc3RvcmUgaWYgd2UgaGFkIGEgbm9uLWVtcHR5IHZhbHVlIChlbXB0eSBzdHJpbmcsIG51bGwsIHVuZGVmaW5lZCBhcmUgbm90IHJlc3RvcmVkKVxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgZm9ybUNvbnRyb2wgJiZcclxuICAgICAgICBzZWxlY3RlZFZhbHVlICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgICBzZWxlY3RlZFZhbHVlICE9PSBudWxsICYmXHJcbiAgICAgICAgc2VsZWN0ZWRWYWx1ZSAhPT0gJydcclxuICAgICAgKSB7XHJcbiAgICAgICAgLy8gVXNlIHNldFRpbWVvdXQgd2l0aCAwIGRlbGF5IHRvIHJ1biBhZnRlciBhbnkgc3luY2hyb25vdXMgb3BlcmF0aW9ucyBpbiBvbkNoYW5nZVxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHZhbHVlIHdhcyBjbGVhcmVkIG9yIGNoYW5nZWRcclxuICAgICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGZvcm1Db250cm9sLnZhbHVlO1xyXG4gICAgICAgICAgLy8gSWYgdGhlIHZhbHVlIGRvZXNuJ3QgbWF0Y2ggd2hhdCB3YXMgc2VsZWN0ZWQsIHJlc3RvcmUgaXRcclxuICAgICAgICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZSBvbkNoYW5nZSBjbGVhcmVkIHRoZSBmaWVsZCB1bmludGVudGlvbmFsbHlcclxuICAgICAgICAgIGlmIChjdXJyZW50VmFsdWUgIT09IHNlbGVjdGVkVmFsdWUpIHtcclxuICAgICAgICAgICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUoc2VsZWN0ZWRWYWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIDApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb3JtYXRNb250aFllYXJWYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghdmFsdWUpIHJldHVybiB2YWx1ZTtcclxuICAgIC8vIE5vcm1hbGl6ZSB0byBZWVlZLU1NXHJcbiAgICBpZiAodmFsdWUubWF0Y2goL15cXGR7Mn0tXFxkezR9JC8pKSB7XHJcbiAgICAgIGNvbnN0IFttb250aCwgeWVhcl0gPSB2YWx1ZS5zcGxpdCgnLScpO1xyXG4gICAgICByZXR1cm4gYCR7eWVhcn0tJHttb250aH1gO1xyXG4gICAgfVxyXG4gICAgLy8gSWYgYWxyZWFkeSBpbiBZWVlZLU1NIGZvcm1hdCwgcmV0dXJuIGFzIGlzXHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwYXJzZU1vbnRoWWVhclZhbHVlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIHZhbHVlO1xyXG4gICAgLy8gRGlzcGxheSBhbmQgcGlja2VyIGJvdGggdXNlIFlZWVktTU07IG5vcm1hbGl6ZSBNTS1ZWVlZIGlmIHByZXNlbnRcclxuICAgIGlmICh2YWx1ZS5tYXRjaCgvXlxcZHsyfS1cXGR7NH0kLykpIHtcclxuICAgICAgY29uc3QgW21vbnRoLCB5ZWFyXSA9IHZhbHVlLnNwbGl0KCctJyk7XHJcbiAgICAgIHJldHVybiBgJHt5ZWFyfS0ke21vbnRofWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVNb250aFllYXJDaGFuZ2UoXHJcbiAgICBmaWVsZE5hbWU6IHN0cmluZyxcclxuICAgIHZhbHVlOiBzdHJpbmcsXHJcbiAgICBjb250cm9sPzogQWJzdHJhY3RDb250cm9sLFxyXG4gICAgZ3JvdXA/OiBBYnN0cmFjdENvbnRyb2xcclxuICApIHtcclxuICAgIC8vIEZvcm1hdCB0aGUgaW5wdXQgdmFsdWUgdG8gWVlZWS1NTSBmb3JtYXRcclxuICAgIGxldCBmb3JtYXR0ZWRWYWx1ZSA9IHZhbHVlO1xyXG5cclxuICAgIC8vIElmIGl0J3MgaW4gTU0tWVlZWSBmb3JtYXQsIGNvbnZlcnQgdG8gWVlZWS1NTVxyXG4gICAgaWYgKGZvcm1hdHRlZFZhbHVlLm1hdGNoKC9eXFxkezJ9LVxcZHs0fSQvKSkge1xyXG4gICAgICBjb25zdCBbbW9udGgsIHllYXJdID0gZm9ybWF0dGVkVmFsdWUuc3BsaXQoJy0nKTtcclxuICAgICAgZm9ybWF0dGVkVmFsdWUgPSBgJHt5ZWFyfS0ke21vbnRofWA7XHJcbiAgICB9XHJcbiAgICAvLyBJZiBpdCdzIGluIFlZWVlNTSBmb3JtYXQgKG5vIGRhc2gpLCBjb252ZXJ0IHRvIFlZWVktTU1cclxuICAgIGVsc2UgaWYgKGZvcm1hdHRlZFZhbHVlLm1hdGNoKC9eXFxkezZ9JC8pKSB7XHJcbiAgICAgIGNvbnN0IHllYXIgPSBmb3JtYXR0ZWRWYWx1ZS5zdWJzdHJpbmcoMCwgNCk7XHJcbiAgICAgIGNvbnN0IG1vbnRoID0gZm9ybWF0dGVkVmFsdWUuc3Vic3RyaW5nKDQsIDYpO1xyXG4gICAgICBmb3JtYXR0ZWRWYWx1ZSA9IGAke3llYXJ9LSR7bW9udGh9YDtcclxuICAgIH1cclxuICAgIC8vIElmIGl0J3MgYWxyZWFkeSBpbiBZWVlZLU1NIGZvcm1hdCwgbGVhdmUgYXMgaXNcclxuICAgIGVsc2UgaWYgKGZvcm1hdHRlZFZhbHVlLm1hdGNoKC9eXFxkezR9LVxcZHsyfSQvKSkge1xyXG4gICAgICAvLyBBbHJlYWR5IGluIGNvcnJlY3QgZm9ybWF0XHJcbiAgICB9XHJcbiAgICAvLyBJZiB1c2VyIGlzIHR5cGluZywgYWxsb3cgcGFydGlhbCBpbnB1dFxyXG4gICAgZWxzZSBpZiAoZm9ybWF0dGVkVmFsdWUubWF0Y2goL15cXGR7MSw2fSQvKSkge1xyXG4gICAgICAvLyBBbGxvdyBwYXJ0aWFsIGlucHV0IHdoaWxlIHR5cGluZ1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZvcm1Db250cm9sID0gY29udHJvbCB8fCB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk7XHJcbiAgICBpZiAoZm9ybUNvbnRyb2wgJiYgZm9ybWF0dGVkVmFsdWUgIT09IHZhbHVlKSB7XHJcbiAgICAgIGZvcm1Db250cm9sLnNldFZhbHVlKGZvcm1hdHRlZFZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5oYW5kbGVGaWVsZENoYW5nZShmaWVsZE5hbWUsIGZvcm1hdHRlZFZhbHVlLCBjb250cm9sLCBncm91cCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVNb250aFllYXJCbHVyKGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMuZm9ybS5nZXQoZmllbGROYW1lKTtcclxuICAgIGlmICghZm9ybUNvbnRyb2wpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCB2YWx1ZSA9IGZvcm1Db250cm9sLnZhbHVlIHx8ICcnO1xyXG4gICAgLy8gRW5zdXJlIHRoZSB2YWx1ZSBpcyBpbiBZWVlZLU1NIGZvcm1hdCBvbiBibHVyXHJcbiAgICBpZiAodmFsdWUgJiYgIXZhbHVlLm1hdGNoKC9eXFxkezR9LVxcZHsyfSQvKSkge1xyXG4gICAgICAvLyBUcnkgdG8gcGFyc2UgYW5kIGZvcm1hdFxyXG4gICAgICBjb25zdCBmb3JtYXR0ZWQgPSB0aGlzLmZvcm1hdE1vbnRoWWVhclZhbHVlKHZhbHVlKTtcclxuICAgICAgaWYgKGZvcm1hdHRlZCAhPT0gdmFsdWUpIHtcclxuICAgICAgICBmb3JtQ29udHJvbC5zZXRWYWx1ZShmb3JtYXR0ZWQsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlTW9udGhZZWFyUGlja2VyQ2hhbmdlKGZpZWxkTmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICAvLyBNb250aCBwaWNrZXIgb3V0cHV0cyBZWVlZLU1NOyBqdXN0IG5vcm1hbGl6ZVxyXG4gICAgY29uc3QgZm9ybWF0dGVkVmFsdWUgPSB0aGlzLmZvcm1hdE1vbnRoWWVhclZhbHVlKHZhbHVlKTtcclxuICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5mb3JtLmdldChmaWVsZE5hbWUpO1xyXG4gICAgaWYgKGZvcm1Db250cm9sKSB7XHJcbiAgICAgIGZvcm1Db250cm9sLnNldFZhbHVlKGZvcm1hdHRlZFZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIHRoaXMuaGFuZGxlRmllbGRDaGFuZ2UoZmllbGROYW1lLCBmb3JtYXR0ZWRWYWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRNb250aFllYXJQaWNrZXJWYWx1ZShmaWVsZE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMuZm9ybS5nZXQoZmllbGROYW1lKTtcclxuICAgIGlmICghZm9ybUNvbnRyb2wpIHJldHVybiAnJztcclxuICAgIGNvbnN0IHZhbHVlID0gZm9ybUNvbnRyb2wudmFsdWUgfHwgJyc7XHJcbiAgICAvLyBEaXNwbGF5IGFuZCBwaWNrZXIgYm90aCBleHBlY3QgWVlZWS1NTVxyXG4gICAgcmV0dXJuIHRoaXMucGFyc2VNb250aFllYXJWYWx1ZSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBvcGVuTW9udGhQaWNrZXIoZmllbGROYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IG1vbnRoSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcclxuICAgICAgZmllbGROYW1lICsgJ19waWNrZXInXHJcbiAgICApIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBpZiAobW9udGhJbnB1dCAmJiBtb250aElucHV0LnR5cGUgPT09ICdtb250aCcpIHtcclxuICAgICAgLy8gVXBkYXRlIHRoZSBwaWNrZXIgdmFsdWUgYmVmb3JlIG9wZW5pbmdcclxuICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5nZXRNb250aFllYXJQaWNrZXJWYWx1ZShmaWVsZE5hbWUpO1xyXG4gICAgICBpZiAoY3VycmVudFZhbHVlKSB7XHJcbiAgICAgICAgbW9udGhJbnB1dC52YWx1ZSA9IGN1cnJlbnRWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgICAvLyBUcnkgbW9kZXJuIHNob3dQaWNrZXIgQVBJIGZpcnN0LCBmYWxsYmFjayB0byBjbGlja1xyXG4gICAgICBpZiAobW9udGhJbnB1dC5zaG93UGlja2VyKSB7XHJcbiAgICAgICAgbW9udGhJbnB1dC5zaG93UGlja2VyKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbW9udGhJbnB1dC5mb2N1cygpO1xyXG4gICAgICAgIG1vbnRoSW5wdXQuY2xpY2soKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q29sdW1uQnlOYW1lKG5hbWU6IHN0cmluZyk6IEZvcm1Db2x1bW4gfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnNlY3Rpb25zXHJcbiAgICAgIC5mbGF0TWFwKChzKSA9PiBzLmZpZWxkcylcclxuICAgICAgLmZpbmQoKGMpID0+IGMubmFtZSA9PT0gbmFtZSk7XHJcbiAgfVxyXG5cclxuICBnZXRGaWxlRmllbGRzKGZpZWxkczogRm9ybUNvbHVtbltdKTogRm9ybUNvbHVtbltdIHtcclxuICAgIHJldHVybiBmaWVsZHMuZmlsdGVyKChmKSA9PiBmLnR5cGUgPT09ICdmaWxlJyk7XHJcbiAgfVxyXG5cclxuICBnZXROb25GaWxlRmllbGRzKGZpZWxkczogRm9ybUNvbHVtbltdKTogRm9ybUNvbHVtbltdIHtcclxuICAgIHJldHVybiBmaWVsZHMuZmlsdGVyKChmKSA9PiBmLnR5cGUgIT09ICdmaWxlJyk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVQYXNzd29yZFZpc2liaWxpdHkoZmllbGROYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLnBhc3N3b3JkVmlzaWJpbGl0eS5nZXQoZmllbGROYW1lKSB8fCBmYWxzZTtcclxuICAgIHRoaXMucGFzc3dvcmRWaXNpYmlsaXR5LnNldChmaWVsZE5hbWUsICFjdXJyZW50KTtcclxuICB9XHJcbiAgaGFzUmVxdWlyZWRWYWxpZGF0aW9uKGNvbHVtbjogRm9ybUNvbHVtbik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGNvbHVtbi52YWxpZGF0aW9ucz8uc29tZSgodikgPT4gdi50eXBlID09PSAncmVxdWlyZWQnKSB8fCBmYWxzZTtcclxuICB9XHJcblxyXG4gIGlzUGFzc3dvcmRWaXNpYmxlKGZpZWxkTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5wYXNzd29yZFZpc2liaWxpdHkuZ2V0KGZpZWxkTmFtZSkgfHwgZmFsc2U7XHJcbiAgfVxyXG5cclxuICBidWlsZFZhbGlkYXRvcnMoXHJcbiAgICB2YWxpZGF0aW9ucz86IEZpZWxkVmFsaWRhdGlvbltdLFxyXG4gICAgZm9ybUdyb3VwPzogRm9ybUdyb3VwXHJcbiAgKTogYW55W10ge1xyXG4gICAgaWYgKCF2YWxpZGF0aW9ucykgcmV0dXJuIFtdO1xyXG5cclxuICAgIGNvbnN0IHZhbGlkYXRvcnM6IGFueVtdID0gW107XHJcbiAgICB2YWxpZGF0aW9ucy5mb3JFYWNoKCh2YWxpZGF0aW9uKSA9PiB7XHJcbiAgICAgIHN3aXRjaCAodmFsaWRhdGlvbi50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAncmVxdWlyZWQnOlxyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnZW1haWwnOlxyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMuZW1haWwpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnbWluTGVuZ3RoJzpcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbkxlbmd0aCh2YWxpZGF0aW9uLnZhbHVlKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdtYXhMZW5ndGgnOlxyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKHZhbGlkYXRpb24udmFsdWUpKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ21pbic6XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW4odmFsaWRhdGlvbi52YWx1ZSkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnbWF4JzpcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heCh2YWxpZGF0aW9uLnZhbHVlKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdwYXR0ZXJuJzpcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4odmFsaWRhdGlvbi52YWx1ZSkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnY3VzdG9tJzpcclxuICAgICAgICAgIGlmICh2YWxpZGF0aW9uLnZhbGlkYXRvcikge1xyXG4gICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGlzVmFsaWQgPSB2YWxpZGF0aW9uLnZhbGlkYXRvciEoY29udHJvbC52YWx1ZSwgZm9ybUdyb3VwKTtcclxuICAgICAgICAgICAgICByZXR1cm4gaXNWYWxpZCA/IG51bGwgOiB7IGN1c3RvbTogdHJ1ZSB9O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2R1cGxpY2F0ZSc6XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgICAgIGlmICghdmFsdWUgfHwgIXZhbGlkYXRpb24udmFsdWUgfHwgIUFycmF5LmlzQXJyYXkodmFsaWRhdGlvbi52YWx1ZSkpIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICBjb25zdCBpc0R1cGxpY2F0ZSA9IHZhbGlkYXRpb24udmFsdWUuc29tZSgoZXhpc3Rpbmc6IGFueSkgPT5cclxuICAgICAgICAgICAgICBTdHJpbmcoZXhpc3RpbmcpLnRvTG93ZXJDYXNlKCkudHJpbSgpID09PSBTdHJpbmcodmFsdWUpLnRvTG93ZXJDYXNlKCkudHJpbSgpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHJldHVybiBpc0R1cGxpY2F0ZSA/IHsgZHVwbGljYXRlOiB0cnVlIH0gOiBudWxsO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdmFsaWRhdG9ycztcclxuICB9XHJcblxyXG4gIHRyaWdnZXJGaWxlVXBsb2FkKGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmlsZUlucHV0XycgKyBmaWVsZE5hbWUpPy5jbGljaygpO1xyXG4gIH1cclxuXHJcbiAgb3BlblRpbWVQaWNrZXIoZmllbGROYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHRpbWVJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGZpZWxkTmFtZSkgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGlmICh0aW1lSW5wdXQgJiYgdGltZUlucHV0LnR5cGUgPT09ICd0aW1lJykge1xyXG4gICAgICAvLyBUcnkgbW9kZXJuIHNob3dQaWNrZXIgQVBJIGZpcnN0LCBmYWxsYmFjayB0byBjbGlja1xyXG4gICAgICBpZiAodGltZUlucHV0LnNob3dQaWNrZXIpIHtcclxuICAgICAgICB0aW1lSW5wdXQuc2hvd1BpY2tlcigpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRpbWVJbnB1dC5mb2N1cygpO1xyXG4gICAgICAgIHRpbWVJbnB1dC5jbGljaygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkZpbGVDaGFuZ2UoZXZlbnQ6IGFueSwgZmllbGROYW1lOiBzdHJpbmcsIGdyb3VwPzogQWJzdHJhY3RDb250cm9sKSB7XHJcbiAgICBjb25zdCBmaWxlOiBGaWxlID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xyXG4gICAgY29uc3QgZm9ybUdyb3VwID0gKGdyb3VwIGFzIEZvcm1Hcm91cCkgfHwgdGhpcy5mb3JtO1xyXG4gICAgaWYgKGZpbGUpIHtcclxuICAgICAgdGhpcy5maWxlTmFtZXMuc2V0KGZpZWxkTmFtZSwgZmlsZS5uYW1lKTtcclxuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgYmFzZTY0U3RyaW5nID0gcmVhZGVyLnJlc3VsdCBhcyBzdHJpbmc7XHJcbiAgICAgICAgdGhpcy5maWxlUHJldmlld3Muc2V0KGZpZWxkTmFtZSwgYmFzZTY0U3RyaW5nKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk/LnNldFZhbHVlKGJhc2U2NFN0cmluZyk7XHJcblxyXG4gICAgICAgIC8vIFRyaWdnZXIgb25DaGFuZ2UgaGFuZGxlciBmb3IgZmlsZSBmaWVsZHNcclxuICAgICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmdldENvbHVtbkJ5TmFtZShmaWVsZE5hbWUpO1xyXG4gICAgICAgIGlmIChjb2x1bW4/Lm9uQ2hhbmdlKSB7XHJcbiAgICAgICAgICBjb2x1bW4ub25DaGFuZ2UoYmFzZTY0U3RyaW5nLCBmb3JtR3JvdXApO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4dHJhY3RGaWxlTmFtZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghdmFsdWUpIHJldHVybiAnJztcclxuXHJcbiAgICAvLyBJZiBpdCdzIGEgVVJMLCBleHRyYWN0IGZpbGVuYW1lIGZyb20gVVJMXHJcbiAgICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnaHR0cCcpKSB7XHJcbiAgICAgIGNvbnN0IHBhcnRzID0gdmFsdWUuc3BsaXQoJy8nKTtcclxuICAgICAgcmV0dXJuIHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIElmIGl0J3MgYmFzZTY0LCByZXR1cm4gYSBnZW5lcmljIG5hbWVcclxuICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKGBkYXRhOmltYWdlYCkpIHtcclxuICAgICAgcmV0dXJuICd1cGxvYWRlZC1pbWFnZS5qcGcnO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAnZXhpc3RpbmctcGhvdG8uanBnJztcclxuICB9XHJcblxyXG4gIGdldEZpbGVQcmV2aWV3KGZpZWxkTmFtZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5maWxlUHJldmlld3MuZ2V0KGZpZWxkTmFtZSkgfHwgbnVsbDtcclxuICB9XHJcblxyXG4gIGdldEZpbGVOYW1lKGZpZWxkTmFtZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5maWxlTmFtZXMuZ2V0KGZpZWxkTmFtZSkgfHwgbnVsbDtcclxuICB9XHJcblxyXG4gIG1hcFNlYXJjaE9wdGlvbnMob3B0aW9uczogYW55W10pOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gb3B0aW9ucy5tYXAob3B0ID0+ICh7XHJcbiAgICAgIGNvZGU6IFN0cmluZyhvcHQuY29kZSB8fCBvcHQudmFsdWUgfHwgJycpLFxyXG4gICAgICBuYW1lOiBTdHJpbmcob3B0Lm5hbWUgfHwgb3B0LmxhYmVsIHx8IG9wdC52YWx1ZSB8fCAnJyksXHJcbiAgICAgIHZhbHVlOiBvcHQudmFsdWVcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG5cclxuICBkZWxldGVGaWxlKGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmZpbGVQcmV2aWV3cy5kZWxldGUoZmllbGROYW1lKTtcclxuICAgIHRoaXMuZmlsZU5hbWVzLmRlbGV0ZShmaWVsZE5hbWUpO1xyXG4gICAgdGhpcy5mb3JtLmdldChmaWVsZE5hbWUpPy5zZXRWYWx1ZSgnJyk7XHJcblxyXG4gICAgLy8gVHJpZ2dlciBvbkNoYW5nZSBoYW5kbGVyIHdoZW4gZmlsZSBpcyBkZWxldGVkXHJcbiAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmdldENvbHVtbkJ5TmFtZShmaWVsZE5hbWUpO1xyXG4gICAgaWYgKGNvbHVtbj8ub25DaGFuZ2UpIHtcclxuICAgICAgY29sdW1uLm9uQ2hhbmdlKCcnLCB0aGlzLmZvcm0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlU3VibWl0KCkge1xyXG4gICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgIC8vIE1hcmsgYWxsIGZpZWxkcyBhcyB0b3VjaGVkIHRvIHNob3cgcmVkIGJvcmRlcnMgKHJlY3Vyc2l2ZSlcclxuICAgICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuXHJcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yLmVtaXQoXHJcbiAgICAgICAgJ1BsZWFzZSBmaWxsIGFsbCByZXF1aXJlZCBmaWVsZHMgbWFya2VkIHdpdGggKi4nXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmb3JtRGF0YSA9IHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpO1xyXG4gICAgdGhpcy5jb25maWcub25TdWJtaXQoZm9ybURhdGEpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlUmVzZXQoKSB7XHJcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5mb3JtLnJlc2V0KCk7XHJcbiAgICBpZiAodGhpcy5jb25maWcub25SZXNldCkge1xyXG4gICAgICB0aGlzLmNvbmZpZy5vblJlc2V0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0ZpZWxkSW52YWxpZChmaWVsZE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZmllbGQgPSB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk7XHJcbiAgICByZXR1cm4gISEoZmllbGQgJiYgZmllbGQuaW52YWxpZCAmJiAoZmllbGQudG91Y2hlZCB8fCB0aGlzLnN1Ym1pdHRlZCkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RXJyb3JNZXNzYWdlKGZpZWxkTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5mb3JtLmdldChmaWVsZE5hbWUpO1xyXG4gICAgaWYgKCFmaWVsZD8uZXJyb3JzKSByZXR1cm4gJyc7XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgdGhlcmUncyBhIGN1c3RvbSBtZXNzYWdlIGZyb20gdmFsaWRhdGlvbnNcclxuICAgIGNvbnN0IGFsbENvbHVtbnMgPSB0aGlzLmNvbmZpZy5zZWN0aW9ucy5mbGF0TWFwKChzKSA9PiBzLmZpZWxkcyk7XHJcbiAgICBjb25zdCBjb2x1bW4gPSBhbGxDb2x1bW5zLmZpbmQoKGMpID0+IGMubmFtZSA9PT0gZmllbGROYW1lKTtcclxuICAgIC8vIENoZWNrIGZvciBjdXN0b20gdmFsaWRhdGlvbiBlcnJvclxyXG4gICAgaWYgKGZpZWxkLmVycm9yc1snY3VzdG9tJ10pIHtcclxuICAgICAgY29uc3QgY3VzdG9tVmFsaWRhdGlvbiA9IGNvbHVtbj8udmFsaWRhdGlvbnM/LmZpbmQoXHJcbiAgICAgICAgKHYpID0+IHYudHlwZSA9PT0gJ2N1c3RvbSdcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIGN1c3RvbVZhbGlkYXRpb24/Lm1lc3NhZ2UgfHwgJ0ludmFsaWQgZmllbGQnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgYSBjdXN0b20gbWVzc2FnZSBmcm9tIHZhbGlkYXRpb25zXHJcbiAgICBjb25zdCBlcnJvcktleXMgPSBPYmplY3Qua2V5cyhmaWVsZC5lcnJvcnMpO1xyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgZXJyb3JLZXlzKSB7XHJcbiAgICAgIGNvbnN0IHZhbGlkYXRpb24gPSBjb2x1bW4/LnZhbGlkYXRpb25zPy5maW5kKCh2KSA9PiB2LnR5cGUgPT09IGtleSk7XHJcbiAgICAgIGlmICh2YWxpZGF0aW9uPy5tZXNzYWdlKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRpb24ubWVzc2FnZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gRGVmYXVsdCBlcnJvciBtZXNzYWdlc1xyXG4gICAgaWYgKGZpZWxkLmVycm9yc1sncmVxdWlyZWQnXSkge1xyXG4gICAgICByZXR1cm4gYCR7Y29sdW1uPy5sYWJlbH0gaXMgcmVxdWlyZWRgO1xyXG4gICAgfVxyXG4gICAgaWYgKGZpZWxkLmVycm9yc1snZW1haWwnXSkgcmV0dXJuICdJbnZhbGlkIGVtYWlsIGZvcm1hdCc7XHJcbiAgICBpZiAoZmllbGQuZXJyb3JzWydtaW5sZW5ndGgnXSlcclxuICAgICAgcmV0dXJuIGBNaW5pbXVtIGxlbmd0aCBpcyAke2ZpZWxkLmVycm9yc1snbWlubGVuZ3RoJ10ucmVxdWlyZWRMZW5ndGh9YDtcclxuICAgIGlmIChmaWVsZC5lcnJvcnNbJ21heGxlbmd0aCddKVxyXG4gICAgICByZXR1cm4gYE1heGltdW0gbGVuZ3RoIGlzICR7ZmllbGQuZXJyb3JzWydtYXhsZW5ndGgnXS5yZXF1aXJlZExlbmd0aH1gO1xyXG4gICAgaWYgKGZpZWxkLmVycm9yc1snbWluJ10pXHJcbiAgICAgIHJldHVybiBgTWluaW11bSB2YWx1ZSBpcyAke2ZpZWxkLmVycm9yc1snbWluJ10ubWlufWA7XHJcbiAgICBpZiAoZmllbGQuZXJyb3JzWydtYXgnXSlcclxuICAgICAgcmV0dXJuIGBNYXhpbXVtIHZhbHVlIGlzICR7ZmllbGQuZXJyb3JzWydtYXgnXS5tYXh9YDtcclxuICAgIGlmIChmaWVsZC5lcnJvcnNbJ3BhdHRlcm4nXSkgcmV0dXJuICdJbnZhbGlkIGZvcm1hdCc7XHJcbiAgICBpZiAoZmllbGQuZXJyb3JzWydkdXBsaWNhdGUnXSkgcmV0dXJuIGNvbHVtbj8udmFsaWRhdGlvbnM/LmZpbmQodiA9PiB2LnR5cGUgPT09ICdkdXBsaWNhdGUnKT8ubWVzc2FnZSB8fCBgJHtjb2x1bW4/LmxhYmVsfSBhbHJlYWR5IGV4aXN0c2A7XHJcbiAgICByZXR1cm4gJ0ludmFsaWQgZmllbGQnO1xyXG4gIH1cclxufVxyXG4iXX0=
1448
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXVwZGF0ZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Z2LWNvbnRyb2xzL3NyYy9saWIvYWRkLXVwZGF0ZS1mb3JtL2FkZC11cGRhdGUtZm9ybS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNkZBLCtCQUErQjtBQUMvQixPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxHQUlQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBTUwsbUJBQW1CLEVBQ25CLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELDhCQUE4QjtBQUM5QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNoRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM1RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUs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Ozs7Ozs7Ozs7R0EyVVQ7eUdBd2lCUSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0ksZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEZpZWxkVHlwZSA9XHJcbiAgfCAndGV4dCdcclxuICB8ICdlbWFpbCdcclxuICB8ICdudW1iZXInXHJcbiAgfCAnc2VsZWN0J1xyXG4gIHwgJ25hbWUtY29kZSdcclxuICB8ICdjaGVja2JveCdcclxuICB8ICd0ZXh0YXJlYSdcclxuICB8ICdkYXRlJ1xyXG4gIHwgJ3Bhc3N3b3JkJ1xyXG4gIHwgJ3JhZGlvJ1xyXG4gIHwgJ2ZpbGUnXHJcbiAgfCAnbW9udGgteWVhcidcclxuICB8ICdwaG9uZSdcclxuICB8ICd1YW4nXHJcbiAgfCAncGYnXHJcbiAgfCAnZXNpJ1xyXG4gIHwgJ2lmc2MnXHJcbiAgfCAnbWljcidcclxuICB8ICdpYmFuJ1xyXG4gIHwgJ3NlcnZpY2UtcGVyaW9kJ1xyXG4gIHwgJ3NjYW4nXHJcbiAgfCAnZG9jdW1lbnQnXHJcbiAgfCAndGltZSdcclxuICB8ICd0b2dnbGUnO1xyXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uVHlwZSA9XHJcbiAgfCAncmVxdWlyZWQnXHJcbiAgfCAnZW1haWwnXHJcbiAgfCAnbWluTGVuZ3RoJ1xyXG4gIHwgJ21heExlbmd0aCdcclxuICB8ICdwYXR0ZXJuJ1xyXG4gIHwgJ21pbidcclxuICB8ICdtYXgnXHJcbiAgfCAnY3VzdG9tJ1xyXG4gIHwgJ2R1cGxpY2F0ZSdcclxuICB8ICdwYXNzd29yZENvbXBsZXhpdHknO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGaWVsZFZhbGlkYXRpb24ge1xyXG4gIHR5cGU6IFZhbGlkYXRpb25UeXBlO1xyXG4gIHZhbHVlPzogYW55OyAvLyBGb3IgbWluTGVuZ3RoLCBtYXhMZW5ndGgsIG1pbiwgbWF4LCBwYXR0ZXJuXHJcbiAgbWVzc2FnZT86IHN0cmluZzsgLy8gQ3VzdG9tIGVycm9yIG1lc3NhZ2VcclxuICB2YWxpZGF0b3I/OiAodmFsdWU6IGFueSwgZm9ybUdyb3VwPzogYW55KSA9PiBib29sZWFuOyAvLyBGb3IgY3VzdG9tIHZhbGlkYXRpb25cclxuICBwYXJhbXM/OiBhbnk7IC8vIEZvciBjb21wbGV4IHZhbGlkYXRpb24gcnVsZXMgbGlrZSBwYXNzd29yZENvbXBsZXhpdHlcclxuICBlcnJvcktleT86IHN0cmluZzsgLy8gU3BlY2lmaWMgZXJyb3Iga2V5IHRvIHJldHVyblxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1Db2x1bW4ge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIHR5cGU6IEZpZWxkVHlwZTtcclxuICBwbGFjZWhvbGRlcj86IHN0cmluZztcclxuICByZXF1aXJlZD86IGJvb2xlYW4gfCAoKGZvcm1Hcm91cDogYW55KSA9PiBib29sZWFuKTtcclxuICBvcHRpb25zPzogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogYW55IH1bXTsgLy8gRm9yIHNlbGVjdCBmaWVsZHNcclxuICB2YWxpZGF0aW9ucz86IEZpZWxkVmFsaWRhdGlvbltdO1xyXG4gIHZhbHVlPzogYW55OyAvLyBEZWZhdWx0IHZhbHVlXHJcbiAgZGlzYWJsZWQ/OiBib29sZWFuIHwgKChmb3JtR3JvdXA6IGFueSkgPT4gYm9vbGVhbik7XHJcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xyXG4gIGhpZGRlbj86IGJvb2xlYW47XHJcbiAgaGludD86IHN0cmluZztcclxuICBjb2xTcGFuPzogbnVtYmVyO1xyXG4gIG9uQ2hhbmdlPzogKHZhbHVlOiBhbnksIGZvcm1Hcm91cDogYW55KSA9PiB2b2lkO1xyXG4gIGFjY2VwdD86IHN0cmluZzsgLy8gRm9yIGZpbGUgaW5wdXQgKGUuZy4sICdpbWFnZS8qJylcclxuICBmaWxlUHJldmlldz86IGJvb2xlYW47IC8vIFNob3cgaW1hZ2UgcHJldmlld1xyXG4gIHNob3dUaW1lUGlja2VyPzogYm9vbGVhbjsgLy8gU2hvdyB0aW1lIHBpY2tlciBmb3IgdGV4dCBmaWVsZHNcclxuICBhbGxvd0FscGhhYmV0c09ubHk/OiBib29sZWFuO1xyXG4gIG1heExlbmd0aD86IG51bWJlcjtcclxuICBsYXlvdXQ/OiAndmVydGljYWwnIHwgJ2hvcml6b250YWwnOyAvLyBGb3IgcmFkaW8gZ3JvdXBcclxuICBzZXJ2aWNlUGVyaW9kQ29uZmlnPzogeyBzdGFydEZpZWxkOiBzdHJpbmc7IGVuZEZpZWxkOiBzdHJpbmcgfTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGb3JtU2VjdGlvbiB7XHJcbiAgdGl0bGU/OiBzdHJpbmc7IC8vIFNlY3Rpb24gaGVhZGluZyAoZS5nLiwgXCJQRVJTT05BTCBJTkZPUk1BVElPTlwiKVxyXG4gIGZpZWxkczogRm9ybUNvbHVtbltdO1xyXG4gIGlzUmVwZWF0YWJsZT86IGJvb2xlYW47XHJcbiAgc2VjdGlvbktleT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGb3JtQ29uZmlnIHtcclxuICBzZWN0aW9uczogRm9ybVNlY3Rpb25bXTtcclxuICBzdWJtaXRMYWJlbD86IHN0cmluZztcclxuICByZXNldExhYmVsPzogc3RyaW5nO1xyXG4gIG9uU3VibWl0OiAoZGF0YTogYW55KSA9PiB2b2lkO1xyXG4gIG9uUmVzZXQ/OiAoKSA9PiB2b2lkO1xyXG4gIG9uQ2FuY2VsOiAoKSA9PiB2b2lkO1xyXG4gIGNhbmNlbExhYmVsPzogc3RyaW5nO1xyXG4gIGZvcm1UaXRsZT86IHN0cmluZztcclxuICBtYXhDb2xzUGVyUm93PzogbnVtYmVyO1xyXG4gIGRpc2FibGVTdWJtaXQ/OiBib29sZWFuO1xyXG4gIGRpc2FibGVDYW5jZWw/OiBib29sZWFuO1xyXG4gIGhpZGVTdWJtaXQ/OiBib29sZWFuO1xyXG4gIGhpZGVDYW5jZWw/OiBib29sZWFuO1xyXG59XHJcblxyXG4vLyBhZGQtdXBkYXRlLWZvcm0uY29tcG9uZW50LnRzXHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIEVsZW1lbnRSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIEZvcm1CdWlsZGVyLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIEZvcm1Hcm91cCxcclxuICBGb3JtQXJyYXksXHJcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICBWYWxpZGF0b3JzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG4vLyBJbXBvcnQgeW91ciBsaWJyYXJ5IG1vZHVsZXNcclxuaW1wb3J0IHsgRnZFbnRyeUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtZW50cnktZmllbGQvZnYtZW50cnktZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZOdW1iZXJGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LW51bWJlci1maWVsZC9mdi1udW1iZXItZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWRyb3Bkb3duL2Z2LWRyb3Bkb3duLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2UmFkaW9Hcm91cENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LXJhZGlvLWdyb3VwL2Z2LXJhZGlvLWdyb3VwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2Q2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi9mdi1jaGVja2JveC9mdi1jaGVja2JveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGdkRhdGVGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWRhdGUtZmllbGQvZnYtZGF0ZS1maWVsZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGdk1vbnRoWWVhckZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtbW9udGgteWVhci1maWVsZC9mdi1tb250aC15ZWFyLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2RmlsZVNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtZmlsZS1zZWxlY3Rvci9mdi1maWxlLXNlbGVjdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2SW1hZ2VTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWltYWdlLXNlbGVjdG9yL2Z2LWltYWdlLXNlbGVjdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ2UmljaFRleHRFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi9mdi1yaWNoLXRleHQtZWRpdG9yL2Z2LXJpY2gtdGV4dC1lZGl0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZOYW1lQ29kZUNvbXBvbmVudCB9IGZyb20gJy4uL2Z2LW5hbWUtY29kZS9mdi1uYW1lLWNvZGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZQaG9uZUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtcGhvbmUtZmllbGQvZnYtcGhvbmUtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZVYW5GaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LXVhbi1maWVsZC9mdi11YW4tZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZQZkZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtcGYtZmllbGQvZnYtcGYtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZFc2lGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Z2LWVzaS1maWVsZC9mdi1lc2ktZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZJZnNjRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi1pZnNjLWZpZWxkL2Z2LWlmc2MtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZNaWNyRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi1taWNyLWZpZWxkL2Z2LW1pY3ItZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZJYmFuRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi1pYmFuLWZpZWxkL2Z2LWliYW4tZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZFbWFpbEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtZW1haWwtZmllbGQvZnYtZW1haWwtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZQYXNzd29yZEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtcGFzc3dvcmQtZmllbGQvZnYtcGFzc3dvcmQtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZTZXJ2aWNlUGVyaW9kQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtc2VydmljZS1wZXJpb2QvZnYtc2VydmljZS1wZXJpb2QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZEb2N1bWVudEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZnYtZG9jdW1lbnQtZmllbGQvZnYtZG9jdW1lbnQtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZUaW1lRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mdi10aW1lLWZpZWxkL2Z2LXRpbWUtZmllbGQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnZUb2dnbGVDb21wb25lbnQgfSBmcm9tICcuLi9mdi10b2dnbGUvZnYtdG9nZ2xlLmNvbXBvbmVudCc7XHJcblxyXG5cclxuXHJcbi8vIEltcG9ydCBWYWxpZGF0aW9uIFR5cGVzXHJcbmltcG9ydCB7IFZhbGlkYXRpb25TY2hlbWEsIFZhbGlkYXRpb25SdWxlIH0gZnJvbSAnQGZvdmVzdHRhMi92YWxpZGF0aW9uLWVuZ2luZSc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWFkZC11cGRhdGUtZm9ybScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgRnZFbnRyeUZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZOdW1iZXJGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2RHJvcGRvd25Db21wb25lbnQsXHJcbiAgICBGdlJhZGlvR3JvdXBDb21wb25lbnQsXHJcbiAgICBGdkNoZWNrYm94Q29tcG9uZW50LFxyXG4gICAgRnZEYXRlRmllbGRDb21wb25lbnQsXHJcbiAgICBGdk1vbnRoWWVhckZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZGaWxlU2VsZWN0b3JDb21wb25lbnQsXHJcbiAgICBGdkltYWdlU2VsZWN0b3JDb21wb25lbnQsXHJcbiAgICBGdlJpY2hUZXh0RWRpdG9yQ29tcG9uZW50LFxyXG4gICAgRnZOYW1lQ29kZUNvbXBvbmVudCxcclxuICAgIEZ2UGhvbmVGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2VWFuRmllbGRDb21wb25lbnQsXHJcbiAgICBGdlBmRmllbGRDb21wb25lbnQsXHJcbiAgICBGdkVzaUZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZJZnNjRmllbGRDb21wb25lbnQsXHJcbiAgICBGdk1pY3JGaWVsZENvbXBvbmVudCxcclxuICAgIEZ2SWJhbkZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZFbWFpbEZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZQYXNzd29yZEZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZTZXJ2aWNlUGVyaW9kQ29tcG9uZW50LFxyXG4gICAgRnZEb2N1bWVudEZpZWxkQ29tcG9uZW50LFxyXG4gICAgRnZUaW1lRmllbGRDb21wb25lbnQsXHJcbiAgICBGdlRvZ2dsZUNvbXBvbmVudFxyXG4gIF0sXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1oZWFkZXJcIiAqbmdJZj1cImNvbmZpZy5mb3JtVGl0bGVcIj5cclxuICAgICAgICA8aDI+e3sgY29uZmlnLmZvcm1UaXRsZSB9fTwvaDI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKG5nU3VibWl0KT1cImhhbmRsZVN1Ym1pdCgpXCIgY2xhc3M9XCJkeW5hbWljLWZvcm1cIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIGNvbmZpZy5zZWN0aW9uc1wiIGNsYXNzPVwiZm9ybS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICA8aDMgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCIgKm5nSWY9XCJzZWN0aW9uLnRpdGxlXCI+XHJcbiAgICAgICAgICAgIHt7IHNlY3Rpb24udGl0bGUgfX1cclxuICAgICAgICAgIDwvaDM+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlY3Rpb24uaXNSZXBlYXRhYmxlICYmIHNlY3Rpb24uc2VjdGlvbktleTsgZWxzZSBmbGF0U2VjdGlvblwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBncm91cCBvZiBnZXRTZWN0aW9uQXJyYXkoc2VjdGlvbikuY29udHJvbHM7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cInJlcGVhdGFibGUtZ3JvdXAtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVwZWF0YWJsZS1hY3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWljb24gYnRuLWFkZFwiIChjbGljayk9XCJhZGRTZWN0aW9uSXRlbShzZWN0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjMmVjYzcxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTUgMTFoLTR2NGgtMnYtNEg3di0yaDRWN2gydjRoNHYyelwiLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWljb24gYnRuLXJlbW92ZVwiIChjbGljayk9XCJyZW1vdmVTZWN0aW9uSXRlbShzZWN0aW9uLCBpKVwiICpuZ0lmPVwiZ2V0U2VjdGlvbkFycmF5KHNlY3Rpb24pLmNvbnRyb2xzLmxlbmd0aCA+IDFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI2U3NGMzY1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem01IDExSDd2LTJoMTB2MnpcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkcy1yb3dcIj5cclxuICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2Ygc2VjdGlvbi5maWVsZHNcIj5cclxuICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWVsZFJlbmRlcmVyOyBjb250ZXh0OiB7IGNvbHVtbjogY29sdW1uLCBjb250cm9sOiBncm91cC5nZXQoY29sdW1uLm5hbWUpLCBncm91cDogZ3JvdXAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZmxhdFNlY3Rpb24+XHJcbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRzLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHNlY3Rpb24uZmllbGRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRSZW5kZXJlcjsgY29udGV4dDogeyBjb2x1bW46IGNvbHVtbiwgY29udHJvbDogZ2V0Q29udHJvbChjb2x1bW4ubmFtZSksIGdyb3VwOiBmb3JtIH1cIj5cclxuICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZmllbGRSZW5kZXJlciBsZXQtY29sdW1uPVwiY29sdW1uXCIgbGV0LWNvbnRyb2w9XCJjb250cm9sXCIgbGV0LWdyb3VwPVwiZ3JvdXBcIj5cclxuICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtd3JhcHBlclwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCInZmllbGQtJyArIGNvbHVtbi50eXBlXCJcclxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImNvbHVtbi5oaWRkZW4gPyB7IGRpc3BsYXk6ICdub25lJyB9IDoge31cIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmdyaWQtY29sdW1uXT1cIidzcGFuICcgKyAoY29sdW1uLmNvbFNwYW4gfHwgMSlcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3RleHQnICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWVudHJ5LWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5wbGFjZWhvbGRlciB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbiwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGaWVsZERpc2FibGVkKGNvbHVtbiwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthbGxvd0FscGhhYmV0c09ubHldPVwiY29sdW1uLmFsbG93QWxwaGFiZXRzT25seSB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW21heExlbmd0aF09XCJjb2x1bW4ubWF4TGVuZ3RoIHx8IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVGaWVsZENoYW5nZShjb2x1bW4ubmFtZSwgJGV2ZW50LCBjb250cm9sLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvZnYtZW50cnktZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdlbWFpbCcgJiYgIWNvbHVtbi5oaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtZW1haWwtZmllbGRcclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29sdW1uLnBsYWNlaG9sZGVyIHx8ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4sIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRmllbGREaXNhYmxlZChjb2x1bW4sIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wsIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9mdi1lbWFpbC1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3Bhc3N3b3JkJyAmJiAhY29sdW1uLmhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1wYXNzd29yZC1maWVsZFxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJydcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbiwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGaWVsZERpc2FibGVkKGNvbHVtbiwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlRmllbGRDaGFuZ2UoY29sdW1uLm5hbWUsICRldmVudCwgY29udHJvbCwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LXBhc3N3b3JkLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnbnVtYmVyJyAmJiAhY29sdW1uLmhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1udW1iZXItZmllbGRcclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29sdW1uLnBsYWNlaG9sZGVyIHx8ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4sIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRmllbGREaXNhYmxlZChjb2x1bW4sIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wsIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9mdi1udW1iZXItZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdzZWxlY3QnICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWRyb3Bkb3duXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5wbGFjZWhvbGRlciB8fCAnU2VsZWN0IG9wdGlvbidcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cImNvbHVtbi5vcHRpb25zIHx8IFtdXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4sIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRmllbGREaXNhYmxlZChjb2x1bW4sIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wsIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9mdi1kcm9wZG93bj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2NoZWNrYm94JyAmJiAhY29sdW1uLmhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1jaGVja2JveFxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0ZpZWxkRGlzYWJsZWQoY29sdW1uLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVGaWVsZENoYW5nZShjb2x1bW4ubmFtZSwgJGV2ZW50LCBjb250cm9sLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvZnYtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICd0b2dnbGUnICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LXRvZ2dsZVxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0ZpZWxkRGlzYWJsZWQoY29sdW1uLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVGaWVsZENoYW5nZShjb2x1bW4ubmFtZSwgJGV2ZW50LCBjb250cm9sLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvZnYtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAncmFkaW8nICYmICFjb2x1bW4uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1yYWRpby1ncm91cFxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cImNvbHVtbi5vcHRpb25zIHx8IFtdXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGaWVsZERpc2FibGVkKGNvbHVtbiwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICBbbGF5b3V0XT1cImNvbHVtbi5sYXlvdXQgfHwgJ3ZlcnRpY2FsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wsIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9mdi1yYWRpby1ncm91cD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2RhdGUnICYmICFjb2x1bW4uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1kYXRlLWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0ZpZWxkRGlzYWJsZWQoY29sdW1uLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVGaWVsZENoYW5nZShjb2x1bW4ubmFtZSwgJGV2ZW50LCBjb250cm9sLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvZnYtZGF0ZS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ21vbnRoLXllYXInICYmICFjb2x1bW4uaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGZ2LW1vbnRoLXllYXItZmllbGRcclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4sIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRmllbGREaXNhYmxlZChjb2x1bW4sIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZU1vbnRoWWVhckNoYW5nZShjb2x1bW4ubmFtZSwgJGV2ZW50LCBjb250cm9sLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvZnYtbW9udGgteWVhci1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3RleHRhcmVhJyAmJiAhY29sdW1uLmhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1yaWNoLXRleHQtZWRpdG9yXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5wbGFjZWhvbGRlciB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0ZpZWxkRGlzYWJsZWQoY29sdW1uLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVGaWVsZENoYW5nZShjb2x1bW4ubmFtZSwgJGV2ZW50LCBjb250cm9sLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvZnYtcmljaC10ZXh0LWVkaXRvcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2ZpbGUnICYmICFjb2x1bW4uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0ltYWdlRmllbGQoY29sdW1uKTsgZWxzZSBzdGFuZGFyZEZpbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZnYtaW1hZ2Utc2VsZWN0b3JcclxuICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5wbGFjZWhvbGRlciB8fCAnU2VsZWN0IGltYWdlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbiwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0ZpZWxkRGlzYWJsZWQoY29sdW1uLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uRmlsZUNoYW5nZSgkZXZlbnQsIGNvbHVtbi5uYW1lLCBncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8L2Z2LWltYWdlLXNlbGVjdG9yPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc3RhbmRhcmRGaWxlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmdi1maWxlLXNlbGVjdG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4ucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCBmaWxlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbYWNjZXB0XT1cImNvbHVtbi5hY2NlcHQgfHwgJyovKidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4sIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGaWVsZERpc2FibGVkKGNvbHVtbiwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbkZpbGVDaGFuZ2UoJGV2ZW50LCBjb2x1bW4ubmFtZSwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9mdi1maWxlLXNlbGVjdG9yPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnbmFtZS1jb2RlJyAmJiAhY29sdW1uLmhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1uYW1lLWNvZGVcclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29sdW1uLnBsYWNlaG9sZGVyIHx8ICdTZWFyY2ggYnkgQ29kZSBvciBOYW1lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiY29sdW1uLm9wdGlvbnMgPyBtYXBTZWFyY2hPcHRpb25zKGNvbHVtbi5vcHRpb25zKSA6IFtdXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4sIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRmllbGREaXNhYmxlZChjb2x1bW4sIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUZpZWxkQ2hhbmdlKGNvbHVtbi5uYW1lLCAkZXZlbnQsIGNvbnRyb2wsIGdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPC9mdi1uYW1lLWNvZGU+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdwaG9uZScgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LXBob25lLWZpZWxkIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIiBbY29udHJvbF09XCJjb250cm9sXCIgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uLCBncm91cClcIiBbZGlzYWJsZWRdPVwiaXNGaWVsZERpc2FibGVkKGNvbHVtbiwgZ3JvdXApXCI+PC9mdi1waG9uZS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3VhbicgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LXVhbi1maWVsZCBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCIgW2NvbnRyb2xdPVwiY29udHJvbFwiIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbiwgZ3JvdXApXCIgW2Rpc2FibGVkXT1cImlzRmllbGREaXNhYmxlZChjb2x1bW4sIGdyb3VwKVwiPjwvZnYtdWFuLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAncGYnICYmICFjb2x1bW4uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1wZi1maWVsZCBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCIgW2NvbnRyb2xdPVwiY29udHJvbFwiIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbiwgZ3JvdXApXCIgW2Rpc2FibGVkXT1cImlzRmllbGREaXNhYmxlZChjb2x1bW4sIGdyb3VwKVwiPjwvZnYtcGYtZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdlc2knICYmICFjb2x1bW4uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1lc2ktZmllbGQgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiIFtjb250cm9sXT1cImNvbnRyb2xcIiBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4sIGdyb3VwKVwiIFtkaXNhYmxlZF09XCJpc0ZpZWxkRGlzYWJsZWQoY29sdW1uLCBncm91cClcIj48L2Z2LWVzaS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ2lmc2MnICYmICFjb2x1bW4uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmdi1pZnNjLWZpZWxkIFtsYWJlbF09XCJjb2x1bW4ubGFiZWxcIiBbY29udHJvbF09XCJjb250cm9sXCIgW3NjaGVtYV09XCJnZXRTY2hlbWEoY29sdW1uLCBncm91cClcIiBbZGlzYWJsZWRdPVwiaXNGaWVsZERpc2FibGVkKGNvbHVtbiwgZ3JvdXApXCI+PC9mdi1pZnNjLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAnbWljcicgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LW1pY3ItZmllbGQgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiIFtjb250cm9sXT1cImNvbnRyb2xcIiBbc2NoZW1hXT1cImdldFNjaGVtYShjb2x1bW4sIGdyb3VwKVwiIFtkaXNhYmxlZF09XCJpc0ZpZWxkRGlzYWJsZWQoY29sdW1uLCBncm91cClcIj48L2Z2LW1pY3ItZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdpYmFuJyAmJiAhY29sdW1uLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZnYtaWJhbi1maWVsZCBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCIgW2NvbnRyb2xdPVwiY29udHJvbFwiIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbiwgZ3JvdXApXCIgW2Rpc2FibGVkXT1cImlzRmllbGREaXNhYmxlZChjb2x1bW4sIGdyb3VwKVwiPjwvZnYtaWJhbi1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4udHlwZSA9PT0gJ3NlcnZpY2UtcGVyaW9kJyAmJiAhY29sdW1uLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgPGZ2LXNlcnZpY2UtcGVyaW9kXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJncm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbc3RhcnRGaWVsZF09XCJjb2x1bW4uc2VydmljZVBlcmlvZENvbmZpZz8uc3RhcnRGaWVsZCB8fCAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZW5kRmllbGRdPVwiY29sdW1uLnNlcnZpY2VQZXJpb2RDb25maWc/LmVuZEZpZWxkIHx8ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgPjwvZnYtc2VydmljZS1wZXJpb2Q+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnR5cGUgPT09ICdkb2N1bWVudCcgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LWRvY3VtZW50LWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5wbGFjZWhvbGRlciB8fCAnVXBsb2FkJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FjY2VwdF09XCJjb2x1bW4uYWNjZXB0IHx8ICdhcHBsaWNhdGlvbi9wZGYsaW1hZ2UvKidcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbiwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGaWVsZERpc2FibGVkKGNvbHVtbiwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlRmllbGRDaGFuZ2UoY29sdW1uLm5hbWUsICRldmVudCwgY29udHJvbCwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LWRvY3VtZW50LWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50eXBlID09PSAndGltZScgJiYgIWNvbHVtbi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGZ2LXRpbWUtZmllbGRcclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29sdW1uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29sdW1uLnBsYWNlaG9sZGVyIHx8ICctLTotLSdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGNvbHVtbiwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGaWVsZERpc2FibGVkKGNvbHVtbiwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlRmllbGRDaGFuZ2UoY29sdW1uLm5hbWUsICRldmVudCwgY29udHJvbCwgZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2Z2LXRpbWUtZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWFjdGlvbnNcIj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCIhY29uZmlnLmhpZGVTdWJtaXRcIlxyXG4gICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29uZmlnLmRpc2FibGVTdWJtaXRcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBjb25maWcuc3VibWl0TGFiZWwgfHwgJ1NhdmUnIH19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCIhY29uZmlnLmhpZGVDYW5jZWxcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY29uZmlnLm9uQ2FuY2VsKClcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29uZmlnLmRpc2FibGVDYW5jZWxcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBjb25maWcuY2FuY2VsTGFiZWwgfHwgJ0NhbmNlbCcgfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Zvcm0+XHJcbiAgICA8L2Rpdj5cclxuICBgLFxyXG4gIHN0eWxlczogYFxyXG5cclxuICBAaW1wb3J0IHVybCgnaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1Qb3BwaW5zOndnaHRAMzAwOzQwMDs1MDA7NjAwOzcwMCZkaXNwbGF5PXN3YXAnKTtcclxuICBAaW1wb3J0IHVybCgnaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9pY29uP2ZhbWlseT1NYXRlcmlhbCtJY29ucycpO1xyXG4gICAgKntcclxuICAgICAgZm9udC1mYW1pbHk6IFwiUG9wcGluc1wiICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbiAgICAuZm9ybS1jb250YWluZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAjZjVmNWY1O1xyXG4gICAgICBwYWRkaW5nOiA1cHggMTBweCAxMHB4O1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA4cHg7XHJcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xyXG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICB9XHJcblxyXG4gICAgLmVycm9yLWJvcmRlciB7XHJcbiAgICAgYm9yZGVyLWNvbG9yOiByZWQgIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcbiAgICAuaGlkZGVue1xyXG4gICAgICBkaXNwbGF5Om5vbmUgIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcbiAgICAuZm9ybS1oZWFkZXIge1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiA1cHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmZvcm0taGVhZGVyIGgyIHtcclxuICAgICAgbWFyZ2luOiAwO1xyXG4gICAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgICAgIGNvbG9yOiAjMzAzMDMwO1xyXG4gICAgfVxyXG5cclxuICAgIC5keW5hbWljLWZvcm0ge1xyXG4gICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICAgICAgcGFkZGluZzogMTBweDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xyXG4gICAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xyXG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICB9XHJcblxyXG4gICAgLmZvcm0tc2VjdGlvbiB7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206MTBweDtcclxuICAgIH1cclxuXHJcbiAgICAuc2VjdGlvbi10aXRsZSB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICAgICAgY29sb3I6ICMzMDMwMzA7XHJcbiAgICAgIG1hcmdpbjogMCAwIDE2cHggMDtcclxuICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxuICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5maWVsZHMtcm93IHtcclxuICAgICAgZGlzcGxheTogZ3JpZDtcclxuICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNSwxZnIpO1xyXG4gICAgICBnYXA6IDE2cHg7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICBvdmVyZmxvdzogdmlzaWJsZTtcclxuICAgIH1cclxuXHJcbiAgICAuZm9ybS1maWVsZC13cmFwcGVyIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICBtaW4td2lkdGg6IDA7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICBvdmVyZmxvdzogdmlzaWJsZTtcclxuICAgIH1cclxuXHJcbiAgICAucGFzc3dvcmQtdG9nZ2xlLWJ0biB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHJpZ2h0OiAxMHB4O1xyXG4gIHRvcDogMzJweDtcclxuICBiYWNrZ3JvdW5kOiBub25lO1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgcGFkZGluZzogNHB4O1xyXG4gIGNvbG9yOiAjNjY2O1xyXG59XHJcblxyXG4ucGFzc3dvcmQtdG9nZ2xlLWJ0bjpob3ZlciB7XHJcbiAgY29sb3I6ICMzMzM7XHJcbn1cclxuXHJcbi5wYXNzd29yZC10b2dnbGUtYnRuIC5tYXRlcmlhbC1pY29ucyB7XHJcbiAgZm9udC1zaXplOiAyMHB4O1xyXG4gIHdpZHRoOiBhdXRvO1xyXG4gIGhlaWdodDogYXV0bztcclxuICBwYWRkaW5nOiAwO1xyXG59XHJcblxyXG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgYW5kIChtYXgtd2lkdGg6IDE0MDBweCkge1xyXG4gICAgICAuZmllbGRzLXJvdyB7XHJcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNSwxZnIpO1xyXG4gICAgICB9XHJcbiAgICAgIC5mb3JtLWNvbnRyb2wge1xyXG4gICAgICAgIHdpZHRoOiAxODBweDtcclxuICAgICAgICBtYXgtd2lkdGg6IDE4MHB4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDEyMDBweCkge1xyXG4gICAgICAuZmllbGRzLXJvdyB7XHJcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywxZnIpO1xyXG4gICAgICB9XHJcbiAgICAgIC5mb3JtLWNvbnRyb2wge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiA5OTJweCkge1xyXG4gICAgICAuZmllbGRzLXJvdyB7XHJcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwxZnIpO1xyXG4gICAgICAgIGdhcDogMTJweDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xyXG4gICAgICAuZmllbGRzLXJvdyB7XHJcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwxZnIpO1xyXG4gICAgICAgIGdhcDogMTBweDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2NDBweCkge1xyXG4gICAgICAuZmllbGRzLXJvdyB7XHJcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XHJcbiAgICAgICAgZ2FwOiAxMnB4O1xyXG4gICAgICB9XHJcbiAgICAgIC5mb3JtLWZpZWxkLXdyYXBwZXIge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmNoZWNrYm94LWxhYmVsIHtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICBtYXJnaW46IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLmZvcm0tYWN0aW9ucyB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XHJcbiAgICAgIGdhcDogMTJweDtcclxuICAgICAgbWFyZ2luLXRvcDogMjBweDtcclxuICAgIH1cclxuXHJcbiAgICAuYnRuIHtcclxuICAgICAgcGFkZGluZzogOHB4IDE2cHg7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0bi1wcmltYXJ5IHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwNmFmZjtcclxuICAgICAgY29sb3I6IHdoaXRlO1xyXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjMDA2YWZmO1xyXG4gICAgfVxyXG5cclxuICAgIC5idG4tcHJpbWFyeTpob3Zlcjpub3QoOmRpc2FibGVkKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDU2Y2M7XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0bi1vdXRsaW5lIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICAgIGNvbG9yOiAjMzAzMDMwO1xyXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjZGNkY2RjO1xyXG4gICAgfVxyXG5cclxuICAgIC5idG4tb3V0bGluZTpob3Zlcjpub3QoOmRpc2FibGVkKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0bjpkaXNhYmxlZCB7XHJcbiAgICAgIG9wYWNpdHk6IDAuNjtcclxuICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcclxuICAgIH1cclxuXHJcblxyXG4uZmlsZS1uYW1lIHtcclxuICBmb250LXNpemU6IDEycHg7XHJcbiAgY29sb3I6ICM2NjY7XHJcbiAgbWFyZ2luOiA4cHg7XHJcbiAgbWFyZ2luLXRvcDogMTBweDtcclxufVxyXG5cclxuLmZpbGUtbGFiZWwge1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIG1hcmdpbi1ib3R0b206IDZweDtcclxuICAgIGNvbG9yOiAjMTUxZDQ4O1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG59XHJcblxyXG4gICAgLnJhZGlvLWxhYmVsIHtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIG1hcmdpbi1ib3R0b206IDE1cHg7XHJcbiAgY29sb3I6ICMxNTFENDg7XHJcbiAgZm9udC1zaXplOiAxNHB4O1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG59XHJcblxyXG4ucmFkaW8tZ3JvdXAge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZ2FwOiAyMHB4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbn1cclxuXHJcbi5yYWRpby1pdGVtIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgZ2FwOiA2cHg7XHJcbn1cclxuXHJcbmlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XHJcbiAgd2lkdGg6IDE4cHg7XHJcbiAgaGVpZ2h0OiAxOHB4O1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBhY2NlbnQtY29sb3I6ICMzNDk4ZGI7XHJcbn1cclxuXHJcbi5yYWRpby1vcHRpb24tbGFiZWwge1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBtYXJnaW46IDA7XHJcbiAgZm9udC13ZWlnaHQ6IDQwMDtcclxufVxyXG5cclxuICAgIC5oaW50IHtcclxuICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICBjb2xvcjogIzdmOGM4ZDtcclxuICAgICAgbWFyZ2luLXRvcDogNHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5lcnJvci1tZXNzYWdlIHtcclxuICAgICAgY29sb3I6ICNlNzRjM2M7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgICAgbWFyZ2luLXRvcDogNHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5mb3JtLWFjdGlvbnMge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBnYXA6IDhweDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgICBnYXA6IDEycHg7XHJcbiAgICAgIHBhZGRpbmctdG9wOiA1cHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0biB7XHJcbiAgICAgIHBhZGRpbmc6IDhweCAyMHB4O1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDdweDtcclxuICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xyXG4gICAgfVxyXG5cclxuICAgIC5idG4tcHJpbWFyeSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDZBRkY7XHJcbiAgICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgIH1cclxuXHJcbiAgICAuYnRuLXByaW1hcnk6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjk4MGI5O1xyXG4gICAgfVxyXG5cclxuICAgIC5idG4tcHJpbWFyeTpkaXNhYmxlZCB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNiZGMzYzc7XHJcbiAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0bi1zZWNvbmRhcnkge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTVhNWE2O1xyXG4gICAgICBjb2xvcjogd2hpdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLmJ0bi1zZWNvbmRhcnk6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjN2Y4YzhkO1xyXG4gICAgfVxyXG5cclxuICAgIC5idG4tb3V0bGluZSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzMDMwMzA7XHJcbiAgICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgIH1cclxuXHJcbiAgICAuYnRuLW91dGxpbmU6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmIyYjJiZmY7XHJcbiAgICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgIH1cclxuXHJcbiAgICAubW9udGgteWVhci13cmFwcGVyIHtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAubW9udGgteWVhci13cmFwcGVyIC5mb3JtLWNvbnRyb2wge1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiA0NXB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5tb250aC1waWNrZXItaGlkZGVuIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBvcGFjaXR5OiAwO1xyXG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxuICAgICAgd2lkdGg6IDA7XHJcbiAgICAgIGhlaWdodDogMDtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICBwYWRkaW5nOiAwO1xyXG4gICAgICBtYXJnaW46IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLm1vbnRoLXBpY2tlci1idG4ge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHJpZ2h0OiA1cHg7XHJcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgcGFkZGluZzogNXB4O1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgY29sb3I6ICM2NjY7XHJcbiAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMnM7XHJcbiAgICAgIHotaW5kZXg6IDE7XHJcbiAgICB9XHJcblxyXG4gICAgLm1vbnRoLXBpY2tlci1idG46aG92ZXI6bm90KDpkaXNhYmxlZCkge1xyXG4gICAgICBjb2xvcjogIzM0OThkYjtcclxuICAgIH1cclxuXHJcbiAgICAubW9udGgtcGlja2VyLWJ0bjpkaXNhYmxlZCB7XHJcbiAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgICAgIG9wYWNpdHk6IDAuNTtcclxuICAgIH1cclxuXHJcbiAgICAubW9udGgtcGlja2VyLWJ0biAubWF0ZXJpYWwtaWNvbnMge1xyXG4gICAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgICAgIHdpZHRoOiBhdXRvO1xyXG4gICAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLnNlYXJjaC1zZWxlY3Qtd3JhcHBlciB7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgLnNlYXJjaC1zZWxlY3QtaW5wdXQge1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5zZWFyY2gtc2VsZWN0LWRyb3Bkb3duIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IGNhbGMoMTAwJSArIDRweCk7XHJcbiAgICAgIGxlZnQ6IDA7XHJcbiAgICAgIHJpZ2h0OiBhdXRvO1xyXG4gICAgICBtaW4td2lkdGg6IDEwMCU7XHJcbiAgICAgIG1heC13aWR0aDogY2FsYygxMDB2dyAtIDE2cHgpO1xyXG4gICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICAgICAgYm9yZGVyOiAxcHggc29saWQgI2QzZDNkMztcclxuICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gICAgICBtYXgtaGVpZ2h0OiAyMjBweDtcclxuICAgICAgb3ZlcmZsb3cteTogYXV0bztcclxuICAgICAgYm94LXNoYWRvdzogMCA0cHggMTBweCByZ2JhKDAsMCwwLDAuMDgpO1xyXG4gICAgICB6LWluZGV4OiA1O1xyXG4gICAgICBwYWRkaW5nOiA2cHggMDtcclxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xyXG4gICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xcyBlYXNlLW91dDtcclxuICAgIH1cclxuXHJcbiAgICAuc2VhcmNoLXNlbGVjdC1vcHRpb24ge1xyXG4gICAgICBwYWRkaW5nOiA4cHggMTJweDtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBnYXA6IDhweDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMmYyZjI7XHJcbiAgICB9XHJcblxyXG4gICAgLnNlYXJjaC1zZWxlY3Qtb3B0aW9uOmxhc3QtY2hpbGQge1xyXG4gICAgICBib3JkZXItYm90dG9tOiBub25lO1xyXG4gICAgfVxyXG5cclxuICAgIC5zZWFyY2gtc2VsZWN0LW9wdGlvbjpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQ6ICNmNWY5ZmY7XHJcbiAgICB9XHJcblxyXG4gICAgLnJlcGVhdGFibGUtZ3JvdXAtd3JhcHBlciB7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmY7XHJcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2VlZTtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XHJcbiAgICAgICAgcGFkZGluZzogMjBweCAxMDBweCAyMHB4IDIwcHg7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDtcclxuICAgICAgICBib3gtc2hhZG93OiAwIDFweCAycHggcmdiYSgwLDAsMCwwLjA1KTtcclxuICAgIH1cclxuICAgIC5yZXBlYXRhYmxlLWFjdGlvbnMge1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICB0b3A6IDQ1cHg7XHJcbiAgICAgICAgcmlnaHQ6IDE1cHg7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBnYXA6IDhweDtcclxuICAgICAgICB6LWluZGV4OiAxMDtcclxuICAgIH1cclxuICAgIC5idG4taWNvbiB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcclxuICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAgIHBhZGRpbmc6IDRweDtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4ycztcclxuICAgIH1cclxuICAgIC5idG4taWNvbjpob3ZlciB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogI2YwZjBmMDtcclxuICAgIH1cclxuXHJcbiAgICAub3B0aW9uLWNvZGUge1xyXG4gICAgICBjb2xvcjogIzAwNTJjYztcclxuICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICAgICAgbWluLXdpZHRoOiA5MHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5vcHRpb24tbmFtZSB7XHJcbiAgICAgIGNvbG9yOiAjMTUxZDQ4O1xyXG4gICAgICBmb250LXdlaWdodDogNTAwO1xyXG4gICAgfVxyXG5cclxuICAgIC50aW1lLXBpY2tlci13cmFwcGVyIHtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAudGltZS1pbnB1dCB7XHJcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDQ1cHg7XHJcbiAgICAgIGZsZXg6IDE7XHJcbiAgICB9XHJcblxyXG4gICAgLnRpbWUtcGlja2VyLWJ0biB7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgcmlnaHQ6IDVweDtcclxuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICBwYWRkaW5nOiA1cHg7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICBjb2xvcjogIzY2NjtcclxuICAgICAgdHJhbnNpdGlvbjogY29sb3IgMC4ycztcclxuICAgICAgei1pbmRleDogMTtcclxuICAgIH1cclxuXHJcbiAgICAudGltZS1waWNrZXItYnRuOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcclxuICAgICAgY29sb3I6ICMzNDk4ZGI7XHJcbiAgICB9XHJcblxyXG4gICAgLnRpbWUtcGlja2VyLWJ0bjpkaXNhYmxlZCB7XHJcbiAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgICAgIG9wYWNpdHk6IDAuNTtcclxuICAgIH1cclxuXHJcbiAgICAudGltZS1waWNrZXItYnRuIC5tYXRlcmlhbC1pY29ucyB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMjBweDtcclxuICAgICAgd2lkdGg6IGF1dG87XHJcbiAgICAgIGhlaWdodDogYXV0bztcclxuICAgICAgcGFkZGluZzogMDtcclxuICAgIH1cclxuXHJcbiAgICBpbnB1dFt0eXBlPVwidGltZVwiXSB7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIH1cclxuXHJcbiAgICBpbnB1dFt0eXBlPVwidGltZVwiXTo6LXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9yIHtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICBvcGFjaXR5OiAwO1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHJpZ2h0OiAwO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgfVxyXG5cclxuICAgIC5kYXRlLXBpY2tlci1maWVsZCB7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG5cclxuICAgIC5kYXRlLXBpY2tlci1maWVsZCA6Om5nLWRlZXAgLm1hdC1tZGMtZm9ybS1maWVsZCB7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG5cclxuICAgIC5kYXRlLXBpY2tlci1maWVsZCA6Om5nLWRlZXAgLm1hdC1tZGMtdGV4dC1maWVsZC13cmFwcGVyIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcclxuICAgIH1cclxuXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tZGMtdGV4dC1maWVsZC0tb3V0bGluZWQgLm1kYy1ub3RjaGVkLW91dGxpbmVfX2xlYWRpbmcsXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tZGMtdGV4dC1maWVsZC0tb3V0bGluZWQgLm1kYy1ub3RjaGVkLW91dGxpbmVfX25vdGNoLFxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkIC5tZGMtbm90Y2hlZC1vdXRsaW5lX190cmFpbGluZyB7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogIzhDQkJBODtcclxuICAgIH1cclxuXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tZGMtdGV4dC1maWVsZC0tb3V0bGluZWQ6bm90KC5tZGMtdGV4dC1maWVsZC0tZGlzYWJsZWQpIC5tZGMtbm90Y2hlZC1vdXRsaW5lX19sZWFkaW5nLFxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkOm5vdCgubWRjLXRleHQtZmllbGQtLWRpc2FibGVkKSAubWRjLW5vdGNoZWQtb3V0bGluZV9fbm90Y2gsXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tZGMtdGV4dC1maWVsZC0tb3V0bGluZWQ6bm90KC5tZGMtdGV4dC1maWVsZC0tZGlzYWJsZWQpIC5tZGMtbm90Y2hlZC1vdXRsaW5lX190cmFpbGluZyB7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogIzhDQkJBODtcclxuICAgIH1cclxuXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tZGMtdGV4dC1maWVsZC0tb3V0bGluZWQubWRjLXRleHQtZmllbGQtLWZvY3VzZWQgLm1kYy1ub3RjaGVkLW91dGxpbmVfX2xlYWRpbmcsXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tZGMtdGV4dC1maWVsZC0tb3V0bGluZWQubWRjLXRleHQtZmllbGQtLWZvY3VzZWQgLm1kYy1ub3RjaGVkLW91dGxpbmVfX25vdGNoLFxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkLm1kYy10ZXh0LWZpZWxkLS1mb2N1c2VkIC5tZGMtbm90Y2hlZC1vdXRsaW5lX190cmFpbGluZyB7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogIzM0OThkYjtcclxuICAgIH1cclxuXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQuZXJyb3ItYm9yZGVyIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkIC5tZGMtbm90Y2hlZC1vdXRsaW5lX19sZWFkaW5nLFxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkLmVycm9yLWJvcmRlciA6Om5nLWRlZXAgLm1kYy10ZXh0LWZpZWxkLS1vdXRsaW5lZCAubWRjLW5vdGNoZWQtb3V0bGluZV9fbm90Y2gsXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQuZXJyb3ItYm9yZGVyIDo6bmctZGVlcCAubWRjLXRleHQtZmllbGQtLW91dGxpbmVkIC5tZGMtbm90Y2hlZC1vdXRsaW5lX190cmFpbGluZyB7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogcmVkICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLmRhdGUtcGlja2VyLWZpZWxkIDo6bmctZGVlcCAubWF0LW1kYy1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyIHtcclxuICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgIH1cclxuXHJcbiAgICAuZGF0ZS1waWNrZXItZmllbGQgOjpuZy1kZWVwIC5tYXQtbWRjLWZvcm0tZmllbGQtaW5wdXQtY29udHJvbCBpbnB1dCB7XHJcbiAgICAgIGZvbnQtZmFtaWx5OiBcIlBvcHBpbnNcIiAhaW1wb3J0YW50O1xyXG4gICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgICAgIGNvbG9yOiAjMWYyYjQxO1xyXG4gICAgfVxyXG4gIGAsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBZGRVcGRhdGVGb3JtQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQElucHV0KCkgY29uZmlnITogRm9ybUNvbmZpZztcclxuICBAT3V0cHV0KCkgdmFsaWRhdGlvbkVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgZm9ybSE6IEZvcm1Hcm91cDtcclxuICBzdWJtaXR0ZWQgPSBmYWxzZTtcclxuICBwcml2YXRlIGZpbGVQcmV2aWV3czogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKTtcclxuICBwcml2YXRlIGZpbGVOYW1lczogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKTtcclxuICBwcml2YXRlIHZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBwcml2YXRlIHBhc3N3b3JkVmlzaWJpbGl0eTogTWFwPHN0cmluZywgYm9vbGVhbj4gPSBuZXcgTWFwKCk7XHJcbiAgcHJpdmF0ZSBzZWFyY2hRdWVyaWVzOiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcCgpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBob3N0UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5pbml0aWFsaXplRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogaW1wb3J0KCdAYW5ndWxhci9jb3JlJykuU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2NvbmZpZyddICYmICFjaGFuZ2VzWydjb25maWcnXS5maXJzdENoYW5nZSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZUV4aXN0aW5nRm9ybSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlRXhpc3RpbmdGb3JtKCkge1xyXG4gICAgaWYgKCF0aGlzLmZvcm0pIHtcclxuICAgICAgdGhpcy5pbml0aWFsaXplRm9ybSgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jb25maWcuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICBpZiAoIXNlY3Rpb24uaXNSZXBlYXRhYmxlKSB7XHJcbiAgICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldChjb2x1bW4ubmFtZSk7XHJcbiAgICAgICAgICBpZiAoY29udHJvbCkge1xyXG4gICAgICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gdGhpcy5idWlsZFZhbGlkYXRvcnMoY29sdW1uLnZhbGlkYXRpb25zLCB0aGlzLmZvcm0pO1xyXG4gICAgICAgICAgICBjb250cm9sLnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XHJcbiAgICAgICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBpc0Rpc2FibGVkID0gdGhpcy5pc0ZpZWxkRGlzYWJsZWQoY29sdW1uLCB0aGlzLmZvcm0pO1xyXG4gICAgICAgICAgICBpZiAoaXNEaXNhYmxlZCAmJiBjb250cm9sLmVuYWJsZWQpIGNvbnRyb2wuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKCFpc0Rpc2FibGVkICYmIGNvbnRyb2wuZGlzYWJsZWQpIGNvbnRyb2wuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBpbml0aWFsVmFsdWUgPSBjb2x1bW4udmFsdWUgfHwgJyc7XHJcbiAgICAgICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ21vbnRoLXllYXInICYmIGluaXRpYWxWYWx1ZSkgaW5pdGlhbFZhbHVlID0gdGhpcy5mb3JtYXRNb250aFllYXJWYWx1ZShpbml0aWFsVmFsdWUpO1xyXG4gICAgICAgICAgICBjb25zdCBuZXdDb250cm9sID0gdGhpcy5mYi5jb250cm9sKHsgdmFsdWU6IGluaXRpYWxWYWx1ZSwgZGlzYWJsZWQ6ICh0eXBlb2YgY29sdW1uLmRpc2FibGVkID09PSAnYm9vbGVhbicgPyBjb2x1bW4uZGlzYWJsZWQgOiBmYWxzZSkgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSB0aGlzLmJ1aWxkVmFsaWRhdG9ycyhjb2x1bW4udmFsaWRhdGlvbnMsIHRoaXMuZm9ybSk7XHJcbiAgICAgICAgICAgIG5ld0NvbnRyb2wuc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2woY29sdW1uLm5hbWUsIG5ld0NvbnRyb2wpO1xyXG5cclxuICAgICAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gbmV3Q29udHJvbC52YWx1ZUNoYW5nZXNcclxuICAgICAgICAgICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxyXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb2wgPSB0aGlzLmdldENvbHVtbkJ5TmFtZShjb2x1bW4ubmFtZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29sPy5vbkNoYW5nZSkgY29sLm9uQ2hhbmdlKHZhbHVlLCB0aGlzLmZvcm0pO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgLy8gTGlmZWN5Y2xlIGhvb2sgLSBjYW4gYmUgdXNlZCBmb3IgZGF0ZXBpY2tlciBpbml0aWFsaXphdGlvbiBpZiBuZWVkZWRcclxuICB9XHJcblxyXG4gIGdldENvbHVtbldpZHRoKGNvbHVtbjogRm9ybUNvbHVtbik6IHN0cmluZyB7XHJcbiAgICBjb25zdCBtYXhDb2xzID0gdGhpcy5jb25maWcubWF4Q29sc1BlclJvdyB8fCA1O1xyXG4gICAgY29uc3QgY29sU3BhbiA9IE1hdGgubWluKGNvbHVtbi5jb2xTcGFuIHx8IDEsIG1heENvbHMpO1xyXG4gICAgcmV0dXJuIGBjYWxjKCR7KGNvbFNwYW4gLyBtYXhDb2xzKSAqIDEwMH0lIC0gMTZweClgO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udHJvbChuYW1lOiBzdHJpbmcpOiBGb3JtQ29udHJvbCB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldChuYW1lKSBhcyBGb3JtQ29udHJvbDtcclxuICB9XHJcblxyXG4gIC8vIDIuIEhFTFBFUjogQ29udmVydCB5b3VyIEZpZWxkVmFsaWRhdGlvbltdIHRvIHRoZSBsaWJyYXJ5J3MgVmFsaWRhdGlvblNjaGVtYVxyXG4gIGdldFNjaGVtYShjb2x1bW46IEZvcm1Db2x1bW4sIGdyb3VwOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uU2NoZW1hIHtcclxuICAgIGNvbnN0IHJ1bGVzOiBWYWxpZGF0aW9uUnVsZVtdID0gW107XHJcbiAgICBjb25zdCBlcnJvclByaW9yaXR5OiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0IGlzUmVxdWlyZWRWYWx1ZSA9IHR5cGVvZiBjb2x1bW4ucmVxdWlyZWQgPT09ICdmdW5jdGlvbidcclxuICAgICAgPyBjb2x1bW4ucmVxdWlyZWQoZ3JvdXAgYXMgRm9ybUdyb3VwKVxyXG4gICAgICA6IGNvbHVtbi5yZXF1aXJlZDtcclxuXHJcbiAgICBsZXQgcmVxdWlyZWRSdWxlQWRkZWQgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAoY29sdW1uLnZhbGlkYXRpb25zKSB7XHJcbiAgICAgIGNvbHVtbi52YWxpZGF0aW9ucy5mb3JFYWNoKCh2KSA9PiB7XHJcbiAgICAgICAgc3dpdGNoICh2LnR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgJ3JlcXVpcmVkJzpcclxuICAgICAgICAgICAgY29uc3QgZW5hYmxlZCA9IGlzUmVxdWlyZWRWYWx1ZSA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6ICEhaXNSZXF1aXJlZFZhbHVlO1xyXG4gICAgICAgICAgICBpZiAoZW5hYmxlZCkge1xyXG4gICAgICAgICAgICAgIHJ1bGVzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgbmFtZTogJ3JlcXVpcmVkJyxcclxuICAgICAgICAgICAgICAgIHBhcmFtczogeyBlbmFibGVkOiB0cnVlIH0sXHJcbiAgICAgICAgICAgICAgICBlcnJvcktleTogJ0VSUl9SRVFVSVJFRCcsXHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiB2Lm1lc3NhZ2UgfHwgJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQnXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgZXJyb3JQcmlvcml0eS5wdXNoKCdyZXF1aXJlZCcpO1xyXG4gICAgICAgICAgICAgIHJlcXVpcmVkUnVsZUFkZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ2VtYWlsJzpcclxuICAgICAgICAgICAgcnVsZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogJ3JlZ2V4JyxcclxuICAgICAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgIHBhdHRlcm46ICdeW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcXFxcLlthLXpBLVpdezIsfSQnLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgZXJyb3JLZXk6ICdFUlJfUkVHRVhfTUlTTUFUQ0gnLFxyXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHYubWVzc2FnZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZXJyb3JQcmlvcml0eS5wdXNoKCdyZWdleCcpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ21pbkxlbmd0aCc6XHJcbiAgICAgICAgICAgIHJ1bGVzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6ICdtaW5MZW5ndGgnLFxyXG4gICAgICAgICAgICAgIHBhcmFtczogeyB2YWx1ZTogdi52YWx1ZSB9LFxyXG4gICAgICAgICAgICAgIGVycm9yS2V5OiAnRVJSX01JTl9MRU5HVEgnLFxyXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHYubWVzc2FnZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZXJyb3JQcmlvcml0eS5wdXNoKCdtaW5MZW5ndGgnKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdtYXhMZW5ndGgnOlxyXG4gICAgICAgICAgICBydWxlcy5wdXNoKHtcclxuICAgICAgICAgICAgICBuYW1lOiAnbWF4TGVuZ3RoJyxcclxuICAgICAgICAgICAgICBwYXJhbXM6IHsgdmFsdWU6IHYudmFsdWUgfSxcclxuICAgICAgICAgICAgICBlcnJvcktleTogJ0VSUl9NQVhfTEVOR1RIJyxcclxuICAgICAgICAgICAgICBtZXNzYWdlOiB2Lm1lc3NhZ2VcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGVycm9yUHJpb3JpdHkucHVzaCgnbWF4TGVuZ3RoJyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAncGF0dGVybic6XHJcbiAgICAgICAgICAgIHJ1bGVzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6ICdyZWdleCcsXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7IHBhdHRlcm46IHYudmFsdWUgfSxcclxuICAgICAgICAgICAgICBlcnJvcktleTogJ0VSUl9SRUdFWF9NSVNNQVRDSCcsXHJcbiAgICAgICAgICAgICAgbWVzc2FnZTogdi5tZXNzYWdlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBlcnJvclByaW9yaXR5LnB1c2goJ3JlZ2V4Jyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAncGFzc3dvcmRDb21wbGV4aXR5JzpcclxuICAgICAgICAgICAgcnVsZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogJ3Bhc3N3b3JkQ29tcGxleGl0eScsXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB2LnBhcmFtcyB8fCB7XHJcbiAgICAgICAgICAgICAgICByZXF1aXJlVXBwZXJjYXNlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZUxvd2VyY2FzZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVOdW1iZXI6IHRydWUsXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlU3BlY2lhbENoYXI6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBtaW5MZW5ndGg6IDhcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGVycm9yS2V5OiB2LmVycm9yS2V5IHx8ICdFUlJfUEFTU1dPUkRfQ09NUExFWElUWV9JTlZBTElEJyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGVycm9yUHJpb3JpdHkucHVzaCgncGFzc3dvcmRDb21wbGV4aXR5Jyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnbWluJzpcclxuICAgICAgICAgICAgcnVsZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogJ21pbicsXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7IHZhbHVlOiB2LnZhbHVlIH0sXHJcbiAgICAgICAgICAgICAgZXJyb3JLZXk6ICdFUlJfTUlOX1ZBTFVFJyxcclxuICAgICAgICAgICAgICBtZXNzYWdlOiB2Lm1lc3NhZ2VcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGVycm9yUHJpb3JpdHkucHVzaCgnbWluJyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnbWF4JzpcclxuICAgICAgICAgICAgcnVsZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogJ21heCcsXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7IHZhbHVlOiB2LnZhbHVlIH0sXHJcbiAgICAgICAgICAgICAgZXJyb3JLZXk6ICdFUlJfTUFYX1ZBTFVFJyxcclxuICAgICAgICAgICAgICBtZXNzYWdlOiB2Lm1lc3NhZ2VcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGVycm9yUHJpb3JpdHkucHVzaCgnbWF4Jyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnY3VzdG9tJzpcclxuICAgICAgICAgICAgcnVsZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogJ2N1c3RvbScsXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7IHZhbGlkYXRvcjogdi52YWxpZGF0b3IgfSxcclxuICAgICAgICAgICAgICBlcnJvcktleTogdi5tZXNzYWdlIHx8IHYuZXJyb3JLZXkgfHwgJ0VSUl9DVVNUT01fSU5WQUxJRCcsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBlcnJvclByaW9yaXR5LnB1c2goJ2N1c3RvbScpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ2R1cGxpY2F0ZSc6XHJcbiAgICAgICAgICAgIHJ1bGVzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6ICdkdXBsaWNhdGUnLFxyXG4gICAgICAgICAgICAgIHBhcmFtczogeyBleGlzdGluZ1ZhbHVlczogdi52YWx1ZSB9LFxyXG4gICAgICAgICAgICAgIGVycm9yS2V5OiB2LmVycm9yS2V5IHx8ICdFUlJfRFVQTElDQVRFJyxcclxuICAgICAgICAgICAgICBtZXNzYWdlOiB2Lm1lc3NhZ2VcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGVycm9yUHJpb3JpdHkucHVzaCgnZHVwbGljYXRlJyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWYgaXQgd2FzIGV2YWx1YXRlZCBhcyByZXF1aXJlZCBidXQgbm90IHByZXNlbnQgaW4gdGhlIHZhbGlkYXRpb25zIGxpc3RcclxuICAgIGlmICghcmVxdWlyZWRSdWxlQWRkZWQgJiYgaXNSZXF1aXJlZFZhbHVlID09PSB0cnVlKSB7XHJcbiAgICAgIHJ1bGVzLnB1c2goe1xyXG4gICAgICAgIG5hbWU6ICdyZXF1aXJlZCcsXHJcbiAgICAgICAgcGFyYW1zOiB7IGVuYWJsZWQ6IHRydWUgfSxcclxuICAgICAgICBlcnJvcktleTogJ0VSUl9SRVFVSVJFRCcsXHJcbiAgICAgICAgbWVzc2FnZTogJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQnXHJcbiAgICAgIH0pO1xyXG4gICAgICBlcnJvclByaW9yaXR5LnB1c2goJ3JlcXVpcmVkJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTWFwICduYW1lLWNvZGUnIHRvICdEcm9wZG93bicgb3Igc2ltaWxhciBmb3IgdmFsaWRhdGlvbiBzY2hlbWEgcHVycG9zZXMgaWYgbmVlZGVkXHJcbiAgICBsZXQgY29udHJvbFR5cGUgPSBjb2x1bW4udHlwZTtcclxuICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ25hbWUtY29kZScpIHtcclxuICAgICAgY29udHJvbFR5cGUgPSAnc2VsZWN0JzsgLy8gVHJlYXQgYXMgc2VsZWN0IGZvciBzY2hlbWEgbG9va3VwIGlmIGxpYnJhcnkgZXhwZWN0cyAnc2VsZWN0JyBvciAnRHJvcGRvd24nXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY29udHJvbFR5cGU6IGNvbnRyb2xUeXBlLFxyXG4gICAgICBlcnJvclByaW9yaXR5OiBlcnJvclByaW9yaXR5LFxyXG4gICAgICBydWxlczogcnVsZXMsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgaXNJbWFnZUZpZWxkKGNvbHVtbjogRm9ybUNvbHVtbik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgY29sdW1uLnR5cGUgPT09ICdmaWxlJyAmJlxyXG4gICAgICAoY29sdW1uLmFjY2VwdD8uc3RhcnRzV2l0aCgnaW1hZ2UnKSB8fCBjb2x1bW4uZmlsZVByZXZpZXcgPT09IHRydWUpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gSGVscGVycyBmb3IgUmVwZWF0YWJsZSBTZWN0aW9uc1xyXG4gIGdldFNlY3Rpb25BcnJheShzZWN0aW9uOiBGb3JtU2VjdGlvbik6IEZvcm1BcnJheSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldChzZWN0aW9uLnNlY3Rpb25LZXkhKSBhcyBGb3JtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVTZWN0aW9uR3JvdXAoc2VjdGlvbjogRm9ybVNlY3Rpb24pOiBGb3JtR3JvdXAge1xyXG4gICAgY29uc3QgZ3JvdXBDb25maWc6IGFueSA9IHt9O1xyXG4gICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgIGxldCBpbml0aWFsVmFsdWUgPSBjb2x1bW4udmFsdWUgfHwgJyc7XHJcbiAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ21vbnRoLXllYXInICYmIGluaXRpYWxWYWx1ZSkge1xyXG4gICAgICAgIGluaXRpYWxWYWx1ZSA9IHRoaXMuZm9ybWF0TW9udGhZZWFyVmFsdWUoaW5pdGlhbFZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgICBncm91cENvbmZpZ1tjb2x1bW4ubmFtZV0gPSBbXHJcbiAgICAgICAgeyB2YWx1ZTogaW5pdGlhbFZhbHVlLCBkaXNhYmxlZDogKHR5cGVvZiBjb2x1bW4uZGlzYWJsZWQgPT09ICdib29sZWFuJyA/IGNvbHVtbi5kaXNhYmxlZCA6IGZhbHNlKSB9LFxyXG4gICAgICBdO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgZ3JvdXAgPSB0aGlzLmZiLmdyb3VwKGdyb3VwQ29uZmlnKTtcclxuXHJcbiAgICAvLyBBcHBseSBWYWxpZGF0b3JzIGFuZCBJbml0aWFsIFN0YXRlc1xyXG4gICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSB0aGlzLmJ1aWxkVmFsaWRhdG9ycyhjb2x1bW4udmFsaWRhdGlvbnMsIGdyb3VwKTtcclxuICAgICAgY29uc3QgY29udHJvbCA9IGdyb3VwLmdldChjb2x1bW4ubmFtZSk7XHJcblxyXG4gICAgICBpZiAodmFsaWRhdG9ycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgY29udHJvbD8uc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcclxuICAgICAgICBjb250cm9sPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgaXNEaXNhYmxlZCA9IHRoaXMuaXNGaWVsZERpc2FibGVkKGNvbHVtbiwgZ3JvdXApO1xyXG4gICAgICBpZiAoaXNEaXNhYmxlZCAmJiBjb250cm9sPy5lbmFibGVkKSBjb250cm9sLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICBlbHNlIGlmICghaXNEaXNhYmxlZCAmJiBjb250cm9sPy5kaXNhYmxlZCkgY29udHJvbC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGdyb3VwO1xyXG4gIH1cclxuXHJcbiAgYWRkU2VjdGlvbkl0ZW0oc2VjdGlvbjogRm9ybVNlY3Rpb24pIHtcclxuICAgIGNvbnN0IGFycmF5ID0gdGhpcy5nZXRTZWN0aW9uQXJyYXkoc2VjdGlvbik7XHJcbiAgICBhcnJheS5wdXNoKHRoaXMuY3JlYXRlU2VjdGlvbkdyb3VwKHNlY3Rpb24pKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZVNlY3Rpb25JdGVtKHNlY3Rpb246IEZvcm1TZWN0aW9uLCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBhcnJheSA9IHRoaXMuZ2V0U2VjdGlvbkFycmF5KHNlY3Rpb24pO1xyXG4gICAgaWYgKGFycmF5Lmxlbmd0aCA+IDEpIHtcclxuICAgICAgYXJyYXkucmVtb3ZlQXQoaW5kZXgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNDb250cm9sSW52YWxpZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISEoY29udHJvbCAmJiBjb250cm9sLmludmFsaWQgJiYgKGNvbnRyb2wudG91Y2hlZCB8fCB0aGlzLnN1Ym1pdHRlZCkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RXJyb3JNZXNzYWdlRm9yQ29udHJvbChcclxuICAgIGNvbHVtbjogRm9ybUNvbHVtbixcclxuICAgIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IG51bGxcclxuICApOiBzdHJpbmcge1xyXG4gICAgaWYgKCFjb250cm9sPy5lcnJvcnMpIHJldHVybiAnJztcclxuICAgIGNvbnN0IGZpZWxkID0gY29udHJvbDtcclxuICAgIGNvbnN0IGVycm9ycyA9IGZpZWxkLmVycm9ycyE7XHJcblxyXG4gICAgaWYgKGVycm9yc1snY3VzdG9tJ10pIHtcclxuICAgICAgY29uc3QgY3VzdG9tVmFsaWRhdGlvbiA9IGNvbHVtbj8udmFsaWRhdGlvbnM/LmZpbmQoXHJcbiAgICAgICAgKHYpID0+IHYudHlwZSA9PT0gJ2N1c3RvbSdcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIGN1c3RvbVZhbGlkYXRpb24/Lm1lc3NhZ2UgfHwgJ0ludmFsaWQgZmllbGQnO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGVycm9yS2V5cyA9IE9iamVjdC5rZXlzKGVycm9ycyk7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBlcnJvcktleXMpIHtcclxuICAgICAgY29uc3QgdmFsaWRhdGlvbiA9IGNvbHVtbj8udmFsaWRhdGlvbnM/LmZpbmQoKHYpID0+IHYudHlwZSA9PT0ga2V5KTtcclxuICAgICAgaWYgKHZhbGlkYXRpb24gJiYgdmFsaWRhdGlvbi5tZXNzYWdlKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRpb24ubWVzc2FnZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChlcnJvcnNbJ3JlcXVpcmVkJ10pIHJldHVybiBgJHtjb2x1bW4/LmxhYmVsfSBpcyByZXF1aXJlZGA7XHJcbiAgICBpZiAoZXJyb3JzWydlbWFpbCddKSByZXR1cm4gJ0ludmFsaWQgZW1haWwgZm9ybWF0JztcclxuICAgIGlmIChlcnJvcnNbJ21pbmxlbmd0aCddKVxyXG4gICAgICByZXR1cm4gYE1pbmltdW0gbGVuZ3RoIGlzICR7ZXJyb3JzWydtaW5sZW5ndGgnXS5yZXF1aXJlZExlbmd0aH1gO1xyXG4gICAgaWYgKGVycm9yc1snbWF4bGVuZ3RoJ10pXHJcbiAgICAgIHJldHVybiBgTWF4aW11bSBsZW5ndGggaXMgJHtlcnJvcnNbJ21heGxlbmd0aCddLnJlcXVpcmVkTGVuZ3RofWA7XHJcbiAgICBpZiAoZXJyb3JzWydtaW4nXSlcclxuICAgICAgcmV0dXJuIGBNaW5pbXVtIHZhbHVlIGlzICR7ZXJyb3JzWydtaW4nXS5taW59YDtcclxuICAgIGlmIChlcnJvcnNbJ21heCddKVxyXG4gICAgICByZXR1cm4gYE1heGltdW0gdmFsdWUgaXMgJHtlcnJvcnNbJ21heCddLm1heH1gO1xyXG4gICAgaWYgKGVycm9yc1sncGF0dGVybiddKSByZXR1cm4gJ0ludmFsaWQgZm9ybWF0JztcclxuICAgIGlmIChlcnJvcnNbJ2R1cGxpY2F0ZSddKSByZXR1cm4gY29sdW1uPy52YWxpZGF0aW9ucz8uZmluZCh2ID0+IHYudHlwZSA9PT0gJ2R1cGxpY2F0ZScpPy5tZXNzYWdlIHx8IGAke2NvbHVtbj8ubGFiZWx9IGFscmVhZHkgZXhpc3RzYDtcclxuXHJcbiAgICByZXR1cm4gJ0ludmFsaWQgZmllbGQnO1xyXG4gIH1cclxuXHJcbiAgaXNGaWVsZERpc2FibGVkKGNvbHVtbjogRm9ybUNvbHVtbiwgZ3JvdXA6IEFic3RyYWN0Q29udHJvbCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHR5cGVvZiBjb2x1bW4uZGlzYWJsZWQgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgcmV0dXJuIGNvbHVtbi5kaXNhYmxlZChncm91cCBhcyBGb3JtR3JvdXApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbHVtbi5kaXNhYmxlZCB8fCBmYWxzZTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG4gIGluaXRpYWxpemVGb3JtKCkge1xyXG4gICAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcclxuICAgIGNvbnN0IGZvcm1Hcm91cENvbmZpZzogYW55ID0ge307XHJcblxyXG4gICAgdGhpcy5jb25maWcuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICBpZiAoc2VjdGlvbi5pc1JlcGVhdGFibGUgJiYgc2VjdGlvbi5zZWN0aW9uS2V5KSB7XHJcbiAgICAgICAgZm9ybUdyb3VwQ29uZmlnW3NlY3Rpb24uc2VjdGlvbktleV0gPSB0aGlzLmZiLmFycmF5KFtcclxuICAgICAgICAgIHRoaXMuY3JlYXRlU2VjdGlvbkdyb3VwKHNlY3Rpb24pLFxyXG4gICAgICAgIF0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNlY3Rpb24uZmllbGRzLmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG4gICAgICAgICAgbGV0IGluaXRpYWxWYWx1ZSA9IGNvbHVtbi52YWx1ZSB8fCAnJztcclxuXHJcbiAgICAgICAgICAvLyBGb3JtYXQgbW9udGgteWVhciBmaWVsZHMgdG8gWVlZWS1NTSBmb3JtYXRcclxuICAgICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ21vbnRoLXllYXInICYmIGluaXRpYWxWYWx1ZSkge1xyXG4gICAgICAgICAgICBpbml0aWFsVmFsdWUgPSB0aGlzLmZvcm1hdE1vbnRoWWVhclZhbHVlKGluaXRpYWxWYWx1ZSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgZm9ybUdyb3VwQ29uZmlnW2NvbHVtbi5uYW1lXSA9IFtcclxuICAgICAgICAgICAgeyB2YWx1ZTogaW5pdGlhbFZhbHVlLCBkaXNhYmxlZDogKHR5cGVvZiBjb2x1bW4uZGlzYWJsZWQgPT09ICdib29sZWFuJyA/IGNvbHVtbi5kaXNhYmxlZCA6IGZhbHNlKSB9LFxyXG4gICAgICAgICAgICBudWxsLCAvLyBXZSdsbCBzZXQgdmFsaWRhdG9ycyBhZnRlciBmb3JtIGNyZWF0aW9uXHJcbiAgICAgICAgICBdO1xyXG5cclxuICAgICAgICAgIC8vIElmIGl0J3MgYSBmaWxlIGZpZWxkIHdpdGggYW4gZXhpc3RpbmcgdmFsdWUsIHNldCB0aGUgcHJldmlld1xyXG4gICAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnZmlsZScgJiYgY29sdW1uLnZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsZVByZXZpZXdzLnNldChjb2x1bW4ubmFtZSwgY29sdW1uLnZhbHVlKTtcclxuICAgICAgICAgICAgLy8gRXh0cmFjdCBmaWxlbmFtZSBmcm9tIFVSTCBvciBiYXNlNjRcclxuICAgICAgICAgICAgY29uc3QgZmlsZU5hbWUgPSB0aGlzLmV4dHJhY3RGaWxlTmFtZShjb2x1bW4udmFsdWUpO1xyXG4gICAgICAgICAgICBpZiAoZmlsZU5hbWUpIHtcclxuICAgICAgICAgICAgICB0aGlzLmZpbGVOYW1lcy5zZXQoY29sdW1uLm5hbWUsIGZpbGVOYW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKGZvcm1Hcm91cENvbmZpZyk7XHJcblxyXG4gICAgdGhpcy5jb25maWcuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICBpZiAoIXNlY3Rpb24uaXNSZXBlYXRhYmxlKSB7XHJcbiAgICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gdGhpcy5idWlsZFZhbGlkYXRvcnMoXHJcbiAgICAgICAgICAgIGNvbHVtbi52YWxpZGF0aW9ucyxcclxuICAgICAgICAgICAgdGhpcy5mb3JtXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaWYgKHZhbGlkYXRvcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KGNvbHVtbi5uYW1lKT8uc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmdldChjb2x1bW4ubmFtZSk/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZhbHVlIGNoYW5nZXMgZm9yIGFsbCBmaWVsZHMgdG8gdHJpZ2dlciBvbkNoYW5nZSBoYW5kbGVyc1xyXG4gICAgT2JqZWN0LmtleXModGhpcy5mb3JtLmNvbnRyb2xzKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5nZXQoa2V5KTtcclxuICAgICAgaWYgKGNvbnRyb2wpIHtcclxuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBjb250cm9sLnZhbHVlQ2hhbmdlc1xyXG4gICAgICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuZ2V0Q29sdW1uQnlOYW1lKGtleSk7XHJcbiAgICAgICAgICAgIGlmIChjb2x1bW4/Lm9uQ2hhbmdlKSB7XHJcbiAgICAgICAgICAgICAgY29sdW1uLm9uQ2hhbmdlKHZhbHVlLCB0aGlzLmZvcm0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAvLyBDbGVhbiB1cCBhbGwgc3Vic2NyaXB0aW9ucyB0byBwcmV2ZW50IG1lbW9yeSBsZWFrc1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZVN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3ViKSA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9ucyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRmllbGRDaGFuZ2UoXHJcbiAgICBmaWVsZE5hbWU6IHN0cmluZyxcclxuICAgIGV2ZW50VmFsdWU/OiBhbnksXHJcbiAgICBjb250cm9sPzogQWJzdHJhY3RDb250cm9sLFxyXG4gICAgZ3JvdXA/OiBBYnN0cmFjdENvbnRyb2xcclxuICApIHtcclxuICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuZ2V0Q29sdW1uQnlOYW1lKGZpZWxkTmFtZSk7XHJcbiAgICBjb25zdCBmb3JtQ29udHJvbCA9IGNvbnRyb2wgfHwgdGhpcy5mb3JtLmdldChmaWVsZE5hbWUpO1xyXG4gICAgY29uc3QgZm9ybUdyb3VwID0gKGdyb3VwIGFzIEZvcm1Hcm91cCkgfHwgdGhpcy5mb3JtO1xyXG5cclxuICAgIC8vIEZvcm1hdCBtb250aC15ZWFyIGZpZWxkcyAoZXNwZWNpYWxseSBleHBpcnlEYXRlKSB0byBZWVlZLU1NXHJcbiAgICBpZiAoY29sdW1uPy50eXBlID09PSAnbW9udGgteWVhcicgJiYgZXZlbnRWYWx1ZSkge1xyXG4gICAgICBjb25zdCBmb3JtYXR0ZWRWYWx1ZSA9IHRoaXMuZm9ybWF0TW9udGhZZWFyVmFsdWUoZXZlbnRWYWx1ZSk7XHJcbiAgICAgIGlmIChmb3JtQ29udHJvbCAmJiBmb3JtYXR0ZWRWYWx1ZSAhPT0gZXZlbnRWYWx1ZSkge1xyXG4gICAgICAgIGZvcm1Db250cm9sLnNldFZhbHVlKGZvcm1hdHRlZFZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgZXZlbnRWYWx1ZSA9IGZvcm1hdHRlZFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNvbHVtbj8ub25DaGFuZ2UpIHtcclxuICAgICAgLy8gVXNlIHRoZSBldmVudCB2YWx1ZSBkaXJlY3RseSAod2hhdCB0aGUgdXNlciBqdXN0IHNlbGVjdGVkL3R5cGVkKVxyXG4gICAgICAvLyBUaGlzIGVuc3VyZXMgd2UgaGF2ZSB0aGUgY29ycmVjdCB2YWx1ZSBldmVuIGlmIGZvcm0gY29udHJvbCBoYXNuJ3QgdXBkYXRlZCB5ZXRcclxuICAgICAgY29uc3QgdmFsdWVUb1Bhc3MgPVxyXG4gICAgICAgIGV2ZW50VmFsdWUgIT09IHVuZGVmaW5lZCA/IGV2ZW50VmFsdWUgOiBmb3JtQ29udHJvbD8udmFsdWU7XHJcbiAgICAgIGNvbnN0IG9uQ2hhbmdlRm4gPSBjb2x1bW4ub25DaGFuZ2U7IC8vIFN0b3JlIHRoZSBmdW5jdGlvbiByZWZlcmVuY2VcclxuXHJcbiAgICAgIC8vIFN0b3JlIHRoZSBzZWxlY3RlZCB2YWx1ZSAtIHRoaXMgaXMgd2hhdCB0aGUgdXNlciBjaG9zZVxyXG4gICAgICBjb25zdCBzZWxlY3RlZFZhbHVlID0gdmFsdWVUb1Bhc3M7XHJcblxyXG4gICAgICAvLyBFbnN1cmUgdGhlIGZvcm0gY29udHJvbCBoYXMgdGhlIHNlbGVjdGVkIHZhbHVlIGJlZm9yZSBjYWxsaW5nIG9uQ2hhbmdlXHJcbiAgICAgIGlmIChmb3JtQ29udHJvbCAmJiBzZWxlY3RlZFZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBpZiAoZm9ybUNvbnRyb2wudmFsdWUgIT09IHNlbGVjdGVkVmFsdWUpIHtcclxuICAgICAgICAgIGZvcm1Db250cm9sLnNldFZhbHVlKHNlbGVjdGVkVmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIENhbGwgb25DaGFuZ2Ugd2l0aCB0aGUgc2VsZWN0ZWQgdmFsdWVcclxuICAgICAgaWYgKG9uQ2hhbmdlRm4pIHtcclxuICAgICAgICBvbkNoYW5nZUZuKHNlbGVjdGVkVmFsdWUsIGZvcm1Hcm91cCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFJlc3RvcmUgdGhlIHZhbHVlIGZvciB0aGUgZmllbGQgdGhhdCB0cmlnZ2VyZWQgdGhlIGNoYW5nZSBpZiBpdCB3YXMgY2xlYXJlZCBieSBvbkNoYW5nZVxyXG4gICAgICAvLyBUaGlzIGlzIGNyaXRpY2FsOiBpZiBvbkNoYW5nZSBjbGVhcnMgdGhlIGZpZWxkIHRoYXQgd2FzIGp1c3QgY2hhbmdlZCwgd2UgcmVzdG9yZSBpdFxyXG4gICAgICAvLyBPbmx5IHJlc3RvcmUgaWYgd2UgaGFkIGEgbm9uLWVtcHR5IHZhbHVlIChlbXB0eSBzdHJpbmcsIG51bGwsIHVuZGVmaW5lZCBhcmUgbm90IHJlc3RvcmVkKVxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgZm9ybUNvbnRyb2wgJiZcclxuICAgICAgICBzZWxlY3RlZFZhbHVlICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgICBzZWxlY3RlZFZhbHVlICE9PSBudWxsICYmXHJcbiAgICAgICAgc2VsZWN0ZWRWYWx1ZSAhPT0gJydcclxuICAgICAgKSB7XHJcbiAgICAgICAgLy8gVXNlIHNldFRpbWVvdXQgd2l0aCAwIGRlbGF5IHRvIHJ1biBhZnRlciBhbnkgc3luY2hyb25vdXMgb3BlcmF0aW9ucyBpbiBvbkNoYW5nZVxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHZhbHVlIHdhcyBjbGVhcmVkIG9yIGNoYW5nZWRcclxuICAgICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGZvcm1Db250cm9sLnZhbHVlO1xyXG4gICAgICAgICAgLy8gSWYgdGhlIHZhbHVlIGRvZXNuJ3QgbWF0Y2ggd2hhdCB3YXMgc2VsZWN0ZWQsIHJlc3RvcmUgaXRcclxuICAgICAgICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZSBvbkNoYW5nZSBjbGVhcmVkIHRoZSBmaWVsZCB1bmludGVudGlvbmFsbHlcclxuICAgICAgICAgIGlmIChjdXJyZW50VmFsdWUgIT09IHNlbGVjdGVkVmFsdWUpIHtcclxuICAgICAgICAgICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUoc2VsZWN0ZWRWYWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIDApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb3JtYXRNb250aFllYXJWYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghdmFsdWUpIHJldHVybiB2YWx1ZTtcclxuICAgIC8vIE5vcm1hbGl6ZSB0byBZWVlZLU1NXHJcbiAgICBpZiAodmFsdWUubWF0Y2goL15cXGR7Mn0tXFxkezR9JC8pKSB7XHJcbiAgICAgIGNvbnN0IFttb250aCwgeWVhcl0gPSB2YWx1ZS5zcGxpdCgnLScpO1xyXG4gICAgICByZXR1cm4gYCR7eWVhcn0tJHttb250aH1gO1xyXG4gICAgfVxyXG4gICAgLy8gSWYgYWxyZWFkeSBpbiBZWVlZLU1NIGZvcm1hdCwgcmV0dXJuIGFzIGlzXHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwYXJzZU1vbnRoWWVhclZhbHVlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIHZhbHVlO1xyXG4gICAgLy8gRGlzcGxheSBhbmQgcGlja2VyIGJvdGggdXNlIFlZWVktTU07IG5vcm1hbGl6ZSBNTS1ZWVlZIGlmIHByZXNlbnRcclxuICAgIGlmICh2YWx1ZS5tYXRjaCgvXlxcZHsyfS1cXGR7NH0kLykpIHtcclxuICAgICAgY29uc3QgW21vbnRoLCB5ZWFyXSA9IHZhbHVlLnNwbGl0KCctJyk7XHJcbiAgICAgIHJldHVybiBgJHt5ZWFyfS0ke21vbnRofWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVNb250aFllYXJDaGFuZ2UoXHJcbiAgICBmaWVsZE5hbWU6IHN0cmluZyxcclxuICAgIHZhbHVlOiBzdHJpbmcsXHJcbiAgICBjb250cm9sPzogQWJzdHJhY3RDb250cm9sLFxyXG4gICAgZ3JvdXA/OiBBYnN0cmFjdENvbnRyb2xcclxuICApIHtcclxuICAgIC8vIEZvcm1hdCB0aGUgaW5wdXQgdmFsdWUgdG8gWVlZWS1NTSBmb3JtYXRcclxuICAgIGxldCBmb3JtYXR0ZWRWYWx1ZSA9IHZhbHVlO1xyXG5cclxuICAgIC8vIElmIGl0J3MgaW4gTU0tWVlZWSBmb3JtYXQsIGNvbnZlcnQgdG8gWVlZWS1NTVxyXG4gICAgaWYgKGZvcm1hdHRlZFZhbHVlLm1hdGNoKC9eXFxkezJ9LVxcZHs0fSQvKSkge1xyXG4gICAgICBjb25zdCBbbW9udGgsIHllYXJdID0gZm9ybWF0dGVkVmFsdWUuc3BsaXQoJy0nKTtcclxuICAgICAgZm9ybWF0dGVkVmFsdWUgPSBgJHt5ZWFyfS0ke21vbnRofWA7XHJcbiAgICB9XHJcbiAgICAvLyBJZiBpdCdzIGluIFlZWVlNTSBmb3JtYXQgKG5vIGRhc2gpLCBjb252ZXJ0IHRvIFlZWVktTU1cclxuICAgIGVsc2UgaWYgKGZvcm1hdHRlZFZhbHVlLm1hdGNoKC9eXFxkezZ9JC8pKSB7XHJcbiAgICAgIGNvbnN0IHllYXIgPSBmb3JtYXR0ZWRWYWx1ZS5zdWJzdHJpbmcoMCwgNCk7XHJcbiAgICAgIGNvbnN0IG1vbnRoID0gZm9ybWF0dGVkVmFsdWUuc3Vic3RyaW5nKDQsIDYpO1xyXG4gICAgICBmb3JtYXR0ZWRWYWx1ZSA9IGAke3llYXJ9LSR7bW9udGh9YDtcclxuICAgIH1cclxuICAgIC8vIElmIGl0J3MgYWxyZWFkeSBpbiBZWVlZLU1NIGZvcm1hdCwgbGVhdmUgYXMgaXNcclxuICAgIGVsc2UgaWYgKGZvcm1hdHRlZFZhbHVlLm1hdGNoKC9eXFxkezR9LVxcZHsyfSQvKSkge1xyXG4gICAgICAvLyBBbHJlYWR5IGluIGNvcnJlY3QgZm9ybWF0XHJcbiAgICB9XHJcbiAgICAvLyBJZiB1c2VyIGlzIHR5cGluZywgYWxsb3cgcGFydGlhbCBpbnB1dFxyXG4gICAgZWxzZSBpZiAoZm9ybWF0dGVkVmFsdWUubWF0Y2goL15cXGR7MSw2fSQvKSkge1xyXG4gICAgICAvLyBBbGxvdyBwYXJ0aWFsIGlucHV0IHdoaWxlIHR5cGluZ1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZvcm1Db250cm9sID0gY29udHJvbCB8fCB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk7XHJcbiAgICBpZiAoZm9ybUNvbnRyb2wgJiYgZm9ybWF0dGVkVmFsdWUgIT09IHZhbHVlKSB7XHJcbiAgICAgIGZvcm1Db250cm9sLnNldFZhbHVlKGZvcm1hdHRlZFZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5oYW5kbGVGaWVsZENoYW5nZShmaWVsZE5hbWUsIGZvcm1hdHRlZFZhbHVlLCBjb250cm9sLCBncm91cCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVNb250aFllYXJCbHVyKGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMuZm9ybS5nZXQoZmllbGROYW1lKTtcclxuICAgIGlmICghZm9ybUNvbnRyb2wpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCB2YWx1ZSA9IGZvcm1Db250cm9sLnZhbHVlIHx8ICcnO1xyXG4gICAgLy8gRW5zdXJlIHRoZSB2YWx1ZSBpcyBpbiBZWVlZLU1NIGZvcm1hdCBvbiBibHVyXHJcbiAgICBpZiAodmFsdWUgJiYgIXZhbHVlLm1hdGNoKC9eXFxkezR9LVxcZHsyfSQvKSkge1xyXG4gICAgICAvLyBUcnkgdG8gcGFyc2UgYW5kIGZvcm1hdFxyXG4gICAgICBjb25zdCBmb3JtYXR0ZWQgPSB0aGlzLmZvcm1hdE1vbnRoWWVhclZhbHVlKHZhbHVlKTtcclxuICAgICAgaWYgKGZvcm1hdHRlZCAhPT0gdmFsdWUpIHtcclxuICAgICAgICBmb3JtQ29udHJvbC5zZXRWYWx1ZShmb3JtYXR0ZWQsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlTW9udGhZZWFyUGlja2VyQ2hhbmdlKGZpZWxkTmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICAvLyBNb250aCBwaWNrZXIgb3V0cHV0cyBZWVlZLU1NOyBqdXN0IG5vcm1hbGl6ZVxyXG4gICAgY29uc3QgZm9ybWF0dGVkVmFsdWUgPSB0aGlzLmZvcm1hdE1vbnRoWWVhclZhbHVlKHZhbHVlKTtcclxuICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5mb3JtLmdldChmaWVsZE5hbWUpO1xyXG4gICAgaWYgKGZvcm1Db250cm9sKSB7XHJcbiAgICAgIGZvcm1Db250cm9sLnNldFZhbHVlKGZvcm1hdHRlZFZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIHRoaXMuaGFuZGxlRmllbGRDaGFuZ2UoZmllbGROYW1lLCBmb3JtYXR0ZWRWYWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRNb250aFllYXJQaWNrZXJWYWx1ZShmaWVsZE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMuZm9ybS5nZXQoZmllbGROYW1lKTtcclxuICAgIGlmICghZm9ybUNvbnRyb2wpIHJldHVybiAnJztcclxuICAgIGNvbnN0IHZhbHVlID0gZm9ybUNvbnRyb2wudmFsdWUgfHwgJyc7XHJcbiAgICAvLyBEaXNwbGF5IGFuZCBwaWNrZXIgYm90aCBleHBlY3QgWVlZWS1NTVxyXG4gICAgcmV0dXJuIHRoaXMucGFyc2VNb250aFllYXJWYWx1ZSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBvcGVuTW9udGhQaWNrZXIoZmllbGROYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IG1vbnRoSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcclxuICAgICAgZmllbGROYW1lICsgJ19waWNrZXInXHJcbiAgICApIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBpZiAobW9udGhJbnB1dCAmJiBtb250aElucHV0LnR5cGUgPT09ICdtb250aCcpIHtcclxuICAgICAgLy8gVXBkYXRlIHRoZSBwaWNrZXIgdmFsdWUgYmVmb3JlIG9wZW5pbmdcclxuICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5nZXRNb250aFllYXJQaWNrZXJWYWx1ZShmaWVsZE5hbWUpO1xyXG4gICAgICBpZiAoY3VycmVudFZhbHVlKSB7XHJcbiAgICAgICAgbW9udGhJbnB1dC52YWx1ZSA9IGN1cnJlbnRWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgICAvLyBUcnkgbW9kZXJuIHNob3dQaWNrZXIgQVBJIGZpcnN0LCBmYWxsYmFjayB0byBjbGlja1xyXG4gICAgICBpZiAobW9udGhJbnB1dC5zaG93UGlja2VyKSB7XHJcbiAgICAgICAgbW9udGhJbnB1dC5zaG93UGlja2VyKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbW9udGhJbnB1dC5mb2N1cygpO1xyXG4gICAgICAgIG1vbnRoSW5wdXQuY2xpY2soKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q29sdW1uQnlOYW1lKG5hbWU6IHN0cmluZyk6IEZvcm1Db2x1bW4gfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnNlY3Rpb25zXHJcbiAgICAgIC5mbGF0TWFwKChzKSA9PiBzLmZpZWxkcylcclxuICAgICAgLmZpbmQoKGMpID0+IGMubmFtZSA9PT0gbmFtZSk7XHJcbiAgfVxyXG5cclxuICBnZXRGaWxlRmllbGRzKGZpZWxkczogRm9ybUNvbHVtbltdKTogRm9ybUNvbHVtbltdIHtcclxuICAgIHJldHVybiBmaWVsZHMuZmlsdGVyKChmKSA9PiBmLnR5cGUgPT09ICdmaWxlJyk7XHJcbiAgfVxyXG5cclxuICBnZXROb25GaWxlRmllbGRzKGZpZWxkczogRm9ybUNvbHVtbltdKTogRm9ybUNvbHVtbltdIHtcclxuICAgIHJldHVybiBmaWVsZHMuZmlsdGVyKChmKSA9PiBmLnR5cGUgIT09ICdmaWxlJyk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVQYXNzd29yZFZpc2liaWxpdHkoZmllbGROYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLnBhc3N3b3JkVmlzaWJpbGl0eS5nZXQoZmllbGROYW1lKSB8fCBmYWxzZTtcclxuICAgIHRoaXMucGFzc3dvcmRWaXNpYmlsaXR5LnNldChmaWVsZE5hbWUsICFjdXJyZW50KTtcclxuICB9XHJcbiAgaGFzUmVxdWlyZWRWYWxpZGF0aW9uKGNvbHVtbjogRm9ybUNvbHVtbik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGNvbHVtbi52YWxpZGF0aW9ucz8uc29tZSgodikgPT4gdi50eXBlID09PSAncmVxdWlyZWQnKSB8fCBmYWxzZTtcclxuICB9XHJcblxyXG4gIGlzUGFzc3dvcmRWaXNpYmxlKGZpZWxkTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5wYXNzd29yZFZpc2liaWxpdHkuZ2V0KGZpZWxkTmFtZSkgfHwgZmFsc2U7XHJcbiAgfVxyXG5cclxuICBidWlsZFZhbGlkYXRvcnMoXHJcbiAgICB2YWxpZGF0aW9ucz86IEZpZWxkVmFsaWRhdGlvbltdLFxyXG4gICAgZm9ybUdyb3VwPzogRm9ybUdyb3VwXHJcbiAgKTogYW55W10ge1xyXG4gICAgaWYgKCF2YWxpZGF0aW9ucykgcmV0dXJuIFtdO1xyXG5cclxuICAgIGNvbnN0IHZhbGlkYXRvcnM6IGFueVtdID0gW107XHJcbiAgICB2YWxpZGF0aW9ucy5mb3JFYWNoKCh2YWxpZGF0aW9uKSA9PiB7XHJcbiAgICAgIHN3aXRjaCAodmFsaWRhdGlvbi50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAncmVxdWlyZWQnOlxyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnZW1haWwnOlxyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMuZW1haWwpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnbWluTGVuZ3RoJzpcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbkxlbmd0aCh2YWxpZGF0aW9uLnZhbHVlKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdtYXhMZW5ndGgnOlxyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKHZhbGlkYXRpb24udmFsdWUpKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ21pbic6XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW4odmFsaWRhdGlvbi52YWx1ZSkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnbWF4JzpcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heCh2YWxpZGF0aW9uLnZhbHVlKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdwYXR0ZXJuJzpcclxuICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4odmFsaWRhdGlvbi52YWx1ZSkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnY3VzdG9tJzpcclxuICAgICAgICAgIGlmICh2YWxpZGF0aW9uLnZhbGlkYXRvcikge1xyXG4gICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGlzVmFsaWQgPSB2YWxpZGF0aW9uLnZhbGlkYXRvciEoY29udHJvbC52YWx1ZSwgZm9ybUdyb3VwKTtcclxuICAgICAgICAgICAgICByZXR1cm4gaXNWYWxpZCA/IG51bGwgOiB7IGN1c3RvbTogdHJ1ZSB9O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2R1cGxpY2F0ZSc6XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgICAgIGlmICghdmFsdWUgfHwgIXZhbGlkYXRpb24udmFsdWUgfHwgIUFycmF5LmlzQXJyYXkodmFsaWRhdGlvbi52YWx1ZSkpIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICBjb25zdCBpc0R1cGxpY2F0ZSA9IHZhbGlkYXRpb24udmFsdWUuc29tZSgoZXhpc3Rpbmc6IGFueSkgPT5cclxuICAgICAgICAgICAgICBTdHJpbmcoZXhpc3RpbmcpLnRvTG93ZXJDYXNlKCkudHJpbSgpID09PSBTdHJpbmcodmFsdWUpLnRvTG93ZXJDYXNlKCkudHJpbSgpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHJldHVybiBpc0R1cGxpY2F0ZSA/IHsgZHVwbGljYXRlOiB0cnVlIH0gOiBudWxsO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdmFsaWRhdG9ycztcclxuICB9XHJcblxyXG4gIHRyaWdnZXJGaWxlVXBsb2FkKGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmlsZUlucHV0XycgKyBmaWVsZE5hbWUpPy5jbGljaygpO1xyXG4gIH1cclxuXHJcbiAgb3BlblRpbWVQaWNrZXIoZmllbGROYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHRpbWVJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGZpZWxkTmFtZSkgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGlmICh0aW1lSW5wdXQgJiYgdGltZUlucHV0LnR5cGUgPT09ICd0aW1lJykge1xyXG4gICAgICAvLyBUcnkgbW9kZXJuIHNob3dQaWNrZXIgQVBJIGZpcnN0LCBmYWxsYmFjayB0byBjbGlja1xyXG4gICAgICBpZiAodGltZUlucHV0LnNob3dQaWNrZXIpIHtcclxuICAgICAgICB0aW1lSW5wdXQuc2hvd1BpY2tlcigpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRpbWVJbnB1dC5mb2N1cygpO1xyXG4gICAgICAgIHRpbWVJbnB1dC5jbGljaygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkZpbGVDaGFuZ2UoZXZlbnQ6IGFueSwgZmllbGROYW1lOiBzdHJpbmcsIGdyb3VwPzogQWJzdHJhY3RDb250cm9sKSB7XHJcbiAgICBjb25zdCBmaWxlOiBGaWxlID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xyXG4gICAgY29uc3QgZm9ybUdyb3VwID0gKGdyb3VwIGFzIEZvcm1Hcm91cCkgfHwgdGhpcy5mb3JtO1xyXG4gICAgaWYgKGZpbGUpIHtcclxuICAgICAgdGhpcy5maWxlTmFtZXMuc2V0KGZpZWxkTmFtZSwgZmlsZS5uYW1lKTtcclxuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgYmFzZTY0U3RyaW5nID0gcmVhZGVyLnJlc3VsdCBhcyBzdHJpbmc7XHJcbiAgICAgICAgdGhpcy5maWxlUHJldmlld3Muc2V0KGZpZWxkTmFtZSwgYmFzZTY0U3RyaW5nKTtcclxuICAgICAgICB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk/LnNldFZhbHVlKGJhc2U2NFN0cmluZyk7XHJcblxyXG4gICAgICAgIC8vIFRyaWdnZXIgb25DaGFuZ2UgaGFuZGxlciBmb3IgZmlsZSBmaWVsZHNcclxuICAgICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmdldENvbHVtbkJ5TmFtZShmaWVsZE5hbWUpO1xyXG4gICAgICAgIGlmIChjb2x1bW4/Lm9uQ2hhbmdlKSB7XHJcbiAgICAgICAgICBjb2x1bW4ub25DaGFuZ2UoYmFzZTY0U3RyaW5nLCBmb3JtR3JvdXApO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4dHJhY3RGaWxlTmFtZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghdmFsdWUpIHJldHVybiAnJztcclxuXHJcbiAgICAvLyBJZiBpdCdzIGEgVVJMLCBleHRyYWN0IGZpbGVuYW1lIGZyb20gVVJMXHJcbiAgICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnaHR0cCcpKSB7XHJcbiAgICAgIGNvbnN0IHBhcnRzID0gdmFsdWUuc3BsaXQoJy8nKTtcclxuICAgICAgcmV0dXJuIHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIElmIGl0J3MgYmFzZTY0LCByZXR1cm4gYSBnZW5lcmljIG5hbWVcclxuICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKGBkYXRhOmltYWdlYCkpIHtcclxuICAgICAgcmV0dXJuICd1cGxvYWRlZC1pbWFnZS5qcGcnO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAnZXhpc3RpbmctcGhvdG8uanBnJztcclxuICB9XHJcblxyXG4gIGdldEZpbGVQcmV2aWV3KGZpZWxkTmFtZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5maWxlUHJldmlld3MuZ2V0KGZpZWxkTmFtZSkgfHwgbnVsbDtcclxuICB9XHJcblxyXG4gIGdldEZpbGVOYW1lKGZpZWxkTmFtZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5maWxlTmFtZXMuZ2V0KGZpZWxkTmFtZSkgfHwgbnVsbDtcclxuICB9XHJcblxyXG4gIG1hcFNlYXJjaE9wdGlvbnMob3B0aW9uczogYW55W10pOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gb3B0aW9ucy5tYXAob3B0ID0+ICh7XHJcbiAgICAgIGNvZGU6IFN0cmluZyhvcHQuY29kZSB8fCBvcHQudmFsdWUgfHwgJycpLFxyXG4gICAgICBuYW1lOiBTdHJpbmcob3B0Lm5hbWUgfHwgb3B0LmxhYmVsIHx8IG9wdC52YWx1ZSB8fCAnJyksXHJcbiAgICAgIHZhbHVlOiBvcHQudmFsdWVcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG5cclxuICBkZWxldGVGaWxlKGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmZpbGVQcmV2aWV3cy5kZWxldGUoZmllbGROYW1lKTtcclxuICAgIHRoaXMuZmlsZU5hbWVzLmRlbGV0ZShmaWVsZE5hbWUpO1xyXG4gICAgdGhpcy5mb3JtLmdldChmaWVsZE5hbWUpPy5zZXRWYWx1ZSgnJyk7XHJcblxyXG4gICAgLy8gVHJpZ2dlciBvbkNoYW5nZSBoYW5kbGVyIHdoZW4gZmlsZSBpcyBkZWxldGVkXHJcbiAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmdldENvbHVtbkJ5TmFtZShmaWVsZE5hbWUpO1xyXG4gICAgaWYgKGNvbHVtbj8ub25DaGFuZ2UpIHtcclxuICAgICAgY29sdW1uLm9uQ2hhbmdlKCcnLCB0aGlzLmZvcm0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlU3VibWl0KCkge1xyXG4gICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgIC8vIE1hcmsgYWxsIGZpZWxkcyBhcyB0b3VjaGVkIHRvIHNob3cgcmVkIGJvcmRlcnMgKHJlY3Vyc2l2ZSlcclxuICAgICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuXHJcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yLmVtaXQoXHJcbiAgICAgICAgJ1BsZWFzZSBmaWxsIGFsbCByZXF1aXJlZCBmaWVsZHMgbWFya2VkIHdpdGggKi4nXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmb3JtRGF0YSA9IHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpO1xyXG4gICAgdGhpcy5jb25maWcub25TdWJtaXQoZm9ybURhdGEpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlUmVzZXQoKSB7XHJcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5mb3JtLnJlc2V0KCk7XHJcbiAgICBpZiAodGhpcy5jb25maWcub25SZXNldCkge1xyXG4gICAgICB0aGlzLmNvbmZpZy5vblJlc2V0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0ZpZWxkSW52YWxpZChmaWVsZE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZmllbGQgPSB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk7XHJcbiAgICByZXR1cm4gISEoZmllbGQgJiYgZmllbGQuaW52YWxpZCAmJiAoZmllbGQudG91Y2hlZCB8fCB0aGlzLnN1Ym1pdHRlZCkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RXJyb3JNZXNzYWdlKGZpZWxkTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5mb3JtLmdldChmaWVsZE5hbWUpO1xyXG4gICAgaWYgKCFmaWVsZD8uZXJyb3JzKSByZXR1cm4gJyc7XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgdGhlcmUncyBhIGN1c3RvbSBtZXNzYWdlIGZyb20gdmFsaWRhdGlvbnNcclxuICAgIGNvbnN0IGFsbENvbHVtbnMgPSB0aGlzLmNvbmZpZy5zZWN0aW9ucy5mbGF0TWFwKChzKSA9PiBzLmZpZWxkcyk7XHJcbiAgICBjb25zdCBjb2x1bW4gPSBhbGxDb2x1bW5zLmZpbmQoKGMpID0+IGMubmFtZSA9PT0gZmllbGROYW1lKTtcclxuICAgIC8vIENoZWNrIGZvciBjdXN0b20gdmFsaWRhdGlvbiBlcnJvclxyXG4gICAgaWYgKGZpZWxkLmVycm9yc1snY3VzdG9tJ10pIHtcclxuICAgICAgY29uc3QgY3VzdG9tVmFsaWRhdGlvbiA9IGNvbHVtbj8udmFsaWRhdGlvbnM/LmZpbmQoXHJcbiAgICAgICAgKHYpID0+IHYudHlwZSA9PT0gJ2N1c3RvbSdcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIGN1c3RvbVZhbGlkYXRpb24/Lm1lc3NhZ2UgfHwgJ0ludmFsaWQgZmllbGQnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgYSBjdXN0b20gbWVzc2FnZSBmcm9tIHZhbGlkYXRpb25zXHJcbiAgICBjb25zdCBlcnJvcktleXMgPSBPYmplY3Qua2V5cyhmaWVsZC5lcnJvcnMpO1xyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgZXJyb3JLZXlzKSB7XHJcbiAgICAgIGNvbnN0IHZhbGlkYXRpb24gPSBjb2x1bW4/LnZhbGlkYXRpb25zPy5maW5kKCh2KSA9PiB2LnR5cGUgPT09IGtleSk7XHJcbiAgICAgIGlmICh2YWxpZGF0aW9uPy5tZXNzYWdlKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRpb24ubWVzc2FnZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gRGVmYXVsdCBlcnJvciBtZXNzYWdlc1xyXG4gICAgaWYgKGZpZWxkLmVycm9yc1sncmVxdWlyZWQnXSkge1xyXG4gICAgICByZXR1cm4gYCR7Y29sdW1uPy5sYWJlbH0gaXMgcmVxdWlyZWRgO1xyXG4gICAgfVxyXG4gICAgaWYgKGZpZWxkLmVycm9yc1snZW1haWwnXSkgcmV0dXJuICdJbnZhbGlkIGVtYWlsIGZvcm1hdCc7XHJcbiAgICBpZiAoZmllbGQuZXJyb3JzWydtaW5sZW5ndGgnXSlcclxuICAgICAgcmV0dXJuIGBNaW5pbXVtIGxlbmd0aCBpcyAke2ZpZWxkLmVycm9yc1snbWlubGVuZ3RoJ10ucmVxdWlyZWRMZW5ndGh9YDtcclxuICAgIGlmIChmaWVsZC5lcnJvcnNbJ21heGxlbmd0aCddKVxyXG4gICAgICByZXR1cm4gYE1heGltdW0gbGVuZ3RoIGlzICR7ZmllbGQuZXJyb3JzWydtYXhsZW5ndGgnXS5yZXF1aXJlZExlbmd0aH1gO1xyXG4gICAgaWYgKGZpZWxkLmVycm9yc1snbWluJ10pXHJcbiAgICAgIHJldHVybiBgTWluaW11bSB2YWx1ZSBpcyAke2ZpZWxkLmVycm9yc1snbWluJ10ubWlufWA7XHJcbiAgICBpZiAoZmllbGQuZXJyb3JzWydtYXgnXSlcclxuICAgICAgcmV0dXJuIGBNYXhpbXVtIHZhbHVlIGlzICR7ZmllbGQuZXJyb3JzWydtYXgnXS5tYXh9YDtcclxuICAgIGlmIChmaWVsZC5lcnJvcnNbJ3BhdHRlcm4nXSkgcmV0dXJuICdJbnZhbGlkIGZvcm1hdCc7XHJcbiAgICBpZiAoZmllbGQuZXJyb3JzWydkdXBsaWNhdGUnXSkgcmV0dXJuIGNvbHVtbj8udmFsaWRhdGlvbnM/LmZpbmQodiA9PiB2LnR5cGUgPT09ICdkdXBsaWNhdGUnKT8ubWVzc2FnZSB8fCBgJHtjb2x1bW4/LmxhYmVsfSBhbHJlYWR5IGV4aXN0c2A7XHJcbiAgICByZXR1cm4gJ0ludmFsaWQgZmllbGQnO1xyXG4gIH1cclxufVxyXG4iXX0=