@senior-gestao-empresarial/erpx-components 4.0.1 → 4.0.2-develop-21d58680

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 (75) hide show
  1. package/bundles/senior-gestao-empresarial-erpx-components.umd.js +792 -660
  2. package/bundles/senior-gestao-empresarial-erpx-components.umd.js.map +1 -1
  3. package/bundles/senior-gestao-empresarial-erpx-components.umd.min.js +2 -2
  4. package/bundles/senior-gestao-empresarial-erpx-components.umd.min.js.map +1 -1
  5. package/components/tributos/erp-tributos.component.d.ts +12 -8
  6. package/components/tributos/erp-tributos.types.d.ts +5 -1
  7. package/components/tributos/index.d.ts +1 -0
  8. package/components/tributos/rules/calculation/registries/calculation-rules-registries/outgoing-invoice-calculation-rules.registry.d.ts +3 -1
  9. package/components/tributos/rules/calculation/rules/assessment-period-calculation-rule.d.ts +5 -0
  10. package/components/tributos/rules/status/registries/purchase-order-status-rules.registry.d.ts +8 -0
  11. package/components/tributos/rules/status/registries/sale-order-status-rules.registry.d.ts +8 -0
  12. package/components/tributos/rules/status/registries/status-rules.registry.d.ts +5 -1
  13. package/components/tributos/rules/types/schemas/outgoing-invoice.schema.d.ts +2 -0
  14. package/components/tributos/rules/validation/registries/outgoing-invoice-validation-rules.registry.d.ts +3 -1
  15. package/components/tributos/rules/validation/rules/required/assessment-period-required-validation-rule.d.ts +5 -0
  16. package/components/tributos/tax-reform-utilities.d.ts +1 -1
  17. package/components/tributos/types/debit-invoice-type.d.ts +1 -1
  18. package/components/tributos/types/tax.d.ts +8 -0
  19. package/esm2015/components/tributos/erp-tributos.component.js +134 -40
  20. package/esm2015/components/tributos/erp-tributos.types.js +5 -1
  21. package/esm2015/components/tributos/index.js +1 -1
  22. package/esm2015/components/tributos/mappings/enum-tip-imp-cst-mapping.js +3 -1
  23. package/esm2015/components/tributos/rules/calculation/registries/calculation-rules-registries/outgoing-invoice-calculation-rules.registry.js +44 -4
  24. package/esm2015/components/tributos/rules/calculation/rules/assessment-period-calculation-rule.js +55 -0
  25. package/esm2015/components/tributos/rules/calculation/rules/tax-amount-calculation-rule.js +17 -1
  26. package/esm2015/components/tributos/rules/calculation/rules/tax-classification-calculation-rule.js +35 -1
  27. package/esm2015/components/tributos/rules/calculation/rules/tax-situation-calculation-rule.js +37 -1
  28. package/esm2015/components/tributos/rules/status/registries/outgoing-invoice-status-rules.registry.js +13 -1
  29. package/esm2015/components/tributos/rules/status/registries/purchase-order-status-rules.registry.js +18 -0
  30. package/esm2015/components/tributos/rules/status/registries/sale-order-status-rules.registry.js +18 -0
  31. package/esm2015/components/tributos/rules/status/registries/status-rules.registry.js +16 -4
  32. package/esm2015/components/tributos/rules/status/rules/tax-classification-status-rule.js +3 -1
  33. package/esm2015/components/tributos/rules/types/schemas/outgoing-invoice.schema.js +13 -1
  34. package/esm2015/components/tributos/rules/validation/registries/outgoing-invoice-validation-rules.registry.js +44 -4
  35. package/esm2015/components/tributos/rules/validation/registries/sale-order-validation-rules.registry.js +8 -560
  36. package/esm2015/components/tributos/rules/validation/rules/required/assessment-period-required-validation-rule.js +78 -0
  37. package/esm2015/components/tributos/rules/validation/rules/required/tax-amount-required-validation-rule.js +51 -2
  38. package/esm2015/components/tributos/rules/validation/rules/required/tax-classification-required-validation-rule.js +48 -2
  39. package/esm2015/components/tributos/rules/validation/rules/required/tax-situation-required-validation-rule.js +48 -2
  40. package/esm2015/components/tributos/tax-reform-utilities.js +6 -2
  41. package/esm2015/components/tributos/types/debit-invoice-type.js +1 -1
  42. package/esm2015/components/tributos/types/tax.js +2 -0
  43. package/esm2015/senior-gestao-empresarial-erpx-components.js +37 -33
  44. package/esm5/components/tributos/erp-tributos.component.js +149 -47
  45. package/esm5/components/tributos/erp-tributos.types.js +5 -1
  46. package/esm5/components/tributos/index.js +1 -1
  47. package/esm5/components/tributos/mappings/enum-tip-imp-cst-mapping.js +3 -1
  48. package/esm5/components/tributos/rules/calculation/registries/calculation-rules-registries/outgoing-invoice-calculation-rules.registry.js +44 -4
  49. package/esm5/components/tributos/rules/calculation/rules/assessment-period-calculation-rule.js +77 -0
  50. package/esm5/components/tributos/rules/calculation/rules/tax-amount-calculation-rule.js +24 -1
  51. package/esm5/components/tributos/rules/calculation/rules/tax-classification-calculation-rule.js +59 -1
  52. package/esm5/components/tributos/rules/calculation/rules/tax-situation-calculation-rule.js +61 -1
  53. package/esm5/components/tributos/rules/status/registries/outgoing-invoice-status-rules.registry.js +13 -1
  54. package/esm5/components/tributos/rules/status/registries/purchase-order-status-rules.registry.js +19 -0
  55. package/esm5/components/tributos/rules/status/registries/sale-order-status-rules.registry.js +19 -0
  56. package/esm5/components/tributos/rules/status/registries/status-rules.registry.js +16 -4
  57. package/esm5/components/tributos/rules/status/rules/tax-classification-status-rule.js +3 -1
  58. package/esm5/components/tributos/rules/types/schemas/outgoing-invoice.schema.js +13 -1
  59. package/esm5/components/tributos/rules/validation/registries/outgoing-invoice-validation-rules.registry.js +44 -4
  60. package/esm5/components/tributos/rules/validation/registries/sale-order-validation-rules.registry.js +10 -562
  61. package/esm5/components/tributos/rules/validation/rules/required/assessment-period-required-validation-rule.js +86 -0
  62. package/esm5/components/tributos/rules/validation/rules/required/tax-amount-required-validation-rule.js +55 -2
  63. package/esm5/components/tributos/rules/validation/rules/required/tax-classification-required-validation-rule.js +52 -2
  64. package/esm5/components/tributos/rules/validation/rules/required/tax-situation-required-validation-rule.js +52 -2
  65. package/esm5/components/tributos/tax-reform-utilities.js +6 -2
  66. package/esm5/components/tributos/types/debit-invoice-type.js +1 -1
  67. package/esm5/components/tributos/types/tax.js +2 -0
  68. package/esm5/senior-gestao-empresarial-erpx-components.js +37 -33
  69. package/fesm2015/senior-gestao-empresarial-erpx-components.js +654 -633
  70. package/fesm2015/senior-gestao-empresarial-erpx-components.js.map +1 -1
  71. package/fesm5/senior-gestao-empresarial-erpx-components.js +754 -626
  72. package/fesm5/senior-gestao-empresarial-erpx-components.js.map +1 -1
  73. package/package.json +1 -1
  74. package/senior-gestao-empresarial-erpx-components.d.ts +36 -32
  75. package/senior-gestao-empresarial-erpx-components.metadata.json +1 -1
