@alfresco/aca-content 4.1.0 → 4.2.0-5542991658

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.
Files changed (43) hide show
  1. package/assets/app.extensions.json +3 -3
  2. package/esm2020/lib/aca-content.module.mjs +2 -2
  3. package/esm2020/lib/aca-content.routes.mjs +27 -27
  4. package/esm2020/lib/extensions/core.extensions.module.mjs +2 -3
  5. package/esm2020/lib/services/node-template.service.mjs +1 -1
  6. package/esm2020/ms-office/aos-extension.module.mjs +7 -9
  7. package/esm2020/preview/alfresco-aca-content-preview.mjs +5 -0
  8. package/esm2020/preview/lib/components/preview.component.mjs +406 -0
  9. package/esm2020/preview/lib/preview.module.mjs +84 -0
  10. package/esm2020/preview/public-api.mjs +29 -0
  11. package/esm2020/viewer/alfresco-aca-content-viewer.mjs +5 -0
  12. package/esm2020/viewer/lib/components/viewer/viewer.component.mjs +402 -0
  13. package/esm2020/viewer/lib/viewer.module.mjs +81 -0
  14. package/esm2020/viewer/public-api.mjs +29 -0
  15. package/fesm2015/alfresco-aca-content-ms-office.mjs +4 -5
  16. package/fesm2015/alfresco-aca-content-ms-office.mjs.map +1 -1
  17. package/fesm2015/alfresco-aca-content-preview.mjs +495 -0
  18. package/fesm2015/alfresco-aca-content-preview.mjs.map +1 -0
  19. package/fesm2015/alfresco-aca-content-viewer.mjs +491 -0
  20. package/fesm2015/alfresco-aca-content-viewer.mjs.map +1 -0
  21. package/fesm2015/alfresco-aca-content.mjs +28 -86
  22. package/fesm2015/alfresco-aca-content.mjs.map +1 -1
  23. package/fesm2020/alfresco-aca-content-ms-office.mjs +4 -5
  24. package/fesm2020/alfresco-aca-content-ms-office.mjs.map +1 -1
  25. package/fesm2020/alfresco-aca-content-preview.mjs +511 -0
  26. package/fesm2020/alfresco-aca-content-preview.mjs.map +1 -0
  27. package/fesm2020/alfresco-aca-content-viewer.mjs +504 -0
  28. package/fesm2020/alfresco-aca-content-viewer.mjs.map +1 -0
  29. package/fesm2020/alfresco-aca-content.mjs +28 -86
  30. package/fesm2020/alfresco-aca-content.mjs.map +1 -1
  31. package/lib/services/node-template.service.d.ts +1 -1
  32. package/ms-office/aos-extension.module.d.ts +1 -2
  33. package/package.json +21 -5
  34. package/preview/index.d.ts +5 -0
  35. package/preview/lib/components/preview.component.d.ts +115 -0
  36. package/preview/lib/preview.module.d.ts +13 -0
  37. package/preview/public-api.d.ts +25 -0
  38. package/viewer/index.d.ts +5 -0
  39. package/viewer/lib/components/viewer/viewer.component.d.ts +111 -0
  40. package/viewer/lib/viewer.module.d.ts +13 -0
  41. package/viewer/public-api.d.ts +25 -0
  42. package/esm2020/lib/services/content-service-extension.service.mjs +0 -63
  43. package/lib/services/content-service-extension.service.d.ts +0 -11
@@ -146,4 +146,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
146
146
  providedIn: 'root'
147
147
  }]
