@vgroup/dialbox 0.7.2 → 0.7.4

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.
@@ -100,6 +100,18 @@ export class TwilioService {
100
100
  this.isShowIncomingCall = true;
101
101
  return;
102
102
  }
103
+ call.on('accept', () => {
104
+ console.log('Incoming call answered/accepted');
105
+ });
106
+ call.on('disconnect', () => {
107
+ console.log('Call disconnected');
108
+ });
109
+ call.on('cancel', () => {
110
+ console.log('Caller hung up before answer');
111
+ });
112
+ call.on('reject', () => {
113
+ console.log('Call rejected');
114
+ });
103
115
  this.incomingCallDetail = call;
104
116
  this.isShowIncomingCall = true;
105
117
  });
@@ -277,4 +289,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
277
289
  providedIn: 'root'
278
290
  }]
279
291
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.ExtensionService }]; } });
280
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHdpbGlvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kaWFsYm94L3NyYy9saWIvc2VydmljZS90d2lsaW8uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQVEsTUFBTSxtQkFBbUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7QUFjM0QsTUFBTSxPQUFPLGFBQWE7SUE2Q3hCLFlBQ1UsSUFBZ0IsRUFDaEIsZ0JBQWtDO1FBRGxDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQTdDNUMsMEJBQXFCLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDNUQsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBYyxJQUFJLENBQUMsQ0FBQztRQUNyRCxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBTSxNQUFNLENBQUMsQ0FBQyxDQUFDLGlDQUFpQztRQUd0RixzQkFBaUIsR0FBUSxFQUFFLENBQUM7UUFFNUIsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFTLEtBQUssQ0FBQyxDQUFDO1FBRTlDLFVBQUssR0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzlDLHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxD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SUFBSSxDQUFDLFlBQVk7Z0JBQ2pFLGNBQWMsRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsY0FBYyxJQUFJLElBQUksQ0FBQyxjQUFjO2FBQy9FO1lBQ0QsY0FBYyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxFQUFFO1NBQ25ELENBQUMsQ0FBQTtJQUNKLENBQUM7OzJHQTlTVSxhQUFhOytHQUFiLGFBQWEsY0FGWixNQUFNOzRGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHNoYXJlUmVwbGF5LCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IERldmljZSwgQ2FsbCB9IGZyb20gJ0B0d2lsaW8vdm9pY2Utc2RrJztcclxuaW1wb3J0IHsgRXh0ZW5zaW9uU2VydmljZSB9IGZyb20gJy4vZXh0ZW5zaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBlbnZpcm9ubWVudCB9IGZyb20gJy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudHMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEaWFsUGF5bG9hZCB7XHJcbiAgbnVtYmVyOiBzdHJpbmc7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGltZzogc3RyaW5nO1xyXG4gIGNhbGxlcklkOnN0cmluZztcclxuICBpc0RpYWxGcm9tSGlzdG9yeTpib29sZWFuO1xyXG4gIGZyb206c3RyaW5nO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnICBcclxufSlcclxuZXhwb3J0IGNsYXNzIFR3aWxpb1NlcnZpY2Uge1xyXG4gIFxyXG4gIG9wZW5JblByb2dyZXNzRGlhbHBhZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIGN1cnJlbnRDYWxsID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDYWxsIHwgbnVsbD4obnVsbCk7XHJcbiAgY3VycmVudENhbGxTdGF0ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55Pignbm9uZScpOyAvL2luLXByb2dyZXNzLCBvdXQtcHJvZ3Jlc3MsIG5vbmVcclxuICBkZXZpY2U6YW55O1xyXG4gIGNhbGwhOiBDYWxsO1xyXG4gIGluY29taW5nQ2FsbFRva2VuOnN0cmluZz0nJztcclxuICBvdXRnb2luZ0NhbGxUb2tlbj86c3RyaW5nO1xyXG4gIGNhbGxUeXBlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCdOSUwnKTtcclxuICBpbmNvbWluZ0NhbGxEZXRhaWw6IGFueTsgLy8gZm9yIGJvdGggaW5jb21pbmcgYW5kIG91dGdvaW5nXHJcbiAgdG9rZW46YW55ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2V4dF90b2tlbicpO1xyXG4gIGlzTmV3Q29udGFjdEFkZGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgdXBkYXRlUmVjZW50Q2FsbCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIGNhbGxoYW5kbGVGcm9tTm90aWZpY2F0aW9uID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KHt9KTtcclxuXHJcbiAgZW5kQ2FsbCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIGRpYWxOdW1iZXJGcm9tT3RoZXJNb2R1bGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERpYWxQYXlsb2FkPih7IG51bWJlcjogJycsIG5hbWU6ICcnLCBpbWc6ICcnLCBjYWxsZXJJZDogJycsIGlzRGlhbEZyb21IaXN0b3J5OiBmYWxzZSwgZnJvbTogJycgfSk7XHJcblxyXG4gIHRvZ2dsZUNhbGxlcklkQWxlcnQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xyXG4gIGlzVHJpYWxPdmVyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgaXNQYXltZW50RHVlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgaXNBdmFpbGFibGVOdW1iZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBjYWxsZXJJZExpc3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSk7XHJcbiAgdHJpZ2dlclNNU1JlbG9hZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIGlzQ29ubmVjdGluZ0luY29taW5nQ2FsbElkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcclxuXHJcbiAgdG9rZW5Jbml0aWFsaXplZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgdG9rZW5Jbml0aWFsaXphdGlvbiQ6IE9ic2VydmFibGU8YW55PiB8IG51bGwgPSBudWxsO1xyXG4gIGRldmljZUlkOiBhbnk7XHJcbiAgY29uZmVyZW5jZUNhbGxJbmZvOiBhbnk7XHJcbiAgaXNTaG93SW5jb21pbmdDYWxsOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vIENSSVRJQ0FMOiBUcmFjayBhbGwgYWNjZXB0ZWQgQ2FsbCBvYmplY3RzIChtaXJyb3JzIGlPUyBhY2NlcHRlZENhbGxMaXN0KVxyXG4gIC8vIFVzZWQgdG8gZ3VhcmQgZGV2aWNlIHJlLWluaXRpYWxpemF0aW9uIHNvIGFjdGl2ZSBjYWxscyBhcmUgbmV2ZXIgdG9ybiBkb3duXHJcbiAgYWNjZXB0ZWRDYWxsTGlzdDogQ2FsbFtdID0gW107XHJcblxyXG4gIC8vIFNlY29uZGFyeSBkZXZpY2UgdXNlZCBleGNsdXNpdmVseSBmb3IgdGhlIHNlY29uZCBjb25jdXJyZW50IGluY29taW5nIGNhbGwuXHJcbiAgLy8gV2hlbiBjYWxsMSBpcyBhY3RpdmUgb24gYGRldmljZWAsIGNhbGwyIG11c3QgYmUgYWNjZXB0ZWQgb24gYSBzZXBhcmF0ZSBEZXZpY2VcclxuICAvLyBzbyB0aGUgdHdvIFdlYlJUQyBwZWVyLWNvbm5lY3Rpb25zIGRvbid0IGludGVyZmVyZSB3aXRoIGVhY2ggb3RoZXIuXHJcbiAgcHJpdmF0ZSBkZXZpY2UyOiBhbnkgPSBudWxsO1xyXG4gIC8vIFRydWUgb25seSBhZnRlciBkZXZpY2UyIGhhcyBmaXJlZCBpdHMgJ3JlZ2lzdGVyZWQnIGV2ZW50IGFuZCBpcyBmdWxseSByZWFkeS5cclxuICAvLyBkZXZpY2UxJ3MgaW5jb21pbmcgZ3VhcmQgb25seSBkZWZlcnMgdG8gZGV2aWNlMiBvbmNlIHRoaXMgZmxhZyBpcyBzZXQuXHJcbiAgZGV2aWNlMlJlYWR5ID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBleHRlbnNpb25TZXJ2aWNlOiBFeHRlbnNpb25TZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgdGhpcy5pbml0aWFsaXplVG9rZW4oKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVRva2VuKCkge1xyXG4gICAgaWYgKHRoaXMudG9rZW5Jbml0aWFsaXplZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy50b2tlbkluaXRpYWxpemF0aW9uJCB8fCBvZihudWxsKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRva2VuSW5pdGlhbGl6YXRpb24kID0gdGhpcy5leHRlbnNpb25TZXJ2aWNlLmdldEluY29taW5nQ2FsbFRva2VuKHRoaXMuZGV2aWNlSWQpLnBpcGUoXHJcbiAgICAgIHRhcCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxUb2tlbiA9IGRhdGEudG9rZW47XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2luLXRva2VuJywgZGF0YS50b2tlbik7XHJcbiAgICAgICAgdGhpcy50b2tlbkluaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgICBjb25zb2xlLmxvZygnZGZkZmRzZmRzZmRzJylcclxuICAgICAgICB0aGlzLmluaXRpYWxpemVEZXZpY2UoKTtcclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluaXRpYWxpemluZyBUd2lsaW8gdG9rZW46JywgZXJyb3IpO1xyXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcclxuICAgICAgfSksXHJcbiAgICAgIHNoYXJlUmVwbGF5KDEpIC8vIENhY2hlIHRoZSByZXN1bHQgZm9yIHN1YnNlcXVlbnQgc3Vic2NyaWJlcnNcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMudG9rZW5Jbml0aWFsaXphdGlvbiQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaW5pdGlhbGl6ZVR3aWxpb0RldmljZShkZXZpY2VJZDogYW55KSB7XHJcbiAgICB0aGlzLmRldmljZUlkID0gZGV2aWNlSWQ7XHJcbiAgICBpZiAodGhpcy50b2tlbkluaXRpYWxpemVkICYmIHRoaXMuaW5jb21pbmdDYWxsVG9rZW4pIHtcclxuICAgICAgdGhpcy5pbml0aWFsaXplRGV2aWNlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmluaXRpYWxpemVUb2tlbigpLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0aWFsaXplRGV2aWNlKCkge1xyXG4gICAgaWYgKHRoaXMuZGV2aWNlKSB7XHJcbiAgICAgIC8vIENSSVRJQ0FMOiBEb24ndCBkZXN0cm95IGRldmljZSBpZiBhY2NlcHRlZCBjYWxscyBhcmUgYWN0aXZlIChtaXJyb3JzIGlPUylcclxuICAgICAgLy8gRGVzdHJveWluZyB0aGUgZGV2aWNlIHRlYXJzIGRvd24gYWxsIGFjdGl2ZSBXZWJSVEMgcGVlciBjb25uZWN0aW9uc1xyXG4gICAgICBpZiAodGhpcy5hY2NlcHRlZENhbGxMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICBjb25zb2xlLndhcm4oJ1NraXBwaW5nIGRldmljZSByZS1pbml0OiBhY3RpdmUgYWNjZXB0ZWQgY2FsbHMgZXhpc3Q6JywgdGhpcy5hY2NlcHRlZENhbGxMaXN0Lmxlbmd0aCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnNvbGUubG9nKCd0ZXN0IHRlc3QnKVxyXG4gICAgICB0aGlzLmRldmljZS5kZXN0cm95KCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmluY29taW5nQ2FsbFRva2VuKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIFR3aWxpbyB0b2tlbiBhdmFpbGFibGUnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGV2aWNlID0gbmV3IERldmljZSh0aGlzLmluY29taW5nQ2FsbFRva2VuLCB7IGFsbG93SW5jb21pbmdXaGlsZUJ1c3k6IHRydWUgfSk7XHJcblxyXG4gICAgdGhpcy5kZXZpY2Uub24oJ3JlZ2lzdGVyZWQnLCAoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdUd2lsaW8gRGV2aWNlIHJlZ2lzdGVyZWQgc3VjY2Vzc2Z1bGx5Jyk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmRldmljZS5vbignaW5jb21pbmcnLCAoY2FsbDogQ2FsbCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZygnaW5jb21pbmcgY2FsbCcsIGNhbGwpO1xyXG4gICAgICAvLyBPbmx5IGRlZmVyIHRvIGRldmljZTIgb25jZSBpdCBoYXMgZnVsbHkgcmVnaXN0ZXJlZCAoZGV2aWNlMlJlYWR5ID0gdHJ1ZSkuXHJcbiAgICAgIC8vIENoZWNraW5nIGRldmljZTIgYWxvbmUgaXMgdG9vIGVhcmx5IOKAlCB0aGUgRGV2aWNlIG9iamVjdCBleGlzdHMgYmVmb3JlIHJlZ2lzdHJhdGlvblxyXG4gICAgICAvLyBjb21wbGV0ZXMsIHNvIHRoZSBzZWNvbmQgY2FsbCB3b3VsZCBiZSBzaWxlbnRseSBkcm9wcGVkIHdoaWxlIGRldmljZTIgaXMgc3RpbGxcclxuICAgICAgLy8gcmVnaXN0ZXJpbmcgYW5kIGNvdWxkbid0IHlldCByZWNlaXZlIGl0LlxyXG4gICAgICBpZiAodGhpcy5hY2NlcHRlZENhbGxMaXN0Lmxlbmd0aCA+IDAgJiYgdGhpcy5kZXZpY2UyUmVhZHkpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnZGV2aWNlMTogc2Vjb25kIGNhbGwgYXJyaXZpbmcg4oCTIGRldmljZTIgd2lsbCBoYW5kbGUgaXQnKTtcclxuICAgICAgICB0aGlzLmlzU2hvd0luY29taW5nQ2FsbCA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaW5jb21pbmdDYWxsRGV0YWlsID0gY2FsbDtcclxuICAgICAgdGhpcy5pc1Nob3dJbmNvbWluZ0NhbGwgPSB0cnVlO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5kZXZpY2Uub24oJ2Vycm9yJywgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgY29uc29sZS5lcnJvcignVHdpbGlvIERldmljZSBFcnJvcjonLCBlcnJvcik7XHJcbiAgICAgIHRoaXMuaXNTaG93SW5jb21pbmdDYWxsID0gZmFsc2U7XHJcbiAgICAgIHRoaXMudG9rZW5Jbml0aWFsaXplZCA9IGZhbHNlO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5kZXZpY2Uub24oJ3VucmVnaXN0ZXJlZCcsICgpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coJ1R3aWxpbyBEZXZpY2UgdW5yZWdpc3RlcmVkJyk7XHJcbiAgICAgIHRoaXMuaXNTaG93SW5jb21pbmdDYWxsID0gZmFsc2U7XHJcbiAgICAgIHRoaXMudG9rZW5Jbml0aWFsaXplZCA9IGZhbHNlO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gUmVnaXN0ZXIgQUZURVIgYXR0YWNoaW5nIGFsbCBsaXN0ZW5lcnNcclxuICAgIHRoaXMuZGV2aWNlLnJlZ2lzdGVyKCk7XHJcbiAgICBjb25zb2xlLmxvZygnZGV2aWNlIGNyZWF0ZWQnLCB0aGlzLmRldmljZSk7XHJcbiAgfVxyXG5cclxuICAvLyBvbkluY29taW5nQ2FsbCgpe1xyXG4gIC8vICAgdGhpcy5kZXZpY2Uub24oJ2luY29taW5nJywgKGNhbGw6YW55KSA9PiB7XHJcbiAgLy8gICAgIGNvbnNvbGUubG9nKGNhbGwpO1xyXG4gICAgIFxyXG4gIC8vICAgICAvL2NhbGwuYWNjZXB0KCk7XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcbiAgc2F2ZUNvbnRhY3QocGF5bG9hZDogYW55KTogT2JzZXJ2YWJsZTxbXT4ge1xyXG4gICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsICdBdXRoLUtleSc6IFwiQmVhcmVyIFwiICsgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2V4dF90b2tlbicpfSkgfTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxbXT4oZW52aXJvbm1lbnQuYXBpVXJsICsgJy91dGlsaXRpZXMvcGhvbmVib29rL2FkZC9jb250YWN0cy9tYW51YWxseScsIHBheWxvYWQsIGh0dHBPcHRpb25zKTtcclxuICB9XHJcbiAgdXBkYXRlQ29udGFjdChwYXlsb2FkOmFueSl7XHJcbiAgICBjb25zdCBodHRwT3B0aW9ucyA9IHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJywgJ0F1dGgtS2V5JzogXCJCZWFyZXIgXCIgKyB0aGlzLnRva2VufSkgfTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxbXT4oZW52aXJvbm1lbnQuYXBpVXJsICsgJy91dGlsaXRpZXMvcGhvbmVib29rL3VwZGF0ZS9jb250YWN0JywgcGF5bG9hZCwgaHR0cE9wdGlvbnMpO1xyXG4gIH1cclxuICBcclxuICBkZWxldGVDb250YWN0KGlkOnN0cmluZyl7XHJcbiAgICBsZXQgcGF5bG9hZCA9IHtcclxuICAgICAgcGhvbmVib29raWQ6IGlkXHJcbiAgICB9XHJcbiAgICBjb25zdCBodHRwT3B0aW9ucyA9IHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJywgJ0F1dGgtS2V5JzogXCJCZWFyZXIgXCIgKyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXh0X3Rva2VuJykgfSkgfTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxbXT4oZW52aXJvbm1lbnQuYXBpVXJsICsgJy91dGlsaXRpZXMvcGhvbmVib29rL2RlbGV0ZS9jb250YWN0LycraWQscGF5bG9hZCwgaHR0cE9wdGlvbnMpO1xyXG4gIH1cclxuICBnZXRDb250YWN0TGlzdCgpe1xyXG4gICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsICdBdXRoLUtleSc6IFwiQmVhcmVyIFwiICsgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2V4dF90b2tlbicpIH0pIH07XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxbXT4oZW52aXJvbm1lbnQuYXBpVXJsICsgJy91dGlsaXRpZXMvcGhvbmVib29rL3JlYWQvY29udGFjdHMnLCBodHRwT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBhZGRDb250YWN0VG9GYXZvdXJpdGUocGF5bG9hZDogYW55KXtcclxuICAgIGNvbnN0IGh0dHBPcHRpb25zID0geyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLCAnQXV0aC1LZXknOiBcIkJlYXJlciBcIiArIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdleHRfdG9rZW4nKSB9KSB9O1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFtdPihlbnZpcm9ubWVudC5hcGlVcmwgKyAnL3V0aWxpdGllcy9waG9uZWJvb2svdXBkYXRlL2Zhdm91cml0ZScsIHBheWxvYWQsIGh0dHBPcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGdldEZhdm91cml0Q29udGFjdHMoKXtcclxuICAgIGNvbnN0IGh0dHBPcHRpb25zID0geyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLCAnQXV0aC1LZXknOiBcIkJlYXJlciBcIiArIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdleHRfdG9rZW4nKSB9KSB9O1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8W10+KGVudmlyb25tZW50LmFwaVVybCArICcvdXRpbGl0aWVzL3Bob25lYm9vay9mYXZvdXJpdGUvY29udGFjdHMnLCBodHRwT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBnZXRSZWNlbnRDYWxscyhwYWdlSW5kZXg/OiBzdHJpbmcsIHBhZ2VTaXplPzogc3RyaW5nLCl7XHJcbiAgICAvLyBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgIC8vIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3NpemUnLCBwYWdlU2l6ZSk7XHJcbiAgICAvLyBwYXJhbXMgPSBwYXJhbXMuc2V0KCdwYWdlJywgcGFnZUluZGV4KTtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSAgeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLCAnQXV0aC1LZXknOiBcIkJlYXJlciBcIiArIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdleHRfdG9rZW4nKSB9O1xyXG4gICAgY29uc3QgaHR0cE9wdGlvbnMgPXtoZWFkZXJzfVxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8W10+KGVudmlyb25tZW50LmFwaVVybCArICcvdXRpbGl0aWVzL3Bob25lYm9vay9yZWNlbnQvY2FsbHMnLCBodHRwT3B0aW9ucyk7XHJcbiAgfVxyXG4gIGRlbGV0ZVJlY2VudENhbGxMb2coaWQ6c3RyaW5nfCBzdHJpbmdbXSl7XHJcbiAgICBsZXQgcGF5bG9hZCA9IHtcclxuICAgICAgcmVjb3JkSWQ6IGlkXHJcbiAgICB9XHJcbiAgICBjb25zdCBodHRwT3B0aW9ucyA9IHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJywgJ0F1dGgtS2V5JzogXCJCZWFyZXIgXCIgKyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXh0X3Rva2VuJykgfSkgfTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxbXT4oZW52aXJvbm1lbnQuYXBpVXJsICsgJy91dGlsaXRpZXMvcGhvbmVib29rL2RlbGV0ZS9jYWxscy8nK2lkLHBheWxvYWQsIGh0dHBPcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHVwbG9hZFBob3RvKHBheWxvYWQ6IGFueSl7XHJcbiAgICBsZXQgaHR0cE9wdGlvbnMgPSB7XHJcbiAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgJ0F1dGgtS2V5JzogXCJCZWFyZXIgXCIgKyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXh0X3Rva2VuJylcclxuICAgICAgfSlcclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8W10+KGVudmlyb25tZW50LmFwaVVybCArICcvdXRpbGl0aWVzL3Bob25lYm9vay91cGxvYWQvcGhvdG8nLHBheWxvYWQsIGh0dHBPcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZVBob3RvKGlkOnN0cmluZyl7XHJcbiAgICBsZXQgcGF5bG9hZCA9IHtcclxuICAgICAgcGhvbmVib29raWQ6IGlkXHJcbiAgICB9XHJcbiAgICBsZXQgaHR0cE9wdGlvbnMgPSB7XHJcbiAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgJ0F1dGgtS2V5JzogXCJCZWFyZXIgXCIgKyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXh0X3Rva2VuJylcclxuICAgICAgfSlcclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8W10+KGVudmlyb25tZW50LmFwaVVybCArICcvdXRpbGl0aWVzL3Bob25lYm9vay9kZWxldGUvcGhvdG8vJytpZCxwYXlsb2FkLCBodHRwT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvLyB0b2dnbGVDYWxsZXJJZEFsZXJ0Rm4odmFsOiBhbnkpIHtcclxuICAvLyAgIGxldCBodHRwT3B0aW9ucyA9IHtcclxuICAvLyAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcclxuICAvLyAgICAgICAnQXV0aC1LZXknOiBcIkJlYXJlciBcIiArIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdleHRfdG9rZW4nKVxyXG4gIC8vICAgICB9KVxyXG4gIC8vICAgfTtcclxuICAvLyAgIHJldHVybiB0aGlzLmh0dHAucHV0PFtdPihlbnZpcm9ubWVudC5hcGlVcmwgKyAnL3V0aWxpdGllcy9zb2Z0cGhvbmUvY2FsbGVyaWQvYWxlcnQvJyArIHZhbCwge30sIGh0dHBPcHRpb25zKTtcclxuICAvLyB9XHJcblxyXG4gIHRvZ2dsZUNvdXRyeUNvZGVUb2FzdCh2YWw6YW55KXtcclxuICAgIGxldCBodHRwT3B0aW9ucyA9IHtcclxuICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAnQXV0aC1LZXknOiBcIkJlYXJlciBcIiArIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdleHRfdG9rZW4nKVxyXG4gICAgICB9KVxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PFtdPihlbnZpcm9ubWVudC5hcGlVcmwgKyAnL3V0aWxpdGllcy9zb2Z0cGhvbmUvY291bnRyeWNvZGUvYWxlcnQvJyArIHZhbCwge30sIGh0dHBPcHRpb25zKTtcclxuICB9XHJcbiAgZ2V0VG9OdW1iZXIoZGlhbGxlZE5vOiBzdHJpbmcsIGlzb0NvZGU6IHN0cmluZykge1xyXG4gICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7XHJcbiAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsICdBdXRoLUtleSc6IFwiQmVhcmVyIFwiICsgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2V4dF90b2tlbicpIH0pLFxyXG4gICAgICBwYXJhbXM6IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdpc29Db2RlJywgaXNvQ29kZSlcclxuICAgIH07XHJcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpLnNldCgnaXNvQ29kZScsIGlzb0NvZGUpXHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxbXT4oZW52aXJvbm1lbnQuYXBpVXJsICsgJy91dGlsaXRpZXMvc29mdHBob25lL2NoZWNrL2NvdW50cnlDb2RlLycgKyBkaWFsbGVkTm8sIGh0dHBPcHRpb25zKTtcclxuICB9IFxyXG4gIFxyXG4gIC8vIENhbGwgdGhpcyBvbmNlIHRoZSBmaXJzdCBpbmNvbWluZyBjYWxsIGlzIHN1Y2Nlc3NmdWxseSBhY2NlcHRlZCBzbyB0aGF0XHJcbiAgLy8gYW55IHN1YnNlcXVlbnQgaW5jb21pbmcgY2FsbCBpcyBoYW5kbGVkIG9uIGl0cyBvd24gRGV2aWNlLCBwcmVzZXJ2aW5nXHJcbiAgLy8gdGhlIGZpcnN0IGNhbGwncyBXZWJSVEMgcGVlci1jb25uZWN0aW9uIG9uIGBkZXZpY2VgLlxyXG4gIHByZXBhcmVEZXZpY2UyRm9ySW5jb21pbmdDYWxsKCkge1xyXG4gICAgaWYgKHRoaXMuZGV2aWNlMikge1xyXG4gICAgICByZXR1cm47IC8vIGFscmVhZHkgcHJlcGFyZWRcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5pbmNvbWluZ0NhbGxUb2tlbikge1xyXG4gICAgICBjb25zb2xlLndhcm4oJ3ByZXBhcmVEZXZpY2UyOiBubyB0b2tlbiBhdmFpbGFibGUnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kZXZpY2UyID0gbmV3IERldmljZSh0aGlzLmluY29taW5nQ2FsbFRva2VuLCB7IGFsbG93SW5jb21pbmdXaGlsZUJ1c3k6IHRydWUgfSk7XHJcblxyXG4gICAgdGhpcy5kZXZpY2UyLm9uKCdyZWdpc3RlcmVkJywgKCkgPT4ge1xyXG4gICAgICB0aGlzLmRldmljZTJSZWFkeSA9IHRydWU7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdEZXZpY2UyIHJlZ2lzdGVyZWQg4oCTIHJlYWR5IGZvciBzZWNvbmQgY29uY3VycmVudCBjYWxsJyk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBkZXZpY2UyIG93bnMgdGhlIHNlY29uZCBpbmNvbWluZyBjYWxsOyB1cGRhdGUgaW5jb21pbmdDYWxsRGV0YWlsIHNvIHRoZVxyXG4gICAgLy8gZXhpc3RpbmcgYWNjZXB0IGZsb3cgKGB3YWl0aW5nQ2FsbEFjY2VwdGAg4oaSIGBhZGRgKSBwaWNrcyB1cCB0aGUgY29ycmVjdFxyXG4gICAgLy8gQ2FsbCBvYmplY3QgYm91bmQgdG8gZGV2aWNlMiAobm90IHRoZSBvbmUgYm91bmQgdG8gZGV2aWNlMSkuXHJcbiAgICB0aGlzLmRldmljZTIub24oJ2luY29taW5nJywgKGNhbGw6IENhbGwpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coJ2RldmljZTI6IGluY29taW5nIGNhbGwnLCBjYWxsKTtcclxuICAgICAgdGhpcy5pbmNvbWluZ0NhbGxEZXRhaWwgPSBjYWxsO1xyXG4gICAgICB0aGlzLmlzU2hvd0luY29taW5nQ2FsbCA9IHRydWU7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmRldmljZTIub24oJ2Vycm9yJywgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgY29uc29sZS5lcnJvcignRGV2aWNlMiBlcnJvcjonLCBlcnJvcik7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmRldmljZTIucmVnaXN0ZXIoKTtcclxuICAgIGNvbnNvbGUubG9nKCdkZXZpY2UyIGNyZWF0ZWQgYW5kIHJlZ2lzdGVyaW5nJyk7XHJcbiAgfVxyXG5cclxuICBkZXN0cm95RGV2aWNlMigpIHtcclxuICAgIGlmICh0aGlzLmRldmljZTIpIHtcclxuICAgICAgdHJ5IHsgdGhpcy5kZXZpY2UyLmRlc3Ryb3koKTsgfSBjYXRjaCAoXykge31cclxuICAgICAgdGhpcy5kZXZpY2UyID0gbnVsbDtcclxuICAgICAgdGhpcy5kZXZpY2UyUmVhZHkgPSBmYWxzZTtcclxuICAgICAgY29uc29sZS5sb2coJ2RldmljZTIgZGVzdHJveWVkJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRJbmNvbWluZ1BhcnRpY2lwYW50KHBhcnRpY2lwYW50SWQ6IHN0cmluZywgY29uZmVyZW5jZUlkOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGh0dHBPcHRpb25zID0ge1xyXG4gICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLCAnQXV0aC1LZXknOiBcIkJlYXJlciBcIiArIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdleHRfdG9rZW4nKX0pLFxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFtdPihgJHtlbnZpcm9ubWVudC5hcGlVcmx9L3V0aWxpdGllcy9leHQvYWRkL2luY29taW5nL3BhcnRpY2lwYW50LyR7cGFydGljaXBhbnRJZH0vJHtjb25mZXJlbmNlSWR9YCxodHRwT3B0aW9ucyk7XHJcbiAgfSBcclxuICBjb25uZWN0KGRhdGE/OiBhbnkpe1xyXG4gICAgaWYgKHRoaXMuZGV2aWNlLl9hY3RpdmVDYWxsKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCcyNDQtdGVzdCcpXHJcbiAgICAgIHRoaXMuZGV2aWNlLmRpc2Nvbm5lY3RBbGwoKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmRldmljZS5jb25uZWN0KHtcclxuICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgVG9rZW46IHRoaXMuY29uZmVyZW5jZUNhbGxJbmZvPy5jb25mZXJlbmNlSWQgfHwgZGF0YS5jb25mZXJlbmNlSWQsXHJcbiAgICAgICAgQ29uZmVyZW5jZU5hbWU6IHRoaXMuY29uZmVyZW5jZUNhbGxJbmZvPy5jb25mZXJlbmNlTmFtZSB8fCBkYXRhLmNvbmZlcmVuY2VOYW1lXHJcbiAgICAgIH0sXHJcbiAgICAgIHJ0Y0NvbnN0cmFpbnRzOiB7IGF1ZGlvOiB7IGRldmljZUlkOiAnZGVmYXVsdCcgfSB9LFxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuIl19
292
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHdpbGlvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kaWFsYm94L3NyYy9saWIvc2VydmljZS90d2lsaW8uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQVEsTUFBTSxtQkFBbUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7QUFjM0QsTUFBTSxPQUFPLGFBQWE7SUE2Q3hCLFlBQ1UsSUFBZ0IsRUFDaEIsZ0JBQWtDO1FBRGxDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQTdDNUMsMEJBQXFCLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDNUQsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBYyxJQUFJLENBQUMsQ0FBQztRQUNyRCxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBTSxNQUFNLENBQUMsQ0FBQyxDQUFDLGlDQUFpQztRQUd0RixzQkFBaUIsR0FBUSxFQUFFLENBQUM7UUFFNUIsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFTLEtBQUssQ0FBQyxDQUFDO1FBRTlDLFVBQUssR0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzlDLHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxD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LEVBQUUsU0FBUyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUMsQ0FBQztTQUMzSCxDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBSyxHQUFHLFdBQVcsQ0FBQyxNQUFNLDJDQUEyQyxhQUFhLElBQUksWUFBWSxFQUFFLEVBQUMsV0FBVyxDQUFDLENBQUM7SUFDeEksQ0FBQztJQUNELE9BQU8sQ0FBQyxJQUFVO1FBQ2hCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUU7WUFDM0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQzdCO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUN6QixNQUFNLEVBQUU7Z0JBQ04sS0FBSyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVk7Z0JBQ2pFLGNBQWMsRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsY0FBYyxJQUFJLElBQUksQ0FBQyxjQUFjO2FBQy9FO1lBQ0QsY0FBYyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxFQUFFO1NBQ25ELENBQUMsQ0FBQTtJQUNKLENBQUM7OzJHQTdUVSxhQUFhOytHQUFiLGFBQWEsY0FGWixNQUFNOzRGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHNoYXJlUmVwbGF5LCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IERldmljZSwgQ2FsbCB9IGZyb20gJ0B0d2lsaW8vdm9pY2Utc2RrJztcclxuaW1wb3J0IHsgRXh0ZW5zaW9uU2VydmljZSB9IGZyb20gJy4vZXh0ZW5zaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBlbnZpcm9ubWVudCB9IGZyb20gJy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudHMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEaWFsUGF5bG9hZCB7XHJcbiAgbnVtYmVyOiBzdHJpbmc7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGltZzogc3RyaW5nO1xyXG4gIGNhbGxlcklkOnN0cmluZztcclxuICBpc0RpYWxGcm9tSGlzdG9yeTpib29sZWFuO1xyXG4gIGZyb206c3RyaW5nO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnICBcclxufSlcclxuZXhwb3J0IGNsYXNzIFR3aWxpb1NlcnZpY2Uge1xyXG4gIFxyXG4gIG9wZW5JblByb2dyZXNzRGlhbHBhZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIGN1cnJlbnRDYWxsID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDYWxsIHwgbnVsbD4obnVsbCk7XHJcbiAgY3VycmVudENhbGxTdGF0ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55Pignbm9uZScpOyAvL2luLXByb2dyZXNzLCBvdXQtcHJvZ3Jlc3MsIG5vbmVcclxuICBkZXZpY2U6YW55O1xyXG4gIGNhbGwhOiBDYWxsO1xyXG4gIGluY29taW5nQ2FsbFRva2VuOnN0cmluZz0nJztcclxuICBvdXRnb2luZ0NhbGxUb2tlbj86c3RyaW5nO1xyXG4gIGNhbGxUeXBlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCdOSUwnKTtcclxuICBpbmNvbWluZ0NhbGxEZXRhaWw6IGFueTsgLy8gZm9yIGJvdGggaW5jb21pbmcgYW5kIG91dGdvaW5nXHJcbiAgdG9rZW46YW55ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2V4dF90b2tlbicpO1xyXG4gIGlzTmV3Q29udGFjdEFkZGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgdXBkYXRlUmVjZW50Q2FsbCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIGNhbGxoYW5kbGVGcm9tTm90aWZpY2F0aW9uID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KHt9KTtcclxuXHJcbiAgZW5kQ2FsbCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIGRpYWxOdW1iZXJGcm9tT3RoZXJNb2R1bGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERpYWxQYXlsb2FkPih7IG51bWJlcjogJycsIG5hbWU6ICcnLCBpbWc6ICcnLCBjYWxsZXJJZDogJycsIGlzRGlhbEZyb21IaXN0b3J5OiBmYWxzZSwgZnJvbTogJycgfSk7XHJcblxyXG4gIHRvZ2dsZUNhbGxlcklkQWxlcnQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xyXG4gIGlzVHJpYWxPdmVyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgaXNQYXltZW50RHVlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgaXNBdmFpbGFibGVOdW1iZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBjYWxsZXJJZExpc3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSk7XHJcbiAgdHJpZ2dlclNNU1JlbG9hZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIGlzQ29ubmVjdGluZ0luY29taW5nQ2FsbElkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcclxuXHJcbiAgdG9rZW5Jbml0aWFsaXplZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgdG9rZW5Jbml0aWFsaXphdGlvbiQ6IE9ic2VydmFibGU8YW55PiB8IG51bGwgPSBudWxsO1xyXG4gIGRldmljZUlkOiBhbnk7XHJcbiAgY29uZmVyZW5jZUNhbGxJbmZvOiBhbnk7XHJcbiAgaXNTaG93SW5jb21pbmdDYWxsOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vIENSSVRJQ0FMOiBUcmFjayBhbGwgYWNjZXB0ZWQgQ2FsbCBvYmplY3RzIChtaXJyb3JzIGlPUyBhY2NlcHRlZENhbGxMaXN0KVxyXG4gIC8vIFVzZWQgdG8gZ3VhcmQgZGV2aWNlIHJlLWluaXRpYWxpemF0aW9uIHNvIGFjdGl2ZSBjYWxscyBhcmUgbmV2ZXIgdG9ybiBkb3duXHJcbiAgYWNjZXB0ZWRDYWxsTGlzdDogQ2FsbFtdID0gW107XHJcblxyXG4gIC8vIFNlY29uZGFyeSBkZXZpY2UgdXNlZCBleGNsdXNpdmVseSBmb3IgdGhlIHNlY29uZCBjb25jdXJyZW50IGluY29taW5nIGNhbGwuXHJcbiAgLy8gV2hlbiBjYWxsMSBpcyBhY3RpdmUgb24gYGRldmljZWAsIGNhbGwyIG11c3QgYmUgYWNjZXB0ZWQgb24gYSBzZXBhcmF0ZSBEZXZpY2VcclxuICAvLyBzbyB0aGUgdHdvIFdlYlJUQyBwZWVyLWNvbm5lY3Rpb25zIGRvbid0IGludGVyZmVyZSB3aXRoIGVhY2ggb3RoZXIuXHJcbiAgcHJpdmF0ZSBkZXZpY2UyOiBhbnkgPSBudWxsO1xyXG4gIC8vIFRydWUgb25seSBhZnRlciBkZXZpY2UyIGhhcyBmaXJlZCBpdHMgJ3JlZ2lzdGVyZWQnIGV2ZW50IGFuZCBpcyBmdWxseSByZWFkeS5cclxuICAvLyBkZXZpY2UxJ3MgaW5jb21pbmcgZ3VhcmQgb25seSBkZWZlcnMgdG8gZGV2aWNlMiBvbmNlIHRoaXMgZmxhZyBpcyBzZXQuXHJcbiAgZGV2aWNlMlJlYWR5ID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBleHRlbnNpb25TZXJ2aWNlOiBFeHRlbnNpb25TZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgdGhpcy5pbml0aWFsaXplVG9rZW4oKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVRva2VuKCkge1xyXG4gICAgaWYgKHRoaXMudG9rZW5Jbml0aWFsaXplZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy50b2tlbkluaXRpYWxpemF0aW9uJCB8fCBvZihudWxsKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRva2VuSW5pdGlhbGl6YXRpb24kID0gdGhpcy5leHRlbnNpb25TZXJ2aWNlLmdldEluY29taW5nQ2FsbFRva2VuKHRoaXMuZGV2aWNlSWQpLnBpcGUoXHJcbiAgICAgIHRhcCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxUb2tlbiA9IGRhdGEudG9rZW47XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2luLXRva2VuJywgZGF0YS50b2tlbik7XHJcbiAgICAgICAgdGhpcy50b2tlbkluaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgICBjb25zb2xlLmxvZygnZGZkZmRzZmRzZmRzJylcclxuICAgICAgICB0aGlzLmluaXRpYWxpemVEZXZpY2UoKTtcclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluaXRpYWxpemluZyBUd2lsaW8gdG9rZW46JywgZXJyb3IpO1xyXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcclxuICAgICAgfSksXHJcbiAgICAgIHNoYXJlUmVwbGF5KDEpIC8vIENhY2hlIHRoZSByZXN1bHQgZm9yIHN1YnNlcXVlbnQgc3Vic2NyaWJlcnNcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMudG9rZW5Jbml0aWFsaXphdGlvbiQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaW5pdGlhbGl6ZVR3aWxpb0RldmljZShkZXZpY2VJZDogYW55KSB7XHJcbiAgICB0aGlzLmRldmljZUlkID0gZGV2aWNlSWQ7XHJcbiAgICBpZiAodGhpcy50b2tlbkluaXRpYWxpemVkICYmIHRoaXMuaW5jb21pbmdDYWxsVG9rZW4pIHtcclxuICAgICAgdGhpcy5pbml0aWFsaXplRGV2aWNlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmluaXRpYWxpemVUb2tlbigpLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0aWFsaXplRGV2aWNlKCkge1xyXG4gICAgaWYgKHRoaXMuZGV2aWNlKSB7XHJcbiAgICAgIC8vIENSSVRJQ0FMOiBEb24ndCBkZXN0cm95IGRldmljZSBpZiBhY2NlcHRlZCBjYWxscyBhcmUgYWN0aXZlIChtaXJyb3JzIGlPUylcclxuICAgICAgLy8gRGVzdHJveWluZyB0aGUgZGV2aWNlIHRlYXJzIGRvd24gYWxsIGFjdGl2ZSBXZWJSVEMgcGVlciBjb25uZWN0aW9uc1xyXG4gICAgICBpZiAodGhpcy5hY2NlcHRlZENhbGxMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICBjb25zb2xlLndhcm4oJ1NraXBwaW5nIGRldmljZSByZS1pbml0OiBhY3RpdmUgYWNjZXB0ZWQgY2FsbHMgZXhpc3Q6JywgdGhpcy5hY2NlcHRlZENhbGxMaXN0Lmxlbmd0aCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnNvbGUubG9nKCd0ZXN0IHRlc3QnKVxyXG4gICAgICB0aGlzLmRldmljZS5kZXN0cm95KCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmluY29taW5nQ2FsbFRva2VuKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIFR3aWxpbyB0b2tlbiBhdmFpbGFibGUnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGV2aWNlID0gbmV3IERldmljZSh0aGlzLmluY29taW5nQ2FsbFRva2VuLCB7IGFsbG93SW5jb21pbmdXaGlsZUJ1c3k6IHRydWUgfSk7XHJcblxyXG4gICAgdGhpcy5kZXZpY2Uub24oJ3JlZ2lzdGVyZWQnLCAoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdUd2lsaW8gRGV2aWNlIHJlZ2lzdGVyZWQgc3VjY2Vzc2Z1bGx5Jyk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmRldmljZS5vbignaW5jb21pbmcnLCAoY2FsbDogQ2FsbCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZygnaW5jb21pbmcgY2FsbCcsIGNhbGwpO1xyXG4gICAgICAvLyBPbmx5IGRlZmVyIHRvIGRldmljZTIgb25jZSBpdCBoYXMgZnVsbHkgcmVnaXN0ZXJlZCAoZGV2aWNlMlJlYWR5ID0gdHJ1ZSkuXHJcbiAgICAgIC8vIENoZWNraW5nIGRldmljZTIgYWxvbmUgaXMgdG9vIGVhcmx5IOKAlCB0aGUgRGV2aWNlIG9iamVjdCBleGlzdHMgYmVmb3JlIHJlZ2lzdHJhdGlvblxyXG4gICAgICAvLyBjb21wbGV0ZXMsIHNvIHRoZSBzZWNvbmQgY2FsbCB3b3VsZCBiZSBzaWxlbnRseSBkcm9wcGVkIHdoaWxlIGRldmljZTIgaXMgc3RpbGxcclxuICAgICAgLy8gcmVnaXN0ZXJpbmcgYW5kIGNvdWxkbid0IHlldCByZWNlaXZlIGl0LlxyXG4gICAgICBpZiAodGhpcy5hY2NlcHRlZENhbGxMaXN0Lmxlbmd0aCA+IDAgJiYgdGhpcy5kZXZpY2UyUmVhZHkpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnZGV2aWNlMTogc2Vjb25kIGNhbGwgYXJyaXZpbmcg4oCTIGRldmljZTIgd2lsbCBoYW5kbGUgaXQnKTtcclxuICAgICAgICB0aGlzLmlzU2hvd0luY29taW5nQ2FsbCA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNhbGwub24oJ2FjY2VwdCcsICgpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZygnSW5jb21pbmcgY2FsbCBhbnN3ZXJlZC9hY2NlcHRlZCcpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGNhbGwub24oJ2Rpc2Nvbm5lY3QnLCAoKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0NhbGwgZGlzY29ubmVjdGVkJyk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgY2FsbC5vbignY2FuY2VsJywgKCkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdDYWxsZXIgaHVuZyB1cCBiZWZvcmUgYW5zd2VyJyk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgY2FsbC5vbigncmVqZWN0JywgKCkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdDYWxsIHJlamVjdGVkJyk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmluY29taW5nQ2FsbERldGFpbCA9IGNhbGw7XHJcbiAgICAgIHRoaXMuaXNTaG93SW5jb21pbmdDYWxsID0gdHJ1ZTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZGV2aWNlLm9uKCdlcnJvcicsIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1R3aWxpbyBEZXZpY2UgRXJyb3I6JywgZXJyb3IpO1xyXG4gICAgICB0aGlzLmlzU2hvd0luY29taW5nQ2FsbCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnRva2VuSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZGV2aWNlLm9uKCd1bnJlZ2lzdGVyZWQnLCAoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdUd2lsaW8gRGV2aWNlIHVucmVnaXN0ZXJlZCcpO1xyXG4gICAgICB0aGlzLmlzU2hvd0luY29taW5nQ2FsbCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnRva2VuSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFJlZ2lzdGVyIEFGVEVSIGF0dGFjaGluZyBhbGwgbGlzdGVuZXJzXHJcbiAgICB0aGlzLmRldmljZS5yZWdpc3RlcigpO1xyXG4gICAgY29uc29sZS5sb2coJ2RldmljZSBjcmVhdGVkJywgdGhpcy5kZXZpY2UpO1xyXG4gIH1cclxuXHJcbiAgLy8gb25JbmNvbWluZ0NhbGwoKXtcclxuICAvLyAgIHRoaXMuZGV2aWNlLm9uKCdpbmNvbWluZycsIChjYWxsOmFueSkgPT4ge1xyXG4gIC8vICAgICBjb25zb2xlLmxvZyhjYWxsKTtcclxuICAgICBcclxuICAvLyAgICAgLy9jYWxsLmFjY2VwdCgpO1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gfVxyXG4gIHNhdmVDb250YWN0KHBheWxvYWQ6IGFueSk6IE9ic2VydmFibGU8W10+IHtcclxuICAgIGNvbnN0IGh0dHBPcHRpb25zID0geyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLCAnQXV0aC1LZXknOiBcIkJlYXJlciBcIiArIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdleHRfdG9rZW4nKX0pIH07XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8W10+KGVudmlyb25tZW50LmFwaVVybCArICcvdXRpbGl0aWVzL3Bob25lYm9vay9hZGQvY29udGFjdHMvbWFudWFsbHknLCBwYXlsb2FkLCBodHRwT3B0aW9ucyk7XHJcbiAgfVxyXG4gIHVwZGF0ZUNvbnRhY3QocGF5bG9hZDphbnkpe1xyXG4gICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsICdBdXRoLUtleSc6IFwiQmVhcmVyIFwiICsgdGhpcy50b2tlbn0pIH07XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8W10+KGVudmlyb25tZW50LmFwaVVybCArICcvdXRpbGl0aWVzL3Bob25lYm9vay91cGRhdGUvY29udGFjdCcsIHBheWxvYWQsIGh0dHBPcHRpb25zKTtcclxuICB9XHJcbiAgXHJcbiAgZGVsZXRlQ29udGFjdChpZDpzdHJpbmcpe1xyXG4gICAgbGV0IHBheWxvYWQgPSB7XHJcbiAgICAgIHBob25lYm9va2lkOiBpZFxyXG4gICAgfVxyXG4gICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsICdBdXRoLUtleSc6IFwiQmVhcmVyIFwiICsgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2V4dF90b2tlbicpIH0pIH07XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8W10+KGVudmlyb25tZW50LmFwaVVybCArICcvdXRpbGl0aWVzL3Bob25lYm9vay9kZWxldGUvY29udGFjdC8nK2lkLHBheWxvYWQsIGh0dHBPcHRpb25zKTtcclxuICB9XHJcbiAgZ2V0Q29udGFjdExpc3QoKXtcclxuICAgIGNvbnN0IGh0dHBPcHRpb25zID0geyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLCAnQXV0aC1LZXknOiBcIkJlYXJlciBcIiArIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdleHRfdG9rZW4nKSB9KSB9O1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8W10+KGVudmlyb25tZW50LmFwaVVybCArICcvdXRpbGl0aWVzL3Bob25lYm9vay9yZWFkL2NvbnRhY3RzJywgaHR0cE9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgYWRkQ29udGFjdFRvRmF2b3VyaXRlKHBheWxvYWQ6IGFueSl7XHJcbiAgICBjb25zdCBodHRwT3B0aW9ucyA9IHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJywgJ0F1dGgtS2V5JzogXCJCZWFyZXIgXCIgKyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXh0X3Rva2VuJykgfSkgfTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxbXT4oZW52aXJvbm1lbnQuYXBpVXJsICsgJy91dGlsaXRpZXMvcGhvbmVib29rL3VwZGF0ZS9mYXZvdXJpdGUnLCBwYXlsb2FkLCBodHRwT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBnZXRGYXZvdXJpdENvbnRhY3RzKCl7XHJcbiAgICBjb25zdCBodHRwT3B0aW9ucyA9IHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJywgJ0F1dGgtS2V5JzogXCJCZWFyZXIgXCIgKyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXh0X3Rva2VuJykgfSkgfTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFtdPihlbnZpcm9ubWVudC5hcGlVcmwgKyAnL3V0aWxpdGllcy9waG9uZWJvb2svZmF2b3VyaXRlL2NvbnRhY3RzJywgaHR0cE9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmVjZW50Q2FsbHMocGFnZUluZGV4Pzogc3RyaW5nLCBwYWdlU2l6ZT86IHN0cmluZywpe1xyXG4gICAgLy8gbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICAvLyBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzaXplJywgcGFnZVNpemUpO1xyXG4gICAgLy8gcGFyYW1zID0gcGFyYW1zLnNldCgncGFnZScsIHBhZ2VJbmRleCk7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gIHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJywgJ0F1dGgtS2V5JzogXCJCZWFyZXIgXCIgKyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXh0X3Rva2VuJykgfTtcclxuICAgIGNvbnN0IGh0dHBPcHRpb25zID17aGVhZGVyc31cclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFtdPihlbnZpcm9ubWVudC5hcGlVcmwgKyAnL3V0aWxpdGllcy9waG9uZWJvb2svcmVjZW50L2NhbGxzJywgaHR0cE9wdGlvbnMpO1xyXG4gIH1cclxuICBkZWxldGVSZWNlbnRDYWxsTG9nKGlkOnN0cmluZ3wgc3RyaW5nW10pe1xyXG4gICAgbGV0IHBheWxvYWQgPSB7XHJcbiAgICAgIHJlY29yZElkOiBpZFxyXG4gICAgfVxyXG4gICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsICdBdXRoLUtleSc6IFwiQmVhcmVyIFwiICsgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2V4dF90b2tlbicpIH0pIH07XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8W10+KGVudmlyb25tZW50LmFwaVVybCArICcvdXRpbGl0aWVzL3Bob25lYm9vay9kZWxldGUvY2FsbHMvJytpZCxwYXlsb2FkLCBodHRwT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICB1cGxvYWRQaG90byhwYXlsb2FkOiBhbnkpe1xyXG4gICAgbGV0IGh0dHBPcHRpb25zID0ge1xyXG4gICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgICdBdXRoLUtleSc6IFwiQmVhcmVyIFwiICsgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2V4dF90b2tlbicpXHJcbiAgICAgIH0pXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFtdPihlbnZpcm9ubWVudC5hcGlVcmwgKyAnL3V0aWxpdGllcy9waG9uZWJvb2svdXBsb2FkL3Bob3RvJyxwYXlsb2FkLCBodHRwT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVQaG90byhpZDpzdHJpbmcpe1xyXG4gICAgbGV0IHBheWxvYWQgPSB7XHJcbiAgICAgIHBob25lYm9va2lkOiBpZFxyXG4gICAgfVxyXG4gICAgbGV0IGh0dHBPcHRpb25zID0ge1xyXG4gICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgICdBdXRoLUtleSc6IFwiQmVhcmVyIFwiICsgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2V4dF90b2tlbicpXHJcbiAgICAgIH0pXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFtdPihlbnZpcm9ubWVudC5hcGlVcmwgKyAnL3V0aWxpdGllcy9waG9uZWJvb2svZGVsZXRlL3Bob3RvLycraWQscGF5bG9hZCwgaHR0cE9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLy8gdG9nZ2xlQ2FsbGVySWRBbGVydEZuKHZhbDogYW55KSB7XHJcbiAgLy8gICBsZXQgaHR0cE9wdGlvbnMgPSB7XHJcbiAgLy8gICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgLy8gICAgICAgJ0F1dGgtS2V5JzogXCJCZWFyZXIgXCIgKyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXh0X3Rva2VuJylcclxuICAvLyAgICAgfSlcclxuICAvLyAgIH07XHJcbiAgLy8gICByZXR1cm4gdGhpcy5odHRwLnB1dDxbXT4oZW52aXJvbm1lbnQuYXBpVXJsICsgJy91dGlsaXRpZXMvc29mdHBob25lL2NhbGxlcmlkL2FsZXJ0LycgKyB2YWwsIHt9LCBodHRwT3B0aW9ucyk7XHJcbiAgLy8gfVxyXG5cclxuICB0b2dnbGVDb3V0cnlDb2RlVG9hc3QodmFsOmFueSl7XHJcbiAgICBsZXQgaHR0cE9wdGlvbnMgPSB7XHJcbiAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgJ0F1dGgtS2V5JzogXCJCZWFyZXIgXCIgKyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXh0X3Rva2VuJylcclxuICAgICAgfSlcclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxbXT4oZW52aXJvbm1lbnQuYXBpVXJsICsgJy91dGlsaXRpZXMvc29mdHBob25lL2NvdW50cnljb2RlL2FsZXJ0LycgKyB2YWwsIHt9LCBodHRwT3B0aW9ucyk7XHJcbiAgfVxyXG4gIGdldFRvTnVtYmVyKGRpYWxsZWRObzogc3RyaW5nLCBpc29Db2RlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGh0dHBPcHRpb25zID0ge1xyXG4gICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLCAnQXV0aC1LZXknOiBcIkJlYXJlciBcIiArIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdleHRfdG9rZW4nKSB9KSxcclxuICAgICAgcGFyYW1zOiBuZXcgSHR0cFBhcmFtcygpLnNldCgnaXNvQ29kZScsIGlzb0NvZGUpXHJcbiAgICB9O1xyXG4gICAgY29uc3QgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ2lzb0NvZGUnLCBpc29Db2RlKVxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8W10+KGVudmlyb25tZW50LmFwaVVybCArICcvdXRpbGl0aWVzL3NvZnRwaG9uZS9jaGVjay9jb3VudHJ5Q29kZS8nICsgZGlhbGxlZE5vLCBodHRwT3B0aW9ucyk7XHJcbiAgfSBcclxuICBcclxuICAvLyBDYWxsIHRoaXMgb25jZSB0aGUgZmlyc3QgaW5jb21pbmcgY2FsbCBpcyBzdWNjZXNzZnVsbHkgYWNjZXB0ZWQgc28gdGhhdFxyXG4gIC8vIGFueSBzdWJzZXF1ZW50IGluY29taW5nIGNhbGwgaXMgaGFuZGxlZCBvbiBpdHMgb3duIERldmljZSwgcHJlc2VydmluZ1xyXG4gIC8vIHRoZSBmaXJzdCBjYWxsJ3MgV2ViUlRDIHBlZXItY29ubmVjdGlvbiBvbiBgZGV2aWNlYC5cclxuICBwcmVwYXJlRGV2aWNlMkZvckluY29taW5nQ2FsbCgpIHtcclxuICAgIGlmICh0aGlzLmRldmljZTIpIHtcclxuICAgICAgcmV0dXJuOyAvLyBhbHJlYWR5IHByZXBhcmVkXHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuaW5jb21pbmdDYWxsVG9rZW4pIHtcclxuICAgICAgY29uc29sZS53YXJuKCdwcmVwYXJlRGV2aWNlMjogbm8gdG9rZW4gYXZhaWxhYmxlJyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuZGV2aWNlMiA9IG5ldyBEZXZpY2UodGhpcy5pbmNvbWluZ0NhbGxUb2tlbiwgeyBhbGxvd0luY29taW5nV2hpbGVCdXN5OiB0cnVlIH0pO1xyXG5cclxuICAgIHRoaXMuZGV2aWNlMi5vbigncmVnaXN0ZXJlZCcsICgpID0+IHtcclxuICAgICAgdGhpcy5kZXZpY2UyUmVhZHkgPSB0cnVlO1xyXG4gICAgICBjb25zb2xlLmxvZygnRGV2aWNlMiByZWdpc3RlcmVkIOKAkyByZWFkeSBmb3Igc2Vjb25kIGNvbmN1cnJlbnQgY2FsbCcpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gZGV2aWNlMiBvd25zIHRoZSBzZWNvbmQgaW5jb21pbmcgY2FsbDsgdXBkYXRlIGluY29taW5nQ2FsbERldGFpbCBzbyB0aGVcclxuICAgIC8vIGV4aXN0aW5nIGFjY2VwdCBmbG93IChgd2FpdGluZ0NhbGxBY2NlcHRgIOKGkiBgYWRkYCkgcGlja3MgdXAgdGhlIGNvcnJlY3RcclxuICAgIC8vIENhbGwgb2JqZWN0IGJvdW5kIHRvIGRldmljZTIgKG5vdCB0aGUgb25lIGJvdW5kIHRvIGRldmljZTEpLlxyXG4gICAgdGhpcy5kZXZpY2UyLm9uKCdpbmNvbWluZycsIChjYWxsOiBDYWxsKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdkZXZpY2UyOiBpbmNvbWluZyBjYWxsJywgY2FsbCk7XHJcbiAgICAgIHRoaXMuaW5jb21pbmdDYWxsRGV0YWlsID0gY2FsbDtcclxuICAgICAgdGhpcy5pc1Nob3dJbmNvbWluZ0NhbGwgPSB0cnVlO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5kZXZpY2UyLm9uKCdlcnJvcicsIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0RldmljZTIgZXJyb3I6JywgZXJyb3IpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5kZXZpY2UyLnJlZ2lzdGVyKCk7XHJcbiAgICBjb25zb2xlLmxvZygnZGV2aWNlMiBjcmVhdGVkIGFuZCByZWdpc3RlcmluZycpO1xyXG4gIH1cclxuXHJcbiAgZGVzdHJveURldmljZTIoKSB7XHJcbiAgICBpZiAodGhpcy5kZXZpY2UyKSB7XHJcbiAgICAgIHRyeSB7IHRoaXMuZGV2aWNlMi5kZXN0cm95KCk7IH0gY2F0Y2ggKF8pIHt9XHJcbiAgICAgIHRoaXMuZGV2aWNlMiA9IG51bGw7XHJcbiAgICAgIHRoaXMuZGV2aWNlMlJlYWR5ID0gZmFsc2U7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdkZXZpY2UyIGRlc3Ryb3llZCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkSW5jb21pbmdQYXJ0aWNpcGFudChwYXJ0aWNpcGFudElkOiBzdHJpbmcsIGNvbmZlcmVuY2VJZDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBodHRwT3B0aW9ucyA9IHtcclxuICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJywgJ0F1dGgtS2V5JzogXCJCZWFyZXIgXCIgKyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXh0X3Rva2VuJyl9KSxcclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxbXT4oYCR7ZW52aXJvbm1lbnQuYXBpVXJsfS91dGlsaXRpZXMvZXh0L2FkZC9pbmNvbWluZy9wYXJ0aWNpcGFudC8ke3BhcnRpY2lwYW50SWR9LyR7Y29uZmVyZW5jZUlkfWAsaHR0cE9wdGlvbnMpO1xyXG4gIH0gXHJcbiAgY29ubmVjdChkYXRhPzogYW55KXtcclxuICAgIGlmICh0aGlzLmRldmljZS5fYWN0aXZlQ2FsbCkge1xyXG4gICAgICBjb25zb2xlLmxvZygnMjQ0LXRlc3QnKVxyXG4gICAgICB0aGlzLmRldmljZS5kaXNjb25uZWN0QWxsKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5kZXZpY2UuY29ubmVjdCh7XHJcbiAgICAgIHBhcmFtczoge1xyXG4gICAgICAgIFRva2VuOiB0aGlzLmNvbmZlcmVuY2VDYWxsSW5mbz8uY29uZmVyZW5jZUlkIHx8IGRhdGEuY29uZmVyZW5jZUlkLFxyXG4gICAgICAgIENvbmZlcmVuY2VOYW1lOiB0aGlzLmNvbmZlcmVuY2VDYWxsSW5mbz8uY29uZmVyZW5jZU5hbWUgfHwgZGF0YS5jb25mZXJlbmNlTmFtZVxyXG4gICAgICB9LFxyXG4gICAgICBydGNDb25zdHJhaW50czogeyBhdWRpbzogeyBkZXZpY2VJZDogJ2RlZmF1bHQnIH0gfSxcclxuICAgIH0pXHJcbiAgfVxyXG59XHJcbiJdfQ==