@@ -0,0 +1,55 @@
1
+ import { __decorate } from "tslib";
2
+ import { Injectable } from '@angular/core';
3
+ import * as moment from 'moment';
4
+ import { combineLatest } from 'rxjs';
5
+ import { debounceTime, distinctUntilChanged, map, skip, startWith } from 'rxjs/operators';
6
+ import { EnumCampoTributo, EnumTipoTributo } from '../../../erp-tributos.types';
7
+ import * as i0 from "@angular/core";
8
+ let AssessmentPeriodCalculationRule = class AssessmentPeriodCalculationRule {
9
+ apply({ context: { document }, group, item: { name: taxType, formGroup } }) {
10
+ switch (taxType) {
11
+ case EnumTipoTributo.CBS_AJUSTE:
12
+ {
13
+ const { formGroup: ibsAjusteFormGroup } = group.item.find(({ name }) => name === EnumTipoTributo.IBS_AJUSTE);
14
+ combineLatest([
15
+ ibsAjusteFormGroup
16
+ .get(EnumCampoTributo.PeriodoApuracao)
17
+ .valueChanges.pipe(startWith(ibsAjusteFormGroup.get(EnumCampoTributo.PeriodoApuracao).value), distinctUntilChanged((old, current) => old === current ||
18
+ moment(old).isSame(current, 'day')), debounceTime(100))
19
+ ])
20
+ .pipe(skip(1), map(([taxSituation]) => [taxSituation]))
21
+ .subscribe(([taxSituation]) => {
22
+ formGroup
23
+ .get(EnumCampoTributo.PeriodoApuracao)
24
+ .setValue(taxSituation);
25
+ });
26
+ }
27
+ break;
28
+ case EnumTipoTributo.IBS_AJUSTE:
29
+ {
30
+ const { formGroup: cbsAjusteFormGroup } = group.item.find(({ name }) => name === EnumTipoTributo.CBS_AJUSTE);
31
+ combineLatest([
32
+ cbsAjusteFormGroup
33
+ .get(EnumCampoTributo.PeriodoApuracao)
34
+ .valueChanges.pipe(startWith(cbsAjusteFormGroup.get(EnumCampoTributo.PeriodoApuracao).value), distinctUntilChanged((old, current) => old === current ||
35
+ moment(old).isSame(current, 'day')), debounceTime(100))
36
+ ])
37
+ .pipe(skip(1), map(([taxSituation]) => [taxSituation]))
38
+ .subscribe(([taxSituation]) => {
39
+ formGroup
40
+ .get(EnumCampoTributo.PeriodoApuracao)
41
+ .setValue(taxSituation);
42
+ });
43
+ }
44
+ break;
45
+ default:
46
+ throw new Error(`Regra AssessmentPeriodCalculationRule não implementada para o imposto ${taxType}, documento ${document}.`);
47
+ }
48
+ }
49
+ };
50
+ AssessmentPeriodCalculationRule.ɵprov = i0.ɵɵdefineInjectable({ factory: function AssessmentPeriodCalculationRule_Factory() { return new AssessmentPeriodCalculationRule(); }, token: AssessmentPeriodCalculationRule, providedIn: "root" });
51
+ AssessmentPeriodCalculationRule = __decorate([
52
+ Injectable({ providedIn: 'root' })
53
+ ], AssessmentPeriodCalculationRule);
54
+ export { AssessmentPeriodCalculationRule };
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXNzbWVudC1wZXJpb2QtY2FsY3VsYXRpb24tcnVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItZ2VzdGFvLWVtcHJlc2FyaWFsL2VycHgtY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvdHJpYnV0b3MvcnVsZXMvY2FsY3VsYXRpb24vcnVsZXMvYXNzZXNzbWVudC1wZXJpb2QtY2FsY3VsYXRpb24tcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sRUFDSCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLEdBQUcsRUFDSCxJQUFJLEVBQ0osU0FBUyxFQUNaLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQUtoRixJQUFhLCtCQUErQixHQUE1QyxNQUFhLCtCQUErQjtJQUN4QyxLQUFLLENBQUMsRUFDRixPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFDckIsS0FBSyxFQUNMLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEVBQ3hCO1FBQ1YsUUFBUSxPQUFPLEVBQUU7WUFDYixLQUFLLGVBQWUsQ0FBQyxVQUFVO2dCQUMzQjtvQkFDSSxNQUFNLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ3JELENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxVQUFVLENBQ3BELENBQUM7b0JBRUYsYUFBYSxDQUFDO3dCQUNWLGtCQUFrQjs2QkFDYixHQUFHLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDOzZCQUNyQyxZQUFZLENBQUMsSUFBSSxDQUNkLFNBQVMsQ0FDTCxrQkFBa0IsQ0FBQyxHQUFHLENBQ2xCLGdCQUFnQixDQUFDLGVBQWUsQ0FDbkMsQ0FBQyxLQUFLLENBQ1YsRUFDRCxvQkFBb0IsQ0FDaEIsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FDYixHQUFHLEtBQUssT0FBTzs0QkFDZixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FDekMsRUFDRCxZQUFZLENBQUMsR0FBRyxDQUFDLENBQ3BCO3FCQUNSLENBQUM7eUJBQ0csSUFBSSxDQUNELElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxHQUFHLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBVSxDQUFDLENBQ25EO3lCQUNBLFNBQVMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRTt3QkFDMUIsU0FBUzs2QkFDSixHQUFHLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDOzZCQUNyQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQ2hDLENBQUMsQ0FBQyxDQUFDO2lCQUNWO2dCQUNELE1BQU07WUFDVixLQUFLLGVBQWUsQ0FBQyxVQUFVO2dCQUMzQjtvQkFDSSxNQUFNLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ3JELENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxVQUFVLENBQ3BELENBQUM7b0JBRUYsYUFBYSxDQUFDO3dCQUNWLGtCQUFrQjs2QkFDYixHQUFHLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDOzZCQUNyQyxZQUFZLENBQUMsSUFBSSxDQUNkLFNBQVMsQ0FDTCxrQkFBa0IsQ0FBQyxHQUFHLENBQ2xCLGdCQUFnQixDQUFDLGVBQWUsQ0FDbkMsQ0FBQyxLQUFLLENBQ1YsRUFDRCxvQkFBb0IsQ0FDaEIsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FDYixHQUFHLEtBQUssT0FBTzs0QkFDZixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FDekMsRUFDRCxZQUFZLENBQUMsR0FBRyxDQUFDLENBQ3BCO3FCQUNSLENBQUM7eUJBQ0csSUFBSSxDQUNELElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxHQUFHLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBVSxDQUFDLENBQ25EO3lCQUNBLFNBQVMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRTt3QkFDMUIsU0FBUzs2QkFDSixHQUFHLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDOzZCQUNyQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQ2hDLENBQUMsQ0FBQyxDQUFDO2lCQUNWO2dCQUNELE1BQU07WUFDVjtnQkFDSSxNQUFNLElBQUksS0FBSyxDQUNYLHlFQUF5RSxPQUFPLGVBQWUsUUFBUSxHQUFHLENBQzdHLENBQUM7U0FDVDtJQUNMLENBQUM7Q0FDSixDQUFBOztBQWpGWSwrQkFBK0I7SUFEM0MsVUFBVSxDQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDO0dBQ3RCLCtCQUErQixDQWlGM0M7U0FqRlksK0JBQStCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICAgIGRlYm91bmNlVGltZSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgICBtYXAsXG4gICAgc2tpcCxcbiAgICBzdGFydFdpdGhcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRW51bUNhbXBvVHJpYnV0bywgRW51bVRpcG9UcmlidXRvIH0gZnJvbSAnLi4vLi4vLi4vZXJwLXRyaWJ1dG9zLnR5cGVzJztcbmltcG9ydCB7IFJ1bGVQYXlsb2FkIH0gZnJvbSAnLi4vLi4vdHlwZXMvcnVsZS1wYXlsb2FkJztcbmltcG9ydCB7IFRheFJ1bGUgfSBmcm9tICcuLi8uLi90eXBlcy90YXgtcnVsZSc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQXNzZXNzbWVudFBlcmlvZENhbGN1bGF0aW9uUnVsZSBpbXBsZW1lbnRzIFRheFJ1bGUge1xuICAgIGFwcGx5KHtcbiAgICAgICAgY29udGV4dDogeyBkb2N1bWVudCB9LFxuICAgICAgICBncm91cCxcbiAgICAgICAgaXRlbTogeyBuYW1lOiB0YXhUeXBlLCBmb3JtR3JvdXAgfVxuICAgIH06IFJ1bGVQYXlsb2FkKTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAodGF4VHlwZSkge1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0FKVVNURTpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZm9ybUdyb3VwOiBpYnNBanVzdGVGb3JtR3JvdXAgfSA9IGdyb3VwLml0ZW0uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gRW51bVRpcG9UcmlidXRvLklCU19BSlVTVEVcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlic0FqdXN0ZUZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoRW51bUNhbXBvVHJpYnV0by5QZXJpb2RvQXB1cmFjYW8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYnNBanVzdGVGb3JtR3JvdXAuZ2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1DYW1wb1RyaWJ1dG8uUGVyaW9kb0FwdXJhY2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9sZCwgY3VycmVudCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQgPT09IGN1cnJlbnQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb21lbnQob2xkKS5pc1NhbWUoY3VycmVudCwgJ2RheScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgxMDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAoKFt0YXhTaXR1YXRpb25dKSA9PiBbdGF4U2l0dWF0aW9uXSBhcyBjb25zdClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKFt0YXhTaXR1YXRpb25dKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoRW51bUNhbXBvVHJpYnV0by5QZXJpb2RvQXB1cmFjYW8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRWYWx1ZSh0YXhTaXR1YXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0FKVVNURTpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZm9ybUdyb3VwOiBjYnNBanVzdGVGb3JtR3JvdXAgfSA9IGdyb3VwLml0ZW0uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gRW51bVRpcG9UcmlidXRvLkNCU19BSlVTVEVcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNic0FqdXN0ZUZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoRW51bUNhbXBvVHJpYnV0by5QZXJpb2RvQXB1cmFjYW8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYnNBanVzdGVGb3JtR3JvdXAuZ2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1DYW1wb1RyaWJ1dG8uUGVyaW9kb0FwdXJhY2FvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9sZCwgY3VycmVudCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQgPT09IGN1cnJlbnQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb21lbnQob2xkKS5pc1NhbWUoY3VycmVudCwgJ2RheScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgxMDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAoKFt0YXhTaXR1YXRpb25dKSA9PiBbdGF4U2l0dWF0aW9uXSBhcyBjb25zdClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKFt0YXhTaXR1YXRpb25dKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoRW51bUNhbXBvVHJpYnV0by5QZXJpb2RvQXB1cmFjYW8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRWYWx1ZSh0YXhTaXR1YXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBSZWdyYSBBc3Nlc3NtZW50UGVyaW9kQ2FsY3VsYXRpb25SdWxlIG7Do28gaW1wbGVtZW50YWRhIHBhcmEgbyBpbXBvc3RvICR7dGF4VHlwZX0sIGRvY3VtZW50byAke2RvY3VtZW50fS5gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -192,6 +192,22 @@ let TaxAmountCalculationRule = class TaxAmountCalculationRule {
192
192
  });
193
193
  }
194
194
  break;
195
+ case EnumTipoTributo.CBS_AJUSTE:
196
+ case EnumTipoTributo.IBS_AJUSTE:
197
+ {
198
+ const { dataKey } = formField.find(({ name }) => name === 'classificacaoTributaria');
199
+ combineLatest([
200
+ formGroup
201
+ .get('classificacaoTributaria')
202
+ .valueChanges.pipe(startWith(formGroup.get('classificacaoTributaria')
203
+ .value), distinctUntilChanged((old, current) => (old === null || old === void 0 ? void 0 : old[dataKey]) === (current === null || current === void 0 ? void 0 : current[dataKey])))
204
+ ])
205
+ .pipe(skip(1), map(() => new BigNumber(formGroup.get('valor').value)), filter((taxAmount) => taxAmount.isNaN()))
206
+ .subscribe(() => {
207
+ formGroup.get('valor').setValue(0);
208
+ });
209
+ }
210
+ break;
195
211
  default:
196
212
  throw new Error(`Regra TaxAmountCalculationRule não implementada para o imposto ${taxType}, documento ${document}.`);
197
213
  }
@@ -205,4 +221,4 @@ TaxAmountCalculationRule = __decorate([
205
221
  Injectable({ providedIn: 'root' })
206
222
  ], TaxAmountCalculationRule);
207
223
  export { TaxAmountCalculationRule };