148
148
  }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.AlfrescoApiService }, { type: i2.TranslationService }, { type: i3.MatDialog }]; } });
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS10ZW1wbGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLWNvbnRlbnQvc3JjL2xpYi9zZXJ2aWNlcy9ub2RlLXRlbXBsYXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDekcsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBc0UsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBWSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNFLE9BQU8sRUFBRSw0QkFBNEIsRUFBa0QsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7O0FBVTFJLE1BQU0sT0FBTyxtQkFBbUI7SUFVOUIsWUFDVSxLQUFzQixFQUN0QixrQkFBc0MsRUFDdEMsV0FBK0IsRUFDaEMsTUFBaUI7UUFIaEIsVUFBSyxHQUFMLEtBQUssQ0FBaUI7UUFDdEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDaEMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQWJsQiww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LENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFTyxTQUFTLENBQUMsR0FBaUI7UUFDakMsTUFBTSxJQUFJLEdBQTJCLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3BELE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxjQUFjLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxnQkFBZ0IsQ0FBQztJQUNoRixDQUFDO0lBRU8sZUFBZSxDQUFDLElBQVU7UUFDaEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsS0FBSyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuSixDQUFDO0lBRU8sTUFBTSxDQUFDLHFCQUFxQjtRQUNsQyxRQUFRLENBQUMsYUFBYSxDQUFjLGtEQUFrRCxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbEcsQ0FBQzs7Z0hBOUhVLG1CQUFtQjtvSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyMyBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBDcmVhdGVGcm9tVGVtcGxhdGVEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9kaWFsb2dzL25vZGUtdGVtcGxhdGUvY3JlYXRlLWZyb20tdGVtcGxhdGUuZGlhbG9nJztcbmltcG9ydCB7IFN1YmplY3QsIGZyb20sIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOb2RlLCBNaW5pbWFsTm9kZSwgTWluaW1hbE5vZGVFbnRyeUVudGl0eSwgUmVzdWx0Tm9kZSwgUGF0aEVsZW1lbnQsIFNlYXJjaEFwaSB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHsgQWxmcmVzY29BcGlTZXJ2aWNlLCBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBBcHBTdG9yZSwgU25hY2tiYXJFcnJvckFjdGlvbiB9IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkL3N0b3JlJztcbmltcG9ydCB7IENvbnRlbnROb2RlU2VsZWN0b3JDb21wb25lbnQsIENvbnRlbnROb2RlU2VsZWN0b3JDb21wb25lbnREYXRhLCBTaGFyZURhdGFSb3csIE5vZGVBY3Rpb24gfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvbnRlbnQtc2VydmljZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlRGlhbG9nQ29uZmlnIHtcbiAgcHJpbWFyeVBhdGhOYW1lOiBzdHJpbmc7XG4gIHNlbGVjdGlvblR5cGU6IHN0cmluZztcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTm9kZVRlbXBsYXRlU2VydmljZSB7XG4gIHByaXZhdGUgY3VycmVudFRlbXBsYXRlQ29uZmlnOiBUZW1wbGF0ZURpYWxvZ0NvbmZpZyA9IG51bGw7XG4gIHByaXZhdGUgcm9vdE5vZGU6IFJlc3VsdE5vZGU7XG5cbiAgX3NlYXJjaEFwaTogU2VhcmNoQXBpO1xuICBnZXQgc2VhcmNoQXBpKCk6IFNlYXJjaEFwaSB7XG4gICAgdGhpcy5fc2VhcmNoQXBpID0gdGhpcy5fc2VhcmNoQXBpID8/IG5ldyBTZWFyY2hBcGkodGhpcy5hbGZyZXNjb0FwaVNlcnZpY2UuZ2V0SW5zdGFuY2UoKSk7XG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaEFwaTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPEFwcFN0b3JlPixcbiAgICBwcml2YXRlIGFsZnJlc2NvQXBpU2VydmljZTogQWxmcmVzY29BcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRpb246IFRyYW5zbGF0aW9uU2VydmljZSxcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2dcbiAgKSB7fVxuXG4gIHNlbGVjdFRlbXBsYXRlRGlhbG9nKGNvbmZpZzogVGVtcGxhdGVEaWFsb2dDb25maWcpOiBTdWJqZWN0PE5vZGVbXT4ge1xuICAgIHRoaXMuY3VycmVudFRlbXBsYXRlQ29uZmlnID0gY29uZmlnO1xuXG4gICAgY29uc3Qgc2VsZWN0ID0gbmV3IFN1YmplY3Q8Tm9kZVtdPigpO1xuICAgIHNlbGVjdC5zdWJzY3JpYmUoe1xuICAgICAgY29tcGxldGU6IHRoaXMuY2xvc2UuYmluZCh0aGlzKVxuICAgIH0pO1xuXG4gICAgY29uc3QgZGF0YTogQ29udGVudE5vZGVTZWxlY3RvckNvbXBvbmVudERhdGEgPSB7XG4gICAgICBzZWxlY3Rpb25Nb2RlOiAnc2luZ2xlJyxcbiAgICAgIHRpdGxlOiB0aGlzLnRpdGxlKGNvbmZpZy5zZWxlY3Rpb25UeXBlKSxcbiAgICAgIGFjdGlvbk5hbWU6IE5vZGVBY3Rpb24uTkVYVCxcbiAgICAgIGRyb3Bkb3duSGlkZU15RmlsZXM6IHRydWUsXG4gICAgICBjdXJyZW50Rm9sZGVySWQ6IG51bGwsXG4gICAgICBkcm9wZG93blNpdGVMaXN0OiBudWxsLFxuICAgICAgYnJlYWRjcnVtYlRyYW5zZm9ybTogdGhpcy50cmFuc2Zvcm1Ob2RlLmJpbmQodGhpcyksXG4gICAgICBzZWxlY3QsXG4gICAgICBzaG93U2VhcmNoOiBmYWxzZSxcbiAgICAgIHNob3dEcm9wZG93blNpdGVMaXN0OiBmYWxzZSxcbiAgICAgIGlzU2VsZWN0aW9uVmFsaWQ6IHRoaXMuaXNTZWxlY3Rpb25WYWxpZC5iaW5kKHRoaXMpLFxuICAgICAgcm93RmlsdGVyOiB0aGlzLnJvd0ZpbHRlci5iaW5kKHRoaXMpXG4gICAgfTtcblxuICAgIGNvbnN0IHF1ZXJ5ID0ge1xuICAgICAgcXVlcnk6IHtcbiAgICAgICAgcXVlcnk6IGBQQVRIOlwiLy8ke2NvbmZpZy5wcmltYXJ5UGF0aE5hbWV9XCJgLFxuICAgICAgICBsYW5ndWFnZTogJ2FmdHMnXG4gICAgICB9LFxuICAgICAgaW5jbHVkZTogWydwYXRoJywgJ3Byb3BlcnRpZXMnLCAnYWxsb3dhYmxlT3BlcmF0aW9ucycsICdwZXJtaXNzaW9ucyddXG4gICAgfTtcblxuICAgIGZyb20odGhpcy5zZWFyY2hBcGkuc2VhcmNoKHF1ZXJ5KSlcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgY29uc3QgZW50cnkgPSByZXNwb25zZS5saXN0LmVudHJpZXNbMF0uZW50cnk7XG4gICAgICAgICAgdGhpcy5yb290Tm9kZSA9IGVudHJ5O1xuICAgICAgICAgIGRhdGEuY3VycmVudEZvbGRlcklkID0gZW50cnkuaWQ7XG5cbiAgICAgICAgICByZXR1cm4gdGhpcy5kaWFsb2dcbiAgICAgICAgICAgIC5vcGVuKENvbnRlbnROb2RlU2VsZWN0b3JDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgICAgcGFuZWxDbGFzczogWydhZGYtY29udGVudC1ub2RlLXNlbGVjdG9yLWRpYWxvZycsICdhY2EtdGVtcGxhdGUtbm9kZS1zZWxlY3Rvci1kaWFsb2cnXSxcbiAgICAgICAgICAgICAgd2lkdGg6ICc2MzBweCdcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKTtcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU25hY2tiYXJFcnJvckFjdGlvbignQVBQLk1FU1NBR0VTLkVSUk9SUy5HRU5FUklDJykpO1xuICAgICAgICAgIHJldHVybiBvZihlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHsgbmV4dDogKCkgPT4gc2VsZWN0LmNvbXBsZXRlKCkgfSk7XG5cbiAgICByZXR1cm4gc2VsZWN0O1xuICB9XG5cbiAgY3JlYXRlVGVtcGxhdGVEaWFsb2cobm9kZTogTm9kZSk6IE1hdERpYWxvZ1JlZjxDcmVhdGVGcm9tVGVtcGxhdGVEaWFsb2dDb21wb25lbnQ+IHtcbiAgICBjb25zdCBkaWFsb2cgPSB0aGlzLmRpYWxvZy5vcGVuKENyZWF0ZUZyb21UZW1wbGF0ZURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgZGF0YTogbm9kZSxcbiAgICAgIHBhbmVsQ2xhc3M6ICdhY2EtY3JlYXRlLWZyb20tdGVtcGxhdGUtZGlhbG9nJyxcbiAgICAgIHdpZHRoOiAnNjMwcHgnXG4gICAgfSk7XG4gICAgZGlhbG9nLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IE5vZGVUZW1wbGF0ZVNlcnZpY2UuZm9jdXNDcmVhdGVNZW51QnV0dG9uKCkpO1xuICAgIHJldHVybiBkaWFsb2c7XG4gIH1cblxuICBwcml2YXRlIHRyYW5zZm9ybU5vZGUobm9kZTogTWluaW1hbE5vZGUpOiBNaW5pbWFsTm9kZSB7XG4gICAgaWYgKG5vZGUgJiYgbm9kZS5wYXRoICYmIG5vZGUucGF0aCAmJiBub2RlLnBhdGguZWxlbWVudHMgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgbm9kZS5wYXRoLmVsZW1lbnRzID0gdGhpcy5nZXRQYXRoRWxlbWVudHMobm9kZSk7XG4gICAgfVxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1NlbGVjdGlvblZhbGlkKG5vZGU6IE5vZGUpOiBib29sZWFuIHtcbiAgICBpZiAoIW5vZGUucGF0aC5lbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jdXJyZW50VGVtcGxhdGVDb25maWcuc2VsZWN0aW9uVHlwZSA9PT0gJ2ZvbGRlcicpIHtcbiAgICAgIHJldHVybiBub2RlLmlzRm9sZGVyO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlLmlzRmlsZTtcbiAgfVxuXG4gIHByaXZhdGUgY2xvc2UoKSB7XG4gICAgdGhpcy5kaWFsb2cuY2xvc2VBbGwoKTtcbiAgICBOb2RlVGVtcGxhdGVTZXJ2aWNlLmZvY3VzQ3JlYXRlTWVudUJ1dHRvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSB0aXRsZShzZWxlY3Rpb25UeXBlOiBzdHJpbmcpIHtcbiAgICBpZiAoc2VsZWN0aW9uVHlwZSA9PT0gJ2ZpbGUnKSB7XG4gICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbi5pbnN0YW50KCdOT0RFX1NFTEVDVE9SLlNFTEVDVF9GSUxFX1RFTVBMQVRFX1RJVExFJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb24uaW5zdGFudCgnTk9ERV9TRUxFQ1RPUi5TRUxFQ1RfRk9MREVSX1RFTVBMQVRFX1RJVExFJyk7XG4gIH1cblxuICBwcml2YXRlIHJvd0ZpbHRlcihyb3c6IFNoYXJlRGF0YVJvdyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG5vZGU6IE1pbmltYWxOb2RlRW50cnlFbnRpdHkgPSByb3cubm9kZS5lbnRyeTtcbiAgICByZXR1cm4gbm9kZS5ub2RlVHlwZSAhPT0gJ2FwcDpmaWxlbGluaycgJiYgbm9kZS5ub2RlVHlwZSAhPT0gJ2FwcDpmb2xkZXJsaW5rJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGF0aEVsZW1lbnRzKG5vZGU6IE5vZGUpOiBQYXRoRWxlbWVudFtdIHtcbiAgICByZXR1cm4gbm9kZS5wYXRoLmVsZW1lbnRzLmZpbHRlcigocGF0aEVsZW1lbnQpID0+ICF0aGlzLnJvb3ROb2RlLnBhdGguZWxlbWVudHMuc29tZSgocm9vdFBhdGhFbGVtZW50KSA9PiBwYXRoRWxlbWVudC5pZCA9PT0gcm9vdFBhdGhFbGVtZW50LmlkKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBmb2N1c0NyZWF0ZU1lbnVCdXR0b24oKTogdm9pZCB7XG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJ2FwcC10b29sYmFyLW1lbnUgYnV0dG9uW2lkPVwiYXBwLnRvb2xiYXIuY3JlYXRlXCJdJykuZm9jdXMoKTtcbiAgfVxufVxuIl19
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS10ZW1wbGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLWNvbnRlbnQvc3JjL2xpYi9zZXJ2aWNlcy9ub2RlLXRlbXBsYXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDekcsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBc0UsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBWSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNFLE9BQU8sRUFBRSw0QkFBNEIsRUFBa0QsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7O0FBVTFJLE1BQU0sT0FBTyxtQkFBbUI7SUFVOUIsWUFDVSxLQUFzQixFQUN0QixrQkFBc0MsRUFDdEMsV0FBK0IsRUFDaEMsTUFBaUI7UUFIaEIsVUFBSyxHQUFMLEtBQUssQ0FBaUI7UUFDdEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDaEMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQWJsQiwwQkFBcUIsR0FBeUIsSUFBSSxDQUFDO0lBY3hELENBQUM7SUFWSixJQUFJLFNBQVM7UUFDWCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDMUYsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFTRCxvQkFBb0IsQ0FBQyxNQUE0QjtRQUMvQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsTUFBTSxDQUFDO1FBRXBDLE1BQU0sTUFBTSxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFDckMsTUFBTSxDQUFDLFNBQVMsQ0FBQztZQUNmLFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDaEMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxJQUFJLEdBQXFDO1lBQzdDLGFBQWEsRUFBRSxRQUFRO1lBQ3ZCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUM7WUFDdkMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxJQUFJO1lBQzNCLG1CQUFtQixFQUFFLElBQUk7WUFDekIsZUFBZSxFQUFFLElBQUk7WUFDckIsZ0JBQWdCLEVBQUUsSUFBSTtZQUN0QixtQkFBbUIsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDbEQsTUFBTTtZQUNOLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLG9CQUFvQixFQUFFLEtBQUs7WUFDM0IsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDbEQsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztTQUNyQyxDQUFDO1FBRUYsTUFBTSxLQUFLLEdBQUc7WUFDWixLQUFLLEVBQUU7Z0JBQ0wsS0FBSyxFQUFFLFdBQVcsTUFBTSxDQUFDLGVBQWUsR0FBRztnQkFDM0MsUUFBUSxFQUFFLE1BQU07YUFDakI7WUFDRCxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixFQUFFLGFBQWEsQ0FBQztTQUN0RSxDQUFDO1FBRUYsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQy9CLElBQUksQ0FDSCxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNyQixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDN0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDdEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBRWhDLE9BQU8sSUFBSSxDQUFDLE1BQU07aUJBQ2YsSUFBSSxDQUFDLDRCQUE0QixFQUFFO2dCQUNsQyxJQUFJO2dCQUNKLFVBQVUsRUFBRSxDQUFDLGtDQUFrQyxFQUFFLG1DQUFtQyxDQUFDO2dCQUNyRixLQUFLLEVBQUUsT0FBTzthQUNmLENBQUM7aUJBQ0QsV0FBVyxFQUFFLENBQUM7UUFDbkIsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxtQkFBbUIsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLENBQUM7WUFDNUUsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkIsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVoRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsb0JBQW9CLENBQUMsSUFBVTtRQUM3QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQ0FBaUMsRUFBRTtZQUNqRSxJQUFJLEVBQUUsSUFBSTtZQUNWLFVBQVUsRUFBRSxpQ0FBaUM7WUFDN0MsS0FBSyxFQUFFLE9BQU87U0FDZixDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQztRQUNsRixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU8sYUFBYSxDQUFDLElBQWlCO1FBQ3JDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsWUFBWSxLQUFLLEVBQUU7WUFDekUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNqRDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLGdCQUFnQixDQUFDLElBQVU7UUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUM5QixPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsYUFBYSxLQUFLLFFBQVEsRUFBRTtZQUN6RCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDdEI7UUFFRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVPLEtBQUs7UUFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZCLG1CQUFtQixDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVPLEtBQUssQ0FBQyxhQUFxQjtRQUNqQyxJQUFJLGFBQWEsS0FBSyxNQUFNLEVBQUU7WUFDNUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1NBQzdFO1FBRUQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFTyxTQUFTLENBQUMsR0FBaUI7UUFDakMsTUFBTSxJQUFJLEdBQTJCLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3BELE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxjQUFjLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxnQkFBZ0IsQ0FBQztJQUNoRixDQUFDO0lBRU8sZUFBZSxDQUFDLElBQVU7UUFDaEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsS0FBSyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuSixDQUFDO0lBRU8sTUFBTSxDQUFDLHFCQUFxQjtRQUNsQyxRQUFRLENBQUMsYUFBYSxDQUFjLGtEQUFrRCxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbEcsQ0FBQzs7Z0hBOUhVLG1CQUFtQjtvSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyMyBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBDcmVhdGVGcm9tVGVtcGxhdGVEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9kaWFsb2dzL25vZGUtdGVtcGxhdGUvY3JlYXRlLWZyb20tdGVtcGxhdGUuZGlhbG9nJztcbmltcG9ydCB7IFN1YmplY3QsIGZyb20sIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOb2RlLCBNaW5pbWFsTm9kZSwgTWluaW1hbE5vZGVFbnRyeUVudGl0eSwgUmVzdWx0Tm9kZSwgUGF0aEVsZW1lbnQsIFNlYXJjaEFwaSB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHsgQWxmcmVzY29BcGlTZXJ2aWNlLCBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBBcHBTdG9yZSwgU25hY2tiYXJFcnJvckFjdGlvbiB9IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkL3N0b3JlJztcbmltcG9ydCB7IENvbnRlbnROb2RlU2VsZWN0b3JDb21wb25lbnQsIENvbnRlbnROb2RlU2VsZWN0b3JDb21wb25lbnREYXRhLCBTaGFyZURhdGFSb3csIE5vZGVBY3Rpb24gfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvbnRlbnQtc2VydmljZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlRGlhbG9nQ29uZmlnIHtcbiAgcHJpbWFyeVBhdGhOYW1lOiBzdHJpbmc7XG4gIHNlbGVjdGlvblR5cGU6IHN0cmluZztcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTm9kZVRlbXBsYXRlU2VydmljZSB7XG4gIHByaXZhdGUgY3VycmVudFRlbXBsYXRlQ29uZmlnOiBUZW1wbGF0ZURpYWxvZ0NvbmZpZyA9IG51bGw7XG4gIHByaXZhdGUgcm9vdE5vZGU6IFJlc3VsdE5vZGU7XG5cbiAgcHJpdmF0ZSBfc2VhcmNoQXBpOiBTZWFyY2hBcGk7XG4gIGdldCBzZWFyY2hBcGkoKTogU2VhcmNoQXBpIHtcbiAgICB0aGlzLl9zZWFyY2hBcGkgPSB0aGlzLl9zZWFyY2hBcGkgPz8gbmV3IFNlYXJjaEFwaSh0aGlzLmFsZnJlc2NvQXBpU2VydmljZS5nZXRJbnN0YW5jZSgpKTtcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoQXBpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8QXBwU3RvcmU+LFxuICAgIHByaXZhdGUgYWxmcmVzY29BcGlTZXJ2aWNlOiBBbGZyZXNjb0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGlvbjogVHJhbnNsYXRpb25TZXJ2aWNlLFxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZ1xuICApIHt9XG5cbiAgc2VsZWN0VGVtcGxhdGVEaWFsb2coY29uZmlnOiBUZW1wbGF0ZURpYWxvZ0NvbmZpZyk6IFN1YmplY3Q8Tm9kZVtdPiB7XG4gICAgdGhpcy5jdXJyZW50VGVtcGxhdGVDb25maWcgPSBjb25maWc7XG5cbiAgICBjb25zdCBzZWxlY3QgPSBuZXcgU3ViamVjdDxOb2RlW10+KCk7XG4gICAgc2VsZWN0LnN1YnNjcmliZSh7XG4gICAgICBjb21wbGV0ZTogdGhpcy5jbG9zZS5iaW5kKHRoaXMpXG4gICAgfSk7XG5cbiAgICBjb25zdCBkYXRhOiBDb250ZW50Tm9kZVNlbGVjdG9yQ29tcG9uZW50RGF0YSA9IHtcbiAgICAgIHNlbGVjdGlvbk1vZGU6ICdzaW5nbGUnLFxuICAgICAgdGl0bGU6IHRoaXMudGl0bGUoY29uZmlnLnNlbGVjdGlvblR5cGUpLFxuICAgICAgYWN0aW9uTmFtZTogTm9kZUFjdGlvbi5ORVhULFxuICAgICAgZHJvcGRvd25IaWRlTXlGaWxlczogdHJ1ZSxcbiAgICAgIGN1cnJlbnRGb2xkZXJJZDogbnVsbCxcbiAgICAgIGRyb3Bkb3duU2l0ZUxpc3Q6IG51bGwsXG4gICAgICBicmVhZGNydW1iVHJhbnNmb3JtOiB0aGlzLnRyYW5zZm9ybU5vZGUuYmluZCh0aGlzKSxcbiAgICAgIHNlbGVjdCxcbiAgICAgIHNob3dTZWFyY2g6IGZhbHNlLFxuICAgICAgc2hvd0Ryb3Bkb3duU2l0ZUxpc3Q6IGZhbHNlLFxuICAgICAgaXNTZWxlY3Rpb25WYWxpZDogdGhpcy5pc1NlbGVjdGlvblZhbGlkLmJpbmQodGhpcyksXG4gICAgICByb3dGaWx0ZXI6IHRoaXMucm93RmlsdGVyLmJpbmQodGhpcylcbiAgICB9O1xuXG4gICAgY29uc3QgcXVlcnkgPSB7XG4gICAgICBxdWVyeToge1xuICAgICAgICBxdWVyeTogYFBBVEg6XCIvLyR7Y29uZmlnLnByaW1hcnlQYXRoTmFtZX1cImAsXG4gICAgICAgIGxhbmd1YWdlOiAnYWZ0cydcbiAgICAgIH0sXG4gICAgICBpbmNsdWRlOiBbJ3BhdGgnLCAncHJvcGVydGllcycsICdhbGxvd2FibGVPcGVyYXRpb25zJywgJ3Blcm1pc3Npb25zJ11cbiAgICB9O1xuXG4gICAgZnJvbSh0aGlzLnNlYXJjaEFwaS5zZWFyY2gocXVlcnkpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBjb25zdCBlbnRyeSA9IHJlc3BvbnNlLmxpc3QuZW50cmllc1swXS5lbnRyeTtcbiAgICAgICAgICB0aGlzLnJvb3ROb2RlID0gZW50cnk7XG4gICAgICAgICAgZGF0YS5jdXJyZW50Rm9sZGVySWQgPSBlbnRyeS5pZDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLmRpYWxvZ1xuICAgICAgICAgICAgLm9wZW4oQ29udGVudE5vZGVTZWxlY3RvckNvbXBvbmVudCwge1xuICAgICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgICBwYW5lbENsYXNzOiBbJ2FkZi1jb250ZW50LW5vZGUtc2VsZWN0b3ItZGlhbG9nJywgJ2FjYS10ZW1wbGF0ZS1ub2RlLXNlbGVjdG9yLWRpYWxvZyddLFxuICAgICAgICAgICAgICB3aWR0aDogJzYzMHB4J1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTbmFja2JhckVycm9yQWN0aW9uKCdBUFAuTUVTU0FHRVMuRVJST1JTLkdFTkVSSUMnKSk7XG4gICAgICAgICAgcmV0dXJuIG9mKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoeyBuZXh0OiAoKSA9PiBzZWxlY3QuY29tcGxldGUoKSB9KTtcblxuICAgIHJldHVybiBzZWxlY3Q7XG4gIH1cblxuICBjcmVhdGVUZW1wbGF0ZURpYWxvZyhub2RlOiBOb2RlKTogTWF0RGlhbG9nUmVmPENyZWF0ZUZyb21UZW1wbGF0ZURpYWxvZ0NvbXBvbmVudD4ge1xuICAgIGNvbnN0IGRpYWxvZyA9IHRoaXMuZGlhbG9nLm9wZW4oQ3JlYXRlRnJvbVRlbXBsYXRlRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiBub2RlLFxuICAgICAgcGFuZWxDbGFzczogJ2FjYS1jcmVhdGUtZnJvbS10ZW1wbGF0ZS1kaWFsb2cnLFxuICAgICAgd2lkdGg6ICc2MzBweCdcbiAgICB9KTtcbiAgICBkaWFsb2cuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4gTm9kZVRlbXBsYXRlU2VydmljZS5mb2N1c0NyZWF0ZU1lbnVCdXR0b24oKSk7XG4gICAgcmV0dXJuIGRpYWxvZztcbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNmb3JtTm9kZShub2RlOiBNaW5pbWFsTm9kZSk6IE1pbmltYWxOb2RlIHtcbiAgICBpZiAobm9kZSAmJiBub2RlLnBhdGggJiYgbm9kZS5wYXRoICYmIG5vZGUucGF0aC5lbGVtZW50cyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBub2RlLnBhdGguZWxlbWVudHMgPSB0aGlzLmdldFBhdGhFbGVtZW50cyhub2RlKTtcbiAgICB9XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBwcml2YXRlIGlzU2VsZWN0aW9uVmFsaWQobm9kZTogTm9kZSk6IGJvb2xlYW4ge1xuICAgIGlmICghbm9kZS5wYXRoLmVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmN1cnJlbnRUZW1wbGF0ZUNvbmZpZy5zZWxlY3Rpb25UeXBlID09PSAnZm9sZGVyJykge1xuICAgICAgcmV0dXJuIG5vZGUuaXNGb2xkZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGUuaXNGaWxlO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZSgpIHtcbiAgICB0aGlzLmRpYWxvZy5jbG9zZUFsbCgpO1xuICAgIE5vZGVUZW1wbGF0ZVNlcnZpY2UuZm9jdXNDcmVhdGVNZW51QnV0dG9uKCk7XG4gIH1cblxuICBwcml2YXRlIHRpdGxlKHNlbGVjdGlvblR5cGU6IHN0cmluZykge1xuICAgIGlmIChzZWxlY3Rpb25UeXBlID09PSAnZmlsZScpIHtcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9uLmluc3RhbnQoJ05PREVfU0VMRUNUT1IuU0VMRUNUX0ZJTEVfVEVNUExBVEVfVElUTEUnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbi5pbnN0YW50KCdOT0RFX1NFTEVDVE9SLlNFTEVDVF9GT0xERVJfVEVNUExBVEVfVElUTEUnKTtcbiAgfVxuXG4gIHByaXZhdGUgcm93RmlsdGVyKHJvdzogU2hhcmVEYXRhUm93KTogYm9vbGVhbiB7XG4gICAgY29uc3Qgbm9kZTogTWluaW1hbE5vZGVFbnRyeUVudGl0eSA9IHJvdy5ub2RlLmVudHJ5O1xuICAgIHJldHVybiBub2RlLm5vZGVUeXBlICE9PSAnYXBwOmZpbGVsaW5rJyAmJiBub2RlLm5vZGVUeXBlICE9PSAnYXBwOmZvbGRlcmxpbmsnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXRoRWxlbWVudHMobm9kZTogTm9kZSk6IFBhdGhFbGVtZW50W10ge1xuICAgIHJldHVybiBub2RlLnBhdGguZWxlbWVudHMuZmlsdGVyKChwYXRoRWxlbWVudCkgPT4gIXRoaXMucm9vdE5vZGUucGF0aC5lbGVtZW50cy5zb21lKChyb290UGF0aEVsZW1lbnQpID0+IHBhdGhFbGVtZW50LmlkID09PSByb290UGF0aEVsZW1lbnQuaWQpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGZvY3VzQ3JlYXRlTWVudUJ1dHRvbigpOiB2b2lkIHtcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignYXBwLXRvb2xiYXItbWVudSBidXR0b25baWQ9XCJhcHAudG9vbGJhci5jcmVhdGVcIl0nKS5mb2N1cygpO1xuICB9XG59XG4iXX0=
@@ -26,23 +26,21 @@ import { NgModule } from '@angular/core';
26
26
  import { EffectsModule } from '@ngrx/effects';
