myrtex-mf-signer 1.1.0

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 (60) hide show
  1. package/README.md +35 -0
  2. package/esm2020/lib/components/certificate-select/certificate-select.component.mjs +22 -0
  3. package/esm2020/lib/components/sign-modal/sign-modal.component.mjs +148 -0
  4. package/esm2020/lib/models/certificate.model.mjs +2 -0
  5. package/esm2020/lib/models/index.mjs +5 -0
  6. package/esm2020/lib/models/internal/verify.cert.model.mjs +2 -0
  7. package/esm2020/lib/models/internal/verify.cert.response.model.mjs +2 -0
  8. package/esm2020/lib/models/sign-request.model.mjs +2 -0
  9. package/esm2020/lib/models/sign-validate-response.model.mjs +2 -0
  10. package/esm2020/lib/models/signed-result.model.mjs +2 -0
  11. package/esm2020/lib/myrtex-signer.module.mjs +75 -0
  12. package/esm2020/lib/providers/crypto.provider.mjs +99 -0
  13. package/esm2020/lib/providers/cryptojinn.provider.mjs +47 -0
  14. package/esm2020/lib/providers/cryptots.provider.mjs +56 -0
  15. package/esm2020/lib/providers/empty.provider.mjs +19 -0
  16. package/esm2020/lib/providers/interfaces/isign.provider.mjs +2 -0
  17. package/esm2020/lib/providers/signprovider.factory.mjs +35 -0
  18. package/esm2020/lib/services/certificate.adjuster.mjs +66 -0
  19. package/esm2020/lib/services/crypto.api.service.mjs +28 -0
  20. package/esm2020/lib/services/crypto.base.service.mjs +15 -0
  21. package/esm2020/lib/services/crypto.service.mjs +116 -0
  22. package/esm2020/lib/services/cryptopro/crypto.pro.async.service.mjs +30 -0
  23. package/esm2020/lib/services/cryptopro/crypto.pro.base.service.mjs +47 -0
  24. package/esm2020/lib/services/cryptopro/crypto.pro.ts.service.mjs +50 -0
  25. package/esm2020/lib/services/download.service.mjs +36 -0
  26. package/esm2020/lib/services/public.sign.service.mjs +44 -0
  27. package/esm2020/myrtex-mf-signer.mjs +5 -0
  28. package/esm2020/public-api.mjs +12 -0
  29. package/fesm2015/myrtex-mf-signer.mjs +895 -0
  30. package/fesm2015/myrtex-mf-signer.mjs.map +1 -0
  31. package/fesm2020/myrtex-mf-signer.mjs +871 -0
  32. package/fesm2020/myrtex-mf-signer.mjs.map +1 -0
  33. package/lib/components/certificate-select/certificate-select.component.d.ts +16 -0
  34. package/lib/components/sign-modal/sign-modal.component.d.ts +46 -0
  35. package/lib/models/certificate.model.d.ts +18 -0
  36. package/lib/models/index.d.ts +4 -0
  37. package/lib/models/internal/verify.cert.model.d.ts +5 -0
  38. package/lib/models/internal/verify.cert.response.model.d.ts +4 -0
  39. package/lib/models/sign-request.model.d.ts +17 -0
  40. package/lib/models/sign-validate-response.model.d.ts +4 -0
  41. package/lib/models/signed-result.model.d.ts +23 -0
  42. package/lib/myrtex-signer.module.d.ts +13 -0
  43. package/lib/providers/crypto.provider.d.ts +17 -0
  44. package/lib/providers/cryptojinn.provider.d.ts +15 -0
  45. package/lib/providers/cryptots.provider.d.ts +15 -0
  46. package/lib/providers/empty.provider.d.ts +8 -0
  47. package/lib/providers/interfaces/isign.provider.d.ts +4 -0
  48. package/lib/providers/signprovider.factory.d.ts +17 -0
  49. package/lib/services/certificate.adjuster.d.ts +15 -0
  50. package/lib/services/crypto.api.service.d.ts +19 -0
  51. package/lib/services/crypto.base.service.d.ts +6 -0
  52. package/lib/services/crypto.service.d.ts +27 -0
  53. package/lib/services/cryptopro/crypto.pro.async.service.d.ts +7 -0
  54. package/lib/services/cryptopro/crypto.pro.base.service.d.ts +13 -0
  55. package/lib/services/cryptopro/crypto.pro.ts.service.d.ts +8 -0
  56. package/lib/services/download.service.d.ts +15 -0
  57. package/lib/services/public.sign.service.d.ts +12 -0
  58. package/myrtex-mf-signer.d.ts +5 -0
  59. package/package.json +39 -0
  60. package/public-api.d.ts +4 -0
package/README.md ADDED
@@ -0,0 +1,35 @@
1
+ # MyrtexSigner
2
+
3
+ This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.1.0.
4
+
5
+ ## Code scaffolding
6
+
7
+ Run `ng generate component component-name --project myrtex-signer` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project myrtex-signer`.
8
+ > Note: Don't forget to add `--project myrtex-signer` or else it will be added to the default project in your `angular.json` file.
9
+
10
+ ## Build
11
+
12
+ Run `ng build myrtex-signer` to build the project. The build artifacts will be stored in the `dist/` directory.
13
+
14
+ ## Publishing
15
+
16
+ After building your library with `ng build myrtex-signer`, go to the dist folder `cd dist/myrtex-signer` and run `npm publish`.
17
+
18
+ ## Running unit tests
19
+
20
+ Run `ng test myrtex-signer` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
+
22
+ ## Further help
23
+
24
+ To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
25
+
26
+ ng g m button --project=myrtex-mf-signer
27
+
28
+ # Команда создания компонента
29
+ ng g c button --project=myrtex-mf-signer
30
+
31
+ # Команда сборки проекта
32
+ ng build myrtex-mf-signer
33
+
34
+ # Команда публикации проекта
35
+ npm publish
@@ -0,0 +1,22 @@
1
+ import { Component } from '@angular/core';
2
+ import { SimpleModalComponent } from 'ngx-simple-modal';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ export class CertificateSelectComponent extends SimpleModalComponent {
6
+ constructor() {
7
+ super();
8
+ this.certificates = [];
9
+ this.result = {};
10
+ }
11
+ ok(cert) {
12
+ this.result = { selected: cert };
13
+ this.close();
14
+ }
15
+ }
16
+ CertificateSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CertificateSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
17
+ CertificateSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: CertificateSelectComponent, selector: "lib-certificate-select", usesInheritance: true, ngImport: i0, template: "<div class=\"modal-content open accent-head certificate\">\r\n <div class=\"modal-header\">\r\n <div class=\"modal-title\" [innerHTML]=\"'\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442'\">\r\n </div>\r\n <span class='close close-click' (click)=\"close()\">\r\n <svg width='14' height='14' fill='none' xmlns='http://www.w3.org/2000/svg'>\r\n <path d='M13 1L1 13M1 1l12 12' stroke='#3A3A3A' stroke-width='1.5' stroke-linecap='round'\r\n stroke-linejoin='round' />\r\n </svg>\r\n </span>\r\n </div>\r\n <div class=\"modal-body text-center\">\r\n\r\n <div class=\"modal-body-other\">\r\n <div *ngFor=\"let cert of certificates\"> \r\n <div class=\"modal-body-info\" *ngIf=\"!cert.isExpired\">\r\n <div class=\"modal-body-info__item\">\r\n <span class=\"text\">\r\n \u0412\u043B\u0430\u0434\u0435\u043B\u0435\u0446:\r\n </span>\r\n <span class=\"text\">\r\n {{cert.cn}}<br/>\r\n {{cert.fio}}<span *ngIf=\"cert.post\">, {{cert.post}}</span>\r\n </span>\r\n </div>\r\n <div class=\"modal-body-info__item\">\r\n <span class=\"text\">\r\n \u0421\u0440\u043E\u043A \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F:\r\n </span>\r\n <span class=\"text\">\r\n {{cert.validFromDate}} - {{cert.validToDate}}\r\n </span>\r\n </div>\r\n <div class=\"modal-body-info__item\">\r\n <span class=\"text hash\">\r\n {{cert.thumbprint}} {{cert.isExpired ? \"(\u0438\u0441\u0442\u0435\u043A)\" : \"\"}}\r\n </span>\r\n </div>\r\n <button\r\n (click)=\"ok(cert)\"\r\n [disabled]=\"cert.isExpired\"\r\n class=\"btn btn-md\">\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043F\u043E\u0434\u043F\u0438\u0441\u044C</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n </div>\r\n</div>", styles: [":host{display:contents}:host textarea{width:100%;height:600px;border:0}\n"], directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CertificateSelectComponent, decorators: [{
19
+ type: Component,
20
+ args: [{ selector: 'lib-certificate-select', template: "<div class=\"modal-content open accent-head certificate\">\r\n <div class=\"modal-header\">\r\n <div class=\"modal-title\" [innerHTML]=\"'\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442'\">\r\n </div>\r\n <span class='close close-click' (click)=\"close()\">\r\n <svg width='14' height='14' fill='none' xmlns='http://www.w3.org/2000/svg'>\r\n <path d='M13 1L1 13M1 1l12 12' stroke='#3A3A3A' stroke-width='1.5' stroke-linecap='round'\r\n stroke-linejoin='round' />\r\n </svg>\r\n </span>\r\n </div>\r\n <div class=\"modal-body text-center\">\r\n\r\n <div class=\"modal-body-other\">\r\n <div *ngFor=\"let cert of certificates\"> \r\n <div class=\"modal-body-info\" *ngIf=\"!cert.isExpired\">\r\n <div class=\"modal-body-info__item\">\r\n <span class=\"text\">\r\n \u0412\u043B\u0430\u0434\u0435\u043B\u0435\u0446:\r\n </span>\r\n <span class=\"text\">\r\n {{cert.cn}}<br/>\r\n {{cert.fio}}<span *ngIf=\"cert.post\">, {{cert.post}}</span>\r\n </span>\r\n </div>\r\n <div class=\"modal-body-info__item\">\r\n <span class=\"text\">\r\n \u0421\u0440\u043E\u043A \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F:\r\n </span>\r\n <span class=\"text\">\r\n {{cert.validFromDate}} - {{cert.validToDate}}\r\n </span>\r\n </div>\r\n <div class=\"modal-body-info__item\">\r\n <span class=\"text hash\">\r\n {{cert.thumbprint}} {{cert.isExpired ? \"(\u0438\u0441\u0442\u0435\u043A)\" : \"\"}}\r\n </span>\r\n </div>\r\n <button\r\n (click)=\"ok(cert)\"\r\n [disabled]=\"cert.isExpired\"\r\n class=\"btn btn-md\">\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043F\u043E\u0434\u043F\u0438\u0441\u044C</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n </div>\r\n</div>", styles: [":host{display:contents}:host textarea{width:100%;height:600px;border:0}\n"] }]
21
+ }], ctorParameters: function () { return []; } });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydGlmaWNhdGUtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRleC1tZi1zaWduZXIvc3JjL2xpYi9jb21wb25lbnRzL2NlcnRpZmljYXRlLXNlbGVjdC9jZXJ0aWZpY2F0ZS1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LW1mLXNpZ25lci9zcmMvbGliL2NvbXBvbmVudHMvY2VydGlmaWNhdGUtc2VsZWN0L2NlcnRpZmljYXRlLXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7QUFnQnhELE1BQU0sT0FBTywwQkFBMkIsU0FBUSxvQkFBMEU7SUFLeEg7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUhWLGlCQUFZLEdBQXVCLEVBQUUsQ0FBQztRQUlwQyxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsRUFBRSxDQUFDLElBQXNCO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQzs7d0hBYlUsMEJBQTBCOzRHQUExQiwwQkFBMEIscUZDakJ2Qyxna0VBZ0RNOzRGRC9CTywwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0Usd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNpbXBsZU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnbmd4LXNpbXBsZS1tb2RhbCc7XHJcbmltcG9ydCB7IENlcnRpZmljYXRlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDZXJ0aWZpY2F0ZVNlbGVjdE1vZGVsIHtcclxuICBjZXJ0aWZpY2F0ZXM6IENlcnRpZmljYXRlTW9kZWxbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDZXJ0aWZpY2F0ZVNlbGVjdFJlc3VsdE1vZGVsIHtcclxuICBzZWxlY3RlZD86IENlcnRpZmljYXRlTW9kZWw7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWNlcnRpZmljYXRlLXNlbGVjdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NlcnRpZmljYXRlLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2VydGlmaWNhdGUtc2VsZWN0LmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2VydGlmaWNhdGVTZWxlY3RDb21wb25lbnQgZXh0ZW5kcyBTaW1wbGVNb2RhbENvbXBvbmVudDxDZXJ0aWZpY2F0ZVNlbGVjdE1vZGVsLCBDZXJ0aWZpY2F0ZVNlbGVjdFJlc3VsdE1vZGVsPlxyXG4gIGltcGxlbWVudHMgQ2VydGlmaWNhdGVTZWxlY3RNb2RlbCB7XHJcblxyXG4gIGNlcnRpZmljYXRlczogQ2VydGlmaWNhdGVNb2RlbFtdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMucmVzdWx0ID0ge307XHJcbiAgfVxyXG5cclxuICBvayhjZXJ0OiBDZXJ0aWZpY2F0ZU1vZGVsKSB7XHJcbiAgICB0aGlzLnJlc3VsdCA9IHtzZWxlY3RlZDogY2VydH07XHJcbiAgICB0aGlzLmNsb3NlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50IG9wZW4gYWNjZW50LWhlYWQgY2VydGlmaWNhdGVcIj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBbaW5uZXJIVE1MXT1cIifQktGL0LHQtdGA0LjRgtC1INGB0LXRgNGC0LjRhNC40LrQsNGCJ1wiPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz0nY2xvc2UgY2xvc2UtY2xpY2snIChjbGljayk9XCJjbG9zZSgpXCI+XHJcbiAgICAgIDxzdmcgd2lkdGg9JzE0JyBoZWlnaHQ9JzE0JyBmaWxsPSdub25lJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPlxyXG4gICAgICAgIDxwYXRoIGQ9J00xMyAxTDEgMTNNMSAxbDEyIDEyJyBzdHJva2U9JyMzQTNBM0EnIHN0cm9rZS13aWR0aD0nMS41JyBzdHJva2UtbGluZWNhcD0ncm91bmQnXHJcbiAgICAgICAgICBzdHJva2UtbGluZWpvaW49J3JvdW5kJyAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSB0ZXh0LWNlbnRlclwiPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5LW90aGVyXCI+XHJcbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNlcnQgb2YgY2VydGlmaWNhdGVzXCI+IFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5LWluZm9cIiAqbmdJZj1cIiFjZXJ0LmlzRXhwaXJlZFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHktaW5mb19faXRlbVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHRcIj5cclxuICAgICAgICAgICAgICDQktC70LDQtNC10LvQtdGGOlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dFwiPlxyXG4gICAgICAgICAgICAgIHt7Y2VydC5jbn19PGJyLz5cclxuICAgICAgICAgICAgICB7e2NlcnQuZmlvfX08c3BhbiAqbmdJZj1cImNlcnQucG9zdFwiPiwge3tjZXJ0LnBvc3R9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keS1pbmZvX19pdGVtXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dFwiPlxyXG4gICAgICAgICAgICAgINCh0YDQvtC6INC00LXQudGB0YLQstC40Y86XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0XCI+XHJcbiAgICAgICAgICAgICAge3tjZXJ0LnZhbGlkRnJvbURhdGV9fSAtIHt7Y2VydC52YWxpZFRvRGF0ZX19XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHktaW5mb19faXRlbVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQgaGFzaFwiPlxyXG4gICAgICAgICAgICAgIHt7Y2VydC50aHVtYnByaW50fX0ge3tjZXJ0LmlzRXhwaXJlZCA/IFwiKNC40YHRgtC10LopXCIgOiBcIlwifX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvayhjZXJ0KVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjZXJ0LmlzRXhwaXJlZFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1tZFwiPtCh0L7Qt9C00LDRgtGMINC/0L7QtNC/0LjRgdGMPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=
@@ -0,0 +1,148 @@
1
+ import { Component } from '@angular/core';
2
+ import { DialogColor, DialogType } from 'myrtex-ui-composite';
3
+ import { SimpleModalComponent } from 'ngx-simple-modal';
4
+ import { Base64 } from 'js-base64';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../../providers/signprovider.factory";
7
+ import * as i2 from "../../services/download.service";
8
+ import * as i3 from "myrtex-ui-composite";
9
+ import * as i4 from "@angular/common";
10
+ export class SignModalComponent extends SimpleModalComponent {
11
+ constructor(signProviderFactory, downloadService, alertService) {
12
+ super();
13
+ this.signProviderFactory = signProviderFactory;
14
+ this.downloadService = downloadService;
15
+ this.alertService = alertService;
16
+ this.title = '';
17
+ this.okLabel = '';
18
+ this.cancelLabel = '';
19
+ this.provider = 'empty';
20
+ this.signType = 'xml';
21
+ this.xmlToSign = '';
22
+ this.pdfToSign = '';
23
+ this.downloadingPdf = false;
24
+ this.result = { result: false };
25
+ }
26
+ get disabled() {
27
+ // todo как можно дизеблить кнопу
28
+ return false;
29
+ }
30
+ get pdfViewUrl() {
31
+ return this.pdfUrl ?
32
+ `/signer/pdfjs/web/viewer.html?file=${encodeURIComponent(this.pdfUrl)}` : '';
33
+ }
34
+ ngOnInit() {
35
+ this.downloadXml();
36
+ this.downloadPdf();
37
+ }
38
+ ok() {
39
+ if (!this.signType) {
40
+ this.signType = 'xml';
41
+ }
42
+ let signData = this.xmlToSign;
43
+ switch (this.signType) {
44
+ case 'xml':
45
+ signData = Base64.encode(this.xmlToSign);
46
+ break;
47
+ case 'pdf':
48
+ signData = this.pdfToSign;
49
+ break;
50
+ case 'xmlts':
51
+ signData = this.xmlToSign;
52
+ break;
53
+ }
54
+ this.signProviderFactory.create(this.provider)
55
+ .sign(signData, this.withLog, {
56
+ skipServerCheck: this.skipServerCheck,
57
+ checkFio: this.checkFio,
58
+ checkOgrn: this.checkOgrn,
59
+ checkOrganization: this.checkOrganization,
60
+ checkInn: this.checkInn
61
+ })
62
+ .then((ok) => {
63
+ this.processResult(ok);
64
+ }).catch((error) => {
65
+ this.processError(error);
66
+ });
67
+ }
68
+ cancel() {
69
+ this.close();
70
+ }
71
+ processResult(signResult) {
72
+ if (signResult.success) {
73
+ this.result = { model: signResult, result: true };
74
+ this.close();
75
+ }
76
+ else {
77
+ this.alertService.showDialog({
78
+ title: 'Ошибка проверки подписи',
79
+ message: 'Подпись не валидна',
80
+ color: DialogColor.red,
81
+ type: DialogType.alert,
82
+ okCallback: (ok) => {
83
+ }
84
+ });
85
+ }
86
+ }
87
+ processError(error) {
88
+ if (this.withLog) {
89
+ console.error(error);
90
+ }
91
+ this.alertService.showDialog({
92
+ title: 'Ошибка проверки подписи',
93
+ message: JSON.stringify(error),
94
+ color: DialogColor.red,
95
+ type: DialogType.alert,
96
+ okCallback: (ok) => {
97
+ }
98
+ });
99
+ }
100
+ downloadXml() {
101
+ if (!this.xmlUrl) {
102
+ return;
103
+ }
104
+ if (this.withLog) {
105
+ console.log('Downloading xml');
106
+ }
107
+ this.downloadService.xml(this.xmlUrl).subscribe(result => {
108
+ if (this.withLog) {
109
+ console.log('xmlToSign = ', result);
110
+ }
111
+ this.xmlToSign = result;
112
+ });
113
+ }
114
+ downloadPdf() {
115
+ if (!this.pdfUrl) {
116
+ return;
117
+ }
118
+ if (this.withLog) {
119
+ console.log('Downloading pdf');
120
+ }
121
+ this.downloadingPdf = true;
122
+ this.downloadService.pdf(this.pdfUrl)
123
+ .subscribe(result => {
124
+ this.downloadingPdf = false;
125
+ // todo подумать, как правильно читать файл
126
+ // const blob = new Blob([result], {type: 'application/pdf'});
127
+ const reader = new FileReader();
128
+ reader.readAsDataURL(result);
129
+ reader.onloadend = () => {
130
+ let base64data = reader.result;
131
+ base64data = base64data.replace('data:application/pdf;base64,', '');
132
+ if (this.withLog) {
133
+ console.log('pdfToSign = ', base64data);
134
+ }
135
+ this.pdfToSign = base64data;
136
+ };
137
+ }, () => {
138
+ this.downloadingPdf = false;
139
+ });
140
+ }
141
+ }
142
+ SignModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SignModalComponent, deps: [{ token: i1.SignProviderFactory }, { token: i2.DownloadService }, { token: i3.AlertService }], target: i0.ɵɵFactoryTarget.Component });
143
+ SignModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: SignModalComponent, selector: "lib-sign-modal", usesInheritance: true, ngImport: i0, template: "<div class=\"modal-content accent-head\">\r\n <div class=\"modal-header\">\r\n <div class=\"modal-title uppercase\">\r\n <h4 class=\"ng-binding\">{{title || '\u041F\u043E\u0434\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430'}}</h4>\r\n </div>\r\n <span class=\"close close-click\" (click)=\"close()\">\r\n <svg width=\"14\" height=\"14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M13 1L1 13M1 1l12 12\" stroke=\"#3A3A3A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"modal-body text-center\">\r\n <div class=\"widget\">\r\n <my-tabs>\r\n <app-tab tabTitle=\"\u0412\u0438\u0437\u0443\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\" *ngIf=\"pdfUrl\">\r\n <pre *ngIf=\"downloadingPdf\">\r\n \u041F\u043E\u0434\u043E\u0436\u0434\u0438\u0442\u0435, \u0438\u0434\u0435\u0442 \u0444\u043E\u0440\u043C\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\r\n </pre>\r\n <iframe *ngIf=\"!downloadingPdf\" [src]=\"pdfViewUrl | safeurl\"\r\n title=\"webviewer\" frameborder=\"0\" width=\"100%\" height=\"800\"></iframe>\r\n </app-tab>\r\n <app-tab tabTitle=\"\u041F\u043E\u0434\u043F\u0438\u0441\u044B\u0432\u0430\u0435\u043C\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435\" *ngIf=\"xmlUrl\">\r\n <pre [innerText]=\"xmlToSign\"></pre>\r\n </app-tab>\r\n </my-tabs>\r\n </div>\r\n </div>\r\n\r\n <div class=\"modal-footer\">\r\n <div *ngIf=\"pdfUrl || xmlUrl\"\r\n class=\"modal-footer-item\">\r\n <a *ngIf=\"pdfUrl\"\r\n class=\"modal-footer-item__link\"\r\n target=\"_blank\"\r\n [href]=\"pdfUrl\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M18 21.25H6C5.30964 21.25 4.75 20.6904 4.75 20V4C4.75 3.30964 5.30964 2.75 6 2.75H13.1893L19.25 8.81066V20C19.25 20.6904 18.6904 21.25 18 21.25Z\"\r\n stroke=\"#282828\" stroke-width=\"1.5\"/>\r\n </svg>\r\n <span>\u0421\u043A\u0430\u0447\u0430\u0442\u044C \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442</span>\r\n </a>\r\n <a *ngIf=\"xmlUrl\"\r\n class=\"modal-footer-item__link\"\r\n target=\"_blank\"\r\n [href]=\"xmlUrl\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6 16L2 12L6 8\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M18 16L22 12L18 8\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"/>\r\n <path d=\"M7.56689 19.1782L15.5669 5.32182\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span>\u0421\u043A\u0430\u0447\u0430\u0442\u044C XML-\u0434\u0430\u043D\u043D\u044B\u0435</span>\r\n </a>\r\n </div>\r\n <div class=\"modal-footer-item\">\r\n <button\r\n class=\"mrx-btn mrx-btn-secondary mrx-btn-md wpx-120 mr-3\"\r\n (click)=\"cancel()\"\r\n >\r\n <div class=\"mrx-btn-label\">{{cancelLabel || '\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C'}}</div>\r\n </button>\r\n <button\r\n class=\"mrx-btn mrx-btn-primary mrx-btn-md wpx-120\"\r\n [disabled]=\"disabled\"\r\n (click)=\"ok()\"\r\n >\r\n <div class=\"mrx-btn-label\">{{okLabel || '\u041F\u043E\u0434\u043F\u0438\u0441\u0430\u0442\u044C'}}</div>\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host{display:contents}:host pre{width:100%;height:600px;border:0;text-align:left;overflow-y:scroll}.modal-footer{justify-content:space-between;align-items:center}.modal-footer-item__link{display:inline-flex;align-items:center;font-family:PT Sans,sans-serif;font-weight:700;font-size:14px;line-height:160%;color:var(--Main1);margin-right:16px}.modal-footer-item__link svg{margin-right:4px}.modal-body iframe{height:600px}pre{height:600px;overflow:scroll}\n"], components: [{ type: i3.TabsComponent, selector: "my-tabs" }, { type: i3.TabComponent, selector: "app-tab", inputs: ["tabTitle", "active"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "safeurl": i3.SafeUrlPipe } });
144
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SignModalComponent, decorators: [{
145
+ type: Component,
146
+ args: [{ selector: 'lib-sign-modal', template: "<div class=\"modal-content accent-head\">\r\n <div class=\"modal-header\">\r\n <div class=\"modal-title uppercase\">\r\n <h4 class=\"ng-binding\">{{title || '\u041F\u043E\u0434\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430'}}</h4>\r\n </div>\r\n <span class=\"close close-click\" (click)=\"close()\">\r\n <svg width=\"14\" height=\"14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M13 1L1 13M1 1l12 12\" stroke=\"#3A3A3A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"modal-body text-center\">\r\n <div class=\"widget\">\r\n <my-tabs>\r\n <app-tab tabTitle=\"\u0412\u0438\u0437\u0443\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\" *ngIf=\"pdfUrl\">\r\n <pre *ngIf=\"downloadingPdf\">\r\n \u041F\u043E\u0434\u043E\u0436\u0434\u0438\u0442\u0435, \u0438\u0434\u0435\u0442 \u0444\u043E\u0440\u043C\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\r\n </pre>\r\n <iframe *ngIf=\"!downloadingPdf\" [src]=\"pdfViewUrl | safeurl\"\r\n title=\"webviewer\" frameborder=\"0\" width=\"100%\" height=\"800\"></iframe>\r\n </app-tab>\r\n <app-tab tabTitle=\"\u041F\u043E\u0434\u043F\u0438\u0441\u044B\u0432\u0430\u0435\u043C\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435\" *ngIf=\"xmlUrl\">\r\n <pre [innerText]=\"xmlToSign\"></pre>\r\n </app-tab>\r\n </my-tabs>\r\n </div>\r\n </div>\r\n\r\n <div class=\"modal-footer\">\r\n <div *ngIf=\"pdfUrl || xmlUrl\"\r\n class=\"modal-footer-item\">\r\n <a *ngIf=\"pdfUrl\"\r\n class=\"modal-footer-item__link\"\r\n target=\"_blank\"\r\n [href]=\"pdfUrl\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M18 21.25H6C5.30964 21.25 4.75 20.6904 4.75 20V4C4.75 3.30964 5.30964 2.75 6 2.75H13.1893L19.25 8.81066V20C19.25 20.6904 18.6904 21.25 18 21.25Z\"\r\n stroke=\"#282828\" stroke-width=\"1.5\"/>\r\n </svg>\r\n <span>\u0421\u043A\u0430\u0447\u0430\u0442\u044C \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442</span>\r\n </a>\r\n <a *ngIf=\"xmlUrl\"\r\n class=\"modal-footer-item__link\"\r\n target=\"_blank\"\r\n [href]=\"xmlUrl\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6 16L2 12L6 8\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M18 16L22 12L18 8\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"/>\r\n <path d=\"M7.56689 19.1782L15.5669 5.32182\" stroke=\"#282828\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span>\u0421\u043A\u0430\u0447\u0430\u0442\u044C XML-\u0434\u0430\u043D\u043D\u044B\u0435</span>\r\n </a>\r\n </div>\r\n <div class=\"modal-footer-item\">\r\n <button\r\n class=\"mrx-btn mrx-btn-secondary mrx-btn-md wpx-120 mr-3\"\r\n (click)=\"cancel()\"\r\n >\r\n <div class=\"mrx-btn-label\">{{cancelLabel || '\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C'}}</div>\r\n </button>\r\n <button\r\n class=\"mrx-btn mrx-btn-primary mrx-btn-md wpx-120\"\r\n [disabled]=\"disabled\"\r\n (click)=\"ok()\"\r\n >\r\n <div class=\"mrx-btn-label\">{{okLabel || '\u041F\u043E\u0434\u043F\u0438\u0441\u0430\u0442\u044C'}}</div>\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host{display:contents}:host pre{width:100%;height:600px;border:0;text-align:left;overflow-y:scroll}.modal-footer{justify-content:space-between;align-items:center}.modal-footer-item__link{display:inline-flex;align-items:center;font-family:PT Sans,sans-serif;font-weight:700;font-size:14px;line-height:160%;color:var(--Main1);margin-right:16px}.modal-footer-item__link svg{margin-right:4px}.modal-body iframe{height:600px}pre{height:600px;overflow:scroll}\n"] }]
147
+ }], ctorParameters: function () { return [{ type: i1.SignProviderFactory }, { type: i2.DownloadService }, { type: i3.AlertService }]; } });
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0ZXgtbWYtc2lnbmVyL3NyYy9saWIvY29tcG9uZW50cy9zaWduLW1vZGFsL3NpZ24tbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LW1mLXNpZ25lci9zcmMvbGliL2NvbXBvbmVudHMvc2lnbi1tb2RhbC9zaWduLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFnQixXQUFXLEVBQUUsVUFBVSxFQUFhLE1BQU0scUJBQXFCLENBQUM7QUFDdkYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7O0FBa0JuQyxNQUFNLE9BQU8sa0JBQ1gsU0FBUSxvQkFBMkQ7SUF1Qm5FLFlBQW9CLG1CQUF3QyxFQUNsRCxlQUFnQyxFQUNoQyxZQUEwQjtRQUNsQyxLQUFLLEVBQUUsQ0FBQztRQUhVLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDbEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBdkI3QixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBS2pCLGFBQVEsR0FBcUIsT0FBTyxDQUFDO1FBQ3JDLGFBQVEsR0FBYSxLQUFLLENBQUM7UUFFM0IsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNmLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFRdEIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFNckIsSUFBSSxDQUFDLE1BQU0s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O1lBQ2hDLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDN0IsTUFBTSxDQUFDLFNBQVMsR0FBRyxHQUFHLEVBQUU7Z0JBQ3RCLElBQUksVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFnQixDQUFDO2dCQUN6QyxVQUFVLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyw4QkFBOEIsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFFcEUsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO29CQUNoQixPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxVQUFVLENBQUMsQ0FBQztpQkFDekM7Z0JBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUM7WUFDOUIsQ0FBQyxDQUFBO1FBQ0gsQ0FBQyxFQUFFLEdBQUcsRUFBRTtZQUNOLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7Z0hBbEtVLGtCQUFrQjtvR0FBbEIsa0JBQWtCLDZFQ3JCL0IsbzdIQTJFQTs0RkR0RGEsa0JBQWtCO2tCQUw5QixTQUFTOytCQUNFLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UsIERpYWxvZ0NvbG9yLCBEaWFsb2dUeXBlLCBVdGlsaXRpZXMgfSBmcm9tICdteXJ0ZXgtdWktY29tcG9zaXRlJztcclxuaW1wb3J0IHsgU2ltcGxlTW9kYWxDb21wb25lbnQgfSBmcm9tICduZ3gtc2ltcGxlLW1vZGFsJztcclxuaW1wb3J0IHsgQmFzZTY0IH0gZnJvbSAnanMtYmFzZTY0JztcclxuaW1wb3J0IHsgU2lnblByb3ZpZGVyVHlwZSwgU2lnblR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBTaWduZWRSZXN1bHRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zaWduZWQtcmVzdWx0Lm1vZGVsJztcclxuaW1wb3J0IHsgU2lnblJlcXVlc3RNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zaWduLXJlcXVlc3QubW9kZWwnO1xyXG5pbXBvcnQgeyBEb3dubG9hZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kb3dubG9hZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2lnblByb3ZpZGVyRmFjdG9yeSB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9zaWducHJvdmlkZXIuZmFjdG9yeSc7XHJcbmltcG9ydCB7IE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvY29yZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25lZFJlc3BvbnNlTW9kZWwge1xyXG4gIHJlc3VsdDogYm9vbGVhbjtcclxuICBtb2RlbD86IFNpZ25lZFJlc3VsdE1vZGVsO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1zaWduLW1vZGFsJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2lnbi1tb2RhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2lnbi1tb2RhbC5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNpZ25Nb2RhbENvbXBvbmVudFxyXG4gIGV4dGVuZHMgU2ltcGxlTW9kYWxDb21wb25lbnQ8U2lnblJlcXVlc3RNb2RlbCwgU2lnbmVkUmVzcG9uc2VNb2RlbD4gaW1wbGVtZW50cyBPbkluaXQsIFNpZ25SZXF1ZXN0TW9kZWwge1xyXG5cclxuICBwdWJsaWMgdGl0bGUgPSAnJztcclxuICBwdWJsaWMgb2tMYWJlbCA9ICcnO1xyXG4gIHB1YmxpYyBjYW5jZWxMYWJlbCA9ICcnO1xyXG5cclxuICBwdWJsaWMgeG1sVXJsPzogc3RyaW5nO1xyXG4gIHB1YmxpYyBwZGZVcmw/OiBzdHJpbmc7XHJcblxyXG4gIHB1YmxpYyBwcm92aWRlcjogU2lnblByb3ZpZGVyVHlwZSA9ICdlbXB0eSc7XHJcbiAgcHVibGljIHNpZ25UeXBlOiBTaWduVHlwZSA9ICd4bWwnO1xyXG5cclxuICBwdWJsaWMgeG1sVG9TaWduID0gJyc7XHJcbiAgcHVibGljIHBkZlRvU2lnbiA9ICcnO1xyXG4gIHB1YmxpYyB3aXRoTG9nPzogYm9vbGVhbjtcclxuICBwdWJsaWMgc2tpcFNlcnZlckNoZWNrPzogYm9vbGVhbjtcclxuICBwdWJsaWMgY2hlY2tGaW8/OiBzdHJpbmc7XHJcbiAgcHVibGljIGNoZWNrT2dybj86IHN0cmluZztcclxuICBwdWJsaWMgY2hlY2tPcmdhbml6YXRpb24/OiBzdHJpbmc7XHJcbiAgcHVibGljIGNoZWNrSW5uPzogc3RyaW5nO1xyXG5cclxuICBkb3dubG9hZGluZ1BkZiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNpZ25Qcm92aWRlckZhY3Rvcnk6IFNpZ25Qcm92aWRlckZhY3RvcnksXHJcbiAgICBwcml2YXRlIGRvd25sb2FkU2VydmljZTogRG93bmxvYWRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMucmVzdWx0ID0geyByZXN1bHQ6IGZhbHNlIH07XHJcbiAgfVxyXG5cclxuICBnZXQgZGlzYWJsZWQoKSB7XHJcbiAgICAvLyB0b2RvINC60LDQuiDQvNC+0LbQvdC+INC00LjQt9C10LHQu9C40YLRjCDQutC90L7Qv9GDXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXQgcGRmVmlld1VybCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMucGRmVXJsID9cclxuICAgICAgYC9zaWduZXIvcGRmanMvd2ViL3ZpZXdlci5odG1sP2ZpbGU9JHtlbmNvZGVVUklDb21wb25lbnQodGhpcy5wZGZVcmwpfWAgOiAnJztcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kb3dubG9hZFhtbCgpO1xyXG4gICAgdGhpcy5kb3dubG9hZFBkZigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9rKCkge1xyXG5cclxuICAgIGlmICghdGhpcy5zaWduVHlwZSkge1xyXG4gICAgICB0aGlzLnNpZ25UeXBlID0gJ3htbCc7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHNpZ25EYXRhID0gdGhpcy54bWxUb1NpZ247XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLnNpZ25UeXBlKSB7XHJcbiAgICBjYXNlICd4bWwnOlxyXG4gICAgICBzaWduRGF0YSA9IEJhc2U2NC5lbmNvZGUodGhpcy54bWxUb1NpZ24pO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ3BkZic6XHJcbiAgICAgIHNpZ25EYXRhID0gdGhpcy5wZGZUb1NpZ247XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAneG1sdHMnOlxyXG4gICAgICBzaWduRGF0YSA9IHRoaXMueG1sVG9TaWduO1xyXG4gICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNpZ25Qcm92aWRlckZhY3RvcnkuY3JlYXRlKHRoaXMucHJvdmlkZXIpXHJcbiAgICAgIC5zaWduKHNpZ25EYXRhLCB0aGlzLndpdGhMb2csIHtcclxuICAgICAgICBza2lwU2VydmVyQ2hlY2s6IHRoaXMuc2tpcFNlcnZlckNoZWNrLFxyXG4gICAgICAgIGNoZWNrRmlvOiB0aGlzLmNoZWNrRmlvLFxyXG4gICAgICAgIGNoZWNrT2dybjogdGhpcy5jaGVja09ncm4sXHJcbiAgICAgICAgY2hlY2tPcmdhbml6YXRpb246IHRoaXMuY2hlY2tPcmdhbml6YXRpb24sXHJcbiAgICAgICAgY2hlY2tJbm46IHRoaXMuY2hlY2tJbm5cclxuICAgICAgfSlcclxuICAgICAgLnRoZW4oKG9rOiBTaWduZWRSZXN1bHRNb2RlbCkgPT4ge1xyXG4gICAgICAgIHRoaXMucHJvY2Vzc1Jlc3VsdChvayk7XHJcbiAgICAgIH0pLmNhdGNoKChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5wcm9jZXNzRXJyb3IoZXJyb3IpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjYW5jZWwoKSB7XHJcbiAgICB0aGlzLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByb2Nlc3NSZXN1bHQoc2lnblJlc3VsdDogU2lnbmVkUmVzdWx0TW9kZWwpOiB2b2lkIHtcclxuICAgIGlmIChzaWduUmVzdWx0LnN1Y2Nlc3MpIHtcclxuICAgICAgdGhpcy5yZXN1bHQgPSB7IG1vZGVsOiBzaWduUmVzdWx0LCByZXN1bHQ6IHRydWUgfTtcclxuICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd0RpYWxvZyh7XHJcbiAgICAgICAgdGl0bGU6ICfQntGI0LjQsdC60LAg0L/RgNC+0LLQtdGA0LrQuCDQv9C+0LTQv9C40YHQuCcsXHJcbiAgICAgICAgbWVzc2FnZTogJ9Cf0L7QtNC/0LjRgdGMINC90LUg0LLQsNC70LjQtNC90LAnLFxyXG4gICAgICAgIGNvbG9yOiBEaWFsb2dDb2xvci5yZWQsXHJcbiAgICAgICAgdHlwZTogRGlhbG9nVHlwZS5hbGVydCxcclxuICAgICAgICBva0NhbGxiYWNrOiAob2spID0+IHtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcm9jZXNzRXJyb3IoZXJyb3I6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMud2l0aExvZykge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93RGlhbG9nKHtcclxuICAgICAgdGl0bGU6ICfQntGI0LjQsdC60LAg0L/RgNC+0LLQtdGA0LrQuCDQv9C+0LTQv9C40YHQuCcsXHJcbiAgICAgIG1lc3NhZ2U6IEpTT04uc3RyaW5naWZ5KGVycm9yKSxcclxuICAgICAgY29sb3I6IERpYWxvZ0NvbG9yLnJlZCxcclxuICAgICAgdHlwZTogRGlhbG9nVHlwZS5hbGVydCxcclxuICAgICAgb2tDYWxsYmFjazogKG9rKSA9PiB7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkb3dubG9hZFhtbCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy54bWxVcmwpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLndpdGhMb2cpIHtcclxuICAgICAgY29uc29sZS5sb2coJ0Rvd25sb2FkaW5nIHhtbCcpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZG93bmxvYWRTZXJ2aWNlLnhtbCh0aGlzLnhtbFVybCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgIGlmICh0aGlzLndpdGhMb2cpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygneG1sVG9TaWduID0gJywgcmVzdWx0KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnhtbFRvU2lnbiA9IHJlc3VsdDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkb3dubG9hZFBkZigpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5wZGZVcmwpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLndpdGhMb2cpIHtcclxuICAgICAgY29uc29sZS5sb2coJ0Rvd25sb2FkaW5nIHBkZicpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZG93bmxvYWRpbmdQZGYgPSB0cnVlO1xyXG4gICAgdGhpcy5kb3dubG9hZFNlcnZpY2UucGRmKHRoaXMucGRmVXJsKVxyXG4gICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgdGhpcy5kb3dubG9hZGluZ1BkZiA9IGZhbHNlO1xyXG4gICAgICAgIC8vIHRvZG8g0L/QvtC00YPQvNCw0YLRjCwg0LrQsNC6INC/0YDQsNCy0LjQu9GM0L3QviDRh9C40YLQsNGC0Ywg0YTQsNC50LtcclxuICAgICAgICAvLyBjb25zdCBibG9iID0gbmV3IEJsb2IoW3Jlc3VsdF0sIHt0eXBlOiAnYXBwbGljYXRpb24vcGRmJ30pO1xyXG4gICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwocmVzdWx0KTtcclxuICAgICAgICByZWFkZXIub25sb2FkZW5kID0gKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGJhc2U2NGRhdGEgPSByZWFkZXIucmVzdWx0IGFzIHN0cmluZztcclxuICAgICAgICAgIGJhc2U2NGRhdGEgPSBiYXNlNjRkYXRhLnJlcGxhY2UoJ2RhdGE6YXBwbGljYXRpb24vcGRmO2Jhc2U2NCwnLCAnJyk7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMud2l0aExvZykge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygncGRmVG9TaWduID0gJywgYmFzZTY0ZGF0YSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnBkZlRvU2lnbiA9IGJhc2U2NGRhdGE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kb3dubG9hZGluZ1BkZiA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnQgYWNjZW50LWhlYWRcIj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtdGl0bGUgdXBwZXJjYXNlXCI+XHJcbiAgICAgIDxoNCBjbGFzcz1cIm5nLWJpbmRpbmdcIj57e3RpdGxlIHx8ICfQn9C+0LTQv9C40YHQsNC90LjQtSDQtNC+0LrRg9C80LXQvdGC0LAnfX08L2g0PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c3BhbiBjbGFzcz1cImNsb3NlIGNsb3NlLWNsaWNrXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cclxuICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTMgMUwxIDEzTTEgMWwxMiAxMlwiIHN0cm9rZT1cIiMzQTNBM0FcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHRleHQtY2VudGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwid2lkZ2V0XCI+XHJcbiAgICAgIDxteS10YWJzPlxyXG4gICAgICAgIDxhcHAtdGFiIHRhYlRpdGxlPVwi0JLQuNC30YPQsNC70LjQt9Cw0YbQuNGPINC00L7QutGD0LzQtdC90YLQsFwiICpuZ0lmPVwicGRmVXJsXCI+XHJcbiAgICAgICAgICA8cHJlICpuZ0lmPVwiZG93bmxvYWRpbmdQZGZcIj5cclxuICAgICAgICAgICAg0J/QvtC00L7QttC00LjRgtC1LCDQuNC00LXRgiDRhNC+0YDQvNC40YDQvtCy0LDQvdC40LUg0LTQvtC60YPQvNC10L3RgtCwXHJcbiAgICAgICAgICA8L3ByZT5cclxuICAgICAgICAgIDxpZnJhbWUgKm5nSWY9XCIhZG93bmxvYWRpbmdQZGZcIiBbc3JjXT1cInBkZlZpZXdVcmwgfCBzYWZldXJsXCJcclxuICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ3ZWJ2aWV3ZXJcIiBmcmFtZWJvcmRlcj1cIjBcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCI4MDBcIj48L2lmcmFtZT5cclxuICAgICAgICA8L2FwcC10YWI+XHJcbiAgICAgICAgPGFwcC10YWIgdGFiVGl0bGU9XCLQn9C+0LTQv9C40YHRi9Cy0LDQtdC80YvQtSDQtNCw0L3QvdGL0LVcIiAqbmdJZj1cInhtbFVybFwiPlxyXG4gICAgICAgICAgPHByZSBbaW5uZXJUZXh0XT1cInhtbFRvU2lnblwiPjwvcHJlPlxyXG4gICAgICAgIDwvYXBwLXRhYj5cclxuICAgICAgPC9teS10YWJzPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgIDxkaXYgKm5nSWY9XCJwZGZVcmwgfHwgeG1sVXJsXCJcclxuICAgICAgICAgY2xhc3M9XCJtb2RhbC1mb290ZXItaXRlbVwiPlxyXG4gICAgICA8YSAqbmdJZj1cInBkZlVybFwiXHJcbiAgICAgICAgIGNsYXNzPVwibW9kYWwtZm9vdGVyLWl0ZW1fX2xpbmtcIlxyXG4gICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxyXG4gICAgICAgICBbaHJlZl09XCJwZGZVcmxcIj5cclxuICAgICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGQ9XCJNMTggMjEuMjVINkM1LjMwOTY0IDIxLjI1IDQuNzUgMjAuNjkwNCA0Ljc1IDIwVjRDNC43NSAzLjMwOTY0IDUuMzA5NjQgMi43NSA2IDIuNzVIMTMuMTg5M0wxOS4yNSA4LjgxMDY2VjIwQzE5LjI1IDIwLjY5MDQgMTguNjkwNCAyMS4yNSAxOCAyMS4yNVpcIlxyXG4gICAgICAgICAgICBzdHJva2U9XCIjMjgyODI4XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDxzcGFuPtCh0LrQsNGH0LDRgtGMINC00L7QutGD0LzQtdC90YI8L3NwYW4+XHJcbiAgICAgIDwvYT5cclxuICAgICAgPGEgKm5nSWY9XCJ4bWxVcmxcIlxyXG4gICAgICAgICBjbGFzcz1cIm1vZGFsLWZvb3Rlci1pdGVtX19saW5rXCJcclxuICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcclxuICAgICAgICAgW2hyZWZdPVwieG1sVXJsXCI+XHJcbiAgICAgICAgPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICA8cGF0aCBkPVwiTTYgMTZMMiAxMkw2IDhcIiBzdHJva2U9XCIjMjgyODI4XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgPHBhdGggZD1cIk0xOCAxNkwyMiAxMkwxOCA4XCIgc3Ryb2tlPVwiIzI4MjgyOFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICA8cGF0aCBkPVwiTTcuNTY2ODkgMTkuMTc4MkwxNS41NjY5IDUuMzIxODJcIiBzdHJva2U9XCIjMjgyODI4XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8c3Bhbj7QodC60LDRh9Cw0YLRjCBYTUwt0LTQsNC90L3Ri9C1PC9zcGFuPlxyXG4gICAgICA8L2E+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXItaXRlbVwiPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz1cIm1yeC1idG4gbXJ4LWJ0bi1zZWNvbmRhcnkgbXJ4LWJ0bi1tZCB3cHgtMTIwIG1yLTNcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImNhbmNlbCgpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtcngtYnRuLWxhYmVsXCI+e3tjYW5jZWxMYWJlbCB8fCAn0J7RgtC80LXQvdC40YLRjCd9fTwvZGl2PlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgY2xhc3M9XCJtcngtYnRuIG1yeC1idG4tcHJpbWFyeSBtcngtYnRuLW1kIHdweC0xMjBcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgIChjbGljayk9XCJvaygpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtcngtYnRuLWxhYmVsXCI+e3tva0xhYmVsIHx8ICfQn9C+0LTQv9C40YHQsNGC0YwnfX08L2Rpdj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydGlmaWNhdGUubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0ZXgtbWYtc2lnbmVyL3NyYy9saWIvbW9kZWxzL2NlcnRpZmljYXRlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIENlcnRpZmljYXRlTW9kZWwge1xyXG4gIGlkOiBudW1iZXI7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGNuOiBzdHJpbmc7XHJcbiAgZmlvOiBzdHJpbmc7XHJcbiAgcG9zdDogc3RyaW5nO1xyXG4gIGNlcnRpZmljYXRlOiBhbnk7XHJcbiAgaW5uOiBzdHJpbmc7XHJcbiAgb2dybjogc3RyaW5nO1xyXG4gIG9yZ2FuaXphdGlvbjogc3RyaW5nO1xyXG4gIHNlcmlhbE51bWJlcjogc3RyaW5nO1xyXG4gIGlzc3Vlck5hbWU6IHN0cmluZztcclxuICBzdWJqZWN0TmFtZTogc3RyaW5nO1xyXG4gIHZhbGlkRnJvbURhdGU6IHN0cmluZztcclxuICB2YWxpZFRvRGF0ZTogc3RyaW5nO1xyXG4gIHRodW1icHJpbnQ6IHN0cmluZztcclxuICBpc0V4cGlyZWQ6IGJvb2xlYW47XHJcbn1cclxuIl19
@@ -0,0 +1,5 @@
1
+ export * from './sign-request.model';
2
+ export * from './certificate.model';
3
+ export * from './sign-validate-response.model';
4
+ export * from './signed-result.model';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0ZXgtbWYtc2lnbmVyL3NyYy9saWIvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NpZ24tcmVxdWVzdC5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY2VydGlmaWNhdGUubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NpZ24tdmFsaWRhdGUtcmVzcG9uc2UubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NpZ25lZC1yZXN1bHQubW9kZWwnO1xyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZ5LmNlcnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0ZXgtbWYtc2lnbmVyL3NyYy9saWIvbW9kZWxzL2ludGVybmFsL3ZlcmlmeS5jZXJ0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFZlcmlmeUNlcnRNb2RlbCB7XHJcbiAgZGF0YTogc3RyaW5nO1xyXG4gIHNpZ25hdHVyZTogc3RyaW5nO1xyXG4gIGRldGFjaGVkOiBib29sZWFuO1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZ5LmNlcnQucmVzcG9uc2UubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0ZXgtbWYtc2lnbmVyL3NyYy9saWIvbW9kZWxzL2ludGVybmFsL3ZlcmlmeS5jZXJ0LnJlc3BvbnNlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFZlcmlmeUNlcnRSZXNwb25zZU1vZGVsIHtcclxuICBzdWNjZXNzOiBib29sZWFuO1xyXG4gIGVycm9yOiBzdHJpbmc7XHJcbn1cclxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi1yZXF1ZXN0Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LW1mLXNpZ25lci9zcmMvbGliL21vZGVscy9zaWduLXJlcXVlc3QubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFNpZ25Qcm92aWRlclR5cGUgPSAnZW1wdHknIHwgJ2NyeXB0b3RzJyB8ICdjcnlwdG8nIHwgJ2NyeXB0b2ppbm4nO1xyXG5leHBvcnQgdHlwZSBTaWduVHlwZSA9ICd4bWwnIHwgJ3htbHRzJyB8ICdwZGYnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTaWduUmVxdWVzdE1vZGVsIHtcclxuICB0aXRsZT86IHN0cmluZztcclxuICBva0xhYmVsPzogc3RyaW5nO1xyXG4gIGNhbmNlbExhYmVsPzogc3RyaW5nO1xyXG4gIHhtbFVybD86IHN0cmluZztcclxuICBwZGZVcmw/OiBzdHJpbmc7XHJcbiAgcHJvdmlkZXI6IFNpZ25Qcm92aWRlclR5cGU7XHJcbiAgc2lnblR5cGU/OiBTaWduVHlwZTtcclxuICB3aXRoTG9nPzogYm9vbGVhbjtcclxuICBza2lwU2VydmVyQ2hlY2s/OiBib29sZWFuO1xyXG4gIGNoZWNrRmlvPzogc3RyaW5nO1xyXG4gIGNoZWNrT2dybj86IHN0cmluZztcclxuICBjaGVja09yZ2FuaXphdGlvbj86IHN0cmluZztcclxuICBjaGVja0lubj86IHN0cmluZztcclxufVxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi12YWxpZGF0ZS1yZXNwb25zZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRleC1tZi1zaWduZXIvc3JjL2xpYi9tb2RlbHMvc2lnbi12YWxpZGF0ZS1yZXNwb25zZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBTaWduVmFsaWRhdGVSZXNwb25zZSB7XHJcbiAgc3VjY2VzczogYm9vbGVhbjtcclxuICB2YWxpZGF0ZVJlc3VsdDogc3RyaW5nO1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmVkLXJlc3VsdC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRleC1tZi1zaWduZXIvc3JjL2xpYi9tb2RlbHMvc2lnbmVkLXJlc3VsdC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2VydGlmaWNhdGVNb2RlbCB9IGZyb20gJy4vY2VydGlmaWNhdGUubW9kZWwnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTaWduZWRSZXN1bHRNb2RlbCB7XHJcblxyXG4gIC8qKlxyXG4gICAqINCf0L7QtNC/0LjRgdGL0LLQsNC10LzRi9C1INC00LDQvdC90YvQtVxyXG4gICAqL1xyXG4gIGRhdGE/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqINCf0L7QtNC/0LjRgdGMXHJcbiAgICovXHJcbiAgc2lnbmVkPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvKipcclxuICAgKiDQntC/0LXRgNCw0YbQuNGPINGD0YHQv9C10YjQvdC+INC/0YDQvtCy0LXRgNC10L3QsFxyXG4gICAqL1xyXG4gIHN1Y2Nlc3M/OiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiDQoNC10LfRg9C70YzRgtCw0YIg0LLQsNC70LjQtNCw0YbQuNC4INCyINGC0LXQutGB0YLQvtCy0L7QvCDQstC40LTQtVxyXG4gICAqL1xyXG4gIHZhbGlkYXRlUmVzdWx0Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvKipcclxuICAgKiDQlNCw0L3QvdGL0LUg0L4g0YHQtdGA0YLQuNGE0LjQutCw0YLQtVxyXG4gICAqL1xyXG4gIGNlcnRpZmljYXRlPzogQ2VydGlmaWNhdGVNb2RlbCB8IHVuZGVmaW5lZDtcclxufVxyXG4iXX0=
@@ -0,0 +1,75 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { SignModalComponent } from './components/sign-modal/sign-modal.component';
3
+ import { CommonModule } from '@angular/common';
4
+ import { HttpClientModule } from '@angular/common/http';
5
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
6
+ import { MyrtexUiCompositeModule } from 'myrtex-ui-composite';
7
+ import { NgSelectModule } from '@ng-select/ng-select';
8
+ import { SignService } from './services/public.sign.service';
9
+ import { DownloadService } from './services/download.service';
10
+ import { CertificateSelectComponent } from './components/certificate-select/certificate-select.component';
11
+ import { CryptoApiService } from './services/crypto.api.service';
12
+ import { SignProviderFactory } from './providers/signprovider.factory';
13
+ import { CryptoProvider } from './providers/crypto.provider';
14
+ import { CryptoJinnProvider } from './providers/cryptojinn.provider';
15
+ import { CryptoTsProvider } from './providers/cryptots.provider';
16
+ import { EmptyProvider } from './providers/empty.provider';
17
+ import * as i0 from "@angular/core";
18
+ export class MyrtexSignerModule {
19
+ }
20
+ MyrtexSignerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MyrtexSignerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
21
+ MyrtexSignerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MyrtexSignerModule, declarations: [SignModalComponent,
22
+ CertificateSelectComponent], imports: [CommonModule,
23
+ FormsModule,
24
+ ReactiveFormsModule,
25
+ HttpClientModule,
26
+ NgSelectModule,
27
+ MyrtexUiCompositeModule], exports: [SignModalComponent] });
28
+ MyrtexSignerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MyrtexSignerModule, providers: [
29
+ SignProviderFactory,
30
+ CryptoProvider,
31
+ CryptoJinnProvider,
32
+ CryptoTsProvider,
33
+ EmptyProvider,
34
+ CryptoApiService,
35
+ SignService,
36
+ DownloadService
37
+ ], imports: [[
38
+ CommonModule,
39
+ FormsModule,
40
+ ReactiveFormsModule,
41
+ HttpClientModule,
42
+ NgSelectModule,
43
+ MyrtexUiCompositeModule
44
+ ]] });
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MyrtexSignerModule, decorators: [{
46
+ type: NgModule,
47
+ args: [{
48
+ declarations: [
49
+ SignModalComponent,
50
+ CertificateSelectComponent
51
+ ],
52
+ imports: [
53
+ CommonModule,
54
+ FormsModule,
55
+ ReactiveFormsModule,
56
+ HttpClientModule,
57
+ NgSelectModule,
58
+ MyrtexUiCompositeModule
59
+ ],
60
+ exports: [
61
+ SignModalComponent
62
+ ],
63
+ providers: [
64
+ SignProviderFactory,
65
+ CryptoProvider,
66
+ CryptoJinnProvider,
67
+ CryptoTsProvider,
68
+ EmptyProvider,
69
+ CryptoApiService,
70
+ SignService,
71
+ DownloadService
72
+ ]
73
+ }]
74
+ }] });
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXlydGV4LXNpZ25lci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0ZXgtbWYtc2lnbmVyL3NyYy9saWIvbXlydGV4LXNpZ25lci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQzFHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBOEIzRCxNQUFNLE9BQU8sa0JBQWtCOztnSEFBbEIsa0JBQWtCO2lIQUFsQixrQkFBa0IsaUJBMUIzQixrQkFBa0I7UUFDbEIsMEJBQTBCLGFBRzFCLFlBQVk7UUFDWixXQUFXO1FBQ1gsbUJBQW1CO1FBQ25CLGdCQUFnQjtRQUNoQixjQUFjO1FBQ2QsdUJBQXVCLGFBR3ZCLGtCQUFrQjtpSEFjVCxrQkFBa0IsYUFabEI7UUFDVCxtQkFBbUI7UUFDbkIsY0FBYztRQUNkLGtCQUFrQjtRQUNsQixnQkFBZ0I7UUFDaEIsYUFBYTtRQUViLGdCQUFnQjtRQUNoQixXQUFXO1FBQ1gsZUFBZTtLQUNoQixZQXJCUTtZQUNQLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGdCQUFnQjtZQUNoQixjQUFjO1lBQ2QsdUJBQXVCO1NBQ3hCOzRGQWdCVSxrQkFBa0I7a0JBNUI5QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixrQkFBa0I7d0JBQ2xCLDBCQUEwQjtxQkFDM0I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGdCQUFnQjt3QkFDaEIsY0FBYzt3QkFDZCx1QkFBdUI7cUJBQ3hCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxrQkFBa0I7cUJBQ25CO29CQUNELFNBQVMsRUFBRTt3QkFDVCxtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBRWIsZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLGVBQWU7cUJBQ2hCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2lnbk1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3NpZ24tbW9kYWwvc2lnbi1tb2RhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTXlydGV4VWlDb21wb3NpdGVNb2R1bGUgfSBmcm9tICdteXJ0ZXgtdWktY29tcG9zaXRlJztcclxuaW1wb3J0IHsgTmdTZWxlY3RNb2R1bGUgfSBmcm9tICdAbmctc2VsZWN0L25nLXNlbGVjdCc7XHJcbmltcG9ydCB7IFNpZ25TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wdWJsaWMuc2lnbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRG93bmxvYWRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9kb3dubG9hZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2VydGlmaWNhdGVTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2VydGlmaWNhdGUtc2VsZWN0L2NlcnRpZmljYXRlLXNlbGVjdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDcnlwdG9BcGlTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jcnlwdG8uYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTaWduUHJvdmlkZXJGYWN0b3J5IH0gZnJvbSAnLi9wcm92aWRlcnMvc2lnbnByb3ZpZGVyLmZhY3RvcnknO1xyXG5pbXBvcnQgeyBDcnlwdG9Qcm92aWRlciB9IGZyb20gJy4vcHJvdmlkZXJzL2NyeXB0by5wcm92aWRlcic7XHJcbmltcG9ydCB7IENyeXB0b0ppbm5Qcm92aWRlciB9IGZyb20gJy4vcHJvdmlkZXJzL2NyeXB0b2ppbm4ucHJvdmlkZXInO1xyXG5pbXBvcnQgeyBDcnlwdG9Uc1Byb3ZpZGVyIH0gZnJvbSAnLi9wcm92aWRlcnMvY3J5cHRvdHMucHJvdmlkZXInO1xyXG5pbXBvcnQgeyBFbXB0eVByb3ZpZGVyIH0gZnJvbSAnLi9wcm92aWRlcnMvZW1wdHkucHJvdmlkZXInO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIFNpZ25Nb2RhbENvbXBvbmVudCxcclxuICAgIENlcnRpZmljYXRlU2VsZWN0Q29tcG9uZW50XHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBIdHRwQ2xpZW50TW9kdWxlLFxyXG4gICAgTmdTZWxlY3RNb2R1bGUsXHJcbiAgICBNeXJ0ZXhVaUNvbXBvc2l0ZU1vZHVsZVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgU2lnbk1vZGFsQ29tcG9uZW50XHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIFNpZ25Qcm92aWRlckZhY3RvcnksXHJcbiAgICBDcnlwdG9Qcm92aWRlcixcclxuICAgIENyeXB0b0ppbm5Qcm92aWRlcixcclxuICAgIENyeXB0b1RzUHJvdmlkZXIsXHJcbiAgICBFbXB0eVByb3ZpZGVyLFxyXG5cclxuICAgIENyeXB0b0FwaVNlcnZpY2UsXHJcbiAgICBTaWduU2VydmljZSxcclxuICAgIERvd25sb2FkU2VydmljZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIE15cnRleFNpZ25lck1vZHVsZSB7IH1cclxuIl19
@@ -0,0 +1,99 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Base64 } from 'js-base64';
3
+ import { CryptoProAsyncService } from '../services/cryptopro/crypto.pro.async.service';
4
+ import { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';
5
+ import { DialogColor, DialogType } from 'myrtex-ui-composite';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "ngx-simple-modal";
8
+ import * as i2 from "../services/crypto.service";
9
+ import * as i3 from "myrtex-ui-composite";
10
+ import * as i4 from "../services/crypto.api.service";
11
+ export class CryptoProvider {
12
+ constructor(simpleModalService, cryptoService, alertService, cryptoApiService) {
13
+ this.simpleModalService = simpleModalService;
14
+ this.cryptoService = cryptoService;
15
+ this.alertService = alertService;
16
+ this.cryptoApiService = cryptoApiService;
17
+ }
18
+ async sign(data, withLog, options) {
19
+ await this.cryptoService.startUp(withLog);
20
+ const service = await this.cryptoService.getService(CryptoProAsyncService.key);
21
+ const list = await service.getCertificates();
22
+ const modalResult = await this.simpleModalService
23
+ .addModal(CertificateSelectComponent, { certificates: list }).toPromise();
24
+ if (!modalResult.selected) {
25
+ if (withLog) {
26
+ console.log('No certificate selected, rejecting');
27
+ }
28
+ return Promise.reject();
29
+ }
30
+ let certificateFail = 0;
31
+ if (window.CRYPTO_SKIP_CHECK !== true) {
32
+ if (options.checkFio &&
33
+ modalResult.selected.fio.toLowerCase() !== options.checkFio.toLowerCase()) {
34
+ certificateFail = 1;
35
+ }
36
+ if ((options.checkOgrn || options.checkOrganization) &&
37
+ (modalResult.selected.ogrn?.toLowerCase() !== options.checkOgrn?.toLowerCase() &&
38
+ modalResult.selected.organization?.toLowerCase() !== options.checkOrganization?.toLowerCase())) {
39
+ certificateFail = 2;
40
+ }
41
+ // if (this.options.checkInn &&
42
+ // result.inn.toLowerCase() == this.options.checkFio.toLowerCase()) {
43
+ // certificateFail = true;
44
+ // }
45
+ }
46
+ if (certificateFail > 0) {
47
+ this.alertService.showDialog({
48
+ title: 'Ошибка сертификата',
49
+ message: certificateFail == 1 ?
50
+ 'Данные лица, подписывающего заявку не совпадают с данными усиленной квалифицированной подписи.' :
51
+ 'Данные организации не совпадают с данными усиленной квалифицированной подписи. ' +
52
+ 'Убедитесь, что вы используете сертификат, выданные от организации.',
53
+ color: DialogColor.red,
54
+ type: DialogType.alert,
55
+ okCallback: (ok) => {
56
+ //
57
+ }
58
+ });
59
+ return Promise.reject();
60
+ }
61
+ if (withLog) {
62
+ console.log('Signing data', data);
63
+ }
64
+ const signedData = await service.signBase64(modalResult.selected.certificate, data, true);
65
+ if (withLog) {
66
+ console.log('Signing data', data);
67
+ }
68
+ if (!options.skipServerCheck) {
69
+ const verifyResult = await this.cryptoApiService.verify({
70
+ data: data,
71
+ signature: Base64.encode(signedData),
72
+ detached: true
73
+ }).toPromise();
74
+ return {
75
+ data,
76
+ success: verifyResult.success,
77
+ signed: signedData,
78
+ certificate: modalResult.selected,
79
+ };
80
+ }
81
+ else {
82
+ return {
83
+ data,
84
+ success: true,
85
+ signed: signedData,
86
+ certificate: modalResult.selected,
87
+ };
88
+ }
89
+ }
90
+ }
91
+ CryptoProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CryptoProvider, deps: [{ token: i1.SimpleModalService }, { token: i2.CryptoService }, { token: i3.AlertService }, { token: i4.CryptoApiService }], target: i0.ɵɵFactoryTarget.Injectable });
92
+ CryptoProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CryptoProvider, providedIn: 'root' });
93
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CryptoProvider, decorators: [{
94
+ type: Injectable,
95
+ args: [{
96
+ providedIn: 'root'
97
+ }]
98
+ }], ctorParameters: function () { return [{ type: i1.SimpleModalService }, { type: i2.CryptoService }, { type: i3.AlertService }, { type: i4.CryptoApiService }]; } });
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LW1mLXNpZ25lci9zcmMvbGliL3Byb3ZpZGVycy9jcnlwdG8ucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBSW5DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBRzNHLE9BQU8sRUFBZ0IsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7QUFPNUUsTUFBTSxPQUFPLGNBQWM7SUFFekIsWUFBb0Isa0JBQXNDLEVBQ2hELGFBQTRCLEVBQzVCLFlBQTBCLEVBQzFCLGdCQUFrQztRQUh4Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ2hELGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFDNUMsQ0FBQztJQUVNLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBWSxFQUFFLE9BQWlCLEVBQUUsT0FBYTtRQUM5RCxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQXdCLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RHLE1BQU0sSUFBSSxHQUFHLE1BQU0sT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzdDLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQjthQUM5QyxR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QUFXLENBQUMsUUFBUTthQUNsQyxDQUFDO1NBQ0g7SUFDSCxDQUFDOzs0R0F6RlUsY0FBYztnSEFBZCxjQUFjLGNBRmIsTUFBTTs0RkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmFzZTY0IH0gZnJvbSAnanMtYmFzZTY0JztcclxuaW1wb3J0IHsgU2ltcGxlTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LXNpbXBsZS1tb2RhbCc7XHJcbmltcG9ydCB7IElTaWduUHJvdmlkZXIgfSBmcm9tICcuL2ludGVyZmFjZXMvaXNpZ24ucHJvdmlkZXInO1xyXG5pbXBvcnQgeyBDcnlwdG9TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY3J5cHRvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDcnlwdG9Qcm9Bc3luY1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jcnlwdG9wcm8vY3J5cHRvLnByby5hc3luYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2VydGlmaWNhdGVTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2NlcnRpZmljYXRlLXNlbGVjdC9jZXJ0aWZpY2F0ZS1zZWxlY3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ3J5cHRvQXBpU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NyeXB0by5hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IFNpZ25lZFJlc3VsdE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBEaWFsb2dDb2xvciwgRGlhbG9nVHlwZSB9IGZyb20gJ215cnRleC11aS1jb21wb3NpdGUnO1xyXG5cclxuZGVjbGFyZSBjb25zdCB3aW5kb3c6IGFueTtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENyeXB0b1Byb3ZpZGVyIGltcGxlbWVudHMgSVNpZ25Qcm92aWRlciB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2ltcGxlTW9kYWxTZXJ2aWNlOiBTaW1wbGVNb2RhbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNyeXB0b1NlcnZpY2U6IENyeXB0b1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjcnlwdG9BcGlTZXJ2aWNlOiBDcnlwdG9BcGlTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgc2lnbihkYXRhOiBzdHJpbmcsIHdpdGhMb2c/OiBib29sZWFuLCBvcHRpb25zPzogYW55KTogUHJvbWlzZTxTaWduZWRSZXN1bHRNb2RlbD4ge1xyXG4gICAgYXdhaXQgdGhpcy5jcnlwdG9TZXJ2aWNlLnN0YXJ0VXAod2l0aExvZyk7XHJcbiAgICBjb25zdCBzZXJ2aWNlID0gYXdhaXQgdGhpcy5jcnlwdG9TZXJ2aWNlLmdldFNlcnZpY2U8Q3J5cHRvUHJvQXN5bmNTZXJ2aWNlPihDcnlwdG9Qcm9Bc3luY1NlcnZpY2Uua2V5KTtcclxuICAgIGNvbnN0IGxpc3QgPSBhd2FpdCBzZXJ2aWNlLmdldENlcnRpZmljYXRlcygpO1xyXG4gICAgY29uc3QgbW9kYWxSZXN1bHQgPSBhd2FpdCB0aGlzLnNpbXBsZU1vZGFsU2VydmljZVxyXG4gICAgICAuYWRkTW9kYWwoQ2VydGlmaWNhdGVTZWxlY3RDb21wb25lbnQsIHsgY2VydGlmaWNhdGVzOiBsaXN0IH0pLnRvUHJvbWlzZSgpO1xyXG5cclxuICAgIGlmICghbW9kYWxSZXN1bHQuc2VsZWN0ZWQpIHtcclxuICAgICAgaWYgKHdpdGhMb2cpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnTm8gY2VydGlmaWNhdGUgc2VsZWN0ZWQsIHJlamVjdGluZycpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBjZXJ0aWZpY2F0ZUZhaWwgPSAwO1xyXG4gICAgaWYgKHdpbmRvdy5DUllQVE9fU0tJUF9DSEVDSyAhPT0gdHJ1ZSkge1xyXG4gICAgICBpZiAob3B0aW9ucy5jaGVja0ZpbyAmJlxyXG4gICAgICAgIG1vZGFsUmVzdWx0LnNlbGVjdGVkLmZpby50b0xvd2VyQ2FzZSgpICE9PSBvcHRpb25zLmNoZWNrRmlvLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICBjZXJ0aWZpY2F0ZUZhaWwgPSAxO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoKG9wdGlvbnMuY2hlY2tPZ3JuIHx8IG9wdGlvbnMuY2hlY2tPcmdhbml6YXRpb24pICYmXHJcbiAgICAgICAgKG1vZGFsUmVzdWx0LnNlbGVjdGVkLm9ncm4/LnRvTG93ZXJDYXNlKCkgIT09IG9wdGlvbnMuY2hlY2tPZ3JuPy50b0xvd2VyQ2FzZSgpICYmXHJcbiAgICAgICAgICBtb2RhbFJlc3VsdC5zZWxlY3RlZC5vcmdhbml6YXRpb24/LnRvTG93ZXJDYXNlKCkgIT09IG9wdGlvbnMuY2hlY2tPcmdhbml6YXRpb24/LnRvTG93ZXJDYXNlKCkpKSB7XHJcbiAgICAgICAgY2VydGlmaWNhdGVGYWlsID0gMjtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gaWYgKHRoaXMub3B0aW9ucy5jaGVja0lubiAmJlxyXG4gICAgICAvLyAgIHJlc3VsdC5pbm4udG9Mb3dlckNhc2UoKSA9PSB0aGlzLm9wdGlvbnMuY2hlY2tGaW8udG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAvLyAgICAgY2VydGlmaWNhdGVGYWlsID0gdHJ1ZTtcclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChjZXJ0aWZpY2F0ZUZhaWwgPiAwKSB7XHJcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNob3dEaWFsb2coe1xyXG4gICAgICAgIHRpdGxlOiAn0J7RiNC40LHQutCwINGB0LXRgNGC0LjRhNC40LrQsNGC0LAnLFxyXG4gICAgICAgIG1lc3NhZ2U6IGNlcnRpZmljYXRlRmFpbCA9PSAxID9cclxuICAgICAgICAgICfQlNCw0L3QvdGL0LUg0LvQuNGG0LAsINC/0L7QtNC/0LjRgdGL0LLQsNGO0YnQtdCz0L4g0LfQsNGP0LLQutGDINC90LUg0YHQvtCy0L/QsNC00LDRjtGCINGBINC00LDQvdC90YvQvNC4INGD0YHQuNC70LXQvdC90L7QuSDQutCy0LDQu9C40YTQuNGG0LjRgNC+0LLQsNC90L3QvtC5INC/0L7QtNC/0LjRgdC4LicgOlxyXG4gICAgICAgICAgJ9CU0LDQvdC90YvQtSDQvtGA0LPQsNC90LjQt9Cw0YbQuNC4INC90LUg0YHQvtCy0L/QsNC00LDRjtGCINGBINC00LDQvdC90YvQvNC4INGD0YHQuNC70LXQvdC90L7QuSDQutCy0LDQu9C40YTQuNGG0LjRgNC+0LLQsNC90L3QvtC5INC/0L7QtNC/0LjRgdC4LiAnICtcclxuICAgICAgICAgICfQo9Cx0LXQtNC40YLQtdGB0YwsINGH0YLQviDQstGLINC40YHQv9C+0LvRjNC30YPQtdGC0LUg0YHQtdGA0YLQuNGE0LjQutCw0YIsINCy0YvQtNCw0L3QvdGL0LUg0L7RgiDQvtGA0LPQsNC90LjQt9Cw0YbQuNC4LicsXHJcbiAgICAgICAgY29sb3I6IERpYWxvZ0NvbG9yLnJlZCxcclxuICAgICAgICB0eXBlOiBEaWFsb2dUeXBlLmFsZXJ0LFxyXG4gICAgICAgIG9rQ2FsbGJhY2s6IChvaykgPT4ge1xyXG4gICAgICAgICAgLy9cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHdpdGhMb2cpIHtcclxuICAgICAgY29uc29sZS5sb2coJ1NpZ25pbmcgZGF0YScsIGRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNpZ25lZERhdGEgPSBhd2FpdCBzZXJ2aWNlLnNpZ25CYXNlNjQobW9kYWxSZXN1bHQuc2VsZWN0ZWQuY2VydGlmaWNhdGUsIGRhdGEsIHRydWUpO1xyXG5cclxuICAgIGlmICh3aXRoTG9nKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdTaWduaW5nIGRhdGEnLCBkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIW9wdGlvbnMuc2tpcFNlcnZlckNoZWNrKSB7XHJcbiAgICAgIGNvbnN0IHZlcmlmeVJlc3VsdCA9IGF3YWl0IHRoaXMuY3J5cHRvQXBpU2VydmljZS52ZXJpZnkoe1xyXG4gICAgICAgIGRhdGE6IGRhdGEsXHJcbiAgICAgICAgc2lnbmF0dXJlOiBCYXNlNjQuZW5jb2RlKHNpZ25lZERhdGEpLFxyXG4gICAgICAgIGRldGFjaGVkOiB0cnVlXHJcbiAgICAgIH0pLnRvUHJvbWlzZSgpO1xyXG5cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBkYXRhLFxyXG4gICAgICAgIHN1Y2Nlc3M6IHZlcmlmeVJlc3VsdC5zdWNjZXNzLFxyXG4gICAgICAgIHNpZ25lZDogc2lnbmVkRGF0YSxcclxuICAgICAgICBjZXJ0aWZpY2F0ZTogbW9kYWxSZXN1bHQuc2VsZWN0ZWQsXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGRhdGEsXHJcbiAgICAgICAgc3VjY2VzczogdHJ1ZSxcclxuICAgICAgICBzaWduZWQ6IHNpZ25lZERhdGEsXHJcbiAgICAgICAgY2VydGlmaWNhdGU6IG1vZGFsUmVzdWx0LnNlbGVjdGVkLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,47 @@
1
+ import { Injectable } from "@angular/core";
2
+ import { CryptoProAsyncService } from '../services/cryptopro/crypto.pro.async.service';
3
+ import { CertificateSelectComponent } from '../components/certificate-select/certificate-select.component';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "ngx-simple-modal";
6
+ import * as i2 from "../services/crypto.service";
7
+ import * as i3 from "../services/crypto.api.service";
8
+ export class CryptoJinnProvider {
9
+ constructor(simpleModalService, cryptoService, cryptoApiService) {
10
+ this.simpleModalService = simpleModalService;
11
+ this.cryptoService = cryptoService;
12
+ this.cryptoApiService = cryptoApiService;
13
+ }
14
+ async sign(data, withLog, options) {
15
+ await this.cryptoService.startUp(withLog);
16
+ const service = await this.cryptoService.getService(CryptoProAsyncService.key);
17
+ const list = await service.getCertificates();
18
+ const modalResult = await this.simpleModalService
19
+ .addModal(CertificateSelectComponent, { certificates: list }).toPromise();
20
+ if (!modalResult.selected) {
21
+ if (withLog) {
22
+ console.log('No certificate selected, rejecting');
23
+ }
24
+ return Promise.reject();
25
+ }
26
+ if (withLog) {
27
+ console.log('Signing data', data);
28
+ }
29
+ const signedData = await service.signXml(modalResult.selected.certificate, data);
30
+ const verifyResult = await this.cryptoApiService.validate(signedData).toPromise();
31
+ return {
32
+ data: signedData,
33
+ success: verifyResult.success,
34
+ certificate: modalResult.selected,
35
+ validateResult: verifyResult.validateResult
36
+ };
37
+ }
38
+ }
39
+ CryptoJinnProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CryptoJinnProvider, deps: [{ token: i1.SimpleModalService }, { token: i2.CryptoService }, { token: i3.CryptoApiService }], target: i0.ɵɵFactoryTarget.Injectable });
40
+ CryptoJinnProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CryptoJinnProvider, providedIn: 'root' });
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CryptoJinnProvider, decorators: [{
42
+ type: Injectable,
43
+ args: [{
44
+ providedIn: 'root'
45
+ }]
46
+ }], ctorParameters: function () { return [{ type: i1.SimpleModalService }, { type: i2.CryptoService }, { type: i3.CryptoApiService }]; } });
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvamlubi5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRleC1tZi1zaWduZXIvc3JjL2xpYi9wcm92aWRlcnMvY3J5cHRvamlubi5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLCtEQUErRCxDQUFDOzs7OztBQU8zRyxNQUFNLE9BQU8sa0JBQWtCO0lBRTdCLFlBQW9CLGtCQUFzQyxFQUNoRCxhQUE0QixFQUM1QixnQkFBa0M7UUFGeEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUNoRCxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBQzVDLENBQUM7SUFFTSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQVksRUFBRSxPQUFpQixFQUFFLE9BQWE7UUFDOUQsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQyxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUF3QixxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0RyxNQUFNLElBQUksR0FBRyxNQUFNLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM3QyxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0I7YUFDOUMsUUFBUSxDQUFDLDBCQUEwQixFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFNUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUU7WUFDekIsSUFBSSxPQUFPLEVBQUU7Z0JBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO2FBQ25EO1lBQ0QsT0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDekI7UUFFRCxJQUFJLE9BQU8sRUFBRTtZQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ25DO1FBRUQsTUFBTSxVQUFVLEdBQUcsTUFBTSxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRWpGLE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVsRixPQUFPO1lBQ0wsSUFBSSxFQUFFLFVBQVU7WUFDaEIsT0FBTyxFQUFFLFlBQVksQ0FBQyxPQUFPO1lBQzdCLFdBQVcsRUFBRSxXQUFXLENBQUMsUUFBUTtZQUNqQyxjQUFjLEVBQUUsWUFBWSxDQUFDLGNBQWM7U0FDNUMsQ0FBQztJQUNKLENBQUM7O2dIQW5DVSxrQkFBa0I7b0hBQWxCLGtCQUFrQixjQUZqQixNQUFNOzRGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU2ltcGxlTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LXNpbXBsZS1tb2RhbCc7XHJcbmltcG9ydCB7IElTaWduUHJvdmlkZXIgfSBmcm9tICcuL2ludGVyZmFjZXMvaXNpZ24ucHJvdmlkZXInO1xyXG5pbXBvcnQgeyBDcnlwdG9TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY3J5cHRvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDcnlwdG9Qcm9Bc3luY1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jcnlwdG9wcm8vY3J5cHRvLnByby5hc3luYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2VydGlmaWNhdGVTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2NlcnRpZmljYXRlLXNlbGVjdC9jZXJ0aWZpY2F0ZS1zZWxlY3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ3J5cHRvQXBpU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NyeXB0by5hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IFNpZ25lZFJlc3VsdE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENyeXB0b0ppbm5Qcm92aWRlciBpbXBsZW1lbnRzIElTaWduUHJvdmlkZXIge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNpbXBsZU1vZGFsU2VydmljZTogU2ltcGxlTW9kYWxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjcnlwdG9TZXJ2aWNlOiBDcnlwdG9TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjcnlwdG9BcGlTZXJ2aWNlOiBDcnlwdG9BcGlTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgc2lnbihkYXRhOiBzdHJpbmcsIHdpdGhMb2c/OiBib29sZWFuLCBvcHRpb25zPzogYW55KTogUHJvbWlzZTxTaWduZWRSZXN1bHRNb2RlbD4ge1xyXG4gICAgYXdhaXQgdGhpcy5jcnlwdG9TZXJ2aWNlLnN0YXJ0VXAod2l0aExvZyk7XHJcbiAgICBjb25zdCBzZXJ2aWNlID0gYXdhaXQgdGhpcy5jcnlwdG9TZXJ2aWNlLmdldFNlcnZpY2U8Q3J5cHRvUHJvQXN5bmNTZXJ2aWNlPihDcnlwdG9Qcm9Bc3luY1NlcnZpY2Uua2V5KTtcclxuICAgIGNvbnN0IGxpc3QgPSBhd2FpdCBzZXJ2aWNlLmdldENlcnRpZmljYXRlcygpO1xyXG4gICAgY29uc3QgbW9kYWxSZXN1bHQgPSBhd2FpdCB0aGlzLnNpbXBsZU1vZGFsU2VydmljZVxyXG4gICAgICAuYWRkTW9kYWwoQ2VydGlmaWNhdGVTZWxlY3RDb21wb25lbnQsIHsgY2VydGlmaWNhdGVzOiBsaXN0IH0pLnRvUHJvbWlzZSgpO1xyXG5cclxuICAgIGlmICghbW9kYWxSZXN1bHQuc2VsZWN0ZWQpIHtcclxuICAgICAgaWYgKHdpdGhMb2cpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnTm8gY2VydGlmaWNhdGUgc2VsZWN0ZWQsIHJlamVjdGluZycpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh3aXRoTG9nKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdTaWduaW5nIGRhdGEnLCBkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzaWduZWREYXRhID0gYXdhaXQgc2VydmljZS5zaWduWG1sKG1vZGFsUmVzdWx0LnNlbGVjdGVkLmNlcnRpZmljYXRlLCBkYXRhKTtcclxuXHJcbiAgICBjb25zdCB2ZXJpZnlSZXN1bHQgPSBhd2FpdCB0aGlzLmNyeXB0b0FwaVNlcnZpY2UudmFsaWRhdGUoc2lnbmVkRGF0YSkudG9Qcm9taXNlKCk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZGF0YTogc2lnbmVkRGF0YSxcclxuICAgICAgc3VjY2VzczogdmVyaWZ5UmVzdWx0LnN1Y2Nlc3MsXHJcbiAgICAgIGNlcnRpZmljYXRlOiBtb2RhbFJlc3VsdC5zZWxlY3RlZCxcclxuICAgICAgdmFsaWRhdGVSZXN1bHQ6IHZlcmlmeVJlc3VsdC52YWxpZGF0ZVJlc3VsdFxyXG4gICAgfTtcclxuICB9XHJcbn0iXX0=