208
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGF4LWFtb3VudC1jYWxjdWxhdGlvbi1ydWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvci1nZXN0YW8tZW1wcmVzYXJpYWwvZXJweC1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy90cmlidXRvcy9ydWxlcy9jYWxjdWxhdGlvbi9ydWxlcy90YXgtYW1vdW50LWNhbGN1bGF0aW9uLXJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxTQUFTLE1BQU0sY0FBYyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUNILG9CQUFvQixFQUNwQixNQUFNLEVBQ04sR0FBRyxFQUNILElBQUksRUFDSixTQUFTLEVBQ1osTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNqRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0JBQStCLENBQUM7OztBQUs1RSxJQUFhLHdCQUF3QixHQUFyQyxNQUFhLHdCQUF3QjtJQUNqQyxZQUE2QixtQkFBd0M7UUFBeEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtJQUFHLENBQUM7SUFFekUsS0FBSyxDQUFDLEVBQ0YsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQ3JCLEtBQUssRUFDTCxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsRUFDbkM7UUFDVixRQUFRLE9BQU8sRUFBRTtZQUNiLEtBQUssZUFBZSxDQUFDLEdBQUcsQ0FBQztZQUN6QixLQUFLLGVBQWUsQ0FBQyxZQUFZLENBQUM7WUFDbEMsS0FBSyxlQUFlLENBQUMsYUFBYTtnQkFDOUI7b0JB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QUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FDbEQsRUFDRCxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUMzQzt5QkFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO3dCQUNaLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN2QyxDQUFDLENBQUMsQ0FBQztpQkFDVjtnQkFDRCxNQUFNO1lBQ1Y7Z0JBQ0ksTUFBTSxJQUFJLEtBQUssQ0FDWCxrRUFBa0UsT0FBTyxlQUFlLFFBQVEsR0FBRyxDQUN0RyxDQUFDO1NBQ1Q7SUFDTCxDQUFDO0NBQ0osQ0FBQTs7WUEvVXFELG1CQUFtQjs7O0FBRDVELHdCQUF3QjtJQURwQyxVQUFVLENBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUM7R0FDdEIsd0JBQXdCLENBZ1ZwQztTQWhWWSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMb29rdXBGaWVsZCB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgICBmaWx0ZXIsXG4gICAgbWFwLFxuICAgIHNraXAsXG4gICAgc3RhcnRXaXRoXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRheEFtb3VudENhbGN1bGF0b3IgfSBmcm9tICcuLi8uLi8uLi9jYWxjdWxhdG9ycy90YXgtYW1vdW50LWNhbGN1bGF0b3InO1xuaW1wb3J0IHsgRW51bVRpcG9UcmlidXRvIH0gZnJvbSAnLi4vLi4vLi4vZXJwLXRyaWJ1dG9zLnR5cGVzJztcbmltcG9ydCB7IGdldERlZmVycmVkVGF4SXRlbUZyb21Hcm91cCB9IGZyb20gJy4uLy4uLy4uL3RheC1yZWZvcm0tdXRpbGl0aWVzJztcbmltcG9ydCB7IFJ1bGVQYXlsb2FkIH0gZnJvbSAnLi4vLi4vdHlwZXMvcnVsZS1wYXlsb2FkJztcbmltcG9ydCB7IFRheFJ1bGUgfSBmcm9tICcuLi8uLi90eXBlcy90YXgtcnVsZSc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVGF4QW1vdW50Q2FsY3VsYXRpb25SdWxlIGltcGxlbWVudHMgVGF4UnVsZSB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB0YXhBbW91bnRDYWxjdWxhdG9yOiBUYXhBbW91bnRDYWxjdWxhdG9yKSB7fVxuXG4gICAgYXBwbHkoe1xuICAgICAgICBjb250ZXh0OiB7IGRvY3VtZW50IH0sXG4gICAgICAgIGdyb3VwLFxuICAgICAgICBpdGVtOiB7IG5hbWU6IHRheFR5cGUsIGZvcm1Hcm91cCwgZm9ybUZpZWxkIH1cbiAgICB9OiBSdWxlUGF5bG9hZCk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKHRheFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCUzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUw6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGRvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ091dGdvaW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnUHVyY2hhc2UgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnU2FsZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGZvcm1Hcm91cDogZGVmZXJyZWRUYXhGb3JtR3JvdXAgfSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXREZWZlcnJlZFRheEl0ZW1Gcm9tR3JvdXAoeyBncm91cCB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ2Jhc2VDYWxjdWxvJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5nZXQoJ2Jhc2VDYWxjdWxvJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdhbGlxdW90YScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXAuZ2V0KCdhbGlxdW90YScpLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnYWxpcXVvdGFFZmV0aXZhJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5nZXQoJ2FsaXF1b3RhRWZldGl2YScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWRUYXhGb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCd2YWxvcicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZFRheEZvcm1Hcm91cC5nZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXhhYmxlQmFzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRheFJhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZmZlY3RpdmVUYXhSYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWRUYXhUYXhBbW91bnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQmlnTnVtYmVyKHRheGFibGVCYXNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQmlnTnVtYmVyKHRheFJhdGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBCaWdOdW1iZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVmZmVjdGl2ZVRheFJhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBCaWdOdW1iZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkVGF4VGF4QW1vdW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSBhcyBjb25zdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF4YWJsZUJhc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXhSYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWZmZWN0aXZlVGF4UmF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkVGF4VGF4QW1vdW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXhhYmxlQmFzZS5pc05hTigpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF4UmF0ZS5pc05hTigpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRheEFtb3VudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YXhBbW91bnRDYWxjdWxhdG9yLmNhbGN1bGF0ZVRheEFtb3VudFdpdGhEZWZlcnJlZFRheChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF4YWJsZUJhc2U6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF4YWJsZUJhc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXhSYXRlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVmZmVjdGl2ZVRheFJhdGUuaXNOYU4oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRheFJhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBlZmZlY3RpdmVUYXhSYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWRUYXhBbW91bnQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWRUYXhUYXhBbW91bnQuaXNOYU4oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG5ldyBCaWdOdW1iZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZGVmZXJyZWRUYXhUYXhBbW91bnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0YXhBbW91bnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZGVjaW1hbFBsYWNlcygyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50b051bWJlcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YXhBbW91bnQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXhBbW91bnQgIT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXAuZ2V0KCd2YWxvcicpLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgodGF4QW1vdW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ3ZhbG9yJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldFZhbHVlKHRheEFtb3VudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYFJlZ3JhIFRheEFtb3VudENhbGN1bGF0aW9uUnVsZSBuw6NvIGltcGxlbWVudGFkYSBwYXJhIG8gaW1wb3N0byAke3RheFR5cGV9LCBkb2N1bWVudG8gJHtkb2N1bWVudH0uYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlNfRElGRVJJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfRElGRVJJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX0RJRkVSSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0NSRURJVE9fUFJFU1VNSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX1RSSUJVVEFDQU9fUkVHVUxBUjpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9UUklCVVRBQ0FPX1JFR1VMQVI6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX1RSSUJVVEFDQU9fUkVHVUxBUjpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19DUkVESVRPX1BSRVNVTUlETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChkb2N1bWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1B1cmNoYXNlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1NhbGUgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdiYXNlQ2FsY3VsbycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXAuZ2V0KCdiYXNlQ2FsY3VsbycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnYWxpcXVvdGEnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwLmdldCgnYWxpcXVvdGEnKS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbdGF4YWJsZUJhc2UsIHRheFJhdGVdKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBCaWdOdW1iZXIodGF4YWJsZUJhc2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBCaWdOdW1iZXIodGF4UmF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gYXMgY29uc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoW3RheGFibGVCYXNlLCB0YXhSYXRlXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXhhYmxlQmFzZS5pc05hTigpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXhSYXRlLmlzTmFOKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGF4QW1vdW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGF4QW1vdW50Q2FsY3VsYXRvci5jYWxjdWxhdGVUYXhBbW91bnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXhSYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXhhYmxlQmFzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRheEFtb3VudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRlY2ltYWxQbGFjZXMoMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50b051bWJlcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRheEFtb3VudCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRheEFtb3VudCAhPT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5nZXQoJ3ZhbG9yJykudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCh0YXhBbW91bnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgndmFsb3InKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0VmFsdWUodGF4QW1vdW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgUmVncmEgVGF4QW1vdW50Q2FsY3VsYXRpb25SdWxlIG7Do28gaW1wbGVtZW50YWRhIHBhcmEgbyBpbXBvc3RvICR7dGF4VHlwZX0sIGRvY3VtZW50byAke2RvY3VtZW50fS5gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCU19HT1ZFUk5BTUVOVEFMOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMX0dPVkVSTkFNRU5UQUw6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX0dPVkVSTkFNRU5UQUw6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGRvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ091dGdvaW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnUHVyY2hhc2UgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnU2FsZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ2Jhc2VDYWxjdWxvJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5nZXQoJ2Jhc2VDYWxjdWxvJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdhbGlxdW90YScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXAuZ2V0KCdhbGlxdW90YScpLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwKDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt0YXhhYmxlQmFzZSwgdGF4UmF0ZV0pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEJpZ051bWJlcih0YXhhYmxlQmFzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEJpZ051bWJlcih0YXhSYXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSBhcyBjb25zdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKChbdGF4YWJsZUJhc2UsIHRheFJhdGVdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRheGFibGVCYXNlLmlzTmFOKCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRheFJhdGUuaXNOYU4oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXhBbW91bnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YXhBbW91bnRDYWxjdWxhdG9yLmNhbGN1bGF0ZVRheEFtb3VudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRheGFibGVCYXNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXhSYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGF4QW1vdW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZGVjaW1hbFBsYWNlcygyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRvTnVtYmVyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGF4QW1vdW50KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF4QW1vdW50ICE9PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwLmdldCgndmFsb3InKS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHRheEFtb3VudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCd2YWxvcicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRWYWx1ZSh0YXhBbW91bnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBSZWdyYSBUYXhBbW91bnRDYWxjdWxhdGlvblJ1bGUgbsOjbyBpbXBsZW1lbnRhZGEgcGFyYSBvIGltcG9zdG8gJHt0YXhUeXBlfSwgZG9jdW1lbnRvICR7ZG9jdW1lbnR9LmBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0VTVE9STk9fQ1JFRElUTzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RPUk5PX0NSRURJVE86XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGRhdGFLZXkgfSA9IGZvcm1GaWVsZC5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgbmFtZSB9KSA9PiBuYW1lID09PSAnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnXG4gICAgICAgICAgICAgICAgICAgICkgYXMgTG9va3VwRmllbGQ7XG5cbiAgICAgICAgICAgICAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXAuZ2V0KCdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9sZCwgY3VycmVudCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQ/LltkYXRhS2V5XSA9PT0gY3VycmVudD8uW2RhdGFLZXldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwKDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBCaWdOdW1iZXIoZm9ybUdyb3VwLmdldCgndmFsb3InKS52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcigodGF4QW1vdW50KSA9PiB0YXhBbW91bnQuaXNOYU4oKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5nZXQoJ3ZhbG9yJykuc2V0VmFsdWUoMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgYFJlZ3JhIFRheEFtb3VudENhbGN1bGF0aW9uUnVsZSBuw6NvIGltcGxlbWVudGFkYSBwYXJhIG8gaW1wb3N0byAke3RheFR5cGV9LCBkb2N1bWVudG8gJHtkb2N1bWVudH0uYFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGF4LWFtb3VudC1jYWxjdWxhdGlvbi1ydWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvci1nZXN0YW8tZW1wcmVzYXJpYWwvZXJweC1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy90cmlidXRvcy9ydWxlcy9jYWxjdWxhdGlvbi9ydWxlcy90YXgtYW1vdW50LWNhbGN1bGF0aW9uLXJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxTQUFTLE1BQU0sY0FBYyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUNILG9CQUFvQixFQUNwQixNQUFNLEVBQ04sR0FBRyxFQUNILElBQUksRUFDSixTQUFTLEVBQ1osTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNqRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0JBQStCLENBQUM7OztBQUs1RSxJQUFhLHdCQUF3QixHQUFyQyxNQUFhLHdCQUF3QjtJQUNqQyxZQUE2QixtQkFBd0M7UUFBeEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtJQUFHLENBQUM7SUFFekUsS0FBSyxDQUFDLEVBQ0YsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQ3JCLEtBQUssRUFDTCxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsRUFDbkM7UUFDVixRQUFRLE9BQU8sRUFBRTtZQUNiLEtBQUssZUFBZSxDQUFDLEdBQUcsQ0FBQztZQUN6QixLQUFLLGVBQWUsQ0FBQyxZQUFZLENBQUM7WUFDbEMsS0FBSyxlQUFlLENBQUMsYUFBYTtnQkFDOUI7b0JB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LFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUMzQzt5QkFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO3dCQUNaLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN2QyxDQUFDLENBQUMsQ0FBQztpQkFDVjtnQkFDRCxNQUFNO1lBQ1Y7Z0JBQ0ksTUFBTSxJQUFJLEtBQUssQ0FDWCxrRUFBa0UsT0FBTyxlQUFlLFFBQVEsR0FBRyxDQUN0RyxDQUFDO1NBQ1Q7SUFDTCxDQUFDO0NBQ0osQ0FBQTs7WUFqWHFELG1CQUFtQjs7O0FBRDVELHdCQUF3QjtJQURwQyxVQUFVLENBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUM7R0FDdEIsd0JBQXdCLENBa1hwQztTQWxYWSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMb29rdXBGaWVsZCB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgICBmaWx0ZXIsXG4gICAgbWFwLFxuICAgIHNraXAsXG4gICAgc3RhcnRXaXRoXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRheEFtb3VudENhbGN1bGF0b3IgfSBmcm9tICcuLi8uLi8uLi9jYWxjdWxhdG9ycy90YXgtYW1vdW50LWNhbGN1bGF0b3InO1xuaW1wb3J0IHsgRW51bVRpcG9UcmlidXRvIH0gZnJvbSAnLi4vLi4vLi4vZXJwLXRyaWJ1dG9zLnR5cGVzJztcbmltcG9ydCB7IGdldERlZmVycmVkVGF4SXRlbUZyb21Hcm91cCB9IGZyb20gJy4uLy4uLy4uL3RheC1yZWZvcm0tdXRpbGl0aWVzJztcbmltcG9ydCB7IFJ1bGVQYXlsb2FkIH0gZnJvbSAnLi4vLi4vdHlwZXMvcnVsZS1wYXlsb2FkJztcbmltcG9ydCB7IFRheFJ1bGUgfSBmcm9tICcuLi8uLi90eXBlcy90YXgtcnVsZSc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVGF4QW1vdW50Q2FsY3VsYXRpb25SdWxlIGltcGxlbWVudHMgVGF4UnVsZSB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB0YXhBbW91bnRDYWxjdWxhdG9yOiBUYXhBbW91bnRDYWxjdWxhdG9yKSB7fVxuXG4gICAgYXBwbHkoe1xuICAgICAgICBjb250ZXh0OiB7IGRvY3VtZW50IH0sXG4gICAgICAgIGdyb3VwLFxuICAgICAgICBpdGVtOiB7IG5hbWU6IHRheFR5cGUsIGZvcm1Hcm91cCwgZm9ybUZpZWxkIH1cbiAgICB9OiBSdWxlUGF5bG9hZCk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKHRheFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCUzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTDpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUw6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGRvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ091dGdvaW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnUHVyY2hhc2UgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnU2FsZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGZvcm1Hcm91cDogZGVmZXJyZWRUYXhGb3JtR3JvdXAgfSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXREZWZlcnJlZFRheEl0ZW1Gcm9tR3JvdXAoeyBncm91cCB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ2Jhc2VDYWxjdWxvJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5nZXQoJ2Jhc2VDYWxjdWxvJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdhbGlxdW90YScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXAuZ2V0KCdhbGlxdW90YScpLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnYWxpcXVvdGFFZmV0aXZhJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5nZXQoJ2FsaXF1b3RhRWZldGl2YScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWRUYXhGb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCd2YWxvcicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZFRheEZvcm1Hcm91cC5nZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXhhYmxlQmFzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRheFJhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZmZlY3RpdmVUYXhSYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWRUYXhUYXhBbW91bnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQmlnTnVtYmVyKHRheGFibGVCYXNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQmlnTnVtYmVyKHRheFJhdGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBCaWdOdW1iZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVmZmVjdGl2ZVRheFJhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBCaWdOdW1iZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkVGF4VGF4QW1vdW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSBhcyBjb25zdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF4YWJsZUJhc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXhSYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWZmZWN0aXZlVGF4UmF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkVGF4VGF4QW1vdW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXhhYmxlQmFzZS5pc05hTigpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF4UmF0ZS5pc05hTigpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRheEFtb3VudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YXhBbW91bnRDYWxjdWxhdG9yLmNhbGN1bGF0ZVRheEFtb3VudFdpdGhEZWZlcnJlZFRheChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF4YWJsZUJhc2U6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF4YWJsZUJhc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXhSYXRlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVmZmVjdGl2ZVRheFJhdGUuaXNOYU4oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRheFJhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBlZmZlY3RpdmVUYXhSYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWRUYXhBbW91bnQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWRUYXhUYXhBbW91bnQuaXNOYU4oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG5ldyBCaWdOdW1iZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZGVmZXJyZWRUYXhUYXhBbW91bnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0YXhBbW91bnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZGVjaW1hbFBsYWNlcygyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50b051bWJlcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YXhBbW91bnQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXhBbW91bnQgIT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXAuZ2V0KCd2YWxvcicpLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgodGF4QW1vdW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ3ZhbG9yJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldFZhbHVlKHRheEFtb3VudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYFJlZ3JhIFRheEFtb3VudENhbGN1bGF0aW9uUnVsZSBuw6NvIGltcGxlbWVudGFkYSBwYXJhIG8gaW1wb3N0byAke3RheFR5cGV9LCBkb2N1bWVudG8gJHtkb2N1bWVudH0uYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlNfRElGRVJJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfRVNUQURVQUxfRElGRVJJRE86XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX0RJRkVSSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0NSRURJVE9fUFJFU1VNSURPOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX1RSSUJVVEFDQU9fUkVHVUxBUjpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RBRFVBTF9UUklCVVRBQ0FPX1JFR1VMQVI6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX1RSSUJVVEFDQU9fUkVHVUxBUjpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19DUkVESVRPX1BSRVNVTUlETzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChkb2N1bWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1B1cmNoYXNlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1NhbGUgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdiYXNlQ2FsY3VsbycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXAuZ2V0KCdiYXNlQ2FsY3VsbycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnYWxpcXVvdGEnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwLmdldCgnYWxpcXVvdGEnKS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbdGF4YWJsZUJhc2UsIHRheFJhdGVdKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBCaWdOdW1iZXIodGF4YWJsZUJhc2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBCaWdOdW1iZXIodGF4UmF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gYXMgY29uc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoW3RheGFibGVCYXNlLCB0YXhSYXRlXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXhhYmxlQmFzZS5pc05hTigpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXhSYXRlLmlzTmFOKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGF4QW1vdW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGF4QW1vdW50Q2FsY3VsYXRvci5jYWxjdWxhdGVUYXhBbW91bnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXhSYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXhhYmxlQmFzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRheEFtb3VudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRlY2ltYWxQbGFjZXMoMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50b051bWJlcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRheEFtb3VudCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRheEFtb3VudCAhPT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5nZXQoJ3ZhbG9yJykudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCh0YXhBbW91bnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgndmFsb3InKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0VmFsdWUodGF4QW1vdW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgUmVncmEgVGF4QW1vdW50Q2FsY3VsYXRpb25SdWxlIG7Do28gaW1wbGVtZW50YWRhIHBhcmEgbyBpbXBvc3RvICR7dGF4VHlwZX0sIGRvY3VtZW50byAke2RvY3VtZW50fS5gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCU19HT1ZFUk5BTUVOVEFMOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMX0dPVkVSTkFNRU5UQUw6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX0dPVkVSTkFNRU5UQUw6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGRvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdJbmNvbWluZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ091dGdvaW5nIEludm9pY2UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnUHVyY2hhc2UgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnU2FsZSBPcmRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ2Jhc2VDYWxjdWxvJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5nZXQoJ2Jhc2VDYWxjdWxvJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdhbGlxdW90YScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXAuZ2V0KCdhbGlxdW90YScpLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwKDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt0YXhhYmxlQmFzZSwgdGF4UmF0ZV0pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEJpZ051bWJlcih0YXhhYmxlQmFzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEJpZ051bWJlcih0YXhSYXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSBhcyBjb25zdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKChbdGF4YWJsZUJhc2UsIHRheFJhdGVdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRheGFibGVCYXNlLmlzTmFOKCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRheFJhdGUuaXNOYU4oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXhBbW91bnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YXhBbW91bnRDYWxjdWxhdG9yLmNhbGN1bGF0ZVRheEFtb3VudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRheGFibGVCYXNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXhSYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGF4QW1vdW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZGVjaW1hbFBsYWNlcygyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRvTnVtYmVyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGF4QW1vdW50KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGF4QW1vdW50ICE9PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwLmdldCgndmFsb3InKS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHRheEFtb3VudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCd2YWxvcicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRWYWx1ZSh0YXhBbW91bnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBSZWdyYSBUYXhBbW91bnRDYWxjdWxhdGlvblJ1bGUgbsOjbyBpbXBsZW1lbnRhZGEgcGFyYSBvIGltcG9zdG8gJHt0YXhUeXBlfSwgZG9jdW1lbnRvICR7ZG9jdW1lbnR9LmBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0VTVE9STk9fQ1JFRElUTzpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RPUk5PX0NSRURJVE86XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGRhdGFLZXkgfSA9IGZvcm1GaWVsZC5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgbmFtZSB9KSA9PiBuYW1lID09PSAnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnXG4gICAgICAgICAgICAgICAgICAgICkgYXMgTG9va3VwRmllbGQ7XG5cbiAgICAgICAgICAgICAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXAuZ2V0KCdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9sZCwgY3VycmVudCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQ/LltkYXRhS2V5XSA9PT0gY3VycmVudD8uW2RhdGFLZXldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwKDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBCaWdOdW1iZXIoZm9ybUdyb3VwLmdldCgndmFsb3InKS52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcigodGF4QW1vdW50KSA9PiB0YXhBbW91bnQuaXNOYU4oKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5nZXQoJ3ZhbG9yJykuc2V0VmFsdWUoMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlNfQUpVU1RFOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0FKVVNURTpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGF0YUtleSB9ID0gZm9ybUZpZWxkLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBuYW1lIH0pID0+IG5hbWUgPT09ICdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYSdcbiAgICAgICAgICAgICAgICAgICAgKSBhcyBMb29rdXBGaWVsZDtcblxuICAgICAgICAgICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5nZXQoJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2xkLCBjdXJyZW50KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZD8uW2RhdGFLZXldID09PSBjdXJyZW50Py5bZGF0YUtleV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEJpZ051bWJlcihmb3JtR3JvdXAuZ2V0KCd2YWxvcicpLnZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyKCh0YXhBbW91bnQpID0+IHRheEFtb3VudC5pc05hTigpKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwLmdldCgndmFsb3InKS5zZXRWYWx1ZSgwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICBgUmVncmEgVGF4QW1vdW50Q2FsY3VsYXRpb25SdWxlIG7Do28gaW1wbGVtZW50YWRhIHBhcmEgbyBpbXBvc3RvICR7dGF4VHlwZX0sIGRvY3VtZW50byAke2RvY3VtZW50fS5gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -77,6 +77,40 @@ let TaxClassificationCalculationRule = class TaxClassificationCalculationRule {
77
77
  });