27
27
  import { AosEffects } from './effects/aos.effects';
28
28
  import { TranslationService } from '@alfresco/adf-core';
29
- import { AlfrescoOfficeExtensionService } from '@alfresco/aca-shared';
30
29
  import { canOpenWithOffice } from '@alfresco/aca-shared/rules';
31
30
  import * as i0 from "@angular/core";
32
31
  import * as i1 from "@alfresco/adf-extensions";
33
32
  import * as i2 from "@alfresco/adf-core";
34
- import * as i3 from "@alfresco/aca-shared";
35
- import * as i4 from "@ngrx/effects";
33
+ import * as i3 from "@ngrx/effects";
36
34
  export class AosExtensionModule {
37
- constructor(extensions, translation, aosService) {
35
+ constructor(extensions, translation) {
38
36
  translation.addTranslationFolder('ms-office', 'assets/ms-office');
39
37
  extensions.setEvaluators({
40
- 'aos.canOpenWithOffice': (context) => aosService.isAosPluginEnabled() && canOpenWithOffice(context)
38
+ 'aos.canOpenWithOffice': canOpenWithOffice
41
39
  });
42
40
  }
43
41
  }
44
- AosExtensionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: AosExtensionModule, deps: [{ token: i1.ExtensionService }, { token: i2.TranslationService }, { token: i3.AlfrescoOfficeExtensionService }], target: i0.ɵɵFactoryTarget.NgModule });
45
- AosExtensionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.3", ngImport: i0, type: AosExtensionModule, imports: [i4.EffectsFeatureModule] });
42
+ AosExtensionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: AosExtensionModule, deps: [{ token: i1.ExtensionService }, { token: i2.TranslationService }], target: i0.ɵɵFactoryTarget.NgModule });
43
+ AosExtensionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.3", ngImport: i0, type: AosExtensionModule, imports: [i3.EffectsFeatureModule] });
46
44
  AosExtensionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: AosExtensionModule, providers: [provideExtensionConfig(['aos.plugin.json'])], imports: [EffectsModule.forFeature([AosEffects])] });
47
45
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: AosExtensionModule, decorators: [{
48
46
  type: NgModule,
@@ -50,5 +48,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
50
48
  imports: [EffectsModule.forFeature([AosEffects])],
51
49
  providers: [provideExtensionConfig(['aos.plugin.json'])]
52
50
  }]
