@tiba-spark/client-shared-lib 25.3.0-793 → 25.3.0-797
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/libraries/modules/smartparks/smartpark.state.mjs +2 -2
- package/esm2022/libraries/service-proxy/cloud-service-proxies.mjs +255 -2
- package/esm2022/libraries/utils/module.util.mjs +6 -2
- package/fesm2022/tiba-spark-client-shared-lib.mjs +264 -3
- package/fesm2022/tiba-spark-client-shared-lib.mjs.map +1 -1
- package/libraries/modules/smartparks/smartpark.state.d.ts +4 -4
- package/libraries/modules/smartparks/smartpark.state.d.ts.map +1 -1
- package/libraries/service-proxy/cloud-service-proxies.d.ts +83 -2
- package/libraries/service-proxy/cloud-service-proxies.d.ts.map +1 -1
- package/libraries/utils/module.util.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -352,7 +352,7 @@ let SmartparkState = class SmartparkState {
|
|
|
352
352
|
const smartparks$ = this.licenseServiceProxy.baseSmartparks(action.searchParamsDto.maxResults, action.searchParamsDto.searchTerm, action.searchParamsDto.orderBy.column, action.searchParamsDto.orderBy.orderDirection);
|
|
353
353
|
return smartparks$.pipe(tap(facilityTreeDto => {
|
|
354
354
|
ctx.patchState({
|
|
355
|
-
facilityTree: facilityTreeDto.data
|
|
355
|
+
facilityTree: facilityTreeDto.data,
|
|
356
356
|
});
|
|
357
357
|
}));
|
|
358
358
|
}
|
|
@@ -524,4 +524,4 @@ export { SmartparkState };
|
|
|
524
524
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SmartparkState, decorators: [{
|
|
525
525
|
type: Injectable
|
|
526
526
|
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.RevenueService }, { type: i3.SmartparkServiceProxy }, { type: i4.FacilityServiceProxy }, { type: i4.DeviceServiceProxy }, { type: i5.MessageBarService }, { type: i6.RouteService }, { type: i7.TranslateService }, { type: i8.ExportFileService }, { type: i9.MobileServiceProxyIdentity }, { type: i3.BackofficeServiceProxy }, { type: i3.LicenseServiceProxy }], propDecorators: { onLoadSmartparksAction: [], onLoadSmartparksBasicAction: [], onLoadMobileSmartparksBasicAction: [], onClearSmartparksBasicAction: [], onLoadSmartparksTableAction: [], onLoadBackofficeSmartparksTableAction: [], onSetSmartParkTableAction: [], onSetSmartParksAction: [], onSelectSmartParkAction: [], onLoadParksAction: [], onLoadParkDevices: [], onSelectParkAction: [], onClearSelectedParkAction: [], onClearSelectedsmartparkAction: [], onSmartParkDeviceStatusChangedAction: [], onDisconnectSmartparkAction: [], onSetSmartParkVersionsAction: [], onLoadSpAndSparkVersionsAction: [], onLoadBackofficeSpAndSparkVersionsAction: [], onClearSpAndSparkVersionsAction: [], onLoadVarsAction: [], onLoadBackofficeVarsAction: [], onSyncUsersAndRolesBySmartparkIdAction: [], onExportSmartparksAction: [], onExportPdfSmartparksTableAction: [], onLoadAllSmartparksAction: [] } });
|
|
527
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRwYXJrLnN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9tb2R1bGVzL3NtYXJ0cGFya3Mvc21hcnRwYXJrLnN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQXVCLE1BQU0sYUFBYSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDbkMsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUU1RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU3RCxPQUFPLEVBQUUsU0FBUyxFQUFnTSxlQUFlLEVBQUUsYUFBYSxFQUFpQyxNQUFNLDJDQUEyQyxDQUFDO0FBTW5VLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWpFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFN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TUFZakMsNEJBQTRCLE1BTzVCLDJCQUEyQixNQVkzQixxQ0FBcUMsTUFhckMseUJBQXlCLE1BT3pCLHFCQUFxQixNQWFyQix1QkFBdUIsTUFhdkIsaUJBQWlCLE1BMkJqQixpQkFBaUIsTUFzQmpCLGtCQUFrQixNQU1sQix5QkFBeUIsTUFRekIsOEJBQThCLE1BTzlCLG9DQUFvQyxNQWdCcEMsMkJBQTJCLE1Bc0IzQiw0QkFBNEIsTUFPNUIsOEJBQThCLE1BVTlCLHdDQUF3QyxNQVV4QywrQkFBK0IsTUFPL0IsZ0JBQWdCLE1BWWhCLDBCQUEwQixNQVkxQixzQ0FBc0MsTUFRdEMsd0JBQXdCLE1BNEJ4QixnQ0FBZ0MsTUFhaEMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGUgfSBmcm9tICdAbmd4cy9yb3V0ZXItcGx1Z2luJztcbmltcG9ydCB7IEFjdGlvbiwgU2VsZWN0b3IsIFN0YXRlLCBTdGF0ZUNvbnRleHQsIFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBNZXNzYWdlQmFyUG9zaXRpb24gfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL21lc3NhZ2UtYmFyL21lc3NhZ2UtYmFyLXBvc2l0aW9uLmVudW0nO1xuaW1wb3J0IHsgTWVzc2FnZUJhclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL21lc3NhZ2UtYmFyL21lc3NhZ2UtYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVkVSU0lPTl9WMSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy92ZXJzaW9uLWNvbnN0YW50cyc7XG5pbXBvcnQgeyBTbWFydFBhcmtTdGF0dXNUZXh0IH0gZnJvbSAnLi4vLi4vZW51bXMnO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uIH0gZnJvbSAnLi4vLi4vZW51bXMvbG9jYWxpemF0aW9uLmVudW0nO1xuaW1wb3J0IHsgSVBhcmtEZXRhaWxzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9wYXJrLWRldGFpbHMuaW50ZXJmYWNlJztcbmltcG9ydCB7IEFwcE1vZHVsZSwgQmFja29mZmljZVNlcnZpY2VQcm94eSwgRmFjaWxpdHlCYXNpY0R0bywgRmFjaWxpdHlUcmVlRHRvLCBGYWNpbGl0eVRyZWVEdG9FbnRpdHlXcmFwcGVyRHRvSHR0cFJlc3BvbnNlRGF0YSwgTGljZW5zZVNlcnZpY2VQcm94eSwgT2JqZWN0SHR0cFJlc3BvbnNlRGF0YSwgU21hcnRwYXJrRHRvLCBTbWFydHBhcmtTZXJ2aWNlUHJveHksIFNtYXJ0UGFya1N0YXR1cywgU21hcnRQYXJrVHlwZSwgU3BBbmRTcGFya1ZlcnNpb25zRHRvLCBWYXJEdG8gfSBmcm9tICcuLi8uLi9zZXJ2aWNlLXByb3h5L2Nsb3VkLXNlcnZpY2UtcHJveGllcyc7XG5pbXBvcnQgeyBEZXZpY2VTZXJ2aWNlUHJveHksIEZhY2lsaXR5U2VydmljZVByb3h5LCBJRGV2aWNlRHRvLCBTbWFydHBhcmtCYXNpY0R0bywgU21hcnRQYXJrV3JhcHBlckR0byB9IGZyb20gJy4uLy4uL3NlcnZpY2UtcHJveHkvZWRnZS1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgTW9iaWxlU2VydmljZVByb3h5SWRlbnRpdHkgfSBmcm9tICcuLi8uLi9zZXJ2aWNlLXByb3h5L2lkZW50aXR5LXNlcnZpY2UtcHJveGllcyc7XG5pbXBvcnQgeyBFeHBvcnRGaWxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V4cG9ydC1maWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmV2ZW51ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXZlbnVlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUm91dGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcm91dGUuc2VydmljZSc7XG5pbXBvcnQgeyBwYXJzZUFwaUVycm9yTWVzc2FnZSB9IGZyb20gJy4uLy4uL3V0aWxzL2FwaS1oZWxwZXIudXRpbCc7XG5pbXBvcnQgeyBnZXREZWZhdWx0RGV2aWNlU3RhdHVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvZGV2aWNlLnV0aWwnO1xuaW1wb3J0IHsgU3RyaW5nTWFwIH0gZnJvbSAnLi4vLi4vdXRpbHMvbGFuZy51dGlsJztcbmltcG9ydCB7IENsZWFyU2VsZWN0ZWRGYWNpbGl0eUFjdGlvbiwgU2V0U21hcnRwYXJrQmFzaWNBbGxBY3Rpb24gfSBmcm9tICcuLi9mYWNpbGl0eS9mYWNpbGl0eS5hY3Rpb25zJztcbmltcG9ydCB7IE1lbnVTdWJNb2R1bGVMb2FkQWN0aW9uIH0gZnJvbSAnLi4vc2lkZW5hdi9zaWRlbmF2LmFjdGlvbnMnO1xuaW1wb3J0IHtcbiAgQ2xlYXJTZWxlY3RlZFBhcmtBY3Rpb24sXG4gIENsZWFyU2VsZWN0ZWRTbWFydHBhcmtBY3Rpb24sXG4gIENsZWFyU21hcnRwYXJrc0Jhc2ljQWN0aW9uLCBDbGVhclNwQW5kU3BhcmtWZXJzaW9uc0FjdGlvbixcbiAgRGlzY29ubmVjdFNtYXJ0UGFya0FjdGlvbiwgRXhwb3J0UGRmU21hcnRwYXJrc1RhYmxlQWN0aW9uLCBFeHBvcnRTbWFydHBhcmtBY3Rpb24sIExvYWRCYWNrb2ZmaWNlU21hcnRwYXJrc1RhYmxlQWN0aW9uLCBMb2FkQmFja29mZmljZVNwQW5kU3BhcmtWZXJzaW9uc0FjdGlvbiwgTG9hZEJhY2tvZmZpY2VWYXJzQWN0aW9uLCBMb2FkTW9iaWxlU21hcnRwYXJrc0Jhc2ljQWN0aW9uLCBMb2FkUGFya0RldmljZXNBY3Rpb24sIExvYWRQYXJrc0FjdGlvbiwgTG9hZFNtYXJ0cGFya3NBY3Rpb24sXG4gIExvYWRTbWFydHBhcmtzQmFzaWNBY3Rpb24sIExvYWRTbWFydHBhcmtzRHJvcGRvd25BY3Rpb24sIExvYWRTbWFydHBhcmtzVGFibGVBY3Rpb24sIExvYWRTcEFuZFNwYXJrVmVyc2lvbnNBY3Rpb24sIExvYWRWYXJzQWN0aW9uLFxuICBTZWxlY3RQYXJrQWN0aW9uLFxuICBTZWxlY3RTbWFydFBhcmtBY3Rpb24sIFNldFNtYXJ0UGFya0FjdGlvbiwgU2V0U21hcnRQYXJrVGFibGVBY3Rpb24sIFNldFNtYXJ0UGFya1ZlcnNpb25zQWN0aW9uLFxuICBTbWFydFBhcmtEZXZpY2VTdGF0dXNDaGFuZ2VkQWN0aW9uLFxuICBTeW5jVXNlcnNBbmRSb2xlc0J5U21hcnRwYXJrSWRBY3Rpb25cbn0gZnJvbSAnLi9zbWFydHBhcmsuYWN0aW9ucyc7XG5cblxuZXhwb3J0IGludGVyZmFjZSBTbWFydHBhcmtzU3RhdGVNb2RlbCB7XG4gIHNtYXJ0cGFya3M6IChTbWFydHBhcmtEdG8gfCBTbWFydHBhcmtCYXNpY0R0bylbXTtcbiAgbGF0ZXN0U21hcnRwYXJrczogKFNtYXJ0cGFya0R0byB8IFNtYXJ0cGFya0Jhc2ljRHRvKVtdO1xuICBTcEFuZFNwYXJrVmVyc2lvbnM6IFNwQW5kU3BhcmtWZXJzaW9uc0R0bztcbiAgY291bnRTbWFydFBhcmtzOiBudW1iZXI7XG4gIGNvdW50UGFya2luZ0xvdHM6IG51bWJlcjtcbiAgc2VsZWN0ZWRTbWFydFBhcmtJZDogbnVtYmVyO1xuICBzZWxlY3RlZFNtYXJ0UGFyazogU21hcnRwYXJrRHRvO1xuICBwYXJrczogRmFjaWxpdHlCYXNpY0R0b1tdO1xuICBzZWxlY3RlZFBhcmtJZDogbnVtYmVyO1xuICBzZWxlY3RlZFBhcmtEZXRhaWxzOiBJUGFya0RldGFpbHM7XG4gIHNtYXJ0cGFya0d1aWQ6IHN0cmluZztcbiAgdmVyc2lvbnM6IFN0cmluZ01hcDxzdHJpbmc+O1xuICBzbWFydFBhcmtXcmFwcGVyOiBTbWFydFBhcmtXcmFwcGVyRHRvO1xuICB2YXJzOiBWYXJEdG9bXTtcbiAgZXhwb3J0UGRmU21hcnRwYXJrczogKFNtYXJ0cGFya0R0byB8IFNtYXJ0cGFya0Jhc2ljRHRvKVtdO1xuICBmYWNpbGl0eVRyZWU6IEZhY2lsaXR5VHJlZUR0b1tdO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5AU3RhdGU8U21hcnRwYXJrc1N0YXRlTW9kZWw+KHtcbiAgbmFtZTogJ3NtYXJ0cGFyaycsXG4gIGRlZmF1bHRzOiB7XG4gICAgc21hcnRwYXJrczogbnVsbCxcbiAgICBsYXRlc3RTbWFydHBhcmtzOiBudWxsLFxuICAgIGNvdW50U21hcnRQYXJrczogMCxcbiAgICBjb3VudFBhcmtpbmdMb3RzOiAwLFxuICAgIHNlbGVjdGVkU21hcnRQYXJrSWQ6IG51bGwsXG4gICAgc2VsZWN0ZWRTbWFydFBhcms6IG51bGwsXG4gICAgcGFya3M6IG51bGwsXG4gICAgc2VsZWN0ZWRQYXJrSWQ6IG51bGwsXG4gICAgc2VsZWN0ZWRQYXJrRGV0YWlsczogbnVsbCxcbiAgICBzbWFydHBhcmtHdWlkOiBudWxsLFxuICAgIHZlcnNpb25zOiB7fSxcbiAgICBTcEFuZFNwYXJrVmVyc2lvbnM6IG51bGwsXG4gICAgc21hcnRQYXJrV3JhcHBlcjogbnVsbCxcbiAgICB2YXJzOiBbXSxcbiAgICBleHBvcnRQZGZTbWFydHBhcmtzOiBudWxsLFxuICAgIGZhY2lsaXR5VHJlZTogW10sXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIFNtYXJ0cGFya1N0YXRlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZSxcbiAgICBwcml2YXRlIHJldmVudWVTZXJ2aWNlOiBSZXZlbnVlU2VydmljZSxcbiAgICBwcml2YXRlIHNtYXJ0cGFya1NlcnZpY2VQcm94eTogU21hcnRwYXJrU2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgZmFjaWxpdHlTZXJ2aWNlUHJveHk6IEZhY2lsaXR5U2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgZGV2aWNlU2VydmljZVByb3h5OiBEZXZpY2VTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBtZXNzYWdlQmFyU2VydmljZTogTWVzc2FnZUJhclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZVNlcnZpY2U6IFJvdXRlU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBleHBvcnRGaWxlU2VydmljZTogRXhwb3J0RmlsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb2JpbGVTZXJ2aWNlUHJveHlJZGVudGl0eTogTW9iaWxlU2VydmljZVByb3h5SWRlbnRpdHksXG4gICAgcHJpdmF0ZSBiYWNrb2ZmaWNlU2VydmljZVByb3h5OiBCYWNrb2ZmaWNlU2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgbGljZW5zZVNlcnZpY2VQcm94eTogTGljZW5zZVNlcnZpY2VQcm94eSkgeyB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBwYXJrcyhzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBGYWNpbGl0eUJhc2ljRHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS5wYXJrcztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc2VsZWN0ZWRQYXJrSWQoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogbnVtYmVyIHtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRQYXJrSWQ7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHNlbGVjdGVkUGFya0RldGFpbHMoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogSVBhcmtEZXRhaWxzIHtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRQYXJrRGV0YWlscztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgcGFya0RldmljZXMoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogSURldmljZUR0b1tdIHtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRQYXJrRGV0YWlscz8uZGV2aWNlcztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgZ3VpZChzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBzdHJpbmcge1xuICAgIHJldHVybiBzdGF0ZS5zbWFydHBhcmtHdWlkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBzbWFydHBhcmtzKHN0YXRlOiBTbWFydHBhcmtzU3RhdGVNb2RlbCk6IChTbWFydHBhcmtEdG8gfCBTbWFydHBhcmtCYXNpY0R0bylbXSB7XG4gICAgcmV0dXJuIHN0YXRlLnNtYXJ0cGFya3M7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGxhdGVzdFBhZ2Uoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogKFNtYXJ0cGFya0R0byB8IFNtYXJ0cGFya0Jhc2ljRHRvKVtdIHtcbiAgICByZXR1cm4gc3RhdGUubGF0ZXN0U21hcnRwYXJrcztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc2VsZWN0ZWRTbWFydFBhcmtJZChzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBudW1iZXIge1xuICAgIHJldHVybiBzdGF0ZS5zZWxlY3RlZFNtYXJ0UGFya0lkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBzZWxlY3RlZFNtYXJ0UGFya0RldGFpbHMoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogU21hcnRwYXJrRHRvIHtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRTbWFydFBhcms7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGNvdW50U21hcnRQYXJrcyhzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBudW1iZXIge1xuICAgIHJldHVybiBzdGF0ZS5jb3VudFNtYXJ0UGFya3M7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGNvdW50UGFya2luZ0xvdHMoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogbnVtYmVyIHtcbiAgICByZXR1cm4gc3RhdGUuY291bnRQYXJraW5nTG90cztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgdmVyc2lvbnMoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogU3RyaW5nTWFwPHN0cmluZz4ge1xuICAgIHJldHVybiBzdGF0ZS52ZXJzaW9ucztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc21hcnRwYXJrU2VhcmNoT3B0aW9ucyhzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBTcEFuZFNwYXJrVmVyc2lvbnNEdG8ge1xuICAgIHJldHVybiBzdGF0ZS5TcEFuZFNwYXJrVmVyc2lvbnM7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHNtYXJ0UGFya1dyYXBwZXIoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogU21hcnRQYXJrV3JhcHBlckR0byB7XG4gICAgcmV0dXJuIHN0YXRlLnNtYXJ0UGFya1dyYXBwZXI7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHZhcnMoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogVmFyRHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS52YXJzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBleHBvcnRQZGZTbWFydHBhcmtzKHN0YXRlOiBTbWFydHBhcmtzU3RhdGVNb2RlbCk6IChTbWFydHBhcmtEdG8gfCBTbWFydHBhcmtCYXNpY0R0bylbXSB7XG4gICAgcmV0dXJuIHN0YXRlLmV4cG9ydFBkZlNtYXJ0cGFya3M7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGZhY2lsaXR5VHJlZShzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBGYWNpbGl0eVRyZWVEdG9bXSB7XG4gICAgcmV0dXJuIHN0YXRlLmZhY2lsaXR5VHJlZTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZFNtYXJ0cGFya3NBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkU21hcnRwYXJrc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZFNtYXJ0cGFya3NBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzbWFydHBhcmtzOiBbXSxcbiAgICAgIGNvdW50U21hcnRQYXJrczogMCxcbiAgICAgIGNvdW50UGFya2luZ0xvdHM6IHRoaXMuY291bnRTbWFydHBhcmtGYWNpbGl0aWVzKFtdKVxuICAgIH0pO1xuXG4gICAgY29uc3Qgc21hcnRwYXJrcyQgPSB0aGlzLnNtYXJ0cGFya1NlcnZpY2VQcm94eS5nZXRBbGxTbWFydFBhcmtzKCk7XG4gICAgcmV0dXJuIHNtYXJ0cGFya3MkLnBpcGUodGFwKHNtYXJ0cGFya3MgPT4ge1xuICAgICAgY3R4LmRpc3BhdGNoKG5ldyBTZXRTbWFydFBhcmtBY3Rpb24oc21hcnRwYXJrcy5kYXRhLCBhY3Rpb24ucmVsb2FkKSk7XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkU21hcnRwYXJrc0Jhc2ljQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZFNtYXJ0cGFya3NCYXNpY0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZFNtYXJ0cGFya3NCYXNpY0FjdGlvbikge1xuICAgIGN0eC5kaXNwYXRjaChuZXcgTWVudVN1Yk1vZHVsZUxvYWRBY3Rpb24oYWN0aW9uLnN1Yk1vZHVsZSkpO1xuICAgIGNvbnN0IHNtYXJ0cGFya3MkID0gdGhpcy5mYWNpbGl0eVNlcnZpY2VQcm94eS5nZXRTbWFydHBhcmtCYXNpY0FsbChhY3Rpb24uYXBwTW9kdWxlKTtcbiAgICByZXR1cm4gc21hcnRwYXJrcyQucGlwZShzd2l0Y2hNYXAoc21hcnRwYXJrQmFzaWMgPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBzbWFydFBhcmtXcmFwcGVyOiBzbWFydHBhcmtCYXNpYy5kYXRhLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0U21hcnRwYXJrQmFzaWNBbGxBY3Rpb24oc21hcnRwYXJrQmFzaWMpKTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRNb2JpbGVTbWFydHBhcmtzQmFzaWNBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkTW9iaWxlU21hcnRwYXJrc0Jhc2ljQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkTW9iaWxlU21hcnRwYXJrc0Jhc2ljQWN0aW9uKSB7XG4gICAgY3R4LmRpc3BhdGNoKG5ldyBNZW51U3ViTW9kdWxlTG9hZEFjdGlvbihhY3Rpb24uc3ViTW9kdWxlKSk7XG4gICAgY29uc3Qgc21hcnRwYXJrcyQgPSB0aGlzLm1vYmlsZVNlcnZpY2VQcm94eUlkZW50aXR5LmZhY2lsaXR5QWxsTW9iaWxlKGFjdGlvbi5hcHBNb2R1bGUsIFZFUlNJT05fVjEpO1xuICAgIHJldHVybiBzbWFydHBhcmtzJC5waXBlKHN3aXRjaE1hcChzbWFydHBhcmtCYXNpYyA9PiB7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIHNtYXJ0UGFya1dyYXBwZXI6IHNtYXJ0cGFya0Jhc2ljLmRhdGEsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRTbWFydHBhcmtCYXNpY0FsbEFjdGlvbihzbWFydHBhcmtCYXNpYykpO1xuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJTbWFydHBhcmtzQmFzaWNBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25DbGVhclNtYXJ0cGFya3NCYXNpY0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIF86IENsZWFyU21hcnRwYXJrc0Jhc2ljQWN0aW9uKSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgc21hcnRQYXJrV3JhcHBlcjogbnVsbCxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZFNtYXJ0cGFya3NUYWJsZUFjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWRTbWFydHBhcmtzVGFibGVBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCB7IGZpbHRlciB9OiBMb2FkU21hcnRwYXJrc1RhYmxlQWN0aW9uKSB7XG4gICAgY29uc3Qgc21hcnRwYXJrcyQgPSB0aGlzLnNtYXJ0cGFya1NlcnZpY2VQcm94eS5nZXRTbWFydHBhcmtzKGZpbHRlcik7XG4gICAgcmV0dXJuIHNtYXJ0cGFya3MkLnBpcGUodGFwKHNtYXJ0cGFya3MgPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBsYXRlc3RTbWFydHBhcmtzOiBzbWFydHBhcmtzLmRhdGEuZW50aXRpZXMsXG4gICAgICAgIGNvdW50U21hcnRQYXJrczogc21hcnRwYXJrcy5kYXRhLmNvdW50ZXIsXG4gICAgICAgIGNvdW50UGFya2luZ0xvdHM6IHNtYXJ0cGFya3MuZGF0YS5zdWJDb3VudGVyXG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRCYWNrb2ZmaWNlU21hcnRwYXJrc1RhYmxlQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZEJhY2tvZmZpY2VTbWFydHBhcmtzVGFibGVBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCB7IGZpbHRlciB9OiBMb2FkQmFja29mZmljZVNtYXJ0cGFya3NUYWJsZUFjdGlvbikge1xuICAgIGNvbnN0IHNtYXJ0cGFya3MkID0gdGhpcy5iYWNrb2ZmaWNlU2VydmljZVByb3h5LmdldEJhY2tvZmZpY2VTbWFydHBhcmtzKGZpbHRlcik7XG4gICAgcmV0dXJuIHNtYXJ0cGFya3MkLnBpcGUodGFwKHNtYXJ0cGFya3MgPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBsYXRlc3RTbWFydHBhcmtzOiBzbWFydHBhcmtzLmRhdGEuZW50aXRpZXMsXG4gICAgICAgIGNvdW50U21hcnRQYXJrczogc21hcnRwYXJrcy5kYXRhLmNvdW50ZXIsXG4gICAgICAgIGNvdW50UGFya2luZ0xvdHM6IHNtYXJ0cGFya3MuZGF0YS5zdWJDb3VudGVyXG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuXG4gIEBBY3Rpb24oU2V0U21hcnRQYXJrVGFibGVBY3Rpb24pXG4gIG9uU2V0U21hcnRQYXJrVGFibGVBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCB7IHNtYXJ0cGFya3MgfTogU2V0U21hcnRQYXJrVGFibGVBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzbWFydHBhcmtzXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKFNldFNtYXJ0UGFya0FjdGlvbilcbiAgb25TZXRTbWFydFBhcmtzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgeyBzbWFydHBhcmtzLCByZWxvYWQgfTogU2V0U21hcnRQYXJrQWN0aW9uKSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgc21hcnRwYXJrczogc21hcnRwYXJrcyB8fCBbXSxcbiAgICAgIGNvdW50U21hcnRQYXJrczogc21hcnRwYXJrcz8ubGVuZ3RoIHx8IDAsXG4gICAgICBjb3VudFBhcmtpbmdMb3RzOiB0aGlzLmNvdW50U21hcnRwYXJrRmFjaWxpdGllcyhzbWFydHBhcmtzKVxuICAgIH0pO1xuXG4gICAgaWYgKGN0eC5nZXRTdGF0ZSgpLnNlbGVjdGVkU21hcnRQYXJrSWQpIHtcbiAgICAgIGN0eC5kaXNwYXRjaChuZXcgU2VsZWN0U21hcnRQYXJrQWN0aW9uKGN0eC5nZXRTdGF0ZSgpLnNlbGVjdGVkU21hcnRQYXJrSWQsIHJlbG9hZCkpO1xuICAgIH1cbiAgfVxuXG4gIEBBY3Rpb24oU2VsZWN0U21hcnRQYXJrQWN0aW9uKVxuICBvblNlbGVjdFNtYXJ0UGFya0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogU2VsZWN0U21hcnRQYXJrQWN0aW9uKSB7XG4gICAgbGV0IHNlbGVjdGVkU21hcnRQYXJrO1xuICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuY2xlYXJNZXNzYWdlYmFyKCk7XG4gICAgaWYgKGN0eC5nZXRTdGF0ZSgpLnNtYXJ0cGFya3MpIHtcbiAgICAgIHNlbGVjdGVkU21hcnRQYXJrID0gY3R4LmdldFN0YXRlKCkuc21hcnRwYXJrcy5maW5kKChzbWFydHBhcmspID0+IChzbWFydHBhcmsgYXMgU21hcnRwYXJrRHRvKS5pZCA9PT0gYWN0aW9uLnNtYXJ0UGFya0lkKTtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHsgc2VsZWN0ZWRTbWFydFBhcmtJZDogYWN0aW9uLnNtYXJ0UGFya0lkLCBzZWxlY3RlZFNtYXJ0UGFyayB9KTtcbiAgICAgIGlmIChhY3Rpb24ucmVsb2FkKSB7XG4gICAgICAgIGN0eC5kaXNwYXRjaChuZXcgTG9hZFBhcmtzQWN0aW9uKCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBBY3Rpb24oTG9hZFBhcmtzQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZFBhcmtzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHsgc2VsZWN0ZWRQYXJrRGV0YWlsczogbnVsbCwgc2VsZWN0ZWRQYXJrSWQ6IG51bGwgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5mYWNpbGl0eVNlcnZpY2VQcm94eS5nZXRTbWFydHBhcmtCYXNpY0FsbChBcHBNb2R1bGUuTWFuYWdlbWVudCkucGlwZSh0YXAoc21hcnRwYXJrTWFwID0+IHtcbiAgICAgIGNvbnN0IHsgZ3VpZCwgdHlwZSB9ID0gY3R4LmdldFN0YXRlKCkuc2VsZWN0ZWRTbWFydFBhcms7XG4gICAgICBpZiAoc21hcnRwYXJrTWFwKSB7XG4gICAgICAgIGxldCBzZWxlY3RlZFBhcmtJZDogbnVtYmVyO1xuICAgICAgICBjb25zdCBwYXJrcyA9IHNtYXJ0cGFya01hcC5kYXRhLnNtYXJ0UGFya3NbZ3VpZF0uZmFjaWxpdGllcztcbiAgICAgICAgaWYgKHR5cGUgPT09IFNtYXJ0UGFya1R5cGUuU3VwZXJQYXJrKSB7XG4gICAgICAgICAgY29uc3QgbXVsdGlQYXJrID0gcGFya3MuZmluZChwYXJrID0+IHBhcmsuaXNNdWx0aVBhcmspO1xuICAgICAgICAgIHNlbGVjdGVkUGFya0lkID0gbXVsdGlQYXJrID8gbXVsdGlQYXJrLmlkIDogbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICBwYXJrczogcGFya3MgfHwgW10sXG4gICAgICAgICAgc2VsZWN0ZWRQYXJrSWQ6IHNlbGVjdGVkUGFya0lkID8/IChwYXJrcz8ubGVuZ3RoICYmIHBhcmtzWzBdLmlkIHx8IG51bGwpLFxuICAgICAgICAgIHNtYXJ0cGFya0d1aWQ6IGd1aWQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChwYXJrcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgY3R4LmRpc3BhdGNoKExvYWRQYXJrRGV2aWNlc0FjdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRQYXJrRGV2aWNlc0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWRQYXJrRGV2aWNlcyhjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4pIHtcbiAgICBjb25zdCBwYXJrRGV0YWlsID0gY3R4LmdldFN0YXRlKCkucGFya3MuZmluZCgocGFyaykgPT4gcGFyay5pZCA9PT0gY3R4LmdldFN0YXRlKCkuc2VsZWN0ZWRQYXJrSWQpO1xuICAgIGNvbnN0IGd1aWQgPSBjdHguZ2V0U3RhdGUoKS5zbWFydHBhcmtHdWlkO1xuXG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5mYWNpbGl0eVNlcnZpY2VQcm94eS5nZXRGYWNpbGl0eShwYXJrRGV0YWlsLmlkLCBndWlkKSxcbiAgICAgIHRoaXMucmV2ZW51ZVNlcnZpY2UuZ2V0UmV2ZW51ZShwYXJrRGV0YWlsLmlkLCBndWlkKS5waXBlKGZpbHRlcihyZXZlbnVlID0+ICEhcmV2ZW51ZSkpLFxuICAgICAgdGhpcy5kZXZpY2VTZXJ2aWNlUHJveHkuZ2V0RGV2aWNlcyhwYXJrRGV0YWlsLmlkLCBudWxsLCBudWxsLCBudWxsLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgZ3VpZCksXG4gICAgXSkucGlwZSh0YXAoKFtmYWNpbGl0eSwgcmV2ZW51ZXMsIGRldmljZXNdKSA9PiB7XG4gICAgICBjb25zdCByZXZlbnVlID0gcGFya0RldGFpbC5pc011bHRpUGFyayA9PSAxID8gdGhpcy5yZXZlbnVlU2VydmljZS5jYWxjdWxhdGVSZXZlbnVlRm9yTXVsdGlQYXJrKHJldmVudWVzKSA6IHJldmVudWVzW3BhcmtEZXRhaWwuaWRdO1xuICAgICAgZGV2aWNlcz8uZGF0YS5mb3JFYWNoKGRldmljZSA9PiBkZXZpY2UuZGV2aWNlU3RhdHVzID0gZGV2aWNlLmRldmljZVN0YXR1cyA/PyBnZXREZWZhdWx0RGV2aWNlU3RhdHVzKGRldmljZSkpO1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBzZWxlY3RlZFBhcmtEZXRhaWxzOiB7XG4gICAgICAgICAgZmFjaWxpdHk6IGZhY2lsaXR5LmRhdGEsXG4gICAgICAgICAgZGV2aWNlczogZGV2aWNlcy5kYXRhLFxuICAgICAgICAgIHJldmVudWVcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihTZWxlY3RQYXJrQWN0aW9uKVxuICBvblNlbGVjdFBhcmtBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IFNlbGVjdFBhcmtBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7IHNlbGVjdGVkUGFya0lkOiBhY3Rpb24ucGFya0lkIH0pO1xuICAgIGN0eC5kaXNwYXRjaChMb2FkUGFya0RldmljZXNBY3Rpb24pO1xuICB9XG5cbiAgQEFjdGlvbihDbGVhclNlbGVjdGVkUGFya0FjdGlvbilcbiAgb25DbGVhclNlbGVjdGVkUGFya0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzZWxlY3RlZFBhcmtEZXRhaWxzOiBudWxsLFxuICAgICAgc2VsZWN0ZWRQYXJrSWQ6IG51bGwsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKENsZWFyU2VsZWN0ZWRTbWFydHBhcmtBY3Rpb24pXG4gIG9uQ2xlYXJTZWxlY3RlZHNtYXJ0cGFya0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzZWxlY3RlZFNtYXJ0UGFya0lkOiBudWxsLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihTbWFydFBhcmtEZXZpY2VTdGF0dXNDaGFuZ2VkQWN0aW9uKVxuICBvblNtYXJ0UGFya0RldmljZVN0YXR1c0NoYW5nZWRBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IFNtYXJ0UGFya0RldmljZVN0YXR1c0NoYW5nZWRBY3Rpb24pIHtcbiAgICBjb25zdCBzZWxlY3RlZFBhcmtEZXRhaWxzID0gY3R4LmdldFN0YXRlKCkuc2VsZWN0ZWRQYXJrRGV0YWlscztcbiAgICBpZiAoc2VsZWN0ZWRQYXJrRGV0YWlscykge1xuICAgICAgY29uc3QgaW5kZXggPSBzZWxlY3RlZFBhcmtEZXRhaWxzPy5kZXZpY2VzPy5maW5kSW5kZXgoZGV2aWNlID0+IGRldmljZS5pZCA9PT0gYWN0aW9uLmRldmljZVN0YXR1cy5kZXZpY2VJRCk7XG4gICAgICBjb25zdCBjb21tdW5pY2F0aW9uUGVyY2VudGFnZSA9IHNlbGVjdGVkUGFya0RldGFpbHMuZGV2aWNlc1tpbmRleF0uZGV2aWNlU3RhdHVzLmNvbW11bmljYXRpb25QZXJjZW50YWdlO1xuICAgICAgY29uc3QgbmV3Q29tbVBlcmNlbnRhZ2UgPSBhY3Rpb24uZGV2aWNlU3RhdHVzLmNvbW11bmljYXRpb25QZXJjZW50YWdlO1xuICAgICAgaWYgKGluZGV4ID49IDAgJiYgY29tbXVuaWNhdGlvblBlcmNlbnRhZ2UgIT09IG5ld0NvbW1QZXJjZW50YWdlKSB7XG4gICAgICAgIHNlbGVjdGVkUGFya0RldGFpbHMuZGV2aWNlc1tpbmRleF0uZGV2aWNlU3RhdHVzLmNvbW11bmljYXRpb25QZXJjZW50YWdlID0gbmV3Q29tbVBlcmNlbnRhZ2U7XG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICBzZWxlY3RlZFBhcmtEZXRhaWxzOiBjbG9uZURlZXAoc2VsZWN0ZWRQYXJrRGV0YWlscyksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBBY3Rpb24oRGlzY29ubmVjdFNtYXJ0UGFya0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkRpc2Nvbm5lY3RTbWFydHBhcmtBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCB7IHNtYXJ0UGFya0d1aWQsIHNtYXJ0UGFya0lkLCBwYXNzd29yZCB9OiBEaXNjb25uZWN0U21hcnRQYXJrQWN0aW9uKSB7XG4gICAgY29uc3Qgc21hcnRwYXJrJCA9IHRoaXMuc21hcnRwYXJrU2VydmljZVByb3h5LmRpc2Nvbm5lY3QocGFzc3dvcmQsIHNtYXJ0UGFya0lkLCBTbWFydFBhcmtTdGF0dXMuTm9uYWN0aXZlKTtcbiAgICByZXR1cm4gc21hcnRwYXJrJC5waXBlKHRhcCh7XG4gICAgICBuZXh0OiAodikgPT4ge1xuICAgICAgICBjb25zdCBzbWFydHBhcmtzID0gKGN0eC5nZXRTdGF0ZSgpLnNtYXJ0cGFya3MgfHwgW10pLmZpbHRlcihzcCA9PiBzcC5ndWlkICE9PSBzbWFydFBhcmtHdWlkKTtcbiAgICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICAgIHNlbGVjdGVkU21hcnRQYXJrOiBudWxsLFxuICAgICAgICAgIHNlbGVjdGVkUGFya0lkOiBudWxsLFxuICAgICAgICAgIHNtYXJ0cGFya3MsXG4gICAgICAgICAgY291bnRTbWFydFBhcmtzOiBzbWFydHBhcmtzPy5sZW5ndGggfHwgMCxcbiAgICAgICAgICBjb3VudFBhcmtpbmdMb3RzOiB0aGlzLmNvdW50U21hcnRwYXJrRmFjaWxpdGllcyhzbWFydHBhcmtzKVxuICAgICAgICB9KTtcbiAgICAgICAgY3R4LmRpc3BhdGNoKG5ldyBDbGVhclNlbGVjdGVkRmFjaWxpdHlBY3Rpb24oKSk7XG4gICAgICAgIGN0eC5kaXNwYXRjaChuZXcgTmF2aWdhdGUodGhpcy5yb3V0ZVNlcnZpY2UuZ2V0TmF2aWdhdGlvblJvdXRlKFsnbWFuYWdlbWVudCcsICdzbWFydHBhcmtzJ10pKSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlKSA9PiB7XG4gICAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuZXJyb3IocGFyc2VBcGlFcnJvck1lc3NhZ2UoZSksIHsgcG9zaXRpb246IE1lc3NhZ2VCYXJQb3NpdGlvbi5TdGF0aWMsIGlkOiAnbW9kYWwnIH0pO1xuICAgICAgfSxcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKFNldFNtYXJ0UGFya1ZlcnNpb25zQWN0aW9uKVxuICBvblNldFNtYXJ0UGFya1ZlcnNpb25zQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgYWN0aW9uOiBTZXRTbWFydFBhcmtWZXJzaW9uc0FjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHZlcnNpb25zOiBhY3Rpb24udmVyc2lvbnMsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRTcEFuZFNwYXJrVmVyc2lvbnNBY3Rpb24pXG4gIG9uTG9hZFNwQW5kU3BhcmtWZXJzaW9uc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4pIHtcbiAgICBpZiAoY3R4LmdldFN0YXRlKCkuU3BBbmRTcGFya1ZlcnNpb25zID09IG51bGwpIHtcbiAgICAgIGNvbnN0IHZlcnNpb25zJCA9IHRoaXMuc21hcnRwYXJrU2VydmljZVByb3h5LmdldFNwQW5kU3BhcmtWZXJzaW9ucygpO1xuICAgICAgcmV0dXJuIHZlcnNpb25zJC5waXBlKHRhcCh2ZXJzaW9ucyA9PiB7XG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHsgU3BBbmRTcGFya1ZlcnNpb25zOiB2ZXJzaW9ucy5kYXRhIH0pO1xuICAgICAgfSkpO1xuICAgIH1cbiAgfVxuXG4gIEBBY3Rpb24oTG9hZEJhY2tvZmZpY2VTcEFuZFNwYXJrVmVyc2lvbnNBY3Rpb24pXG4gIG9uTG9hZEJhY2tvZmZpY2VTcEFuZFNwYXJrVmVyc2lvbnNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+KSB7XG4gICAgaWYgKGN0eC5nZXRTdGF0ZSgpLlNwQW5kU3BhcmtWZXJzaW9ucyA9PSBudWxsKSB7XG4gICAgICBjb25zdCB2ZXJzaW9ucyQgPSB0aGlzLmJhY2tvZmZpY2VTZXJ2aWNlUHJveHkuZ2V0QmFja29mZmljZVNwQW5kU3BhcmtWZXJzaW9ucygpO1xuICAgICAgcmV0dXJuIHZlcnNpb25zJC5waXBlKHRhcCh2ZXJzaW9ucyA9PiB7XG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHsgU3BBbmRTcGFya1ZlcnNpb25zOiB2ZXJzaW9ucy5kYXRhIH0pO1xuICAgICAgfSkpO1xuICAgIH1cbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJTcEFuZFNwYXJrVmVyc2lvbnNBY3Rpb24pXG4gIG9uQ2xlYXJTcEFuZFNwYXJrVmVyc2lvbnNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+KSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgU3BBbmRTcGFya1ZlcnNpb25zOiBudWxsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRWYXJzQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZFZhcnNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IExvYWRWYXJzQWN0aW9uKSB7XG4gICAgY29uc3QgdmFycyQgPSB0aGlzLnNtYXJ0cGFya1NlcnZpY2VQcm94eS52YXJzKGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8ubWF4UmVzdWx0cywgYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5zZWFyY2hUZXJtLFxuICAgICAgYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5vcmRlckJ5LmNvbHVtbiwgYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5vcmRlckJ5Lm9yZGVyRGlyZWN0aW9uKTtcbiAgICByZXR1cm4gdmFycyQucGlwZSh0YXAodmFycyA9PiB7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIHZhcnM6IHZhcnMuZGF0YVxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cblxuICBAQWN0aW9uKExvYWRCYWNrb2ZmaWNlVmFyc0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWRCYWNrb2ZmaWNlVmFyc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZFZhcnNBY3Rpb24pIHtcbiAgICBjb25zdCB2YXJzJCA9IHRoaXMuYmFja29mZmljZVNlcnZpY2VQcm94eS5nZXRCYWNrb2ZmaWNlVmFycyhhY3Rpb24uc2VhcmNoUGFyYW1zRHRvLm1heFJlc3VsdHMsIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8uc2VhcmNoVGVybSxcbiAgICAgIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8ub3JkZXJCeS5jb2x1bW4sIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8ub3JkZXJCeS5vcmRlckRpcmVjdGlvbik7XG4gICAgcmV0dXJuIHZhcnMkLnBpcGUodGFwKHZhcnMgPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICB2YXJzOiB2YXJzLmRhdGFcbiAgICAgIH0pO1xuICAgIH0pKTtcbiAgfVxuXG5cbiAgQEFjdGlvbihTeW5jVXNlcnNBbmRSb2xlc0J5U21hcnRwYXJrSWRBY3Rpb24pXG4gIG9uU3luY1VzZXJzQW5kUm9sZXNCeVNtYXJ0cGFya0lkQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgYWN0aW9uOiBTeW5jVXNlcnNBbmRSb2xlc0J5U21hcnRwYXJrSWRBY3Rpb24pOiBPYnNlcnZhYmxlPE9iamVjdEh0dHBSZXNwb25zZURhdGE+IHtcbiAgICByZXR1cm4gdGhpcy5iYWNrb2ZmaWNlU2VydmljZVByb3h5LnN5bmNCYWNrb2ZmaWNlVXNlcnNBbmRSb2xlc0J5U21hcnRwYXJrSWQoYWN0aW9uLnNtYXJ0cGFyay50ZW5hbnRJRCwgYWN0aW9uLnNtYXJ0cGFyay5pZCkucGlwZSh0YXAoe1xuICAgICAgbmV4dDogXyA9PiB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLnN1Y2Nlc3MoTG9jYWxpemF0aW9uLnN1Y2Nlc3NmdWxfc3luY191c2Vyc19hbmRfcm9sZXNfZm9yX3NtYXJ0cGFyaywgeyBtZXNzYWdlUGFyYW1zOiB7IHNtYXJ0cGFya05hbWU6IGFjdGlvbi5zbWFydHBhcmsubmFtZSB9IH0pLFxuICAgICAgZXJyb3I6IGUgPT4gdGhpcy5tZXNzYWdlQmFyU2VydmljZS5lcnJvcihwYXJzZUFwaUVycm9yTWVzc2FnZShlKSwgeyBwb3NpdGlvbjogTWVzc2FnZUJhclBvc2l0aW9uLkZsb2F0IH0pLFxuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oRXhwb3J0U21hcnRwYXJrQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uRXhwb3J0U21hcnRwYXJrc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogRXhwb3J0U21hcnRwYXJrQWN0aW9uKSB7XG4gICAgY29uc3Qgc21hcnRwYXJrcyQgPSB0aGlzLmJhY2tvZmZpY2VTZXJ2aWNlUHJveHkuZ2V0QmFja29mZmljZVNtYXJ0cGFya3MoYWN0aW9uLnNtYXJ0cGFya0ZpbHRlcik7XG4gICAgcmV0dXJuIHNtYXJ0cGFya3MkLnBpcGUodGFwKHtcbiAgICAgIG5leHQ6IHNtYXJ0cGFya3MgPT4ge1xuICAgICAgICBjb25zdCB0YWJsZVJvd3M6IGFueVtdW10gPSBbXTtcbiAgICAgICAgY29uc3Qgc21hcnRwYXJrc0xpc3Q6IFNtYXJ0cGFya0R0b1tdID0gc21hcnRwYXJrcy5kYXRhLmVudGl0aWVzO1xuICAgICAgICBzbWFydHBhcmtzTGlzdC5mb3JFYWNoKChzbWFydHBhcmspID0+IHtcbiAgICAgICAgICB0YWJsZVJvd3MucHVzaChbXG4gICAgICAgICAgICBzbWFydHBhcmsubmFtZSxcbiAgICAgICAgICAgIFNtYXJ0UGFya1R5cGVbc21hcnRwYXJrLnR5cGVdLnJlcGxhY2UoLyhbQS1aXSkvZywgJyAkMScpLnRyaW0oKSxcbiAgICAgICAgICAgIHNtYXJ0cGFyay50ZW5hbnROYW1lLFxuICAgICAgICAgICAgc21hcnRwYXJrLnZlcnNpb24sXG4gICAgICAgICAgICBzbWFydHBhcmsuc3BhcmtWZXJzaW9uLFxuICAgICAgICAgICAgc21hcnRwYXJrLmNyZWF0ZWRBdCxcbiAgICAgICAgICAgIHNtYXJ0cGFyay5ndWlkLFxuICAgICAgICAgICAgc21hcnRwYXJrLnZhck5hbWUgfHwgJy0nLFxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoU21hcnRQYXJrU3RhdHVzVGV4dFtTbWFydFBhcmtTdGF0dXNbc21hcnRwYXJrLnN0YXR1c11dKVxuICAgICAgICAgIF0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5leHBvcnRGaWxlU2VydmljZS5leHBvcnQoYWN0aW9uLmZpbGVUeXBlLCB0YWJsZVJvd3MsIGFjdGlvbi5jb2x1bW5zSGVhZGVyLCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uc21hcnRwYXJrKSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5lcnJvcih0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uZmFpbGVkX2V4cG9ydF9maWxlKSk7XG4gICAgICB9XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihFeHBvcnRQZGZTbWFydHBhcmtzVGFibGVBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25FeHBvcnRQZGZTbWFydHBhcmtzVGFibGVBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCB7IGZpbHRlciB9OiBFeHBvcnRQZGZTbWFydHBhcmtzVGFibGVBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBleHBvcnRQZGZTbWFydHBhcmtzOiBudWxsLFxuICAgIH0pO1xuICAgIGNvbnN0IHNtYXJ0cGFya3MkID0gdGhpcy5iYWNrb2ZmaWNlU2VydmljZVByb3h5LmdldEJhY2tvZmZpY2VTbWFydHBhcmtzKGZpbHRlcik7XG4gICAgcmV0dXJuIHNtYXJ0cGFya3MkLnBpcGUodGFwKHNtYXJ0cGFya3MgPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBleHBvcnRQZGZTbWFydHBhcmtzOiBzbWFydHBhcmtzLmRhdGEuZW50aXRpZXMsXG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRTbWFydHBhcmtzRHJvcGRvd25BY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkQWxsU21hcnRwYXJrc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZFNtYXJ0cGFya3NEcm9wZG93bkFjdGlvbik6IE9ic2VydmFibGU8RmFjaWxpdHlUcmVlRHRvRW50aXR5V3JhcHBlckR0b0h0dHBSZXNwb25zZURhdGE+IHtcbiAgICBjb25zdCBzbWFydHBhcmtzJCA9IHRoaXMubGljZW5zZVNlcnZpY2VQcm94eS5iYXNlU21hcnRwYXJrcyhhY3Rpb24uc2VhcmNoUGFyYW1zRHRvLm1heFJlc3VsdHMsXG4gICAgICBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvLnNlYXJjaFRlcm0sIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8ub3JkZXJCeS5jb2x1bW4sIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8ub3JkZXJCeS5vcmRlckRpcmVjdGlvbik7XG5cbiAgICByZXR1cm4gc21hcnRwYXJrcyQucGlwZSh0YXAoZmFjaWxpdHlUcmVlRHRvID0+IHtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgZmFjaWxpdHlUcmVlOiBmYWNpbGl0eVRyZWVEdG8uZGF0YS5lbnRpdGllcyxcbiAgICAgIH0pO1xuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgY291bnRTbWFydHBhcmtGYWNpbGl0aWVzKHNtYXJ0cGFya3M6IChTbWFydHBhcmtEdG8gfCBTbWFydHBhcmtCYXNpY0R0bylbXSk6IG51bWJlciB7XG4gICAgbGV0IGNvdW50UGFya2luZ0xvdHMgPSAwO1xuICAgIHNtYXJ0cGFya3MuZm9yRWFjaChzbWFydFBhcmsgPT4ge1xuICAgICAgaWYgKHNtYXJ0UGFyay5mYWNpbGl0aWVzKSB7XG4gICAgICAgIGNvdW50UGFya2luZ0xvdHMgKz0gc21hcnRQYXJrLmZhY2lsaXRpZXMuZmlsdGVyKGYgPT4gIWYuaXNNdWx0aVBhcmspLmxlbmd0aDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gY291bnRQYXJraW5nTG90cztcbiAgfVxufVxuIl19
|
|
527
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRwYXJrLnN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9tb2R1bGVzL3NtYXJ0cGFya3Mvc21hcnRwYXJrLnN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQXVCLE1BQU0sYUFBYSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDbkMsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUU1RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU3RCxPQUFPLEVBQUUsU0FBUyxFQUE2TSxlQUFlLEVBQUUsYUFBYSxFQUFpQyxNQUFNLDJDQUEyQyxDQUFDO0FBTWhWLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWpFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFN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NEIsTUFPNUIsMkJBQTJCLE1BWTNCLHFDQUFxQyxNQWFyQyx5QkFBeUIsTUFPekIscUJBQXFCLE1BYXJCLHVCQUF1QixNQWF2QixpQkFBaUIsTUEyQmpCLGlCQUFpQixNQXNCakIsa0JBQWtCLE1BTWxCLHlCQUF5QixNQVF6Qiw4QkFBOEIsTUFPOUIsb0NBQW9DLE1BZ0JwQywyQkFBMkIsTUFzQjNCLDRCQUE0QixNQU81Qiw4QkFBOEIsTUFVOUIsd0NBQXdDLE1BVXhDLCtCQUErQixNQU8vQixnQkFBZ0IsTUFZaEIsMEJBQTBCLE1BWTFCLHNDQUFzQyxNQVF0Qyx3QkFBd0IsTUE0QnhCLGdDQUFnQyxNQWFoQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0ZSB9IGZyb20gJ0BuZ3hzL3JvdXRlci1wbHVnaW4nO1xuaW1wb3J0IHsgQWN0aW9uLCBTZWxlY3RvciwgU3RhdGUsIFN0YXRlQ29udGV4dCwgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1lc3NhZ2VCYXJQb3NpdGlvbiB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbWVzc2FnZS1iYXIvbWVzc2FnZS1iYXItcG9zaXRpb24uZW51bSc7XG5pbXBvcnQgeyBNZXNzYWdlQmFyU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbWVzc2FnZS1iYXIvbWVzc2FnZS1iYXIuc2VydmljZSc7XG5pbXBvcnQgeyBWRVJTSU9OX1YxIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3ZlcnNpb24tY29uc3RhbnRzJztcbmltcG9ydCB7IFNtYXJ0UGFya1N0YXR1c1RleHQgfSBmcm9tICcuLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBMb2NhbGl6YXRpb24gfSBmcm9tICcuLi8uLi9lbnVtcy9sb2NhbGl6YXRpb24uZW51bSc7XG5pbXBvcnQgeyBJUGFya0RldGFpbHMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3BhcmstZGV0YWlscy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQXBwTW9kdWxlLCBCYWNrb2ZmaWNlU2VydmljZVByb3h5LCBGYWNpbGl0eUJhc2ljRHRvLCBMaWNlbnNlU2VydmljZVByb3h5LCBPYmplY3RIdHRwUmVzcG9uc2VEYXRhLCBTbWFydHBhcmtEdG8sIFNtYXJ0cGFya0ZpbHRlck9wdGlvbkR0b0lFbnVtZXJhYmxlSHR0cFJlc3BvbnNlRGF0YSwgU21hcnRwYXJrRmlsdGVyT3B0aW9uRHRvLCBTbWFydHBhcmtTZXJ2aWNlUHJveHksIFNtYXJ0UGFya1N0YXR1cywgU21hcnRQYXJrVHlwZSwgU3BBbmRTcGFya1ZlcnNpb25zRHRvLCBWYXJEdG8gfSBmcm9tICcuLi8uLi9zZXJ2aWNlLXByb3h5L2Nsb3VkLXNlcnZpY2UtcHJveGllcyc7XG5pbXBvcnQgeyBEZXZpY2VTZXJ2aWNlUHJveHksIEZhY2lsaXR5U2VydmljZVByb3h5LCBJRGV2aWNlRHRvLCBTbWFydHBhcmtCYXNpY0R0bywgU21hcnRQYXJrV3JhcHBlckR0byB9IGZyb20gJy4uLy4uL3NlcnZpY2UtcHJveHkvZWRnZS1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgTW9iaWxlU2VydmljZVByb3h5SWRlbnRpdHkgfSBmcm9tICcuLi8uLi9zZXJ2aWNlLXByb3h5L2lkZW50aXR5LXNlcnZpY2UtcHJveGllcyc7XG5pbXBvcnQgeyBFeHBvcnRGaWxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V4cG9ydC1maWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmV2ZW51ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXZlbnVlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUm91dGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcm91dGUuc2VydmljZSc7XG5pbXBvcnQgeyBwYXJzZUFwaUVycm9yTWVzc2FnZSB9IGZyb20gJy4uLy4uL3V0aWxzL2FwaS1oZWxwZXIudXRpbCc7XG5pbXBvcnQgeyBnZXREZWZhdWx0RGV2aWNlU3RhdHVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvZGV2aWNlLnV0aWwnO1xuaW1wb3J0IHsgU3RyaW5nTWFwIH0gZnJvbSAnLi4vLi4vdXRpbHMvbGFuZy51dGlsJztcbmltcG9ydCB7IENsZWFyU2VsZWN0ZWRGYWNpbGl0eUFjdGlvbiwgU2V0U21hcnRwYXJrQmFzaWNBbGxBY3Rpb24gfSBmcm9tICcuLi9mYWNpbGl0eS9mYWNpbGl0eS5hY3Rpb25zJztcbmltcG9ydCB7IE1lbnVTdWJNb2R1bGVMb2FkQWN0aW9uIH0gZnJvbSAnLi4vc2lkZW5hdi9zaWRlbmF2LmFjdGlvbnMnO1xuaW1wb3J0IHtcbiAgQ2xlYXJTZWxlY3RlZFBhcmtBY3Rpb24sXG4gIENsZWFyU2VsZWN0ZWRTbWFydHBhcmtBY3Rpb24sXG4gIENsZWFyU21hcnRwYXJrc0Jhc2ljQWN0aW9uLCBDbGVhclNwQW5kU3BhcmtWZXJzaW9uc0FjdGlvbixcbiAgRGlzY29ubmVjdFNtYXJ0UGFya0FjdGlvbiwgRXhwb3J0UGRmU21hcnRwYXJrc1RhYmxlQWN0aW9uLCBFeHBvcnRTbWFydHBhcmtBY3Rpb24sIExvYWRCYWNrb2ZmaWNlU21hcnRwYXJrc1RhYmxlQWN0aW9uLCBMb2FkQmFja29mZmljZVNwQW5kU3BhcmtWZXJzaW9uc0FjdGlvbiwgTG9hZEJhY2tvZmZpY2VWYXJzQWN0aW9uLCBMb2FkTW9iaWxlU21hcnRwYXJrc0Jhc2ljQWN0aW9uLCBMb2FkUGFya0RldmljZXNBY3Rpb24sIExvYWRQYXJrc0FjdGlvbiwgTG9hZFNtYXJ0cGFya3NBY3Rpb24sXG4gIExvYWRTbWFydHBhcmtzQmFzaWNBY3Rpb24sIExvYWRTbWFydHBhcmtzRHJvcGRvd25BY3Rpb24sIExvYWRTbWFydHBhcmtzVGFibGVBY3Rpb24sIExvYWRTcEFuZFNwYXJrVmVyc2lvbnNBY3Rpb24sIExvYWRWYXJzQWN0aW9uLFxuICBTZWxlY3RQYXJrQWN0aW9uLFxuICBTZWxlY3RTbWFydFBhcmtBY3Rpb24sIFNldFNtYXJ0UGFya0FjdGlvbiwgU2V0U21hcnRQYXJrVGFibGVBY3Rpb24sIFNldFNtYXJ0UGFya1ZlcnNpb25zQWN0aW9uLFxuICBTbWFydFBhcmtEZXZpY2VTdGF0dXNDaGFuZ2VkQWN0aW9uLFxuICBTeW5jVXNlcnNBbmRSb2xlc0J5U21hcnRwYXJrSWRBY3Rpb25cbn0gZnJvbSAnLi9zbWFydHBhcmsuYWN0aW9ucyc7XG5cblxuZXhwb3J0IGludGVyZmFjZSBTbWFydHBhcmtzU3RhdGVNb2RlbCB7XG4gIHNtYXJ0cGFya3M6IChTbWFydHBhcmtEdG8gfCBTbWFydHBhcmtCYXNpY0R0bylbXTtcbiAgbGF0ZXN0U21hcnRwYXJrczogKFNtYXJ0cGFya0R0byB8IFNtYXJ0cGFya0Jhc2ljRHRvKVtdO1xuICBTcEFuZFNwYXJrVmVyc2lvbnM6IFNwQW5kU3BhcmtWZXJzaW9uc0R0bztcbiAgY291bnRTbWFydFBhcmtzOiBudW1iZXI7XG4gIGNvdW50UGFya2luZ0xvdHM6IG51bWJlcjtcbiAgc2VsZWN0ZWRTbWFydFBhcmtJZDogbnVtYmVyO1xuICBzZWxlY3RlZFNtYXJ0UGFyazogU21hcnRwYXJrRHRvO1xuICBwYXJrczogRmFjaWxpdHlCYXNpY0R0b1tdO1xuICBzZWxlY3RlZFBhcmtJZDogbnVtYmVyO1xuICBzZWxlY3RlZFBhcmtEZXRhaWxzOiBJUGFya0RldGFpbHM7XG4gIHNtYXJ0cGFya0d1aWQ6IHN0cmluZztcbiAgdmVyc2lvbnM6IFN0cmluZ01hcDxzdHJpbmc+O1xuICBzbWFydFBhcmtXcmFwcGVyOiBTbWFydFBhcmtXcmFwcGVyRHRvO1xuICB2YXJzOiBWYXJEdG9bXTtcbiAgZXhwb3J0UGRmU21hcnRwYXJrczogKFNtYXJ0cGFya0R0byB8IFNtYXJ0cGFya0Jhc2ljRHRvKVtdO1xuICBmYWNpbGl0eVRyZWU6IFNtYXJ0cGFya0ZpbHRlck9wdGlvbkR0b1tdO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5AU3RhdGU8U21hcnRwYXJrc1N0YXRlTW9kZWw+KHtcbiAgbmFtZTogJ3NtYXJ0cGFyaycsXG4gIGRlZmF1bHRzOiB7XG4gICAgc21hcnRwYXJrczogbnVsbCxcbiAgICBsYXRlc3RTbWFydHBhcmtzOiBudWxsLFxuICAgIGNvdW50U21hcnRQYXJrczogMCxcbiAgICBjb3VudFBhcmtpbmdMb3RzOiAwLFxuICAgIHNlbGVjdGVkU21hcnRQYXJrSWQ6IG51bGwsXG4gICAgc2VsZWN0ZWRTbWFydFBhcms6IG51bGwsXG4gICAgcGFya3M6IG51bGwsXG4gICAgc2VsZWN0ZWRQYXJrSWQ6IG51bGwsXG4gICAgc2VsZWN0ZWRQYXJrRGV0YWlsczogbnVsbCxcbiAgICBzbWFydHBhcmtHdWlkOiBudWxsLFxuICAgIHZlcnNpb25zOiB7fSxcbiAgICBTcEFuZFNwYXJrVmVyc2lvbnM6IG51bGwsXG4gICAgc21hcnRQYXJrV3JhcHBlcjogbnVsbCxcbiAgICB2YXJzOiBbXSxcbiAgICBleHBvcnRQZGZTbWFydHBhcmtzOiBudWxsLFxuICAgIGZhY2lsaXR5VHJlZTogW10sXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIFNtYXJ0cGFya1N0YXRlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZSxcbiAgICBwcml2YXRlIHJldmVudWVTZXJ2aWNlOiBSZXZlbnVlU2VydmljZSxcbiAgICBwcml2YXRlIHNtYXJ0cGFya1NlcnZpY2VQcm94eTogU21hcnRwYXJrU2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgZmFjaWxpdHlTZXJ2aWNlUHJveHk6IEZhY2lsaXR5U2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgZGV2aWNlU2VydmljZVByb3h5OiBEZXZpY2VTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBtZXNzYWdlQmFyU2VydmljZTogTWVzc2FnZUJhclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZVNlcnZpY2U6IFJvdXRlU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBleHBvcnRGaWxlU2VydmljZTogRXhwb3J0RmlsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb2JpbGVTZXJ2aWNlUHJveHlJZGVudGl0eTogTW9iaWxlU2VydmljZVByb3h5SWRlbnRpdHksXG4gICAgcHJpdmF0ZSBiYWNrb2ZmaWNlU2VydmljZVByb3h5OiBCYWNrb2ZmaWNlU2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgbGljZW5zZVNlcnZpY2VQcm94eTogTGljZW5zZVNlcnZpY2VQcm94eSkgeyB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBwYXJrcyhzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBGYWNpbGl0eUJhc2ljRHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS5wYXJrcztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc2VsZWN0ZWRQYXJrSWQoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogbnVtYmVyIHtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRQYXJrSWQ7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHNlbGVjdGVkUGFya0RldGFpbHMoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogSVBhcmtEZXRhaWxzIHtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRQYXJrRGV0YWlscztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgcGFya0RldmljZXMoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogSURldmljZUR0b1tdIHtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRQYXJrRGV0YWlscz8uZGV2aWNlcztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgZ3VpZChzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBzdHJpbmcge1xuICAgIHJldHVybiBzdGF0ZS5zbWFydHBhcmtHdWlkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBzbWFydHBhcmtzKHN0YXRlOiBTbWFydHBhcmtzU3RhdGVNb2RlbCk6IChTbWFydHBhcmtEdG8gfCBTbWFydHBhcmtCYXNpY0R0bylbXSB7XG4gICAgcmV0dXJuIHN0YXRlLnNtYXJ0cGFya3M7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGxhdGVzdFBhZ2Uoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogKFNtYXJ0cGFya0R0byB8IFNtYXJ0cGFya0Jhc2ljRHRvKVtdIHtcbiAgICByZXR1cm4gc3RhdGUubGF0ZXN0U21hcnRwYXJrcztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc2VsZWN0ZWRTbWFydFBhcmtJZChzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBudW1iZXIge1xuICAgIHJldHVybiBzdGF0ZS5zZWxlY3RlZFNtYXJ0UGFya0lkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBzZWxlY3RlZFNtYXJ0UGFya0RldGFpbHMoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogU21hcnRwYXJrRHRvIHtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWRTbWFydFBhcms7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGNvdW50U21hcnRQYXJrcyhzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBudW1iZXIge1xuICAgIHJldHVybiBzdGF0ZS5jb3VudFNtYXJ0UGFya3M7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGNvdW50UGFya2luZ0xvdHMoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogbnVtYmVyIHtcbiAgICByZXR1cm4gc3RhdGUuY291bnRQYXJraW5nTG90cztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgdmVyc2lvbnMoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogU3RyaW5nTWFwPHN0cmluZz4ge1xuICAgIHJldHVybiBzdGF0ZS52ZXJzaW9ucztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc21hcnRwYXJrU2VhcmNoT3B0aW9ucyhzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBTcEFuZFNwYXJrVmVyc2lvbnNEdG8ge1xuICAgIHJldHVybiBzdGF0ZS5TcEFuZFNwYXJrVmVyc2lvbnM7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHNtYXJ0UGFya1dyYXBwZXIoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogU21hcnRQYXJrV3JhcHBlckR0byB7XG4gICAgcmV0dXJuIHN0YXRlLnNtYXJ0UGFya1dyYXBwZXI7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHZhcnMoc3RhdGU6IFNtYXJ0cGFya3NTdGF0ZU1vZGVsKTogVmFyRHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS52YXJzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBleHBvcnRQZGZTbWFydHBhcmtzKHN0YXRlOiBTbWFydHBhcmtzU3RhdGVNb2RlbCk6IChTbWFydHBhcmtEdG8gfCBTbWFydHBhcmtCYXNpY0R0bylbXSB7XG4gICAgcmV0dXJuIHN0YXRlLmV4cG9ydFBkZlNtYXJ0cGFya3M7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGZhY2lsaXR5VHJlZShzdGF0ZTogU21hcnRwYXJrc1N0YXRlTW9kZWwpOiBTbWFydHBhcmtGaWx0ZXJPcHRpb25EdG9bXSB7XG4gICAgcmV0dXJuIHN0YXRlLmZhY2lsaXR5VHJlZTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZFNtYXJ0cGFya3NBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkU21hcnRwYXJrc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZFNtYXJ0cGFya3NBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzbWFydHBhcmtzOiBbXSxcbiAgICAgIGNvdW50U21hcnRQYXJrczogMCxcbiAgICAgIGNvdW50UGFya2luZ0xvdHM6IHRoaXMuY291bnRTbWFydHBhcmtGYWNpbGl0aWVzKFtdKVxuICAgIH0pO1xuXG4gICAgY29uc3Qgc21hcnRwYXJrcyQgPSB0aGlzLnNtYXJ0cGFya1NlcnZpY2VQcm94eS5nZXRBbGxTbWFydFBhcmtzKCk7XG4gICAgcmV0dXJuIHNtYXJ0cGFya3MkLnBpcGUodGFwKHNtYXJ0cGFya3MgPT4ge1xuICAgICAgY3R4LmRpc3BhdGNoKG5ldyBTZXRTbWFydFBhcmtBY3Rpb24oc21hcnRwYXJrcy5kYXRhLCBhY3Rpb24ucmVsb2FkKSk7XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkU21hcnRwYXJrc0Jhc2ljQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZFNtYXJ0cGFya3NCYXNpY0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZFNtYXJ0cGFya3NCYXNpY0FjdGlvbikge1xuICAgIGN0eC5kaXNwYXRjaChuZXcgTWVudVN1Yk1vZHVsZUxvYWRBY3Rpb24oYWN0aW9uLnN1Yk1vZHVsZSkpO1xuICAgIGNvbnN0IHNtYXJ0cGFya3MkID0gdGhpcy5mYWNpbGl0eVNlcnZpY2VQcm94eS5nZXRTbWFydHBhcmtCYXNpY0FsbChhY3Rpb24uYXBwTW9kdWxlKTtcbiAgICByZXR1cm4gc21hcnRwYXJrcyQucGlwZShzd2l0Y2hNYXAoc21hcnRwYXJrQmFzaWMgPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBzbWFydFBhcmtXcmFwcGVyOiBzbWFydHBhcmtCYXNpYy5kYXRhLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0U21hcnRwYXJrQmFzaWNBbGxBY3Rpb24oc21hcnRwYXJrQmFzaWMpKTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRNb2JpbGVTbWFydHBhcmtzQmFzaWNBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkTW9iaWxlU21hcnRwYXJrc0Jhc2ljQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkTW9iaWxlU21hcnRwYXJrc0Jhc2ljQWN0aW9uKSB7XG4gICAgY3R4LmRpc3BhdGNoKG5ldyBNZW51U3ViTW9kdWxlTG9hZEFjdGlvbihhY3Rpb24uc3ViTW9kdWxlKSk7XG4gICAgY29uc3Qgc21hcnRwYXJrcyQgPSB0aGlzLm1vYmlsZVNlcnZpY2VQcm94eUlkZW50aXR5LmZhY2lsaXR5QWxsTW9iaWxlKGFjdGlvbi5hcHBNb2R1bGUsIFZFUlNJT05fVjEpO1xuICAgIHJldHVybiBzbWFydHBhcmtzJC5waXBlKHN3aXRjaE1hcChzbWFydHBhcmtCYXNpYyA9PiB7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIHNtYXJ0UGFya1dyYXBwZXI6IHNtYXJ0cGFya0Jhc2ljLmRhdGEsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRTbWFydHBhcmtCYXNpY0FsbEFjdGlvbihzbWFydHBhcmtCYXNpYykpO1xuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJTbWFydHBhcmtzQmFzaWNBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25DbGVhclNtYXJ0cGFya3NCYXNpY0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIF86IENsZWFyU21hcnRwYXJrc0Jhc2ljQWN0aW9uKSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgc21hcnRQYXJrV3JhcHBlcjogbnVsbCxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZFNtYXJ0cGFya3NUYWJsZUFjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWRTbWFydHBhcmtzVGFibGVBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCB7IGZpbHRlciB9OiBMb2FkU21hcnRwYXJrc1RhYmxlQWN0aW9uKSB7XG4gICAgY29uc3Qgc21hcnRwYXJrcyQgPSB0aGlzLnNtYXJ0cGFya1NlcnZpY2VQcm94eS5nZXRTbWFydHBhcmtzKGZpbHRlcik7XG4gICAgcmV0dXJuIHNtYXJ0cGFya3MkLnBpcGUodGFwKHNtYXJ0cGFya3MgPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBsYXRlc3RTbWFydHBhcmtzOiBzbWFydHBhcmtzLmRhdGEuZW50aXRpZXMsXG4gICAgICAgIGNvdW50U21hcnRQYXJrczogc21hcnRwYXJrcy5kYXRhLmNvdW50ZXIsXG4gICAgICAgIGNvdW50UGFya2luZ0xvdHM6IHNtYXJ0cGFya3MuZGF0YS5zdWJDb3VudGVyXG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRCYWNrb2ZmaWNlU21hcnRwYXJrc1RhYmxlQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZEJhY2tvZmZpY2VTbWFydHBhcmtzVGFibGVBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCB7IGZpbHRlciB9OiBMb2FkQmFja29mZmljZVNtYXJ0cGFya3NUYWJsZUFjdGlvbikge1xuICAgIGNvbnN0IHNtYXJ0cGFya3MkID0gdGhpcy5iYWNrb2ZmaWNlU2VydmljZVByb3h5LmdldEJhY2tvZmZpY2VTbWFydHBhcmtzKGZpbHRlcik7XG4gICAgcmV0dXJuIHNtYXJ0cGFya3MkLnBpcGUodGFwKHNtYXJ0cGFya3MgPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBsYXRlc3RTbWFydHBhcmtzOiBzbWFydHBhcmtzLmRhdGEuZW50aXRpZXMsXG4gICAgICAgIGNvdW50U21hcnRQYXJrczogc21hcnRwYXJrcy5kYXRhLmNvdW50ZXIsXG4gICAgICAgIGNvdW50UGFya2luZ0xvdHM6IHNtYXJ0cGFya3MuZGF0YS5zdWJDb3VudGVyXG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuXG4gIEBBY3Rpb24oU2V0U21hcnRQYXJrVGFibGVBY3Rpb24pXG4gIG9uU2V0U21hcnRQYXJrVGFibGVBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCB7IHNtYXJ0cGFya3MgfTogU2V0U21hcnRQYXJrVGFibGVBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzbWFydHBhcmtzXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKFNldFNtYXJ0UGFya0FjdGlvbilcbiAgb25TZXRTbWFydFBhcmtzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgeyBzbWFydHBhcmtzLCByZWxvYWQgfTogU2V0U21hcnRQYXJrQWN0aW9uKSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgc21hcnRwYXJrczogc21hcnRwYXJrcyB8fCBbXSxcbiAgICAgIGNvdW50U21hcnRQYXJrczogc21hcnRwYXJrcz8ubGVuZ3RoIHx8IDAsXG4gICAgICBjb3VudFBhcmtpbmdMb3RzOiB0aGlzLmNvdW50U21hcnRwYXJrRmFjaWxpdGllcyhzbWFydHBhcmtzKVxuICAgIH0pO1xuXG4gICAgaWYgKGN0eC5nZXRTdGF0ZSgpLnNlbGVjdGVkU21hcnRQYXJrSWQpIHtcbiAgICAgIGN0eC5kaXNwYXRjaChuZXcgU2VsZWN0U21hcnRQYXJrQWN0aW9uKGN0eC5nZXRTdGF0ZSgpLnNlbGVjdGVkU21hcnRQYXJrSWQsIHJlbG9hZCkpO1xuICAgIH1cbiAgfVxuXG4gIEBBY3Rpb24oU2VsZWN0U21hcnRQYXJrQWN0aW9uKVxuICBvblNlbGVjdFNtYXJ0UGFya0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogU2VsZWN0U21hcnRQYXJrQWN0aW9uKSB7XG4gICAgbGV0IHNlbGVjdGVkU21hcnRQYXJrO1xuICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuY2xlYXJNZXNzYWdlYmFyKCk7XG4gICAgaWYgKGN0eC5nZXRTdGF0ZSgpLnNtYXJ0cGFya3MpIHtcbiAgICAgIHNlbGVjdGVkU21hcnRQYXJrID0gY3R4LmdldFN0YXRlKCkuc21hcnRwYXJrcy5maW5kKChzbWFydHBhcmspID0+IChzbWFydHBhcmsgYXMgU21hcnRwYXJrRHRvKS5pZCA9PT0gYWN0aW9uLnNtYXJ0UGFya0lkKTtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHsgc2VsZWN0ZWRTbWFydFBhcmtJZDogYWN0aW9uLnNtYXJ0UGFya0lkLCBzZWxlY3RlZFNtYXJ0UGFyayB9KTtcbiAgICAgIGlmIChhY3Rpb24ucmVsb2FkKSB7XG4gICAgICAgIGN0eC5kaXNwYXRjaChuZXcgTG9hZFBhcmtzQWN0aW9uKCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBBY3Rpb24oTG9hZFBhcmtzQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZFBhcmtzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHsgc2VsZWN0ZWRQYXJrRGV0YWlsczogbnVsbCwgc2VsZWN0ZWRQYXJrSWQ6IG51bGwgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5mYWNpbGl0eVNlcnZpY2VQcm94eS5nZXRTbWFydHBhcmtCYXNpY0FsbChBcHBNb2R1bGUuTWFuYWdlbWVudCkucGlwZSh0YXAoc21hcnRwYXJrTWFwID0+IHtcbiAgICAgIGNvbnN0IHsgZ3VpZCwgdHlwZSB9ID0gY3R4LmdldFN0YXRlKCkuc2VsZWN0ZWRTbWFydFBhcms7XG4gICAgICBpZiAoc21hcnRwYXJrTWFwKSB7XG4gICAgICAgIGxldCBzZWxlY3RlZFBhcmtJZDogbnVtYmVyO1xuICAgICAgICBjb25zdCBwYXJrcyA9IHNtYXJ0cGFya01hcC5kYXRhLnNtYXJ0UGFya3NbZ3VpZF0uZmFjaWxpdGllcztcbiAgICAgICAgaWYgKHR5cGUgPT09IFNtYXJ0UGFya1R5cGUuU3VwZXJQYXJrKSB7XG4gICAgICAgICAgY29uc3QgbXVsdGlQYXJrID0gcGFya3MuZmluZChwYXJrID0+IHBhcmsuaXNNdWx0aVBhcmspO1xuICAgICAgICAgIHNlbGVjdGVkUGFya0lkID0gbXVsdGlQYXJrID8gbXVsdGlQYXJrLmlkIDogbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICBwYXJrczogcGFya3MgfHwgW10sXG4gICAgICAgICAgc2VsZWN0ZWRQYXJrSWQ6IHNlbGVjdGVkUGFya0lkID8/IChwYXJrcz8ubGVuZ3RoICYmIHBhcmtzWzBdLmlkIHx8IG51bGwpLFxuICAgICAgICAgIHNtYXJ0cGFya0d1aWQ6IGd1aWQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChwYXJrcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgY3R4LmRpc3BhdGNoKExvYWRQYXJrRGV2aWNlc0FjdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRQYXJrRGV2aWNlc0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWRQYXJrRGV2aWNlcyhjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4pIHtcbiAgICBjb25zdCBwYXJrRGV0YWlsID0gY3R4LmdldFN0YXRlKCkucGFya3MuZmluZCgocGFyaykgPT4gcGFyay5pZCA9PT0gY3R4LmdldFN0YXRlKCkuc2VsZWN0ZWRQYXJrSWQpO1xuICAgIGNvbnN0IGd1aWQgPSBjdHguZ2V0U3RhdGUoKS5zbWFydHBhcmtHdWlkO1xuXG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5mYWNpbGl0eVNlcnZpY2VQcm94eS5nZXRGYWNpbGl0eShwYXJrRGV0YWlsLmlkLCBndWlkKSxcbiAgICAgIHRoaXMucmV2ZW51ZVNlcnZpY2UuZ2V0UmV2ZW51ZShwYXJrRGV0YWlsLmlkLCBndWlkKS5waXBlKGZpbHRlcihyZXZlbnVlID0+ICEhcmV2ZW51ZSkpLFxuICAgICAgdGhpcy5kZXZpY2VTZXJ2aWNlUHJveHkuZ2V0RGV2aWNlcyhwYXJrRGV0YWlsLmlkLCBudWxsLCBudWxsLCBudWxsLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgZ3VpZCksXG4gICAgXSkucGlwZSh0YXAoKFtmYWNpbGl0eSwgcmV2ZW51ZXMsIGRldmljZXNdKSA9PiB7XG4gICAgICBjb25zdCByZXZlbnVlID0gcGFya0RldGFpbC5pc011bHRpUGFyayA9PSAxID8gdGhpcy5yZXZlbnVlU2VydmljZS5jYWxjdWxhdGVSZXZlbnVlRm9yTXVsdGlQYXJrKHJldmVudWVzKSA6IHJldmVudWVzW3BhcmtEZXRhaWwuaWRdO1xuICAgICAgZGV2aWNlcz8uZGF0YS5mb3JFYWNoKGRldmljZSA9PiBkZXZpY2UuZGV2aWNlU3RhdHVzID0gZGV2aWNlLmRldmljZVN0YXR1cyA/PyBnZXREZWZhdWx0RGV2aWNlU3RhdHVzKGRldmljZSkpO1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBzZWxlY3RlZFBhcmtEZXRhaWxzOiB7XG4gICAgICAgICAgZmFjaWxpdHk6IGZhY2lsaXR5LmRhdGEsXG4gICAgICAgICAgZGV2aWNlczogZGV2aWNlcy5kYXRhLFxuICAgICAgICAgIHJldmVudWVcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihTZWxlY3RQYXJrQWN0aW9uKVxuICBvblNlbGVjdFBhcmtBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IFNlbGVjdFBhcmtBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7IHNlbGVjdGVkUGFya0lkOiBhY3Rpb24ucGFya0lkIH0pO1xuICAgIGN0eC5kaXNwYXRjaChMb2FkUGFya0RldmljZXNBY3Rpb24pO1xuICB9XG5cbiAgQEFjdGlvbihDbGVhclNlbGVjdGVkUGFya0FjdGlvbilcbiAgb25DbGVhclNlbGVjdGVkUGFya0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzZWxlY3RlZFBhcmtEZXRhaWxzOiBudWxsLFxuICAgICAgc2VsZWN0ZWRQYXJrSWQ6IG51bGwsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKENsZWFyU2VsZWN0ZWRTbWFydHBhcmtBY3Rpb24pXG4gIG9uQ2xlYXJTZWxlY3RlZHNtYXJ0cGFya0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBzZWxlY3RlZFNtYXJ0UGFya0lkOiBudWxsLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihTbWFydFBhcmtEZXZpY2VTdGF0dXNDaGFuZ2VkQWN0aW9uKVxuICBvblNtYXJ0UGFya0RldmljZVN0YXR1c0NoYW5nZWRBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IFNtYXJ0UGFya0RldmljZVN0YXR1c0NoYW5nZWRBY3Rpb24pIHtcbiAgICBjb25zdCBzZWxlY3RlZFBhcmtEZXRhaWxzID0gY3R4LmdldFN0YXRlKCkuc2VsZWN0ZWRQYXJrRGV0YWlscztcbiAgICBpZiAoc2VsZWN0ZWRQYXJrRGV0YWlscykge1xuICAgICAgY29uc3QgaW5kZXggPSBzZWxlY3RlZFBhcmtEZXRhaWxzPy5kZXZpY2VzPy5maW5kSW5kZXgoZGV2aWNlID0+IGRldmljZS5pZCA9PT0gYWN0aW9uLmRldmljZVN0YXR1cy5kZXZpY2VJRCk7XG4gICAgICBjb25zdCBjb21tdW5pY2F0aW9uUGVyY2VudGFnZSA9IHNlbGVjdGVkUGFya0RldGFpbHMuZGV2aWNlc1tpbmRleF0uZGV2aWNlU3RhdHVzLmNvbW11bmljYXRpb25QZXJjZW50YWdlO1xuICAgICAgY29uc3QgbmV3Q29tbVBlcmNlbnRhZ2UgPSBhY3Rpb24uZGV2aWNlU3RhdHVzLmNvbW11bmljYXRpb25QZXJjZW50YWdlO1xuICAgICAgaWYgKGluZGV4ID49IDAgJiYgY29tbXVuaWNhdGlvblBlcmNlbnRhZ2UgIT09IG5ld0NvbW1QZXJjZW50YWdlKSB7XG4gICAgICAgIHNlbGVjdGVkUGFya0RldGFpbHMuZGV2aWNlc1tpbmRleF0uZGV2aWNlU3RhdHVzLmNvbW11bmljYXRpb25QZXJjZW50YWdlID0gbmV3Q29tbVBlcmNlbnRhZ2U7XG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICBzZWxlY3RlZFBhcmtEZXRhaWxzOiBjbG9uZURlZXAoc2VsZWN0ZWRQYXJrRGV0YWlscyksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBBY3Rpb24oRGlzY29ubmVjdFNtYXJ0UGFya0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkRpc2Nvbm5lY3RTbWFydHBhcmtBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCB7IHNtYXJ0UGFya0d1aWQsIHNtYXJ0UGFya0lkLCBwYXNzd29yZCB9OiBEaXNjb25uZWN0U21hcnRQYXJrQWN0aW9uKSB7XG4gICAgY29uc3Qgc21hcnRwYXJrJCA9IHRoaXMuc21hcnRwYXJrU2VydmljZVByb3h5LmRpc2Nvbm5lY3QocGFzc3dvcmQsIHNtYXJ0UGFya0lkLCBTbWFydFBhcmtTdGF0dXMuTm9uYWN0aXZlKTtcbiAgICByZXR1cm4gc21hcnRwYXJrJC5waXBlKHRhcCh7XG4gICAgICBuZXh0OiAodikgPT4ge1xuICAgICAgICBjb25zdCBzbWFydHBhcmtzID0gKGN0eC5nZXRTdGF0ZSgpLnNtYXJ0cGFya3MgfHwgW10pLmZpbHRlcihzcCA9PiBzcC5ndWlkICE9PSBzbWFydFBhcmtHdWlkKTtcbiAgICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICAgIHNlbGVjdGVkU21hcnRQYXJrOiBudWxsLFxuICAgICAgICAgIHNlbGVjdGVkUGFya0lkOiBudWxsLFxuICAgICAgICAgIHNtYXJ0cGFya3MsXG4gICAgICAgICAgY291bnRTbWFydFBhcmtzOiBzbWFydHBhcmtzPy5sZW5ndGggfHwgMCxcbiAgICAgICAgICBjb3VudFBhcmtpbmdMb3RzOiB0aGlzLmNvdW50U21hcnRwYXJrRmFjaWxpdGllcyhzbWFydHBhcmtzKVxuICAgICAgICB9KTtcbiAgICAgICAgY3R4LmRpc3BhdGNoKG5ldyBDbGVhclNlbGVjdGVkRmFjaWxpdHlBY3Rpb24oKSk7XG4gICAgICAgIGN0eC5kaXNwYXRjaChuZXcgTmF2aWdhdGUodGhpcy5yb3V0ZVNlcnZpY2UuZ2V0TmF2aWdhdGlvblJvdXRlKFsnbWFuYWdlbWVudCcsICdzbWFydHBhcmtzJ10pKSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlKSA9PiB7XG4gICAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuZXJyb3IocGFyc2VBcGlFcnJvck1lc3NhZ2UoZSksIHsgcG9zaXRpb246IE1lc3NhZ2VCYXJQb3NpdGlvbi5TdGF0aWMsIGlkOiAnbW9kYWwnIH0pO1xuICAgICAgfSxcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKFNldFNtYXJ0UGFya1ZlcnNpb25zQWN0aW9uKVxuICBvblNldFNtYXJ0UGFya1ZlcnNpb25zQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgYWN0aW9uOiBTZXRTbWFydFBhcmtWZXJzaW9uc0FjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHZlcnNpb25zOiBhY3Rpb24udmVyc2lvbnMsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRTcEFuZFNwYXJrVmVyc2lvbnNBY3Rpb24pXG4gIG9uTG9hZFNwQW5kU3BhcmtWZXJzaW9uc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4pIHtcbiAgICBpZiAoY3R4LmdldFN0YXRlKCkuU3BBbmRTcGFya1ZlcnNpb25zID09IG51bGwpIHtcbiAgICAgIGNvbnN0IHZlcnNpb25zJCA9IHRoaXMuc21hcnRwYXJrU2VydmljZVByb3h5LmdldFNwQW5kU3BhcmtWZXJzaW9ucygpO1xuICAgICAgcmV0dXJuIHZlcnNpb25zJC5waXBlKHRhcCh2ZXJzaW9ucyA9PiB7XG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHsgU3BBbmRTcGFya1ZlcnNpb25zOiB2ZXJzaW9ucy5kYXRhIH0pO1xuICAgICAgfSkpO1xuICAgIH1cbiAgfVxuXG4gIEBBY3Rpb24oTG9hZEJhY2tvZmZpY2VTcEFuZFNwYXJrVmVyc2lvbnNBY3Rpb24pXG4gIG9uTG9hZEJhY2tvZmZpY2VTcEFuZFNwYXJrVmVyc2lvbnNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+KSB7XG4gICAgaWYgKGN0eC5nZXRTdGF0ZSgpLlNwQW5kU3BhcmtWZXJzaW9ucyA9PSBudWxsKSB7XG4gICAgICBjb25zdCB2ZXJzaW9ucyQgPSB0aGlzLmJhY2tvZmZpY2VTZXJ2aWNlUHJveHkuZ2V0QmFja29mZmljZVNwQW5kU3BhcmtWZXJzaW9ucygpO1xuICAgICAgcmV0dXJuIHZlcnNpb25zJC5waXBlKHRhcCh2ZXJzaW9ucyA9PiB7XG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHsgU3BBbmRTcGFya1ZlcnNpb25zOiB2ZXJzaW9ucy5kYXRhIH0pO1xuICAgICAgfSkpO1xuICAgIH1cbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJTcEFuZFNwYXJrVmVyc2lvbnNBY3Rpb24pXG4gIG9uQ2xlYXJTcEFuZFNwYXJrVmVyc2lvbnNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+KSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgU3BBbmRTcGFya1ZlcnNpb25zOiBudWxsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRWYXJzQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZFZhcnNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCBhY3Rpb246IExvYWRWYXJzQWN0aW9uKSB7XG4gICAgY29uc3QgdmFycyQgPSB0aGlzLnNtYXJ0cGFya1NlcnZpY2VQcm94eS52YXJzKGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8ubWF4UmVzdWx0cywgYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5zZWFyY2hUZXJtLFxuICAgICAgYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5vcmRlckJ5LmNvbHVtbiwgYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5vcmRlckJ5Lm9yZGVyRGlyZWN0aW9uKTtcbiAgICByZXR1cm4gdmFycyQucGlwZSh0YXAodmFycyA9PiB7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIHZhcnM6IHZhcnMuZGF0YVxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cblxuICBAQWN0aW9uKExvYWRCYWNrb2ZmaWNlVmFyc0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWRCYWNrb2ZmaWNlVmFyc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZFZhcnNBY3Rpb24pIHtcbiAgICBjb25zdCB2YXJzJCA9IHRoaXMuYmFja29mZmljZVNlcnZpY2VQcm94eS5nZXRCYWNrb2ZmaWNlVmFycyhhY3Rpb24uc2VhcmNoUGFyYW1zRHRvLm1heFJlc3VsdHMsIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8uc2VhcmNoVGVybSxcbiAgICAgIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8ub3JkZXJCeS5jb2x1bW4sIGFjdGlvbi5zZWFyY2hQYXJhbXNEdG8ub3JkZXJCeS5vcmRlckRpcmVjdGlvbik7XG4gICAgcmV0dXJuIHZhcnMkLnBpcGUodGFwKHZhcnMgPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICB2YXJzOiB2YXJzLmRhdGFcbiAgICAgIH0pO1xuICAgIH0pKTtcbiAgfVxuXG5cbiAgQEFjdGlvbihTeW5jVXNlcnNBbmRSb2xlc0J5U21hcnRwYXJrSWRBY3Rpb24pXG4gIG9uU3luY1VzZXJzQW5kUm9sZXNCeVNtYXJ0cGFya0lkQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PFNtYXJ0cGFya3NTdGF0ZU1vZGVsPiwgYWN0aW9uOiBTeW5jVXNlcnNBbmRSb2xlc0J5U21hcnRwYXJrSWRBY3Rpb24pOiBPYnNlcnZhYmxlPE9iamVjdEh0dHBSZXNwb25zZURhdGE+IHtcbiAgICByZXR1cm4gdGhpcy5iYWNrb2ZmaWNlU2VydmljZVByb3h5LnN5bmNCYWNrb2ZmaWNlVXNlcnNBbmRSb2xlc0J5U21hcnRwYXJrSWQoYWN0aW9uLnNtYXJ0cGFyay50ZW5hbnRJRCwgYWN0aW9uLnNtYXJ0cGFyay5pZCkucGlwZSh0YXAoe1xuICAgICAgbmV4dDogXyA9PiB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLnN1Y2Nlc3MoTG9jYWxpemF0aW9uLnN1Y2Nlc3NmdWxfc3luY191c2Vyc19hbmRfcm9sZXNfZm9yX3NtYXJ0cGFyaywgeyBtZXNzYWdlUGFyYW1zOiB7IHNtYXJ0cGFya05hbWU6IGFjdGlvbi5zbWFydHBhcmsubmFtZSB9IH0pLFxuICAgICAgZXJyb3I6IGUgPT4gdGhpcy5tZXNzYWdlQmFyU2VydmljZS5lcnJvcihwYXJzZUFwaUVycm9yTWVzc2FnZShlKSwgeyBwb3NpdGlvbjogTWVzc2FnZUJhclBvc2l0aW9uLkZsb2F0IH0pLFxuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oRXhwb3J0U21hcnRwYXJrQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uRXhwb3J0U21hcnRwYXJrc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogRXhwb3J0U21hcnRwYXJrQWN0aW9uKSB7XG4gICAgY29uc3Qgc21hcnRwYXJrcyQgPSB0aGlzLmJhY2tvZmZpY2VTZXJ2aWNlUHJveHkuZ2V0QmFja29mZmljZVNtYXJ0cGFya3MoYWN0aW9uLnNtYXJ0cGFya0ZpbHRlcik7XG4gICAgcmV0dXJuIHNtYXJ0cGFya3MkLnBpcGUodGFwKHtcbiAgICAgIG5leHQ6IHNtYXJ0cGFya3MgPT4ge1xuICAgICAgICBjb25zdCB0YWJsZVJvd3M6IGFueVtdW10gPSBbXTtcbiAgICAgICAgY29uc3Qgc21hcnRwYXJrc0xpc3Q6IFNtYXJ0cGFya0R0b1tdID0gc21hcnRwYXJrcy5kYXRhLmVudGl0aWVzO1xuICAgICAgICBzbWFydHBhcmtzTGlzdC5mb3JFYWNoKChzbWFydHBhcmspID0+IHtcbiAgICAgICAgICB0YWJsZVJvd3MucHVzaChbXG4gICAgICAgICAgICBzbWFydHBhcmsubmFtZSxcbiAgICAgICAgICAgIFNtYXJ0UGFya1R5cGVbc21hcnRwYXJrLnR5cGVdLnJlcGxhY2UoLyhbQS1aXSkvZywgJyAkMScpLnRyaW0oKSxcbiAgICAgICAgICAgIHNtYXJ0cGFyay50ZW5hbnROYW1lLFxuICAgICAgICAgICAgc21hcnRwYXJrLnZlcnNpb24sXG4gICAgICAgICAgICBzbWFydHBhcmsuc3BhcmtWZXJzaW9uLFxuICAgICAgICAgICAgc21hcnRwYXJrLmNyZWF0ZWRBdCxcbiAgICAgICAgICAgIHNtYXJ0cGFyay5ndWlkLFxuICAgICAgICAgICAgc21hcnRwYXJrLnZhck5hbWUgfHwgJy0nLFxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoU21hcnRQYXJrU3RhdHVzVGV4dFtTbWFydFBhcmtTdGF0dXNbc21hcnRwYXJrLnN0YXR1c11dKVxuICAgICAgICAgIF0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5leHBvcnRGaWxlU2VydmljZS5leHBvcnQoYWN0aW9uLmZpbGVUeXBlLCB0YWJsZVJvd3MsIGFjdGlvbi5jb2x1bW5zSGVhZGVyLCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uc21hcnRwYXJrKSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5lcnJvcih0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uZmFpbGVkX2V4cG9ydF9maWxlKSk7XG4gICAgICB9XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihFeHBvcnRQZGZTbWFydHBhcmtzVGFibGVBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25FeHBvcnRQZGZTbWFydHBhcmtzVGFibGVBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8U21hcnRwYXJrc1N0YXRlTW9kZWw+LCB7IGZpbHRlciB9OiBFeHBvcnRQZGZTbWFydHBhcmtzVGFibGVBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBleHBvcnRQZGZTbWFydHBhcmtzOiBudWxsLFxuICAgIH0pO1xuICAgIGNvbnN0IHNtYXJ0cGFya3MkID0gdGhpcy5iYWNrb2ZmaWNlU2VydmljZVByb3h5LmdldEJhY2tvZmZpY2VTbWFydHBhcmtzKGZpbHRlcik7XG4gICAgcmV0dXJuIHNtYXJ0cGFya3MkLnBpcGUodGFwKHNtYXJ0cGFya3MgPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBleHBvcnRQZGZTbWFydHBhcmtzOiBzbWFydHBhcmtzLmRhdGEuZW50aXRpZXMsXG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRTbWFydHBhcmtzRHJvcGRvd25BY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkQWxsU21hcnRwYXJrc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxTbWFydHBhcmtzU3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZFNtYXJ0cGFya3NEcm9wZG93bkFjdGlvbik6IE9ic2VydmFibGU8U21hcnRwYXJrRmlsdGVyT3B0aW9uRHRvSUVudW1lcmFibGVIdHRwUmVzcG9uc2VEYXRhPiB7XG4gICAgY29uc3Qgc21hcnRwYXJrcyQgPSB0aGlzLmxpY2Vuc2VTZXJ2aWNlUHJveHkuYmFzZVNtYXJ0cGFya3MoYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5tYXhSZXN1bHRzLFxuICAgICAgYWN0aW9uLnNlYXJjaFBhcmFtc0R0by5zZWFyY2hUZXJtLCBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvLm9yZGVyQnkuY29sdW1uLCBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvLm9yZGVyQnkub3JkZXJEaXJlY3Rpb24pO1xuXG4gICAgcmV0dXJuIHNtYXJ0cGFya3MkLnBpcGUodGFwKGZhY2lsaXR5VHJlZUR0byA9PiB7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIGZhY2lsaXR5VHJlZTogZmFjaWxpdHlUcmVlRHRvLmRhdGEsXG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIGNvdW50U21hcnRwYXJrRmFjaWxpdGllcyhzbWFydHBhcmtzOiAoU21hcnRwYXJrRHRvIHwgU21hcnRwYXJrQmFzaWNEdG8pW10pOiBudW1iZXIge1xuICAgIGxldCBjb3VudFBhcmtpbmdMb3RzID0gMDtcbiAgICBzbWFydHBhcmtzLmZvckVhY2goc21hcnRQYXJrID0+IHtcbiAgICAgIGlmIChzbWFydFBhcmsuZmFjaWxpdGllcykge1xuICAgICAgICBjb3VudFBhcmtpbmdMb3RzICs9IHNtYXJ0UGFyay5mYWNpbGl0aWVzLmZpbHRlcihmID0+ICFmLmlzTXVsdGlQYXJrKS5sZW5ndGg7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGNvdW50UGFya2luZ0xvdHM7XG4gIH1cbn1cbiJdfQ==
|