78
78
  }
79
79
  break;
80
+ case EnumTipoTributo.CBS_AJUSTE:
81
+ {
82
+ const { formGroup: ibsAjusteFormGroup, formField: ibsAjusteFormField } = group.item.find(({ name }) => name === EnumTipoTributo.IBS_AJUSTE);
83
+ const { dataKey } = ibsAjusteFormField.find(({ name }) => name === 'classificacaoTributaria');
84
+ combineLatest([
85
+ ibsAjusteFormGroup
86
+ .get('classificacaoTributaria')
87
+ .valueChanges.pipe(startWith(ibsAjusteFormGroup.get('classificacaoTributaria').value), distinctUntilChanged((old, current) => (old === null || old === void 0 ? void 0 : old[dataKey]) === (current === null || current === void 0 ? void 0 : current[dataKey])))
88
+ ])
89
+ .pipe(skip(1), map(([taxClassification]) => [taxClassification]))
90
+ .subscribe(([taxClassification]) => {
91
+ formGroup
92
+ .get('classificacaoTributaria')
93
+ .setValue(taxClassification);
94
+ });
95
+ }
96
+ break;
97
+ case EnumTipoTributo.IBS_AJUSTE:
98
+ {
99
+ const { formGroup: cbsAjusteFormGroup, formField: cbsAjusteFormField } = group.item.find(({ name }) => name === EnumTipoTributo.CBS_AJUSTE);
100
+ const { dataKey } = cbsAjusteFormField.find(({ name }) => name === 'classificacaoTributaria');
101
+ combineLatest([
102
+ cbsAjusteFormGroup
103
+ .get('classificacaoTributaria')
104
+ .valueChanges.pipe(startWith(cbsAjusteFormGroup.get('classificacaoTributaria').value), distinctUntilChanged((old, current) => (old === null || old === void 0 ? void 0 : old[dataKey]) === (current === null || current === void 0 ? void 0 : current[dataKey])))
105
+ ])
106
+ .pipe(skip(1), map(([taxClassification]) => [taxClassification]))
107
+ .subscribe(([taxClassification]) => {
108
+ formGroup
109
+ .get('classificacaoTributaria')
110
+ .setValue(taxClassification);
111
+ });
112
+ }
113
+ break;
80
114
  default:
81
115
  throw new Error(`Regra TaxClassificationCalculationRule não implementada para o imposto ${taxType}, documento ${document}.`);
82
116
  }
@@ -87,4 +121,4 @@ TaxClassificationCalculationRule = __decorate([
87
121
  Injectable({ providedIn: 'root' })
88
122
  ], TaxClassificationCalculationRule);
