barsa-novin-ray-core 1.0.376 → 1.0.377

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.
@@ -263,4 +263,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
263
263
  type: Inject,
264
264
  args: [NOTIFICATAION_POPUP_SERVER]
265
265
  }] }, { type: i1.LogService }, { type: i2.LowerCasePipe }, { type: i3.BbbTranslatePipe }, { type: i4.DomSanitizer }, { type: i5.ServiceWorkerNotificationService }, { type: i0.NgZone }]; } });
266
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL3NlcnZpY2VzL25vdGlmaWNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTNELE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXpELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7O0FBT2xFLE1BQU0sT0FBTyxtQkFBbUI7SUFPNUIsWUFDa0QsYUFBdUMsRUFDN0UsV0FBdUIsRUFDdkIsVUFBeUIsRUFDekIsYUFBK0IsRUFDL0IsYUFBMkIsRUFDM0IsMEJBQTRELEVBQzVELE9BQWU7UUFOdUIsa0JBQWEsR0FBYixhQUFhLENBQTBCO1FBQzdFLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLGVBQVUsR0FBVixVQUFVLENBQWU7UUFDekIsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQy9CLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzNCLCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBa0M7UUFDNUQsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQWJuQixvQkFBZSxHQUFHLElBQUksZUFBZSxDQUF3QixFQUFFLENBQUMsQ0FBQztRQUNqRSx3QkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBa0MsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xHLDhCQUF5QixHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzNELDBCQUFxQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUss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WyJpbXBvcnQgeyBMb3dlckNhc2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBCYXJzYUFwaSB9IGZyb20gJy4uL2Fic3RyYWN0LWNsYXNzZXMvYmFyc2EtYXBpJztcbmltcG9ydCB7IE1ldGFvYmplY3REYXRhTW9kZWwsIE5vdGlmaWNhdGlvbkl0ZW0sIE5vdGlmeU9wdGlvbnMgfSBmcm9tICcuLi9hYnN0cmFjdC1jbGFzc2VzL21vZGVscyc7XG5pbXBvcnQgeyBOT1RJRklDQVRBSU9OX1BPUFVQX1NFUlZFUiB9IGZyb20gJy4uL2luamRlY3Rpb24tdG9rZW5zJztcbmltcG9ydCB7IEJiYlRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi9waXBlcy9iYmItdHJhbnNsYXRlLnBpcGUnO1xuaW1wb3J0IHsgTG9nU2VydmljZSB9IGZyb20gJy4vbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uUG9wdXBTZXJ2aWNlIH0gZnJvbSAnLi9ub3RpZmljYXRpb24tcG9wdXAuc2VydmljZSc7XG5pbXBvcnQgeyBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4vbm90aWZpY2F0aW9uLXN3LnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTm90aWZpY2F0aW9uU2VydmljZSB7XG4gICAgcHJpdmF0ZSBfbm90aWZpY2F0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1ldGFvYmplY3REYXRhTW9kZWxbXT4oW10pO1xuICAgIHByaXZhdGUgX25vdGlmaWNhdGlvbkNvdW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyB1bnJlYWQ6IG51bWJlcjsgYWxsOiBudW1iZXIgfT4oeyB1bnJlYWQ6IDAsIGFsbDogMCB9KTtcbiAgICBwcml2YXRlIF9ub3RpZmljYXRpb25VbnJlYWRDb3VudCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG4gICAgcHJpdmF0ZSBfbm90aWZpY2F0aW9uTG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwYWdlQ291bnQgPSAxO1xuICAgIHBhZ2VJbmRleCA9IDA7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoTk9USUZJQ0FUQUlPTl9QT1BVUF9TRVJWRVIpIHByb3RlY3RlZCBfcG9wdXBTZXJ2aWNlOiBOb3RpZmljYXRpb25Qb3B1cFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2xvZ1NlcnZpY2U6IExvZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2xvd2VyQ2FzZTogTG93ZXJDYXNlUGlwZSxcbiAgICAgICAgcHJpdmF0ZSBfYmJiVHJhbnNsYXRlOiBCYmJUcmFuc2xhdGVQaXBlLFxuICAgICAgICBwcml2YXRlIF9kb21TYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICAgICAgcHJpdmF0ZSBfc2VydmljZVdvcmtlck5vdGlmaWNhdGlvbjogU2VydmljZVdvcmtlck5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX25nWm9uZTogTmdab25lXG4gICAgKSB7fVxuICAgIGdldCBub3RpZmljYXRpb25Db3VudCQoKTogT2JzZXJ2YWJsZTx7IHVucmVhZDogbnVtYmVyOyBhbGw6IG51bWJlciB9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ub3RpZmljYXRpb25Db3VudCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgZ2V0IG5vdGlmaWNhdGlvbnMkKCk6IE9ic2VydmFibGU8TWV0YW9iamVjdERhdGFNb2RlbFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ub3RpZmljYXRpb25zJC5hc09ic2VydmFibGUoKS5waXBlKCk7XG4gICAgfVxuICAgIGdldCBub3RpZmljYXRpb25Mb2FkaW5nJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vdGlmaWNhdGlvbkxvYWRpbmckLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwdWJsaWMgbG9hZE1vcmUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9hZE5vdGlmaWNhdGlvbnModGhpcy5wYWdlSW5kZXgpO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0Tm90aWZpY2F0aW9uVmlld2VkKHRhZ3M6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kQXN5bmMoe1xuICAgICAgICAgICAgUGFyYW1ldGVyczogW3RhZ3NdLFxuICAgICAgICAgICAgTWV0aG9kOiAnU2V0Tm90aWZpY2F0aW9uVmlld2VkJyxcbiAgICAgICAgICAgIFN1Y2Nlc3NGbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1vbGlzdEN1cnIgPSB0aGlzLl9ub3RpZmljYXRpb25zJC5nZXRWYWx1ZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRVbnJlYWRNb0xpc3QgPSBtb2xpc3RDdXJyLm1hcCgoYykgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uYyxcbiAgICAgICAgICAgICAgICAgICAgVW5yZWFkOiB0YWdzLmluZGV4T2YoYy5UYWcpID4gLTEgPyBmYWxzZSA6IGMuVW5yZWFkXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbnMkLm5leHQoWy4uLnVwZGF0ZWRVbnJlYWRNb0xpc3RdKTtcbiAgICAgICAgICAgICAgICB0aGlzLmluY3JlYXNlTm90aWZjYXRpb25Db3VudCgtdGFncy5sZW5ndGgsIDApO1xuICAgICAgICAgICAgICAgIHJldHVybiB0YWdzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIEZhaWxGbjogKGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2dTZXJ2aWNlLmVycm9yKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcHVibGljIGhhbmRsZVRvcGljKGV2ZW50VG9waWMsIGNvbnRlbnQsIG93bmVyS2V5KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudFRvcGljID09PSAnR2xvYmFsUmVwb3J0TW9EZWxldGUnKSB7XG4gICAgICAgICAgICBjb25zdCB7IElkTGlzdCB9OiB7IElkTGlzdDogc3RyaW5nW10gfSA9IGNvbnRlbnQ7XG4gICAgICAgICAgICBjb25zdCBub3RpZmljYXRpb25zID0gdGhpcy5fbm90aWZpY2F0aW9ucyQuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgIGNvbnN0IHsgZmluZEluTm90aWZpY2F0aW9ucywgdW5yZWFkQ291bnQsIGNvdW50IH0gPSB0aGlzLl9maW5kTm90aWZpY2F0aW9uc0RldGFpbHMoSWRMaXN0LCBub3RpZmljYXRpb25zKTtcbiAgICAgICAgICAgIGlmIChmaW5kSW5Ob3RpZmljYXRpb25zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9ucyQubmV4dChub3RpZmljYXRpb25zLmZpbHRlcigoYykgPT4gIUlkTGlzdC5pbmNsdWRlcyhjLklkKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHVucmVhZENvdW50ID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5jcmVhc2VOb3RpZmNhdGlvbkNvdW50KC11bnJlYWRDb3VudCwgLWNvdW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChldmVudFRvcGljID09PSAnR2xvYmFsUmVwb3J0TW9VcGRhdGUnKSB7XG4gICAgICAgICAgICBjb25zdCBub3RpZmljYXRpb25zID0gdGhpcy5fbm90aWZpY2F0aW9ucyQuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgIGNvbnN0IHsgTW9EYXRhTGlzdCB9ID0gY29udGVudDtcbiAgICAgICAgICAgIG5vdGlmaWNhdGlvbnMuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vdGlmTWVzc2FnZSA9IE1vRGF0YUxpc3QuZmluZCgoZCkgPT4gYy5JZCA9PT0gZC5JZCk7XG4gICAgICAgICAgICAgICAgaWYgKG5vdGlmTWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICBjLlVucmVhZCA9IG5vdGlmTWVzc2FnZS5VbnJlYWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJpdmF0ZSBfZmluZE5vdGlmaWNhdGlvbnNEZXRhaWxzKFxuICAgICAgICBJZExpc3Q6IHN0cmluZ1tdLFxuICAgICAgICBub3RpZmljYXRpb25zOiBNZXRhb2JqZWN0RGF0YU1vZGVsW11cbiAgICApOiB7IGZpbmRJbk5vdGlmaWNhdGlvbnM6IGJvb2xlYW47IHVucmVhZENvdW50OiBudW1iZXI7IGNvdW50OiBudW1iZXIgfSB7XG4gICAgICAgIGxldCBmaW5kSW5Ob3RpZmljYXRpb25zID0gZmFsc2U7XG4gICAgICAgIGxldCB1bnJlYWRDb3VudCA9IDA7XG4gICAgICAgIGxldCBjb3VudCA9IDA7XG4gICAgICAgIElkTGlzdC5mb3JFYWNoKChpZCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm91bmROb3RpZmljYXRpb24gPSBub3RpZmljYXRpb25zLmZpbmQoKGMpID0+IGMuSWQgPT09IGlkKTtcbiAgICAgICAgICAgIGlmIChmb3VuZE5vdGlmaWNhdGlvbikge1xuICAgICAgICAgICAgICAgIGZpbmRJbk5vdGlmaWNhdGlvbnMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgICAgICAgICAgaWYgKGZvdW5kTm90aWZpY2F0aW9uLlVucmVhZCkge1xuICAgICAgICAgICAgICAgICAgICB1bnJlYWRDb3VudCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7IGZpbmRJbk5vdGlmaWNhdGlvbnMsIHVucmVhZENvdW50LCBjb3VudCB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGROb3RpZmljYXRpb24oXG4gICAgICAgIG1zZzogc3RyaW5nLFxuICAgICAgICB0aXRsZTogc3RyaW5nLFxuICAgICAgICB0eXBlOiBzdHJpbmcsXG4gICAgICAgIGltYWdlOiBzdHJpbmcsXG4gICAgICAgIG1vLFxuICAgICAgICB1aU9wdGlvbnM6IE5vdGlmeU9wdGlvbnMsXG4gICAgICAgIG90aGVyT3B0aW9uczogUmVjb3JkPHN0cmluZywgYW55PlxuICAgICk6IHZvaWQge1xuICAgICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIGlmIChvdGhlck9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IE1vSWQsIFR5cGVEZWZJZCB9ID0gb3RoZXJPcHRpb25zO1xuICAgICAgICAgICAgICAgIGxldCBuZXdOb3RpZmljYXRpb246IE5vdGlmaWNhdGlvbkl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgICAgICRDYXB0aW9uOiB0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgSWQ6IE1vSWQsXG4gICAgICAgICAgICAgICAgICAgICRUeXBlRGVmSWQ6IFR5cGVEZWZJZCxcbiAgICAgICAgICAgICAgICAgICAgVGl0bGU6IHRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBVbnJlYWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIEljb246IGltYWdlLFxuICAgICAgICAgICAgICAgICAgICBJbWFnZTogJycsXG4gICAgICAgICAgICAgICAgICAgIENvbnRlbnQ6IG1zZyxcbiAgICAgICAgICAgICAgICAgICAgVGFnOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHk6IDAsXG4gICAgICAgICAgICAgICAgICAgIFN1YmplY3Q6ICcnLFxuICAgICAgICAgICAgICAgICAgICBDcmVhdGlvbkRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICAgICAgICAgIENyZWF0aW9uRGF0ZSRDYXB0aW9uOiB0aGlzLl9iYmJUcmFuc2xhdGUudHJhbnNmb3JtKCdEYXRlUl9Ub2RheScpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJzZWRNbyA9IG1vID8gQmFyc2FBcGkuRXh0LmRlY29kZShtbykgOiBudWxsO1xuICAgICAgICAgICAgICAgIG5ld05vdGlmaWNhdGlvbiA9IHRoaXMuX3ByZXBhcmVQcm9wZXJ0aWVzKG5ld05vdGlmaWNhdGlvbiwgcGFyc2VkTW8sIG1zZyk7XG5cbiAgICAgICAgICAgICAgICBpZiAocGFyc2VkTW8pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9saXN0ID0gdGhpcy5fbm90aWZpY2F0aW9ucyQuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9ucyQubmV4dChbbmV3Tm90aWZpY2F0aW9uLCAuLi5tb2xpc3RdKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmNyZWFzZU5vdGlmY2F0aW9uQ291bnQoMSwgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd05vdGlmaWNhdGlvbihuZXdOb3RpZmljYXRpb24sIHBhcnNlZE1vLCB1aU9wdGlvbnMsIG90aGVyT3B0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbmNyZWFzZU5vdGlmY2F0aW9uQ291bnQodW5yZWFkOiBudW1iZXIsIGNvdW50OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY291bnRWYWx1ZSA9IHRoaXMuX25vdGlmaWNhdGlvbkNvdW50JC5nZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCBzdW1VbnJlYWQgPSBjb3VudFZhbHVlLnVucmVhZCArICt1bnJlYWQ7XG4gICAgICAgIGNvbnN0IHN1bUFsbCA9IGNvdW50VmFsdWUuYWxsICsgK2NvdW50O1xuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25Db3VudCQubmV4dCh7IHVucmVhZDogc3VtVW5yZWFkID4gMCA/IHN1bVVucmVhZCA6IDAsIGFsbDogc3VtQWxsID4gMCA/IHN1bUFsbCA6IDAgfSk7XG4gICAgfVxuICAgIHB1YmxpYyBsb2FkVW5yZWFkTm90aWZpY2F0aW9uQ291bnQoKTogdm9pZCB7XG4gICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kQXN5bmMoe1xuICAgICAgICAgICAgUGFyYW1ldGVyczogW10sXG4gICAgICAgICAgICBNZXRob2Q6ICdHZXRTaGVsbGJhck5vdGlmaWNhdGlvbkNvdW50JyxcbiAgICAgICAgICAgIFN1Y2Nlc3NGbjogKGU6IHsgVW5yZWFkOiBudW1iZXI7IEFsbDogbnVtYmVyIH0pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVVbnJlYWRBbmRDb3VudChlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBGYWlsRm46IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nU2VydmljZS5lcnJvcihlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHB1YmxpYyBsb2FkTm90aWZpY2F0aW9ucyhwYWdlSW5kZXg6IG51bWJlciA9IDApOiB2b2lkIHtcbiAgICAgICAgaWYgKHBhZ2VJbmRleCArIDEgPiB0aGlzLnBhZ2VDb3VudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uTG9hZGluZyh0cnVlKTtcbiAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICBQYXJhbWV0ZXJzOiBbcGFnZUluZGV4XSxcbiAgICAgICAgICAgIE1ldGhvZDogJ0dldFNoZWxsYmFyTm90aWZpY2F0aW9ucycsXG4gICAgICAgICAgICBTdWNjZXNzRm46IChlOiB7IFBhZ2VDb3VudDogbnVtYmVyOyBNb0xpc3Q6IE1ldGFvYmplY3REYXRhTW9kZWxbXSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9ucyA9IHRoaXMuX25vdGlmaWNhdGlvbnMkLmdldFZhbHVlKCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm90aWZMaXN0T2ZUYWdzID0gbm90aWZpY2F0aW9ucy5tYXAoKGMpID0+IGMuVGFnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtb2xpc3QgPSBlLk1vTGlzdC5maWx0ZXIoKGMpID0+IG5vdGlmTGlzdE9mVGFncy5pbmRleE9mKGMuVGFnKSA9PT0gLTEpLm1hcCgobW8pID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ByZXBhcmVQcm9wZXJ0aWVzKDxOb3RpZmljYXRpb25JdGVtPm1vLCBtbywgbW8uSU1lc3NhZ2U/LkNvbnRlbnQpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25zJC5uZXh0KFsuLi5ub3RpZmljYXRpb25zLCAuLi5tb2xpc3RdKTtcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2VDb3VudCA9ICtlLlBhZ2VDb3VudDtcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2VJbmRleCA9IHBhZ2VJbmRleCArIDE7XG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25Mb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBGYWlsRm46IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nU2VydmljZS5lcnJvcihlKTtcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkxvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlTm90aWZpY2F0aW9uKG1vbGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdLCBjbG9zZU5vdGlmaWNhdGlvbiA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbW9JZHMgPSB0aGlzLl9zZXROb3RpZmljYXRpb25Mb2FkaW5nKG1vbGlzdCwgdHJ1ZSk7XG4gICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kQXN5bmMoe1xuICAgICAgICAgICAgUGFyYW1ldGVyczogW21vSWRzXSxcbiAgICAgICAgICAgIE1ldGhvZDogJ1JlbW92ZVNoZWxsYmFyTm90aWZpY2F0aW9uJyxcbiAgICAgICAgICAgIFN1Y2Nlc3NGbjogKGU6IHsgVW5yZWFkOiBudW1iZXI7IEFsbDogbnVtYmVyIH0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBub3RpZmljYXRpb25MaXN0ID0gdGhpcy5fbm90aWZpY2F0aW9ucyQuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVVbnJlYWRBbmRDb3VudChlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdNb0xpc3QgPSBub3RpZmljYXRpb25MaXN0LmZpbHRlcigoYykgPT4gbW9JZHMuaW5kZXhPZihjLklkKSA9PT0gLTEpO1xuICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbnMkLm5leHQobmV3TW9MaXN0KTtcbiAgICAgICAgICAgICAgICBpZiAoY2xvc2VOb3RpZmljYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VydmljZVdvcmtlck5vdGlmaWNhdGlvbi5jbG9zZU5vdGlmaWNhdGlvbnMobW9JZHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fbm90aWZpY2F0aW9uQ291bnQkLmdldFZhbHVlKCkuYWxsID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWROb3RpZmljYXRpb25zKHRoaXMucGFnZUluZGV4IC0gMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIEZhaWxGbjogKGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2dTZXJ2aWNlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldE5vdGlmaWNhdGlvbkxvYWRpbmcobW9saXN0LCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwcml2YXRlIF91cGRhdGVVbnJlYWRBbmRDb3VudChlOiB7IFVucmVhZDogbnVtYmVyOyBBbGw6IG51bWJlciB9KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvblVucmVhZENvdW50JC5uZXh0KCtlLlVucmVhZCk7XG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbkNvdW50JC5uZXh0KHsgdW5yZWFkOiArZS5VbnJlYWQsIGFsbDogK2UuQWxsIH0pO1xuICAgIH1cblxuICAgIGdldCBTdXBwb3J0Tm90aWZpY2F0aW9ucygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBOb3RpZmljYXRpb24gIT09ICd1bmRlZmluZWQnICYmIHRoaXMuX3NlcnZpY2VXb3JrZXJOb3RpZmljYXRpb24uaXNFbmFibGVkO1xuICAgIH1cbiAgICBwdWJsaWMgc2hvd05vdGlmaWNhdGlvbihcbiAgICAgICAgbm90aWZpY2F0aW9uSXRlbTogTm90aWZpY2F0aW9uSXRlbSxcbiAgICAgICAgbW86IE1ldGFvYmplY3REYXRhTW9kZWwgfCBudWxsLFxuICAgICAgICB1aU9wdGlvbnM6IE5vdGlmeU9wdGlvbnMsXG4gICAgICAgIG90aGVyT3B0aW9uczogUmVjb3JkPHN0cmluZywgYW55PlxuICAgICk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuU3VwcG9ydE5vdGlmaWNhdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ1NlcnZpY2Uud2FybihgSW5BcHAgTm90aWZpY2F0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuYCk7XG4gICAgICAgICAgICB1aU9wdGlvbnMgPSB1aU9wdGlvbnMgPz8ge307XG4gICAgICAgICAgICB1aU9wdGlvbnMuTm90aWZpY2F0aW9uSXRlbSA9IG5vdGlmaWNhdGlvbkl0ZW07XG4gICAgICAgICAgICB0aGlzLl9wb3B1cE5vdGlmeShub3RpZmljYXRpb25JdGVtLCBtbywgdWlPcHRpb25zLCBvdGhlck9wdGlvbnMpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2luQXBwTm90aWZ5KG5vdGlmaWNhdGlvbkl0ZW0pO1xuICAgIH1cbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvbkxvYWRpbmcobG9hZGluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25Mb2FkaW5nJC5uZXh0KGxvYWRpbmcpO1xuICAgIH1cbiAgICBwcml2YXRlIF9zZXROb3RpZmljYXRpb25Mb2FkaW5nKG1vbGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdLCBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZSk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgbW9saXN0Q3VyciA9IHRoaXMuX25vdGlmaWNhdGlvbnMkLmdldFZhbHVlKCk7XG4gICAgICAgIGNvbnN0IG1vSWRzID0gbW9saXN0Lm1hcCgoYykgPT4gYy5JZCk7XG4gICAgICAgIGNvbnN0IG1vbGlzdFdpdGhMb2FkaW5nUHJvcGVydHkgPSBtb2xpc3RDdXJyLm1hcCgoYykgPT4gKHtcbiAgICAgICAgICAgIC4uLmMsXG4gICAgICAgICAgICAkTm90aWZpY2F0b2luTG9hZGluZzogbW9JZHMuaW5kZXhPZihjLklkKSAhPT0gLTEgPyBsb2FkaW5nIDogYy4kTm90aWZpY2F0b2luTG9hZGluZ1xuICAgICAgICB9KSk7XG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbnMkLm5leHQoWy4uLm1vbGlzdFdpdGhMb2FkaW5nUHJvcGVydHldKTtcbiAgICAgICAgcmV0dXJuIG1vSWRzO1xuICAgIH1cbiAgICBwcml2YXRlIF9wb3B1cE5vdGlmeShcbiAgICAgICAgbm90aWZpY2F0aW9uSXRlbTogTm90aWZpY2F0aW9uSXRlbSxcbiAgICAgICAgbW86IE1ldGFvYmplY3REYXRhTW9kZWwgfCBudWxsLFxuICAgICAgICB1aU9wdGlvbnM6IE5vdGlmeU9wdGlvbnMsXG4gICAgICAgIG90aGVyT3B0aW9uczogUmVjb3JkPHN0cmluZywgYW55PlxuICAgICk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wb3B1cFNlcnZpY2UucG9wdXBOb3RpZnkoXG4gICAgICAgICAgICBub3RpZmljYXRpb25JdGVtLiRTYWZlQ29udGVudCxcbiAgICAgICAgICAgIG5vdGlmaWNhdGlvbkl0ZW0uVGl0bGUsXG4gICAgICAgICAgICBub3RpZmljYXRpb25JdGVtLlN1YmplY3QsXG4gICAgICAgICAgICBub3RpZmljYXRpb25JdGVtLkltYWdlLFxuICAgICAgICAgICAgbW8sXG4gICAgICAgICAgICB1aU9wdGlvbnMsXG4gICAgICAgICAgICBvdGhlck9wdGlvbnNcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfcHJlcGFyZVByb3BlcnRpZXMoXG4gICAgICAgIG5vdGlmaWNhdGlvbkl0ZW06IE5vdGlmaWNhdGlvbkl0ZW0sXG4gICAgICAgIG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsLFxuICAgICAgICBjb250ZW50OiBzdHJpbmdcbiAgICApOiBOb3RpZmljYXRpb25JdGVtIHtcbiAgICAgICAgaWYgKCFtbykge1xuICAgICAgICAgICAgcmV0dXJuIG5vdGlmaWNhdGlvbkl0ZW07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLm5vdGlmaWNhdGlvbkl0ZW0sXG4gICAgICAgICAgICAuLi5tbyxcbiAgICAgICAgICAgIFVpQWN0aW9uczogIW1vLlVpQWN0aW9ucyA/IFtdIDogSlNPTi5wYXJzZShtby5VaUFjdGlvbnMpLFxuICAgICAgICAgICAgQ3JlYXRpb25EYXRlOiBtby5JTWVzc2FnZS5DcmVhdGlvbkRhdGUsXG4gICAgICAgICAgICBDcmVhdGlvbkRhdGUkQ2FwdGlvbjogbW8uSU1lc3NhZ2UuQ3JlYXRpb25EYXRlJENhcHRpb24sXG4gICAgICAgICAgICBDcmVhdG9yVXNlcjogbW8uSU1lc3NhZ2UuQ3JlYXRvclVzZXIsXG4gICAgICAgICAgICBDcmVhdG9yVXNlciRDYXB0aW9uOiBtby5JTWVzc2FnZS5DcmVhdG9yVXNlciRDYXB0aW9uLFxuICAgICAgICAgICAgSWNvbjogYCR7QmFyc2FBcGkuQncuT3JpZ2luKCl9JHtub3RpZmljYXRpb25JdGVtLkljb259YCxcbiAgICAgICAgICAgICRTYWZlQ29udGVudDogdGhpcy5fZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGNvbnRlbnQpXG4gICAgICAgIH07XG4gICAgfVxuICAgIHByaXZhdGUgX2luQXBwTm90aWZ5KG5vdGlmaWNhdGlvbkl0ZW06IE5vdGlmaWNhdGlvbkl0ZW0pOiB2b2lkIHtcbiAgICAgICAgTm90aWZpY2F0aW9uLnJlcXVlc3RQZXJtaXNzaW9uKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxhbmcgPSBCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLkN1bHR1cmU7XG4gICAgICAgICAgICBjb25zdCBpc1J0bCA9IEJhcnNhQXBpLkxvZ2luRm9ybURhdGEuQ3VsdHVyZXNSdGxbbGFuZ107XG5cbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09ICdncmFudGVkJykge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlcnZpY2VXb3JrZXJOb3RpZmljYXRpb24uc2hvd05vdGlmaWNhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbkl0ZW0sXG4gICAgICAgICAgICAgICAgICAgIGlzUnRsLFxuICAgICAgICAgICAgICAgICAgICBsYW5nXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFRPRE86cGVybWlzc2lvbiBkZW5pZWRcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2dTZXJ2aWNlLmVycm9yKCdub3RpZmljYXRpb24gcGVybWlzc2lvbiBkZW5pZWQuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
266
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1ub3Zpbi1yYXktY29yZS9zcmMvbGliL3NlcnZpY2VzL25vdGlmaWNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTNELE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXpELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7O0FBT2xFLE1BQU0sT0FBTyxtQkFBbUI7SUFPNUIsWUFDa0QsYUFBdUMsRUFDN0UsV0FBdUIsRUFDdkIsVUFBeUIsRUFDekIsYUFBK0IsRUFDL0IsYUFBMkIsRUFDM0IsMEJBQTRELEVBQzVELE9BQWU7UUFOdUIsa0JBQWEsR0FBYixhQUFhLENBQTBCO1FBQzdFLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLGVBQVUsR0FBVixVQUFVLENBQWU7UUFDekIsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQy9CLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzNCLCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBa0M7UUFDNUQsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQWJuQixvQkFBZSxHQUFHLElBQUksZUFBZSxDQUF3QixFQUFFLENBQUMsQ0FBQztRQUNqRSx3QkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBa0MsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xHLDhCQUF5QixHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzNELDBCQUFxQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUss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WyJpbXBvcnQgeyBMb3dlckNhc2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgQmFyc2FBcGkgfSBmcm9tICcuLi9hYnN0cmFjdC1jbGFzc2VzL2JhcnNhLWFwaSc7XHJcbmltcG9ydCB7IE1ldGFvYmplY3REYXRhTW9kZWwsIE5vdGlmaWNhdGlvbkl0ZW0sIE5vdGlmeU9wdGlvbnMgfSBmcm9tICcuLi9hYnN0cmFjdC1jbGFzc2VzL21vZGVscyc7XHJcbmltcG9ydCB7IE5PVElGSUNBVEFJT05fUE9QVVBfU0VSVkVSIH0gZnJvbSAnLi4vaW5qZGVjdGlvbi10b2tlbnMnO1xyXG5pbXBvcnQgeyBCYmJUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vcGlwZXMvYmJiLXRyYW5zbGF0ZS5waXBlJztcclxuaW1wb3J0IHsgTG9nU2VydmljZSB9IGZyb20gJy4vbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb25Qb3B1cFNlcnZpY2UgfSBmcm9tICcuL25vdGlmaWNhdGlvbi1wb3B1cC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2VydmljZVdvcmtlck5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuL25vdGlmaWNhdGlvbi1zdy5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvblNlcnZpY2Uge1xyXG4gICAgcHJpdmF0ZSBfbm90aWZpY2F0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1ldGFvYmplY3REYXRhTW9kZWxbXT4oW10pO1xyXG4gICAgcHJpdmF0ZSBfbm90aWZpY2F0aW9uQ291bnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IHVucmVhZDogbnVtYmVyOyBhbGw6IG51bWJlciB9Pih7IHVucmVhZDogMCwgYWxsOiAwIH0pO1xyXG4gICAgcHJpdmF0ZSBfbm90aWZpY2F0aW9uVW5yZWFkQ291bnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xyXG4gICAgcHJpdmF0ZSBfbm90aWZpY2F0aW9uTG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHBhZ2VDb3VudCA9IDE7XHJcbiAgICBwYWdlSW5kZXggPSAwO1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgQEluamVjdChOT1RJRklDQVRBSU9OX1BPUFVQX1NFUlZFUikgcHJvdGVjdGVkIF9wb3B1cFNlcnZpY2U6IE5vdGlmaWNhdGlvblBvcHVwU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9sb2dTZXJ2aWNlOiBMb2dTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2xvd2VyQ2FzZTogTG93ZXJDYXNlUGlwZSxcclxuICAgICAgICBwcml2YXRlIF9iYmJUcmFuc2xhdGU6IEJiYlRyYW5zbGF0ZVBpcGUsXHJcbiAgICAgICAgcHJpdmF0ZSBfZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICAgICAgcHJpdmF0ZSBfc2VydmljZVdvcmtlck5vdGlmaWNhdGlvbjogU2VydmljZVdvcmtlck5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmVcclxuICAgICkge31cclxuICAgIGdldCBub3RpZmljYXRpb25Db3VudCQoKTogT2JzZXJ2YWJsZTx7IHVucmVhZDogbnVtYmVyOyBhbGw6IG51bWJlciB9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vdGlmaWNhdGlvbkNvdW50JC5hc09ic2VydmFibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgbm90aWZpY2F0aW9ucyQoKTogT2JzZXJ2YWJsZTxNZXRhb2JqZWN0RGF0YU1vZGVsW10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fbm90aWZpY2F0aW9ucyQuYXNPYnNlcnZhYmxlKCkucGlwZSgpO1xyXG4gICAgfVxyXG4gICAgZ2V0IG5vdGlmaWNhdGlvbkxvYWRpbmckKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9ub3RpZmljYXRpb25Mb2FkaW5nJC5hc09ic2VydmFibGUoKTtcclxuICAgIH1cclxuICAgIHB1YmxpYyBsb2FkTW9yZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmxvYWROb3RpZmljYXRpb25zKHRoaXMucGFnZUluZGV4KTtcclxuICAgIH1cclxuICAgIHB1YmxpYyBzZXROb3RpZmljYXRpb25WaWV3ZWQodGFnczogc3RyaW5nW10pOiB2b2lkIHtcclxuICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZEFzeW5jKHtcclxuICAgICAgICAgICAgUGFyYW1ldGVyczogW3RhZ3NdLFxyXG4gICAgICAgICAgICBNZXRob2Q6ICdTZXROb3RpZmljYXRpb25WaWV3ZWQnLFxyXG4gICAgICAgICAgICBTdWNjZXNzRm46ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG1vbGlzdEN1cnIgPSB0aGlzLl9ub3RpZmljYXRpb25zJC5nZXRWYWx1ZSgpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZFVucmVhZE1vTGlzdCA9IG1vbGlzdEN1cnIubWFwKChjKSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLmMsXHJcbiAgICAgICAgICAgICAgICAgICAgVW5yZWFkOiB0YWdzLmluZGV4T2YoYy5UYWcpID4gLTEgPyBmYWxzZSA6IGMuVW5yZWFkXHJcbiAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25zJC5uZXh0KFsuLi51cGRhdGVkVW5yZWFkTW9MaXN0XSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmluY3JlYXNlTm90aWZjYXRpb25Db3VudCgtdGFncy5sZW5ndGgsIDApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhZ3M7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIEZhaWxGbjogKGUpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2xvZ1NlcnZpY2UuZXJyb3IoZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHB1YmxpYyBoYW5kbGVUb3BpYyhldmVudFRvcGljLCBjb250ZW50LCBvd25lcktleSk6IHZvaWQge1xyXG4gICAgICAgIGlmIChldmVudFRvcGljID09PSAnR2xvYmFsUmVwb3J0TW9EZWxldGUnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgSWRMaXN0IH06IHsgSWRMaXN0OiBzdHJpbmdbXSB9ID0gY29udGVudDtcclxuICAgICAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9ucyA9IHRoaXMuX25vdGlmaWNhdGlvbnMkLmdldFZhbHVlKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgZmluZEluTm90aWZpY2F0aW9ucywgdW5yZWFkQ291bnQsIGNvdW50IH0gPSB0aGlzLl9maW5kTm90aWZpY2F0aW9uc0RldGFpbHMoSWRMaXN0LCBub3RpZmljYXRpb25zKTtcclxuICAgICAgICAgICAgaWYgKGZpbmRJbk5vdGlmaWNhdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbnMkLm5leHQobm90aWZpY2F0aW9ucy5maWx0ZXIoKGMpID0+ICFJZExpc3QuaW5jbHVkZXMoYy5JZCkpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodW5yZWFkQ291bnQgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmluY3JlYXNlTm90aWZjYXRpb25Db3VudCgtdW5yZWFkQ291bnQsIC1jb3VudCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50VG9waWMgPT09ICdHbG9iYWxSZXBvcnRNb1VwZGF0ZScpIHtcclxuICAgICAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9ucyA9IHRoaXMuX25vdGlmaWNhdGlvbnMkLmdldFZhbHVlKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgTW9EYXRhTGlzdCB9ID0gY29udGVudDtcclxuICAgICAgICAgICAgbm90aWZpY2F0aW9ucy5mb3JFYWNoKChjKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBub3RpZk1lc3NhZ2UgPSBNb0RhdGFMaXN0LmZpbmQoKGQpID0+IGMuSWQgPT09IGQuSWQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5vdGlmTWVzc2FnZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGMuVW5yZWFkID0gbm90aWZNZXNzYWdlLlVucmVhZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBfZmluZE5vdGlmaWNhdGlvbnNEZXRhaWxzKFxyXG4gICAgICAgIElkTGlzdDogc3RyaW5nW10sXHJcbiAgICAgICAgbm90aWZpY2F0aW9uczogTWV0YW9iamVjdERhdGFNb2RlbFtdXHJcbiAgICApOiB7IGZpbmRJbk5vdGlmaWNhdGlvbnM6IGJvb2xlYW47IHVucmVhZENvdW50OiBudW1iZXI7IGNvdW50OiBudW1iZXIgfSB7XHJcbiAgICAgICAgbGV0IGZpbmRJbk5vdGlmaWNhdGlvbnMgPSBmYWxzZTtcclxuICAgICAgICBsZXQgdW5yZWFkQ291bnQgPSAwO1xyXG4gICAgICAgIGxldCBjb3VudCA9IDA7XHJcbiAgICAgICAgSWRMaXN0LmZvckVhY2goKGlkKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZvdW5kTm90aWZpY2F0aW9uID0gbm90aWZpY2F0aW9ucy5maW5kKChjKSA9PiBjLklkID09PSBpZCk7XHJcbiAgICAgICAgICAgIGlmIChmb3VuZE5vdGlmaWNhdGlvbikge1xyXG4gICAgICAgICAgICAgICAgZmluZEluTm90aWZpY2F0aW9ucyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBjb3VudCsrO1xyXG4gICAgICAgICAgICAgICAgaWYgKGZvdW5kTm90aWZpY2F0aW9uLlVucmVhZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHVucmVhZENvdW50Kys7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4geyBmaW5kSW5Ob3RpZmljYXRpb25zLCB1bnJlYWRDb3VudCwgY291bnQgfTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYWRkTm90aWZpY2F0aW9uKFxyXG4gICAgICAgIG1zZzogc3RyaW5nLFxyXG4gICAgICAgIHRpdGxlOiBzdHJpbmcsXHJcbiAgICAgICAgdHlwZTogc3RyaW5nLFxyXG4gICAgICAgIGltYWdlOiBzdHJpbmcsXHJcbiAgICAgICAgbW8sXHJcbiAgICAgICAgdWlPcHRpb25zOiBOb3RpZnlPcHRpb25zLFxyXG4gICAgICAgIG90aGVyT3B0aW9uczogUmVjb3JkPHN0cmluZywgYW55PlxyXG4gICAgKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChvdGhlck9wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgTW9JZCwgVHlwZURlZklkIH0gPSBvdGhlck9wdGlvbnM7XHJcbiAgICAgICAgICAgICAgICBsZXQgbmV3Tm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb25JdGVtID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICRDYXB0aW9uOiB0aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICBJZDogTW9JZCxcclxuICAgICAgICAgICAgICAgICAgICAkVHlwZURlZklkOiBUeXBlRGVmSWQsXHJcbiAgICAgICAgICAgICAgICAgICAgVGl0bGU6IHRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgIFVucmVhZDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICBJY29uOiBpbWFnZSxcclxuICAgICAgICAgICAgICAgICAgICBJbWFnZTogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgQ29udGVudDogbXNnLFxyXG4gICAgICAgICAgICAgICAgICAgIFRhZzogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHk6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgU3ViamVjdDogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgQ3JlYXRpb25EYXRlOiBuZXcgRGF0ZSgpLFxyXG4gICAgICAgICAgICAgICAgICAgIENyZWF0aW9uRGF0ZSRDYXB0aW9uOiB0aGlzLl9iYmJUcmFuc2xhdGUudHJhbnNmb3JtKCdEYXRlUl9Ub2RheScpXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkTW8gPSBtbyA/IEJhcnNhQXBpLkV4dC5kZWNvZGUobW8pIDogbnVsbDtcclxuICAgICAgICAgICAgICAgIG5ld05vdGlmaWNhdGlvbiA9IHRoaXMuX3ByZXBhcmVQcm9wZXJ0aWVzKG5ld05vdGlmaWNhdGlvbiwgcGFyc2VkTW8sIG1zZyk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHBhcnNlZE1vKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9saXN0ID0gdGhpcy5fbm90aWZpY2F0aW9ucyQuZ2V0VmFsdWUoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25zJC5uZXh0KFtuZXdOb3RpZmljYXRpb24sIC4uLm1vbGlzdF0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5jcmVhc2VOb3RpZmNhdGlvbkNvdW50KDEsIDEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zaG93Tm90aWZpY2F0aW9uKG5ld05vdGlmaWNhdGlvbiwgcGFyc2VkTW8sIHVpT3B0aW9ucywgb3RoZXJPcHRpb25zKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpbmNyZWFzZU5vdGlmY2F0aW9uQ291bnQodW5yZWFkOiBudW1iZXIsIGNvdW50OiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBjb3VudFZhbHVlID0gdGhpcy5fbm90aWZpY2F0aW9uQ291bnQkLmdldFZhbHVlKCk7XHJcbiAgICAgICAgY29uc3Qgc3VtVW5yZWFkID0gY291bnRWYWx1ZS51bnJlYWQgKyArdW5yZWFkO1xyXG4gICAgICAgIGNvbnN0IHN1bUFsbCA9IGNvdW50VmFsdWUuYWxsICsgK2NvdW50O1xyXG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbkNvdW50JC5uZXh0KHsgdW5yZWFkOiBzdW1VbnJlYWQgPiAwID8gc3VtVW5yZWFkIDogMCwgYWxsOiBzdW1BbGwgPiAwID8gc3VtQWxsIDogMCB9KTtcclxuICAgIH1cclxuICAgIHB1YmxpYyBsb2FkVW5yZWFkTm90aWZpY2F0aW9uQ291bnQoKTogdm9pZCB7XHJcbiAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XHJcbiAgICAgICAgICAgIFBhcmFtZXRlcnM6IFtdLFxyXG4gICAgICAgICAgICBNZXRob2Q6ICdHZXRTaGVsbGJhck5vdGlmaWNhdGlvbkNvdW50JyxcclxuICAgICAgICAgICAgU3VjY2Vzc0ZuOiAoZTogeyBVbnJlYWQ6IG51bWJlcjsgQWxsOiBudW1iZXIgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlVW5yZWFkQW5kQ291bnQoZSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIEZhaWxGbjogKGUpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2xvZ1NlcnZpY2UuZXJyb3IoZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHB1YmxpYyBsb2FkTm90aWZpY2F0aW9ucyhwYWdlSW5kZXg6IG51bWJlciA9IDApOiB2b2lkIHtcclxuICAgICAgICBpZiAocGFnZUluZGV4ICsgMSA+IHRoaXMucGFnZUNvdW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25Mb2FkaW5nKHRydWUpO1xyXG4gICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kQXN5bmMoe1xyXG4gICAgICAgICAgICBQYXJhbWV0ZXJzOiBbcGFnZUluZGV4XSxcclxuICAgICAgICAgICAgTWV0aG9kOiAnR2V0U2hlbGxiYXJOb3RpZmljYXRpb25zJyxcclxuICAgICAgICAgICAgU3VjY2Vzc0ZuOiAoZTogeyBQYWdlQ291bnQ6IG51bWJlcjsgTW9MaXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW10gfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9ucyA9IHRoaXMuX25vdGlmaWNhdGlvbnMkLmdldFZhbHVlKCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBub3RpZkxpc3RPZlRhZ3MgPSBub3RpZmljYXRpb25zLm1hcCgoYykgPT4gYy5UYWcpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbW9saXN0ID0gZS5Nb0xpc3QuZmlsdGVyKChjKSA9PiBub3RpZkxpc3RPZlRhZ3MuaW5kZXhPZihjLlRhZykgPT09IC0xKS5tYXAoKG1vKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ByZXBhcmVQcm9wZXJ0aWVzKDxOb3RpZmljYXRpb25JdGVtPm1vLCBtbywgbW8uSU1lc3NhZ2U/LkNvbnRlbnQpXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9ucyQubmV4dChbLi4ubm90aWZpY2F0aW9ucywgLi4ubW9saXN0XSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2VDb3VudCA9ICtlLlBhZ2VDb3VudDtcclxuICAgICAgICAgICAgICAgIHRoaXMucGFnZUluZGV4ID0gcGFnZUluZGV4ICsgMTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uTG9hZGluZyhmYWxzZSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIEZhaWxGbjogKGUpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2xvZ1NlcnZpY2UuZXJyb3IoZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkxvYWRpbmcoZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlbW92ZU5vdGlmaWNhdGlvbihtb2xpc3Q6IE1ldGFvYmplY3REYXRhTW9kZWxbXSwgY2xvc2VOb3RpZmljYXRpb24gPSB0cnVlKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgbW9JZHMgPSB0aGlzLl9zZXROb3RpZmljYXRpb25Mb2FkaW5nKG1vbGlzdCwgdHJ1ZSk7XHJcbiAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XHJcbiAgICAgICAgICAgIFBhcmFtZXRlcnM6IFttb0lkc10sXHJcbiAgICAgICAgICAgIE1ldGhvZDogJ1JlbW92ZVNoZWxsYmFyTm90aWZpY2F0aW9uJyxcclxuICAgICAgICAgICAgU3VjY2Vzc0ZuOiAoZTogeyBVbnJlYWQ6IG51bWJlcjsgQWxsOiBudW1iZXIgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9uTGlzdCA9IHRoaXMuX25vdGlmaWNhdGlvbnMkLmdldFZhbHVlKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVVbnJlYWRBbmRDb3VudChlKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld01vTGlzdCA9IG5vdGlmaWNhdGlvbkxpc3QuZmlsdGVyKChjKSA9PiBtb0lkcy5pbmRleE9mKGMuSWQpID09PSAtMSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25zJC5uZXh0KG5ld01vTGlzdCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2xvc2VOb3RpZmljYXRpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uLmNsb3NlTm90aWZpY2F0aW9ucyhtb0lkcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fbm90aWZpY2F0aW9uQ291bnQkLmdldFZhbHVlKCkuYWxsID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZE5vdGlmaWNhdGlvbnModGhpcy5wYWdlSW5kZXggLSAxKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgRmFpbEZuOiAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nU2VydmljZS5lcnJvcihlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3NldE5vdGlmaWNhdGlvbkxvYWRpbmcobW9saXN0LCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgX3VwZGF0ZVVucmVhZEFuZENvdW50KGU6IHsgVW5yZWFkOiBudW1iZXI7IEFsbDogbnVtYmVyIH0pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25VbnJlYWRDb3VudCQubmV4dCgrZS5VbnJlYWQpO1xyXG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbkNvdW50JC5uZXh0KHsgdW5yZWFkOiArZS5VbnJlYWQsIGFsbDogK2UuQWxsIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBTdXBwb3J0Tm90aWZpY2F0aW9ucygpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIE5vdGlmaWNhdGlvbiAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5fc2VydmljZVdvcmtlck5vdGlmaWNhdGlvbi5pc0VuYWJsZWQ7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgc2hvd05vdGlmaWNhdGlvbihcclxuICAgICAgICBub3RpZmljYXRpb25JdGVtOiBOb3RpZmljYXRpb25JdGVtLFxyXG4gICAgICAgIG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsIHwgbnVsbCxcclxuICAgICAgICB1aU9wdGlvbnM6IE5vdGlmeU9wdGlvbnMsXHJcbiAgICAgICAgb3RoZXJPcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+XHJcbiAgICApOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuU3VwcG9ydE5vdGlmaWNhdGlvbnMpIHtcclxuICAgICAgICAgICAgdGhpcy5fbG9nU2VydmljZS53YXJuKGBJbkFwcCBOb3RpZmljYXRpb24gaXMgbm90IHN1cHBvcnRlZC5gKTtcclxuICAgICAgICAgICAgdWlPcHRpb25zID0gdWlPcHRpb25zID8/IHt9O1xyXG4gICAgICAgICAgICB1aU9wdGlvbnMuTm90aWZpY2F0aW9uSXRlbSA9IG5vdGlmaWNhdGlvbkl0ZW07XHJcbiAgICAgICAgICAgIHRoaXMuX3BvcHVwTm90aWZ5KG5vdGlmaWNhdGlvbkl0ZW0sIG1vLCB1aU9wdGlvbnMsIG90aGVyT3B0aW9ucyk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5faW5BcHBOb3RpZnkobm90aWZpY2F0aW9uSXRlbSk7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvbkxvYWRpbmcobG9hZGluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbkxvYWRpbmckLm5leHQobG9hZGluZyk7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9zZXROb3RpZmljYXRpb25Mb2FkaW5nKG1vbGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdLCBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZSk6IHN0cmluZ1tdIHtcclxuICAgICAgICBjb25zdCBtb2xpc3RDdXJyID0gdGhpcy5fbm90aWZpY2F0aW9ucyQuZ2V0VmFsdWUoKTtcclxuICAgICAgICBjb25zdCBtb0lkcyA9IG1vbGlzdC5tYXAoKGMpID0+IGMuSWQpO1xyXG4gICAgICAgIGNvbnN0IG1vbGlzdFdpdGhMb2FkaW5nUHJvcGVydHkgPSBtb2xpc3RDdXJyLm1hcCgoYykgPT4gKHtcclxuICAgICAgICAgICAgLi4uYyxcclxuICAgICAgICAgICAgJE5vdGlmaWNhdG9pbkxvYWRpbmc6IG1vSWRzLmluZGV4T2YoYy5JZCkgIT09IC0xID8gbG9hZGluZyA6IGMuJE5vdGlmaWNhdG9pbkxvYWRpbmdcclxuICAgICAgICB9KSk7XHJcbiAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9ucyQubmV4dChbLi4ubW9saXN0V2l0aExvYWRpbmdQcm9wZXJ0eV0pO1xyXG4gICAgICAgIHJldHVybiBtb0lkcztcclxuICAgIH1cclxuICAgIHByaXZhdGUgX3BvcHVwTm90aWZ5KFxyXG4gICAgICAgIG5vdGlmaWNhdGlvbkl0ZW06IE5vdGlmaWNhdGlvbkl0ZW0sXHJcbiAgICAgICAgbW86IE1ldGFvYmplY3REYXRhTW9kZWwgfCBudWxsLFxyXG4gICAgICAgIHVpT3B0aW9uczogTm90aWZ5T3B0aW9ucyxcclxuICAgICAgICBvdGhlck9wdGlvbnM6IFJlY29yZDxzdHJpbmcsIGFueT5cclxuICAgICk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3BvcHVwU2VydmljZS5wb3B1cE5vdGlmeShcclxuICAgICAgICAgICAgbm90aWZpY2F0aW9uSXRlbS4kU2FmZUNvbnRlbnQsXHJcbiAgICAgICAgICAgIG5vdGlmaWNhdGlvbkl0ZW0uVGl0bGUsXHJcbiAgICAgICAgICAgIG5vdGlmaWNhdGlvbkl0ZW0uU3ViamVjdCxcclxuICAgICAgICAgICAgbm90aWZpY2F0aW9uSXRlbS5JbWFnZSxcclxuICAgICAgICAgICAgbW8sXHJcbiAgICAgICAgICAgIHVpT3B0aW9ucyxcclxuICAgICAgICAgICAgb3RoZXJPcHRpb25zXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgX3ByZXBhcmVQcm9wZXJ0aWVzKFxyXG4gICAgICAgIG5vdGlmaWNhdGlvbkl0ZW06IE5vdGlmaWNhdGlvbkl0ZW0sXHJcbiAgICAgICAgbW86IE1ldGFvYmplY3REYXRhTW9kZWwsXHJcbiAgICAgICAgY29udGVudDogc3RyaW5nXHJcbiAgICApOiBOb3RpZmljYXRpb25JdGVtIHtcclxuICAgICAgICBpZiAoIW1vKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBub3RpZmljYXRpb25JdGVtO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAuLi5ub3RpZmljYXRpb25JdGVtLFxyXG4gICAgICAgICAgICAuLi5tbyxcclxuICAgICAgICAgICAgVWlBY3Rpb25zOiAhbW8uVWlBY3Rpb25zID8gW10gOiBKU09OLnBhcnNlKG1vLlVpQWN0aW9ucyksXHJcbiAgICAgICAgICAgIENyZWF0aW9uRGF0ZTogbW8uSU1lc3NhZ2UuQ3JlYXRpb25EYXRlLFxyXG4gICAgICAgICAgICBDcmVhdGlvbkRhdGUkQ2FwdGlvbjogbW8uSU1lc3NhZ2UuQ3JlYXRpb25EYXRlJENhcHRpb24sXHJcbiAgICAgICAgICAgIENyZWF0b3JVc2VyOiBtby5JTWVzc2FnZS5DcmVhdG9yVXNlcixcclxuICAgICAgICAgICAgQ3JlYXRvclVzZXIkQ2FwdGlvbjogbW8uSU1lc3NhZ2UuQ3JlYXRvclVzZXIkQ2FwdGlvbixcclxuICAgICAgICAgICAgSWNvbjogYCR7QmFyc2FBcGkuQncuT3JpZ2luKCl9JHtub3RpZmljYXRpb25JdGVtLkljb259YCxcclxuICAgICAgICAgICAgJFNhZmVDb250ZW50OiB0aGlzLl9kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoY29udGVudClcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBfaW5BcHBOb3RpZnkobm90aWZpY2F0aW9uSXRlbTogTm90aWZpY2F0aW9uSXRlbSk6IHZvaWQge1xyXG4gICAgICAgIE5vdGlmaWNhdGlvbi5yZXF1ZXN0UGVybWlzc2lvbigocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxhbmcgPSBCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLkN1bHR1cmU7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzUnRsID0gQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5DdWx0dXJlc1J0bFtsYW5nXTtcclxuXHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09ICdncmFudGVkJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2VydmljZVdvcmtlck5vdGlmaWNhdGlvbi5zaG93Tm90aWZpY2F0aW9uKHtcclxuICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb25JdGVtLFxyXG4gICAgICAgICAgICAgICAgICAgIGlzUnRsLFxyXG4gICAgICAgICAgICAgICAgICAgIGxhbmdcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gVE9ETzpwZXJtaXNzaW9uIGRlbmllZFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nU2VydmljZS5lcnJvcignbm90aWZpY2F0aW9uIHBlcm1pc3Npb24gZGVuaWVkLicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIl19