@c8y/ngx-components 1017.0.267 → 1017.0.284
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/esm2020/core/realtime/measurement-realtime.service.mjs +4 -2
- package/esm2020/device-profile/device-profile.component.mjs +4 -2
- package/esm2020/widgets/kpi-widget/kpi-widget-view/kpi-widget-view.component.mjs +2 -2
- package/fesm2015/c8y-ngx-components-device-profile.mjs +3 -1
- package/fesm2015/c8y-ngx-components-device-profile.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-widgets-kpi-widget.mjs +1 -1
- package/fesm2015/c8y-ngx-components-widgets-kpi-widget.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components.mjs +3 -1
- package/fesm2015/c8y-ngx-components.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-device-profile.mjs +3 -1
- package/fesm2020/c8y-ngx-components-device-profile.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-widgets-kpi-widget.mjs +1 -1
- package/fesm2020/c8y-ngx-components-widgets-kpi-widget.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components.mjs +3 -1
- package/fesm2020/c8y-ngx-components.mjs.map +1 -1
- package/package.json +2 -2
- package/widgets/kpi-widget/kpi-widget-view/kpi-widget-view.component.d.ts +2 -2
|
@@ -61,7 +61,9 @@ export class MeasurementRealtimeService extends RealtimeService {
|
|
|
61
61
|
map(result => !emitNullIfInitialValuesWereNotFound || result.data.length ? result.data : [null]),
|
|
62
62
|
// reverse required, so that measurements are received ordered by time (ascending).
|
|
63
63
|
// from ensures values are sent as single measurements and not a measurement array.
|
|
64
|
-
|
|
64
|
+
// TODO: replace `[...result].reverse()` with `result.toReversed()` once es2023 is available.
|
|
65
|
+
// Had to clone the result array as otherwise reverse may alternate the array multiple times if the observable is subscribed multiple times.
|
|
66
|
+
switchMap(result => from([...result].reverse())));
|
|
65
67
|
}
|
|
66
68
|
channel() {
|
|
67
69
|
return '/measurements/*';
|
|
@@ -72,4 +74,4 @@ MeasurementRealtimeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12
|
|
|
72
74
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: MeasurementRealtimeService, decorators: [{
|
|
73
75
|
type: Injectable
|
|
74
76
|
}], ctorParameters: function () { return [{ type: i1.RealtimeSubjectService }, { type: i2.MeasurementService }]; } });
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZW1lbnQtcmVhbHRpbWUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvcmVhbHRpbWUvbWVhc3VyZW1lbnQtcmVhbHRpbWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBNkIsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7O0FBR3JELE1BQU0sT0FBTywwQkFBMkIsU0FBUSxlQUE2QjtJQUMzRSxZQUNZLGVBQXVDLEVBQ3ZDLGtCQUFzQztRQUVoRCxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7UUFIYixvQkFBZSxHQUFmLGVBQWUsQ0FBd0I7UUFDdkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtJQUdsRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILDhCQUE4QixDQUM1QixRQUFnQixFQUNoQixNQUFjLEVBQ2QsVUFBMEM7UUFFMUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7OztPQWVHO0lBQ0gsaUNBQWlDLENBQy9CLFFBQWdCLEVBQ2hCLE1BQWMsRUFDZCxVQUF5QyxFQUN6QyxRQUFRLEdBQUcsQ0FBQyxFQUNaLG1DQUFtQyxHQUFHLEtBQUs7UUFFM0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDcEYsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQzVDLFFBQVEsRUFDUixNQUFNLEVBQ04sVUFBVSxFQUNWLFFBQVEsRUFDUixtQ0FBbUMsQ0FDcEMsQ0FBQztRQUNGLE9BQU8sS0FBSyxDQUFDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFUyxnQkFBZ0IsQ0FDeEIsUUFBZ0IsRUFDaEIsTUFBYyxFQUNkLFVBQXlDLEVBQ3pDLFFBQWdCLEVBQ2hCLG1DQUFtQyxHQUFHLEtBQUs7UUFFM0MsT0FBTyxJQUFJLENBQ1QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQztZQUMzQixtQkFBbUIsRUFBRSxNQUFNO1lBQzNCLGlCQUFpQixFQUFFLFFBQVE7WUFDM0IsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO1lBQ3BDLFFBQVEsRUFBRSxZQUFZO1lBQ3RCLE1BQU0sRUFBRSxJQUFJO1lBQ1osUUFBUTtTQUNULENBQUMsQ0FDSCxDQUFDLElBQUk7UUFDSixxR0FBcUc7UUFDckcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQ1gsQ0FBQyxtQ0FBbUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FDbEY7UUFDRCxtRkFBbUY7UUFDbkYsbUZBQW1GO1FBQ25GLDZGQUE2RjtRQUM3Riw0SUFBNEk7UUFDNUksU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQ2pELENBQUM7SUFDSixDQUFDO0lBRVMsT0FBTztRQUNmLE9BQU8saUJBQWlCLENBQUM7SUFDM0IsQ0FBQzs7dUhBNUZVLDBCQUEwQjsySEFBMUIsMEJBQTBCOzJGQUExQiwwQkFBMEI7a0JBRHRDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJSWRlbnRpZmllZCwgSU1lYXN1cmVtZW50LCBNZWFzdXJlbWVudFNlcnZpY2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBmcm9tLCBtZXJnZSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFJlYWx0aW1lU3ViamVjdFNlcnZpY2UgfSBmcm9tICcuL3JlYWx0aW1lLXN1YmplY3Quc2VydmljZSc7XG5pbXBvcnQgeyBSZWFsdGltZVNlcnZpY2UgfSBmcm9tICcuL3JlYWx0aW1lLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTWVhc3VyZW1lbnRSZWFsdGltZVNlcnZpY2UgZXh0ZW5kcyBSZWFsdGltZVNlcnZpY2U8SU1lYXN1cmVtZW50PiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByZWFsdGltZVN1YmplY3Q6IFJlYWx0aW1lU3ViamVjdFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG1lYXN1cmVtZW50U2VydmljZTogTWVhc3VyZW1lbnRTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKHJlYWx0aW1lU3ViamVjdCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFuIE9ic2VydmFibGUgb2YgYWxsIG1lYXN1cmVtZW50cyBmaWx0ZXJlZCBieSBmcmFnbWVudCBhbmQgc2VyaWVzLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZnJhZ21lbnQgTWVhc3VyZW1lbnQgZnJhZ21lbnRcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlcmllcyBNZWFzdXJlbWVudCBzZXJpZXNcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudW1iZXIgfCBJSWRlbnRpZmllZH0gZW50aXR5T3JJZCBFbnRpdHkgb2JqZWN0IG9yIGlkXG4gICAqXG4gICAqIEByZXR1cm5zIEFuIFtbT2JzZXJ2YWJsZV1dIG9mIG5ld2x5IGNyZWF0ZWQgZW50aXR5IG9iamVjdHMuXG4gICAqL1xuICBvbkNyZWF0ZU9mU3BlY2lmaWNNZWFzdXJlbWVudCQoXG4gICAgZnJhZ21lbnQ6IHN0cmluZyxcbiAgICBzZXJpZXM6IHN0cmluZyxcbiAgICBlbnRpdHlPcklkPzogc3RyaW5nIHwgbnVtYmVyIHwgSUlkZW50aWZpZWRcbiAgKTogT2JzZXJ2YWJsZTxJTWVhc3VyZW1lbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5vbkNyZWF0ZSQoZW50aXR5T3JJZCkucGlwZShmaWx0ZXIobXNnID0+IG1zZ1tmcmFnbWVudF0gJiYgbXNnW2ZyYWdtZW50XVtzZXJpZXNdKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFuIE9ic2VydmFibGUgb2YgYWxsIG1lYXN1cmVtZW50cyBmaWx0ZXJlZCBieSBmcmFnbWVudCBhbmQgc2VyaWVzLlxuICAgKiBDb21iaW5lcyB0aGUgbGF0ZXN0IHZhbHVlIGZyb20gbWVhc3VyZW1lbnQgQVBJIGFuZCBmdXR1cmUgdmFsdWVzIHZpYSByZWFsdGltZSBBUEkuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmcmFnbWVudCBNZWFzdXJlbWVudCBmcmFnbWVudFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2VyaWVzIE1lYXN1cmVtZW50IHNlcmllc1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bWJlciB8IElJZGVudGlmaWVkfSBlbnRpdHlPcklkIEVudGl0eSBvYmplY3Qgb3IgaWRcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHBhZ2VTaXplIE51bWJlciBvZiBtZWFzdXJlbWVudHMgdG8gaW5pdGlhbGx5IHJldHJpZXZlIGZyb20gYmFja2VuZFxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVtaXROdWxsSWZJbml0aWFsVmFsdWVzV2VyZU5vdEZvdW5kIEZsYWcgdGhhdCBpZiBzZXQgdG8gdHJ1ZSB3aWxsIGluaXRpYWxseSBlbWl0IHZhbHVlIG9mIG51bGwgaW4gY2FzZSBubyBtZWFzdXJlbWVudCBjb3VsZCBoYXZlIGJlZW4gcmV0cmlldmVkIGZyb20gYmFja2VuZFxuICAgKlxuICAgKiBAcmV0dXJucyBBbiBbW09ic2VydmFibGVdXSBvZiBuZXdseSBjcmVhdGVkIGVudGl0eSBvYmplY3RzLlxuICAgKi9cbiAgbGF0ZXN0VmFsdWVPZlNwZWNpZmljTWVhc3VyZW1lbnQkKFxuICAgIGZyYWdtZW50OiBzdHJpbmcsXG4gICAgc2VyaWVzOiBzdHJpbmcsXG4gICAgZW50aXR5T3JJZDogc3RyaW5nIHwgbnVtYmVyIHwgSUlkZW50aWZpZWQsXG4gICAgcGFnZVNpemUgPSAxLFxuICAgIGVtaXROdWxsSWZJbml0aWFsVmFsdWVzV2VyZU5vdEZvdW5kID0gZmFsc2VcbiAgKSB7XG4gICAgY29uc3QgcmVhbHRpbWUkID0gdGhpcy5vbkNyZWF0ZU9mU3BlY2lmaWNNZWFzdXJlbWVudCQoZnJhZ21lbnQsIHNlcmllcywgZW50aXR5T3JJZCk7XG4gICAgY29uc3QgbGFzdE1lYXN1cmVtZW50JCA9IHRoaXMubGFzdE1lYXN1cmVtZW50JChcbiAgICAgIGZyYWdtZW50LFxuICAgICAgc2VyaWVzLFxuICAgICAgZW50aXR5T3JJZCxcbiAgICAgIHBhZ2VTaXplLFxuICAgICAgZW1pdE51bGxJZkluaXRpYWxWYWx1ZXNXZXJlTm90Rm91bmRcbiAgICApO1xuICAgIHJldHVybiBtZXJnZShsYXN0TWVhc3VyZW1lbnQkLCByZWFsdGltZSQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGxhc3RNZWFzdXJlbWVudCQoXG4gICAgZnJhZ21lbnQ6IHN0cmluZyxcbiAgICBzZXJpZXM6IHN0cmluZyxcbiAgICBlbnRpdHlPcklkOiBzdHJpbmcgfCBudW1iZXIgfCBJSWRlbnRpZmllZCxcbiAgICBwYWdlU2l6ZTogbnVtYmVyLFxuICAgIGVtaXROdWxsSWZJbml0aWFsVmFsdWVzV2VyZU5vdEZvdW5kID0gZmFsc2VcbiAgKSB7XG4gICAgcmV0dXJuIGZyb20oXG4gICAgICB0aGlzLm1lYXN1cmVtZW50U2VydmljZS5saXN0KHtcbiAgICAgICAgdmFsdWVGcmFnbWVudFNlcmllczogc2VyaWVzLFxuICAgICAgICB2YWx1ZUZyYWdtZW50VHlwZTogZnJhZ21lbnQsXG4gICAgICAgIHNvdXJjZTogdGhpcy5nZXRJZFN0cmluZyhlbnRpdHlPcklkKSxcbiAgICAgICAgZGF0ZUZyb206ICcxOTcwLTAxLTAxJyxcbiAgICAgICAgcmV2ZXJ0OiB0cnVlLFxuICAgICAgICBwYWdlU2l6ZVxuICAgICAgfSlcbiAgICApLnBpcGUoXG4gICAgICAvLyBlbWl0IG51bGwgaW4gY2FzZSBubyB2YWx1ZSBjb3VsZCBoYXZlIGJlZW4gcmV0cmlldmVkIHNvIHdlIGFyZSBhYmxlIHRvIG5vdGUgdGhhdCBpbiBjZXJ0YWluIGNhc2VzLlxuICAgICAgbWFwKHJlc3VsdCA9PlxuICAgICAgICAhZW1pdE51bGxJZkluaXRpYWxWYWx1ZXNXZXJlTm90Rm91bmQgfHwgcmVzdWx0LmRhdGEubGVuZ3RoID8gcmVzdWx0LmRhdGEgOiBbbnVsbF1cbiAgICAgICksXG4gICAgICAvLyByZXZlcnNlIHJlcXVpcmVkLCBzbyB0aGF0IG1lYXN1cmVtZW50cyBhcmUgcmVjZWl2ZWQgb3JkZXJlZCBieSB0aW1lIChhc2NlbmRpbmcpLlxuICAgICAgLy8gZnJvbSBlbnN1cmVzIHZhbHVlcyBhcmUgc2VudCBhcyBzaW5nbGUgbWVhc3VyZW1lbnRzIGFuZCBub3QgYSBtZWFzdXJlbWVudCBhcnJheS5cbiAgICAgIC8vIFRPRE86IHJlcGxhY2UgYFsuLi5yZXN1bHRdLnJldmVyc2UoKWAgd2l0aCBgcmVzdWx0LnRvUmV2ZXJzZWQoKWAgb25jZSBlczIwMjMgaXMgYXZhaWxhYmxlLlxuICAgICAgLy8gSGFkIHRvIGNsb25lIHRoZSByZXN1bHQgYXJyYXkgYXMgb3RoZXJ3aXNlIHJldmVyc2UgbWF5IGFsdGVybmF0ZSB0aGUgYXJyYXkgbXVsdGlwbGUgdGltZXMgaWYgdGhlIG9ic2VydmFibGUgaXMgc3Vic2NyaWJlZCBtdWx0aXBsZSB0aW1lcy5cbiAgICAgIHN3aXRjaE1hcChyZXN1bHQgPT4gZnJvbShbLi4ucmVzdWx0XS5yZXZlcnNlKCkpKVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2hhbm5lbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnL21lYXN1cmVtZW50cy8qJztcbiAgfVxufVxuIl19
|
|
@@ -211,7 +211,9 @@ export class DeviceProfileComponent {
|
|
|
211
211
|
return this.queriesUtil.addOrFilter({ deviceType: this.deviceProfile.c8y_Filter.type }, { __not: { __has: `deviceType` } });
|
|
212
212
|
}
|
|
213
213
|
else {
|
|
214
|
-
return this.queriesUtil.addOrFilter({ 'c8y_Filter.type': this.deviceProfile.c8y_Filter.type }, {
|
|
214
|
+
return this.queriesUtil.addOrFilter({ 'c8y_Filter.type': this.deviceProfile.c8y_Filter.type }, {
|
|
215
|
+
__or: [{ 'c8y_Filter.type': '' }, { __not: { __has: `c8y_Filter.type` } }]
|
|
216
|
+
});
|
|
215
217
|
}
|
|
216
218
|
}
|
|
217
219
|
return {};
|
|
@@ -223,4 +225,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
223
225
|
type: Component,
|
|
224
226
|
args: [{ selector: 'c8y-device-profile', template: "<c8y-title>{{ profileName }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n label=\"{{ 'Management' | translate }}\"\n icon=\"c8y-management\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-device-profile'\"\n [label]=\"'Device profiles' | translate\"\n [path]=\"'device-profiles'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item label=\"{{ profileName }}\" icon=\"c8y-device-profile\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<div *ngIf=\"deviceProfile\" class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <div class=\"card card--fullpage\" *ngIf=\"deviceProfile\">\n <div class=\"card-block bg-level-1 flex-no-shrink p-t-24 p-b-24 overflow-visible\">\n <div class=\"content-flex-70\">\n <div class=\"text-center\">\n <i class=\"c8y-icon-duocolor icon-48 c8y-icon c8y-icon-device-profile\"></i>\n <p>\n <small class=\"label label-info\">{{ 'Device profile' | translate }}</small>\n </p>\n </div>\n <div class=\"flex-grow col-10\">\n <div class=\"row\">\n <div class=\"col-md-4\">\n <form #editNameForm=\"ngForm\">\n <c8y-form-group>\n <label class=\"control-label\" translate>Name</label>\n <div class=\"input-group input-group-editable\">\n <input\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"deviceProfile.name\"\n name=\"name\"\n placeholder=\"{{ 'e.g. My device profile' | translate }}\"\n size=\"{{ deviceProfile.name?.length || 1 }}\"\n required\n />\n <span></span>\n <div class=\"input-group-btn\">\n <button\n title=\"{{ 'Save' | translate }}\"\n type=\"button\"\n (click)=\"\n updateDeviceProfile({ name: deviceProfile.name });\n editNameForm.form.markAsPristine()\n \"\n class=\"btn btn-primary\"\n [disabled]=\"editNameForm.form.invalid\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </c8y-form-group>\n </form>\n </div>\n <div class=\"col-md-4\">\n <form #editTypeForm=\"ngForm\">\n <c8y-form-group>\n <label class=\"control-label\">\n {{ 'Device type' | translate }}\n <button\n class=\"btn-help\"\n type=\"button\"\n [popover]=\"\n (DEVICE_TYPE_POPOVER | translate) +\n (isDeviceProfileEmpty\n ? ' ' + (DEVICE_TYPE_DISABLED_POPOVER | translate)\n : '')\n \"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n container=\"body\"\n placement=\"right\"\n >\n <i [c8yIcon]=\"'question-circle-o'\"></i>\n </button>\n </label>\n <div class=\"input-group input-group-editable\">\n <input\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"deviceProfile.c8y_Filter.type\"\n name=\"type\"\n placeholder=\"{{ 'e.g.' | translate }} c8y_Linux\"\n size=\"{{ deviceProfile.c8y_Filter.type?.length || 14 }}\"\n [disabled]=\"isDeviceProfileEmpty\"\n />\n <span></span>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"button\"\n (click)=\"\n updateDeviceProfile({\n c8y_Filter: { type: deviceProfile.c8y_Filter.type }\n });\n editTypeForm.form.markAsPristine()\n \"\n [disabled]=\"isDeviceProfileEmpty\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </c8y-form-group>\n </form>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-header separator-top-bottom bg-content sticky-top\">\n <div class=\"card-icon\">\n <i [c8yIcon]=\"'c8y-firmware'\" class=\"c8y-icon-duocolor\"></i>\n </div>\n <div class=\"card-title\" translate>Firmware</div>\n </div>\n <div class=\"card-block p-t-0\" *ngIf=\"deviceProfile.c8y_DeviceProfile.firmware\">\n <c8y-list-group>\n <c8y-li>\n <c8y-li-icon>\n <i [c8yIcon]=\"'c8y-firmware'\"></i>\n </c8y-li-icon>\n <c8y-li-body class=\"content-flex-50 m-l-4\">\n <div class=\"col-6\">\n <span\n class=\"text-truncate\"\n title=\"{{ deviceProfile.c8y_DeviceProfile.firmware.name }}\"\n >\n {{ deviceProfile.c8y_DeviceProfile.firmware.name }}\n </span>\n </div>\n <div class=\"col-5 d-flex a-i-center\">\n <span\n class=\"text-truncate\"\n title=\"{{ deviceProfile.c8y_DeviceProfile.firmware.version }}\"\n >\n <span class=\"text-label-small m-r-4\" translate>Version</span>\n {{ deviceProfile.c8y_DeviceProfile.firmware.version }}\n </span>\n <button\n class=\"btn btn-danger btn-xs visible-xs m-l-auto m-r-8 m-t-8\"\n title=\"{{ 'Remove`firmware`' | translate }}\"\n type=\"button\"\n (click)=\"removeFirmware()\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n {{ 'Remove`firmware`' | translate }}\n </button>\n </div>\n <div class=\"m-l-auto p-r-8 hidden-xs\">\n <button\n class=\"btn btn-dot showOnHover text-danger\"\n tooltip=\"{{ 'Remove`firmware`' | translate }}\"\n [attr.aria-label]=\"'Remove`firmware`' | translate\"\n type=\"button\"\n (click)=\"removeFirmware()\"\n [delay]=\"500\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n </div>\n <div class=\"card-block p-t-16\" *ngIf=\"!deviceProfile.c8y_DeviceProfile.firmware\">\n <c8y-ui-empty-state\n icon=\"c8y-firmware\"\n [horizontal]=\"true\"\n [title]=\"'No firmware defined.' | translate\"\n class=\"p-t-16 d-block\"\n ></c8y-ui-empty-state>\n </div>\n <div class=\"card-footer p-t-0\" *ngIf=\"!deviceProfile.c8y_DeviceProfile.firmware\">\n <button\n title=\"{{ 'Add firmware' | translate }}\"\n type=\"button\"\n class=\"btn btn-default\"\n (click)=\"addFirmware()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add firmware' | translate }}\n </button>\n </div>\n\n <div class=\"card-header separator-top-bottom sticky-top bg-component\">\n <div class=\"card-icon\">\n <i [c8yIcon]=\"'c8y-tools'\" class=\"c8y-icon-duocolor\"></i>\n </div>\n <div class=\"card-title\" translate>Software</div>\n </div>\n <div class=\"card-block p-t-0\" *ngIf=\"deviceProfile.c8y_DeviceProfile.software?.length > 0\">\n <c8y-list-group>\n <c8y-li *ngFor=\"let software of deviceProfile.c8y_DeviceProfile.software\">\n <c8y-li-icon>\n <i [c8yIcon]=\"'c8y-tools'\"></i>\n </c8y-li-icon>\n <c8y-li-body class=\"content-flex-50 m-l-4\">\n <div class=\"col-6\">\n <span class=\"text-truncate-wrap\" title=\"{{ software.name }}\">\n {{ software.name }}\n </span>\n </div>\n <div class=\"col-5 d-flex a-i-center\">\n <span class=\"text-truncate-wrap\" title=\"{{ software.version }}\">\n <span class=\"text-label-small m-r-8\" translate>Version</span>\n {{ software.version }}\n </span>\n <button\n class=\"btn btn-danger btn-xs visible-xs m-l-auto m-r-8 m-t-8\"\n title=\"{{ 'Remove`software`' | translate }}\"\n type=\"button\"\n ((click)=\"removeItem(software, 'software')\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n {{ 'Remove`software`' | translate }}\n </button>\n </div>\n <div class=\"m-l-auto p-r-8 hidden-xs\">\n <button\n class=\"btn btn-dot showOnHover text-danger\"\n tooltip=\"{{ 'Remove`software`' | translate }}\"\n [attr.aria-label]=\"'Remove`software`' | translate\"\n type=\"button\"\n (click)=\"removeItem(software, 'software')\"\n [delay]=\"500\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n </div>\n <div\n class=\"card-block p-t-16\"\n *ngIf=\"deviceProfile.c8y_DeviceProfile.software?.length === 0\"\n >\n <c8y-ui-empty-state\n icon=\"c8y-tools\"\n [horizontal]=\"true\"\n [title]=\"'No software defined.' | translate\"\n ></c8y-ui-empty-state>\n </div>\n <div class=\"card-footer p-t-0\">\n <button\n title=\"{{ 'Add software' | translate }}\"\n type=\"button\"\n class=\"btn btn-default m-b-0\"\n (click)=\"addSoftware()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add software' | translate }}\n </button>\n </div>\n\n <div class=\"card-header separator-top-bottom bg-component sticky-top\">\n <div class=\"card-icon\">\n <i [c8yIcon]=\"'gears'\" class=\"c8y-icon-duocolor\"></i>\n </div>\n <div class=\"card-title\" translate>Configuration</div>\n </div>\n <div\n class=\"card-block p-t-0\"\n *ngIf=\"deviceProfile.c8y_DeviceProfile.configuration?.length > 0\"\n >\n <c8y-list-group>\n <c8y-li *ngFor=\"let configuration of deviceProfile.c8y_DeviceProfile.configuration\">\n <c8y-li-icon>\n <i [c8yIcon]=\"'gears'\"></i>\n </c8y-li-icon>\n <c8y-li-body class=\"content-flex-50\">\n <div class=\"col-6\">\n <span class=\"text-truncate\" title=\"{{ configuration.name }}\">\n {{ configuration.name }}\n </span>\n </div>\n <div class=\"col-5 d-flex a-i-center\">\n <span class=\"label label-info\">{{ configuration.type }}</span>\n <button\n class=\"btn btn-danger btn-xs visible-xs m-l-auto m-r-8 m-t-8\"\n type=\"button\"\n title=\"{{ 'Remove`configuration`' | translate }}\"\n (click)=\"removeItem(configuration, 'configuration')\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n {{ 'Remove`configuration`' | translate }}\n </button>\n </div>\n <div class=\"m-l-auto p-r-8 hidden-xs\">\n <button\n class=\"btn btn-dot showOnHover text-danger\"\n tooltip=\"{{ 'Remove`configuration`' | translate }}\"\n [attr.aria-label]=\"'Remove`configuration`' | translate\"\n type=\"button\"\n (click)=\"removeItem(configuration, 'configuration')\"\n [delay]=\"500\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n </div>\n <div\n class=\"card-block p-t-16\"\n *ngIf=\"deviceProfile.c8y_DeviceProfile.configuration?.length === 0\"\n >\n <c8y-ui-empty-state\n icon=\"gears\"\n [horizontal]=\"true\"\n [title]=\"'No configuration defined.' | translate\"\n ></c8y-ui-empty-state>\n </div>\n <div class=\"card-footer p-t-0\">\n <div class=\"p-t-8\">\n <button\n title=\"{{ 'Add configuration' | translate }}\"\n type=\"button\"\n class=\"btn btn-default m-b-0\"\n (click)=\"addConfiguration()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add configuration' | translate }}\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
225
227
|
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.AlertService }, { type: i3.InventoryService }, { type: i4.BsModalService }, { type: i5.RepositoryService }]; } });
|
|
226
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLXByb2ZpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZGV2aWNlLXByb2ZpbGUvZGV2aWNlLXByb2ZpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZGV2aWNlLXByb2ZpbGUvZGV2aWNlLXByb2ZpbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFrQixnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUUsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRixPQUFPLEVBRUwsOEJBQThCLEVBQzlCLGlCQUFpQixFQUNqQixjQUFjLEVBQ2YsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXJELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU96RixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7Ozs7Ozs7QUFNM0YsTUFBTSxPQUFPLHNCQUFzQjtJQVdqQyxZQUNVLEtBQXFCLEVBQ3JCLFlBQTBCLEVBQzFCLGdCQUFrQyxFQUNsQyxPQUF1QixFQUN2QixpQkFBb0M7UUFKcEMsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBZjlDLHdCQUFtQixHQUFHLE9BQU8sQ0FDM0IsOElBQThJLENBQy9JLENBQUM7UUFDRixpQ0FBNEIsR0FBRyxPQUFPLENBQ3BDLHdLQUF3SyxDQUN6SyxDQUFDO1FBWUEsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUTtRQUNaLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFrQixDQUFDO1FBQy9FLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1lBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRTtnQkFDbEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO2FBQ3BEO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFO2dCQUN2RCxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7YUFDekQ7U0FDRjtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsTUFBTSxZQUFZLEdBRWQ7WUFDRixlQUFlLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7WUFDakUsY0FBYyxFQUFFLGNBQWMsQ0FBQyxRQUFRO1lBQ3ZDLGdDQUFnQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQzlDLElBQUksQ0FBQyxpQ0FBaUMsQ0FDcEMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQzlCLGNBQWMsQ0FBQyxRQUFRLENBQ3hCO1lBQ0gsSUFBSSxFQUFFLGNBQWM7WUFDcEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztZQUNqQyxJQUFJLEVBQUUsa0JBQWtCLENBQUMsTUFBTTtTQUNoQyxDQUFDO1FBQ0YsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsOEJBQThCLEVBQUU7WUFDOUQsbUJBQW1CLEVBQUUsSUFBSTtZQUN6QixjQUFjLEVBQUUsYUFBYTtZQUM3QixZQUFZO1NBQ2IsQ0FBQyxDQUFDO1FBRUgsSUFBSSxZQUFZLENBQUMsZ0NBQWdDLEVBQUU7WUFDakQsS0FBSyxDQUFDLE9BQU8sQ0FBQyw4QkFBOEI7Z0JBQzFDLFlBQVksQ0FBQyxnQ0FBZ0MsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN4RDtRQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFCLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDakUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFlBQVksQ0FBQztZQUNoQyxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNiLE9BQU87YUFDUjtZQUNELE1BQU0sb0JBQW9CLEdBQTRCO2dCQUNwRCxpQkFBaUIsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixJQUFJLEVBQUU7YUFDOUQsQ0FBQztZQUNGLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUIsRUFBRTtnQkFDN0MsUUFBUSxFQUFFO29CQUNSLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSTtvQkFDbkIsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPO29CQUN6QixHQUFHLEVBQUUsUUFBUSxDQUFDLEdBQUc7b0JBQ2pCLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTztvQkFDekIsZUFBZSxFQUFFLFFBQVEsQ0FBQyxlQUFlO2lCQUNqQjthQUMzQixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsbUJBQW1CLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxpQ0FBaUMsQ0FDL0IsV0FBNEMsRUFDNUMsUUFBd0I7UUFFeEIsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUNyQixvQkFBb0IsRUFBRSxFQUN0QixTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FDckIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRTtZQUNyRCxLQUFLLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQztZQUN4QyxXQUFXLEVBQUUsVUFBVSxDQUFDLElBQUk7WUFDNUIsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRTtZQUN6QixVQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQ0gsRUFDRCxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFDdkIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQ3BELFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO0lBQ0osQ0FBQztJQUVELDhCQUE4QixDQUFDLEdBQXFCO1FBQ2xELEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDZixFQUFFLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxFQUFFO1lBQ2pFLG1CQUFtQixFQUFFLElBQUk7WUFDekIsY0FBYyxFQUFFLGFBQWE7U0FDOUIsQ0FBQyxDQUFDO1FBQ0gsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0RixLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQztRQUM1RSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQixLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLHNCQUFzQixDQUFDLEVBQUU7WUFDM0UsTUFBTSxjQUFjLEdBQWlDLHNCQUFzQixDQUFDLEdBQUcsQ0FDN0UsWUFBWSxDQUFDLEVBQUU7Z0JBQ2IsT0FBTyxNQUFNLENBQ1g7b0JBQ0UsR0FBRyxFQUFFLFlBQVksQ0FBQyxHQUFHO29CQUNyQixJQUFJLEVBQUUsWUFBWSxDQUFDLElBQUk7aUJBQ3hCLEVBQ0QsWUFBWSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUMvRSxDQUFDO1lBQ0osQ0FBQyxDQUNGLENBQUM7WUFDRixNQUFNLE1BQU0sR0FBK0IsTUFBTSxDQUMvQyxjQUFjLEVBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLElBQUksRUFBRSxDQUN6RCxDQUFDO1lBQ0YsTUFBTSxhQUFhLEdBQStCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQ3BGLE9BQU8sTUFBTSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQztZQUNuRSxDQUFDLENBQUMsQ0FBQztZQUNILE1BQU0sb0JBQW9CLEdBQTRCO2dCQUNwRCxpQkFBaUIsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixJQUFJLEVBQUU7YUFDOUQsQ0FBQztZQUNGLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7WUFDbEUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULE1BQU0sWUFBWSxHQUVkO1lBQ0YsZUFBZSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO1lBQ2pFLGNBQWMsRUFBRSxjQUFjLENBQUMsUUFBUTtZQUN2QyxnQ0FBZ0MsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUM5QyxJQUFJLENBQUMsaUNBQWlDLENBQ3BDLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUM5QixjQUFjLENBQUMsUUFBUSxDQUN4QjtZQUNILFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLFFBQVE7WUFDdkQsSUFBSSxFQUFFLFdBQVc7WUFDakIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztZQUNqQyxJQUFJLEVBQUUsa0JBQWtCLENBQUMsS0FBSztTQUMvQixDQUFDO1FBQ0YsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsOEJBQThCLEVBQUU7WUFDOUQsbUJBQW1CLEVBQUUsSUFBSTtZQUN6QixjQUFjLEVBQUUsYUFBYTtZQUM3QixZQUFZO1NBQ2IsQ0FBQyxDQUFDO1FBRUgsSUFBSSxZQUFZLENBQUMsZ0NBQWdDLEVBQUU7WUFDakQsS0FBSyxDQUFDLE9BQU8sQ0FBQyw4QkFBOEI7Z0JBQzFDLFlBQVksQ0FBQyxnQ0FBZ0MsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN4RDtRQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFCLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtZQUNyRSxNQUFNLGNBQWMsR0FBNEIsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUNsRixPQUFPO29CQUNMLElBQUksRUFBRSxZQUFZLENBQUMsSUFBSTtvQkFDdkIsT0FBTyxFQUFFLFlBQVksQ0FBQyxPQUFPO29CQUM3QixHQUFHLEVBQUUsWUFBWSxDQUFDLEdBQUc7b0JBQ3JCLE1BQU0sRUFBRSxTQUFTO2lCQUNsQixDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7WUFDSCxNQUFNLE1BQU0sR0FBMEIsTUFBTSxDQUMxQyxjQUFjLEVBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUNwRCxDQUFDO1lBQ0YsTUFBTSxRQUFRLEdBQTBCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQzFFLE9BQU8sTUFBTSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQztZQUNuRSxDQUFDLENBQUMsQ0FBQztZQUNILE1BQU0sb0JBQW9CLEdBQTRCO2dCQUNwRCxpQkFBaUIsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixJQUFJLEVBQUU7YUFDOUQsQ0FBQztZQUNGLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDdEIsTUFBTSxVQUFVLEdBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRO1lBQzdDLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDM0QsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUUsTUFBTSxlQUFlLEdBQ25CLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsYUFBYTtZQUNsRCxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2hFLE9BQU8sVUFBVSxJQUFJLFVBQVUsSUFBSSxlQUFlLENBQUM7SUFDckQsQ0FBQztJQUVELFVBQVUsQ0FBQyxXQUFXLEVBQUUsUUFBUTtRQUM5QixNQUFNLG9CQUFvQixHQUE0QjtZQUNwRCxpQkFBaUIsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQjtTQUN4RCxDQUFDO1FBQ0YsTUFBTSxRQUFRLEdBQUcsb0JBQW9CLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUN0RSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FDcEMsQ0FBQztRQUNGLG9CQUFvQixDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsQ0FBQztRQUM1RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUM7UUFDckQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVELEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxvQkFBb0I7UUFDNUMsSUFBSSxvQkFBb0IsQ0FBQyxVQUFVLElBQUksb0JBQW9CLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxFQUFFLEVBQUU7WUFDbEYsT0FBTyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1NBQzdDO1FBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbkUsSUFBSTtZQUNGLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUMxRSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQXFCLENBQUM7WUFDM0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztZQUMzQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDO1NBQy9EO1FBQUMsT0FBTyxFQUFFLEVBQUU7WUFDWCxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQztJQUVPLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTO1FBQ3RDLElBQUk7WUFDRixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQy9ELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFBQyxPQUFPLEVBQUUsRUFBRTtZQUNYLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsY0FBYztRQUN2QyxJQUNFLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLGlCQUFpQixDQUFDO1lBQzFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUM1QztZQUNBLElBQUksY0FBYyxLQUFLLGNBQWMsQ0FBQyxhQUFhLEVBQUU7Z0JBQ25ELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQ2pDLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxFQUNsRCxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsRUFBRSxDQUNuQyxDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FDakMsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFDekQsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxDQUN4QyxDQUFDO2FBQ0g7U0FDRjtRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzs7bUhBMVFVLHNCQUFzQjt1R0FBdEIsc0JBQXNCLDBEQzFCbkMsZ3ZjQXFWQTsyRkQzVGEsc0JBQXNCO2tCQUpsQyxTQUFTOytCQUNFLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSwgUXVlcmllc1V0aWwgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UsIGdldHRleHQsIE1vZGFsU2VsZWN0aW9uTW9kZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgRmlsdGVyQ3JpdGVyaWEsXG4gIFJlcG9zaXRvcnlTZWxlY3RNb2RhbENvbXBvbmVudCxcbiAgUmVwb3NpdG9yeVNlcnZpY2UsXG4gIFJlcG9zaXRvcnlUeXBlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvcmVwb3NpdG9yeS9zaGFyZWQnO1xuaW1wb3J0IHsgYXNzaWduLCBjb25jYXQsIGhhcywgaXNFbXB0eSwgaXNFcXVhbCwgdW5pcVdpdGggfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQnNNb2RhbFNlcnZpY2UgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIERldmljZVByb2ZpbGUsXG4gIERldmljZVByb2ZpbGVDb25maWd1cmF0aW9uLFxuICBEZXZpY2VQcm9maWxlRmlybXdhcmUsXG4gIERldmljZVByb2ZpbGVTb2Z0d2FyZVxufSBmcm9tICcuL2RldmljZS1wcm9maWxlLm1vZGVsJztcbmltcG9ydCB7IFNlbGVjdENvbmZpZ3VyYXRpb25Nb2RhbENvbXBvbmVudCB9IGZyb20gJy4vc2VsZWN0LWNvbmZpZ3VyYXRpb24tbW9kYWwuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRldmljZS1wcm9maWxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RldmljZS1wcm9maWxlLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEZXZpY2VQcm9maWxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgREVWSUNFX1RZUEVfUE9QT1ZFUiA9IGdldHRleHQoXG4gICAgJ1RoZSBkZXZpY2UgcHJvZmlsZSB3aWxsIGJlIGF2YWlsYWJsZSBmb3IgYXNzaWdubWVudHMgb24gZGV2aWNlcyBvZiB0aGUgc3BlY2lmaWVkIHR5cGUuIE90aGVyd2lzZSwgaXQgd2lsbCBiZSBhdmFpbGFibGUgZm9yIGFsbCBkZXZpY2UgdHlwZXMuJ1xuICApO1xuICBERVZJQ0VfVFlQRV9ESVNBQkxFRF9QT1BPVkVSID0gZ2V0dGV4dChcbiAgICAnRGV2aWNlIHR5cGUgY2Fubm90IGJlIGNoYW5nZWQgb24gcHJvZmlsZXMgd2l0aCBhbHJlYWR5IGRlZmluZWQgZmlybXdhcmUsIHNvZnR3YXJlIG9yIGNvbmZpZ3VyYXRpb24gc2luY2UgdGhleSBtYXkgbm90IGJlIGFwcGxpY2FibGUgdG8gZGV2aWNlcyBvZiB0aGUgbmV3IGRldmljZSB0eXBlLidcbiAgKTtcbiAgZGV2aWNlUHJvZmlsZTogRGV2aWNlUHJvZmlsZTtcbiAgcHJvZmlsZU5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSBxdWVyaWVzVXRpbDogUXVlcmllc1V0aWw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIGludmVudG9yeVNlcnZpY2U6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBic01vZGFsOiBCc01vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIHJlcG9zaXRvcnlTZXJ2aWNlOiBSZXBvc2l0b3J5U2VydmljZVxuICApIHtcbiAgICB0aGlzLnF1ZXJpZXNVdGlsID0gbmV3IFF1ZXJpZXNVdGlsKCk7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBwcm9maWxlSWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgnaWQnKTtcbiAgICB0aGlzLmRldmljZVByb2ZpbGUgPSAoYXdhaXQgdGhpcy5nZXREZXZpY2VQcm9maWxlKHByb2ZpbGVJZCkpIGFzIERldmljZVByb2ZpbGU7XG4gICAgaWYgKHRoaXMuZGV2aWNlUHJvZmlsZSkge1xuICAgICAgdGhpcy5wcm9maWxlTmFtZSA9IHRoaXMuZGV2aWNlUHJvZmlsZS5uYW1lO1xuICAgICAgaWYgKCF0aGlzLmRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuc29mdHdhcmUpIHtcbiAgICAgICAgdGhpcy5kZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlLnNvZnR3YXJlID0gW107XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5jb25maWd1cmF0aW9uKSB7XG4gICAgICAgIHRoaXMuZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5jb25maWd1cmF0aW9uID0gW107XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYWRkRmlybXdhcmUoKSB7XG4gICAgY29uc3QgaW5pdGlhbFN0YXRlOiBQYXJ0aWFsPFJlcG9zaXRvcnlTZWxlY3RNb2RhbENvbXBvbmVudD4gJiB7XG4gICAgICByZXBvc2l0b3J5RW50cmllc1dpdGhWZXJzaW9uc0ZuJDogKG1vZGFsOiBhbnkpID0+IE9ic2VydmFibGU8SU1hbmFnZWRPYmplY3RbXT47XG4gICAgfSA9IHtcbiAgICAgIGRldmljZVR5cGVRdWVyeTogdGhpcy5nZXREZXZpY2VUeXBlUXVlcnkoUmVwb3NpdG9yeVR5cGUuRklSTVdBUkUpLFxuICAgICAgcmVwb3NpdG9yeVR5cGU6IFJlcG9zaXRvcnlUeXBlLkZJUk1XQVJFLFxuICAgICAgcmVwb3NpdG9yeUVudHJpZXNXaXRoVmVyc2lvbnNGbiQ6IG1vZGFsRGlhbG9nID0+XG4gICAgICAgIHRoaXMuZ2V0UmVwb3NpdG9yeUVudHJpZXNXaXRoVmVyc2lvbnMkKFxuICAgICAgICAgIG1vZGFsRGlhbG9nLmNvbnRlbnQuc2VhcmNoVGVybSxcbiAgICAgICAgICBSZXBvc2l0b3J5VHlwZS5GSVJNV0FSRVxuICAgICAgICApLFxuICAgICAgaWNvbjogJ2M4eS1maXJtd2FyZScsXG4gICAgICB0aXRsZTogZ2V0dGV4dCgnU2VsZWN0IGZpcm13YXJlJyksXG4gICAgICBtb2RlOiBNb2RhbFNlbGVjdGlvbk1vZGUuU0lOR0xFXG4gICAgfTtcbiAgICBjb25zdCBtb2RhbCA9IHRoaXMuYnNNb2RhbC5zaG93KFJlcG9zaXRvcnlTZWxlY3RNb2RhbENvbXBvbmVudCwge1xuICAgICAgaWdub3JlQmFja2Ryb3BDbGljazogdHJ1ZSxcbiAgICAgIGFyaWFMYWJlbGxlZEJ5OiAnbW9kYWwtdGl0bGUnLFxuICAgICAgaW5pdGlhbFN0YXRlXG4gICAgfSk7XG5cbiAgICBpZiAoaW5pdGlhbFN0YXRlLnJlcG9zaXRvcnlFbnRyaWVzV2l0aFZlcnNpb25zRm4kKSB7XG4gICAgICBtb2RhbC5jb250ZW50LnJlcG9zaXRvcnlFbnRyaWVzV2l0aFZlcnNpb25zJCA9XG4gICAgICAgIGluaXRpYWxTdGF0ZS5yZXBvc2l0b3J5RW50cmllc1dpdGhWZXJzaW9uc0ZuJChtb2RhbCk7XG4gICAgfVxuXG4gICAgbW9kYWwuY29udGVudC5sb2FkLm5leHQoKTtcbiAgICBtb2RhbC5jb250ZW50LnJlc3VsdEVtaXR0ZXIucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoZmlybXdhcmVMaXN0ID0+IHtcbiAgICAgIGNvbnN0IFtmaXJtd2FyZV0gPSBmaXJtd2FyZUxpc3Q7XG4gICAgICBpZiAoIWZpcm13YXJlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRldmljZVByb2ZpbGVQYXJ0aWFsOiBQYXJ0aWFsPElNYW5hZ2VkT2JqZWN0PiA9IHtcbiAgICAgICAgYzh5X0RldmljZVByb2ZpbGU6IHRoaXMuZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZSB8fCB7fVxuICAgICAgfTtcbiAgICAgIGFzc2lnbihkZXZpY2VQcm9maWxlUGFydGlhbC5jOHlfRGV2aWNlUHJvZmlsZSwge1xuICAgICAgICBmaXJtd2FyZToge1xuICAgICAgICAgIG5hbWU6IGZpcm13YXJlLm5hbWUsXG4gICAgICAgICAgdmVyc2lvbjogZmlybXdhcmUudmVyc2lvbixcbiAgICAgICAgICB1cmw6IGZpcm13YXJlLnVybCxcbiAgICAgICAgICBpc1BhdGNoOiBmaXJtd2FyZS5pc1BhdGNoLFxuICAgICAgICAgIHBhdGNoRGVwZW5kZW5jeTogZmlybXdhcmUucGF0Y2hEZXBlbmRlbmN5XG4gICAgICAgIH0gYXMgRGV2aWNlUHJvZmlsZUZpcm13YXJlXG4gICAgICB9KTtcbiAgICAgIHRoaXMudXBkYXRlRGV2aWNlUHJvZmlsZShkZXZpY2VQcm9maWxlUGFydGlhbCk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRSZXBvc2l0b3J5RW50cmllc1dpdGhWZXJzaW9ucyQoXG4gICAgc2VhcmNoVGVybSQ6IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJDcml0ZXJpYT4sXG4gICAgcmVwb1R5cGU6IFJlcG9zaXRvcnlUeXBlXG4gICkge1xuICAgIHJldHVybiBzZWFyY2hUZXJtJC5waXBlKFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIHN3aXRjaE1hcChzZWFyY2hUZXJtID0+XG4gICAgICAgIHRoaXMucmVwb3NpdG9yeVNlcnZpY2UubGlzdFJlcG9zaXRvcnlFbnRyaWVzKHJlcG9UeXBlLCB7XG4gICAgICAgICAgcXVlcnk6IHRoaXMuZ2V0RGV2aWNlVHlwZVF1ZXJ5KHJlcG9UeXBlKSxcbiAgICAgICAgICBwYXJ0aWFsTmFtZTogc2VhcmNoVGVybS5uYW1lLFxuICAgICAgICAgIHBhcmFtczogeyBwYWdlU2l6ZTogMTAwIH0sXG4gICAgICAgICAgc2tpcExlZ2FjeTogdHJ1ZVxuICAgICAgICB9KVxuICAgICAgKSxcbiAgICAgIG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpLFxuICAgICAgbWFwKG1vcyA9PiB0aGlzLmdldEFuZEFzc2lnblJlcG9zaXRvcnlCaW5hcmllcyhtb3MpKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgfVxuXG4gIGdldEFuZEFzc2lnblJlcG9zaXRvcnlCaW5hcmllcyhtb3M6IElNYW5hZ2VkT2JqZWN0W10pIHtcbiAgICBtb3MuZm9yRWFjaChtbyA9PiB7XG4gICAgICBtby52ZXJzaW9ucyA9IHRoaXMucmVwb3NpdG9yeVNlcnZpY2UubGlzdEJhc2VWZXJzaW9ucyhtbyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG1vcztcbiAgfVxuXG4gIGFkZENvbmZpZ3VyYXRpb24oKSB7XG4gICAgY29uc3QgbW9kYWwgPSB0aGlzLmJzTW9kYWwuc2hvdyhTZWxlY3RDb25maWd1cmF0aW9uTW9kYWxDb21wb25lbnQsIHtcbiAgICAgIGlnbm9yZUJhY2tkcm9wQ2xpY2s6IHRydWUsXG4gICAgICBhcmlhTGFiZWxsZWRCeTogJ21vZGFsLXRpdGxlJ1xuICAgIH0pO1xuICAgIG1vZGFsLmNvbnRlbnQuZGV2aWNlVHlwZVF1ZXJ5ID0gdGhpcy5nZXREZXZpY2VUeXBlUXVlcnkoUmVwb3NpdG9yeVR5cGUuQ09ORklHVVJBVElPTik7XG4gICAgbW9kYWwuY29udGVudC5zZWxlY3RlZCA9IHRoaXMuZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5jb25maWd1cmF0aW9uO1xuICAgIG1vZGFsLmNvbnRlbnQubG9hZC5uZXh0KCk7XG4gICAgbW9kYWwuY29udGVudC5yZXN1bHRFbWl0dGVyLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHNlbGVjdGVkQ29uZmlndXJhdGlvbnMgPT4ge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRNYXBwZWQ6IERldmljZVByb2ZpbGVDb25maWd1cmF0aW9uW10gPSBzZWxlY3RlZENvbmZpZ3VyYXRpb25zLm1hcChcbiAgICAgICAgc2VsZWN0ZWRJdGVtID0+IHtcbiAgICAgICAgICByZXR1cm4gYXNzaWduKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB1cmw6IHNlbGVjdGVkSXRlbS51cmwsXG4gICAgICAgICAgICAgIG5hbWU6IHNlbGVjdGVkSXRlbS5uYW1lXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtLmNvbmZpZ3VyYXRpb25UeXBlID8geyB0eXBlOiBzZWxlY3RlZEl0ZW0uY29uZmlndXJhdGlvblR5cGUgfSA6IHt9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIGNvbnN0IG1lcmdlZDogRGV2aWNlUHJvZmlsZUNvbmZpZ3VyYXRpb24gPSBjb25jYXQoXG4gICAgICAgIHNlbGVjdGVkTWFwcGVkLFxuICAgICAgICB0aGlzLmRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuY29uZmlndXJhdGlvbiB8fCBbXVxuICAgICAgKTtcbiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb246IERldmljZVByb2ZpbGVDb25maWd1cmF0aW9uID0gdW5pcVdpdGgobWVyZ2VkLCAoYXJyVmFsLCBvdGhWYWwpID0+IHtcbiAgICAgICAgcmV0dXJuIGFyclZhbC50eXBlICYmIG90aFZhbC50eXBlICYmIGFyclZhbC50eXBlID09PSBvdGhWYWwudHlwZTtcbiAgICAgIH0pO1xuICAgICAgY29uc3QgZGV2aWNlUHJvZmlsZVBhcnRpYWw6IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+ID0ge1xuICAgICAgICBjOHlfRGV2aWNlUHJvZmlsZTogdGhpcy5kZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlIHx8IHt9XG4gICAgICB9O1xuICAgICAgYXNzaWduKGRldmljZVByb2ZpbGVQYXJ0aWFsLmM4eV9EZXZpY2VQcm9maWxlLCB7IGNvbmZpZ3VyYXRpb24gfSk7XG4gICAgICB0aGlzLnVwZGF0ZURldmljZVByb2ZpbGUoZGV2aWNlUHJvZmlsZVBhcnRpYWwpO1xuICAgIH0pO1xuICB9XG5cbiAgYWRkU29mdHdhcmUoKSB7XG4gICAgY29uc3QgaW5pdGlhbFN0YXRlOiBQYXJ0aWFsPFJlcG9zaXRvcnlTZWxlY3RNb2RhbENvbXBvbmVudD4gJiB7XG4gICAgICByZXBvc2l0b3J5RW50cmllc1dpdGhWZXJzaW9uc0ZuJDogKG1vZGFsOiBhbnkpID0+IE9ic2VydmFibGU8SU1hbmFnZWRPYmplY3RbXT47XG4gICAgfSA9IHtcbiAgICAgIGRldmljZVR5cGVRdWVyeTogdGhpcy5nZXREZXZpY2VUeXBlUXVlcnkoUmVwb3NpdG9yeVR5cGUuU09GVFdBUkUpLFxuICAgICAgcmVwb3NpdG9yeVR5cGU6IFJlcG9zaXRvcnlUeXBlLlNPRlRXQVJFLFxuICAgICAgcmVwb3NpdG9yeUVudHJpZXNXaXRoVmVyc2lvbnNGbiQ6IG1vZGFsRGlhbG9nID0+XG4gICAgICAgIHRoaXMuZ2V0UmVwb3NpdG9yeUVudHJpZXNXaXRoVmVyc2lvbnMkKFxuICAgICAgICAgIG1vZGFsRGlhbG9nLmNvbnRlbnQuc2VhcmNoVGVybSxcbiAgICAgICAgICBSZXBvc2l0b3J5VHlwZS5TT0ZUV0FSRVxuICAgICAgICApLFxuICAgICAgc2VsZWN0ZWQ6IHRoaXMuZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5zb2Z0d2FyZSxcbiAgICAgIGljb246ICdjOHktdG9vbHMnLFxuICAgICAgdGl0bGU6IGdldHRleHQoJ1NlbGVjdCBzb2Z0d2FyZScpLFxuICAgICAgbW9kZTogTW9kYWxTZWxlY3Rpb25Nb2RlLk1VTFRJXG4gICAgfTtcbiAgICBjb25zdCBtb2RhbCA9IHRoaXMuYnNNb2RhbC5zaG93KFJlcG9zaXRvcnlTZWxlY3RNb2RhbENvbXBvbmVudCwge1xuICAgICAgaWdub3JlQmFja2Ryb3BDbGljazogdHJ1ZSxcbiAgICAgIGFyaWFMYWJlbGxlZEJ5OiAnbW9kYWwtdGl0bGUnLFxuICAgICAgaW5pdGlhbFN0YXRlXG4gICAgfSk7XG5cbiAgICBpZiAoaW5pdGlhbFN0YXRlLnJlcG9zaXRvcnlFbnRyaWVzV2l0aFZlcnNpb25zRm4kKSB7XG4gICAgICBtb2RhbC5jb250ZW50LnJlcG9zaXRvcnlFbnRyaWVzV2l0aFZlcnNpb25zJCA9XG4gICAgICAgIGluaXRpYWxTdGF0ZS5yZXBvc2l0b3J5RW50cmllc1dpdGhWZXJzaW9uc0ZuJChtb2RhbCk7XG4gICAgfVxuXG4gICAgbW9kYWwuY29udGVudC5sb2FkLm5leHQoKTtcbiAgICBtb2RhbC5jb250ZW50LnJlc3VsdEVtaXR0ZXIucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoc2VsZWN0ZWRTb2Z0d2FyZSA9PiB7XG4gICAgICBjb25zdCBzZWxlY3RlZE1hcHBlZDogRGV2aWNlUHJvZmlsZVNvZnR3YXJlW10gPSBzZWxlY3RlZFNvZnR3YXJlLm1hcChzZWxlY3RlZEl0ZW0gPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5hbWU6IHNlbGVjdGVkSXRlbS5uYW1lLFxuICAgICAgICAgIHZlcnNpb246IHNlbGVjdGVkSXRlbS52ZXJzaW9uLFxuICAgICAgICAgIHVybDogc2VsZWN0ZWRJdGVtLnVybCxcbiAgICAgICAgICBhY3Rpb246ICdpbnN0YWxsJ1xuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgICBjb25zdCBtZXJnZWQ6IERldmljZVByb2ZpbGVTb2Z0d2FyZSA9IGNvbmNhdChcbiAgICAgICAgc2VsZWN0ZWRNYXBwZWQsXG4gICAgICAgIHRoaXMuZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5zb2Z0d2FyZSB8fCBbXVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHNvZnR3YXJlOiBEZXZpY2VQcm9maWxlU29mdHdhcmUgPSB1bmlxV2l0aChtZXJnZWQsIChhcnJWYWwsIG90aFZhbCkgPT4ge1xuICAgICAgICByZXR1cm4gYXJyVmFsLm5hbWUgJiYgb3RoVmFsLm5hbWUgJiYgYXJyVmFsLm5hbWUgPT09IG90aFZhbC5uYW1lO1xuICAgICAgfSk7XG4gICAgICBjb25zdCBkZXZpY2VQcm9maWxlUGFydGlhbDogUGFydGlhbDxJTWFuYWdlZE9iamVjdD4gPSB7XG4gICAgICAgIGM4eV9EZXZpY2VQcm9maWxlOiB0aGlzLmRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUgfHwge31cbiAgICAgIH07XG4gICAgICBhc3NpZ24oZGV2aWNlUHJvZmlsZVBhcnRpYWwuYzh5X0RldmljZVByb2ZpbGUsIHsgc29mdHdhcmUgfSk7XG4gICAgICB0aGlzLnVwZGF0ZURldmljZVByb2ZpbGUoZGV2aWNlUHJvZmlsZVBhcnRpYWwpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IGlzRGV2aWNlUHJvZmlsZUVtcHR5KCkge1xuICAgIGNvbnN0IGlzU29mdHdhcmUgPVxuICAgICAgdGhpcy5kZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlLnNvZnR3YXJlICYmXG4gICAgICB0aGlzLmRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuc29mdHdhcmUubGVuZ3RoID4gMDtcbiAgICBjb25zdCBpc0Zpcm13YXJlID0gQm9vbGVhbih0aGlzLmRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuZmlybXdhcmUpO1xuICAgIGNvbnN0IGlzQ29uZmlndXJhdGlvbiA9XG4gICAgICB0aGlzLmRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuY29uZmlndXJhdGlvbiAmJlxuICAgICAgdGhpcy5kZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlLmNvbmZpZ3VyYXRpb24ubGVuZ3RoID4gMDtcbiAgICByZXR1cm4gaXNTb2Z0d2FyZSB8fCBpc0Zpcm13YXJlIHx8IGlzQ29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHJlbW92ZUl0ZW0ocmVtb3ZlZEl0ZW0sIGNhdGVnb3J5KSB7XG4gICAgY29uc3QgZGV2aWNlUHJvZmlsZVBhcnRpYWw6IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+ID0ge1xuICAgICAgYzh5X0RldmljZVByb2ZpbGU6IHRoaXMuZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZVxuICAgIH07XG4gICAgY29uc3QgZmlsdGVyZWQgPSBkZXZpY2VQcm9maWxlUGFydGlhbC5jOHlfRGV2aWNlUHJvZmlsZVtjYXRlZ29yeV0uZmlsdGVyKFxuICAgICAgaXRlbSA9PiAhaXNFcXVhbChyZW1vdmVkSXRlbSwgaXRlbSlcbiAgICApO1xuICAgIGRldmljZVByb2ZpbGVQYXJ0aWFsLmM4eV9EZXZpY2VQcm9maWxlW2NhdGVnb3J5XSA9IGZpbHRlcmVkO1xuICAgIHRoaXMudXBkYXRlRGV2aWNlUHJvZmlsZShkZXZpY2VQcm9maWxlUGFydGlhbCk7XG4gIH1cblxuICByZW1vdmVGaXJtd2FyZSgpIHtcbiAgICBkZWxldGUgdGhpcy5kZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlLmZpcm13YXJlO1xuICAgIHRoaXMudXBkYXRlRGV2aWNlUHJvZmlsZSh7IGM4eV9EZXZpY2VQcm9maWxlOiB0aGlzLmRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUgfSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVEZXZpY2VQcm9maWxlKHBhcnRpYWxEZXZpY2VQcm9maWxlKSB7XG4gICAgaWYgKHBhcnRpYWxEZXZpY2VQcm9maWxlLmM4eV9GaWx0ZXIgJiYgcGFydGlhbERldmljZVByb2ZpbGUuYzh5X0ZpbHRlci50eXBlID09PSAnJykge1xuICAgICAgZGVsZXRlIHBhcnRpYWxEZXZpY2VQcm9maWxlLmM4eV9GaWx0ZXIudHlwZTtcbiAgICB9XG4gICAgT2JqZWN0LmFzc2lnbihwYXJ0aWFsRGV2aWNlUHJvZmlsZSwgeyBpZDogdGhpcy5kZXZpY2VQcm9maWxlLmlkIH0pO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMuaW52ZW50b3J5U2VydmljZS51cGRhdGUocGFydGlhbERldmljZVByb2ZpbGUpO1xuICAgICAgdGhpcy5kZXZpY2VQcm9maWxlID0gZGF0YSBhcyBEZXZpY2VQcm9maWxlO1xuICAgICAgdGhpcy5wcm9maWxlTmFtZSA9IHRoaXMuZGV2aWNlUHJvZmlsZS5uYW1lO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcyhnZXR0ZXh0KCdEZXZpY2UgcHJvZmlsZSBjaGFuZ2VkLicpKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShleCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXREZXZpY2VQcm9maWxlKHByb2ZpbGVJZCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMuaW52ZW50b3J5U2VydmljZS5kZXRhaWwocHJvZmlsZUlkKTtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGV4KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldERldmljZVR5cGVRdWVyeShyZXBvc2l0b3J5VHlwZSkge1xuICAgIGlmIChcbiAgICAgIGhhcyh0aGlzLmRldmljZVByb2ZpbGUsICdjOHlfRmlsdGVyLnR5cGUnKSAmJlxuICAgICAgIWlzRW1wdHkodGhpcy5kZXZpY2VQcm9maWxlLmM4eV9GaWx0ZXIudHlwZSlcbiAgICApIHtcbiAgICAgIGlmIChyZXBvc2l0b3J5VHlwZSA9PT0gUmVwb3NpdG9yeVR5cGUuQ09ORklHVVJBVElPTikge1xuICAgICAgICByZXR1cm4gdGhpcy5xdWVyaWVzVXRpbC5hZGRPckZpbHRlcihcbiAgICAgICAgICB7IGRldmljZVR5cGU6IHRoaXMuZGV2aWNlUHJvZmlsZS5jOHlfRmlsdGVyLnR5cGUgfSxcbiAgICAgICAgICB7IF9fbm90OiB7IF9faGFzOiBgZGV2aWNlVHlwZWAgfSB9XG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5xdWVyaWVzVXRpbC5hZGRPckZpbHRlcihcbiAgICAgICAgICB7ICdjOHlfRmlsdGVyLnR5cGUnOiB0aGlzLmRldmljZVByb2ZpbGUuYzh5X0ZpbHRlci50eXBlIH0sXG4gICAgICAgICAgeyBfX25vdDogeyBfX2hhczogYGM4eV9GaWx0ZXIudHlwZWAgfSB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7fTtcbiAgfVxufVxuIiwiPGM4eS10aXRsZT57eyBwcm9maWxlTmFtZSB9fTwvYzh5LXRpdGxlPlxuXG48Yzh5LWJyZWFkY3J1bWI+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtXG4gICAgbGFiZWw9XCJ7eyAnTWFuYWdlbWVudCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgIGljb249XCJjOHktbWFuYWdlbWVudFwiXG4gID48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtXG4gICAgW2ljb25dPVwiJ2M4eS1kZXZpY2UtcHJvZmlsZSdcIlxuICAgIFtsYWJlbF09XCInRGV2aWNlIHByb2ZpbGVzJyB8IHRyYW5zbGF0ZVwiXG4gICAgW3BhdGhdPVwiJ2RldmljZS1wcm9maWxlcydcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbSBsYWJlbD1cInt7IHByb2ZpbGVOYW1lIH19XCIgaWNvbj1cImM4eS1kZXZpY2UtcHJvZmlsZVwiPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbjwvYzh5LWJyZWFkY3J1bWI+XG5cbjxkaXYgKm5nSWY9XCJkZXZpY2VQcm9maWxlXCIgY2xhc3M9XCJyb3dcIj5cbiAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBjb2wtbGctbWF4XCI+XG4gICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC0tZnVsbHBhZ2VcIiAqbmdJZj1cImRldmljZVByb2ZpbGVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrIGJnLWxldmVsLTEgZmxleC1uby1zaHJpbmsgcC10LTI0IHAtYi0yNCBvdmVyZmxvdy12aXNpYmxlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWZsZXgtNzBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiYzh5LWljb24tZHVvY29sb3IgaWNvbi00OCBjOHktaWNvbiBjOHktaWNvbi1kZXZpY2UtcHJvZmlsZVwiPjwvaT5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJsYWJlbCBsYWJlbC1pbmZvXCI+e3sgJ0RldmljZSBwcm9maWxlJyB8IHRyYW5zbGF0ZSB9fTwvc21hbGw+XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3JvdyBjb2wtMTBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XG4gICAgICAgICAgICAgICAgPGZvcm0gI2VkaXROYW1lRm9ybT1cIm5nRm9ybVwiPlxuICAgICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb250cm9sLWxhYmVsXCIgdHJhbnNsYXRlPk5hbWU8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgaW5wdXQtZ3JvdXAtZWRpdGFibGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGV2aWNlUHJvZmlsZS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4gTXkgZGV2aWNlIHByb2ZpbGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJ7eyBkZXZpY2VQcm9maWxlLm5hbWU/Lmxlbmd0aCB8fCAxIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWJ0blwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlRGV2aWNlUHJvZmlsZSh7IG5hbWU6IGRldmljZVByb2ZpbGUubmFtZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0TmFtZUZvcm0uZm9ybS5tYXJrQXNQcmlzdGluZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImVkaXROYW1lRm9ybS5mb3JtLmludmFsaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XG4gICAgICAgICAgICAgICAgPGZvcm0gI2VkaXRUeXBlRm9ybT1cIm5nRm9ybVwiPlxuICAgICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb250cm9sLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgJ0RldmljZSB0eXBlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWhlbHBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcG9wb3Zlcl09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKERFVklDRV9UWVBFX1BPUE9WRVIgfCB0cmFuc2xhdGUpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGlzRGV2aWNlUHJvZmlsZUVtcHR5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnICcgKyAoREVWSUNFX1RZUEVfRElTQUJMRURfUE9QT1ZFUiB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcnKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwiZm9jdXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgW2M4eUljb25dPVwiJ3F1ZXN0aW9uLWNpcmNsZS1vJ1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIGlucHV0LWdyb3VwLWVkaXRhYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRldmljZVByb2ZpbGUuYzh5X0ZpbHRlci50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJ0eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4nIHwgdHJhbnNsYXRlIH19IGM4eV9MaW51eFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwie3sgZGV2aWNlUHJvZmlsZS5jOHlfRmlsdGVyLnR5cGU/Lmxlbmd0aCB8fCAxNCB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEZXZpY2VQcm9maWxlRW1wdHlcIlxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1idG5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlRGV2aWNlUHJvZmlsZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjOHlfRmlsdGVyOiB7IHR5cGU6IGRldmljZVByb2ZpbGUuYzh5X0ZpbHRlci50eXBlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0VHlwZUZvcm0uZm9ybS5tYXJrQXNQcmlzdGluZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0RldmljZVByb2ZpbGVFbXB0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5uZXItc2Nyb2xsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBzZXBhcmF0b3ItdG9wLWJvdHRvbSBiZy1jb250ZW50IHN0aWNreS10b3BcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1pY29uXCI+XG4gICAgICAgICAgICA8aSBbYzh5SWNvbl09XCInYzh5LWZpcm13YXJlJ1wiIGNsYXNzPVwiYzh5LWljb24tZHVvY29sb3JcIj48L2k+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGVcIiB0cmFuc2xhdGU+RmlybXdhcmU8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrIHAtdC0wXCIgKm5nSWY9XCJkZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlLmZpcm13YXJlXCI+XG4gICAgICAgICAgPGM4eS1saXN0LWdyb3VwPlxuICAgICAgICAgICAgPGM4eS1saT5cbiAgICAgICAgICAgICAgPGM4eS1saS1pY29uPlxuICAgICAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cIidjOHktZmlybXdhcmUnXCI+PC9pPlxuICAgICAgICAgICAgICA8L2M4eS1saS1pY29uPlxuICAgICAgICAgICAgICA8Yzh5LWxpLWJvZHkgY2xhc3M9XCJjb250ZW50LWZsZXgtNTAgbS1sLTRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5maXJtd2FyZS5uYW1lIH19XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5maXJtd2FyZS5uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC01IGQtZmxleCBhLWktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7IGRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuZmlybXdhcmUudmVyc2lvbiB9fVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1sYWJlbC1zbWFsbCBtLXItNFwiIHRyYW5zbGF0ZT5WZXJzaW9uPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB7eyBkZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlLmZpcm13YXJlLnZlcnNpb24gfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRhbmdlciBidG4teHMgdmlzaWJsZS14cyBtLWwtYXV0byBtLXItOCBtLXQtOFwiXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1JlbW92ZWBmaXJtd2FyZWAnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVGaXJtd2FyZSgpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cIm1pbnVzLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAge3sgJ1JlbW92ZWBmaXJtd2FyZWAnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1sLWF1dG8gcC1yLTggaGlkZGVuLXhzXCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kb3Qgc2hvd09uSG92ZXIgdGV4dC1kYW5nZXJcIlxuICAgICAgICAgICAgICAgICAgICB0b29sdGlwPVwie3sgJ1JlbW92ZWBmaXJtd2FyZWAnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInUmVtb3ZlYGZpcm13YXJlYCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUZpcm13YXJlKClcIlxuICAgICAgICAgICAgICAgICAgICBbZGVsYXldPVwiNTAwXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cIm1pbnVzLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2M4eS1saS1ib2R5PlxuICAgICAgICAgICAgPC9jOHktbGk+XG4gICAgICAgICAgPC9jOHktbGlzdC1ncm91cD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrIHAtdC0xNlwiICpuZ0lmPVwiIWRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuZmlybXdhcmVcIj5cbiAgICAgICAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICAgICAgICBpY29uPVwiYzh5LWZpcm13YXJlXCJcbiAgICAgICAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIidObyBmaXJtd2FyZSBkZWZpbmVkLicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJwLXQtMTYgZC1ibG9ja1wiXG4gICAgICAgICAgPjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIHAtdC0wXCIgKm5nSWY9XCIhZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5maXJtd2FyZVwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FkZCBmaXJtd2FyZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWRkRmlybXdhcmUoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgYzh5SWNvbj1cInBsdXMtY2lyY2xlXCI+PC9pPlxuICAgICAgICAgICAge3sgJ0FkZCBmaXJtd2FyZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHNlcGFyYXRvci10b3AtYm90dG9tIHN0aWNreS10b3AgYmctY29tcG9uZW50XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaWNvblwiPlxuICAgICAgICAgICAgPGkgW2M4eUljb25dPVwiJ2M4eS10b29scydcIiBjbGFzcz1cImM4eS1pY29uLWR1b2NvbG9yXCI+PC9pPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlXCIgdHJhbnNsYXRlPlNvZnR3YXJlPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9jayBwLXQtMFwiICpuZ0lmPVwiZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5zb2Z0d2FyZT8ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgIDxjOHktbGlzdC1ncm91cD5cbiAgICAgICAgICAgIDxjOHktbGkgKm5nRm9yPVwibGV0IHNvZnR3YXJlIG9mIGRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuc29mdHdhcmVcIj5cbiAgICAgICAgICAgICAgPGM4eS1saS1pY29uPlxuICAgICAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cIidjOHktdG9vbHMnXCI+PC9pPlxuICAgICAgICAgICAgICA8L2M4eS1saS1pY29uPlxuICAgICAgICAgICAgICA8Yzh5LWxpLWJvZHkgY2xhc3M9XCJjb250ZW50LWZsZXgtNTAgbS1sLTRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZS13cmFwXCIgdGl0bGU9XCJ7eyBzb2Z0d2FyZS5uYW1lIH19XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHNvZnR3YXJlLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTUgZC1mbGV4IGEtaS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZS13cmFwXCIgdGl0bGU9XCJ7eyBzb2Z0d2FyZS52ZXJzaW9uIH19XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1sYWJlbC1zbWFsbCBtLXItOFwiIHRyYW5zbGF0ZT5WZXJzaW9uPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB7eyBzb2Z0d2FyZS52ZXJzaW9uIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXIgYnRuLXhzIHZpc2libGUteHMgbS1sLWF1dG8gbS1yLTggbS10LThcIlxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdSZW1vdmVgc29mdHdhcmVgJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAoKGNsaWNrKT1cInJlbW92ZUl0ZW0oc29mdHdhcmUsICdzb2Z0d2FyZScpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cIm1pbnVzLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAge3sgJ1JlbW92ZWBzb2Z0d2FyZWAnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1sLWF1dG8gcC1yLTggaGlkZGVuLXhzXCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kb3Qgc2hvd09uSG92ZXIgdGV4dC1kYW5nZXJcIlxuICAgICAgICAgICAgICAgICAgICB0b29sdGlwPVwie3sgJ1JlbW92ZWBzb2Z0d2FyZWAnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInUmVtb3ZlYHNvZnR3YXJlYCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUl0ZW0oc29mdHdhcmUsICdzb2Z0d2FyZScpXCJcbiAgICAgICAgICAgICAgICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpIGM4eUljb249XCJtaW51cy1jaXJjbGVcIj48L2k+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9jOHktbGktYm9keT5cbiAgICAgICAgICAgIDwvYzh5LWxpPlxuICAgICAgICAgIDwvYzh5LWxpc3QtZ3JvdXA+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjYXJkLWJsb2NrIHAtdC0xNlwiXG4gICAgICAgICAgKm5nSWY9XCJkZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlLnNvZnR3YXJlPy5sZW5ndGggPT09IDBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgICAgICAgaWNvbj1cImM4eS10b29sc1wiXG4gICAgICAgICAgICBbaG9yaXpvbnRhbF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCInTm8gc29mdHdhcmUgZGVmaW5lZC4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgcC10LTBcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0aXRsZT1cInt7ICdBZGQgc29mdHdhcmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgbS1iLTBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFkZFNvZnR3YXJlKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGM4eUljb249XCJwbHVzLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgIHt7ICdBZGQgc29mdHdhcmUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBzZXBhcmF0b3ItdG9wLWJvdHRvbSBiZy1jb21wb25lbnQgc3RpY2t5LXRvcFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWljb25cIj5cbiAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cIidnZWFycydcIiBjbGFzcz1cImM4eS1pY29uLWR1b2NvbG9yXCI+PC9pPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlXCIgdHJhbnNsYXRlPkNvbmZpZ3VyYXRpb248L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNhcmQtYmxvY2sgcC10LTBcIlxuICAgICAgICAgICpuZ0lmPVwiZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5jb25maWd1cmF0aW9uPy5sZW5ndGggPiAwXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjOHktbGlzdC1ncm91cD5cbiAgICAgICAgICAgIDxjOHktbGkgKm5nRm9yPVwibGV0IGNvbmZpZ3VyYXRpb24gb2YgZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5jb25maWd1cmF0aW9uXCI+XG4gICAgICAgICAgICAgIDxjOHktbGktaWNvbj5cbiAgICAgICAgICAgICAgICA8aSBbYzh5SWNvbl09XCInZ2VhcnMnXCI+PC9pPlxuICAgICAgICAgICAgICA8L2M4eS1saS1pY29uPlxuICAgICAgICAgICAgICA8Yzh5LWxpLWJvZHkgY2xhc3M9XCJjb250ZW50LWZsZXgtNTBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiIHRpdGxlPVwie3sgY29uZmlndXJhdGlvbi5uYW1lIH19XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGNvbmZpZ3VyYXRpb24ubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNSBkLWZsZXggYS1pLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbCBsYWJlbC1pbmZvXCI+e3sgY29uZmlndXJhdGlvbi50eXBlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGFuZ2VyIGJ0bi14cyB2aXNpYmxlLXhzIG0tbC1hdXRvIG0tci04IG0tdC04XCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1JlbW92ZWBjb25maWd1cmF0aW9uYCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlSXRlbShjb25maWd1cmF0aW9uLCAnY29uZmlndXJhdGlvbicpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cIm1pbnVzLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAge3sgJ1JlbW92ZWBjb25maWd1cmF0aW9uYCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWwtYXV0byBwLXItOCBoaWRkZW4teHNcIj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRvdCBzaG93T25Ib3ZlciB0ZXh0LWRhbmdlclwiXG4gICAgICAgICAgICAgICAgICAgIHRvb2x0aXA9XCJ7eyAnUmVtb3ZlYGNvbmZpZ3VyYXRpb25gJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1JlbW92ZWBjb25maWd1cmF0aW9uYCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUl0ZW0oY29uZmlndXJhdGlvbiwgJ2NvbmZpZ3VyYXRpb24nKVwiXG4gICAgICAgICAgICAgICAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8aSBjOHlJY29uPVwibWludXMtY2lyY2xlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYzh5LWxpLWJvZHk+XG4gICAgICAgICAgICA8L2M4eS1saT5cbiAgICAgICAgICA8L2M4eS1saXN0LWdyb3VwPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY2FyZC1ibG9jayBwLXQtMTZcIlxuICAgICAgICAgICpuZ0lmPVwiZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5jb25maWd1cmF0aW9uPy5sZW5ndGggPT09IDBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgICAgICAgaWNvbj1cImdlYXJzXCJcbiAgICAgICAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIidObyBjb25maWd1cmF0aW9uIGRlZmluZWQuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgPjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIHAtdC0wXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInAtdC04XCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FkZCBjb25maWd1cmF0aW9uJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBtLWItMFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhZGRDb25maWd1cmF0aW9uKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSBjOHlJY29uPVwicGx1cy1jaXJjbGVcIj48L2k+XG4gICAgICAgICAgICAgIHt7ICdBZGQgY29uZmlndXJhdGlvbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
228
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLXByb2ZpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZGV2aWNlLXByb2ZpbGUvZGV2aWNlLXByb2ZpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZGV2aWNlLXByb2ZpbGUvZGV2aWNlLXByb2ZpbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFrQixnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUUsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRixPQUFPLEVBRUwsOEJBQThCLEVBQzlCLGlCQUFpQixFQUNqQixjQUFjLEVBQ2YsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXJELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU96RixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7Ozs7Ozs7QUFNM0YsTUFBTSxPQUFPLHNCQUFzQjtJQVdqQyxZQUNVLEtBQXFCLEVBQ3JCLFlBQTBCLEVBQzFCLGdCQUFrQyxFQUNsQyxPQUF1QixFQUN2QixpQkFBb0M7UUFKcEMsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsaUJBQVksR0FBWixZQUFZLENBQWM7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LENBQUMsY0FBYztRQUN2QyxJQUNFLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLGlCQUFpQixDQUFDO1lBQzFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUM1QztZQUNBLElBQUksY0FBYyxLQUFLLGNBQWMsQ0FBQyxhQUFhLEVBQUU7Z0JBQ25ELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQ2pDLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxFQUNsRCxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsRUFBRSxDQUNuQyxDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FDakMsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFDekQ7b0JBQ0UsSUFBSSxFQUFFLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxFQUFFLENBQUM7aUJBQzNFLENBQ0YsQ0FBQzthQUNIO1NBQ0Y7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7O21IQTVRVSxzQkFBc0I7dUdBQXRCLHNCQUFzQiwwREMxQm5DLGd2Y0FxVkE7MkZEM1RhLHNCQUFzQjtrQkFKbEMsU0FBUzsrQkFDRSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QsIEludmVudG9yeVNlcnZpY2UsIFF1ZXJpZXNVdGlsIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBnZXR0ZXh0LCBNb2RhbFNlbGVjdGlvbk1vZGUgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIEZpbHRlckNyaXRlcmlhLFxuICBSZXBvc2l0b3J5U2VsZWN0TW9kYWxDb21wb25lbnQsXG4gIFJlcG9zaXRvcnlTZXJ2aWNlLFxuICBSZXBvc2l0b3J5VHlwZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL3JlcG9zaXRvcnkvc2hhcmVkJztcbmltcG9ydCB7IGFzc2lnbiwgY29uY2F0LCBoYXMsIGlzRW1wdHksIGlzRXF1YWwsIHVuaXFXaXRoIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBEZXZpY2VQcm9maWxlLFxuICBEZXZpY2VQcm9maWxlQ29uZmlndXJhdGlvbixcbiAgRGV2aWNlUHJvZmlsZUZpcm13YXJlLFxuICBEZXZpY2VQcm9maWxlU29mdHdhcmVcbn0gZnJvbSAnLi9kZXZpY2UtcHJvZmlsZS5tb2RlbCc7XG5pbXBvcnQgeyBTZWxlY3RDb25maWd1cmF0aW9uTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL3NlbGVjdC1jb25maWd1cmF0aW9uLW1vZGFsLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kZXZpY2UtcHJvZmlsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kZXZpY2UtcHJvZmlsZS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRGV2aWNlUHJvZmlsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIERFVklDRV9UWVBFX1BPUE9WRVIgPSBnZXR0ZXh0KFxuICAgICdUaGUgZGV2aWNlIHByb2ZpbGUgd2lsbCBiZSBhdmFpbGFibGUgZm9yIGFzc2lnbm1lbnRzIG9uIGRldmljZXMgb2YgdGhlIHNwZWNpZmllZCB0eXBlLiBPdGhlcndpc2UsIGl0IHdpbGwgYmUgYXZhaWxhYmxlIGZvciBhbGwgZGV2aWNlIHR5cGVzLidcbiAgKTtcbiAgREVWSUNFX1RZUEVfRElTQUJMRURfUE9QT1ZFUiA9IGdldHRleHQoXG4gICAgJ0RldmljZSB0eXBlIGNhbm5vdCBiZSBjaGFuZ2VkIG9uIHByb2ZpbGVzIHdpdGggYWxyZWFkeSBkZWZpbmVkIGZpcm13YXJlLCBzb2Z0d2FyZSBvciBjb25maWd1cmF0aW9uIHNpbmNlIHRoZXkgbWF5IG5vdCBiZSBhcHBsaWNhYmxlIHRvIGRldmljZXMgb2YgdGhlIG5ldyBkZXZpY2UgdHlwZS4nXG4gICk7XG4gIGRldmljZVByb2ZpbGU6IERldmljZVByb2ZpbGU7XG4gIHByb2ZpbGVOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgcXVlcmllc1V0aWw6IFF1ZXJpZXNVdGlsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnlTZXJ2aWNlOiBJbnZlbnRvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgYnNNb2RhbDogQnNNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZXBvc2l0b3J5U2VydmljZTogUmVwb3NpdG9yeVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5xdWVyaWVzVXRpbCA9IG5ldyBRdWVyaWVzVXRpbCgpO1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgcHJvZmlsZUlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ2lkJyk7XG4gICAgdGhpcy5kZXZpY2VQcm9maWxlID0gKGF3YWl0IHRoaXMuZ2V0RGV2aWNlUHJvZmlsZShwcm9maWxlSWQpKSBhcyBEZXZpY2VQcm9maWxlO1xuICAgIGlmICh0aGlzLmRldmljZVByb2ZpbGUpIHtcbiAgICAgIHRoaXMucHJvZmlsZU5hbWUgPSB0aGlzLmRldmljZVByb2ZpbGUubmFtZTtcbiAgICAgIGlmICghdGhpcy5kZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlLnNvZnR3YXJlKSB7XG4gICAgICAgIHRoaXMuZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5zb2Z0d2FyZSA9IFtdO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLmRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuY29uZmlndXJhdGlvbikge1xuICAgICAgICB0aGlzLmRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuY29uZmlndXJhdGlvbiA9IFtdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFkZEZpcm13YXJlKCkge1xuICAgIGNvbnN0IGluaXRpYWxTdGF0ZTogUGFydGlhbDxSZXBvc2l0b3J5U2VsZWN0TW9kYWxDb21wb25lbnQ+ICYge1xuICAgICAgcmVwb3NpdG9yeUVudHJpZXNXaXRoVmVyc2lvbnNGbiQ6IChtb2RhbDogYW55KSA9PiBPYnNlcnZhYmxlPElNYW5hZ2VkT2JqZWN0W10+O1xuICAgIH0gPSB7XG4gICAgICBkZXZpY2VUeXBlUXVlcnk6IHRoaXMuZ2V0RGV2aWNlVHlwZVF1ZXJ5KFJlcG9zaXRvcnlUeXBlLkZJUk1XQVJFKSxcbiAgICAgIHJlcG9zaXRvcnlUeXBlOiBSZXBvc2l0b3J5VHlwZS5GSVJNV0FSRSxcbiAgICAgIHJlcG9zaXRvcnlFbnRyaWVzV2l0aFZlcnNpb25zRm4kOiBtb2RhbERpYWxvZyA9PlxuICAgICAgICB0aGlzLmdldFJlcG9zaXRvcnlFbnRyaWVzV2l0aFZlcnNpb25zJChcbiAgICAgICAgICBtb2RhbERpYWxvZy5jb250ZW50LnNlYXJjaFRlcm0sXG4gICAgICAgICAgUmVwb3NpdG9yeVR5cGUuRklSTVdBUkVcbiAgICAgICAgKSxcbiAgICAgIGljb246ICdjOHktZmlybXdhcmUnLFxuICAgICAgdGl0bGU6IGdldHRleHQoJ1NlbGVjdCBmaXJtd2FyZScpLFxuICAgICAgbW9kZTogTW9kYWxTZWxlY3Rpb25Nb2RlLlNJTkdMRVxuICAgIH07XG4gICAgY29uc3QgbW9kYWwgPSB0aGlzLmJzTW9kYWwuc2hvdyhSZXBvc2l0b3J5U2VsZWN0TW9kYWxDb21wb25lbnQsIHtcbiAgICAgIGlnbm9yZUJhY2tkcm9wQ2xpY2s6IHRydWUsXG4gICAgICBhcmlhTGFiZWxsZWRCeTogJ21vZGFsLXRpdGxlJyxcbiAgICAgIGluaXRpYWxTdGF0ZVxuICAgIH0pO1xuXG4gICAgaWYgKGluaXRpYWxTdGF0ZS5yZXBvc2l0b3J5RW50cmllc1dpdGhWZXJzaW9uc0ZuJCkge1xuICAgICAgbW9kYWwuY29udGVudC5yZXBvc2l0b3J5RW50cmllc1dpdGhWZXJzaW9ucyQgPVxuICAgICAgICBpbml0aWFsU3RhdGUucmVwb3NpdG9yeUVudHJpZXNXaXRoVmVyc2lvbnNGbiQobW9kYWwpO1xuICAgIH1cblxuICAgIG1vZGFsLmNvbnRlbnQubG9hZC5uZXh0KCk7XG4gICAgbW9kYWwuY29udGVudC5yZXN1bHRFbWl0dGVyLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGZpcm13YXJlTGlzdCA9PiB7XG4gICAgICBjb25zdCBbZmlybXdhcmVdID0gZmlybXdhcmVMaXN0O1xuICAgICAgaWYgKCFmaXJtd2FyZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBkZXZpY2VQcm9maWxlUGFydGlhbDogUGFydGlhbDxJTWFuYWdlZE9iamVjdD4gPSB7XG4gICAgICAgIGM4eV9EZXZpY2VQcm9maWxlOiB0aGlzLmRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUgfHwge31cbiAgICAgIH07XG4gICAgICBhc3NpZ24oZGV2aWNlUHJvZmlsZVBhcnRpYWwuYzh5X0RldmljZVByb2ZpbGUsIHtcbiAgICAgICAgZmlybXdhcmU6IHtcbiAgICAgICAgICBuYW1lOiBmaXJtd2FyZS5uYW1lLFxuICAgICAgICAgIHZlcnNpb246IGZpcm13YXJlLnZlcnNpb24sXG4gICAgICAgICAgdXJsOiBmaXJtd2FyZS51cmwsXG4gICAgICAgICAgaXNQYXRjaDogZmlybXdhcmUuaXNQYXRjaCxcbiAgICAgICAgICBwYXRjaERlcGVuZGVuY3k6IGZpcm13YXJlLnBhdGNoRGVwZW5kZW5jeVxuICAgICAgICB9IGFzIERldmljZVByb2ZpbGVGaXJtd2FyZVxuICAgICAgfSk7XG4gICAgICB0aGlzLnVwZGF0ZURldmljZVByb2ZpbGUoZGV2aWNlUHJvZmlsZVBhcnRpYWwpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0UmVwb3NpdG9yeUVudHJpZXNXaXRoVmVyc2lvbnMkKFxuICAgIHNlYXJjaFRlcm0kOiBCZWhhdmlvclN1YmplY3Q8RmlsdGVyQ3JpdGVyaWE+LFxuICAgIHJlcG9UeXBlOiBSZXBvc2l0b3J5VHlwZVxuICApIHtcbiAgICByZXR1cm4gc2VhcmNoVGVybSQucGlwZShcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICBzd2l0Y2hNYXAoc2VhcmNoVGVybSA9PlxuICAgICAgICB0aGlzLnJlcG9zaXRvcnlTZXJ2aWNlLmxpc3RSZXBvc2l0b3J5RW50cmllcyhyZXBvVHlwZSwge1xuICAgICAgICAgIHF1ZXJ5OiB0aGlzLmdldERldmljZVR5cGVRdWVyeShyZXBvVHlwZSksXG4gICAgICAgICAgcGFydGlhbE5hbWU6IHNlYXJjaFRlcm0ubmFtZSxcbiAgICAgICAgICBwYXJhbXM6IHsgcGFnZVNpemU6IDEwMCB9LFxuICAgICAgICAgIHNraXBMZWdhY3k6IHRydWVcbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgICBtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSxcbiAgICAgIG1hcChtb3MgPT4gdGhpcy5nZXRBbmRBc3NpZ25SZXBvc2l0b3J5QmluYXJpZXMobW9zKSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH1cblxuICBnZXRBbmRBc3NpZ25SZXBvc2l0b3J5QmluYXJpZXMobW9zOiBJTWFuYWdlZE9iamVjdFtdKSB7XG4gICAgbW9zLmZvckVhY2gobW8gPT4ge1xuICAgICAgbW8udmVyc2lvbnMgPSB0aGlzLnJlcG9zaXRvcnlTZXJ2aWNlLmxpc3RCYXNlVmVyc2lvbnMobW8pO1xuICAgIH0pO1xuICAgIHJldHVybiBtb3M7XG4gIH1cblxuICBhZGRDb25maWd1cmF0aW9uKCkge1xuICAgIGNvbnN0IG1vZGFsID0gdGhpcy5ic01vZGFsLnNob3coU2VsZWN0Q29uZmlndXJhdGlvbk1vZGFsQ29tcG9uZW50LCB7XG4gICAgICBpZ25vcmVCYWNrZHJvcENsaWNrOiB0cnVlLFxuICAgICAgYXJpYUxhYmVsbGVkQnk6ICdtb2RhbC10aXRsZSdcbiAgICB9KTtcbiAgICBtb2RhbC5jb250ZW50LmRldmljZVR5cGVRdWVyeSA9IHRoaXMuZ2V0RGV2aWNlVHlwZVF1ZXJ5KFJlcG9zaXRvcnlUeXBlLkNPTkZJR1VSQVRJT04pO1xuICAgIG1vZGFsLmNvbnRlbnQuc2VsZWN0ZWQgPSB0aGlzLmRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuY29uZmlndXJhdGlvbjtcbiAgICBtb2RhbC5jb250ZW50LmxvYWQubmV4dCgpO1xuICAgIG1vZGFsLmNvbnRlbnQucmVzdWx0RW1pdHRlci5waXBlKHRha2UoMSkpLnN1YnNjcmliZShzZWxlY3RlZENvbmZpZ3VyYXRpb25zID0+IHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkTWFwcGVkOiBEZXZpY2VQcm9maWxlQ29uZmlndXJhdGlvbltdID0gc2VsZWN0ZWRDb25maWd1cmF0aW9ucy5tYXAoXG4gICAgICAgIHNlbGVjdGVkSXRlbSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGFzc2lnbihcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdXJsOiBzZWxlY3RlZEl0ZW0udXJsLFxuICAgICAgICAgICAgICBuYW1lOiBzZWxlY3RlZEl0ZW0ubmFtZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbS5jb25maWd1cmF0aW9uVHlwZSA/IHsgdHlwZTogc2VsZWN0ZWRJdGVtLmNvbmZpZ3VyYXRpb25UeXBlIH0gOiB7fVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICBjb25zdCBtZXJnZWQ6IERldmljZVByb2ZpbGVDb25maWd1cmF0aW9uID0gY29uY2F0KFxuICAgICAgICBzZWxlY3RlZE1hcHBlZCxcbiAgICAgICAgdGhpcy5kZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlLmNvbmZpZ3VyYXRpb24gfHwgW11cbiAgICAgICk7XG4gICAgICBjb25zdCBjb25maWd1cmF0aW9uOiBEZXZpY2VQcm9maWxlQ29uZmlndXJhdGlvbiA9IHVuaXFXaXRoKG1lcmdlZCwgKGFyclZhbCwgb3RoVmFsKSA9PiB7XG4gICAgICAgIHJldHVybiBhcnJWYWwudHlwZSAmJiBvdGhWYWwudHlwZSAmJiBhcnJWYWwudHlwZSA9PT0gb3RoVmFsLnR5cGU7XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGRldmljZVByb2ZpbGVQYXJ0aWFsOiBQYXJ0aWFsPElNYW5hZ2VkT2JqZWN0PiA9IHtcbiAgICAgICAgYzh5X0RldmljZVByb2ZpbGU6IHRoaXMuZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZSB8fCB7fVxuICAgICAgfTtcbiAgICAgIGFzc2lnbihkZXZpY2VQcm9maWxlUGFydGlhbC5jOHlfRGV2aWNlUHJvZmlsZSwgeyBjb25maWd1cmF0aW9uIH0pO1xuICAgICAgdGhpcy51cGRhdGVEZXZpY2VQcm9maWxlKGRldmljZVByb2ZpbGVQYXJ0aWFsKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFkZFNvZnR3YXJlKCkge1xuICAgIGNvbnN0IGluaXRpYWxTdGF0ZTogUGFydGlhbDxSZXBvc2l0b3J5U2VsZWN0TW9kYWxDb21wb25lbnQ+ICYge1xuICAgICAgcmVwb3NpdG9yeUVudHJpZXNXaXRoVmVyc2lvbnNGbiQ6IChtb2RhbDogYW55KSA9PiBPYnNlcnZhYmxlPElNYW5hZ2VkT2JqZWN0W10+O1xuICAgIH0gPSB7XG4gICAgICBkZXZpY2VUeXBlUXVlcnk6IHRoaXMuZ2V0RGV2aWNlVHlwZVF1ZXJ5KFJlcG9zaXRvcnlUeXBlLlNPRlRXQVJFKSxcbiAgICAgIHJlcG9zaXRvcnlUeXBlOiBSZXBvc2l0b3J5VHlwZS5TT0ZUV0FSRSxcbiAgICAgIHJlcG9zaXRvcnlFbnRyaWVzV2l0aFZlcnNpb25zRm4kOiBtb2RhbERpYWxvZyA9PlxuICAgICAgICB0aGlzLmdldFJlcG9zaXRvcnlFbnRyaWVzV2l0aFZlcnNpb25zJChcbiAgICAgICAgICBtb2RhbERpYWxvZy5jb250ZW50LnNlYXJjaFRlcm0sXG4gICAgICAgICAgUmVwb3NpdG9yeVR5cGUuU09GVFdBUkVcbiAgICAgICAgKSxcbiAgICAgIHNlbGVjdGVkOiB0aGlzLmRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuc29mdHdhcmUsXG4gICAgICBpY29uOiAnYzh5LXRvb2xzJyxcbiAgICAgIHRpdGxlOiBnZXR0ZXh0KCdTZWxlY3Qgc29mdHdhcmUnKSxcbiAgICAgIG1vZGU6IE1vZGFsU2VsZWN0aW9uTW9kZS5NVUxUSVxuICAgIH07XG4gICAgY29uc3QgbW9kYWwgPSB0aGlzLmJzTW9kYWwuc2hvdyhSZXBvc2l0b3J5U2VsZWN0TW9kYWxDb21wb25lbnQsIHtcbiAgICAgIGlnbm9yZUJhY2tkcm9wQ2xpY2s6IHRydWUsXG4gICAgICBhcmlhTGFiZWxsZWRCeTogJ21vZGFsLXRpdGxlJyxcbiAgICAgIGluaXRpYWxTdGF0ZVxuICAgIH0pO1xuXG4gICAgaWYgKGluaXRpYWxTdGF0ZS5yZXBvc2l0b3J5RW50cmllc1dpdGhWZXJzaW9uc0ZuJCkge1xuICAgICAgbW9kYWwuY29udGVudC5yZXBvc2l0b3J5RW50cmllc1dpdGhWZXJzaW9ucyQgPVxuICAgICAgICBpbml0aWFsU3RhdGUucmVwb3NpdG9yeUVudHJpZXNXaXRoVmVyc2lvbnNGbiQobW9kYWwpO1xuICAgIH1cblxuICAgIG1vZGFsLmNvbnRlbnQubG9hZC5uZXh0KCk7XG4gICAgbW9kYWwuY29udGVudC5yZXN1bHRFbWl0dGVyLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHNlbGVjdGVkU29mdHdhcmUgPT4ge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRNYXBwZWQ6IERldmljZVByb2ZpbGVTb2Z0d2FyZVtdID0gc2VsZWN0ZWRTb2Z0d2FyZS5tYXAoc2VsZWN0ZWRJdGVtID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBuYW1lOiBzZWxlY3RlZEl0ZW0ubmFtZSxcbiAgICAgICAgICB2ZXJzaW9uOiBzZWxlY3RlZEl0ZW0udmVyc2lvbixcbiAgICAgICAgICB1cmw6IHNlbGVjdGVkSXRlbS51cmwsXG4gICAgICAgICAgYWN0aW9uOiAnaW5zdGFsbCdcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgICAgY29uc3QgbWVyZ2VkOiBEZXZpY2VQcm9maWxlU29mdHdhcmUgPSBjb25jYXQoXG4gICAgICAgIHNlbGVjdGVkTWFwcGVkLFxuICAgICAgICB0aGlzLmRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuc29mdHdhcmUgfHwgW11cbiAgICAgICk7XG4gICAgICBjb25zdCBzb2Z0d2FyZTogRGV2aWNlUHJvZmlsZVNvZnR3YXJlID0gdW5pcVdpdGgobWVyZ2VkLCAoYXJyVmFsLCBvdGhWYWwpID0+IHtcbiAgICAgICAgcmV0dXJuIGFyclZhbC5uYW1lICYmIG90aFZhbC5uYW1lICYmIGFyclZhbC5uYW1lID09PSBvdGhWYWwubmFtZTtcbiAgICAgIH0pO1xuICAgICAgY29uc3QgZGV2aWNlUHJvZmlsZVBhcnRpYWw6IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+ID0ge1xuICAgICAgICBjOHlfRGV2aWNlUHJvZmlsZTogdGhpcy5kZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlIHx8IHt9XG4gICAgICB9O1xuICAgICAgYXNzaWduKGRldmljZVByb2ZpbGVQYXJ0aWFsLmM4eV9EZXZpY2VQcm9maWxlLCB7IHNvZnR3YXJlIH0pO1xuICAgICAgdGhpcy51cGRhdGVEZXZpY2VQcm9maWxlKGRldmljZVByb2ZpbGVQYXJ0aWFsKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBpc0RldmljZVByb2ZpbGVFbXB0eSgpIHtcbiAgICBjb25zdCBpc1NvZnR3YXJlID1cbiAgICAgIHRoaXMuZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5zb2Z0d2FyZSAmJlxuICAgICAgdGhpcy5kZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlLnNvZnR3YXJlLmxlbmd0aCA+IDA7XG4gICAgY29uc3QgaXNGaXJtd2FyZSA9IEJvb2xlYW4odGhpcy5kZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlLmZpcm13YXJlKTtcbiAgICBjb25zdCBpc0NvbmZpZ3VyYXRpb24gPVxuICAgICAgdGhpcy5kZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlLmNvbmZpZ3VyYXRpb24gJiZcbiAgICAgIHRoaXMuZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5jb25maWd1cmF0aW9uLmxlbmd0aCA+IDA7XG4gICAgcmV0dXJuIGlzU29mdHdhcmUgfHwgaXNGaXJtd2FyZSB8fCBpc0NvbmZpZ3VyYXRpb247XG4gIH1cblxuICByZW1vdmVJdGVtKHJlbW92ZWRJdGVtLCBjYXRlZ29yeSkge1xuICAgIGNvbnN0IGRldmljZVByb2ZpbGVQYXJ0aWFsOiBQYXJ0aWFsPElNYW5hZ2VkT2JqZWN0PiA9IHtcbiAgICAgIGM4eV9EZXZpY2VQcm9maWxlOiB0aGlzLmRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGVcbiAgICB9O1xuICAgIGNvbnN0IGZpbHRlcmVkID0gZGV2aWNlUHJvZmlsZVBhcnRpYWwuYzh5X0RldmljZVByb2ZpbGVbY2F0ZWdvcnldLmZpbHRlcihcbiAgICAgIGl0ZW0gPT4gIWlzRXF1YWwocmVtb3ZlZEl0ZW0sIGl0ZW0pXG4gICAgKTtcbiAgICBkZXZpY2VQcm9maWxlUGFydGlhbC5jOHlfRGV2aWNlUHJvZmlsZVtjYXRlZ29yeV0gPSBmaWx0ZXJlZDtcbiAgICB0aGlzLnVwZGF0ZURldmljZVByb2ZpbGUoZGV2aWNlUHJvZmlsZVBhcnRpYWwpO1xuICB9XG5cbiAgcmVtb3ZlRmlybXdhcmUoKSB7XG4gICAgZGVsZXRlIHRoaXMuZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5maXJtd2FyZTtcbiAgICB0aGlzLnVwZGF0ZURldmljZVByb2ZpbGUoeyBjOHlfRGV2aWNlUHJvZmlsZTogdGhpcy5kZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlIH0pO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlRGV2aWNlUHJvZmlsZShwYXJ0aWFsRGV2aWNlUHJvZmlsZSkge1xuICAgIGlmIChwYXJ0aWFsRGV2aWNlUHJvZmlsZS5jOHlfRmlsdGVyICYmIHBhcnRpYWxEZXZpY2VQcm9maWxlLmM4eV9GaWx0ZXIudHlwZSA9PT0gJycpIHtcbiAgICAgIGRlbGV0ZSBwYXJ0aWFsRGV2aWNlUHJvZmlsZS5jOHlfRmlsdGVyLnR5cGU7XG4gICAgfVxuICAgIE9iamVjdC5hc3NpZ24ocGFydGlhbERldmljZVByb2ZpbGUsIHsgaWQ6IHRoaXMuZGV2aWNlUHJvZmlsZS5pZCB9KTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLmludmVudG9yeVNlcnZpY2UudXBkYXRlKHBhcnRpYWxEZXZpY2VQcm9maWxlKTtcbiAgICAgIHRoaXMuZGV2aWNlUHJvZmlsZSA9IGRhdGEgYXMgRGV2aWNlUHJvZmlsZTtcbiAgICAgIHRoaXMucHJvZmlsZU5hbWUgPSB0aGlzLmRldmljZVByb2ZpbGUubmFtZTtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3MoZ2V0dGV4dCgnRGV2aWNlIHByb2ZpbGUgY2hhbmdlZC4nKSk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0RGV2aWNlUHJvZmlsZShwcm9maWxlSWQpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLmludmVudG9yeVNlcnZpY2UuZGV0YWlsKHByb2ZpbGVJZCk7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShleCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXREZXZpY2VUeXBlUXVlcnkocmVwb3NpdG9yeVR5cGUpIHtcbiAgICBpZiAoXG4gICAgICBoYXModGhpcy5kZXZpY2VQcm9maWxlLCAnYzh5X0ZpbHRlci50eXBlJykgJiZcbiAgICAgICFpc0VtcHR5KHRoaXMuZGV2aWNlUHJvZmlsZS5jOHlfRmlsdGVyLnR5cGUpXG4gICAgKSB7XG4gICAgICBpZiAocmVwb3NpdG9yeVR5cGUgPT09IFJlcG9zaXRvcnlUeXBlLkNPTkZJR1VSQVRJT04pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucXVlcmllc1V0aWwuYWRkT3JGaWx0ZXIoXG4gICAgICAgICAgeyBkZXZpY2VUeXBlOiB0aGlzLmRldmljZVByb2ZpbGUuYzh5X0ZpbHRlci50eXBlIH0sXG4gICAgICAgICAgeyBfX25vdDogeyBfX2hhczogYGRldmljZVR5cGVgIH0gfVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucXVlcmllc1V0aWwuYWRkT3JGaWx0ZXIoXG4gICAgICAgICAgeyAnYzh5X0ZpbHRlci50eXBlJzogdGhpcy5kZXZpY2VQcm9maWxlLmM4eV9GaWx0ZXIudHlwZSB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIF9fb3I6IFt7ICdjOHlfRmlsdGVyLnR5cGUnOiAnJyB9LCB7IF9fbm90OiB7IF9faGFzOiBgYzh5X0ZpbHRlci50eXBlYCB9IH1dXG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge307XG4gIH1cbn1cbiIsIjxjOHktdGl0bGU+e3sgcHJvZmlsZU5hbWUgfX08L2M4eS10aXRsZT5cblxuPGM4eS1icmVhZGNydW1iPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbVxuICAgIGxhYmVsPVwie3sgJ01hbmFnZW1lbnQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICBpY29uPVwiYzh5LW1hbmFnZW1lbnRcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbVxuICAgIFtpY29uXT1cIidjOHktZGV2aWNlLXByb2ZpbGUnXCJcbiAgICBbbGFiZWxdPVwiJ0RldmljZSBwcm9maWxlcycgfCB0cmFuc2xhdGVcIlxuICAgIFtwYXRoXT1cIidkZXZpY2UtcHJvZmlsZXMnXCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW0gbGFiZWw9XCJ7eyBwcm9maWxlTmFtZSB9fVwiIGljb249XCJjOHktZGV2aWNlLXByb2ZpbGVcIj48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG48L2M4eS1icmVhZGNydW1iPlxuXG48ZGl2ICpuZ0lmPVwiZGV2aWNlUHJvZmlsZVwiIGNsYXNzPVwicm93XCI+XG4gIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgY29sLWxnLW1heFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtLWZ1bGxwYWdlXCIgKm5nSWY9XCJkZXZpY2VQcm9maWxlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9jayBiZy1sZXZlbC0xIGZsZXgtbm8tc2hyaW5rIHAtdC0yNCBwLWItMjQgb3ZlcmZsb3ctdmlzaWJsZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1mbGV4LTcwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImM4eS1pY29uLWR1b2NvbG9yIGljb24tNDggYzh5LWljb24gYzh5LWljb24tZGV2aWNlLXByb2ZpbGVcIj48L2k+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwibGFiZWwgbGFiZWwtaW5mb1wiPnt7ICdEZXZpY2UgcHJvZmlsZScgfCB0cmFuc2xhdGUgfX08L3NtYWxsPlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3cgY29sLTEwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxuICAgICAgICAgICAgICAgIDxmb3JtICNlZGl0TmFtZUZvcm09XCJuZ0Zvcm1cIj5cbiAgICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiIHRyYW5zbGF0ZT5OYW1lPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIGlucHV0LWdyb3VwLWVkaXRhYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRldmljZVByb2ZpbGUubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlLmcuIE15IGRldmljZSBwcm9maWxlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwie3sgZGV2aWNlUHJvZmlsZS5uYW1lPy5sZW5ndGggfHwgMSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1idG5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZURldmljZVByb2ZpbGUoeyBuYW1lOiBkZXZpY2VQcm9maWxlLm5hbWUgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdE5hbWVGb3JtLmZvcm0ubWFya0FzUHJpc3RpbmUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJlZGl0TmFtZUZvcm0uZm9ybS5pbnZhbGlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxuICAgICAgICAgICAgICAgIDxmb3JtICNlZGl0VHlwZUZvcm09XCJuZ0Zvcm1cIj5cbiAgICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdEZXZpY2UgdHlwZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1oZWxwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3BvcG92ZXJdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChERVZJQ0VfVFlQRV9QT1BPVkVSIHwgdHJhbnNsYXRlKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChpc0RldmljZVByb2ZpbGVFbXB0eVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJyAnICsgKERFVklDRV9UWVBFX0RJU0FCTEVEX1BPUE9WRVIgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnJylcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cIidxdWVzdGlvbi1jaXJjbGUtbydcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBpbnB1dC1ncm91cC1lZGl0YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkZXZpY2VQcm9maWxlLmM4eV9GaWx0ZXIudHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwidHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlLmcuJyB8IHRyYW5zbGF0ZSB9fSBjOHlfTGludXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInt7IGRldmljZVByb2ZpbGUuYzh5X0ZpbHRlci50eXBlPy5sZW5ndGggfHwgMTQgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGV2aWNlUHJvZmlsZUVtcHR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtYnRuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZURldmljZVByb2ZpbGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzh5X0ZpbHRlcjogeyB0eXBlOiBkZXZpY2VQcm9maWxlLmM4eV9GaWx0ZXIudHlwZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdFR5cGVGb3JtLmZvcm0ubWFya0FzUHJpc3RpbmUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEZXZpY2VQcm9maWxlRW1wdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImlubmVyLXNjcm9sbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgc2VwYXJhdG9yLXRvcC1ib3R0b20gYmctY29udGVudCBzdGlja3ktdG9wXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaWNvblwiPlxuICAgICAgICAgICAgPGkgW2M4eUljb25dPVwiJ2M4eS1maXJtd2FyZSdcIiBjbGFzcz1cImM4eS1pY29uLWR1b2NvbG9yXCI+PC9pPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlXCIgdHJhbnNsYXRlPkZpcm13YXJlPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9jayBwLXQtMFwiICpuZ0lmPVwiZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5maXJtd2FyZVwiPlxuICAgICAgICAgIDxjOHktbGlzdC1ncm91cD5cbiAgICAgICAgICAgIDxjOHktbGk+XG4gICAgICAgICAgICAgIDxjOHktbGktaWNvbj5cbiAgICAgICAgICAgICAgICA8aSBbYzh5SWNvbl09XCInYzh5LWZpcm13YXJlJ1wiPjwvaT5cbiAgICAgICAgICAgICAgPC9jOHktbGktaWNvbj5cbiAgICAgICAgICAgICAgPGM4eS1saS1ib2R5IGNsYXNzPVwiY29udGVudC1mbGV4LTUwIG0tbC00XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7IGRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuZmlybXdhcmUubmFtZSB9fVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IGRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuZmlybXdhcmUubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNSBkLWZsZXggYS1pLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyBkZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlLmZpcm13YXJlLnZlcnNpb24gfX1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbGFiZWwtc21hbGwgbS1yLTRcIiB0cmFuc2xhdGU+VmVyc2lvbjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAge3sgZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5maXJtd2FyZS52ZXJzaW9uIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXIgYnRuLXhzIHZpc2libGUteHMgbS1sLWF1dG8gbS1yLTggbS10LThcIlxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdSZW1vdmVgZmlybXdhcmVgJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlRmlybXdhcmUoKVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpIGM4eUljb249XCJtaW51cy1jaXJjbGVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdSZW1vdmVgZmlybXdhcmVgJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tbC1hdXRvIHAtci04IGhpZGRlbi14c1wiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZG90IHNob3dPbkhvdmVyIHRleHQtZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcD1cInt7ICdSZW1vdmVgZmlybXdhcmVgJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1JlbW92ZWBmaXJtd2FyZWAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVGaXJtd2FyZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpIGM4eUljb249XCJtaW51cy1jaXJjbGVcIj48L2k+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9jOHktbGktYm9keT5cbiAgICAgICAgICAgIDwvYzh5LWxpPlxuICAgICAgICAgIDwvYzh5LWxpc3QtZ3JvdXA+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9jayBwLXQtMTZcIiAqbmdJZj1cIiFkZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlLmZpcm13YXJlXCI+XG4gICAgICAgICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgICAgICAgaWNvbj1cImM4eS1maXJtd2FyZVwiXG4gICAgICAgICAgICBbaG9yaXpvbnRhbF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCInTm8gZmlybXdhcmUgZGVmaW5lZC4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIGNsYXNzPVwicC10LTE2IGQtYmxvY2tcIlxuICAgICAgICAgID48L2M4eS11aS1lbXB0eS1zdGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBwLXQtMFwiICpuZ0lmPVwiIWRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuZmlybXdhcmVcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0aXRsZT1cInt7ICdBZGQgZmlybXdhcmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFkZEZpcm13YXJlKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGM4eUljb249XCJwbHVzLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgIHt7ICdBZGQgZmlybXdhcmUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBzZXBhcmF0b3ItdG9wLWJvdHRvbSBzdGlja3ktdG9wIGJnLWNvbXBvbmVudFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWljb25cIj5cbiAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cIidjOHktdG9vbHMnXCIgY2xhc3M9XCJjOHktaWNvbi1kdW9jb2xvclwiPjwvaT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZVwiIHRyYW5zbGF0ZT5Tb2Z0d2FyZTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYmxvY2sgcC10LTBcIiAqbmdJZj1cImRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuc29mdHdhcmU/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICA8Yzh5LWxpc3QtZ3JvdXA+XG4gICAgICAgICAgICA8Yzh5LWxpICpuZ0Zvcj1cImxldCBzb2Z0d2FyZSBvZiBkZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlLnNvZnR3YXJlXCI+XG4gICAgICAgICAgICAgIDxjOHktbGktaWNvbj5cbiAgICAgICAgICAgICAgICA8aSBbYzh5SWNvbl09XCInYzh5LXRvb2xzJ1wiPjwvaT5cbiAgICAgICAgICAgICAgPC9jOHktbGktaWNvbj5cbiAgICAgICAgICAgICAgPGM4eS1saS1ib2R5IGNsYXNzPVwiY29udGVudC1mbGV4LTUwIG0tbC00XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGUtd3JhcFwiIHRpdGxlPVwie3sgc29mdHdhcmUubmFtZSB9fVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBzb2Z0d2FyZS5uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC01IGQtZmxleCBhLWktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGUtd3JhcFwiIHRpdGxlPVwie3sgc29mdHdhcmUudmVyc2lvbiB9fVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbGFiZWwtc21hbGwgbS1yLThcIiB0cmFuc2xhdGU+VmVyc2lvbjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAge3sgc29mdHdhcmUudmVyc2lvbiB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGFuZ2VyIGJ0bi14cyB2aXNpYmxlLXhzIG0tbC1hdXRvIG0tci04IG0tdC04XCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnUmVtb3ZlYHNvZnR3YXJlYCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgKChjbGljayk9XCJyZW1vdmVJdGVtKHNvZnR3YXJlLCAnc29mdHdhcmUnKVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpIGM4eUljb249XCJtaW51cy1jaXJjbGVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdSZW1vdmVgc29mdHdhcmVgJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tbC1hdXRvIHAtci04IGhpZGRlbi14c1wiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZG90IHNob3dPbkhvdmVyIHRleHQtZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcD1cInt7ICdSZW1vdmVgc29mdHdhcmVgJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1JlbW92ZWBzb2Z0d2FyZWAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVJdGVtKHNvZnR3YXJlLCAnc29mdHdhcmUnKVwiXG4gICAgICAgICAgICAgICAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8aSBjOHlJY29uPVwibWludXMtY2lyY2xlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYzh5LWxpLWJvZHk+XG4gICAgICAgICAgICA8L2M4eS1saT5cbiAgICAgICAgICA8L2M4eS1saXN0LWdyb3VwPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY2FyZC1ibG9jayBwLXQtMTZcIlxuICAgICAgICAgICpuZ0lmPVwiZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5zb2Z0d2FyZT8ubGVuZ3RoID09PSAwXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjOHktdWktZW1wdHktc3RhdGVcbiAgICAgICAgICAgIGljb249XCJjOHktdG9vbHNcIlxuICAgICAgICAgICAgW2hvcml6b250YWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ05vIHNvZnR3YXJlIGRlZmluZWQuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgPjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIHAtdC0wXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQWRkIHNvZnR3YXJlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG0tYi0wXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhZGRTb2Z0d2FyZSgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjOHlJY29uPVwicGx1cy1jaXJjbGVcIj48L2k+XG4gICAgICAgICAgICB7eyAnQWRkIHNvZnR3YXJlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgc2VwYXJhdG9yLXRvcC1ib3R0b20gYmctY29tcG9uZW50IHN0aWNreS10b3BcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1pY29uXCI+XG4gICAgICAgICAgICA8aSBbYzh5SWNvbl09XCInZ2VhcnMnXCIgY2xhc3M9XCJjOHktaWNvbi1kdW9jb2xvclwiPjwvaT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZVwiIHRyYW5zbGF0ZT5Db25maWd1cmF0aW9uPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjYXJkLWJsb2NrIHAtdC0wXCJcbiAgICAgICAgICAqbmdJZj1cImRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuY29uZmlndXJhdGlvbj8ubGVuZ3RoID4gMFwiXG4gICAgICAgID5cbiAgICAgICAgICA8Yzh5LWxpc3QtZ3JvdXA+XG4gICAgICAgICAgICA8Yzh5LWxpICpuZ0Zvcj1cImxldCBjb25maWd1cmF0aW9uIG9mIGRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuY29uZmlndXJhdGlvblwiPlxuICAgICAgICAgICAgICA8Yzh5LWxpLWljb24+XG4gICAgICAgICAgICAgICAgPGkgW2M4eUljb25dPVwiJ2dlYXJzJ1wiPjwvaT5cbiAgICAgICAgICAgICAgPC9jOHktbGktaWNvbj5cbiAgICAgICAgICAgICAgPGM4eS1saS1ib2R5IGNsYXNzPVwiY29udGVudC1mbGV4LTUwXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIiB0aXRsZT1cInt7IGNvbmZpZ3VyYXRpb24ubmFtZSB9fVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBjb25maWd1cmF0aW9uLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTUgZC1mbGV4IGEtaS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwgbGFiZWwtaW5mb1wiPnt7IGNvbmZpZ3VyYXRpb24udHlwZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRhbmdlciBidG4teHMgdmlzaWJsZS14cyBtLWwtYXV0byBtLXItOCBtLXQtOFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdSZW1vdmVgY29uZmlndXJhdGlvbmAnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUl0ZW0oY29uZmlndXJhdGlvbiwgJ2NvbmZpZ3VyYXRpb24nKVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpIGM4eUljb249XCJtaW51cy1jaXJjbGVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdSZW1vdmVgY29uZmlndXJhdGlvbmAnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1sLWF1dG8gcC1yLTggaGlkZGVuLXhzXCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kb3Qgc2hvd09uSG92ZXIgdGV4dC1kYW5nZXJcIlxuICAgICAgICAgICAgICAgICAgICB0b29sdGlwPVwie3sgJ1JlbW92ZWBjb25maWd1cmF0aW9uYCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidSZW1vdmVgY29uZmlndXJhdGlvbmAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVJdGVtKGNvbmZpZ3VyYXRpb24sICdjb25maWd1cmF0aW9uJylcIlxuICAgICAgICAgICAgICAgICAgICBbZGVsYXldPVwiNTAwXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cIm1pbnVzLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2M4eS1saS1ib2R5PlxuICAgICAgICAgICAgPC9jOHktbGk+XG4gICAgICAgICAgPC9jOHktbGlzdC1ncm91cD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNhcmQtYmxvY2sgcC10LTE2XCJcbiAgICAgICAgICAqbmdJZj1cImRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuY29uZmlndXJhdGlvbj8ubGVuZ3RoID09PSAwXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjOHktdWktZW1wdHktc3RhdGVcbiAgICAgICAgICAgIGljb249XCJnZWFyc1wiXG4gICAgICAgICAgICBbaG9yaXpvbnRhbF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCInTm8gY29uZmlndXJhdGlvbiBkZWZpbmVkLicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgID48L2M4eS11aS1lbXB0eS1zdGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBwLXQtMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXQtOFwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBZGQgY29uZmlndXJhdGlvbicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgbS1iLTBcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkQ29uZmlndXJhdGlvbigpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cInBsdXMtY2lyY2xlXCI+PC9pPlxuICAgICAgICAgICAgICB7eyAnQWRkIGNvbmZpZ3VyYXRpb24nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -34,7 +34,7 @@ export class KpiWidgetViewComponent {
|
|
|
34
34
|
this.assignContextFromContextDashboard(datapoint);
|
|
35
35
|
const latestMeasurement$ = this.getLatestMeasurement$(datapoint);
|
|
36
36
|
const lastTwoValues$ = this.getLastTwoValuesOfObservable$(latestMeasurement$);
|
|
37
|
-
const previousValue$ = lastTwoValues$.pipe(map(
|
|
37
|
+
const previousValue$ = lastTwoValues$.pipe(map(([previousVal]) => previousVal), startWith(undefined));
|
|
38
38
|
const unit$ = latestMeasurement$.pipe(map(latestMeasurementValue => datapoint.unit || latestMeasurementValue.unit || ''), startWith(''), distinctUntilChanged());
|
|
39
39
|
return combineLatest([
|
|
40
40
|
latestMeasurement$,
|
|
@@ -131,4 +131,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
131
131
|
}] }]; }, propDecorators: { config: [{
|
|
132
132
|
type: Input
|
|
133
133
|
}] } });
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3BpLXdpZGdldC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3dpZGdldHMva3BpLXdpZGdldC9rcGktd2lkZ2V0LXZpZXcva3BpLXdpZGdldC12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3dpZGdldHMva3BpLXdpZGdldC9rcGktd2lkZ2V0LXZpZXcva3BpLXdpZGdldC12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN4RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7OztBQVNsRixJQUFLLFVBSUo7QUFKRCxXQUFLLFVBQVU7SUFDYixvQ0FBc0IsQ0FBQTtJQUN0QixzQ0FBd0IsQ0FBQTtJQUN4QiwwQkFBWSxDQUFBO0FBQ2QsQ0FBQyxFQUpJLFVBQVUsS0FBVixVQUFVLFFBSWQ7QUFPRCxNQUFNLE9BQU8sc0JBQXNCO0lBYWpDLFlBQ1UsbUJBQStDLEVBQ25DLFNBQW9DO1FBRGhELHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBNEI7UUFDbkMsY0FBUyxHQUFULFNBQVMsQ0FBMkI7UUFkakQsV0FBTSxHQUFvQixFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUN0RCxXQUFNLEdBTUQsS0FBSyxDQUFDO1FBRVgsOERBQThEO1FBQzlELHdCQUFtQixHQUFHLEtB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QUM7OzBCQWlCcEMsUUFBUTs0Q0FkRixNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNZWFzdXJlbWVudFJlYWx0aW1lU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgS1BJRGV0YWlscyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZGF0YXBvaW50LXNlbGVjdG9yJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE5FVkVSLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHBhaXJ3aXNlLCBzdGFydFdpdGgsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbnRleHREYXNoYm9hcmRDb21wb25lbnQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2NvbnRleHQtZGFzaGJvYXJkJztcbmltcG9ydCB7IEtwaVdpZGdldENvbmZpZyB9IGZyb20gJy4uL2twaS13aWRnZXQubW9kZWwnO1xuXG5pbnRlcmZhY2UgTWVhc3VyZW1lbnRWYWx1ZSB7XG4gIHVuaXQ/OiBzdHJpbmc7XG4gIHZhbHVlOiBudW1iZXI7XG4gIGRhdGU6IHN0cmluZztcbn1cblxuZW51bSBDb2xvckNsYXNzIHtcbiAgZGFuZ2VyID0gJ3RleHQtZGFuZ2VyJyxcbiAgd2FybmluZyA9ICd0ZXh0LXdhcm5pbmcnLFxuICB1bmtub3duID0gJydcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWtwaS13aWRnZXQtdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9rcGktd2lkZ2V0LXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtNZWFzdXJlbWVudFJlYWx0aW1lU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgS3BpV2lkZ2V0Vmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGNvbmZpZzogS3BpV2lkZ2V0Q29uZmlnID0geyBkYXRhcG9pbnRzOiBbXSB9O1xuICBzdGF0ZSQ6IE9ic2VydmFibGU8e1xuICAgIGxhdGVzdE1lYXN1cmVtZW50OiBNZWFzdXJlbWVudFZhbHVlO1xuICAgIHByZXZpb3VzVmFsdWU6IE1lYXN1cmVtZW50VmFsdWU7XG4gICAgdHJlbmQ6IHN0cmluZztcbiAgICB1bml0OiBzdHJpbmc7XG4gICAgY29sb3JDbGFzczogQ29sb3JDbGFzcztcbiAgfT4gPSBORVZFUjtcblxuICAvLyB1c2VkIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBsb2FkaW5nIHN0YXRlIGFuZCBlbXB0eSBzdGF0ZVxuICBub0RhdGFJbml0aWFsbHlJbkRCID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtZWFzdXJlbWVudFJlYWx0aW1lOiBNZWFzdXJlbWVudFJlYWx0aW1lU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGRhc2hib2FyZDogQ29udGV4dERhc2hib2FyZENvbXBvbmVudFxuICApIHt9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgZGF0YXBvaW50cyA9IHRoaXMuY29uZmlnLmRhdGFwb2ludHMgfHwgW107XG4gICAgY29uc3QgZGF0YXBvaW50OiBLUElEZXRhaWxzID0gZGF0YXBvaW50cy5maW5kKHRtcCA9PiB0bXAuX19hY3RpdmUpO1xuICAgIGlmICghZGF0YXBvaW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZSQgPSB0aGlzLnNldHVwT2JzZXJ2YWJsZShkYXRhcG9pbnQpO1xuICB9XG5cbiAgc2V0dXBPYnNlcnZhYmxlKGRhdGFwb2ludDogS1BJRGV0YWlscyk6IE9ic2VydmFibGU8e1xuICAgIGxhdGVzdE1lYXN1cmVtZW50OiBNZWFzdXJlbWVudFZhbHVlO1xuICAgIHByZXZpb3VzVmFsdWU6IGFueTtcbiAgICB0cmVuZDogc3RyaW5nO1xuICAgIHVuaXQ6IHN0cmluZztcbiAgICBjb2xvckNsYXNzOiBDb2xvckNsYXNzO1xuICB9PiB7XG4gICAgdGhpcy5hc3NpZ25Db250ZXh0RnJvbUNvbnRleHREYXNoYm9hcmQoZGF0YXBvaW50KTtcbiAgICBjb25zdCBsYXRlc3RNZWFzdXJlbWVudCQgPSB0aGlzLmdldExhdGVzdE1lYXN1cmVtZW50JChkYXRhcG9pbnQpO1xuICAgIGNvbnN0IGxhc3RUd29WYWx1ZXMkID0gdGhpcy5nZXRMYXN0VHdvVmFsdWVzT2ZPYnNlcnZhYmxlJChsYXRlc3RNZWFzdXJlbWVudCQpO1xuXG4gICAgY29uc3QgcHJldmlvdXNWYWx1ZSQgPSBsYXN0VHdvVmFsdWVzJC5waXBlKFxuICAgICAgbWFwKHJlcyA9PiByZXNbMF0pLFxuICAgICAgc3RhcnRXaXRoKHVuZGVmaW5lZCBhcyBhbnkpXG4gICAgKTtcblxuICAgIGNvbnN0IHVuaXQkID0gbGF0ZXN0TWVhc3VyZW1lbnQkLnBpcGUoXG4gICAgICBtYXAobGF0ZXN0TWVhc3VyZW1lbnRWYWx1ZSA9PiBkYXRhcG9pbnQudW5pdCB8fCBsYXRlc3RNZWFzdXJlbWVudFZhbHVlLnVuaXQgfHwgJycpLFxuICAgICAgc3RhcnRXaXRoKCcnKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICApO1xuXG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgbGF0ZXN0TWVhc3VyZW1lbnQkLFxuICAgICAgcHJldmlvdXNWYWx1ZSQsXG4gICAgICB0aGlzLmdldFRyZW5kT2ZMYXRlc3RNZWFzdXJlbWVudHMkKGxhc3RUd29WYWx1ZXMkKSxcbiAgICAgIHVuaXQkLFxuICAgICAgdGhpcy5nZXRDb2xvckNsYXNzJChsYXRlc3RNZWFzdXJlbWVudCQsIGRhdGFwb2ludClcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbbGF0ZXN0TWVhc3VyZW1lbnQsIHByZXZpb3VzVmFsdWUsIHRyZW5kLCB1bml0LCBjb2xvckNsYXNzXSkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxhdGVzdE1lYXN1cmVtZW50LFxuICAgICAgICAgIHByZXZpb3VzVmFsdWUsXG4gICAgICAgICAgdHJlbmQsXG4gICAgICAgICAgdW5pdCxcbiAgICAgICAgICBjb2xvckNsYXNzXG4gICAgICAgIH07XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldExhdGVzdE1lYXN1cmVtZW50JChkYXRhcG9pbnQ6IEtQSURldGFpbHMpOiBPYnNlcnZhYmxlPE1lYXN1cmVtZW50VmFsdWU+IHtcbiAgICByZXR1cm4gdGhpcy5tZWFzdXJlbWVudFJlYWx0aW1lXG4gICAgICAubGF0ZXN0VmFsdWVPZlNwZWNpZmljTWVhc3VyZW1lbnQkKFxuICAgICAgICBkYXRhcG9pbnQuZnJhZ21lbnQsXG4gICAgICAgIGRhdGFwb2ludC5zZXJpZXMsXG4gICAgICAgIGRhdGFwb2ludC5fX3RhcmdldCxcbiAgICAgICAgLy8gd2Ugb25seSBuZWVkIHRoZSBsYXN0IHR3byB2YWx1ZXMgaW4gY2FzZSB3ZSB3YW50IHRvIHNob3cgYSB0cmVuZFxuICAgICAgICB0aGlzLmNvbmZpZy5zaG93VHJlbmQgPyAyIDogMSxcbiAgICAgICAgLy8gbnVsbCB3aWxsIGJlIGVtaXR0ZWQgaW4gY2FzZSBubyBtZWFzdXJlbWVudCB3YXMgZm91bmQgaW5pdGlhbGx5XG4gICAgICAgIHRydWVcbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAobWVhc3VyZW1lbnQgPT4ge1xuICAgICAgICAgIGlmICghbWVhc3VyZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMubm9EYXRhSW5pdGlhbGx5SW5EQiA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgZmlsdGVyKG1lYXN1cmVtZW50ID0+ICEhbWVhc3VyZW1lbnQpLFxuICAgICAgICBtYXAobWVhc3VyZW1lbnQgPT4ge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB1bml0OiBtZWFzdXJlbWVudFtkYXRhcG9pbnQuZnJhZ21lbnRdW2RhdGFwb2ludC5zZXJpZXNdLnVuaXQsXG4gICAgICAgICAgICB2YWx1ZTogbWVhc3VyZW1lbnRbZGF0YXBvaW50LmZyYWdtZW50XVtkYXRhcG9pbnQuc2VyaWVzXS52YWx1ZSxcbiAgICAgICAgICAgIGRhdGU6IG1lYXN1cmVtZW50LnRpbWUgYXMgc3RyaW5nXG4gICAgICAgICAgfTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldENvbG9yQ2xhc3MkKFxuICAgIG1lYXN1cmVtZW50QW5kRGF0YXBvaW50Q29tYmluYXRpb24kOiBPYnNlcnZhYmxlPE1lYXN1cmVtZW50VmFsdWU+LFxuICAgIGRhdGFwb2ludDogS1BJRGV0YWlsc1xuICApOiBPYnNlcnZhYmxlPENvbG9yQ2xhc3M+IHtcbiAgICByZXR1cm4gbWVhc3VyZW1lbnRBbmREYXRhcG9pbnRDb21iaW5hdGlvbiQucGlwZShcbiAgICAgIG1hcChsYXRlc3RNZWFzdXJlbWVudFZhbHVlID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaW5SYW5nZU9mKGRhdGFwb2ludCwgbGF0ZXN0TWVhc3VyZW1lbnRWYWx1ZS52YWx1ZSwgJ3JlZFJhbmdlTWluJywgJ3JlZFJhbmdlTWF4JykpIHtcbiAgICAgICAgICByZXR1cm4gQ29sb3JDbGFzcy5kYW5nZXI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5pblJhbmdlT2YoXG4gICAgICAgICAgICBkYXRhcG9pbnQsXG4gICAgICAgICAgICBsYXRlc3RNZWFzdXJlbWVudFZhbHVlLnZhbHVlLFxuICAgICAgICAgICAgJ3llbGxvd1JhbmdlTWluJyxcbiAgICAgICAgICAgICd5ZWxsb3dSYW5nZU1heCdcbiAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBDb2xvckNsYXNzLndhcm5pbmc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gQ29sb3JDbGFzcy51bmtub3duO1xuICAgICAgfSksXG4gICAgICBzdGFydFdpdGgoQ29sb3JDbGFzcy51bmtub3duKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMYXN0VHdvVmFsdWVzT2ZPYnNlcnZhYmxlJDxUPihpbnB1dCQ6IE9ic2VydmFibGU8VD4pOiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgIHJldHVybiBpbnB1dCQucGlwZShwYWlyd2lzZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VHJlbmRPZkxhdGVzdE1lYXN1cmVtZW50cyQobGF0ZXN0TWVhc3VyZW1lbnQkOiBPYnNlcnZhYmxlPE1lYXN1cmVtZW50VmFsdWVbXT4pIHtcbiAgICByZXR1cm4gbGF0ZXN0TWVhc3VyZW1lbnQkLnBpcGUoXG4gICAgICBtYXAocmVzID0+IHtcbiAgICAgICAgaWYgKHJlcy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICBjb25zdCBvbGRWYWx1ZSA9IHJlc1swXS52YWx1ZTtcbiAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHJlc1sxXS52YWx1ZTtcbiAgICAgICAgICBpZiAob2xkVmFsdWUgPCBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuICc0NWRlZyc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChvbGRWYWx1ZSA+IG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gJzEzNWRlZyc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnOTBkZWcnO1xuICAgICAgfSksXG4gICAgICBzdGFydFdpdGgoJzkwZGVnJyksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5SYW5nZU9mKFxuICAgIGRhdGFwb2ludDogS1BJRGV0YWlscyxcbiAgICBtZWFzdXJlbWVudFZhbHVlOiBudW1iZXIsXG4gICAgbWluQXR0cmlidXRlOiBzdHJpbmcsXG4gICAgbWF4QXR0cmlidXRlOiBzdHJpbmdcbiAgKTogYm9vbGVhbiB7XG4gICAgaWYgKFxuICAgICAgdHlwZW9mIGRhdGFwb2ludFttaW5BdHRyaWJ1dGVdID09PSAnbnVtYmVyJyAmJlxuICAgICAgdHlwZW9mIGRhdGFwb2ludFttYXhBdHRyaWJ1dGVdID09PSAnbnVtYmVyJ1xuICAgICkge1xuICAgICAgaWYgKFxuICAgICAgICBtZWFzdXJlbWVudFZhbHVlID49IGRhdGFwb2ludFttaW5BdHRyaWJ1dGVdICYmXG4gICAgICAgIG1lYXN1cmVtZW50VmFsdWUgPCBkYXRhcG9pbnRbbWF4QXR0cmlidXRlXVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGFzc2lnbkNvbnRleHRGcm9tQ29udGV4dERhc2hib2FyZChkYXRhcG9pbnQ6IEtQSURldGFpbHMpIHtcbiAgICBpZiAoIXRoaXMuZGFzaGJvYXJkPy5pc0RldmljZVR5cGVEYXNoYm9hcmQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZGFzaGJvYXJkPy5jb250ZXh0O1xuICAgIGlmIChjb250ZXh0Py5pZCkge1xuICAgICAgY29uc3QgeyBuYW1lLCBpZCB9ID0gY29udGV4dDtcbiAgICAgIGRhdGFwb2ludC5fX3RhcmdldCA9IHsgbmFtZSwgaWQgfTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJrcGktd2lkZ2V0X19jb250YWluZXIgZC1mbGV4IGQtY29sIGZpdC1oIGZpdC13IGEtaS1jZW50ZXIgai1jLWNlbnRlclwiXG4gICpuZ0lmPVwic3RhdGUkIHwgYXN5bmMgYXMgbGFzdFN0YXRlOyBlbHNlIG5vTWVhc3VyZW1lbnRGb3VuZFwiXG4+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggYS1pLWNlbnRlciBqLWMtY2VudGVyIGZpdC13XCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJtLXItMTYgZmxleC1uby1zaHJpbmsgdGV4dC1tdXRlZFwiXG4gICAgICBbbmdDbGFzc109XCJsYXN0U3RhdGUuY29sb3JDbGFzc1wiXG4gICAgICAqbmdJZj1cImNvbmZpZy5pY29uICYmIGNvbmZpZy5zaG93SWNvblwiXG4gICAgPlxuICAgICAgPGkgY2xhc3M9XCJpY29uLTMyXCIgW2M4eUljb25dPVwiY29uZmlnLmljb25cIj48L2k+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIj5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwidGV4dC10cnVuY2F0ZSB0ZXh0LW1lZGl1bVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cImxhc3RTdGF0ZS5jb2xvckNsYXNzXCJcbiAgICAgICAgW25nU3R5bGVdPVwieyAnZm9udC1zaXplJzogKGNvbmZpZy5mb250U2l6ZSB8fCAnMzYnKSArICdweCcgfVwiXG4gICAgICAgIHRpdGxlPVwie3tcbiAgICAgICAgICBsYXN0U3RhdGUuY29sb3JDbGFzcyA9PT0gJ3RleHQtZGFuZ2VyJ1xuICAgICAgICAgICAgPyAoJ1dpdGhpbiByZWQgcmFuZ2U6JyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgIDogbGFzdFN0YXRlLmNvbG9yQ2xhc3MgPT09ICd0ZXh0LXdhcm5pbmcnXG4gICAgICAgICAgICA/ICgnV2l0aGluIHllbGxvdyByYW5nZTonIHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgOiAnJ1xuICAgICAgICB9fSB7e1xuICAgICAgICAgIGxhc3RTdGF0ZS5sYXRlc3RNZWFzdXJlbWVudC52YWx1ZVxuICAgICAgICAgICAgfCBudW1iZXJcbiAgICAgICAgICAgICAgOiAnMS4nICtcbiAgICAgICAgICAgICAgICAgIChjb25maWcubnVtYmVyT2ZEZWNpbWFsUGxhY2VzIHx8ICcwJykgK1xuICAgICAgICAgICAgICAgICAgJy0nICtcbiAgICAgICAgICAgICAgICAgIChjb25maWcubnVtYmVyT2ZEZWNpbWFsUGxhY2VzIHx8ICcwJylcbiAgICAgICAgfX0ge3sgbGFzdFN0YXRlLnVuaXQgfHwgJycgfX1cIlxuICAgICAgPlxuICAgICAgICB7e1xuICAgICAgICAgIGxhc3RTdGF0ZS5sYXRlc3RNZWFzdXJlbWVudC52YWx1ZVxuICAgICAgICAgICAgfCBudW1iZXJcbiAgICAgICAgICAgICAgOiAnMS4nICtcbiAgICAgICAgICAgICAgICAgIChjb25maWcubnVtYmVyT2ZEZWNpbWFsUGxhY2VzIHx8ICcwJykgK1xuICAgICAgICAgICAgICAgICAgJy0nICtcbiAgICAgICAgICAgICAgICAgIChjb25maWcubnVtYmVyT2ZEZWNpbWFsUGxhY2VzIHx8ICcwJylcbiAgICAgICAgfX1cbiAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1yZWd1bGFyXCI+e3sgbGFzdFN0YXRlLnVuaXQgfHwgJycgfX08L3NtYWxsPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZG90IGRvdC1pbmZvIGRvdC0zMCBtLWwtMTYgZmxleC1uby1zaHJpbmtcIlxuICAgICAgKm5nSWY9XCJjb25maWc/LnNob3dUcmVuZCAmJiBsYXN0U3RhdGUucHJldmlvdXNWYWx1ZSBhcyBwcmV2aW91c1ZhbHVlXCJcbiAgICA+XG4gICAgICA8aVxuICAgICAgICBjbGFzcz1cImljb24tMjBcIlxuICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgKCdQcmV2aW91cyB2YWx1ZScgfCB0cmFuc2xhdGUpICtcbiAgICAgICAgICAnOiAnICtcbiAgICAgICAgICAocHJldmlvdXNWYWx1ZS52YWx1ZVxuICAgICAgICAgICAgfCBudW1iZXJcbiAgICAgICAgICAgICAgOiAnMS4nICtcbiAgICAgICAgICAgICAgICAgIChjb25maWcubnVtYmVyT2ZEZWNpbWFsUGxhY2VzIHx8ICcwJykgK1xuICAgICAgICAgICAgICAgICAgJy0nICtcbiAgICAgICAgICAgICAgICAgIChjb25maWcubnVtYmVyT2ZEZWNpbWFsUGxhY2VzIHx8ICcwJykpICtcbiAgICAgICAgICAnICgnICtcbiAgICAgICAgICAocHJldmlvdXNWYWx1ZS5kYXRlIHwgZGF0ZTogJ21lZGl1bScpICtcbiAgICAgICAgICAnKSdcbiAgICAgICAgXCJcbiAgICAgICAgYzh5SWNvbj1cImFycm93LWRvdHRlZC11cFwiXG4gICAgICAgIFtuZ1N0eWxlXT1cInsgdHJhbnNmb3JtOiAncm90YXRlKCcgKyBsYXN0U3RhdGUudHJlbmQgKyAnKScgfVwiXG4gICAgICA+PC9pPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImQtZmxleCBqLWMtY2VudGVyXCI+XG4gICAgPHAgKm5nSWY9XCJjb25maWc/LnNob3dUaW1lc3RhbXBcIiBjbGFzcz1cImljb24tZmxleCB0ZXh0LWNlbnRlciB0ZXh0LW11dGVkIHNtYWxsXCI+XG4gICAgICA8aSBjOHlJY29uPVwiY2FsZW5kYXJcIj48L2k+XG4gICAgICB7eyBsYXN0U3RhdGUubGF0ZXN0TWVhc3VyZW1lbnQuZGF0ZSB8IGRhdGU6ICdtZWRpdW0nIH19XG4gICAgPC9wPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI25vTWVhc3VyZW1lbnRGb3VuZD5cbiAgPGRpdiBjbGFzcz1cImQtZmxleCBmaXQtaCBmaXQtdyBqLWMtY2VudGVyIGEtaS1jZW50ZXJcIj5cbiAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICAqbmdJZj1cIm5vRGF0YUluaXRpYWxseUluREJcIlxuICAgICAgY2xhc3M9XCJmaXQtd1wiXG4gICAgICBbaWNvbl09XCInbGluZS1jaGFydCdcIlxuICAgICAgW3RpdGxlXT1cIidObyBtZWFzdXJlbWVudCB0byBkaXNwbGF5LicgfCB0cmFuc2xhdGVcIlxuICAgICAgW3N1YnRpdGxlXT1cIidXYWl0aW5nIGZvciBtZWFzdXJlbWVudHMgdG8gYmUgY3JlYXRlZC4nIHwgdHJhbnNsYXRlXCJcbiAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgID48L2M4eS11aS1lbXB0eS1zdGF0ZT5cbiAgICA8Yzh5LWxvYWRpbmcgKm5nSWY9XCIhbm9EYXRhSW5pdGlhbGx5SW5EQlwiPjwvYzh5LWxvYWRpbmc+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3BpLXdpZGdldC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3dpZGdldHMva3BpLXdpZGdldC9rcGktd2lkZ2V0LXZpZXcva3BpLXdpZGdldC12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3dpZGdldHMva3BpLXdpZGdldC9rcGktd2lkZ2V0LXZpZXcva3BpLXdpZGdldC12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN4RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7OztBQVNsRixJQUFLLFVBSUo7QUFKRCxXQUFLLFVBQVU7SUFDYixvQ0FBc0IsQ0FBQTtJQUN0QixzQ0FBd0IsQ0FBQTtJQUN4QiwwQkFBWSxDQUFBO0FBQ2QsQ0FBQyxFQUpJLFVBQVUsS0FBVixVQUFVLFFBSWQ7QUFPRCxNQUFNLE9BQU8sc0JBQXNCO0lBYWpDLFlBQ1UsbUJBQStDLEVBQ25DLFNBQW9DO1FBRGhELHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBNEI7UUFDbkMsY0FBUyxHQUFULFNBQVMsQ0FBMkI7UUFkakQsV0FBTSxHQUFvQixFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUN0RCxXQUFNLEdBTUQsS0FBSyxDQUFDO1FBRVgsOERBQThEO1FBQzlELHdCQUFtQixHQUFHLEtB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QUM7OzBCQWlCcEMsUUFBUTs0Q0FkRixNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNZWFzdXJlbWVudFJlYWx0aW1lU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgS1BJRGV0YWlscyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZGF0YXBvaW50LXNlbGVjdG9yJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE5FVkVSLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHBhaXJ3aXNlLCBzdGFydFdpdGgsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbnRleHREYXNoYm9hcmRDb21wb25lbnQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2NvbnRleHQtZGFzaGJvYXJkJztcbmltcG9ydCB7IEtwaVdpZGdldENvbmZpZyB9IGZyb20gJy4uL2twaS13aWRnZXQubW9kZWwnO1xuXG5pbnRlcmZhY2UgTWVhc3VyZW1lbnRWYWx1ZSB7XG4gIHVuaXQ/OiBzdHJpbmc7XG4gIHZhbHVlOiBudW1iZXI7XG4gIGRhdGU6IHN0cmluZztcbn1cblxuZW51bSBDb2xvckNsYXNzIHtcbiAgZGFuZ2VyID0gJ3RleHQtZGFuZ2VyJyxcbiAgd2FybmluZyA9ICd0ZXh0LXdhcm5pbmcnLFxuICB1bmtub3duID0gJydcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWtwaS13aWRnZXQtdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9rcGktd2lkZ2V0LXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtNZWFzdXJlbWVudFJlYWx0aW1lU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgS3BpV2lkZ2V0Vmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGNvbmZpZzogS3BpV2lkZ2V0Q29uZmlnID0geyBkYXRhcG9pbnRzOiBbXSB9O1xuICBzdGF0ZSQ6IE9ic2VydmFibGU8e1xuICAgIGxhdGVzdE1lYXN1cmVtZW50OiBNZWFzdXJlbWVudFZhbHVlO1xuICAgIHByZXZpb3VzVmFsdWU6IE1lYXN1cmVtZW50VmFsdWUgfCB1bmRlZmluZWQ7XG4gICAgdHJlbmQ6IHN0cmluZztcbiAgICB1bml0OiBzdHJpbmc7XG4gICAgY29sb3JDbGFzczogQ29sb3JDbGFzcztcbiAgfT4gPSBORVZFUjtcblxuICAvLyB1c2VkIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBsb2FkaW5nIHN0YXRlIGFuZCBlbXB0eSBzdGF0ZVxuICBub0RhdGFJbml0aWFsbHlJbkRCID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtZWFzdXJlbWVudFJlYWx0aW1lOiBNZWFzdXJlbWVudFJlYWx0aW1lU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGRhc2hib2FyZDogQ29udGV4dERhc2hib2FyZENvbXBvbmVudFxuICApIHt9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgZGF0YXBvaW50cyA9IHRoaXMuY29uZmlnLmRhdGFwb2ludHMgfHwgW107XG4gICAgY29uc3QgZGF0YXBvaW50OiBLUElEZXRhaWxzID0gZGF0YXBvaW50cy5maW5kKHRtcCA9PiB0bXAuX19hY3RpdmUpO1xuICAgIGlmICghZGF0YXBvaW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZSQgPSB0aGlzLnNldHVwT2JzZXJ2YWJsZShkYXRhcG9pbnQpO1xuICB9XG5cbiAgc2V0dXBPYnNlcnZhYmxlKGRhdGFwb2ludDogS1BJRGV0YWlscyk6IE9ic2VydmFibGU8e1xuICAgIGxhdGVzdE1lYXN1cmVtZW50OiBNZWFzdXJlbWVudFZhbHVlO1xuICAgIHByZXZpb3VzVmFsdWU6IE1lYXN1cmVtZW50VmFsdWUgfCB1bmRlZmluZWQ7XG4gICAgdHJlbmQ6IHN0cmluZztcbiAgICB1bml0OiBzdHJpbmc7XG4gICAgY29sb3JDbGFzczogQ29sb3JDbGFzcztcbiAgfT4ge1xuICAgIHRoaXMuYXNzaWduQ29udGV4dEZyb21Db250ZXh0RGFzaGJvYXJkKGRhdGFwb2ludCk7XG4gICAgY29uc3QgbGF0ZXN0TWVhc3VyZW1lbnQkID0gdGhpcy5nZXRMYXRlc3RNZWFzdXJlbWVudCQoZGF0YXBvaW50KTtcbiAgICBjb25zdCBsYXN0VHdvVmFsdWVzJCA9IHRoaXMuZ2V0TGFzdFR3b1ZhbHVlc09mT2JzZXJ2YWJsZSQobGF0ZXN0TWVhc3VyZW1lbnQkKTtcblxuICAgIGNvbnN0IHByZXZpb3VzVmFsdWUkID0gbGFzdFR3b1ZhbHVlcyQucGlwZShcbiAgICAgIG1hcCgoW3ByZXZpb3VzVmFsXSkgPT4gcHJldmlvdXNWYWwpLFxuICAgICAgc3RhcnRXaXRoKHVuZGVmaW5lZCBhcyBNZWFzdXJlbWVudFZhbHVlIHwgdW5kZWZpbmVkKVxuICAgICk7XG5cbiAgICBjb25zdCB1bml0JCA9IGxhdGVzdE1lYXN1cmVtZW50JC5waXBlKFxuICAgICAgbWFwKGxhdGVzdE1lYXN1cmVtZW50VmFsdWUgPT4gZGF0YXBvaW50LnVuaXQgfHwgbGF0ZXN0TWVhc3VyZW1lbnRWYWx1ZS51bml0IHx8ICcnKSxcbiAgICAgIHN0YXJ0V2l0aCgnJyksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgKTtcblxuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIGxhdGVzdE1lYXN1cmVtZW50JCxcbiAgICAgIHByZXZpb3VzVmFsdWUkLFxuICAgICAgdGhpcy5nZXRUcmVuZE9mTGF0ZXN0TWVhc3VyZW1lbnRzJChsYXN0VHdvVmFsdWVzJCksXG4gICAgICB1bml0JCxcbiAgICAgIHRoaXMuZ2V0Q29sb3JDbGFzcyQobGF0ZXN0TWVhc3VyZW1lbnQkLCBkYXRhcG9pbnQpXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW2xhdGVzdE1lYXN1cmVtZW50LCBwcmV2aW91c1ZhbHVlLCB0cmVuZCwgdW5pdCwgY29sb3JDbGFzc10pID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsYXRlc3RNZWFzdXJlbWVudCxcbiAgICAgICAgICBwcmV2aW91c1ZhbHVlLFxuICAgICAgICAgIHRyZW5kLFxuICAgICAgICAgIHVuaXQsXG4gICAgICAgICAgY29sb3JDbGFzc1xuICAgICAgICB9O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMYXRlc3RNZWFzdXJlbWVudCQoZGF0YXBvaW50OiBLUElEZXRhaWxzKTogT2JzZXJ2YWJsZTxNZWFzdXJlbWVudFZhbHVlPiB7XG4gICAgcmV0dXJuIHRoaXMubWVhc3VyZW1lbnRSZWFsdGltZVxuICAgICAgLmxhdGVzdFZhbHVlT2ZTcGVjaWZpY01lYXN1cmVtZW50JChcbiAgICAgICAgZGF0YXBvaW50LmZyYWdtZW50LFxuICAgICAgICBkYXRhcG9pbnQuc2VyaWVzLFxuICAgICAgICBkYXRhcG9pbnQuX190YXJnZXQsXG4gICAgICAgIC8vIHdlIG9ubHkgbmVlZCB0aGUgbGFzdCB0d28gdmFsdWVzIGluIGNhc2Ugd2Ugd2FudCB0byBzaG93IGEgdHJlbmRcbiAgICAgICAgdGhpcy5jb25maWcuc2hvd1RyZW5kID8gMiA6IDEsXG4gICAgICAgIC8vIG51bGwgd2lsbCBiZSBlbWl0dGVkIGluIGNhc2Ugbm8gbWVhc3VyZW1lbnQgd2FzIGZvdW5kIGluaXRpYWxseVxuICAgICAgICB0cnVlXG4gICAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKG1lYXN1cmVtZW50ID0+IHtcbiAgICAgICAgICBpZiAoIW1lYXN1cmVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLm5vRGF0YUluaXRpYWxseUluREIgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIGZpbHRlcihtZWFzdXJlbWVudCA9PiAhIW1lYXN1cmVtZW50KSxcbiAgICAgICAgbWFwKG1lYXN1cmVtZW50ID0+IHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdW5pdDogbWVhc3VyZW1lbnRbZGF0YXBvaW50LmZyYWdtZW50XVtkYXRhcG9pbnQuc2VyaWVzXS51bml0LFxuICAgICAgICAgICAgdmFsdWU6IG1lYXN1cmVtZW50W2RhdGFwb2ludC5mcmFnbWVudF1bZGF0YXBvaW50LnNlcmllc10udmFsdWUsXG4gICAgICAgICAgICBkYXRlOiBtZWFzdXJlbWVudC50aW1lIGFzIHN0cmluZ1xuICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb2xvckNsYXNzJChcbiAgICBtZWFzdXJlbWVudEFuZERhdGFwb2ludENvbWJpbmF0aW9uJDogT2JzZXJ2YWJsZTxNZWFzdXJlbWVudFZhbHVlPixcbiAgICBkYXRhcG9pbnQ6IEtQSURldGFpbHNcbiAgKTogT2JzZXJ2YWJsZTxDb2xvckNsYXNzPiB7XG4gICAgcmV0dXJuIG1lYXN1cmVtZW50QW5kRGF0YXBvaW50Q29tYmluYXRpb24kLnBpcGUoXG4gICAgICBtYXAobGF0ZXN0TWVhc3VyZW1lbnRWYWx1ZSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmluUmFuZ2VPZihkYXRhcG9pbnQsIGxhdGVzdE1lYXN1cmVtZW50VmFsdWUudmFsdWUsICdyZWRSYW5nZU1pbicsICdyZWRSYW5nZU1heCcpKSB7XG4gICAgICAgICAgcmV0dXJuIENvbG9yQ2xhc3MuZGFuZ2VyO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMuaW5SYW5nZU9mKFxuICAgICAgICAgICAgZGF0YXBvaW50LFxuICAgICAgICAgICAgbGF0ZXN0TWVhc3VyZW1lbnRWYWx1ZS52YWx1ZSxcbiAgICAgICAgICAgICd5ZWxsb3dSYW5nZU1pbicsXG4gICAgICAgICAgICAneWVsbG93UmFuZ2VNYXgnXG4gICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gQ29sb3JDbGFzcy53YXJuaW5nO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIENvbG9yQ2xhc3MudW5rbm93bjtcbiAgICAgIH0pLFxuICAgICAgc3RhcnRXaXRoKENvbG9yQ2xhc3MudW5rbm93biksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TGFzdFR3b1ZhbHVlc09mT2JzZXJ2YWJsZSQ8VD4oaW5wdXQkOiBPYnNlcnZhYmxlPFQ+KTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICByZXR1cm4gaW5wdXQkLnBpcGUocGFpcndpc2UoKSk7XG4gIH1cblxuICBwcml2YXRlIGdldFRyZW5kT2ZMYXRlc3RNZWFzdXJlbWVudHMkKGxhdGVzdE1lYXN1cmVtZW50JDogT2JzZXJ2YWJsZTxNZWFzdXJlbWVudFZhbHVlW10+KSB7XG4gICAgcmV0dXJuIGxhdGVzdE1lYXN1cmVtZW50JC5waXBlKFxuICAgICAgbWFwKHJlcyA9PiB7XG4gICAgICAgIGlmIChyZXMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgY29uc3Qgb2xkVmFsdWUgPSByZXNbMF0udmFsdWU7XG4gICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSByZXNbMV0udmFsdWU7XG4gICAgICAgICAgaWYgKG9sZFZhbHVlIDwgbmV3VmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiAnNDVkZWcnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAob2xkVmFsdWUgPiBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuICcxMzVkZWcnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJzkwZGVnJztcbiAgICAgIH0pLFxuICAgICAgc3RhcnRXaXRoKCc5MGRlZycpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGluUmFuZ2VPZihcbiAgICBkYXRhcG9pbnQ6IEtQSURldGFpbHMsXG4gICAgbWVhc3VyZW1lbnRWYWx1ZTogbnVtYmVyLFxuICAgIG1pbkF0dHJpYnV0ZTogc3RyaW5nLFxuICAgIG1heEF0dHJpYnV0ZTogc3RyaW5nXG4gICk6IGJvb2xlYW4ge1xuICAgIGlmIChcbiAgICAgIHR5cGVvZiBkYXRhcG9pbnRbbWluQXR0cmlidXRlXSA9PT0gJ251bWJlcicgJiZcbiAgICAgIHR5cGVvZiBkYXRhcG9pbnRbbWF4QXR0cmlidXRlXSA9PT0gJ251bWJlcidcbiAgICApIHtcbiAgICAgIGlmIChcbiAgICAgICAgbWVhc3VyZW1lbnRWYWx1ZSA+PSBkYXRhcG9pbnRbbWluQXR0cmlidXRlXSAmJlxuICAgICAgICBtZWFzdXJlbWVudFZhbHVlIDwgZGF0YXBvaW50W21heEF0dHJpYnV0ZV1cbiAgICAgICkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3NpZ25Db250ZXh0RnJvbUNvbnRleHREYXNoYm9hcmQoZGF0YXBvaW50OiBLUElEZXRhaWxzKSB7XG4gICAgaWYgKCF0aGlzLmRhc2hib2FyZD8uaXNEZXZpY2VUeXBlRGFzaGJvYXJkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmRhc2hib2FyZD8uY29udGV4dDtcbiAgICBpZiAoY29udGV4dD8uaWQpIHtcbiAgICAgIGNvbnN0IHsgbmFtZSwgaWQgfSA9IGNvbnRleHQ7XG4gICAgICBkYXRhcG9pbnQuX190YXJnZXQgPSB7IG5hbWUsIGlkIH07XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwia3BpLXdpZGdldF9fY29udGFpbmVyIGQtZmxleCBkLWNvbCBmaXQtaCBmaXQtdyBhLWktY2VudGVyIGotYy1jZW50ZXJcIlxuICAqbmdJZj1cInN0YXRlJCB8IGFzeW5jIGFzIGxhc3RTdGF0ZTsgZWxzZSBub01lYXN1cmVtZW50Rm91bmRcIlxuPlxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGEtaS1jZW50ZXIgai1jLWNlbnRlciBmaXQtd1wiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibS1yLTE2IGZsZXgtbm8tc2hyaW5rIHRleHQtbXV0ZWRcIlxuICAgICAgW25nQ2xhc3NdPVwibGFzdFN0YXRlLmNvbG9yQ2xhc3NcIlxuICAgICAgKm5nSWY9XCJjb25maWcuaWNvbiAmJiBjb25maWcuc2hvd0ljb25cIlxuICAgID5cbiAgICAgIDxpIGNsYXNzPVwiaWNvbi0zMlwiIFtjOHlJY29uXT1cImNvbmZpZy5pY29uXCI+PC9pPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGUgdGV4dC1tZWRpdW1cIlxuICAgICAgICBbbmdDbGFzc109XCJsYXN0U3RhdGUuY29sb3JDbGFzc1wiXG4gICAgICAgIFtuZ1N0eWxlXT1cInsgJ2ZvbnQtc2l6ZSc6IChjb25maWcuZm9udFNpemUgfHwgJzM2JykgKyAncHgnIH1cIlxuICAgICAgICB0aXRsZT1cInt7XG4gICAgICAgICAgbGFzdFN0YXRlLmNvbG9yQ2xhc3MgPT09ICd0ZXh0LWRhbmdlcidcbiAgICAgICAgICAgID8gKCdXaXRoaW4gcmVkIHJhbmdlOicgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICA6IGxhc3RTdGF0ZS5jb2xvckNsYXNzID09PSAndGV4dC13YXJuaW5nJ1xuICAgICAgICAgICAgPyAoJ1dpdGhpbiB5ZWxsb3cgcmFuZ2U6JyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgIDogJydcbiAgICAgICAgfX0ge3tcbiAgICAgICAgICBsYXN0U3RhdGUubGF0ZXN0TWVhc3VyZW1lbnQudmFsdWVcbiAgICAgICAgICAgIHwgbnVtYmVyXG4gICAgICAgICAgICAgIDogJzEuJyArXG4gICAgICAgICAgICAgICAgICAoY29uZmlnLm51bWJlck9mRGVjaW1hbFBsYWNlcyB8fCAnMCcpICtcbiAgICAgICAgICAgICAgICAgICctJyArXG4gICAgICAgICAgICAgICAgICAoY29uZmlnLm51bWJlck9mRGVjaW1hbFBsYWNlcyB8fCAnMCcpXG4gICAgICAgIH19IHt7IGxhc3RTdGF0ZS51bml0IHx8ICcnIH19XCJcbiAgICAgID5cbiAgICAgICAge3tcbiAgICAgICAgICBsYXN0U3RhdGUubGF0ZXN0TWVhc3VyZW1lbnQudmFsdWVcbiAgICAgICAgICAgIHwgbnVtYmVyXG4gICAgICAgICAgICAgIDogJzEuJyArXG4gICAgICAgICAgICAgICAgICAoY29uZmlnLm51bWJlck9mRGVjaW1hbFBsYWNlcyB8fCAnMCcpICtcbiAgICAgICAgICAgICAgICAgICctJyArXG4gICAgICAgICAgICAgICAgICAoY29uZmlnLm51bWJlck9mRGVjaW1hbFBsYWNlcyB8fCAnMCcpXG4gICAgICAgIH19XG4gICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtcmVndWxhclwiPnt7IGxhc3RTdGF0ZS51bml0IHx8ICcnIH19PC9zbWFsbD5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImRvdCBkb3QtaW5mbyBkb3QtMzAgbS1sLTE2IGZsZXgtbm8tc2hyaW5rXCJcbiAgICAgICpuZ0lmPVwiY29uZmlnPy5zaG93VHJlbmQgJiYgbGFzdFN0YXRlLnByZXZpb3VzVmFsdWUgYXMgcHJldmlvdXNWYWx1ZVwiXG4gICAgPlxuICAgICAgPGlcbiAgICAgICAgY2xhc3M9XCJpY29uLTIwXCJcbiAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICgnUHJldmlvdXMgdmFsdWUnIHwgdHJhbnNsYXRlKSArXG4gICAgICAgICAgJzogJyArXG4gICAgICAgICAgKHByZXZpb3VzVmFsdWUudmFsdWVcbiAgICAgICAgICAgIHwgbnVtYmVyXG4gICAgICAgICAgICAgIDogJzEuJyArXG4gICAgICAgICAgICAgICAgICAoY29uZmlnLm51bWJlck9mRGVjaW1hbFBsYWNlcyB8fCAnMCcpICtcbiAgICAgICAgICAgICAgICAgICctJyArXG4gICAgICAgICAgICAgICAgICAoY29uZmlnLm51bWJlck9mRGVjaW1hbFBsYWNlcyB8fCAnMCcpKSArXG4gICAgICAgICAgJyAoJyArXG4gICAgICAgICAgKHByZXZpb3VzVmFsdWUuZGF0ZSB8IGRhdGU6ICdtZWRpdW0nKSArXG4gICAgICAgICAgJyknXG4gICAgICAgIFwiXG4gICAgICAgIGM4eUljb249XCJhcnJvdy1kb3R0ZWQtdXBcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7IHRyYW5zZm9ybTogJ3JvdGF0ZSgnICsgbGFzdFN0YXRlLnRyZW5kICsgJyknIH1cIlxuICAgICAgPjwvaT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggai1jLWNlbnRlclwiPlxuICAgIDxwICpuZ0lmPVwiY29uZmlnPy5zaG93VGltZXN0YW1wXCIgY2xhc3M9XCJpY29uLWZsZXggdGV4dC1jZW50ZXIgdGV4dC1tdXRlZCBzbWFsbFwiPlxuICAgICAgPGkgYzh5SWNvbj1cImNhbGVuZGFyXCI+PC9pPlxuICAgICAge3sgbGFzdFN0YXRlLmxhdGVzdE1lYXN1cmVtZW50LmRhdGUgfCBkYXRlOiAnbWVkaXVtJyB9fVxuICAgIDwvcD5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNub01lYXN1cmVtZW50Rm91bmQ+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggZml0LWggZml0LXcgai1jLWNlbnRlciBhLWktY2VudGVyXCI+XG4gICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgKm5nSWY9XCJub0RhdGFJbml0aWFsbHlJbkRCXCJcbiAgICAgIGNsYXNzPVwiZml0LXdcIlxuICAgICAgW2ljb25dPVwiJ2xpbmUtY2hhcnQnXCJcbiAgICAgIFt0aXRsZV09XCInTm8gbWVhc3VyZW1lbnQgdG8gZGlzcGxheS4nIHwgdHJhbnNsYXRlXCJcbiAgICAgIFtzdWJ0aXRsZV09XCInV2FpdGluZyBmb3IgbWVhc3VyZW1lbnRzIHRvIGJlIGNyZWF0ZWQuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbaG9yaXpvbnRhbF09XCJ0cnVlXCJcbiAgICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG4gICAgPGM4eS1sb2FkaW5nICpuZ0lmPVwiIW5vRGF0YUluaXRpYWxseUluREJcIj48L2M4eS1sb2FkaW5nPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -485,7 +485,9 @@ class DeviceProfileComponent {
|
|
|
485
485
|
return this.queriesUtil.addOrFilter({ deviceType: this.deviceProfile.c8y_Filter.type }, { __not: { __has: `deviceType` } });
|
|
486
486
|
}
|
|
487
487
|
else {
|
|
488
|
-
return this.queriesUtil.addOrFilter({ 'c8y_Filter.type': this.deviceProfile.c8y_Filter.type }, {
|
|
488
|
+
return this.queriesUtil.addOrFilter({ 'c8y_Filter.type': this.deviceProfile.c8y_Filter.type }, {
|
|
489
|
+
__or: [{ 'c8y_Filter.type': '' }, { __not: { __has: `c8y_Filter.type` } }]
|
|
490
|
+
});
|
|
489
491
|
}
|
|
490
492
|
}
|
|
491
493
|
return {};
|