@firestitch/report 18.8.1 → 18.9.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/app/reports/components/component-text/component-text.component.d.ts +47 -2
- package/app/reports/components/component-text/value-embed.plugin.d.ts +67 -0
- package/app/reports/components/report-canvas/report-canvas.component.d.ts +34 -9
- package/app/reports/components/report-component/report-component.component.d.ts +10 -1
- package/app/reports/data/report.data.d.ts +2 -1
- package/app/reports/dialogs/component-settings/component-settings.component.d.ts +8 -0
- package/app/reports/enums/report-value-formula.enum.d.ts +6 -0
- package/app/reports/export/report-export-collector.service.d.ts +22 -0
- package/app/reports/export/report-export.service.d.ts +3 -1
- package/app/reports/export/report-pdf.service.d.ts +18 -2
- package/app/reports/export/report-pptx.service.d.ts +15 -2
- package/app/reports/export/report-text-layout.service.d.ts +35 -0
- package/app/reports/format.d.ts +2 -0
- package/app/reports/interfaces/report.interface.d.ts +21 -2
- package/app/reports/layout.d.ts +2 -0
- package/app/reports/services/report-filter-state.service.d.ts +1 -1
- package/app/reports/text.d.ts +50 -0
- package/app/reports/values.d.ts +17 -0
- package/esm2022/app/reports/components/component-text/component-text.component.mjs +213 -16
- package/esm2022/app/reports/components/component-text/value-embed.plugin.mjs +484 -0
- package/esm2022/app/reports/components/report-canvas/report-canvas.component.mjs +260 -34
- package/esm2022/app/reports/components/report-component/report-component.component.mjs +65 -19
- package/esm2022/app/reports/data/report.data.mjs +19 -1
- package/esm2022/app/reports/dialogs/component-settings/component-settings.component.mjs +134 -23
- package/esm2022/app/reports/enums/report-value-formula.enum.mjs +14 -0
- package/esm2022/app/reports/export/report-export-collector.service.mjs +147 -43
- package/esm2022/app/reports/export/report-export.service.mjs +57 -19
- package/esm2022/app/reports/export/report-pdf.service.mjs +304 -65
- package/esm2022/app/reports/export/report-pptx.service.mjs +276 -58
- package/esm2022/app/reports/export/report-text-layout.service.mjs +241 -0
- package/esm2022/app/reports/format.mjs +12 -9
- package/esm2022/app/reports/interfaces/report.interface.mjs +1 -1
- package/esm2022/app/reports/layout.mjs +11 -1
- package/esm2022/app/reports/services/report-filter-state.service.mjs +19 -10
- package/esm2022/app/reports/text.mjs +293 -85
- package/esm2022/app/reports/values.mjs +183 -0
- package/esm2022/app/reports/views/report/fs-ai-report.component.mjs +4 -1
- package/esm2022/app/reports/views/report/report.component.mjs +4 -1
- package/esm2022/public_api.mjs +2 -1
- package/fesm2022/{firestitch-report-echarts-CFnbJx44.mjs → firestitch-report-echarts-DBMOHmBF.mjs} +2 -2
- package/fesm2022/{firestitch-report-echarts-CFnbJx44.mjs.map → firestitch-report-echarts-DBMOHmBF.mjs.map} +1 -1
- package/fesm2022/{firestitch-report-firestitch-report-CSylkyko.mjs → firestitch-report-firestitch-report-CqbXT1gh.mjs} +3270 -947
- package/fesm2022/firestitch-report-firestitch-report-CqbXT1gh.mjs.map +1 -0
- package/fesm2022/firestitch-report.mjs +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +1 -0
- package/fesm2022/firestitch-report-firestitch-report-CSylkyko.mjs.map +0 -1
|
@@ -27,4 +27,4 @@ export var ReportState;
|
|
|
27
27
|
ReportState["Active"] = "active";
|
|
28
28
|
ReportState["Deleted"] = "deleted";
|
|
29
29
|
})(ReportState || (ReportState = {}));
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy9pbnRlcmZhY2VzL3JlcG9ydC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkVBQTZFO0FBQzdFLG1FQUFtRTtBQUNuRSwrRUFBK0U7QUFDL0UsNEVBQTRFO0FBQzVFLG1DQUFtQztBQWlQbkMsNEVBQTRFO0FBQzVFLDJFQUEyRTtBQUMzRSx1REFBdUQ7QUFDdkQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQWdEO0lBQzlFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO0lBQzdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQy9CLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO0lBQ2pDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQ3JDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO0NBQ3BDLENBQUM7QUF5ckJGLE1BQU0sQ0FBTixJQUFZLGNBR1g7QUFIRCxXQUFZLGNBQWM7SUFDeEIsbUNBQWlCLENBQUE7SUFDakIsbUNBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUhXLGNBQWMsS0FBZCxjQUFjLFFBR3pCO0FBdUJELGdGQUFnRjtBQUNoRixpRkFBaUY7QUFDakYsNkVBQTZFO0FBQzdFLDBFQUEwRTtBQUMxRSxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLGdDQUFpQixDQUFBO0lBQ2pCLGtDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoZSBhc3NlbWJsZWQgcmVwb3J0IHN0cnVjdHVyZSByZXR1cm5lZCBieSBHRVQgL2FwaS9yZXBvcnRzLzppZCDigJQgY29tcG9zZWRcbi8vIHNlcnZlci1zaWRlIGZyb20gdGhlIG5vcm1hbGl6ZWQgdGFibGVzIChyZXBvcnRzIOKGkiByZXBvcnRfcGFnZXMg4oaSXG4vLyByZXBvcnRfY29tcG9uZW50cyArIHJlcG9ydF9maWx0ZXJzLCBwbHVzIHJlcG9ydF9maWx0ZXJfZ3JvdXBzKS4gQWxsIGtleXMgYXJlXG4vLyBjYW1lbENhc2U7IGNvbXBvbmVudCBgY29uZmlnYCBpcyB0aGUgc3RhbmRhcmQgZm9ybWF0IHRoZSByZW5kZXJlciBtYXBzIHRvXG4vLyBFQ2hhcnRzIG9wdGlvbnMgLyBGc0xpc3QgY29uZmlnLlxuXG5pbXBvcnQgeyBSZXBvcnRDaGFuZ2VQb2xhcml0eSB9IGZyb20gJy4uL2VudW1zL3JlcG9ydC1jaGFuZ2UtcG9sYXJpdHkuZW51bSc7XG5pbXBvcnQgeyBSZXBvcnRDaGFydENvbG9yIH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYXJ0LWNvbG9yLmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0Q2hhcnREYXRhTGFiZWxzIH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYXJ0LWRhdGEtbGFiZWxzLmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0Q2hhcnREYXRlTGFiZWwgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtY2hhcnQtZGF0ZS1sYWJlbC5lbnVtJztcbmltcG9ydCB7IFJlcG9ydENoYXJ0TGluZVN0eWxlIH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYXJ0LWxpbmUtc3R5bGUuZW51bSc7XG5pbXBvcnQgeyBSZXBvcnRDaGFydE1hcmtTdGF0IH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYXJ0LW1hcmstc3RhdC5lbnVtJztcbmltcG9ydCB7IFJlcG9ydExpc3RDb2x1bW5Gb3JtYXQgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtbGlzdC1jb2x1bW4tZm9ybWF0LmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0TnVtYmVyVW5pdHMgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtbnVtYmVyLXVuaXRzLmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0VmFsdWVGb3JtYXQgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtdmFsdWUtZm9ybWF0LmVudW0nO1xuXG4vLyBBIEJDUCA0NyBsYW5ndWFnZSB0YWcgbmFtaW5nIGhvdyBudW1iZXJzIGFuZCBkYXRlcyBhcmUgd3JpdHRlbiwgZS5nLiAnZnItQ0EnLlxuLy8gVGhlIHNldCBpcyBvcGVuICh0aGUgc2VydmVyJ3MgcHJvdmlkZXIgZGVjaWRlcyB3aGljaCBpdCBvZmZlcnMpLCBzbyB0aGlzIGlzIGFcbi8vIG5hbWVkIGFsaWFzIHJhdGhlciB0aGFuIGEgdW5pb24uXG5leHBvcnQgdHlwZSBSZXBvcnRMb2NhbGVUYWcgPSBzdHJpbmc7XG5cbi8vIEFuIElTTyA0MjE3IGN1cnJlbmN5IGNvZGUsIGUuZy4gJ0NBRCcuIE9wZW4gZm9yIHRoZSBzYW1lIHJlYXNvbi5cbmV4cG9ydCB0eXBlIFJlcG9ydEN1cnJlbmN5Q29kZSA9IHN0cmluZztcblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnQge1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIC8vIFRoZSByZXBvcnQncyBvd24gc3RvcmVkIElBTkEgem9uZSAoZS5nLiBBbWVyaWNhL05ld19Zb3JrKS4gbnVsbCA9IHRoZVxuICAvLyByZXBvcnQgZm9sbG93cyB0aGUgYXBwbGljYXRpb24ncyBkZWZhdWx0IHJlcG9ydGluZyB6b25lLlxuICB0aW1lem9uZTogc3RyaW5nIHwgbnVsbDtcbiAgLy8gVGhlIHpvbmUgZXZlcnkgZGF0ZSBmaWx0ZXIsIHRpbWUgYnVja2V0IGFuZCBkYXRlIGNlbGwgb2YgdGhpcyByZXBvcnQgdXNlcy5cbiAgLy8gUmVzb2x2ZWQgc2VydmVyLXNpZGU7IHRoZSBzYW1lIGZvciBldmVyeSB2aWV3ZXIsIGV4cG9ydCBhbmQgdGhlIGFzc2lzdGFudC5cbiAgLy8gT3B0aW9uYWwgb25seSBiZWNhdXNlIG9sZGVyIHNlcnZlcnMgb21pdCBpdDsgcmVzb2x2ZVJlcG9ydFRpbWV6b25lKCkgdGhlblxuICAvLyBmYWxscyBiYWNrIHRvIHRoZSByZXBvcnQncyBvd24gYHRpbWV6b25lYCwgdGhlbiB0aGUgYnJvd3NlcidzIHpvbmUuIFJlc29sdmVcbiAgLy8gdGhlIHpvbmUgZm9yIHJlbmRlcmluZyB0aHJvdWdoIHJlc29sdmVSZXBvcnRUaW1lem9uZSgpIChmb3JtYXQudHMpOyByZWFkIHRoZVxuICAvLyBmaWVsZCBkaXJlY3RseSBvbmx5IHRvIGNoZWNrIHdoZXRoZXIgdGhlIHNlcnZlciBzZW50IGl0LlxuICBlZmZlY3RpdmVUaW1lem9uZT86IHN0cmluZztcbiAgLy8gVGhlIHJlcG9ydCdzIG93biBzdG9yZWQgbG9jYWxlLiBudWxsID0gdGhlIHJlcG9ydCBmb2xsb3dzIHRoZSBkZWZhdWx0LlxuICBsb2NhbGU/OiBSZXBvcnRMb2NhbGVUYWcgfCBudWxsO1xuICAvLyBUaGUgbG9jYWxlIGV2ZXJ5IG51bWJlciBhbmQgZGF0ZSBvZiB0aGlzIHJlcG9ydCBpcyB3cml0dGVuIGluLCByZXNvbHZlZFxuICAvLyBzZXJ2ZXItc2lkZSAodGhlIHJlcG9ydCdzIG93biwgZWxzZSB0aGUgYXBwbGljYXRpb24ncyBkZWZhdWx0LCBlbHNlXG4gIC8vIGVuLVVTKS4gQWJzZW50IG9uIG9sZGVyIHNlcnZlcnMsIHdob3NlIHJlcG9ydHMgdGhlbiByZWFkIGVuLVVTLiBSZXNvbHZlIGl0XG4gIC8vIGZvciByZW5kZXJpbmcgdGhyb3VnaCByZXNvbHZlRm9ybWF0Q29udGV4dCgpIChmb3JtYXQudHMpLCBuZXZlciBkaXJlY3RseS5cbiAgZWZmZWN0aXZlTG9jYWxlPzogUmVwb3J0TG9jYWxlVGFnO1xuICAvLyBUaGUgcmVwb3J0J3Mgb3duIHN0b3JlZCBjdXJyZW5jeS4gbnVsbCA9IHRoZSByZXBvcnQgZm9sbG93cyB0aGUgZGVmYXVsdC5cbiAgY3VycmVuY3k/OiBSZXBvcnRDdXJyZW5jeUNvZGUgfCBudWxsO1xuICAvLyBUaGUgY3VycmVuY3kgbW9uZXkgYW1vdW50cyBhcmUgbGFiZWxlZCBpbiwgcmVzb2x2ZWQgbGlrZSBlZmZlY3RpdmVMb2NhbGVcbiAgLy8gKGZhbGxpbmcgYmFjayB0byB0aGUgbG9jYWxlJ3Mgb3duIGN1cnJlbmN5LCB0aGVuIFVTRCkuIEEgbGFiZWwgb25seTpcbiAgLy8gYW1vdW50cyBhcmUgbmV2ZXIgY29udmVydGVkLlxuICBlZmZlY3RpdmVDdXJyZW5jeT86IFJlcG9ydEN1cnJlbmN5Q29kZTtcbiAgLy8gSG93IHRoZSBzZXJ2ZXIgc2VuZHMgYSBwZXJjZW50IG1lYXN1cmU6ICdyYXRpbycgPSBhIDAtMSByYXRpbyAoMC4zODUgcmVhZHNcbiAgLy8gMzguNSUpLiBBYnNlbnQgb24gb2xkZXIgc2VydmVycywgd2hvc2UgcGVyY2VudCB2YWx1ZXMgYXJlIGFscmVhZHkgeDEwMFxuICAvLyAoMzguNSByZWFkcyAzOC41JSkuXG4gIHBlcmNlbnRGb3JtYXQ/OiAncmF0aW8nO1xuICAvLyBSZXBvcnQtbGV2ZWwgY29uZmlnOiB0eXBvZ3JhcGhpYyBzdHlsZXMsIGV0Yy4gKGNhbWVsQ2FzZSBKU09OIGNvbHVtbikuXG4gIGNvbmZpZzogUmVwb3J0Q29uZmlnO1xuICAvLyBUaGUgcGFnZSBpbiBJTkNIRVMgKHRoZSByZXBvcnQncyBuYXRpdmUgdW5pdCDigJQgUERGcyBhbmQgUG93ZXJQb2ludCBhcmVcbiAgLy8gaW5jaC1iYXNlZCwgc28gZXhwb3J0cyBhcmUgZGltZW5zaW9uYWxseSBleGFjdCkuIE9yaWVudGF0aW9uIGlzIG5vdCBhIGZpZWxkXG4gIC8vIG9mIGl0cyBvd246IGEgcGFnZSB3aWRlciB0aGFuIGl0IGlzIHRhbGwgSVMgbGFuZHNjYXBlLlxuICBwYWdlV2lkdGg6IG51bWJlcjtcbiAgcGFnZUhlaWdodDogbnVtYmVyO1xuICBwYWdlczogUmVwb3J0UGFnZVtdO1xuICAvLyBUaGUgaGVhZGVyIGFuZCBmb290ZXI6IHRoZSByZXBvcnQncyBtYXN0ZXIgcGFnZSwgd2hvc2UgY29tcG9uZW50cyBkcmF3XG4gIC8vIHVuZGVyIGV2ZXJ5IHBhZ2UgdGhhdCBkb2VzIG5vdCBoaWRlIHRoZW0gKFBvd2VyUG9pbnQncyBzbGlkZSBtYXN0ZXIpLiBOdWxsXG4gIC8vIHVudGlsIGFueXRoaW5nIGhhcyBiZWVuIHBsYWNlZCBpbiB0aGVtLlxuICBtYXN0ZXI6IFJlcG9ydE1hc3RlciB8IG51bGw7XG4gIGZpbHRlckdyb3VwczogUmVwb3J0RmlsdGVyR3JvdXBbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRNYXN0ZXIge1xuICBpZDogbnVtYmVyO1xuICBjb21wb25lbnRzOiBSZXBvcnRDb21wb25lbnRbXTtcbn1cblxuLy8gSG93IHRoZSBvcGVuIHJlcG9ydCB3cml0ZXMgaXRzIG51bWJlcnMgYW5kIGRhdGVzLCByZXNvbHZlZCBvbmNlIHBlciByZXBvcnRcbi8vIChyZXNvbHZlRm9ybWF0Q29udGV4dCkgYW5kIHJlYWQgYnkgdGhlIHZpZXdlciwgdGhlIFBERiBhbmQgUG93ZXJQb2ludCBhbGlrZS5cbi8vIE5ldmVyIHRoZSBicm93c2VyJ3MgbG9jYWxlLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRGb3JtYXRDb250ZXh0IHtcbiAgbG9jYWxlOiBSZXBvcnRMb2NhbGVUYWc7XG4gIGN1cnJlbmN5OiBSZXBvcnRDdXJyZW5jeUNvZGU7XG4gIC8vIFdoZXRoZXIgYSBwZXJjZW50IG1lYXN1cmUgYXJyaXZlcyBhcyBhIDAtMSByYXRpbyAodGhlIHJlcG9ydCdzXG4gIC8vIHBlcmNlbnRGb3JtYXQpLiBBbiBvbGRlciBzZXJ2ZXIgc2VuZHMgaXQgYWxyZWFkeSB4MTAwLlxuICByYXRpb1BlcmNlbnQ6IGJvb2xlYW47XG59XG5cbi8vIE9uZSBsb2NhbGUgdGhlIHNlcnZlciBvZmZlcnMsIHdpdGggdGhlIGN1cnJlbmN5IGEgcmVwb3J0IGluIGl0IHVzZXMgd2hlbiBpdFxuLy8gbmFtZXMgbm9uZSBvZiBpdHMgb3duLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRMb2NhbGVPcHRpb24ge1xuICBsb2NhbGU6IFJlcG9ydExvY2FsZVRhZztcbiAgZGVmYXVsdEN1cnJlbmN5OiBSZXBvcnRDdXJyZW5jeUNvZGU7XG59XG5cbi8vIEdFVCByZXBvcnRzL2xvY2FsZXM6IHdoYXQgdGhlIHJlcG9ydCBzZXR0aW5ncycgTG9jYWxlIGFuZCBDdXJyZW5jeSBzZWxlY3RzXG4vLyBvZmZlci5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0TG9jYWxlcyB7XG4gIGRlZmF1bHRMb2NhbGU6IFJlcG9ydExvY2FsZVRhZztcbiAgb3B0aW9uczogUmVwb3J0TG9jYWxlT3B0aW9uW107XG4gIGN1cnJlbmNpZXM6IFJlcG9ydEN1cnJlbmN5Q29kZVtdO1xufVxuXG4vLyBUaGUgZGVwdGggb2YgdGhlIGhlYWRlciBiYW5kICh0b3Agb2YgZXZlcnkgcGFnZSkgYW5kIHRoZSBmb290ZXIgYmFuZCAoYm90dG9tXG4vLyBvZiBldmVyeSBwYWdlKSwgaW4gSU5DSEVTLiBUaGUgYmFuZHMgaG9sZCBubyBjb250ZW50IG9mIHRoZWlyIG93biDigJQgdGhlXG4vLyBtYXN0ZXIncyBjb21wb25lbnRzIHNpdCBpbiB0aGVtIOKAlCB0aGV5IGFyZSB0aGUgcmVzZXJ2ZWQgbWFyZ2lucyB0aGUgZWRpdG9yXG4vLyBkcmF3cyBhcyBndWlkZXMgYW5kIHNuYXBzIHRvLiBBbHdheXMgYXJyaXZlcyByZXNvbHZlZCAoMCA9IG5vIGJhbmQpLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRIZWFkZXJGb290ZXIge1xuICBoZWFkZXJIZWlnaHQ6IG51bWJlcjtcbiAgZm9vdGVySGVpZ2h0OiBudW1iZXI7XG59XG5cbi8vIFJlcG9ydC1sZXZlbCBzdHlsaW5nLiBTaXplcyBhcmUgaW4gUE9JTlRTICgxLzcyXCIpIOKAlCB0aGUgcmVwb3J0J3MgdHlwb2dyYXBoeVxuLy8gbWFwcyAxOjEgdG8gUERGICg3MnB0L2luKSBhbmQgUG93ZXJQb2ludCAocG9pbnQgZm9udCBzaXplcyksIHNvIGEgcG9pbnRcbi8vIHZhbHVlIGlzIGRpbWVuc2lvbmFsbHkgZXhhY3Qgb24gc2NyZWVuIGFuZCBpbiBldmVyeSBleHBvcnQuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydENvbmZpZyB7XG4gIHN0eWxlcz86IFJlcG9ydFN0eWxlcztcbiAgLy8gVGhlIHJlcG9ydCdzIGdyb3VwLWJ5IGNvbnRyb2wuIE9wdGlvbmFsIG9uIHRoZSB0eXBlIGJlY2F1c2UgYSBSZXBvcnRDb25maWdcbiAgLy8gbGl0ZXJhbCBuZWVkIG5vdCBjYXJyeSBpdDsgdGhlIEFQSSBhbHdheXMgc2VuZHMgaXQsIHJlc29sdmVkLlxuICBncm91cEJ5PzogUmVwb3J0R3JvdXBCeTtcbiAgLy8gUmVzb2x2ZWQgYnkgdGhlIEFQSSBsaWtlIGdyb3VwQnkuXG4gIGhlYWRlckZvb3Rlcj86IFJlcG9ydEhlYWRlckZvb3Rlcjtcbn1cblxuLy8gVGhlIHJlcG9ydCdzIGdyb3VwLWJ5IGNvbnRyb2wg4oCUIHRoZSBvbmUgc3dpdGNoIHRoYXQgcmUtYnVja2V0cyBldmVyeVxuLy8gdGltZS1zZXJpZXMgY2hhcnQgb24gdGhlIHJlcG9ydCBiZXR3ZWVuIGRheSwgd2VlaywgbW9udGgsIHF1YXJ0ZXIgYW5kIHllYXIuXG4vL1xuLy8gSXQgaXMgTk9UIGEgZmlsdGVyOiBhIGZpbHRlciBuYXJyb3dzIHdoaWNoIHJvd3MgYXJlIGNvdW50ZWQsIHRoaXMgY2hhbmdlcyBob3dcbi8vIHRoZSBzdXJ2aXZpbmcgcm93cyBhcmUgYnVja2V0ZWQuIEl0IHNoYXJlcyB0aGUgcmVwb3J0J3MgZmlsdGVyIGJhciBiZWNhdXNlXG4vLyB0aGF0IGlzIHRoZSBvbmUgcm93IG9mIGNvbnRyb2xzIGEgdmlld2VyIHJlYWRzIGEgcmVwb3J0IHRocm91Z2gg4oCUIHRoZVxuLy8gc2VwYXJhdGlvbiB0aGF0IG1hdHRlcnMgaXMgaW4gdGhlIG1vZGVsLCBub3QgaW4gd2hlcmUgdGhlIGNvbnRyb2wgaXMgcGFpbnRlZC5cbi8vXG4vLyBBbHdheXMgYXJyaXZlcyBSRVNPTFZFRCAodGhlIGJhY2tlbmQgZmlsbHMgYW4gYWJzZW50IG9yIHBhcnRpYWwgc3RvcmVkIGJsb2NrXG4vLyBpbiBmcm9tIGl0cyBvd24gZGVmYXVsdHMpLCBzbyB0aGVyZSBpcyBub3RoaW5nIHRvIGRlZmF1bHQgaGVyZSDigJQgcmVuZGVyIHdoYXRcbi8vIHlvdSBhcmUgZ2l2ZW4uXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEdyb3VwQnkge1xuICBlbmFibGVkOiBib29sZWFuO1xuICBsYWJlbDogc3RyaW5nO1xuICBncmFudWxhcml0aWVzOiBDaGFydEdyYW51bGFyaXR5W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0U3R5bGVzIHtcbiAgaGVhZGluZz86IHsgc2l6ZT86IG51bWJlciB9O1xufVxuXG4vLyBDb250ZW50IHBhZGRpbmcgYXJvdW5kIGEgY29tcG9uZW50J3MgYm9keSwgaW4gSU5DSEVTICh0aGUgZ2VvbWV0cnkgdW5pdCkuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudFBhZGRpbmcge1xuICB0b3A/OiBudW1iZXI7XG4gIHJpZ2h0PzogbnVtYmVyO1xuICBib3R0b20/OiBudW1iZXI7XG4gIGxlZnQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0UGFnZSB7XG4gIGlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZyB8IG51bGw7XG4gIG9yZGVyOiBudW1iZXI7XG4gIC8vIFRoZSBwYWdlIG9wdHMgb3V0IG9mIHRoZSByZXBvcnQncyBoZWFkZXIgYW5kIGZvb3RlciAoYSB0aXRsZSBwYWdlKS5cbiAgbWFzdGVySGlkZGVuOiBib29sZWFuO1xuICBjb21wb25lbnRzOiBSZXBvcnRDb21wb25lbnRbXTtcbn1cblxuLy8gJ3RleHQnIGlzIGF1dGhvcmVkIHJpY2ggdGV4dCB3aXRoIG5vIHF1ZXJ5IGJlaGluZCBpdCDigJQgaXQgbmV2ZXIgZmV0Y2hlcyBkYXRhLlxuZXhwb3J0IHR5cGUgUmVwb3J0Q29tcG9uZW50VHlwZSA9ICdjaGFydCcgfCAnbGlzdCcgfCAna3BpJyB8ICd0ZXh0JztcblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRDb21wb25lbnQge1xuICBpZDogbnVtYmVyO1xuICB0eXBlOiBSZXBvcnRDb21wb25lbnRUeXBlO1xuICB0aXRsZTogc3RyaW5nIHwgbnVsbDtcbiAgLy8gR2VvbWV0cnkgaW4gSU5DSEVTOiBhYnNvbHV0ZSBwb3NpdGlvbiBvbiB0aGUgcGFnZSBjYW52YXMuXG4gIHg6IG51bWJlcjtcbiAgeTogbnVtYmVyO1xuICB3OiBudW1iZXI7XG4gIGg6IG51bWJlcjtcbiAgLy8gSGVpZ2h0IG1vZGUsIERFUklWRUQgZnJvbSB0eXBlIHNlcnZlci1zaWRlIChub3Qgc3RvcmVkLCByZWFkLW9ubHkpOiBsaXN0c1xuICAvLyBhbmQgS1BJIHRpbGVzIGFyZSBhdXRvICh0aGUgYm94IHNpemVzIHRvIGl0cyBjb250ZW50LCBgaGAgaWdub3JlZCk7IGNoYXJ0c1xuICAvLyBhcmUgYWx3YXlzIGZpeGVkICh1c2UgYGhgKSBzbyB0aGV5IGZpdCB0aGUgYm94IGFuZCBuZXZlciBvdmVyZmxvdy5cbiAgYXV0b0hlaWdodDogYm9vbGVhbjtcbiAgLy8gVGhlIHN0b3JlZCBTUUwgb2YgYSBsZWdhY3kgc3FsLW1vZGUgY29tcG9uZW50LiBOVUxMIGZvciBhIGRlcml2ZWQgb25lLFxuICAvLyB3aG9zZSBzdGF0ZW1lbnQgZG9lcyBub3QgZXhpc3QgdW50aWwgaXRzIGRvY3VtZW50IGlzIGNvbXBpbGVkIOKAlCB0aGUgU1FMIHRhYlxuICAvLyBmZXRjaGVzIHRoYXQgc2VwYXJhdGVseSAoc2VlIFJlcG9ydENvbXBvbmVudFNxbCkuXG4gIHNxbDogc3RyaW5nIHwgbnVsbDtcbiAgY29uZmlnOiBDaGFydENvbmZpZyAmIExpc3RDb25maWcgJiBLcGlDb25maWcgJiBUZXh0Q29uZmlnICYgQ29tcG9uZW50TGF5b3V0Q29uZmlnICYgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGZpbHRlcnM6IFJlcG9ydEZpbHRlcltdO1xufVxuXG4vLyBXaGF0IHRoZSBTUUwgdGFiIGZldGNoZXM6IHRoZSBzdGF0ZW1lbnQgYSBjb21wb25lbnQgcnVucy5cbi8vXG4vLyBGb3IgYSBkZXJpdmVkIGNvbXBvbmVudCBgYmFzZWxpbmVgIGlzIHRydWUgYW5kIGBzcWxgIGlzIHdoYXQgaXRzIGRvY3VtZW50XG4vLyBjb21waWxlcyB0byB3aXRoIE5PIHZpZXdlciBzdGF0ZSDigJQgbm8gZmlsdGVycywgdGhlIGF1dGhvcmVkIGdyYWluLiBUaGVcbi8vIG51bWJlcnMgb24gc2NyZWVuIGNvbWUgZnJvbSB0aGF0IHN0YXRlbWVudCBwbHVzIHdoYXRldmVyIHRoZSB2aWV3ZXIgcGlja2VkLFxuLy8gc28gdGhlIHR3byBjYW4gbGVnaXRpbWF0ZWx5IGRpZmZlciBhbmQgdGhlIHRhYiBzYXlzIHNvIHJhdGhlciB0aGFuIGltcGx5aW5nXG4vLyB0aGV5IG1hdGNoLlxuLy9cbi8vIGB0aW1lem9uZWAgaXMgdGhlIElBTkEgem9uZSB0aGUgc3RhdGVtZW50IHdhcyBjb21waWxlZCBpbjogdGhlIHJlcG9ydCdzXG4vLyBlZmZlY3RpdmUgem9uZS4gT3B0aW9uYWwgYmVjYXVzZSBvbGRlciBzZXJ2ZXJzIG9taXQgaXQ7IHRoZXkgY29tcGlsZWQgaW4gVVRDLlxuLy9cbi8vIGBlcnJvcmAgaXMgbm90IGEgZmFpbHVyZSBvZiB0aGUgcmVxdWVzdDogYSBkb2N1bWVudCB0aGF0IG5vIGxvbmdlciBjb21waWxlc1xuLy8gaXMgcHJlY2lzZWx5IHdoYXQgc29tZW9uZSBvcGVucyB0aGlzIHRhYiB0byBkaXNjb3Zlciwgc28gaXQgYXJyaXZlcyBhcyBhXG4vLyBtZXNzYWdlIHRvIHJlbmRlciB3aXRoIGBlcnJvclR5cGVgIG5hbWluZyB3aGljaCBraW5kICgnc3RhbGUtcXVlcnknIG9yXG4vLyAnc2Vuc2l0aXZlLWNvbHVtbicpLCBhbmQgYHNxbGAgbnVsbC5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Q29tcG9uZW50U3FsIHtcbiAgc3FsOiBzdHJpbmcgfCBudWxsO1xuICBvcmlnaW46ICdzcWwnIHwgJ2RicScgfCAnZGVyaXZlZCc7XG4gIGJhc2VsaW5lOiBib29sZWFuO1xuICB0aW1lem9uZT86IHN0cmluZztcbiAgZXJyb3I6IHN0cmluZyB8IG51bGw7XG4gIGVycm9yVHlwZTogc3RyaW5nIHwgbnVsbDtcbn1cblxuLy8gQSB0ZXh0IGJsb2NrJ3MgY29udGVudDogYW4gaHRtbCBmcmFnbWVudCB0aGUgc2VydmVyIGhhcyBhbHJlYWR5IHJlYnVpbHQgZnJvbVxuLy8gYW4gYWxsb3dsaXN0LCB3aGljaCBtYXkgY2Fycnkge3twYWdlLm51bWJlcn19LCB7e3BhZ2UubmFtZX19IGFuZFxuLy8ge3tyZXBvcnQubmFtZX19IHRva2VucyAoc2VlIHRleHQudHMpLlxuZXhwb3J0IGludGVyZmFjZSBUZXh0Q29uZmlnIHtcbiAgaHRtbD86IHN0cmluZztcbn1cblxuLy8gQ3Jvc3MtdHlwZSBsYXlvdXQvc3R5bGUga2V5cyBjYXJyaWVkIGluIGEgY29tcG9uZW50J3MgY29uZmlnIChhbG9uZ3NpZGUgdGhlXG4vLyB0eXBlLXNwZWNpZmljIGNoYXJ0L2xpc3Qva3BpIGtleXMpLlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRMYXlvdXRDb25maWcge1xuICBwYWRkaW5nPzogQ29tcG9uZW50UGFkZGluZztcbn1cblxuLy8gVGhlIHByZXNlbnRhdGlvbiBzZXR0aW5ncyBhIGNvbXBvbmVudCdzIHNldHRpbmdzIGRpYWxvZyBlZGl0cy4gVGl0bGUgYW5kXG4vLyBwYWRkaW5nIGFyZSBub3QgcGFydCBvZiB3aGF0IHRoZSBjb21wb25lbnQgcXVlcmllcywgc28gYSBjaGFuZ2UgdG8gdGhlbVxuLy8gcmVwYWludHMgd2l0aG91dCByZS1ydW5uaW5nIGFueXRoaW5nLiBBIGRlcml2ZWQgS1BJJ3MgY2FyZCBrZXlzIGFyZSBzZW50XG4vLyB0b286IHRoZSBzZXJ2ZXIgY29tcHV0ZXMgdGhlIHRhcmdldCdzIHByb2dyZXNzIGFuZCB0aGUgc3BhcmtsaW5lJ3MgcG9pbnRzXG4vLyB3aXRoIHRoZSBkYXRhLCBzbyBhIGNoYW5nZSB0byB0aGVtIHJlbG9hZHMgaXQuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudFNldHRpbmdzIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgcGFkZGluZzogQ29tcG9uZW50UGFkZGluZztcbiAga3BpPzogS3BpQ2FyZFNldHRpbmdzO1xufVxuXG4vLyBBIEtQSSdzIGNhcmQga2V5cy4gVGhlIGRpYWxvZyBzZW5kcyB0aGVtIChudWxsIHJlbW92ZXMgYSBrZXksIGluY3JlYXNlSXNcbi8vIG51bGwgcmVhZHMgZ29vZCksIGFuZCBDb21wb25lbnRTZXR0aW5ncy5rcGkgY2FycmllcyB0aGVtIGFzIHRoZSBzZXJ2ZXJcbi8vIHNhdmVkIHRoZW0sIHJlYWQgYmFjayBmcm9tIHRoZSBjb25maWcgaXQgcmV0dXJucy5cbmV4cG9ydCBpbnRlcmZhY2UgS3BpQ2FyZFNldHRpbmdzIHtcbiAgaW5jcmVhc2VJczogUmVwb3J0Q2hhbmdlUG9sYXJpdHkgfCBudWxsO1xuICB0YXJnZXQ6IEtwaVRhcmdldENvbmZpZyB8IG51bGw7XG4gIHNwYXJrbGluZTogS3BpU3BhcmtsaW5lQ29uZmlnIHwgbnVsbDtcbn1cblxuLy8gV2hlcmUgYSBjaGFydCdzIGxlZ2VuZCBzaXRzIHJlbGF0aXZlIHRvIHRoZSBwbG90LCBvciAnaGlkZGVuJyB0byBkcm9wIGl0LlxuZXhwb3J0IHR5cGUgTGVnZW5kUG9zaXRpb24gPSAndG9wJyB8ICdib3R0b20nIHwgJ2xlZnQnIHwgJ3JpZ2h0JyB8ICdoaWRkZW4nO1xuXG5leHBvcnQgdHlwZSBDaGFydEdyYW51bGFyaXR5ID0gJ2RheScgfCAnd2VlaycgfCAnbW9udGgnIHwgJ3F1YXJ0ZXInIHwgJ3llYXInO1xuXG4vLyBIb3cgZWFjaCBncmFudWxhcml0eSByZWFkcyBpbiB0aGUgZ3JvdXAtYnkgY29udHJvbCBhbmQgb24gYW4gZXhwb3J0IGNvdmVyXG4vLyBzaGVldC4gV0hJQ0ggb2YgdGhlbSBhIGdpdmVuIHJlcG9ydCBvZmZlcnMgY29tZXMgZnJvbSBpdHMgUmVwb3J0R3JvdXBCeTtcbi8vIHRoaXMgaXMgb25seSB0aGUgbmFtaW5nLiAneWVhcicgcmVhZHMgYXMgXCJBbm51YWxseVwiLlxuZXhwb3J0IGNvbnN0IEdSQU5VTEFSSVRZX09QVElPTlM6IHsgdmFsdWU6IENoYXJ0R3JhbnVsYXJpdHk7IG5hbWU6IHN0cmluZyB9W10gPSBbXG4gIHsgdmFsdWU6ICdkYXknLCBuYW1lOiAnRGF5JyB9LFxuICB7IHZhbHVlOiAnd2VlaycsIG5hbWU6ICdXZWVrJyB9LFxuICB7IHZhbHVlOiAnbW9udGgnLCBuYW1lOiAnTW9udGgnIH0sXG4gIHsgdmFsdWU6ICdxdWFydGVyJywgbmFtZTogJ1F1YXJ0ZXInIH0sXG4gIHsgdmFsdWU6ICd5ZWFyJywgbmFtZTogJ0FubnVhbGx5JyB9LFxuXTtcblxuLy8gVGhlIGNoYXJ0IHR5cGVzIHRoYXQgcGxvdCBzZXJpZXMgYWdhaW5zdCBhIGNhdGVnb3J5IGFuZCBhIHZhbHVlIGF4aXMsIGFuZCBzb1xuLy8gdGhlIHR5cGVzIGEgbWVhc3VyZSdzIG93biBzZXJpZXMgY2FuIGJlIGRyYXduIGFzLiBBIHdhdGVyZmFsbCBoYXMgdGhlIHNhbWVcbi8vIGF4ZXMgYnV0IGlzIG5vdCBvbmUgb2YgdGhlbTogaXQgZHJhd3MgaXRzIG9uZSBtZWFzdXJlIGFzIGZsb2F0aW5nIHN0ZXBzLlxuZXhwb3J0IHR5cGUgQXhpc0NoYXJ0VHlwZSA9ICdiYXInIHwgJ2xpbmUnIHwgJ2FyZWEnO1xuXG4vLyBXaGF0IG9uZSBiYXIgb2YgYSB3YXRlcmZhbGwgZG9lcyB0byB0aGUgcnVubmluZyB0b3RhbCDigJQgZWFjaCBpcyBkcmF3biBpbiBpdHNcbi8vIG93biBjb2xvci4gVGhlIGNsb3NpbmcgdG90YWwgaXMgdGhlIGxhc3QgYmFyLCBzdGFuZGluZyBvbiB6ZXJvLlxuZXhwb3J0IHR5cGUgV2F0ZXJmYWxsU3RlcEtpbmQgPSAncmlzZScgfCAnZmFsbCcgfCAndG90YWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENoYXJ0Q29uZmlnIHtcbiAgLy8gQSB3YXRlcmZhbGwgdGFrZXMgT05FIG1lYXN1cmUgd2hvc2UgdmFsdWUgcGVyIGNhdGVnb3J5IGlzIGhvdyBmYXIgdGhlXG4gIC8vIHJ1bm5pbmcgdG90YWwgbW92ZXMgdGhlcmU6IGVhY2ggYmFyIHN0YXJ0cyB3aGVyZSB0aGUgb25lIGJlZm9yZSBpdCBlbmRlZCxcbiAgLy8gYW5kIGEgY2xvc2luZyBUb3RhbCBiYXIgc2hvd3MgdGhlIHN1bS5cbiAgY2hhcnRUeXBlPzogQXhpc0NoYXJ0VHlwZSB8ICd3YXRlcmZhbGwnIHwgJ3BpZScgfCAnZG9udXQnO1xuICAvLyBGb3Iga2luZCAndGltZScsIHRoZSBzZXJ2ZXIgYnVja2V0cyB0aGUgcmF3IGRhdGV0aW1lIGNvbHVtbiB0byBgZ3JhbnVsYXJpdHlgXG4gIC8vIGluIHRoZSByZXBvcnQncyB0aW1lem9uZSAodGhlIFNRTCBleHBvc2VzIHRoZSByYXcgY29sdW1uLCB1bmJ1Y2tldGVkKS5cbiAgLy8gZGF0ZUxhYmVsIHdyaXRlcyBhIHRpbWUgYXhpcydzIHBlcmlvZCBsYWJlbHMgc2hvcnQgKCdNYXknLCB0aGUgZGVmYXVsdCksXG4gIC8vIGxvbmcgKCdNYXkgMjAyNicpIG9yIG51bWVyaWMgKCcyMDI2LTA1Jyk7IGEgY2F0ZWdvcnkgYXhpcyBpZ25vcmVzIGl0LlxuICB4QXhpcz86IHtcbiAgICBjb2x1bW46IHN0cmluZztcbiAgICBraW5kPzogJ2NhdGVnb3J5JyB8ICd0aW1lJztcbiAgICBncmFudWxhcml0eT86IENoYXJ0R3JhbnVsYXJpdHk7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgZGF0ZUxhYmVsPzogUmVwb3J0Q2hhcnREYXRlTGFiZWw7XG4gIH07XG4gIG1lYXN1cmVzPzogQ2hhcnRNZWFzdXJlW107XG4gIC8vIEVhY2ggdmFsdWUgb2YgdGhpcyBjb2x1bW4gYmVjb21lcyBpdHMgb3duIHNlcmllcy4gSXQgY2FycmllcyBubyBsYWJlbDogdGhlXG4gIC8vIGxlZ2VuZCBuYW1lcyB0aGUgdmFsdWVzIHRoZW1zZWx2ZXMuXG4gIHNwbGl0Qnk/OiB7IGNvbHVtbjogc3RyaW5nIH07XG4gIC8vIFNpbmdsZS1kaW1lbnNpb24gYmFyIGNoYXJ0cyBvbmx5OiBjb2xvciBlYWNoIGJhciBieSBpdHMgb3duIGNhdGVnb3J5IGFuZFxuICAvLyBzaG93IGEgbGVnZW5kLCBXSVRIT1VUIHNwbGl0dGluZyBpbnRvIG11bHRpcGxlIHNlcmllcyAod2hpY2ggc2xpdmVycyB0aGVcbiAgLy8gYmFycykuIHYxIGV4cGVjdHMgY29sb3JCeS5jb2x1bW4gPT09IHhBeGlzLmNvbHVtbi4gSWdub3JlZCB3aGVuIHNwbGl0QnkgaXNcbiAgLy8gc2V0IG9yIHRoZSBjaGFydCBpc24ndCBhIGJhciBjaGFydC5cbiAgY29sb3JCeT86IHsgY29sdW1uOiBzdHJpbmc7IGxhYmVsPzogc3RyaW5nIH07XG4gIG9yaWVudGF0aW9uPzogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJztcbiAgc3RhY2tlZD86IGJvb2xlYW47XG4gIC8vIFN0YWNrcyB0aGUgcHJpbWFyeSBheGlzJ3MgYmFyIGFuZCBhcmVhIHNlcmllcyBhcyBzaGFyZXMgb2YgZWFjaFxuICAvLyBjYXRlZ29yeSdzIHRvdGFsLCBzbyBldmVyeSBzdGFjayByZWFjaGVzIDEwMCUuIFRoZSB2aWV3ZXIgY29tcHV0ZXMgdGhlXG4gIC8vIHNoYXJlcyBmcm9tIHRoZSByb3dzIGl0IHJlY2VpdmVzLCBhZnRlciB0aGUgZmlsdGVycyByYW47IHRoZSByb3dzIGFuZCB0aGVcbiAgLy8gQ1NWIGtlZXAgdGhlIHJhdyB2YWx1ZXMuIFRoZSB2YWx1ZSBheGlzIHRoZW4gYWx3YXlzIHJ1bnMgMCB0byAxMDAlIChmcm9tXG4gIC8vIC0xMDAlIHdoZW4gYSBzaGFyZSBpcyBuZWdhdGl2ZSkuXG4gIHBlcmNlbnRTdGFja2VkPzogYm9vbGVhbjtcbiAgLy8gVmFsdWVzIHByaW50ZWQgYmVzaWRlIHRoZSBwb2ludHMgb2YgYSBiYXIsIGxpbmUgb3IgYXJlYSBzZXJpZXM6IGV2ZXJ5XG4gIC8vIHBvaW50IChhbGwpLCBlYWNoIHNlcmllcycgbGF0ZXN0IHBvaW50IChsYXN0KSwgb3IgZXZlcnkgcG9pbnQgd2hvc2UgbGFiZWxcbiAgLy8gZml0cyB3aXRob3V0IG92ZXJsYXBwaW5nIGFub3RoZXIgKGF1dG8pLiBPbWl0dGVkIG9yIG5vbmUsIG5vIGxhYmVscy4gQVxuICAvLyBwaWUsIGEgZG9udXQgYW5kIGEgd2F0ZXJmYWxsIG5ldmVyIHByaW50IHRoZW0uXG4gIGRhdGFMYWJlbHM/OiBSZXBvcnRDaGFydERhdGFMYWJlbHM7XG4gIC8vIFRoZSBwcmltYXJ5IHZhbHVlIGF4aXMncyB0aXRsZSBhbmQgcmFuZ2UuIEV2ZXJ5IHNlcmllcyBpcyBwbG90dGVkIGFnYWluc3RcbiAgLy8gaXQgdW5sZXNzIGl0cyBtZWFzdXJlIGlzIHNlY29uZGFyeS5cbiAgdmFsdWVBeGlzPzogQ2hhcnRWYWx1ZUF4aXM7XG4gIC8vIFRoZSBzZWNvbmQgdmFsdWUgYXhpcywgb24gdGhlIHJpZ2h0LCB0aGF0IHNlY29uZGFyeSBtZWFzdXJlcyBwbG90IGFnYWluc3QuXG4gIHNlY29uZGFyeUF4aXM/OiBDaGFydFZhbHVlQXhpcztcbiAgLy8gTGFiZWxlZCBsaW5lcyBhY3Jvc3MgdGhlIHBsb3QgYXQgYSBjb25zdGFudCB2YWx1ZSwgb3IgYmFuZHMgYmV0d2VlbiB0d29cbiAgLy8gdmFsdWVzLCBhdCBtb3N0IDUuIFZlcnRpY2FsIGF4aXMgY2hhcnRzIGFuZCB3YXRlcmZhbGxzIG9ubHkuXG4gIHJlZmVyZW5jZXM/OiBDaGFydFJlZmVyZW5jZVtdO1xuICBsZWdlbmQ/OiBMZWdlbmRQb3NpdGlvbjtcbiAgc29ydD86IFJlcG9ydFNvcnQ7XG4gIGxpbWl0PzogbnVtYmVyO1xufVxuXG4vLyBBIHZhbHVlIGF4aXMncyB0aXRsZSBhbmQgcmFuZ2UuIEVhY2ggYm91bmQgbGVmdCBvdXQgaXMgcGlja2VkIGZyb20gdGhlIGRhdGEsXG4vLyBhbmQgdGhlIHRpY2sgc3RlcCB3aXRob3V0IGFuIGludGVydmFsLiBJdHMgdGlja3MgdGFrZSB0aGUgbnVtYmVyIGZvcm1hdCBvZlxuLy8gdGhlIG1lYXN1cmVzIHBsb3R0ZWQgYWdhaW5zdCBpdC5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhcnRWYWx1ZUF4aXMge1xuICBsYWJlbD86IHN0cmluZztcbiAgbWluPzogbnVtYmVyO1xuICBtYXg/OiBudW1iZXI7XG4gIGludGVydmFsPzogbnVtYmVyO1xufVxuXG4vLyBBIHJlZmVyZW5jZSBkcmF3biBhY3Jvc3MgYSBjaGFydCdzIHBsb3Q6IGEgbGluZSBhdCBgdmFsdWVgLCBvciB3aXRoIGB0b2AgYVxuLy8gYmFuZCBiZXR3ZWVuIHRoZSB0d28sIGxhYmVsZWQgd2l0aCBgbGFiZWxgLiBUaGUgdmFsdWUgaXMgb25lIHRoZSB1c2VyIG9yXG4vLyB0aGUgbW9kZWwgc3RhdGVzLCBuZXZlciBvbmUgcmVhZCBvZmYgdGhlIGRhdGEuIHNlY29uZGFyeSBwbG90cyBpdCBhZ2FpbnN0XG4vLyB0aGUgc2Vjb25kIHZhbHVlIGF4aXMsIHdoZW4gdGhlIGNoYXJ0IGhhcyBvbmUuXG5leHBvcnQgaW50ZXJmYWNlIENoYXJ0UmVmZXJlbmNlIHtcbiAgdmFsdWU6IG51bWJlcjtcbiAgbGFiZWw6IHN0cmluZztcbiAgdG8/OiBudW1iZXI7XG4gIHNlY29uZGFyeT86IGJvb2xlYW47XG59XG5cbi8vIEhvdyBvbmUgbnVtZXJpYyBzbG90IGlzIHNob3duOiBhIGNoYXJ0IG1lYXN1cmUsIGEgS1BJIG1lYXN1cmUsIGEgbGlzdCBjb2x1bW5cbi8vIG9yIGEgY3Jvc3MtdGFiJ3MgY2VsbHMuIFRoZSBkYXRhIHN0YXlzIHJhdyAoaXQgc29ydHMgYW5kIGV4cG9ydHMgYXMgYVxuLy8gbnVtYmVyKTsgb25seSB0aGUgcmVuZGVyZXJzIGZvcm1hdCBpdCwgdGhlIHNhbWUgd2F5IG9uIHNjcmVlbiwgaW4gdGhlIFBERlxuLy8gYW5kIGluIFBvd2VyUG9pbnQgKGZvcm1hdC50cykuIEFsbCB0aHJlZSBrZXlzIGFyZSBvcHRpb25hbCwgYW5kIHByZWNpc2lvbiBvclxuLy8gdW5pdHMgd2l0aG91dCBhIGZvcm1hdCBtZWFuIG51bWJlci5cbi8vXG4vLyBGb3JtYXR0aW5nIGlzIG9wdC1pbjogYSBsaXN0IGNvbHVtbiBvciBjcm9zcy10YWIgY2VsbCB3aXRob3V0IHRoZXNlIGtleXNcbi8vIHByaW50cyBpdHMgdmFsdWUgYXMgaXQgY2FtZSwgYW5kIGEgY2hhcnQgd2l0aG91dCB0aGVtIGtlZXBzIGl0cyBwbGFpblxuLy8gbG9jYWxlLWdyb3VwZWQgYXhpcyBhbmQgdG9vbHRpcHMuIEEgS1BJIHdpdGhvdXQgdGhlbSBwcmludHMgYSBwbGFpbiBudW1iZXIuXG5leHBvcnQgaW50ZXJmYWNlIE51bWJlckZvcm1hdFNwZWMge1xuICAvLyBwZXJjZW50IHRha2VzIGEgMC0xIHJhdGlvICgwLjMgcmVhZHMgMzAlKSB3aGVuIHRoZSByZXBvcnQncyBwZXJjZW50Rm9ybWF0XG4gIC8vIGlzICdyYXRpbyc7IGFuIG9sZGVyIHNlcnZlciBsZWF2ZXMgaXQgb3V0IGFuZCBzZW5kcyB4MTAwLiBjdXJyZW5jeSBsYWJlbHNcbiAgLy8gdGhlIGFtb3VudCBpbiB0aGUgcmVwb3J0J3MgY3VycmVuY3ksIHdyaXR0ZW4gaW4gaXRzIGxvY2FsZS5cbiAgZm9ybWF0PzogUmVwb3J0VmFsdWVGb3JtYXQgfCBSZXBvcnRMaXN0Q29sdW1uRm9ybWF0O1xuICAvLyBIb3cgbWFueSBkZWNpbWFsIHBsYWNlcyB0aGUgdmFsdWUgaXMgc2hvd24gdG8gKDAtNikuIEZpeGVkIHJhdGhlciB0aGFuXG4gIC8vIG1heGltdW06IGEgY29sdW1uIG9mIHJhdGVzIGlzIHVucmVhZGFibGUgd2hlbiBlYWNoIG9uZSBzaG93cyBhIGRpZmZlcmVudFxuICAvLyBudW1iZXIgb2YgZGVjaW1hbHMuIEZvciBwZXJjZW50IGl0IGNvdW50cyB0aGUgZGVjaW1hbHMgb2YgdGhlIHBlcmNlbnRhZ2VcbiAgLy8gKHByZWNpc2lvbiAxIHNob3dzIDAuMyBhcyAzMC4wJSkuIE9taXR0ZWQgbGVhdmVzIHRoZSBmb3JtYXQncyBvd24gZGVmYXVsdDpcbiAgLy8gYXQgbW9zdCBvbmUgZGVjaW1hbCBmb3IgcGVyY2VudCAoYW5kIGZvciBhbiBhYmJyZXZpYXRlZCAxLjJLKSwgd2hvbGUgdW5pdHNcbiAgLy8gZm9yIGN1cnJlbmN5LCB0aGUgbG9jYWxlJ3MgZGVmYXVsdCBmb3IgYSBudW1iZXIuXG4gIC8vXG4gIC8vIEl0IGNhbm5vdCBiZSBhcHBsaWVkIGluIHRoZSBTUUw6IHRoZSB2YWx1ZSBpcyBhZ2dyZWdhdGVkIGFmdGVyIHRoZSByZXBvcnQnc1xuICAvLyBmaWx0ZXJzIHJ1biwgc28gcHJlLXJvdW5kaW5nIHdvdWxkIGJyZWFrIGxpdmUgcmUtZmlsdGVyaW5nLlxuICBwcmVjaXNpb24/OiBudW1iZXI7XG4gIC8vIEFiYnJldmlhdGVzIHRvIHRob3VzYW5kcyAoMS4ySykgb3IgbWlsbGlvbnMgKDMuNE0pLCBvciBwaWNrcyBieSBzaXplLlxuICB1bml0cz86IFJlcG9ydE51bWJlclVuaXRzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYXJ0TWVhc3VyZSBleHRlbmRzIE51bWJlckZvcm1hdFNwZWMge1xuICBjb2x1bW46IHN0cmluZztcbiAgYWdncmVnYXRpb24/OiAnc3VtJyB8ICdjb3VudCcgfCAnYXZnJyB8ICdtaW4nIHwgJ21heCc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICAvLyBEcmF3cyB0aGlzIG1lYXN1cmUncyBzZXJpZXMgYXMgYSBkaWZmZXJlbnQgdHlwZSBmcm9tIHRoZSBjaGFydCdzIG93blxuICAvLyBjaGFydFR5cGUg4oCUIGNvdW50cyBhcyBiYXJzIHdpdGggYSByYXRlIGFzIGEgbGluZSBvdmVyIHRoZW0gaXMgYSBjb21ib1xuICAvLyBjaGFydC4gT21pdHRlZCwgdGhlIHNlcmllcyB0YWtlcyB0aGUgY2hhcnQncyB0eXBlLiBBeGlzIGNoYXJ0cyBvbmx5IChhIHBpZVxuICAvLyBpZ25vcmVzIGl0KS5cbiAgdHlwZT86IEF4aXNDaGFydFR5cGU7XG4gIC8vIEEgY2hhcnQgbWVhc3VyZSdzIGZvcm1hdCBzaG93cyBvbiBpdHMgdG9vbHRpcHMsIGFuZCBvbiB0aGUgdmFsdWUgYXhpc1xuICAvLyB3aGVuIGV2ZXJ5IG1lYXN1cmUgc2hhcmluZyB0aGUgYXhpcyBhZ3JlZXMgb24gaXQuIEEgS1BJJ3MgbWVhc3VyZSBmb3JtYXRzXG4gIC8vIGl0cyBvbmUgdmFsdWUuXG4gIGZvcm1hdD86IFJlcG9ydFZhbHVlRm9ybWF0O1xuICAvLyBQbG90cyB0aGlzIG1lYXN1cmUgYWdhaW5zdCB0aGUgc2Vjb25kIHZhbHVlIGF4aXMsIG9uIHRoZSByaWdodCwgZm9yIGFcbiAgLy8gcXVhbnRpdHkgb24gYW5vdGhlciBzY2FsZS4gT21pdHRlZCBvciBmYWxzZSwgaXQgc2hhcmVzIHRoZSBwcmltYXJ5IGF4aXMuXG4gIC8vIEEgdmVydGljYWwgYXhpcyBjaGFydCBvbmx5LCB3aXRoIGF0IGxlYXN0IG9uZSBtZWFzdXJlIGxlZnQgb24gdGhlIHByaW1hcnlcbiAgLy8gYXhpcy5cbiAgc2Vjb25kYXJ5PzogYm9vbGVhbjtcbiAgLy8gVGhlIHBhbGV0dGUgY29sb3IgdGhpcyBtZWFzdXJlJ3Mgc2VyaWVzIGlzIGRyYXduIGluLiBPbWl0dGVkLCB0aGUgc2VyaWVzXG4gIC8vIHRha2VzIHRoZSBwYWxldHRlIGNvbG9yIG9mIGl0cyBwb3NpdGlvbi4gQSBjb2xvciBvbiB0aGUgZmlyc3QgbWVhc3VyZVxuICAvLyB0dXJucyBvZmYgYSBjYXRlZ29yeSBiYXIgY2hhcnQncyBkZWZhdWx0IGNvbG9yIHBlciBiYXIgKGlzQ29sb3JCeSkuXG4gIGNvbG9yPzogUmVwb3J0Q2hhcnRDb2xvcjtcbiAgLy8gSG93IGEgbGluZSBzZXJpZXMnIGxpbmUgaXMgZHJhd24uIE9taXR0ZWQsIHNvbGlkLlxuICBsaW5lPzogUmVwb3J0Q2hhcnRMaW5lU3R5bGU7XG4gIC8vIFdoZXRoZXIgYSBsaW5lIG9yIGFyZWEgc2VyaWVzIGRyYXdzIGEgZG90IG9uIGVhY2ggcG9pbnQuIE9taXR0ZWQsIHRydWUuXG4gIG1hcmtlcnM/OiBib29sZWFuO1xuICAvLyBBIGxpbmUgYWNyb3NzIHRoZSBwbG90IGF0IHRoaXMgc2VyaWVzJyBhdmVyYWdlLCBtZWRpYW4sIGxvd2VzdCBvciBoaWdoZXN0XG4gIC8vIHZhbHVlIG92ZXIgdGhlIHBvaW50cyBvbiBzY3JlZW4uIFZlcnRpY2FsIGF4aXMgY2hhcnRzIG9ubHkuXG4gIG1hcmtMaW5lPzogUmVwb3J0Q2hhcnRNYXJrU3RhdDtcbn1cblxuLy8gT25lIGF1dGhvcmVkIGNvbHVtbiBvZiBhIHBsYWluIGxpc3QuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RDb2x1bW4gZXh0ZW5kcyBOdW1iZXJGb3JtYXRTcGVjIHtcbiAgY29sdW1uOiBzdHJpbmc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICAvLyBkYXRlIGtlZXBzIHRoZSBjb2x1bW4gYSBSQVcgdGltZXN0YW1wLCBzbyB0aGUgcmVwb3J0IHRpbWV6b25lIGFuZCBpdHNcbiAgLy8gZGF0ZVJhbmdlIGZpbHRlcnMga2VlcCB3b3JraW5nLCBhbmQgdGhlIHZpZXdlciByZW5kZXJzIGl0IGFzIGEgZGF5IGluIHRoZVxuICAvLyByZXBvcnQncyB6b25lIGFuZCBsb2NhbGUuIG51bWJlciwgcGVyY2VudCBhbmQgY3VycmVuY3kgZm9ybWF0IHRoZSB2YWx1ZSBhc1xuICAvLyBhIEtQSSBtZWFzdXJlIGRvZXMuIFdpdGhvdXQgYSBmb3JtYXQgdGhlIHZhbHVlIHByaW50cyBhcyBpdCBjYW1lLlxuICBmb3JtYXQ/OiBSZXBvcnRMaXN0Q29sdW1uRm9ybWF0O1xuICAvLyBBIGNvbHVtbiB0aGUgU1FMIGFscmVhZHkgZm9ybWF0dGVkIGlzIHRleHQsIHNvIGl0IG5hbWVzIGBzb3J0Q29sdW1uYDogdGhlXG4gIC8vIHJhdyBudW1lcmljIGFsaWFzIHRoZSBxdWVyeSBhbHNvIG91dHB1dHMsIHdoaWNoIHRoZSBzZXJ2ZXIgb3JkZXJzIGJ5XG4gIC8vIGluc3RlYWQuXG4gIHNvcnRDb2x1bW4/OiBzdHJpbmc7XG4gIC8vIGZhbHNlIGtlZXBzIHRoZSBjZWxsIG9uIG9uZSBsaW5lLiBPbWl0dGVkLCBhIGxvbmcgdmFsdWUgd3JhcHMuXG4gIHdyYXA/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RDb25maWcge1xuICBjb2x1bW5zPzogTGlzdENvbHVtbltdO1xuICAvLyBBIGNyb3NzLXRhYjogYHJvd0J5YCBzdGF5cyBkb3duIHRoZSBzaWRlIGFuZCBldmVyeSB2YWx1ZSBvZiBgcGl2b3RCeWBcbiAgLy8gYmVjb21lcyBhIGNvbHVtbi4gVGhlIHR3byBhcmUgc2V0IHRvZ2V0aGVyLCBgY29sdW1uc2AgaXMgb21pdHRlZCAodGhlXG4gIC8vIGJhY2tlbmQgcmVqZWN0cyBhdXRob3JpbmcgYm90aCksIGFuZCB0aGUgY29sdW1uIHNldCBhcnJpdmVzIHdpdGggdGhlIHJvd3NcbiAgLy8gaW4gQ29tcG9uZW50RGF0YS5jb2x1bW5zIGJlY2F1c2Ugb25seSB0aGUgcmVzdWx0IGtub3dzIHRoZSBwaXZvdCB2YWx1ZXMuXG4gIC8vIHJvd0J5LmxhYmVsIGhlYWRzIHRoZSBzaWRlIGNvbHVtbiBvbiBzY3JlZW4gYW5kIGluIGV2ZXJ5IGV4cG9ydCwgYW5kXG4gIC8vIGRlZmF1bHRzIHRvIHRoZSBjb2x1bW4gbmFtZS4gcGl2b3RCeSBjYXJyaWVzIG5vIGxhYmVsOiBpdHMgdmFsdWVzIGFyZSB0aGVcbiAgLy8gaGVhZGluZ3MuXG4gIHJvd0J5PzogeyBjb2x1bW46IHN0cmluZzsgbGFiZWw/OiBzdHJpbmcgfTtcbiAgcGl2b3RCeT86IHsgY29sdW1uOiBzdHJpbmcgfTtcbiAgLy8gVGhlIGF1dGhvcmVkIG9yZGVyLCBtb3N0IGltcG9ydGFudCBmaXJzdC4gQSBsaXN0IHNhdmVkIGJlZm9yZSBtdWx0aS1rZXlcbiAgLy8gc29ydGluZyBzdG9yZXMgb25lIG9iamVjdCwgc28gcmVhZCBpdCB0aHJvdWdoIGxpc3RTb3J0VGVybXMoKSBvbmx5LlxuICBzb3J0PzogUmVwb3J0U29ydCB8IFJlcG9ydFNvcnRbXTtcbiAgLy8gSG93IG1hbnkgbGVhZGluZyBjb2x1bW5zIHN0YXkgaW4gdmlldyB3aGlsZSB0aGUgbGlzdCBzY3JvbGxzIHNpZGV3YXlzXG4gIC8vICgwLTMpLiBVbnNldCwgYSBjcm9zcy10YWIgcGlucyBpdHMgcm93LWtleSBjb2x1bW4gYW5kIGEgcGxhaW4gbGlzdCBub25lLlxuICBwaW5uZWRDb2x1bW5zPzogbnVtYmVyIHwgbnVsbDtcbiAgcGFnZVNpemU/OiBudW1iZXI7XG4gIC8vIHRydWUgYWRkcyBhIHRvdGFscyByb3cgdW5kZXIgdGhlIGxpc3Q6IHRoZSBzZXJ2ZXIgcnVucyB0aGUgbWVhc3VyZXMgYWdhaW5cbiAgLy8gb3ZlciBldmVyeSByb3cgdGhlIGZpbHRlcnMga2VlcCwgd2l0aG91dCBncm91cGluZywgYW5kIGEgY3Jvc3MtdGFiIHRvdGFsc1xuICAvLyBlYWNoIGNvbHVtbi5cbiAgdG90YWxzPzogYm9vbGVhbjtcbiAgLy8gQSBjcm9zcy10YWIgb25seTogaG93IGV2ZXJ5IGNlbGwgb2YgdGhlIGdyaWQgaXMgZm9ybWF0dGVkLCB3aXRoIGEgS1BJXG4gIC8vIG1lYXN1cmUncyBrZXlzLiBUaGUgcm93IGtleSBjb2x1bW4gc3RheXMgYXMgaXQgY2FtZS5cbiAgY2VsbEZvcm1hdD86IE51bWJlckZvcm1hdFNwZWMgJiB7IGZvcm1hdD86IFJlcG9ydFZhbHVlRm9ybWF0IH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS3BpQ29uZmlnIHtcbiAgbWVhc3VyZT86IENoYXJ0TWVhc3VyZTtcbiAgLy8gV2hldGhlciBhIHJpc2UgaW4gdGhlIHZhbHVlIGlzIGdvb2QgbmV3cywgYmFkIG5ld3Mgb3IgbmVpdGhlcjogaXQgcGlja3NcbiAgLy8gdGhlIGRlbHRhJ3MgY29sb3IgYW5kIGRlY2lkZXMgd2hlbiBhIHRhcmdldCBpcyBtZXQgKGdvb2Q6IGF0IG9yIGFib3ZlIGl0O1xuICAvLyBiYWQ6IGF0IG9yIGJlbG93IGl0OyBuZXV0cmFsOiBuZXZlciBqdWRnZWQpLiBPbWl0dGVkIG9yIG51bGwgcmVhZHMgZ29vZC5cbiAgaW5jcmVhc2VJcz86IFJlcG9ydENoYW5nZVBvbGFyaXR5IHwgbnVsbDtcbiAgLy8gQSBudW1iZXIgdGhlIHVzZXIgZ2F2ZSBmb3IgdGhlIHZhbHVlIHRvIHJlYWNoLCBuZXZlciBvbmUgcmVhZCBvZmYgdGhlXG4gIC8vIGRhdGEuIFRoZSBzZXJ2ZXIgc2VuZHMgdGhlIHByb2dyZXNzIHRvd2FyZCBpdCB3aXRoIHRoZSBkYXRhLlxuICB0YXJnZXQ/OiBLcGlUYXJnZXRDb25maWcgfCBudWxsO1xuICAvLyBBIHNtYWxsIHRyZW5kIGxpbmUgb2YgdGhlIHZhbHVlIG92ZXIgaXRzIGxhc3QgcGVyaW9kcywgZHJhd24gdW5kZXIgaXQuXG4gIHNwYXJrbGluZT86IEtwaVNwYXJrbGluZUNvbmZpZyB8IG51bGw7XG59XG5cbi8vIEEgS1BJJ3MgdGFyZ2V0OiB0aGUgdmFsdWUsIGFuZCBhbiBvcHRpb25hbCBjYXB0aW9uIGZvciBpdCAoJ0dvYWwnKS5cbmV4cG9ydCBpbnRlcmZhY2UgS3BpVGFyZ2V0Q29uZmlnIHtcbiAgdmFsdWU6IG51bWJlcjtcbiAgbGFiZWw/OiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBBIEtQSSdzIHNwYXJrbGluZTogaG93IHdpZGUgZWFjaCBwb2ludCdzIHBlcmlvZCBpcyAobnVsbCByZWFkcyBtb250aCkgYW5kXG4vLyBob3cgbWFueSBwZXJpb2RzIGl0IGRyYXdzLCAyIHRvIDYwIChudWxsIHJlYWRzIDEyKS5cbmV4cG9ydCBpbnRlcmZhY2UgS3BpU3BhcmtsaW5lQ29uZmlnIHtcbiAgZ3JhbnVsYXJpdHk/OiBDaGFydEdyYW51bGFyaXR5IHwgbnVsbDtcbiAgcGVyaW9kcz86IG51bWJlciB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0U29ydCB7XG4gIGNvbHVtbjogc3RyaW5nO1xuICBkaXJlY3Rpb24/OiAnYXNjJyB8ICdkZXNjJztcbn1cblxuZXhwb3J0IHR5cGUgUmVwb3J0RmlsdGVyVHlwZSA9ICdkYXRlUmFuZ2UnIHwgJ3NlbGVjdCcgfCAna2V5d29yZCc7XG5cbi8vIFdoZXJlIGEgZmlsdGVyIGdyb3VwJ3MgY29udHJvbCBpcyBleHBvc2VkLiBBIGdyb3VwIGNhbiBiZSBzaG93biBvbiBpdHNcbi8vIGNvbXBvbmVudHMsIGluIHRoZSByZXBvcnQgYmFyLCBvciBCT1RIIGF0IG9uY2UgKHRoZSB0d28gYXJlIGluZGVwZW5kZW50XG4vLyB0b2dnbGVzIGluIHRoZSBVSSk7IGEgY29sdW1uIHdpdGggbmVpdGhlciBleHBvc2VkIHNpbXBseSBoYXMgbm8gZmlsdGVyLlxuZXhwb3J0IHR5cGUgUmVwb3J0RmlsdGVyTGV2ZWwgPSAnY29tcG9uZW50JyB8ICdyZXBvcnQnIHwgJ2JvdGgnO1xuXG4vLyBPbmUgZmlsdGVyYWJsZSBvdXRwdXQgY29sdW1uIG9mIGEgY29tcG9uZW50J3MgU1FMLCB3aXRoIHRoZSBmaWx0ZXIgaW50ZXJmYWNlXG4vLyBJTkZFUlJFRCBmcm9tIGl0cyBkYXRhICh0aGUgaHVtYW4gbmV2ZXIgcGlja3MgdGhlIGludGVyZmFjZSDigJQgaXQgZm9sbG93cyB0aGVcbi8vIGNvbHVtbidzIHR5cGUpLiBEcml2ZXMgdGhlIEZpbHRlcnMgdGFiIGxpc3RpbmcuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEZpbHRlcmFibGVDb2x1bW4ge1xuICBjb2x1bW46IHN0cmluZztcbiAgdHlwZTogUmVwb3J0RmlsdGVyVHlwZTtcbn1cblxuLy8gR3JvdW5kIHRydXRoOiBvbmUgZmlsdGVyYWJsZSBvdXRwdXQgY29sdW1uIE9OIG9uZSBjb21wb25lbnQncyBTUUwuIEFsd2F5cyBhXG4vLyBtZW1iZXIgb2YgYSBmaWx0ZXIgZ3JvdXAg4oCUIHRoZSB1bml0IHRoYXQgbGlua3MgZXF1aXZhbGVudCBmaWx0ZXJzIGFjcm9zc1xuLy8gY29tcG9uZW50cyBhbmQgZGVjaWRlcyB3aGVyZSB0aGUgY29udHJvbCByZW5kZXJzIChjb21wb25lbnQgdnMgcmVwb3J0IGJhcikuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEZpbHRlciB7XG4gIGlkOiBudW1iZXI7XG4gIGNvbXBvbmVudElkOiBudW1iZXI7XG4gIGZpbHRlckdyb3VwSWQ6IG51bWJlcjtcbiAgZmlsdGVyQ29sdW1uOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmcgfCBudWxsO1xuICBlbmFibGVkOiBib29sZWFuO1xuICBoYXNPcHRpb25zOiBib29sZWFuO1xuICBjb25maWc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vLyBPbmUgY2hvaWNlIGluIGEgc2VsZWN0IGZpbHRlcidzIG9wdGlvbiBsaXN0LiBUaGUgdmFsdWUgaXMgd2hhdCB0aGUgZmlsdGVyXG4vLyBtYXRjaGVzIG9uIGFuZCBnZXRzIHN0b3JlZCBpbiBhIHNhdmVkIGRlZmF1bHQg4oCUIGZvciBhbiBlbnRpdHkgdGhhdCBpcyBpdHNcbi8vIHN0YWJsZSBpZCwgbmV2ZXIgaXRzIG5hbWUsIHNvIHJlbmFtaW5nIHRoZSBlbnRpdHkgbW92ZXMgdGhlIGxhYmVsIHdpdGhvdXRcbi8vIGJyZWFraW5nIHRoZSBkZWZhdWx0LiBUaGUgbGFiZWwgaXMgb25seSBldmVyIHdoYXQgdGhlIHZpZXdlciByZWFkcy5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0RmlsdGVyT3B0aW9uIHtcbiAgdmFsdWU6IHVua25vd247XG4gIGxhYmVsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0RmlsdGVyR3JvdXAge1xuICBpZDogbnVtYmVyO1xuICBsYWJlbDogc3RyaW5nIHwgbnVsbDtcbiAgdHlwZTogUmVwb3J0RmlsdGVyVHlwZTtcbiAgbGV2ZWw6IFJlcG9ydEZpbHRlckxldmVsO1xuICBvcmRlcjogbnVtYmVyO1xuICBjb25maWc6IHsgZGVmYXVsdD86IEZpbHRlckdyb3VwRGVmYXVsdCB9ICYgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGZpbHRlcnM6IFJlcG9ydEZpbHRlcltdO1xufVxuXG4vLyBBIGZpbHRlciBncm91cCdzIGF1dGhvcmVkIGRlZmF1bHQg4oCUIHRoZSB2YWx1ZSB0aGF0IHNlZWRzIHRoZSByZXBvcnQgYmFyIG9uXG4vLyBldmVyeSBvcGVuLiBTaGFwZSBmb2xsb3dzIHRoZSBncm91cCdzIHR5cGU6IGRhdGVSYW5nZSB1c2VzIHN0YXJ0L2VuZCAoYSBmaXhlZFxuLy8gY2FsZW5kYXItZGF5IHJhbmdlKSBvciBhIHJlbGF0aXZlIHByZXNldDsgc2VsZWN0IHVzZXMgdmFsdWVzOyBrZXl3b3JkIHVzZXNcbi8vIHZhbHVlLlxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJHcm91cERlZmF1bHQge1xuICAvLyBkYXRlUmFuZ2UgcmVsYXRpdmUgcHJlc2V0LCByZXNvbHZlZCBvbiBldmVyeSBvcGVuIGFnYWluc3QgdG9kYXkgaW4gdGhlXG4gIC8vIHJlcG9ydCdzIGVmZmVjdGl2ZSB6b25lIChSZXBvcnQuZWZmZWN0aXZlVGltZXpvbmUpLiBPbmUgb2Y6IHRoaXNXZWVrLFxuICAvLyBsYXN0V2VlaywgbGFzdDdEYXlzLCBsYXN0MzBEYXlzLCBsYXN0M01vbnRocywgbGFzdDZNb250aHMsIGxhc3QxMk1vbnRocyxcbiAgLy8gdGhpc01vbnRoLCB0aGlzUXVhcnRlciwgdGhpc1llYXIveWVhclRvRGF0ZS4gV2Vla3MgcnVuIE1vbmRheSB0byBTdW5kYXksXG4gIC8vIHRoZSBzYW1lIHdlZWtzIHRoZSBzZXJ2ZXIncyB3ZWVrbHkgdGltZSBidWNrZXRzIHVzZS5cbiAgcmVsYXRpdmU/OiBzdHJpbmc7XG4gIHN0YXJ0Pzogc3RyaW5nOyAvLyBkYXRlUmFuZ2UgZml4ZWQgc3RhcnQgKHl5eXktTU0tZGQpXG4gIGVuZD86IHN0cmluZzsgLy8gZGF0ZVJhbmdlIGZpeGVkIGVuZCAoeXl5eS1NTS1kZClcbiAgdmFsdWVzPzogdW5rbm93bltdOyAvLyBzZWxlY3QgZGVmYXVsdCBwaWNrZWQgdmFsdWVzXG4gIHZhbHVlPzogc3RyaW5nOyAvLyBrZXl3b3JkIGRlZmF1bHQgdGV4dFxufVxuXG4vLyBUaGUgc2Vzc2lvbiB2YWx1ZSBvZiBhIGZpbHRlciBncm91cDogc2hhcGUgZGVwZW5kcyBvbiB0aGUgZ3JvdXAncyB0eXBlLiBOb3Rcbi8vIHN0b3JlZCBvbiB0aGUgc2VydmVyOyB0aGUgdmlld2VyJ3MgVVJMIGNhcnJpZXMgdGhlIHZhbHVlcyB0aGF0IGRpZmZlciBmcm9tXG4vLyB0aGUgZGVmYXVsdHMgKHJlcG9ydC11cmwtc3RhdGUudHMpLlxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJHcm91cFZhbHVlIHtcbiAgc3RhcnQ/OiBEYXRlIHwgc3RyaW5nIHwgbnVsbDsgLy8gZGF0ZVJhbmdlXG4gIGVuZD86IERhdGUgfCBzdHJpbmcgfCBudWxsOyAvLyBkYXRlUmFuZ2VcbiAgdmFsdWVzPzogdW5rbm93bltdOyAvLyBzZWxlY3RcbiAgdmFsdWU/OiBzdHJpbmc7IC8vIGtleXdvcmRcbiAgLy8gZGF0ZVJhbmdlIG9ubHk6IHRoZSByZWxhdGl2ZSBwcmVzZXQgbmFtZSB0aGVzZSBkYXRlcyB3ZXJlIHJlc29sdmVkIGZyb21cbiAgLy8gKGEgRmlsdGVyR3JvdXBEZWZhdWx0LnJlbGF0aXZlIG5hbWUpLiBTZXQgb25seSB3aGVuIHRoZSB2YWx1ZSB3YXMgc2VlZGVkXG4gIC8vIGZyb20gdGhlIGdyb3VwJ3MgcmVsYXRpdmUgZGVmYXVsdCBvciByZWFkIGZyb20gYSBwcmVzZXQgbmFtZSBpbiB0aGUgVVJMLFxuICAvLyBzbyB0aGUgVVJMIGtlZXBzIHRoZSByYW5nZSByb2xsaW5nICgnbGFzdDMwRGF5cycpIGluc3RlYWQgb2YgZnJlZXppbmcgdHdvXG4gIC8vIGRhdGVzLCBhbmQgdGhlIGRhdGEgcmVxdWVzdCBuYW1lcyB0aGUgcGVyaW9kIGl0IGNvdmVycyAoc2VlXG4gIC8vIFJlc29sdmVkRmlsdGVyVmFsdWUucHJlc2V0KS4gQW55IGRhdGUgcGlja2VkIGJ5IHRoZSB2aWV3ZXIsIGEgcGlja2VyXG4gIC8vIHNob3J0Y3V0IGluY2x1ZGVkLCBpcyBzdG9yZWQgd2l0aG91dCBpdC5cbiAgcHJlc2V0Pzogc3RyaW5nO1xufVxuXG4vLyBBIHJlbGF0aXZlIGRhdGUgcmFuZ2UgdGhlIHNlcnZlciByZXNvbHZlcyBhZ2FpbnN0IHRvZGF5IGluIHRoZSByZXBvcnQnc1xuLy8gem9uZTogdGhlIG5hbWVzIGEgRmlsdGVyR3JvdXBEZWZhdWx0LnJlbGF0aXZlIGFuZCBhIHRpbWVmcmFtZSdzIHJhbmdlIHRha2UuXG4vLyBNaXJyb3JzIHRoZSBzZXJ2ZXIncyBSZXBvcnRSZWxhdGl2ZVJhbmdlRW51bSB2YWx1ZSBmb3IgdmFsdWVcbi8vIChSZXBvcnRSZWxhdGl2ZVJhbmdlRW51bVRlc3QgcGlucyB0aGUgZGF5cyBlYWNoIG9uZSBjb3ZlcnMpLlxuZXhwb3J0IHR5cGUgUmVwb3J0UmVsYXRpdmVSYW5nZSA9XG4gIHwgJ3RoaXNXZWVrJ1xuICB8ICdsYXN0V2VlaydcbiAgfCAnbGFzdDdEYXlzJ1xuICB8ICdsYXN0MzBEYXlzJ1xuICB8ICdsYXN0M01vbnRocydcbiAgfCAnbGFzdDZNb250aHMnXG4gIHwgJ2xhc3QxMk1vbnRocydcbiAgfCAndGhpc01vbnRoJ1xuICB8ICd0aGlzUXVhcnRlcidcbiAgfCAndGhpc1llYXInXG4gIHwgJ3llYXJUb0RhdGUnO1xuXG4vLyBUaGUgdmlld2VyLXN0YXRlIHF1ZXJ5IHBhcmFtcyBvZiBhIHJlcG9ydCBVUkwsIGFzIHJhdyBzdHJpbmdzLCBiZWZvcmUgdGhleVxuLy8gYXJlIGNoZWNrZWQgYWdhaW5zdCB0aGUgcmVwb3J0IChyZXBvcnQtdXJsLXN0YXRlLnRzIHJlYWRSZXBvcnRVcmxQYXJhbXMpLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRVcmxQYXJhbXMge1xuICAvLyBnPGdyb3VwSWQ+IC0+IHRoZSBlbmNvZGVkIGdyb3VwIHZhbHVlICgnJyA9IHRoZSB2aWV3ZXIgY2xlYXJlZCBpdCkuXG4gIGdyb3VwczogTWFwPG51bWJlciwgc3RyaW5nPjtcbiAgLy8gczxjb21wb25lbnRJZD4gLT4gdGhlIGVuY29kZWQgbGlzdCBzb3J0ICgnLWNvbHVtbicgPSBkZXNjZW5kaW5nKS5cbiAgbGlzdFNvcnRzOiBNYXA8bnVtYmVyLCBzdHJpbmc+O1xuICAvLyBxPGNvbXBvbmVudElkPiAtPiBhIGxpc3QncyBzZWFyY2ggYm94IHRleHQsIGFzIHR5cGVkLlxuICBsaXN0U2VhcmNoZXM6IE1hcDxudW1iZXIsIHN0cmluZz47XG4gIC8vIGg8Y29tcG9uZW50SWQ+IC0+IHRoZSBjb2x1bW5zIGEgdmlld2VyIGhpZCBvbiBhIGxpc3QsIHN0aWxsIGVuY29kZWRcbiAgLy8gKGRlY29kZUNvbHVtbkxpc3QpLlxuICBsaXN0SGlkZGVuOiBNYXA8bnVtYmVyLCBzdHJpbmc+O1xuICAvLyBUaGUgZ3JvdXAtYnkgZ3JhaW4sIG9yIG51bGwgd2hlbiB0aGUgVVJMIGhhcyBub25lLlxuICBncm91cEJ5OiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBUaGUgdmlld2VyIHN0YXRlIHRoZSBVUkwgc2hvdWxkIGNhcnJ5OiBvbmx5IHdoYXQgZGlmZmVycyBmcm9tIHRoZSByZXBvcnQnc1xuLy8gYXV0aG9yZWQgZGVmYXVsdHMgKFJlcG9ydEZpbHRlclN0YXRlU2VydmljZS51cmxTbmFwc2hvdCkuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFVybFNuYXBzaG90IHtcbiAgLy8gQSBncm91cCdzIHZhbHVlLCBvciBudWxsIHdoZW4gdGhlIHZpZXdlciBjbGVhcmVkIGEgZ3JvdXAgdGhhdCBoYXMgYSBkZWZhdWx0LlxuICBncm91cHM6IE1hcDxudW1iZXIsIEZpbHRlckdyb3VwVmFsdWUgfCBudWxsPjtcbiAgLy8gQSBsaXN0J3Mgc29ydCwgYnkgY29tcG9uZW50IGlkLCB3aGVuIGl0IGRpZmZlcnMgZnJvbSB0aGUgYXV0aG9yZWQgc29ydCdzXG4gIC8vIGZpcnN0IHRlcm0uXG4gIGxpc3RTb3J0czogTWFwPG51bWJlciwgUmVwb3J0U29ydD47XG4gIC8vIEEgbGlzdCdzIHNlYXJjaCBib3ggdGV4dCwgYnkgY29tcG9uZW50IGlkLiBBIGxpc3Qgd2l0aCBhbiBlbXB0eSBib3ggaXNcbiAgLy8gbGVmdCBvdXQuXG4gIGxpc3RTZWFyY2hlczogTWFwPG51bWJlciwgc3RyaW5nPjtcbiAgLy8gVGhlIGNvbmZpZyBjb2x1bW4gbmFtZXMgYSB2aWV3ZXIgaGlkIG9uIGEgcGxhaW4gbGlzdCwgYnkgY29tcG9uZW50IGlkLiBBXG4gIC8vIGxpc3Qgc2hvd2luZyBldmVyeSBjb2x1bW4gaXMgbGVmdCBvdXQuXG4gIGxpc3RIaWRkZW46IE1hcDxudW1iZXIsIHN0cmluZ1tdPjtcbiAgZnJlcXVlbmN5OiBDaGFydEdyYW51bGFyaXR5IHwgbnVsbDtcbn1cblxuLy8gT25lIHJlc29sdmVkIGZpbHRlciBzZW50IHdpdGggYSBjb21wb25lbnQncyBkYXRhIHJlcXVlc3QuXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVkRmlsdGVyVmFsdWUge1xuICBmaWx0ZXJJZDogbnVtYmVyO1xuICBzdGFydD86IHN0cmluZztcbiAgZW5kPzogc3RyaW5nO1xuICB2YWx1ZXM/OiB1bmtub3duW107XG4gIHZhbHVlPzogc3RyaW5nO1xuICAvLyBkYXRlUmFuZ2Ugb25seTogdGhlIHJlbGF0aXZlIHJhbmdlIHN0YXJ0IGFuZCBlbmQgc3RpbGwgYXJlLCBzZW50IG9ubHlcbiAgLy8gd2hpbGUgdGhleSBhcmUgZXhhY3RseSB0aGF0IHJhbmdlIHJlc29sdmVkIHRvZGF5IGluIHRoZSByZXBvcnQncyB6b25lLiBJdFxuICAvLyB0ZWxscyB0aGUgc2VydmVyIHdoaWNoIHBlcmlvZCB0aGUgZGF5cyBjb3ZlciAob24gdGhlIGZpcnN0IGRheXMgb2YgYVxuICAvLyBxdWFydGVyLCB0aGlzTW9udGggYW5kIHRoaXNRdWFydGVyIGFyZSB0aGUgc2FtZSBkYXlzKSwgc28gYSBjb21wYXJpc29uXG4gIC8vIHNoaWZ0cyBieSB0aGUgcmlnaHQgdW5pdC4gc3RhcnQgYW5kIGVuZCBzdGF5IHRoZSB3aW5kb3c7IGEgc2VydmVyIHRoYXRcbiAgLy8gZG9lcyBub3Qga25vdyB0aGUga2V5IGlnbm9yZXMgaXQuXG4gIHByZXNldD86IFJlcG9ydFJlbGF0aXZlUmFuZ2U7XG59XG5cbi8vIFBlci1jb21wb25lbnQgaW50ZXJhY3Rpb24gc3RhdGUgc2VudCB3aXRoIHRoZSBkYXRhIHJlcXVlc3Q6IGxpc3RzIHNlbmRcbi8vIHNvcnQvcGFnaW5nIGFuZCB0aGUgdGV4dCBpbiB0aGVpciBzZWFyY2ggYm94OyB0aW1lLXNlcmllcyBjaGFydHMgc2VuZCB0aGVcbi8vIGdyYWluIHBpY2tlZCBvbiB0aGUgcmVwb3J0J3MgZ3JvdXAtYnkgY29udHJvbCwgd2hpY2ggb3ZlcnJpZGVzIHRoZSBhdXRob3JlZFxuLy8gZ3JhbnVsYXJpdHkgZm9yIHRoYXQgcmVxdWVzdCBvbmx5LiBUaGUgd2lyZSBrZXkgc3RheXMgYGZyZXF1ZW5jeWAg4oCUIGl0IGlzIHRoZVxuLy8gYnVja2V0aW5nIGZyZXF1ZW5jeSB0aGUgc2VydmVyIGFwcGxpZXMuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudERhdGFTdGF0ZSB7XG4gIHNvcnQ/OiBSZXBvcnRTb3J0O1xuICBwYWdlPzogbnVtYmVyO1xuICBwYWdlU2l6ZT86IG51bWJlcjtcbiAgZnJlcXVlbmN5PzogQ2hhcnRHcmFudWxhcml0eTtcbiAgLy8gQSBsaXN0J3Mgc2VhcmNoIGJveCB0ZXh0LiBUaGUgc2VydmVyIHRyaW1zIGl0LCBjdXRzIGl0IHRvIGl0cyBvd24gbWF4aW11bVxuICAvLyBsZW5ndGggYW5kIG1hdGNoZXMgaXQgYWdhaW5zdCBldmVyeSB0ZXh0IGNvbHVtbiB0aGUgbGlzdCBzaG93cy5cbiAgc2VhcmNoPzogc3RyaW5nO1xuICAvLyBUaGUgY29uZmlnIGNvbHVtbiBuYW1lcyBhIHZpZXdlciBoaWQgb24gYSBwbGFpbiBsaXN0LiBTZW50IHdpdGggYSBDU1ZcbiAgLy8gZXhwb3J0IG9ubHkgKHRoZSBzY3JlZW4gaGlkZXMgdGhlbSBpdHNlbGYpOiB0aGUgZmlsZSBsZWF2ZXMgdGhlbSBvdXQuIFRoZVxuICAvLyBzZXJ2ZXIgaWdub3JlcyBpdCBvbiBhIGNyb3NzLXRhYiwgYW5kIHdoZW4gaXQgd291bGQgaGlkZSBldmVyeSBjb2x1bW4uXG4gIGhpZGRlbkNvbHVtbnM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnREYXRhIHtcbiAgY29sdW1uczogc3RyaW5nW107XG4gIHJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107XG4gIHBhZ2luZz86IHsgdG90YWw6IG51bWJlcjsgcGFnZTogbnVtYmVyOyBwYWdlU2l6ZTogbnVtYmVyIH07XG4gIHRydW5jYXRlZDogYm9vbGVhbjtcbiAgLy8gVGhlIGVmZmVjdGl2ZSB0aW1lIGJ1Y2tldCB0aGUgcm93cyB3ZXJlIGdyb3VwZWQgaW50byAoYWZ0ZXIgYW55IGdyb3VwLWJ5XG4gIC8vIG92ZXJyaWRlKSwgb3IgbnVsbCBmb3IgYSBub24tdGltZSBheGlzLiBEcml2ZXMgdGhlIGNvbXBhY3QgeC1heGlzIGxhYmVscy5cbiAgZ3JhbnVsYXJpdHk/OiBDaGFydEdyYW51bGFyaXR5IHwgbnVsbDtcbiAgLy8gUGFnZSAxIG9mIGEgc2VhcmNoZWQgbGlzdCB3aG9zZSBzZWFyY2ggY291bGQgbm90IGFwcGx5ICh0aGUgbGlzdCBoYXMgbm9cbiAgLy8gdGV4dCBjb2x1bW4gdG8gc2VhcmNoKTogd2h5IHRoZSByb3dzIGFyZSBub3QgbmFycm93ZWQuIEFic2VudCBvdGhlcndpc2UuXG4gIHNlYXJjaE5vdGU/OiBzdHJpbmcgfCBudWxsO1xuICAvLyBQYWdlIDEgb2YgYSBsaXN0IHdpdGggY29uZmlnLnRvdGFscyBvbjogaXRzIHRvdGFscyByb3csIGFzIHJhdyB2YWx1ZXNcbiAgLy8ga2V5ZWQgbGlrZSB0aGUgY29sdW1ucyAoYSBwbGFpbiBsaXN0J3MgbWVhc3VyZSBhbGlhc2VzOyBhIGNyb3NzLXRhYidzXG4gIC8vIHBpdm90IGNlbGwgY29sdW1ucywgdGhlIHJvdy1rZXkgY29sdW1uIGFic2VudCksIG9yIG51bGwgd2l0aCB0b3RhbHNOb3RlXG4gIC8vIHNheWluZyB3aHkgdGhlcmUgaXMgbm9uZS4gQWJzZW50IG9uIGV2ZXJ5IG90aGVyIHBhZ2UgYW5kIGxpc3QuXG4gIHRvdGFscz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbDtcbiAgdG90YWxzTm90ZT86IHN0cmluZyB8IG51bGw7XG4gIC8vIFRoZSB3aW5kb3cgb2YgZGF5cyB0aGUgY29tcG9uZW50IHJlYWRzLCB3aGVuIGl0cyBxdWVyeSBoYXMgYSB0aW1lZnJhbWUuXG4gIC8vIEFic2VudCBvdGhlcndpc2UsIGFuZCBmcm9tIG9sZGVyIHNlcnZlcnMuXG4gIHRpbWVmcmFtZT86IENvbXBvbmVudFRpbWVmcmFtZSB8IG51bGw7XG4gIC8vIFRoZSBjdXJyZW50IGFuZCBwcmlvciB3aW5kb3dzIG9mIGEgY29tcG9uZW50IHdob3NlIG1lYXN1cmVzIGNvbXBhcmVcbiAgLy8gYWdhaW5zdCBhbiBlYXJsaWVyIHBlcmlvZC4gQWJzZW50IHdoZW4gbm8gbWVhc3VyZSBjb21wYXJlcy4gU2VudCBvbiBldmVyeVxuICAvLyBsaXN0IHBhZ2UgYW5kIG9uIGNoYXJ0IGFuZCBLUEkgZGF0YS5cbiAgY29tcGFyaXNvbj86IENvbXBvbmVudENvbXBhcmlzb24gfCBudWxsO1xuICAvLyBXaGF0IGVhY2ggY29tcGFyZWQsIHdpbmRvd2VkLCByYW5rZWQgb3Igc2hhcmVkIG91dHB1dCBjb2x1bW4gaXMsIGJ5IGFsaWFzLlxuICAvLyBQbGFpbiBtZWFzdXJlIGNvbHVtbnMgYXJlIGxlZnQgb3V0LlxuICBvdXRwdXRzPzogUmVjb3JkPHN0cmluZywgT3V0cHV0TWV0YT47XG4gIC8vIEEgY3Jvc3MtdGFiIG9ubHk6IHRoZSBtZWFzdXJlIGFsaWFzIGVhY2ggcGl2b3QgY2VsbCBjb2x1bW4gaG9sZHMsIHNvIGFcbiAgLy8gY2VsbCB0YWtlcyBpdHMgbWVhc3VyZSdzIG91dHB1dCBtZWFuaW5nLiBOZXZlciBzZW50IGZvciBhIHNxbC1tb2RlIGxpc3QuXG4gIGNlbGxNZWFzdXJlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8vIEhvdyBlYWNoIHdpbmRvd2VkIG91dHB1dCBjb2x1bW4gKHJ1bm5pbmcsIHRvLWRhdGUgb3Igcm9sbGluZykgd2FzXG4gIC8vIGNvbXB1dGVkLCBieSBhbGlhcy5cbiAgd2luZG93cz86IFJlY29yZDxzdHJpbmcsIFdpbmRvd01ldGE+O1xuICAvLyBBIEtQSSB3aXRoIGEgY29tcGFyaXNvbiwgYSB0YXJnZXQgb3IgYSBzcGFya2xpbmU6IGV2ZXJ5IG51bWJlciB0aGUgY2FyZFxuICAvLyBzaG93cyBiZXNpZGUgaXRzIHZhbHVlLCBkZWNpZGVkIGJ5IHRoZSBzZXJ2ZXIuXG4gIGtwaT86IENvbXBvbmVudEtwaSB8IG51bGw7XG4gIC8vIFRoZSB0aW1lLWF4aXMgdmFsdWUgb2YgdGhlIGJ1Y2tldCBjb250YWluaW5nIHRvZGF5LCB3cml0dGVuIGFzIHRoZSByb3dzXG4gIC8vIHdyaXRlIGl0LCB3aGVuIHRoYXQgYnVja2V0IGlzIG5vdCBmaW5pc2hlZCB5ZXQ7IG51bGwgb3RoZXJ3aXNlLiBBIGNoYXJ0XG4gIC8vIG1hcmtzIGl0IGFzIHBhcnRpYWwuXG4gIHBhcnRpYWxQZXJpb2Q/OiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBXaGVyZSBhIGNvbXBvbmVudCdzIHRpbWVmcmFtZSB3aW5kb3cgY2FtZSBmcm9tOiBhIHZpZXdlciBkYXRlUmFuZ2UgYm91bmQgdG9cbi8vIHRoZSB0aW1lZnJhbWUgY29sdW1uICh3aGljaCByZXBsYWNlcyB0aGUgYXV0aG9yZWQgcmFuZ2UsIG5ldmVyIG5hcnJvd3Ncbi8vIGl0KSwgdGhlIGF1dGhvcmVkIHJlbGF0aXZlIHJhbmdlLCB0aGUgYXV0aG9yZWQgZml4ZWQgZGF5cywgb3Igbm90aGluZyAoYW5cbi8vIG9wZW4gd2luZG93KS5cbmV4cG9ydCB0eXBlIFRpbWVmcmFtZVNvdXJjZSA9ICdmaWx0ZXInIHwgJ3JhbmdlJyB8ICdmaXhlZCcgfCAnbm9uZSc7XG5cbi8vIFRoZSB3aW5kb3cgYSBjb21wb25lbnQncyB0aW1lZnJhbWUgcmVzb2x2ZWQgdG8uIHN0YXJ0IGFuZCBlbmQgYXJlXG4vLyBpbmNsdXNpdmUgJ3l5eXktTU0tZGQnIGRheXMgaW4gdGhlIHJlcG9ydCdzIHpvbmUsIHdyaXR0ZW4gd2l0aG91dCBhIHpvbmUuXG4vLyB0aHJvdWdoIGlzIHRoZSBVVEMgJ3l5eXktTU0tZGQgSEg6bW06c3MnIGluc3RhbnQgYSB3aW5kb3cgb24gYSBkYXRldGltZVxuLy8gY29sdW1uIGlzIGN1dCBhdDsgaXQgcmVhZHMgYXMgYSB0aW1lIGluIHRoZSByZXBvcnQgem9uZS4gSXQgaXMgc2V0IG9ubHkgd2hlblxuLy8gYSBjb21wYXJpc29uIGN1dHMgYSB3aW5kb3cgdGhhdCBlbmRzIHRvZGF5OiBhIHRpbWVmcmFtZSBvbiBpdHMgb3duIHJlYWRzXG4vLyB3aG9sZSBkYXlzLCBzbyBhIHdpbmRvdyBlbmRpbmcgdG9kYXkgd2l0aG91dCBhIGNvbXBhcmlzb24gc2VuZHMgbnVsbC5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50VGltZWZyYW1lIHtcbiAgY29sdW1uOiBzdHJpbmc7XG4gIHN0YXJ0OiBzdHJpbmcgfCBudWxsO1xuICBlbmQ6IHN0cmluZyB8IG51bGw7XG4gIHRocm91Z2g6IHN0cmluZyB8IG51bGw7XG4gIHJhbmdlOiBSZXBvcnRSZWxhdGl2ZVJhbmdlIHwgbnVsbDtcbiAgc291cmNlOiBUaW1lZnJhbWVTb3VyY2U7XG59XG5cbi8vIEhvdyBhIGNvbXBhcmlzb24gaXMgbGFpZCBvdXQ6IG9uZSB2YWx1ZSBwZXIgd2luZG93IChyYW5nZSksIGEgcHJpb3Igc2VyaWVzXG4vLyBiZXNpZGUgYSB0aW1lIGF4aXMgKHNlcmllcyksIG9yIGVhY2ggcGVyaW9kJ3MgdmFsdWUgcmVhZCBhdCBpdHMgZW5kLCBzZXRcbi8vIGFnYWluc3QgdGhlIHZhbHVlIGF0IHRoZSBlbmQgb2YgYW4gZWFybGllciBwZXJpb2QgKHBlcmlvZF9lbmQpLlxuZXhwb3J0IHR5cGUgQ29tcGFyaXNvbk1vZGUgPSAncmFuZ2UnIHwgJ3NlcmllcycgfCAncGVyaW9kX2VuZCc7XG5cbi8vIHRvX2RhdGUgY29tcGFyZXMgbGlrZSB3aXRoIGxpa2UgKHRoZSBmaXJzdCAyIGRheXMgb2YgYSBtb250aCBhZ2FpbnN0IHRoZVxuLy8gZmlyc3QgMiBkYXlzIG9mIHRoZSBvbmUgYmVmb3JlKTsgZnVsbCBjb21wYXJlcyB3aG9sZSBwZXJpb2RzLlxuZXhwb3J0IHR5cGUgQ29tcGFyaXNvbkFsaWduID0gJ3RvX2RhdGUnIHwgJ2Z1bGwnO1xuXG4vLyBXaGF0IGEgbWVhc3VyZSBpcyBjb21wYXJlZCBhZ2FpbnN0LiBNaXJyb3JzIHRoZSBzZXJ2ZXInc1xuLy8gQ29tcGFyaXNvbkFnYWluc3RFbnVtIHZhbHVlIGZvciB2YWx1ZS5cbmV4cG9ydCB0eXBlIENvbXBhcmlzb25BZ2FpbnN0ID1cbiAgfCAncHJldmlvdXNfcGVyaW9kJ1xuICB8ICdwcmV2aW91c193ZWVrJ1xuICB8ICdwcmV2aW91c19tb250aCdcbiAgfCAncHJldmlvdXNfcXVhcnRlcidcbiAgfCAncHJldmlvdXNfeWVhcidcbiAgfCAncmFuZ2UnO1xuXG4vLyBXaHkgYSBjb21wYXJpc29uIHJlYWRzIGFzIGl0IGRvZXMuIFRoZSBzZXJ2ZXIgc2VuZHMgY29kZXMsIG5ldmVyXG4vLyBzZW50ZW5jZXM7IHRoZSB2aWV3ZXIgd29yZHMgdGhlbS5cbi8vIC0gbm9fd2luZG93OiBubyBkYXRlIHJhbmdlIHRvIGNvbXBhcmUgeWV0O1xuLy8gLSB1bml0X2luZmVycmVkOiB0aGUgcGVyaW9kIHVuaXQgd2FzIGluZmVycmVkIGZyb20gdGhlIGRheXMsIG5vdCBuYW1lZDtcbi8vIC0gd2luZG93X2luX2Z1dHVyZTogdGhlIHdpbmRvdyBzdGFydHMgYWZ0ZXIgdG9kYXk7XG4vLyAtIG90aGVyX2RhdGVfZmlsdGVyOiBhIGRhdGUgZmlsdGVyIG9uIGFub3RoZXIgY29sdW1uIGFsc28gYXBwbGllcztcbi8vIC0gZ3JhaW5fZm9sbG93ZWQ6IHRoZSBwcmlvciBmb2xsb3dzIHRoZSBncm91cC1ieSBncmFpbiBwaWNrZWQgb24gdGhlIHJlcG9ydC5cbmV4cG9ydCB0eXBlIENvbXBhcmlzb25Ob3RlQ29kZSA9XG4gIHwgJ25vX3dpbmRvdydcbiAgfCAndW5pdF9pbmZlcnJlZCdcbiAgfCAnd2luZG93X2luX2Z1dHVyZSdcbiAgfCAnb3RoZXJfZGF0ZV9maWx0ZXInXG4gIHwgJ2dyYWluX2ZvbGxvd2VkJztcblxuLy8gT25lIGNvbXBhcmlzb24gd2luZG93OiBpbmNsdXNpdmUgJ3l5eXktTU0tZGQnIGRheXMgaW4gdGhlIHJlcG9ydCdzIHpvbmUsXG4vLyBhbmQgdGhlIFVUQyBpbnN0YW50IGl0IGlzIGN1dCBhdCB3aGVuIGl0IGVuZHMgdG9kYXkgb24gYSBkYXRldGltZSBjb2x1bW4uXG4vLyBJbiBzZXJpZXMgbW9kZSBpdCBpcyB0aGUgc3BhbiB0aGUgY2hhcnQgc2hvd3MuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBhcmlzb25XaW5kb3cge1xuICBzdGFydDogc3RyaW5nO1xuICBlbmQ6IHN0cmluZztcbiAgdGhyb3VnaDogc3RyaW5nIHwgbnVsbDtcbn1cblxuLy8gSG93IGZhciBiYWNrIG9uZSBwcmlvciBsYW5lIHNpdHMuIEEgY3VzdG9tIHJhbmdlIGhhcyBubyB1bml0IG9yIGNvdW50LCBhbmRcbi8vIG5laXRoZXIgZG9lcyBwcmV2aW91c19wZXJpb2Qgd2hlbiB0aGVyZSBpcyBubyBjdXJyZW50IHdpbmRvdyB0byBtZWFzdXJlXG4vLyAobm9fd2luZG93LCB3aW5kb3dfaW5fZnV0dXJlKTsgYSBzaGlmdCBieSB0aGUgd2luZG93J3MgbGVuZ3RoIGlzIHVuaXQgZGF5XG4vLyB3aXRoIHRoZSBsZW5ndGggYXMgdGhlIGNvdW50OyBhIHByZXZpb3VzIHllYXIgaXMgMzY0IGRheXMgb24gYSBkYXkgYXhpcyBhbmRcbi8vIDUyIHdlZWtzIG9uIGEgd2VlayBheGlzLlxuZXhwb3J0IGludGVyZmFjZSBDb21wYXJpc29uT2Zmc2V0IHtcbiAgYWdhaW5zdDogQ29tcGFyaXNvbkFnYWluc3Q7XG4gIHVuaXQ6IENoYXJ0R3JhbnVsYXJpdHkgfCBudWxsO1xuICBjb3VudDogbnVtYmVyIHwgbnVsbDtcbn1cblxuLy8gQSBjb21wb25lbnQncyBjb21wYXJpc29uOiB0aGUgem9uZSBpdHMgZGF5cyBhcmUgaW4sIHRoZSBjdXJyZW50IHdpbmRvd1xuLy8gKG51bGwgd2hlbiB0aGVyZSBpcyBubyB3aW5kb3cgdG8gY29tcGFyZSB5ZXQsIG9yIHdoZW4gYSB0aW1lIGF4aXMgcnVuc1xuLy8gb3ZlciBhbGwgdGhlIGRhdGEsIHdoaWNoIGhhcyBubyBmaXJzdCBkYXkgdG8gbmFtZSkgYW5kIHVwIHRvIDIgcHJpb3Jcbi8vIGxhbmVzOiBvZmZzZXRzW2ldIGRlc2NyaWJlcyBsYW5lIGkgKyAxLCBhbmQgcHJpb3JzW2ldIGl0cyB3aW5kb3cuIFdpdGggbm9cbi8vIGN1cnJlbnQgd2luZG93IHByaW9ycyBpcyBlbXB0eSwgd2hpbGUgb2Zmc2V0cyBzdGlsbCBuYW1lcyBldmVyeSBsYW5lLlxuLy8gZmxvb3IgaXMgdGhlICd5eXl5LU1NLWRkJyBkYXkgb2YgdGhlIGZpcnN0IHJvdyB0aGUgcXVlcnkncyBvd24gY29uZGl0aW9uc1xuLy8ga2VlcCAodmlld2VyIGZpbHRlcnMgYXNpZGUpOiBhIHByaW9yIHdpbmRvdyB3aG9sbHkgYmVmb3JlIGl0IGhhcyBubyBkYXRhXG4vLyByYXRoZXIgdGhhbiBhIHplcm8uXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudENvbXBhcmlzb24ge1xuICBtb2RlOiBDb21wYXJpc29uTW9kZTtcbiAgdGltZXpvbmU6IHN0cmluZztcbiAgYWxpZ246IENvbXBhcmlzb25BbGlnbjtcbiAgY3VycmVudDogQ29tcGFyaXNvbldpbmRvdyB8IG51bGw7XG4gIHByaW9yczogQ29tcGFyaXNvbldpbmRvd1tdO1xuICBvZmZzZXRzOiBDb21wYXJpc29uT2Zmc2V0W107XG4gIGZsb29yOiBzdHJpbmcgfCBudWxsO1xuICBub3RlczogQ29tcGFyaXNvbk5vdGVDb2RlW107XG59XG5cbi8vIFdoYXQgYW4gb3V0cHV0IGNvbHVtbiBob2xkczogYSBtZWFzdXJlJ3MgdmFsdWUsIGl0cyByYW5rIG9yIGl0cyBzaGFyZS5cbmV4cG9ydCB0eXBlIE91dHB1dEtpbmQgPSAndmFsdWUnIHwgJ3JhbmsnIHwgJ3NoYXJlJztcblxuLy8gV2hpY2ggc2lkZSBvZiBhIGNvbXBhcmlzb24gYW4gb3V0cHV0IGNvbHVtbiBpczogdGhlIGN1cnJlbnQgdmFsdWUsIHRoZVxuLy8gcHJpb3Igb25lLCB0aGVpciBkaWZmZXJlbmNlLCBvciB0aGUgZGlmZmVyZW5jZSBhcyBhIDAtMSBmcmFjdGlvbiBvZiB0aGVcbi8vIHByaW9yLiBudWxsIGZvciBhbiBvdXRwdXQgdGhhdCBpcyBub3QgY29tcGFyZWQuXG5leHBvcnQgdHlwZSBPdXRwdXRSb2xlID0gJ2N1cnJlbnQnIHwgJ3ByaW9yJyB8ICdjaGFuZ2UnIHwgJ3BlcmNlbnRfY2hhbmdlJztcblxuLy8gSG93IHRpZWQgdmFsdWVzIHJhbms6IDEsIDEsIDMgKGNvbXBldGl0aW9uKSBvciAxLCAxLCAyIChkZW5zZSkuXG5leHBvcnQgdHlwZSBPdXRwdXRSYW5rTWV0aG9kID0gJ2NvbXBldGl0aW9uJyB8ICdkZW5zZSc7XG5cbi8vIEEgcmFuayBvdXRwdXQ6IGhvdyB0aWVzIHJhbmssIHdoaWNoIGVuZCByYW5rcyAxIChkZXNjOiB0aGUgbGFyZ2VzdCksIGFuZFxuLy8gdGhlIGRpbWVuc2lvbiBvdXRwdXRzIGl0IHJlc3RhcnRzIHdpdGhpbiAobm9uZTogdGhlIHdob2xlIHJlc3VsdCkuXG5leHBvcnQgaW50ZXJmYWNlIE91dHB1dFJhbmsge1xuICBtZXRob2Q6IE91dHB1dFJhbmtNZXRob2Q7XG4gIGRpcmVjdGlvbjogJ2FzYycgfCAnZGVzYyc7XG4gIHdpdGhpbjogc3RyaW5nW107XG59XG5cbi8vIEEgc2hhcmUgb3V0cHV0OiB0aGUgZGltZW5zaW9uIG91dHB1dHMgd2hvc2UgdG90YWwgaXQgaXMgYSBzaGFyZSBvZiAobm9uZTpcbi8vIHRoZSB3aG9sZSByZXN1bHQpLlxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXRTaGFyZSB7XG4gIHdpdGhpbjogc3RyaW5nW107XG59XG5cbi8vIFRoZSBtZWFuaW5nIG9mIG9uZSBjb21wYXJlZCwgd2luZG93ZWQsIHJhbmtlZCBvciBzaGFyZWQgb3V0cHV0IGNvbHVtbi5cbi8vIG1lYXN1cmUgaXMgdGhlIHNvdXJjZSBtZWFzdXJlJ3MgYWxpYXMsIHdob3NlIGZvcm1hdCB0aGUgY29sdW1uIGluaGVyaXRzO1xuLy8gb2Zmc2V0IGlzIHRoZSBwcmlvciBsYW5lIGEgcHJpb3IsIGNoYW5nZSBvciBwZXJjZW50IGNoYW5nZSBiZWxvbmdzIHRvIChpdHNcbi8vIHdpbmRvdyBpcyBjb21wYXJpc29uLnByaW9yc1tvZmZzZXQgLSAxXSkuIFVubGVzcyB0aGUgY29uZmlnIGZvcm1hdHMgaXQsIGFcbi8vIHNoYXJlIHByaW50cyBhcyBhIHBlcmNlbnQgdG8gMSBkZWNpbWFsIGFuZCBhIHJhbmsgYXMgYSB3aG9sZSBudW1iZXIuXG5leHBvcnQgaW50ZXJmYWNlIE91dHB1dE1ldGEge1xuICBtZWFzdXJlOiBzdHJpbmc7XG4gIGtpbmQ6IE91dHB1dEtpbmQ7XG4gIHJvbGU6IE91dHB1dFJvbGUgfCBudWxsO1xuICBvZmZzZXQ6IG51bWJlciB8IG51bGw7XG4gIHdpbmRvdzogYm9vbGVhbjtcbiAgcmFuazogT3V0cHV0UmFuayB8IG51bGw7XG4gIHNoYXJlOiBPdXRwdXRTaGFyZSB8IG51bGw7XG59XG5cbi8vIEEgd2luZG93IG92ZXIgdGhlIHJvd3M6IGEgcnVubmluZyB0b3RhbCwgYSB0b3RhbCB0byBkYXRlIHdpdGhpbiBlYWNoXG4vLyBwZXJpb2QgKG1vbnRoIHRvIGRhdGUpLCBvciBhIHJvbGxpbmcgc3BhbiBvZiBwZXJpb2RzLlxuZXhwb3J0IHR5cGUgV2luZG93S2luZCA9ICdydW5uaW5nJyB8ICd0b19kYXRlJyB8ICdyb2xsaW5nJztcblxuLy8gV2h5IGEgd2luZG93IHJlYWRzIGFzIGl0IGRvZXMuIENvZGVzIG9ubHk7IHRoZSB2aWV3ZXIgd29yZHMgdGhlbS5cbmV4cG9ydCB0eXBlIFdpbmRvd05vdGVDb2RlID1cbiAgfCAnc25hcHBlZF9zdGFydCdcbiAgfCAnc3Bhbl9jb252ZXJ0ZWQnXG4gIHwgJ2dyYWluX3Rvb19jb2Fyc2UnXG4gIHwgJ2VxdWFsX2dyYWluX3BsYWluJ1xuICB8ICdvd25fZmlsdGVyX2NhcHNfbGVhZF9pbidcbiAgfCAnd2Vla19ieV9tb25kYXknXG4gIHwgJ2luY29tcGxldGVfaGVhZCc7XG5cbi8vIEhvdyBvbmUgd2luZG93ZWQgb3V0cHV0IGNvbHVtbiB3YXMgY29tcHV0ZWQuIHBlcmlvZHMgYW5kIHVuaXQgc2l6ZSBhXG4vLyByb2xsaW5nIHdpbmRvdyAoZHJhd25QZXJpb2RzIGlzIHRoYXQgc3BhbiBjb3VudGVkIGluIHRoZSBncmFpbiB0aGUgcm93c1xuLy8gYXJlIGRyYXduIGF0KTsgcmVzZXRFdmVyeSByZXN0YXJ0cyBhIHRvLWRhdGUgd2luZG93OyBhdmVyYWdlIG1ha2VzIHRoZVxuLy8gd2luZG93IGFuIGF2ZXJhZ2UgcmF0aGVyIHRoYW4gYSB0b3RhbDsgZnJvbUJlZ2lubmluZ1xuLy8gcnVucyBhIHRvdGFsIGZyb20gdGhlIGZpcnN0IHJvdyBldmVyIHJhdGhlciB0aGFuIGZyb20gdGhlIGZpcnN0IHJvdyBzaG93bi5cbi8vIHN0YXJ0LCBlbmQgYW5kIGxlYWRJbiBhcmUgJ3l5eXktTU0tZGQnIHJlcG9ydC16b25lIGRheXM6IHRoZSByb3dzIHNob3duLFxuLy8gYW5kIHRoZSBlYXJsaWVyIGRheSB0aGUgd2luZG93IHJlYWRzIGZyb20gc28gaXRzIGZpcnN0IHJvd3MgYXJlIHdob2xlLlxuLy8gZGVzY3JpcHRpb24gaXMgdGhlIHNlcnZlcidzIEVuZ2xpc2ggZm9yIHRoZSBhZ2VudCBhbmQgdGhlIGV4cG9ydHM7IHRoZVxuLy8gdmlld2VyIGNvbXBvc2VzIGl0cyBvd24gd29yZHMgZnJvbSB0aGUgZmllbGRzLlxuZXhwb3J0IGludGVyZmFjZSBXaW5kb3dNZXRhIHtcbiAga2luZDogV2luZG93S2luZDtcbiAgcGVyaW9kczogbnVtYmVyIHwgbnVsbDtcbiAgdW5pdDogQ2hhcnRHcmFudWxhcml0eSB8IG51bGw7XG4gIGRyYXduUGVyaW9kczogbnVtYmVyIHwgbnVsbDtcbiAgcmVzZXRFdmVyeTogQ2hhcnRHcmFudWxhcml0eSB8IG51bGw7XG4gIGF2ZXJhZ2U6IGJvb2xlYW47XG4gIGZyb21CZWdpbm5pbmc6IGJvb2xlYW47XG4gIGRhdGVDb2x1bW46IHN0cmluZyB8IG51bGw7XG4gIHN0YXJ0OiBzdHJpbmcgfCBudWxsO1xuICBlbmQ6IHN0cmluZyB8IG51bGw7XG4gIGxlYWRJbjogc3RyaW5nIHwgbnVsbDtcbiAgbm90ZXM6IFdpbmRvd05vdGVDb2RlW107XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG59XG5cbi8vIFdoaWNoIGRlbHRhIGEgS1BJIGNhcmQgc2hvd3M6IHRoZSBkaWZmZXJlbmNlLCBvciB0aGUgcGVyY2VudCBjaGFuZ2UuXG5leHBvcnQgdHlwZSBLcGlEZWx0YVNob3cgPSAnY2hhbmdlJyB8ICdwZXJjZW50X2NoYW5nZSc7XG5cbi8vIFdoeSBhIEtQSSdzIGRlbHRhIHJlYWRzIGFzIGl0IGRvZXM6XG4vLyAtIG5vX3ByaW9yX2RhdGE6IHRoZSBwcmlvciB3aW5kb3cgaGFzIG5vIHZhbHVlO1xuLy8gLSB1cF9mcm9tX3plcm86IHRoZSBwcmlvciB3YXMgMCwgc28gdGhlcmUgaXMgbm8gcGVyY2VudCBjaGFuZ2U7XG4vLyAtIG5vX2NoYW5nZTogYm90aCBhcmUgMDtcbi8vIC0gbm9fZGF0YV9laXRoZXI6IG5laXRoZXIgd2luZG93IGhhcyBhIHZhbHVlO1xuLy8gLSBzaWduX2NoYW5nZTogdGhlIHZhbHVlIGNyb3NzZWQgemVybywgc28gdGhlcmUgaXMgbm8gcGVyY2VudCBjaGFuZ2UuXG5leHBvcnQgdHlwZSBLcGlOb3RlQ29kZSA9XG4gIHwgJ25vX3ByaW9yX2RhdGEnXG4gIHwgJ3VwX2Zyb21femVybydcbiAgfCAnbm9fY2hhbmdlJ1xuICB8ICdub19kYXRhX2VpdGhlcidcbiAgfCAnc2lnbl9jaGFuZ2UnO1xuXG4vLyBBIEtQSSdzIHByb2dyZXNzIHRvd2FyZCBpdHMgY29uZmlndXJlZCB0YXJnZXQuIHByb2dyZXNzIGlzIHZhbHVlIC8gdGFyZ2V0XG4vLyAobnVsbCB3aGVuIHRoZSB0YXJnZXQgaXMgMCk7IG1ldCBmb2xsb3dzIHRoZSBjb25maWcncyBpbmNyZWFzZUlzIChudWxsXG4vLyB3aGVuIGl0IGlzIG5ldXRyYWwpLlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRLcGlUYXJnZXQge1xuICB2YWx1ZTogbnVtYmVyO1xuICBsYWJlbDogc3RyaW5nIHwgbnVsbDtcbiAgcHJvZ3Jlc3M6IG51bWJlciB8IG51bGw7XG4gIG1ldDogYm9vbGVhbiB8IG51bGw7XG59XG5cbi8vIE9uZSBzcGFya2xpbmUgcG9pbnQ6IHRoZSBwZXJpb2QsIHdyaXR0ZW4gYXMgYSB0aW1lLWF4aXMgdmFsdWUsIGFuZCB0aGVcbi8vIHZhbHVlIGluIGl0IChudWxsIHdoZW4gYSBub24tYWRkaXRpdmUgbWVhc3VyZSBoYXMgbm8gcm93cyB0aGVyZSkuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudEtwaVNwYXJrbGluZVBvaW50IHtcbiAgcGVyaW9kOiBzdHJpbmc7XG4gIHZhbHVlOiBudW1iZXIgfCBudWxsO1xufVxuXG4vLyBBIEtQSSdzIHNwYXJrbGluZSBwb2ludHMsIG9sZGVzdCBmaXJzdC4gcGFydGlhbCBzYXlzIHRoZSBsYXN0IHBlcmlvZCBpc1xuLy8gbm90IGZpbmlzaGVkIHlldC5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50S3BpU3BhcmtsaW5lIHtcbiAgZ3JhbnVsYXJpdHk6IENoYXJ0R3JhbnVsYXJpdHk7XG4gIHBhcnRpYWw6IGJvb2xlYW47XG4gIHBvaW50czogQ29tcG9uZW50S3BpU3BhcmtsaW5lUG9pbnRbXTtcbn1cblxuLy8gRXZlcnkgbnVtYmVyIGEgS1BJIGNhcmQgc2hvd3MgYmVzaWRlIGl0cyB2YWx1ZS4gc2hvdyBuYW1lcyB0aGUgZGVsdGEgdG9cbi8vIHByaW50LCBkZWNpZGVkIGJ5IHRoZSBzZXJ2ZXIuIFdoZW4gdmFsdWUgaXMgbnVsbCB0aGUgY2FyZCBzaG93cyBhIGRhc2ggYW5kXG4vLyBubyBjb21wYXJpc29uLlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRLcGkge1xuICB2YWx1ZTogbnVtYmVyIHwgbnVsbDtcbiAgcHJpb3I6IG51bWJlciB8IG51bGw7XG4gIGNoYW5nZTogbnVtYmVyIHwgbnVsbDtcbiAgcGVyY2VudENoYW5nZTogbnVtYmVyIHwgbnVsbDtcbiAgc2hvdzogS3BpRGVsdGFTaG93O1xuICBub3RlOiBLcGlOb3RlQ29kZSB8IG51bGw7XG4gIHRhcmdldDogQ29tcG9uZW50S3BpVGFyZ2V0IHwgbnVsbDtcbiAgc3BhcmtsaW5lOiBDb21wb25lbnRLcGlTcGFya2xpbmUgfCBudWxsO1xufVxuXG4vLyBBIGNvbXBvbmVudCdzIENTViBleHBvcnQ6IHRoZSBwcmVzaWduZWQgZG93bmxvYWQgVVJMLCBwbHVzIG9uZSBzZW50ZW5jZSBwZXJcbi8vIHdheSB0aGUgZmlsZSBmYWxscyBzaG9ydCBvZiB0aGUgZnVsbCByZXN1bHQgKGN1dCBhdCB0aGUgZXhwb3J0IGNlaWxpbmcsIG9yXG4vLyBjdXQgYXMgdGhlIGNoYXJ0IGl0c2VsZiBpcykuIEVtcHR5IHdoZW4gdGhlIGZpbGUgaXMgY29tcGxldGUuIE9wdGlvbmFsXG4vLyBiZWNhdXNlIGEgc2VydmVyIG9uIGFuIG9sZGVyIGZyYW1ld29yayBhbnN3ZXJzIHdpdGggdGhlIHVybCBhbG9uZS5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50RXhwb3J0UmVzcG9uc2Uge1xuICB1cmw6IHN0cmluZztcbiAgbm90ZXM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRMaXN0SXRlbSB7XG4gIGlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgbW9kaWZ5RGF0ZTogc3RyaW5nO1xuICBzdGF0ZT86IFJlcG9ydFN0YXRlO1xuICAvLyBUaGUgZm9sZGVyIHRoZSByZXBvcnQgaXMgZmlsZWQgdW5kZXIuIG51bGwgaXMgYSByZWFsLCBjb21tb24gdmFsdWUg4oCUIHRoZVxuICAvLyByZXBvcnQgc2l0cyBhdCB0aGUgcm9vdCBvZiB0aGUgbGlzdGluZyB0cmVlIGFsb25nc2lkZSB0aGUgZm9sZGVycy5cbiAgLy9cbiAgLy8gT3B0aW9uYWwgbGlrZSBgc3RhdGVgIGJlc2lkZSBpdDogdGhlIGJhY2tlbmQgYWx3YXlzIHNlbmRzIGl0LCBidXQgbWFraW5nIGl0XG4gIC8vIHJlcXVpcmVkIGlzIGEgYnJlYWtpbmcgdHlwZSBjaGFuZ2UgZm9yIGV2ZXJ5IGNvbnN1bWVyIGhvbGRpbmcgYVxuICAvLyBSZXBvcnRMaXN0SXRlbSBsaXRlcmFsIChmaXh0dXJlcywgbW9ja3MpIGFuZCBidXlzIG5vdGhpbmcg4oCUIHRoZSBsaXN0aW5nXG4gIC8vIHJlYWRzIGl0IGFzIGA/PyBudWxsYCBlaXRoZXIgd2F5LlxuICByZXBvcnRGb2xkZXJJZD86IG51bWJlciB8IG51bGw7XG59XG5cbi8vIE9uZSBmb2xkZXIgaW4gdGhlIGxpc3RpbmcgdHJlZSDigJQgYW4gYXVkaWVuY2UgYnVja2V0IChcIk1hbmFnZW1lbnRcIixcbi8vIFwiT3BlcmF0aW9uc1wiKSByZXBvcnRzIGFyZSBmaWxlZCBpbnRvLiBGb2xkZXJzIG5lc3QgdmlhIHBhcmVudFJlcG9ydEZvbGRlcklkO1xuLy8gcmVwb3J0cyBuZXZlciBkbywgc28gdGhlIHRyZWUncyBvbmx5IGJyYW5jaCBub2RlcyBhcmUgZm9sZGVycy5cbi8vXG4vLyBgc3RhdGVgIGlzIHRoZSBmb2xkZXIncyBPV04gc3RhdGUuIERlbGV0aW5nIGEgZm9sZGVyIHdyaXRlcyBvbmx5IHRoYXQsIGFuZFxuLy8gZXZlcnl0aGluZyBiZWxvdyBpdCBjb3VudHMgYXMgZGVsZXRlZCBieSBwb3NpdGlvbiDigJQgc2VlIFJlcG9ydE5vZGUuZGVsZXRlZC5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Rm9sZGVyIHtcbiAgaWQ6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICBwYXJlbnRSZXBvcnRGb2xkZXJJZDogbnVtYmVyIHwgbnVsbDtcbiAgc3RhdGU/OiBSZXBvcnRTdGF0ZTtcbn1cblxuLy8gR0VUIC9hcGkvcmVwb3J0cyByZXR1cm5zIGJvdGggaGFsdmVzIGZsYXQ7IHRoZSBsaXN0aW5nIG5lc3RzIHRoZW0gaXRzZWxmLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRUcmVlIHtcbiAgcmVwb3J0czogUmVwb3J0TGlzdEl0ZW1bXTtcbiAgZm9sZGVyczogUmVwb3J0Rm9sZGVyW107XG59XG5cbmV4cG9ydCBlbnVtIFJlcG9ydE5vZGVUeXBlIHtcbiAgRm9sZGVyID0gJ2ZvbGRlcicsXG4gIFJlcG9ydCA9ICdyZXBvcnQnLFxufVxuXG4vLyBPbmUgbm9kZSBhcyBmcy10cmVlIHNlZXMgaXQuIEZvbGRlcnMgYW5kIHJlcG9ydHMgc2hhcmUgb25lIGlkIHNwYWNlIGluIHRoZVxuLy8gdmlldywgc28gdGhlIGlkcyBhcmUgcHJlZml4ZWQgKCdmOjEyJyAvICdyOjM0Jykg4oCUIGBpZGAgaXMgdGhlIG9yaWdpbmFsLFxuLy8gcGVyLXRhYmxlIGlkIHRoYXQgdGhlIEFQSSBlbmRwb2ludHMgdGFrZS5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Tm9kZSB7XG4gIGtleTogc3RyaW5nO1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IFJlcG9ydE5vZGVUeXBlO1xuICAvLyBPbmx5IGV2ZXIgcG9wdWxhdGVkIG9uIGEgZm9sZGVyOyBhIHJlcG9ydCBpcyBhbHdheXMgYSBsZWFmLlxuICBjaGlsZHJlbjogUmVwb3J0Tm9kZVtdO1xuICAvLyBQcmVzZW50IG9uIHJlcG9ydCBub2RlcyBvbmx5LlxuICByZXBvcnQ/OiBSZXBvcnRMaXN0SXRlbTtcbiAgLy8gVGhlIG5vZGUncyBvd24gcm93IGlzIGRlbGV0ZWQuIFdoYXQgZWFybnMgdGhlIFwiRGVsZXRlZFwiIGNoaXAg4oCUIHRoaXMgaXNcbiAgLy8gd2hhdCBzb21lYm9keSBhY3R1YWxseSBkZWxldGVkLlxuICBzdGF0ZURlbGV0ZWQ6IGJvb2xlYW47XG4gIC8vIERlbGV0ZWQgaXRzZWxmIE9SIGFueXdoZXJlIGJlbG93IGEgZGVsZXRlZCBmb2xkZXIuIE9ubHkgZXZlciB0cnVlIGluIFNob3dcbiAgLy8gRGVsZXRlZCBtb2RlICh0aGUgZGVmYXVsdCBsaXN0aW5nIG5ldmVyIHJldHVybnMgc3VjaCBhIG5vZGUpLCBhbmQgaXQgaXMgd2hhdFxuICAvLyBzd2FwcyB0aGUgcm93J3MgYWN0aW9ucyBmb3IgUmVzdG9yZS5cbiAgZGVsZXRlZDogYm9vbGVhbjtcbn1cblxuLy8gUmVwb3J0cyBhbmQgZm9sZGVycyBhcmUgYm90aCBzb2Z0LWRlbGV0YWJsZS4gQSBkZWxldGVkIHJlcG9ydCBrZWVwcyBpdHMgcGFnZXNcbi8vIGFuZCBjb21wb25lbnRzOyBhIGRlbGV0ZWQgZm9sZGVyIGtlZXBzIGV2ZXJ5dGhpbmcgZmlsZWQgdW5kZXIgaXQsIHdoaWNoIGxlYXZlc1xuLy8gdGhlIGxpc3Rpbmcgd2l0aCBpdCBhbmQgY29tZXMgYmFjayB3aXRoIGl0LiBcIlNob3cgRGVsZXRlZFwiIHNob3dzIHRoZSB3aG9sZVxuLy8gdHJlZSwgbGl2ZSBhbmQgZGVsZXRlZCB0b2dldGhlciwgc28gYW55IG9mIGl0IGNhbiBiZSByZXN0b3JlZCBpbiBwbGFjZS5cbmV4cG9ydCBlbnVtIFJlcG9ydFN0YXRlIHtcbiAgQWN0aXZlID0gJ2FjdGl2ZScsXG4gIERlbGV0ZWQgPSAnZGVsZXRlZCcsXG59XG5cbi8vIFRoZSBjaGF0IHR1cm4gZmxhZ3MgdGhpcyBjb250ZXh0J3MgYmFja2VuZCBhZGRzIChSZXBvcnRzXFxBaVZpZXcpLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRDaGF0UmVzcG9uc2Uge1xuICByZXBvcnRDaGFuZ2VkPzogYm9vbGVhbjtcbiAgcmVwb3J0UmVuYW1lZD86IGJvb2xlYW47XG59XG5cbi8vIE9uZSB2ZXJzaW9uIG9mIHRoZSBnbG9iYWwgQUkga25vd2xlZGdlIGRvY3VtZW50IOKAlCB0aGUgb3BlcmF0b3ItYXV0aG9yZWRcbi8vIG1hcmtkb3duIGFwcGVuZGVkIHRvIHRoZSByZXBvcnQgYWdlbnQncyBzeXN0ZW0gaW5zdHJ1Y3Rpb25zIG9uIGV2ZXJ5IHR1cm4uXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEluc3RydWN0aW9uIHtcbiAgaWQ6IG51bWJlcjtcbiAgY29udGVudDogc3RyaW5nO1xuICBjdXJyZW50OiBib29sZWFuO1xuICBjcmVhdGVEYXRlOiBEYXRlO1xuICBtb2RpZnlEYXRlOiBEYXRlO1xuICBhY2NvdW50SWQ6IG51bWJlciB8IG51bGw7XG4gIGFjY291bnROYW1lOiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBHRVQvUFVUIGluc3RydWN0aW9ucyBwYXlsb2FkOiB0aGUgY3VycmVudCB2ZXJzaW9uIChudWxsIHVudGlsIG9uZSBpc1xuLy8gYXV0aG9yZWQpIHBsdXMgdGhlIGZ1bGwgaGlzdG9yeSwgbmV3ZXN0IGZpcnN0LlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRJbnN0cnVjdGlvbnMge1xuICBpbnN0cnVjdGlvbnM6IFJlcG9ydEluc3RydWN0aW9uIHwgbnVsbDtcbiAgdmVyc2lvbnM6IFJlcG9ydEluc3RydWN0aW9uW107XG59XG5cbi8vIFRoZSBsYXRlc3Qgc2VtYW50aWMtZGF0YWJhc2UgYnVpbGQgKGFuIGZmX3Byb2Nlc3NlcyByb3cpIOKAlCBlbm91Z2ggZm9yIHRoZVxuLy8gc2V0dGluZ3MgZGlhbG9nIHRvIHNheSB3aGF0IHN0YXRlIHRoZSBidWlsZCBpcyBpbiBhbmQgd2hlbiBpdCBsYXN0IHJhbi5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNCdWlsZCB7XG4gIGlkOiBudW1iZXI7XG4gIHN0YXRlOiBzdHJpbmc7XG4gIHBlcmNlbnQ6IG51bWJlciB8IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBkdXJhdGlvbjogbnVtYmVyO1xuICBjcmVhdGVEYXRlOiBEYXRlO1xuICBzdGFydERhdGU6IERhdGU7XG4gIGVuZERhdGU6IERhdGU7XG59XG5cbi8vIEEgYnVpbGQgc3RhZ2UncyBzdGF0ZSBvbiB0aGUgZW50aXR5IHNjb3JlYm9hcmQ6ICdkb25lJyA9IGJ1aWx0LCAnbWlzc2luZycgPVxuLy8gc3RpbGwgbmVlZHMgYnVpbGRpbmcgKGEgbWlzc2luZyBzdGFnZSBpcyB1bmJ1aWx0IGNvbnRlbnQsIG5ldmVyIGFuIGVycm9yKS5cbmV4cG9ydCB0eXBlIFNlbWFudGljQnVpbGRTdGFnZSA9ICdkb25lJyB8ICdtaXNzaW5nJztcblxuLy8gT25lIGVudW0gY29sdW1uIG9mIGFuIGVudGl0eSwgd2l0aCB0aGUgYWxsb3dlZCB2YWx1ZXMgdGhlIGJ1aWxkIGlubGluZWQuXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljQnVpbGRFbnVtIHtcbiAgY29sdW1uOiBzdHJpbmc7XG4gIHZhbHVlczogc3RyaW5nW107XG59XG5cbi8vIE9uZSBlbnRpdHkgcm93IG9mIHRoZSBzY29yZWJvYXJkIChhbiBlbnRpdHkgPSBhIHRhYmxlICsgYSBtb2RlbCArIGFcbi8vIGhhbmRsZXIpOiBpdHMgdGFibGUvc2hhcGUgY291bnRzLCBpbmxpbmVkIGVudW0gdmFsdWVzLCBjb21wdXRlZCBmaWVsZHMsIGhvd1xuLy8gbWFueSBjb2RlIGZ1bmN0aW9ucyB3ZXJlIGNhY2hlZCAoc3BsaXQgbW9kZWwgdnMgaGFuZGxlciksIGFuZCB0aGUgcGVyLXN0YWdlXG4vLyBidWlsdC9taXNzaW5nIHN0YXRlLlxuLy9cbi8vIGBtb2RlbGAvYGhhbmRsZXJgIGFyZSB0aGUgY2xhc3NlcyB0aGUgZnVuY3Rpb25zIHdlcmUgcmVhZCBmcm9tIOKAlCB3aGF0IGFcbi8vIHJlYWRlciByZWNvZ25pemVzIHRoZSByb3cgYnksIHdoZXJlIGBrZXlgIGlzIHdoYXQgdGhlIHJlcG9ydCBBSSBhZGRyZXNzZXMgaXRcbi8vIGJ5IGluIGRlc2NyaWJlX2VudGl0eSAvIGNvbXBpbGVfcXVlcnkuXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljQnVpbGRFbnRpdHkge1xuICBrZXk6IHN0cmluZztcbiAgdGFibGU6IHN0cmluZztcbiAgbW9kZWw6IHN0cmluZyB8IG51bGw7XG4gIGhhbmRsZXI6IHN0cmluZyB8IG51bGw7XG4gIGNvbHVtbnM6IG51bWJlcjtcbiAgcmVsYXRpb25zaGlwczogbnVtYmVyO1xuICBlbnVtczogU2VtYW50aWNCdWlsZEVudW1bXTtcbiAgY29tcHV0ZWRGaWVsZHM6IHN0cmluZ1tdO1xuICBmdW5jdGlvbkNvdW50OiBudW1iZXI7XG4gIG1vZGVsRnVuY3Rpb25Db3VudDogbnVtYmVyO1xuICBoYW5kbGVyRnVuY3Rpb25Db3VudDogbnVtYmVyO1xuICBzdGFnZXM6IFJlY29yZDxzdHJpbmcsIFNlbWFudGljQnVpbGRTdGFnZT47XG59XG5cbi8vIE9uZSBzdGFuZGFsb25lIGNvZGUgY2xhc3MgdGhlIGJ1aWxkIHJlYWQ6IGRvbWFpbiBsb2dpYyB3aXRoIG5vIHRhYmxlIG9mIGl0c1xuLy8gb3duIChhIHN1bW1hcnkgbW9kZWwsIGEgY2FsY3VsYXRpb24gc2VydmljZSkuIFRoZSByZXBvcnQgQUkgcmVhZHMgaXRzIGNvZGVcbi8vIGV4YWN0bHkgbGlrZSBhbiBlbnRpdHkncywgYnV0IGl0IGNhbiBuZXZlciBiZSBxdWVyaWVkIOKAlCB0aGVyZSBpcyBub3RoaW5nIHRvXG4vLyBzZWxlY3QgZnJvbSDigJQgc28gaXQgY2FycmllcyBubyB0YWJsZSwgY29sdW1ucyBvciByZWxhdGlvbnNoaXBzLlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0J1aWxkQ2xhc3Mge1xuICBrZXk6IHN0cmluZztcbiAgbW9kZWw6IHN0cmluZyB8IG51bGw7XG4gIGZ1bmN0aW9uQ291bnQ6IG51bWJlcjtcbn1cblxuLy8gV2hhdCB0aGUgYnVpbGQgZGVjaWRlZCBhIHBoeXNpY2FsIHRhYmxlIGlzLiBFbnRpdHkgYW5kIGp1bmN0aW9uIGFyZSBib3RoXG4vLyByZWFjaGFibGUgYnkgdGhlIHJlcG9ydCBBSSDigJQgYW4gZW50aXR5IGRpcmVjdGx5LCBhIGp1bmN0aW9uIHRocm91Z2ggdGhlXG4vLyBtYW55LXRvLW1hbnkgaXQgYnJpZGdlcy4gRXhjbHVkZWQgaXMgbm90IHJlYWNoYWJsZSBhdCBhbGwuXG5leHBvcnQgdHlwZSBTZW1hbnRpY1RhYmxlQ2xhc3NpZmljYXRpb24gPSAnZW50aXR5JyB8ICdqdW5jdGlvbicgfCAnZXhjbHVkZWQnO1xuXG4vLyBPbmUgcGh5c2ljYWwgdGFibGUgYXMgdGhlIGJ1aWxkIGNsYXNzaWZpZWQgaXQuIGByZWFzb25gIGFuc3dlcnMgYSBzaW5nbGVcbi8vIHF1ZXN0aW9uIOKAlCB3aHkgY2FuJ3QgdGhlIHJlcG9ydCBBSSBzZWUgdGhpcyB0YWJsZT8g4oCUIGFuZCBpcyBudWxsIHdoZW4gaXQgY2FuLlxuLy8gQSBqdW5jdGlvbiB3aXRoIGEgcmVhc29uIGJyaWRnZWQgbm90aGluZywgc28gaXQgaXMganVzdCBhcyBpbnZpc2libGUgYXMgYW5cbi8vIGV4Y2x1ZGVkIHRhYmxlLlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0J1aWxkVGFibGUge1xuICB0YWJsZTogc3RyaW5nO1xuICBjbGFzc2lmaWNhdGlvbjogU2VtYW50aWNUYWJsZUNsYXNzaWZpY2F0aW9uO1xuICBtb2RlbDogc3RyaW5nIHwgbnVsbDtcbiAgcmVhc29uOiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBUaGUgYnVpbGQgc2NvcmVib2FyZCBzaGlwcGVkIGFsb25nc2lkZSB0aGUgYnVpbGQgc3RhdHVzOiB0aGUgc3VtbWFyeSBjb3VudHMsXG4vLyB0aGUgZnVsbCBicmVha2Rvd24gdGhlIHNldHRpbmdzIGRpYWxvZyBkcmlsbHMgaW50byDigJQgQk9USCBraW5kcyBvZiB1bml0IHRoZVxuLy8gYnVpbGQgY2FjaGVzLCB0YWJsZS1iYWNrZWQgZW50aXRpZXMgYW5kIHN0YW5kYWxvbmUgY29kZSBjbGFzc2VzIOKAlCBhbmQgdGhlXG4vLyBjYXRhbG9nIG9mIGV2ZXJ5IHRhYmxlIHRoZSBidWlsZCBzYXcsIHNvIHRoZSB0YWIgY2FuIHNob3cgd2hhdCB0aGUgcmVwb3J0IEFJXG4vLyBjYW4ndCBzZWUsIG5vdCBqdXN0IHdoYXQgaXQgY2FuLlxuLy9cbi8vIGBmdW5jdGlvbkNvdW50YCBzcGFucyBlbnRpdGllcyBhbmQgY2xhc3NlcyBhbGlrZTogaXQgaXMgdGhlIHNhbWUgdG90YWwgdGhlXG4vLyBidWlsZCBpdHNlbGYgcmVwb3J0cyB3aGVuIGl0IGZpbmlzaGVzLlxuLy9cbi8vIGB0YWJsZXNgIGlzIGVtcHR5IGZvciBhbiBhcnRpZmFjdCBidWlsdCBiZWZvcmUgdGhlIGNhdGFsb2cgZXhpc3RlZC4gUmVhZCB0aGF0XG4vLyBhcyBcIm5vIGNhdGFsb2dcIiwgbmV2ZXIgYXMgXCJub3RoaW5nIHdhcyBleGNsdWRlZFwiLlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0J1aWxkRGV0YWlsIHtcbiAgLy8gV2hldGhlciB0aGUgYXJ0aWZhY3Qgd2FzIHByb2R1Y2VkIGJ5IGEgYnVpbGQgdGhhdCByYW4gdG8gdGhlIGVuZC4gUmVhZCBpdFxuICAvLyBiZXNpZGUgYGdlbmVyYXRlZEF0YCwgbmV2ZXIgaW5zdGVhZCBvZiBpdDogdGhlIHN0cnVjdHVyYWwgYXJ0aWZhY3QgaXNcbiAgLy8gcHVibGlzaGVkIEJFRk9SRSB0aGUgQUkgZnVuY3Rpb24gcGFzcywgc28gYSBidWlsZCB3aG9zZSBBSSBwYXNzIGZhaWxlZCBzdGlsbFxuICAvLyBjYXJyaWVzIGEgZGF0ZSBhbmQgYSBmdWxsIHNldCBvZiBjb3VudHMuIFRoZSBkYXRlIHNheXMgc29tZXRoaW5nIHdhc1xuICAvLyB3cml0dGVuOyBvbmx5IHRoaXMgc2F5cyB0aGUgYnVpbGQgZmluaXNoZWQgd3JpdGluZyBpdC5cbiAgY29tcGxldGU6IGJvb2xlYW47XG4gIGdlbmVyYXRlZEF0OiBEYXRlIHwgbnVsbDtcbiAgZW50aXR5Q291bnQ6IG51bWJlcjtcbiAgY2xhc3NDb3VudDogbnVtYmVyO1xuICBmdW5jdGlvbkNvdW50OiBudW1iZXI7XG4gIGVudGl0aWVzOiBTZW1hbnRpY0J1aWxkRW50aXR5W107XG4gIGNsYXNzZXM6IFNlbWFudGljQnVpbGRDbGFzc1tdO1xuICB0YWJsZUNvdW50OiBudW1iZXI7XG4gIGp1bmN0aW9uQ291bnQ6IG51bWJlcjtcbiAgdW5saW5rZWRKdW5jdGlvbkNvdW50OiBudW1iZXI7XG4gIGV4Y2x1ZGVkQ291bnQ6IG51bWJlcjtcbiAgdGFibGVzOiBTZW1hbnRpY0J1aWxkVGFibGVbXTtcbn1cblxuLy8gV2hpY2ggY2xhc3MgYSBjYWNoZWQgZnVuY3Rpb24gd2FzIHJlYWQgZnJvbS4gQW4gZW50aXR5J3MgY2FjaGUgc3BsaXRzIGludG9cbi8vICdtb2RlbCcgYW5kICdoYW5kbGVyJzsgYSBzdGFuZGFsb25lIGNvZGUgY2xhc3MgaGFzIG9uZSBncm91cCwgJ2NsYXNzJy5cbmV4cG9ydCB0eXBlIFNlbWFudGljRnVuY3Rpb25Tb3VyY2UgPSAnbW9kZWwnIHwgJ2hhbmRsZXInIHwgJ2NsYXNzJztcblxuLy8gT25lIEFJLWNsYXNzaWZpZWQgY29kZSBmdW5jdGlvbiBmcm9tIGEgbW9kZWwsIGhhbmRsZXIgb3Igc3RhbmRhbG9uZSBjbGFzczpcbi8vIHdoYXQga2luZCBvZiBsb2dpYyBpdCBpcywgd2hhdCBpdCBkb2VzLCBhbmQgd2hhdCBpdCBwcm9kdWNlcyDigJQgdGhlIGJ1aWxkJ3Ncbi8vIGNhY2hlZCBcIndoYXQgdGhlIGNvZGUgZG9lc1wiIGtub3dsZWRnZSBzaG93biBpbiB0aGUgZnVuY3Rpb25zIGRpYWxvZy5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNFbnRpdHlGdW5jdGlvbiB7XG4gIGNsYXNzOiBzdHJpbmc7XG4gIG1ldGhvZDogc3RyaW5nO1xuICBzaWduYXR1cmU6IHN0cmluZztcbiAga2luZDogc3RyaW5nO1xuICBzdW1tYXJ5OiBzdHJpbmc7XG4gIHByb2R1Y2VzOiBzdHJpbmc7XG4gIHNvdXJjZTogU2VtYW50aWNGdW5jdGlvblNvdXJjZTtcbn1cblxuLy8gT25lIGVudGl0eSdzIGNhY2hlZCBjb2RlLWZ1bmN0aW9uIGtub3dsZWRnZSwgZmV0Y2hlZCB3aGVuIGEgZnVuY3Rpb25zIGRpYWxvZ1xuLy8gb3BlbnMgKHRoZSBmdWxsIHNldCBhY3Jvc3MgYWxsIGVudGl0aWVzIGlzIHRvbyBiaWcgdG8gc2hpcCB3aXRoIHRoZVxuLy8gc2NvcmVib2FyZCkuIE9uZSBwYXlsb2FkIHNlcnZlcyBib3RoIGRpYWxvZ3Mg4oCUIGNvbnN1bWVycyBmaWx0ZXIgYnkgc291cmNlLlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0VudGl0eUZ1bmN0aW9ucyB7XG4gIGVudGl0eTogc3RyaW5nO1xuICBnZW5lcmF0ZWRBdDogRGF0ZSB8IG51bGw7XG4gIG1vZGVsQ2xhc3M6IHN0cmluZyB8IG51bGw7XG4gIGhhbmRsZXJDbGFzczogc3RyaW5nIHwgbnVsbDtcbiAgZnVuY3Rpb25zOiBTZW1hbnRpY0VudGl0eUZ1bmN0aW9uW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNCdWlsZFN0YXR1cyB7XG4gIGJ1aWxkOiBTZW1hbnRpY0J1aWxkIHwgbnVsbDtcbiAgZGV0YWlsOiBTZW1hbnRpY0J1aWxkRGV0YWlsO1xufVxuXG4vLyBUaGUgcmVwb3J0IG1vZHVsZSdzIEdlbmVyYWwgc2V0dGluZ3MgKGEgc21hbGwgZ2xvYmFsIGtleS92YWx1ZSBzdG9yZSwgdGhlXG4vLyByZXBvcnRpbmcgY291bnRlcnBhcnQgb2YgdGhlIGFwcC13aWRlIHNldHRpbmdzKS4gRWFjaCB2YWx1ZSBzaGlwcyB3aXRoIHRoZVxuLy8gc2FmZSBiYW5kIGl0cyBlZGl0b3IgZmllbGQgaXMgYm91bmRlZCB0by5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0U2V0dGluZ3Mge1xuICAvLyBIb3cgbWFueSBzdW1tYXJ5IGNhbGxzIHRoZSBzZW1hbnRpYyBidWlsZCBydW5zIGF0IG9uY2UuXG4gIHNlbWFudGljQnVpbGRDb25jdXJyZW5jeTogbnVtYmVyO1xuICBzZW1hbnRpY0J1aWxkQ29uY3VycmVuY3lNaW46IG51bWJlcjtcbiAgc2VtYW50aWNCdWlsZENvbmN1cnJlbmN5TWF4OiBudW1iZXI7XG59XG4iXX0=
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy9pbnRlcmZhY2VzL3JlcG9ydC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkVBQTZFO0FBQzdFLG1FQUFtRTtBQUNuRSwrRUFBK0U7QUFDL0UsNEVBQTRFO0FBQzVFLG1DQUFtQztBQWlTbkMsNEVBQTRFO0FBQzVFLDJFQUEyRTtBQUMzRSx1REFBdUQ7QUFDdkQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQWdEO0lBQzlFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO0lBQzdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQy9CLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO0lBQ2pDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQ3JDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO0NBQ3BDLENBQUM7QUF5ckJGLE1BQU0sQ0FBTixJQUFZLGNBR1g7QUFIRCxXQUFZLGNBQWM7SUFDeEIsbUNBQWlCLENBQUE7SUFDakIsbUNBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUhXLGNBQWMsS0FBZCxjQUFjLFFBR3pCO0FBdUJELGdGQUFnRjtBQUNoRixpRkFBaUY7QUFDakYsNkVBQTZFO0FBQzdFLDBFQUEwRTtBQUMxRSxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLGdDQUFpQixDQUFBO0lBQ2pCLGtDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoZSBhc3NlbWJsZWQgcmVwb3J0IHN0cnVjdHVyZSByZXR1cm5lZCBieSBHRVQgL2FwaS9yZXBvcnRzLzppZCDigJQgY29tcG9zZWRcbi8vIHNlcnZlci1zaWRlIGZyb20gdGhlIG5vcm1hbGl6ZWQgdGFibGVzIChyZXBvcnRzIOKGkiByZXBvcnRfcGFnZXMg4oaSXG4vLyByZXBvcnRfY29tcG9uZW50cyArIHJlcG9ydF9maWx0ZXJzLCBwbHVzIHJlcG9ydF9maWx0ZXJfZ3JvdXBzKS4gQWxsIGtleXMgYXJlXG4vLyBjYW1lbENhc2U7IGNvbXBvbmVudCBgY29uZmlnYCBpcyB0aGUgc3RhbmRhcmQgZm9ybWF0IHRoZSByZW5kZXJlciBtYXBzIHRvXG4vLyBFQ2hhcnRzIG9wdGlvbnMgLyBGc0xpc3QgY29uZmlnLlxuXG5pbXBvcnQgeyBSZXBvcnRDaGFuZ2VQb2xhcml0eSB9IGZyb20gJy4uL2VudW1zL3JlcG9ydC1jaGFuZ2UtcG9sYXJpdHkuZW51bSc7XG5pbXBvcnQgeyBSZXBvcnRDaGFydENvbG9yIH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYXJ0LWNvbG9yLmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0Q2hhcnREYXRhTGFiZWxzIH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYXJ0LWRhdGEtbGFiZWxzLmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0Q2hhcnREYXRlTGFiZWwgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtY2hhcnQtZGF0ZS1sYWJlbC5lbnVtJztcbmltcG9ydCB7IFJlcG9ydENoYXJ0TGluZVN0eWxlIH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYXJ0LWxpbmUtc3R5bGUuZW51bSc7XG5pbXBvcnQgeyBSZXBvcnRDaGFydE1hcmtTdGF0IH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYXJ0LW1hcmstc3RhdC5lbnVtJztcbmltcG9ydCB7IFJlcG9ydExpc3RDb2x1bW5Gb3JtYXQgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtbGlzdC1jb2x1bW4tZm9ybWF0LmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0TnVtYmVyVW5pdHMgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtbnVtYmVyLXVuaXRzLmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0VmFsdWVGb3JtYXQgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtdmFsdWUtZm9ybWF0LmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0VmFsdWVGb3JtdWxhIH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LXZhbHVlLWZvcm11bGEuZW51bSc7XG5cbi8vIEEgQkNQIDQ3IGxhbmd1YWdlIHRhZyBuYW1pbmcgaG93IG51bWJlcnMgYW5kIGRhdGVzIGFyZSB3cml0dGVuLCBlLmcuICdmci1DQScuXG4vLyBUaGUgc2V0IGlzIG9wZW4gKHRoZSBzZXJ2ZXIncyBwcm92aWRlciBkZWNpZGVzIHdoaWNoIGl0IG9mZmVycyksIHNvIHRoaXMgaXMgYVxuLy8gbmFtZWQgYWxpYXMgcmF0aGVyIHRoYW4gYSB1bmlvbi5cbmV4cG9ydCB0eXBlIFJlcG9ydExvY2FsZVRhZyA9IHN0cmluZztcblxuLy8gQW4gSVNPIDQyMTcgY3VycmVuY3kgY29kZSwgZS5nLiAnQ0FEJy4gT3BlbiBmb3IgdGhlIHNhbWUgcmVhc29uLlxuZXhwb3J0IHR5cGUgUmVwb3J0Q3VycmVuY3lDb2RlID0gc3RyaW5nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydCB7XG4gIGlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgLy8gVGhlIHJlcG9ydCdzIG93biBzdG9yZWQgSUFOQSB6b25lIChlLmcuIEFtZXJpY2EvTmV3X1lvcmspLiBudWxsID0gdGhlXG4gIC8vIHJlcG9ydCBmb2xsb3dzIHRoZSBhcHBsaWNhdGlvbidzIGRlZmF1bHQgcmVwb3J0aW5nIHpvbmUuXG4gIHRpbWV6b25lOiBzdHJpbmcgfCBudWxsO1xuICAvLyBUaGUgem9uZSBldmVyeSBkYXRlIGZpbHRlciwgdGltZSBidWNrZXQgYW5kIGRhdGUgY2VsbCBvZiB0aGlzIHJlcG9ydCB1c2VzLlxuICAvLyBSZXNvbHZlZCBzZXJ2ZXItc2lkZTsgdGhlIHNhbWUgZm9yIGV2ZXJ5IHZpZXdlciwgZXhwb3J0IGFuZCB0aGUgYXNzaXN0YW50LlxuICAvLyBPcHRpb25hbCBvbmx5IGJlY2F1c2Ugb2xkZXIgc2VydmVycyBvbWl0IGl0OyByZXNvbHZlUmVwb3J0VGltZXpvbmUoKSB0aGVuXG4gIC8vIGZhbGxzIGJhY2sgdG8gdGhlIHJlcG9ydCdzIG93biBgdGltZXpvbmVgLCB0aGVuIHRoZSBicm93c2VyJ3Mgem9uZS4gUmVzb2x2ZVxuICAvLyB0aGUgem9uZSBmb3IgcmVuZGVyaW5nIHRocm91Z2ggcmVzb2x2ZVJlcG9ydFRpbWV6b25lKCkgKGZvcm1hdC50cyk7IHJlYWQgdGhlXG4gIC8vIGZpZWxkIGRpcmVjdGx5IG9ubHkgdG8gY2hlY2sgd2hldGhlciB0aGUgc2VydmVyIHNlbnQgaXQuXG4gIGVmZmVjdGl2ZVRpbWV6b25lPzogc3RyaW5nO1xuICAvLyBUaGUgcmVwb3J0J3Mgb3duIHN0b3JlZCBsb2NhbGUuIG51bGwgPSB0aGUgcmVwb3J0IGZvbGxvd3MgdGhlIGRlZmF1bHQuXG4gIGxvY2FsZT86IFJlcG9ydExvY2FsZVRhZyB8IG51bGw7XG4gIC8vIFRoZSBsb2NhbGUgZXZlcnkgbnVtYmVyIGFuZCBkYXRlIG9mIHRoaXMgcmVwb3J0IGlzIHdyaXR0ZW4gaW4sIHJlc29sdmVkXG4gIC8vIHNlcnZlci1zaWRlICh0aGUgcmVwb3J0J3Mgb3duLCBlbHNlIHRoZSBhcHBsaWNhdGlvbidzIGRlZmF1bHQsIGVsc2VcbiAgLy8gZW4tVVMpLiBBYnNlbnQgb24gb2xkZXIgc2VydmVycywgd2hvc2UgcmVwb3J0cyB0aGVuIHJlYWQgZW4tVVMuIFJlc29sdmUgaXRcbiAgLy8gZm9yIHJlbmRlcmluZyB0aHJvdWdoIHJlc29sdmVGb3JtYXRDb250ZXh0KCkgKGZvcm1hdC50cyksIG5ldmVyIGRpcmVjdGx5LlxuICBlZmZlY3RpdmVMb2NhbGU/OiBSZXBvcnRMb2NhbGVUYWc7XG4gIC8vIFRoZSByZXBvcnQncyBvd24gc3RvcmVkIGN1cnJlbmN5LiBudWxsID0gdGhlIHJlcG9ydCBmb2xsb3dzIHRoZSBkZWZhdWx0LlxuICBjdXJyZW5jeT86IFJlcG9ydEN1cnJlbmN5Q29kZSB8IG51bGw7XG4gIC8vIFRoZSBjdXJyZW5jeSBtb25leSBhbW91bnRzIGFyZSBsYWJlbGVkIGluLCByZXNvbHZlZCBsaWtlIGVmZmVjdGl2ZUxvY2FsZVxuICAvLyAoZmFsbGluZyBiYWNrIHRvIHRoZSBsb2NhbGUncyBvd24gY3VycmVuY3ksIHRoZW4gVVNEKS4gQSBsYWJlbCBvbmx5OlxuICAvLyBhbW91bnRzIGFyZSBuZXZlciBjb252ZXJ0ZWQuXG4gIGVmZmVjdGl2ZUN1cnJlbmN5PzogUmVwb3J0Q3VycmVuY3lDb2RlO1xuICAvLyBIb3cgdGhlIHNlcnZlciBzZW5kcyBhIHBlcmNlbnQgbWVhc3VyZTogJ3JhdGlvJyA9IGEgMC0xIHJhdGlvICgwLjM4NSByZWFkc1xuICAvLyAzOC41JSkuIEFic2VudCBvbiBvbGRlciBzZXJ2ZXJzLCB3aG9zZSBwZXJjZW50IHZhbHVlcyBhcmUgYWxyZWFkeSB4MTAwXG4gIC8vICgzOC41IHJlYWRzIDM4LjUlKS5cbiAgcGVyY2VudEZvcm1hdD86ICdyYXRpbyc7XG4gIC8vIFJlcG9ydC1sZXZlbCBjb25maWc6IHR5cG9ncmFwaGljIHN0eWxlcywgZXRjLiAoY2FtZWxDYXNlIEpTT04gY29sdW1uKS5cbiAgY29uZmlnOiBSZXBvcnRDb25maWc7XG4gIC8vIFRoZSBwYWdlIGluIElOQ0hFUyAodGhlIHJlcG9ydCdzIG5hdGl2ZSB1bml0IOKAlCBQREZzIGFuZCBQb3dlclBvaW50IGFyZVxuICAvLyBpbmNoLWJhc2VkLCBzbyBleHBvcnRzIGFyZSBkaW1lbnNpb25hbGx5IGV4YWN0KS4gT3JpZW50YXRpb24gaXMgbm90IGEgZmllbGRcbiAgLy8gb2YgaXRzIG93bjogYSBwYWdlIHdpZGVyIHRoYW4gaXQgaXMgdGFsbCBJUyBsYW5kc2NhcGUuXG4gIHBhZ2VXaWR0aDogbnVtYmVyO1xuICBwYWdlSGVpZ2h0OiBudW1iZXI7XG4gIHBhZ2VzOiBSZXBvcnRQYWdlW107XG4gIC8vIFRoZSBoZWFkZXIgYW5kIGZvb3RlcjogdGhlIHJlcG9ydCdzIG1hc3RlciBwYWdlLCB3aG9zZSBjb21wb25lbnRzIGRyYXdcbiAgLy8gdW5kZXIgZXZlcnkgcGFnZSB0aGF0IGRvZXMgbm90IGhpZGUgdGhlbSAoUG93ZXJQb2ludCdzIHNsaWRlIG1hc3RlcikuIE51bGxcbiAgLy8gdW50aWwgYW55dGhpbmcgaGFzIGJlZW4gcGxhY2VkIGluIHRoZW0uXG4gIG1hc3RlcjogUmVwb3J0TWFzdGVyIHwgbnVsbDtcbiAgZmlsdGVyR3JvdXBzOiBSZXBvcnRGaWx0ZXJHcm91cFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydE1hc3RlciB7XG4gIGlkOiBudW1iZXI7XG4gIGNvbXBvbmVudHM6IFJlcG9ydENvbXBvbmVudFtdO1xuICAvLyBUaGUgdmFsdWVzIHRoZSBoZWFkZXIgYW5kIGZvb3RlciB0ZXh0IHNob3dzLCBhcyBSZXBvcnRQYWdlLnZhbHVlcy5cbiAgdmFsdWVzPzogUmVwb3J0Q29tcG9uZW50W107XG59XG5cbi8vIEhvdyB0aGUgb3BlbiByZXBvcnQgd3JpdGVzIGl0cyBudW1iZXJzIGFuZCBkYXRlcywgcmVzb2x2ZWQgb25jZSBwZXIgcmVwb3J0XG4vLyAocmVzb2x2ZUZvcm1hdENvbnRleHQpIGFuZCByZWFkIGJ5IHRoZSB2aWV3ZXIsIHRoZSBQREYgYW5kIFBvd2VyUG9pbnQgYWxpa2UuXG4vLyBOZXZlciB0aGUgYnJvd3NlcidzIGxvY2FsZS5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Rm9ybWF0Q29udGV4dCB7XG4gIGxvY2FsZTogUmVwb3J0TG9jYWxlVGFnO1xuICBjdXJyZW5jeTogUmVwb3J0Q3VycmVuY3lDb2RlO1xuICAvLyBXaGV0aGVyIGEgcGVyY2VudCBtZWFzdXJlIGFycml2ZXMgYXMgYSAwLTEgcmF0aW8gKHRoZSByZXBvcnQnc1xuICAvLyBwZXJjZW50Rm9ybWF0KS4gQW4gb2xkZXIgc2VydmVyIHNlbmRzIGl0IGFscmVhZHkgeDEwMC5cbiAgcmF0aW9QZXJjZW50OiBib29sZWFuO1xufVxuXG4vLyBPbmUgbG9jYWxlIHRoZSBzZXJ2ZXIgb2ZmZXJzLCB3aXRoIHRoZSBjdXJyZW5jeSBhIHJlcG9ydCBpbiBpdCB1c2VzIHdoZW4gaXRcbi8vIG5hbWVzIG5vbmUgb2YgaXRzIG93bi5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0TG9jYWxlT3B0aW9uIHtcbiAgbG9jYWxlOiBSZXBvcnRMb2NhbGVUYWc7XG4gIGRlZmF1bHRDdXJyZW5jeTogUmVwb3J0Q3VycmVuY3lDb2RlO1xufVxuXG4vLyBHRVQgcmVwb3J0cy9sb2NhbGVzOiB3aGF0IHRoZSByZXBvcnQgc2V0dGluZ3MnIExvY2FsZSBhbmQgQ3VycmVuY3kgc2VsZWN0c1xuLy8gb2ZmZXIuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydExvY2FsZXMge1xuICBkZWZhdWx0TG9jYWxlOiBSZXBvcnRMb2NhbGVUYWc7XG4gIG9wdGlvbnM6IFJlcG9ydExvY2FsZU9wdGlvbltdO1xuICBjdXJyZW5jaWVzOiBSZXBvcnRDdXJyZW5jeUNvZGVbXTtcbn1cblxuLy8gVGhlIGRlcHRoIG9mIHRoZSBoZWFkZXIgYmFuZCAodG9wIG9mIGV2ZXJ5IHBhZ2UpIGFuZCB0aGUgZm9vdGVyIGJhbmQgKGJvdHRvbVxuLy8gb2YgZXZlcnkgcGFnZSksIGluIElOQ0hFUy4gVGhlIGJhbmRzIGhvbGQgbm8gY29udGVudCBvZiB0aGVpciBvd24g4oCUIHRoZVxuLy8gbWFzdGVyJ3MgY29tcG9uZW50cyBzaXQgaW4gdGhlbSDigJQgdGhleSBhcmUgdGhlIHJlc2VydmVkIG1hcmdpbnMgdGhlIGVkaXRvclxuLy8gZHJhd3MgYXMgZ3VpZGVzIGFuZCBzbmFwcyB0by4gQWx3YXlzIGFycml2ZXMgcmVzb2x2ZWQgKDAgPSBubyBiYW5kKS5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0SGVhZGVyRm9vdGVyIHtcbiAgaGVhZGVySGVpZ2h0OiBudW1iZXI7XG4gIGZvb3RlckhlaWdodDogbnVtYmVyO1xufVxuXG4vLyBSZXBvcnQtbGV2ZWwgc3R5bGluZy4gU2l6ZXMgYXJlIGluIFBPSU5UUyAoMS83MlwiKSDigJQgdGhlIHJlcG9ydCdzIHR5cG9ncmFwaHlcbi8vIG1hcHMgMToxIHRvIFBERiAoNzJwdC9pbikgYW5kIFBvd2VyUG9pbnQgKHBvaW50IGZvbnQgc2l6ZXMpLCBzbyBhIHBvaW50XG4vLyB2YWx1ZSBpcyBkaW1lbnNpb25hbGx5IGV4YWN0IG9uIHNjcmVlbiBhbmQgaW4gZXZlcnkgZXhwb3J0LlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRDb25maWcge1xuICBzdHlsZXM/OiBSZXBvcnRTdHlsZXM7XG4gIC8vIFRoZSByZXBvcnQncyBncm91cC1ieSBjb250cm9sLiBPcHRpb25hbCBvbiB0aGUgdHlwZSBiZWNhdXNlIGEgUmVwb3J0Q29uZmlnXG4gIC8vIGxpdGVyYWwgbmVlZCBub3QgY2FycnkgaXQ7IHRoZSBBUEkgYWx3YXlzIHNlbmRzIGl0LCByZXNvbHZlZC5cbiAgZ3JvdXBCeT86IFJlcG9ydEdyb3VwQnk7XG4gIC8vIFJlc29sdmVkIGJ5IHRoZSBBUEkgbGlrZSBncm91cEJ5LlxuICBoZWFkZXJGb290ZXI/OiBSZXBvcnRIZWFkZXJGb290ZXI7XG59XG5cbi8vIFRoZSByZXBvcnQncyBncm91cC1ieSBjb250cm9sIOKAlCB0aGUgb25lIHN3aXRjaCB0aGF0IHJlLWJ1Y2tldHMgZXZlcnlcbi8vIHRpbWUtc2VyaWVzIGNoYXJ0IG9uIHRoZSByZXBvcnQgYmV0d2VlbiBkYXksIHdlZWssIG1vbnRoLCBxdWFydGVyIGFuZCB5ZWFyLlxuLy9cbi8vIEl0IGlzIE5PVCBhIGZpbHRlcjogYSBmaWx0ZXIgbmFycm93cyB3aGljaCByb3dzIGFyZSBjb3VudGVkLCB0aGlzIGNoYW5nZXMgaG93XG4vLyB0aGUgc3Vydml2aW5nIHJvd3MgYXJlIGJ1Y2tldGVkLiBJdCBzaGFyZXMgdGhlIHJlcG9ydCdzIGZpbHRlciBiYXIgYmVjYXVzZVxuLy8gdGhhdCBpcyB0aGUgb25lIHJvdyBvZiBjb250cm9scyBhIHZpZXdlciByZWFkcyBhIHJlcG9ydCB0aHJvdWdoIOKAlCB0aGVcbi8vIHNlcGFyYXRpb24gdGhhdCBtYXR0ZXJzIGlzIGluIHRoZSBtb2RlbCwgbm90IGluIHdoZXJlIHRoZSBjb250cm9sIGlzIHBhaW50ZWQuXG4vL1xuLy8gQWx3YXlzIGFycml2ZXMgUkVTT0xWRUQgKHRoZSBiYWNrZW5kIGZpbGxzIGFuIGFic2VudCBvciBwYXJ0aWFsIHN0b3JlZCBibG9ja1xuLy8gaW4gZnJvbSBpdHMgb3duIGRlZmF1bHRzKSwgc28gdGhlcmUgaXMgbm90aGluZyB0byBkZWZhdWx0IGhlcmUg4oCUIHJlbmRlciB3aGF0XG4vLyB5b3UgYXJlIGdpdmVuLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRHcm91cEJ5IHtcbiAgZW5hYmxlZDogYm9vbGVhbjtcbiAgbGFiZWw6IHN0cmluZztcbiAgZ3JhbnVsYXJpdGllczogQ2hhcnRHcmFudWxhcml0eVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFN0eWxlcyB7XG4gIGhlYWRpbmc/OiB7IHNpemU/OiBudW1iZXIgfTtcbn1cblxuLy8gQ29udGVudCBwYWRkaW5nIGFyb3VuZCBhIGNvbXBvbmVudCdzIGJvZHksIGluIElOQ0hFUyAodGhlIGdlb21ldHJ5IHVuaXQpLlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRQYWRkaW5nIHtcbiAgdG9wPzogbnVtYmVyO1xuICByaWdodD86IG51bWJlcjtcbiAgYm90dG9tPzogbnVtYmVyO1xuICBsZWZ0PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFBhZ2Uge1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmcgfCBudWxsO1xuICBvcmRlcjogbnVtYmVyO1xuICAvLyBUaGUgcGFnZSBvcHRzIG91dCBvZiB0aGUgcmVwb3J0J3MgaGVhZGVyIGFuZCBmb290ZXIgKGEgdGl0bGUgcGFnZSkuXG4gIG1hc3RlckhpZGRlbjogYm9vbGVhbjtcbiAgY29tcG9uZW50czogUmVwb3J0Q29tcG9uZW50W107XG4gIC8vIEV2ZXJ5IGFjdGl2ZSB2YWx1ZSBvZiB0aGUgcGFnZSwgaW4gaWQgb3JkZXI6IHRob3NlIGl0cyB0ZXh0IHNob3dzIGFuZFxuICAvLyB0aG9zZSBubyB0ZXh0IHNob3dzIGFueSBtb3JlIChrZXB0IHVudGlsIGEgdGV4dCwgdmFsdWUgb3IgcGFnZSBkZWxldGUsIHNvXG4gIC8vIGEgY2hpcCBwYXN0ZWQgYmFjayBzdGlsbCBuYW1lcyBvbmUpLiBOZXZlciBkcmF3biwgYW5kIG5ldmVyIGluXG4gIC8vIGBjb21wb25lbnRzYC4gT3B0aW9uYWwgYmVjYXVzZSBvbGRlciBzZXJ2ZXJzIG9taXQgaXQuXG4gIHZhbHVlcz86IFJlcG9ydENvbXBvbmVudFtdO1xufVxuXG4vLyAndGV4dCcgaXMgYXV0aG9yZWQgcmljaCB0ZXh0IHdpdGggbm8gcXVlcnkgYmVoaW5kIGl0IOKAlCBpdCBuZXZlciBmZXRjaGVzIGRhdGEuXG4vLyAndmFsdWUnIGlzIG9uZSBudW1iZXIgc2hvd24gaW5zaWRlIGEgdGV4dCBibG9jaydzIHdvcmRzICh7e3ZhbHVlLmtleX19KTsgaXRcbi8vIGhhcyBhIHF1ZXJ5IGJ1dCBubyBwbGFjZSBvZiBpdHMgb3duIG9uIHRoZSBwYWdlLlxuZXhwb3J0IHR5cGUgUmVwb3J0Q29tcG9uZW50VHlwZSA9ICdjaGFydCcgfCAnbGlzdCcgfCAna3BpJyB8ICd0ZXh0JyB8ICd2YWx1ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Q29tcG9uZW50IHtcbiAgaWQ6IG51bWJlcjtcbiAgdHlwZTogUmVwb3J0Q29tcG9uZW50VHlwZTtcbiAgdGl0bGU6IHN0cmluZyB8IG51bGw7XG4gIC8vIEdlb21ldHJ5IGluIElOQ0hFUzogYWJzb2x1dGUgcG9zaXRpb24gb24gdGhlIHBhZ2UgY2FudmFzLlxuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbiAgdzogbnVtYmVyO1xuICBoOiBudW1iZXI7XG4gIC8vIEhlaWdodCBtb2RlLCBERVJJVkVEIGZyb20gdHlwZSBzZXJ2ZXItc2lkZSAobm90IHN0b3JlZCwgcmVhZC1vbmx5KTogbGlzdHNcbiAgLy8gYW5kIEtQSSB0aWxlcyBhcmUgYXV0byAodGhlIGJveCBzaXplcyB0byBpdHMgY29udGVudCwgYGhgIGlnbm9yZWQpOyBjaGFydHNcbiAgLy8gYXJlIGFsd2F5cyBmaXhlZCAodXNlIGBoYCkgc28gdGhleSBmaXQgdGhlIGJveCBhbmQgbmV2ZXIgb3ZlcmZsb3cuXG4gIGF1dG9IZWlnaHQ6IGJvb2xlYW47XG4gIC8vIFRoZSBzdG9yZWQgU1FMIG9mIGEgbGVnYWN5IHNxbC1tb2RlIGNvbXBvbmVudC4gTlVMTCBmb3IgYSBkZXJpdmVkIG9uZSxcbiAgLy8gd2hvc2Ugc3RhdGVtZW50IGRvZXMgbm90IGV4aXN0IHVudGlsIGl0cyBkb2N1bWVudCBpcyBjb21waWxlZCDigJQgdGhlIFNRTCB0YWJcbiAgLy8gZmV0Y2hlcyB0aGF0IHNlcGFyYXRlbHkgKHNlZSBSZXBvcnRDb21wb25lbnRTcWwpLlxuICBzcWw6IHN0cmluZyB8IG51bGw7XG4gIGNvbmZpZzogQ2hhcnRDb25maWcgJiBMaXN0Q29uZmlnICYgS3BpQ29uZmlnICYgVGV4dENvbmZpZyAmIFZhbHVlQ29uZmlnICYgQ29tcG9uZW50TGF5b3V0Q29uZmlnXG4gICAgJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgZmlsdGVyczogUmVwb3J0RmlsdGVyW107XG59XG5cbi8vIFdoYXQgdGhlIFNRTCB0YWIgZmV0Y2hlczogdGhlIHN0YXRlbWVudCBhIGNvbXBvbmVudCBydW5zLlxuLy9cbi8vIEZvciBhIGRlcml2ZWQgY29tcG9uZW50IGBiYXNlbGluZWAgaXMgdHJ1ZSBhbmQgYHNxbGAgaXMgd2hhdCBpdHMgZG9jdW1lbnRcbi8vIGNvbXBpbGVzIHRvIHdpdGggTk8gdmlld2VyIHN0YXRlIOKAlCBubyBmaWx0ZXJzLCB0aGUgYXV0aG9yZWQgZ3JhaW4uIFRoZVxuLy8gbnVtYmVycyBvbiBzY3JlZW4gY29tZSBmcm9tIHRoYXQgc3RhdGVtZW50IHBsdXMgd2hhdGV2ZXIgdGhlIHZpZXdlciBwaWNrZWQsXG4vLyBzbyB0aGUgdHdvIGNhbiBsZWdpdGltYXRlbHkgZGlmZmVyIGFuZCB0aGUgdGFiIHNheXMgc28gcmF0aGVyIHRoYW4gaW1wbHlpbmdcbi8vIHRoZXkgbWF0Y2guXG4vL1xuLy8gYHRpbWV6b25lYCBpcyB0aGUgSUFOQSB6b25lIHRoZSBzdGF0ZW1lbnQgd2FzIGNvbXBpbGVkIGluOiB0aGUgcmVwb3J0J3Ncbi8vIGVmZmVjdGl2ZSB6b25lLiBPcHRpb25hbCBiZWNhdXNlIG9sZGVyIHNlcnZlcnMgb21pdCBpdDsgdGhleSBjb21waWxlZCBpbiBVVEMuXG4vL1xuLy8gYGVycm9yYCBpcyBub3QgYSBmYWlsdXJlIG9mIHRoZSByZXF1ZXN0OiBhIGRvY3VtZW50IHRoYXQgbm8gbG9uZ2VyIGNvbXBpbGVzXG4vLyBpcyBwcmVjaXNlbHkgd2hhdCBzb21lb25lIG9wZW5zIHRoaXMgdGFiIHRvIGRpc2NvdmVyLCBzbyBpdCBhcnJpdmVzIGFzIGFcbi8vIG1lc3NhZ2UgdG8gcmVuZGVyIHdpdGggYGVycm9yVHlwZWAgbmFtaW5nIHdoaWNoIGtpbmQgKCdzdGFsZS1xdWVyeScgb3Jcbi8vICdzZW5zaXRpdmUtY29sdW1uJyksIGFuZCBgc3FsYCBudWxsLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRDb21wb25lbnRTcWwge1xuICBzcWw6IHN0cmluZyB8IG51bGw7XG4gIG9yaWdpbjogJ3NxbCcgfCAnZGJxJyB8ICdkZXJpdmVkJztcbiAgYmFzZWxpbmU6IGJvb2xlYW47XG4gIHRpbWV6b25lPzogc3RyaW5nO1xuICBlcnJvcjogc3RyaW5nIHwgbnVsbDtcbiAgZXJyb3JUeXBlOiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBBIHRleHQgYmxvY2sncyBjb250ZW50OiBhbiBodG1sIGZyYWdtZW50IHRoZSBzZXJ2ZXIgaGFzIGFscmVhZHkgcmVidWlsdCBmcm9tXG4vLyBhbiBhbGxvd2xpc3QsIHdoaWNoIG1heSBjYXJyeSB7e3BhZ2UubnVtYmVyfX0sIHt7cGFnZS5uYW1lfX0gYW5kXG4vLyB7e3JlcG9ydC5uYW1lfX0gdG9rZW5zIChzZWUgdGV4dC50cykuXG5leHBvcnQgaW50ZXJmYWNlIFRleHRDb25maWcge1xuICBodG1sPzogc3RyaW5nO1xufVxuXG4vLyBBIHZhbHVlJ3Mga2V5OiB3aGF0IGl0cyB0b2tlbiBpbiBhIHRleHQgYmxvY2sncyBodG1sIG5hbWVzLCB1bmlxdWUgd2l0aGluXG4vLyB0aGUgcGFnZS4gSXRzIG51bWJlciBpcyBmb3JtYXR0ZWQgYnkgY29uZmlnLm1lYXN1cmUgKEtwaUNvbmZpZyksIGFzIG9uIGEgS1BJLlxuLy8gQSBmb3JtdWxhIHZhbHVlIGhhcyBubyBxdWVyeTogYGZvcm11bGFgIG5hbWVzIHdoYXQgaXQgd29ya3Mgb3V0IG9mIHRoZVxuLy8gcGFnZSdzIHF1ZXJ5IHZhbHVlcywgYW5kIGl0cyBtZWFzdXJlIGhvbGRzIG9ubHkgdGhlIGZvcm1hdCBrZXlzIGl0cyBhdXRob3Jcbi8vIGdhdmUgKGZvcm1hdCwgcHJlY2lzaW9uLCB1bml0cykuXG5leHBvcnQgaW50ZXJmYWNlIFZhbHVlQ29uZmlnIHtcbiAga2V5Pzogc3RyaW5nO1xuICBmb3JtdWxhPzogVmFsdWVGb3JtdWxhQ29uZmlnIHwgbnVsbDtcbn1cblxuLy8gQSBmb3JtdWxhIHZhbHVlJ3Mgb3BlcmF0aW9uIGFuZCBvcGVyYW5kczogYG9mYCBuYW1lcyBxdWVyeSB2YWx1ZXMgb24gdGhlXG4vLyBzYW1lIHBhZ2UgKHRoZSBtYXN0ZXIgZm9yIGEgaGVhZGVyIG9yIGZvb3RlcikgYnkga2V5LCAyIG9mIHRoZW0sIG9yIDIgdG8gMTBcbi8vIGZvciBhIHN1bS4gYHNpZ25lZGAgYWJzZW50IHJlYWRzIHRydWUgZm9yIGEgY2hhbmdlIGFuZCBhIHBlcmNlbnQgY2hhbmdlLFxuLy8gZmFsc2UgZm9yIGEgcmF0aW8gYW5kIGEgc3VtLlxuZXhwb3J0IGludGVyZmFjZSBWYWx1ZUZvcm11bGFDb25maWcge1xuICBvcDogUmVwb3J0VmFsdWVGb3JtdWxhO1xuICBvZjogc3RyaW5nW107XG4gIHNpZ25lZD86IGJvb2xlYW4gfCBudWxsO1xufVxuXG4vLyBPbmUgcm93IG9mIFBPU1QgcGFnZXMvOmlkL3ZhbHVlczogYSB2YWx1ZSdzIG51bWJlciBmb3IgdGhlIGZpbHRlcnMgc2VudC5cbi8vIFRoZXJlIGlzIG9uZSByb3cgcGVyIHZhbHVlIHRoZSBsYXllciByZWFkcywgaW4gaWQgb3JkZXI6IG9uZSBzb21lIHRleHQgb25cbi8vIHRoYXQgcGFnZSBzaG93cywgb3IgYW4gb3BlcmFuZCBvZiBhIGZvcm11bGEgc29tZSB0ZXh0IHNob3dzLiBgdmFsdWVgIGlzXG4vLyByYXcsIGFzIHRoZSBxdWVyeSByZXR1cm5lZCBpdCBvciB0aGUgc2VydmVyIHdvcmtlZCBpdCBvdXQgKG51bGwgd2hlbiB0aGVyZVxuLy8gaXMgbm8gcm93IG9yIHRoZSByZXN1bHQgaXMgbnVsbCk7IGZvcm1hdHRpbmcgaXMgdGhlIHZpZXdlcidzLCB0aHJvdWdoIHRoZVxuLy8gdmFsdWUncyBtZWFzdXJlLiBgZXJyb3JgIGlzIHRoYXQgdmFsdWUncyBvd24gZmFpbHVyZSwgYW5kIHRoZSBwYWdlJ3Mgb3RoZXJcbi8vIHZhbHVlcyBhcmUgcmVhZCByZWdhcmRsZXNzLlxuLy8gYHJvbGVgIGlzIHRoZSBjb21wYXJpc29uIHJvbGUgdGhlIG51bWJlciBwbGF5czogYSBxdWVyeSB2YWx1ZSdzIGNvbXBhcmlzb25cbi8vIG91dHB1dCdzLCBjaGFuZ2Ugb3IgcGVyY2VudF9jaGFuZ2UgZm9yIHRob3NlIGZvcm11bGFzLCBlbHNlIG51bGwuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFBhZ2VWYWx1ZSB7XG4gIGlkOiBudW1iZXI7XG4gIGtleTogc3RyaW5nO1xuICB2YWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbDtcbiAgZXJyb3I6IHN0cmluZyB8IG51bGw7XG4gIHJvbGU/OiBPdXRwdXRSb2xlIHwgbnVsbDtcbn1cblxuLy8gQ3Jvc3MtdHlwZSBsYXlvdXQvc3R5bGUga2V5cyBjYXJyaWVkIGluIGEgY29tcG9uZW50J3MgY29uZmlnIChhbG9uZ3NpZGUgdGhlXG4vLyB0eXBlLXNwZWNpZmljIGNoYXJ0L2xpc3Qva3BpIGtleXMpLlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRMYXlvdXRDb25maWcge1xuICBwYWRkaW5nPzogQ29tcG9uZW50UGFkZGluZztcbn1cblxuLy8gVGhlIHByZXNlbnRhdGlvbiBzZXR0aW5ncyBhIGNvbXBvbmVudCdzIHNldHRpbmdzIGRpYWxvZyBlZGl0cy4gVGl0bGUgYW5kXG4vLyBwYWRkaW5nIGFyZSBub3QgcGFydCBvZiB3aGF0IHRoZSBjb21wb25lbnQgcXVlcmllcywgc28gYSBjaGFuZ2UgdG8gdGhlbVxuLy8gcmVwYWludHMgd2l0aG91dCByZS1ydW5uaW5nIGFueXRoaW5nLiBBIGRlcml2ZWQgS1BJJ3MgY2FyZCBrZXlzIGFyZSBzZW50XG4vLyB0b286IHRoZSBzZXJ2ZXIgY29tcHV0ZXMgdGhlIHRhcmdldCdzIHByb2dyZXNzIGFuZCB0aGUgc3BhcmtsaW5lJ3MgcG9pbnRzXG4vLyB3aXRoIHRoZSBkYXRhLCBzbyBhIGNoYW5nZSB0byB0aGVtIHJlbG9hZHMgaXQuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudFNldHRpbmdzIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgcGFkZGluZzogQ29tcG9uZW50UGFkZGluZztcbiAga3BpPzogS3BpQ2FyZFNldHRpbmdzO1xufVxuXG4vLyBBIEtQSSdzIGNhcmQga2V5cy4gVGhlIGRpYWxvZyBzZW5kcyB0aGVtIChudWxsIHJlbW92ZXMgYSBrZXksIGluY3JlYXNlSXNcbi8vIG51bGwgcmVhZHMgZ29vZCksIGFuZCBDb21wb25lbnRTZXR0aW5ncy5rcGkgY2FycmllcyB0aGVtIGFzIHRoZSBzZXJ2ZXJcbi8vIHNhdmVkIHRoZW0sIHJlYWQgYmFjayBmcm9tIHRoZSBjb25maWcgaXQgcmV0dXJucy5cbmV4cG9ydCBpbnRlcmZhY2UgS3BpQ2FyZFNldHRpbmdzIHtcbiAgaW5jcmVhc2VJczogUmVwb3J0Q2hhbmdlUG9sYXJpdHkgfCBudWxsO1xuICB0YXJnZXQ6IEtwaVRhcmdldENvbmZpZyB8IG51bGw7XG4gIHNwYXJrbGluZTogS3BpU3BhcmtsaW5lQ29uZmlnIHwgbnVsbDtcbn1cblxuLy8gV2hlcmUgYSBjaGFydCdzIGxlZ2VuZCBzaXRzIHJlbGF0aXZlIHRvIHRoZSBwbG90LCBvciAnaGlkZGVuJyB0byBkcm9wIGl0LlxuZXhwb3J0IHR5cGUgTGVnZW5kUG9zaXRpb24gPSAndG9wJyB8ICdib3R0b20nIHwgJ2xlZnQnIHwgJ3JpZ2h0JyB8ICdoaWRkZW4nO1xuXG5leHBvcnQgdHlwZSBDaGFydEdyYW51bGFyaXR5ID0gJ2RheScgfCAnd2VlaycgfCAnbW9udGgnIHwgJ3F1YXJ0ZXInIHwgJ3llYXInO1xuXG4vLyBIb3cgZWFjaCBncmFudWxhcml0eSByZWFkcyBpbiB0aGUgZ3JvdXAtYnkgY29udHJvbCBhbmQgb24gYW4gZXhwb3J0IGNvdmVyXG4vLyBzaGVldC4gV0hJQ0ggb2YgdGhlbSBhIGdpdmVuIHJlcG9ydCBvZmZlcnMgY29tZXMgZnJvbSBpdHMgUmVwb3J0R3JvdXBCeTtcbi8vIHRoaXMgaXMgb25seSB0aGUgbmFtaW5nLiAneWVhcicgcmVhZHMgYXMgXCJBbm51YWxseVwiLlxuZXhwb3J0IGNvbnN0IEdSQU5VTEFSSVRZX09QVElPTlM6IHsgdmFsdWU6IENoYXJ0R3JhbnVsYXJpdHk7IG5hbWU6IHN0cmluZyB9W10gPSBbXG4gIHsgdmFsdWU6ICdkYXknLCBuYW1lOiAnRGF5JyB9LFxuICB7IHZhbHVlOiAnd2VlaycsIG5hbWU6ICdXZWVrJyB9LFxuICB7IHZhbHVlOiAnbW9udGgnLCBuYW1lOiAnTW9udGgnIH0sXG4gIHsgdmFsdWU6ICdxdWFydGVyJywgbmFtZTogJ1F1YXJ0ZXInIH0sXG4gIHsgdmFsdWU6ICd5ZWFyJywgbmFtZTogJ0FubnVhbGx5JyB9LFxuXTtcblxuLy8gVGhlIGNoYXJ0IHR5cGVzIHRoYXQgcGxvdCBzZXJpZXMgYWdhaW5zdCBhIGNhdGVnb3J5IGFuZCBhIHZhbHVlIGF4aXMsIGFuZCBzb1xuLy8gdGhlIHR5cGVzIGEgbWVhc3VyZSdzIG93biBzZXJpZXMgY2FuIGJlIGRyYXduIGFzLiBBIHdhdGVyZmFsbCBoYXMgdGhlIHNhbWVcbi8vIGF4ZXMgYnV0IGlzIG5vdCBvbmUgb2YgdGhlbTogaXQgZHJhd3MgaXRzIG9uZSBtZWFzdXJlIGFzIGZsb2F0aW5nIHN0ZXBzLlxuZXhwb3J0IHR5cGUgQXhpc0NoYXJ0VHlwZSA9ICdiYXInIHwgJ2xpbmUnIHwgJ2FyZWEnO1xuXG4vLyBXaGF0IG9uZSBiYXIgb2YgYSB3YXRlcmZhbGwgZG9lcyB0byB0aGUgcnVubmluZyB0b3RhbCDigJQgZWFjaCBpcyBkcmF3biBpbiBpdHNcbi8vIG93biBjb2xvci4gVGhlIGNsb3NpbmcgdG90YWwgaXMgdGhlIGxhc3QgYmFyLCBzdGFuZGluZyBvbiB6ZXJvLlxuZXhwb3J0IHR5cGUgV2F0ZXJmYWxsU3RlcEtpbmQgPSAncmlzZScgfCAnZmFsbCcgfCAndG90YWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENoYXJ0Q29uZmlnIHtcbiAgLy8gQSB3YXRlcmZhbGwgdGFrZXMgT05FIG1lYXN1cmUgd2hvc2UgdmFsdWUgcGVyIGNhdGVnb3J5IGlzIGhvdyBmYXIgdGhlXG4gIC8vIHJ1bm5pbmcgdG90YWwgbW92ZXMgdGhlcmU6IGVhY2ggYmFyIHN0YXJ0cyB3aGVyZSB0aGUgb25lIGJlZm9yZSBpdCBlbmRlZCxcbiAgLy8gYW5kIGEgY2xvc2luZyBUb3RhbCBiYXIgc2hvd3MgdGhlIHN1bS5cbiAgY2hhcnRUeXBlPzogQXhpc0NoYXJ0VHlwZSB8ICd3YXRlcmZhbGwnIHwgJ3BpZScgfCAnZG9udXQnO1xuICAvLyBGb3Iga2luZCAndGltZScsIHRoZSBzZXJ2ZXIgYnVja2V0cyB0aGUgcmF3IGRhdGV0aW1lIGNvbHVtbiB0byBgZ3JhbnVsYXJpdHlgXG4gIC8vIGluIHRoZSByZXBvcnQncyB0aW1lem9uZSAodGhlIFNRTCBleHBvc2VzIHRoZSByYXcgY29sdW1uLCB1bmJ1Y2tldGVkKS5cbiAgLy8gZGF0ZUxhYmVsIHdyaXRlcyBhIHRpbWUgYXhpcydzIHBlcmlvZCBsYWJlbHMgc2hvcnQgKCdNYXknLCB0aGUgZGVmYXVsdCksXG4gIC8vIGxvbmcgKCdNYXkgMjAyNicpIG9yIG51bWVyaWMgKCcyMDI2LTA1Jyk7IGEgY2F0ZWdvcnkgYXhpcyBpZ25vcmVzIGl0LlxuICB4QXhpcz86IHtcbiAgICBjb2x1bW46IHN0cmluZztcbiAgICBraW5kPzogJ2NhdGVnb3J5JyB8ICd0aW1lJztcbiAgICBncmFudWxhcml0eT86IENoYXJ0R3JhbnVsYXJpdHk7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgZGF0ZUxhYmVsPzogUmVwb3J0Q2hhcnREYXRlTGFiZWw7XG4gIH07XG4gIG1lYXN1cmVzPzogQ2hhcnRNZWFzdXJlW107XG4gIC8vIEVhY2ggdmFsdWUgb2YgdGhpcyBjb2x1bW4gYmVjb21lcyBpdHMgb3duIHNlcmllcy4gSXQgY2FycmllcyBubyBsYWJlbDogdGhlXG4gIC8vIGxlZ2VuZCBuYW1lcyB0aGUgdmFsdWVzIHRoZW1zZWx2ZXMuXG4gIHNwbGl0Qnk/OiB7IGNvbHVtbjogc3RyaW5nIH07XG4gIC8vIFNpbmdsZS1kaW1lbnNpb24gYmFyIGNoYXJ0cyBvbmx5OiBjb2xvciBlYWNoIGJhciBieSBpdHMgb3duIGNhdGVnb3J5IGFuZFxuICAvLyBzaG93IGEgbGVnZW5kLCBXSVRIT1VUIHNwbGl0dGluZyBpbnRvIG11bHRpcGxlIHNlcmllcyAod2hpY2ggc2xpdmVycyB0aGVcbiAgLy8gYmFycykuIHYxIGV4cGVjdHMgY29sb3JCeS5jb2x1bW4gPT09IHhBeGlzLmNvbHVtbi4gSWdub3JlZCB3aGVuIHNwbGl0QnkgaXNcbiAgLy8gc2V0IG9yIHRoZSBjaGFydCBpc24ndCBhIGJhciBjaGFydC5cbiAgY29sb3JCeT86IHsgY29sdW1uOiBzdHJpbmc7IGxhYmVsPzogc3RyaW5nIH07XG4gIG9yaWVudGF0aW9uPzogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJztcbiAgc3RhY2tlZD86IGJvb2xlYW47XG4gIC8vIFN0YWNrcyB0aGUgcHJpbWFyeSBheGlzJ3MgYmFyIGFuZCBhcmVhIHNlcmllcyBhcyBzaGFyZXMgb2YgZWFjaFxuICAvLyBjYXRlZ29yeSdzIHRvdGFsLCBzbyBldmVyeSBzdGFjayByZWFjaGVzIDEwMCUuIFRoZSB2aWV3ZXIgY29tcHV0ZXMgdGhlXG4gIC8vIHNoYXJlcyBmcm9tIHRoZSByb3dzIGl0IHJlY2VpdmVzLCBhZnRlciB0aGUgZmlsdGVycyByYW47IHRoZSByb3dzIGFuZCB0aGVcbiAgLy8gQ1NWIGtlZXAgdGhlIHJhdyB2YWx1ZXMuIFRoZSB2YWx1ZSBheGlzIHRoZW4gYWx3YXlzIHJ1bnMgMCB0byAxMDAlIChmcm9tXG4gIC8vIC0xMDAlIHdoZW4gYSBzaGFyZSBpcyBuZWdhdGl2ZSkuXG4gIHBlcmNlbnRTdGFja2VkPzogYm9vbGVhbjtcbiAgLy8gVmFsdWVzIHByaW50ZWQgYmVzaWRlIHRoZSBwb2ludHMgb2YgYSBiYXIsIGxpbmUgb3IgYXJlYSBzZXJpZXM6IGV2ZXJ5XG4gIC8vIHBvaW50IChhbGwpLCBlYWNoIHNlcmllcycgbGF0ZXN0IHBvaW50IChsYXN0KSwgb3IgZXZlcnkgcG9pbnQgd2hvc2UgbGFiZWxcbiAgLy8gZml0cyB3aXRob3V0IG92ZXJsYXBwaW5nIGFub3RoZXIgKGF1dG8pLiBPbWl0dGVkIG9yIG5vbmUsIG5vIGxhYmVscy4gQVxuICAvLyBwaWUsIGEgZG9udXQgYW5kIGEgd2F0ZXJmYWxsIG5ldmVyIHByaW50IHRoZW0uXG4gIGRhdGFMYWJlbHM/OiBSZXBvcnRDaGFydERhdGFMYWJlbHM7XG4gIC8vIFRoZSBwcmltYXJ5IHZhbHVlIGF4aXMncyB0aXRsZSBhbmQgcmFuZ2UuIEV2ZXJ5IHNlcmllcyBpcyBwbG90dGVkIGFnYWluc3RcbiAgLy8gaXQgdW5sZXNzIGl0cyBtZWFzdXJlIGlzIHNlY29uZGFyeS5cbiAgdmFsdWVBeGlzPzogQ2hhcnRWYWx1ZUF4aXM7XG4gIC8vIFRoZSBzZWNvbmQgdmFsdWUgYXhpcywgb24gdGhlIHJpZ2h0LCB0aGF0IHNlY29uZGFyeSBtZWFzdXJlcyBwbG90IGFnYWluc3QuXG4gIHNlY29uZGFyeUF4aXM/OiBDaGFydFZhbHVlQXhpcztcbiAgLy8gTGFiZWxlZCBsaW5lcyBhY3Jvc3MgdGhlIHBsb3QgYXQgYSBjb25zdGFudCB2YWx1ZSwgb3IgYmFuZHMgYmV0d2VlbiB0d29cbiAgLy8gdmFsdWVzLCBhdCBtb3N0IDUuIFZlcnRpY2FsIGF4aXMgY2hhcnRzIGFuZCB3YXRlcmZhbGxzIG9ubHkuXG4gIHJlZmVyZW5jZXM/OiBDaGFydFJlZmVyZW5jZVtdO1xuICBsZWdlbmQ/OiBMZWdlbmRQb3NpdGlvbjtcbiAgc29ydD86IFJlcG9ydFNvcnQ7XG4gIGxpbWl0PzogbnVtYmVyO1xufVxuXG4vLyBBIHZhbHVlIGF4aXMncyB0aXRsZSBhbmQgcmFuZ2UuIEVhY2ggYm91bmQgbGVmdCBvdXQgaXMgcGlja2VkIGZyb20gdGhlIGRhdGEsXG4vLyBhbmQgdGhlIHRpY2sgc3RlcCB3aXRob3V0IGFuIGludGVydmFsLiBJdHMgdGlja3MgdGFrZSB0aGUgbnVtYmVyIGZvcm1hdCBvZlxuLy8gdGhlIG1lYXN1cmVzIHBsb3R0ZWQgYWdhaW5zdCBpdC5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhcnRWYWx1ZUF4aXMge1xuICBsYWJlbD86IHN0cmluZztcbiAgbWluPzogbnVtYmVyO1xuICBtYXg/OiBudW1iZXI7XG4gIGludGVydmFsPzogbnVtYmVyO1xufVxuXG4vLyBBIHJlZmVyZW5jZSBkcmF3biBhY3Jvc3MgYSBjaGFydCdzIHBsb3Q6IGEgbGluZSBhdCBgdmFsdWVgLCBvciB3aXRoIGB0b2AgYVxuLy8gYmFuZCBiZXR3ZWVuIHRoZSB0d28sIGxhYmVsZWQgd2l0aCBgbGFiZWxgLiBUaGUgdmFsdWUgaXMgb25lIHRoZSB1c2VyIG9yXG4vLyB0aGUgbW9kZWwgc3RhdGVzLCBuZXZlciBvbmUgcmVhZCBvZmYgdGhlIGRhdGEuIHNlY29uZGFyeSBwbG90cyBpdCBhZ2FpbnN0XG4vLyB0aGUgc2Vjb25kIHZhbHVlIGF4aXMsIHdoZW4gdGhlIGNoYXJ0IGhhcyBvbmUuXG5leHBvcnQgaW50ZXJmYWNlIENoYXJ0UmVmZXJlbmNlIHtcbiAgdmFsdWU6IG51bWJlcjtcbiAgbGFiZWw6IHN0cmluZztcbiAgdG8/OiBudW1iZXI7XG4gIHNlY29uZGFyeT86IGJvb2xlYW47XG59XG5cbi8vIEhvdyBvbmUgbnVtZXJpYyBzbG90IGlzIHNob3duOiBhIGNoYXJ0IG1lYXN1cmUsIGEgS1BJIG1lYXN1cmUsIGEgbGlzdCBjb2x1bW5cbi8vIG9yIGEgY3Jvc3MtdGFiJ3MgY2VsbHMuIFRoZSBkYXRhIHN0YXlzIHJhdyAoaXQgc29ydHMgYW5kIGV4cG9ydHMgYXMgYVxuLy8gbnVtYmVyKTsgb25seSB0aGUgcmVuZGVyZXJzIGZvcm1hdCBpdCwgdGhlIHNhbWUgd2F5IG9uIHNjcmVlbiwgaW4gdGhlIFBERlxuLy8gYW5kIGluIFBvd2VyUG9pbnQgKGZvcm1hdC50cykuIEFsbCB0aHJlZSBrZXlzIGFyZSBvcHRpb25hbCwgYW5kIHByZWNpc2lvbiBvclxuLy8gdW5pdHMgd2l0aG91dCBhIGZvcm1hdCBtZWFuIG51bWJlci5cbi8vXG4vLyBGb3JtYXR0aW5nIGlzIG9wdC1pbjogYSBsaXN0IGNvbHVtbiBvciBjcm9zcy10YWIgY2VsbCB3aXRob3V0IHRoZXNlIGtleXNcbi8vIHByaW50cyBpdHMgdmFsdWUgYXMgaXQgY2FtZSwgYW5kIGEgY2hhcnQgd2l0aG91dCB0aGVtIGtlZXBzIGl0cyBwbGFpblxuLy8gbG9jYWxlLWdyb3VwZWQgYXhpcyBhbmQgdG9vbHRpcHMuIEEgS1BJIHdpdGhvdXQgdGhlbSBwcmludHMgYSBwbGFpbiBudW1iZXIuXG5leHBvcnQgaW50ZXJmYWNlIE51bWJlckZvcm1hdFNwZWMge1xuICAvLyBwZXJjZW50IHRha2VzIGEgMC0xIHJhdGlvICgwLjMgcmVhZHMgMzAlKSB3aGVuIHRoZSByZXBvcnQncyBwZXJjZW50Rm9ybWF0XG4gIC8vIGlzICdyYXRpbyc7IGFuIG9sZGVyIHNlcnZlciBsZWF2ZXMgaXQgb3V0IGFuZCBzZW5kcyB4MTAwLiBjdXJyZW5jeSBsYWJlbHNcbiAgLy8gdGhlIGFtb3VudCBpbiB0aGUgcmVwb3J0J3MgY3VycmVuY3ksIHdyaXR0ZW4gaW4gaXRzIGxvY2FsZS5cbiAgZm9ybWF0PzogUmVwb3J0VmFsdWVGb3JtYXQgfCBSZXBvcnRMaXN0Q29sdW1uRm9ybWF0O1xuICAvLyBIb3cgbWFueSBkZWNpbWFsIHBsYWNlcyB0aGUgdmFsdWUgaXMgc2hvd24gdG8gKDAtNikuIEZpeGVkIHJhdGhlciB0aGFuXG4gIC8vIG1heGltdW06IGEgY29sdW1uIG9mIHJhdGVzIGlzIHVucmVhZGFibGUgd2hlbiBlYWNoIG9uZSBzaG93cyBhIGRpZmZlcmVudFxuICAvLyBudW1iZXIgb2YgZGVjaW1hbHMuIEZvciBwZXJjZW50IGl0IGNvdW50cyB0aGUgZGVjaW1hbHMgb2YgdGhlIHBlcmNlbnRhZ2VcbiAgLy8gKHByZWNpc2lvbiAxIHNob3dzIDAuMyBhcyAzMC4wJSkuIE9taXR0ZWQgbGVhdmVzIHRoZSBmb3JtYXQncyBvd24gZGVmYXVsdDpcbiAgLy8gYXQgbW9zdCBvbmUgZGVjaW1hbCBmb3IgcGVyY2VudCAoYW5kIGZvciBhbiBhYmJyZXZpYXRlZCAxLjJLKSwgd2hvbGUgdW5pdHNcbiAgLy8gZm9yIGN1cnJlbmN5LCB0aGUgbG9jYWxlJ3MgZGVmYXVsdCBmb3IgYSBudW1iZXIuXG4gIC8vXG4gIC8vIEl0IGNhbm5vdCBiZSBhcHBsaWVkIGluIHRoZSBTUUw6IHRoZSB2YWx1ZSBpcyBhZ2dyZWdhdGVkIGFmdGVyIHRoZSByZXBvcnQnc1xuICAvLyBmaWx0ZXJzIHJ1biwgc28gcHJlLXJvdW5kaW5nIHdvdWxkIGJyZWFrIGxpdmUgcmUtZmlsdGVyaW5nLlxuICBwcmVjaXNpb24/OiBudW1iZXI7XG4gIC8vIEFiYnJldmlhdGVzIHRvIHRob3VzYW5kcyAoMS4ySykgb3IgbWlsbGlvbnMgKDMuNE0pLCBvciBwaWNrcyBieSBzaXplLlxuICB1bml0cz86IFJlcG9ydE51bWJlclVuaXRzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYXJ0TWVhc3VyZSBleHRlbmRzIE51bWJlckZvcm1hdFNwZWMge1xuICBjb2x1bW46IHN0cmluZztcbiAgYWdncmVnYXRpb24/OiAnc3VtJyB8ICdjb3VudCcgfCAnYXZnJyB8ICdtaW4nIHwgJ21heCc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICAvLyBEcmF3cyB0aGlzIG1lYXN1cmUncyBzZXJpZXMgYXMgYSBkaWZmZXJlbnQgdHlwZSBmcm9tIHRoZSBjaGFydCdzIG93blxuICAvLyBjaGFydFR5cGUg4oCUIGNvdW50cyBhcyBiYXJzIHdpdGggYSByYXRlIGFzIGEgbGluZSBvdmVyIHRoZW0gaXMgYSBjb21ib1xuICAvLyBjaGFydC4gT21pdHRlZCwgdGhlIHNlcmllcyB0YWtlcyB0aGUgY2hhcnQncyB0eXBlLiBBeGlzIGNoYXJ0cyBvbmx5IChhIHBpZVxuICAvLyBpZ25vcmVzIGl0KS5cbiAgdHlwZT86IEF4aXNDaGFydFR5cGU7XG4gIC8vIEEgY2hhcnQgbWVhc3VyZSdzIGZvcm1hdCBzaG93cyBvbiBpdHMgdG9vbHRpcHMsIGFuZCBvbiB0aGUgdmFsdWUgYXhpc1xuICAvLyB3aGVuIGV2ZXJ5IG1lYXN1cmUgc2hhcmluZyB0aGUgYXhpcyBhZ3JlZXMgb24gaXQuIEEgS1BJJ3MgbWVhc3VyZSBmb3JtYXRzXG4gIC8vIGl0cyBvbmUgdmFsdWUuXG4gIGZvcm1hdD86IFJlcG9ydFZhbHVlRm9ybWF0O1xuICAvLyBQbG90cyB0aGlzIG1lYXN1cmUgYWdhaW5zdCB0aGUgc2Vjb25kIHZhbHVlIGF4aXMsIG9uIHRoZSByaWdodCwgZm9yIGFcbiAgLy8gcXVhbnRpdHkgb24gYW5vdGhlciBzY2FsZS4gT21pdHRlZCBvciBmYWxzZSwgaXQgc2hhcmVzIHRoZSBwcmltYXJ5IGF4aXMuXG4gIC8vIEEgdmVydGljYWwgYXhpcyBjaGFydCBvbmx5LCB3aXRoIGF0IGxlYXN0IG9uZSBtZWFzdXJlIGxlZnQgb24gdGhlIHByaW1hcnlcbiAgLy8gYXhpcy5cbiAgc2Vjb25kYXJ5PzogYm9vbGVhbjtcbiAgLy8gVGhlIHBhbGV0dGUgY29sb3IgdGhpcyBtZWFzdXJlJ3Mgc2VyaWVzIGlzIGRyYXduIGluLiBPbWl0dGVkLCB0aGUgc2VyaWVzXG4gIC8vIHRha2VzIHRoZSBwYWxldHRlIGNvbG9yIG9mIGl0cyBwb3NpdGlvbi4gQSBjb2xvciBvbiB0aGUgZmlyc3QgbWVhc3VyZVxuICAvLyB0dXJucyBvZmYgYSBjYXRlZ29yeSBiYXIgY2hhcnQncyBkZWZhdWx0IGNvbG9yIHBlciBiYXIgKGlzQ29sb3JCeSkuXG4gIGNvbG9yPzogUmVwb3J0Q2hhcnRDb2xvcjtcbiAgLy8gSG93IGEgbGluZSBzZXJpZXMnIGxpbmUgaXMgZHJhd24uIE9taXR0ZWQsIHNvbGlkLlxuICBsaW5lPzogUmVwb3J0Q2hhcnRMaW5lU3R5bGU7XG4gIC8vIFdoZXRoZXIgYSBsaW5lIG9yIGFyZWEgc2VyaWVzIGRyYXdzIGEgZG90IG9uIGVhY2ggcG9pbnQuIE9taXR0ZWQsIHRydWUuXG4gIG1hcmtlcnM/OiBib29sZWFuO1xuICAvLyBBIGxpbmUgYWNyb3NzIHRoZSBwbG90IGF0IHRoaXMgc2VyaWVzJyBhdmVyYWdlLCBtZWRpYW4sIGxvd2VzdCBvciBoaWdoZXN0XG4gIC8vIHZhbHVlIG92ZXIgdGhlIHBvaW50cyBvbiBzY3JlZW4uIFZlcnRpY2FsIGF4aXMgY2hhcnRzIG9ubHkuXG4gIG1hcmtMaW5lPzogUmVwb3J0Q2hhcnRNYXJrU3RhdDtcbn1cblxuLy8gT25lIGF1dGhvcmVkIGNvbHVtbiBvZiBhIHBsYWluIGxpc3QuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RDb2x1bW4gZXh0ZW5kcyBOdW1iZXJGb3JtYXRTcGVjIHtcbiAgY29sdW1uOiBzdHJpbmc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICAvLyBkYXRlIGtlZXBzIHRoZSBjb2x1bW4gYSBSQVcgdGltZXN0YW1wLCBzbyB0aGUgcmVwb3J0IHRpbWV6b25lIGFuZCBpdHNcbiAgLy8gZGF0ZVJhbmdlIGZpbHRlcnMga2VlcCB3b3JraW5nLCBhbmQgdGhlIHZpZXdlciByZW5kZXJzIGl0IGFzIGEgZGF5IGluIHRoZVxuICAvLyByZXBvcnQncyB6b25lIGFuZCBsb2NhbGUuIG51bWJlciwgcGVyY2VudCBhbmQgY3VycmVuY3kgZm9ybWF0IHRoZSB2YWx1ZSBhc1xuICAvLyBhIEtQSSBtZWFzdXJlIGRvZXMuIFdpdGhvdXQgYSBmb3JtYXQgdGhlIHZhbHVlIHByaW50cyBhcyBpdCBjYW1lLlxuICBmb3JtYXQ/OiBSZXBvcnRMaXN0Q29sdW1uRm9ybWF0O1xuICAvLyBBIGNvbHVtbiB0aGUgU1FMIGFscmVhZHkgZm9ybWF0dGVkIGlzIHRleHQsIHNvIGl0IG5hbWVzIGBzb3J0Q29sdW1uYDogdGhlXG4gIC8vIHJhdyBudW1lcmljIGFsaWFzIHRoZSBxdWVyeSBhbHNvIG91dHB1dHMsIHdoaWNoIHRoZSBzZXJ2ZXIgb3JkZXJzIGJ5XG4gIC8vIGluc3RlYWQuXG4gIHNvcnRDb2x1bW4/OiBzdHJpbmc7XG4gIC8vIGZhbHNlIGtlZXBzIHRoZSBjZWxsIG9uIG9uZSBsaW5lLiBPbWl0dGVkLCBhIGxvbmcgdmFsdWUgd3JhcHMuXG4gIHdyYXA/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RDb25maWcge1xuICBjb2x1bW5zPzogTGlzdENvbHVtbltdO1xuICAvLyBBIGNyb3NzLXRhYjogYHJvd0J5YCBzdGF5cyBkb3duIHRoZSBzaWRlIGFuZCBldmVyeSB2YWx1ZSBvZiBgcGl2b3RCeWBcbiAgLy8gYmVjb21lcyBhIGNvbHVtbi4gVGhlIHR3byBhcmUgc2V0IHRvZ2V0aGVyLCBgY29sdW1uc2AgaXMgb21pdHRlZCAodGhlXG4gIC8vIGJhY2tlbmQgcmVqZWN0cyBhdXRob3JpbmcgYm90aCksIGFuZCB0aGUgY29sdW1uIHNldCBhcnJpdmVzIHdpdGggdGhlIHJvd3NcbiAgLy8gaW4gQ29tcG9uZW50RGF0YS5jb2x1bW5zIGJlY2F1c2Ugb25seSB0aGUgcmVzdWx0IGtub3dzIHRoZSBwaXZvdCB2YWx1ZXMuXG4gIC8vIHJvd0J5LmxhYmVsIGhlYWRzIHRoZSBzaWRlIGNvbHVtbiBvbiBzY3JlZW4gYW5kIGluIGV2ZXJ5IGV4cG9ydCwgYW5kXG4gIC8vIGRlZmF1bHRzIHRvIHRoZSBjb2x1bW4gbmFtZS4gcGl2b3RCeSBjYXJyaWVzIG5vIGxhYmVsOiBpdHMgdmFsdWVzIGFyZSB0aGVcbiAgLy8gaGVhZGluZ3MuXG4gIHJvd0J5PzogeyBjb2x1bW46IHN0cmluZzsgbGFiZWw/OiBzdHJpbmcgfTtcbiAgcGl2b3RCeT86IHsgY29sdW1uOiBzdHJpbmcgfTtcbiAgLy8gVGhlIGF1dGhvcmVkIG9yZGVyLCBtb3N0IGltcG9ydGFudCBmaXJzdC4gQSBsaXN0IHNhdmVkIGJlZm9yZSBtdWx0aS1rZXlcbiAgLy8gc29ydGluZyBzdG9yZXMgb25lIG9iamVjdCwgc28gcmVhZCBpdCB0aHJvdWdoIGxpc3RTb3J0VGVybXMoKSBvbmx5LlxuICBzb3J0PzogUmVwb3J0U29ydCB8IFJlcG9ydFNvcnRbXTtcbiAgLy8gSG93IG1hbnkgbGVhZGluZyBjb2x1bW5zIHN0YXkgaW4gdmlldyB3aGlsZSB0aGUgbGlzdCBzY3JvbGxzIHNpZGV3YXlzXG4gIC8vICgwLTMpLiBVbnNldCwgYSBjcm9zcy10YWIgcGlucyBpdHMgcm93LWtleSBjb2x1bW4gYW5kIGEgcGxhaW4gbGlzdCBub25lLlxuICBwaW5uZWRDb2x1bW5zPzogbnVtYmVyIHwgbnVsbDtcbiAgcGFnZVNpemU/OiBudW1iZXI7XG4gIC8vIHRydWUgYWRkcyBhIHRvdGFscyByb3cgdW5kZXIgdGhlIGxpc3Q6IHRoZSBzZXJ2ZXIgcnVucyB0aGUgbWVhc3VyZXMgYWdhaW5cbiAgLy8gb3ZlciBldmVyeSByb3cgdGhlIGZpbHRlcnMga2VlcCwgd2l0aG91dCBncm91cGluZywgYW5kIGEgY3Jvc3MtdGFiIHRvdGFsc1xuICAvLyBlYWNoIGNvbHVtbi5cbiAgdG90YWxzPzogYm9vbGVhbjtcbiAgLy8gQSBjcm9zcy10YWIgb25seTogaG93IGV2ZXJ5IGNlbGwgb2YgdGhlIGdyaWQgaXMgZm9ybWF0dGVkLCB3aXRoIGEgS1BJXG4gIC8vIG1lYXN1cmUncyBrZXlzLiBUaGUgcm93IGtleSBjb2x1bW4gc3RheXMgYXMgaXQgY2FtZS5cbiAgY2VsbEZvcm1hdD86IE51bWJlckZvcm1hdFNwZWMgJiB7IGZvcm1hdD86IFJlcG9ydFZhbHVlRm9ybWF0IH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS3BpQ29uZmlnIHtcbiAgbWVhc3VyZT86IENoYXJ0TWVhc3VyZTtcbiAgLy8gV2hldGhlciBhIHJpc2UgaW4gdGhlIHZhbHVlIGlzIGdvb2QgbmV3cywgYmFkIG5ld3Mgb3IgbmVpdGhlcjogaXQgcGlja3NcbiAgLy8gdGhlIGRlbHRhJ3MgY29sb3IgYW5kIGRlY2lkZXMgd2hlbiBhIHRhcmdldCBpcyBtZXQgKGdvb2Q6IGF0IG9yIGFib3ZlIGl0O1xuICAvLyBiYWQ6IGF0IG9yIGJlbG93IGl0OyBuZXV0cmFsOiBuZXZlciBqdWRnZWQpLiBPbWl0dGVkIG9yIG51bGwgcmVhZHMgZ29vZC5cbiAgaW5jcmVhc2VJcz86IFJlcG9ydENoYW5nZVBvbGFyaXR5IHwgbnVsbDtcbiAgLy8gQSBudW1iZXIgdGhlIHVzZXIgZ2F2ZSBmb3IgdGhlIHZhbHVlIHRvIHJlYWNoLCBuZXZlciBvbmUgcmVhZCBvZmYgdGhlXG4gIC8vIGRhdGEuIFRoZSBzZXJ2ZXIgc2VuZHMgdGhlIHByb2dyZXNzIHRvd2FyZCBpdCB3aXRoIHRoZSBkYXRhLlxuICB0YXJnZXQ/OiBLcGlUYXJnZXRDb25maWcgfCBudWxsO1xuICAvLyBBIHNtYWxsIHRyZW5kIGxpbmUgb2YgdGhlIHZhbHVlIG92ZXIgaXRzIGxhc3QgcGVyaW9kcywgZHJhd24gdW5kZXIgaXQuXG4gIHNwYXJrbGluZT86IEtwaVNwYXJrbGluZUNvbmZpZyB8IG51bGw7XG59XG5cbi8vIEEgS1BJJ3MgdGFyZ2V0OiB0aGUgdmFsdWUsIGFuZCBhbiBvcHRpb25hbCBjYXB0aW9uIGZvciBpdCAoJ0dvYWwnKS5cbmV4cG9ydCBpbnRlcmZhY2UgS3BpVGFyZ2V0Q29uZmlnIHtcbiAgdmFsdWU6IG51bWJlcjtcbiAgbGFiZWw/OiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBBIEtQSSdzIHNwYXJrbGluZTogaG93IHdpZGUgZWFjaCBwb2ludCdzIHBlcmlvZCBpcyAobnVsbCByZWFkcyBtb250aCkgYW5kXG4vLyBob3cgbWFueSBwZXJpb2RzIGl0IGRyYXdzLCAyIHRvIDYwIChudWxsIHJlYWRzIDEyKS5cbmV4cG9ydCBpbnRlcmZhY2UgS3BpU3BhcmtsaW5lQ29uZmlnIHtcbiAgZ3JhbnVsYXJpdHk/OiBDaGFydEdyYW51bGFyaXR5IHwgbnVsbDtcbiAgcGVyaW9kcz86IG51bWJlciB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0U29ydCB7XG4gIGNvbHVtbjogc3RyaW5nO1xuICBkaXJlY3Rpb24/OiAnYXNjJyB8ICdkZXNjJztcbn1cblxuZXhwb3J0IHR5cGUgUmVwb3J0RmlsdGVyVHlwZSA9ICdkYXRlUmFuZ2UnIHwgJ3NlbGVjdCcgfCAna2V5d29yZCc7XG5cbi8vIFdoZXJlIGEgZmlsdGVyIGdyb3VwJ3MgY29udHJvbCBpcyBleHBvc2VkLiBBIGdyb3VwIGNhbiBiZSBzaG93biBvbiBpdHNcbi8vIGNvbXBvbmVudHMsIGluIHRoZSByZXBvcnQgYmFyLCBvciBCT1RIIGF0IG9uY2UgKHRoZSB0d28gYXJlIGluZGVwZW5kZW50XG4vLyB0b2dnbGVzIGluIHRoZSBVSSk7IGEgY29sdW1uIHdpdGggbmVpdGhlciBleHBvc2VkIHNpbXBseSBoYXMgbm8gZmlsdGVyLlxuZXhwb3J0IHR5cGUgUmVwb3J0RmlsdGVyTGV2ZWwgPSAnY29tcG9uZW50JyB8ICdyZXBvcnQnIHwgJ2JvdGgnO1xuXG4vLyBPbmUgZmlsdGVyYWJsZSBvdXRwdXQgY29sdW1uIG9mIGEgY29tcG9uZW50J3MgU1FMLCB3aXRoIHRoZSBmaWx0ZXIgaW50ZXJmYWNlXG4vLyBJTkZFUlJFRCBmcm9tIGl0cyBkYXRhICh0aGUgaHVtYW4gbmV2ZXIgcGlja3MgdGhlIGludGVyZmFjZSDigJQgaXQgZm9sbG93cyB0aGVcbi8vIGNvbHVtbidzIHR5cGUpLiBEcml2ZXMgdGhlIEZpbHRlcnMgdGFiIGxpc3RpbmcuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEZpbHRlcmFibGVDb2x1bW4ge1xuICBjb2x1bW46IHN0cmluZztcbiAgdHlwZTogUmVwb3J0RmlsdGVyVHlwZTtcbn1cblxuLy8gR3JvdW5kIHRydXRoOiBvbmUgZmlsdGVyYWJsZSBvdXRwdXQgY29sdW1uIE9OIG9uZSBjb21wb25lbnQncyBTUUwuIEFsd2F5cyBhXG4vLyBtZW1iZXIgb2YgYSBmaWx0ZXIgZ3JvdXAg4oCUIHRoZSB1bml0IHRoYXQgbGlua3MgZXF1aXZhbGVudCBmaWx0ZXJzIGFjcm9zc1xuLy8gY29tcG9uZW50cyBhbmQgZGVjaWRlcyB3aGVyZSB0aGUgY29udHJvbCByZW5kZXJzIChjb21wb25lbnQgdnMgcmVwb3J0IGJhcikuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEZpbHRlciB7XG4gIGlkOiBudW1iZXI7XG4gIGNvbXBvbmVudElkOiBudW1iZXI7XG4gIGZpbHRlckdyb3VwSWQ6IG51bWJlcjtcbiAgZmlsdGVyQ29sdW1uOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmcgfCBudWxsO1xuICBlbmFibGVkOiBib29sZWFuO1xuICBoYXNPcHRpb25zOiBib29sZWFuO1xuICBjb25maWc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vLyBPbmUgY2hvaWNlIGluIGEgc2VsZWN0IGZpbHRlcidzIG9wdGlvbiBsaXN0LiBUaGUgdmFsdWUgaXMgd2hhdCB0aGUgZmlsdGVyXG4vLyBtYXRjaGVzIG9uIGFuZCBnZXRzIHN0b3JlZCBpbiBhIHNhdmVkIGRlZmF1bHQg4oCUIGZvciBhbiBlbnRpdHkgdGhhdCBpcyBpdHNcbi8vIHN0YWJsZSBpZCwgbmV2ZXIgaXRzIG5hbWUsIHNvIHJlbmFtaW5nIHRoZSBlbnRpdHkgbW92ZXMgdGhlIGxhYmVsIHdpdGhvdXRcbi8vIGJyZWFraW5nIHRoZSBkZWZhdWx0LiBUaGUgbGFiZWwgaXMgb25seSBldmVyIHdoYXQgdGhlIHZpZXdlciByZWFkcy5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0RmlsdGVyT3B0aW9uIHtcbiAgdmFsdWU6IHVua25vd247XG4gIGxhYmVsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0RmlsdGVyR3JvdXAge1xuICBpZDogbnVtYmVyO1xuICBsYWJlbDogc3RyaW5nIHwgbnVsbDtcbiAgdHlwZTogUmVwb3J0RmlsdGVyVHlwZTtcbiAgbGV2ZWw6IFJlcG9ydEZpbHRlckxldmVsO1xuICBvcmRlcjogbnVtYmVyO1xuICBjb25maWc6IHsgZGVmYXVsdD86IEZpbHRlckdyb3VwRGVmYXVsdCB9ICYgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGZpbHRlcnM6IFJlcG9ydEZpbHRlcltdO1xufVxuXG4vLyBBIGZpbHRlciBncm91cCdzIGF1dGhvcmVkIGRlZmF1bHQg4oCUIHRoZSB2YWx1ZSB0aGF0IHNlZWRzIHRoZSByZXBvcnQgYmFyIG9uXG4vLyBldmVyeSBvcGVuLiBTaGFwZSBmb2xsb3dzIHRoZSBncm91cCdzIHR5cGU6IGRhdGVSYW5nZSB1c2VzIHN0YXJ0L2VuZCAoYSBmaXhlZFxuLy8gY2FsZW5kYXItZGF5IHJhbmdlKSBvciBhIHJlbGF0aXZlIHByZXNldDsgc2VsZWN0IHVzZXMgdmFsdWVzOyBrZXl3b3JkIHVzZXNcbi8vIHZhbHVlLlxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJHcm91cERlZmF1bHQge1xuICAvLyBkYXRlUmFuZ2UgcmVsYXRpdmUgcHJlc2V0LCByZXNvbHZlZCBvbiBldmVyeSBvcGVuIGFnYWluc3QgdG9kYXkgaW4gdGhlXG4gIC8vIHJlcG9ydCdzIGVmZmVjdGl2ZSB6b25lIChSZXBvcnQuZWZmZWN0aXZlVGltZXpvbmUpLiBPbmUgb2Y6IHRoaXNXZWVrLFxuICAvLyBsYXN0V2VlaywgbGFzdDdEYXlzLCBsYXN0MzBEYXlzLCBsYXN0M01vbnRocywgbGFzdDZNb250aHMsIGxhc3QxMk1vbnRocyxcbiAgLy8gdGhpc01vbnRoLCB0aGlzUXVhcnRlciwgdGhpc1llYXIveWVhclRvRGF0ZS4gV2Vla3MgcnVuIE1vbmRheSB0byBTdW5kYXksXG4gIC8vIHRoZSBzYW1lIHdlZWtzIHRoZSBzZXJ2ZXIncyB3ZWVrbHkgdGltZSBidWNrZXRzIHVzZS5cbiAgcmVsYXRpdmU/OiBzdHJpbmc7XG4gIHN0YXJ0Pzogc3RyaW5nOyAvLyBkYXRlUmFuZ2UgZml4ZWQgc3RhcnQgKHl5eXktTU0tZGQpXG4gIGVuZD86IHN0cmluZzsgLy8gZGF0ZVJhbmdlIGZpeGVkIGVuZCAoeXl5eS1NTS1kZClcbiAgdmFsdWVzPzogdW5rbm93bltdOyAvLyBzZWxlY3QgZGVmYXVsdCBwaWNrZWQgdmFsdWVzXG4gIHZhbHVlPzogc3RyaW5nOyAvLyBrZXl3b3JkIGRlZmF1bHQgdGV4dFxufVxuXG4vLyBUaGUgc2Vzc2lvbiB2YWx1ZSBvZiBhIGZpbHRlciBncm91cDogc2hhcGUgZGVwZW5kcyBvbiB0aGUgZ3JvdXAncyB0eXBlLiBOb3Rcbi8vIHN0b3JlZCBvbiB0aGUgc2VydmVyOyB0aGUgdmlld2VyJ3MgVVJMIGNhcnJpZXMgdGhlIHZhbHVlcyB0aGF0IGRpZmZlciBmcm9tXG4vLyB0aGUgZGVmYXVsdHMgKHJlcG9ydC11cmwtc3RhdGUudHMpLlxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJHcm91cFZhbHVlIHtcbiAgc3RhcnQ/OiBEYXRlIHwgc3RyaW5nIHwgbnVsbDsgLy8gZGF0ZVJhbmdlXG4gIGVuZD86IERhdGUgfCBzdHJpbmcgfCBudWxsOyAvLyBkYXRlUmFuZ2VcbiAgdmFsdWVzPzogdW5rbm93bltdOyAvLyBzZWxlY3RcbiAgdmFsdWU/OiBzdHJpbmc7IC8vIGtleXdvcmRcbiAgLy8gZGF0ZVJhbmdlIG9ubHk6IHRoZSByZWxhdGl2ZSBwcmVzZXQgbmFtZSB0aGVzZSBkYXRlcyB3ZXJlIHJlc29sdmVkIGZyb21cbiAgLy8gKGEgRmlsdGVyR3JvdXBEZWZhdWx0LnJlbGF0aXZlIG5hbWUpLiBTZXQgb25seSB3aGVuIHRoZSB2YWx1ZSB3YXMgc2VlZGVkXG4gIC8vIGZyb20gdGhlIGdyb3VwJ3MgcmVsYXRpdmUgZGVmYXVsdCBvciByZWFkIGZyb20gYSBwcmVzZXQgbmFtZSBpbiB0aGUgVVJMLFxuICAvLyBzbyB0aGUgVVJMIGtlZXBzIHRoZSByYW5nZSByb2xsaW5nICgnbGFzdDMwRGF5cycpIGluc3RlYWQgb2YgZnJlZXppbmcgdHdvXG4gIC8vIGRhdGVzLCBhbmQgdGhlIGRhdGEgcmVxdWVzdCBuYW1lcyB0aGUgcGVyaW9kIGl0IGNvdmVycyAoc2VlXG4gIC8vIFJlc29sdmVkRmlsdGVyVmFsdWUucHJlc2V0KS4gQW55IGRhdGUgcGlja2VkIGJ5IHRoZSB2aWV3ZXIsIGEgcGlja2VyXG4gIC8vIHNob3J0Y3V0IGluY2x1ZGVkLCBpcyBzdG9yZWQgd2l0aG91dCBpdC5cbiAgcHJlc2V0Pzogc3RyaW5nO1xufVxuXG4vLyBBIHJlbGF0aXZlIGRhdGUgcmFuZ2UgdGhlIHNlcnZlciByZXNvbHZlcyBhZ2FpbnN0IHRvZGF5IGluIHRoZSByZXBvcnQnc1xuLy8gem9uZTogdGhlIG5hbWVzIGEgRmlsdGVyR3JvdXBEZWZhdWx0LnJlbGF0aXZlIGFuZCBhIHRpbWVmcmFtZSdzIHJhbmdlIHRha2UuXG4vLyBNaXJyb3JzIHRoZSBzZXJ2ZXIncyBSZXBvcnRSZWxhdGl2ZVJhbmdlRW51bSB2YWx1ZSBmb3IgdmFsdWVcbi8vIChSZXBvcnRSZWxhdGl2ZVJhbmdlRW51bVRlc3QgcGlucyB0aGUgZGF5cyBlYWNoIG9uZSBjb3ZlcnMpLlxuZXhwb3J0IHR5cGUgUmVwb3J0UmVsYXRpdmVSYW5nZSA9XG4gIHwgJ3RoaXNXZWVrJ1xuICB8ICdsYXN0V2VlaydcbiAgfCAnbGFzdDdEYXlzJ1xuICB8ICdsYXN0MzBEYXlzJ1xuICB8ICdsYXN0M01vbnRocydcbiAgfCAnbGFzdDZNb250aHMnXG4gIHwgJ2xhc3QxMk1vbnRocydcbiAgfCAndGhpc01vbnRoJ1xuICB8ICd0aGlzUXVhcnRlcidcbiAgfCAndGhpc1llYXInXG4gIHwgJ3llYXJUb0RhdGUnO1xuXG4vLyBUaGUgdmlld2VyLXN0YXRlIHF1ZXJ5IHBhcmFtcyBvZiBhIHJlcG9ydCBVUkwsIGFzIHJhdyBzdHJpbmdzLCBiZWZvcmUgdGhleVxuLy8gYXJlIGNoZWNrZWQgYWdhaW5zdCB0aGUgcmVwb3J0IChyZXBvcnQtdXJsLXN0YXRlLnRzIHJlYWRSZXBvcnRVcmxQYXJhbXMpLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRVcmxQYXJhbXMge1xuICAvLyBnPGdyb3VwSWQ+IC0+IHRoZSBlbmNvZGVkIGdyb3VwIHZhbHVlICgnJyA9IHRoZSB2aWV3ZXIgY2xlYXJlZCBpdCkuXG4gIGdyb3VwczogTWFwPG51bWJlciwgc3RyaW5nPjtcbiAgLy8gczxjb21wb25lbnRJZD4gLT4gdGhlIGVuY29kZWQgbGlzdCBzb3J0ICgnLWNvbHVtbicgPSBkZXNjZW5kaW5nKS5cbiAgbGlzdFNvcnRzOiBNYXA8bnVtYmVyLCBzdHJpbmc+O1xuICAvLyBxPGNvbXBvbmVudElkPiAtPiBhIGxpc3QncyBzZWFyY2ggYm94IHRleHQsIGFzIHR5cGVkLlxuICBsaXN0U2VhcmNoZXM6IE1hcDxudW1iZXIsIHN0cmluZz47XG4gIC8vIGg8Y29tcG9uZW50SWQ+IC0+IHRoZSBjb2x1bW5zIGEgdmlld2VyIGhpZCBvbiBhIGxpc3QsIHN0aWxsIGVuY29kZWRcbiAgLy8gKGRlY29kZUNvbHVtbkxpc3QpLlxuICBsaXN0SGlkZGVuOiBNYXA8bnVtYmVyLCBzdHJpbmc+O1xuICAvLyBUaGUgZ3JvdXAtYnkgZ3JhaW4sIG9yIG51bGwgd2hlbiB0aGUgVVJMIGhhcyBub25lLlxuICBncm91cEJ5OiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBUaGUgdmlld2VyIHN0YXRlIHRoZSBVUkwgc2hvdWxkIGNhcnJ5OiBvbmx5IHdoYXQgZGlmZmVycyBmcm9tIHRoZSByZXBvcnQnc1xuLy8gYXV0aG9yZWQgZGVmYXVsdHMgKFJlcG9ydEZpbHRlclN0YXRlU2VydmljZS51cmxTbmFwc2hvdCkuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFVybFNuYXBzaG90IHtcbiAgLy8gQSBncm91cCdzIHZhbHVlLCBvciBudWxsIHdoZW4gdGhlIHZpZXdlciBjbGVhcmVkIGEgZ3JvdXAgdGhhdCBoYXMgYSBkZWZhdWx0LlxuICBncm91cHM6IE1hcDxudW1iZXIsIEZpbHRlckdyb3VwVmFsdWUgfCBudWxsPjtcbiAgLy8gQSBsaXN0J3Mgc29ydCwgYnkgY29tcG9uZW50IGlkLCB3aGVuIGl0IGRpZmZlcnMgZnJvbSB0aGUgYXV0aG9yZWQgc29ydCdzXG4gIC8vIGZpcnN0IHRlcm0uXG4gIGxpc3RTb3J0czogTWFwPG51bWJlciwgUmVwb3J0U29ydD47XG4gIC8vIEEgbGlzdCdzIHNlYXJjaCBib3ggdGV4dCwgYnkgY29tcG9uZW50IGlkLiBBIGxpc3Qgd2l0aCBhbiBlbXB0eSBib3ggaXNcbiAgLy8gbGVmdCBvdXQuXG4gIGxpc3RTZWFyY2hlczogTWFwPG51bWJlciwgc3RyaW5nPjtcbiAgLy8gVGhlIGNvbmZpZyBjb2x1bW4gbmFtZXMgYSB2aWV3ZXIgaGlkIG9uIGEgcGxhaW4gbGlzdCwgYnkgY29tcG9uZW50IGlkLiBBXG4gIC8vIGxpc3Qgc2hvd2luZyBldmVyeSBjb2x1bW4gaXMgbGVmdCBvdXQuXG4gIGxpc3RIaWRkZW46IE1hcDxudW1iZXIsIHN0cmluZ1tdPjtcbiAgZnJlcXVlbmN5OiBDaGFydEdyYW51bGFyaXR5IHwgbnVsbDtcbn1cblxuLy8gT25lIHJlc29sdmVkIGZpbHRlciBzZW50IHdpdGggYSBjb21wb25lbnQncyBkYXRhIHJlcXVlc3QuXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVkRmlsdGVyVmFsdWUge1xuICBmaWx0ZXJJZDogbnVtYmVyO1xuICBzdGFydD86IHN0cmluZztcbiAgZW5kPzogc3RyaW5nO1xuICB2YWx1ZXM/OiB1bmtub3duW107XG4gIHZhbHVlPzogc3RyaW5nO1xuICAvLyBkYXRlUmFuZ2Ugb25seTogdGhlIHJlbGF0aXZlIHJhbmdlIHN0YXJ0IGFuZCBlbmQgc3RpbGwgYXJlLCBzZW50IG9ubHlcbiAgLy8gd2hpbGUgdGhleSBhcmUgZXhhY3RseSB0aGF0IHJhbmdlIHJlc29sdmVkIHRvZGF5IGluIHRoZSByZXBvcnQncyB6b25lLiBJdFxuICAvLyB0ZWxscyB0aGUgc2VydmVyIHdoaWNoIHBlcmlvZCB0aGUgZGF5cyBjb3ZlciAob24gdGhlIGZpcnN0IGRheXMgb2YgYVxuICAvLyBxdWFydGVyLCB0aGlzTW9udGggYW5kIHRoaXNRdWFydGVyIGFyZSB0aGUgc2FtZSBkYXlzKSwgc28gYSBjb21wYXJpc29uXG4gIC8vIHNoaWZ0cyBieSB0aGUgcmlnaHQgdW5pdC4gc3RhcnQgYW5kIGVuZCBzdGF5IHRoZSB3aW5kb3c7IGEgc2VydmVyIHRoYXRcbiAgLy8gZG9lcyBub3Qga25vdyB0aGUga2V5IGlnbm9yZXMgaXQuXG4gIHByZXNldD86IFJlcG9ydFJlbGF0aXZlUmFuZ2U7XG59XG5cbi8vIFBlci1jb21wb25lbnQgaW50ZXJhY3Rpb24gc3RhdGUgc2VudCB3aXRoIHRoZSBkYXRhIHJlcXVlc3Q6IGxpc3RzIHNlbmRcbi8vIHNvcnQvcGFnaW5nIGFuZCB0aGUgdGV4dCBpbiB0aGVpciBzZWFyY2ggYm94OyB0aW1lLXNlcmllcyBjaGFydHMgc2VuZCB0aGVcbi8vIGdyYWluIHBpY2tlZCBvbiB0aGUgcmVwb3J0J3MgZ3JvdXAtYnkgY29udHJvbCwgd2hpY2ggb3ZlcnJpZGVzIHRoZSBhdXRob3JlZFxuLy8gZ3JhbnVsYXJpdHkgZm9yIHRoYXQgcmVxdWVzdCBvbmx5LiBUaGUgd2lyZSBrZXkgc3RheXMgYGZyZXF1ZW5jeWAg4oCUIGl0IGlzIHRoZVxuLy8gYnVja2V0aW5nIGZyZXF1ZW5jeSB0aGUgc2VydmVyIGFwcGxpZXMuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudERhdGFTdGF0ZSB7XG4gIHNvcnQ/OiBSZXBvcnRTb3J0O1xuICBwYWdlPzogbnVtYmVyO1xuICBwYWdlU2l6ZT86IG51bWJlcjtcbiAgZnJlcXVlbmN5PzogQ2hhcnRHcmFudWxhcml0eTtcbiAgLy8gQSBsaXN0J3Mgc2VhcmNoIGJveCB0ZXh0LiBUaGUgc2VydmVyIHRyaW1zIGl0LCBjdXRzIGl0IHRvIGl0cyBvd24gbWF4aW11bVxuICAvLyBsZW5ndGggYW5kIG1hdGNoZXMgaXQgYWdhaW5zdCBldmVyeSB0ZXh0IGNvbHVtbiB0aGUgbGlzdCBzaG93cy5cbiAgc2VhcmNoPzogc3RyaW5nO1xuICAvLyBUaGUgY29uZmlnIGNvbHVtbiBuYW1lcyBhIHZpZXdlciBoaWQgb24gYSBwbGFpbiBsaXN0LiBTZW50IHdpdGggYSBDU1ZcbiAgLy8gZXhwb3J0IG9ubHkgKHRoZSBzY3JlZW4gaGlkZXMgdGhlbSBpdHNlbGYpOiB0aGUgZmlsZSBsZWF2ZXMgdGhlbSBvdXQuIFRoZVxuICAvLyBzZXJ2ZXIgaWdub3JlcyBpdCBvbiBhIGNyb3NzLXRhYiwgYW5kIHdoZW4gaXQgd291bGQgaGlkZSBldmVyeSBjb2x1bW4uXG4gIGhpZGRlbkNvbHVtbnM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnREYXRhIHtcbiAgY29sdW1uczogc3RyaW5nW107XG4gIHJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107XG4gIHBhZ2luZz86IHsgdG90YWw6IG51bWJlcjsgcGFnZTogbnVtYmVyOyBwYWdlU2l6ZTogbnVtYmVyIH07XG4gIHRydW5jYXRlZDogYm9vbGVhbjtcbiAgLy8gVGhlIGVmZmVjdGl2ZSB0aW1lIGJ1Y2tldCB0aGUgcm93cyB3ZXJlIGdyb3VwZWQgaW50byAoYWZ0ZXIgYW55IGdyb3VwLWJ5XG4gIC8vIG92ZXJyaWRlKSwgb3IgbnVsbCBmb3IgYSBub24tdGltZSBheGlzLiBEcml2ZXMgdGhlIGNvbXBhY3QgeC1heGlzIGxhYmVscy5cbiAgZ3JhbnVsYXJpdHk/OiBDaGFydEdyYW51bGFyaXR5IHwgbnVsbDtcbiAgLy8gUGFnZSAxIG9mIGEgc2VhcmNoZWQgbGlzdCB3aG9zZSBzZWFyY2ggY291bGQgbm90IGFwcGx5ICh0aGUgbGlzdCBoYXMgbm9cbiAgLy8gdGV4dCBjb2x1bW4gdG8gc2VhcmNoKTogd2h5IHRoZSByb3dzIGFyZSBub3QgbmFycm93ZWQuIEFic2VudCBvdGhlcndpc2UuXG4gIHNlYXJjaE5vdGU/OiBzdHJpbmcgfCBudWxsO1xuICAvLyBQYWdlIDEgb2YgYSBsaXN0IHdpdGggY29uZmlnLnRvdGFscyBvbjogaXRzIHRvdGFscyByb3csIGFzIHJhdyB2YWx1ZXNcbiAgLy8ga2V5ZWQgbGlrZSB0aGUgY29sdW1ucyAoYSBwbGFpbiBsaXN0J3MgbWVhc3VyZSBhbGlhc2VzOyBhIGNyb3NzLXRhYidzXG4gIC8vIHBpdm90IGNlbGwgY29sdW1ucywgdGhlIHJvdy1rZXkgY29sdW1uIGFic2VudCksIG9yIG51bGwgd2l0aCB0b3RhbHNOb3RlXG4gIC8vIHNheWluZyB3aHkgdGhlcmUgaXMgbm9uZS4gQWJzZW50IG9uIGV2ZXJ5IG90aGVyIHBhZ2UgYW5kIGxpc3QuXG4gIHRvdGFscz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbDtcbiAgdG90YWxzTm90ZT86IHN0cmluZyB8IG51bGw7XG4gIC8vIFRoZSB3aW5kb3cgb2YgZGF5cyB0aGUgY29tcG9uZW50IHJlYWRzLCB3aGVuIGl0cyBxdWVyeSBoYXMgYSB0aW1lZnJhbWUuXG4gIC8vIEFic2VudCBvdGhlcndpc2UsIGFuZCBmcm9tIG9sZGVyIHNlcnZlcnMuXG4gIHRpbWVmcmFtZT86IENvbXBvbmVudFRpbWVmcmFtZSB8IG51bGw7XG4gIC8vIFRoZSBjdXJyZW50IGFuZCBwcmlvciB3aW5kb3dzIG9mIGEgY29tcG9uZW50IHdob3NlIG1lYXN1cmVzIGNvbXBhcmVcbiAgLy8gYWdhaW5zdCBhbiBlYXJsaWVyIHBlcmlvZC4gQWJzZW50IHdoZW4gbm8gbWVhc3VyZSBjb21wYXJlcy4gU2VudCBvbiBldmVyeVxuICAvLyBsaXN0IHBhZ2UgYW5kIG9uIGNoYXJ0IGFuZCBLUEkgZGF0YS5cbiAgY29tcGFyaXNvbj86IENvbXBvbmVudENvbXBhcmlzb24gfCBudWxsO1xuICAvLyBXaGF0IGVhY2ggY29tcGFyZWQsIHdpbmRvd2VkLCByYW5rZWQgb3Igc2hhcmVkIG91dHB1dCBjb2x1bW4gaXMsIGJ5IGFsaWFzLlxuICAvLyBQbGFpbiBtZWFzdXJlIGNvbHVtbnMgYXJlIGxlZnQgb3V0LlxuICBvdXRwdXRzPzogUmVjb3JkPHN0cmluZywgT3V0cHV0TWV0YT47XG4gIC8vIEEgY3Jvc3MtdGFiIG9ubHk6IHRoZSBtZWFzdXJlIGFsaWFzIGVhY2ggcGl2b3QgY2VsbCBjb2x1bW4gaG9sZHMsIHNvIGFcbiAgLy8gY2VsbCB0YWtlcyBpdHMgbWVhc3VyZSdzIG91dHB1dCBtZWFuaW5nLiBOZXZlciBzZW50IGZvciBhIHNxbC1tb2RlIGxpc3QuXG4gIGNlbGxNZWFzdXJlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8vIEhvdyBlYWNoIHdpbmRvd2VkIG91dHB1dCBjb2x1bW4gKHJ1bm5pbmcsIHRvLWRhdGUgb3Igcm9sbGluZykgd2FzXG4gIC8vIGNvbXB1dGVkLCBieSBhbGlhcy5cbiAgd2luZG93cz86IFJlY29yZDxzdHJpbmcsIFdpbmRvd01ldGE+O1xuICAvLyBBIEtQSSB3aXRoIGEgY29tcGFyaXNvbiwgYSB0YXJnZXQgb3IgYSBzcGFya2xpbmU6IGV2ZXJ5IG51bWJlciB0aGUgY2FyZFxuICAvLyBzaG93cyBiZXNpZGUgaXRzIHZhbHVlLCBkZWNpZGVkIGJ5IHRoZSBzZXJ2ZXIuXG4gIGtwaT86IENvbXBvbmVudEtwaSB8IG51bGw7XG4gIC8vIFRoZSB0aW1lLWF4aXMgdmFsdWUgb2YgdGhlIGJ1Y2tldCBjb250YWluaW5nIHRvZGF5LCB3cml0dGVuIGFzIHRoZSByb3dzXG4gIC8vIHdyaXRlIGl0LCB3aGVuIHRoYXQgYnVja2V0IGlzIG5vdCBmaW5pc2hlZCB5ZXQ7IG51bGwgb3RoZXJ3aXNlLiBBIGNoYXJ0XG4gIC8vIG1hcmtzIGl0IGFzIHBhcnRpYWwuXG4gIHBhcnRpYWxQZXJpb2Q/OiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBXaGVyZSBhIGNvbXBvbmVudCdzIHRpbWVmcmFtZSB3aW5kb3cgY2FtZSBmcm9tOiBhIHZpZXdlciBkYXRlUmFuZ2UgYm91bmQgdG9cbi8vIHRoZSB0aW1lZnJhbWUgY29sdW1uICh3aGljaCByZXBsYWNlcyB0aGUgYXV0aG9yZWQgcmFuZ2UsIG5ldmVyIG5hcnJvd3Ncbi8vIGl0KSwgdGhlIGF1dGhvcmVkIHJlbGF0aXZlIHJhbmdlLCB0aGUgYXV0aG9yZWQgZml4ZWQgZGF5cywgb3Igbm90aGluZyAoYW5cbi8vIG9wZW4gd2luZG93KS5cbmV4cG9ydCB0eXBlIFRpbWVmcmFtZVNvdXJjZSA9ICdmaWx0ZXInIHwgJ3JhbmdlJyB8ICdmaXhlZCcgfCAnbm9uZSc7XG5cbi8vIFRoZSB3aW5kb3cgYSBjb21wb25lbnQncyB0aW1lZnJhbWUgcmVzb2x2ZWQgdG8uIHN0YXJ0IGFuZCBlbmQgYXJlXG4vLyBpbmNsdXNpdmUgJ3l5eXktTU0tZGQnIGRheXMgaW4gdGhlIHJlcG9ydCdzIHpvbmUsIHdyaXR0ZW4gd2l0aG91dCBhIHpvbmUuXG4vLyB0aHJvdWdoIGlzIHRoZSBVVEMgJ3l5eXktTU0tZGQgSEg6bW06c3MnIGluc3RhbnQgYSB3aW5kb3cgb24gYSBkYXRldGltZVxuLy8gY29sdW1uIGlzIGN1dCBhdDsgaXQgcmVhZHMgYXMgYSB0aW1lIGluIHRoZSByZXBvcnQgem9uZS4gSXQgaXMgc2V0IG9ubHkgd2hlblxuLy8gYSBjb21wYXJpc29uIGN1dHMgYSB3aW5kb3cgdGhhdCBlbmRzIHRvZGF5OiBhIHRpbWVmcmFtZSBvbiBpdHMgb3duIHJlYWRzXG4vLyB3aG9sZSBkYXlzLCBzbyBhIHdpbmRvdyBlbmRpbmcgdG9kYXkgd2l0aG91dCBhIGNvbXBhcmlzb24gc2VuZHMgbnVsbC5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50VGltZWZyYW1lIHtcbiAgY29sdW1uOiBzdHJpbmc7XG4gIHN0YXJ0OiBzdHJpbmcgfCBudWxsO1xuICBlbmQ6IHN0cmluZyB8IG51bGw7XG4gIHRocm91Z2g6IHN0cmluZyB8IG51bGw7XG4gIHJhbmdlOiBSZXBvcnRSZWxhdGl2ZVJhbmdlIHwgbnVsbDtcbiAgc291cmNlOiBUaW1lZnJhbWVTb3VyY2U7XG59XG5cbi8vIEhvdyBhIGNvbXBhcmlzb24gaXMgbGFpZCBvdXQ6IG9uZSB2YWx1ZSBwZXIgd2luZG93IChyYW5nZSksIGEgcHJpb3Igc2VyaWVzXG4vLyBiZXNpZGUgYSB0aW1lIGF4aXMgKHNlcmllcyksIG9yIGVhY2ggcGVyaW9kJ3MgdmFsdWUgcmVhZCBhdCBpdHMgZW5kLCBzZXRcbi8vIGFnYWluc3QgdGhlIHZhbHVlIGF0IHRoZSBlbmQgb2YgYW4gZWFybGllciBwZXJpb2QgKHBlcmlvZF9lbmQpLlxuZXhwb3J0IHR5cGUgQ29tcGFyaXNvbk1vZGUgPSAncmFuZ2UnIHwgJ3NlcmllcycgfCAncGVyaW9kX2VuZCc7XG5cbi8vIHRvX2RhdGUgY29tcGFyZXMgbGlrZSB3aXRoIGxpa2UgKHRoZSBmaXJzdCAyIGRheXMgb2YgYSBtb250aCBhZ2FpbnN0IHRoZVxuLy8gZmlyc3QgMiBkYXlzIG9mIHRoZSBvbmUgYmVmb3JlKTsgZnVsbCBjb21wYXJlcyB3aG9sZSBwZXJpb2RzLlxuZXhwb3J0IHR5cGUgQ29tcGFyaXNvbkFsaWduID0gJ3RvX2RhdGUnIHwgJ2Z1bGwnO1xuXG4vLyBXaGF0IGEgbWVhc3VyZSBpcyBjb21wYXJlZCBhZ2FpbnN0LiBNaXJyb3JzIHRoZSBzZXJ2ZXInc1xuLy8gQ29tcGFyaXNvbkFnYWluc3RFbnVtIHZhbHVlIGZvciB2YWx1ZS5cbmV4cG9ydCB0eXBlIENvbXBhcmlzb25BZ2FpbnN0ID1cbiAgfCAncHJldmlvdXNfcGVyaW9kJ1xuICB8ICdwcmV2aW91c193ZWVrJ1xuICB8ICdwcmV2aW91c19tb250aCdcbiAgfCAncHJldmlvdXNfcXVhcnRlcidcbiAgfCAncHJldmlvdXNfeWVhcidcbiAgfCAncmFuZ2UnO1xuXG4vLyBXaHkgYSBjb21wYXJpc29uIHJlYWRzIGFzIGl0IGRvZXMuIFRoZSBzZXJ2ZXIgc2VuZHMgY29kZXMsIG5ldmVyXG4vLyBzZW50ZW5jZXM7IHRoZSB2aWV3ZXIgd29yZHMgdGhlbS5cbi8vIC0gbm9fd2luZG93OiBubyBkYXRlIHJhbmdlIHRvIGNvbXBhcmUgeWV0O1xuLy8gLSB1bml0X2luZmVycmVkOiB0aGUgcGVyaW9kIHVuaXQgd2FzIGluZmVycmVkIGZyb20gdGhlIGRheXMsIG5vdCBuYW1lZDtcbi8vIC0gd2luZG93X2luX2Z1dHVyZTogdGhlIHdpbmRvdyBzdGFydHMgYWZ0ZXIgdG9kYXk7XG4vLyAtIG90aGVyX2RhdGVfZmlsdGVyOiBhIGRhdGUgZmlsdGVyIG9uIGFub3RoZXIgY29sdW1uIGFsc28gYXBwbGllcztcbi8vIC0gZ3JhaW5fZm9sbG93ZWQ6IHRoZSBwcmlvciBmb2xsb3dzIHRoZSBncm91cC1ieSBncmFpbiBwaWNrZWQgb24gdGhlIHJlcG9ydC5cbmV4cG9ydCB0eXBlIENvbXBhcmlzb25Ob3RlQ29kZSA9XG4gIHwgJ25vX3dpbmRvdydcbiAgfCAndW5pdF9pbmZlcnJlZCdcbiAgfCAnd2luZG93X2luX2Z1dHVyZSdcbiAgfCAnb3RoZXJfZGF0ZV9maWx0ZXInXG4gIHwgJ2dyYWluX2ZvbGxvd2VkJztcblxuLy8gT25lIGNvbXBhcmlzb24gd2luZG93OiBpbmNsdXNpdmUgJ3l5eXktTU0tZGQnIGRheXMgaW4gdGhlIHJlcG9ydCdzIHpvbmUsXG4vLyBhbmQgdGhlIFVUQyBpbnN0YW50IGl0IGlzIGN1dCBhdCB3aGVuIGl0IGVuZHMgdG9kYXkgb24gYSBkYXRldGltZSBjb2x1bW4uXG4vLyBJbiBzZXJpZXMgbW9kZSBpdCBpcyB0aGUgc3BhbiB0aGUgY2hhcnQgc2hvd3MuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBhcmlzb25XaW5kb3cge1xuICBzdGFydDogc3RyaW5nO1xuICBlbmQ6IHN0cmluZztcbiAgdGhyb3VnaDogc3RyaW5nIHwgbnVsbDtcbn1cblxuLy8gSG93IGZhciBiYWNrIG9uZSBwcmlvciBsYW5lIHNpdHMuIEEgY3VzdG9tIHJhbmdlIGhhcyBubyB1bml0IG9yIGNvdW50LCBhbmRcbi8vIG5laXRoZXIgZG9lcyBwcmV2aW91c19wZXJpb2Qgd2hlbiB0aGVyZSBpcyBubyBjdXJyZW50IHdpbmRvdyB0byBtZWFzdXJlXG4vLyAobm9fd2luZG93LCB3aW5kb3dfaW5fZnV0dXJlKTsgYSBzaGlmdCBieSB0aGUgd2luZG93J3MgbGVuZ3RoIGlzIHVuaXQgZGF5XG4vLyB3aXRoIHRoZSBsZW5ndGggYXMgdGhlIGNvdW50OyBhIHByZXZpb3VzIHllYXIgaXMgMzY0IGRheXMgb24gYSBkYXkgYXhpcyBhbmRcbi8vIDUyIHdlZWtzIG9uIGEgd2VlayBheGlzLlxuZXhwb3J0IGludGVyZmFjZSBDb21wYXJpc29uT2Zmc2V0IHtcbiAgYWdhaW5zdDogQ29tcGFyaXNvbkFnYWluc3Q7XG4gIHVuaXQ6IENoYXJ0R3JhbnVsYXJpdHkgfCBudWxsO1xuICBjb3VudDogbnVtYmVyIHwgbnVsbDtcbn1cblxuLy8gQSBjb21wb25lbnQncyBjb21wYXJpc29uOiB0aGUgem9uZSBpdHMgZGF5cyBhcmUgaW4sIHRoZSBjdXJyZW50IHdpbmRvd1xuLy8gKG51bGwgd2hlbiB0aGVyZSBpcyBubyB3aW5kb3cgdG8gY29tcGFyZSB5ZXQsIG9yIHdoZW4gYSB0aW1lIGF4aXMgcnVuc1xuLy8gb3ZlciBhbGwgdGhlIGRhdGEsIHdoaWNoIGhhcyBubyBmaXJzdCBkYXkgdG8gbmFtZSkgYW5kIHVwIHRvIDIgcHJpb3Jcbi8vIGxhbmVzOiBvZmZzZXRzW2ldIGRlc2NyaWJlcyBsYW5lIGkgKyAxLCBhbmQgcHJpb3JzW2ldIGl0cyB3aW5kb3cuIFdpdGggbm9cbi8vIGN1cnJlbnQgd2luZG93IHByaW9ycyBpcyBlbXB0eSwgd2hpbGUgb2Zmc2V0cyBzdGlsbCBuYW1lcyBldmVyeSBsYW5lLlxuLy8gZmxvb3IgaXMgdGhlICd5eXl5LU1NLWRkJyBkYXkgb2YgdGhlIGZpcnN0IHJvdyB0aGUgcXVlcnkncyBvd24gY29uZGl0aW9uc1xuLy8ga2VlcCAodmlld2VyIGZpbHRlcnMgYXNpZGUpOiBhIHByaW9yIHdpbmRvdyB3aG9sbHkgYmVmb3JlIGl0IGhhcyBubyBkYXRhXG4vLyByYXRoZXIgdGhhbiBhIHplcm8uXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudENvbXBhcmlzb24ge1xuICBtb2RlOiBDb21wYXJpc29uTW9kZTtcbiAgdGltZXpvbmU6IHN0cmluZztcbiAgYWxpZ246IENvbXBhcmlzb25BbGlnbjtcbiAgY3VycmVudDogQ29tcGFyaXNvbldpbmRvdyB8IG51bGw7XG4gIHByaW9yczogQ29tcGFyaXNvbldpbmRvd1tdO1xuICBvZmZzZXRzOiBDb21wYXJpc29uT2Zmc2V0W107XG4gIGZsb29yOiBzdHJpbmcgfCBudWxsO1xuICBub3RlczogQ29tcGFyaXNvbk5vdGVDb2RlW107XG59XG5cbi8vIFdoYXQgYW4gb3V0cHV0IGNvbHVtbiBob2xkczogYSBtZWFzdXJlJ3MgdmFsdWUsIGl0cyByYW5rIG9yIGl0cyBzaGFyZS5cbmV4cG9ydCB0eXBlIE91dHB1dEtpbmQgPSAndmFsdWUnIHwgJ3JhbmsnIHwgJ3NoYXJlJztcblxuLy8gV2hpY2ggc2lkZSBvZiBhIGNvbXBhcmlzb24gYW4gb3V0cHV0IGNvbHVtbiBpczogdGhlIGN1cnJlbnQgdmFsdWUsIHRoZVxuLy8gcHJpb3Igb25lLCB0aGVpciBkaWZmZXJlbmNlLCBvciB0aGUgZGlmZmVyZW5jZSBhcyBhIDAtMSBmcmFjdGlvbiBvZiB0aGVcbi8vIHByaW9yLiBudWxsIGZvciBhbiBvdXRwdXQgdGhhdCBpcyBub3QgY29tcGFyZWQuXG5leHBvcnQgdHlwZSBPdXRwdXRSb2xlID0gJ2N1cnJlbnQnIHwgJ3ByaW9yJyB8ICdjaGFuZ2UnIHwgJ3BlcmNlbnRfY2hhbmdlJztcblxuLy8gSG93IHRpZWQgdmFsdWVzIHJhbms6IDEsIDEsIDMgKGNvbXBldGl0aW9uKSBvciAxLCAxLCAyIChkZW5zZSkuXG5leHBvcnQgdHlwZSBPdXRwdXRSYW5rTWV0aG9kID0gJ2NvbXBldGl0aW9uJyB8ICdkZW5zZSc7XG5cbi8vIEEgcmFuayBvdXRwdXQ6IGhvdyB0aWVzIHJhbmssIHdoaWNoIGVuZCByYW5rcyAxIChkZXNjOiB0aGUgbGFyZ2VzdCksIGFuZFxuLy8gdGhlIGRpbWVuc2lvbiBvdXRwdXRzIGl0IHJlc3RhcnRzIHdpdGhpbiAobm9uZTogdGhlIHdob2xlIHJlc3VsdCkuXG5leHBvcnQgaW50ZXJmYWNlIE91dHB1dFJhbmsge1xuICBtZXRob2Q6IE91dHB1dFJhbmtNZXRob2Q7XG4gIGRpcmVjdGlvbjogJ2FzYycgfCAnZGVzYyc7XG4gIHdpdGhpbjogc3RyaW5nW107XG59XG5cbi8vIEEgc2hhcmUgb3V0cHV0OiB0aGUgZGltZW5zaW9uIG91dHB1dHMgd2hvc2UgdG90YWwgaXQgaXMgYSBzaGFyZSBvZiAobm9uZTpcbi8vIHRoZSB3aG9sZSByZXN1bHQpLlxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXRTaGFyZSB7XG4gIHdpdGhpbjogc3RyaW5nW107XG59XG5cbi8vIFRoZSBtZWFuaW5nIG9mIG9uZSBjb21wYXJlZCwgd2luZG93ZWQsIHJhbmtlZCBvciBzaGFyZWQgb3V0cHV0IGNvbHVtbi5cbi8vIG1lYXN1cmUgaXMgdGhlIHNvdXJjZSBtZWFzdXJlJ3MgYWxpYXMsIHdob3NlIGZvcm1hdCB0aGUgY29sdW1uIGluaGVyaXRzO1xuLy8gb2Zmc2V0IGlzIHRoZSBwcmlvciBsYW5lIGEgcHJpb3IsIGNoYW5nZSBvciBwZXJjZW50IGNoYW5nZSBiZWxvbmdzIHRvIChpdHNcbi8vIHdpbmRvdyBpcyBjb21wYXJpc29uLnByaW9yc1tvZmZzZXQgLSAxXSkuIFVubGVzcyB0aGUgY29uZmlnIGZvcm1hdHMgaXQsIGFcbi8vIHNoYXJlIHByaW50cyBhcyBhIHBlcmNlbnQgdG8gMSBkZWNpbWFsIGFuZCBhIHJhbmsgYXMgYSB3aG9sZSBudW1iZXIuXG5leHBvcnQgaW50ZXJmYWNlIE91dHB1dE1ldGEge1xuICBtZWFzdXJlOiBzdHJpbmc7XG4gIGtpbmQ6IE91dHB1dEtpbmQ7XG4gIHJvbGU6IE91dHB1dFJvbGUgfCBudWxsO1xuICBvZmZzZXQ6IG51bWJlciB8IG51bGw7XG4gIHdpbmRvdzogYm9vbGVhbjtcbiAgcmFuazogT3V0cHV0UmFuayB8IG51bGw7XG4gIHNoYXJlOiBPdXRwdXRTaGFyZSB8IG51bGw7XG59XG5cbi8vIEEgd2luZG93IG92ZXIgdGhlIHJvd3M6IGEgcnVubmluZyB0b3RhbCwgYSB0b3RhbCB0byBkYXRlIHdpdGhpbiBlYWNoXG4vLyBwZXJpb2QgKG1vbnRoIHRvIGRhdGUpLCBvciBhIHJvbGxpbmcgc3BhbiBvZiBwZXJpb2RzLlxuZXhwb3J0IHR5cGUgV2luZG93S2luZCA9ICdydW5uaW5nJyB8ICd0b19kYXRlJyB8ICdyb2xsaW5nJztcblxuLy8gV2h5IGEgd2luZG93IHJlYWRzIGFzIGl0IGRvZXMuIENvZGVzIG9ubHk7IHRoZSB2aWV3ZXIgd29yZHMgdGhlbS5cbmV4cG9ydCB0eXBlIFdpbmRvd05vdGVDb2RlID1cbiAgfCAnc25hcHBlZF9zdGFydCdcbiAgfCAnc3Bhbl9jb252ZXJ0ZWQnXG4gIHwgJ2dyYWluX3Rvb19jb2Fyc2UnXG4gIHwgJ2VxdWFsX2dyYWluX3BsYWluJ1xuICB8ICdvd25fZmlsdGVyX2NhcHNfbGVhZF9pbidcbiAgfCAnd2Vla19ieV9tb25kYXknXG4gIHwgJ2luY29tcGxldGVfaGVhZCc7XG5cbi8vIEhvdyBvbmUgd2luZG93ZWQgb3V0cHV0IGNvbHVtbiB3YXMgY29tcHV0ZWQuIHBlcmlvZHMgYW5kIHVuaXQgc2l6ZSBhXG4vLyByb2xsaW5nIHdpbmRvdyAoZHJhd25QZXJpb2RzIGlzIHRoYXQgc3BhbiBjb3VudGVkIGluIHRoZSBncmFpbiB0aGUgcm93c1xuLy8gYXJlIGRyYXduIGF0KTsgcmVzZXRFdmVyeSByZXN0YXJ0cyBhIHRvLWRhdGUgd2luZG93OyBhdmVyYWdlIG1ha2VzIHRoZVxuLy8gd2luZG93IGFuIGF2ZXJhZ2UgcmF0aGVyIHRoYW4gYSB0b3RhbDsgZnJvbUJlZ2lubmluZ1xuLy8gcnVucyBhIHRvdGFsIGZyb20gdGhlIGZpcnN0IHJvdyBldmVyIHJhdGhlciB0aGFuIGZyb20gdGhlIGZpcnN0IHJvdyBzaG93bi5cbi8vIHN0YXJ0LCBlbmQgYW5kIGxlYWRJbiBhcmUgJ3l5eXktTU0tZGQnIHJlcG9ydC16b25lIGRheXM6IHRoZSByb3dzIHNob3duLFxuLy8gYW5kIHRoZSBlYXJsaWVyIGRheSB0aGUgd2luZG93IHJlYWRzIGZyb20gc28gaXRzIGZpcnN0IHJvd3MgYXJlIHdob2xlLlxuLy8gZGVzY3JpcHRpb24gaXMgdGhlIHNlcnZlcidzIEVuZ2xpc2ggZm9yIHRoZSBhZ2VudCBhbmQgdGhlIGV4cG9ydHM7IHRoZVxuLy8gdmlld2VyIGNvbXBvc2VzIGl0cyBvd24gd29yZHMgZnJvbSB0aGUgZmllbGRzLlxuZXhwb3J0IGludGVyZmFjZSBXaW5kb3dNZXRhIHtcbiAga2luZDogV2luZG93S2luZDtcbiAgcGVyaW9kczogbnVtYmVyIHwgbnVsbDtcbiAgdW5pdDogQ2hhcnRHcmFudWxhcml0eSB8IG51bGw7XG4gIGRyYXduUGVyaW9kczogbnVtYmVyIHwgbnVsbDtcbiAgcmVzZXRFdmVyeTogQ2hhcnRHcmFudWxhcml0eSB8IG51bGw7XG4gIGF2ZXJhZ2U6IGJvb2xlYW47XG4gIGZyb21CZWdpbm5pbmc6IGJvb2xlYW47XG4gIGRhdGVDb2x1bW46IHN0cmluZyB8IG51bGw7XG4gIHN0YXJ0OiBzdHJpbmcgfCBudWxsO1xuICBlbmQ6IHN0cmluZyB8IG51bGw7XG4gIGxlYWRJbjogc3RyaW5nIHwgbnVsbDtcbiAgbm90ZXM6IFdpbmRvd05vdGVDb2RlW107XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG59XG5cbi8vIFdoaWNoIGRlbHRhIGEgS1BJIGNhcmQgc2hvd3M6IHRoZSBkaWZmZXJlbmNlLCBvciB0aGUgcGVyY2VudCBjaGFuZ2UuXG5leHBvcnQgdHlwZSBLcGlEZWx0YVNob3cgPSAnY2hhbmdlJyB8ICdwZXJjZW50X2NoYW5nZSc7XG5cbi8vIFdoeSBhIEtQSSdzIGRlbHRhIHJlYWRzIGFzIGl0IGRvZXM6XG4vLyAtIG5vX3ByaW9yX2RhdGE6IHRoZSBwcmlvciB3aW5kb3cgaGFzIG5vIHZhbHVlO1xuLy8gLSB1cF9mcm9tX3plcm86IHRoZSBwcmlvciB3YXMgMCwgc28gdGhlcmUgaXMgbm8gcGVyY2VudCBjaGFuZ2U7XG4vLyAtIG5vX2NoYW5nZTogYm90aCBhcmUgMDtcbi8vIC0gbm9fZGF0YV9laXRoZXI6IG5laXRoZXIgd2luZG93IGhhcyBhIHZhbHVlO1xuLy8gLSBzaWduX2NoYW5nZTogdGhlIHZhbHVlIGNyb3NzZWQgemVybywgc28gdGhlcmUgaXMgbm8gcGVyY2VudCBjaGFuZ2UuXG5leHBvcnQgdHlwZSBLcGlOb3RlQ29kZSA9XG4gIHwgJ25vX3ByaW9yX2RhdGEnXG4gIHwgJ3VwX2Zyb21femVybydcbiAgfCAnbm9fY2hhbmdlJ1xuICB8ICdub19kYXRhX2VpdGhlcidcbiAgfCAnc2lnbl9jaGFuZ2UnO1xuXG4vLyBBIEtQSSdzIHByb2dyZXNzIHRvd2FyZCBpdHMgY29uZmlndXJlZCB0YXJnZXQuIHByb2dyZXNzIGlzIHZhbHVlIC8gdGFyZ2V0XG4vLyAobnVsbCB3aGVuIHRoZSB0YXJnZXQgaXMgMCk7IG1ldCBmb2xsb3dzIHRoZSBjb25maWcncyBpbmNyZWFzZUlzIChudWxsXG4vLyB3aGVuIGl0IGlzIG5ldXRyYWwpLlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRLcGlUYXJnZXQge1xuICB2YWx1ZTogbnVtYmVyO1xuICBsYWJlbDogc3RyaW5nIHwgbnVsbDtcbiAgcHJvZ3Jlc3M6IG51bWJlciB8IG51bGw7XG4gIG1ldDogYm9vbGVhbiB8IG51bGw7XG59XG5cbi8vIE9uZSBzcGFya2xpbmUgcG9pbnQ6IHRoZSBwZXJpb2QsIHdyaXR0ZW4gYXMgYSB0aW1lLWF4aXMgdmFsdWUsIGFuZCB0aGVcbi8vIHZhbHVlIGluIGl0IChudWxsIHdoZW4gYSBub24tYWRkaXRpdmUgbWVhc3VyZSBoYXMgbm8gcm93cyB0aGVyZSkuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudEtwaVNwYXJrbGluZVBvaW50IHtcbiAgcGVyaW9kOiBzdHJpbmc7XG4gIHZhbHVlOiBudW1iZXIgfCBudWxsO1xufVxuXG4vLyBBIEtQSSdzIHNwYXJrbGluZSBwb2ludHMsIG9sZGVzdCBmaXJzdC4gcGFydGlhbCBzYXlzIHRoZSBsYXN0IHBlcmlvZCBpc1xuLy8gbm90IGZpbmlzaGVkIHlldC5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50S3BpU3BhcmtsaW5lIHtcbiAgZ3JhbnVsYXJpdHk6IENoYXJ0R3JhbnVsYXJpdHk7XG4gIHBhcnRpYWw6IGJvb2xlYW47XG4gIHBvaW50czogQ29tcG9uZW50S3BpU3BhcmtsaW5lUG9pbnRbXTtcbn1cblxuLy8gRXZlcnkgbnVtYmVyIGEgS1BJIGNhcmQgc2hvd3MgYmVzaWRlIGl0cyB2YWx1ZS4gc2hvdyBuYW1lcyB0aGUgZGVsdGEgdG9cbi8vIHByaW50LCBkZWNpZGVkIGJ5IHRoZSBzZXJ2ZXIuIFdoZW4gdmFsdWUgaXMgbnVsbCB0aGUgY2FyZCBzaG93cyBhIGRhc2ggYW5kXG4vLyBubyBjb21wYXJpc29uLlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRLcGkge1xuICB2YWx1ZTogbnVtYmVyIHwgbnVsbDtcbiAgcHJpb3I6IG51bWJlciB8IG51bGw7XG4gIGNoYW5nZTogbnVtYmVyIHwgbnVsbDtcbiAgcGVyY2VudENoYW5nZTogbnVtYmVyIHwgbnVsbDtcbiAgc2hvdzogS3BpRGVsdGFTaG93O1xuICBub3RlOiBLcGlOb3RlQ29kZSB8IG51bGw7XG4gIHRhcmdldDogQ29tcG9uZW50S3BpVGFyZ2V0IHwgbnVsbDtcbiAgc3BhcmtsaW5lOiBDb21wb25lbnRLcGlTcGFya2xpbmUgfCBudWxsO1xufVxuXG4vLyBBIGNvbXBvbmVudCdzIENTViBleHBvcnQ6IHRoZSBwcmVzaWduZWQgZG93bmxvYWQgVVJMLCBwbHVzIG9uZSBzZW50ZW5jZSBwZXJcbi8vIHdheSB0aGUgZmlsZSBmYWxscyBzaG9ydCBvZiB0aGUgZnVsbCByZXN1bHQgKGN1dCBhdCB0aGUgZXhwb3J0IGNlaWxpbmcsIG9yXG4vLyBjdXQgYXMgdGhlIGNoYXJ0IGl0c2VsZiBpcykuIEVtcHR5IHdoZW4gdGhlIGZpbGUgaXMgY29tcGxldGUuIE9wdGlvbmFsXG4vLyBiZWNhdXNlIGEgc2VydmVyIG9uIGFuIG9sZGVyIGZyYW1ld29yayBhbnN3ZXJzIHdpdGggdGhlIHVybCBhbG9uZS5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50RXhwb3J0UmVzcG9uc2Uge1xuICB1cmw6IHN0cmluZztcbiAgbm90ZXM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRMaXN0SXRlbSB7XG4gIGlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgbW9kaWZ5RGF0ZTogc3RyaW5nO1xuICBzdGF0ZT86IFJlcG9ydFN0YXRlO1xuICAvLyBUaGUgZm9sZGVyIHRoZSByZXBvcnQgaXMgZmlsZWQgdW5kZXIuIG51bGwgaXMgYSByZWFsLCBjb21tb24gdmFsdWUg4oCUIHRoZVxuICAvLyByZXBvcnQgc2l0cyBhdCB0aGUgcm9vdCBvZiB0aGUgbGlzdGluZyB0cmVlIGFsb25nc2lkZSB0aGUgZm9sZGVycy5cbiAgLy9cbiAgLy8gT3B0aW9uYWwgbGlrZSBgc3RhdGVgIGJlc2lkZSBpdDogdGhlIGJhY2tlbmQgYWx3YXlzIHNlbmRzIGl0LCBidXQgbWFraW5nIGl0XG4gIC8vIHJlcXVpcmVkIGlzIGEgYnJlYWtpbmcgdHlwZSBjaGFuZ2UgZm9yIGV2ZXJ5IGNvbnN1bWVyIGhvbGRpbmcgYVxuICAvLyBSZXBvcnRMaXN0SXRlbSBsaXRlcmFsIChmaXh0dXJlcywgbW9ja3MpIGFuZCBidXlzIG5vdGhpbmcg4oCUIHRoZSBsaXN0aW5nXG4gIC8vIHJlYWRzIGl0IGFzIGA/PyBudWxsYCBlaXRoZXIgd2F5LlxuICByZXBvcnRGb2xkZXJJZD86IG51bWJlciB8IG51bGw7XG59XG5cbi8vIE9uZSBmb2xkZXIgaW4gdGhlIGxpc3RpbmcgdHJlZSDigJQgYW4gYXVkaWVuY2UgYnVja2V0IChcIk1hbmFnZW1lbnRcIixcbi8vIFwiT3BlcmF0aW9uc1wiKSByZXBvcnRzIGFyZSBmaWxlZCBpbnRvLiBGb2xkZXJzIG5lc3QgdmlhIHBhcmVudFJlcG9ydEZvbGRlcklkO1xuLy8gcmVwb3J0cyBuZXZlciBkbywgc28gdGhlIHRyZWUncyBvbmx5IGJyYW5jaCBub2RlcyBhcmUgZm9sZGVycy5cbi8vXG4vLyBgc3RhdGVgIGlzIHRoZSBmb2xkZXIncyBPV04gc3RhdGUuIERlbGV0aW5nIGEgZm9sZGVyIHdyaXRlcyBvbmx5IHRoYXQsIGFuZFxuLy8gZXZlcnl0aGluZyBiZWxvdyBpdCBjb3VudHMgYXMgZGVsZXRlZCBieSBwb3NpdGlvbiDigJQgc2VlIFJlcG9ydE5vZGUuZGVsZXRlZC5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Rm9sZGVyIHtcbiAgaWQ6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICBwYXJlbnRSZXBvcnRGb2xkZXJJZDogbnVtYmVyIHwgbnVsbDtcbiAgc3RhdGU/OiBSZXBvcnRTdGF0ZTtcbn1cblxuLy8gR0VUIC9hcGkvcmVwb3J0cyByZXR1cm5zIGJvdGggaGFsdmVzIGZsYXQ7IHRoZSBsaXN0aW5nIG5lc3RzIHRoZW0gaXRzZWxmLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRUcmVlIHtcbiAgcmVwb3J0czogUmVwb3J0TGlzdEl0ZW1bXTtcbiAgZm9sZGVyczogUmVwb3J0Rm9sZGVyW107XG59XG5cbmV4cG9ydCBlbnVtIFJlcG9ydE5vZGVUeXBlIHtcbiAgRm9sZGVyID0gJ2ZvbGRlcicsXG4gIFJlcG9ydCA9ICdyZXBvcnQnLFxufVxuXG4vLyBPbmUgbm9kZSBhcyBmcy10cmVlIHNlZXMgaXQuIEZvbGRlcnMgYW5kIHJlcG9ydHMgc2hhcmUgb25lIGlkIHNwYWNlIGluIHRoZVxuLy8gdmlldywgc28gdGhlIGlkcyBhcmUgcHJlZml4ZWQgKCdmOjEyJyAvICdyOjM0Jykg4oCUIGBpZGAgaXMgdGhlIG9yaWdpbmFsLFxuLy8gcGVyLXRhYmxlIGlkIHRoYXQgdGhlIEFQSSBlbmRwb2ludHMgdGFrZS5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Tm9kZSB7XG4gIGtleTogc3RyaW5nO1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IFJlcG9ydE5vZGVUeXBlO1xuICAvLyBPbmx5IGV2ZXIgcG9wdWxhdGVkIG9uIGEgZm9sZGVyOyBhIHJlcG9ydCBpcyBhbHdheXMgYSBsZWFmLlxuICBjaGlsZHJlbjogUmVwb3J0Tm9kZVtdO1xuICAvLyBQcmVzZW50IG9uIHJlcG9ydCBub2RlcyBvbmx5LlxuICByZXBvcnQ/OiBSZXBvcnRMaXN0SXRlbTtcbiAgLy8gVGhlIG5vZGUncyBvd24gcm93IGlzIGRlbGV0ZWQuIFdoYXQgZWFybnMgdGhlIFwiRGVsZXRlZFwiIGNoaXAg4oCUIHRoaXMgaXNcbiAgLy8gd2hhdCBzb21lYm9keSBhY3R1YWxseSBkZWxldGVkLlxuICBzdGF0ZURlbGV0ZWQ6IGJvb2xlYW47XG4gIC8vIERlbGV0ZWQgaXRzZWxmIE9SIGFueXdoZXJlIGJlbG93IGEgZGVsZXRlZCBmb2xkZXIuIE9ubHkgZXZlciB0cnVlIGluIFNob3dcbiAgLy8gRGVsZXRlZCBtb2RlICh0aGUgZGVmYXVsdCBsaXN0aW5nIG5ldmVyIHJldHVybnMgc3VjaCBhIG5vZGUpLCBhbmQgaXQgaXMgd2hhdFxuICAvLyBzd2FwcyB0aGUgcm93J3MgYWN0aW9ucyBmb3IgUmVzdG9yZS5cbiAgZGVsZXRlZDogYm9vbGVhbjtcbn1cblxuLy8gUmVwb3J0cyBhbmQgZm9sZGVycyBhcmUgYm90aCBzb2Z0LWRlbGV0YWJsZS4gQSBkZWxldGVkIHJlcG9ydCBrZWVwcyBpdHMgcGFnZXNcbi8vIGFuZCBjb21wb25lbnRzOyBhIGRlbGV0ZWQgZm9sZGVyIGtlZXBzIGV2ZXJ5dGhpbmcgZmlsZWQgdW5kZXIgaXQsIHdoaWNoIGxlYXZlc1xuLy8gdGhlIGxpc3Rpbmcgd2l0aCBpdCBhbmQgY29tZXMgYmFjayB3aXRoIGl0LiBcIlNob3cgRGVsZXRlZFwiIHNob3dzIHRoZSB3aG9sZVxuLy8gdHJlZSwgbGl2ZSBhbmQgZGVsZXRlZCB0b2dldGhlciwgc28gYW55IG9mIGl0IGNhbiBiZSByZXN0b3JlZCBpbiBwbGFjZS5cbmV4cG9ydCBlbnVtIFJlcG9ydFN0YXRlIHtcbiAgQWN0aXZlID0gJ2FjdGl2ZScsXG4gIERlbGV0ZWQgPSAnZGVsZXRlZCcsXG59XG5cbi8vIFRoZSBjaGF0IHR1cm4gZmxhZ3MgdGhpcyBjb250ZXh0J3MgYmFja2VuZCBhZGRzIChSZXBvcnRzXFxBaVZpZXcpLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRDaGF0UmVzcG9uc2Uge1xuICByZXBvcnRDaGFuZ2VkPzogYm9vbGVhbjtcbiAgcmVwb3J0UmVuYW1lZD86IGJvb2xlYW47XG59XG5cbi8vIE9uZSB2ZXJzaW9uIG9mIHRoZSBnbG9iYWwgQUkga25vd2xlZGdlIGRvY3VtZW50IOKAlCB0aGUgb3BlcmF0b3ItYXV0aG9yZWRcbi8vIG1hcmtkb3duIGFwcGVuZGVkIHRvIHRoZSByZXBvcnQgYWdlbnQncyBzeXN0ZW0gaW5zdHJ1Y3Rpb25zIG9uIGV2ZXJ5IHR1cm4uXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEluc3RydWN0aW9uIHtcbiAgaWQ6IG51bWJlcjtcbiAgY29udGVudDogc3RyaW5nO1xuICBjdXJyZW50OiBib29sZWFuO1xuICBjcmVhdGVEYXRlOiBEYXRlO1xuICBtb2RpZnlEYXRlOiBEYXRlO1xuICBhY2NvdW50SWQ6IG51bWJlciB8IG51bGw7XG4gIGFjY291bnROYW1lOiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBHRVQvUFVUIGluc3RydWN0aW9ucyBwYXlsb2FkOiB0aGUgY3VycmVudCB2ZXJzaW9uIChudWxsIHVudGlsIG9uZSBpc1xuLy8gYXV0aG9yZWQpIHBsdXMgdGhlIGZ1bGwgaGlzdG9yeSwgbmV3ZXN0IGZpcnN0LlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRJbnN0cnVjdGlvbnMge1xuICBpbnN0cnVjdGlvbnM6IFJlcG9ydEluc3RydWN0aW9uIHwgbnVsbDtcbiAgdmVyc2lvbnM6IFJlcG9ydEluc3RydWN0aW9uW107XG59XG5cbi8vIFRoZSBsYXRlc3Qgc2VtYW50aWMtZGF0YWJhc2UgYnVpbGQgKGFuIGZmX3Byb2Nlc3NlcyByb3cpIOKAlCBlbm91Z2ggZm9yIHRoZVxuLy8gc2V0dGluZ3MgZGlhbG9nIHRvIHNheSB3aGF0IHN0YXRlIHRoZSBidWlsZCBpcyBpbiBhbmQgd2hlbiBpdCBsYXN0IHJhbi5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNCdWlsZCB7XG4gIGlkOiBudW1iZXI7XG4gIHN0YXRlOiBzdHJpbmc7XG4gIHBlcmNlbnQ6IG51bWJlciB8IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBkdXJhdGlvbjogbnVtYmVyO1xuICBjcmVhdGVEYXRlOiBEYXRlO1xuICBzdGFydERhdGU6IERhdGU7XG4gIGVuZERhdGU6IERhdGU7XG59XG5cbi8vIEEgYnVpbGQgc3RhZ2UncyBzdGF0ZSBvbiB0aGUgZW50aXR5IHNjb3JlYm9hcmQ6ICdkb25lJyA9IGJ1aWx0LCAnbWlzc2luZycgPVxuLy8gc3RpbGwgbmVlZHMgYnVpbGRpbmcgKGEgbWlzc2luZyBzdGFnZSBpcyB1bmJ1aWx0IGNvbnRlbnQsIG5ldmVyIGFuIGVycm9yKS5cbmV4cG9ydCB0eXBlIFNlbWFudGljQnVpbGRTdGFnZSA9ICdkb25lJyB8ICdtaXNzaW5nJztcblxuLy8gT25lIGVudW0gY29sdW1uIG9mIGFuIGVudGl0eSwgd2l0aCB0aGUgYWxsb3dlZCB2YWx1ZXMgdGhlIGJ1aWxkIGlubGluZWQuXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljQnVpbGRFbnVtIHtcbiAgY29sdW1uOiBzdHJpbmc7XG4gIHZhbHVlczogc3RyaW5nW107XG59XG5cbi8vIE9uZSBlbnRpdHkgcm93IG9mIHRoZSBzY29yZWJvYXJkIChhbiBlbnRpdHkgPSBhIHRhYmxlICsgYSBtb2RlbCArIGFcbi8vIGhhbmRsZXIpOiBpdHMgdGFibGUvc2hhcGUgY291bnRzLCBpbmxpbmVkIGVudW0gdmFsdWVzLCBjb21wdXRlZCBmaWVsZHMsIGhvd1xuLy8gbWFueSBjb2RlIGZ1bmN0aW9ucyB3ZXJlIGNhY2hlZCAoc3BsaXQgbW9kZWwgdnMgaGFuZGxlciksIGFuZCB0aGUgcGVyLXN0YWdlXG4vLyBidWlsdC9taXNzaW5nIHN0YXRlLlxuLy9cbi8vIGBtb2RlbGAvYGhhbmRsZXJgIGFyZSB0aGUgY2xhc3NlcyB0aGUgZnVuY3Rpb25zIHdlcmUgcmVhZCBmcm9tIOKAlCB3aGF0IGFcbi8vIHJlYWRlciByZWNvZ25pemVzIHRoZSByb3cgYnksIHdoZXJlIGBrZXlgIGlzIHdoYXQgdGhlIHJlcG9ydCBBSSBhZGRyZXNzZXMgaXRcbi8vIGJ5IGluIGRlc2NyaWJlX2VudGl0eSAvIGNvbXBpbGVfcXVlcnkuXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljQnVpbGRFbnRpdHkge1xuICBrZXk6IHN0cmluZztcbiAgdGFibGU6IHN0cmluZztcbiAgbW9kZWw6IHN0cmluZyB8IG51bGw7XG4gIGhhbmRsZXI6IHN0cmluZyB8IG51bGw7XG4gIGNvbHVtbnM6IG51bWJlcjtcbiAgcmVsYXRpb25zaGlwczogbnVtYmVyO1xuICBlbnVtczogU2VtYW50aWNCdWlsZEVudW1bXTtcbiAgY29tcHV0ZWRGaWVsZHM6IHN0cmluZ1tdO1xuICBmdW5jdGlvbkNvdW50OiBudW1iZXI7XG4gIG1vZGVsRnVuY3Rpb25Db3VudDogbnVtYmVyO1xuICBoYW5kbGVyRnVuY3Rpb25Db3VudDogbnVtYmVyO1xuICBzdGFnZXM6IFJlY29yZDxzdHJpbmcsIFNlbWFudGljQnVpbGRTdGFnZT47XG59XG5cbi8vIE9uZSBzdGFuZGFsb25lIGNvZGUgY2xhc3MgdGhlIGJ1aWxkIHJlYWQ6IGRvbWFpbiBsb2dpYyB3aXRoIG5vIHRhYmxlIG9mIGl0c1xuLy8gb3duIChhIHN1bW1hcnkgbW9kZWwsIGEgY2FsY3VsYXRpb24gc2VydmljZSkuIFRoZSByZXBvcnQgQUkgcmVhZHMgaXRzIGNvZGVcbi8vIGV4YWN0bHkgbGlrZSBhbiBlbnRpdHkncywgYnV0IGl0IGNhbiBuZXZlciBiZSBxdWVyaWVkIOKAlCB0aGVyZSBpcyBub3RoaW5nIHRvXG4vLyBzZWxlY3QgZnJvbSDigJQgc28gaXQgY2FycmllcyBubyB0YWJsZSwgY29sdW1ucyBvciByZWxhdGlvbnNoaXBzLlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0J1aWxkQ2xhc3Mge1xuICBrZXk6IHN0cmluZztcbiAgbW9kZWw6IHN0cmluZyB8IG51bGw7XG4gIGZ1bmN0aW9uQ291bnQ6IG51bWJlcjtcbn1cblxuLy8gV2hhdCB0aGUgYnVpbGQgZGVjaWRlZCBhIHBoeXNpY2FsIHRhYmxlIGlzLiBFbnRpdHkgYW5kIGp1bmN0aW9uIGFyZSBib3RoXG4vLyByZWFjaGFibGUgYnkgdGhlIHJlcG9ydCBBSSDigJQgYW4gZW50aXR5IGRpcmVjdGx5LCBhIGp1bmN0aW9uIHRocm91Z2ggdGhlXG4vLyBtYW55LXRvLW1hbnkgaXQgYnJpZGdlcy4gRXhjbHVkZWQgaXMgbm90IHJlYWNoYWJsZSBhdCBhbGwuXG5leHBvcnQgdHlwZSBTZW1hbnRpY1RhYmxlQ2xhc3NpZmljYXRpb24gPSAnZW50aXR5JyB8ICdqdW5jdGlvbicgfCAnZXhjbHVkZWQnO1xuXG4vLyBPbmUgcGh5c2ljYWwgdGFibGUgYXMgdGhlIGJ1aWxkIGNsYXNzaWZpZWQgaXQuIGByZWFzb25gIGFuc3dlcnMgYSBzaW5nbGVcbi8vIHF1ZXN0aW9uIOKAlCB3aHkgY2FuJ3QgdGhlIHJlcG9ydCBBSSBzZWUgdGhpcyB0YWJsZT8g4oCUIGFuZCBpcyBudWxsIHdoZW4gaXQgY2FuLlxuLy8gQSBqdW5jdGlvbiB3aXRoIGEgcmVhc29uIGJyaWRnZWQgbm90aGluZywgc28gaXQgaXMganVzdCBhcyBpbnZpc2libGUgYXMgYW5cbi8vIGV4Y2x1ZGVkIHRhYmxlLlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0J1aWxkVGFibGUge1xuICB0YWJsZTogc3RyaW5nO1xuICBjbGFzc2lmaWNhdGlvbjogU2VtYW50aWNUYWJsZUNsYXNzaWZpY2F0aW9uO1xuICBtb2RlbDogc3RyaW5nIHwgbnVsbDtcbiAgcmVhc29uOiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBUaGUgYnVpbGQgc2NvcmVib2FyZCBzaGlwcGVkIGFsb25nc2lkZSB0aGUgYnVpbGQgc3RhdHVzOiB0aGUgc3VtbWFyeSBjb3VudHMsXG4vLyB0aGUgZnVsbCBicmVha2Rvd24gdGhlIHNldHRpbmdzIGRpYWxvZyBkcmlsbHMgaW50byDigJQgQk9USCBraW5kcyBvZiB1bml0IHRoZVxuLy8gYnVpbGQgY2FjaGVzLCB0YWJsZS1iYWNrZWQgZW50aXRpZXMgYW5kIHN0YW5kYWxvbmUgY29kZSBjbGFzc2VzIOKAlCBhbmQgdGhlXG4vLyBjYXRhbG9nIG9mIGV2ZXJ5IHRhYmxlIHRoZSBidWlsZCBzYXcsIHNvIHRoZSB0YWIgY2FuIHNob3cgd2hhdCB0aGUgcmVwb3J0IEFJXG4vLyBjYW4ndCBzZWUsIG5vdCBqdXN0IHdoYXQgaXQgY2FuLlxuLy9cbi8vIGBmdW5jdGlvbkNvdW50YCBzcGFucyBlbnRpdGllcyBhbmQgY2xhc3NlcyBhbGlrZTogaXQgaXMgdGhlIHNhbWUgdG90YWwgdGhlXG4vLyBidWlsZCBpdHNlbGYgcmVwb3J0cyB3aGVuIGl0IGZpbmlzaGVzLlxuLy9cbi8vIGB0YWJsZXNgIGlzIGVtcHR5IGZvciBhbiBhcnRpZmFjdCBidWlsdCBiZWZvcmUgdGhlIGNhdGFsb2cgZXhpc3RlZC4gUmVhZCB0aGF0XG4vLyBhcyBcIm5vIGNhdGFsb2dcIiwgbmV2ZXIgYXMgXCJub3RoaW5nIHdhcyBleGNsdWRlZFwiLlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0J1aWxkRGV0YWlsIHtcbiAgLy8gV2hldGhlciB0aGUgYXJ0aWZhY3Qgd2FzIHByb2R1Y2VkIGJ5IGEgYnVpbGQgdGhhdCByYW4gdG8gdGhlIGVuZC4gUmVhZCBpdFxuICAvLyBiZXNpZGUgYGdlbmVyYXRlZEF0YCwgbmV2ZXIgaW5zdGVhZCBvZiBpdDogdGhlIHN0cnVjdHVyYWwgYXJ0aWZhY3QgaXNcbiAgLy8gcHVibGlzaGVkIEJFRk9SRSB0aGUgQUkgZnVuY3Rpb24gcGFzcywgc28gYSBidWlsZCB3aG9zZSBBSSBwYXNzIGZhaWxlZCBzdGlsbFxuICAvLyBjYXJyaWVzIGEgZGF0ZSBhbmQgYSBmdWxsIHNldCBvZiBjb3VudHMuIFRoZSBkYXRlIHNheXMgc29tZXRoaW5nIHdhc1xuICAvLyB3cml0dGVuOyBvbmx5IHRoaXMgc2F5cyB0aGUgYnVpbGQgZmluaXNoZWQgd3JpdGluZyBpdC5cbiAgY29tcGxldGU6IGJvb2xlYW47XG4gIGdlbmVyYXRlZEF0OiBEYXRlIHwgbnVsbDtcbiAgZW50aXR5Q291bnQ6IG51bWJlcjtcbiAgY2xhc3NDb3VudDogbnVtYmVyO1xuICBmdW5jdGlvbkNvdW50OiBudW1iZXI7XG4gIGVudGl0aWVzOiBTZW1hbnRpY0J1aWxkRW50aXR5W107XG4gIGNsYXNzZXM6IFNlbWFudGljQnVpbGRDbGFzc1tdO1xuICB0YWJsZUNvdW50OiBudW1iZXI7XG4gIGp1bmN0aW9uQ291bnQ6IG51bWJlcjtcbiAgdW5saW5rZWRKdW5jdGlvbkNvdW50OiBudW1iZXI7XG4gIGV4Y2x1ZGVkQ291bnQ6IG51bWJlcjtcbiAgdGFibGVzOiBTZW1hbnRpY0J1aWxkVGFibGVbXTtcbn1cblxuLy8gV2hpY2ggY2xhc3MgYSBjYWNoZWQgZnVuY3Rpb24gd2FzIHJlYWQgZnJvbS4gQW4gZW50aXR5J3MgY2FjaGUgc3BsaXRzIGludG9cbi8vICdtb2RlbCcgYW5kICdoYW5kbGVyJzsgYSBzdGFuZGFsb25lIGNvZGUgY2xhc3MgaGFzIG9uZSBncm91cCwgJ2NsYXNzJy5cbmV4cG9ydCB0eXBlIFNlbWFudGljRnVuY3Rpb25Tb3VyY2UgPSAnbW9kZWwnIHwgJ2hhbmRsZXInIHwgJ2NsYXNzJztcblxuLy8gT25lIEFJLWNsYXNzaWZpZWQgY29kZSBmdW5jdGlvbiBmcm9tIGEgbW9kZWwsIGhhbmRsZXIgb3Igc3RhbmRhbG9uZSBjbGFzczpcbi8vIHdoYXQga2luZCBvZiBsb2dpYyBpdCBpcywgd2hhdCBpdCBkb2VzLCBhbmQgd2hhdCBpdCBwcm9kdWNlcyDigJQgdGhlIGJ1aWxkJ3Ncbi8vIGNhY2hlZCBcIndoYXQgdGhlIGNvZGUgZG9lc1wiIGtub3dsZWRnZSBzaG93biBpbiB0aGUgZnVuY3Rpb25zIGRpYWxvZy5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNFbnRpdHlGdW5jdGlvbiB7XG4gIGNsYXNzOiBzdHJpbmc7XG4gIG1ldGhvZDogc3RyaW5nO1xuICBzaWduYXR1cmU6IHN0cmluZztcbiAga2luZDogc3RyaW5nO1xuICBzdW1tYXJ5OiBzdHJpbmc7XG4gIHByb2R1Y2VzOiBzdHJpbmc7XG4gIHNvdXJjZTogU2VtYW50aWNGdW5jdGlvblNvdXJjZTtcbn1cblxuLy8gT25lIGVudGl0eSdzIGNhY2hlZCBjb2RlLWZ1bmN0aW9uIGtub3dsZWRnZSwgZmV0Y2hlZCB3aGVuIGEgZnVuY3Rpb25zIGRpYWxvZ1xuLy8gb3BlbnMgKHRoZSBmdWxsIHNldCBhY3Jvc3MgYWxsIGVudGl0aWVzIGlzIHRvbyBiaWcgdG8gc2hpcCB3aXRoIHRoZVxuLy8gc2NvcmVib2FyZCkuIE9uZSBwYXlsb2FkIHNlcnZlcyBib3RoIGRpYWxvZ3Mg4oCUIGNvbnN1bWVycyBmaWx0ZXIgYnkgc291cmNlLlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0VudGl0eUZ1bmN0aW9ucyB7XG4gIGVudGl0eTogc3RyaW5nO1xuICBnZW5lcmF0ZWRBdDogRGF0ZSB8IG51bGw7XG4gIG1vZGVsQ2xhc3M6IHN0cmluZyB8IG51bGw7XG4gIGhhbmRsZXJDbGFzczogc3RyaW5nIHwgbnVsbDtcbiAgZnVuY3Rpb25zOiBTZW1hbnRpY0VudGl0eUZ1bmN0aW9uW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNCdWlsZFN0YXR1cyB7XG4gIGJ1aWxkOiBTZW1hbnRpY0J1aWxkIHwgbnVsbDtcbiAgZGV0YWlsOiBTZW1hbnRpY0J1aWxkRGV0YWlsO1xufVxuXG4vLyBUaGUgcmVwb3J0IG1vZHVsZSdzIEdlbmVyYWwgc2V0dGluZ3MgKGEgc21hbGwgZ2xvYmFsIGtleS92YWx1ZSBzdG9yZSwgdGhlXG4vLyByZXBvcnRpbmcgY291bnRlcnBhcnQgb2YgdGhlIGFwcC13aWRlIHNldHRpbmdzKS4gRWFjaCB2YWx1ZSBzaGlwcyB3aXRoIHRoZVxuLy8gc2FmZSBiYW5kIGl0cyBlZGl0b3IgZmllbGQgaXMgYm91bmRlZCB0by5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0U2V0dGluZ3Mge1xuICAvLyBIb3cgbWFueSBzdW1tYXJ5IGNhbGxzIHRoZSBzZW1hbnRpYyBidWlsZCBydW5zIGF0IG9uY2UuXG4gIHNlbWFudGljQnVpbGRDb25jdXJyZW5jeTogbnVtYmVyO1xuICBzZW1hbnRpY0J1aWxkQ29uY3VycmVuY3lNaW46IG51bWJlcjtcbiAgc2VtYW50aWNCdWlsZENvbmN1cnJlbmN5TWF4OiBudW1iZXI7XG59XG4iXX0=
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
// Default content padding around a component's body, inches (1/8").
|
|
2
2
|
export const DEFAULT_COMPONENT_PADDING = 0.125;
|
|
3
|
+
// A component's content padding as a CSS padding: each edge in inches (a CSS
|
|
4
|
+
// inch is 96px, the canvas's own), DEFAULT_COMPONENT_PADDING unless set. The
|
|
5
|
+
// canvas pads a component's body with it, and the export measure
|
|
6
|
+
// (ReportTextLayoutService) its offscreen copy of a text block, so the two
|
|
7
|
+
// boxes are one.
|
|
8
|
+
export function componentPaddingCss(component) {
|
|
9
|
+
const padding = component.config?.padding;
|
|
10
|
+
const edge = (value) => `${value ?? DEFAULT_COMPONENT_PADDING}in`;
|
|
11
|
+
return `${edge(padding?.top)} ${edge(padding?.right)} ${edge(padding?.bottom)} ${edge(padding?.left)}`;
|
|
12
|
+
}
|
|
3
13
|
// Default report heading size, points (1/72"). Applies to component titles.
|
|
4
14
|
export const DEFAULT_HEADING_SIZE = 16;
|
|
5
15
|
// Bounds for a page dimension, in inches. Mirrors ReportModel::PAGE_DIMENSION_MIN
|
|
@@ -13,4 +23,4 @@ export const PAGE_DIMENSION_MAX = 50;
|
|
|
13
23
|
// The deepest a header or footer band may be, in inches. Mirrors
|
|
14
24
|
// ReportHeaderFooter::MAX_HEIGHT on the server, which clamps.
|
|
15
25
|
export const HEADER_FOOTER_MAX = 3;
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9yZXBvcnRzL2xheW91dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxvRUFBb0U7QUFDcEUsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsS0FBSyxDQUFDO0FBRS9DLDZFQUE2RTtBQUM3RSw2RUFBNkU7QUFDN0UsaUVBQWlFO0FBQ2pFLDJFQUEyRTtBQUMzRSxpQkFBaUI7QUFDakIsTUFBTSxVQUFVLG1CQUFtQixDQUFDLFNBQTBCO0lBQzVELE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDO0lBQzFDLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBeUIsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLElBQUkseUJBQXlCLElBQUksQ0FBQztJQUV0RixPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQ3pHLENBQUM7QUFFRCw0RUFBNEU7QUFDNUUsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0FBRXZDLGtGQUFrRjtBQUNsRixpRkFBaUY7QUFDakYsa0ZBQWtGO0FBQ2xGLGlGQUFpRjtBQUNqRixrRkFBa0Y7QUFDbEYsc0JBQXNCO0FBQ3RCLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsQ0FBQztBQUNwQyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxFQUFFLENBQUM7QUFFckMsaUVBQWlFO0FBQ2pFLDhEQUE4RDtBQUM5RCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXBvcnRDb21wb25lbnQgfSBmcm9tICcuL2ludGVyZmFjZXMvcmVwb3J0LmludGVyZmFjZSc7XG5cblxuLy8gRGVmYXVsdCBjb250ZW50IHBhZGRpbmcgYXJvdW5kIGEgY29tcG9uZW50J3MgYm9keSwgaW5jaGVzICgxLzhcIikuXG5leHBvcnQgY29uc3QgREVGQVVMVF9DT01QT05FTlRfUEFERElORyA9IDAuMTI1O1xuXG4vLyBBIGNvbXBvbmVudCdzIGNvbnRlbnQgcGFkZGluZyBhcyBhIENTUyBwYWRkaW5nOiBlYWNoIGVkZ2UgaW4gaW5jaGVzIChhIENTU1xuLy8gaW5jaCBpcyA5NnB4LCB0aGUgY2FudmFzJ3Mgb3duKSwgREVGQVVMVF9DT01QT05FTlRfUEFERElORyB1bmxlc3Mgc2V0LiBUaGVcbi8vIGNhbnZhcyBwYWRzIGEgY29tcG9uZW50J3MgYm9keSB3aXRoIGl0LCBhbmQgdGhlIGV4cG9ydCBtZWFzdXJlXG4vLyAoUmVwb3J0VGV4dExheW91dFNlcnZpY2UpIGl0cyBvZmZzY3JlZW4gY29weSBvZiBhIHRleHQgYmxvY2ssIHNvIHRoZSB0d29cbi8vIGJveGVzIGFyZSBvbmUuXG5leHBvcnQgZnVuY3Rpb24gY29tcG9uZW50UGFkZGluZ0Nzcyhjb21wb25lbnQ6IFJlcG9ydENvbXBvbmVudCk6IHN0cmluZyB7XG4gIGNvbnN0IHBhZGRpbmcgPSBjb21wb25lbnQuY29uZmlnPy5wYWRkaW5nO1xuICBjb25zdCBlZGdlID0gKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpID0+IGAke3ZhbHVlID8/IERFRkFVTFRfQ09NUE9ORU5UX1BBRERJTkd9aW5gO1xuXG4gIHJldHVybiBgJHtlZGdlKHBhZGRpbmc/LnRvcCl9ICR7ZWRnZShwYWRkaW5nPy5yaWdodCl9ICR7ZWRnZShwYWRkaW5nPy5ib3R0b20pfSAke2VkZ2UocGFkZGluZz8ubGVmdCl9YDtcbn1cblxuLy8gRGVmYXVsdCByZXBvcnQgaGVhZGluZyBzaXplLCBwb2ludHMgKDEvNzJcIikuIEFwcGxpZXMgdG8gY29tcG9uZW50IHRpdGxlcy5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0hFQURJTkdfU0laRSA9IDE2O1xuXG4vLyBCb3VuZHMgZm9yIGEgcGFnZSBkaW1lbnNpb24sIGluIGluY2hlcy4gTWlycm9ycyBSZXBvcnRNb2RlbDo6UEFHRV9ESU1FTlNJT05fTUlOXG4vLyAvIE1BWCBvbiB0aGUgc2VydmVyLCB3aGljaCBpcyB0aGUgZW5mb3JjaW5nIHNpZGUg4oCUIHRoZXNlIGRyaXZlIHRoZSBmaWVsZC1sZXZlbFxuLy8gbWVzc2FnZSBzbyB0aGUgb3BlcmF0b3Igc2VlcyB0aGUgbGltaXQgYmVmb3JlIHN1Ym1pdHRpbmcuIFRoZSBjZWlsaW5nIGlzIHNldCBieVxuLy8gUG93ZXJQb2ludCwgbm90IGJ5IHRoZSBjYW52YXM6IEVDTUEtMzc2IGNhcHMgYSBzbGlkZSBhdCA1NiBpbmNoZXMsIGFuZCBhIC5wcHR4XG4vLyBvdmVyIHRoYXQgaXMgcmVmdXNlZCBvbiBvcGVuLCBzbyBhIHBhZ2UgaXMgbm90IGFsbG93ZWQgdG8gYmUgc2l6ZWQgcGFzdCB3aGF0IGl0XG4vLyBjYW4gYmUgZXhwb3J0ZWQgYXMuXG5leHBvcnQgY29uc3QgUEFHRV9ESU1FTlNJT05fTUlOID0gMTtcbmV4cG9ydCBjb25zdCBQQUdFX0RJTUVOU0lPTl9NQVggPSA1MDtcblxuLy8gVGhlIGRlZXBlc3QgYSBoZWFkZXIgb3IgZm9vdGVyIGJhbmQgbWF5IGJlLCBpbiBpbmNoZXMuIE1pcnJvcnNcbi8vIFJlcG9ydEhlYWRlckZvb3Rlcjo6TUFYX0hFSUdIVCBvbiB0aGUgc2VydmVyLCB3aGljaCBjbGFtcHMuXG5leHBvcnQgY29uc3QgSEVBREVSX0ZPT1RFUl9NQVggPSAzO1xuIl19
|