89
123
  export { TaxClassificationCalculationRule };
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGF4LWNsYXNzaWZpY2F0aW9uLWNhbGN1bGF0aW9uLXJ1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1lbXByZXNhcmlhbC9lcnB4LWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3RyaWJ1dG9zL3J1bGVzL2NhbGN1bGF0aW9uL3J1bGVzL3RheC1jbGFzc2lmaWNhdGlvbi1jYWxjdWxhdGlvbi1ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQUs5RCxJQUFhLGdDQUFnQyxHQUE3QyxNQUFhLGdDQUFnQztJQUN6QyxnQkFBZSxDQUFDO0lBRWhCLEtBQUssQ0FBQyxFQUNGLE9BQU8sRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUNyQixLQUFLLEVBQ0wsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEVBQ25DO1FBQ1YsUUFBUSxPQUFPLEVBQUU7WUFDYixLQUFLLGVBQWUsQ0FBQyxHQUFHLENBQUM7WUFDekIsS0FBSyxlQUFlLENBQUMsc0JBQXNCLENBQUM7WUFDNUMsS0FBSyxlQUFlLENBQUMsWUFBWSxDQUFDO1lBQ2xDLEtBQUssZUFBZSxDQUFDLCtCQUErQixDQUFDO1lBQ3JELEtBQUssZUFBZSxDQUFDLGFBQWEsQ0FBQztZQUNuQyxLQUFLLGVBQWUsQ0FBQyxnQ0FBZ0MsQ0FBQztZQUN0RCxLQUFLLGVBQWUsQ0FBQyxFQUFFO2dCQUNuQjtvQkFDSSxRQUFRLFFBQVEsRUFBRTt3QkFDZCxLQUFLLGtC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Q0FDWCwwRUFBMEUsT0FBTyxlQUFlLFFBQVEsR0FBRyxDQUM5RyxDQUFDO1NBQ1Q7SUFDTCxDQUFDO0NBQ0osQ0FBQTs7QUE1SlksZ0NBQWdDO0lBRDVDLFVBQVUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQztHQUN0QixnQ0FBZ0MsQ0E0SjVDO1NBNUpZLGdDQUFnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvb2t1cEZpZWxkIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBza2lwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFbnVtVGlwb1RyaWJ1dG8gfSBmcm9tICcuLi8uLi8uLi9lcnAtdHJpYnV0b3MudHlwZXMnO1xuaW1wb3J0IHsgUnVsZVBheWxvYWQgfSBmcm9tICcuLi8uLi90eXBlcy9ydWxlLXBheWxvYWQnO1xuaW1wb3J0IHsgVGF4UnVsZSB9IGZyb20gJy4uLy4uL3R5cGVzL3RheC1ydWxlJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBUYXhDbGFzc2lmaWNhdGlvbkNhbGN1bGF0aW9uUnVsZSBpbXBsZW1lbnRzIFRheFJ1bGUge1xuICAgIGNvbnN0cnVjdG9yKCkge31cblxuICAgIGFwcGx5KHtcbiAgICAgICAgY29udGV4dDogeyBkb2N1bWVudCB9LFxuICAgICAgICBncm91cCxcbiAgICAgICAgaXRlbTogeyBuYW1lOiB0YXhUeXBlLCBmb3JtR3JvdXAsIGZvcm1GaWVsZCB9XG4gICAgfTogUnVsZVBheWxvYWQpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoICh0YXhUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlM6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlNfVFJJQlVUQUNBT19SRUdVTEFSOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMX1RSSUJVVEFDQU9fUkVHVUxBUjpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUw6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX1RSSUJVVEFDQU9fUkVHVUxBUjpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChkb2N1bWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1B1cmNoYXNlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1NhbGUgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBkYXRhS2V5IH0gPSBmb3JtRmllbGQuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5uYW1lID09PSAnc2l0dWFjYW9UcmlidXRhcmlhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIExvb2t1cEZpZWxkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnc2l0dWFjYW9UcmlidXRhcmlhJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5nZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpdHVhY2FvVHJpYnV0YXJpYSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2xkLCBjdXJyZW50KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZD8uW2RhdGFLZXldID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQ/LltkYXRhS2V5XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAoKCkgPT4gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHRheENsYXNzaWZpY2F0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldFZhbHVlKHRheENsYXNzaWZpY2F0aW9uLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBSZWdyYSBUYXhDbGFzc2lmaWNhdGlvbkNhbGN1bGF0aW9uUnVsZSBuw6NvIGltcGxlbWVudGFkYSBwYXJhIG8gaW1wb3N0byAke3RheFR5cGV9LCBkb2N1bWVudG8gJHtkb2N1bWVudH0uYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlNfRVNUT1JOT19DUkVESVRPOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwOiBpYnNFc3Rvcm5vQ3JlZGl0b0Zvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1GaWVsZDogaWJzRXN0b3Jub0NyZWRpdG9Gb3JtRmllbGRcbiAgICAgICAgICAgICAgICAgICAgfSA9IGdyb3VwLml0ZW0uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICh7IG5hbWUgfSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID09PSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVE9STk9fQ1JFRElUT1xuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGF0YUtleSB9ID0gaWJzRXN0b3Jub0NyZWRpdG9Gb3JtRmllbGQuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJ1xuICAgICAgICAgICAgICAgICAgICApIGFzIExvb2t1cEZpZWxkO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgICAgICAgICAgICAgaWJzRXN0b3Jub0NyZWRpdG9Gb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYnNFc3Rvcm5vQ3JlZGl0b0Zvcm1Hcm91cC5nZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbGQsIGN1cnJlbnQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkPy5bZGF0YUtleV0gPT09IGN1cnJlbnQ/LltkYXRhS2V5XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbdGF4Q2xhc3NpZmljYXRpb25dKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RheENsYXNzaWZpY2F0aW9uXSBhcyBjb25zdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKFt0YXhDbGFzc2lmaWNhdGlvbl0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0VmFsdWUodGF4Q2xhc3NpZmljYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVE9STk9fQ1JFRElUTzpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cDogY2JzRXN0b3Jub0NyZWRpdG9Gb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRmllbGQ6IGNic0VzdG9ybm9DcmVkaXRvRm9ybUZpZWxkXG4gICAgICAgICAgICAgICAgICAgIH0gPSBncm91cC5pdGVtLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBuYW1lIH0pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9PT0gRW51bVRpcG9UcmlidXRvLkNCU19FU1RPUk5PX0NSRURJVE9cbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGRhdGFLZXkgfSA9IGNic0VzdG9ybm9DcmVkaXRvRm9ybUZpZWxkLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBuYW1lIH0pID0+IG5hbWUgPT09ICdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYSdcbiAgICAgICAgICAgICAgICAgICAgKSBhcyBMb29rdXBGaWVsZDtcblxuICAgICAgICAgICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNic0VzdG9ybm9DcmVkaXRvRm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2JzRXN0b3Jub0NyZWRpdG9Gb3JtR3JvdXAuZ2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2xkLCBjdXJyZW50KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZD8uW2RhdGFLZXldID09PSBjdXJyZW50Py5bZGF0YUtleV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3RheENsYXNzaWZpY2F0aW9uXSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YXhDbGFzc2lmaWNhdGlvbl0gYXMgY29uc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChbdGF4Q2xhc3NpZmljYXRpb25dKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldFZhbHVlKHRheENsYXNzaWZpY2F0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICBgUmVncmEgVGF4Q2xhc3NpZmljYXRpb25DYWxjdWxhdGlvblJ1bGUgbsOjbyBpbXBsZW1lbnRhZGEgcGFyYSBvIGltcG9zdG8gJHt0YXhUeXBlfSwgZG9jdW1lbnRvICR7ZG9jdW1lbnR9LmBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGF4LWNsYXNzaWZpY2F0aW9uLWNhbGN1bGF0aW9uLXJ1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1lbXByZXNhcmlhbC9lcnB4LWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3RyaWJ1dG9zL3J1bGVzL2NhbGN1bGF0aW9uL3J1bGVzL3RheC1jbGFzc2lmaWNhdGlvbi1jYWxjdWxhdGlvbi1ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQUs5RCxJQUFhLGdDQUFnQyxHQUE3QyxNQUFhLGdDQUFnQztJQUN6QyxnQkFBZSxDQUFDO0lBRWhCLEtBQUssQ0FBQyxFQUNGLE9BQU8sRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUNyQixLQUFLLEVBQ0wsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEVBQ25DO1FBQ1YsUUFBUSxPQUFPLEVBQUU7WUFDYixLQUFLLGVBQWUsQ0FBQyxHQUFHLENBQUM7WUFDekIsS0FBSyxlQUFlLENBQUMsc0JBQXNCLENBQUM7WUFDNUMsS0FBSyxlQUFlLENBQUMsWUFBWSxDQUFDO1lBQ2xDLEtBQUssZUFBZSxDQUFDLCtCQUErQixDQUFDO1lBQ3JELEtBQUssZUFBZSxDQUFDLGFBQWEsQ0FBQztZQUNuQyxLQUFLLGVBQWUsQ0FBQyxnQ0FBZ0MsQ0FBQztZQUN0RCxLQUFLLGVBQWUsQ0FBQyxFQUFFO2dCQUNuQjtvQkFDSSxRQUFRLFFBQVEsRUFBRTt3QkFDZCxLQUFLLGtCQUFrQixDQUFDO3dCQUN4QixLQUFLLGtCQUFrQixDQUFDO3dCQUN4QixLQUFLLGdCQUFnQixDQUFDO3dCQUN0QixLQUFLLFlBQVk7NEJBQ2I7Z0NBQ0ksTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQzlCLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDTixLQUFLLENBQUMsSUFBSSxLQUFLLG9CQUFvQixDQUMzQixDQUFDO2dDQUVqQixhQUFhLENBQUM7b0NBQ1YsU0FBUzt5Q0FDSixHQUFHLENBQUMsb0JBQW9CLENBQUM7eUNBQ3pCLFlBQVksQ0FBQyxJQUFJLENBQ2QsU0FBUyxDQUNMLFNBQVMsQ0FBQyxHQUFHLENBQ1Qsb0JBQW9CLENBQ3ZCLENBQUMsS0FBSyxDQUNWLEVBQ0Qsb0JBQW9CLENBQ2hCLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQ2IsQ0FBQSxHQUFHLGFBQUgsR0FBRyx1QkFBSCxHQUFHLENBQUcsT0FBTyxRQUNiLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRyxPQUFPLEVBQUMsQ0FDekIsQ0FDSjtpQ0FDUixDQUFDO3FDQUNHLElBQUksQ0FDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUNsQjtxQ0FDQSxTQUFTLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFO29DQUM3QixTQUFTO3lDQUNKLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQzt5Q0FDOUIsUUFBUSxDQUFDLGlCQUFpQixFQUFFO3dDQUN6QixTQUFTLEVBQUUsS0FBSztxQ0FDbkIsQ0FBQyxDQUFDO2dDQUNYLENBQUMsQ0FBQyxDQUFDOzZCQUNWOzRCQUNELE1BQU07d0JBQ1Y7NEJBQ0ksTUFBTSxJQUFJLEtBQUssQ0FDWCwwRUFBMEUsT0FBTyxlQUFlLFFBQVEsR0FBRyxDQUM5RyxDQUFDO3FCQUNUO2lCQUNKO2dCQUNELE1BQU07WUFDVixLQUFLLGVBQWUsQ0FBQyxtQkFBbUI7Z0JBQ3BDO29CQUNJLE1BQU0sRUFDRixTQUFTLEVBQUUsMEJBQTBCLEVBQ3JDLFNBQVMsRUFBRSwwQkFBMEIsRUFDeEMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDZixDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUNULElBQUksS0FBSyxlQUFlLENBQUMsbUJBQW1CLENBQ25ELENBQUM7b0JBRUYsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLDBCQUEwQixDQUFDLElBQUksQ0FDL0MsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUsseUJBQXlCLENBQ3BDLENBQUM7b0JBRWpCLGFBQWEsQ0FBQzt3QkFDViwwQkFBMEI7NkJBQ3JCLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQzs2QkFDOUIsWUFBWSxDQUFDLElBQUksQ0FDZCxTQUFTLENBQ0wsMEJBQTBCLENBQUMsR0FBRyxDQUMxQix5QkFBeUIsQ0FDNUIsQ0FBQyxLQUFLLENBQ1YsRUFDRCxvQkFBb0IsQ0FDaEIsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FDYixDQUFBLEdBQUcsYUFBSCxHQUFHLHVCQUFILEdBQUcsQ0FBRyxPQUFPLFFBQU0sT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFHLE9BQU8sRUFBQyxDQUM1QyxDQUNKO3FCQUNSLENBQUM7eUJBQ0csSUFBSSxDQUNELElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxHQUFHLENBQ0MsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxDQUNwQixDQUFDLGlCQUFpQixDQUFVLENBQ25DLENBQ0o7eUJBQ0EsU0FBUyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUU7d0JBQy9CLFNBQVM7NkJBQ0osR0FBRyxDQUFDLHlCQUF5QixDQUFDOzZCQUM5QixRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQztvQkFDckMsQ0FBQyxDQUFDLENBQUM7aUJBQ1Y7Z0JBQ0QsTUFBTTtZQUNWLEtBQUssZUFBZSxDQUFDLG1CQUFtQjtnQkFDcEM7b0JBQ0ksTUFBTSxFQUNGLFNBQVMsRUFBRSwwQkFBMEIsRUFDckMsU0FBUyxFQUFFLDBCQUEwQixFQUN4QyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNmLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQ1QsSUFBSSxLQUFLLGVBQWUsQ0FBQyxtQkFBbUIsQ0FDbkQsQ0FBQztvQkFFRixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsMEJBQTBCLENBQUMsSUFBSSxDQUMvQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyx5QkFBeUIsQ0FDcEMsQ0FBQztvQkFFakIsYUFBYSxDQUFDO3dCQUNWLDBCQUEwQjs2QkFDckIsR0FBRyxDQUFDLHlCQUF5QixDQUFDOzZCQUM5QixZQUFZLENBQUMsSUFBSSxDQUNkLFNBQVMsQ0FDTCwwQkFBMEIsQ0FBQyxHQUFHLENBQzFCLHlCQUF5QixDQUM1QixDQUFDLEtBQUssQ0FDVixFQUNELG9CQUFvQixDQUNoQixDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUNiLENBQUEsR0FBRyxhQUFILEdBQUcsdUJBQUgsR0FBRyxDQUFHLE9BQU8sUUFBTSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUcsT0FBTyxFQUFDLENBQzVDLENBQ0o7cUJBQ1IsQ0FBQzt5QkFDRyxJQUFJLENBQ0QsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLEdBQUcsQ0FDQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLENBQ3BCLENBQUMsaUJBQWlCLENBQVUsQ0FDbkMsQ0FDSjt5QkFDQSxTQUFTLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRTt3QkFDL0IsU0FBUzs2QkFDSixHQUFHLENBQUMseUJBQXlCLENBQUM7NkJBQzlCLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO29CQUNyQyxDQUFDLENBQUMsQ0FBQztpQkFDVjtnQkFDRCxNQUFNO1lBQ1YsS0FBSyxlQUFlLENBQUMsVUFBVTtnQkFDM0I7b0JBQ0ksTUFBTSxFQUNGLFNBQVMsRUFBRSxrQkFBa0IsRUFDN0IsU0FBUyxFQUFFLGtCQUFrQixFQUNoQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNmLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxVQUFVLENBQ3BELENBQUM7b0JBRUYsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FDdkMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUsseUJBQXlCLENBQ3BDLENBQUM7b0JBRWpCLGFBQWEsQ0FBQzt3QkFDVixrQkFBa0I7NkJBQ2IsR0FBRyxDQUFDLHlCQUF5QixDQUFDOzZCQUM5QixZQUFZLENBQUMsSUFBSSxDQUNkLFNBQVMsQ0FDTCxrQkFBa0IsQ0FBQyxHQUFHLENBQ2xCLHlCQUF5QixDQUM1QixDQUFDLEtBQUssQ0FDVixFQUNELG9CQUFvQixDQUNoQixDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUNiLENBQUEsR0FBRyxhQUFILEdBQUcsdUJBQUgsR0FBRyxDQUFHLE9BQU8sUUFBTSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUcsT0FBTyxFQUFDLENBQzVDLENBQ0o7cUJBQ1IsQ0FBQzt5QkFDRyxJQUFJLENBQ0QsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLEdBQUcsQ0FDQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLENBQ3BCLENBQUMsaUJBQWlCLENBQVUsQ0FDbkMsQ0FDSjt5QkFDQSxTQUFTLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRTt3QkFDL0IsU0FBUzs2QkFDSixHQUFHLENBQUMseUJBQXlCLENBQUM7NkJBQzlCLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO29CQUNyQyxDQUFDLENBQUMsQ0FBQztpQkFDVjtnQkFDRCxNQUFNO1lBQ1YsS0FBSyxlQUFlLENBQUMsVUFBVTtnQkFDM0I7b0JBQ0ksTUFBTSxFQUNGLFNBQVMsRUFBRSxrQkFBa0IsRUFDN0IsU0FBUyxFQUFFLGtCQUFrQixFQUNoQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNmLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxVQUFVLENBQ3BELENBQUM7b0JBRUYsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FDdkMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUsseUJBQXlCLENBQ3BDLENBQUM7b0JBRWpCLGFBQWEsQ0FBQzt3QkFDVixrQkFBa0I7NkJBQ2IsR0FBRyxDQUFDLHlCQUF5QixDQUFDOzZCQUM5QixZQUFZLENBQUMsSUFBSSxDQUNkLFNBQVMsQ0FDTCxrQkFBa0IsQ0FBQyxHQUFHLENBQ2xCLHlCQUF5QixDQUM1QixDQUFDLEtBQUssQ0FDVixFQUNELG9CQUFvQixDQUNoQixDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUNiLENBQUEsR0FBRyxhQUFILEdBQUcsdUJBQUgsR0FBRyxDQUFHLE9BQU8sUUFBTSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUcsT0FBTyxFQUFDLENBQzVDLENBQ0o7cUJBQ1IsQ0FBQzt5QkFDRyxJQUFJLENBQ0QsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLEdBQUcsQ0FDQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLENBQ3BCLENBQUMsaUJBQWlCLENBQVUsQ0FDbkMsQ0FDSjt5QkFDQSxTQUFTLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRTt3QkFDL0IsU0FBUzs2QkFDSixHQUFHLENBQUMseUJBQXlCLENBQUM7NkJBQzlCLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO29CQUNyQyxDQUFDLENBQUMsQ0FBQztpQkFDVjtnQkFDRCxNQUFNO1lBQ1Y7Z0JBQ0ksTUFBTSxJQUFJLEtBQUssQ0FDWCwwRUFBMEUsT0FBTyxlQUFlLFFBQVEsR0FBRyxDQUM5RyxDQUFDO1NBQ1Q7SUFDTCxDQUFDO0NBQ0osQ0FBQTs7QUFoUFksZ0NBQWdDO0lBRDVDLFVBQVUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQztHQUN0QixnQ0FBZ0MsQ0FnUDVDO1NBaFBZLGdDQUFnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvb2t1cEZpZWxkIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBza2lwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFbnVtVGlwb1RyaWJ1dG8gfSBmcm9tICcuLi8uLi8uLi9lcnAtdHJpYnV0b3MudHlwZXMnO1xuaW1wb3J0IHsgUnVsZVBheWxvYWQgfSBmcm9tICcuLi8uLi90eXBlcy9ydWxlLXBheWxvYWQnO1xuaW1wb3J0IHsgVGF4UnVsZSB9IGZyb20gJy4uLy4uL3R5cGVzL3RheC1ydWxlJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBUYXhDbGFzc2lmaWNhdGlvbkNhbGN1bGF0aW9uUnVsZSBpbXBsZW1lbnRzIFRheFJ1bGUge1xuICAgIGNvbnN0cnVjdG9yKCkge31cblxuICAgIGFwcGx5KHtcbiAgICAgICAgY29udGV4dDogeyBkb2N1bWVudCB9LFxuICAgICAgICBncm91cCxcbiAgICAgICAgaXRlbTogeyBuYW1lOiB0YXhUeXBlLCBmb3JtR3JvdXAsIGZvcm1GaWVsZCB9XG4gICAgfTogUnVsZVBheWxvYWQpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoICh0YXhUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlM6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlNfVFJJQlVUQUNBT19SRUdVTEFSOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMOlxuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVEFEVUFMX1RSSUJVVEFDQU9fUkVHVUxBUjpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19NVU5JQ0lQQUw6XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfTVVOSUNJUEFMX1RSSUJVVEFDQU9fUkVHVUxBUjpcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklTOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChkb2N1bWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnSW5jb21pbmcgSW52b2ljZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdPdXRnb2luZyBJbnZvaWNlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1B1cmNoYXNlIE9yZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1NhbGUgT3JkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBkYXRhS2V5IH0gPSBmb3JtRmllbGQuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5uYW1lID09PSAnc2l0dWFjYW9UcmlidXRhcmlhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIExvb2t1cEZpZWxkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnc2l0dWFjYW9UcmlidXRhcmlhJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5nZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpdHVhY2FvVHJpYnV0YXJpYSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2xkLCBjdXJyZW50KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZD8uW2RhdGFLZXldID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQ/LltkYXRhS2V5XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAoKCkgPT4gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHRheENsYXNzaWZpY2F0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldFZhbHVlKHRheENsYXNzaWZpY2F0aW9uLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBSZWdyYSBUYXhDbGFzc2lmaWNhdGlvbkNhbGN1bGF0aW9uUnVsZSBuw6NvIGltcGxlbWVudGFkYSBwYXJhIG8gaW1wb3N0byAke3RheFR5cGV9LCBkb2N1bWVudG8gJHtkb2N1bWVudH0uYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlNfRVNUT1JOT19DUkVESVRPOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwOiBpYnNFc3Rvcm5vQ3JlZGl0b0Zvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1GaWVsZDogaWJzRXN0b3Jub0NyZWRpdG9Gb3JtRmllbGRcbiAgICAgICAgICAgICAgICAgICAgfSA9IGdyb3VwLml0ZW0uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICh7IG5hbWUgfSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID09PSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVE9STk9fQ1JFRElUT1xuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGF0YUtleSB9ID0gaWJzRXN0b3Jub0NyZWRpdG9Gb3JtRmllbGQuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJ1xuICAgICAgICAgICAgICAgICAgICApIGFzIExvb2t1cEZpZWxkO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgICAgICAgICAgICAgaWJzRXN0b3Jub0NyZWRpdG9Gb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYnNFc3Rvcm5vQ3JlZGl0b0Zvcm1Hcm91cC5nZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbGQsIGN1cnJlbnQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkPy5bZGF0YUtleV0gPT09IGN1cnJlbnQ/LltkYXRhS2V5XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbdGF4Q2xhc3NpZmljYXRpb25dKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RheENsYXNzaWZpY2F0aW9uXSBhcyBjb25zdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKFt0YXhDbGFzc2lmaWNhdGlvbl0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0VmFsdWUodGF4Q2xhc3NpZmljYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0VTVE9STk9fQ1JFRElUTzpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cDogY2JzRXN0b3Jub0NyZWRpdG9Gb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRmllbGQ6IGNic0VzdG9ybm9DcmVkaXRvRm9ybUZpZWxkXG4gICAgICAgICAgICAgICAgICAgIH0gPSBncm91cC5pdGVtLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBuYW1lIH0pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9PT0gRW51bVRpcG9UcmlidXRvLkNCU19FU1RPUk5PX0NSRURJVE9cbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGRhdGFLZXkgfSA9IGNic0VzdG9ybm9DcmVkaXRvRm9ybUZpZWxkLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBuYW1lIH0pID0+IG5hbWUgPT09ICdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYSdcbiAgICAgICAgICAgICAgICAgICAgKSBhcyBMb29rdXBGaWVsZDtcblxuICAgICAgICAgICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNic0VzdG9ybm9DcmVkaXRvRm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2JzRXN0b3Jub0NyZWRpdG9Gb3JtR3JvdXAuZ2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2xkLCBjdXJyZW50KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZD8uW2RhdGFLZXldID09PSBjdXJyZW50Py5bZGF0YUtleV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoW3RheENsYXNzaWZpY2F0aW9uXSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YXhDbGFzc2lmaWNhdGlvbl0gYXMgY29uc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChbdGF4Q2xhc3NpZmljYXRpb25dKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldFZhbHVlKHRheENsYXNzaWZpY2F0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLkNCU19BSlVTVEU6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXA6IGlic0FqdXN0ZUZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1GaWVsZDogaWJzQWp1c3RlRm9ybUZpZWxkXG4gICAgICAgICAgICAgICAgICAgIH0gPSBncm91cC5pdGVtLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBuYW1lIH0pID0+IG5hbWUgPT09IEVudW1UaXBvVHJpYnV0by5JQlNfQUpVU1RFXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBkYXRhS2V5IH0gPSBpYnNBanVzdGVGb3JtRmllbGQuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJ1xuICAgICAgICAgICAgICAgICAgICApIGFzIExvb2t1cEZpZWxkO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgICAgICAgICAgICAgaWJzQWp1c3RlRm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWJzQWp1c3RlRm9ybUdyb3VwLmdldChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9sZCwgY3VycmVudCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQ/LltkYXRhS2V5XSA9PT0gY3VycmVudD8uW2RhdGFLZXldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwKDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFt0YXhDbGFzc2lmaWNhdGlvbl0pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGF4Q2xhc3NpZmljYXRpb25dIGFzIGNvbnN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoW3RheENsYXNzaWZpY2F0aW9uXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRWYWx1ZSh0YXhDbGFzc2lmaWNhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5JQlNfQUpVU1RFOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwOiBjYnNBanVzdGVGb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRmllbGQ6IGNic0FqdXN0ZUZvcm1GaWVsZFxuICAgICAgICAgICAgICAgICAgICB9ID0gZ3JvdXAuaXRlbS5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgbmFtZSB9KSA9PiBuYW1lID09PSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0FKVVNURVxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGF0YUtleSB9ID0gY2JzQWp1c3RlRm9ybUZpZWxkLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBuYW1lIH0pID0+IG5hbWUgPT09ICdjbGFzc2lmaWNhY2FvVHJpYnV0YXJpYSdcbiAgICAgICAgICAgICAgICAgICAgKSBhcyBMb29rdXBGaWVsZDtcblxuICAgICAgICAgICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNic0FqdXN0ZUZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNic0FqdXN0ZUZvcm1Hcm91cC5nZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzaWZpY2FjYW9UcmlidXRhcmlhJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbGQsIGN1cnJlbnQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkPy5bZGF0YUtleV0gPT09IGN1cnJlbnQ/LltkYXRhS2V5XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbdGF4Q2xhc3NpZmljYXRpb25dKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RheENsYXNzaWZpY2F0aW9uXSBhcyBjb25zdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKFt0YXhDbGFzc2lmaWNhdGlvbl0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnY2xhc3NpZmljYWNhb1RyaWJ1dGFyaWEnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0VmFsdWUodGF4Q2xhc3NpZmljYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBSZWdyYSBUYXhDbGFzc2lmaWNhdGlvbkNhbGN1bGF0aW9uUnVsZSBuw6NvIGltcGxlbWVudGFkYSBwYXJhIG8gaW1wb3N0byAke3RheFR5cGV9LCBkb2N1bWVudG8gJHtkb2N1bWVudH0uYFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -41,6 +41,42 @@ let TaxSituationCalculationRule = class TaxSituationCalculationRule {
41
41
  });