53
- }], ctorParameters: function () { return [{ type: i1.ExtensionService }, { type: i2.TranslationService }, { type: i3.AlfrescoOfficeExtensionService }]; } });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW9zLWV4dGVuc2lvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9tcy1vZmZpY2Uvc3JjL2Fvcy1leHRlbnNpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7O0FBTS9ELE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsWUFBWSxVQUE0QixFQUFFLFdBQStCLEVBQUUsVUFBMEM7UUFDbkgsV0FBVyxDQUFDLG9CQUFvQixDQUFDLFdBQVcsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2xFLFVBQVUsQ0FBQyxhQUFhLENBQUM7WUFDdkIsdUJBQXVCLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLGlCQUFpQixDQUFDLE9BQU8sQ0FBQztTQUNwRyxDQUFDLENBQUM7SUFDTCxDQUFDOzsrR0FOVSxrQkFBa0I7Z0hBQWxCLGtCQUFrQjtnSEFBbEIsa0JBQWtCLGFBRmxCLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsWUFEOUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDOzJGQUdyQyxrQkFBa0I7a0JBSjlCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7b0JBQ2pELFNBQVMsRUFBRSxDQUFDLHNCQUFzQixDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO2lCQUN6RCIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyMyBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgeyBFeHRlbnNpb25TZXJ2aWNlLCBwcm92aWRlRXh0ZW5zaW9uQ29uZmlnIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1leHRlbnNpb25zJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFZmZlY3RzTW9kdWxlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBBb3NFZmZlY3RzIH0gZnJvbSAnLi9lZmZlY3RzL2Fvcy5lZmZlY3RzJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBBbGZyZXNjb09mZmljZUV4dGVuc2lvblNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZCc7XG5pbXBvcnQgeyBjYW5PcGVuV2l0aE9mZmljZSB9IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkL3J1bGVzJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0VmZmVjdHNNb2R1bGUuZm9yRmVhdHVyZShbQW9zRWZmZWN0c10pXSxcbiAgcHJvdmlkZXJzOiBbcHJvdmlkZUV4dGVuc2lvbkNvbmZpZyhbJ2Fvcy5wbHVnaW4uanNvbiddKV1cbn0pXG5leHBvcnQgY2xhc3MgQW9zRXh0ZW5zaW9uTW9kdWxlIHtcbiAgY29uc3RydWN0b3IoZXh0ZW5zaW9uczogRXh0ZW5zaW9uU2VydmljZSwgdHJhbnNsYXRpb246IFRyYW5zbGF0aW9uU2VydmljZSwgYW9zU2VydmljZTogQWxmcmVzY29PZmZpY2VFeHRlbnNpb25TZXJ2aWNlKSB7XG4gICAgdHJhbnNsYXRpb24uYWRkVHJhbnNsYXRpb25Gb2xkZXIoJ21zLW9mZmljZScsICdhc3NldHMvbXMtb2ZmaWNlJyk7XG4gICAgZXh0ZW5zaW9ucy5zZXRFdmFsdWF0b3JzKHtcbiAgICAgICdhb3MuY2FuT3BlbldpdGhPZmZpY2UnOiAoY29udGV4dCkgPT4gYW9zU2VydmljZS5pc0Fvc1BsdWdpbkVuYWJsZWQoKSAmJiBjYW5PcGVuV2l0aE9mZmljZShjb250ZXh0KVxuICAgIH0pO1xuICB9XG59XG4iXX0=
51
+ }], ctorParameters: function () { return [{ type: i1.ExtensionService }, { type: i2.TranslationService }]; } });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW9zLWV4dGVuc2lvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9tcy1vZmZpY2Uvc3JjL2Fvcy1leHRlbnNpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7QUFNL0QsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixZQUFZLFVBQTRCLEVBQUUsV0FBK0I7UUFDdkUsV0FBVyxDQUFDLG9CQUFvQixDQUFDLFdBQVcsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2xFLFVBQVUsQ0FBQyxhQUFhLENBQUM7WUFDdkIsdUJBQXVCLEVBQUUsaUJBQWlCO1NBQzNDLENBQUMsQ0FBQztJQUNMLENBQUM7OytHQU5VLGtCQUFrQjtnSEFBbEIsa0JBQWtCO2dIQUFsQixrQkFBa0IsYUFGbEIsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxZQUQ5QyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7MkZBR3JDLGtCQUFrQjtrQkFKOUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztvQkFDakQsU0FBUyxFQUFFLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7aUJBQ3pEIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDIzIEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IEV4dGVuc2lvblNlcnZpY2UsIHByb3ZpZGVFeHRlbnNpb25Db25maWcgfSBmcm9tICdAYWxmcmVzY28vYWRmLWV4dGVuc2lvbnMnO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVmZmVjdHNNb2R1bGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IEFvc0VmZmVjdHMgfSBmcm9tICcuL2VmZmVjdHMvYW9zLmVmZmVjdHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IGNhbk9wZW5XaXRoT2ZmaWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQvcnVsZXMnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbRWZmZWN0c01vZHVsZS5mb3JGZWF0dXJlKFtBb3NFZmZlY3RzXSldLFxuICBwcm92aWRlcnM6IFtwcm92aWRlRXh0ZW5zaW9uQ29uZmlnKFsnYW9zLnBsdWdpbi5qc29uJ10pXVxufSlcbmV4cG9ydCBjbGFzcyBBb3NFeHRlbnNpb25Nb2R1bGUge1xuICBjb25zdHJ1Y3RvcihleHRlbnNpb25zOiBFeHRlbnNpb25TZXJ2aWNlLCB0cmFuc2xhdGlvbjogVHJhbnNsYXRpb25TZXJ2aWNlKSB7XG4gICAgdHJhbnNsYXRpb24uYWRkVHJhbnNsYXRpb25Gb2xkZXIoJ21zLW9mZmljZScsICdhc3NldHMvbXMtb2ZmaWNlJyk7XG4gICAgZXh0ZW5zaW9ucy5zZXRFdmFsdWF0b3JzKHtcbiAgICAgICdhb3MuY2FuT3BlbldpdGhPZmZpY2UnOiBjYW5PcGVuV2l0aE9mZmljZVxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxmcmVzY28tYWNhLWNvbnRlbnQtcHJldmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3ByZXZpZXcvc3JjL2FsZnJlc2NvLWFjYS1jb250ZW50LXByZXZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -0,0 +1,406 @@
1
+ /*!
2
+ * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.
3
+ *
4
+ * Alfresco Example Content Application
5
+ *
6
+ * This file is part of the Alfresco Example Content Application.
7
+ * If the software was purchased under a paid Alfresco license, the terms of
8
+ * the paid license agreement will prevail. Otherwise, the software is
9
+ * provided under the following open source license terms:
10
+ *
11
+ * The Alfresco Example Content Application is free software: you can redistribute it and/or modify
12
+ * it under the terms of the GNU Lesser General Public License as published by
13
+ * the Free Software Foundation, either version 3 of the License, or
14
+ * (at your option) any later version.
15
+ *
16
+ * The Alfresco Example Content Application is distributed in the hope that it will be useful,
17
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
+ * GNU Lesser General Public License for more details.
20
+ *
21
+ * You should have received a copy of the GNU Lesser General Public License
22
+ * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
23
+ */
24
+ import { Component, ViewEncapsulation, HostListener } from '@angular/core';
25
+ import { Location } from '@angular/common';
26
+ import { ActivatedRoute, PRIMARY_OUTLET } from '@angular/router';
27
+ import { debounceTime, map, takeUntil } from 'rxjs/operators';
28
+ import { UserPreferencesService, ObjectUtils } from '@alfresco/adf-core';
29
+ import { ViewerActionTypes, SetSelectedNodesAction } from '@alfresco/aca-shared/store';
30
+ import { PageComponent, AppHookService, ContentApiService } from '@alfresco/aca-shared';
31
+ import { from } from 'rxjs';
32
+ import { Actions, ofType } from '@ngrx/effects';
33
+ import { NodesApiService } from '@alfresco/adf-content-services';
34
+ import * as i0 from "@angular/core";
35
+ import * as i1 from "@alfresco/aca-shared";
36
+ import * as i2 from "@alfresco/adf-core";
37
+ import * as i3 from "@angular/router";
38
+ import * as i4 from "@alfresco/adf-content-services";
39
+ import * as i5 from "@ngrx/effects";
40
+ import * as i6 from "@angular/common";
41
+ export class PreviewComponent extends PageComponent {
42
+ constructor(contentApi, preferences, route, nodesApiService, actions$, location, appHookService) {
43
+ super();
44
+ this.contentApi = contentApi;
45
+ this.preferences = preferences;
46
+ this.route = route;
47
+ this.nodesApiService = nodesApiService;
48
+ this.actions$ = actions$;
49
+ this.location = location;
50
+ this.appHookService = appHookService;
51
+ this.previewLocation = null;
52
+ this.routesSkipNavigation = ['shared', 'recent-files', 'favorites'];
53
+ this.navigateSource = null;
54
+ this.navigationSources = ['favorites', 'libraries', 'personal-files', 'recent-files', 'shared'];
55
+ this.folderId = null;
56
+ this.nodeId = null;
57
+ this.navigateMultiple = false;
58
+ this.openWith = [];
59
+ this.contentExtensions = [];
60
+ this.showRightSide = false;
61
+ this.navigateBackAsClose = false;
62
+ this.simplestMode = false;
63
+ this.recentFileFilters = [
64
+ 'TYPE:"content"',
65
+ '-PNAME:"0/wiki"',
66
+ '-TYPE:"app:filelink"',
67
+ '-TYPE:"fm:post"',
68
+ '-TYPE:"cm:thumbnail"',
69
+ '-TYPE:"cm:failedThumbnail"',
70
+ '-TYPE:"cm:rating"',
71
+ '-TYPE:"dl:dataList"',
72
+ '-TYPE:"dl:todoList"',
73
+ '-TYPE:"dl:issue"',
74
+ '-TYPE:"dl:contact"',
75
+ '-TYPE:"dl:eventAgenda"',
76
+ '-TYPE:"dl:event"',
77
+ '-TYPE:"dl:task"',
78
+ '-TYPE:"dl:simpletask"',
79
+ '-TYPE:"dl:meetingAgenda"',
80
+ '-TYPE:"dl:location"',
81
+ '-TYPE:"fm:topic"',
82
+ '-TYPE:"fm:post"',
83
+ '-TYPE:"ia:calendarEvent"',
84
+ '-TYPE:"lnk:link"'
85
+ ];
86
+ this.containersSkipNavigation = ['adf-viewer__sidebar', 'cdk-overlay-container', 'adf-image-viewer'];
87
+ }
88
+ ngOnInit() {
89
+ super.ngOnInit();
90
+ from(this.infoDrawerOpened$)
91
+ .pipe(takeUntil(this.onDestroy$))
92
+ .subscribe((val) => {
93
+ this.showRightSide = val;
94
+ });
95
+ this.previewLocation = this.router.url.substr(0, this.router.url.indexOf('/', 1)).replace(/\//g, '');
96
+ const routeData = this.route.snapshot.data;
97
+ this.navigateBackAsClose = !!routeData.navigateBackAsClose;
98
+ this.simplestMode = !!routeData.simplestMode;
99
+ if (routeData.navigateMultiple) {
100
+ this.navigateMultiple = true;
101
+ }
102
+ if (routeData.navigateSource) {
103
+ const source = routeData.navigateSource.toLowerCase();
104
+ if (this.navigationSources.includes(source)) {
105
+ this.navigateSource = routeData.navigateSource;
106
+ }
107
+ }
108
+ this.route.params.subscribe((params) => {
109
+ this.folderId = params.folderId;
110
+ const id = params.nodeId;
111
+ if (id) {
112
+ this.displayNode(id);
113
+ }
114
+ });
115
+ this.subscriptions = this.subscriptions.concat([
116
+ this.appHookService.nodesDeleted.subscribe(() => this.navigateToFileLocation(true)),
117
+ this.uploadService.fileUploadDeleted.subscribe(() => this.navigateToFileLocation(true)),
118
+ this.uploadService.fileUploadComplete.pipe(debounceTime(300)).subscribe((file) => this.nodesApiService.nodeUpdated.next(file.data.entry)),
119
+ this.actions$
120
+ .pipe(ofType(ViewerActionTypes.ClosePreview), map(() => this.navigateToFileLocation(true)))
121
+ .subscribe(() => { })
122
+ ]);
123
+ this.extensions
124
+ .getOpenWithActions()
125
+ .pipe(takeUntil(this.onDestroy$))
126
+ .subscribe((actions) => {
127
+ this.openWith = actions;
128
+ });
129
+ }
130
+ ngOnDestroy() {
131
+ super.ngOnDestroy();
132
+ }
133
+ /**
134
+ * Loads the particular node into the Viewer
135
+ *
136
+ * @param id Unique identifier for the Node to display
137
+ */
138
+ async displayNode(id) {
139
+ if (id) {
140
+ try {
141
+ this.node = await this.contentApi.getNodeInfo(id).toPromise();
142
+ this.store.dispatch(new SetSelectedNodesAction([{ entry: this.node }]));
143
+ if (this.node && this.node.isFile) {
144
+ const nearest = await this.getNearestNodes(this.node.id, this.node.parentId);
145
+ this.previousNodeId = nearest.left;
146
+ this.nextNodeId = nearest.right;
147
+ this.nodeId = this.node.id;
148
+ return;
149
+ }
150
+ await this.router.navigate([this.previewLocation, id]);
151
+ }
152
+ catch (err) {
153
+ if (!err || err.status !== 401) {
154
+ await this.router.navigate([this.previewLocation, id]);
155
+ }
156
+ }
157
+ }
158
+ }
159
+ handleKeyboardEvent(event) {
160
+ const key = event.keyCode;
161
+ const rightArrow = 39;
162
+ const leftArrow = 37;
163
+ if (key === rightArrow || key === leftArrow) {
164
+ event.preventDefault();
165
+ event.stopImmediatePropagation();
166
+ }
167
+ }
168
+ /**
169
+ * Handles the visibility change of the Viewer component.
170
+ *
171
+ * @param isVisible Indicator whether Viewer is visible or hidden.
172
+ */
173
+ onVisibilityChanged(isVisible) {
174
+ const shouldNavigate = !isVisible;
175
+ this.navigateToFileLocation(shouldNavigate);
176
+ }
177
+ navigateToFileLocation(shouldNavigate) {
178
+ if (shouldNavigate) {
179
+ if (this.navigateBackAsClose) {
180
+ this.location.back();
181
+ }
182
+ else {
183
+ const shouldSkipNavigation = this.routesSkipNavigation.includes(this.previewLocation);
184
+ const route = this.getNavigationCommands(this.previewLocation);
185
+ if (!shouldSkipNavigation && this.folderId) {
186
+ route.push(this.folderId);
187
+ }
188
+ this.router.navigate(route);
189
+ }
190
+ }
191
+ }
192
+ /** Handles navigation to a previous document */
193
+ onNavigateBefore(event) {
194
+ if (event.type !== 'click' && this.shouldNavigate(event.target)) {
195
+ return;
196
+ }
197
+ if (this.previousNodeId) {
198
+ this.router.navigate(this.getPreviewPath(this.folderId, this.previousNodeId));
199
+ }
200
+ }
201
+ /** Handles navigation to a next document */
202
+ onNavigateNext(event) {
203
+ if (event.type !== 'click' && this.shouldNavigate(event.target)) {
204
+ return;
205
+ }
206
+ if (this.nextNodeId) {
207
+ this.router.navigate(this.getPreviewPath(this.folderId, this.nextNodeId));
208
+ }
209
+ }
210
+ /**
211
+ * Generates a node preview route based on folder and node IDs.
212
+ *
213
+ * @param folderId Folder ID
214
+ * @param nodeId Node ID
215
+ */
216
+ getPreviewPath(folderId, nodeId) {
217
+ const route = [this.previewLocation];
218
+ if (folderId) {
219
+ route.push(folderId);
220
+ }
221
+ if (nodeId) {
222
+ route.push('preview', nodeId);
223
+ }
224
+ return route;
225
+ }
226
+ /**
227
+ * Retrieves nearest node information for the given node and folder.
228
+ *
229
+ * @param nodeId Unique identifier of the document node
230
+ * @param folderId Unique identifier of the containing folder node.
231
+ */
232
+ async getNearestNodes(nodeId, folderId) {
233
+ const empty = {
234
+ left: null,
235
+ right: null
236
+ };
237
+ if (nodeId && folderId) {
238
+ try {
239
+ const ids = await this.getFileIds(this.navigateSource, folderId);
240
+ const idx = ids.indexOf(nodeId);
241
+ if (idx >= 0) {
242
+ return {
243
+ left: ids[idx - 1] || null,
244
+ right: ids[idx + 1] || null
245
+ };
246
+ }
247
+ else {
248
+ return empty;
249
+ }
250
+ }
251
+ catch {
252
+ return empty;
253
+ }
254
+ }
255
+ else {
256
+ return empty;
257
+ }
258
+ }
259
+ /**
260
+ * Retrieves a list of node identifiers for the folder and data source.
261
+ *
262
+ * @param source Data source name. Allowed values are: personal-files, libraries, favorites, shared, recent-files.
263
+ * @param folderId Containing folder node identifier for 'personal-files' and 'libraries' sources.
264
+ */
265
+ async getFileIds(source, folderId) {
266
+ if ((source === 'personal-files' || source === 'libraries') && folderId) {
267
+ const sortKey = this.preferences.get('personal-files.sorting.key') || 'modifiedAt';
268
+ const sortDirection = this.preferences.get('personal-files.sorting.direction') || 'desc';
269
+ const nodes = await this.contentApi
270
+ .getNodeChildren(folderId, {
271
+ // orderBy: `${sortKey} ${sortDirection}`,
272
+ fields: ['id', this.getRootField(sortKey)],
273
+ where: '(isFile=true)'
274
+ })
275
+ .toPromise();
276
+ const entries = nodes.list.entries.map((obj) => obj.entry);
277
+ this.sort(entries, sortKey, sortDirection);
278
+ return entries.map((obj) => obj.id);
279
+ }
280
+ if (source === 'favorites') {
281
+ const nodes = await this.contentApi
282
+ .getFavorites('-me-', {
283
+ where: '(EXISTS(target/file))',
284
+ fields: ['target']
285
+ })
286
+ .toPromise();
287
+ const sortKey = this.preferences.get('favorites.sorting.key') || 'modifiedAt';
288
+ const sortDirection = this.preferences.get('favorites.sorting.direction') || 'desc';
289
+ const files = nodes.list.entries.map((obj) => obj.entry.target.file);
290
+ this.sort(files, sortKey, sortDirection);
291
+ return files.map((f) => f.id);
292
+ }
293
+ if (source === 'shared') {
294
+ const sortingKey = this.preferences.get('shared.sorting.key') || 'modifiedAt';
295
+ const sortingDirection = this.preferences.get('shared.sorting.direction') || 'desc';
296
+ const nodes = await this.contentApi
297
+ .findSharedLinks({
298
+ fields: ['nodeId', this.getRootField(sortingKey)]
299
+ })
300
+ .toPromise();
301
+ const entries = nodes.list.entries.map((obj) => obj.entry);
302
+ this.sort(entries, sortingKey, sortingDirection);
303
+ return entries.map((obj) => obj.nodeId);
304
+ }
305
+ if (source === 'recent-files') {
306
+ const person = await this.contentApi.getPerson('-me-').toPromise();
307
+ const username = person.entry.id;
308
+ const sortingKey = this.preferences.get('recent-files.sorting.key') || 'modifiedAt';
309
+ const sortingDirection = this.preferences.get('recent-files.sorting.direction') || 'desc';
310
+ const query = {
311
+ query: {
312
+ query: '*',
313
+ language: 'afts'
314
+ },
315
+ filterQueries: [
316
+ { query: `cm:modified:[NOW/DAY-30DAYS TO NOW/DAY+1DAY]` },
317
+ { query: `cm:modifier:${username} OR cm:creator:${username}` },
318
+ {
319
+ query: this.recentFileFilters.join(' AND ')
320
+ }
321
+ ],
322
+ fields: ['id', this.getRootField(sortingKey)],
323
+ include: ['path', 'properties', 'allowableOperations'],
324
+ sort: [
325
+ {
326
+ type: 'FIELD',
327
+ field: 'cm:modified',
328
+ ascending: false
329
+ }
330
+ ]
331
+ };
332
+ const nodes = await this.contentApi.search(query).toPromise();
333
+ const entries = nodes.list.entries.map((obj) => obj.entry);
334
+ this.sort(entries, sortingKey, sortingDirection);
335
+ return entries.map((obj) => obj.id);
336
+ }
337
+ return [];
338
+ }
339
+ sort(items, key, direction) {
340
+ const options = {};
341
+ if (key.includes('sizeInBytes') || key === 'name') {
342
+ options.numeric = true;
343
+ }
344
+ items.sort((a, b) => {
345
+ let left = ObjectUtils.getValue(a, key);
346
+ if (left) {
347
+ left = left instanceof Date ? left.valueOf().toString() : left.toString();
348
+ }
349
+ else {
350
+ left = '';
351
+ }
352
+ let right = ObjectUtils.getValue(b, key);
353
+ if (right) {
354
+ right = right instanceof Date ? right.valueOf().toString() : right.toString();
355
+ }
356
+ else {
357
+ right = '';
358
+ }
359
+ return direction === 'asc' ? left.localeCompare(right, undefined, options) : right.localeCompare(left, undefined, options);
360
+ });
361
+ }
362
+ /**
363
+ * Get the root field name from the property path.
364
+ * Example: 'property1.some.child.property' => 'property1'
365
+ *
366
+ * @param path Property path
367
+ */
368
+ getRootField(path) {
369
+ if (path) {
370
+ return path.split('.')[0];
371
+ }
372
+ return path;
373
+ }
374
+ getNavigationCommands(url) {
375
+ const urlTree = this.router.parseUrl(url);
376
+ const urlSegmentGroup = urlTree.root.children[PRIMARY_OUTLET];
377
+ if (!urlSegmentGroup) {
378
+ return [url];
379
+ }
380
+ const urlSegments = urlSegmentGroup.segments;
381
+ return urlSegments.reduce(function (acc, item) {
382
+ acc.push(item.path, item.parameters);
383
+ return acc;
384
+ }, []);
385
+ }
386
+ shouldNavigate(element) {
387
+ let currentElement = element.parentElement;
388
+ while (currentElement && !this.isChild(currentElement.classList)) {
389
+ currentElement = currentElement.parentElement;
390
+ }
391
+ return !!currentElement;
392
+ }
393
+ isChild(list) {
394
+ return Array.from(list).some((className) => this.containersSkipNavigation.includes(className));
395
+ }
396
+ }
397
+ PreviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: PreviewComponent, deps: [{ token: i1.ContentApiService }, { token: i2.UserPreferencesService }, { token: i3.ActivatedRoute }, { token: i4.NodesApiService }, { token: i5.Actions }, { token: i6.Location }, { token: i1.AppHookService }], target: i0.ɵɵFactoryTarget.Component });
398
+ PreviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: PreviewComponent, selector: "app-preview", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" }, classAttribute: "app-preview" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"nodeId\">\n <adf-alfresco-viewer\n [ngClass]=\"{\n 'right_side--hide': !showRightSide\n }\"\n [nodeId]=\"nodeId\"\n [allowNavigate]=\"navigateMultiple\"\n [allowRightSidebar]=\"true\"\n [allowPrint]=\"false\"\n [showRightSidebar]=\"true\"\n [allowDownload]=\"false\"\n [allowFullScreen]=\"false\"\n [canNavigateBefore]=\"!!previousNodeId\"\n [canNavigateNext]=\"!!nextNodeId\"\n [overlayMode]=\"true\"\n (showViewerChange)=\"onVisibilityChanged($event)\"\n (navigateBefore)=\"onNavigateBefore($event)\"\n (navigateNext)=\"onNavigateNext($event)\"\n >\n <adf-viewer-sidebar *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"selection.file\"></aca-info-drawer>\n </adf-viewer-sidebar>\n\n <adf-viewer-open-with *ngIf=\"openWith.length\">\n <ng-container *ngFor=\"let action of openWith; trackBy: trackByActionId\">\n <app-toolbar-menu-item [actionRef]=\"action\"></app-toolbar-menu-item>\n </ng-container>\n </adf-viewer-open-with>\n\n <adf-viewer-toolbar-actions *ngIf=\"!simplestMode\">\n <ng-container *ngFor=\"let action of viewerToolbarActions; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"action\"></aca-toolbar-action>\n </ng-container>\n </adf-viewer-toolbar-actions>\n </adf-alfresco-viewer>\n</ng-container>\n", styles: [".app-preview{width:100%;height:100%}.adf-viewer-toolbar .adf-toolbar-divider{display:none}.adf-viewer-toolbar-actions{display:flex;flex-direction:row;align-items:center}.adf-viewer-toolbar-actions .adf-toolbar-divider{display:inline}.adf-viewer-toolbar .mat-toolbar>button:last-child{display:none}.adf-alfresco-viewer.right_side--hide .adf-viewer__sidebar__right{width:0}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ViewerSidebarComponent, selector: "adf-viewer-sidebar" }, { kind: "component", type: i2.ViewerOpenWithComponent, selector: "adf-viewer-open-with" }, { kind: "component", type: i2.ViewerToolbarActionsComponent, selector: "adf-viewer-toolbar-actions" }, { kind: "component", type: i4.AlfrescoViewerComponent, selector: "adf-alfresco-viewer", inputs: ["nodeId", "versionId", "sharedLinkId", "showViewer", "maxRetries", "allowGoBack", "showToolbar", "overlayMode", "allowNavigate", "canNavigateBefore", "canNavigateNext", "allowLeftSidebar", "allowRightSidebar", "showRightSidebar", "showLeftSidebar", "allowDownload", "allowPrint", "allowFullScreen", "sidebarRightTemplate", "sidebarLeftTemplate"], outputs: ["invalidSharedLink", "navigateBefore", "navigateNext", "showViewerChange"] }, { kind: "component", type: i1.ToolbarActionComponent, selector: "aca-toolbar-action", inputs: ["data", "type", "color", "actionRef"] }, { kind: "component", type: i1.ToolbarMenuItemComponent, selector: "app-toolbar-menu-item", inputs: ["actionRef", "menuId"] }, { kind: "component", type: i1.InfoDrawerComponent, selector: "aca-info-drawer", inputs: ["nodeId", "node"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None });
399
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: PreviewComponent, decorators: [{
400
+ type: Component,
401
+ args: [{ selector: 'app-preview', encapsulation: ViewEncapsulation.None, host: { class: 'app-preview' }, template: "<ng-container *ngIf=\"nodeId\">\n <adf-alfresco-viewer\n [ngClass]=\"{\n 'right_side--hide': !showRightSide\n }\"\n [nodeId]=\"nodeId\"\n [allowNavigate]=\"navigateMultiple\"\n [allowRightSidebar]=\"true\"\n [allowPrint]=\"false\"\n [showRightSidebar]=\"true\"\n [allowDownload]=\"false\"\n [allowFullScreen]=\"false\"\n [canNavigateBefore]=\"!!previousNodeId\"\n [canNavigateNext]=\"!!nextNodeId\"\n [overlayMode]=\"true\"\n (showViewerChange)=\"onVisibilityChanged($event)\"\n (navigateBefore)=\"onNavigateBefore($event)\"\n (navigateNext)=\"onNavigateNext($event)\"\n >\n <adf-viewer-sidebar *ngIf=\"infoDrawerOpened$ | async\">\n <aca-info-drawer [node]=\"selection.file\"></aca-info-drawer>\n </adf-viewer-sidebar>\n\n <adf-viewer-open-with *ngIf=\"openWith.length\">\n <ng-container *ngFor=\"let action of openWith; trackBy: trackByActionId\">\n <app-toolbar-menu-item [actionRef]=\"action\"></app-toolbar-menu-item>\n </ng-container>\n </adf-viewer-open-with>\n\n <adf-viewer-toolbar-actions *ngIf=\"!simplestMode\">\n <ng-container *ngFor=\"let action of viewerToolbarActions; trackBy: trackByActionId\">\n <aca-toolbar-action [actionRef]=\"action\"></aca-toolbar-action>\n </ng-container>\n </adf-viewer-toolbar-actions>\n </adf-alfresco-viewer>\n</ng-container>\n", styles: [".app-preview{width:100%;height:100%}.adf-viewer-toolbar .adf-toolbar-divider{display:none}.adf-viewer-toolbar-actions{display:flex;flex-direction:row;align-items:center}.adf-viewer-toolbar-actions .adf-toolbar-divider{display:inline}.adf-viewer-toolbar .mat-toolbar>button:last-child{display:none}.adf-alfresco-viewer.right_side--hide .adf-viewer__sidebar__right{width:0}\n"] }]
402
+ }], ctorParameters: function () { return [{ type: i1.ContentApiService }, { type: i2.UserPreferencesService }, { type: i3.ActivatedRoute }, { type: i4.NodesApiService }, { type: i5.Actions }, { type: i6.Location }, { type: i1.AppHookService }]; }, propDecorators: { handleKeyboardEvent: [{
403
+ type: HostListener,
404
+ args: ['document:keydown', ['$event']]
405
+ }] } });
406
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9wcmV2aWV3L3NyYy9saWIvY29tcG9uZW50cy9wcmV2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3ByZXZpZXcvc3JjL2xpYi9jb21wb25lbnRzL3ByZXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFxQixpQkFBaUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQXdDLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RSxPQUFPLEVBQXNCLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0csT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd4RixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7QUFTakUsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGFBQWE7SUEwQ2pELFlBQ1Us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QUUsSUFBSTtZQUMzQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3JDLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUVPLGNBQWMsQ0FBQyxPQUFvQjtRQUN6QyxJQUFJLGNBQWMsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO1FBRTNDLE9BQU8sY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDaEUsY0FBYyxHQUFHLGNBQWMsQ0FBQyxhQUFhLENBQUM7U0FDL0M7UUFFRCxPQUFPLENBQUMsQ0FBQyxjQUFjLENBQUM7SUFDMUIsQ0FBQztJQUVPLE9BQU8sQ0FBQyxJQUFrQjtRQUNoQyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBaUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3pHLENBQUM7OzZHQWxhVSxnQkFBZ0I7aUdBQWhCLGdCQUFnQixxTEM1QzdCLHkyQ0FvQ0E7MkZEUWEsZ0JBQWdCO2tCQVA1QixTQUFTOytCQUNFLGFBQWEsaUJBR1IsaUJBQWlCLENBQUMsSUFBSSxRQUMvQixFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7a1JBa0o5QixtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjMgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgVmlld0VuY2Fwc3VsYXRpb24sIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFVybFRyZWUsIFVybFNlZ21lbnRHcm91cCwgVXJsU2VnbWVudCwgUFJJTUFSWV9PVVRMRVQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UsIE9iamVjdFV0aWxzIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IENsb3NlUHJldmlld0FjdGlvbiwgVmlld2VyQWN0aW9uVHlwZXMsIFNldFNlbGVjdGVkTm9kZXNBY3Rpb24gfSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZC9zdG9yZSc7XG5pbXBvcnQgeyBQYWdlQ29tcG9uZW50LCBBcHBIb29rU2VydmljZSwgQ29udGVudEFwaVNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZCc7XG5pbXBvcnQgeyBDb250ZW50QWN0aW9uUmVmLCBWaWV3ZXJFeHRlbnNpb25SZWYgfSBmcm9tICdAYWxmcmVzY28vYWRmLWV4dGVuc2lvbnMnO1xuaW1wb3J0IHsgU2VhcmNoUmVxdWVzdCB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHsgZnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWN0aW9ucywgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBOb2Rlc0FwaVNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvbnRlbnQtc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcHJldmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcmV2aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJldmlldy5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7IGNsYXNzOiAnYXBwLXByZXZpZXcnIH1cbn0pXG5leHBvcnQgY2xhc3MgUHJldmlld0NvbXBvbmVudCBleHRlbmRzIFBhZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByZXZpZXdMb2NhdGlvbjogc3RyaW5nID0gbnVsbDtcbiAgcm91dGVzU2tpcE5hdmlnYXRpb24gPSBbJ3NoYXJlZCcsICdyZWNlbnQtZmlsZXMnLCAnZmF2b3JpdGVzJ107XG4gIG5hdmlnYXRlU291cmNlOiBzdHJpbmcgPSBudWxsO1xuICBuYXZpZ2F0aW9uU291cmNlcyA9IFsnZmF2b3JpdGVzJywgJ2xpYnJhcmllcycsICdwZXJzb25hbC1maWxlcycsICdyZWNlbnQtZmlsZXMnLCAnc2hhcmVkJ107XG4gIGZvbGRlcklkOiBzdHJpbmcgPSBudWxsO1xuICBub2RlSWQ6IHN0cmluZyA9IG51bGw7XG4gIHByZXZpb3VzTm9kZUlkOiBzdHJpbmc7XG4gIG5leHROb2RlSWQ6IHN0cmluZztcbiAgbmF2aWdhdGVNdWx0aXBsZSA9IGZhbHNlO1xuICBvcGVuV2l0aDogQXJyYXk8Q29udGVudEFjdGlvblJlZj4gPSBbXTtcbiAgY29udGVudEV4dGVuc2lvbnM6IEFycmF5PFZpZXdlckV4dGVuc2lvblJlZj4gPSBbXTtcbiAgc2hvd1JpZ2h0U2lkZSA9IGZhbHNlO1xuICBuYXZpZ2F0ZUJhY2tBc0Nsb3NlID0gZmFsc2U7XG4gIHNpbXBsZXN0TW9kZSA9IGZhbHNlO1xuXG4gIHJlY2VudEZpbGVGaWx0ZXJzID0gW1xuICAgICdUWVBFOlwiY29udGVudFwiJyxcbiAgICAnLVBOQU1FOlwiMC93aWtpXCInLFxuICAgICctVFlQRTpcImFwcDpmaWxlbGlua1wiJyxcbiAgICAnLVRZUEU6XCJmbTpwb3N0XCInLFxuICAgICctVFlQRTpcImNtOnRodW1ibmFpbFwiJyxcbiAgICAnLVRZUEU6XCJjbTpmYWlsZWRUaHVtYm5haWxcIicsXG4gICAgJy1UWVBFOlwiY206cmF0aW5nXCInLFxuICAgICctVFlQRTpcImRsOmRhdGFMaXN0XCInLFxuICAgICctVFlQRTpcImRsOnRvZG9MaXN0XCInLFxuICAgICctVFlQRTpcImRsOmlzc3VlXCInLFxuICAgICctVFlQRTpcImRsOmNvbnRhY3RcIicsXG4gICAgJy1UWVBFOlwiZGw6ZXZlbnRBZ2VuZGFcIicsXG4gICAgJy1UWVBFOlwiZGw6ZXZlbnRcIicsXG4gICAgJy1UWVBFOlwiZGw6dGFza1wiJyxcbiAgICAnLVRZUEU6XCJkbDpzaW1wbGV0YXNrXCInLFxuICAgICctVFlQRTpcImRsOm1lZXRpbmdBZ2VuZGFcIicsXG4gICAgJy1UWVBFOlwiZGw6bG9jYXRpb25cIicsXG4gICAgJy1UWVBFOlwiZm06dG9waWNcIicsXG4gICAgJy1UWVBFOlwiZm06cG9zdFwiJyxcbiAgICAnLVRZUEU6XCJpYTpjYWxlbmRhckV2ZW50XCInLFxuICAgICctVFlQRTpcImxuazpsaW5rXCInXG4gIF07XG5cbiAgcHJpdmF0ZSBjb250YWluZXJzU2tpcE5hdmlnYXRpb24gPSBbJ2FkZi12aWV3ZXJfX3NpZGViYXInLCAnY2RrLW92ZXJsYXktY29udGFpbmVyJywgJ2FkZi1pbWFnZS12aWV3ZXInXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbnRlbnRBcGk6IENvbnRlbnRBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJlZmVyZW5jZXM6IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBub2Rlc0FwaVNlcnZpY2U6IE5vZGVzQXBpU2VydmljZSxcbiAgICBwcml2YXRlIGFjdGlvbnMkOiBBY3Rpb25zLFxuICAgIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uLFxuICAgIHByaXZhdGUgYXBwSG9va1NlcnZpY2U6IEFwcEhvb2tTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgZnJvbSh0aGlzLmluZm9EcmF3ZXJPcGVuZWQkKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKCh2YWwpID0+IHtcbiAgICAgICAgdGhpcy5zaG93UmlnaHRTaWRlID0gdmFsO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnByZXZpZXdMb2NhdGlvbiA9IHRoaXMucm91dGVyLnVybC5zdWJzdHIoMCwgdGhpcy5yb3V0ZXIudXJsLmluZGV4T2YoJy8nLCAxKSkucmVwbGFjZSgvXFwvL2csICcnKTtcblxuICAgIGNvbnN0IHJvdXRlRGF0YSA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YTtcbiAgICB0aGlzLm5hdmlnYXRlQmFja0FzQ2xvc2UgPSAhIXJvdXRlRGF0YS5uYXZpZ2F0ZUJhY2tBc0Nsb3NlO1xuICAgIHRoaXMuc2ltcGxlc3RNb2RlID0gISFyb3V0ZURhdGEuc2ltcGxlc3RNb2RlO1xuXG4gICAgaWYgKHJvdXRlRGF0YS5uYXZpZ2F0ZU11bHRpcGxlKSB7XG4gICAgICB0aGlzLm5hdmlnYXRlTXVsdGlwbGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChyb3V0ZURhdGEubmF2aWdhdGVTb3VyY2UpIHtcbiAgICAgIGNvbnN0IHNvdXJjZSA9IHJvdXRlRGF0YS5uYXZpZ2F0ZVNvdXJjZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgaWYgKHRoaXMubmF2aWdhdGlvblNvdXJjZXMuaW5jbHVkZXMoc291cmNlKSkge1xuICAgICAgICB0aGlzLm5hdmlnYXRlU291cmNlID0gcm91dGVEYXRhLm5hdmlnYXRlU291cmNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XG4gICAgICB0aGlzLmZvbGRlcklkID0gcGFyYW1zLmZvbGRlcklkO1xuICAgICAgY29uc3QgaWQgPSBwYXJhbXMubm9kZUlkO1xuICAgICAgaWYgKGlkKSB7XG4gICAgICAgIHRoaXMuZGlzcGxheU5vZGUoaWQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0gdGhpcy5zdWJzY3JpcHRpb25zLmNvbmNhdChbXG4gICAgICB0aGlzLmFwcEhvb2tTZXJ2aWNlLm5vZGVzRGVsZXRlZC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5uYXZpZ2F0ZVRvRmlsZUxvY2F0aW9uKHRydWUpKSxcblxuICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmZpbGVVcGxvYWREZWxldGVkLnN1YnNjcmliZSgoKSA9PiB0aGlzLm5hdmlnYXRlVG9GaWxlTG9jYXRpb24odHJ1ZSkpLFxuXG4gICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuZmlsZVVwbG9hZENvbXBsZXRlLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpLnN1YnNjcmliZSgoZmlsZSkgPT4gdGhpcy5ub2Rlc0FwaVNlcnZpY2Uubm9kZVVwZGF0ZWQubmV4dChmaWxlLmRhdGEuZW50cnkpKSxcblxuICAgICAgdGhpcy5hY3Rpb25zJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBvZlR5cGU8Q2xvc2VQcmV2aWV3QWN0aW9uPihWaWV3ZXJBY3Rpb25UeXBlcy5DbG9zZVByZXZpZXcpLFxuICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLm5hdmlnYXRlVG9GaWxlTG9jYXRpb24odHJ1ZSkpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7fSlcbiAgICBdKTtcblxuICAgIHRoaXMuZXh0ZW5zaW9uc1xuICAgICAgLmdldE9wZW5XaXRoQWN0aW9ucygpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKGFjdGlvbnMpID0+IHtcbiAgICAgICAgdGhpcy5vcGVuV2l0aCA9IGFjdGlvbnM7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgdGhlIHBhcnRpY3VsYXIgbm9kZSBpbnRvIHRoZSBWaWV3ZXJcbiAgICpcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgTm9kZSB0byBkaXNwbGF5XG4gICAqL1xuICBhc3luYyBkaXNwbGF5Tm9kZShpZDogc3RyaW5nKSB7XG4gICAgaWYgKGlkKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLm5vZGUgPSBhd2FpdCB0aGlzLmNvbnRlbnRBcGkuZ2V0Tm9kZUluZm8oaWQpLnRvUHJvbWlzZSgpO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZXRTZWxlY3RlZE5vZGVzQWN0aW9uKFt7IGVudHJ5OiB0aGlzLm5vZGUgfV0pKTtcblxuICAgICAgICBpZiAodGhpcy5ub2RlICYmIHRoaXMubm9kZS5pc0ZpbGUpIHtcbiAgICAgICAgICBjb25zdCBuZWFyZXN0ID0gYXdhaXQgdGhpcy5nZXROZWFyZXN0Tm9kZXModGhpcy5ub2RlLmlkLCB0aGlzLm5vZGUucGFyZW50SWQpO1xuXG4gICAgICAgICAgdGhpcy5wcmV2aW91c05vZGVJZCA9IG5lYXJlc3QubGVmdDtcbiAgICAgICAgICB0aGlzLm5leHROb2RlSWQgPSBuZWFyZXN0LnJpZ2h0O1xuICAgICAgICAgIHRoaXMubm9kZUlkID0gdGhpcy5ub2RlLmlkO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5wcmV2aWV3TG9jYXRpb24sIGlkXSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKCFlcnIgfHwgZXJyLnN0YXR1cyAhPT0gNDAxKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMucHJldmlld0xvY2F0aW9uLCBpZF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIGhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBrZXkgPSBldmVudC5rZXlDb2RlO1xuICAgIGNvbnN0IHJpZ2h0QXJyb3cgPSAzOTtcbiAgICBjb25zdCBsZWZ0QXJyb3cgPSAzNztcblxuICAgIGlmIChrZXkgPT09IHJpZ2h0QXJyb3cgfHwga2V5ID09PSBsZWZ0QXJyb3cpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgdmlzaWJpbGl0eSBjaGFuZ2Ugb2YgdGhlIFZpZXdlciBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBpc1Zpc2libGUgSW5kaWNhdG9yIHdoZXRoZXIgVmlld2VyIGlzIHZpc2libGUgb3IgaGlkZGVuLlxuICAgKi9cbiAgb25WaXNpYmlsaXR5Q2hhbmdlZChpc1Zpc2libGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBzaG91bGROYXZpZ2F0ZSA9ICFpc1Zpc2libGU7XG4gICAgdGhpcy5uYXZpZ2F0ZVRvRmlsZUxvY2F0aW9uKHNob3VsZE5hdmlnYXRlKTtcbiAgfVxuXG4gIG5hdmlnYXRlVG9GaWxlTG9jYXRpb24oc2hvdWxkTmF2aWdhdGU6IGJvb2xlYW4pIHtcbiAgICBpZiAoc2hvdWxkTmF2aWdhdGUpIHtcbiAgICAgIGlmICh0aGlzLm5hdmlnYXRlQmFja0FzQ2xvc2UpIHtcbiAgICAgICAgdGhpcy5sb2NhdGlvbi5iYWNrKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzaG91bGRTa2lwTmF2aWdhdGlvbiA9IHRoaXMucm91dGVzU2tpcE5hdmlnYXRpb24uaW5jbHVkZXModGhpcy5wcmV2aWV3TG9jYXRpb24pO1xuICAgICAgICBjb25zdCByb3V0ZSA9IHRoaXMuZ2V0TmF2aWdhdGlvbkNvbW1hbmRzKHRoaXMucHJldmlld0xvY2F0aW9uKTtcblxuICAgICAgICBpZiAoIXNob3VsZFNraXBOYXZpZ2F0aW9uICYmIHRoaXMuZm9sZGVySWQpIHtcbiAgICAgICAgICByb3V0ZS5wdXNoKHRoaXMuZm9sZGVySWQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKHJvdXRlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogSGFuZGxlcyBuYXZpZ2F0aW9uIHRvIGEgcHJldmlvdXMgZG9jdW1lbnQgKi9cbiAgb25OYXZpZ2F0ZUJlZm9yZShldmVudDogTW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQudHlwZSAhPT0gJ2NsaWNrJyAmJiB0aGlzLnNob3VsZE5hdmlnYXRlKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wcmV2aW91c05vZGVJZCkge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUodGhpcy5nZXRQcmV2aWV3UGF0aCh0aGlzLmZvbGRlcklkLCB0aGlzLnByZXZpb3VzTm9kZUlkKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEhhbmRsZXMgbmF2aWdhdGlvbiB0byBhIG5leHQgZG9jdW1lbnQgKi9cbiAgb25OYXZpZ2F0ZU5leHQoZXZlbnQ6IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LnR5cGUgIT09ICdjbGljaycgJiYgdGhpcy5zaG91bGROYXZpZ2F0ZShldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmV4dE5vZGVJZCkge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUodGhpcy5nZXRQcmV2aWV3UGF0aCh0aGlzLmZvbGRlcklkLCB0aGlzLm5leHROb2RlSWQpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgbm9kZSBwcmV2aWV3IHJvdXRlIGJhc2VkIG9uIGZvbGRlciBhbmQgbm9kZSBJRHMuXG4gICAqXG4gICAqIEBwYXJhbSBmb2xkZXJJZCBGb2xkZXIgSURcbiAgICogQHBhcmFtIG5vZGVJZCBOb2RlIElEXG4gICAqL1xuICBnZXRQcmV2aWV3UGF0aChmb2xkZXJJZDogc3RyaW5nLCBub2RlSWQ6IHN0cmluZyk6IGFueVtdIHtcbiAgICBjb25zdCByb3V0ZSA9IFt0aGlzLnByZXZpZXdMb2NhdGlvbl07XG5cbiAgICBpZiAoZm9sZGVySWQpIHtcbiAgICAgIHJvdXRlLnB1c2goZm9sZGVySWQpO1xuICAgIH1cblxuICAgIGlmIChub2RlSWQpIHtcbiAgICAgIHJvdXRlLnB1c2goJ3ByZXZpZXcnLCBub2RlSWQpO1xuICAgIH1cblxuICAgIHJldHVybiByb3V0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgbmVhcmVzdCBub2RlIGluZm9ybWF0aW9uIGZvciB0aGUgZ2l2ZW4gbm9kZSBhbmQgZm9sZGVyLlxuICAgKlxuICAgKiBAcGFyYW0gbm9kZUlkIFVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBkb2N1bWVudCBub2RlXG4gICAqIEBwYXJhbSBmb2xkZXJJZCBVbmlxdWUgaWRlbnRpZmllciBvZiB0aGUgY29udGFpbmluZyBmb2xkZXIgbm9kZS5cbiAgICovXG4gIGFzeW5jIGdldE5lYXJlc3ROb2Rlcyhub2RlSWQ6IHN0cmluZywgZm9sZGVySWQ6IHN0cmluZyk6IFByb21pc2U8eyBsZWZ0OiBzdHJpbmc7IHJpZ2h0OiBzdHJpbmcgfT4ge1xuICAgIGNvbnN0IGVtcHR5ID0ge1xuICAgICAgbGVmdDogbnVsbCxcbiAgICAgIHJpZ2h0OiBudWxsXG4gICAgfTtcblxuICAgIGlmIChub2RlSWQgJiYgZm9sZGVySWQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGlkcyA9IGF3YWl0IHRoaXMuZ2V0RmlsZUlkcyh0aGlzLm5hdmlnYXRlU291cmNlLCBmb2xkZXJJZCk7XG4gICAgICAgIGNvbnN0IGlkeCA9IGlkcy5pbmRleE9mKG5vZGVJZCk7XG5cbiAgICAgICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxlZnQ6IGlkc1tpZHggLSAxXSB8fCBudWxsLFxuICAgICAgICAgICAgcmlnaHQ6IGlkc1tpZHggKyAxXSB8fCBudWxsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gZW1wdHk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gZW1wdHk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBlbXB0eTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIGEgbGlzdCBvZiBub2RlIGlkZW50aWZpZXJzIGZvciB0aGUgZm9sZGVyIGFuZCBkYXRhIHNvdXJjZS5cbiAgICpcbiAgICogQHBhcmFtIHNvdXJjZSBEYXRhIHNvdXJjZSBuYW1lLiBBbGxvd2VkIHZhbHVlcyBhcmU6IHBlcnNvbmFsLWZpbGVzLCBsaWJyYXJpZXMsIGZhdm9yaXRlcywgc2hhcmVkLCByZWNlbnQtZmlsZXMuXG4gICAqIEBwYXJhbSBmb2xkZXJJZCBDb250YWluaW5nIGZvbGRlciBub2RlIGlkZW50aWZpZXIgZm9yICdwZXJzb25hbC1maWxlcycgYW5kICdsaWJyYXJpZXMnIHNvdXJjZXMuXG4gICAqL1xuICBhc3luYyBnZXRGaWxlSWRzKHNvdXJjZTogc3RyaW5nLCBmb2xkZXJJZD86IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBpZiAoKHNvdXJjZSA9PT0gJ3BlcnNvbmFsLWZpbGVzJyB8fCBzb3VyY2UgPT09ICdsaWJyYXJpZXMnKSAmJiBmb2xkZXJJZCkge1xuICAgICAgY29uc3Qgc29ydEtleSA9IHRoaXMucHJlZmVyZW5jZXMuZ2V0KCdwZXJzb25hbC1maWxlcy5zb3J0aW5nLmtleScpIHx8ICdtb2RpZmllZEF0JztcbiAgICAgIGNvbnN0IHNvcnREaXJlY3Rpb24gPSB0aGlzLnByZWZlcmVuY2VzLmdldCgncGVyc29uYWwtZmlsZXMuc29ydGluZy5kaXJlY3Rpb24nKSB8fCAnZGVzYyc7XG4gICAgICBjb25zdCBub2RlcyA9IGF3YWl0IHRoaXMuY29udGVudEFwaVxuICAgICAgICAuZ2V0Tm9kZUNoaWxkcmVuKGZvbGRlcklkLCB7XG4gICAgICAgICAgLy8gb3JkZXJCeTogYCR7c29ydEtleX0gJHtzb3J0RGlyZWN0aW9ufWAsXG4gICAgICAgICAgZmllbGRzOiBbJ2lkJywgdGhpcy5nZXRSb290RmllbGQoc29ydEtleSldLFxuICAgICAgICAgIHdoZXJlOiAnKGlzRmlsZT10cnVlKSdcbiAgICAgICAgfSlcbiAgICAgICAgLnRvUHJvbWlzZSgpO1xuXG4gICAgICBjb25zdCBlbnRyaWVzID0gbm9kZXMubGlzdC5lbnRyaWVzLm1hcCgob2JqKSA9PiBvYmouZW50cnkpO1xuICAgICAgdGhpcy5zb3J0KGVudHJpZXMsIHNvcnRLZXksIHNvcnREaXJlY3Rpb24pO1xuXG4gICAgICByZXR1cm4gZW50cmllcy5tYXAoKG9iaikgPT4gb2JqLmlkKTtcbiAgICB9XG5cbiAgICBpZiAoc291cmNlID09PSAnZmF2b3JpdGVzJykge1xuICAgICAgY29uc3Qgbm9kZXMgPSBhd2FpdCB0aGlzLmNvbnRlbnRBcGlcbiAgICAgICAgLmdldEZhdm9yaXRlcygnLW1lLScsIHtcbiAgICAgICAgICB3aGVyZTogJyhFWElTVFModGFyZ2V0L2ZpbGUpKScsXG4gICAgICAgICAgZmllbGRzOiBbJ3RhcmdldCddXG4gICAgICAgIH0pXG4gICAgICAgIC50b1Byb21pc2UoKTtcblxuICAgICAgY29uc3Qgc29ydEtleSA9IHRoaXMucHJlZmVyZW5jZXMuZ2V0KCdmYXZvcml0ZXMuc29ydGluZy5rZXknKSB8fCAnbW9kaWZpZWRBdCc7XG4gICAgICBjb25zdCBzb3J0RGlyZWN0aW9uID0gdGhpcy5wcmVmZXJlbmNlcy5nZXQoJ2Zhdm9yaXRlcy5zb3J0aW5nLmRpcmVjdGlvbicpIHx8ICdkZXNjJztcbiAgICAgIGNvbnN0IGZpbGVzID0gbm9kZXMubGlzdC5lbnRyaWVzLm1hcCgob2JqKSA9PiBvYmouZW50cnkudGFyZ2V0LmZpbGUpO1xuICAgICAgdGhpcy5zb3J0KGZpbGVzLCBzb3J0S2V5LCBzb3J0RGlyZWN0aW9uKTtcblxuICAgICAgcmV0dXJuIGZpbGVzLm1hcCgoZikgPT4gZi5pZCk7XG4gICAgfVxuXG4gICAgaWYgKHNvdXJjZSA9PT0gJ3NoYXJlZCcpIHtcbiAgICAgIGNvbnN0IHNvcnRpbmdLZXkgPSB0aGlzLnByZWZlcmVuY2VzLmdldCgnc2hhcmVkLnNvcnRpbmcua2V5JykgfHwgJ21vZGlmaWVkQXQnO1xuICAgICAgY29uc3Qgc29ydGluZ0RpcmVjdGlvbiA9IHRoaXMucHJlZmVyZW5jZXMuZ2V0KCdzaGFyZWQuc29ydGluZy5kaXJlY3Rpb24nKSB8fCAnZGVzYyc7XG5cbiAgICAgIGNvbnN0IG5vZGVzID0gYXdhaXQgdGhpcy5jb250ZW50QXBpXG4gICAgICAgIC5maW5kU2hhcmVkTGlua3Moe1xuICAgICAgICAgIGZpZWxkczogWydub2RlSWQnLCB0aGlzLmdldFJvb3RGaWVsZChzb3J0aW5nS2V5KV1cbiAgICAgICAgfSlcbiAgICAgICAgLnRvUHJvbWlzZSgpO1xuXG4gICAgICBjb25zdCBlbnRyaWVzID0gbm9kZXMubGlzdC5lbnRyaWVzLm1hcCgob2JqKSA9PiBvYmouZW50cnkpO1xuICAgICAgdGhpcy5zb3J0KGVudHJpZXMsIHNvcnRpbmdLZXksIHNvcnRpbmdEaXJlY3Rpb24pO1xuXG4gICAgICByZXR1cm4gZW50cmllcy5tYXAoKG9iaikgPT4gb2JqLm5vZGVJZCk7XG4gICAgfVxuXG4gICAgaWYgKHNvdXJjZSA9PT0gJ3JlY2VudC1maWxlcycpIHtcbiAgICAgIGNvbnN0IHBlcnNvbiA9IGF3YWl0IHRoaXMuY29udGVudEFwaS5nZXRQZXJzb24oJy1tZS0nKS50b1Byb21pc2UoKTtcbiAgICAgIGNvbnN0IHVzZXJuYW1lID0gcGVyc29uLmVudHJ5LmlkO1xuICAgICAgY29uc3Qgc29ydGluZ0tleSA9IHRoaXMucHJlZmVyZW5jZXMuZ2V0KCdyZWNlbnQtZmlsZXMuc29ydGluZy5rZXknKSB8fCAnbW9kaWZpZWRBdCc7XG4gICAgICBjb25zdCBzb3J0aW5nRGlyZWN0aW9uID0gdGhpcy5wcmVmZXJlbmNlcy5nZXQoJ3JlY2VudC1maWxlcy5zb3J0aW5nLmRpcmVjdGlvbicpIHx8ICdkZXNjJztcblxuICAgICAgY29uc3QgcXVlcnk6IFNlYXJjaFJlcXVlc3QgPSB7XG4gICAgICAgIHF1ZXJ5OiB7XG4gICAgICAgICAgcXVlcnk6ICcqJyxcbiAgICAgICAgICBsYW5ndWFnZTogJ2FmdHMnXG4gICAgICAgIH0sXG4gICAgICAgIGZpbHRlclF1ZXJpZXM6IFtcbiAgICAgICAgICB7IHF1ZXJ5OiBgY206bW9kaWZpZWQ6W05PVy9EQVktMzBEQVlTIFRPIE5PVy9EQVkrMURBWV1gIH0sXG4gICAgICAgICAgeyBxdWVyeTogYGNtOm1vZGlmaWVyOiR7dXNlcm5hbWV9IE9SIGNtOmNyZWF0b3I6JHt1c2VybmFtZX1gIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgcXVlcnk6IHRoaXMucmVjZW50RmlsZUZpbHRlcnMuam9pbignIEFORCAnKVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgZmllbGRzOiBbJ2lkJywgdGhpcy5nZXRSb290RmllbGQoc29ydGluZ0tleSldLFxuICAgICAgICBpbmNsdWRlOiBbJ3BhdGgnLCAncHJvcGVydGllcycsICdhbGxvd2FibGVPcGVyYXRpb25zJ10sXG4gICAgICAgIHNvcnQ6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiAnRklFTEQnLFxuICAgICAgICAgICAgZmllbGQ6ICdjbTptb2RpZmllZCcsXG4gICAgICAgICAgICBhc2NlbmRpbmc6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9O1xuICAgICAgY29uc3Qgbm9kZXMgPSBhd2FpdCB0aGlzLmNvbnRlbnRBcGkuc2VhcmNoKHF1ZXJ5KS50b1Byb21pc2UoKTtcblxuICAgICAgY29uc3QgZW50cmllcyA9IG5vZGVzLmxpc3QuZW50cmllcy5tYXAoKG9iaikgPT4gb2JqLmVudHJ5KTtcbiAgICAgIHRoaXMuc29ydChlbnRyaWVzLCBzb3J0aW5nS2V5LCBzb3J0aW5nRGlyZWN0aW9uKTtcblxuICAgICAgcmV0dXJuIGVudHJpZXMubWFwKChvYmopID0+IG9iai5pZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBzb3J0KGl0ZW1zOiBhbnlbXSwga2V5OiBzdHJpbmcsIGRpcmVjdGlvbjogc3RyaW5nKSB7XG4gICAgY29uc3Qgb3B0aW9uczogSW50bC5Db2xsYXRvck9wdGlvbnMgPSB7fTtcblxuICAgIGlmIChrZXkuaW5jbHVkZXMoJ3NpemVJbkJ5dGVzJykgfHwga2V5ID09PSAnbmFtZScpIHtcbiAgICAgIG9wdGlvbnMubnVtZXJpYyA9IHRydWU7XG4gICAgfVxuXG4gICAgaXRlbXMuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcbiAgICAgIGxldCBsZWZ0ID0gT2JqZWN0VXRpbHMuZ2V0VmFsdWUoYSwga2V5KTtcbiAgICAgIGlmIChsZWZ0KSB7XG4gICAgICAgIGxlZnQgPSBsZWZ0IGluc3RhbmNlb2YgRGF0ZSA/IGxlZnQudmFsdWVPZigpLnRvU3RyaW5nKCkgOiBsZWZ0LnRvU3RyaW5nKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZWZ0ID0gJyc7XG4gICAgICB9XG5cbiAgICAgIGxldCByaWdodCA9IE9iamVjdFV0aWxzLmdldFZhbHVlKGIsIGtleSk7XG4gICAgICBpZiAocmlnaHQpIHtcbiAgICAgICAgcmlnaHQgPSByaWdodCBpbnN0YW5jZW9mIERhdGUgPyByaWdodC52YWx1ZU9mKCkudG9TdHJpbmcoKSA6IHJpZ2h0LnRvU3RyaW5nKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByaWdodCA9ICcnO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZGlyZWN0aW9uID09PSAnYXNjJyA/IGxlZnQubG9jYWxlQ29tcGFyZShyaWdodCwgdW5kZWZpbmVkLCBvcHRpb25zKSA6IHJpZ2h0LmxvY2FsZUNvbXBhcmUobGVmdCwgdW5kZWZpbmVkLCBvcHRpb25zKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJvb3QgZmllbGQgbmFtZSBmcm9tIHRoZSBwcm9wZXJ0eSBwYXRoLlxuICAgKiBFeGFtcGxlOiAncHJvcGVydHkxLnNvbWUuY2hpbGQucHJvcGVydHknID0+ICdwcm9wZXJ0eTEnXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIFByb3BlcnR5IHBhdGhcbiAgICovXG4gIGdldFJvb3RGaWVsZChwYXRoOiBzdHJpbmcpIHtcbiAgICBpZiAocGF0aCkge1xuICAgICAgcmV0dXJuIHBhdGguc3BsaXQoJy4nKVswXTtcbiAgICB9XG4gICAgcmV0dXJuIHBhdGg7XG4gIH1cblxuICBwcml2YXRlIGdldE5hdmlnYXRpb25Db21tYW5kcyh1cmw6IHN0cmluZyk6IGFueVtdIHtcbiAgICBjb25zdCB1cmxUcmVlOiBVcmxUcmVlID0gdGhpcy5yb3V0ZXIucGFyc2VVcmwodXJsKTtcbiAgICBjb25zdCB1cmxTZWdtZW50R3JvdXA6IFVybFNlZ21lbnRHcm91cCA9IHVybFRyZWUucm9vdC5jaGlsZHJlbltQUklNQVJZX09VVExFVF07XG5cbiAgICBpZiAoIXVybFNlZ21lbnRHcm91cCkge1xuICAgICAgcmV0dXJuIFt1cmxdO1xuICAgIH1cblxuICAgIGNvbnN0IHVybFNlZ21lbnRzOiBVcmxTZWdtZW50W10gPSB1cmxTZWdtZW50R3JvdXAuc2VnbWVudHM7XG5cbiAgICByZXR1cm4gdXJsU2VnbWVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGl0ZW0pIHtcbiAgICAgIGFjYy5wdXNoKGl0ZW0ucGF0aCwgaXRlbS5wYXJhbWV0ZXJzKTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgW10pO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGROYXZpZ2F0ZShlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIGxldCBjdXJyZW50RWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudDtcblxuICAgIHdoaWxlIChjdXJyZW50RWxlbWVudCAmJiAhdGhpcy5pc0NoaWxkKGN1cnJlbnRFbGVtZW50LmNsYXNzTGlzdCkpIHtcbiAgICAgIGN1cnJlbnRFbGVtZW50ID0gY3VycmVudEVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICB9XG5cbiAgICByZXR1cm4gISFjdXJyZW50RWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgaXNDaGlsZChsaXN0OiBET01Ub2tlbkxpc3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShsaXN0KS5zb21lKChjbGFzc05hbWU6IHN0cmluZykgPT4gdGhpcy5jb250YWluZXJzU2tpcE5hdmlnYXRpb24uaW5jbHVkZXMoY2xhc3NOYW1lKSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJub2RlSWRcIj5cbiAgPGFkZi1hbGZyZXNjby12aWV3ZXJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAncmlnaHRfc2lkZS0taGlkZSc6ICFzaG93UmlnaHRTaWRlXG4gICAgfVwiXG4gICAgW25vZGVJZF09XCJub2RlSWRcIlxuICAgIFthbGxvd05hdmlnYXRlXT1cIm5hdmlnYXRlTXVsdGlwbGVcIlxuICAgIFthbGxvd1JpZ2h0U2lkZWJhcl09XCJ0cnVlXCJcbiAgICBbYWxsb3dQcmludF09XCJmYWxzZVwiXG4gICAgW3Nob3dSaWdodFNpZGViYXJdPVwidHJ1ZVwiXG4gICAgW2FsbG93RG93bmxvYWRdPVwiZmFsc2VcIlxuICAgIFthbGxvd0Z1bGxTY3JlZW5dPVwiZmFsc2VcIlxuICAgIFtjYW5OYXZpZ2F0ZUJlZm9yZV09XCIhIXByZXZpb3VzTm9kZUlkXCJcbiAgICBbY2FuTmF2aWdhdGVOZXh0XT1cIiEhbmV4dE5vZGVJZFwiXG4gICAgW292ZXJsYXlNb2RlXT1cInRydWVcIlxuICAgIChzaG93Vmlld2VyQ2hhbmdlKT1cIm9uVmlzaWJpbGl0eUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgKG5hdmlnYXRlQmVmb3JlKT1cIm9uTmF2aWdhdGVCZWZvcmUoJGV2ZW50KVwiXG4gICAgKG5hdmlnYXRlTmV4dCk9XCJvbk5hdmlnYXRlTmV4dCgkZXZlbnQpXCJcbiAgPlxuICAgIDxhZGYtdmlld2VyLXNpZGViYXIgKm5nSWY9XCJpbmZvRHJhd2VyT3BlbmVkJCB8IGFzeW5jXCI+XG4gICAgICA8YWNhLWluZm8tZHJhd2VyIFtub2RlXT1cInNlbGVjdGlvbi5maWxlXCI+PC9hY2EtaW5mby1kcmF3ZXI+XG4gICAgPC9hZGYtdmlld2VyLXNpZGViYXI+XG5cbiAgICA8YWRmLXZpZXdlci1vcGVuLXdpdGggKm5nSWY9XCJvcGVuV2l0aC5sZW5ndGhcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBvcGVuV2l0aDsgdHJhY2tCeTogdHJhY2tCeUFjdGlvbklkXCI+XG4gICAgICAgIDxhcHAtdG9vbGJhci1tZW51LWl0ZW0gW2FjdGlvblJlZl09XCJhY3Rpb25cIj48L2FwcC10b29sYmFyLW1lbnUtaXRlbT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvYWRmLXZpZXdlci1vcGVuLXdpdGg+XG5cbiAgICA8YWRmLXZpZXdlci10b29sYmFyLWFjdGlvbnMgKm5nSWY9XCIhc2ltcGxlc3RNb2RlXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2Ygdmlld2VyVG9vbGJhckFjdGlvbnM7IHRyYWNrQnk6IHRyYWNrQnlBY3Rpb25JZFwiPlxuICAgICAgICA8YWNhLXRvb2xiYXItYWN0aW9uIFthY3Rpb25SZWZdPVwiYWN0aW9uXCI+PC9hY2EtdG9vbGJhci1hY3Rpb24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2FkZi12aWV3ZXItdG9vbGJhci1hY3Rpb25zPlxuICA8L2FkZi1hbGZyZXNjby12aWV3ZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==