@po-ui/ng-components 17.18.0 → 17.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/po-table/po-table.component.mjs +2 -2
- package/esm2022/lib/components/po-tabs/po-tab-dropdown/po-tab-dropdown.component.mjs +14 -5
- package/fesm2022/po-ui-ng-components.mjs +14 -5
- package/fesm2022/po-ui-ng-components.mjs.map +1 -1
- package/lib/components/po-tabs/po-tab-dropdown/po-tab-dropdown.component.d.ts +1 -0
- package/package.json +4 -4
- package/po-ui-ng-components-17.19.0.tgz +0 -0
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-update/v14/index.js +1 -1
- package/schematics/ng-update/v15/index.js +1 -1
- package/schematics/ng-update/v16/index.js +1 -1
- package/schematics/ng-update/v17/index.js +1 -1
- package/schematics/ng-update/v2/index.js +1 -1
- package/schematics/ng-update/v3/index.js +1 -1
- package/schematics/ng-update/v4/index.js +1 -1
- package/schematics/ng-update/v5/index.js +1 -1
- package/schematics/ng-update/v6/index.js +1 -1
- package/po-ui-ng-components-17.18.0.tgz +0 -0
|
@@ -2001,7 +2001,7 @@ export class PoTableComponent extends PoTableBaseComponent {
|
|
|
2001
2001
|
}
|
|
2002
2002
|
}
|
|
2003
2003
|
getTemplate(column) {
|
|
2004
|
-
const template = this.tableColumnTemplates
|
|
2004
|
+
const template = this.tableColumnTemplates?.find(tableColumnTemplate => tableColumnTemplate.targetProperty === column.property);
|
|
2005
2005
|
if (!template) {
|
|
2006
2006
|
console.warn(`Não foi possível encontrar o template para a coluna: ${column.property}, por gentileza informe a propriedade [p-property]`);
|
|
2007
2007
|
return null;
|
|
@@ -2338,4 +2338,4 @@ export class PoTableComponent extends PoTableBaseComponent {
|
|
|
2338
2338
|
args: ['columnManagerTargetFixed']
|
|
2339
2339
|
}] }); })();
|
|
2340
2340
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PoTableComponent, { className: "PoTableComponent", filePath: "lib/components/po-table/po-table.component.ts", lineNumber: 107 }); })();
|
|
2341
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLXRhYmxlL3BvLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby10YWJsZS9wby10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRSxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHdEUsT0FBTyxFQUdMLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUVmLFVBQVUsRUFDVixNQUFNLEVBSU4sUUFBUSxFQUlSLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBYyxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBaUIsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJOUQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhDLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBR3RHLE9BQU8sRUFBRSxvQkFBb0IsRUFBbUIsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUN6RyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwr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QUNPLGtCQUFrQjtrQkFBdkYsU0FBUzttQkFBQyxvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUVILGFBQWE7a0JBQTdFLFNBQVM7bUJBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBQ08sa0JBQWtCO2tCQUF2RixTQUFTO21CQUFDLG9CQUFvQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBQ0EsZ0JBQWdCO2tCQUFuRixTQUFTO21CQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBRVIsa0JBQWtCO2tCQUEzRSxZQUFZO21CQUFDLG9CQUFvQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNGLGNBQWM7a0JBQW5FLFlBQVk7bUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQzFCLFdBQVc7a0JBQXBDLFNBQVM7bUJBQUMsYUFBYTtZQUN3QyxhQUFhO2tCQUE1RSxTQUFTO21CQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUNDLFFBQVE7a0JBQXRFLFNBQVM7bUJBQUMsd0JBQXdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBaURoQixtQkFBbUI7a0JBQXhELFNBQVM7bUJBQUMscUJBQXFCO1lBU1csd0JBQXdCO2tCQUFsRSxTQUFTO21CQUFDLDBCQUEwQjs7a0ZBakYxQixnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcblxuaW1wb3J0IHsgRGVjaW1hbFBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERvQ2hlY2ssXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgSXRlcmFibGVEaWZmZXJzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFF1ZXJ5TGlzdCxcbiAgUmVuZGVyZXIyLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG4gIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBQb0RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG8tZGF0ZS9wby1kYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBvTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvLW5vdGlmaWNhdGlvbi9wby1ub3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbCc7XG5pbXBvcnQgeyBQb01vZGFsQWN0aW9uLCBQb01vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vcG8tbW9kYWwnO1xuaW1wb3J0IHsgUG9Qb3B1cENvbXBvbmVudCB9IGZyb20gJy4uL3BvLXBvcHVwL3BvLXBvcHVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb1RhYmxlQ29sdW1uTGFiZWwgfSBmcm9tICcuL3BvLXRhYmxlLWNvbHVtbi1sYWJlbC9wby10YWJsZS1jb2x1bW4tbGFiZWwuaW50ZXJmYWNlJztcblxuaW1wb3J0IHsgdXVpZCB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgUG9QYWdlU2xpZGVDb21wb25lbnQgfSBmcm9tICcuLi9wby1wYWdlJztcbmltcG9ydCB7IFBvVGFibGVSb3dUZW1wbGF0ZUFycm93RGlyZWN0aW9uIH0gZnJvbSAnLi9lbnVtcy9wby10YWJsZS1yb3ctdGVtcGxhdGUtYXJyb3ctZGlyZWN0aW9uLmVudW0nO1xuaW1wb3J0IHsgUG9UYWJsZUFjdGlvbiB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby10YWJsZS1hY3Rpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFibGVDb2x1bW4gfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tdGFibGUtY29sdW1uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1RhYmxlQmFzZUNvbXBvbmVudCwgUXVlcnlQYXJhbXNUeXBlIH0gZnJvbSAnLi9wby10YWJsZS1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb1RhYmxlQ2VsbFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9wby10YWJsZS1jZWxsLXRlbXBsYXRlL3BvLXRhYmxlLWNlbGwtdGVtcGxhdGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFBvVGFibGVDb2x1bW5UZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vcG8tdGFibGUtY29sdW1uLXRlbXBsYXRlL3BvLXRhYmxlLWNvbHVtbi10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUG9UYWJsZVJvd1RlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9wby10YWJsZS1yb3ctdGVtcGxhdGUvcG8tdGFibGUtcm93LXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBQb1RhYmxlU3VidGl0bGVDb2x1bW4gfSBmcm9tICcuL3BvLXRhYmxlLXN1YnRpdGxlLWZvb3Rlci9wby10YWJsZS1zdWJ0aXRsZS1jb2x1bW4uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFibGVTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wby10YWJsZS5zZXJ2aWNlJztcbmltcG9ydCB7IElDT05TX0RJQ1RJT05BUlksIFBvSWNvbkRpY3Rpb25hcnkgfSBmcm9tICcuLi9wby1pY29uJztcblxuLyoqXG4gKiBAZG9jc0V4dGVuZHMgUG9UYWJsZUJhc2VDb21wb25lbnRcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby10YWJsZS1iYXNpY1wiIHRpdGxlPVwiUE8gVGFibGUgQmFzaWNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWJhc2ljL3NhbXBsZS1wby10YWJsZS1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtYmFzaWMvc2FtcGxlLXBvLXRhYmxlLWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFibGUtbGFic1wiIHRpdGxlPVwiUE8gVGFibGUgTGFic1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtbGFicy9zYW1wbGUtcG8tdGFibGUtbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtbGFicy9zYW1wbGUtcG8tdGFibGUtbGFicy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1sYWJzL3NhbXBsZS1wby10YWJsZS1sYWJzLmNvbXBvbmVudC5lMmUtc3BlYy50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1sYWJzL3NhbXBsZS1wby10YWJsZS1sYWJzLmNvbXBvbmVudC5wby50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1sYWJzL3NhbXBsZS1wby10YWJsZS1sYWJzLnNlcnZpY2UudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby10YWJsZS13aXRoLWFwaVwiIHRpdGxlPVwiUE8gVGFibGUgdXNpbmcgQVBJXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS13aXRoLWFwaS9zYW1wbGUtcG8tdGFibGUtd2l0aC1hcGkuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLXdpdGgtYXBpL3NhbXBsZS1wby10YWJsZS13aXRoLWFwaS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhYmxlLXRyYW5zcG9ydFwiIHRpdGxlPVwiUE8gVGFibGUgLSBUcmFuc3BvcnRcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLXRyYW5zcG9ydC9zYW1wbGUtcG8tdGFibGUtdHJhbnNwb3J0LmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS10cmFuc3BvcnQvc2FtcGxlLXBvLXRhYmxlLXRyYW5zcG9ydC5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS10cmFuc3BvcnQvc2FtcGxlLXBvLXRhYmxlLXRyYW5zcG9ydC5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFibGUtYWlyZmFyZVwiIHRpdGxlPVwiUE8gVGFibGUgLSBBaXJmYXJlXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1haXJmYXJlL3NhbXBsZS1wby10YWJsZS1haXJmYXJlLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1haXJmYXJlL3NhbXBsZS1wby10YWJsZS1haXJmYXJlLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWFpcmZhcmUvc2FtcGxlLXBvLXRhYmxlLWFpcmZhcmUuc2VydmljZS50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhYmxlLWNvbXBvbmVudHNcIiB0aXRsZT1cIlBPIFRhYmxlIC0gUG8gRmllbGQgQ29tcG9uZW50c1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy9zYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy9zYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy5lbnVtLnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMvc2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy9zYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMvc2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMuY29tcG9uZW50LmNzc1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhYmxlLWhlcm9lc1wiIHRpdGxlPVwiUE8gVGFibGUgLSBIZXJvZXNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWhlcm9lcy9zYW1wbGUtcG8tdGFibGUtaGVyb2VzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1oZXJvZXMvc2FtcGxlLXBvLXRhYmxlLWhlcm9lcy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1oZXJvZXMvc2FtcGxlLXBvLXRhYmxlLWhlcm9lcy5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFibGUtZHJhZ2dhYmxlXCIgdGl0bGU9XCJQTyBUYWJsZSBEcmFnIGFuZCBEcm9wXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1kcmFnZ2FibGUvc2FtcGxlLXBvLXRhYmxlLWRyYWdnYWJsZS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1kcmFnZ2FibGUvc2FtcGxlLXBvLXRhYmxlLWRyYWdnYWJsZS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wby10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1BvRGF0ZVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIFBvVGFibGVDb21wb25lbnQgZXh0ZW5kcyBQb1RhYmxlQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIERvQ2hlY2ssIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgQENvbnRlbnRDaGlsZChQb1RhYmxlUm93VGVtcGxhdGVEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIHRhYmxlUm93VGVtcGxhdGU6IFBvVGFibGVSb3dUZW1wbGF0ZURpcmVjdGl2ZTtcbiAgQENvbnRlbnRDaGlsZChQb1RhYmxlQ2VsbFRlbXBsYXRlRGlyZWN0aXZlKSB0YWJsZUNlbGxUZW1wbGF0ZTogUG9UYWJsZUNlbGxUZW1wbGF0ZURpcmVjdGl2ZTtcblxuICBAQ29udGVudENoaWxkcmVuKFBvVGFibGVDb2x1bW5UZW1wbGF0ZURpcmVjdGl2ZSkgdGFibGVDb2x1bW5UZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxQb1RhYmxlQ29sdW1uVGVtcGxhdGVEaXJlY3RpdmU+O1xuXG4gIEBWaWV3Q2hpbGQoJ25vQ29sdW1uc0hlYWRlcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBub0NvbHVtbnNIZWFkZXI7XG4gIEBWaWV3Q2hpbGQoJ3BvcHVwJykgcG9Qb3B1cENvbXBvbmVudDogUG9Qb3B1cENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZChQb01vZGFsQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBtb2RhbERlbGV0ZTogUG9Nb2RhbENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgndGFibGVGb290ZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgdGFibGVGb290ZXJFbGVtZW50O1xuICBAVmlld0NoaWxkKCd0YWJsZVdyYXBwZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgdGFibGVXcmFwcGVyRWxlbWVudDtcblxuICBAVmlld0NoaWxkKCd0YWJsZVRlbXBsYXRlJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pIHRhYmxlVGVtcGxhdGU7XG4gIEBWaWV3Q2hpbGQoJ3RhYmxlVmlydHVhbFNjcm9sbCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSB0YWJsZVZpcnR1YWxTY3JvbGw7XG5cbiAgQFZpZXdDaGlsZCgnY29sdW1uTWFuYWdlcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSBjb2x1bW5NYW5hZ2VyO1xuICBAVmlld0NoaWxkKCdjb2x1bW5CYXRjaEFjdGlvbnMnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgY29sdW1uQmF0Y2hBY3Rpb25zO1xuICBAVmlld0NoaWxkKCdjb2x1bW5BY3Rpb25MZWZ0JywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pIGNvbHVtbkFjdGlvbkxlZnQ7XG5cbiAgQFZpZXdDaGlsZHJlbignYWN0aW9uc0ljb25FbGVtZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGFjdGlvbnNJY29uRWxlbWVudDogUXVlcnlMaXN0PGFueT47XG4gIEBWaWV3Q2hpbGRyZW4oJ2FjdGlvbnNFbGVtZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGFjdGlvbnNFbGVtZW50OiBRdWVyeUxpc3Q8YW55PjtcbiAgQFZpZXdDaGlsZCgnZmlsdGVySW5wdXQnKSBmaWx0ZXJJbnB1dDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgncG9TZWFyY2hJbnB1dCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIHBvU2VhcmNoSW5wdXQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LCB7IHN0YXRpYzogZmFsc2UgfSkgcHVibGljIHZpZXdQb3J0OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XG5cbiAgcG9Ob3RpZmljYXRpb24gPSBpbmplY3QoUG9Ob3RpZmljYXRpb25TZXJ2aWNlKTtcblxuICBoZWlnaHRUYWJsZUNvbnRhaW5lcjogbnVtYmVyO1xuICBoZWlnaHRUYWJsZVZpcnR1YWw6IG51bWJlcjtcbiAgcG9wdXBUYXJnZXQ7XG4gIHRhYmxlT3BhY2l0eTogbnVtYmVyID0gMDtcbiAgdG9vbHRpcFRleHQ6IHN0cmluZztcbiAgaXRlbVNpemU6IG51bWJlciA9IDQ4O1xuICBsYXN0VmlzaWJsZUNvbHVtbnNTZWxlY3RlZDogQXJyYXk8UG9UYWJsZUNvbHVtbj47XG4gIHRhZ0NvbG9yOiBzdHJpbmc7XG4gIGlkUmFkaW86IHN0cmluZztcbiAgaW5wdXRGaWVsZFZhbHVlID0gJyc7XG4gIEpTT046IEpTT047XG4gIG5ld09yZGVyQ29sdW1uczogQXJyYXk8UG9UYWJsZUNvbHVtbj47XG4gIHNpemVMb2FkaW5nOiBzdHJpbmcgPSAnc20nO1xuICBoZWFkZXJXaWR0aDogbnVtYmVyO1xuXG4gIGNsb3NlOiBQb01vZGFsQWN0aW9uID0ge1xuICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgdGhpcy5tb2RhbERlbGV0ZS5jbG9zZSgpO1xuICAgIH0sXG4gICAgbGFiZWw6IHRoaXMubGl0ZXJhbHMuY2FuY2VsLFxuICAgIGRhbmdlcjogdHJ1ZVxuICB9O1xuXG4gIGNvbmZpcm06IFBvTW9kYWxBY3Rpb24gPSB7XG4gICAgYWN0aW9uOiAoKSA9PiB7XG4gICAgICB0aGlzLmRlbGV0ZUl0ZW1zKCk7XG4gICAgfSxcbiAgICBsYWJlbDogdGhpcy5saXRlcmFscy5kZWxldGVcbiAgfTtcblxuICBwcml2YXRlIF9jb2x1bW5NYW5hZ2VyVGFyZ2V0OiBFbGVtZW50UmVmO1xuICBwcml2YXRlIF9jb2x1bW5NYW5hZ2VyVGFyZ2V0Rml4ZWQ6IEVsZW1lbnRSZWY7XG4gIHByaXZhdGUgX2ljb25Ub2tlbjogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgcHJpdmF0ZSBkaWZmZXI7XG4gIHByaXZhdGUgZm9vdGVySGVpZ2h0O1xuICBwcml2YXRlIGhlYWRlckhlaWdodDtcbiAgcHJpdmF0ZSB0aW1lb3V0UmVzaXplO1xuICBwcml2YXRlIHZpc2libGVFbGVtZW50ID0gZmFsc2U7XG4gIHByaXZhdGUgc2Nyb2xsRXZlbnQkOiBPYnNlcnZhYmxlPGFueT47XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uU2Nyb2xsRXZlbnQ6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25TZXJ2aWNlOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgcHJpdmF0ZSBjbGlja0xpc3RlbmVyOiAoKSA9PiB2b2lkO1xuICBwcml2YXRlIHJlc2l6ZUxpc3RlbmVyOiAoKSA9PiB2b2lkO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbHVtbk1hbmFnZXJUYXJnZXQnKSBzZXQgY29sdW1uTWFuYWdlclRhcmdldCh2YWx1ZTogRWxlbWVudFJlZikge1xuICAgIHRoaXMuX2NvbHVtbk1hbmFnZXJUYXJnZXQgPSB2YWx1ZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGdldCBjb2x1bW5NYW5hZ2VyVGFyZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5NYW5hZ2VyVGFyZ2V0O1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnY29sdW1uTWFuYWdlclRhcmdldEZpeGVkJykgc2V0IGNvbHVtbk1hbmFnZXJUYXJnZXRGaXhlZCh2YWx1ZTogRWxlbWVudFJlZikge1xuICAgIHRoaXMuX2NvbHVtbk1hbmFnZXJUYXJnZXRGaXhlZCA9IHZhbHVlO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZ2V0IGNvbHVtbk1hbmFnZXJUYXJnZXRGaXhlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29sdW1uTWFuYWdlclRhcmdldEZpeGVkO1xuICB9XG5cbiAgZ2V0IGljb25OYW1lTGliKCkge1xuICAgIHJldHVybiB0aGlzLl9pY29uVG9rZW4uTkFNRV9MSUI7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwb0RhdGU6IFBvRGF0ZVNlcnZpY2UsXG4gICAgZGlmZmVyczogSXRlcmFibGVEaWZmZXJzLFxuICAgIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcG9MYW5ndWFnZVNlcnZpY2U6IFBvTGFuZ3VhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlLFxuICAgIHByaXZhdGUgZGVmYXVsdFNlcnZpY2U6IFBvVGFibGVTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoSUNPTlNfRElDVElPTkFSWSkgdmFsdWU6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH1cbiAgKSB7XG4gICAgc3VwZXIocG9EYXRlLCBwb0xhbmd1YWdlU2VydmljZSwgZGVmYXVsdFNlcnZpY2UpO1xuICAgIHRoaXMuSlNPTiA9IEpTT047XG4gICAgdGhpcy5kaWZmZXIgPSBkaWZmZXJzLmZpbmQoW10pLmNyZWF0ZShudWxsKTtcblxuICAgIC8vIFRPRE86ICM1NTUwIGFvIHJlbW92ZXIgZXN0ZSBsaXN0ZW5lciwgbm8gcG9ydGFsLCBxdWFuZG8gYXMgY29sdW5hcyBmb3JlbSBmaXhhcyBuw6NvIHNvZnJlbVxuICAgIC8vIGFsdGVyYcOnw6NvIGRlIGxhcmd1cmEsIHBvaXMgbyBuZ0RvQ2hlY2sgbsOjbyDDqSBleGVjdXRhZG8uXG4gICAgdGhpcy5jbGlja0xpc3RlbmVyID0gcmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdjbGljaycsICgpID0+IHt9KTtcblxuICAgIHRoaXMucmVzaXplTGlzdGVuZXIgPSByZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdyZXNpemUnLCAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgdGhpcy5kZWJvdW5jZVJlc2l6ZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5faWNvblRva2VuID0gdmFsdWUgPz8gUG9JY29uRGljdGlvbmFyeTtcbiAgfVxuXG4gIGdldCBoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0KCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlUm93VGVtcGxhdGU/LnRhYmxlUm93VGVtcGxhdGVBcnJvd0RpcmVjdGlvbiA9PT0gUG9UYWJsZVJvd1RlbXBsYXRlQXJyb3dEaXJlY3Rpb24uUmlnaHQ7XG4gIH1cblxuICBnZXQgY29sdW1uQ291bnQoKSB7XG4gICAgY29uc3QgY29sdW1uQ291bnQgPVxuICAgICAgdGhpcy5tYWluQ29sdW1ucy5sZW5ndGggK1xuICAgICAgKHRoaXMuYWN0aW9ucy5sZW5ndGggPiAwID8gMSA6IDApICtcbiAgICAgICh0aGlzLnNlbGVjdGFibGUgPyAxIDogMCkgK1xuICAgICAgKCF0aGlzLmhpZGVEZXRhaWwgJiYgdGhpcy5jb2x1bW5NYXN0ZXJEZXRhaWwgIT09IHVuZGVmaW5lZCA/IDEgOiAwKTtcblxuICAgIHJldHVybiBjb2x1bW5Db3VudCB8fCAxO1xuICB9XG5cbiAgZ2V0IGNvbHVtbkNvdW50Rm9yTWFzdGVyRGV0YWlsKCkge1xuICAgIC8vIGNhc28gdGl2ZXIgYcOnw7VlcyBzZXLDoSB1dGlsaXphZG8gYSBzdWEgY29sdW5hIHBhcmEgZXhpYmlyIG8gY29sdW1uTWFuYWdlclxuICAgIHJldHVybiB0aGlzLm1haW5Db2x1bW5zLmxlbmd0aCArIDEgKyAodGhpcy5hY3Rpb25zLmxlbmd0aCA+IDAgPyAxIDogMCkgKyAodGhpcy5zZWxlY3RhYmxlID8gMSA6IDApO1xuICB9XG5cbiAgZ2V0IGRldGFpbEhpZGVTZWxlY3QoKSB7XG4gICAgY29uc3QgbWFzdGVyRGV0YWlsID0gdGhpcy5jb2x1bW5NYXN0ZXJEZXRhaWw7XG4gICAgcmV0dXJuIG1hc3RlckRldGFpbCAmJiBtYXN0ZXJEZXRhaWwuZGV0YWlsID8gbWFzdGVyRGV0YWlsLmRldGFpbC5oaWRlU2VsZWN0IDogZmFsc2U7XG4gIH1cblxuICBnZXQgaGFzVmlzaWJsZUFjdGlvbnMoKSB7XG4gICAgcmV0dXJuICEhdGhpcy52aXNpYmxlQWN0aW9ucy5sZW5ndGg7XG4gIH1cblxuICBnZXQgZmlyc3RBY3Rpb24oKTogUG9UYWJsZUFjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZUFjdGlvbnMgJiYgdGhpcy52aXNpYmxlQWN0aW9uc1swXTtcbiAgfVxuXG4gIGdldCBoYXNGb290ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzSXRlbXMgJiYgdGhpcy5oYXNWaXNpYmxlU3VidGl0bGVDb2x1bW5zO1xuICB9XG5cbiAgZ2V0IGhhc01hc3RlckRldGFpbENvbHVtbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5oYXNNYWluQ29sdW1ucyAmJiB0aGlzLmhhc0l0ZW1zICYmICF0aGlzLmhpZGVEZXRhaWwgJiYgISEodGhpcy5jb2x1bW5NYXN0ZXJEZXRhaWwgfHwgdGhpcy5oYXNSb3dUZW1wbGF0ZSlcbiAgICApO1xuICB9XG5cbiAgZ2V0IGhhc1Jvd1RlbXBsYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMudGFibGVSb3dUZW1wbGF0ZTtcbiAgfVxuXG4gIGdldCBoYXNTZWxlY3RhYmxlQ29sdW1uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGFibGUgJiYgdGhpcy5oYXNJdGVtcyAmJiB0aGlzLmhhc01haW5Db2x1bW5zO1xuICB9XG5cbiAgZ2V0IGhhc1ZhbGlkQ29sdW1ucygpIHtcbiAgICByZXR1cm4gISF0aGlzLnZhbGlkQ29sdW1ucy5sZW5ndGg7XG4gIH1cblxuICBnZXQgaGFzVmlzaWJsZVN1YnRpdGxlQ29sdW1ucygpIHtcbiAgICByZXR1cm4gdGhpcy5zdWJ0aXRsZUNvbHVtbnMuc29tZShjb2x1bW4gPT4gY29sdW1uLnZpc2libGUgIT09IGZhbHNlKTtcbiAgfVxuXG4gIGdldCBpc1NpbmdsZUFjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy52aXNpYmxlQWN0aW9ucy5sZW5ndGggPT09IDE7XG4gIH1cblxuICBnZXQgaXNEcmFnZ2FibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZHJhZ2dhYmxlO1xuICB9XG5cbiAgcHVibGljIGdldCBpbnZlcnNlT2ZUcmFuc2xhdGlvbigpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy52aWV3UG9ydCB8fCAhdGhpcy52aWV3UG9ydFsnX3JlbmRlcmVkQ29udGVudE9mZnNldCddKSB7XG4gICAgICByZXR1cm4gJy0wcHgnO1xuICAgIH1cblxuICAgIGNvbnN0IG9mZnNldCA9IHRoaXMudmlld1BvcnRbJ19yZW5kZXJlZENvbnRlbnRPZmZzZXQnXTtcblxuICAgIHJldHVybiBgLSR7b2Zmc2V0fXB4YDtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaWRSYWRpbyA9IGBwby1yYWRpby0ke3V1aWQoKX1gO1xuICB9XG5cbiAgY2hhbmdlSGVhZGVyV2lkdGgoKSB7XG4gICAgaWYgKHRoaXMubm9Db2x1bW5zSGVhZGVyKSB7XG4gICAgICB0aGlzLmhlYWRlcldpZHRoID0gdGhpcy5ub0NvbHVtbnNIZWFkZXI/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIHRoaXMuY2hhbmdlSGVhZGVyV2lkdGgoKTtcbiAgICB0aGlzLmNoYW5nZVNpemVMb2FkaW5nKCk7XG4gICAgdGhpcy5hcHBseUZpeGVkQ29sdW1ucygpO1xuICB9XG5cbiAgc2hvd01vcmVJbmZpbml0ZVNjcm9sbCh7IHRhcmdldCB9KTogdm9pZCB7XG4gICAgY29uc3Qgc2Nyb2xsUG9zaXRpb24gPSB0YXJnZXQub2Zmc2V0SGVpZ2h0ICsgdGFyZ2V0LnNjcm9sbFRvcDtcbiAgICBpZiAoIXRoaXMuc2hvd01vcmVEaXNhYmxlZCAmJiBzY3JvbGxQb3NpdGlvbiA+PSB0YXJnZXQuc2Nyb2xsSGVpZ2h0ICogKHRoaXMuaW5maW5pdGVTY3JvbGxEaXN0YW5jZSAvIDExMCkpIHtcbiAgICAgIHRoaXMub25TaG93TW9yZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nRG9DaGVjaygpIHtcbiAgICB0aGlzLmFwcGx5Rml4ZWRDb2x1bW5zKCk7XG4gICAgdGhpcy5jaGVja0NoYW5nZXNJdGVtcygpO1xuICAgIHRoaXMudmVyaWZ5Q2FsY3VsYXRlSGVpZ2h0VGFibGVDb250YWluZXIoKTtcblxuICAgIC8vIFBlcm1pdGUgcXVlIG9zIGNhYmXDp2FsaG9zIHNlamFtIGNhbGN1bGFkb3MgbmEgcHJpbWVpcmEgdmV6IHF1ZSBvIGNvbXBvbmVudGUgdG9ybmEtc2Ugdmlzw612ZWwsXG4gICAgLy8gZXZpdGFuZG8gY29tIGlzc28sIHByb2JsZW1hcyBjb20gVGFicyBvdSBEaXZzIHF1ZSBpbmljaWVtIGVzY29uZGlkYXMuXG4gICAgaWYgKHRoaXMudGFibGVXcmFwcGVyRWxlbWVudD8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCAmJiAhdGhpcy52aXNpYmxlRWxlbWVudCAmJiB0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICB0aGlzLmRlYm91bmNlUmVzaXplKCk7XG4gICAgICB0aGlzLmNoZWNrSW5maW5pdGVTY3JvbGwoKTtcbiAgICAgIHRoaXMudmlzaWJsZUVsZW1lbnQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMucmVtb3ZlTGlzdGVuZXJzKCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25TZXJ2aWNlPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcmVzcG9uc8OhdmVsIHBvciByZWFsaXphciBidXNjYSBubyBzZXJ2acOnbyBkZSBkYWRvcyBwb2RlbmRvIGluZm9ybWFyIGZpbHRyb3MgZSBjb20gbyByZXRvcm5vLCBhdHVhbGl6YSBhIHRhYmVsYS5cbiAgICpcbiAgICogQ2FzbyBuw6NvIHNlamEgaW5mb3JtYWRvIHBhcsOibWV0cm8sIG5hZGEgc2Vyw6EgYWRpY2lvbmFkbyBhbyBHRVQsIGNvbmZvcm1lIGFiYWl4bzpcbiAgICogYGBgXG4gICAqIHVybCArID9wYWdlPTEmcGFnZVNpemU9MTBcbiAgICogYGBgXG4gICAqID4gT2JzOiBvcyBwYXLDom1ldHJvcyBgcGFnZWAgZSBgcGFnZVNpemVgIHNlbXByZSBzZXLDo28gY2hhbWFkb3MgaW5kZXBlbmRlbnRlIGRlIHNlciBlbnZpYWRvcyBvdXRyb3MgcGFyw6JtZXRyb3MuXG4gICAqXG4gICAqIENhc28gc2VqYW0gaW5mb3JtYWRvcyBvcyBwYXLDom1ldHJvcyBgeyBuYW1lOiAnSk9ITicsIGFnZTogJzIzJyB9YCwgdG9kb3Mgc2Vyw6NvIGFkaWNpb25hZG9zIGFvIEdFVCwgY29uZm9ybWUgYWJhaXhvOlxuICAgKiBgYGBcbiAgICogdXJsICsgP3BhZ2U9MSZwYWdlU2l6ZT0xMCZuYW1lPUpPSE4mYWdlPTIzXG4gICAqIGBgYFxuICAgKlxuICAgKiBAcGFyYW0geyB7IGtleTogdmFsdWUgfSB9IHF1ZXJ5UGFyYW1zIEZvcm1hdG8gZG8gb2JqZXRvIGEgc2VyIGVudmlhZG8uXG4gICAqID4gUG9kZSBzZXIgdXRpbGl6YWRhIHF1YWxxdWVyIHN0cmluZyBjb21vIGtleSwgZSBxdWFscXVlciBzdHJpbmcgb3UgbnVtYmVyIGNvbW8gdmFsdWUuXG4gICAqL1xuICBhcHBseUZpbHRlcnMocXVlcnlQYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IFF1ZXJ5UGFyYW1zVHlwZSB9KSB7XG4gICAgdGhpcy5wYWdlID0gMTtcbiAgICB0aGlzLmluaXRpYWxpemVEYXRhKHF1ZXJ5UGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmljYSBzZSBjb2x1bW5zIHBvc3N1ZW0gYSBwcm9wcmllZGFkZSB3aWR0aC5cbiAgICovXG4gIGFwcGx5Rml4ZWRDb2x1bW5zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5jb2x1bW5zLnNvbWUoY29sdW1uID0+ICFjb2x1bW4ud2lkdGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcXVlIGNvbGFwc2EgdW1hIGxpbmhhIGNvbSBkZXRhbGhlIHF1YW5kbyBleGVjdXRhZGEuXG4gICAqXG4gICAqIEBwYXJhbSB7IG51bWJlciB9IHJvd0luZGV4IMONbmRpY2UgZGEgbGluaGEgcXVlIHNlcsOhIGNvbGFwc2FkYS5cbiAgICogPiBBbyByZW9yZGVuYXIgb3MgZGFkb3MgZGEgdGFiZWxhLCBvIHZhbG9yIGNvbnRpZG8gbmVzdGUgw61uZGljZSBzZXLDoSBhbHRlcmFkbyBjb25mb3JtZSBhIG9yZGVuYcOnw6NvLlxuICAgKi9cbiAgY29sbGFwc2Uocm93SW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuc2V0U2hvd0RldGFpbChyb3dJbmRleCwgZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcXVlIGV4cGFuZGUgdW1hIGxpbmhhIGNvbSBkZXRhbGhlIHF1YW5kbyBleGVjdXRhZGEuXG4gICAqXG4gICAqIEBwYXJhbSB7IG51bWJlciB9IHJvd0luZGV4IMONbmRpY2UgZGEgbGluaGEgcXVlIHNlcsOhIGV4cGFuZGlkYS5cbiAgICogPiBBbyByZW9yZGVuYXIgb3MgZGFkb3MgZGEgdGFiZWxhLCBvIHZhbG9yIGNvbnRpZG8gbmVzdGUgw61uZGljZSBzZXLDoSBhbHRlcmFkbyBjb25mb3JtZSBhIG9yZGVuYcOnw6NvLlxuICAgKi9cbiAgZXhwYW5kKHJvd0luZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnNldFNob3dEZXRhaWwocm93SW5kZXgsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldG9ybmEgYXMgbGluaGFzIGRvIGBwby10YWJsZWAgcXVlIGVzdMOjbyBzZWxlY2lvbmFkYXMuXG4gICAqL1xuICBnZXRTZWxlY3RlZFJvd3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMuZmlsdGVyKGl0ZW0gPT4gaXRlbS4kc2VsZWN0ZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldG9ybmEgYXMgbGluaGFzIGRvIGBwby10YWJsZWAgcXVlIG7Do28gZXN0w6NvIHNlbGVjaW9uYWRhcy5cbiAgICovXG4gIGdldFVuc2VsZWN0ZWRSb3dzKCkge1xuICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcihpdGVtID0+ICFpdGVtLiRzZWxlY3RlZCk7XG4gIH1cblxuICAvKipcbiAgICogRGVzbWFyY2EgYXMgbGluaGFzIHF1ZSBlc3TDo28gc2VsZWNpb25hZGFzLlxuICAgKi9cbiAgdW5zZWxlY3RSb3dzKCkge1xuICAgIGNvbnN0IGNvbHVtbkRldGFpbCA9IHRoaXMubmFtZUNvbHVtbkRldGFpbDtcblxuICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGNvbnN0IGRldGFpbEl0ZW1zID0gY29sdW1uRGV0YWlsID8gaXRlbVtjb2x1bW5EZXRhaWxdIDogbnVsbDtcblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGV0YWlsSXRlbXMpKSB7XG4gICAgICAgIGRldGFpbEl0ZW1zLmZvckVhY2goZGV0YWlsSXRlbSA9PiB7XG4gICAgICAgICAgZGV0YWlsSXRlbS4kc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGl0ZW0uJHNlbGVjdGVkID0gZmFsc2U7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNlbGVjdEFsbCA9IGZhbHNlO1xuICB9XG5cbiAgY2hlY2tEaXNhYmxlZChyb3csIGNvbHVtbjogUG9UYWJsZUNvbHVtbikge1xuICAgIHJldHVybiBjb2x1bW4uZGlzYWJsZWQgPyBjb2x1bW4uZGlzYWJsZWQocm93KSA6IGZhbHNlO1xuICB9XG5cbiAgY29udGFpbnNNYXN0ZXJEZXRhaWwocm93KSB7XG4gICAgcmV0dXJuIHJvd1t0aGlzLm5hbWVDb2x1bW5EZXRhaWxdICYmIHJvd1t0aGlzLm5hbWVDb2x1bW5EZXRhaWxdLmxlbmd0aDtcbiAgfVxuXG4gIGV4ZWN1dGVUYWJsZUFjdGlvbihyb3c6IGFueSwgdGFibGVBY3Rpb246IGFueSkge1xuICAgIGlmICghcm93LmRpc2FibGVkICYmICF0aGlzLnZhbGlkYXRlVGFibGVBY3Rpb24ocm93LCB0YWJsZUFjdGlvbikpIHtcbiAgICAgIHRhYmxlQWN0aW9uLmFjdGlvbihyb3cpO1xuICAgICAgdGhpcy50b2dnbGVSb3dBY3Rpb24ocm93KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVzbWFyY2EgdW1hIGxpbmhhIHF1ZSBlc3TDoSBzZWxlY2lvbmFkYS5cbiAgICovXG4gIHVuc2VsZWN0Um93SXRlbShpdGVtZm46IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCAoKGl0ZW0pID0+IGJvb2xlYW4pKSB7XG4gICAgdGhpcy50b2dnbGVTZWxlY3QoaXRlbWZuLCBmYWxzZSk7XG5cbiAgICBpZiAodGhpcy5pdGVtcy5ldmVyeShpdGVtID0+ICFpdGVtLiRzZWxlY3RlZCkpIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VsZWNpb25hIHVtYSBsaW5oYSBkbyAncG8tdGFibGUnLlxuICAgKi9cbiAgc2VsZWN0Um93SXRlbShpdGVtZm46IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCAoKGl0ZW0pID0+IGJvb2xlYW4pKSB7XG4gICAgdGhpcy50b2dnbGVTZWxlY3QoaXRlbWZuLCB0cnVlKTtcblxuICAgIGlmICh0aGlzLml0ZW1zLmV2ZXJ5KGl0ZW0gPT4gaXRlbS4kc2VsZWN0ZWQpKSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kbyByZXNwb25zw6F2ZWwgcGVsYSBleGNsdXPDo28gZGUgaXRlbnMgZW0gbG90ZS5cbiAgICogQ2FzbyBhIHRhYmVsYSBlc3RlamEgZXhlY3V0YW5kbyBhIHByb3ByaWVkYWRlIGBwLXNlcnZpY2UtZGVsZXRlYCwgc2Vyw6EgbmVjZXNzw6FyaW8gZXhjbHVpciAxIGl0ZW0gcG9yIHZlei5cbiAgICpcbiAgICogQW8gdXRpbGl6YXIgYHAtc2VydmljZS1kZWxldGVgIG1hcyBzZW0gYSBwcm9wcmllZGFkZSBgcC1zZXJ2aWNlLWFwaWAsIHNlcsOhIHJlc3BvbnNhYmlsaWRhZGUgZG8gdXN1w6FyaW8gbyB0cmF0YW1lbnRvXG4gICAqIGFww7NzIGEgcmVxdWlzacOnw6NvIERFTEVURSBzZXIgZXhlY3V0YWRhLlxuICAgKlxuICAgKiBDYXNvIGEgdGFiZWxhIHV0aWxpemUgYHAtaGVpZ2h0YCBlIGVzdGVqYSBzZW0gc2VydmnDp28sIMOpIG5lY2Vzc8OhcmlvIGEgcmVhdHJpYnVpw6fDo28gZG9zIGl0ZW5zIHV0aWxpemFuZG8gbyBldmVudG8gYChwLWRlbGV0ZS1pdGVtcylgLCBwb3IgZXhlbXBsbzpcbiAgICpcbiAgICogYGBgXG4gICAqPHBvLXRhYmxlXG4gICAqICAocC1kZWxldGUtaXRlbXMpPVwiaXRlbXMgPSAkZXZlbnRcIlxuICAgKiA+XG4gICAqPC9wby10YWJsZT5cbiAgICogYGBgXG4gICAqL1xuICBkZWxldGVJdGVtcygpIHtcbiAgICBjb25zdCBuZXdJdGVtcyA9IFsuLi50aGlzLml0ZW1zXTtcbiAgICBjb25zdCBuZXdJdGVtc0ZpbHRlcmVkID0gWy4uLm5ld0l0ZW1zXS5maWx0ZXIoaXRlbSA9PiAhaXRlbS4kc2VsZWN0ZWQpO1xuXG4gICAgaWYgKCF0aGlzLnNlcnZpY2VEZWxldGVBcGkpIHtcbiAgICAgIHRoaXMuZGVsZXRlSXRlbXNMb2NhbChuZXdJdGVtcywgbmV3SXRlbXNGaWx0ZXJlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVsZXRlSXRlbXNTZXJ2aWNlKG5ld0l0ZW1zRmlsdGVyZWQpO1xuICAgIH1cbiAgfVxuXG4gIGZvcm1hdE51bWJlcih2YWx1ZTogYW55LCBmb3JtYXQ6IHN0cmluZykge1xuICAgIGlmICghZm9ybWF0KSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKHZhbHVlLCBmb3JtYXQpO1xuICB9XG5cbiAgZ2V0Q2VsbERhdGEocm93OiBhbnksIGNvbHVtbjogUG9UYWJsZUNvbHVtbik6IGFueSB7XG4gICAgY29uc3QgYXJyYXlQcm9wZXJ0eSA9IGNvbHVtbi5wcm9wZXJ0eS5zcGxpdCgnLicpO1xuICAgIGlmIChhcnJheVByb3BlcnR5Lmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbnN0IG5lc3RlZFByb3BlcnRpZXMgPSBhcnJheVByb3BlcnR5O1xuICAgICAgbGV0IHZhbHVlOiBhbnkgPSByb3c7XG4gICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIG5lc3RlZFByb3BlcnRpZXMpIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZVtwcm9wZXJ0eV0gfHwgdmFsdWVbcHJvcGVydHldID09PSAwID8gdmFsdWVbcHJvcGVydHldIDogJyc7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByb3dbY29sdW1uLnByb3BlcnR5XTtcbiAgICB9XG4gIH1cblxuICBnZXRCb29sZWFuTGFiZWwocm93VmFsdWU6IGFueSwgY29sdW1uQm9vbGVhbjogUG9UYWJsZUNvbHVtbik6IHN0cmluZyB7XG4gICAgaWYgKHJvd1ZhbHVlIHx8IHJvd1ZhbHVlID09PSBmYWxzZSB8fCByb3dWYWx1ZSA9PT0gMCkge1xuICAgICAgcm93VmFsdWUgPSBjb252ZXJ0VG9Cb29sZWFuKHJvd1ZhbHVlKTtcblxuICAgICAgaWYgKGNvbHVtbkJvb2xlYW4uYm9vbGVhbikge1xuICAgICAgICByZXR1cm4gcm93VmFsdWUgPyBjb2x1bW5Cb29sZWFuLmJvb2xlYW4udHJ1ZUxhYmVsIHx8ICdTaW0nIDogY29sdW1uQm9vbGVhbi5ib29sZWFuLmZhbHNlTGFiZWwgfHwgJ07Do28nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHJvd1ZhbHVlID8gJ1NpbScgOiAnTsOjbyc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvd1ZhbHVlO1xuICB9XG5cbiAgZ2V0Q29sdW1uSWNvbnMocm93OiBhbnksIGNvbHVtbjogUG9UYWJsZUNvbHVtbikge1xuICAgIGNvbnN0IHJvd0ljb25zID0gdGhpcy5nZXRDZWxsRGF0YShyb3csIGNvbHVtbik7XG5cbiAgICBpZiAoY29sdW1uLmljb25zKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyb3dJY29ucykpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWVyZ2VDdXN0b21JY29ucyhyb3dJY29ucywgY29sdW1uLmljb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmRDdXN0b21JY29uKHJvd0ljb25zLCBjb2x1bW4pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByb3dJY29ucztcbiAgfVxuXG4gIGdldENvbHVtbkxhYmVsKHJvdzogYW55LCBjb2x1bW5MYWJlbDogUG9UYWJsZUNvbHVtbik6IFBvVGFibGVDb2x1bW5MYWJlbCB7XG4gICAgcmV0dXJuIGNvbHVtbkxhYmVsLmxhYmVscy5maW5kKGxhYmVsSXRlbSA9PiB0aGlzLmdldENlbGxEYXRhKHJvdywgY29sdW1uTGFiZWwpID09PSBsYWJlbEl0ZW0udmFsdWUpO1xuICB9XG5cbiAgZ2V0U3VidGl0bGVDb2x1bW4ocm93OiBhbnksIHN1YnRpdGxlQ29sdW1uOiBQb1RhYmxlQ29sdW1uKTogUG9UYWJsZVN1YnRpdGxlQ29sdW1uIHtcbiAgICByZXR1cm4gc3VidGl0bGVDb2x1bW4uc3VidGl0bGVzLmZpbmQoc3VidGl0bGVJdGVtID0+IHRoaXMuZ2V0Q2VsbERhdGEocm93LCBzdWJ0aXRsZUNvbHVtbikgPT09IHN1YnRpdGxlSXRlbS52YWx1ZSk7XG4gIH1cblxuICBpc1Nob3dNYXN0ZXJEZXRhaWwocm93KSB7XG4gICAgcmV0dXJuIChcbiAgICAgICF0aGlzLmhpZGVEZXRhaWwgJiZcbiAgICAgIHRoaXMubmFtZUNvbHVtbkRldGFpbCAmJlxuICAgICAgcm93LiRzaG93RGV0YWlsICYmXG4gICAgICB0aGlzLmNvbnRhaW5zTWFzdGVyRGV0YWlsKHJvdykgJiZcbiAgICAgICF0aGlzLmhhc1Jvd1RlbXBsYXRlXG4gICAgKTtcbiAgfVxuXG4gIGlzU2hvd1Jvd1RlbXBsYXRlKHJvdywgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnRhYmxlUm93VGVtcGxhdGUgJiYgdGhpcy50YWJsZVJvd1RlbXBsYXRlLnBvVGFibGVSb3dUZW1wbGF0ZVNob3cpIHtcbiAgICAgIHJldHVybiB0aGlzLnRhYmxlUm93VGVtcGxhdGUucG9UYWJsZVJvd1RlbXBsYXRlU2hvdyhyb3csIGluZGV4KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIG9uQ2xpY2tMaW5rKGV2ZW50LCByb3csIGNvbHVtbjogUG9UYWJsZUNvbHVtbikge1xuICAgIGlmICghdGhpcy5jaGVja0Rpc2FibGVkKHJvdywgY29sdW1uKSkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgb25DaGFuZ2VWaXNpYmxlQ29sdW1ucyhjb2x1bW5zOiBBcnJheTxzdHJpbmc+KSB7XG4gICAgdGhpcy5jaGFuZ2VWaXNpYmxlQ29sdW1ucy5lbWl0KGNvbHVtbnMpO1xuICB9XG5cbiAgb25Db2x1bW5SZXN0b3JlTWFuYWdlcih2YWx1ZTogQXJyYXk8U3RyaW5nPikge1xuICAgIHRoaXMuY29sdW1uUmVzdG9yZU1hbmFnZXIuZW1pdCh2YWx1ZSk7XG4gIH1cblxuICBvblZpc2libGVDb2x1bW5zQ2hhbmdlKGNvbHVtbnM6IEFycmF5PFBvVGFibGVDb2x1bW4+KSB7XG4gICAgdGhpcy5jb2x1bW5zID0gY29sdW1ucztcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHRvb2x0aXBNb3VzZUVudGVyKGV2ZW50OiBhbnksIGNvbHVtbj86IFBvVGFibGVDb2x1bW4sIHJvdz86IGFueSkge1xuICAgIHRoaXMudG9vbHRpcFRleHQgPSB1bmRlZmluZWQ7XG5cbiAgICBpZiAoZXZlbnQudGFyZ2V0Lm9mZnNldFdpZHRoIDwgZXZlbnQudGFyZ2V0LnNjcm9sbFdpZHRoICYmIGV2ZW50LnRhcmdldC5pbm5lclRleHQudHJpbSgpKSB7XG4gICAgICByZXR1cm4gKHRoaXMudG9vbHRpcFRleHQgPSBldmVudC50YXJnZXQuaW5uZXJUZXh0KTtcbiAgICB9XG5cbiAgICBpZiAoY29sdW1uKSB7XG4gICAgICB0aGlzLmNoZWNraW5nSWZDb2x1bW5IYXNUb29sdGlwKGNvbHVtbiwgcm93KTtcbiAgICB9XG4gIH1cblxuICB0b29sdGlwTW91c2VMZWF2ZSgpIHtcbiAgICB0aGlzLnRvb2x0aXBUZXh0ID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgdG9nZ2xlUG9wdXAocm93LCB0YXJnZXRSZWYpIHtcbiAgICB0aGlzLnBvcHVwVGFyZ2V0ID0gdGFyZ2V0UmVmO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgdGhpcy5wb1BvcHVwQ29tcG9uZW50LnRvZ2dsZShyb3cpO1xuICB9XG5cbiAgdHJhY2tCeShpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgdmFsaWRhdGVUYWJsZUFjdGlvbihyb3c6IGFueSwgdGFibGVBY3Rpb246IGFueSkge1xuICAgIGlmICh0eXBlb2YgdGFibGVBY3Rpb24uZGlzYWJsZWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB0YWJsZUFjdGlvbi5kaXNhYmxlZChyb3cpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGFibGVBY3Rpb24uZGlzYWJsZWQ7XG4gICAgfVxuICB9XG5cbiAgb25PcGVuQ29sdW1uTWFuYWdlcigpIHtcbiAgICB0aGlzLmxhc3RWaXNpYmxlQ29sdW1uc1NlbGVjdGVkID0gWy4uLnRoaXMuY29sdW1uc107XG4gIH1cblxuICBvbkZpbHRlcmVkSXRlbXNDaGFuZ2UoaXRlbXM6IEFycmF5PGFueT4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zb3J0ZWRDb2x1bW4ucHJvcGVydHkpIHtcbiAgICAgIHRoaXMuc29ydEFycmF5KHRoaXMuc29ydGVkQ29sdW1uLnByb3BlcnR5LCB0aGlzLnNvcnRlZENvbHVtbi5hc2NlbmRpbmcsIGl0ZW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJlZEl0ZW1zID0gaXRlbXM7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcXVlIHJlbW92ZSB1bSBpdGVtIGRhIHRhYmVsYS5cbiAgICpcbiAgICogQHBhcmFtIHsgbnVtYmVyIHwgeyBrZXk6IHZhbHVlIH0gfSBpdGVtIMONbmRpY2UgZGEgbGluaGEgb3UgbyBpdGVtIHF1ZSBzZXLDoSByZW1vdmlkby5cbiAgICogPiBBbyByZW1vdmVyIG8gaXRlbSwgYSBsaW5oYSBxdWUgbyByZXByZXNlbnRhIHNlcsOhIGV4Y2x1w61kYSBkYSB0YWJlbGEuXG4gICAqL1xuICByZW1vdmVJdGVtKGl0ZW06IG51bWJlciB8IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcbiAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuaXRlbXMuZmlsdGVyKGZpbHRlckl0ZW0gPT4gZmlsdGVySXRlbSAhPT0gaXRlbSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgaXRlbSA9PT0gJ251bWJlcicpIHtcbiAgICAgIGNvbnN0IGluZGV4OiBudW1iZXIgPSBpdGVtO1xuICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHF1ZSBhdHVhbGl6YSB1bSBpdGVtIGRhIHRhYmVsYS5cbiAgICpcbiAgICogQHBhcmFtIHsgbnVtYmVyIHwgeyBrZXk6IHZhbHVlIH0gfSBpdGVtIMONbmRpY2UgZGEgbGluaGEgb3UgbyBpdGVtIHF1ZSBzZXLDoSBhdHVhbGl6YWRvLlxuICAgKiBAcGFyYW0geyB7IGtleTogdmFsdWUgfSB9IHVwZGF0ZWRJdGVtIEl0ZW0gcXVlIGZvaSBhdHVhbGl6YWRvLlxuICAgKiA+IEFvIGF0dWFsaXphciBvIGl0ZW0sIGEgaW5mb3JtYcOnw6NvIHNlcsOhIGFsdGVyYWRhIG5hIHRhYmVsYS5cbiAgICovXG4gIHVwZGF0ZUl0ZW0oaXRlbTogbnVtYmVyIHwgeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgdXBkYXRlZEl0ZW06IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcbiAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdudW1iZXInKSB7XG4gICAgICB0aGlzLml0ZW1zLnNwbGljZShpdGVtLCAxLCB1cGRhdGVkSXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pdGVtcy5maW5kSW5kZXgoaW5kZXhJdGVtID0+IGluZGV4SXRlbSA9PT0gaXRlbSk7XG4gICAgICB0aGlzLml0ZW1zLnNwbGljZShpbmRleCwgMSwgdXBkYXRlZEl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPEFycmF5PHN0cmluZz4+KSB7XG4gICAgaWYgKCF0aGlzLm1haW5Db2x1bW5zW2V2ZW50LmN1cnJlbnRJbmRleF0uZml4ZWQpIHtcbiAgICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLm1haW5Db2x1bW5zLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuXG4gICAgICBpZiAodGhpcy5oaWRlQ29sdW1uc01hbmFnZXIgPT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMubmV3T3JkZXJDb2x1bW5zID0gdGhpcy5tYWluQ29sdW1ucztcbiAgICAgICAgY29uc3QgZGV0YWlsID0gdGhpcy5jb2x1bW5zLmZpbHRlcihpdGVtID0+IGl0ZW0ucHJvcGVydHkgPT09ICdkZXRhaWwnKVswXTtcblxuICAgICAgICBpZiAoZGV0YWlsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLm5ld09yZGVyQ29sdW1ucy5wdXNoKGRldGFpbCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbHVtbnMubWFwKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGlmICghaXRlbS52aXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLm5ld09yZGVyQ29sdW1ucy5zcGxpY2UoaW5kZXgsIDAsIGl0ZW0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY29sdW1ucyA9IHRoaXMubmV3T3JkZXJDb2x1bW5zO1xuXG4gICAgICAgIHRoaXMub25WaXNpYmxlQ29sdW1uc0NoYW5nZSh0aGlzLm5ld09yZGVyQ29sdW1ucyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFRlbXBsYXRlKGNvbHVtbjogUG9UYWJsZUNvbHVtbik6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgIGNvbnN0IHRlbXBsYXRlOiBQb1RhYmxlQ29sdW1uVGVtcGxhdGVEaXJlY3RpdmUgPSB0aGlzLnRhYmxlQ29sdW1uVGVtcGxhdGVzLmZpbmQoXG4gICAgICB0YWJsZUNvbHVtblRlbXBsYXRlID0+IHRhYmxlQ29sdW1uVGVtcGxhdGUudGFyZ2V0UHJvcGVydHkgPT09IGNvbHVtbi5wcm9wZXJ0eVxuICAgICk7XG4gICAgaWYgKCF0ZW1wbGF0ZSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgTsOjbyBmb2kgcG9zc8OtdmVsIGVuY29udHJhciBvIHRlbXBsYXRlIHBhcmEgYSBjb2x1bmE6ICR7Y29sdW1uLnByb3BlcnR5fSwgcG9yIGdlbnRpbGV6YSBpbmZvcm1lIGEgcHJvcHJpZWRhZGUgW3AtcHJvcGVydHldYFxuICAgICAgKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGVtcGxhdGUudGVtcGxhdGVSZWY7XG4gIH1cblxuICBwdWJsaWMgZ2V0V2lkdGhDb2x1bW5NYW5hZ2VyKCkge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbk1hbmFnZXI/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29sdW1uV2lkdGhBY3Rpb25zTGVmdCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5BY3Rpb25MZWZ0Py5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICB9XG5cbiAgcHVibGljIGhhc1NvbWVGaXhlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zLnNvbWUoaXRlbSA9PiBpdGVtLmZpeGVkID09PSB0cnVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjYWxjdWxhdGVIZWlnaHRUYWJsZUNvbnRhaW5lcihoZWlnaHQpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcnNlRmxvYXQoaGVpZ2h0KTtcbiAgICB0aGlzLmhlaWdodFRhYmxlQ29udGFpbmVyID0gdmFsdWUgPyB2YWx1ZSAtIHRoaXMuZ2V0SGVpZ2h0VGFibGVGb290ZXIoKSA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLmhlaWdodFRhYmxlVmlydHVhbCA9IHRoaXMuaGVpZ2h0VGFibGVDb250YWluZXIgPyB0aGlzLmhlaWdodFRhYmxlQ29udGFpbmVyIC0gdGhpcy5pdGVtU2l6ZSA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNldFRhYmxlT3BhY2l0eSgxKTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB2ZXJpZnlDYWxjdWxhdGVIZWlnaHRUYWJsZUNvbnRhaW5lcigpIHtcbiAgICBpZiAodGhpcy5oZWlnaHQgJiYgdGhpcy52ZXJpZnlDaGFuZ2VIZWlnaHRJbkZvb3RlcigpKSB7XG4gICAgICB0aGlzLmZvb3RlckhlaWdodCA9IHRoaXMuZ2V0SGVpZ2h0VGFibGVGb290ZXIoKTtcblxuICAgICAgdGhpcy5jYWxjdWxhdGVIZWlnaHRUYWJsZUNvbnRhaW5lcih0aGlzLmhlaWdodCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGNoZWNrSW5maW5pdGVTY3JvbGwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFzSW5maW5pdGVTY3JvbGwoKSkge1xuICAgICAgaWYgKHRoaXMudGFibGVWaXJ0dWFsU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID49IHRoaXMuaGVpZ2h0KSB7XG4gICAgICAgIHRoaXMuaW5jbHVkZUluZmluaXRlU2Nyb2xsKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmluZmluaXRlU2Nyb2xsID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFuZ2VzQWZ0ZXJEZWxldGUobmV3SXRlbXNGaWx0ZXJlZDogQXJyYXk8YW55Pikge1xuICAgIHRoaXMuc2VsZWN0QWxsID0gZmFsc2U7XG4gICAgdGhpcy5zZXRTZWxlY3RlZExpc3QoKTtcbiAgICB0aGlzLm1vZGFsRGVsZXRlLmNsb3NlKCk7XG4gICAgdGhpcy5wb05vdGlmaWNhdGlvbi5zdWNjZXNzKHRoaXMubGl0ZXJhbHMuZGVsZXRlU3VjY2Vzc2Z1bCk7XG4gICAgdGhpcy5ldmVudERlbGV0ZS5lbWl0KG5ld0l0ZW1zRmlsdGVyZWQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNoYW5nZVNpemVMb2FkaW5nKCkge1xuICAgIGNvbnN0IHRhYmxlSGVpZ2h0ID0gdGhpcy50YWJsZVdyYXBwZXJFbGVtZW50Py5uYXRpdmVFbGVtZW50Py5vZmZzZXRIZWlnaHQ7XG5cbiAgICBpZiAodGFibGVIZWlnaHQgPD0gMTUwKSB7XG4gICAgICB0aGlzLnNpemVMb2FkaW5nID0gJ3NtJztcbiAgICB9IGVsc2UgaWYgKHRhYmxlSGVpZ2h0ID4gMTUwICYmIHRhYmxlSGVpZ2h0IDwgMjYwKSB7XG4gICAgICB0aGlzLnNpemVMb2FkaW5nID0gJ21kJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaXplTG9hZGluZyA9ICdsZyc7XG4gICAgfVxuXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrQ2hhbmdlc0l0ZW1zKCkge1xuICAgIGNvbnN0IGNoYW5nZXNJdGVtcyA9IHRoaXMuZGlmZmVyLmRpZmYodGhpcy5pdGVtcyk7XG5cbiAgICBpZiAoY2hhbmdlc0l0ZW1zICYmIHRoaXMuc2VsZWN0QWxsKSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNJdGVtcyAmJiAhdGhpcy5oYXNDb2x1bW5zICYmIHRoaXMuaGFzSXRlbXMpIHtcbiAgICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuZ2V0RGVmYXVsdENvbHVtbnModGhpcy5pdGVtc1swXSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja2luZ0lmQ29sdW1uSGFzVG9vbHRpcChjb2x1bW4sIHJvdykge1xuICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2xpbmsnICYmIGNvbHVtbi50b29sdGlwICYmICF0aGlzLmNoZWNrRGlzYWJsZWQocm93LCBjb2x1bW4pKSB7XG4gICAgICByZXR1cm4gKHRoaXMudG9vbHRpcFRleHQgPSBjb2x1bW4udG9vbHRpcCk7XG4gICAgfVxuXG4gICAgaWYgKGNvbHVtbi50eXBlID09PSAnbGFiZWwnKSB7XG4gICAgICBjb25zdCBjb2x1bW5MYWJlbCA9IHRoaXMuZ2V0Q29sdW1uTGFiZWwocm93LCBjb2x1bW4pO1xuICAgICAgcmV0dXJuICh0aGlzLnRvb2x0aXBUZXh0ID0gY29sdW1uTGFiZWw/LnRvb2x0aXApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGVib3VuY2VSZXNpemUoKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dFJlc2l6ZSk7XG4gICAgdGhpcy50aW1lb3V0UmVzaXplID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvLyBzaG93IHRoZSB0YWJsZVxuICAgICAgdGhpcy5zZXRUYWJsZU9wYWNpdHkoMSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRlbGV0ZUl0ZW1zTG9jYWwobmV3SXRlbXM6IEFycmF5PGFueT4sIG5ld0l0ZW1zRmlsdGVyZWQ6IEFycmF5PGFueT4pIHtcbiAgICBpZiAodGhpcy5oZWlnaHQpIHtcbiAgICAgIHRoaXMuaXRlbXMgPSBuZXdJdGVtc0ZpbHRlcmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgaW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XG4gICAgICBuZXdJdGVtc1xuICAgICAgICAuc2xpY2UoKVxuICAgICAgICAucmV2ZXJzZSgpXG4gICAgICAgIC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgIGlmIChpdGVtLiRzZWxlY3RlZCkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVJdGVtKGluZGV4KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaW5kZXgtLTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlc0FmdGVyRGVsZXRlKG5ld0l0ZW1zRmlsdGVyZWQpO1xuICAgIHRoaXMub25GaWx0ZXJlZEl0ZW1zQ2hhbmdlKG5ld0l0ZW1zRmlsdGVyZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWxldGVJdGVtc1NlcnZpY2UobmV3SXRlbXNGaWx0ZXJlZDogQXJyYXk8YW55Pikge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uU2VydmljZS5hZGQoXG4gICAgICB0aGlzLmRlZmF1bHRTZXJ2aWNlLmRlbGV0ZUl0ZW0odGhpcy5wYXJhbURlbGV0ZUFwaSwgdGhpcy5pdGVtc1NlbGVjdGVkWzBdW3RoaXMucGFyYW1EZWxldGVBcGldKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiB2YWx1ZSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuaGFzU2VydmljZSkge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRQYXJhbXMgPSB7XG4gICAgICAgICAgICAgIC4uLnRoaXMucGFyYW1zRmlsdGVyLFxuICAgICAgICAgICAgICBwYWdlU2l6ZTogbmV3SXRlbXNGaWx0ZXJlZC5sZW5ndGggKyAxLFxuICAgICAgICAgICAgICBwYWdlOiAxXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uU2VydmljZS5hZGQoXG4gICAgICAgICAgICAgIHRoaXMuZGVmYXVsdFNlcnZpY2UuZ2V0RmlsdGVyZWRJdGVtcyhmaWx0ZXJlZFBhcmFtcykuc3Vic2NyaWJlKGl0ZW1zID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFRhYmxlUmVzcG9uc2VQcm9wZXJ0aWVzKGl0ZW1zKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuaXRlbXMgPSBuZXdJdGVtc0ZpbHRlcmVkO1xuICAgICAgICAgIHRoaXMuY2hhbmdlc0FmdGVyRGVsZXRlKG5ld0l0ZW1zRmlsdGVyZWQpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMucG9Ob3RpZmljYXRpb24uZXJyb3IodGhpcy5saXRlcmFscy5kZWxldGVBcGlFcnJvcik7XG4gICAgICAgICAgdGhpcy5tb2RhbERlbGV0ZS5jbG9zZSgpO1xuICAgICAgICAgIHRoaXMuZXZlbnREZWxldGUuZW1pdCh0aGlzLml0ZW1zKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kQ3VzdG9tSWNvbihyb3dJY29ucywgY29sdW1uOiBQb1RhYmxlQ29sdW1uKSB7XG4gICAgY29uc3QgY3VzdG9tSWNvbiA9IGNvbHVtbi5pY29ucy5maW5kKGljb24gPT4gcm93SWNvbnMgPT09IGljb24udmFsdWUpO1xuICAgIHJldHVybiBjdXN0b21JY29uID8gW2N1c3RvbUljb25dIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRIZWlnaHRUYWJsZUZvb3RlcigpIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZUZvb3RlckVsZW1lbnQgPyB0aGlzLnRhYmxlRm9vdGVyRWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCA6IDA7XG4gIH1cblxuICBwcml2YXRlIGhhc0luZmluaXRlU2Nyb2xsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmluZmluaXRlU2Nyb2xsICYmXG4gICAgICB0aGlzLmhhc0l0ZW1zICYmXG4gICAgICAhdGhpcy5zdWJzY3JpcHRpb25TY3JvbGxFdmVudCAmJlxuICAgICAgdGhpcy5oZWlnaHQgJiZcbiAgICAgIHRoaXMudGFibGVWaXJ0dWFsU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5jbHVkZUluZmluaXRlU2Nyb2xsKCk6IHZvaWQge1xuICAgIHRoaXMuc2Nyb2xsRXZlbnQkID0gdGhpcy5kZWZhdWx0U2VydmljZS5zY3JvbGxMaXN0ZW5lcih0aGlzLnRhYmxlVmlydHVhbFNjcm9sbC5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvblNjcm9sbEV2ZW50ID0gdGhpcy5zY3JvbGxFdmVudCQuc3Vic2NyaWJlKGV2ZW50ID0+IHRoaXMuc2hvd01vcmVJbmZpbml0ZVNjcm9sbChldmVudCkpO1xuXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIG1lcmdlQ3VzdG9tSWNvbnMocm93SWNvbnM6IEFycmF5PHN0cmluZz4sIGN1c3RvbUljb25zOiBBcnJheTxhbnk+KSB7XG4gICAgY29uc3QgbWVyZ2VkSWNvbnMgPSBbXTtcblxuICAgIHJvd0ljb25zLmZvckVhY2goY29sdW1uVmFsdWUgPT4ge1xuICAgICAgY29uc3QgZm91bmRDdXN0b21JY29uID0gY3VzdG9tSWNvbnMuZmluZChcbiAgICAgICAgY3VzdG9tSWNvbiA9PiBjb2x1bW5WYWx1ZSA9PT0gY3VzdG9tSWNvbi5pY29uIHx8IGNvbHVtblZhbHVlID09PSBjdXN0b21JY29uLnZhbHVlXG4gICAgICApO1xuICAgICAgZm91bmRDdXN0b21JY29uID8gbWVyZ2VkSWNvbnMucHVzaChmb3VuZEN1c3RvbUljb24pIDogbWVyZ2VkSWNvbnMucHVzaChjb2x1bW5WYWx1ZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWVyZ2VkSWNvbnM7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUxpc3RlbmVycygpIHtcbiAgICBpZiAodGhpcy5yZXNpemVMaXN0ZW5lcikge1xuICAgICAgdGhpcy5yZXNpemVMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNsaWNrTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMuY2xpY2tMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvblNjcm9sbEV2ZW50KSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvblNjcm9sbEV2ZW50LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRUYWJsZU9wYWNpdHkodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMudGFibGVPcGFjaXR5ID0gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHZlcmlmeUNoYW5nZUhlaWdodEluRm9vdGVyKCkge1xuICAgIHJldHVybiB0aGlzLmZvb3RlckhlaWdodCAhPT0gdGhpcy5nZXRIZWlnaHRUYWJsZUZvb3RlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVTZWxlY3QoY29tcGFyZSwgc2VsZWN0VmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodHlwZW9mIGNvbXBhcmUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaWYgKGl0ZW0gPT09IGNvbXBhcmUpIHtcbiAgICAgICAgICBpdGVtLiRzZWxlY3RlZCA9IHNlbGVjdFZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBpZiAoY29tcGFyZShpdGVtKSkge1xuICAgICAgICAgIGl0ZW0uJHNlbGVjdGVkID0gc2VsZWN0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInBvLXRhYmxlLWFjdGlvbnNcIj5cbiAgPGRpdlxuICAgICNjb2x1bW5CYXRjaEFjdGlvbnNcbiAgICAqbmdJZj1cImhhc1ZhbGlkQ29sdW1ucyAmJiBpdGVtc1NlbGVjdGVkLmxlbmd0aCA+IDAgJiYgIWhpZGVCYXRjaEFjdGlvbnNcIlxuICAgIGNsYXNzPVwicG8tdGFibGUtYWN0aW9ucy1iYXRjaC1hY3Rpb25zXCJcbiAgPlxuICAgIDxkaXYgW25nUGx1cmFsXT1cIml0ZW1zU2VsZWN0ZWQubGVuZ3RoXCIgY2xhc3M9XCJwby10YWJsZS1hY3Rpb25zLWJhdGNoLWFjdGlvbnNfX2xhYmVsXCI+XG4gICAgICA8c3Ryb25nPlxuICAgICAgICA8bmctdGVtcGxhdGUgbmdQbHVyYWxDYXNlPVwiPTBcIj57eyBsaXRlcmFscy5ub0l0ZW0gfX08L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgbmdQbHVyYWxDYXNlPVwiPTFcIj57eyBsaXRlcmFscy5vbmVJdGVtIH19PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIG5nUGx1cmFsQ2FzZT1cIm90aGVyXCI+e3sgaXRlbXNTZWxlY3RlZC5sZW5ndGggfX0ge3sgbGl0ZXJhbHMubXVsdGlwbGVJdGVtcyB9fTwvbmctdGVtcGxhdGU+XG4gICAgICA8L3N0cm9uZz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJwby10YWJsZS1hY3Rpb25zLWJhdGNoLWFjdGlvbnNfX2J1dHRvbnNcIj5cbiAgICAgIDxwby1idXR0b25cbiAgICAgICAgcC1pY29uPVwiSUNPTl9ERUxFVEVcIlxuICAgICAgICBbcC1kYW5nZXJdPVwidHJ1ZVwiXG4gICAgICAgIFtwLWRpc2FibGVkXT1cIml0ZW1zU2VsZWN0ZWQubGVuZ3RoID4gMSAmJiBzZXJ2aWNlRGVsZXRlQXBpICE9PSB1bmRlZmluZWRcIlxuICAgICAgICBbcC1sYWJlbF09XCJsaXRlcmFscy5kZWxldGVcIlxuICAgICAgICAocC1jbGljayk9XCJtb2RhbERlbGV0ZS5vcGVuKClcIlxuICAgICAgPjwvcG8tYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2ICNjb2x1bW5NYW5hZ2VyICpuZ0lmPVwiaGFzVmFsaWRDb2x1bW5zICYmICFoaWRlQ29sdW1uc01hbmFnZXJcIiBjbGFzcz1cInBvLXRhYmxlLWFjdGlvbnMtY29sdW1uLW1hbmFnZXJcIj5cbiAgICA8cG8tYnV0dG9uXG4gICAgICAjY29sdW1uTWFuYWdlclRhcmdldFxuICAgICAgcC1pY29uPVwiSUNPTl9TRVRUSU5HU1wiXG4gICAgICBwLWtpbmQ9XCJ0ZXJ0aWFyeVwiXG4gICAgICBwLXRvb2x0aXAtcG9zaXRpb249XCJsZWZ0XCJcbiAgICAgIFtwLWFyaWEtbGFiZWxdPVwibGl0ZXJhbHMuY29sdW1uc01hbmFnZXJcIlxuICAgICAgW3AtdG9vbHRpcF09XCJsaXRlcmFscy5jb2x1bW5zTWFuYWdlclwiXG4gICAgICAocC1jbGljayk9XCJvbk9wZW5Db2x1bW5NYW5hZ2VyKClcIlxuICAgID48L3BvLWJ1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj1cIiFoaWRlVGFibGVTZWFyY2ggJiYgaGFzVmFsaWRDb2x1bW5zXCIgY2xhc3M9XCJwby10YWJsZS1zZWFyY2hcIj5cbiAgICA8cG8tc2VhcmNoXG4gICAgICBbcC1pdGVtc109XCJpdGVtc1wiXG4gICAgICBbcC1maWx0ZXIta2V5c109XCJmaWx0ZXJlZENvbHVtbnNcIlxuICAgICAgW3AtZmlsdGVyLXR5cGVdPVwiZmlsdGVyVHlwZVwiXG4gICAgICAocC1maWx0ZXJlZC1pdGVtcy1jaGFuZ2UpPVwib25GaWx0ZXJlZEl0ZW1zQ2hhbmdlKCRldmVudClcIlxuICAgID5cbiAgICA8L3BvLXNlYXJjaD5cbiAgPC9kaXY+XG48L2Rpdj5cbjxwby1jb250YWluZXIgKm5nSWY9XCJjb250YWluZXI7IGVsc2UgdGFibGVDb250YWluZXJUZW1wbGF0ZVwiIHAtbm8tcGFkZGluZz5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlQ29udGFpbmVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbjwvcG8tY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI3RhYmxlQ29udGFpbmVyVGVtcGxhdGU+XG4gIDxkaXYgW2NsYXNzLnBvLXRhYmxlLWNvbnRhaW5lci1zdGlja3ldPVwibG9hZGluZ1wiPlxuICAgIDxwby1sb2FkaW5nLW92ZXJsYXkgKm5nSWY9XCJsb2FkaW5nXCIgW3AtdGV4dF09XCJsaXRlcmFscy5sb2FkaW5nRGF0YVwiIFtwLXNpemVdPVwic2l6ZUxvYWRpbmdcIj48L3BvLWxvYWRpbmctb3ZlcmxheT5cbiAgICA8ZGl2IGNsYXNzPVwicG8tdGFibGUtbWFpbi1jb250YWluZXJcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgI3RhYmxlV3JhcHBlclxuICAgICAgICBjbGFzcz1cInBvLXRhYmxlLXdyYXBwZXJcIlxuICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZpeGVkLWNvbHVtbnMtcGl4ZWxzXT1cImFsbENvbHVtbnNXaWR0aFBpeGVsc1wiXG4gICAgICAgIFtzdHlsZS5vcGFjaXR5XT1cInRhYmxlT3BhY2l0eVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJoZWlnaHRcIiBjbGFzcz1cInBvLXRhYmxlLWNvbnRhaW5lclwiIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVpZ2h0VGFibGVDb250YWluZXJcIj5cbiAgICAgICAgICA8ZGl2ICNwb1RhYmxlVGJvZHkgY2xhc3M9XCJwby10YWJsZS1jb250YWluZXItZml4ZWQtaW5uZXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZVZpcnR1YWxTY3JvbGxUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWhlaWdodFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJwby10YWJsZS1mb290ZXJcIiAqbmdJZj1cImhhc0Zvb3RlclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBzdWJ0aXRsZUNvbHVtbnM7IHRyYWNrQnk6IHRyYWNrQnlcIj5cbiAgICAgIDxwby10YWJsZS1zdWJ0aXRsZS1mb290ZXIgW3AtbGl0ZXJhbHNdPVwibGl0ZXJhbHNcIiBbcC1zdWJ0aXRsZXNdPVwiY29sdW1uLnN1YnRpdGxlc1wiPiA8L3BvLXRhYmxlLXN1YnRpdGxlLWZvb3Rlcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIFNob3cgTW9yZSBCdXR0b24gLS0+XG48ZGl2XG4gICpuZ0lmPVwiIWluZmluaXRlU2Nyb2xsXCJcbiAgY2xhc3M9XCJwby1yb3cgcG8tdGFibGUtZm9vdGVyLXNob3ctbW9yZVwiXG4gIFtjbGFzcy5wby1pbnZpc2libGVdPVwic2hvd01vcmUub2JzZXJ2ZXJzLmxlbmd0aCA9PT0gMCAmJiAhaGFzU2VydmljZVwiXG4gICN0YWJsZUZvb3RlclxuPlxuICA8cG8tYnV0dG9uXG4gICAgY2xhc3M9XCJwby1vZmZzZXQteGwtNCBwby1vZmZzZXQtbGctNCBwby1vZmZzZXQtbWQtMyBwby1sZy00IHBvLW1kLTZcIlxuICAgIFtwLWRpc2FibGVkXT1cInNob3dNb3JlRGlzYWJsZWRcIlxuICAgIFtwLWxhYmVsXT1cImxpdGVyYWxzLmxvYWRNb3JlRGF0YVwiXG4gICAgW3AtbG9hZGluZ109XCJsb2FkaW5nU2hvd01vcmVcIlxuICAgIChwLWNsaWNrKT1cIm9uU2hvd01vcmUoKVwiXG4gID5cbiAgPC9wby1idXR0b24+XG48L2Rpdj5cblxuPCEtLSBUYWJsZSBkZWZhdWx0LS0+XG48bmctdGVtcGxhdGUgI3RhYmxlVGVtcGxhdGU+XG4gIDx0YWJsZVxuICAgIGNsYXNzPVwicG8tdGFibGVcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdwby10YWJsZS1pbnRlcmFjdGl2ZSc6IHNlbGVjdGFibGUgfHwgc29ydCxcbiAgICAgICdwby10YWJsZS1zZWxlY3RhYmxlJzogc2VsZWN0YWJsZSxcbiAgICAgICdwby10YWJsZS1zdHJpcGVkJzogc3RyaXBlZCxcbiAgICAgICdwby10YWJsZS1kYXRhLWZpeGVkLWNvbHVtbnMnOiBhcHBseUZpeGVkQ29sdW1ucygpLFxuICAgICAgJ3BvLXRhYmxlLXRleHQtd3JhcC1lbmFibGVkJzogdGV4dFdyYXBcbiAgICB9XCJcbiAgICBbYXR0ci5wLXNwYWNpbmddPVwic3BhY2luZ1wiXG4gID5cbiAgICA8dGhlYWQ+XG4gICAgICA8dHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnbm8taG92ZXInOiBoaWRlU2VsZWN0QWxsLCAncG8tdGFibGUtY29sdW1uLWRyYWcnOiB0aGlzLmlzRHJhZ2dhYmxlIH1cIlxuICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyXT1cIiFoZWlnaHRcIlxuICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXG4gICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPHRoXG4gICAgICAgICAgKm5nSWY9XCJoYXNTZWxlY3RhYmxlQ29sdW1uXCJcbiAgICAgICAgICBbc3R5bGUucG9pbnRlci1ldmVudHNdPVwiaGlkZVNlbGVjdEFsbCA/ICdub25lJyA6ICdhdXRvJ1wiXG4gICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tc2VsZWN0YWJsZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IFtjbGFzcy5wby10YWJsZS1oZWFkZXItZml4ZWQtaW5uZXJdPVwiaGVpZ2h0XCI+XG4gICAgICAgICAgICA8cG8tY2hlY2tib3hcbiAgICAgICAgICAgICAgbmFtZT1cInNlbGVjdEFsbFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiIWhpZGVTZWxlY3RBbGxcIlxuICAgICAgICAgICAgICAocC1jaGFuZ2UpPVwic2VsZWN0QWxsUm93cygpXCJcbiAgICAgICAgICAgICAgW3AtY2hlY2tib3hWYWx1ZV09XCJzZWxlY3RBbGwgPT09IG51bGwgPyAnbWl4ZWQnIDogc2VsZWN0QWxsXCJcbiAgICAgICAgICAgID48L3BvLWNoZWNrYm94PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RoPlxuXG4gICAgICAgIDx0aFxuICAgICAgICAgICpuZ0lmPVwiKGhhc01hc3RlckRldGFpbENvbHVtbiB8fCBoYXNSb3dUZW1wbGF0ZSkgJiYgIWhhc1Jvd1RlbXBsYXRlV2l0aEFycm93RGlyZWN0aW9uUmlnaHRcIlxuICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWNvbHVtbiBwby10YWJsZS1oZWFkZXItbWFzdGVyLWRldGFpbFwiXG4gICAgICAgID48L3RoPlxuXG4gICAgICAgIDwhLS0gQ29sdW5hIGNyaWFkYSBwYXJhIGNhc28gYXMgYcOnw7VlcyBmaXF1ZW0gbm8gbGFkbyBlc3F1ZXJkbyAtLT5cbiAgICAgICAgPHRoXG4gICAgICAgICAgI2NvbHVtbkFjdGlvbkxlZnRcbiAgICAgICAgICAqbmdJZj1cIiFhY3Rpb25SaWdodCAmJiAodmlzaWJsZUFjdGlvbnMubGVuZ3RoID4gMSB8fCBpc1NpbmdsZUFjdGlvbilcIlxuICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItbWFzdGVyLWRldGFpbF09XCIhaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc2luZ2xlLWFjdGlvbl09XCJpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgID48L3RoPlxuXG4gICAgICAgIDx0aCAqbmdJZj1cIiFoYXNNYWluQ29sdW1uc1wiICNub0NvbHVtbnNIZWFkZXIgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItY29sdW1uIHBvLXRleHQtY2VudGVyXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlaWdodDsgdGhlbiBub0NvbHVtbnNXaXRoSGVpZ2h0OyBlbHNlIG5vQ29sdW1uc1dpdGhvdXRIZWlnaHRcIj4gPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdGg+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwidGhpcy5pc0RyYWdnYWJsZSB8fCBoYXNTb21lRml4ZWQoKTsgdGhlbiB0YWJsZURlZmF1bHRUaERyYWdEcm9wOyBlbHNlIHRhYmxlRGVmYXVsdFRoRGVmYXVsdFwiXG4gICAgICAgID5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjdGFibGVEZWZhdWx0VGhEcmFnRHJvcD5cbiAgICAgICAgICA8dGhcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgbWFpbkNvbHVtbnM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIlxuICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZWxsaXBzaXMgcC1lbGVtZW50IHBvLWZyb3plbi1jb2x1bW5cIlxuICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXBvLXRhYmxlLWNvbHVtbi1uYW1lXT1cImNvbHVtbi5sYWJlbCB8fCAoY29sdW1uLnByb3BlcnR5IHwgdGl0bGVjYXNlKSB8IGxvd2VyY2FzZVwiXG4gICAgICAgICAgICBbY2xhc3MucG8tY2xpY2thYmxlXT1cIihzb3J0ICYmIGNvbHVtbi5zb3J0YWJsZSAhPT0gZmFsc2UpIHx8IGhhc1NlcnZpY2VcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAncG8tdGFibGUtaGVhZGVyLXNvcnRlZCc6XG4gICAgICAgICAgICAgICAgc29ydCAmJlxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHNvcnRlZENvbHVtbj8ucHJvcGVydHkpID09PSBKU09OLnN0cmluZ2lmeShjb2x1bW4pICYmXG4gICAgICAgICAgICAgICAgKHNvcnRlZENvbHVtbi5hc2NlbmRpbmcgfHwgIXNvcnRlZENvbHVtbi5hc2NlbmRpbmcpXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc3VidGl0bGVdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbi1kcmFnLWJveF09XCJ0aGlzLmlzRHJhZ2dhYmxlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzb3J0Q29sdW1uKGNvbHVtbilcIlxuICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgICAgY2RrRHJhZ0xvY2tBeGlzPVwieFwiXG4gICAgICAgICAgICBbY2RrRHJhZ0Rpc2FibGVkXT1cImNvbHVtbi5maXhlZCA/ICd0cnVlJyA6ICdmYWxzZSdcIlxuICAgICAgICAgICAgW3BGcm96ZW5Db2x1bW5dPVwiY29sdW1uLmZpeGVkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWZsZXhcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZpeGVkLWlubmVyXT1cImhlaWdodFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZmxleC1yaWdodF09XCJjb2x1bW4udHlwZSA9PT0gJ2N1cnJlbmN5JyB8fCBjb2x1bW4udHlwZSA9PT0gJ251bWJlcidcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtY2VudGVyXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRoaXMuaXNEcmFnZ2FibGUgJiYgIWNvbHVtbi5maXhlZFwiPlxuICAgICAgICAgICAgICAgIDxwby1pY29uIGNka0RyYWdIYW5kbGUgKm5nSWY9XCJpY29uTmFtZUxpYiA9PT0gJ1Bob3NwaG9ySWNvbidcIiBwLWljb249XCJJQ09OX0RSQUdcIj48L3BvLWljb24+XG4gICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpY29uTmFtZUxpYiA9PT0gJ1BvSWNvbidcIlxuICAgICAgICAgICAgICAgICAgY2RrRHJhZ0hhbmRsZVxuICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI5XCIgY3k9XCI2XCIgcj1cIjJcIiBmaWxsPVwiYmxhY2tcIiAvPlxuICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjE1XCIgY3k9XCI2XCIgcj1cIjJcIiBmaWxsPVwiYmxhY2tcIiAvPlxuICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjlcIiBjeT1cIjEyXCIgcj1cIjJcIiBmaWxsPVwiYmxhY2tcIiAvPlxuICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjE1XCIgY3k9XCIxMlwiIHI9XCIyXCIgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI5XCIgY3k9XCIxOFwiIHI9XCIyXCIgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxNVwiIGN5PVwiMThcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudEhlYWRlclRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29sdW1uIH1cIj4gPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3RoPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3RhYmxlRGVmYXVsdFRoRGVmYXVsdD5cbiAgICAgICAgICA8dGhcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgbWFpbkNvbHVtbnM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIlxuICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZWxsaXBzaXMgcC1lbGVtZW50IHBvLWZyb3plbi1jb2x1bW5cIlxuICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXBvLXRhYmxlLWNvbHVtbi1uYW1lXT1cImNvbHVtbi5sYWJlbCB8fCAoY29sdW1uLnByb3BlcnR5IHwgdGl0bGVjYXNlKSB8IGxvd2VyY2FzZVwiXG4gICAgICAgICAgICBbY2xhc3MucG8tY2xpY2thYmxlXT1cIihzb3J0ICYmIGNvbHVtbi5zb3J0YWJsZSAhPT0gZmFsc2UpIHx8IGhhc1NlcnZpY2VcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAncG8tdGFibGUtaGVhZGVyLXNvcnRlZCc6XG4gICAgICAgICAgICAgICAgc29ydCAmJlxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHNvcnRlZENvbHVtbj8ucHJvcGVydHkpID09PSBKU09OLnN0cmluZ2lmeShjb2x1bW4pICYmXG4gICAgICAgICAgICAgICAgKHNvcnRlZENvbHVtbi5hc2NlbmRpbmcgfHwgIXNvcnRlZENvbHVtbi5hc2NlbmRpbmcpXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc3VidGl0bGVdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNvcnRDb2x1bW4oY29sdW1uKVwiXG4gICAgICAgICAgICBbcEZyb3plbkNvbHVtbl09XCJjb2x1bW4uZml4ZWRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZmxleFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZml4ZWQtaW5uZXJdPVwiaGVpZ2h0XCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1mbGV4LXJpZ2h0XT1cImNvbHVtbi50eXBlID09PSAnY3VycmVuY3knIHx8IGNvbHVtbi50eXBlID09PSAnbnVtYmVyJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZmxleC1jZW50ZXJdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudEhlYWRlclRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29sdW1uIH1cIj4gPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3RoPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDx0aFxuICAgICAgICAgICpuZ0lmPVwiaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodCAmJiAoaGFzVmlzaWJsZUFjdGlvbnMgfHwgaGlkZUNvbHVtbnNNYW5hZ2VyKVwiXG4gICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItY29sdW1uIHBvLXRhYmxlLWhlYWRlci1tYXN0ZXItZGV0YWlsXCJcbiAgICAgICAgPjwvdGg+XG5cbiAgICAgICAgPHRoXG4gICAgICAgICAgKm5nSWY9XCJoYXNWaXNpYmxlQWN0aW9ucyAmJiBhY3Rpb25SaWdodCAmJiAodmlzaWJsZUFjdGlvbnMubGVuZ3RoID4gMSB8fCBpc1NpbmdsZUFjdGlvbilcIlxuICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc2luZ2xlLWFjdGlvbl09XCJpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1hY3Rpb25zXT1cIiFpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgID48L3RoPlxuICAgICAgPC90cj5cbiAgICA8L3RoZWFkPlxuXG4gICAgPHRib2R5IGNsYXNzPVwicG8tdGFibGUtZ3JvdXAtcm93XCIgKm5nSWY9XCIhaGFzSXRlbXMgfHwgIWhhc01haW5Db2x1bW5zXCI+XG4gICAgICA8dHIgY2xhc3M9XCJwby10YWJsZS1yb3cgcG8tdGFibGUtcm93LW5vLWRhdGFcIj5cbiAgICAgICAgPHRkIFtjb2xTcGFuXT1cImNvbHVtbkNvdW50XCIgY2xhc3M9XCJwby10YWJsZS1uby1kYXRhIHBvLXRleHQtY2VudGVyXCI+XG4gICAgICAgICAgPHNwYW4+IHt7IGxpdGVyYWxzLm5vRGF0YSB9fSA8L3NwYW4+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L3RyPlxuICAgIDwvdGJvZHk+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzTWFpbkNvbHVtbnNcIj5cbiAgICAgIDx0Ym9keSBjbGFzcz1cInBvLXRhYmxlLWdyb3VwLXJvd1wiICpuZ0Zvcj1cImxldCByb3cgb2YgZmlsdGVyZWRJdGVtczsgbGV0IHJvd0luZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIj5cbiAgICAgICAgPHRyIGNsYXNzPVwicG8tdGFibGUtcm93XCIgW2NsYXNzLnBvLXRhYmxlLXJvdy1hY3RpdmVdPVwicm93LiRzZWxlY3RlZCB8fCAocm93LiRzZWxlY3RlZCA9PT0gbnVsbCAmJiBzZWxlY3RhYmxlKVwiPlxuICAgICAgICAgIDx0ZCAqbmdJZj1cInNlbGVjdGFibGVcIiBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1zZWxlY3RhYmxlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2luZ2xlU2VsZWN0ID8gaW5wdXRSYWRpbyA6IGlucHV0Q2hlY2tib3g7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3cgfVwiPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC90ZD5cblxuICAgICAgICAgIDwhLS0gVmFsaWRhIHNlIGEgb3JpZ2VtIGRvIGRldGFpbCDDqSBwZWxvIGlucHV0IGRvIHBvLXRhYmxlIC0tPlxuICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW5NYXN0ZXJEZXRhaWwgJiYgIWhpZGVEZXRhaWwgJiYgIWhhc1Jvd1RlbXBsYXRlXCJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbC10b2dnbGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURldGFpbChyb3cpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicG9UYWJsZUNvbHVtbkRldGFpbFwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICA8IS0tIENvbHVuYSBjb20gYXMgYcOnw7VlcyBuYSBlc3F1ZXJkYSAocGFkcsOjbyktLT5cbiAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICpuZ0lmPVwiIWFjdGlvblJpZ2h0ICYmICh2aXNpYmxlQWN0aW9ucy5sZW5ndGggPiAxIHx8IGlzU2luZ2xlQWN0aW9uKVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJBY3Rpb25zQ29sdW1uVGVtcGxhdGVcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgIDwhLS0gVmFsaWRhIHNlIGEgb3JpZ2VtIGRvIGRldGFpbCDDqSBwZWxhIGRpcmV0aXZhIC0tPlxuICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgKm5nSWY9XCJoYXNSb3dUZW1wbGF0ZSAmJiAhaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodFwiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1kZXRhaWwtdG9nZ2xlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVEZXRhaWwocm93KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBvVGFibGVDb2x1bW5EZXRhaWxcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgPHRkXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIG1haW5Db2x1bW5zOyBsZXQgY29sdW1uSW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiXG4gICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW5dPVwiY29sdW1uLnR5cGUgIT09ICdpY29uJ1wiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtY29sdW1uLXJpZ2h0XT1cImNvbHVtbi50eXBlID09PSAnY3VycmVuY3knIHx8IGNvbHVtbi50eXBlID09PSAnbnVtYmVyJ1wiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtY29sdW1uLWNlbnRlcl09XCJjb2x1bW4udHlwZSA9PT0gJ3N1YnRpdGxlJ1wiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtY29sdW1uLWljb25zXT1cImNvbHVtbi50eXBlID09PSAnaWNvbidcIlxuICAgICAgICAgICAgW3BGcm96ZW5Db2x1bW5dPVwiY29sdW1uLmZpeGVkXCJcbiAgICAgICAgICAgIGNsYXNzPVwicC1lbGVtZW50IHBvLWZyb3plbi1jb2x1bW5cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0Q2xhc3NDb2xvcihyb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImhhc1NlbGVjdGFibGVSb3coKSA/IHNlbGVjdFJvdyhyb3cpIDogJ2phdmFzY3JpcHQ6OydcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tY2VsbCBwby10YWJsZS1ib2R5LWVsbGlwc2lzIG5vdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgW25nU3dpdGNoXT1cImNvbHVtbi50eXBlXCJcbiAgICAgICAgICAgICAgW3AtdG9vbHRpcF09XCJ0b29sdGlwVGV4dFwiXG4gICAgICAgICAgICAgIFtwLWFwcGVuZC1pbi1ib2R5XT1cInRydWVcIlxuICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJ0b29sdGlwTW91c2VFbnRlcigkZXZlbnQsIGNvbHVtbiwgcm93KVwiXG4gICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cInRvb2x0aXBNb3VzZUxlYXZlKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2NvbHVtblRlbXBsYXRlJ1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJnZXRUZW1wbGF0ZShjb2x1bW4pOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIH1cIj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInY2VsbFRlbXBsYXRlJ1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZUNlbGxUZW1wbGF0ZT8udGVtcGxhdGVSZWY7IGNvbnRleHQ6IHsgcm93OiByb3csIGNvbHVtbjogY29sdW1uIH1cIj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInYm9vbGVhbidcIj5cbiAgICAgICAgICAgICAgICB7eyBnZXRCb29sZWFuTGFiZWwoZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pLCBjb2x1bW4pIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2N1cnJlbmN5J1wiPlxuICAgICAgICAgICAgICAgIHt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB8IGN1cnJlbmN5OiBjb2x1bW4uZm9ybWF0IDogJ3N5bWJvbCcgOiAnMS4yLTInIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGUnXCI+XG4gICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgZGF0ZTogY29sdW1uLmZvcm1hdCB8fCAnZGQvTU0veXl5eScgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCIndGltZSdcIj5cbiAgICAgICAgICAgICAgICB7eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfCBwb190aW1lOiBjb2x1bW4uZm9ybWF0IHx8ICdISDptbTpzcy5mZmZmZmYnIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGVUaW1lJ1wiPlxuICAgICAgICAgICAgICAgIHt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB8IGRhdGU6IGNvbHVtbi5mb3JtYXQgfHwgJ2RkL01NL3l5eXkgSEg6bW06c3MnIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ251bWJlcidcIj5cbiAgICAgICAgICAgICAgICB7eyBmb3JtYXROdW1iZXIoZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pLCBjb2x1bW4uZm9ybWF0KSB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHBvLXRhYmxlLWNvbHVtbi1saW5rXG4gICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidsaW5rJ1wiXG4gICAgICAgICAgICAgICAgW3AtYWN0aW9uXT1cImNvbHVtbi5hY3Rpb25cIlxuICAgICAgICAgICAgICAgIFtwLWRpc2FibGVkXT1cImNoZWNrRGlzYWJsZWQocm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICBbcC1saW5rXT1cInJvd1tjb2x1bW4ubGlua11cIlxuICAgICAgICAgICAgICAgIFtwLXJvd109XCJyb3dcIlxuICAgICAgICAgICAgICAgIFtwLXZhbHVlXT1cImdldENlbGxEYXRhKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2tMaW5rKCRldmVudCwgcm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L3BvLXRhYmxlLWNvbHVtbi1saW5rPlxuXG4gICAgICAgICAgICAgIDxwby10YWJsZS1jb2x1bW4taWNvblxuICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInaWNvbidcIlxuICAgICAgICAgICAgICAgIFtwLWNvbHVtbl09XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgIFtwLWljb25zXT1cImdldENvbHVtbkljb25zKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgW3Atcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9wby10YWJsZS1jb2x1bW4taWNvbj5cblxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3N1YnRpdGxlJ1wiPlxuICAgICAgICAgICAgICAgIDxwby10YWJsZS1zdWJ0aXRsZS1jaXJjbGUgW3Atc3VidGl0bGVdPVwiZ2V0U3VidGl0bGVDb2x1bW4ocm93LCBjb2x1bW4pXCI+PC9wby10YWJsZS1zdWJ0aXRsZS1jaXJjbGU+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidsYWJlbCdcIj5cbiAgICAgICAgICAgICAgICA8cG8tdGFibGUtY29sdW1uLWxhYmVsIFtwLXZhbHVlXT1cImdldENvbHVtbkxhYmVsKHJvdywgY29sdW1uKVwiPiA8L3BvLXRhYmxlLWNvbHVtbi1sYWJlbD5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hEZWZhdWx0Pnt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodFwiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1kZXRhaWwtdG9nZ2xlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVEZXRhaWwocm93KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBvVGFibGVDb2x1bW5EZXRhaWxcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgPCEtLSBDb2x1bmEgZGUgYcOnb2VzIG5hIGRpcmVpdGEgLS0+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAqbmdJZj1cImFjdGlvblJpZ2h0XCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIkFjdGlvbnNDb2x1bW5UZW1wbGF0ZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3RyPlxuXG4gICAgICAgIDx0ciAqbmdJZj1cImhhc01haW5Db2x1bW5zICYmIGhhc1Jvd1RlbXBsYXRlICYmIHJvdy4kc2hvd0RldGFpbCAmJiBpc1Nob3dSb3dUZW1wbGF0ZShyb3csIHJvd0luZGV4KVwiPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cInBvLXRhYmxlLXJvdy10ZW1wbGF0ZS1jb250YWluZXJcIiBbY29sU3Bhbl09XCJjb2x1bW5Db3VudEZvck1hc3RlckRldGFpbFwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhYmxlUm93VGVtcGxhdGUudGVtcGxhdGVSZWZcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuXG4gICAgICAgIDx0ciAqbmdJZj1cImhhc01haW5Db2x1bW5zICYmIGlzU2hvd01hc3RlckRldGFpbChyb3cpXCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbFwiIFtjb2xTcGFuXT1cImNvbHVtbkNvdW50Rm9yTWFzdGVyRGV0YWlsXCI+XG4gICAgICAgICAgICA8cG8tdGFibGUtZGV0YWlsXG4gICAgICAgICAgICAgIFtwLXNlbGVjdGFibGVdPVwic2VsZWN0YWJsZSAmJiAhZGV0YWlsSGlkZVNlbGVjdFwiXG4gICAgICAgICAgICAgIFtwLWRldGFpbF09XCJjb2x1bW5NYXN0ZXJEZXRhaWwuZGV0YWlsXCJcbiAgICAgICAgICAgICAgW3AtaXRlbXNdPVwicm93W25hbWVDb2x1bW5EZXRhaWxdXCJcbiAgICAgICAgICAgICAgKHAtc2VsZWN0LXJvdyk9XCJzZWxlY3REZXRhaWxSb3coJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3BvLXRhYmxlLWRldGFpbD5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90Ym9keT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC90YWJsZT5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gVGFibGUgd2l0aCB2aXJ0dWFsIHNjcm9sbCAtLT5cbjxuZy10ZW1wbGF0ZSAjdGFibGVWaXJ0dWFsU2Nyb2xsVGVtcGxhdGU+XG4gIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcbiAgICAjdGFibGVWaXJ0dWFsU2Nyb2xsXG4gICAgW2l0ZW1TaXplXT1cIml0ZW1TaXplXCJcbiAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlaWdodFRhYmxlQ29udGFpbmVyXCJcbiAgICBbbWluQnVmZmVyUHhdPVwiaGVpZ2h0VGFibGVDb250YWluZXIgPCAxMDAgPyAxMDAgOiBoZWlnaHRUYWJsZUNvbnRhaW5lclwiXG4gICAgW21heEJ1ZmZlclB4XT1cImhlaWdodFRhYmxlQ29udGFpbmVyIDwgMjAwID8gMjAwIDogaGVpZ2h0VGFibGVDb250YWluZXJcIlxuICA+XG4gICAgPHRhYmxlXG4gICAgICBjbGFzcz1cInBvLXRhYmxlXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3BvLXRhYmxlLWludGVyYWN0aXZlJzogc2VsZWN0YWJsZSB8fCBzb3J0LFxuICAgICAgICAncG8tdGFibGUtc2VsZWN0YWJsZSc6IHNlbGVjdGFibGUsXG4gICAgICAgICdwby10YWJsZS1zdHJpcGVkJzogc3RyaXBlZCxcbiAgICAgICAgJ3BvLXRhYmxlLWRhdGEtZml4ZWQtY29sdW1ucyc6IGFwcGx5Rml4ZWRDb2x1bW5zKCksXG4gICAgICAgICdwby10YWJsZS10ZXh0LXdyYXAtZW5hYmxlZCc6IHRleHRXcmFwXG4gICAgICB9XCJcbiAgICAgIFthdHRyLnAtc3BhY2luZ109XCJzcGFjaW5nXCJcbiAgICA+XG4gICAgICA8dGhlYWQgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItc3RpY2t5XCIgW3N0eWxlLnRvcF09XCJpbnZlcnNlT2ZUcmFuc2xhdGlvblwiPlxuICAgICAgICA8dHJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyXT1cIiFoZWlnaHRcIlxuICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx0aFxuICAgICAgICAgICAgKm5nSWY9XCJoYXNTZWxlY3RhYmxlQ29sdW1uXCJcbiAgICAgICAgICAgIFtzdHlsZS5wb2ludGVyLWV2ZW50c109XCJoaWRlU2VsZWN0QWxsID8gJ25vbmUnIDogJ2F1dG8nXCJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLXNlbGVjdGFibGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1maXhlZC1pbm5lcl09XCJoZWlnaHRcIj5cbiAgICAgICAgICAgICAgPHBvLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgbmFtZT1cInNlbGVjdEFsbFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhaGlkZVNlbGVjdEFsbFwiXG4gICAgICAgICAgICAgICAgKHAtY2hhbmdlKT1cInNlbGVjdEFsbFJvd3MoKVwiXG4gICAgICAgICAgICAgICAgW3AtY2hlY2tib3hWYWx1ZV09XCJzZWxlY3RBbGwgPT09IG51bGwgPyAnbWl4ZWQnIDogc2VsZWN0QWxsXCJcbiAgICAgICAgICAgICAgPjwvcG8tY2hlY2tib3g+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3RoPlxuXG4gICAgICAgICAgPHRoXG4gICAgICAgICAgICAqbmdJZj1cIihoYXNNYXN0ZXJEZXRhaWxDb2x1bW4gfHwgaGFzUm93VGVtcGxhdGUpICYmICFoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWNvbHVtbiBwby10YWJsZS1oZWFkZXItbWFzdGVyLWRldGFpbFwiXG4gICAgICAgICAgPjwvdGg+XG5cbiAgICAgICAgICA8IS0tIENvbHVuYSBjcmlhZGEgcGFyYSBjYXNvIGFzIGHDp8O1ZXMgZmlxdWVtIG5vIGxhZG8gZXNxdWVyZG8gLS0+XG4gICAgICAgICAgPHRoXG4gICAgICAgICAgICAjY29sdW1uQWN0aW9uTGVmdFxuICAgICAgICAgICAgKm5nSWY9XCIhYWN0aW9uUmlnaHQgJiYgKHZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDEgfHwgaXNTaW5nbGVBY3Rpb24pXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItbWFzdGVyLWRldGFpbF09XCIhaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zaW5nbGUtYWN0aW9uXT1cImlzU2luZ2xlQWN0aW9uXCJcbiAgICAgICAgICA+PC90aD5cblxuICAgICAgICAgIDx0aCAqbmdJZj1cIiFoYXNNYWluQ29sdW1uc1wiICNub0NvbHVtbnNIZWFkZXIgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItY29sdW1uIHBvLXRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVpZ2h0OyB0aGVuIG5vQ29sdW1uc1dpdGhIZWlnaHQ7IGVsc2Ugbm9Db2x1bW5zV2l0aG91dEhlaWdodFwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3RoPlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgdGhpcy5pc0RyYWdnYWJsZSB8fCBoYXNTb21lRml4ZWQoKTtcbiAgICAgICAgICAgICAgdGhlbiB0YWJsZVZpcnR1YWxTY3JvbGxUaERyYWdEcm9wO1xuICAgICAgICAgICAgICBlbHNlIHRhYmxlVmlydHVhbFNjcm9sbFRoRGVmYXVsdFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICN0YWJsZVZpcnR1YWxTY3JvbGxUaERyYWdEcm9wPlxuICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgbWFpbkNvbHVtbnM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIlxuICAgICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1lbGxpcHNpcyBwLWVsZW1lbnQgcG8tZnJvemVuLWNvbHVtblwiXG4gICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wby10YWJsZS1jb2x1bW4tbmFtZV09XCJjb2x1bW4ubGFiZWwgfHwgKGNvbHVtbi5wcm9wZXJ0eSB8IHRpdGxlY2FzZSkgfCBsb3dlcmNhc2VcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tY2xpY2thYmxlXT1cIihzb3J0ICYmIGNvbHVtbi5zb3J0YWJsZSAhPT0gZmFsc2UpIHx8IGhhc1NlcnZpY2VcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ3BvLXRhYmxlLWhlYWRlci1zb3J0ZWQnOlxuICAgICAgICAgICAgICAgICAgc29ydCAmJlxuICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoc29ydGVkQ29sdW1uPy5wcm9wZXJ0eSkgPT09IEpTT04uc3RyaW5naWZ5KGNvbHVtbikgJiZcbiAgICAgICAgICAgICAgICAgIChzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nIHx8ICFzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nKVxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnd2lkdGgnOiAhaGFzSXRlbXMgPyAnMTAwJScgOiBhcHBseUZpeGVkQ29sdW1ucygpID8gY29sdW1uLndpZHRoIDogJ2F1dG8nIH1cIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLXN1YnRpdGxlXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbi1kcmFnLWJveF09XCJ0aGlzLmlzRHJhZ2dhYmxlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNvcnRDb2x1bW4oY29sdW1uKVwiXG4gICAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgICAgY2RrRHJhZ0xvY2tBeGlzPVwieFwiXG4gICAgICAgICAgICAgIFtjZGtEcmFnRGlzYWJsZWRdPVwiY29sdW1uLmZpeGVkID8gJ3RydWUnIDogJ2ZhbHNlJ1wiXG4gICAgICAgICAgICAgIFtwRnJvemVuQ29sdW1uXT1cImNvbHVtbi5maXhlZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1mbGV4XCJcbiAgICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZpeGVkLWlubmVyXT1cImhlaWdodFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1mbGV4LXJpZ2h0XT1cImNvbHVtbi50eXBlID09PSAnY3VycmVuY3knIHx8IGNvbHVtbi50eXBlID09PSAnbnVtYmVyJ1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1mbGV4LWNlbnRlcl09XCJjb2x1bW4udHlwZSA9PT0gJ3N1YnRpdGxlJ1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGhpcy5pc0RyYWdnYWJsZSAmJiAhY29sdW1uLmZpeGVkXCI+XG4gICAgICAgICAgICAgICAgICA8cG8taWNvbiBjZGtEcmFnSGFuZGxlICpuZ0lmPVwiaWNvbk5hbWVMaWIgPT09ICdQaG9zcGhvckljb24nXCIgcC1pY29uPVwiSUNPTl9EUkFHXCI+PC9wby1pY29uPlxuICAgICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImljb25OYW1lTGliID09PSAnUG9JY29uJ1wiXG4gICAgICAgICAgICAgICAgICAgIGNka0RyYWdIYW5kbGVcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE2XCJcbiAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI5XCIgY3k9XCI2XCIgcj1cIjJcIiBmaWxsPVwiYmxhY2tcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTVcIiBjeT1cIjZcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI5XCIgY3k9XCIxMlwiIHI9XCIyXCIgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjE1XCIgY3k9XCIxMlwiIHI9XCIyXCIgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjlcIiBjeT1cIjE4XCIgcj1cIjJcIiBmaWxsPVwiYmxhY2tcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTVcIiBjeT1cIjE4XCIgcj1cIjJcIiBmaWxsPVwiYmxhY2tcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRIZWFkZXJUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbHVtbiB9XCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3RhYmxlVmlydHVhbFNjcm9sbFRoRGVmYXVsdD5cbiAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIG1haW5Db2x1bW5zOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZWxsaXBzaXMgcC1lbGVtZW50IHBvLWZyb3plbi1jb2x1bW4gZXhhbXBsZS1ib3hcIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtcG8tdGFibGUtY29sdW1uLW5hbWVdPVwiY29sdW1uLmxhYmVsIHx8IChjb2x1bW4ucHJvcGVydHkgfCB0aXRsZWNhc2UpIHwgbG93ZXJjYXNlXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLWNsaWNrYWJsZV09XCIoc29ydCAmJiBjb2x1bW4uc29ydGFibGUgIT09IGZhbHNlKSB8fCBoYXNTZXJ2aWNlXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICdwby10YWJsZS1oZWFkZXItc29ydGVkJzpcbiAgICAgICAgICAgICAgICAgIHNvcnQgJiZcbiAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHNvcnRlZENvbHVtbj8ucHJvcGVydHkpID09PSBKU09OLnN0cmluZ2lmeShjb2x1bW4pICYmXG4gICAgICAgICAgICAgICAgICAoc29ydGVkQ29sdW1uLmFzY2VuZGluZyB8fCAhc29ydGVkQ29sdW1uLmFzY2VuZGluZylcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ3dpZHRoJzogIWhhc0l0ZW1zID8gJzEwMCUnIDogYXBwbHlGaXhlZENvbHVtbnMoKSA/IGNvbHVtbi53aWR0aCA6ICdhdXRvJyB9XCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zdWJ0aXRsZV09XCJjb2x1bW4udHlwZSA9PT0gJ3N1YnRpdGxlJ1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzb3J0Q29sdW1uKGNvbHVtbilcIlxuICAgICAgICAgICAgICBbcEZyb3plbkNvbHVtbl09XCJjb2x1bW4uZml4ZWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZmxleFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1maXhlZC1pbm5lcl09XCJoZWlnaHRcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZmxleC1yaWdodF09XCJjb2x1bW4udHlwZSA9PT0gJ2N1cnJlbmN5JyB8fCBjb2x1bW4udHlwZSA9PT0gJ251bWJlcidcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZmxleC1jZW50ZXJdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRIZWFkZXJUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbHVtbiB9XCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgIDx0aFxuICAgICAgICAgICAgKm5nSWY9XCJoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0ICYmIChoYXNWaXNpYmxlQWN0aW9ucyB8fCBoaWRlQ29sdW1uc01hbmFnZXIpXCJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWNvbHVtbiBwby10YWJsZS1oZWFkZXItbWFzdGVyLWRldGFpbFwiXG4gICAgICAgICAgPjwvdGg+XG5cbiAgICAgICAgICA8dGhcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzVmlzaWJsZUFjdGlvbnMgJiYgYWN0aW9uUmlnaHQgJiYgKHZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDEgfHwgaXNTaW5nbGVBY3Rpb24pXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc2luZ2xlLWFjdGlvbl09XCJpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWFjdGlvbnNdPVwiIWlzU2luZ2xlQWN0aW9uXCJcbiAgICAgICAgICA+PC90aD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGhlYWQ+XG5cbiAgICAgIDx0Ym9keSBjbGFzcz1cInBvLXRhYmxlLWdyb3VwLXJvd1wiICpuZ0lmPVwiIWhhc0l0ZW1zIHx8ICFoYXNNYWluQ29sdW1uc1wiPlxuICAgICAgICA8dHIgY2xhc3M9XCJwby10YWJsZS1yb3cgcG8tdGFibGUtcm93LW5vLWRhdGFcIj5cbiAgICAgICAgICA8dGQgW2NvbFNwYW5dPVwiY29sdW1uQ291bnRcIiBjbGFzcz1cInBvLXRhYmxlLW5vLWRhdGEgcG8tdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxzcGFuPiB7eyBsaXRlcmFscy5ub0RhdGEgfX0gPC9zcGFuPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3Rib2R5PlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzTWFpbkNvbHVtbnNcIj5cbiAgICAgICAgPHRib2R5XG4gICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1ncm91cC1yb3dcIlxuICAgICAgICAgICpjZGtWaXJ0dWFsRm9yPVwibGV0IHJvdyBvZiBmaWx0ZXJlZEl0ZW1zOyBsZXQgcm93SW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiXG4gICAgICAgID5cbiAgICAgICAgICA8dHJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtcm93XCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1yb3ctYWN0aXZlXT1cInJvdy4kc2VsZWN0ZWQgfHwgKHJvdy4kc2VsZWN0ZWQgPT09IG51bGwgJiYgc2VsZWN0YWJsZSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx0ZCAqbmdJZj1cInNlbGVjdGFibGVcIiBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1zZWxlY3RhYmxlXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaW5nbGVTZWxlY3QgPyBpbnB1dFJhZGlvIDogaW5wdXRDaGVja2JveDsgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdyB9XCI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICAgICAgPCEtLSBWYWxpZGEgc2UgYSBvcmlnZW0gZG8gZGV0YWlsIMOpIHBlbG8gaW5wdXQgZG8gcG8tdGFibGUgLS0+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW5NYXN0ZXJEZXRhaWwgJiYgIWhpZGVEZXRhaWwgJiYgIWhhc1Jvd1RlbXBsYXRlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tZGV0YWlsLXRvZ2dsZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVEZXRhaWwocm93KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBvVGFibGVDb2x1bW5EZXRhaWxcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgIDwhLS0gQ29sdW5hIGNvbSBhcyBhw6fDtWVzIG5hIGVzcXVlcmRhIChwYWRyw6NvKS0tPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICpuZ0lmPVwiIWFjdGlvblJpZ2h0ICYmICh2aXNpYmxlQWN0aW9ucy5sZW5ndGggPiAxIHx8IGlzU2luZ2xlQWN0aW9uKVwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIkFjdGlvbnNDb2x1bW5UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICA8IS0tIFZhbGlkYSBzZSBhIG9yaWdlbSBkbyBkZXRhaWwgw6kgcGVsYSBkaXJldGl2YSAtLT5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAqbmdJZj1cImhhc1Jvd1RlbXBsYXRlICYmICFoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tZGV0YWlsLXRvZ2dsZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVEZXRhaWwocm93KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBvVGFibGVDb2x1bW5EZXRhaWxcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIG1haW5Db2x1bW5zOyBsZXQgY29sdW1uSW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiXG4gICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbl09XCJjb2x1bW4udHlwZSAhPT0gJ2ljb24nXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbi1yaWdodF09XCJjb2x1bW4udHlwZSA9PT0gJ2N1cnJlbmN5JyB8fCBjb2x1bW4udHlwZSA9PT0gJ251bWJlcidcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtY29sdW1uLWNlbnRlcl09XCJjb2x1bW4udHlwZSA9PT0gJ3N1YnRpdGxlJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4taWNvbnNdPVwiY29sdW1uLnR5cGUgPT09ICdpY29uJ1wiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldENsYXNzQ29sb3Iocm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgW3BGcm96ZW5Db2x1bW5dPVwiY29sdW1uLmZpeGVkXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwLWVsZW1lbnQgcG8tZnJvemVuLWNvbHVtblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJoYXNTZWxlY3RhYmxlUm93KCkgPyBzZWxlY3RSb3cocm93KSA6ICdqYXZhc2NyaXB0OjsnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWNlbGwgcG8tdGFibGUtYm9keS1lbGxpcHNpcyBub3RyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW25nU3dpdGNoXT1cImNvbHVtbi50eXBlXCJcbiAgICAgICAgICAgICAgICBbcC10b29sdGlwXT1cInRvb2x0aXBUZXh0XCJcbiAgICAgICAgICAgICAgICBbcC1hcHBlbmQtaW4tYm9keV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJ0b29sdGlwTW91c2VFbnRlcigkZXZlbnQsIGNvbHVtbiwgcm93KVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwidG9vbHRpcE1vdXNlTGVhdmUoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2NvbHVtblRlbXBsYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImdldFRlbXBsYXRlKGNvbHVtbik7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2NlbGxUZW1wbGF0ZSdcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZUNlbGxUZW1wbGF0ZT8udGVtcGxhdGVSZWY7IGNvbnRleHQ6IHsgcm93OiByb3csIGNvbHVtbjogY29sdW1uIH1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidib29sZWFuJ1wiPlxuICAgICAgICAgICAgICAgICAge3sgZ2V0Qm9vbGVhbkxhYmVsKGdldENlbGxEYXRhKHJvdywgY29sdW1uKSwgY29sdW1uKSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInY3VycmVuY3knXCI+XG4gICAgICAgICAgICAgICAgICB7eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfCBjdXJyZW5jeTogY29sdW1uLmZvcm1hdCA6ICdzeW1ib2wnIDogJzEuMi0yJyB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB8IGRhdGU6IGNvbHVtbi5mb3JtYXQgfHwgJ2RkL01NL3l5eXknIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIid0aW1lJ1wiPlxuICAgICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgcG9fdGltZTogY29sdW1uLmZvcm1hdCB8fCAnSEg6bW06c3MuZmZmZmZmJyB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInZGF0ZVRpbWUnXCI+XG4gICAgICAgICAgICAgICAgICB7eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfCBkYXRlOiBjb2x1bW4uZm9ybWF0IHx8ICdkZC9NTS95eXl5IEhIOm1tOnNzJyB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInbnVtYmVyJ1wiPlxuICAgICAgICAgICAgICAgICAge3sgZm9ybWF0TnVtYmVyKGdldENlbGxEYXRhKHJvdywgY29sdW1uKSwgY29sdW1uLmZvcm1hdCkgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8cG8tdGFibGUtY29sdW1uLWxpbmtcbiAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInbGluaydcIlxuICAgICAgICAgICAgICAgICAgW3AtYWN0aW9uXT1cImNvbHVtbi5hY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgW3AtZGlzYWJsZWRdPVwiY2hlY2tEaXNhYmxlZChyb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgW3AtbGlua109XCJyb3dbY29sdW1uLmxpbmtdXCJcbiAgICAgICAgICAgICAgICAgIFtwLXJvd109XCJyb3dcIlxuICAgICAgICAgICAgICAgICAgW3AtdmFsdWVdPVwiZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrTGluaygkZXZlbnQsIHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvcG8tdGFibGUtY29sdW1uLWxpbms+XG5cbiAgICAgICAgICAgICAgICA8cG8tdGFibGUtY29sdW1uLWljb25cbiAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInaWNvbidcIlxuICAgICAgICAgICAgICAgICAgW3AtY29sdW1uXT1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICBbcC1pY29uc109XCJnZXRDb2x1bW5JY29ucyhyb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgW3Atcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvcG8tdGFibGUtY29sdW1uLWljb24+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3N1YnRpdGxlJ1wiPlxuICAgICAgICAgICAgICAgICAgPHBvLXRhYmxlLXN1YnRpdGxlLWNpcmNsZSBbcC1zdWJ0aXRsZV09XCJnZXRTdWJ0aXRsZUNvbHVtbihyb3csIGNvbHVtbilcIj48L3BvLXRhYmxlLXN1YnRpdGxlLWNpcmNsZT5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidsYWJlbCdcIj5cbiAgICAgICAgICAgICAgICAgIDxwby10YWJsZS1jb2x1bW4tbGFiZWwgW3AtdmFsdWVdPVwiZ2V0Q29sdW1uTGFiZWwocm93LCBjb2x1bW4pXCI+IDwvcG8tdGFibGUtY29sdW1uLWxhYmVsPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hEZWZhdWx0Pnt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgKm5nSWY9XCJoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tZGV0YWlsLXRvZ2dsZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVEZXRhaWwocm93KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBvVGFibGVDb2x1bW5EZXRhaWxcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgIDwhLS0gQ29sdW5hIGRlIGHDp29lcyBuYSBkaXJlaXRhIC0tPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWN0aW9uUmlnaHRcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJBY3Rpb25zQ29sdW1uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L3RyPlxuXG4gICAgICAgICAgPHRyICpuZ0lmPVwiaGFzTWFpbkNvbHVtbnMgJiYgaGFzUm93VGVtcGxhdGUgJiYgcm93LiRzaG93RGV0YWlsICYmIGlzU2hvd1Jvd1RlbXBsYXRlKHJvdywgcm93SW5kZXgpXCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJwby10YWJsZS1yb3ctdGVtcGxhdGUtY29udGFpbmVyXCIgW2NvbFNwYW5dPVwiY29sdW1uQ291bnRGb3JNYXN0ZXJEZXRhaWxcIj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFibGVSb3dUZW1wbGF0ZS50ZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L3RyPlxuXG4gICAgICAgICAgPHRyICpuZ0lmPVwiaGFzTWFpbkNvbHVtbnMgJiYgaXNTaG93TWFzdGVyRGV0YWlsKHJvdylcIj5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1kZXRhaWxcIiBbY29sU3Bhbl09XCJjb2x1bW5Db3VudEZvck1hc3RlckRldGFpbFwiPlxuICAgICAgICAgICAgICA8cG8tdGFibGUtZGV0YWlsXG4gICAgICAgICAgICAgICAgW3Atc2VsZWN0YWJsZV09XCJzZWxlY3RhYmxlICYmICFkZXRhaWxIaWRlU2VsZWN0XCJcbiAgICAgICAgICAgICAgICBbcC1kZXRhaWxdPVwiY29sdW1uTWFzdGVyRGV0YWlsLmRldGFpbFwiXG4gICAgICAgICAgICAgICAgW3AtaXRlbXNdPVwicm93W25hbWVDb2x1bW5EZXRhaWxdXCJcbiAgICAgICAgICAgICAgICAocC1zZWxlY3Qtcm93KT1cInNlbGVjdERldGFpbFJvdygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L3BvLXRhYmxlLWRldGFpbD5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90Ym9keT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGFibGU+XG4gIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuPC9uZy10ZW1wbGF0ZT5cblxuPHBvLXBvcHVwICNwb3B1cCBbcC1hY3Rpb25zXT1cImFjdGlvbnNcIiBbcC10YXJnZXRdPVwicG9wdXBUYXJnZXRcIj4gPC9wby1wb3B1cD5cblxuPG5nLXRlbXBsYXRlICNwb1RhYmxlQ29sdW1uRGV0YWlsIGxldC1yb3c9XCJyb3dcIiBsZXQtcm93SW5kZXg9XCJyb3dJbmRleFwiPlxuICA8cG8taWNvblxuICAgICpuZ0lmPVwiKGNvbnRhaW5zTWFzdGVyRGV0YWlsKHJvdykgJiYgIWhhc1Jvd1RlbXBsYXRlKSB8fCAoaXNTaG93Um93VGVtcGxhdGUocm93LCByb3dJbmRleCkgJiYgaGFzUm93VGVtcGxhdGUpXCJcbiAgICBbcC1pY29uXT1cInJvdy4kc2hvd0RldGFpbCA/ICdJQ09OX0FSUk9XX1VQJyA6ICdJQ09OX0FSUk9XX0RPV04nXCJcbiAgICBjbGFzcz1cInBvLWNsaWNrYWJsZVwiXG4gID5cbiAgPC9wby1pY29uPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpbnB1dFJhZGlvIGxldC1yb3c+XG4gIDxwby1yYWRpbyBbbmFtZV09XCJpZFJhZGlvXCIgW3AtY2hlY2tlZF09XCJyb3cuJHNlbGVjdGVkXCIgKHAtY2hhbmdlLXNlbGVjdGVkKT1cInNlbGVjdFJvdyhyb3cpXCI+PC9wby1yYWRpbz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaW5wdXRDaGVja2JveCBsZXQtcm93PlxuICA8cG8tY2hlY2tib3hcbiAgICBuYW1lPVwiY2hlY2tib3hcIlxuICAgIChwLWNoYW5nZSk9XCJzZWxlY3RhYmxlID8gc2VsZWN0Um93KHJvdykgOiAnamF2YXNjcmlwdDo7J1wiXG4gICAgW3AtY2hlY2tib3hWYWx1ZV09XCJyb3cuJHNlbGVjdGVkXCJcbiAgPjwvcG8tY2hlY2tib3g+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NvbnRlbnRIZWFkZXJUZW1wbGF0ZSBsZXQtY29sdW1uPlxuICA8c3BhblxuICAgICNjb2x1bW5IZWFkZXJcbiAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1lbGxpcHNpc1wiXG4gICAgW3AtdG9vbHRpcF09XCJ0b29sdGlwVGV4dFwiXG4gICAgW3AtYXBwZW5kLWluLWJvZHldPVwidHJ1ZVwiXG4gICAgKG1vdXNlZW50ZXIpPVwidG9vbHRpcE1vdXNlRW50ZXIoJGV2ZW50KVwiXG4gICAgKG1vdXNlbGVhdmUpPVwidG9vbHRpcE1vdXNlTGVhdmUoKVwiXG4gID5cbiAgICB7eyBjb2x1bW4ubGFiZWwgfHwgKGNvbHVtbi5wcm9wZXJ0eSB8IHRpdGxlY2FzZSkgfX1cbiAgPC9zcGFuPlxuXG4gIDxzcGFuXG4gICAgKm5nSWY9XCJzb3J0ICYmIGNvbHVtbi5zb3J0YWJsZSAhPT0gZmFsc2VcIlxuICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItaWNvbi11bnNlbGVjdGVkXT1cIkpTT04uc3RyaW5naWZ5KHNvcnRlZENvbHVtbj8ucHJvcGVydHkpICE9PSBKU09OLnN0cmluZ2lmeShjb2x1bW4pXCJcbiAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWljb24tZGVzY2VuZGluZ109XCJcbiAgICAgIEpTT04uc3RyaW5naWZ5KHNvcnRlZENvbHVtbj8ucHJvcGVydHkpID09PSBKU09OLnN0cmluZ2lmeShjb2x1bW4pICYmIHNvcnRlZENvbHVtbi5hc2NlbmRpbmdcbiAgICBcIlxuICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItaWNvbi1hc2NlbmRpbmddPVwiXG4gICAgICBKU09OLnN0cmluZ2lmeShzb3J0ZWRDb2x1bW4/LnByb3BlcnR5KSA9PT0gSlNPTi5zdHJpbmdpZnkoY29sdW1uKSAmJiAhc29ydGVkQ29sdW1uLmFzY2VuZGluZ1xuICAgIFwiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiSlNPTi5zdHJpbmdpZnkoc29ydGVkQ29sdW1uPy5wcm9wZXJ0eSkgIT09IEpTT04uc3RyaW5naWZ5KGNvbHVtbilcIj5cbiAgICAgIDxwby1pY29uICpuZ0lmPVwiaWNvbk5hbWVMaWIgPT09ICdQaG9zcGhvckljb24nXCIgcC1pY29uPVwiSUNPTl9TT1JUXCI+PC9wby1pY29uPlxuICAgICAgPHN2Z1xuICAgICAgICAqbmdJZj1cImljb25OYW1lTGliID09PSAnUG9JY29uJ1wiXG4gICAgICAgIHdpZHRoPVwiMTZcIlxuICAgICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGQ9XCJNMTguMjkyOSAxNS4yOTI5TDE3IDE2LjU4NThMMTcgMTBDMTcgOS40NDc3MiAxNi41NTIzIDkgMTYgOUMxNS40NDc3IDkgMTUgOS40NDc3MiAxNSAxMEwxNSAxNi41ODU4TDEzLjcwNzEgMTUuMjkyOUMxMy4zMTY2IDE0LjkwMjQgMTIuNjgzNCAxNC45MDI0IDEyLjI5MjkgMTUuMjkyOUMxMS45MDI0IDE1LjY4MzQgMTEuOTAyNCAxNi4zMTY2IDEyLjI5MjkgMTYuNzA3MUwxNS4yOTI5IDE5LjcwNzFDMTUuNjgzNCAyMC4wOTc2IDE2LjMxNjYgMjAuMDk3NiAxNi43MDcxIDE5LjcwNzFMMTkuNzA3MSAxNi43MDcxQzIwLjA5NzYgMTYuMzE2NiAyMC4wOTc2IDE1LjY4MzQgMTkuNzA3MSAxNS4yOTI5QzE5LjMxNjYgMTQuOTAyNCAxOC42ODM0IDE0LjkwMjQgMTguMjkyOSAxNS4yOTI5Wk01LjcwNzE2IDguNzA3MUw3LjAwMDA2IDcuNDE0Mkw3LjAwMDAzIDE0QzcuMDAwMDIgMTQuNTUyMyA3LjQ0Nzc0IDE1IDguMDAwMDIgMTVDOC41NTIzMSAxNSA5LjAwMDAyIDE0LjU1MjMgOS4wMDAwMyAxNEw5LjAwMDA2IDcuNDE0MThMMTAuMjkyOSA4LjcwNzA3QzEwLjY4MzUgOS4wOTc1OSAxMS4zMTY2IDkuMDk3NTggMTEuNzA3MiA4LjcwNzA2QzEyLjA5NzcgOC4zMTY1MyAxMi4wOTc3IDcuNjgzMzYgMTEuNzA3MiA3LjI5Mjg0TDguNzA3MTggNC4yOTI4NkM4LjMxNjY1IDMuOTAyMzQgNy42ODM0OSAzLjkwMjM1IDcuMjkyOTYgNC4yOTI4N0w0LjI5Mjk1IDcuMjkyODlDMy45MDI0MiA3LjY4MzQyIDMuOTAyNDIgOC4zMTY1OCA0LjI5Mjk0IDguNzA3MTFDNC42ODM0NyA5LjA5NzYzIDUuMzE2NjMgOS4wOTc2MiA1LjcwNzE2IDguNzA3MVpcIlxuICAgICAgICAgIGZpbGw9XCIjMUQxRDMwXCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkpTT04uc3RyaW5naWZ5KHNvcnRlZENvbHVtbj8ucHJvcGVydHkpID09PSBKU09OLnN0cmluZ2lmeShjb2x1bW4pICYmIHNvcnRlZENvbHVtbi5hc2NlbmRpbmdcIj5cbiAgICAgIDxwby1pY29uICpuZ0lmPVwiaWNvbk5hbWVMaWIgPT09ICdQaG9zcGhvckljb24nXCIgcC1pY29uPVwiSUNPTl9TT1JUX0FTQ1wiPjwvcG8taWNvbj5cbiAgICAgIDxzdmdcbiAgICAgICAgKm5nSWY9XCJpY29uTmFtZUxpYiA9PT0gJ1BvSWNvbidcIlxuICAgICAgICB3aWR0aD1cIjE2XCJcbiAgICAgICAgaGVpZ2h0PVwiMTZcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgID5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICBkPVwiTTExIDkuNDE0MjFMOS43MDcxMSAxMC43MDcxQzkuMzE2NTggMTEuMDk3NiA4LjY4MzQyIDExLjA5NzYgOC4yOTI4OSAxMC43MDcxQzcuOTAyMzcgMTAuMzE2NiA3LjkwMjM3IDkuNjgzNDIgOC4yOTI4OSA5LjI5Mjg5TDExLjI5MjkgNi4yOTI4OUMxMS42ODM0IDUuOTAyMzcgMTIuMzE2NiA1LjkwMjM3IDEyLjcwNzEgNi4yOTI4OUwxNS43MDcxIDkuMjkyODlDMTYuMDk3NiA5LjY4MzQyIDE2LjA5NzYgMTAuMzE2NiAxNS43MDcxIDEwLjcwNzFDMTUuMzE2NiAxMS4wOTc2IDE0LjY4MzQgMTEuMDk3NiAxNC4yOTI5IDEwLjcwNzFMMTMgOS40MTQyMVYxNkMxMyAxNi41NTIzIDEyLjU1MjMgMTcgMTIgMTdDMTEuNDQ3NyAxNyAxMSAxNi41NTIzIDExIDE2VjkuNDE0MjFaXCJcbiAgICAgICAgICBmaWxsPVwiYmxhY2tcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiSlNPTi5zdHJpbmdpZnkoc29ydGVkQ29sdW1uPy5wcm9wZXJ0eSkgPT09IEpTT04uc3RyaW5naWZ5KGNvbHVtbikgJiYgIXNvcnRlZENvbHVtbi5hc2NlbmRpbmdcIj5cbiAgICAgIDxwby1pY29uIGNka0RyYWdIYW5kbGUgKm5nSWY9XCJpY29uTmFtZUxpYiA9PT0gJ1Bob3NwaG9ySWNvbidcIiBwLWljb249XCJJQ09OX1NPUlRfREVTQ1wiPjwvcG8taWNvbj5cbiAgICAgIDxzdmdcbiAgICAgICAgKm5nSWY9XCJpY29uTmFtZUxpYiA9PT0gJ1BvSWNvbidcIlxuICAgICAgICB3aWR0aD1cIjE2XCJcbiAgICAgICAgaGVpZ2h0PVwiMTZcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgID5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICBkPVwiTTkuNzA3MTEgMTMuMjkyOUwxMSAxNC41ODU4VjdDMTEgNi40NDc3MiAxMS40NDc3IDYgMTIgNkMxMi41NTIzIDYgMTMgNi40NDc3MiAxMyA3VjE0LjU4NThMMTQuMjkyOSAxMy4yOTI5QzE0LjY4MzQgMTIuOTAyNCAxNS4zMTY2IDEyLjkwMjQgMTUuNzA3MSAxMy4yOTI5QzE2LjA5NzYgMTMuNjgzNCAxNi4wOTc2IDE0LjMxNjYgMTUuNzA3MSAxNC43MDcxTDEyLjcwNzEgMTcuNzA3MUMxMi4zMTY2IDE4LjA5NzYgMTEuNjgzNCAxOC4wOTc2IDExLjI5MjkgMTcuNzA3MUw4LjI5Mjg5IDE0LjcwNzFDNy45MDIzNyAxNC4zMTY2IDcuOTAyMzcgMTMuNjgzNCA4LjI5Mjg5IDEzLjI5MjlDOC42ODM0MiAxMi45MDI0IDkuMzE2NTggMTIuOTAyNCA5LjcwNzExIDEzLjI5MjlaXCJcbiAgICAgICAgICBmaWxsPVwiYmxhY2tcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbm9Db2x1bW5zV2l0aEhlaWdodD5cbiAgPGRpdiBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1maXhlZC1pbm5lclwiIFtzdHlsZS53aWR0aC5weF09XCJoZWFkZXJXaWR0aFwiPlxuICAgIHt7IGhhc1ZhbGlkQ29sdW1ucyA/IGxpdGVyYWxzLm5vVmlzaWJsZUNvbHVtbiA6IGxpdGVyYWxzLm5vQ29sdW1ucyB9fVxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbm9Db2x1bW5zV2l0aG91dEhlaWdodD5cbiAge3sgaGFzVmFsaWRDb2x1bW5zID8gbGl0ZXJhbHMubm9WaXNpYmxlQ29sdW1uIDogbGl0ZXJhbHMubm9Db2x1bW5zIH19XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIFRlbXBsYXRlIGRlIGHDp8O1ZXMgLS0+XG48bmctdGVtcGxhdGUgI0FjdGlvbnNDb2x1bW5UZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIj5cbiAgPHRkXG4gICAgKm5nSWY9XCJpc1NpbmdsZUFjdGlvblwiXG4gICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4gcG8tdGFibGUtY29sdW1uLXNpbmdsZS1hY3Rpb25cIlxuICAgIFtzdHlsZS53aWR0aC5weF09XCJoZWlnaHQgJiYgYWN0aW9uUmlnaHQgPyBnZXRXaWR0aENvbHVtbk1hbmFnZXIoKSA6ICcnXCJcbiAgICBbc3R5bGUubWF4LXdpZHRoLnB4XT1cImhlaWdodCAmJiAhYWN0aW9uUmlnaHQgPyBnZXRDb2x1bW5XaWR0aEFjdGlvbnNMZWZ0KCkgOiAnJ1wiXG4gICAgW3N0eWxlLndpZHRoLnB4XT1cImhlaWdodCAmJiAhYWN0aW9uUmlnaHQgPyBnZXRDb2x1bW5XaWR0aEFjdGlvbnNMZWZ0KCkgOiAnJ1wiXG4gID5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cImZpcnN0QWN0aW9uLnZpc2libGUgIT09IGZhbHNlXCJcbiAgICAgIGNsYXNzPVwicG8tdGFibGUtc2luZ2xlLWFjdGlvbiBwby1jbGlja2FibGVcIlxuICAgICAgW2NsYXNzLnBvLXRhYmxlLWFjdGlvbi1kaXNhYmxlZF09XCJmaXJzdEFjdGlvbi5kaXNhYmxlZCA/IHZhbGlkYXRlVGFibGVBY3Rpb24ocm93LCBmaXJzdEFjdGlvbikgOiBmYWxzZVwiXG4gICAgICAoY2xpY2spPVwiZXhlY3V0ZVRhYmxlQWN0aW9uKHJvdywgZmlyc3RBY3Rpb24pXCJcbiAgICA+XG4gICAgICA8cG8taWNvbiAqbmdJZj1cImZpcnN0QWN0aW9uLmljb25cIiBjbGFzcz1cInBvLXRhYmxlLXNpbmdsZS1hY3Rpb24tY29udGVudFwiIFtwLWljb25dPVwiZmlyc3RBY3Rpb24uaWNvblwiPjwvcG8taWNvbj5cbiAgICAgIHt7IGZpcnN0QWN0aW9uLmxhYmVsIH19XG4gICAgPC9kaXY+XG4gIDwvdGQ+XG5cbiAgPHRkICpuZ0lmPVwidmlzaWJsZUFjdGlvbnMubGVuZ3RoID4gMVwiIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWFjdGlvbnNcIj5cbiAgICA8ZGl2ICNwb3B1cFRhcmdldCBjbGFzcz1cInBvLWNsaWNrYWJsZVwiIChjbGljayk9XCJ0b2dnbGVQb3B1cChyb3csIHBvcHVwVGFyZ2V0KVwiPlxuICAgICAgPHBvLWljb24gcC1pY29uPVwiSUNPTl9NT1JFXCI+PC9wby1pY29uPlxuICAgIDwvZGl2PlxuICA8L3RkPlxuPC9uZy10ZW1wbGF0ZT5cblxuPHBvLXRhYmxlLWNvbHVtbi1tYW5hZ2VyXG4gICpuZ0lmPVwiIWhpZGVDb2x1bW5zTWFuYWdlclwiXG4gIFtwLWNvbHVtbnNdPVwiY29sdW1uc1wiXG4gIFtwLW1heC1jb2x1bW5zXT1cIm1heENvbHVtbnNcIlxuICBbcC10YXJnZXRdPVwiY29sdW1uTWFuYWdlclRhcmdldFwiXG4gIFtwLWxhc3QtdmlzaWJsZS1jb2x1bW5zLXNlbGVjdGVkXT1cImxhc3RWaXNpYmxlQ29sdW1uc1NlbGVjdGVkXCJcbiAgW3AtaGlkZS1hY3Rpb24tZml4ZWQtY29sdW1uc109XCJoaWRlQWN0aW9uRml4ZWRDb2x1bW5zXCJcbiAgKHAtdmlzaWJsZS1jb2x1bW5zLWNoYW5nZSk9XCJvblZpc2libGVDb2x1bW5zQ2hhbmdlKCRldmVudClcIlxuICAocC1jaGFuZ2UtdmlzaWJsZS1jb2x1bW5zKT1cIm9uQ2hhbmdlVmlzaWJsZUNvbHVtbnMoJGV2ZW50KVwiXG4gIFtwLWNvbHVtbnMtZGVmYXVsdF09XCJpbml0aWFsQ29sdW1uc1wiXG4gIChwLWluaXRpYWwtY29sdW1ucyk9XCJvbkNvbHVtblJlc3RvcmVNYW5hZ2VyKCRldmVudClcIlxuPlxuPC9wby10YWJsZS1jb2x1bW4tbWFuYWdlcj5cblxuPHBvLW1vZGFsXG4gICNtb2RhbERlbGV0ZVxuICBbcC10aXRsZV09XCJsaXRlcmFscy5kZWxldGVcIlxuICBbcC1wcmltYXJ5LWFjdGlvbl09XCJjb25maXJtXCJcbiAgW3Atc2Vjb25kYXJ5LWFjdGlvbl09XCJjbG9zZVwiXG4gIFtwLWNsaWNrLW91dF09XCJ0cnVlXCJcbj5cbiAgPHAgY2xhc3M9XCJwby1mb250LXRleHQtbGFyZ2VcIj57eyBsaXRlcmFscy5ib2R5RGVsZXRlIH19PC9wPlxuPC9wby1tb2RhbD5cbiJdfQ==
|
|
2341
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLXRhYmxlL3BvLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby10YWJsZS9wby10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRSxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHdEUsT0FBTyxFQUdMLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUVmLFVBQVUsRUFDVixNQUFNLEVBSU4sUUFBUSxFQUlSLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBYyxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBaUIsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJOUQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhDLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBR3RHLE9BQU8sRUFBRSxvQkFBb0IsRUFBbUIsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUN6RyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwr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QUNPLGtCQUFrQjtrQkFBdkYsU0FBUzttQkFBQyxvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUVILGFBQWE7a0JBQTdFLFNBQVM7bUJBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBQ08sa0JBQWtCO2tCQUF2RixTQUFTO21CQUFDLG9CQUFvQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBQ0EsZ0JBQWdCO2tCQUFuRixTQUFTO21CQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBRVIsa0JBQWtCO2tCQUEzRSxZQUFZO21CQUFDLG9CQUFvQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNGLGNBQWM7a0JBQW5FLFlBQVk7bUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQzFCLFdBQVc7a0JBQXBDLFNBQVM7bUJBQUMsYUFBYTtZQUN3QyxhQUFhO2tCQUE1RSxTQUFTO21CQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUNDLFFBQVE7a0JBQXRFLFNBQVM7bUJBQUMsd0JBQXdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBaURoQixtQkFBbUI7a0JBQXhELFNBQVM7bUJBQUMscUJBQXFCO1lBU1csd0JBQXdCO2tCQUFsRSxTQUFTO21CQUFDLDBCQUEwQjs7a0ZBakYxQixnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcblxuaW1wb3J0IHsgRGVjaW1hbFBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERvQ2hlY2ssXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgSXRlcmFibGVEaWZmZXJzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFF1ZXJ5TGlzdCxcbiAgUmVuZGVyZXIyLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG4gIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBQb0RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG8tZGF0ZS9wby1kYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBvTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvLW5vdGlmaWNhdGlvbi9wby1ub3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbCc7XG5pbXBvcnQgeyBQb01vZGFsQWN0aW9uLCBQb01vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vcG8tbW9kYWwnO1xuaW1wb3J0IHsgUG9Qb3B1cENvbXBvbmVudCB9IGZyb20gJy4uL3BvLXBvcHVwL3BvLXBvcHVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb1RhYmxlQ29sdW1uTGFiZWwgfSBmcm9tICcuL3BvLXRhYmxlLWNvbHVtbi1sYWJlbC9wby10YWJsZS1jb2x1bW4tbGFiZWwuaW50ZXJmYWNlJztcblxuaW1wb3J0IHsgdXVpZCB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgUG9QYWdlU2xpZGVDb21wb25lbnQgfSBmcm9tICcuLi9wby1wYWdlJztcbmltcG9ydCB7IFBvVGFibGVSb3dUZW1wbGF0ZUFycm93RGlyZWN0aW9uIH0gZnJvbSAnLi9lbnVtcy9wby10YWJsZS1yb3ctdGVtcGxhdGUtYXJyb3ctZGlyZWN0aW9uLmVudW0nO1xuaW1wb3J0IHsgUG9UYWJsZUFjdGlvbiB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby10YWJsZS1hY3Rpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFibGVDb2x1bW4gfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tdGFibGUtY29sdW1uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1RhYmxlQmFzZUNvbXBvbmVudCwgUXVlcnlQYXJhbXNUeXBlIH0gZnJvbSAnLi9wby10YWJsZS1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb1RhYmxlQ2VsbFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9wby10YWJsZS1jZWxsLXRlbXBsYXRlL3BvLXRhYmxlLWNlbGwtdGVtcGxhdGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFBvVGFibGVDb2x1bW5UZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vcG8tdGFibGUtY29sdW1uLXRlbXBsYXRlL3BvLXRhYmxlLWNvbHVtbi10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUG9UYWJsZVJvd1RlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9wby10YWJsZS1yb3ctdGVtcGxhdGUvcG8tdGFibGUtcm93LXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBQb1RhYmxlU3VidGl0bGVDb2x1bW4gfSBmcm9tICcuL3BvLXRhYmxlLXN1YnRpdGxlLWZvb3Rlci9wby10YWJsZS1zdWJ0aXRsZS1jb2x1bW4uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFibGVTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wby10YWJsZS5zZXJ2aWNlJztcbmltcG9ydCB7IElDT05TX0RJQ1RJT05BUlksIFBvSWNvbkRpY3Rpb25hcnkgfSBmcm9tICcuLi9wby1pY29uJztcblxuLyoqXG4gKiBAZG9jc0V4dGVuZHMgUG9UYWJsZUJhc2VDb21wb25lbnRcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby10YWJsZS1iYXNpY1wiIHRpdGxlPVwiUE8gVGFibGUgQmFzaWNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWJhc2ljL3NhbXBsZS1wby10YWJsZS1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtYmFzaWMvc2FtcGxlLXBvLXRhYmxlLWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFibGUtbGFic1wiIHRpdGxlPVwiUE8gVGFibGUgTGFic1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtbGFicy9zYW1wbGUtcG8tdGFibGUtbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtbGFicy9zYW1wbGUtcG8tdGFibGUtbGFicy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1sYWJzL3NhbXBsZS1wby10YWJsZS1sYWJzLmNvbXBvbmVudC5lMmUtc3BlYy50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1sYWJzL3NhbXBsZS1wby10YWJsZS1sYWJzLmNvbXBvbmVudC5wby50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1sYWJzL3NhbXBsZS1wby10YWJsZS1sYWJzLnNlcnZpY2UudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby10YWJsZS13aXRoLWFwaVwiIHRpdGxlPVwiUE8gVGFibGUgdXNpbmcgQVBJXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS13aXRoLWFwaS9zYW1wbGUtcG8tdGFibGUtd2l0aC1hcGkuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLXdpdGgtYXBpL3NhbXBsZS1wby10YWJsZS13aXRoLWFwaS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhYmxlLXRyYW5zcG9ydFwiIHRpdGxlPVwiUE8gVGFibGUgLSBUcmFuc3BvcnRcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLXRyYW5zcG9ydC9zYW1wbGUtcG8tdGFibGUtdHJhbnNwb3J0LmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS10cmFuc3BvcnQvc2FtcGxlLXBvLXRhYmxlLXRyYW5zcG9ydC5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS10cmFuc3BvcnQvc2FtcGxlLXBvLXRhYmxlLXRyYW5zcG9ydC5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFibGUtYWlyZmFyZVwiIHRpdGxlPVwiUE8gVGFibGUgLSBBaXJmYXJlXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1haXJmYXJlL3NhbXBsZS1wby10YWJsZS1haXJmYXJlLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1haXJmYXJlL3NhbXBsZS1wby10YWJsZS1haXJmYXJlLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWFpcmZhcmUvc2FtcGxlLXBvLXRhYmxlLWFpcmZhcmUuc2VydmljZS50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhYmxlLWNvbXBvbmVudHNcIiB0aXRsZT1cIlBPIFRhYmxlIC0gUG8gRmllbGQgQ29tcG9uZW50c1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy9zYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy9zYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy5lbnVtLnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMvc2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy9zYW1wbGUtcG8tdGFibGUtY29tcG9uZW50cy5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMvc2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMuY29tcG9uZW50LmNzc1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhYmxlLWhlcm9lc1wiIHRpdGxlPVwiUE8gVGFibGUgLSBIZXJvZXNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWhlcm9lcy9zYW1wbGUtcG8tdGFibGUtaGVyb2VzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1oZXJvZXMvc2FtcGxlLXBvLXRhYmxlLWhlcm9lcy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1oZXJvZXMvc2FtcGxlLXBvLXRhYmxlLWhlcm9lcy5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFibGUtZHJhZ2dhYmxlXCIgdGl0bGU9XCJQTyBUYWJsZSBEcmFnIGFuZCBEcm9wXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1kcmFnZ2FibGUvc2FtcGxlLXBvLXRhYmxlLWRyYWdnYWJsZS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1kcmFnZ2FibGUvc2FtcGxlLXBvLXRhYmxlLWRyYWdnYWJsZS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wby10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1BvRGF0ZVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIFBvVGFibGVDb21wb25lbnQgZXh0ZW5kcyBQb1RhYmxlQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIERvQ2hlY2ssIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgQENvbnRlbnRDaGlsZChQb1RhYmxlUm93VGVtcGxhdGVEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIHRhYmxlUm93VGVtcGxhdGU6IFBvVGFibGVSb3dUZW1wbGF0ZURpcmVjdGl2ZTtcbiAgQENvbnRlbnRDaGlsZChQb1RhYmxlQ2VsbFRlbXBsYXRlRGlyZWN0aXZlKSB0YWJsZUNlbGxUZW1wbGF0ZTogUG9UYWJsZUNlbGxUZW1wbGF0ZURpcmVjdGl2ZTtcblxuICBAQ29udGVudENoaWxkcmVuKFBvVGFibGVDb2x1bW5UZW1wbGF0ZURpcmVjdGl2ZSkgdGFibGVDb2x1bW5UZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxQb1RhYmxlQ29sdW1uVGVtcGxhdGVEaXJlY3RpdmU+O1xuXG4gIEBWaWV3Q2hpbGQoJ25vQ29sdW1uc0hlYWRlcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBub0NvbHVtbnNIZWFkZXI7XG4gIEBWaWV3Q2hpbGQoJ3BvcHVwJykgcG9Qb3B1cENvbXBvbmVudDogUG9Qb3B1cENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZChQb01vZGFsQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBtb2RhbERlbGV0ZTogUG9Nb2RhbENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgndGFibGVGb290ZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgdGFibGVGb290ZXJFbGVtZW50O1xuICBAVmlld0NoaWxkKCd0YWJsZVdyYXBwZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgdGFibGVXcmFwcGVyRWxlbWVudDtcblxuICBAVmlld0NoaWxkKCd0YWJsZVRlbXBsYXRlJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pIHRhYmxlVGVtcGxhdGU7XG4gIEBWaWV3Q2hpbGQoJ3RhYmxlVmlydHVhbFNjcm9sbCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSB0YWJsZVZpcnR1YWxTY3JvbGw7XG5cbiAgQFZpZXdDaGlsZCgnY29sdW1uTWFuYWdlcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSBjb2x1bW5NYW5hZ2VyO1xuICBAVmlld0NoaWxkKCdjb2x1bW5CYXRjaEFjdGlvbnMnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgY29sdW1uQmF0Y2hBY3Rpb25zO1xuICBAVmlld0NoaWxkKCdjb2x1bW5BY3Rpb25MZWZ0JywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pIGNvbHVtbkFjdGlvbkxlZnQ7XG5cbiAgQFZpZXdDaGlsZHJlbignYWN0aW9uc0ljb25FbGVtZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGFjdGlvbnNJY29uRWxlbWVudDogUXVlcnlMaXN0PGFueT47XG4gIEBWaWV3Q2hpbGRyZW4oJ2FjdGlvbnNFbGVtZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGFjdGlvbnNFbGVtZW50OiBRdWVyeUxpc3Q8YW55PjtcbiAgQFZpZXdDaGlsZCgnZmlsdGVySW5wdXQnKSBmaWx0ZXJJbnB1dDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgncG9TZWFyY2hJbnB1dCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIHBvU2VhcmNoSW5wdXQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LCB7IHN0YXRpYzogZmFsc2UgfSkgcHVibGljIHZpZXdQb3J0OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XG5cbiAgcG9Ob3RpZmljYXRpb24gPSBpbmplY3QoUG9Ob3RpZmljYXRpb25TZXJ2aWNlKTtcblxuICBoZWlnaHRUYWJsZUNvbnRhaW5lcjogbnVtYmVyO1xuICBoZWlnaHRUYWJsZVZpcnR1YWw6IG51bWJlcjtcbiAgcG9wdXBUYXJnZXQ7XG4gIHRhYmxlT3BhY2l0eTogbnVtYmVyID0gMDtcbiAgdG9vbHRpcFRleHQ6IHN0cmluZztcbiAgaXRlbVNpemU6IG51bWJlciA9IDQ4O1xuICBsYXN0VmlzaWJsZUNvbHVtbnNTZWxlY3RlZDogQXJyYXk8UG9UYWJsZUNvbHVtbj47XG4gIHRhZ0NvbG9yOiBzdHJpbmc7XG4gIGlkUmFkaW86IHN0cmluZztcbiAgaW5wdXRGaWVsZFZhbHVlID0gJyc7XG4gIEpTT046IEpTT047XG4gIG5ld09yZGVyQ29sdW1uczogQXJyYXk8UG9UYWJsZUNvbHVtbj47XG4gIHNpemVMb2FkaW5nOiBzdHJpbmcgPSAnc20nO1xuICBoZWFkZXJXaWR0aDogbnVtYmVyO1xuXG4gIGNsb3NlOiBQb01vZGFsQWN0aW9uID0ge1xuICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgdGhpcy5tb2RhbERlbGV0ZS5jbG9zZSgpO1xuICAgIH0sXG4gICAgbGFiZWw6IHRoaXMubGl0ZXJhbHMuY2FuY2VsLFxuICAgIGRhbmdlcjogdHJ1ZVxuICB9O1xuXG4gIGNvbmZpcm06IFBvTW9kYWxBY3Rpb24gPSB7XG4gICAgYWN0aW9uOiAoKSA9PiB7XG4gICAgICB0aGlzLmRlbGV0ZUl0ZW1zKCk7XG4gICAgfSxcbiAgICBsYWJlbDogdGhpcy5saXRlcmFscy5kZWxldGVcbiAgfTtcblxuICBwcml2YXRlIF9jb2x1bW5NYW5hZ2VyVGFyZ2V0OiBFbGVtZW50UmVmO1xuICBwcml2YXRlIF9jb2x1bW5NYW5hZ2VyVGFyZ2V0Rml4ZWQ6IEVsZW1lbnRSZWY7XG4gIHByaXZhdGUgX2ljb25Ub2tlbjogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgcHJpdmF0ZSBkaWZmZXI7XG4gIHByaXZhdGUgZm9vdGVySGVpZ2h0O1xuICBwcml2YXRlIGhlYWRlckhlaWdodDtcbiAgcHJpdmF0ZSB0aW1lb3V0UmVzaXplO1xuICBwcml2YXRlIHZpc2libGVFbGVtZW50ID0gZmFsc2U7XG4gIHByaXZhdGUgc2Nyb2xsRXZlbnQkOiBPYnNlcnZhYmxlPGFueT47XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uU2Nyb2xsRXZlbnQ6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25TZXJ2aWNlOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgcHJpdmF0ZSBjbGlja0xpc3RlbmVyOiAoKSA9PiB2b2lkO1xuICBwcml2YXRlIHJlc2l6ZUxpc3RlbmVyOiAoKSA9PiB2b2lkO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbHVtbk1hbmFnZXJUYXJnZXQnKSBzZXQgY29sdW1uTWFuYWdlclRhcmdldCh2YWx1ZTogRWxlbWVudFJlZikge1xuICAgIHRoaXMuX2NvbHVtbk1hbmFnZXJUYXJnZXQgPSB2YWx1ZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGdldCBjb2x1bW5NYW5hZ2VyVGFyZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5NYW5hZ2VyVGFyZ2V0O1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnY29sdW1uTWFuYWdlclRhcmdldEZpeGVkJykgc2V0IGNvbHVtbk1hbmFnZXJUYXJnZXRGaXhlZCh2YWx1ZTogRWxlbWVudFJlZikge1xuICAgIHRoaXMuX2NvbHVtbk1hbmFnZXJUYXJnZXRGaXhlZCA9IHZhbHVlO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZ2V0IGNvbHVtbk1hbmFnZXJUYXJnZXRGaXhlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29sdW1uTWFuYWdlclRhcmdldEZpeGVkO1xuICB9XG5cbiAgZ2V0IGljb25OYW1lTGliKCkge1xuICAgIHJldHVybiB0aGlzLl9pY29uVG9rZW4uTkFNRV9MSUI7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwb0RhdGU6IFBvRGF0ZVNlcnZpY2UsXG4gICAgZGlmZmVyczogSXRlcmFibGVEaWZmZXJzLFxuICAgIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcG9MYW5ndWFnZVNlcnZpY2U6IFBvTGFuZ3VhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlLFxuICAgIHByaXZhdGUgZGVmYXVsdFNlcnZpY2U6IFBvVGFibGVTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoSUNPTlNfRElDVElPTkFSWSkgdmFsdWU6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH1cbiAgKSB7XG4gICAgc3VwZXIocG9EYXRlLCBwb0xhbmd1YWdlU2VydmljZSwgZGVmYXVsdFNlcnZpY2UpO1xuICAgIHRoaXMuSlNPTiA9IEpTT047XG4gICAgdGhpcy5kaWZmZXIgPSBkaWZmZXJzLmZpbmQoW10pLmNyZWF0ZShudWxsKTtcblxuICAgIC8vIFRPRE86ICM1NTUwIGFvIHJlbW92ZXIgZXN0ZSBsaXN0ZW5lciwgbm8gcG9ydGFsLCBxdWFuZG8gYXMgY29sdW5hcyBmb3JlbSBmaXhhcyBuw6NvIHNvZnJlbVxuICAgIC8vIGFsdGVyYcOnw6NvIGRlIGxhcmd1cmEsIHBvaXMgbyBuZ0RvQ2hlY2sgbsOjbyDDqSBleGVjdXRhZG8uXG4gICAgdGhpcy5jbGlja0xpc3RlbmVyID0gcmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdjbGljaycsICgpID0+IHt9KTtcblxuICAgIHRoaXMucmVzaXplTGlzdGVuZXIgPSByZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdyZXNpemUnLCAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgdGhpcy5kZWJvdW5jZVJlc2l6ZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5faWNvblRva2VuID0gdmFsdWUgPz8gUG9JY29uRGljdGlvbmFyeTtcbiAgfVxuXG4gIGdldCBoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0KCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlUm93VGVtcGxhdGU/LnRhYmxlUm93VGVtcGxhdGVBcnJvd0RpcmVjdGlvbiA9PT0gUG9UYWJsZVJvd1RlbXBsYXRlQXJyb3dEaXJlY3Rpb24uUmlnaHQ7XG4gIH1cblxuICBnZXQgY29sdW1uQ291bnQoKSB7XG4gICAgY29uc3QgY29sdW1uQ291bnQgPVxuICAgICAgdGhpcy5tYWluQ29sdW1ucy5sZW5ndGggK1xuICAgICAgKHRoaXMuYWN0aW9ucy5sZW5ndGggPiAwID8gMSA6IDApICtcbiAgICAgICh0aGlzLnNlbGVjdGFibGUgPyAxIDogMCkgK1xuICAgICAgKCF0aGlzLmhpZGVEZXRhaWwgJiYgdGhpcy5jb2x1bW5NYXN0ZXJEZXRhaWwgIT09IHVuZGVmaW5lZCA/IDEgOiAwKTtcblxuICAgIHJldHVybiBjb2x1bW5Db3VudCB8fCAxO1xuICB9XG5cbiAgZ2V0IGNvbHVtbkNvdW50Rm9yTWFzdGVyRGV0YWlsKCkge1xuICAgIC8vIGNhc28gdGl2ZXIgYcOnw7VlcyBzZXLDoSB1dGlsaXphZG8gYSBzdWEgY29sdW5hIHBhcmEgZXhpYmlyIG8gY29sdW1uTWFuYWdlclxuICAgIHJldHVybiB0aGlzLm1haW5Db2x1bW5zLmxlbmd0aCArIDEgKyAodGhpcy5hY3Rpb25zLmxlbmd0aCA+IDAgPyAxIDogMCkgKyAodGhpcy5zZWxlY3RhYmxlID8gMSA6IDApO1xuICB9XG5cbiAgZ2V0IGRldGFpbEhpZGVTZWxlY3QoKSB7XG4gICAgY29uc3QgbWFzdGVyRGV0YWlsID0gdGhpcy5jb2x1bW5NYXN0ZXJEZXRhaWw7XG4gICAgcmV0dXJuIG1hc3RlckRldGFpbCAmJiBtYXN0ZXJEZXRhaWwuZGV0YWlsID8gbWFzdGVyRGV0YWlsLmRldGFpbC5oaWRlU2VsZWN0IDogZmFsc2U7XG4gIH1cblxuICBnZXQgaGFzVmlzaWJsZUFjdGlvbnMoKSB7XG4gICAgcmV0dXJuICEhdGhpcy52aXNpYmxlQWN0aW9ucy5sZW5ndGg7XG4gIH1cblxuICBnZXQgZmlyc3RBY3Rpb24oKTogUG9UYWJsZUFjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZUFjdGlvbnMgJiYgdGhpcy52aXNpYmxlQWN0aW9uc1swXTtcbiAgfVxuXG4gIGdldCBoYXNGb290ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzSXRlbXMgJiYgdGhpcy5oYXNWaXNpYmxlU3VidGl0bGVDb2x1bW5zO1xuICB9XG5cbiAgZ2V0IGhhc01hc3RlckRldGFpbENvbHVtbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5oYXNNYWluQ29sdW1ucyAmJiB0aGlzLmhhc0l0ZW1zICYmICF0aGlzLmhpZGVEZXRhaWwgJiYgISEodGhpcy5jb2x1bW5NYXN0ZXJEZXRhaWwgfHwgdGhpcy5oYXNSb3dUZW1wbGF0ZSlcbiAgICApO1xuICB9XG5cbiAgZ2V0IGhhc1Jvd1RlbXBsYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMudGFibGVSb3dUZW1wbGF0ZTtcbiAgfVxuXG4gIGdldCBoYXNTZWxlY3RhYmxlQ29sdW1uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGFibGUgJiYgdGhpcy5oYXNJdGVtcyAmJiB0aGlzLmhhc01haW5Db2x1bW5zO1xuICB9XG5cbiAgZ2V0IGhhc1ZhbGlkQ29sdW1ucygpIHtcbiAgICByZXR1cm4gISF0aGlzLnZhbGlkQ29sdW1ucy5sZW5ndGg7XG4gIH1cblxuICBnZXQgaGFzVmlzaWJsZVN1YnRpdGxlQ29sdW1ucygpIHtcbiAgICByZXR1cm4gdGhpcy5zdWJ0aXRsZUNvbHVtbnMuc29tZShjb2x1bW4gPT4gY29sdW1uLnZpc2libGUgIT09IGZhbHNlKTtcbiAgfVxuXG4gIGdldCBpc1NpbmdsZUFjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy52aXNpYmxlQWN0aW9ucy5sZW5ndGggPT09IDE7XG4gIH1cblxuICBnZXQgaXNEcmFnZ2FibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZHJhZ2dhYmxlO1xuICB9XG5cbiAgcHVibGljIGdldCBpbnZlcnNlT2ZUcmFuc2xhdGlvbigpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy52aWV3UG9ydCB8fCAhdGhpcy52aWV3UG9ydFsnX3JlbmRlcmVkQ29udGVudE9mZnNldCddKSB7XG4gICAgICByZXR1cm4gJy0wcHgnO1xuICAgIH1cblxuICAgIGNvbnN0IG9mZnNldCA9IHRoaXMudmlld1BvcnRbJ19yZW5kZXJlZENvbnRlbnRPZmZzZXQnXTtcblxuICAgIHJldHVybiBgLSR7b2Zmc2V0fXB4YDtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaWRSYWRpbyA9IGBwby1yYWRpby0ke3V1aWQoKX1gO1xuICB9XG5cbiAgY2hhbmdlSGVhZGVyV2lkdGgoKSB7XG4gICAgaWYgKHRoaXMubm9Db2x1bW5zSGVhZGVyKSB7XG4gICAgICB0aGlzLmhlYWRlcldpZHRoID0gdGhpcy5ub0NvbHVtbnNIZWFkZXI/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIHRoaXMuY2hhbmdlSGVhZGVyV2lkdGgoKTtcbiAgICB0aGlzLmNoYW5nZVNpemVMb2FkaW5nKCk7XG4gICAgdGhpcy5hcHBseUZpeGVkQ29sdW1ucygpO1xuICB9XG5cbiAgc2hvd01vcmVJbmZpbml0ZVNjcm9sbCh7IHRhcmdldCB9KTogdm9pZCB7XG4gICAgY29uc3Qgc2Nyb2xsUG9zaXRpb24gPSB0YXJnZXQub2Zmc2V0SGVpZ2h0ICsgdGFyZ2V0LnNjcm9sbFRvcDtcbiAgICBpZiAoIXRoaXMuc2hvd01vcmVEaXNhYmxlZCAmJiBzY3JvbGxQb3NpdGlvbiA+PSB0YXJnZXQuc2Nyb2xsSGVpZ2h0ICogKHRoaXMuaW5maW5pdGVTY3JvbGxEaXN0YW5jZSAvIDExMCkpIHtcbiAgICAgIHRoaXMub25TaG93TW9yZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nRG9DaGVjaygpIHtcbiAgICB0aGlzLmFwcGx5Rml4ZWRDb2x1bW5zKCk7XG4gICAgdGhpcy5jaGVja0NoYW5nZXNJdGVtcygpO1xuICAgIHRoaXMudmVyaWZ5Q2FsY3VsYXRlSGVpZ2h0VGFibGVDb250YWluZXIoKTtcblxuICAgIC8vIFBlcm1pdGUgcXVlIG9zIGNhYmXDp2FsaG9zIHNlamFtIGNhbGN1bGFkb3MgbmEgcHJpbWVpcmEgdmV6IHF1ZSBvIGNvbXBvbmVudGUgdG9ybmEtc2Ugdmlzw612ZWwsXG4gICAgLy8gZXZpdGFuZG8gY29tIGlzc28sIHByb2JsZW1hcyBjb20gVGFicyBvdSBEaXZzIHF1ZSBpbmljaWVtIGVzY29uZGlkYXMuXG4gICAgaWYgKHRoaXMudGFibGVXcmFwcGVyRWxlbWVudD8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCAmJiAhdGhpcy52aXNpYmxlRWxlbWVudCAmJiB0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICB0aGlzLmRlYm91bmNlUmVzaXplKCk7XG4gICAgICB0aGlzLmNoZWNrSW5maW5pdGVTY3JvbGwoKTtcbiAgICAgIHRoaXMudmlzaWJsZUVsZW1lbnQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMucmVtb3ZlTGlzdGVuZXJzKCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25TZXJ2aWNlPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcmVzcG9uc8OhdmVsIHBvciByZWFsaXphciBidXNjYSBubyBzZXJ2acOnbyBkZSBkYWRvcyBwb2RlbmRvIGluZm9ybWFyIGZpbHRyb3MgZSBjb20gbyByZXRvcm5vLCBhdHVhbGl6YSBhIHRhYmVsYS5cbiAgICpcbiAgICogQ2FzbyBuw6NvIHNlamEgaW5mb3JtYWRvIHBhcsOibWV0cm8sIG5hZGEgc2Vyw6EgYWRpY2lvbmFkbyBhbyBHRVQsIGNvbmZvcm1lIGFiYWl4bzpcbiAgICogYGBgXG4gICAqIHVybCArID9wYWdlPTEmcGFnZVNpemU9MTBcbiAgICogYGBgXG4gICAqID4gT2JzOiBvcyBwYXLDom1ldHJvcyBgcGFnZWAgZSBgcGFnZVNpemVgIHNlbXByZSBzZXLDo28gY2hhbWFkb3MgaW5kZXBlbmRlbnRlIGRlIHNlciBlbnZpYWRvcyBvdXRyb3MgcGFyw6JtZXRyb3MuXG4gICAqXG4gICAqIENhc28gc2VqYW0gaW5mb3JtYWRvcyBvcyBwYXLDom1ldHJvcyBgeyBuYW1lOiAnSk9ITicsIGFnZTogJzIzJyB9YCwgdG9kb3Mgc2Vyw6NvIGFkaWNpb25hZG9zIGFvIEdFVCwgY29uZm9ybWUgYWJhaXhvOlxuICAgKiBgYGBcbiAgICogdXJsICsgP3BhZ2U9MSZwYWdlU2l6ZT0xMCZuYW1lPUpPSE4mYWdlPTIzXG4gICAqIGBgYFxuICAgKlxuICAgKiBAcGFyYW0geyB7IGtleTogdmFsdWUgfSB9IHF1ZXJ5UGFyYW1zIEZvcm1hdG8gZG8gb2JqZXRvIGEgc2VyIGVudmlhZG8uXG4gICAqID4gUG9kZSBzZXIgdXRpbGl6YWRhIHF1YWxxdWVyIHN0cmluZyBjb21vIGtleSwgZSBxdWFscXVlciBzdHJpbmcgb3UgbnVtYmVyIGNvbW8gdmFsdWUuXG4gICAqL1xuICBhcHBseUZpbHRlcnMocXVlcnlQYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IFF1ZXJ5UGFyYW1zVHlwZSB9KSB7XG4gICAgdGhpcy5wYWdlID0gMTtcbiAgICB0aGlzLmluaXRpYWxpemVEYXRhKHF1ZXJ5UGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmljYSBzZSBjb2x1bW5zIHBvc3N1ZW0gYSBwcm9wcmllZGFkZSB3aWR0aC5cbiAgICovXG4gIGFwcGx5Rml4ZWRDb2x1bW5zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5jb2x1bW5zLnNvbWUoY29sdW1uID0+ICFjb2x1bW4ud2lkdGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcXVlIGNvbGFwc2EgdW1hIGxpbmhhIGNvbSBkZXRhbGhlIHF1YW5kbyBleGVjdXRhZGEuXG4gICAqXG4gICAqIEBwYXJhbSB7IG51bWJlciB9IHJvd0luZGV4IMONbmRpY2UgZGEgbGluaGEgcXVlIHNlcsOhIGNvbGFwc2FkYS5cbiAgICogPiBBbyByZW9yZGVuYXIgb3MgZGFkb3MgZGEgdGFiZWxhLCBvIHZhbG9yIGNvbnRpZG8gbmVzdGUgw61uZGljZSBzZXLDoSBhbHRlcmFkbyBjb25mb3JtZSBhIG9yZGVuYcOnw6NvLlxuICAgKi9cbiAgY29sbGFwc2Uocm93SW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuc2V0U2hvd0RldGFpbChyb3dJbmRleCwgZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcXVlIGV4cGFuZGUgdW1hIGxpbmhhIGNvbSBkZXRhbGhlIHF1YW5kbyBleGVjdXRhZGEuXG4gICAqXG4gICAqIEBwYXJhbSB7IG51bWJlciB9IHJvd0luZGV4IMONbmRpY2UgZGEgbGluaGEgcXVlIHNlcsOhIGV4cGFuZGlkYS5cbiAgICogPiBBbyByZW9yZGVuYXIgb3MgZGFkb3MgZGEgdGFiZWxhLCBvIHZhbG9yIGNvbnRpZG8gbmVzdGUgw61uZGljZSBzZXLDoSBhbHRlcmFkbyBjb25mb3JtZSBhIG9yZGVuYcOnw6NvLlxuICAgKi9cbiAgZXhwYW5kKHJvd0luZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnNldFNob3dEZXRhaWwocm93SW5kZXgsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldG9ybmEgYXMgbGluaGFzIGRvIGBwby10YWJsZWAgcXVlIGVzdMOjbyBzZWxlY2lvbmFkYXMuXG4gICAqL1xuICBnZXRTZWxlY3RlZFJvd3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMuZmlsdGVyKGl0ZW0gPT4gaXRlbS4kc2VsZWN0ZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldG9ybmEgYXMgbGluaGFzIGRvIGBwby10YWJsZWAgcXVlIG7Do28gZXN0w6NvIHNlbGVjaW9uYWRhcy5cbiAgICovXG4gIGdldFVuc2VsZWN0ZWRSb3dzKCkge1xuICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcihpdGVtID0+ICFpdGVtLiRzZWxlY3RlZCk7XG4gIH1cblxuICAvKipcbiAgICogRGVzbWFyY2EgYXMgbGluaGFzIHF1ZSBlc3TDo28gc2VsZWNpb25hZGFzLlxuICAgKi9cbiAgdW5zZWxlY3RSb3dzKCkge1xuICAgIGNvbnN0IGNvbHVtbkRldGFpbCA9IHRoaXMubmFtZUNvbHVtbkRldGFpbDtcblxuICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGNvbnN0IGRldGFpbEl0ZW1zID0gY29sdW1uRGV0YWlsID8gaXRlbVtjb2x1bW5EZXRhaWxdIDogbnVsbDtcblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGV0YWlsSXRlbXMpKSB7XG4gICAgICAgIGRldGFpbEl0ZW1zLmZvckVhY2goZGV0YWlsSXRlbSA9PiB7XG4gICAgICAgICAgZGV0YWlsSXRlbS4kc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGl0ZW0uJHNlbGVjdGVkID0gZmFsc2U7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNlbGVjdEFsbCA9IGZhbHNlO1xuICB9XG5cbiAgY2hlY2tEaXNhYmxlZChyb3csIGNvbHVtbjogUG9UYWJsZUNvbHVtbikge1xuICAgIHJldHVybiBjb2x1bW4uZGlzYWJsZWQgPyBjb2x1bW4uZGlzYWJsZWQocm93KSA6IGZhbHNlO1xuICB9XG5cbiAgY29udGFpbnNNYXN0ZXJEZXRhaWwocm93KSB7XG4gICAgcmV0dXJuIHJvd1t0aGlzLm5hbWVDb2x1bW5EZXRhaWxdICYmIHJvd1t0aGlzLm5hbWVDb2x1bW5EZXRhaWxdLmxlbmd0aDtcbiAgfVxuXG4gIGV4ZWN1dGVUYWJsZUFjdGlvbihyb3c6IGFueSwgdGFibGVBY3Rpb246IGFueSkge1xuICAgIGlmICghcm93LmRpc2FibGVkICYmICF0aGlzLnZhbGlkYXRlVGFibGVBY3Rpb24ocm93LCB0YWJsZUFjdGlvbikpIHtcbiAgICAgIHRhYmxlQWN0aW9uLmFjdGlvbihyb3cpO1xuICAgICAgdGhpcy50b2dnbGVSb3dBY3Rpb24ocm93KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVzbWFyY2EgdW1hIGxpbmhhIHF1ZSBlc3TDoSBzZWxlY2lvbmFkYS5cbiAgICovXG4gIHVuc2VsZWN0Um93SXRlbShpdGVtZm46IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCAoKGl0ZW0pID0+IGJvb2xlYW4pKSB7XG4gICAgdGhpcy50b2dnbGVTZWxlY3QoaXRlbWZuLCBmYWxzZSk7XG5cbiAgICBpZiAodGhpcy5pdGVtcy5ldmVyeShpdGVtID0+ICFpdGVtLiRzZWxlY3RlZCkpIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VsZWNpb25hIHVtYSBsaW5oYSBkbyAncG8tdGFibGUnLlxuICAgKi9cbiAgc2VsZWN0Um93SXRlbShpdGVtZm46IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCAoKGl0ZW0pID0+IGJvb2xlYW4pKSB7XG4gICAgdGhpcy50b2dnbGVTZWxlY3QoaXRlbWZuLCB0cnVlKTtcblxuICAgIGlmICh0aGlzLml0ZW1zLmV2ZXJ5KGl0ZW0gPT4gaXRlbS4kc2VsZWN0ZWQpKSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kbyByZXNwb25zw6F2ZWwgcGVsYSBleGNsdXPDo28gZGUgaXRlbnMgZW0gbG90ZS5cbiAgICogQ2FzbyBhIHRhYmVsYSBlc3RlamEgZXhlY3V0YW5kbyBhIHByb3ByaWVkYWRlIGBwLXNlcnZpY2UtZGVsZXRlYCwgc2Vyw6EgbmVjZXNzw6FyaW8gZXhjbHVpciAxIGl0ZW0gcG9yIHZlei5cbiAgICpcbiAgICogQW8gdXRpbGl6YXIgYHAtc2VydmljZS1kZWxldGVgIG1hcyBzZW0gYSBwcm9wcmllZGFkZSBgcC1zZXJ2aWNlLWFwaWAsIHNlcsOhIHJlc3BvbnNhYmlsaWRhZGUgZG8gdXN1w6FyaW8gbyB0cmF0YW1lbnRvXG4gICAqIGFww7NzIGEgcmVxdWlzacOnw6NvIERFTEVURSBzZXIgZXhlY3V0YWRhLlxuICAgKlxuICAgKiBDYXNvIGEgdGFiZWxhIHV0aWxpemUgYHAtaGVpZ2h0YCBlIGVzdGVqYSBzZW0gc2VydmnDp28sIMOpIG5lY2Vzc8OhcmlvIGEgcmVhdHJpYnVpw6fDo28gZG9zIGl0ZW5zIHV0aWxpemFuZG8gbyBldmVudG8gYChwLWRlbGV0ZS1pdGVtcylgLCBwb3IgZXhlbXBsbzpcbiAgICpcbiAgICogYGBgXG4gICAqPHBvLXRhYmxlXG4gICAqICAocC1kZWxldGUtaXRlbXMpPVwiaXRlbXMgPSAkZXZlbnRcIlxuICAgKiA+XG4gICAqPC9wby10YWJsZT5cbiAgICogYGBgXG4gICAqL1xuICBkZWxldGVJdGVtcygpIHtcbiAgICBjb25zdCBuZXdJdGVtcyA9IFsuLi50aGlzLml0ZW1zXTtcbiAgICBjb25zdCBuZXdJdGVtc0ZpbHRlcmVkID0gWy4uLm5ld0l0ZW1zXS5maWx0ZXIoaXRlbSA9PiAhaXRlbS4kc2VsZWN0ZWQpO1xuXG4gICAgaWYgKCF0aGlzLnNlcnZpY2VEZWxldGVBcGkpIHtcbiAgICAgIHRoaXMuZGVsZXRlSXRlbXNMb2NhbChuZXdJdGVtcywgbmV3SXRlbXNGaWx0ZXJlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVsZXRlSXRlbXNTZXJ2aWNlKG5ld0l0ZW1zRmlsdGVyZWQpO1xuICAgIH1cbiAgfVxuXG4gIGZvcm1hdE51bWJlcih2YWx1ZTogYW55LCBmb3JtYXQ6IHN0cmluZykge1xuICAgIGlmICghZm9ybWF0KSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKHZhbHVlLCBmb3JtYXQpO1xuICB9XG5cbiAgZ2V0Q2VsbERhdGEocm93OiBhbnksIGNvbHVtbjogUG9UYWJsZUNvbHVtbik6IGFueSB7XG4gICAgY29uc3QgYXJyYXlQcm9wZXJ0eSA9IGNvbHVtbi5wcm9wZXJ0eS5zcGxpdCgnLicpO1xuICAgIGlmIChhcnJheVByb3BlcnR5Lmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbnN0IG5lc3RlZFByb3BlcnRpZXMgPSBhcnJheVByb3BlcnR5O1xuICAgICAgbGV0IHZhbHVlOiBhbnkgPSByb3c7XG4gICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIG5lc3RlZFByb3BlcnRpZXMpIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZVtwcm9wZXJ0eV0gfHwgdmFsdWVbcHJvcGVydHldID09PSAwID8gdmFsdWVbcHJvcGVydHldIDogJyc7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByb3dbY29sdW1uLnByb3BlcnR5XTtcbiAgICB9XG4gIH1cblxuICBnZXRCb29sZWFuTGFiZWwocm93VmFsdWU6IGFueSwgY29sdW1uQm9vbGVhbjogUG9UYWJsZUNvbHVtbik6IHN0cmluZyB7XG4gICAgaWYgKHJvd1ZhbHVlIHx8IHJvd1ZhbHVlID09PSBmYWxzZSB8fCByb3dWYWx1ZSA9PT0gMCkge1xuICAgICAgcm93VmFsdWUgPSBjb252ZXJ0VG9Cb29sZWFuKHJvd1ZhbHVlKTtcblxuICAgICAgaWYgKGNvbHVtbkJvb2xlYW4uYm9vbGVhbikge1xuICAgICAgICByZXR1cm4gcm93VmFsdWUgPyBjb2x1bW5Cb29sZWFuLmJvb2xlYW4udHJ1ZUxhYmVsIHx8ICdTaW0nIDogY29sdW1uQm9vbGVhbi5ib29sZWFuLmZhbHNlTGFiZWwgfHwgJ07Do28nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHJvd1ZhbHVlID8gJ1NpbScgOiAnTsOjbyc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvd1ZhbHVlO1xuICB9XG5cbiAgZ2V0Q29sdW1uSWNvbnMocm93OiBhbnksIGNvbHVtbjogUG9UYWJsZUNvbHVtbikge1xuICAgIGNvbnN0IHJvd0ljb25zID0gdGhpcy5nZXRDZWxsRGF0YShyb3csIGNvbHVtbik7XG5cbiAgICBpZiAoY29sdW1uLmljb25zKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyb3dJY29ucykpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWVyZ2VDdXN0b21JY29ucyhyb3dJY29ucywgY29sdW1uLmljb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmRDdXN0b21JY29uKHJvd0ljb25zLCBjb2x1bW4pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByb3dJY29ucztcbiAgfVxuXG4gIGdldENvbHVtbkxhYmVsKHJvdzogYW55LCBjb2x1bW5MYWJlbDogUG9UYWJsZUNvbHVtbik6IFBvVGFibGVDb2x1bW5MYWJlbCB7XG4gICAgcmV0dXJuIGNvbHVtbkxhYmVsLmxhYmVscy5maW5kKGxhYmVsSXRlbSA9PiB0aGlzLmdldENlbGxEYXRhKHJvdywgY29sdW1uTGFiZWwpID09PSBsYWJlbEl0ZW0udmFsdWUpO1xuICB9XG5cbiAgZ2V0U3VidGl0bGVDb2x1bW4ocm93OiBhbnksIHN1YnRpdGxlQ29sdW1uOiBQb1RhYmxlQ29sdW1uKTogUG9UYWJsZVN1YnRpdGxlQ29sdW1uIHtcbiAgICByZXR1cm4gc3VidGl0bGVDb2x1bW4uc3VidGl0bGVzLmZpbmQoc3VidGl0bGVJdGVtID0+IHRoaXMuZ2V0Q2VsbERhdGEocm93LCBzdWJ0aXRsZUNvbHVtbikgPT09IHN1YnRpdGxlSXRlbS52YWx1ZSk7XG4gIH1cblxuICBpc1Nob3dNYXN0ZXJEZXRhaWwocm93KSB7XG4gICAgcmV0dXJuIChcbiAgICAgICF0aGlzLmhpZGVEZXRhaWwgJiZcbiAgICAgIHRoaXMubmFtZUNvbHVtbkRldGFpbCAmJlxuICAgICAgcm93LiRzaG93RGV0YWlsICYmXG4gICAgICB0aGlzLmNvbnRhaW5zTWFzdGVyRGV0YWlsKHJvdykgJiZcbiAgICAgICF0aGlzLmhhc1Jvd1RlbXBsYXRlXG4gICAgKTtcbiAgfVxuXG4gIGlzU2hvd1Jvd1RlbXBsYXRlKHJvdywgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnRhYmxlUm93VGVtcGxhdGUgJiYgdGhpcy50YWJsZVJvd1RlbXBsYXRlLnBvVGFibGVSb3dUZW1wbGF0ZVNob3cpIHtcbiAgICAgIHJldHVybiB0aGlzLnRhYmxlUm93VGVtcGxhdGUucG9UYWJsZVJvd1RlbXBsYXRlU2hvdyhyb3csIGluZGV4KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIG9uQ2xpY2tMaW5rKGV2ZW50LCByb3csIGNvbHVtbjogUG9UYWJsZUNvbHVtbikge1xuICAgIGlmICghdGhpcy5jaGVja0Rpc2FibGVkKHJvdywgY29sdW1uKSkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgb25DaGFuZ2VWaXNpYmxlQ29sdW1ucyhjb2x1bW5zOiBBcnJheTxzdHJpbmc+KSB7XG4gICAgdGhpcy5jaGFuZ2VWaXNpYmxlQ29sdW1ucy5lbWl0KGNvbHVtbnMpO1xuICB9XG5cbiAgb25Db2x1bW5SZXN0b3JlTWFuYWdlcih2YWx1ZTogQXJyYXk8U3RyaW5nPikge1xuICAgIHRoaXMuY29sdW1uUmVzdG9yZU1hbmFnZXIuZW1pdCh2YWx1ZSk7XG4gIH1cblxuICBvblZpc2libGVDb2x1bW5zQ2hhbmdlKGNvbHVtbnM6IEFycmF5PFBvVGFibGVDb2x1bW4+KSB7XG4gICAgdGhpcy5jb2x1bW5zID0gY29sdW1ucztcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHRvb2x0aXBNb3VzZUVudGVyKGV2ZW50OiBhbnksIGNvbHVtbj86IFBvVGFibGVDb2x1bW4sIHJvdz86IGFueSkge1xuICAgIHRoaXMudG9vbHRpcFRleHQgPSB1bmRlZmluZWQ7XG5cbiAgICBpZiAoZXZlbnQudGFyZ2V0Lm9mZnNldFdpZHRoIDwgZXZlbnQudGFyZ2V0LnNjcm9sbFdpZHRoICYmIGV2ZW50LnRhcmdldC5pbm5lclRleHQudHJpbSgpKSB7XG4gICAgICByZXR1cm4gKHRoaXMudG9vbHRpcFRleHQgPSBldmVudC50YXJnZXQuaW5uZXJUZXh0KTtcbiAgICB9XG5cbiAgICBpZiAoY29sdW1uKSB7XG4gICAgICB0aGlzLmNoZWNraW5nSWZDb2x1bW5IYXNUb29sdGlwKGNvbHVtbiwgcm93KTtcbiAgICB9XG4gIH1cblxuICB0b29sdGlwTW91c2VMZWF2ZSgpIHtcbiAgICB0aGlzLnRvb2x0aXBUZXh0ID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgdG9nZ2xlUG9wdXAocm93LCB0YXJnZXRSZWYpIHtcbiAgICB0aGlzLnBvcHVwVGFyZ2V0ID0gdGFyZ2V0UmVmO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgdGhpcy5wb1BvcHVwQ29tcG9uZW50LnRvZ2dsZShyb3cpO1xuICB9XG5cbiAgdHJhY2tCeShpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgdmFsaWRhdGVUYWJsZUFjdGlvbihyb3c6IGFueSwgdGFibGVBY3Rpb246IGFueSkge1xuICAgIGlmICh0eXBlb2YgdGFibGVBY3Rpb24uZGlzYWJsZWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB0YWJsZUFjdGlvbi5kaXNhYmxlZChyb3cpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGFibGVBY3Rpb24uZGlzYWJsZWQ7XG4gICAgfVxuICB9XG5cbiAgb25PcGVuQ29sdW1uTWFuYWdlcigpIHtcbiAgICB0aGlzLmxhc3RWaXNpYmxlQ29sdW1uc1NlbGVjdGVkID0gWy4uLnRoaXMuY29sdW1uc107XG4gIH1cblxuICBvbkZpbHRlcmVkSXRlbXNDaGFuZ2UoaXRlbXM6IEFycmF5PGFueT4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zb3J0ZWRDb2x1bW4ucHJvcGVydHkpIHtcbiAgICAgIHRoaXMuc29ydEFycmF5KHRoaXMuc29ydGVkQ29sdW1uLnByb3BlcnR5LCB0aGlzLnNvcnRlZENvbHVtbi5hc2NlbmRpbmcsIGl0ZW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJlZEl0ZW1zID0gaXRlbXM7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcXVlIHJlbW92ZSB1bSBpdGVtIGRhIHRhYmVsYS5cbiAgICpcbiAgICogQHBhcmFtIHsgbnVtYmVyIHwgeyBrZXk6IHZhbHVlIH0gfSBpdGVtIMONbmRpY2UgZGEgbGluaGEgb3UgbyBpdGVtIHF1ZSBzZXLDoSByZW1vdmlkby5cbiAgICogPiBBbyByZW1vdmVyIG8gaXRlbSwgYSBsaW5oYSBxdWUgbyByZXByZXNlbnRhIHNlcsOhIGV4Y2x1w61kYSBkYSB0YWJlbGEuXG4gICAqL1xuICByZW1vdmVJdGVtKGl0ZW06IG51bWJlciB8IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcbiAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuaXRlbXMuZmlsdGVyKGZpbHRlckl0ZW0gPT4gZmlsdGVySXRlbSAhPT0gaXRlbSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgaXRlbSA9PT0gJ251bWJlcicpIHtcbiAgICAgIGNvbnN0IGluZGV4OiBudW1iZXIgPSBpdGVtO1xuICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHF1ZSBhdHVhbGl6YSB1bSBpdGVtIGRhIHRhYmVsYS5cbiAgICpcbiAgICogQHBhcmFtIHsgbnVtYmVyIHwgeyBrZXk6IHZhbHVlIH0gfSBpdGVtIMONbmRpY2UgZGEgbGluaGEgb3UgbyBpdGVtIHF1ZSBzZXLDoSBhdHVhbGl6YWRvLlxuICAgKiBAcGFyYW0geyB7IGtleTogdmFsdWUgfSB9IHVwZGF0ZWRJdGVtIEl0ZW0gcXVlIGZvaSBhdHVhbGl6YWRvLlxuICAgKiA+IEFvIGF0dWFsaXphciBvIGl0ZW0sIGEgaW5mb3JtYcOnw6NvIHNlcsOhIGFsdGVyYWRhIG5hIHRhYmVsYS5cbiAgICovXG4gIHVwZGF0ZUl0ZW0oaXRlbTogbnVtYmVyIHwgeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgdXBkYXRlZEl0ZW06IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcbiAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdudW1iZXInKSB7XG4gICAgICB0aGlzLml0ZW1zLnNwbGljZShpdGVtLCAxLCB1cGRhdGVkSXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pdGVtcy5maW5kSW5kZXgoaW5kZXhJdGVtID0+IGluZGV4SXRlbSA9PT0gaXRlbSk7XG4gICAgICB0aGlzLml0ZW1zLnNwbGljZShpbmRleCwgMSwgdXBkYXRlZEl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPEFycmF5PHN0cmluZz4+KSB7XG4gICAgaWYgKCF0aGlzLm1haW5Db2x1bW5zW2V2ZW50LmN1cnJlbnRJbmRleF0uZml4ZWQpIHtcbiAgICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLm1haW5Db2x1bW5zLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuXG4gICAgICBpZiAodGhpcy5oaWRlQ29sdW1uc01hbmFnZXIgPT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMubmV3T3JkZXJDb2x1bW5zID0gdGhpcy5tYWluQ29sdW1ucztcbiAgICAgICAgY29uc3QgZGV0YWlsID0gdGhpcy5jb2x1bW5zLmZpbHRlcihpdGVtID0+IGl0ZW0ucHJvcGVydHkgPT09ICdkZXRhaWwnKVswXTtcblxuICAgICAgICBpZiAoZGV0YWlsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLm5ld09yZGVyQ29sdW1ucy5wdXNoKGRldGFpbCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbHVtbnMubWFwKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGlmICghaXRlbS52aXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLm5ld09yZGVyQ29sdW1ucy5zcGxpY2UoaW5kZXgsIDAsIGl0ZW0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY29sdW1ucyA9IHRoaXMubmV3T3JkZXJDb2x1bW5zO1xuXG4gICAgICAgIHRoaXMub25WaXNpYmxlQ29sdW1uc0NoYW5nZSh0aGlzLm5ld09yZGVyQ29sdW1ucyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFRlbXBsYXRlKGNvbHVtbjogUG9UYWJsZUNvbHVtbik6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgIGNvbnN0IHRlbXBsYXRlOiBQb1RhYmxlQ29sdW1uVGVtcGxhdGVEaXJlY3RpdmUgPSB0aGlzLnRhYmxlQ29sdW1uVGVtcGxhdGVzPy5maW5kKFxuICAgICAgdGFibGVDb2x1bW5UZW1wbGF0ZSA9PiB0YWJsZUNvbHVtblRlbXBsYXRlLnRhcmdldFByb3BlcnR5ID09PSBjb2x1bW4ucHJvcGVydHlcbiAgICApO1xuICAgIGlmICghdGVtcGxhdGUpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYE7Do28gZm9pIHBvc3PDrXZlbCBlbmNvbnRyYXIgbyB0ZW1wbGF0ZSBwYXJhIGEgY29sdW5hOiAke2NvbHVtbi5wcm9wZXJ0eX0sIHBvciBnZW50aWxlemEgaW5mb3JtZSBhIHByb3ByaWVkYWRlIFtwLXByb3BlcnR5XWBcbiAgICAgICk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRlbXBsYXRlLnRlbXBsYXRlUmVmO1xuICB9XG5cbiAgcHVibGljIGdldFdpZHRoQ29sdW1uTWFuYWdlcigpIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5NYW5hZ2VyPy5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICB9XG5cbiAgcHVibGljIGdldENvbHVtbldpZHRoQWN0aW9uc0xlZnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uQWN0aW9uTGVmdD8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgfVxuXG4gIHB1YmxpYyBoYXNTb21lRml4ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucy5zb21lKGl0ZW0gPT4gaXRlbS5maXhlZCA9PT0gdHJ1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2FsY3VsYXRlSGVpZ2h0VGFibGVDb250YWluZXIoaGVpZ2h0KSB7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJzZUZsb2F0KGhlaWdodCk7XG4gICAgdGhpcy5oZWlnaHRUYWJsZUNvbnRhaW5lciA9IHZhbHVlID8gdmFsdWUgLSB0aGlzLmdldEhlaWdodFRhYmxlRm9vdGVyKCkgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5oZWlnaHRUYWJsZVZpcnR1YWwgPSB0aGlzLmhlaWdodFRhYmxlQ29udGFpbmVyID8gdGhpcy5oZWlnaHRUYWJsZUNvbnRhaW5lciAtIHRoaXMuaXRlbVNpemUgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5zZXRUYWJsZU9wYWNpdHkoMSk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdmVyaWZ5Q2FsY3VsYXRlSGVpZ2h0VGFibGVDb250YWluZXIoKSB7XG4gICAgaWYgKHRoaXMuaGVpZ2h0ICYmIHRoaXMudmVyaWZ5Q2hhbmdlSGVpZ2h0SW5Gb290ZXIoKSkge1xuICAgICAgdGhpcy5mb290ZXJIZWlnaHQgPSB0aGlzLmdldEhlaWdodFRhYmxlRm9vdGVyKCk7XG5cbiAgICAgIHRoaXMuY2FsY3VsYXRlSGVpZ2h0VGFibGVDb250YWluZXIodGhpcy5oZWlnaHQpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjaGVja0luZmluaXRlU2Nyb2xsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhc0luZmluaXRlU2Nyb2xsKCkpIHtcbiAgICAgIGlmICh0aGlzLnRhYmxlVmlydHVhbFNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodCA+PSB0aGlzLmhlaWdodCkge1xuICAgICAgICB0aGlzLmluY2x1ZGVJbmZpbml0ZVNjcm9sbCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pbmZpbml0ZVNjcm9sbCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hhbmdlc0FmdGVyRGVsZXRlKG5ld0l0ZW1zRmlsdGVyZWQ6IEFycmF5PGFueT4pIHtcbiAgICB0aGlzLnNlbGVjdEFsbCA9IGZhbHNlO1xuICAgIHRoaXMuc2V0U2VsZWN0ZWRMaXN0KCk7XG4gICAgdGhpcy5tb2RhbERlbGV0ZS5jbG9zZSgpO1xuICAgIHRoaXMucG9Ob3RpZmljYXRpb24uc3VjY2Vzcyh0aGlzLmxpdGVyYWxzLmRlbGV0ZVN1Y2Nlc3NmdWwpO1xuICAgIHRoaXMuZXZlbnREZWxldGUuZW1pdChuZXdJdGVtc0ZpbHRlcmVkKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjaGFuZ2VTaXplTG9hZGluZygpIHtcbiAgICBjb25zdCB0YWJsZUhlaWdodCA9IHRoaXMudGFibGVXcmFwcGVyRWxlbWVudD8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0SGVpZ2h0O1xuXG4gICAgaWYgKHRhYmxlSGVpZ2h0IDw9IDE1MCkge1xuICAgICAgdGhpcy5zaXplTG9hZGluZyA9ICdzbSc7XG4gICAgfSBlbHNlIGlmICh0YWJsZUhlaWdodCA+IDE1MCAmJiB0YWJsZUhlaWdodCA8IDI2MCkge1xuICAgICAgdGhpcy5zaXplTG9hZGluZyA9ICdtZCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2l6ZUxvYWRpbmcgPSAnbGcnO1xuICAgIH1cblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0NoYW5nZXNJdGVtcygpIHtcbiAgICBjb25zdCBjaGFuZ2VzSXRlbXMgPSB0aGlzLmRpZmZlci5kaWZmKHRoaXMuaXRlbXMpO1xuXG4gICAgaWYgKGNoYW5nZXNJdGVtcyAmJiB0aGlzLnNlbGVjdEFsbCkge1xuICAgICAgdGhpcy5zZWxlY3RBbGwgPSBudWxsO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzSXRlbXMgJiYgIXRoaXMuaGFzQ29sdW1ucyAmJiB0aGlzLmhhc0l0ZW1zKSB7XG4gICAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLmdldERlZmF1bHRDb2x1bW5zKHRoaXMuaXRlbXNbMF0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tpbmdJZkNvbHVtbkhhc1Rvb2x0aXAoY29sdW1uLCByb3cpIHtcbiAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdsaW5rJyAmJiBjb2x1bW4udG9vbHRpcCAmJiAhdGhpcy5jaGVja0Rpc2FibGVkKHJvdywgY29sdW1uKSkge1xuICAgICAgcmV0dXJuICh0aGlzLnRvb2x0aXBUZXh0ID0gY29sdW1uLnRvb2x0aXApO1xuICAgIH1cblxuICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2xhYmVsJykge1xuICAgICAgY29uc3QgY29sdW1uTGFiZWwgPSB0aGlzLmdldENvbHVtbkxhYmVsKHJvdywgY29sdW1uKTtcbiAgICAgIHJldHVybiAodGhpcy50b29sdGlwVGV4dCA9IGNvbHVtbkxhYmVsPy50b29sdGlwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRlYm91bmNlUmVzaXplKCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRSZXNpemUpO1xuICAgIHRoaXMudGltZW91dFJlc2l6ZSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLy8gc2hvdyB0aGUgdGFibGVcbiAgICAgIHRoaXMuc2V0VGFibGVPcGFjaXR5KDEpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWxldGVJdGVtc0xvY2FsKG5ld0l0ZW1zOiBBcnJheTxhbnk+LCBuZXdJdGVtc0ZpbHRlcmVkOiBBcnJheTxhbnk+KSB7XG4gICAgaWYgKHRoaXMuaGVpZ2h0KSB7XG4gICAgICB0aGlzLml0ZW1zID0gbmV3SXRlbXNGaWx0ZXJlZDtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGluZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xuICAgICAgbmV3SXRlbXNcbiAgICAgICAgLnNsaWNlKClcbiAgICAgICAgLnJldmVyc2UoKVxuICAgICAgICAuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICBpZiAoaXRlbS4kc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlSXRlbShpbmRleCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGluZGV4LS07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmNoYW5nZXNBZnRlckRlbGV0ZShuZXdJdGVtc0ZpbHRlcmVkKTtcbiAgICB0aGlzLm9uRmlsdGVyZWRJdGVtc0NoYW5nZShuZXdJdGVtc0ZpbHRlcmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVsZXRlSXRlbXNTZXJ2aWNlKG5ld0l0ZW1zRmlsdGVyZWQ6IEFycmF5PGFueT4pIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvblNlcnZpY2UuYWRkKFxuICAgICAgdGhpcy5kZWZhdWx0U2VydmljZS5kZWxldGVJdGVtKHRoaXMucGFyYW1EZWxldGVBcGksIHRoaXMuaXRlbXNTZWxlY3RlZFswXVt0aGlzLnBhcmFtRGVsZXRlQXBpXSkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogdmFsdWUgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmhhc1NlcnZpY2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkUGFyYW1zID0ge1xuICAgICAgICAgICAgICAuLi50aGlzLnBhcmFtc0ZpbHRlcixcbiAgICAgICAgICAgICAgcGFnZVNpemU6IG5ld0l0ZW1zRmlsdGVyZWQubGVuZ3RoICsgMSxcbiAgICAgICAgICAgICAgcGFnZTogMVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvblNlcnZpY2UuYWRkKFxuICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRTZXJ2aWNlLmdldEZpbHRlcmVkSXRlbXMoZmlsdGVyZWRQYXJhbXMpLnN1YnNjcmliZShpdGVtcyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRUYWJsZVJlc3BvbnNlUHJvcGVydGllcyhpdGVtcyk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLml0ZW1zID0gbmV3SXRlbXNGaWx0ZXJlZDtcbiAgICAgICAgICB0aGlzLmNoYW5nZXNBZnRlckRlbGV0ZShuZXdJdGVtc0ZpbHRlcmVkKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IGVycm9yID0+IHtcbiAgICAgICAgICB0aGlzLnBvTm90aWZpY2F0aW9uLmVycm9yKHRoaXMubGl0ZXJhbHMuZGVsZXRlQXBpRXJyb3IpO1xuICAgICAgICAgIHRoaXMubW9kYWxEZWxldGUuY2xvc2UoKTtcbiAgICAgICAgICB0aGlzLmV2ZW50RGVsZXRlLmVtaXQodGhpcy5pdGVtcyk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZEN1c3RvbUljb24ocm93SWNvbnMsIGNvbHVtbjogUG9UYWJsZUNvbHVtbikge1xuICAgIGNvbnN0IGN1c3RvbUljb24gPSBjb2x1bW4uaWNvbnMuZmluZChpY29uID0+IHJvd0ljb25zID09PSBpY29uLnZhbHVlKTtcbiAgICByZXR1cm4gY3VzdG9tSWNvbiA/IFtjdXN0b21JY29uXSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SGVpZ2h0VGFibGVGb290ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVGb290ZXJFbGVtZW50ID8gdGhpcy50YWJsZUZvb3RlckVsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgOiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNJbmZpbml0ZVNjcm9sbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5pbmZpbml0ZVNjcm9sbCAmJlxuICAgICAgdGhpcy5oYXNJdGVtcyAmJlxuICAgICAgIXRoaXMuc3Vic2NyaXB0aW9uU2Nyb2xsRXZlbnQgJiZcbiAgICAgIHRoaXMuaGVpZ2h0ICYmXG4gICAgICB0aGlzLnRhYmxlVmlydHVhbFNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGluY2x1ZGVJbmZpbml0ZVNjcm9sbCgpOiB2b2lkIHtcbiAgICB0aGlzLnNjcm9sbEV2ZW50JCA9IHRoaXMuZGVmYXVsdFNlcnZpY2Uuc2Nyb2xsTGlzdGVuZXIodGhpcy50YWJsZVZpcnR1YWxTY3JvbGwubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25TY3JvbGxFdmVudCA9IHRoaXMuc2Nyb2xsRXZlbnQkLnN1YnNjcmliZShldmVudCA9PiB0aGlzLnNob3dNb3JlSW5maW5pdGVTY3JvbGwoZXZlbnQpKTtcblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZUN1c3RvbUljb25zKHJvd0ljb25zOiBBcnJheTxzdHJpbmc+LCBjdXN0b21JY29uczogQXJyYXk8YW55Pikge1xuICAgIGNvbnN0IG1lcmdlZEljb25zID0gW107XG5cbiAgICByb3dJY29ucy5mb3JFYWNoKGNvbHVtblZhbHVlID0+IHtcbiAgICAgIGNvbnN0IGZvdW5kQ3VzdG9tSWNvbiA9IGN1c3RvbUljb25zLmZpbmQoXG4gICAgICAgIGN1c3RvbUljb24gPT4gY29sdW1uVmFsdWUgPT09IGN1c3RvbUljb24uaWNvbiB8fCBjb2x1bW5WYWx1ZSA9PT0gY3VzdG9tSWNvbi52YWx1ZVxuICAgICAgKTtcbiAgICAgIGZvdW5kQ3VzdG9tSWNvbiA/IG1lcmdlZEljb25zLnB1c2goZm91bmRDdXN0b21JY29uKSA6IG1lcmdlZEljb25zLnB1c2goY29sdW1uVmFsdWUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1lcmdlZEljb25zO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVMaXN0ZW5lcnMoKSB7XG4gICAgaWYgKHRoaXMucmVzaXplTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMucmVzaXplTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jbGlja0xpc3RlbmVyKSB7XG4gICAgICB0aGlzLmNsaWNrTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb25TY3JvbGxFdmVudCkge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25TY3JvbGxFdmVudC51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0VGFibGVPcGFjaXR5KHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLnRhYmxlT3BhY2l0eSA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSB2ZXJpZnlDaGFuZ2VIZWlnaHRJbkZvb3RlcigpIHtcbiAgICByZXR1cm4gdGhpcy5mb290ZXJIZWlnaHQgIT09IHRoaXMuZ2V0SGVpZ2h0VGFibGVGb290ZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlU2VsZWN0KGNvbXBhcmUsIHNlbGVjdFZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHR5cGVvZiBjb21wYXJlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGlmIChpdGVtID09PSBjb21wYXJlKSB7XG4gICAgICAgICAgaXRlbS4kc2VsZWN0ZWQgPSBzZWxlY3RWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaWYgKGNvbXBhcmUoaXRlbSkpIHtcbiAgICAgICAgICBpdGVtLiRzZWxlY3RlZCA9IHNlbGVjdFZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwby10YWJsZS1hY3Rpb25zXCI+XG4gIDxkaXZcbiAgICAjY29sdW1uQmF0Y2hBY3Rpb25zXG4gICAgKm5nSWY9XCJoYXNWYWxpZENvbHVtbnMgJiYgaXRlbXNTZWxlY3RlZC5sZW5ndGggPiAwICYmICFoaWRlQmF0Y2hBY3Rpb25zXCJcbiAgICBjbGFzcz1cInBvLXRhYmxlLWFjdGlvbnMtYmF0Y2gtYWN0aW9uc1wiXG4gID5cbiAgICA8ZGl2IFtuZ1BsdXJhbF09XCJpdGVtc1NlbGVjdGVkLmxlbmd0aFwiIGNsYXNzPVwicG8tdGFibGUtYWN0aW9ucy1iYXRjaC1hY3Rpb25zX19sYWJlbFwiPlxuICAgICAgPHN0cm9uZz5cbiAgICAgICAgPG5nLXRlbXBsYXRlIG5nUGx1cmFsQ2FzZT1cIj0wXCI+e3sgbGl0ZXJhbHMubm9JdGVtIH19PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIG5nUGx1cmFsQ2FzZT1cIj0xXCI+e3sgbGl0ZXJhbHMub25lSXRlbSB9fTwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBuZ1BsdXJhbENhc2U9XCJvdGhlclwiPnt7IGl0ZW1zU2VsZWN0ZWQubGVuZ3RoIH19IHt7IGxpdGVyYWxzLm11bHRpcGxlSXRlbXMgfX08L25nLXRlbXBsYXRlPlxuICAgICAgPC9zdHJvbmc+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwicG8tdGFibGUtYWN0aW9ucy1iYXRjaC1hY3Rpb25zX19idXR0b25zXCI+XG4gICAgICA8cG8tYnV0dG9uXG4gICAgICAgIHAtaWNvbj1cIklDT05fREVMRVRFXCJcbiAgICAgICAgW3AtZGFuZ2VyXT1cInRydWVcIlxuICAgICAgICBbcC1kaXNhYmxlZF09XCJpdGVtc1NlbGVjdGVkLmxlbmd0aCA+IDEgJiYgc2VydmljZURlbGV0ZUFwaSAhPT0gdW5kZWZpbmVkXCJcbiAgICAgICAgW3AtbGFiZWxdPVwibGl0ZXJhbHMuZGVsZXRlXCJcbiAgICAgICAgKHAtY2xpY2spPVwibW9kYWxEZWxldGUub3BlbigpXCJcbiAgICAgID48L3BvLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAjY29sdW1uTWFuYWdlciAqbmdJZj1cImhhc1ZhbGlkQ29sdW1ucyAmJiAhaGlkZUNvbHVtbnNNYW5hZ2VyXCIgY2xhc3M9XCJwby10YWJsZS1hY3Rpb25zLWNvbHVtbi1tYW5hZ2VyXCI+XG4gICAgPHBvLWJ1dHRvblxuICAgICAgI2NvbHVtbk1hbmFnZXJUYXJnZXRcbiAgICAgIHAtaWNvbj1cIklDT05fU0VUVElOR1NcIlxuICAgICAgcC1raW5kPVwidGVydGlhcnlcIlxuICAgICAgcC10b29sdGlwLXBvc2l0aW9uPVwibGVmdFwiXG4gICAgICBbcC1hcmlhLWxhYmVsXT1cImxpdGVyYWxzLmNvbHVtbnNNYW5hZ2VyXCJcbiAgICAgIFtwLXRvb2x0aXBdPVwibGl0ZXJhbHMuY29sdW1uc01hbmFnZXJcIlxuICAgICAgKHAtY2xpY2spPVwib25PcGVuQ29sdW1uTWFuYWdlcigpXCJcbiAgICA+PC9wby1idXR0b24+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCIhaGlkZVRhYmxlU2VhcmNoICYmIGhhc1ZhbGlkQ29sdW1uc1wiIGNsYXNzPVwicG8tdGFibGUtc2VhcmNoXCI+XG4gICAgPHBvLXNlYXJjaFxuICAgICAgW3AtaXRlbXNdPVwiaXRlbXNcIlxuICAgICAgW3AtZmlsdGVyLWtleXNdPVwiZmlsdGVyZWRDb2x1bW5zXCJcbiAgICAgIFtwLWZpbHRlci10eXBlXT1cImZpbHRlclR5cGVcIlxuICAgICAgKHAtZmlsdGVyZWQtaXRlbXMtY2hhbmdlKT1cIm9uRmlsdGVyZWRJdGVtc0NoYW5nZSgkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9wby1zZWFyY2g+XG4gIDwvZGl2PlxuPC9kaXY+XG48cG8tY29udGFpbmVyICpuZ0lmPVwiY29udGFpbmVyOyBlbHNlIHRhYmxlQ29udGFpbmVyVGVtcGxhdGVcIiBwLW5vLXBhZGRpbmc+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZUNvbnRhaW5lclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG48L3BvLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICN0YWJsZUNvbnRhaW5lclRlbXBsYXRlPlxuICA8ZGl2IFtjbGFzcy5wby10YWJsZS1jb250YWluZXItc3RpY2t5XT1cImxvYWRpbmdcIj5cbiAgICA8cG8tbG9hZGluZy1vdmVybGF5ICpuZ0lmPVwibG9hZGluZ1wiIFtwLXRleHRdPVwibGl0ZXJhbHMubG9hZGluZ0RhdGFcIiBbcC1zaXplXT1cInNpemVMb2FkaW5nXCI+PC9wby1sb2FkaW5nLW92ZXJsYXk+XG4gICAgPGRpdiBjbGFzcz1cInBvLXRhYmxlLW1haW4tY29udGFpbmVyXCI+XG4gICAgICA8ZGl2XG4gICAgICAgICN0YWJsZVdyYXBwZXJcbiAgICAgICAgY2xhc3M9XCJwby10YWJsZS13cmFwcGVyXCJcbiAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1maXhlZC1jb2x1bW5zLXBpeGVsc109XCJhbGxDb2x1bW5zV2lkdGhQaXhlbHNcIlxuICAgICAgICBbc3R5bGUub3BhY2l0eV09XCJ0YWJsZU9wYWNpdHlcIlxuICAgICAgPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaGVpZ2h0XCIgY2xhc3M9XCJwby10YWJsZS1jb250YWluZXJcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlaWdodFRhYmxlQ29udGFpbmVyXCI+XG4gICAgICAgICAgPGRpdiAjcG9UYWJsZVRib2R5IGNsYXNzPVwicG8tdGFibGUtY29udGFpbmVyLWZpeGVkLWlubmVyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVWaXJ0dWFsU2Nyb2xsVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFoZWlnaHRcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwicG8tdGFibGUtZm9vdGVyXCIgKm5nSWY9XCJoYXNGb290ZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2Ygc3VidGl0bGVDb2x1bW5zOyB0cmFja0J5OiB0cmFja0J5XCI+XG4gICAgICA8cG8tdGFibGUtc3VidGl0bGUtZm9vdGVyIFtwLWxpdGVyYWxzXT1cImxpdGVyYWxzXCIgW3Atc3VidGl0bGVzXT1cImNvbHVtbi5zdWJ0aXRsZXNcIj4gPC9wby10YWJsZS1zdWJ0aXRsZS1mb290ZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBTaG93IE1vcmUgQnV0dG9uIC0tPlxuPGRpdlxuICAqbmdJZj1cIiFpbmZpbml0ZVNjcm9sbFwiXG4gIGNsYXNzPVwicG8tcm93IHBvLXRhYmxlLWZvb3Rlci1zaG93LW1vcmVcIlxuICBbY2xhc3MucG8taW52aXNpYmxlXT1cInNob3dNb3JlLm9ic2VydmVycy5sZW5ndGggPT09IDAgJiYgIWhhc1NlcnZpY2VcIlxuICAjdGFibGVGb290ZXJcbj5cbiAgPHBvLWJ1dHRvblxuICAgIGNsYXNzPVwicG8tb2Zmc2V0LXhsLTQgcG8tb2Zmc2V0LWxnLTQgcG8tb2Zmc2V0LW1kLTMgcG8tbGctNCBwby1tZC02XCJcbiAgICBbcC1kaXNhYmxlZF09XCJzaG93TW9yZURpc2FibGVkXCJcbiAgICBbcC1sYWJlbF09XCJsaXRlcmFscy5sb2FkTW9yZURhdGFcIlxuICAgIFtwLWxvYWRpbmddPVwibG9hZGluZ1Nob3dNb3JlXCJcbiAgICAocC1jbGljayk9XCJvblNob3dNb3JlKClcIlxuICA+XG4gIDwvcG8tYnV0dG9uPlxuPC9kaXY+XG5cbjwhLS0gVGFibGUgZGVmYXVsdC0tPlxuPG5nLXRlbXBsYXRlICN0YWJsZVRlbXBsYXRlPlxuICA8dGFibGVcbiAgICBjbGFzcz1cInBvLXRhYmxlXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAncG8tdGFibGUtaW50ZXJhY3RpdmUnOiBzZWxlY3RhYmxlIHx8IHNvcnQsXG4gICAgICAncG8tdGFibGUtc2VsZWN0YWJsZSc6IHNlbGVjdGFibGUsXG4gICAgICAncG8tdGFibGUtc3RyaXBlZCc6IHN0cmlwZWQsXG4gICAgICAncG8tdGFibGUtZGF0YS1maXhlZC1jb2x1bW5zJzogYXBwbHlGaXhlZENvbHVtbnMoKSxcbiAgICAgICdwby10YWJsZS10ZXh0LXdyYXAtZW5hYmxlZCc6IHRleHRXcmFwXG4gICAgfVwiXG4gICAgW2F0dHIucC1zcGFjaW5nXT1cInNwYWNpbmdcIlxuICA+XG4gICAgPHRoZWFkPlxuICAgICAgPHRyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ25vLWhvdmVyJzogaGlkZVNlbGVjdEFsbCwgJ3BvLXRhYmxlLWNvbHVtbi1kcmFnJzogdGhpcy5pc0RyYWdnYWJsZSB9XCJcbiAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlcl09XCIhaGVpZ2h0XCJcbiAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDx0aFxuICAgICAgICAgICpuZ0lmPVwiaGFzU2VsZWN0YWJsZUNvbHVtblwiXG4gICAgICAgICAgW3N0eWxlLnBvaW50ZXItZXZlbnRzXT1cImhpZGVTZWxlY3RBbGwgPyAnbm9uZScgOiAnYXV0bydcIlxuICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLXNlbGVjdGFibGVcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZpeGVkLWlubmVyXT1cImhlaWdodFwiPlxuICAgICAgICAgICAgPHBvLWNoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9XCJzZWxlY3RBbGxcIlxuICAgICAgICAgICAgICAqbmdJZj1cIiFoaWRlU2VsZWN0QWxsXCJcbiAgICAgICAgICAgICAgKHAtY2hhbmdlKT1cInNlbGVjdEFsbFJvd3MoKVwiXG4gICAgICAgICAgICAgIFtwLWNoZWNrYm94VmFsdWVdPVwic2VsZWN0QWxsID09PSBudWxsID8gJ21peGVkJyA6IHNlbGVjdEFsbFwiXG4gICAgICAgICAgICA+PC9wby1jaGVja2JveD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90aD5cblxuICAgICAgICA8dGhcbiAgICAgICAgICAqbmdJZj1cIihoYXNNYXN0ZXJEZXRhaWxDb2x1bW4gfHwgaGFzUm93VGVtcGxhdGUpICYmICFoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1jb2x1bW4gcG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxcIlxuICAgICAgICA+PC90aD5cblxuICAgICAgICA8IS0tIENvbHVuYSBjcmlhZGEgcGFyYSBjYXNvIGFzIGHDp8O1ZXMgZmlxdWVtIG5vIGxhZG8gZXNxdWVyZG8gLS0+XG4gICAgICAgIDx0aFxuICAgICAgICAgICNjb2x1bW5BY3Rpb25MZWZ0XG4gICAgICAgICAgKm5nSWY9XCIhYWN0aW9uUmlnaHQgJiYgKHZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDEgfHwgaXNTaW5nbGVBY3Rpb24pXCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxdPVwiIWlzU2luZ2xlQWN0aW9uXCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLXNpbmdsZS1hY3Rpb25dPVwiaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICA+PC90aD5cblxuICAgICAgICA8dGggKm5nSWY9XCIhaGFzTWFpbkNvbHVtbnNcIiAjbm9Db2x1bW5zSGVhZGVyIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWNvbHVtbiBwby10ZXh0LWNlbnRlclwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWlnaHQ7IHRoZW4gbm9Db2x1bW5zV2l0aEhlaWdodDsgZWxzZSBub0NvbHVtbnNXaXRob3V0SGVpZ2h0XCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3RoPlxuXG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cInRoaXMuaXNEcmFnZ2FibGUgfHwgaGFzU29tZUZpeGVkKCk7IHRoZW4gdGFibGVEZWZhdWx0VGhEcmFnRHJvcDsgZWxzZSB0YWJsZURlZmF1bHRUaERlZmF1bHRcIlxuICAgICAgICA+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3RhYmxlRGVmYXVsdFRoRHJhZ0Ryb3A+XG4gICAgICAgICAgPHRoXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIG1haW5Db2x1bW5zOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWVsbGlwc2lzIHAtZWxlbWVudCBwby1mcm96ZW4tY29sdW1uXCJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1wby10YWJsZS1jb2x1bW4tbmFtZV09XCJjb2x1bW4ubGFiZWwgfHwgKGNvbHVtbi5wcm9wZXJ0eSB8IHRpdGxlY2FzZSkgfCBsb3dlcmNhc2VcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLWNsaWNrYWJsZV09XCIoc29ydCAmJiBjb2x1bW4uc29ydGFibGUgIT09IGZhbHNlKSB8fCBoYXNTZXJ2aWNlXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ3BvLXRhYmxlLWhlYWRlci1zb3J0ZWQnOlxuICAgICAgICAgICAgICAgIHNvcnQgJiZcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShzb3J0ZWRDb2x1bW4/LnByb3BlcnR5KSA9PT0gSlNPTi5zdHJpbmdpZnkoY29sdW1uKSAmJlxuICAgICAgICAgICAgICAgIChzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nIHx8ICFzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nKVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLXN1YnRpdGxlXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tZHJhZy1ib3hdPVwidGhpcy5pc0RyYWdnYWJsZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwic29ydENvbHVtbihjb2x1bW4pXCJcbiAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgIGNka0RyYWdMb2NrQXhpcz1cInhcIlxuICAgICAgICAgICAgW2Nka0RyYWdEaXNhYmxlZF09XCJjb2x1bW4uZml4ZWQgPyAndHJ1ZScgOiAnZmFsc2UnXCJcbiAgICAgICAgICAgIFtwRnJvemVuQ29sdW1uXT1cImNvbHVtbi5maXhlZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1mbGV4XCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1maXhlZC1pbm5lcl09XCJoZWlnaHRcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1mbGV4LWNlbnRlcl09XCJjb2x1bW4udHlwZSA9PT0gJ3N1YnRpdGxlJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0aGlzLmlzRHJhZ2dhYmxlICYmICFjb2x1bW4uZml4ZWRcIj5cbiAgICAgICAgICAgICAgICA8cG8taWNvbiBjZGtEcmFnSGFuZGxlICpuZ0lmPVwiaWNvbk5hbWVMaWIgPT09ICdQaG9zcGhvckljb24nXCIgcC1pY29uPVwiSUNPTl9EUkFHXCI+PC9wby1pY29uPlxuICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaWNvbk5hbWVMaWIgPT09ICdQb0ljb24nXCJcbiAgICAgICAgICAgICAgICAgIGNka0RyYWdIYW5kbGVcbiAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIlxuICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTZcIlxuICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiOVwiIGN5PVwiNlwiIHI9XCIyXCIgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxNVwiIGN5PVwiNlwiIHI9XCIyXCIgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI5XCIgY3k9XCIxMlwiIHI9XCIyXCIgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxNVwiIGN5PVwiMTJcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiOVwiIGN5PVwiMThcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTVcIiBjeT1cIjE4XCIgcj1cIjJcIiBmaWxsPVwiYmxhY2tcIiAvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRIZWFkZXJUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbHVtbiB9XCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90aD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICN0YWJsZURlZmF1bHRUaERlZmF1bHQ+XG4gICAgICAgICAgPHRoXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIG1haW5Db2x1bW5zOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWVsbGlwc2lzIHAtZWxlbWVudCBwby1mcm96ZW4tY29sdW1uXCJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1wby10YWJsZS1jb2x1bW4tbmFtZV09XCJjb2x1bW4ubGFiZWwgfHwgKGNvbHVtbi5wcm9wZXJ0eSB8IHRpdGxlY2FzZSkgfCBsb3dlcmNhc2VcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLWNsaWNrYWJsZV09XCIoc29ydCAmJiBjb2x1bW4uc29ydGFibGUgIT09IGZhbHNlKSB8fCBoYXNTZXJ2aWNlXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ3BvLXRhYmxlLWhlYWRlci1zb3J0ZWQnOlxuICAgICAgICAgICAgICAgIHNvcnQgJiZcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShzb3J0ZWRDb2x1bW4/LnByb3BlcnR5KSA9PT0gSlNPTi5zdHJpbmdpZnkoY29sdW1uKSAmJlxuICAgICAgICAgICAgICAgIChzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nIHx8ICFzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nKVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLXN1YnRpdGxlXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzb3J0Q29sdW1uKGNvbHVtbilcIlxuICAgICAgICAgICAgW3BGcm96ZW5Db2x1bW5dPVwiY29sdW1uLmZpeGVkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWZsZXhcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZpeGVkLWlubmVyXT1cImhlaWdodFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZmxleC1yaWdodF09XCJjb2x1bW4udHlwZSA9PT0gJ2N1cnJlbmN5JyB8fCBjb2x1bW4udHlwZSA9PT0gJ251bWJlcidcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtY2VudGVyXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRIZWFkZXJUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbHVtbiB9XCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90aD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8dGhcbiAgICAgICAgICAqbmdJZj1cImhhc1Jvd1RlbXBsYXRlV2l0aEFycm93RGlyZWN0aW9uUmlnaHQgJiYgKGhhc1Zpc2libGVBY3Rpb25zIHx8IGhpZGVDb2x1bW5zTWFuYWdlcilcIlxuICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWNvbHVtbiBwby10YWJsZS1oZWFkZXItbWFzdGVyLWRldGFpbFwiXG4gICAgICAgID48L3RoPlxuXG4gICAgICAgIDx0aFxuICAgICAgICAgICpuZ0lmPVwiaGFzVmlzaWJsZUFjdGlvbnMgJiYgYWN0aW9uUmlnaHQgJiYgKHZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDEgfHwgaXNTaW5nbGVBY3Rpb24pXCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLXNpbmdsZS1hY3Rpb25dPVwiaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItYWN0aW9uc109XCIhaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICA+PC90aD5cbiAgICAgIDwvdHI+XG4gICAgPC90aGVhZD5cblxuICAgIDx0Ym9keSBjbGFzcz1cInBvLXRhYmxlLWdyb3VwLXJvd1wiICpuZ0lmPVwiIWhhc0l0ZW1zIHx8ICFoYXNNYWluQ29sdW1uc1wiPlxuICAgICAgPHRyIGNsYXNzPVwicG8tdGFibGUtcm93IHBvLXRhYmxlLXJvdy1uby1kYXRhXCI+XG4gICAgICAgIDx0ZCBbY29sU3Bhbl09XCJjb2x1bW5Db3VudFwiIGNsYXNzPVwicG8tdGFibGUtbm8tZGF0YSBwby10ZXh0LWNlbnRlclwiPlxuICAgICAgICAgIDxzcGFuPiB7eyBsaXRlcmFscy5ub0RhdGEgfX0gPC9zcGFuPlxuICAgICAgICA8L3RkPlxuICAgICAgPC90cj5cbiAgICA8L3Rib2R5PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc01haW5Db2x1bW5zXCI+XG4gICAgICA8dGJvZHkgY2xhc3M9XCJwby10YWJsZS1ncm91cC1yb3dcIiAqbmdGb3I9XCJsZXQgcm93IG9mIGZpbHRlcmVkSXRlbXM7IGxldCByb3dJbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCI+XG4gICAgICAgIDx0ciBjbGFzcz1cInBvLXRhYmxlLXJvd1wiIFtjbGFzcy5wby10YWJsZS1yb3ctYWN0aXZlXT1cInJvdy4kc2VsZWN0ZWQgfHwgKHJvdy4kc2VsZWN0ZWQgPT09IG51bGwgJiYgc2VsZWN0YWJsZSlcIj5cbiAgICAgICAgICA8dGQgKm5nSWY9XCJzZWxlY3RhYmxlXCIgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tc2VsZWN0YWJsZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpbmdsZVNlbGVjdCA/IGlucHV0UmFkaW8gOiBpbnB1dENoZWNrYm94OyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93IH1cIj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICA8IS0tIFZhbGlkYSBzZSBhIG9yaWdlbSBkbyBkZXRhaWwgw6kgcGVsbyBpbnB1dCBkbyBwby10YWJsZSAtLT5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uTWFzdGVyRGV0YWlsICYmICFoaWRlRGV0YWlsICYmICFoYXNSb3dUZW1wbGF0ZVwiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1kZXRhaWwtdG9nZ2xlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVEZXRhaWwocm93KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBvVGFibGVDb2x1bW5EZXRhaWxcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgPCEtLSBDb2x1bmEgY29tIGFzIGHDp8O1ZXMgbmEgZXNxdWVyZGEgKHBhZHLDo28pLS0+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAqbmdJZj1cIiFhY3Rpb25SaWdodCAmJiAodmlzaWJsZUFjdGlvbnMubGVuZ3RoID4gMSB8fCBpc1NpbmdsZUFjdGlvbilcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiQWN0aW9uc0NvbHVtblRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICA8IS0tIFZhbGlkYSBzZSBhIG9yaWdlbSBkbyBkZXRhaWwgw6kgcGVsYSBkaXJldGl2YSAtLT5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzUm93VGVtcGxhdGUgJiYgIWhhc1Jvd1RlbXBsYXRlV2l0aEFycm93RGlyZWN0aW9uUmlnaHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tZGV0YWlsLXRvZ2dsZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC90ZD5cblxuICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBtYWluQ29sdW1uczsgbGV0IGNvbHVtbkluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIlxuICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtY29sdW1uXT1cImNvbHVtbi50eXBlICE9PSAnaWNvbidcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbi1yaWdodF09XCJjb2x1bW4udHlwZSA9PT0gJ2N1cnJlbmN5JyB8fCBjb2x1bW4udHlwZSA9PT0gJ251bWJlcidcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbi1jZW50ZXJdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbi1pY29uc109XCJjb2x1bW4udHlwZSA9PT0gJ2ljb24nXCJcbiAgICAgICAgICAgIFtwRnJvemVuQ29sdW1uXT1cImNvbHVtbi5maXhlZFwiXG4gICAgICAgICAgICBjbGFzcz1cInAtZWxlbWVudCBwby1mcm96ZW4tY29sdW1uXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldENsYXNzQ29sb3Iocm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgIChjbGljayk9XCJoYXNTZWxlY3RhYmxlUm93KCkgPyBzZWxlY3RSb3cocm93KSA6ICdqYXZhc2NyaXB0OjsnXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWNlbGwgcG8tdGFibGUtYm9keS1lbGxpcHNpcyBub3RyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIFtuZ1N3aXRjaF09XCJjb2x1bW4udHlwZVwiXG4gICAgICAgICAgICAgIFtwLXRvb2x0aXBdPVwidG9vbHRpcFRleHRcIlxuICAgICAgICAgICAgICBbcC1hcHBlbmQtaW4tYm9keV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwidG9vbHRpcE1vdXNlRW50ZXIoJGV2ZW50LCBjb2x1bW4sIHJvdylcIlxuICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJ0b29sdGlwTW91c2VMZWF2ZSgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidjb2x1bW5UZW1wbGF0ZSdcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ2V0VGVtcGxhdGUoY29sdW1uKTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB9XCI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2NlbGxUZW1wbGF0ZSdcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVDZWxsVGVtcGxhdGU/LnRlbXBsYXRlUmVmOyBjb250ZXh0OiB7IHJvdzogcm93LCBjb2x1bW46IGNvbHVtbiB9XCI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2Jvb2xlYW4nXCI+XG4gICAgICAgICAgICAgICAge3sgZ2V0Qm9vbGVhbkxhYmVsKGdldENlbGxEYXRhKHJvdywgY29sdW1uKSwgY29sdW1uKSB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidjdXJyZW5jeSdcIj5cbiAgICAgICAgICAgICAgICB7eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfCBjdXJyZW5jeTogY29sdW1uLmZvcm1hdCA6ICdzeW1ib2wnIDogJzEuMi0yJyB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiPlxuICAgICAgICAgICAgICAgIHt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB8IGRhdGU6IGNvbHVtbi5mb3JtYXQgfHwgJ2RkL01NL3l5eXknIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3RpbWUnXCI+XG4gICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgcG9fdGltZTogY29sdW1uLmZvcm1hdCB8fCAnSEg6bW06c3MuZmZmZmZmJyB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidkYXRlVGltZSdcIj5cbiAgICAgICAgICAgICAgICB7eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfCBkYXRlOiBjb2x1bW4uZm9ybWF0IHx8ICdkZC9NTS95eXl5IEhIOm1tOnNzJyB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidudW1iZXInXCI+XG4gICAgICAgICAgICAgICAge3sgZm9ybWF0TnVtYmVyKGdldENlbGxEYXRhKHJvdywgY29sdW1uKSwgY29sdW1uLmZvcm1hdCkgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxwby10YWJsZS1jb2x1bW4tbGlua1xuICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInbGluaydcIlxuICAgICAgICAgICAgICAgIFtwLWFjdGlvbl09XCJjb2x1bW4uYWN0aW9uXCJcbiAgICAgICAgICAgICAgICBbcC1kaXNhYmxlZF09XCJjaGVja0Rpc2FibGVkKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgW3AtbGlua109XCJyb3dbY29sdW1uLmxpbmtdXCJcbiAgICAgICAgICAgICAgICBbcC1yb3ddPVwicm93XCJcbiAgICAgICAgICAgICAgICBbcC12YWx1ZV09XCJnZXRDZWxsRGF0YShyb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrTGluaygkZXZlbnQsIHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9wby10YWJsZS1jb2x1bW4tbGluaz5cblxuICAgICAgICAgICAgICA8cG8tdGFibGUtY29sdW1uLWljb25cbiAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2ljb24nXCJcbiAgICAgICAgICAgICAgICBbcC1jb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICBbcC1pY29uc109XCJnZXRDb2x1bW5JY29ucyhyb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgIFtwLXJvd109XCJyb3dcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvcG8tdGFibGUtY29sdW1uLWljb24+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidzdWJ0aXRsZSdcIj5cbiAgICAgICAgICAgICAgICA8cG8tdGFibGUtc3VidGl0bGUtY2lyY2xlIFtwLXN1YnRpdGxlXT1cImdldFN1YnRpdGxlQ29sdW1uKHJvdywgY29sdW1uKVwiPjwvcG8tdGFibGUtc3VidGl0bGUtY2lyY2xlPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInbGFiZWwnXCI+XG4gICAgICAgICAgICAgICAgPHBvLXRhYmxlLWNvbHVtbi1sYWJlbCBbcC12YWx1ZV09XCJnZXRDb2x1bW5MYWJlbChyb3csIGNvbHVtbilcIj4gPC9wby10YWJsZS1jb2x1bW4tbGFiZWw+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoRGVmYXVsdD57eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgPHRkXG4gICAgICAgICAgICAqbmdJZj1cImhhc1Jvd1RlbXBsYXRlV2l0aEFycm93RGlyZWN0aW9uUmlnaHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tZGV0YWlsLXRvZ2dsZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC90ZD5cblxuICAgICAgICAgIDwhLS0gQ29sdW5hIGRlIGHDp29lcyBuYSBkaXJlaXRhIC0tPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgKm5nSWY9XCJhY3Rpb25SaWdodFwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJBY3Rpb25zQ29sdW1uVGVtcGxhdGVcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC90cj5cblxuICAgICAgICA8dHIgKm5nSWY9XCJoYXNNYWluQ29sdW1ucyAmJiBoYXNSb3dUZW1wbGF0ZSAmJiByb3cuJHNob3dEZXRhaWwgJiYgaXNTaG93Um93VGVtcGxhdGUocm93LCByb3dJbmRleClcIj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJwby10YWJsZS1yb3ctdGVtcGxhdGUtY29udGFpbmVyXCIgW2NvbFNwYW5dPVwiY29sdW1uQ291bnRGb3JNYXN0ZXJEZXRhaWxcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0YWJsZVJvd1RlbXBsYXRlLnRlbXBsYXRlUmVmXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cblxuICAgICAgICA8dHIgKm5nSWY9XCJoYXNNYWluQ29sdW1ucyAmJiBpc1Nob3dNYXN0ZXJEZXRhaWwocm93KVwiPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1kZXRhaWxcIiBbY29sU3Bhbl09XCJjb2x1bW5Db3VudEZvck1hc3RlckRldGFpbFwiPlxuICAgICAgICAgICAgPHBvLXRhYmxlLWRldGFpbFxuICAgICAgICAgICAgICBbcC1zZWxlY3RhYmxlXT1cInNlbGVjdGFibGUgJiYgIWRldGFpbEhpZGVTZWxlY3RcIlxuICAgICAgICAgICAgICBbcC1kZXRhaWxdPVwiY29sdW1uTWFzdGVyRGV0YWlsLmRldGFpbFwiXG4gICAgICAgICAgICAgIFtwLWl0ZW1zXT1cInJvd1tuYW1lQ29sdW1uRGV0YWlsXVwiXG4gICAgICAgICAgICAgIChwLXNlbGVjdC1yb3cpPVwic2VsZWN0RGV0YWlsUm93KCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9wby10YWJsZS1kZXRhaWw+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGJvZHk+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvdGFibGU+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIFRhYmxlIHdpdGggdmlydHVhbCBzY3JvbGwgLS0+XG48bmctdGVtcGxhdGUgI3RhYmxlVmlydHVhbFNjcm9sbFRlbXBsYXRlPlxuICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICAgI3RhYmxlVmlydHVhbFNjcm9sbFxuICAgIFtpdGVtU2l6ZV09XCJpdGVtU2l6ZVwiXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHRUYWJsZUNvbnRhaW5lclwiXG4gICAgW21pbkJ1ZmZlclB4XT1cImhlaWdodFRhYmxlQ29udGFpbmVyIDwgMTAwID8gMTAwIDogaGVpZ2h0VGFibGVDb250YWluZXJcIlxuICAgIFttYXhCdWZmZXJQeF09XCJoZWlnaHRUYWJsZUNvbnRhaW5lciA8IDIwMCA/IDIwMCA6IGhlaWdodFRhYmxlQ29udGFpbmVyXCJcbiAgPlxuICAgIDx0YWJsZVxuICAgICAgY2xhc3M9XCJwby10YWJsZVwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdwby10YWJsZS1pbnRlcmFjdGl2ZSc6IHNlbGVjdGFibGUgfHwgc29ydCxcbiAgICAgICAgJ3BvLXRhYmxlLXNlbGVjdGFibGUnOiBzZWxlY3RhYmxlLFxuICAgICAgICAncG8tdGFibGUtc3RyaXBlZCc6IHN0cmlwZWQsXG4gICAgICAgICdwby10YWJsZS1kYXRhLWZpeGVkLWNvbHVtbnMnOiBhcHBseUZpeGVkQ29sdW1ucygpLFxuICAgICAgICAncG8tdGFibGUtdGV4dC13cmFwLWVuYWJsZWQnOiB0ZXh0V3JhcFxuICAgICAgfVwiXG4gICAgICBbYXR0ci5wLXNwYWNpbmddPVwic3BhY2luZ1wiXG4gICAgPlxuICAgICAgPHRoZWFkIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLXN0aWNreVwiIFtzdHlsZS50b3BdPVwiaW52ZXJzZU9mVHJhbnNsYXRpb25cIj5cbiAgICAgICAgPHRyXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlcl09XCIhaGVpZ2h0XCJcbiAgICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcbiAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8dGhcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzU2VsZWN0YWJsZUNvbHVtblwiXG4gICAgICAgICAgICBbc3R5bGUucG9pbnRlci1ldmVudHNdPVwiaGlkZVNlbGVjdEFsbCA/ICdub25lJyA6ICdhdXRvJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1zZWxlY3RhYmxlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IFtjbGFzcy5wby10YWJsZS1oZWFkZXItZml4ZWQtaW5uZXJdPVwiaGVpZ2h0XCI+XG4gICAgICAgICAgICAgIDxwby1jaGVja2JveFxuICAgICAgICAgICAgICAgIG5hbWU9XCJzZWxlY3RBbGxcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWhpZGVTZWxlY3RBbGxcIlxuICAgICAgICAgICAgICAgIChwLWNoYW5nZSk9XCJzZWxlY3RBbGxSb3dzKClcIlxuICAgICAgICAgICAgICAgIFtwLWNoZWNrYm94VmFsdWVdPVwic2VsZWN0QWxsID09PSBudWxsID8gJ21peGVkJyA6IHNlbGVjdEFsbFwiXG4gICAgICAgICAgICAgID48L3BvLWNoZWNrYm94PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90aD5cblxuICAgICAgICAgIDx0aFxuICAgICAgICAgICAgKm5nSWY9XCIoaGFzTWFzdGVyRGV0YWlsQ29sdW1uIHx8IGhhc1Jvd1RlbXBsYXRlKSAmJiAhaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodFwiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1jb2x1bW4gcG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxcIlxuICAgICAgICAgID48L3RoPlxuXG4gICAgICAgICAgPCEtLSBDb2x1bmEgY3JpYWRhIHBhcmEgY2FzbyBhcyBhw6fDtWVzIGZpcXVlbSBubyBsYWRvIGVzcXVlcmRvIC0tPlxuICAgICAgICAgIDx0aFxuICAgICAgICAgICAgI2NvbHVtbkFjdGlvbkxlZnRcbiAgICAgICAgICAgICpuZ0lmPVwiIWFjdGlvblJpZ2h0ICYmICh2aXNpYmxlQWN0aW9ucy5sZW5ndGggPiAxIHx8IGlzU2luZ2xlQWN0aW9uKVwiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxdPVwiIWlzU2luZ2xlQWN0aW9uXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc2luZ2xlLWFjdGlvbl09XCJpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgICAgPjwvdGg+XG5cbiAgICAgICAgICA8dGggKm5nSWY9XCIhaGFzTWFpbkNvbHVtbnNcIiAjbm9Db2x1bW5zSGVhZGVyIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWNvbHVtbiBwby10ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlaWdodDsgdGhlbiBub0NvbHVtbnNXaXRoSGVpZ2h0OyBlbHNlIG5vQ29sdW1uc1dpdGhvdXRIZWlnaHRcIj4gPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC90aD5cblxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIHRoaXMuaXNEcmFnZ2FibGUgfHwgaGFzU29tZUZpeGVkKCk7XG4gICAgICAgICAgICAgIHRoZW4gdGFibGVWaXJ0dWFsU2Nyb2xsVGhEcmFnRHJvcDtcbiAgICAgICAgICAgICAgZWxzZSB0YWJsZVZpcnR1YWxTY3JvbGxUaERlZmF1bHRcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGFibGVWaXJ0dWFsU2Nyb2xsVGhEcmFnRHJvcD5cbiAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIG1haW5Db2x1bW5zOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZWxsaXBzaXMgcC1lbGVtZW50IHBvLWZyb3plbi1jb2x1bW5cIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtcG8tdGFibGUtY29sdW1uLW5hbWVdPVwiY29sdW1uLmxhYmVsIHx8IChjb2x1bW4ucHJvcGVydHkgfCB0aXRsZWNhc2UpIHwgbG93ZXJjYXNlXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLWNsaWNrYWJsZV09XCIoc29ydCAmJiBjb2x1bW4uc29ydGFibGUgIT09IGZhbHNlKSB8fCBoYXNTZXJ2aWNlXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICdwby10YWJsZS1oZWFkZXItc29ydGVkJzpcbiAgICAgICAgICAgICAgICAgIHNvcnQgJiZcbiAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHNvcnRlZENvbHVtbj8ucHJvcGVydHkpID09PSBKU09OLnN0cmluZ2lmeShjb2x1bW4pICYmXG4gICAgICAgICAgICAgICAgICAoc29ydGVkQ29sdW1uLmFzY2VuZGluZyB8fCAhc29ydGVkQ29sdW1uLmFzY2VuZGluZylcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ3dpZHRoJzogIWhhc0l0ZW1zID8gJzEwMCUnIDogYXBwbHlGaXhlZENvbHVtbnMoKSA/IGNvbHVtbi53aWR0aCA6ICdhdXRvJyB9XCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zdWJ0aXRsZV09XCJjb2x1bW4udHlwZSA9PT0gJ3N1YnRpdGxlJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tZHJhZy1ib3hdPVwidGhpcy5pc0RyYWdnYWJsZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzb3J0Q29sdW1uKGNvbHVtbilcIlxuICAgICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICAgIGNka0RyYWdMb2NrQXhpcz1cInhcIlxuICAgICAgICAgICAgICBbY2RrRHJhZ0Rpc2FibGVkXT1cImNvbHVtbi5maXhlZCA/ICd0cnVlJyA6ICdmYWxzZSdcIlxuICAgICAgICAgICAgICBbcEZyb3plbkNvbHVtbl09XCJjb2x1bW4uZml4ZWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZmxleFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1maXhlZC1pbm5lcl09XCJoZWlnaHRcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZmxleC1yaWdodF09XCJjb2x1bW4udHlwZSA9PT0gJ2N1cnJlbmN5JyB8fCBjb2x1bW4udHlwZSA9PT0gJ251bWJlcidcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZmxleC1jZW50ZXJdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRoaXMuaXNEcmFnZ2FibGUgJiYgIWNvbHVtbi5maXhlZFwiPlxuICAgICAgICAgICAgICAgICAgPHBvLWljb24gY2RrRHJhZ0hhbmRsZSAqbmdJZj1cImljb25OYW1lTGliID09PSAnUGhvc3Bob3JJY29uJ1wiIHAtaWNvbj1cIklDT05fRFJBR1wiPjwvcG8taWNvbj5cbiAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpY29uTmFtZUxpYiA9PT0gJ1BvSWNvbidcIlxuICAgICAgICAgICAgICAgICAgICBjZGtEcmFnSGFuZGxlXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIlxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiOVwiIGN5PVwiNlwiIHI9XCIyXCIgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjE1XCIgY3k9XCI2XCIgcj1cIjJcIiBmaWxsPVwiYmxhY2tcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiOVwiIGN5PVwiMTJcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxNVwiIGN5PVwiMTJcIiByPVwiMlwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI5XCIgY3k9XCIxOFwiIHI9XCIyXCIgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjE1XCIgY3k9XCIxOFwiIHI9XCIyXCIgZmlsbD1cImJsYWNrXCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50SGVhZGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4gfVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICN0YWJsZVZpcnR1YWxTY3JvbGxUaERlZmF1bHQ+XG4gICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBtYWluQ29sdW1uczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWVsbGlwc2lzIHAtZWxlbWVudCBwby1mcm96ZW4tY29sdW1uIGV4YW1wbGUtYm94XCJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBvLXRhYmxlLWNvbHVtbi1uYW1lXT1cImNvbHVtbi5sYWJlbCB8fCAoY29sdW1uLnByb3BlcnR5IHwgdGl0bGVjYXNlKSB8IGxvd2VyY2FzZVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby1jbGlja2FibGVdPVwiKHNvcnQgJiYgY29sdW1uLnNvcnRhYmxlICE9PSBmYWxzZSkgfHwgaGFzU2VydmljZVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAncG8tdGFibGUtaGVhZGVyLXNvcnRlZCc6XG4gICAgICAgICAgICAgICAgICBzb3J0ICYmXG4gICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShzb3J0ZWRDb2x1bW4/LnByb3BlcnR5KSA9PT0gSlNPTi5zdHJpbmdpZnkoY29sdW1uKSAmJlxuICAgICAgICAgICAgICAgICAgKHNvcnRlZENvbHVtbi5hc2NlbmRpbmcgfHwgIXNvcnRlZENvbHVtbi5hc2NlbmRpbmcpXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICd3aWR0aCc6ICFoYXNJdGVtcyA/ICcxMDAlJyA6IGFwcGx5Rml4ZWRDb2x1bW5zKCkgPyBjb2x1bW4ud2lkdGggOiAnYXV0bycgfVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc3VidGl0bGVdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic29ydENvbHVtbihjb2x1bW4pXCJcbiAgICAgICAgICAgICAgW3BGcm96ZW5Db2x1bW5dPVwiY29sdW1uLmZpeGVkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWZsZXhcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZml4ZWQtaW5uZXJdPVwiaGVpZ2h0XCJcbiAgICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtY2VudGVyXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50SGVhZGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4gfVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICA8dGhcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodCAmJiAoaGFzVmlzaWJsZUFjdGlvbnMgfHwgaGlkZUNvbHVtbnNNYW5hZ2VyKVwiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1jb2x1bW4gcG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxcIlxuICAgICAgICAgID48L3RoPlxuXG4gICAgICAgICAgPHRoXG4gICAgICAgICAgICAqbmdJZj1cImhhc1Zpc2libGVBY3Rpb25zICYmIGFjdGlvblJpZ2h0ICYmICh2aXNpYmxlQWN0aW9ucy5sZW5ndGggPiAxIHx8IGlzU2luZ2xlQWN0aW9uKVwiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLXNpbmdsZS1hY3Rpb25dPVwiaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1hY3Rpb25zXT1cIiFpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgICAgPjwvdGg+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3RoZWFkPlxuXG4gICAgICA8dGJvZHkgY2xhc3M9XCJwby10YWJsZS1ncm91cC1yb3dcIiAqbmdJZj1cIiFoYXNJdGVtcyB8fCAhaGFzTWFpbkNvbHVtbnNcIj5cbiAgICAgICAgPHRyIGNsYXNzPVwicG8tdGFibGUtcm93IHBvLXRhYmxlLXJvdy1uby1kYXRhXCI+XG4gICAgICAgICAgPHRkIFtjb2xTcGFuXT1cImNvbHVtbkNvdW50XCIgY2xhc3M9XCJwby10YWJsZS1uby1kYXRhIHBvLXRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICA8c3Bhbj4ge3sgbGl0ZXJhbHMubm9EYXRhIH19IDwvc3Bhbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90Ym9keT5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc01haW5Db2x1bW5zXCI+XG4gICAgICAgIDx0Ym9keVxuICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtZ3JvdXAtcm93XCJcbiAgICAgICAgICAqY2RrVmlydHVhbEZvcj1cImxldCByb3cgb2YgZmlsdGVyZWRJdGVtczsgbGV0IHJvd0luZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIlxuICAgICAgICA+XG4gICAgICAgICAgPHRyXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLXJvd1wiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtcm93LWFjdGl2ZV09XCJyb3cuJHNlbGVjdGVkIHx8IChyb3cuJHNlbGVjdGVkID09PSBudWxsICYmIHNlbGVjdGFibGUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJzZWxlY3RhYmxlXCIgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tc2VsZWN0YWJsZVwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2luZ2xlU2VsZWN0ID8gaW5wdXRSYWRpbyA6IGlucHV0Q2hlY2tib3g7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3cgfVwiPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgIDwhLS0gVmFsaWRhIHNlIGEgb3JpZ2VtIGRvIGRldGFpbCDDqSBwZWxvIGlucHV0IGRvIHBvLXRhYmxlIC0tPlxuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29sdW1uTWFzdGVyRGV0YWlsICYmICFoaWRlRGV0YWlsICYmICFoYXNSb3dUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbC10b2dnbGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICA8IS0tIENvbHVuYSBjb20gYXMgYcOnw7VlcyBuYSBlc3F1ZXJkYSAocGFkcsOjbyktLT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAqbmdJZj1cIiFhY3Rpb25SaWdodCAmJiAodmlzaWJsZUFjdGlvbnMubGVuZ3RoID4gMSB8fCBpc1NpbmdsZUFjdGlvbilcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJBY3Rpb25zQ29sdW1uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgPCEtLSBWYWxpZGEgc2UgYSBvcmlnZW0gZG8gZGV0YWlsIMOpIHBlbGEgZGlyZXRpdmEgLS0+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgKm5nSWY9XCJoYXNSb3dUZW1wbGF0ZSAmJiAhaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbC10b2dnbGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBtYWluQ29sdW1uczsgbGV0IGNvbHVtbkluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW5dPVwiY29sdW1uLnR5cGUgIT09ICdpY29uJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbi1jZW50ZXJdPVwiY29sdW1uLnR5cGUgPT09ICdzdWJ0aXRsZSdcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtY29sdW1uLWljb25zXT1cImNvbHVtbi50eXBlID09PSAnaWNvbidcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJnZXRDbGFzc0NvbG9yKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgIFtwRnJvemVuQ29sdW1uXT1cImNvbHVtbi5maXhlZFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicC1lbGVtZW50IHBvLWZyb3plbi1jb2x1bW5cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiaGFzU2VsZWN0YWJsZVJvdygpID8gc2VsZWN0Um93KHJvdykgOiAnamF2YXNjcmlwdDo7J1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1jZWxsIHBvLXRhYmxlLWJvZHktZWxsaXBzaXMgbm90cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFtuZ1N3aXRjaF09XCJjb2x1bW4udHlwZVwiXG4gICAgICAgICAgICAgICAgW3AtdG9vbHRpcF09XCJ0b29sdGlwVGV4dFwiXG4gICAgICAgICAgICAgICAgW3AtYXBwZW5kLWluLWJvZHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwidG9vbHRpcE1vdXNlRW50ZXIoJGV2ZW50LCBjb2x1bW4sIHJvdylcIlxuICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cInRvb2x0aXBNb3VzZUxlYXZlKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidjb2x1bW5UZW1wbGF0ZSdcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJnZXRUZW1wbGF0ZShjb2x1bW4pOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIH1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidjZWxsVGVtcGxhdGUnXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVDZWxsVGVtcGxhdGU/LnRlbXBsYXRlUmVmOyBjb250ZXh0OiB7IHJvdzogcm93LCBjb2x1bW46IGNvbHVtbiB9XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInYm9vbGVhbidcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldEJvb2xlYW5MYWJlbChnZXRDZWxsRGF0YShyb3csIGNvbHVtbiksIGNvbHVtbikgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2N1cnJlbmN5J1wiPlxuICAgICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgY3VycmVuY3k6IGNvbHVtbi5mb3JtYXQgOiAnc3ltYm9sJyA6ICcxLjItMicgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGUnXCI+XG4gICAgICAgICAgICAgICAgICB7eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfCBkYXRlOiBjb2x1bW4uZm9ybWF0IHx8ICdkZC9NTS95eXl5JyB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCIndGltZSdcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB8IHBvX3RpbWU6IGNvbHVtbi5mb3JtYXQgfHwgJ0hIOm1tOnNzLmZmZmZmZicgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGVUaW1lJ1wiPlxuICAgICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgZGF0ZTogY29sdW1uLmZvcm1hdCB8fCAnZGQvTU0veXl5eSBISDptbTpzcycgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ251bWJlcidcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdE51bWJlcihnZXRDZWxsRGF0YShyb3csIGNvbHVtbiksIGNvbHVtbi5mb3JtYXQpIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPHBvLXRhYmxlLWNvbHVtbi1saW5rXG4gICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2xpbmsnXCJcbiAgICAgICAgICAgICAgICAgIFtwLWFjdGlvbl09XCJjb2x1bW4uYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIFtwLWRpc2FibGVkXT1cImNoZWNrRGlzYWJsZWQocm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICAgIFtwLWxpbmtdPVwicm93W2NvbHVtbi5saW5rXVwiXG4gICAgICAgICAgICAgICAgICBbcC1yb3ddPVwicm93XCJcbiAgICAgICAgICAgICAgICAgIFtwLXZhbHVlXT1cImdldENlbGxEYXRhKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGlja0xpbmsoJGV2ZW50LCByb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L3BvLXRhYmxlLWNvbHVtbi1saW5rPlxuXG4gICAgICAgICAgICAgICAgPHBvLXRhYmxlLWNvbHVtbi1pY29uXG4gICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2ljb24nXCJcbiAgICAgICAgICAgICAgICAgIFtwLWNvbHVtbl09XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgW3AtaWNvbnNdPVwiZ2V0Q29sdW1uSWNvbnMocm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICAgIFtwLXJvd109XCJyb3dcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L3BvLXRhYmxlLWNvbHVtbi1pY29uPlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidzdWJ0aXRsZSdcIj5cbiAgICAgICAgICAgICAgICAgIDxwby10YWJsZS1zdWJ0aXRsZS1jaXJjbGUgW3Atc3VidGl0bGVdPVwiZ2V0U3VidGl0bGVDb2x1bW4ocm93LCBjb2x1bW4pXCI+PC9wby10YWJsZS1zdWJ0aXRsZS1jaXJjbGU+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInbGFiZWwnXCI+XG4gICAgICAgICAgICAgICAgICA8cG8tdGFibGUtY29sdW1uLWxhYmVsIFtwLXZhbHVlXT1cImdldENvbHVtbkxhYmVsKHJvdywgY29sdW1uKVwiPiA8L3BvLXRhYmxlLWNvbHVtbi1sYWJlbD5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoRGVmYXVsdD57eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICpuZ0lmPVwiaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbC10b2dnbGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICA8IS0tIENvbHVuYSBkZSBhw6dvZXMgbmEgZGlyZWl0YSAtLT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAqbmdJZj1cImFjdGlvblJpZ2h0XCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiQWN0aW9uc0NvbHVtblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC90cj5cblxuICAgICAgICAgIDx0ciAqbmdJZj1cImhhc01haW5Db2x1bW5zICYmIGhhc1Jvd1RlbXBsYXRlICYmIHJvdy4kc2hvd0RldGFpbCAmJiBpc1Nob3dSb3dUZW1wbGF0ZShyb3csIHJvd0luZGV4KVwiPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwicG8tdGFibGUtcm93LXRlbXBsYXRlLWNvbnRhaW5lclwiIFtjb2xTcGFuXT1cImNvbHVtbkNvdW50Rm9yTWFzdGVyRGV0YWlsXCI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhYmxlUm93VGVtcGxhdGUudGVtcGxhdGVSZWZcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC90cj5cblxuICAgICAgICAgIDx0ciAqbmdJZj1cImhhc01haW5Db2x1bW5zICYmIGlzU2hvd01hc3RlckRldGFpbChyb3cpXCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tZGV0YWlsXCIgW2NvbFNwYW5dPVwiY29sdW1uQ291bnRGb3JNYXN0ZXJEZXRhaWxcIj5cbiAgICAgICAgICAgICAgPHBvLXRhYmxlLWRldGFpbFxuICAgICAgICAgICAgICAgIFtwLXNlbGVjdGFibGVdPVwic2VsZWN0YWJsZSAmJiAhZGV0YWlsSGlkZVNlbGVjdFwiXG4gICAgICAgICAgICAgICAgW3AtZGV0YWlsXT1cImNvbHVtbk1hc3RlckRldGFpbC5kZXRhaWxcIlxuICAgICAgICAgICAgICAgIFtwLWl0ZW1zXT1cInJvd1tuYW1lQ29sdW1uRGV0YWlsXVwiXG4gICAgICAgICAgICAgICAgKHAtc2VsZWN0LXJvdyk9XCJzZWxlY3REZXRhaWxSb3coJGV2ZW50KVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9wby10YWJsZS1kZXRhaWw+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3RhYmxlPlxuICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbjwvbmctdGVtcGxhdGU+XG5cbjxwby1wb3B1cCAjcG9wdXAgW3AtYWN0aW9uc109XCJhY3Rpb25zXCIgW3AtdGFyZ2V0XT1cInBvcHVwVGFyZ2V0XCI+IDwvcG8tcG9wdXA+XG5cbjxuZy10ZW1wbGF0ZSAjcG9UYWJsZUNvbHVtbkRldGFpbCBsZXQtcm93PVwicm93XCIgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIj5cbiAgPHBvLWljb25cbiAgICAqbmdJZj1cIihjb250YWluc01hc3RlckRldGFpbChyb3cpICYmICFoYXNSb3dUZW1wbGF0ZSkgfHwgKGlzU2hvd1Jvd1RlbXBsYXRlKHJvdywgcm93SW5kZXgpICYmIGhhc1Jvd1RlbXBsYXRlKVwiXG4gICAgW3AtaWNvbl09XCJyb3cuJHNob3dEZXRhaWwgPyAnSUNPTl9BUlJPV19VUCcgOiAnSUNPTl9BUlJPV19ET1dOJ1wiXG4gICAgY2xhc3M9XCJwby1jbGlja2FibGVcIlxuICA+XG4gIDwvcG8taWNvbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaW5wdXRSYWRpbyBsZXQtcm93PlxuICA8cG8tcmFkaW8gW25hbWVdPVwiaWRSYWRpb1wiIFtwLWNoZWNrZWRdPVwicm93LiRzZWxlY3RlZFwiIChwLWNoYW5nZS1zZWxlY3RlZCk9XCJzZWxlY3RSb3cocm93KVwiPjwvcG8tcmFkaW8+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2lucHV0Q2hlY2tib3ggbGV0LXJvdz5cbiAgPHBvLWNoZWNrYm94XG4gICAgbmFtZT1cImNoZWNrYm94XCJcbiAgICAocC1jaGFuZ2UpPVwic2VsZWN0YWJsZSA/IHNlbGVjdFJvdyhyb3cpIDogJ2phdmFzY3JpcHQ6OydcIlxuICAgIFtwLWNoZWNrYm94VmFsdWVdPVwicm93LiRzZWxlY3RlZFwiXG4gID48L3BvLWNoZWNrYm94PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjb250ZW50SGVhZGVyVGVtcGxhdGUgbGV0LWNvbHVtbj5cbiAgPHNwYW5cbiAgICAjY29sdW1uSGVhZGVyXG4gICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZWxsaXBzaXNcIlxuICAgIFtwLXRvb2x0aXBdPVwidG9vbHRpcFRleHRcIlxuICAgIFtwLWFwcGVuZC1pbi1ib2R5XT1cInRydWVcIlxuICAgIChtb3VzZWVudGVyKT1cInRvb2x0aXBNb3VzZUVudGVyKCRldmVudClcIlxuICAgIChtb3VzZWxlYXZlKT1cInRvb2x0aXBNb3VzZUxlYXZlKClcIlxuICA+XG4gICAge3sgY29sdW1uLmxhYmVsIHx8IChjb2x1bW4ucHJvcGVydHkgfCB0aXRsZWNhc2UpIH19XG4gIDwvc3Bhbj5cblxuICA8c3BhblxuICAgICpuZ0lmPVwic29ydCAmJiBjb2x1bW4uc29ydGFibGUgIT09IGZhbHNlXCJcbiAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWljb24tdW5zZWxlY3RlZF09XCJKU09OLnN0cmluZ2lmeShzb3J0ZWRDb2x1bW4/LnByb3BlcnR5KSAhPT0gSlNPTi5zdHJpbmdpZnkoY29sdW1uKVwiXG4gICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1pY29uLWRlc2NlbmRpbmddPVwiXG4gICAgICBKU09OLnN0cmluZ2lmeShzb3J0ZWRDb2x1bW4/LnByb3BlcnR5KSA9PT0gSlNPTi5zdHJpbmdpZnkoY29sdW1uKSAmJiBzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nXG4gICAgXCJcbiAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWljb24tYXNjZW5kaW5nXT1cIlxuICAgICAgSlNPTi5zdHJpbmdpZnkoc29ydGVkQ29sdW1uPy5wcm9wZXJ0eSkgPT09IEpTT04uc3RyaW5naWZ5KGNvbHVtbikgJiYgIXNvcnRlZENvbHVtbi5hc2NlbmRpbmdcbiAgICBcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkpTT04uc3RyaW5naWZ5KHNvcnRlZENvbHVtbj8ucHJvcGVydHkpICE9PSBKU09OLnN0cmluZ2lmeShjb2x1bW4pXCI+XG4gICAgICA8cG8taWNvbiAqbmdJZj1cImljb25OYW1lTGliID09PSAnUGhvc3Bob3JJY29uJ1wiIHAtaWNvbj1cIklDT05fU09SVFwiPjwvcG8taWNvbj5cbiAgICAgIDxzdmdcbiAgICAgICAgKm5nSWY9XCJpY29uTmFtZUxpYiA9PT0gJ1BvSWNvbidcIlxuICAgICAgICB3aWR0aD1cIjE2XCJcbiAgICAgICAgaGVpZ2h0PVwiMTZcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgID5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICBkPVwiTTE4LjI5MjkgMTUuMjkyOUwxNyAxNi41ODU4TDE3IDEwQzE3IDkuNDQ3NzIgMTYuNTUyMyA5IDE2IDlDMTUuNDQ3NyA5IDE1IDkuNDQ3NzIgMTUgMTBMMTUgMTYuNTg1OEwxMy43MDcxIDE1LjI5MjlDMTMuMzE2NiAxNC45MDI0IDEyLjY4MzQgMTQuOTAyNCAxMi4yOTI5IDE1LjI5MjlDMTEuOTAyNCAxNS42ODM0IDExLjkwMjQgMTYuMzE2NiAxMi4yOTI5IDE2LjcwNzFMMTUuMjkyOSAxOS43MDcxQzE1LjY4MzQgMjAuMDk3NiAxNi4zMTY2IDIwLjA5NzYgMTYuNzA3MSAxOS43MDcxTDE5LjcwNzEgMTYuNzA3MUMyMC4wOTc2IDE2LjMxNjYgMjAuMDk3NiAxNS42ODM0IDE5LjcwNzEgMTUuMjkyOUMxOS4zMTY2IDE0LjkwMjQgMTguNjgzNCAxNC45MDI0IDE4LjI5MjkgMTUuMjkyOVpNNS43MDcxNiA4LjcwNzFMNy4wMDAwNiA3LjQxNDJMNy4wMDAwMyAxNEM3LjAwMDAyIDE0LjU1MjMgNy40NDc3NCAxNSA4LjAwMDAyIDE1QzguNTUyMzEgMTUgOS4wMDAwMiAxNC41NTIzIDkuMDAwMDMgMTRMOS4wMDAwNiA3LjQxNDE4TDEwLjI5MjkgOC43MDcwN0MxMC42ODM1IDkuMDk3NTkgMTEuMzE2NiA5LjA5NzU4IDExLjcwNzIgOC43MDcwNkMxMi4wOTc3IDguMzE2NTMgMTIuMDk3NyA3LjY4MzM2IDExLjcwNzIgNy4yOTI4NEw4LjcwNzE4IDQuMjkyODZDOC4zMTY2NSAzLjkwMjM0IDcuNjgzNDkgMy45MDIzNSA3LjI5Mjk2IDQuMjkyODdMNC4yOTI5NSA3LjI5Mjg5QzMuOTAyNDIgNy42ODM0MiAzLjkwMjQyIDguMzE2NTggNC4yOTI5NCA4LjcwNzExQzQuNjgzNDcgOS4wOTc2MyA1LjMxNjYzIDkuMDk3NjIgNS43MDcxNiA4LjcwNzFaXCJcbiAgICAgICAgICBmaWxsPVwiIzFEMUQzMFwiXG4gICAgICAgIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJKU09OLnN0cmluZ2lmeShzb3J0ZWRDb2x1bW4/LnByb3BlcnR5KSA9PT0gSlNPTi5zdHJpbmdpZnkoY29sdW1uKSAmJiBzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nXCI+XG4gICAgICA8cG8taWNvbiAqbmdJZj1cImljb25OYW1lTGliID09PSAnUGhvc3Bob3JJY29uJ1wiIHAtaWNvbj1cIklDT05fU09SVF9BU0NcIj48L3BvLWljb24+XG4gICAgICA8c3ZnXG4gICAgICAgICpuZ0lmPVwiaWNvbk5hbWVMaWIgPT09ICdQb0ljb24nXCJcbiAgICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICAgIGhlaWdodD1cIjE2XCJcbiAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICA+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgZD1cIk0xMSA5LjQxNDIxTDkuNzA3MTEgMTAuNzA3MUM5LjMxNjU4IDExLjA5NzYgOC42ODM0MiAxMS4wOTc2IDguMjkyODkgMTAuNzA3MUM3LjkwMjM3IDEwLjMxNjYgNy45MDIzNyA5LjY4MzQyIDguMjkyODkgOS4yOTI4OUwxMS4yOTI5IDYuMjkyODlDMTEuNjgzNCA1LjkwMjM3IDEyLjMxNjYgNS45MDIzNyAxMi43MDcxIDYuMjkyODlMMTUuNzA3MSA5LjI5Mjg5QzE2LjA5NzYgOS42ODM0MiAxNi4wOTc2IDEwLjMxNjYgMTUuNzA3MSAxMC43MDcxQzE1LjMxNjYgMTEuMDk3NiAxNC42ODM0IDExLjA5NzYgMTQuMjkyOSAxMC43MDcxTDEzIDkuNDE0MjFWMTZDMTMgMTYuNTUyMyAxMi41NTIzIDE3IDEyIDE3QzExLjQ0NzcgMTcgMTEgMTYuNTUyMyAxMSAxNlY5LjQxNDIxWlwiXG4gICAgICAgICAgZmlsbD1cImJsYWNrXCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkpTT04uc3RyaW5naWZ5KHNvcnRlZENvbHVtbj8ucHJvcGVydHkpID09PSBKU09OLnN0cmluZ2lmeShjb2x1bW4pICYmICFzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nXCI+XG4gICAgICA8cG8taWNvbiBjZGtEcmFnSGFuZGxlICpuZ0lmPVwiaWNvbk5hbWVMaWIgPT09ICdQaG9zcGhvckljb24nXCIgcC1pY29uPVwiSUNPTl9TT1JUX0RFU0NcIj48L3BvLWljb24+XG4gICAgICA8c3ZnXG4gICAgICAgICpuZ0lmPVwiaWNvbk5hbWVMaWIgPT09ICdQb0ljb24nXCJcbiAgICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICAgIGhlaWdodD1cIjE2XCJcbiAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICA+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgZD1cIk05LjcwNzExIDEzLjI5MjlMMTEgMTQuNTg1OFY3QzExIDYuNDQ3NzIgMTEuNDQ3NyA2IDEyIDZDMTIuNTUyMyA2IDEzIDYuNDQ3NzIgMTMgN1YxNC41ODU4TDE0LjI5MjkgMTMuMjkyOUMxNC42ODM0IDEyLjkwMjQgMTUuMzE2NiAxMi45MDI0IDE1LjcwNzEgMTMuMjkyOUMxNi4wOTc2IDEzLjY4MzQgMTYuMDk3NiAxNC4zMTY2IDE1LjcwNzEgMTQuNzA3MUwxMi43MDcxIDE3LjcwNzFDMTIuMzE2NiAxOC4wOTc2IDExLjY4MzQgMTguMDk3NiAxMS4yOTI5IDE3LjcwNzFMOC4yOTI4OSAxNC43MDcxQzcuOTAyMzcgMTQuMzE2NiA3LjkwMjM3IDEzLjY4MzQgOC4yOTI4OSAxMy4yOTI5QzguNjgzNDIgMTIuOTAyNCA5LjMxNjU4IDEyLjkwMjQgOS43MDcxMSAxMy4yOTI5WlwiXG4gICAgICAgICAgZmlsbD1cImJsYWNrXCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI25vQ29sdW1uc1dpdGhIZWlnaHQ+XG4gIDxkaXYgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZml4ZWQtaW5uZXJcIiBbc3R5bGUud2lkdGgucHhdPVwiaGVhZGVyV2lkdGhcIj5cbiAgICB7eyBoYXNWYWxpZENvbHVtbnMgPyBsaXRlcmFscy5ub1Zpc2libGVDb2x1bW4gOiBsaXRlcmFscy5ub0NvbHVtbnMgfX1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI25vQ29sdW1uc1dpdGhvdXRIZWlnaHQ+XG4gIHt7IGhhc1ZhbGlkQ29sdW1ucyA/IGxpdGVyYWxzLm5vVmlzaWJsZUNvbHVtbiA6IGxpdGVyYWxzLm5vQ29sdW1ucyB9fVxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBUZW1wbGF0ZSBkZSBhw6fDtWVzIC0tPlxuPG5nLXRlbXBsYXRlICNBY3Rpb25zQ29sdW1uVGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCI+XG4gIDx0ZFxuICAgICpuZ0lmPVwiaXNTaW5nbGVBY3Rpb25cIlxuICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uIHBvLXRhYmxlLWNvbHVtbi1zaW5nbGUtYWN0aW9uXCJcbiAgICBbc3R5bGUud2lkdGgucHhdPVwiaGVpZ2h0ICYmIGFjdGlvblJpZ2h0ID8gZ2V0V2lkdGhDb2x1bW5NYW5hZ2VyKCkgOiAnJ1wiXG4gICAgW3N0eWxlLm1heC13aWR0aC5weF09XCJoZWlnaHQgJiYgIWFjdGlvblJpZ2h0ID8gZ2V0Q29sdW1uV2lkdGhBY3Rpb25zTGVmdCgpIDogJydcIlxuICAgIFtzdHlsZS53aWR0aC5weF09XCJoZWlnaHQgJiYgIWFjdGlvblJpZ2h0ID8gZ2V0Q29sdW1uV2lkdGhBY3Rpb25zTGVmdCgpIDogJydcIlxuICA+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJmaXJzdEFjdGlvbi52aXNpYmxlICE9PSBmYWxzZVwiXG4gICAgICBjbGFzcz1cInBvLXRhYmxlLXNpbmdsZS1hY3Rpb24gcG8tY2xpY2thYmxlXCJcbiAgICAgIFtjbGFzcy5wby10YWJsZS1hY3Rpb24tZGlzYWJsZWRdPVwiZmlyc3RBY3Rpb24uZGlzYWJsZWQgPyB2YWxpZGF0ZVRhYmxlQWN0aW9uKHJvdywgZmlyc3RBY3Rpb24pIDogZmFsc2VcIlxuICAgICAgKGNsaWNrKT1cImV4ZWN1dGVUYWJsZUFjdGlvbihyb3csIGZpcnN0QWN0aW9uKVwiXG4gICAgPlxuICAgICAgPHBvLWljb24gKm5nSWY9XCJmaXJzdEFjdGlvbi5pY29uXCIgY2xhc3M9XCJwby10YWJsZS1zaW5nbGUtYWN0aW9uLWNvbnRlbnRcIiBbcC1pY29uXT1cImZpcnN0QWN0aW9uLmljb25cIj48L3BvLWljb24+XG4gICAgICB7eyBmaXJzdEFjdGlvbi5sYWJlbCB9fVxuICAgIDwvZGl2PlxuICA8L3RkPlxuXG4gIDx0ZCAqbmdJZj1cInZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDFcIiBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1hY3Rpb25zXCI+XG4gICAgPGRpdiAjcG9wdXBUYXJnZXQgY2xhc3M9XCJwby1jbGlja2FibGVcIiAoY2xpY2spPVwidG9nZ2xlUG9wdXAocm93LCBwb3B1cFRhcmdldClcIj5cbiAgICAgIDxwby1pY29uIHAtaWNvbj1cIklDT05fTU9SRVwiPjwvcG8taWNvbj5cbiAgICA8L2Rpdj5cbiAgPC90ZD5cbjwvbmctdGVtcGxhdGU+XG5cbjxwby10YWJsZS1jb2x1bW4tbWFuYWdlclxuICAqbmdJZj1cIiFoaWRlQ29sdW1uc01hbmFnZXJcIlxuICBbcC1jb2x1bW5zXT1cImNvbHVtbnNcIlxuICBbcC1tYXgtY29sdW1uc109XCJtYXhDb2x1bW5zXCJcbiAgW3AtdGFyZ2V0XT1cImNvbHVtbk1hbmFnZXJUYXJnZXRcIlxuICBbcC1sYXN0LXZpc2libGUtY29sdW1ucy1zZWxlY3RlZF09XCJsYXN0VmlzaWJsZUNvbHVtbnNTZWxlY3RlZFwiXG4gIFtwLWhpZGUtYWN0aW9uLWZpeGVkLWNvbHVtbnNdPVwiaGlkZUFjdGlvbkZpeGVkQ29sdW1uc1wiXG4gIChwLXZpc2libGUtY29sdW1ucy1jaGFuZ2UpPVwib25WaXNpYmxlQ29sdW1uc0NoYW5nZSgkZXZlbnQpXCJcbiAgKHAtY2hhbmdlLXZpc2libGUtY29sdW1ucyk9XCJvbkNoYW5nZVZpc2libGVDb2x1bW5zKCRldmVudClcIlxuICBbcC1jb2x1bW5zLWRlZmF1bHRdPVwiaW5pdGlhbENvbHVtbnNcIlxuICAocC1pbml0aWFsLWNvbHVtbnMpPVwib25Db2x1bW5SZXN0b3JlTWFuYWdlcigkZXZlbnQpXCJcbj5cbjwvcG8tdGFibGUtY29sdW1uLW1hbmFnZXI+XG5cbjxwby1tb2RhbFxuICAjbW9kYWxEZWxldGVcbiAgW3AtdGl0bGVdPVwibGl0ZXJhbHMuZGVsZXRlXCJcbiAgW3AtcHJpbWFyeS1hY3Rpb25dPVwiY29uZmlybVwiXG4gIFtwLXNlY29uZGFyeS1hY3Rpb25dPVwiY2xvc2VcIlxuICBbcC1jbGljay1vdXRdPVwidHJ1ZVwiXG4+XG4gIDxwIGNsYXNzPVwicG8tZm9udC10ZXh0LWxhcmdlXCI+e3sgbGl0ZXJhbHMuYm9keURlbGV0ZSB9fTwvcD5cbjwvcG8tbW9kYWw+XG4iXX0=
|