42
42
  }
43
43
  break;
44
+ case EnumTipoTributo.CBS_AJUSTE:
45
+ {
46
+ const { formGroup: ibsAjusteFormGroup, formField: ibsAjusteFormField } = group.item.find(({ name }) => name === EnumTipoTributo.IBS_AJUSTE);
47
+ const { dataKey } = ibsAjusteFormField.find(({ name }) => name === 'situacaoTributaria');
48
+ combineLatest([
49
+ ibsAjusteFormGroup
50
+ .get('situacaoTributaria')
51
+ .valueChanges.pipe(startWith(ibsAjusteFormGroup.get('situacaoTributaria')
52
+ .value), distinctUntilChanged((old, current) => (old === null || old === void 0 ? void 0 : old[dataKey]) === (current === null || current === void 0 ? void 0 : current[dataKey])))
53
+ ])
54
+ .pipe(skip(1), map(([taxSituation]) => [taxSituation]))
55
+ .subscribe(([taxSituation]) => {
56
+ formGroup
57
+ .get('situacaoTributaria')
58
+ .setValue(taxSituation);
59
+ });
60
+ }
61
+ break;
62
+ case EnumTipoTributo.IBS_AJUSTE:
63
+ {
64
+ const { formGroup: cbsAjusteFormGroup, formField: cbsAjusteFormField } = group.item.find(({ name }) => name === EnumTipoTributo.CBS_AJUSTE);
65
+ const { dataKey } = cbsAjusteFormField.find(({ name }) => name === 'situacaoTributaria');
66
+ combineLatest([
67
+ cbsAjusteFormGroup
68
+ .get('situacaoTributaria')
69
+ .valueChanges.pipe(startWith(cbsAjusteFormGroup.get('situacaoTributaria')
70
+ .value), distinctUntilChanged((old, current) => (old === null || old === void 0 ? void 0 : old[dataKey]) === (current === null || current === void 0 ? void 0 : current[dataKey])))
71
+ ])
72
+ .pipe(skip(1), map(([taxSituation]) => [taxSituation]))
73
+ .subscribe(([taxSituation]) => {
74
+ formGroup
75
+ .get('situacaoTributaria')
76
+ .setValue(taxSituation);
77
+ });
78
+ }
79
+ break;
44
80
  default:
