ng-pli-commons 0.0.1908 → 1.0.1
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.
- package/esm2022/lib/components/backoffice.commons.component.mjs +40 -0
- package/esm2022/lib/components/common.lists.component.mjs +194 -0
- package/{esm2020 → esm2022}/lib/components/configuration-token/configuration-token-subject.service.mjs +23 -23
- package/esm2022/lib/components/configuration-token/configuration-token.component.mjs +665 -0
- package/esm2022/lib/components/configuration-token/guarantee-token/guarantee-token.component.mjs +103 -0
- package/esm2022/lib/components/configuration-token/snapshot-token/snapshot-token.component.mjs +108 -0
- package/esm2022/lib/components/configuration.commons.component.mjs +40 -0
- package/{esm2020 → esm2022}/lib/components/dashboard.commons.component.mjs +84 -84
- package/esm2022/lib/components/dynamic-filter/dynamic-filter.component.mjs +131 -0
- package/esm2022/lib/components/excel-to-json/excel-to-json.component.mjs +54 -0
- package/esm2022/lib/components/frontoffice.commons.component.mjs +86 -0
- package/esm2022/lib/components/pdf-analyzer/pdf-analyzer.component.mjs +162 -0
- package/{esm2020 → esm2022}/lib/components/pdf-config/pdf-config.component.mjs +170 -170
- package/esm2022/lib/components/pdf-generator/pdf-generator.component.mjs +223 -0
- package/esm2022/lib/components/pdf-merge-visualizer/pdf-merge-visualizer.component.mjs +307 -0
- package/esm2022/lib/components/pdf-visualizer/pdf-visualizer.component.mjs +387 -0
- package/esm2022/lib/components/progress-bar/progress-bar.component.mjs +92 -0
- package/esm2022/lib/components/segmentation-tokens/segmentation-tokens.component.mjs +199 -0
- package/esm2022/lib/components/select-ppp/select-ppp.component.mjs +199 -0
- package/esm2022/lib/components/show-hide-columns/show-hide-columns-table.component.mjs +116 -0
- package/esm2022/lib/components/token/token.component.mjs +1006 -0
- package/esm2022/lib/components/tokens-calculator/tokens-calculator.component.mjs +128 -0
- package/{esm2020 → esm2022}/lib/directives/currency-colfuturo-formatter.directive.mjs +47 -47
- package/{esm2020 → esm2022}/lib/directives/currency-decimal-colfuturo-formatter.directive.mjs +34 -34
- package/esm2022/lib/ng-pli-commons.module.mjs +387 -0
- package/{esm2020 → esm2022}/lib/ng-pli-commons.service.mjs +14 -14
- package/esm2022/lib/pipes/currency-colfuturo.pipe.mjs +35 -0
- package/{esm2020 → esm2022}/lib/pipes/currency-decimal-colfuturo.pipe.mjs +36 -36
- package/{esm2020 → esm2022}/lib/pipes/currency-print-colfuturo.pipe.mjs +33 -33
- package/esm2022/lib/pipes/thousands.pipe.mjs +60 -0
- package/{esm2020 → esm2022}/lib/services/application-fill-percentage.service.mjs +30 -30
- package/{esm2020 → esm2022}/lib/services/application-tag.service.mjs +56 -56
- package/{esm2020 → esm2022}/lib/services/application.service.mjs +247 -247
- package/esm2022/lib/services/authentication.service.mjs +133 -0
- package/{esm2020 → esm2022}/lib/services/blocked-beneficiary.service.mjs +42 -42
- package/esm2022/lib/services/budget-application.service.mjs +265 -0
- package/{esm2020 → esm2022}/lib/services/budget-simulation.service.mjs +61 -61
- package/esm2022/lib/services/budget.service.mjs +205 -0
- package/{esm2020 → esm2022}/lib/services/closure-wallet.service.mjs +39 -39
- package/{esm2020 → esm2022}/lib/services/cnf-correspondence-document-manager.service.mjs +39 -39
- package/{esm2020 → esm2022}/lib/services/committee-money.service.mjs +44 -44
- package/{esm2020 → esm2022}/lib/services/committee-pdf.service.mjs +27 -27
- package/{esm2020 → esm2022}/lib/services/committee-snapshot.service.mjs +60 -60
- package/{esm2020 → esm2022}/lib/services/common-info.service.mjs +51 -51
- package/esm2022/lib/services/common.service.mjs +291 -0
- package/esm2022/lib/services/configuration-document.service.mjs +297 -0
- package/{esm2020 → esm2022}/lib/services/configuration-minisite.service.mjs +26 -26
- package/{esm2020 → esm2022}/lib/services/configuration.service.mjs +53 -53
- package/{esm2020 → esm2022}/lib/services/correspondence-document-category.service.mjs +31 -31
- package/{esm2020 → esm2022}/lib/services/correspondence-manager.service.mjs +67 -67
- package/{esm2020 → esm2022}/lib/services/credit-score.service.mjs +48 -48
- package/{esm2020 → esm2022}/lib/services/credit-study.service.mjs +292 -292
- package/{esm2020 → esm2022}/lib/services/cube.service.mjs +27 -27
- package/{esm2020 → esm2022}/lib/services/data-form-history.service.mjs +25 -25
- package/{esm2020 → esm2022}/lib/services/data-form.service.mjs +176 -176
- package/{esm2020 → esm2022}/lib/services/data-letter-segmentation.service.mjs +64 -64
- package/{esm2020 → esm2022}/lib/services/document-analysis-auto.service.mjs +27 -27
- package/{esm2020 → esm2022}/lib/services/document-history.service.mjs +43 -43
- package/{esm2020 → esm2022}/lib/services/document-management.service.mjs +57 -57
- package/{esm2020 → esm2022}/lib/services/document-validation-attempt.service.mjs +32 -32
- package/{esm2020 → esm2022}/lib/services/document.service.mjs +131 -131
- package/esm2022/lib/services/documentary.type.service.mjs +69 -0
- package/{esm2020 → esm2022}/lib/services/email.service.mjs +30 -30
- package/{esm2020 → esm2022}/lib/services/evaluation.service.mjs +181 -181
- package/{esm2020 → esm2022}/lib/services/export-excel.service.mjs +32 -32
- package/esm2022/lib/services/file.service.mjs +153 -0
- package/{esm2020 → esm2022}/lib/services/form.service.mjs +112 -112
- package/{esm2020 → esm2022}/lib/services/gic-client-disbursement-metadata.service.mjs +31 -31
- package/{esm2020 → esm2022}/lib/services/gic-client.service.mjs +49 -49
- package/{esm2020 → esm2022}/lib/services/gic-cnf-bankvision-transaction.service.mjs +31 -31
- package/{esm2020 → esm2022}/lib/services/gic-cnf-closing-date.service.mjs +34 -34
- package/{esm2020 → esm2022}/lib/services/gic-cnf-maintenance.service.mjs +30 -30
- package/{esm2020 → esm2022}/lib/services/gic-collection.service.mjs +53 -53
- package/{esm2020 → esm2022}/lib/services/gic-disbursement.service.mjs +39 -39
- package/{esm2020 → esm2022}/lib/services/gic-extract.service.mjs +41 -41
- package/{esm2020 → esm2022}/lib/services/gic-log.service.mjs +41 -41
- package/{esm2020 → esm2022}/lib/services/gic-payment-application.service.mjs +35 -35
- package/{esm2020 → esm2022}/lib/services/gic-payment-plan-cube.service.mjs +27 -27
- package/{esm2020 → esm2022}/lib/services/gic-payment-plan.service.mjs +32 -32
- package/{esm2020 → esm2022}/lib/services/gic-trm.service.mjs +27 -27
- package/{esm2020 → esm2022}/lib/services/global.show.task.service.mjs +37 -37
- package/{esm2020 → esm2022}/lib/services/guarantee-document.service.mjs +52 -52
- package/{esm2020 → esm2022}/lib/services/guarantee-enrollment.service.mjs +37 -37
- package/esm2022/lib/services/guarantee.service.mjs +128 -0
- package/{esm2020 → esm2022}/lib/services/hash.service.mjs +36 -36
- package/{esm2020 → esm2022}/lib/services/import-data.service.mjs +27 -27
- package/{esm2020 → esm2022}/lib/services/import-excel-gic.service.mjs +45 -45
- package/{esm2020 → esm2022}/lib/services/initial-configuration-gic-parameters.service.mjs +51 -51
- package/{esm2020 → esm2022}/lib/services/initial-record.service.mjs +51 -51
- package/{esm2020 → esm2022}/lib/services/integration-ado.service.mjs +54 -54
- package/{esm2020 → esm2022}/lib/services/interaction-application-user.service.mjs +81 -81
- package/{esm2020 → esm2022}/lib/services/interest-adjustment.service.mjs +34 -34
- package/esm2022/lib/services/keys-assignation.service.mjs +127 -0
- package/{esm2020 → esm2022}/lib/services/legalization.service.mjs +150 -150
- package/{esm2020 → esm2022}/lib/services/letter-campaing.service.mjs +49 -49
- package/{esm2020 → esm2022}/lib/services/letter-task-mapping.service.mjs +40 -40
- package/{esm2020 → esm2022}/lib/services/log.service.mjs +41 -41
- package/{esm2020 → esm2022}/lib/services/maintenance.service.mjs +66 -66
- package/{esm2020 → esm2022}/lib/services/master-category.service.mjs +66 -66
- package/{esm2020 → esm2022}/lib/services/master-program.service.mjs +78 -78
- package/{esm2020 → esm2022}/lib/services/master-university.service.mjs +68 -68
- package/{esm2020 → esm2022}/lib/services/migration-plis.service.mjs +27 -27
- package/{esm2020 → esm2022}/lib/services/migration-survey-queue.service.mjs +24 -24
- package/{esm2020 → esm2022}/lib/services/page.service.mjs +38 -38
- package/{esm2020 → esm2022}/lib/services/partner-system.service.mjs +30 -30
- package/{esm2020 → esm2022}/lib/services/partner.service.mjs +34 -34
- package/{esm2020 → esm2022}/lib/services/pdf-analyzer.service.mjs +33 -33
- package/{esm2020 → esm2022}/lib/services/people-master.service.mjs +42 -42
- package/{esm2020 → esm2022}/lib/services/permission.service.mjs +29 -29
- package/{esm2020 → esm2022}/lib/services/pli-cnf-acuity-fields.service.mjs +34 -34
- package/{esm2020 → esm2022}/lib/services/pli-cnf-app-card-filter.service.mjs +40 -40
- package/{esm2020 → esm2022}/lib/services/pli-cnf-appointment-type.service.mjs +41 -41
- package/{esm2020 → esm2022}/lib/services/pli-cnf-budget-program-type.service.mjs +54 -54
- package/{esm2020 → esm2022}/lib/services/pli-cnf-budget.service.mjs +31 -31
- package/{esm2020 → esm2022}/lib/services/pli-cnf-cloning.service.mjs +27 -27
- package/{esm2020 → esm2022}/lib/services/pli-cnf-committee-pdf-config-table-config.service.mjs +47 -47
- package/{esm2020 → esm2022}/lib/services/pli-cnf-committee-pdf-gen-status.service.mjs +30 -30
- package/{esm2020 → esm2022}/lib/services/pli-cnf-committee-valpro-columns.service.mjs +42 -42
- package/{esm2020 → esm2022}/lib/services/pli-cnf-committee-visualization-mode.service.mjs +42 -42
- package/{esm2020 → esm2022}/lib/services/pli-cnf-committee.service.mjs +51 -51
- package/{esm2020 → esm2022}/lib/services/pli-cnf-config-minisite.service.mjs +90 -90
- package/{esm2020 → esm2022}/lib/services/pli-cnf-configuration-credit-study.service.mjs +41 -41
- package/{esm2020 → esm2022}/lib/services/pli-cnf-document-management.service.mjs +40 -40
- package/{esm2020 → esm2022}/lib/services/pli-cnf-dynamic-keys-assign.service.mjs +52 -52
- package/{esm2020 → esm2022}/lib/services/pli-cnf-evaluation-task-mailing.service.mjs +31 -31
- package/esm2022/lib/services/pli-cnf-evaluation-task.service.mjs +112 -0
- package/{esm2020 → esm2022}/lib/services/pli-cnf-evaluation-template.service.mjs +95 -95
- package/{esm2020 → esm2022}/lib/services/pli-cnf-form-edit.service.mjs +68 -68
- package/{esm2020 → esm2022}/lib/services/pli-cnf-form-multiaplicacion.service.mjs +46 -46
- package/{esm2020 → esm2022}/lib/services/pli-cnf-guarantee-documents-template.service.mjs +40 -40
- package/{esm2020 → esm2022}/lib/services/pli-cnf-guarantee-token.service.mjs +42 -42
- package/{esm2020 → esm2022}/lib/services/pli-cnf-header.service.mjs +39 -39
- package/{esm2020 → esm2022}/lib/services/pli-cnf-indicator.service.mjs +39 -39
- package/{esm2020 → esm2022}/lib/services/pli-cnf-information-system.service.mjs +24 -24
- package/{esm2020 → esm2022}/lib/services/pli-cnf-interaction.service.mjs +78 -78
- package/{esm2020 → esm2022}/lib/services/pli-cnf-letter-template-type.service.mjs +29 -29
- package/{esm2020 → esm2022}/lib/services/pli-cnf-letter-template.service.mjs +48 -48
- package/{esm2020 → esm2022}/lib/services/pli-cnf-look-and-feel.service.mjs +28 -28
- package/{esm2020 → esm2022}/lib/services/pli-cnf-mail.service.mjs +30 -30
- package/{esm2020 → esm2022}/lib/services/pli-cnf-menu-form.service.mjs +34 -34
- package/{esm2020 → esm2022}/lib/services/pli-cnf-migration-plis-field-budget.service.mjs +33 -33
- package/{esm2020 → esm2022}/lib/services/pli-cnf-migration-plis-field.service.mjs +47 -47
- package/{esm2020 → esm2022}/lib/services/pli-cnf-migration-status-plis.service.mjs +44 -44
- package/{esm2020 → esm2022}/lib/services/pli-cnf-page-section-form.service.mjs +66 -66
- package/{esm2020 → esm2022}/lib/services/pli-cnf-page-sub-process.service.mjs +25 -25
- package/{esm2020 → esm2022}/lib/services/pli-cnf-pdfs.service.mjs +31 -31
- package/{esm2020 → esm2022}/lib/services/pli-cnf-profile-form.service.mjs +40 -40
- package/{esm2020 → esm2022}/lib/services/pli-cnf-profile-user.service.mjs +49 -49
- package/{esm2020 → esm2022}/lib/services/pli-cnf-project-summary.service.mjs +39 -39
- package/{esm2020 → esm2022}/lib/services/pli-cnf-scenario.service.mjs +47 -47
- package/{esm2020 → esm2022}/lib/services/pli-cnf-segmentation.service.mjs +72 -72
- package/{esm2020 → esm2022}/lib/services/pli-cnf-snapshot-token.service.mjs +42 -42
- package/{esm2020 → esm2022}/lib/services/pli-cnf-status-flow-interaction.service.mjs +74 -74
- package/{esm2020 → esm2022}/lib/services/pli-cnf-status-flow.service.mjs +56 -56
- package/{esm2020 → esm2022}/lib/services/pli-cnf-support-document-category.service.mjs +47 -47
- package/{esm2020 → esm2022}/lib/services/pli-cnf-support-document.service.mjs +56 -56
- package/{esm2020 → esm2022}/lib/services/pli-cnf-survey-document.service.mjs +37 -37
- package/{esm2020 → esm2022}/lib/services/pli-cnf-survey-pdf.service.mjs +34 -34
- package/{esm2020 → esm2022}/lib/services/pli-cnf-survey.service.mjs +46 -46
- package/{esm2020 → esm2022}/lib/services/pli-cnf-task-group.service.mjs +33 -33
- package/{esm2020 → esm2022}/lib/services/pli-cnf-text-category.service.mjs +38 -38
- package/{esm2020 → esm2022}/lib/services/pli-cnf-text-option.service.mjs +39 -39
- package/{esm2020 → esm2022}/lib/services/pli-cnf-text.service.mjs +62 -62
- package/{esm2020 → esm2022}/lib/services/pli-cnf-type-text.service.mjs +45 -45
- package/{esm2020 → esm2022}/lib/services/pli-cnf-university-article.service.mjs +39 -39
- package/{esm2020 → esm2022}/lib/services/pli-cnf-user-calendar.service.mjs +36 -36
- package/{esm2020 → esm2022}/lib/services/pli-cnf-user-workspace.service.mjs +35 -35
- package/{esm2020 → esm2022}/lib/services/pli-cnf-valpro-keys.service.mjs +35 -35
- package/{esm2020 → esm2022}/lib/services/pli-cnf-workspace-segmentation.service.mjs +31 -31
- package/{esm2020 → esm2022}/lib/services/pli-message-type.service.mjs +40 -40
- package/{esm2020 → esm2022}/lib/services/pli-multiple-value-filter.service.mjs +39 -39
- package/{esm2020 → esm2022}/lib/services/pli-promocion-username.service.mjs +57 -57
- package/{esm2020 → esm2022}/lib/services/pli-seg-action-user.service.mjs +37 -37
- package/{esm2020 → esm2022}/lib/services/pli-segmentation.service.mjs +130 -130
- package/{esm2020 → esm2022}/lib/services/pli-tag-assignment.service.mjs +36 -36
- package/{esm2020 → esm2022}/lib/services/pli-tag.service.mjs +55 -55
- package/{esm2020 → esm2022}/lib/services/pli-user.service.mjs +51 -51
- package/{esm2020 → esm2022}/lib/services/plis-beneficiario.service.mjs +29 -29
- package/{esm2020 → esm2022}/lib/services/plis-estatus-change.service.mjs +30 -30
- package/esm2022/lib/services/ppp.service.mjs +360 -0
- package/{esm2020 → esm2022}/lib/services/profile.service.mjs +60 -60
- package/esm2022/lib/services/progress-bar.service.mjs +40 -0
- package/{esm2020 → esm2022}/lib/services/promotion-score.service.mjs +44 -44
- package/{esm2020 → esm2022}/lib/services/registry-identifier.service.mjs +39 -39
- package/{esm2020 → esm2022}/lib/services/return-refund.service.mjs +53 -53
- package/esm2022/lib/services/segmentation-tokens.service.mjs +43 -0
- package/{esm2020 → esm2022}/lib/services/segmentation-user-service.service.mjs +90 -90
- package/{esm2020 → esm2022}/lib/services/segmentation.service.mjs +31 -31
- package/esm2022/lib/services/send-application.service.mjs +492 -0
- package/{esm2020 → esm2022}/lib/services/sesion-form.service.mjs +31 -31
- package/{esm2020 → esm2022}/lib/services/sesion.service.mjs +48 -48
- package/{esm2020 → esm2022}/lib/services/spinner.service.mjs +16 -16
- package/{esm2020 → esm2022}/lib/services/sponsorship-letter.service.mjs +68 -68
- package/{esm2020 → esm2022}/lib/services/status.service.mjs +100 -100
- package/{esm2020 → esm2022}/lib/services/summary-budget.service.mjs +24 -24
- package/{esm2020 → esm2022}/lib/services/survey-metadata.service.mjs +28 -28
- package/{esm2020 → esm2022}/lib/services/survey-queue.service.mjs +24 -24
- package/{esm2020 → esm2022}/lib/services/survey.service.mjs +52 -52
- package/{esm2020 → esm2022}/lib/services/tasa.cambio.service.mjs +35 -35
- package/{esm2020 → esm2022}/lib/services/token-transformation.service.mjs +62 -62
- package/esm2022/lib/services/token.service.mjs +1345 -0
- package/{esm2020 → esm2022}/lib/services/university.service.mjs +50 -50
- package/esm2022/lib/services/upload-documents.service.mjs +60 -0
- package/{esm2020 → esm2022}/lib/services/user.service.mjs +28 -28
- package/{esm2020 → esm2022}/lib/services/visualization-committee.service.mjs +84 -84
- package/esm2022/lib/utils/custom-validator.mjs +95 -0
- package/esm2022/lib/utils/form-util.mjs +35 -0
- package/esm2022/lib/utils/formio-util.mjs +582 -0
- package/{esm2020 → esm2022}/lib/utils/version-commons.mjs +9 -9
- package/{esm2020 → esm2022}/ng-pli-commons.mjs +4 -4
- package/{esm2020 → esm2022}/public-api.mjs +214 -214
- package/{esm2020 → esm2022}/version.mjs +29 -29
- package/{fesm2020 → fesm2022}/ng-pli-commons.mjs +16724 -16725
- package/fesm2022/ng-pli-commons.mjs.map +1 -0
- package/{ng-pli-commons.d.ts → index.d.ts} +5 -5
- package/lib/components/backoffice.commons.component.d.ts +15 -15
- package/lib/components/common.lists.component.d.ts +61 -61
- package/lib/components/configuration-token/configuration-token-subject.service.d.ts +10 -10
- package/lib/components/configuration-token/configuration-token.component.d.ts +124 -124
- package/lib/components/configuration-token/guarantee-token/guarantee-token.component.d.ts +33 -33
- package/lib/components/configuration-token/snapshot-token/snapshot-token.component.d.ts +37 -37
- package/lib/components/configuration.commons.component.d.ts +15 -15
- package/lib/components/dashboard.commons.component.d.ts +39 -39
- package/lib/components/dynamic-filter/dynamic-filter.component.d.ts +50 -50
- package/lib/components/excel-to-json/excel-to-json.component.d.ts +12 -12
- package/lib/components/frontoffice.commons.component.d.ts +26 -26
- package/lib/components/pdf-analyzer/pdf-analyzer.component.d.ts +36 -36
- package/lib/components/pdf-config/pdf-config.component.d.ts +78 -78
- package/lib/components/pdf-generator/pdf-generator.component.d.ts +69 -69
- package/lib/components/pdf-merge-visualizer/pdf-merge-visualizer.component.d.ts +114 -114
- package/lib/components/pdf-visualizer/pdf-visualizer.component.d.ts +147 -147
- package/lib/components/progress-bar/progress-bar.component.d.ts +30 -30
- package/lib/components/segmentation-tokens/segmentation-tokens.component.d.ts +48 -48
- package/lib/components/select-ppp/select-ppp.component.d.ts +42 -42
- package/lib/components/show-hide-columns/show-hide-columns-table.component.d.ts +39 -39
- package/lib/components/token/token.component.d.ts +99 -99
- package/lib/components/tokens-calculator/tokens-calculator.component.d.ts +37 -37
- package/lib/directives/currency-colfuturo-formatter.directive.d.ts +14 -14
- package/lib/directives/currency-decimal-colfuturo-formatter.directive.d.ts +13 -13
- package/lib/ng-pli-commons.module.d.ts +47 -47
- package/lib/ng-pli-commons.service.d.ts +6 -6
- package/lib/pipes/currency-colfuturo.pipe.d.ts +12 -12
- package/lib/pipes/currency-decimal-colfuturo.pipe.d.ts +11 -11
- package/lib/pipes/currency-print-colfuturo.pipe.d.ts +11 -11
- package/lib/pipes/thousands.pipe.d.ts +9 -9
- package/lib/services/application-fill-percentage.service.d.ts +15 -15
- package/lib/services/application-tag.service.d.ts +23 -23
- package/lib/services/application.service.d.ts +107 -107
- package/lib/services/authentication.service.d.ts +45 -45
- package/lib/services/blocked-beneficiary.service.d.ts +17 -17
- package/lib/services/budget-application.service.d.ts +52 -52
- package/lib/services/budget-simulation.service.d.ts +32 -32
- package/lib/services/budget.service.d.ts +65 -65
- package/lib/services/closure-wallet.service.d.ts +16 -16
- package/lib/services/cnf-correspondence-document-manager.service.d.ts +14 -14
- package/lib/services/committee-money.service.d.ts +12 -12
- package/lib/services/committee-pdf.service.d.ts +13 -13
- package/lib/services/committee-snapshot.service.d.ts +24 -24
- package/lib/services/common-info.service.d.ts +30 -30
- package/lib/services/common.service.d.ts +103 -103
- package/lib/services/configuration-document.service.d.ts +84 -84
- package/lib/services/configuration-minisite.service.d.ts +13 -13
- package/lib/services/configuration.service.d.ts +15 -15
- package/lib/services/correspondence-document-category.service.d.ts +12 -12
- package/lib/services/correspondence-manager.service.d.ts +21 -21
- package/lib/services/credit-score.service.d.ts +14 -14
- package/lib/services/credit-study.service.d.ts +52 -52
- package/lib/services/cube.service.d.ts +14 -14
- package/lib/services/data-form-history.service.d.ts +13 -13
- package/lib/services/data-form.service.d.ts +82 -82
- package/lib/services/data-letter-segmentation.service.d.ts +20 -20
- package/lib/services/document-analysis-auto.service.d.ts +14 -14
- package/lib/services/document-history.service.d.ts +18 -18
- package/lib/services/document-management.service.d.ts +22 -22
- package/lib/services/document-validation-attempt.service.d.ts +13 -13
- package/lib/services/document.service.d.ts +51 -51
- package/lib/services/documentary.type.service.d.ts +23 -23
- package/lib/services/email.service.d.ts +15 -15
- package/lib/services/evaluation.service.d.ts +58 -58
- package/lib/services/export-excel.service.d.ts +8 -8
- package/lib/services/file.service.d.ts +63 -63
- package/lib/services/form.service.d.ts +39 -39
- package/lib/services/gic-client-disbursement-metadata.service.d.ts +12 -12
- package/lib/services/gic-client.service.d.ts +20 -20
- package/lib/services/gic-cnf-bankvision-transaction.service.d.ts +13 -13
- package/lib/services/gic-cnf-closing-date.service.d.ts +15 -15
- package/lib/services/gic-cnf-maintenance.service.d.ts +13 -13
- package/lib/services/gic-collection.service.d.ts +19 -19
- package/lib/services/gic-disbursement.service.d.ts +16 -16
- package/lib/services/gic-extract.service.d.ts +15 -15
- package/lib/services/gic-log.service.d.ts +17 -17
- package/lib/services/gic-payment-application.service.d.ts +15 -15
- package/lib/services/gic-payment-plan-cube.service.d.ts +13 -13
- package/lib/services/gic-payment-plan.service.d.ts +19 -19
- package/lib/services/gic-trm.service.d.ts +14 -14
- package/lib/services/global.show.task.service.d.ts +20 -20
- package/lib/services/guarantee-document.service.d.ts +17 -17
- package/lib/services/guarantee-enrollment.service.d.ts +14 -14
- package/lib/services/guarantee.service.d.ts +34 -34
- package/lib/services/hash.service.d.ts +18 -18
- package/lib/services/import-data.service.d.ts +14 -14
- package/lib/services/import-excel-gic.service.d.ts +22 -22
- package/lib/services/initial-configuration-gic-parameters.service.d.ts +19 -19
- package/lib/services/initial-record.service.d.ts +24 -24
- package/lib/services/integration-ado.service.d.ts +15 -15
- package/lib/services/interaction-application-user.service.d.ts +28 -28
- package/lib/services/interest-adjustment.service.d.ts +16 -16
- package/lib/services/keys-assignation.service.d.ts +33 -33
- package/lib/services/legalization.service.d.ts +46 -46
- package/lib/services/letter-campaing.service.d.ts +24 -24
- package/lib/services/letter-task-mapping.service.d.ts +22 -22
- package/lib/services/log.service.d.ts +17 -17
- package/lib/services/maintenance.service.d.ts +23 -23
- package/lib/services/master-category.service.d.ts +40 -40
- package/lib/services/master-program.service.d.ts +45 -45
- package/lib/services/master-university.service.d.ts +40 -40
- package/lib/services/migration-plis.service.d.ts +14 -14
- package/lib/services/migration-survey-queue.service.d.ts +12 -12
- package/lib/services/page.service.d.ts +18 -18
- package/lib/services/partner-system.service.d.ts +13 -13
- package/lib/services/partner.service.d.ts +17 -17
- package/lib/services/pdf-analyzer.service.d.ts +11 -11
- package/lib/services/people-master.service.d.ts +14 -14
- package/lib/services/permission.service.d.ts +14 -14
- package/lib/services/pli-cnf-acuity-fields.service.d.ts +14 -14
- package/lib/services/pli-cnf-app-card-filter.service.d.ts +20 -20
- package/lib/services/pli-cnf-appointment-type.service.d.ts +16 -16
- package/lib/services/pli-cnf-budget-program-type.service.d.ts +18 -18
- package/lib/services/pli-cnf-budget.service.d.ts +13 -13
- package/lib/services/pli-cnf-cloning.service.d.ts +12 -12
- package/lib/services/pli-cnf-committee-pdf-config-table-config.service.d.ts +19 -19
- package/lib/services/pli-cnf-committee-pdf-gen-status.service.d.ts +13 -13
- package/lib/services/pli-cnf-committee-valpro-columns.service.d.ts +15 -15
- package/lib/services/pli-cnf-committee-visualization-mode.service.d.ts +17 -17
- package/lib/services/pli-cnf-committee.service.d.ts +21 -21
- package/lib/services/pli-cnf-config-minisite.service.d.ts +26 -26
- package/lib/services/pli-cnf-configuration-credit-study.service.d.ts +16 -16
- package/lib/services/pli-cnf-document-management.service.d.ts +15 -15
- package/lib/services/pli-cnf-dynamic-keys-assign.service.d.ts +21 -21
- package/lib/services/pli-cnf-evaluation-task-mailing.service.d.ts +13 -13
- package/lib/services/pli-cnf-evaluation-task.service.d.ts +35 -35
- package/lib/services/pli-cnf-evaluation-template.service.d.ts +44 -44
- package/lib/services/pli-cnf-form-edit.service.d.ts +29 -29
- package/lib/services/pli-cnf-form-multiaplicacion.service.d.ts +21 -21
- package/lib/services/pli-cnf-guarantee-documents-template.service.d.ts +17 -17
- package/lib/services/pli-cnf-guarantee-token.service.d.ts +16 -16
- package/lib/services/pli-cnf-header.service.d.ts +18 -18
- package/lib/services/pli-cnf-indicator.service.d.ts +20 -20
- package/lib/services/pli-cnf-information-system.service.d.ts +12 -12
- package/lib/services/pli-cnf-interaction.service.d.ts +31 -31
- package/lib/services/pli-cnf-letter-template-type.service.d.ts +15 -15
- package/lib/services/pli-cnf-letter-template.service.d.ts +22 -22
- package/lib/services/pli-cnf-look-and-feel.service.d.ts +13 -13
- package/lib/services/pli-cnf-mail.service.d.ts +13 -13
- package/lib/services/pli-cnf-menu-form.service.d.ts +16 -16
- package/lib/services/pli-cnf-migration-plis-field-budget.service.d.ts +14 -14
- package/lib/services/pli-cnf-migration-plis-field.service.d.ts +17 -17
- package/lib/services/pli-cnf-migration-status-plis.service.d.ts +17 -17
- package/lib/services/pli-cnf-page-section-form.service.d.ts +24 -24
- package/lib/services/pli-cnf-page-sub-process.service.d.ts +12 -12
- package/lib/services/pli-cnf-pdfs.service.d.ts +14 -14
- package/lib/services/pli-cnf-profile-form.service.d.ts +20 -20
- package/lib/services/pli-cnf-profile-user.service.d.ts +24 -24
- package/lib/services/pli-cnf-project-summary.service.d.ts +16 -16
- package/lib/services/pli-cnf-scenario.service.d.ts +23 -23
- package/lib/services/pli-cnf-segmentation.service.d.ts +32 -32
- package/lib/services/pli-cnf-snapshot-token.service.d.ts +16 -16
- package/lib/services/pli-cnf-status-flow-interaction.service.d.ts +28 -28
- package/lib/services/pli-cnf-status-flow.service.d.ts +26 -26
- package/lib/services/pli-cnf-support-document-category.service.d.ts +17 -17
- package/lib/services/pli-cnf-support-document.service.d.ts +23 -23
- package/lib/services/pli-cnf-survey-document.service.d.ts +16 -16
- package/lib/services/pli-cnf-survey-pdf.service.d.ts +15 -15
- package/lib/services/pli-cnf-survey.service.d.ts +19 -19
- package/lib/services/pli-cnf-task-group.service.d.ts +15 -15
- package/lib/services/pli-cnf-text-category.service.d.ts +15 -15
- package/lib/services/pli-cnf-text-option.service.d.ts +15 -15
- package/lib/services/pli-cnf-text.service.d.ts +21 -21
- package/lib/services/pli-cnf-type-text.service.d.ts +16 -16
- package/lib/services/pli-cnf-university-article.service.d.ts +20 -20
- package/lib/services/pli-cnf-user-calendar.service.d.ts +16 -16
- package/lib/services/pli-cnf-user-workspace.service.d.ts +18 -18
- package/lib/services/pli-cnf-valpro-keys.service.d.ts +18 -18
- package/lib/services/pli-cnf-workspace-segmentation.service.d.ts +16 -16
- package/lib/services/pli-message-type.service.d.ts +15 -15
- package/lib/services/pli-multiple-value-filter.service.d.ts +17 -17
- package/lib/services/pli-promocion-username.service.d.ts +26 -26
- package/lib/services/pli-seg-action-user.service.d.ts +20 -20
- package/lib/services/pli-segmentation.service.d.ts +48 -48
- package/lib/services/pli-tag-assignment.service.d.ts +15 -15
- package/lib/services/pli-tag.service.d.ts +21 -21
- package/lib/services/pli-user.service.d.ts +24 -24
- package/lib/services/plis-beneficiario.service.d.ts +10 -10
- package/lib/services/plis-estatus-change.service.d.ts +13 -13
- package/lib/services/ppp.service.d.ts +77 -77
- package/lib/services/profile.service.d.ts +26 -26
- package/lib/services/progress-bar.service.d.ts +14 -14
- package/lib/services/promotion-score.service.d.ts +14 -14
- package/lib/services/registry-identifier.service.d.ts +16 -16
- package/lib/services/return-refund.service.d.ts +20 -20
- package/lib/services/segmentation-tokens.service.d.ts +22 -22
- package/lib/services/segmentation-user-service.service.d.ts +26 -26
- package/lib/services/segmentation.service.d.ts +16 -16
- package/lib/services/send-application.service.d.ts +71 -71
- package/lib/services/sesion-form.service.d.ts +16 -16
- package/lib/services/sesion.service.d.ts +27 -27
- package/lib/services/spinner.service.d.ts +6 -6
- package/lib/services/sponsorship-letter.service.d.ts +34 -34
- package/lib/services/status.service.d.ts +31 -31
- package/lib/services/summary-budget.service.d.ts +11 -11
- package/lib/services/survey-metadata.service.d.ts +13 -13
- package/lib/services/survey-queue.service.d.ts +12 -12
- package/lib/services/survey.service.d.ts +17 -17
- package/lib/services/tasa.cambio.service.d.ts +14 -14
- package/lib/services/token-transformation.service.d.ts +19 -19
- package/lib/services/token.service.d.ts +270 -270
- package/lib/services/university.service.d.ts +28 -28
- package/lib/services/upload-documents.service.d.ts +21 -21
- package/lib/services/user.service.d.ts +12 -12
- package/lib/services/visualization-committee.service.d.ts +32 -32
- package/lib/utils/custom-validator.d.ts +19 -19
- package/lib/utils/form-util.d.ts +11 -11
- package/lib/utils/formio-util.d.ts +105 -105
- package/lib/utils/version-commons.d.ts +4 -4
- package/package.json +10 -16
- package/public-api.d.ts +210 -210
- package/version.d.ts +25 -25
- package/esm2020/lib/components/backoffice.commons.component.mjs +0 -40
- package/esm2020/lib/components/common.lists.component.mjs +0 -194
- package/esm2020/lib/components/configuration-token/configuration-token.component.mjs +0 -665
- package/esm2020/lib/components/configuration-token/guarantee-token/guarantee-token.component.mjs +0 -103
- package/esm2020/lib/components/configuration-token/snapshot-token/snapshot-token.component.mjs +0 -108
- package/esm2020/lib/components/configuration.commons.component.mjs +0 -40
- package/esm2020/lib/components/dynamic-filter/dynamic-filter.component.mjs +0 -131
- package/esm2020/lib/components/excel-to-json/excel-to-json.component.mjs +0 -54
- package/esm2020/lib/components/frontoffice.commons.component.mjs +0 -86
- package/esm2020/lib/components/pdf-analyzer/pdf-analyzer.component.mjs +0 -162
- package/esm2020/lib/components/pdf-generator/pdf-generator.component.mjs +0 -223
- package/esm2020/lib/components/pdf-merge-visualizer/pdf-merge-visualizer.component.mjs +0 -307
- package/esm2020/lib/components/pdf-visualizer/pdf-visualizer.component.mjs +0 -387
- package/esm2020/lib/components/progress-bar/progress-bar.component.mjs +0 -92
- package/esm2020/lib/components/segmentation-tokens/segmentation-tokens.component.mjs +0 -199
- package/esm2020/lib/components/select-ppp/select-ppp.component.mjs +0 -199
- package/esm2020/lib/components/show-hide-columns/show-hide-columns-table.component.mjs +0 -116
- package/esm2020/lib/components/token/token.component.mjs +0 -1006
- package/esm2020/lib/components/tokens-calculator/tokens-calculator.component.mjs +0 -128
- package/esm2020/lib/ng-pli-commons.module.mjs +0 -390
- package/esm2020/lib/pipes/currency-colfuturo.pipe.mjs +0 -35
- package/esm2020/lib/pipes/thousands.pipe.mjs +0 -60
- package/esm2020/lib/services/authentication.service.mjs +0 -133
- package/esm2020/lib/services/budget-application.service.mjs +0 -265
- package/esm2020/lib/services/budget.service.mjs +0 -205
- package/esm2020/lib/services/common.service.mjs +0 -291
- package/esm2020/lib/services/configuration-document.service.mjs +0 -297
- package/esm2020/lib/services/documentary.type.service.mjs +0 -69
- package/esm2020/lib/services/file.service.mjs +0 -153
- package/esm2020/lib/services/guarantee.service.mjs +0 -128
- package/esm2020/lib/services/keys-assignation.service.mjs +0 -127
- package/esm2020/lib/services/pli-cnf-evaluation-task.service.mjs +0 -112
- package/esm2020/lib/services/ppp.service.mjs +0 -360
- package/esm2020/lib/services/progress-bar.service.mjs +0 -40
- package/esm2020/lib/services/segmentation-tokens.service.mjs +0 -43
- package/esm2020/lib/services/send-application.service.mjs +0 -492
- package/esm2020/lib/services/token.service.mjs +0 -1345
- package/esm2020/lib/services/upload-documents.service.mjs +0 -60
- package/esm2020/lib/utils/custom-validator.mjs +0 -95
- package/esm2020/lib/utils/form-util.mjs +0 -35
- package/esm2020/lib/utils/formio-util.mjs +0 -580
- package/fesm2015/ng-pli-commons.mjs +0 -17373
- package/fesm2015/ng-pli-commons.mjs.map +0 -1
- package/fesm2020/ng-pli-commons.mjs.map +0 -1
|
@@ -1,387 +0,0 @@
|
|
|
1
|
-
import { Component, Input, EventEmitter, Output } from '@angular/core';
|
|
2
|
-
import * as PDFJS_ from 'pdfjs-dist/build/pdf';
|
|
3
|
-
import Panzoom from 'panzoom/dist/panzoom';
|
|
4
|
-
import { PdfDocument, UtilString, EProceso, RequestPdf } from 'ng-pli-util';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "../../services/common.service";
|
|
7
|
-
import * as i2 from "@angular/platform-browser";
|
|
8
|
-
import * as i3 from "ngx-toastr";
|
|
9
|
-
import * as i4 from "../../services/file.service";
|
|
10
|
-
import * as i5 from "@angular/common";
|
|
11
|
-
import * as i6 from "@angular/forms";
|
|
12
|
-
const PDFJS = PDFJS_;
|
|
13
|
-
// const panzoom = panzoom_;
|
|
14
|
-
export class PdfVisualizerComponent {
|
|
15
|
-
constructor(commonService, sanitization, taostrService, fileService) {
|
|
16
|
-
this.commonService = commonService;
|
|
17
|
-
this.sanitization = sanitization;
|
|
18
|
-
this.taostrService = taostrService;
|
|
19
|
-
this.fileService = fileService;
|
|
20
|
-
/** show pager */
|
|
21
|
-
this.showPager = true;
|
|
22
|
-
/** repeat header */
|
|
23
|
-
this.repeatHeader = true;
|
|
24
|
-
/** repeat footer*/
|
|
25
|
-
this.repeatFooter = true;
|
|
26
|
-
/** It fires when the file has been downloaded */
|
|
27
|
-
this.onDownload = new EventEmitter();
|
|
28
|
-
/** It fires when the name has been sent */
|
|
29
|
-
this.onSendEmail = new EventEmitter();
|
|
30
|
-
/** It fires when the html has been modified */
|
|
31
|
-
this.onChange = new EventEmitter();
|
|
32
|
-
/** it verifies if component is ready */
|
|
33
|
-
this.ready = false;
|
|
34
|
-
/** it contains the id of canvas */
|
|
35
|
-
this.id_canvas = 'pdf-canvas';
|
|
36
|
-
/** It allows to edit html */
|
|
37
|
-
this.edit = false;
|
|
38
|
-
}
|
|
39
|
-
// it resolves when the html is changed
|
|
40
|
-
ngOnChanges(changes) {
|
|
41
|
-
const html = changes.html;
|
|
42
|
-
const urlFile = changes.urlFile;
|
|
43
|
-
if (html && html.currentValue) {
|
|
44
|
-
this.html = html.currentValue;
|
|
45
|
-
this.generatePDF();
|
|
46
|
-
}
|
|
47
|
-
else if (urlFile && urlFile.currentValue) {
|
|
48
|
-
this.urlFile = urlFile.currentValue;
|
|
49
|
-
this.generatePDF();
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
this.ready = false;
|
|
53
|
-
if (this.pdfDocument && this.pdfDocument.canvas) {
|
|
54
|
-
let canvas = this.pdfDocument.canvas;
|
|
55
|
-
var ctx = this.pdfDocument.canvas.getContext('2d');
|
|
56
|
-
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
|
57
|
-
this.pdfDocument = undefined;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
/** It generates the pdf */
|
|
62
|
-
generatePDF() {
|
|
63
|
-
if (!UtilString.isValid(this.html) && UtilString.isValid(this.urlFile)) {
|
|
64
|
-
this.commonService.getBase64PdfByUrl(this.urlFile).subscribe((result) => {
|
|
65
|
-
this.showBase64Pdf(result);
|
|
66
|
-
}, (error) => {
|
|
67
|
-
console.log('Error trying to render PDF', error);
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
// if html was changed
|
|
72
|
-
let requestPdf = new RequestPdf();
|
|
73
|
-
requestPdf.html = this.html;
|
|
74
|
-
requestPdf.header = this.header;
|
|
75
|
-
requestPdf.footer = this.footer;
|
|
76
|
-
requestPdf.lang = this.lang;
|
|
77
|
-
requestPdf.marginTop = this.marginTop;
|
|
78
|
-
requestPdf.marginRight = this.marginRight;
|
|
79
|
-
requestPdf.marginBottom = this.marginBottom;
|
|
80
|
-
requestPdf.marginLeft = this.marginLeft;
|
|
81
|
-
requestPdf.orientation = this.orientation;
|
|
82
|
-
requestPdf.size = this.size;
|
|
83
|
-
requestPdf.font = this.font;
|
|
84
|
-
requestPdf.repeatHeader = this.repeatHeader;
|
|
85
|
-
requestPdf.repeatFooter = this.repeatFooter;
|
|
86
|
-
requestPdf.showPager = this.showPager;
|
|
87
|
-
requestPdf.headerHeight = this.headerHeight;
|
|
88
|
-
requestPdf.footerHeight = this.footerHeight;
|
|
89
|
-
this.commonService.getBase64Pdf(requestPdf).subscribe((result) => {
|
|
90
|
-
this.showBase64Pdf(result);
|
|
91
|
-
}, (error) => {
|
|
92
|
-
console.log('Error trying to render PDF', error);
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
showBase64Pdf(result) {
|
|
97
|
-
this.base64 = result.base64;
|
|
98
|
-
var data = atob(this.base64);
|
|
99
|
-
PDFJS.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.16.105/pdf.worker.js';
|
|
100
|
-
if (PDFJS.GlobalWorkerOptions)
|
|
101
|
-
PDFJS.GlobalWorkerOptions.workerSrc =
|
|
102
|
-
'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.16.105/pdf.worker.js';
|
|
103
|
-
// create instance of PdfDocument with the id of canvas
|
|
104
|
-
// create instance of PdfDocument with the id of canvas
|
|
105
|
-
this.pdfDocument = new PdfDocument(this.id_canvas);
|
|
106
|
-
// assign variables out of scope
|
|
107
|
-
let pdfdocument = this.pdfDocument;
|
|
108
|
-
Panzoom(this.pdfDocument.canvas, {
|
|
109
|
-
smoothScroll: false
|
|
110
|
-
});
|
|
111
|
-
let self = this;
|
|
112
|
-
let ready = this.ready;
|
|
113
|
-
const pdfLoadingTask = PDFJS.getDocument({ data: data });
|
|
114
|
-
// JP - here we ask if the promise supports the new version pdfLoadingTask.promise
|
|
115
|
-
const promise = pdfLoadingTask.promise ? pdfLoadingTask.promise : pdfLoadingTask;
|
|
116
|
-
promise.then(function (pdfDoc_) {
|
|
117
|
-
pdfdocument.pdfDoc = pdfDoc_;
|
|
118
|
-
self.renderPage(1);
|
|
119
|
-
ready = true;
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
testBase64ToFile2() {
|
|
123
|
-
// let dataurl = this.base64;
|
|
124
|
-
let fileName = 'TestOPrada2.pdf';
|
|
125
|
-
// var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
|
|
126
|
-
var bstr = atob(this.base64), n = bstr.length, u8arr = new Uint8Array(n);
|
|
127
|
-
while (n--) {
|
|
128
|
-
u8arr[n] = bstr.charCodeAt(n);
|
|
129
|
-
}
|
|
130
|
-
let fileReturn = new File([u8arr], fileName, { type: 'application/pdf' });
|
|
131
|
-
this.testEnvioDoc(fileReturn, fileName);
|
|
132
|
-
}
|
|
133
|
-
testEnvioDoc(fileReturn, fileName) {
|
|
134
|
-
const filePath = this.fileService.getPath(EProceso.CONVOCATORIA, 500, 2, 1, 'aaaa', fileName);
|
|
135
|
-
this.fileService.upload(filePath, fileReturn).subscribe((url) => {
|
|
136
|
-
console.log('Finalizo envío documento', url);
|
|
137
|
-
}, (error) => {
|
|
138
|
-
console.log('Error trying to upload: ', error);
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
/** It returns the height */
|
|
142
|
-
getHeight() {
|
|
143
|
-
if (this.height)
|
|
144
|
-
return this.height + 'px';
|
|
145
|
-
return PdfVisualizerComponent.DEFAULT_HEIGHT + 'px';
|
|
146
|
-
}
|
|
147
|
-
/** Get page info from document, resize canvas accordingly, and render page. */
|
|
148
|
-
renderPage(num) {
|
|
149
|
-
this.pdfDocument.pageRendering = true;
|
|
150
|
-
// assign variables out of scope
|
|
151
|
-
let selfPdfDocument = this.pdfDocument;
|
|
152
|
-
let self = this;
|
|
153
|
-
// Using promise to fetch the page
|
|
154
|
-
this.pdfDocument.pdfDoc.getPage(num).then(function (page) {
|
|
155
|
-
var scale = selfPdfDocument.scale ? selfPdfDocument.scale : 1.5;
|
|
156
|
-
var viewport = page.getViewport({ scale: scale });
|
|
157
|
-
selfPdfDocument.canvas.height = viewport.height;
|
|
158
|
-
selfPdfDocument.canvas.width = viewport.width;
|
|
159
|
-
// Render PDF page into canvas context
|
|
160
|
-
var renderContext = {
|
|
161
|
-
canvasContext: selfPdfDocument.canvas.getContext('2d'),
|
|
162
|
-
viewport: viewport
|
|
163
|
-
};
|
|
164
|
-
var renderTask = page.render(renderContext);
|
|
165
|
-
// Wait for rendering to finish
|
|
166
|
-
renderTask.promise.then(function () {
|
|
167
|
-
selfPdfDocument.pageRendering = false;
|
|
168
|
-
if (selfPdfDocument.pageNumPending !== null) {
|
|
169
|
-
// New page rendering is pending
|
|
170
|
-
self.renderPage(selfPdfDocument.pageNumPending);
|
|
171
|
-
selfPdfDocument.pageNumPending = null;
|
|
172
|
-
}
|
|
173
|
-
});
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* If another page rendering in progress, waits until the rendering is
|
|
178
|
-
* finised. Otherwise, executes rendering immediately.
|
|
179
|
-
*/
|
|
180
|
-
queueRenderPage(num) {
|
|
181
|
-
if (this.pdfDocument.pageRendering) {
|
|
182
|
-
this.pdfDocument.pageNumPending = num;
|
|
183
|
-
}
|
|
184
|
-
else {
|
|
185
|
-
this.renderPage(num);
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* Displays previous page.
|
|
190
|
-
*/
|
|
191
|
-
onPrevPage() {
|
|
192
|
-
if (!this.pdfDocument || this.pdfDocument.pageNum <= 1) {
|
|
193
|
-
return;
|
|
194
|
-
}
|
|
195
|
-
this.pdfDocument.pageNum--;
|
|
196
|
-
this.queueRenderPage(this.pdfDocument.pageNum);
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* Displays next page.
|
|
200
|
-
*/
|
|
201
|
-
onNextPage() {
|
|
202
|
-
if (!this.pdfDocument || this.pdfDocument.pageNum >= this.pdfDocument.pdfDoc.numPages) {
|
|
203
|
-
return;
|
|
204
|
-
}
|
|
205
|
-
this.pdfDocument.pageNum++;
|
|
206
|
-
this.queueRenderPage(this.pdfDocument.pageNum);
|
|
207
|
-
}
|
|
208
|
-
/**
|
|
209
|
-
* Displays Zoom In.
|
|
210
|
-
*/
|
|
211
|
-
onZoomIn() {
|
|
212
|
-
if (!this.pdfDocument || this.pdfDocument.scale >= 3) {
|
|
213
|
-
return;
|
|
214
|
-
}
|
|
215
|
-
this.pdfDocument.scale = this.pdfDocument.scale + 0.2;
|
|
216
|
-
this.queueRenderPage(this.pdfDocument.pageNum);
|
|
217
|
-
}
|
|
218
|
-
/**
|
|
219
|
-
* Displays Zoom Out.
|
|
220
|
-
*/
|
|
221
|
-
onZoomOut() {
|
|
222
|
-
if (!this.pdfDocument || this.pdfDocument.scale <= 0.4) {
|
|
223
|
-
return;
|
|
224
|
-
}
|
|
225
|
-
this.pdfDocument.scale = this.pdfDocument.scale - 0.2;
|
|
226
|
-
this.queueRenderPage(this.pdfDocument.pageNum);
|
|
227
|
-
}
|
|
228
|
-
ngOnInit() { }
|
|
229
|
-
/** It sends the document by email */
|
|
230
|
-
sendEmail() {
|
|
231
|
-
if (this.email && UtilString.validateEmail(this.email)) {
|
|
232
|
-
this.onSendEmail.emit({
|
|
233
|
-
to: this.email,
|
|
234
|
-
base64: this.base64
|
|
235
|
-
});
|
|
236
|
-
this.email = '';
|
|
237
|
-
return;
|
|
238
|
-
}
|
|
239
|
-
this.taostrService.warning('Correo electrónico es incorrecto');
|
|
240
|
-
}
|
|
241
|
-
/** It fires the event download */
|
|
242
|
-
download() {
|
|
243
|
-
const contentType = 'application/pdf';
|
|
244
|
-
const b64Data = this.base64;
|
|
245
|
-
const blob = this.b64toBlob(b64Data, contentType);
|
|
246
|
-
const blobUrl = URL.createObjectURL(blob);
|
|
247
|
-
var a = document.createElement('a');
|
|
248
|
-
document.body.appendChild(a);
|
|
249
|
-
a.style.display = 'none';
|
|
250
|
-
a.href = blobUrl;
|
|
251
|
-
a.download = this.filename;
|
|
252
|
-
a.click();
|
|
253
|
-
setTimeout(() => {
|
|
254
|
-
window.URL.revokeObjectURL(blobUrl);
|
|
255
|
-
document.body.removeChild(a);
|
|
256
|
-
this.onDownload.emit({
|
|
257
|
-
base64: this.base64
|
|
258
|
-
});
|
|
259
|
-
}, 200);
|
|
260
|
-
}
|
|
261
|
-
/** It fires when the html is changed */
|
|
262
|
-
change() {
|
|
263
|
-
this.generatePDF();
|
|
264
|
-
this.onChange.emit(this.html);
|
|
265
|
-
}
|
|
266
|
-
/** it allows to edit */
|
|
267
|
-
toggleEdit() {
|
|
268
|
-
this.edit = !this.edit;
|
|
269
|
-
}
|
|
270
|
-
/**
|
|
271
|
-
* it returns if is PdfDocument
|
|
272
|
-
*/
|
|
273
|
-
isPdfDocument() {
|
|
274
|
-
return this.pdfDocument !== undefined;
|
|
275
|
-
}
|
|
276
|
-
/**
|
|
277
|
-
* it returns if is Title
|
|
278
|
-
*/
|
|
279
|
-
isTitle() {
|
|
280
|
-
return this.title !== undefined;
|
|
281
|
-
}
|
|
282
|
-
/**
|
|
283
|
-
* it returns if is isPdfDoc
|
|
284
|
-
*/
|
|
285
|
-
isPdfDoc() {
|
|
286
|
-
return (this.pdfDocument &&
|
|
287
|
-
this.pdfDocument.pdfDoc != undefined &&
|
|
288
|
-
this.pdfDocument.pdfDoc != null);
|
|
289
|
-
}
|
|
290
|
-
/**
|
|
291
|
-
* it returns if is filename
|
|
292
|
-
*/
|
|
293
|
-
isFilename() {
|
|
294
|
-
return this.filename !== undefined;
|
|
295
|
-
}
|
|
296
|
-
/**
|
|
297
|
-
* it returns if is enableEdit
|
|
298
|
-
*/
|
|
299
|
-
isEnableEdit() {
|
|
300
|
-
return this.enableEdit == true;
|
|
301
|
-
}
|
|
302
|
-
/**
|
|
303
|
-
* it returns if is edit
|
|
304
|
-
*/
|
|
305
|
-
isEdit() {
|
|
306
|
-
return this.edit == true;
|
|
307
|
-
}
|
|
308
|
-
/**
|
|
309
|
-
* it returns if is enableEmail
|
|
310
|
-
*/
|
|
311
|
-
isEnableEmail() {
|
|
312
|
-
return this.enableEmail == true;
|
|
313
|
-
}
|
|
314
|
-
b64toBlob(b64Data, contentType = '', sliceSize = 512) {
|
|
315
|
-
const byteArrays = [];
|
|
316
|
-
const byteCharacters = atob(b64Data);
|
|
317
|
-
for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
|
|
318
|
-
const slice = byteCharacters.slice(offset, offset + sliceSize);
|
|
319
|
-
const byteNumbers = new Array(slice.length);
|
|
320
|
-
for (let i = 0; i < slice.length; i++) {
|
|
321
|
-
byteNumbers[i] = slice.charCodeAt(i);
|
|
322
|
-
}
|
|
323
|
-
const byteArray = new Uint8Array(byteNumbers);
|
|
324
|
-
byteArrays.push(byteArray);
|
|
325
|
-
}
|
|
326
|
-
const blob = new Blob(byteArrays, { type: contentType });
|
|
327
|
-
return blob;
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
PdfVisualizerComponent.DEFAULT_HEIGHT = 500;
|
|
331
|
-
PdfVisualizerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: PdfVisualizerComponent, deps: [{ token: i1.CommonService }, { token: i2.DomSanitizer }, { token: i3.ToastrService }, { token: i4.FileService }], target: i0.ɵɵFactoryTarget.Component });
|
|
332
|
-
PdfVisualizerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: PdfVisualizerComponent, selector: "pli-pdf-visualizer", inputs: { html: "html", header: "header", footer: "footer", marginTop: "marginTop", marginRight: "marginRight", marginBottom: "marginBottom", marginLeft: "marginLeft", font: "font", orientation: "orientation", size: "size", showPager: "showPager", repeatHeader: "repeatHeader", repeatFooter: "repeatFooter", headerHeight: "headerHeight", footerHeight: "footerHeight", enableEdit: "enableEdit", title: "title", height: "height", filename: "filename", enableEmail: "enableEmail", lang: "lang", urlFile: "urlFile" }, outputs: { onDownload: "onDownload", onSendEmail: "onSendEmail", onChange: "onChange" }, usesOnChanges: true, ngImport: i0, template: "<h3 class=\"pdf-visualizer-title\">{{ title }}</h3>\r\n<div class=\"pdf-visualizer-container\">\r\n\t<div class=\"pdf-visualizer-controls\" *ngIf=\"isPdfDocument() === true\">\r\n\t\t<div class=\"row\">\r\n\t\t\t<div class=\"col-md-7\">\r\n\t\t\t\t<div class=\"btn-toolbar\" role=\"toolbar\" aria-label=\"Toolbar with button groups\">\r\n\t\t\t\t\t<div class=\"btn-group btn-group-sm mr-2\" role=\"group\" aria-label=\"Second group\">\r\n\t\t\t\t\t\t<!-- zoom in-->\r\n\t\t\t\t\t\t<a\r\n\t\t\t\t\t\t\thref=\"Javascript:;\"\r\n\t\t\t\t\t\t\ttitle=\"Acercar\"\r\n\t\t\t\t\t\t\tdata-toggle=\"tooltip\"\r\n\t\t\t\t\t\t\tdata-placement=\"top\"\r\n\t\t\t\t\t\t\tclass=\"btn btn-outline-secondary\"\r\n\t\t\t\t\t\t\t(click)=\"onZoomIn()\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<span class=\"fa fa-search-plus\"></span>\r\n\t\t\t\t\t\t</a>\r\n\r\n\t\t\t\t\t\t<!-- zoom out-->\r\n\t\t\t\t\t\t<a\r\n\t\t\t\t\t\t\thref=\"Javascript:;\"\r\n\t\t\t\t\t\t\ttitle=\"Alejar\"\r\n\t\t\t\t\t\t\tdata-toggle=\"tooltip\"\r\n\t\t\t\t\t\t\tdata-placement=\"top\"\r\n\t\t\t\t\t\t\tclass=\"btn btn-outline-secondary\"\r\n\t\t\t\t\t\t\t(click)=\"onZoomOut()\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<span class=\"fa fa-search-minus\"></span>\r\n\t\t\t\t\t\t</a>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<div class=\"btn-group btn-group-sm mr-2\" role=\"group\" aria-label=\"Third group\">\r\n\t\t\t\t\t\t<!--prev -->\r\n\t\t\t\t\t\t<a\r\n\t\t\t\t\t\t\thref=\"Javascript:;\"\r\n\t\t\t\t\t\t\tclass=\"btn btn-outline-secondary\"\r\n\t\t\t\t\t\t\t(click)=\"onPrevPage()\"\r\n\t\t\t\t\t\t\ttitle=\"Anterior\"\r\n\t\t\t\t\t\t\tdata-toggle=\"tooltip\"\r\n\t\t\t\t\t\t\tdata-placement=\"top\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<span class=\"fa fa-chevron-left\"></span>\r\n\t\t\t\t\t\t</a>\r\n\r\n\t\t\t\t\t\t<!-- pagination-->\r\n\t\t\t\t\t\t<span class=\"btn btn-outline-secondary\" *ngIf=\"isPdfDoc() === true\">\r\n\t\t\t\t\t\t\tP\u00E1gina: {{ pdfDocument.pageNum }} / {{ pdfDocument.pdfDoc.numPages }}\r\n\t\t\t\t\t\t</span>\r\n\r\n\t\t\t\t\t\t<!--next -->\r\n\t\t\t\t\t\t<a\r\n\t\t\t\t\t\t\thref=\"Javascript:;\"\r\n\t\t\t\t\t\t\tclass=\"btn btn-outline-secondary\"\r\n\t\t\t\t\t\t\t(click)=\"onNextPage()\"\r\n\t\t\t\t\t\t\ttitle=\"Siguiente\"\r\n\t\t\t\t\t\t\tdata-toggle=\"tooltip\"\r\n\t\t\t\t\t\t\tdata-placement=\"top\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<span class=\"fa fa-chevron-right\"></span>\r\n\t\t\t\t\t\t</a>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<div class=\"btn-group btn-group-sm\" role=\"group\" aria-label=\"First group\">\r\n\t\t\t\t\t\t<!-- download-->\r\n\t\t\t\t\t\t<a\r\n\t\t\t\t\t\t\t[download]=\"filename\"\r\n\t\t\t\t\t\t\t*ngIf=\"isFilename() === true\"\r\n\t\t\t\t\t\t\t(click)=\"download()\"\r\n\t\t\t\t\t\t\tclass=\"btn btn-outline-secondary\"\r\n\t\t\t\t\t\t\ttitle=\"Descargar\"\r\n\t\t\t\t\t\t\tdata-toggle=\"tooltip\"\r\n\t\t\t\t\t\t\tdata-placement=\"top\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<!-- [href]=\"\r\n\t\t\t\t\t\t\tsanitization.bypassSecurityTrustUrl(\r\n\t\t\t\t\t\t\t\t'data:application/pdf;base64,' + this.base64\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\" -->\r\n\t\t\t\t\t\t\t<span class=\"fa fa-download\"></span>\r\n\t\t\t\t\t\t</a>\r\n\r\n\t\t\t\t\t\t<!-- toggle edit--\r\n <a href=\"Javascript:;\" *ngIf=\"isEnableEdit() === true\" class=\"btn btn-outline-secondary\" title=\"Editar\"\r\n data-toggle=\"tooltip\" data-placement=\"top\" (click)=\"toggleEdit()\">\r\n <span class=\"fa fa-edit\"></span>\r\n </a>\r\n\r\n <!-- generate pdf-->\r\n\t\t\t\t\t\t<a\r\n\t\t\t\t\t\t\thref=\"Javascript:;\"\r\n\t\t\t\t\t\t\t*ngIf=\"isEdit() === true\"\r\n\t\t\t\t\t\t\tclass=\"btn btn-outline-secondary\"\r\n\t\t\t\t\t\t\ttitle=\"Generar\"\r\n\t\t\t\t\t\t\tdata-toggle=\"tooltip\"\r\n\t\t\t\t\t\t\tdata-placement=\"top\"\r\n\t\t\t\t\t\t\t(click)=\"change()\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<span class=\"fa fa-play\"></span>\r\n\t\t\t\t\t\t</a>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"col-md-5 pull-right\" *ngIf=\"isEnableEmail() === true\">\r\n\t\t\t\t<div class=\"input-group input-group-sm\">\r\n\t\t\t\t\t<label for=\"pdf-visualizer-email\" class=\"pdf\">\r\n\t\t\t\t\t\tEnviar mensaje a\r\n\t\t\t\t\t</label>\r\n\t\t\t\t\t<input\r\n\t\t\t\t\t\ttype=\"email\"\r\n\t\t\t\t\t\tid=\"pdf-visualizer-email\"\r\n\t\t\t\t\t\tname=\"pdf-visualizer-email\"\r\n\t\t\t\t\t\trequired=\"true\"\r\n\t\t\t\t\t\tclass=\"form-control\"\r\n\t\t\t\t\t\tplaceholder=\"Correo electr\u00F3nico\"\r\n\t\t\t\t\t\t[(ngModel)]=\"email\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<div class=\"input-group-append\">\r\n\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\tclass=\"btn btn-outline-secondary\"\r\n\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t(click)=\"sendEmail()\"\r\n\t\t\t\t\t\t\ttitle=\"Enviar\"\r\n\t\t\t\t\t\t\tdata-toggle=\"tooltip\"\r\n\t\t\t\t\t\t\tdata-placement=\"top\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<img\r\n\t\t\t\t\t\t\t\tsrc=\"http://giro360.co/zona360/colfuturo/PLIC/img/export.svg\"\r\n\t\t\t\t\t\t\t\talt=\"\"\r\n\t\t\t\t\t\t\t\twidth=\"16\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</button>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<div class=\"pdf-visualizer-dashboard\">\r\n\t\t<div class=\"row\">\r\n\t\t\t<div class=\"col-md-5\" *ngIf=\"isEdit() === true\">\r\n\t\t\t\t<textarea\r\n\t\t\t\t\tclass=\"form-control\"\r\n\t\t\t\t\t[style.height]=\"getHeight()\"\r\n\t\t\t\t\tstyle=\"resize:vertical;\"\r\n\t\t\t\t\t[(ngModel)]=\"html\"\r\n\t\t\t\t></textarea>\r\n\t\t\t</div>\r\n\t\t\t<div [ngClass]=\"{ 'col-md-7': edit === true, 'col-md-12': !edit }\">\r\n\t\t\t\t<div\r\n\t\t\t\t\tid=\"pdf-scrollable\"\r\n\t\t\t\t\tclass=\"pdf-visualizer-scrollable\"\r\n\t\t\t\t\t[style.height]=\"getHeight()\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<canvas id=\"pdf-canvas\" class=\"pdf-visualizer-canvas\"> </canvas>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n", styles: [".pdf-visualizer-container{border:1px solid #eee;margin:10px 0}.pdf-visualizer-dashboard,.pdf-visualizer-controls{background-color:#f5f5f5;padding:15px}.pdf-visualizer-dashboard{border-bottom:1px solid #eee;border-top:1px solid #eee}.pdf-visualizer-title{font-size:1.4rem;color:red;text-align:center;margin-bottom:1em}.pdf-visualizer-canvas{cursor:move}.text-align-center{text-align:center}.text-align-left{text-align:left}.text-align-right{text-align:right}.margin-left{margin-left:5px}.pdf-visualizer-scrollable{overflow:hidden;text-align:center}label.pdf{margin-right:.6em;line-height:24px}button.btn-outline-secondary{height:26px;line-height:12px!important}\n"], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
333
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: PdfVisualizerComponent, decorators: [{
|
|
334
|
-
type: Component,
|
|
335
|
-
args: [{ selector: 'pli-pdf-visualizer', template: "<h3 class=\"pdf-visualizer-title\">{{ title }}</h3>\r\n<div class=\"pdf-visualizer-container\">\r\n\t<div class=\"pdf-visualizer-controls\" *ngIf=\"isPdfDocument() === true\">\r\n\t\t<div class=\"row\">\r\n\t\t\t<div class=\"col-md-7\">\r\n\t\t\t\t<div class=\"btn-toolbar\" role=\"toolbar\" aria-label=\"Toolbar with button groups\">\r\n\t\t\t\t\t<div class=\"btn-group btn-group-sm mr-2\" role=\"group\" aria-label=\"Second group\">\r\n\t\t\t\t\t\t<!-- zoom in-->\r\n\t\t\t\t\t\t<a\r\n\t\t\t\t\t\t\thref=\"Javascript:;\"\r\n\t\t\t\t\t\t\ttitle=\"Acercar\"\r\n\t\t\t\t\t\t\tdata-toggle=\"tooltip\"\r\n\t\t\t\t\t\t\tdata-placement=\"top\"\r\n\t\t\t\t\t\t\tclass=\"btn btn-outline-secondary\"\r\n\t\t\t\t\t\t\t(click)=\"onZoomIn()\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<span class=\"fa fa-search-plus\"></span>\r\n\t\t\t\t\t\t</a>\r\n\r\n\t\t\t\t\t\t<!-- zoom out-->\r\n\t\t\t\t\t\t<a\r\n\t\t\t\t\t\t\thref=\"Javascript:;\"\r\n\t\t\t\t\t\t\ttitle=\"Alejar\"\r\n\t\t\t\t\t\t\tdata-toggle=\"tooltip\"\r\n\t\t\t\t\t\t\tdata-placement=\"top\"\r\n\t\t\t\t\t\t\tclass=\"btn btn-outline-secondary\"\r\n\t\t\t\t\t\t\t(click)=\"onZoomOut()\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<span class=\"fa fa-search-minus\"></span>\r\n\t\t\t\t\t\t</a>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<div class=\"btn-group btn-group-sm mr-2\" role=\"group\" aria-label=\"Third group\">\r\n\t\t\t\t\t\t<!--prev -->\r\n\t\t\t\t\t\t<a\r\n\t\t\t\t\t\t\thref=\"Javascript:;\"\r\n\t\t\t\t\t\t\tclass=\"btn btn-outline-secondary\"\r\n\t\t\t\t\t\t\t(click)=\"onPrevPage()\"\r\n\t\t\t\t\t\t\ttitle=\"Anterior\"\r\n\t\t\t\t\t\t\tdata-toggle=\"tooltip\"\r\n\t\t\t\t\t\t\tdata-placement=\"top\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<span class=\"fa fa-chevron-left\"></span>\r\n\t\t\t\t\t\t</a>\r\n\r\n\t\t\t\t\t\t<!-- pagination-->\r\n\t\t\t\t\t\t<span class=\"btn btn-outline-secondary\" *ngIf=\"isPdfDoc() === true\">\r\n\t\t\t\t\t\t\tP\u00E1gina: {{ pdfDocument.pageNum }} / {{ pdfDocument.pdfDoc.numPages }}\r\n\t\t\t\t\t\t</span>\r\n\r\n\t\t\t\t\t\t<!--next -->\r\n\t\t\t\t\t\t<a\r\n\t\t\t\t\t\t\thref=\"Javascript:;\"\r\n\t\t\t\t\t\t\tclass=\"btn btn-outline-secondary\"\r\n\t\t\t\t\t\t\t(click)=\"onNextPage()\"\r\n\t\t\t\t\t\t\ttitle=\"Siguiente\"\r\n\t\t\t\t\t\t\tdata-toggle=\"tooltip\"\r\n\t\t\t\t\t\t\tdata-placement=\"top\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<span class=\"fa fa-chevron-right\"></span>\r\n\t\t\t\t\t\t</a>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<div class=\"btn-group btn-group-sm\" role=\"group\" aria-label=\"First group\">\r\n\t\t\t\t\t\t<!-- download-->\r\n\t\t\t\t\t\t<a\r\n\t\t\t\t\t\t\t[download]=\"filename\"\r\n\t\t\t\t\t\t\t*ngIf=\"isFilename() === true\"\r\n\t\t\t\t\t\t\t(click)=\"download()\"\r\n\t\t\t\t\t\t\tclass=\"btn btn-outline-secondary\"\r\n\t\t\t\t\t\t\ttitle=\"Descargar\"\r\n\t\t\t\t\t\t\tdata-toggle=\"tooltip\"\r\n\t\t\t\t\t\t\tdata-placement=\"top\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<!-- [href]=\"\r\n\t\t\t\t\t\t\tsanitization.bypassSecurityTrustUrl(\r\n\t\t\t\t\t\t\t\t'data:application/pdf;base64,' + this.base64\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\" -->\r\n\t\t\t\t\t\t\t<span class=\"fa fa-download\"></span>\r\n\t\t\t\t\t\t</a>\r\n\r\n\t\t\t\t\t\t<!-- toggle edit--\r\n <a href=\"Javascript:;\" *ngIf=\"isEnableEdit() === true\" class=\"btn btn-outline-secondary\" title=\"Editar\"\r\n data-toggle=\"tooltip\" data-placement=\"top\" (click)=\"toggleEdit()\">\r\n <span class=\"fa fa-edit\"></span>\r\n </a>\r\n\r\n <!-- generate pdf-->\r\n\t\t\t\t\t\t<a\r\n\t\t\t\t\t\t\thref=\"Javascript:;\"\r\n\t\t\t\t\t\t\t*ngIf=\"isEdit() === true\"\r\n\t\t\t\t\t\t\tclass=\"btn btn-outline-secondary\"\r\n\t\t\t\t\t\t\ttitle=\"Generar\"\r\n\t\t\t\t\t\t\tdata-toggle=\"tooltip\"\r\n\t\t\t\t\t\t\tdata-placement=\"top\"\r\n\t\t\t\t\t\t\t(click)=\"change()\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<span class=\"fa fa-play\"></span>\r\n\t\t\t\t\t\t</a>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"col-md-5 pull-right\" *ngIf=\"isEnableEmail() === true\">\r\n\t\t\t\t<div class=\"input-group input-group-sm\">\r\n\t\t\t\t\t<label for=\"pdf-visualizer-email\" class=\"pdf\">\r\n\t\t\t\t\t\tEnviar mensaje a\r\n\t\t\t\t\t</label>\r\n\t\t\t\t\t<input\r\n\t\t\t\t\t\ttype=\"email\"\r\n\t\t\t\t\t\tid=\"pdf-visualizer-email\"\r\n\t\t\t\t\t\tname=\"pdf-visualizer-email\"\r\n\t\t\t\t\t\trequired=\"true\"\r\n\t\t\t\t\t\tclass=\"form-control\"\r\n\t\t\t\t\t\tplaceholder=\"Correo electr\u00F3nico\"\r\n\t\t\t\t\t\t[(ngModel)]=\"email\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<div class=\"input-group-append\">\r\n\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\tclass=\"btn btn-outline-secondary\"\r\n\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t(click)=\"sendEmail()\"\r\n\t\t\t\t\t\t\ttitle=\"Enviar\"\r\n\t\t\t\t\t\t\tdata-toggle=\"tooltip\"\r\n\t\t\t\t\t\t\tdata-placement=\"top\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<img\r\n\t\t\t\t\t\t\t\tsrc=\"http://giro360.co/zona360/colfuturo/PLIC/img/export.svg\"\r\n\t\t\t\t\t\t\t\talt=\"\"\r\n\t\t\t\t\t\t\t\twidth=\"16\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</button>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<div class=\"pdf-visualizer-dashboard\">\r\n\t\t<div class=\"row\">\r\n\t\t\t<div class=\"col-md-5\" *ngIf=\"isEdit() === true\">\r\n\t\t\t\t<textarea\r\n\t\t\t\t\tclass=\"form-control\"\r\n\t\t\t\t\t[style.height]=\"getHeight()\"\r\n\t\t\t\t\tstyle=\"resize:vertical;\"\r\n\t\t\t\t\t[(ngModel)]=\"html\"\r\n\t\t\t\t></textarea>\r\n\t\t\t</div>\r\n\t\t\t<div [ngClass]=\"{ 'col-md-7': edit === true, 'col-md-12': !edit }\">\r\n\t\t\t\t<div\r\n\t\t\t\t\tid=\"pdf-scrollable\"\r\n\t\t\t\t\tclass=\"pdf-visualizer-scrollable\"\r\n\t\t\t\t\t[style.height]=\"getHeight()\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<canvas id=\"pdf-canvas\" class=\"pdf-visualizer-canvas\"> </canvas>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n", styles: [".pdf-visualizer-container{border:1px solid #eee;margin:10px 0}.pdf-visualizer-dashboard,.pdf-visualizer-controls{background-color:#f5f5f5;padding:15px}.pdf-visualizer-dashboard{border-bottom:1px solid #eee;border-top:1px solid #eee}.pdf-visualizer-title{font-size:1.4rem;color:red;text-align:center;margin-bottom:1em}.pdf-visualizer-canvas{cursor:move}.text-align-center{text-align:center}.text-align-left{text-align:left}.text-align-right{text-align:right}.margin-left{margin-left:5px}.pdf-visualizer-scrollable{overflow:hidden;text-align:center}label.pdf{margin-right:.6em;line-height:24px}button.btn-outline-secondary{height:26px;line-height:12px!important}\n"] }]
|
|
336
|
-
}], ctorParameters: function () { return [{ type: i1.CommonService }, { type: i2.DomSanitizer }, { type: i3.ToastrService }, { type: i4.FileService }]; }, propDecorators: { html: [{
|
|
337
|
-
type: Input
|
|
338
|
-
}], header: [{
|
|
339
|
-
type: Input
|
|
340
|
-
}], footer: [{
|
|
341
|
-
type: Input
|
|
342
|
-
}], marginTop: [{
|
|
343
|
-
type: Input
|
|
344
|
-
}], marginRight: [{
|
|
345
|
-
type: Input
|
|
346
|
-
}], marginBottom: [{
|
|
347
|
-
type: Input
|
|
348
|
-
}], marginLeft: [{
|
|
349
|
-
type: Input
|
|
350
|
-
}], font: [{
|
|
351
|
-
type: Input
|
|
352
|
-
}], orientation: [{
|
|
353
|
-
type: Input
|
|
354
|
-
}], size: [{
|
|
355
|
-
type: Input
|
|
356
|
-
}], showPager: [{
|
|
357
|
-
type: Input
|
|
358
|
-
}], repeatHeader: [{
|
|
359
|
-
type: Input
|
|
360
|
-
}], repeatFooter: [{
|
|
361
|
-
type: Input
|
|
362
|
-
}], headerHeight: [{
|
|
363
|
-
type: Input
|
|
364
|
-
}], footerHeight: [{
|
|
365
|
-
type: Input
|
|
366
|
-
}], enableEdit: [{
|
|
367
|
-
type: Input
|
|
368
|
-
}], title: [{
|
|
369
|
-
type: Input
|
|
370
|
-
}], height: [{
|
|
371
|
-
type: Input
|
|
372
|
-
}], filename: [{
|
|
373
|
-
type: Input
|
|
374
|
-
}], enableEmail: [{
|
|
375
|
-
type: Input
|
|
376
|
-
}], onDownload: [{
|
|
377
|
-
type: Output
|
|
378
|
-
}], onSendEmail: [{
|
|
379
|
-
type: Output
|
|
380
|
-
}], onChange: [{
|
|
381
|
-
type: Output
|
|
382
|
-
}], lang: [{
|
|
383
|
-
type: Input
|
|
384
|
-
}], urlFile: [{
|
|
385
|
-
type: Input
|
|
386
|
-
}] } });
|
|
387
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLXZpc3VhbGl6ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcGxpLWNvbW1vbnMvc3JjL2xpYi9jb21wb25lbnRzL3BkZi12aXN1YWxpemVyL3BkZi12aXN1YWxpemVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy9saWIvY29tcG9uZW50cy9wZGYtdmlzdWFsaXplci9wZGYtdmlzdWFsaXplci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUlULEtBQUssRUFFTCxZQUFZLEVBRVosTUFBTSxFQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxNQUFNLE1BQU0sc0JBQXNCLENBQUM7QUFDL0MsT0FBTyxPQUFPLE1BQU0sc0JBQXNCLENBQUM7QUFFM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7QUFLNUUsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDO0FBQ3JCLDRCQUE0QjtBQU81QixNQUFNLE9BQU8sc0JBQXNCO0lBcUVsQyxZQUNXLGFBQTRCLEVBQy9CLFlBQTBCLEVBQ3pCLGFBQTRCLEVBQzVCLFdBQXdCO1FBSHRCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQy9CLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQ3pCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBbkRqQyxpQkFBaUI7UUFDUixjQUFTLEdBQVksSUFBSSxDQUFDO1FBQ25DLG9CQUFvQjtRQUNYLGlCQUFZLEdBQVksSUFBSSxDQUFDO1FBQ3RDLG1CQUFtQjtRQUNWLGlCQUFZLEdBQVksSUFBSSxDQUFDO1FBZ0J0QyxpREFBaUQ7UUFDdkMs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QUFDO1NBQzNCO1FBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDekQsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDOztBQXhaTSxxQ0FBYyxHQUFHLEdBQUcsQ0FBQzttSEFEaEIsc0JBQXNCO3VHQUF0QixzQkFBc0IsMHFCQzNCbkMseXdMQWlLQTsyRkR0SWEsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNDLG9CQUFvQjtxTEFPckIsSUFBSTtzQkFBWixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTTtnQkFFRyxXQUFXO3NCQUFwQixNQUFNO2dCQUVHLFFBQVE7c0JBQWpCLE1BQU07Z0JBRUUsSUFBSTtzQkFBWixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcblx0Q29tcG9uZW50LFxyXG5cdE9uSW5pdCxcclxuXHRPbkNoYW5nZXMsXHJcblx0U2ltcGxlQ2hhbmdlcyxcclxuXHRJbnB1dCxcclxuXHRTaW1wbGVDaGFuZ2UsXHJcblx0RXZlbnRFbWl0dGVyLFxyXG5cdENoYW5nZURldGVjdG9yUmVmLFxyXG5cdE91dHB1dFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBQREZKU18gZnJvbSAncGRmanMtZGlzdC9idWlsZC9wZGYnO1xyXG5pbXBvcnQgUGFuem9vbSBmcm9tICdwYW56b29tL2Rpc3QvcGFuem9vbSc7XHJcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb21tb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFBkZkRvY3VtZW50LCBVdGlsU3RyaW5nLCBFUHJvY2VzbywgUmVxdWVzdFBkZiB9IGZyb20gJ25nLXBsaS11dGlsJztcclxuaW1wb3J0IHsgRmlsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9maWxlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xyXG5cclxuY29uc3QgUERGSlMgPSBQREZKU187XHJcbi8vIGNvbnN0IHBhbnpvb20gPSBwYW56b29tXztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAncGxpLXBkZi12aXN1YWxpemVyJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vcGRmLXZpc3VhbGl6ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWycuL3BkZi12aXN1YWxpemVyLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGRmVmlzdWFsaXplckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuXHRzdGF0aWMgREVGQVVMVF9IRUlHSFQgPSA1MDA7XHJcblx0LyoqIHRleHQgaHRtbCB3aWxsIGJlY29tZSBwZGYgKi9cclxuXHRASW5wdXQoKSBodG1sOiBzdHJpbmc7XHJcblx0LyoqIHRleHQgaGVhZGVyIHdpbGwgYmVjb21lIHBkZiAqL1xyXG5cdEBJbnB1dCgpIGhlYWRlcjogc3RyaW5nO1xyXG5cdC8qKiB0ZXh0IGZvb3RlciB3aWxsIGJlY29tZSBwZGYgKi9cclxuXHRASW5wdXQoKSBmb290ZXI6IHN0cmluZztcclxuXHQvKiogaXQgY29udGFpbnMgdGhlIG1hcmdpblRvcCB3aWxsIGJlIGFwcGxpZWQgdG8gdGhlIHBkZiAqL1xyXG5cdEBJbnB1dCgpIG1hcmdpblRvcDogbnVtYmVyO1xyXG5cdC8qKiBpdCBjb250YWlucyB0aGUgbWFyZ2luUmlnaHQgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBwZGYgKi9cclxuXHRASW5wdXQoKSBtYXJnaW5SaWdodDogbnVtYmVyO1xyXG5cdC8qKiBpdCBjb250YWlucyB0aGUgbWFyZ2luQm90dG9tIHdpbGwgYmUgYXBwbGllZCB0byB0aGUgcGRmICovXHJcblx0QElucHV0KCkgbWFyZ2luQm90dG9tOiBudW1iZXI7XHJcblx0LyoqIGl0IGNvbnRhaW5zIHRoZSBtYXJnaW5MZWZ0IHdpbGwgYmUgYXBwbGllZCB0byB0aGUgcGRmICovXHJcblx0QElucHV0KCkgbWFyZ2luTGVmdDogbnVtYmVyO1xyXG5cdC8qKiBJdCBjb250YWlucyB0aGUgZm9udCBvZiB0aGUgaHRtbCAqL1xyXG5cdEBJbnB1dCgpIGZvbnQ6IHN0cmluZztcclxuXHQvKiogSXQgY29udGFpbnMgdGhlIHBkZiBvcmllbnRhdGlvbiAqL1xyXG5cdEBJbnB1dCgpIG9yaWVudGF0aW9uOiBudW1iZXI7XHJcblx0LyoqIEl0IGNvbnRhaW5zIHRoZSBwZGYgc2l6ZSAqL1xyXG5cdEBJbnB1dCgpIHNpemU6IG51bWJlcjtcclxuXHQvKiogc2hvdyBwYWdlciAqL1xyXG5cdEBJbnB1dCgpIHNob3dQYWdlcjogYm9vbGVhbiA9IHRydWU7XHJcblx0LyoqIHJlcGVhdCBoZWFkZXIgKi9cclxuXHRASW5wdXQoKSByZXBlYXRIZWFkZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG5cdC8qKiByZXBlYXQgZm9vdGVyKi9cclxuXHRASW5wdXQoKSByZXBlYXRGb290ZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG5cdC8qKiBIZWFkZXIgaGVpZ2h0ICovXHJcblx0QElucHV0KCkgaGVhZGVySGVpZ2h0OiBudW1iZXI7XHJcblx0LyoqIEZvb3RlciBoZWlnaHQgKi9cclxuXHRASW5wdXQoKSBmb290ZXJIZWlnaHQ6IG51bWJlcjtcclxuXHJcblx0LyoqIEl0IHZlcmlmaWVzIGlmIGlzIHBvc3NpYmxlIHRvIGVkaXQgaHRtbCAqL1xyXG5cdEBJbnB1dCgpIGVuYWJsZUVkaXQ6IGJvb2xlYW47XHJcblx0LyoqIHRpdGxlIG9mIHRoZSBwZGYgKi9cclxuXHRASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xyXG5cdC8qKiB0aGUgaGVpZ2h0IG9mIHRoZSBwZGYgY2FudmFzICovXHJcblx0QElucHV0KCkgaGVpZ2h0OiBudW1iZXI7XHJcblx0LyoqIFRoZSBmaWxlbmFtZSBvZiB0aGUgcGRmICovXHJcblx0QElucHV0KCkgZmlsZW5hbWU6IHN0cmluZztcclxuXHQvKiogSXQgdmVyaWZpZXMgaWYgaXQgYWxsb3dzIHRvIHNlbmQgdGhlIGVtYWlsICovXHJcblx0QElucHV0KCkgZW5hYmxlRW1haWw6IGJvb2xlYW47XHJcblx0LyoqIEl0IGZpcmVzIHdoZW4gdGhlIGZpbGUgaGFzIGJlZW4gZG93bmxvYWRlZCAqL1xyXG5cdEBPdXRwdXQoKSBvbkRvd25sb2FkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cdC8qKiBJdCBmaXJlcyB3aGVuIHRoZSBuYW1lIGhhcyBiZWVuIHNlbnQgKi9cclxuXHRAT3V0cHV0KCkgb25TZW5kRW1haWw6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblx0LyoqIEl0IGZpcmVzIHdoZW4gdGhlIGh0bWwgaGFzIGJlZW4gbW9kaWZpZWQgKi9cclxuXHRAT3V0cHV0KCkgb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblx0LyoqIEl0IGNvbnRhaW5zIHRoZSBsYW5nIG9mIHRoZSBwZGYgKi9cclxuXHRASW5wdXQoKSBsYW5nOiBzdHJpbmc7XHJcblx0LyoqIFRoZSB1cmwgb2YgdGhlIHBkZiAqL1xyXG5cdEBJbnB1dCgpIHVybEZpbGU6IHN0cmluZztcclxuXHJcblx0ZW1haWw6IHN0cmluZztcclxuXHJcblx0LyoqIGJhc2U2NCBhcyByZXN1bHQgb2YgaHRtbCAyIHBkZiAqL1xyXG5cdGJhc2U2NDogc3RyaW5nO1xyXG5cdC8qKiBpdCB2ZXJpZmllcyBpZiBjb21wb25lbnQgaXMgcmVhZHkgKi9cclxuXHRyZWFkeTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdC8qKiBJdCBjb250aW5hcyB0aGUgYWJzdHJhY3Rpb24gb2YgcGRmIGRvY3VtZW50ICovXHJcblx0cGRmRG9jdW1lbnQ6IFBkZkRvY3VtZW50O1xyXG5cclxuXHQvKiogaXQgY29udGFpbnMgdGhlIGlkIG9mIGNhbnZhcyAqL1xyXG5cdGlkX2NhbnZhczogc3RyaW5nID0gJ3BkZi1jYW52YXMnO1xyXG5cclxuXHQvKiogSXQgYWxsb3dzIHRvIGVkaXQgaHRtbCAqL1xyXG5cdGVkaXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcm90ZWN0ZWQgY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSxcclxuXHRcdHB1YmxpYyBzYW5pdGl6YXRpb246IERvbVNhbml0aXplcixcclxuXHRcdHByaXZhdGUgdGFvc3RyU2VydmljZTogVG9hc3RyU2VydmljZSxcclxuXHRcdHByaXZhdGUgZmlsZVNlcnZpY2U6IEZpbGVTZXJ2aWNlXHJcblx0KSB7fVxyXG5cclxuXHQvLyBpdCByZXNvbHZlcyB3aGVuIHRoZSBodG1sIGlzIGNoYW5nZWRcclxuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcblx0XHRjb25zdCBodG1sOiBTaW1wbGVDaGFuZ2UgPSBjaGFuZ2VzLmh0bWw7XHJcblx0XHRjb25zdCB1cmxGaWxlOiBTaW1wbGVDaGFuZ2UgPSBjaGFuZ2VzLnVybEZpbGU7XHJcblx0XHRpZiAoaHRtbCAmJiBodG1sLmN1cnJlbnRWYWx1ZSkge1xyXG5cdFx0XHR0aGlzLmh0bWwgPSBodG1sLmN1cnJlbnRWYWx1ZTtcclxuXHRcdFx0dGhpcy5nZW5lcmF0ZVBERigpO1xyXG5cdFx0fSBlbHNlIGlmICh1cmxGaWxlICYmIHVybEZpbGUuY3VycmVudFZhbHVlKSB7XHJcblx0XHRcdHRoaXMudXJsRmlsZSA9IHVybEZpbGUuY3VycmVudFZhbHVlO1xyXG5cdFx0XHR0aGlzLmdlbmVyYXRlUERGKCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLnJlYWR5ID0gZmFsc2U7XHJcblx0XHRcdGlmICh0aGlzLnBkZkRvY3VtZW50ICYmIHRoaXMucGRmRG9jdW1lbnQuY2FudmFzKSB7XHJcblx0XHRcdFx0bGV0IGNhbnZhcyA9IHRoaXMucGRmRG9jdW1lbnQuY2FudmFzO1xyXG5cdFx0XHRcdHZhciBjdHggPSB0aGlzLnBkZkRvY3VtZW50LmNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xyXG5cdFx0XHRcdGN0eC5jbGVhclJlY3QoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTtcclxuXHRcdFx0XHR0aGlzLnBkZkRvY3VtZW50ID0gdW5kZWZpbmVkO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKiogSXQgZ2VuZXJhdGVzIHRoZSBwZGYgKi9cclxuXHRnZW5lcmF0ZVBERigpIHtcclxuXHRcdGlmICghVXRpbFN0cmluZy5pc1ZhbGlkKHRoaXMuaHRtbCkgJiYgVXRpbFN0cmluZy5pc1ZhbGlkKHRoaXMudXJsRmlsZSkpIHtcclxuXHRcdFx0dGhpcy5jb21tb25TZXJ2aWNlLmdldEJhc2U2NFBkZkJ5VXJsKHRoaXMudXJsRmlsZSkuc3Vic2NyaWJlKFxyXG5cdFx0XHRcdChyZXN1bHQpID0+IHtcclxuXHRcdFx0XHRcdHRoaXMuc2hvd0Jhc2U2NFBkZihyZXN1bHQpO1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0KGVycm9yKSA9PiB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZygnRXJyb3IgdHJ5aW5nIHRvIHJlbmRlciBQREYnLCBlcnJvcik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Ly8gaWYgaHRtbCB3YXMgY2hhbmdlZFxyXG5cdFx0XHRsZXQgcmVxdWVzdFBkZjogUmVxdWVzdFBkZiA9IG5ldyBSZXF1ZXN0UGRmKCk7XHJcblx0XHRcdHJlcXVlc3RQZGYuaHRtbCA9IHRoaXMuaHRtbDtcclxuXHRcdFx0cmVxdWVzdFBkZi5oZWFkZXIgPSB0aGlzLmhlYWRlcjtcclxuXHRcdFx0cmVxdWVzdFBkZi5mb290ZXIgPSB0aGlzLmZvb3RlcjtcclxuXHRcdFx0cmVxdWVzdFBkZi5sYW5nID0gdGhpcy5sYW5nO1xyXG5cdFx0XHRyZXF1ZXN0UGRmLm1hcmdpblRvcCA9IHRoaXMubWFyZ2luVG9wO1xyXG5cdFx0XHRyZXF1ZXN0UGRmLm1hcmdpblJpZ2h0ID0gdGhpcy5tYXJnaW5SaWdodDtcclxuXHRcdFx0cmVxdWVzdFBkZi5tYXJnaW5Cb3R0b20gPSB0aGlzLm1hcmdpbkJvdHRvbTtcclxuXHRcdFx0cmVxdWVzdFBkZi5tYXJnaW5MZWZ0ID0gdGhpcy5tYXJnaW5MZWZ0O1xyXG5cdFx0XHRyZXF1ZXN0UGRmLm9yaWVudGF0aW9uID0gdGhpcy5vcmllbnRhdGlvbjtcclxuXHRcdFx0cmVxdWVzdFBkZi5zaXplID0gdGhpcy5zaXplO1xyXG5cdFx0XHRyZXF1ZXN0UGRmLmZvbnQgPSB0aGlzLmZvbnQ7XHJcblx0XHRcdHJlcXVlc3RQZGYucmVwZWF0SGVhZGVyID0gdGhpcy5yZXBlYXRIZWFkZXI7XHJcblx0XHRcdHJlcXVlc3RQZGYucmVwZWF0Rm9vdGVyID0gdGhpcy5yZXBlYXRGb290ZXI7XHJcblx0XHRcdHJlcXVlc3RQZGYuc2hvd1BhZ2VyID0gdGhpcy5zaG93UGFnZXI7XHJcblx0XHRcdHJlcXVlc3RQZGYuaGVhZGVySGVpZ2h0ID0gdGhpcy5oZWFkZXJIZWlnaHQ7XHJcblx0XHRcdHJlcXVlc3RQZGYuZm9vdGVySGVpZ2h0ID0gdGhpcy5mb290ZXJIZWlnaHQ7XHJcblxyXG5cdFx0XHR0aGlzLmNvbW1vblNlcnZpY2UuZ2V0QmFzZTY0UGRmKHJlcXVlc3RQZGYpLnN1YnNjcmliZShcclxuXHRcdFx0XHQocmVzdWx0KSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLnNob3dCYXNlNjRQZGYocmVzdWx0KTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ0Vycm9yIHRyeWluZyB0byByZW5kZXIgUERGJywgZXJyb3IpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHNob3dCYXNlNjRQZGYocmVzdWx0KSB7XHJcblx0XHR0aGlzLmJhc2U2NCA9IHJlc3VsdC5iYXNlNjQ7XHJcblx0XHR2YXIgZGF0YSA9IGF0b2IodGhpcy5iYXNlNjQpO1xyXG4gICAgICBQREZKUy53b3JrZXJTcmMgID0gJ2h0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3BkZi5qcy8yLjE2LjEwNS9wZGYud29ya2VyLmpzJztcclxuICAgICAgaWYgKFBERkpTLkdsb2JhbFdvcmtlck9wdGlvbnMpXHJcblx0XHRcdFBERkpTLkdsb2JhbFdvcmtlck9wdGlvbnMud29ya2VyU3JjID1cclxuICAgICAgICAnaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvcGRmLmpzLzIuMTYuMTA1L3BkZi53b3JrZXIuanMnO1xyXG5cdFx0Ly8gY3JlYXRlIGluc3RhbmNlIG9mIFBkZkRvY3VtZW50IHdpdGggdGhlIGlkIG9mIGNhbnZhc1xyXG5cdFx0Ly8gY3JlYXRlIGluc3RhbmNlIG9mIFBkZkRvY3VtZW50IHdpdGggdGhlIGlkIG9mIGNhbnZhc1xyXG5cdFx0dGhpcy5wZGZEb2N1bWVudCA9IG5ldyBQZGZEb2N1bWVudCh0aGlzLmlkX2NhbnZhcyk7XHJcblxyXG5cdFx0Ly8gYXNzaWduIHZhcmlhYmxlcyBvdXQgb2Ygc2NvcGVcclxuXHRcdGxldCBwZGZkb2N1bWVudDogUGRmRG9jdW1lbnQgPSB0aGlzLnBkZkRvY3VtZW50O1xyXG5cdFx0UGFuem9vbSh0aGlzLnBkZkRvY3VtZW50LmNhbnZhcywge1xyXG5cdFx0XHRzbW9vdGhTY3JvbGw6IGZhbHNlXHJcblx0XHR9KTtcclxuXHRcdGxldCBzZWxmID0gdGhpcztcclxuXHRcdGxldCByZWFkeSA9IHRoaXMucmVhZHk7XHJcblxyXG5cdFx0Y29uc3QgcGRmTG9hZGluZ1Rhc2sgPSBQREZKUy5nZXREb2N1bWVudCh7IGRhdGE6IGRhdGEgfSk7XHJcblx0XHQvLyBKUCAtIGhlcmUgd2UgYXNrIGlmIHRoZSBwcm9taXNlIHN1cHBvcnRzIHRoZSBuZXcgdmVyc2lvbiBwZGZMb2FkaW5nVGFzay5wcm9taXNlXHJcblx0XHRjb25zdCBwcm9taXNlID0gcGRmTG9hZGluZ1Rhc2sucHJvbWlzZSA/IHBkZkxvYWRpbmdUYXNrLnByb21pc2UgOiBwZGZMb2FkaW5nVGFzaztcclxuXHRcdHByb21pc2UudGhlbihmdW5jdGlvbiAocGRmRG9jXykge1xyXG5cdFx0XHRwZGZkb2N1bWVudC5wZGZEb2MgPSBwZGZEb2NfO1xyXG5cdFx0XHRzZWxmLnJlbmRlclBhZ2UoMSk7XHJcblx0XHRcdHJlYWR5ID0gdHJ1ZTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0dGVzdEJhc2U2NFRvRmlsZTIoKSB7XHJcblx0XHQvLyBsZXQgZGF0YXVybCA9IHRoaXMuYmFzZTY0O1xyXG5cdFx0bGV0IGZpbGVOYW1lID0gJ1Rlc3RPUHJhZGEyLnBkZic7XHJcblx0XHQvLyB2YXIgYXJyID0gZGF0YXVybC5zcGxpdCgnLCcpLCBtaW1lID0gYXJyWzBdLm1hdGNoKC86KC4qPyk7LylbMV0sXHJcblx0XHR2YXIgYnN0ciA9IGF0b2IodGhpcy5iYXNlNjQpLFxyXG5cdFx0XHRuID0gYnN0ci5sZW5ndGgsXHJcblx0XHRcdHU4YXJyID0gbmV3IFVpbnQ4QXJyYXkobik7XHJcblx0XHR3aGlsZSAobi0tKSB7XHJcblx0XHRcdHU4YXJyW25dID0gYnN0ci5jaGFyQ29kZUF0KG4pO1xyXG5cdFx0fVxyXG5cdFx0bGV0IGZpbGVSZXR1cm4gPSBuZXcgRmlsZShbdThhcnJdLCBmaWxlTmFtZSwgeyB0eXBlOiAnYXBwbGljYXRpb24vcGRmJyB9KTtcclxuXHRcdHRoaXMudGVzdEVudmlvRG9jKGZpbGVSZXR1cm4sIGZpbGVOYW1lKTtcclxuXHR9XHJcblxyXG5cdHRlc3RFbnZpb0RvYyhmaWxlUmV0dXJuOiBhbnksIGZpbGVOYW1lOiBzdHJpbmcpIHtcclxuXHRcdGNvbnN0IGZpbGVQYXRoID0gdGhpcy5maWxlU2VydmljZS5nZXRQYXRoKFxyXG5cdFx0XHRFUHJvY2Vzby5DT05WT0NBVE9SSUEsXHJcblx0XHRcdDUwMCxcclxuXHRcdFx0MixcclxuXHRcdFx0MSxcclxuXHRcdFx0J2FhYWEnLFxyXG5cdFx0XHRmaWxlTmFtZVxyXG5cdFx0KTtcclxuXHRcdHRoaXMuZmlsZVNlcnZpY2UudXBsb2FkKGZpbGVQYXRoLCBmaWxlUmV0dXJuKS5zdWJzY3JpYmUoXHJcblx0XHRcdCh1cmwpID0+IHtcclxuXHRcdFx0XHRjb25zb2xlLmxvZygnRmluYWxpem8gZW52w61vIGRvY3VtZW50bycsIHVybCk7XHJcblx0XHRcdH0sXHJcblx0XHRcdChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCdFcnJvciB0cnlpbmcgdG8gdXBsb2FkOiAnLCBlcnJvcik7XHJcblx0XHRcdH1cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgcmV0dXJucyB0aGUgaGVpZ2h0ICAqL1xyXG5cdGdldEhlaWdodCgpOiBzdHJpbmcge1xyXG5cdFx0aWYgKHRoaXMuaGVpZ2h0KSByZXR1cm4gdGhpcy5oZWlnaHQgKyAncHgnO1xyXG5cdFx0cmV0dXJuIFBkZlZpc3VhbGl6ZXJDb21wb25lbnQuREVGQVVMVF9IRUlHSFQgKyAncHgnO1xyXG5cdH1cclxuXHJcblx0LyoqIEdldCBwYWdlIGluZm8gZnJvbSBkb2N1bWVudCwgcmVzaXplIGNhbnZhcyBhY2NvcmRpbmdseSwgYW5kIHJlbmRlciBwYWdlLiAqL1xyXG5cdHJlbmRlclBhZ2UobnVtKSB7XHJcblx0XHR0aGlzLnBkZkRvY3VtZW50LnBhZ2VSZW5kZXJpbmcgPSB0cnVlO1xyXG5cdFx0Ly8gYXNzaWduIHZhcmlhYmxlcyBvdXQgb2Ygc2NvcGVcclxuXHRcdGxldCBzZWxmUGRmRG9jdW1lbnQ6IFBkZkRvY3VtZW50ID0gdGhpcy5wZGZEb2N1bWVudDtcclxuXHRcdGxldCBzZWxmID0gdGhpcztcclxuXHRcdC8vIFVzaW5nIHByb21pc2UgdG8gZmV0Y2ggdGhlIHBhZ2VcclxuXHRcdHRoaXMucGRmRG9jdW1lbnQucGRmRG9jLmdldFBhZ2UobnVtKS50aGVuKGZ1bmN0aW9uIChwYWdlKSB7XHJcblx0XHRcdHZhciBzY2FsZSA9IHNlbGZQZGZEb2N1bWVudC5zY2FsZSA/IHNlbGZQZGZEb2N1bWVudC5zY2FsZSA6IDEuNTtcclxuXHRcdFx0dmFyIHZpZXdwb3J0ID0gcGFnZS5nZXRWaWV3cG9ydCh7c2NhbGU6IHNjYWxlfSk7XHJcblx0XHRcdHNlbGZQZGZEb2N1bWVudC5jYW52YXMuaGVpZ2h0ID0gdmlld3BvcnQuaGVpZ2h0O1xyXG5cdFx0XHRzZWxmUGRmRG9jdW1lbnQuY2FudmFzLndpZHRoID0gdmlld3BvcnQud2lkdGg7XHJcblxyXG5cdFx0XHQvLyBSZW5kZXIgUERGIHBhZ2UgaW50byBjYW52YXMgY29udGV4dFxyXG5cdFx0XHR2YXIgcmVuZGVyQ29udGV4dCA9IHtcclxuXHRcdFx0XHRjYW52YXNDb250ZXh0OiBzZWxmUGRmRG9jdW1lbnQuY2FudmFzLmdldENvbnRleHQoJzJkJyksXHJcblx0XHRcdFx0dmlld3BvcnQ6IHZpZXdwb3J0XHJcblx0XHRcdH07XHJcblx0XHRcdHZhciByZW5kZXJUYXNrID0gcGFnZS5yZW5kZXIocmVuZGVyQ29udGV4dCk7XHJcblxyXG5cdFx0XHQvLyBXYWl0IGZvciByZW5kZXJpbmcgdG8gZmluaXNoXHJcblx0XHRcdHJlbmRlclRhc2sucHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHtcclxuXHRcdFx0XHRzZWxmUGRmRG9jdW1lbnQucGFnZVJlbmRlcmluZyA9IGZhbHNlO1xyXG5cdFx0XHRcdGlmIChzZWxmUGRmRG9jdW1lbnQucGFnZU51bVBlbmRpbmcgIT09IG51bGwpIHtcclxuXHRcdFx0XHRcdC8vIE5ldyBwYWdlIHJlbmRlcmluZyBpcyBwZW5kaW5nXHJcblx0XHRcdFx0XHRzZWxmLnJlbmRlclBhZ2Uoc2VsZlBkZkRvY3VtZW50LnBhZ2VOdW1QZW5kaW5nKTtcclxuXHRcdFx0XHRcdHNlbGZQZGZEb2N1bWVudC5wYWdlTnVtUGVuZGluZyA9IG51bGw7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSWYgYW5vdGhlciBwYWdlIHJlbmRlcmluZyBpbiBwcm9ncmVzcywgd2FpdHMgdW50aWwgdGhlIHJlbmRlcmluZyBpc1xyXG5cdCAqIGZpbmlzZWQuIE90aGVyd2lzZSwgZXhlY3V0ZXMgcmVuZGVyaW5nIGltbWVkaWF0ZWx5LlxyXG5cdCAqL1xyXG5cdHF1ZXVlUmVuZGVyUGFnZShudW0pIHtcclxuXHRcdGlmICh0aGlzLnBkZkRvY3VtZW50LnBhZ2VSZW5kZXJpbmcpIHtcclxuXHRcdFx0dGhpcy5wZGZEb2N1bWVudC5wYWdlTnVtUGVuZGluZyA9IG51bTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMucmVuZGVyUGFnZShudW0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRGlzcGxheXMgcHJldmlvdXMgcGFnZS5cclxuXHQgKi9cclxuXHRvblByZXZQYWdlKCkge1xyXG5cdFx0aWYgKCF0aGlzLnBkZkRvY3VtZW50IHx8IHRoaXMucGRmRG9jdW1lbnQucGFnZU51bSA8PSAxKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdHRoaXMucGRmRG9jdW1lbnQucGFnZU51bS0tO1xyXG5cdFx0dGhpcy5xdWV1ZVJlbmRlclBhZ2UodGhpcy5wZGZEb2N1bWVudC5wYWdlTnVtKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERpc3BsYXlzIG5leHQgcGFnZS5cclxuXHQgKi9cclxuXHRvbk5leHRQYWdlKCkge1xyXG5cdFx0aWYgKCF0aGlzLnBkZkRvY3VtZW50IHx8IHRoaXMucGRmRG9jdW1lbnQucGFnZU51bSA+PSB0aGlzLnBkZkRvY3VtZW50LnBkZkRvYy5udW1QYWdlcykge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR0aGlzLnBkZkRvY3VtZW50LnBhZ2VOdW0rKztcclxuXHRcdHRoaXMucXVldWVSZW5kZXJQYWdlKHRoaXMucGRmRG9jdW1lbnQucGFnZU51bSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEaXNwbGF5cyBab29tIEluLlxyXG5cdCAqL1xyXG5cdG9uWm9vbUluKCkge1xyXG5cdFx0aWYgKCF0aGlzLnBkZkRvY3VtZW50IHx8IHRoaXMucGRmRG9jdW1lbnQuc2NhbGUgPj0gMykge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR0aGlzLnBkZkRvY3VtZW50LnNjYWxlID0gdGhpcy5wZGZEb2N1bWVudC5zY2FsZSArIDAuMjtcclxuXHRcdHRoaXMucXVldWVSZW5kZXJQYWdlKHRoaXMucGRmRG9jdW1lbnQucGFnZU51bSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEaXNwbGF5cyBab29tIE91dC5cclxuXHQgKi9cclxuXHRvblpvb21PdXQoKSB7XHJcblx0XHRpZiAoIXRoaXMucGRmRG9jdW1lbnQgfHwgdGhpcy5wZGZEb2N1bWVudC5zY2FsZSA8PSAwLjQpIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5wZGZEb2N1bWVudC5zY2FsZSA9IHRoaXMucGRmRG9jdW1lbnQuc2NhbGUgLSAwLjI7XHJcblx0XHR0aGlzLnF1ZXVlUmVuZGVyUGFnZSh0aGlzLnBkZkRvY3VtZW50LnBhZ2VOdW0pO1xyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKSB7fVxyXG5cclxuXHQvKiogSXQgc2VuZHMgdGhlIGRvY3VtZW50IGJ5IGVtYWlsICovXHJcblx0c2VuZEVtYWlsKCkge1xyXG5cdFx0aWYgKHRoaXMuZW1haWwgJiYgVXRpbFN0cmluZy52YWxpZGF0ZUVtYWlsKHRoaXMuZW1haWwpKSB7XHJcblx0XHRcdHRoaXMub25TZW5kRW1haWwuZW1pdCh7XHJcblx0XHRcdFx0dG86IHRoaXMuZW1haWwsXHJcblx0XHRcdFx0YmFzZTY0OiB0aGlzLmJhc2U2NFxyXG5cdFx0XHR9KTtcclxuXHRcdFx0dGhpcy5lbWFpbCA9ICcnO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR0aGlzLnRhb3N0clNlcnZpY2Uud2FybmluZygnQ29ycmVvIGVsZWN0csOzbmljbyBlcyBpbmNvcnJlY3RvJyk7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgZmlyZXMgdGhlIGV2ZW50IGRvd25sb2FkICovXHJcblx0ZG93bmxvYWQoKSB7XHJcblx0XHRjb25zdCBjb250ZW50VHlwZSA9ICdhcHBsaWNhdGlvbi9wZGYnO1xyXG5cdFx0Y29uc3QgYjY0RGF0YSA9IHRoaXMuYmFzZTY0O1xyXG5cdFx0Y29uc3QgYmxvYiA9IHRoaXMuYjY0dG9CbG9iKGI2NERhdGEsIGNvbnRlbnRUeXBlKTtcclxuXHRcdGNvbnN0IGJsb2JVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG5cdFx0dmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcblx0XHRkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO1xyXG5cdFx0YS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG5cdFx0YS5ocmVmID0gYmxvYlVybDtcclxuXHRcdGEuZG93bmxvYWQgPSB0aGlzLmZpbGVuYW1lO1xyXG5cdFx0YS5jbGljaygpO1xyXG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKGJsb2JVcmwpO1xyXG5cdFx0XHRkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpO1xyXG5cdFx0XHR0aGlzLm9uRG93bmxvYWQuZW1pdCh7XHJcblx0XHRcdFx0YmFzZTY0OiB0aGlzLmJhc2U2NFxyXG5cdFx0XHR9KTtcclxuXHRcdH0sIDIwMCk7XHJcblx0fVxyXG5cclxuXHQvKiogSXQgZmlyZXMgd2hlbiB0aGUgaHRtbCBpcyBjaGFuZ2VkICovXHJcblx0Y2hhbmdlKCkge1xyXG5cdFx0dGhpcy5nZW5lcmF0ZVBERigpO1xyXG5cdFx0dGhpcy5vbkNoYW5nZS5lbWl0KHRoaXMuaHRtbCk7XHJcblx0fVxyXG5cclxuXHQvKiogaXQgYWxsb3dzIHRvIGVkaXQgKi9cclxuXHR0b2dnbGVFZGl0KCkge1xyXG5cdFx0dGhpcy5lZGl0ID0gIXRoaXMuZWRpdDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIGl0IHJldHVybnMgaWYgaXMgUGRmRG9jdW1lbnRcclxuXHQgKi9cclxuXHRpc1BkZkRvY3VtZW50KCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQgIT09IHVuZGVmaW5lZDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIGl0IHJldHVybnMgaWYgaXMgVGl0bGVcclxuXHQgKi9cclxuXHRpc1RpdGxlKCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMudGl0bGUgIT09IHVuZGVmaW5lZDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIGl0IHJldHVybnMgaWYgaXMgaXNQZGZEb2NcclxuXHQgKi9cclxuXHRpc1BkZkRvYygpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiAoXHJcblx0XHRcdHRoaXMucGRmRG9jdW1lbnQgJiZcclxuXHRcdFx0dGhpcy5wZGZEb2N1bWVudC5wZGZEb2MgIT0gdW5kZWZpbmVkICYmXHJcblx0XHRcdHRoaXMucGRmRG9jdW1lbnQucGRmRG9jICE9IG51bGxcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBpdCByZXR1cm5zIGlmIGlzIGZpbGVuYW1lXHJcblx0ICovXHJcblx0aXNGaWxlbmFtZSgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmZpbGVuYW1lICE9PSB1bmRlZmluZWQ7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBpdCByZXR1cm5zIGlmIGlzIGVuYWJsZUVkaXRcclxuXHQgKi9cclxuXHRpc0VuYWJsZUVkaXQoKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5lbmFibGVFZGl0ID09IHRydWU7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBpdCByZXR1cm5zIGlmIGlzIGVkaXRcclxuXHQgKi9cclxuXHRpc0VkaXQoKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5lZGl0ID09IHRydWU7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBpdCByZXR1cm5zIGlmIGlzIGVuYWJsZUVtYWlsXHJcblx0ICovXHJcblx0aXNFbmFibGVFbWFpbCgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmVuYWJsZUVtYWlsID09IHRydWU7XHJcblx0fVxyXG5cclxuXHRiNjR0b0Jsb2IoYjY0RGF0YSwgY29udGVudFR5cGUgPSAnJywgc2xpY2VTaXplID0gNTEyKSB7XHJcblx0XHRjb25zdCBieXRlQXJyYXlzID0gW107XHJcblx0XHRjb25zdCBieXRlQ2hhcmFjdGVycyA9IGF0b2IoYjY0RGF0YSk7XHJcblx0XHRmb3IgKGxldCBvZmZzZXQgPSAwOyBvZmZzZXQgPCBieXRlQ2hhcmFjdGVycy5sZW5ndGg7IG9mZnNldCArPSBzbGljZVNpemUpIHtcclxuXHRcdFx0Y29uc3Qgc2xpY2UgPSBieXRlQ2hhcmFjdGVycy5zbGljZShvZmZzZXQsIG9mZnNldCArIHNsaWNlU2l6ZSk7XHJcblx0XHRcdGNvbnN0IGJ5dGVOdW1iZXJzID0gbmV3IEFycmF5KHNsaWNlLmxlbmd0aCk7XHJcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgc2xpY2UubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRieXRlTnVtYmVyc1tpXSA9IHNsaWNlLmNoYXJDb2RlQXQoaSk7XHJcblx0XHRcdH1cclxuXHRcdFx0Y29uc3QgYnl0ZUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZU51bWJlcnMpO1xyXG5cdFx0XHRieXRlQXJyYXlzLnB1c2goYnl0ZUFycmF5KTtcclxuXHRcdH1cclxuXHRcdGNvbnN0IGJsb2IgPSBuZXcgQmxvYihieXRlQXJyYXlzLCB7IHR5cGU6IGNvbnRlbnRUeXBlIH0pO1xyXG5cdFx0cmV0dXJuIGJsb2I7XHJcblx0fVxyXG59XHJcbiIsIjxoMyBjbGFzcz1cInBkZi12aXN1YWxpemVyLXRpdGxlXCI+e3sgdGl0bGUgfX08L2gzPlxyXG48ZGl2IGNsYXNzPVwicGRmLXZpc3VhbGl6ZXItY29udGFpbmVyXCI+XHJcblx0PGRpdiBjbGFzcz1cInBkZi12aXN1YWxpemVyLWNvbnRyb2xzXCIgKm5nSWY9XCJpc1BkZkRvY3VtZW50KCkgPT09IHRydWVcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImJ0bi10b29sYmFyXCIgcm9sZT1cInRvb2xiYXJcIiBhcmlhLWxhYmVsPVwiVG9vbGJhciB3aXRoIGJ1dHRvbiBncm91cHNcIj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgYnRuLWdyb3VwLXNtIG1yLTJcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsPVwiU2Vjb25kIGdyb3VwXCI+XHJcblx0XHRcdFx0XHRcdDwhLS0gem9vbSBpbi0tPlxyXG5cdFx0XHRcdFx0XHQ8YVxyXG5cdFx0XHRcdFx0XHRcdGhyZWY9XCJKYXZhc2NyaXB0OjtcIlxyXG5cdFx0XHRcdFx0XHRcdHRpdGxlPVwiQWNlcmNhclwiXHJcblx0XHRcdFx0XHRcdFx0ZGF0YS10b2dnbGU9XCJ0b29sdGlwXCJcclxuXHRcdFx0XHRcdFx0XHRkYXRhLXBsYWNlbWVudD1cInRvcFwiXHJcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCJcclxuXHRcdFx0XHRcdFx0XHQoY2xpY2spPVwib25ab29tSW4oKVwiXHJcblx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImZhIGZhLXNlYXJjaC1wbHVzXCI+PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8L2E+XHJcblxyXG5cdFx0XHRcdFx0XHQ8IS0tIHpvb20gb3V0LS0+XHJcblx0XHRcdFx0XHRcdDxhXHJcblx0XHRcdFx0XHRcdFx0aHJlZj1cIkphdmFzY3JpcHQ6O1wiXHJcblx0XHRcdFx0XHRcdFx0dGl0bGU9XCJBbGVqYXJcIlxyXG5cdFx0XHRcdFx0XHRcdGRhdGEtdG9nZ2xlPVwidG9vbHRpcFwiXHJcblx0XHRcdFx0XHRcdFx0ZGF0YS1wbGFjZW1lbnQ9XCJ0b3BcIlxyXG5cdFx0XHRcdFx0XHRcdGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiXHJcblx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cIm9uWm9vbU91dCgpXCJcclxuXHRcdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiZmEgZmEtc2VhcmNoLW1pbnVzXCI+PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8L2E+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIGJ0bi1ncm91cC1zbSBtci0yXCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbD1cIlRoaXJkIGdyb3VwXCI+XHJcblx0XHRcdFx0XHRcdDwhLS1wcmV2IC0tPlxyXG5cdFx0XHRcdFx0XHQ8YVxyXG5cdFx0XHRcdFx0XHRcdGhyZWY9XCJKYXZhc2NyaXB0OjtcIlxyXG5cdFx0XHRcdFx0XHRcdGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiXHJcblx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cIm9uUHJldlBhZ2UoKVwiXHJcblx0XHRcdFx0XHRcdFx0dGl0bGU9XCJBbnRlcmlvclwiXHJcblx0XHRcdFx0XHRcdFx0ZGF0YS10b2dnbGU9XCJ0b29sdGlwXCJcclxuXHRcdFx0XHRcdFx0XHRkYXRhLXBsYWNlbWVudD1cInRvcFwiXHJcblx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImZhIGZhLWNoZXZyb24tbGVmdFwiPjwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0PC9hPlxyXG5cclxuXHRcdFx0XHRcdFx0PCEtLSBwYWdpbmF0aW9uLS0+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiICpuZ0lmPVwiaXNQZGZEb2MoKSA9PT0gdHJ1ZVwiPlxyXG5cdFx0XHRcdFx0XHRcdFDDoWdpbmE6IHt7IHBkZkRvY3VtZW50LnBhZ2VOdW0gfX0gLyB7eyBwZGZEb2N1bWVudC5wZGZEb2MubnVtUGFnZXMgfX1cclxuXHRcdFx0XHRcdFx0PC9zcGFuPlxyXG5cclxuXHRcdFx0XHRcdFx0PCEtLW5leHQgLS0+XHJcblx0XHRcdFx0XHRcdDxhXHJcblx0XHRcdFx0XHRcdFx0aHJlZj1cIkphdmFzY3JpcHQ6O1wiXHJcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCJcclxuXHRcdFx0XHRcdFx0XHQoY2xpY2spPVwib25OZXh0UGFnZSgpXCJcclxuXHRcdFx0XHRcdFx0XHR0aXRsZT1cIlNpZ3VpZW50ZVwiXHJcblx0XHRcdFx0XHRcdFx0ZGF0YS10b2dnbGU9XCJ0b29sdGlwXCJcclxuXHRcdFx0XHRcdFx0XHRkYXRhLXBsYWNlbWVudD1cInRvcFwiXHJcblx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImZhIGZhLWNoZXZyb24tcmlnaHRcIj48L3NwYW4+XHJcblx0XHRcdFx0XHRcdDwvYT5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgYnRuLWdyb3VwLXNtXCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbD1cIkZpcnN0IGdyb3VwXCI+XHJcblx0XHRcdFx0XHRcdDwhLS0gZG93bmxvYWQtLT5cclxuXHRcdFx0XHRcdFx0PGFcclxuXHRcdFx0XHRcdFx0XHRbZG93bmxvYWRdPVwiZmlsZW5hbWVcIlxyXG5cdFx0XHRcdFx0XHRcdCpuZ0lmPVwiaXNGaWxlbmFtZSgpID09PSB0cnVlXCJcclxuXHRcdFx0XHRcdFx0XHQoY2xpY2spPVwiZG93bmxvYWQoKVwiXHJcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCJcclxuXHRcdFx0XHRcdFx0XHR0aXRsZT1cIkRlc2NhcmdhclwiXHJcblx0XHRcdFx0XHRcdFx0ZGF0YS10b2dnbGU9XCJ0b29sdGlwXCJcclxuXHRcdFx0XHRcdFx0XHRkYXRhLXBsYWNlbWVudD1cInRvcFwiXHJcblx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHQ8IS0tIFtocmVmXT1cIlxyXG5cdFx0XHRcdFx0XHRcdHNhbml0aXphdGlvbi5ieXBhc3NTZWN1cml0eVRydXN0VXJsKFxyXG5cdFx0XHRcdFx0XHRcdFx0J2RhdGE6YXBwbGljYXRpb24vcGRmO2Jhc2U2NCwnICsgdGhpcy5iYXNlNjRcclxuXHRcdFx0XHRcdFx0XHQpXHJcblx0XHRcdFx0XHRcdFwiIC0tPlxyXG5cdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiZmEgZmEtZG93bmxvYWRcIj48L3NwYW4+XHJcblx0XHRcdFx0XHRcdDwvYT5cclxuXHJcblx0XHRcdFx0XHRcdDwhLS0gdG9nZ2xlIGVkaXQtLVxyXG4gICAgICAgICAgICA8YSBocmVmPVwiSmF2YXNjcmlwdDo7XCIgKm5nSWY9XCJpc0VuYWJsZUVkaXQoKSA9PT0gdHJ1ZVwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiIHRpdGxlPVwiRWRpdGFyXCJcclxuICAgICAgICAgICAgICBkYXRhLXRvZ2dsZT1cInRvb2x0aXBcIiBkYXRhLXBsYWNlbWVudD1cInRvcFwiIChjbGljayk9XCJ0b2dnbGVFZGl0KClcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhIGZhLWVkaXRcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYT5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gZ2VuZXJhdGUgcGRmLS0+XHJcblx0XHRcdFx0XHRcdDxhXHJcblx0XHRcdFx0XHRcdFx0aHJlZj1cIkphdmFzY3JpcHQ6O1wiXHJcblx0XHRcdFx0XHRcdFx0Km5nSWY9XCJpc0VkaXQoKSA9PT0gdHJ1ZVwiXHJcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCJcclxuXHRcdFx0XHRcdFx0XHR0aXRsZT1cIkdlbmVyYXJcIlxyXG5cdFx0XHRcdFx0XHRcdGRhdGEtdG9nZ2xlPVwidG9vbHRpcFwiXHJcblx0XHRcdFx0XHRcdFx0ZGF0YS1wbGFjZW1lbnQ9XCJ0b3BcIlxyXG5cdFx0XHRcdFx0XHRcdChjbGljayk9XCJjaGFuZ2UoKVwiXHJcblx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImZhIGZhLXBsYXlcIj48L3NwYW4+XHJcblx0XHRcdFx0XHRcdDwvYT5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHJcblx0XHRcdDxkaXYgY2xhc3M9XCJjb2wtbWQtNSBwdWxsLXJpZ2h0XCIgKm5nSWY9XCJpc0VuYWJsZUVtYWlsKCkgPT09IHRydWVcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgaW5wdXQtZ3JvdXAtc21cIj5cclxuXHRcdFx0XHRcdDxsYWJlbCBmb3I9XCJwZGYtdmlzdWFsaXplci1lbWFpbFwiIGNsYXNzPVwicGRmXCI+XHJcblx0XHRcdFx0XHRcdEVudmlhciBtZW5zYWplIGFcclxuXHRcdFx0XHRcdDwvbGFiZWw+XHJcblx0XHRcdFx0XHQ8aW5wdXRcclxuXHRcdFx0XHRcdFx0dHlwZT1cImVtYWlsXCJcclxuXHRcdFx0XHRcdFx0aWQ9XCJwZGYtdmlzdWFsaXplci1lbWFpbFwiXHJcblx0XHRcdFx0XHRcdG5hbWU9XCJwZGYtdmlzdWFsaXplci1lbWFpbFwiXHJcblx0XHRcdFx0XHRcdHJlcXVpcmVkPVwidHJ1ZVwiXHJcblx0XHRcdFx0XHRcdGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuXHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCJDb3JyZW8gZWxlY3Ryw7NuaWNvXCJcclxuXHRcdFx0XHRcdFx0WyhuZ01vZGVsKV09XCJlbWFpbFwiXHJcblx0XHRcdFx0XHQvPlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uXHJcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCJcclxuXHRcdFx0XHRcdFx0XHR0eXBlPVwiYnV0dG9uXCJcclxuXHRcdFx0XHRcdFx0XHQoY2xpY2spPVwic2VuZEVtYWlsKClcIlxyXG5cdFx0XHRcdFx0XHRcdHRpdGxlPVwiRW52aWFyXCJcclxuXHRcdFx0XHRcdFx0XHRkYXRhLXRvZ2dsZT1cInRvb2x0aXBcIlxyXG5cdFx0XHRcdFx0XHRcdGRhdGEtcGxhY2VtZW50PVwidG9wXCJcclxuXHRcdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRcdDxpbWdcclxuXHRcdFx0XHRcdFx0XHRcdHNyYz1cImh0dHA6Ly9naXJvMzYwLmNvL3pvbmEzNjAvY29sZnV0dXJvL1BMSUMvaW1nL2V4cG9ydC5zdmdcIlxyXG5cdFx0XHRcdFx0XHRcdFx0YWx0PVwiXCJcclxuXHRcdFx0XHRcdFx0XHRcdHdpZHRoPVwiMTZcIlxyXG5cdFx0XHRcdFx0XHRcdC8+XHJcblx0XHRcdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcblxyXG5cdDxkaXYgY2xhc3M9XCJwZGYtdmlzdWFsaXplci1kYXNoYm9hcmRcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImNvbC1tZC01XCIgKm5nSWY9XCJpc0VkaXQoKSA9PT0gdHJ1ZVwiPlxyXG5cdFx0XHRcdDx0ZXh0YXJlYVxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG5cdFx0XHRcdFx0W3N0eWxlLmhlaWdodF09XCJnZXRIZWlnaHQoKVwiXHJcblx0XHRcdFx0XHRzdHlsZT1cInJlc2l6ZTp2ZXJ0aWNhbDtcIlxyXG5cdFx0XHRcdFx0WyhuZ01vZGVsKV09XCJodG1sXCJcclxuXHRcdFx0XHQ+PC90ZXh0YXJlYT5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHRcdDxkaXYgW25nQ2xhc3NdPVwieyAnY29sLW1kLTcnOiBlZGl0ID09PSB0cnVlLCAnY29sLW1kLTEyJzogIWVkaXQgfVwiPlxyXG5cdFx0XHRcdDxkaXZcclxuXHRcdFx0XHRcdGlkPVwicGRmLXNjcm9sbGFibGVcIlxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJwZGYtdmlzdWFsaXplci1zY3JvbGxhYmxlXCJcclxuXHRcdFx0XHRcdFtzdHlsZS5oZWlnaHRdPVwiZ2V0SGVpZ2h0KClcIlxyXG5cdFx0XHRcdD5cclxuXHRcdFx0XHRcdDxjYW52YXMgaWQ9XCJwZGYtY2FudmFzXCIgY2xhc3M9XCJwZGYtdmlzdWFsaXplci1jYW52YXNcIj4gPC9jYW52YXM+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import { EProjectFrom } from 'ng-pli-util';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "ngx-toastr";
|
|
5
|
-
import * as i2 from "../../services/progress-bar.service";
|
|
6
|
-
import * as i3 from "@angular/common";
|
|
7
|
-
export class ProgressBarComponent {
|
|
8
|
-
constructor(toastrService, progressBarService) {
|
|
9
|
-
this.toastrService = toastrService;
|
|
10
|
-
this.progressBarService = progressBarService;
|
|
11
|
-
// Desde que proyecto se consulta a la barra. 1 Para PLI, 2 GIC
|
|
12
|
-
this.projectFrom = EProjectFrom.PLI; // Enumerado
|
|
13
|
-
this.finishProcess = new EventEmitter();
|
|
14
|
-
this.setTimeOutValue = 0;
|
|
15
|
-
}
|
|
16
|
-
ngOnInit() {
|
|
17
|
-
window.addEventListener('beforeunload', this.closeTabCallback);
|
|
18
|
-
this.setTimeOutValue = setTimeout(() => {
|
|
19
|
-
this.initNoIn();
|
|
20
|
-
}, 1000);
|
|
21
|
-
}
|
|
22
|
-
async initNoIn() {
|
|
23
|
-
let processActual;
|
|
24
|
-
if (typeof this.processType !== 'undefined') {
|
|
25
|
-
processActual = await this.handleProgress();
|
|
26
|
-
}
|
|
27
|
-
if (this.percentage === 100) {
|
|
28
|
-
this.toastrService.success('El proceso se completó con éxito!', 'Proceso completado');
|
|
29
|
-
this.clearActualTimeout();
|
|
30
|
-
this.finishProcess.emit(processActual);
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
this.setTimeOutValue = setTimeout(() => {
|
|
34
|
-
this.initNoIn();
|
|
35
|
-
}, 500);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
async handleProgress() {
|
|
39
|
-
let processActual = await this.progressBarService
|
|
40
|
-
.getProgress(this.processId, this.processType, this.projectFrom)
|
|
41
|
-
.toPromise();
|
|
42
|
-
let process;
|
|
43
|
-
if (processActual == null) {
|
|
44
|
-
process.processId = null;
|
|
45
|
-
process.processType = this.processType;
|
|
46
|
-
process.percentage = 0;
|
|
47
|
-
process.state = '';
|
|
48
|
-
process.current = this.current;
|
|
49
|
-
process.end = this.end;
|
|
50
|
-
processActual = await this.progressBarService
|
|
51
|
-
.saveProgress(process, this.projectFrom)
|
|
52
|
-
.toPromise();
|
|
53
|
-
}
|
|
54
|
-
this.processId = processActual.processId;
|
|
55
|
-
this.percentage = processActual.percentage;
|
|
56
|
-
return processActual;
|
|
57
|
-
}
|
|
58
|
-
clearActualTimeout() {
|
|
59
|
-
window.removeEventListener('beforeunload', this.closeTabCallback);
|
|
60
|
-
clearTimeout(this.setTimeOutValue);
|
|
61
|
-
this.setTimeOutValue = null;
|
|
62
|
-
}
|
|
63
|
-
closeTabCallback(e) {
|
|
64
|
-
const confirmationMessage = 'o/';
|
|
65
|
-
e.returnValue = confirmationMessage; // Gecko, Trident, Chrome 34+
|
|
66
|
-
return confirmationMessage; // Gecko, WebKit, Chrome <34
|
|
67
|
-
}
|
|
68
|
-
ngOnDestroy() {
|
|
69
|
-
this.clearActualTimeout();
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
ProgressBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: ProgressBarComponent, deps: [{ token: i1.ToastrService }, { token: i2.ProgressBarService }], target: i0.ɵɵFactoryTarget.Component });
|
|
73
|
-
ProgressBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: ProgressBarComponent, selector: "pli-progress-bar", inputs: { processId: "processId", processType: "processType", percentage: "percentage", current: "current", end: "end", projectFrom: "projectFrom" }, outputs: { finishProcess: "finishProcess" }, ngImport: i0, template: "<div class=\"progress\">\r\n <div class=\"progress-bar progress-bar-striped active\" role=\"progressbar\" aria-valuemin=\"0\" aria-valuemax=\"100\" [ngStyle]=\"{ width: percentage + '%' }\">\r\n {{ percentage }}%\r\n </div>\r\n</div>", styles: [".progress .progress-bar{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}\n"], directives: [{ type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
74
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: ProgressBarComponent, decorators: [{
|
|
75
|
-
type: Component,
|
|
76
|
-
args: [{ selector: 'pli-progress-bar', template: "<div class=\"progress\">\r\n <div class=\"progress-bar progress-bar-striped active\" role=\"progressbar\" aria-valuemin=\"0\" aria-valuemax=\"100\" [ngStyle]=\"{ width: percentage + '%' }\">\r\n {{ percentage }}%\r\n </div>\r\n</div>", styles: [".progress .progress-bar{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}\n"] }]
|
|
77
|
-
}], ctorParameters: function () { return [{ type: i1.ToastrService }, { type: i2.ProgressBarService }]; }, propDecorators: { processId: [{
|
|
78
|
-
type: Input
|
|
79
|
-
}], processType: [{
|
|
80
|
-
type: Input
|
|
81
|
-
}], percentage: [{
|
|
82
|
-
type: Input
|
|
83
|
-
}], current: [{
|
|
84
|
-
type: Input
|
|
85
|
-
}], end: [{
|
|
86
|
-
type: Input
|
|
87
|
-
}], projectFrom: [{
|
|
88
|
-
type: Input
|
|
89
|
-
}], finishProcess: [{
|
|
90
|
-
type: Output
|
|
91
|
-
}] } });
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy9saWIvY29tcG9uZW50cy9wcm9ncmVzcy1iYXIvcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy9saWIvY29tcG9uZW50cy9wcm9ncmVzcy1iYXIvcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxZQUFZLEVBQWUsTUFBTSxhQUFhLENBQUM7Ozs7O0FBU3hELE1BQU0sT0FBTyxvQkFBb0I7SUFtQmhDLFlBQ1MsYUFBNEIsRUFDNUIsa0JBQXNDO1FBRHRDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFUL0MsK0RBQStEO1FBQ3RELGdCQUFXLEdBQVcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVk7UUFFbkQsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBUWpELElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxRQUFRO1FBQ1AsTUFBTSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDdEMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNWLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUTtRQUNiLElBQUks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cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFUHJvamVjdEZyb20sIFByb2dyZXNzQmFyIH0gZnJvbSAnbmctcGxpLXV0aWwnO1xyXG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XHJcbmltcG9ydCB7IFByb2dyZXNzQmFyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Byb2dyZXNzLWJhci5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAncGxpLXByb2dyZXNzLWJhcicsXHJcblx0dGVtcGxhdGVVcmw6ICcuL3Byb2dyZXNzLWJhci5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvZ3Jlc3NCYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblx0LyoqICovXHJcblx0QElucHV0KCkgcHJvY2Vzc0lkOiBudW1iZXI7XHJcblx0LyoqICovXHJcblx0QElucHV0KCkgcHJvY2Vzc1R5cGU6IG51bWJlcjtcclxuXHQvKiogKi9cclxuXHRASW5wdXQoKSBwZXJjZW50YWdlOiBudW1iZXI7XHJcblx0LyoqICovXHJcblx0QElucHV0KCkgY3VycmVudDogbnVtYmVyO1xyXG5cdC8qKiAqL1xyXG5cdEBJbnB1dCgpIGVuZDogbnVtYmVyO1xyXG5cclxuXHQvLyBEZXNkZSBxdWUgcHJveWVjdG8gc2UgY29uc3VsdGEgYSBsYSBiYXJyYS4gMSBQYXJhIFBMSSwgMiBHSUNcclxuXHRASW5wdXQoKSBwcm9qZWN0RnJvbTogbnVtYmVyID0gRVByb2plY3RGcm9tLlBMSTsgLy8gRW51bWVyYWRvXHJcblxyXG5cdEBPdXRwdXQoKSBmaW5pc2hQcm9jZXNzID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cdHNldFRpbWVPdXRWYWx1ZTogYW55O1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgdG9hc3RyU2VydmljZTogVG9hc3RyU2VydmljZSxcclxuXHRcdHByaXZhdGUgcHJvZ3Jlc3NCYXJTZXJ2aWNlOiBQcm9ncmVzc0JhclNlcnZpY2VcclxuXHQpIHtcclxuXHRcdHRoaXMuc2V0VGltZU91dFZhbHVlID0gMDtcclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCkge1xyXG5cdFx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JlZm9yZXVubG9hZCcsIHRoaXMuY2xvc2VUYWJDYWxsYmFjayk7XHJcblx0XHR0aGlzLnNldFRpbWVPdXRWYWx1ZSA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHR0aGlzLmluaXROb0luKCk7XHJcblx0XHR9LCAxMDAwKTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIGluaXROb0luKCkge1xyXG5cdFx0bGV0IHByb2Nlc3NBY3R1YWw7XHJcblx0XHRpZiAodHlwZW9mIHRoaXMucHJvY2Vzc1R5cGUgIT09ICd1bmRlZmluZWQnKSB7XHJcblx0XHRcdHByb2Nlc3NBY3R1YWwgPSBhd2FpdCB0aGlzLmhhbmRsZVByb2dyZXNzKCk7XHJcblx0XHR9XHJcblx0XHRpZiAodGhpcy5wZXJjZW50YWdlID09PSAxMDApIHtcclxuXHRcdFx0dGhpcy50b2FzdHJTZXJ2aWNlLnN1Y2Nlc3MoJ0VsIHByb2Nlc28gc2UgY29tcGxldMOzIGNvbiDDqXhpdG8hJywgJ1Byb2Nlc28gY29tcGxldGFkbycpO1xyXG5cdFx0XHR0aGlzLmNsZWFyQWN0dWFsVGltZW91dCgpO1xyXG5cdFx0XHR0aGlzLmZpbmlzaFByb2Nlc3MuZW1pdChwcm9jZXNzQWN0dWFsKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuc2V0VGltZU91dFZhbHVlID0gc2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5pbml0Tm9JbigpO1xyXG5cdFx0XHR9LCA1MDApO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0YXN5bmMgaGFuZGxlUHJvZ3Jlc3MoKSB7XHJcblx0XHRsZXQgcHJvY2Vzc0FjdHVhbCA9IGF3YWl0IHRoaXMucHJvZ3Jlc3NCYXJTZXJ2aWNlXHJcblx0XHRcdC5nZXRQcm9ncmVzcyh0aGlzLnByb2Nlc3NJZCwgdGhpcy5wcm9jZXNzVHlwZSwgdGhpcy5wcm9qZWN0RnJvbSlcclxuXHRcdFx0LnRvUHJvbWlzZSgpO1xyXG5cdFx0bGV0IHByb2Nlc3M6IFByb2dyZXNzQmFyO1xyXG5cdFx0aWYgKHByb2Nlc3NBY3R1YWwgPT0gbnVsbCkge1xyXG5cdFx0XHRwcm9jZXNzLnByb2Nlc3NJZCA9IG51bGw7XHJcblx0XHRcdHByb2Nlc3MucHJvY2Vzc1R5cGUgPSB0aGlzLnByb2Nlc3NUeXBlO1xyXG5cdFx0XHRwcm9jZXNzLnBlcmNlbnRhZ2UgPSAwO1xyXG5cdFx0XHRwcm9jZXNzLnN0YXRlID0gJyc7XHJcblx0XHRcdHByb2Nlc3MuY3VycmVudCA9IHRoaXMuY3VycmVudDtcclxuXHRcdFx0cHJvY2Vzcy5lbmQgPSB0aGlzLmVuZDtcclxuXHRcdFx0cHJvY2Vzc0FjdHVhbCA9IGF3YWl0IHRoaXMucHJvZ3Jlc3NCYXJTZXJ2aWNlXHJcblx0XHRcdFx0LnNhdmVQcm9ncmVzcyhwcm9jZXNzLCB0aGlzLnByb2plY3RGcm9tKVxyXG5cdFx0XHRcdC50b1Byb21pc2UoKTtcclxuXHRcdH1cclxuXHRcdHRoaXMucHJvY2Vzc0lkID0gcHJvY2Vzc0FjdHVhbC5wcm9jZXNzSWQ7XHJcblx0XHR0aGlzLnBlcmNlbnRhZ2UgPSBwcm9jZXNzQWN0dWFsLnBlcmNlbnRhZ2U7XHJcblxyXG5cdFx0cmV0dXJuIHByb2Nlc3NBY3R1YWw7XHJcblx0fVxyXG5cclxuXHRjbGVhckFjdHVhbFRpbWVvdXQoKSB7XHJcblx0XHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgdGhpcy5jbG9zZVRhYkNhbGxiYWNrKTtcclxuXHRcdGNsZWFyVGltZW91dCh0aGlzLnNldFRpbWVPdXRWYWx1ZSk7XHJcblx0XHR0aGlzLnNldFRpbWVPdXRWYWx1ZSA9IG51bGw7XHJcblx0fVxyXG5cclxuXHRjbG9zZVRhYkNhbGxiYWNrKGUpIHtcclxuXHRcdGNvbnN0IGNvbmZpcm1hdGlvbk1lc3NhZ2UgPSAnby8nO1xyXG5cdFx0ZS5yZXR1cm5WYWx1ZSA9IGNvbmZpcm1hdGlvbk1lc3NhZ2U7IC8vIEdlY2tvLCBUcmlkZW50LCBDaHJvbWUgMzQrXHJcblx0XHRyZXR1cm4gY29uZmlybWF0aW9uTWVzc2FnZTsgLy8gR2Vja28sIFdlYktpdCwgQ2hyb21lIDwzNFxyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKSB7XHJcblx0XHR0aGlzLmNsZWFyQWN0dWFsVGltZW91dCgpO1xyXG5cdH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1iYXIgcHJvZ3Jlc3MtYmFyLXN0cmlwZWQgYWN0aXZlXCIgcm9sZT1cInByb2dyZXNzYmFyXCIgYXJpYS12YWx1ZW1pbj1cIjBcIiBhcmlhLXZhbHVlbWF4PVwiMTAwXCIgW25nU3R5bGVdPVwieyB3aWR0aDogcGVyY2VudGFnZSArICclJyB9XCI+XHJcbiAgICAgICAge3sgcGVyY2VudGFnZSB9fSVcclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|