45
81
  throw new Error(`Regra TaxSituationCalculationRule não implementada para o imposto ${taxType}, documento ${document}.`);
46
82
  }
@@ -51,4 +87,4 @@ TaxSituationCalculationRule = __decorate([
51
87
  Injectable({ providedIn: 'root' })
52
88
  ], TaxSituationCalculationRule);
53
89
  export { TaxSituationCalculationRule };
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGF4LXNpdHVhdGlvbi1jYWxjdWxhdGlvbi1ydWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvci1nZXN0YW8tZW1wcmVzYXJpYWwvZXJweC1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy90cmlidXRvcy9ydWxlcy9jYWxjdWxhdGlvbi9ydWxlcy90YXgtc2l0dWF0aW9uLWNhbGN1bGF0aW9uLXJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBSzlELElBQWEsMkJBQTJCLEdBQXhDLE1BQWEsMkJBQTJCO0lBQ3BDLEtBQUssQ0FBQyxFQUNGLE9BQU8sRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUNyQixLQUFLLEVBQ0wsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsRUFDeEI7UUFDVixRQUFRLE9BQU8sRUFBRTtZQUNiLEtBQUssZUFBZSxDQUFDLG1CQUFtQjtnQkFDcEM7b0JBQ0ksTUFBTSxFQUNGLFNBQVMsRUFBRSwwQkFBMEIsRUFDckMsU0FBUyxFQUFFLDBCQUEwQixFQUN4QyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNmLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQ1QsSUFBSSxLQUFLLGVBQWUsQ0FBQyxtQkFBbUIsQ0FDbkQsQ0FBQztvQkFFRixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsMEJBQTBCLENBQUMsSUFBSSxDQUMvQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxvQkFBb0IsQ0FDL0IsQ0FBQztvQkFFakIsYUFBYSxDQUFDO3dCQUNWLDBCQUEwQjs2QkFDckIsR0FBRyxDQUFDLG9CQUFvQixDQUFDOzZCQUN6QixZQUFZLENBQUMsSUFBSSxDQUNkLFNBQVMsQ0FDTCwwQkFBMEIsQ0FBQyxHQUFHLENBQzFCLG9CQUFvQixDQUN2QixDQUFDLEtBQUssQ0FDVixFQUNELG9CQUFvQixDQUNoQixDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUNiLENBQUEsR0FBRyxhQUFILEdBQUcsdUJBQUgsR0FBRyxDQUFHLE9BQU8sUUFBTSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUcsT0FBTyxFQUFDLENBQzVDLENBQ0o7cUJBQ1IsQ0FBQzt5QkFDRyxJQUFJLENBQ0QsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFVLENBQUMsQ0FDbkQ7eUJBQ0EsU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFO3dCQUMxQixTQUFTOzZCQUNKLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQzs2QkFDekIsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUNoQyxDQUFDLENBQUMsQ0FBQztpQkFDVjtnQkFDRCxNQUFNO1lBQ1YsS0FBSyxlQUFlLENBQUMsbUJBQW1CO2dCQUNwQztvQkFDSSxNQUFNLEVBQ0YsU0FBUyxFQUFFLDBCQUEwQixFQUNyQyxTQUFTLEVBQUUsMEJBQTBCLEVBQ3hDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ2YsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FDVCxJQUFJLEtBQUssZUFBZSxDQUFDLG1CQUFtQixDQUNuRCxDQUFDO29CQUVGLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRywwQkFBMEIsQ0FBQyxJQUFJLENBQy9DLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLG9CQUFvQixDQUMvQixDQUFDO29CQUVqQixhQUFhLENBQUM7d0JBQ1YsMEJBQTBCOzZCQUNyQixHQUFHLENBQUMsb0JBQW9CLENBQUM7NkJBQ3pCLFlBQVksQ0FBQyxJQUFJLENBQ2QsU0FBUyxDQUNMLDBCQUEwQixDQUFDLEdBQUcsQ0FDMUIsb0JBQW9CLENBQ3ZCLENBQUMsS0FBSyxDQUNWLEVBQ0Qsb0JBQW9CLENBQ2hCLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQ2IsQ0FBQSxHQUFHLGFBQUgsR0FBRyx1QkFBSCxHQUFHLENBQUcsT0FBTyxRQUFNLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRyxPQUFPLEVBQUMsQ0FDNUMsQ0FDSjtxQkFDUixDQUFDO3lCQUNHLElBQUksQ0FDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQVUsQ0FBQyxDQUNuRDt5QkFDQSxTQUFTLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUU7d0JBQzFCLFNBQVM7NkJBQ0osR0FBRyxDQUFDLG9CQUFvQixDQUFDOzZCQUN6QixRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQ2hDLENBQUMsQ0FBQyxDQUFDO2lCQUNWO2dCQUNELE1BQU07WUFDVjtnQkFDSSxNQUFNLElBQUksS0FBSyxDQUNYLHFFQUFxRSxPQUFPLGVBQWUsUUFBUSxHQUFHLENBQ3pHLENBQUM7U0FDVDtJQUNMLENBQUM7Q0FDSixDQUFBOztBQTdGWSwyQkFBMkI7SUFEdkMsVUFBVSxDQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDO0dBQ3RCLDJCQUEyQixDQTZGdkM7U0E3RlksMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9va3VwRmllbGQgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHNraXAsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVudW1UaXBvVHJpYnV0byB9IGZyb20gJy4uLy4uLy4uL2VycC10cmlidXRvcy50eXBlcyc7XG5pbXBvcnQgeyBSdWxlUGF5bG9hZCB9IGZyb20gJy4uLy4uL3R5cGVzL3J1bGUtcGF5bG9hZCc7XG5pbXBvcnQgeyBUYXhSdWxlIH0gZnJvbSAnLi4vLi4vdHlwZXMvdGF4LXJ1bGUnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFRheFNpdHVhdGlvbkNhbGN1bGF0aW9uUnVsZSBpbXBsZW1lbnRzIFRheFJ1bGUge1xuICAgIGFwcGx5KHtcbiAgICAgICAgY29udGV4dDogeyBkb2N1bWVudCB9LFxuICAgICAgICBncm91cCxcbiAgICAgICAgaXRlbTogeyBuYW1lOiB0YXhUeXBlLCBmb3JtR3JvdXAgfVxuICAgIH06IFJ1bGVQYXlsb2FkKTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAodGF4VHlwZSkge1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0VTVE9STk9fQ1JFRElUTzpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cDogaWJzRXN0b3Jub0NyZWRpdG9Gb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRmllbGQ6IGlic0VzdG9ybm9DcmVkaXRvRm9ybUZpZWxkXG4gICAgICAgICAgICAgICAgICAgIH0gPSBncm91cC5pdGVtLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBuYW1lIH0pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9PT0gRW51bVRpcG9UcmlidXRvLklCU19FU1RPUk5PX0NSRURJVE9cbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGRhdGFLZXkgfSA9IGlic0VzdG9ybm9DcmVkaXRvRm9ybUZpZWxkLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBuYW1lIH0pID0+IG5hbWUgPT09ICdzaXR1YWNhb1RyaWJ1dGFyaWEnXG4gICAgICAgICAgICAgICAgICAgICkgYXMgTG9va3VwRmllbGQ7XG5cbiAgICAgICAgICAgICAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgICAgICAgICAgICBpYnNFc3Rvcm5vQ3JlZGl0b0Zvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ3NpdHVhY2FvVHJpYnV0YXJpYScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYnNFc3Rvcm5vQ3JlZGl0b0Zvcm1Hcm91cC5nZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpdHVhY2FvVHJpYnV0YXJpYSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2xkLCBjdXJyZW50KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZD8uW2RhdGFLZXldID09PSBjdXJyZW50Py5bZGF0YUtleV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKChbdGF4U2l0dWF0aW9uXSkgPT4gW3RheFNpdHVhdGlvbl0gYXMgY29uc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChbdGF4U2l0dWF0aW9uXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdzaXR1YWNhb1RyaWJ1dGFyaWEnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0VmFsdWUodGF4U2l0dWF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RPUk5PX0NSRURJVE86XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXA6IGNic0VzdG9ybm9DcmVkaXRvRm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUZpZWxkOiBjYnNFc3Rvcm5vQ3JlZGl0b0Zvcm1GaWVsZFxuICAgICAgICAgICAgICAgICAgICB9ID0gZ3JvdXAuaXRlbS5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgbmFtZSB9KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPT09IEVudW1UaXBvVHJpYnV0by5DQlNfRVNUT1JOT19DUkVESVRPXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBkYXRhS2V5IH0gPSBjYnNFc3Rvcm5vQ3JlZGl0b0Zvcm1GaWVsZC5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgbmFtZSB9KSA9PiBuYW1lID09PSAnc2l0dWFjYW9UcmlidXRhcmlhJ1xuICAgICAgICAgICAgICAgICAgICApIGFzIExvb2t1cEZpZWxkO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgICAgICAgICAgICAgY2JzRXN0b3Jub0NyZWRpdG9Gb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdzaXR1YWNhb1RyaWJ1dGFyaWEnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2JzRXN0b3Jub0NyZWRpdG9Gb3JtR3JvdXAuZ2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaXR1YWNhb1RyaWJ1dGFyaWEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9sZCwgY3VycmVudCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQ/LltkYXRhS2V5XSA9PT0gY3VycmVudD8uW2RhdGFLZXldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwKDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoW3RheFNpdHVhdGlvbl0pID0+IFt0YXhTaXR1YXRpb25dIGFzIGNvbnN0KVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoW3RheFNpdHVhdGlvbl0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnc2l0dWFjYW9UcmlidXRhcmlhJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldFZhbHVlKHRheFNpdHVhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgYFJlZ3JhIFRheFNpdHVhdGlvbkNhbGN1bGF0aW9uUnVsZSBuw6NvIGltcGxlbWVudGFkYSBwYXJhIG8gaW1wb3N0byAke3RheFR5cGV9LCBkb2N1bWVudG8gJHtkb2N1bWVudH0uYFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGF4LXNpdHVhdGlvbi1jYWxjdWxhdGlvbi1ydWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvci1nZXN0YW8tZW1wcmVzYXJpYWwvZXJweC1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy90cmlidXRvcy9ydWxlcy9jYWxjdWxhdGlvbi9ydWxlcy90YXgtc2l0dWF0aW9uLWNhbGN1bGF0aW9uLXJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBSzlELElBQWEsMkJBQTJCLEdBQXhDLE1BQWEsMkJBQTJCO0lBQ3BDLEtBQUssQ0FBQyxFQUNGLE9BQU8sRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUNyQixLQUFLLEVBQ0wsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsRUFDeEI7UUFDVixRQUFRLE9BQU8sRUFBRTtZQUNiLEtBQUssZUFBZSxDQUFDLG1CQUFtQjtnQkFDcEM7b0JBQ0ksTUFBTSxFQUNGLFNBQVMsRUFBRSwwQkFBMEIsRUFDckMsU0FBUyxFQUFFLDBCQUEwQixFQUN4QyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNmLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQ1QsSUFBSSxLQUFLLGVBQWUsQ0FBQyxtQkFBbUIsQ0FDbkQsQ0FBQztvQkFFRixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsMEJBQTBCLENBQUMsSUFBSSxDQUMvQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElB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b0IsQ0FDL0IsQ0FBQztvQkFFakIsYUFBYSxDQUFDO3dCQUNWLGtCQUFrQjs2QkFDYixHQUFHLENBQUMsb0JBQW9CLENBQUM7NkJBQ3pCLFlBQVksQ0FBQyxJQUFJLENBQ2QsU0FBUyxDQUNMLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQzs2QkFDdkMsS0FBSyxDQUNiLEVBQ0Qsb0JBQW9CLENBQ2hCLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQ2IsQ0FBQSxHQUFHLGFBQUgsR0FBRyx1QkFBSCxHQUFHLENBQUcsT0FBTyxRQUFNLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRyxPQUFPLEVBQUMsQ0FDNUMsQ0FDSjtxQkFDUixDQUFDO3lCQUNHLElBQUksQ0FDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQVUsQ0FBQyxDQUNuRDt5QkFDQSxTQUFTLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUU7d0JBQzFCLFNBQVM7NkJBQ0osR0FBRyxDQUFDLG9CQUFvQixDQUFDOzZCQUN6QixRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQ2hDLENBQUMsQ0FBQyxDQUFDO2lCQUNWO2dCQUNELE1BQU07WUFDVjtnQkFDSSxNQUFNLElBQUksS0FBSyxDQUNYLHFFQUFxRSxPQUFPLGVBQWUsUUFBUSxHQUFHLENBQ3pHLENBQUM7U0FDVDtJQUNMLENBQUM7Q0FDSixDQUFBOztBQXpLWSwyQkFBMkI7SUFEdkMsVUFBVSxDQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDO0dBQ3RCLDJCQUEyQixDQXlLdkM7U0F6S1ksMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9va3VwRmllbGQgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHNraXAsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVudW1UaXBvVHJpYnV0byB9IGZyb20gJy4uLy4uLy4uL2VycC10cmlidXRvcy50eXBlcyc7XG5pbXBvcnQgeyBSdWxlUGF5bG9hZCB9IGZyb20gJy4uLy4uL3R5cGVzL3J1bGUtcGF5bG9hZCc7XG5pbXBvcnQgeyBUYXhSdWxlIH0gZnJvbSAnLi4vLi4vdHlwZXMvdGF4LXJ1bGUnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFRheFNpdHVhdGlvbkNhbGN1bGF0aW9uUnVsZSBpbXBsZW1lbnRzIFRheFJ1bGUge1xuICAgIGFwcGx5KHtcbiAgICAgICAgY29udGV4dDogeyBkb2N1bWVudCB9LFxuICAgICAgICBncm91cCxcbiAgICAgICAgaXRlbTogeyBuYW1lOiB0YXhUeXBlLCBmb3JtR3JvdXAgfVxuICAgIH06IFJ1bGVQYXlsb2FkKTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAodGF4VHlwZSkge1xuICAgICAgICAgICAgY2FzZSBFbnVtVGlwb1RyaWJ1dG8uQ0JTX0VTVE9STk9fQ1JFRElUTzpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cDogaWJzRXN0b3Jub0NyZWRpdG9Gb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRmllbGQ6IGlic0VzdG9ybm9DcmVkaXRvRm9ybUZpZWxkXG4gICAgICAgICAgICAgICAgICAgIH0gPSBncm91cC5pdGVtLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBuYW1lIH0pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9PT0gRW51bVRpcG9UcmlidXRvLklCU19FU1RPUk5PX0NSRURJVE9cbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGRhdGFLZXkgfSA9IGlic0VzdG9ybm9DcmVkaXRvRm9ybUZpZWxkLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBuYW1lIH0pID0+IG5hbWUgPT09ICdzaXR1YWNhb1RyaWJ1dGFyaWEnXG4gICAgICAgICAgICAgICAgICAgICkgYXMgTG9va3VwRmllbGQ7XG5cbiAgICAgICAgICAgICAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgICAgICAgICAgICBpYnNFc3Rvcm5vQ3JlZGl0b0Zvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ3NpdHVhY2FvVHJpYnV0YXJpYScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYnNFc3Rvcm5vQ3JlZGl0b0Zvcm1Hcm91cC5nZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpdHVhY2FvVHJpYnV0YXJpYSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2xkLCBjdXJyZW50KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZD8uW2RhdGFLZXldID09PSBjdXJyZW50Py5bZGF0YUtleV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKChbdGF4U2l0dWF0aW9uXSkgPT4gW3RheFNpdHVhdGlvbl0gYXMgY29uc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChbdGF4U2l0dWF0aW9uXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdzaXR1YWNhb1RyaWJ1dGFyaWEnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0VmFsdWUodGF4U2l0dWF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19FU1RPUk5PX0NSRURJVE86XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXA6IGNic0VzdG9ybm9DcmVkaXRvRm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUZpZWxkOiBjYnNFc3Rvcm5vQ3JlZGl0b0Zvcm1GaWVsZFxuICAgICAgICAgICAgICAgICAgICB9ID0gZ3JvdXAuaXRlbS5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgbmFtZSB9KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPT09IEVudW1UaXBvVHJpYnV0by5DQlNfRVNUT1JOT19DUkVESVRPXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBkYXRhS2V5IH0gPSBjYnNFc3Rvcm5vQ3JlZGl0b0Zvcm1GaWVsZC5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgbmFtZSB9KSA9PiBuYW1lID09PSAnc2l0dWFjYW9UcmlidXRhcmlhJ1xuICAgICAgICAgICAgICAgICAgICApIGFzIExvb2t1cEZpZWxkO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgICAgICAgICAgICAgY2JzRXN0b3Jub0NyZWRpdG9Gb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdzaXR1YWNhb1RyaWJ1dGFyaWEnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2JzRXN0b3Jub0NyZWRpdG9Gb3JtR3JvdXAuZ2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaXR1YWNhb1RyaWJ1dGFyaWEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9sZCwgY3VycmVudCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQ/LltkYXRhS2V5XSA9PT0gY3VycmVudD8uW2RhdGFLZXldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwKDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoW3RheFNpdHVhdGlvbl0pID0+IFt0YXhTaXR1YXRpb25dIGFzIGNvbnN0KVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoW3RheFNpdHVhdGlvbl0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgnc2l0dWFjYW9UcmlidXRhcmlhJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldFZhbHVlKHRheFNpdHVhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEVudW1UaXBvVHJpYnV0by5DQlNfQUpVU1RFOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwOiBpYnNBanVzdGVGb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRmllbGQ6IGlic0FqdXN0ZUZvcm1GaWVsZFxuICAgICAgICAgICAgICAgICAgICB9ID0gZ3JvdXAuaXRlbS5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgbmFtZSB9KSA9PiBuYW1lID09PSBFbnVtVGlwb1RyaWJ1dG8uSUJTX0FKVVNURVxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGF0YUtleSB9ID0gaWJzQWp1c3RlRm9ybUZpZWxkLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBuYW1lIH0pID0+IG5hbWUgPT09ICdzaXR1YWNhb1RyaWJ1dGFyaWEnXG4gICAgICAgICAgICAgICAgICAgICkgYXMgTG9va3VwRmllbGQ7XG5cbiAgICAgICAgICAgICAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgICAgICAgICAgICBpYnNBanVzdGVGb3JtR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdzaXR1YWNhb1RyaWJ1dGFyaWEnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWJzQWp1c3RlRm9ybUdyb3VwLmdldCgnc2l0dWFjYW9UcmlidXRhcmlhJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2xkLCBjdXJyZW50KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZD8uW2RhdGFLZXldID09PSBjdXJyZW50Py5bZGF0YUtleV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKChbdGF4U2l0dWF0aW9uXSkgPT4gW3RheFNpdHVhdGlvbl0gYXMgY29uc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChbdGF4U2l0dWF0aW9uXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCdzaXR1YWNhb1RyaWJ1dGFyaWEnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0VmFsdWUodGF4U2l0dWF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRW51bVRpcG9UcmlidXRvLklCU19BSlVTVEU6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXA6IGNic0FqdXN0ZUZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1GaWVsZDogY2JzQWp1c3RlRm9ybUZpZWxkXG4gICAgICAgICAgICAgICAgICAgIH0gPSBncm91cC5pdGVtLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBuYW1lIH0pID0+IG5hbWUgPT09IEVudW1UaXBvVHJpYnV0by5DQlNfQUpVU1RFXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBkYXRhS2V5IH0gPSBjYnNBanVzdGVGb3JtRmllbGQuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gJ3NpdHVhY2FvVHJpYnV0YXJpYSdcbiAgICAgICAgICAgICAgICAgICAgKSBhcyBMb29rdXBGaWVsZDtcblxuICAgICAgICAgICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNic0FqdXN0ZUZvcm1Hcm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ3NpdHVhY2FvVHJpYnV0YXJpYScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYnNBanVzdGVGb3JtR3JvdXAuZ2V0KCdzaXR1YWNhb1RyaWJ1dGFyaWEnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbGQsIGN1cnJlbnQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkPy5bZGF0YUtleV0gPT09IGN1cnJlbnQ/LltkYXRhS2V5XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAoKFt0YXhTaXR1YXRpb25dKSA9PiBbdGF4U2l0dWF0aW9uXSBhcyBjb25zdClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKFt0YXhTaXR1YXRpb25dKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ3NpdHVhY2FvVHJpYnV0YXJpYScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRWYWx1ZSh0YXhTaXR1YXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBSZWdyYSBUYXhTaXR1YXRpb25DYWxjdWxhdGlvblJ1bGUgbsOjbyBpbXBsZW1lbnRhZGEgcGFyYSBvIGltcG9zdG8gJHt0YXhUeXBlfSwgZG9jdW1lbnRvICR7ZG9jdW1lbnR9LmBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19