valtech-components 2.0.838 → 2.0.840

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/esm2022/lib/components/molecules/update-banner/types.mjs +4 -4
  2. package/esm2022/lib/components/molecules/update-banner/update-banner.component.mjs +5 -5
  3. package/esm2022/lib/components/organisms/change-password-modal/change-password-modal.component.mjs +19 -22
  4. package/esm2022/lib/components/organisms/mfa-modal/mfa-modal.component.mjs +5 -5
  5. package/esm2022/lib/config/company-footer.config.mjs +10 -3
  6. package/esm2022/lib/services/auth/auth.service.mjs +8 -3
  7. package/esm2022/lib/services/errors/index.mjs +9 -0
  8. package/esm2022/lib/services/errors/interpret-error.mjs +130 -0
  9. package/esm2022/lib/services/firebase/index.mjs +2 -2
  10. package/esm2022/lib/services/firebase/messaging.service.mjs +212 -3
  11. package/esm2022/lib/services/firebase/types.mjs +1 -1
  12. package/esm2022/lib/services/i18n/default-content.mjs +5 -1
  13. package/esm2022/lib/version.mjs +2 -2
  14. package/esm2022/public-api.mjs +6 -1
  15. package/fesm2022/valtech-components.mjs +397 -36
  16. package/fesm2022/valtech-components.mjs.map +1 -1
  17. package/lib/components/molecules/update-banner/types.d.ts +3 -3
  18. package/lib/components/organisms/change-password-modal/change-password-modal.component.d.ts +0 -1
  19. package/lib/config/company-footer.config.d.ts +4 -0
  20. package/lib/services/errors/index.d.ts +9 -0
  21. package/lib/services/errors/interpret-error.d.ts +63 -0
  22. package/lib/services/firebase/index.d.ts +1 -1
  23. package/lib/services/firebase/messaging.service.d.ts +110 -1
  24. package/lib/services/firebase/types.d.ts +30 -0
  25. package/lib/version.d.ts +1 -1
  26. package/package.json +1 -1
  27. package/public-api.d.ts +1 -0
@@ -15,7 +15,7 @@ export const UPDATE_BANNER_I18N_NAMESPACE = 'UpdateBanner';
15
15
  */
16
16
  export const UPDATE_BANNER_DEFAULT_CONTENT = {
17
17
  es: {
18
- availableTitle: 'Hay una versión nueva disponible',
18
+ availableTitle: 'Hay una versión nueva disponible',
19
19
  availableMessage: 'Actualiza para obtener las últimas mejoras.',
20
20
  requiredTitle: 'Debes actualizar para continuar',
21
21
  requiredMessage: 'Esta versión ya no es compatible. Actualiza para seguir.',
@@ -23,7 +23,7 @@ export const UPDATE_BANNER_DEFAULT_CONTENT = {
23
23
  dismissAction: 'Cerrar',
24
24
  },
25
25
  en: {
26
- availableTitle: 'A new version is available',
26
+ availableTitle: 'A new version is available',
27
27
  availableMessage: 'Update to get the latest improvements.',
28
28
  requiredTitle: 'You must update to continue',
29
29
  requiredMessage: 'This version is no longer supported. Please update.',
@@ -31,7 +31,7 @@ export const UPDATE_BANNER_DEFAULT_CONTENT = {
31
31
  dismissAction: 'Close',
32
32
  },
33
33
  pt: {
34
- availableTitle: 'Há uma nova versão disponível',
34
+ availableTitle: 'Há uma nova versão disponível',
35
35
  availableMessage: 'Atualize para obter as últimas melhorias.',
36
36
  requiredTitle: 'Você precisa atualizar para continuar',
37
37
  requiredMessage: 'Esta versão não é mais compatível. Atualize para seguir.',
@@ -39,4 +39,4 @@ export const UPDATE_BANNER_DEFAULT_CONTENT = {
39
39
  dismissAction: 'Fechar',
40
40
  },
41
41
  };
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3VwZGF0ZS1iYW5uZXIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVIOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxjQUFjLENBQUM7QUFFM0Q7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUc7SUFDM0MsRUFBRSxFQUFFO1FBQ0YsY0FBYyxFQUFFLGtDQUFrQztRQUNsRCxnQkFBZ0IsRUFBRSw2Q0FBNkM7UUFDL0QsYUFBYSxFQUFFLGlDQUFpQztRQUNoRCxlQUFlLEVBQUUsMERBQTBEO1FBQzNFLFlBQVksRUFBRSxZQUFZO1FBQzFCLGFBQWEsRUFBRSxRQUFRO0tBQ3hCO0lBQ0QsRUFBRSxFQUFFO1FBQ0YsY0FBYyxFQUFFLDRCQUE0QjtRQUM1QyxnQkFBZ0IsRUFBRSx3Q0FBd0M7UUFDMUQsYUFBYSxFQUFFLDZCQUE2QjtRQUM1QyxlQUFlLEVBQUUscURBQXFEO1FBQ3RFLFlBQVksRUFBRSxRQUFRO1FBQ3RCLGFBQWEsRUFBRSxPQUFPO0tBQ3ZCO0lBQ0QsRUFBRSxFQUFFO1FBQ0YsY0FBYyxFQUFFLCtCQUErQjtRQUMvQyxnQkFBZ0IsRUFBRSwyQ0FBMkM7UUFDN0QsYUFBYSxFQUFFLHVDQUF1QztRQUN0RCxlQUFlLEVBQUUsMERBQTBEO1FBQzNFLFlBQVksRUFBRSxXQUFXO1FBQ3pCLGFBQWEsRUFBRSxRQUFRO0tBQ3hCO0NBQ08sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVXBkYXRlQmFubmVyIFR5cGVzXG4gKlxuICogQ29udGVuaWRvIGkxOG4gZGVsIGJhbm5lciBkZSBhY3R1YWxpemFjacOzbiBkZSBsYSBhcHAuXG4gKi9cblxuLyoqXG4gKiBOYW1lc3BhY2UgaTE4biB1c2FkbyBwb3IgYHZhbC11cGRhdGUtYmFubmVyYC5cbiAqIExhcyBhcHBzIGNvbnN1bWlkb3JhcyBwdWVkZW4gc29icmVlc2NyaWJpciBlc3RhcyBrZXlzIHJlZ2lzdHJhbmRvXG4gKiBjb250ZW5pZG8gYmFqbyBlc3RlIG5hbWVzcGFjZSBlbiBgSTE4blNlcnZpY2VgLlxuICovXG5leHBvcnQgY29uc3QgVVBEQVRFX0JBTk5FUl9JMThOX05BTUVTUEFDRSA9ICdVcGRhdGVCYW5uZXInO1xuXG4vKipcbiAqIFRleHRvcyBwb3IgZGVmZWN0byBkZWwgYmFubmVyIChmYWxsYmFjayBzaSBsYSBhcHAgbm8gcmVnaXN0cmEgZWwgbmFtZXNwYWNlKS5cbiAqIFNvcG9ydGEgZXMgLyBlbiAvIHB0LlxuICovXG5leHBvcnQgY29uc3QgVVBEQVRFX0JBTk5FUl9ERUZBVUxUX0NPTlRFTlQgPSB7XG4gIGVzOiB7XG4gICAgYXZhaWxhYmxlVGl0bGU6ICdIYXkgdW5hIHZlcnNpw7NuIG51ZXZhIGRpc3BvbmlibGUnLFxuICAgIGF2YWlsYWJsZU1lc3NhZ2U6ICdBY3R1YWxpemEgcGFyYSBvYnRlbmVyIGxhcyDDumx0aW1hcyBtZWpvcmFzLicsXG4gICAgcmVxdWlyZWRUaXRsZTogJ0RlYmVzIGFjdHVhbGl6YXIgcGFyYSBjb250aW51YXInLFxuICAgIHJlcXVpcmVkTWVzc2FnZTogJ0VzdGEgdmVyc2nDs24geWEgbm8gZXMgY29tcGF0aWJsZS4gQWN0dWFsaXphIHBhcmEgc2VndWlyLicsXG4gICAgdXBkYXRlQWN0aW9uOiAnQWN0dWFsaXphcicsXG4gICAgZGlzbWlzc0FjdGlvbjogJ0NlcnJhcicsXG4gIH0sXG4gIGVuOiB7XG4gICAgYXZhaWxhYmxlVGl0bGU6ICdBIG5ldyB2ZXJzaW9uIGlzIGF2YWlsYWJsZScsXG4gICAgYXZhaWxhYmxlTWVzc2FnZTogJ1VwZGF0ZSB0byBnZXQgdGhlIGxhdGVzdCBpbXByb3ZlbWVudHMuJyxcbiAgICByZXF1aXJlZFRpdGxlOiAnWW91IG11c3QgdXBkYXRlIHRvIGNvbnRpbnVlJyxcbiAgICByZXF1aXJlZE1lc3NhZ2U6ICdUaGlzIHZlcnNpb24gaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4gUGxlYXNlIHVwZGF0ZS4nLFxuICAgIHVwZGF0ZUFjdGlvbjogJ1VwZGF0ZScsXG4gICAgZGlzbWlzc0FjdGlvbjogJ0Nsb3NlJyxcbiAgfSxcbiAgcHQ6IHtcbiAgICBhdmFpbGFibGVUaXRsZTogJ0jDoSB1bWEgbm92YSB2ZXJzw6NvIGRpc3BvbsOtdmVsJyxcbiAgICBhdmFpbGFibGVNZXNzYWdlOiAnQXR1YWxpemUgcGFyYSBvYnRlciBhcyDDumx0aW1hcyBtZWxob3JpYXMuJyxcbiAgICByZXF1aXJlZFRpdGxlOiAnVm9jw6ogcHJlY2lzYSBhdHVhbGl6YXIgcGFyYSBjb250aW51YXInLFxuICAgIHJlcXVpcmVkTWVzc2FnZTogJ0VzdGEgdmVyc8OjbyBuw6NvIMOpIG1haXMgY29tcGF0w612ZWwuIEF0dWFsaXplIHBhcmEgc2VndWlyLicsXG4gICAgdXBkYXRlQWN0aW9uOiAnQXR1YWxpemFyJyxcbiAgICBkaXNtaXNzQWN0aW9uOiAnRmVjaGFyJyxcbiAgfSxcbn0gYXMgY29uc3Q7XG4iXX0=
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3VwZGF0ZS1iYW5uZXIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVIOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxjQUFjLENBQUM7QUFFM0Q7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUc7SUFDM0MsRUFBRSxFQUFFO1FBQ0YsY0FBYyxFQUFFLG9DQUFvQztRQUNwRCxnQkFBZ0IsRUFBRSw2Q0FBNkM7UUFDL0QsYUFBYSxFQUFFLGlDQUFpQztRQUNoRCxlQUFlLEVBQUUsMERBQTBEO1FBQzNFLFlBQVksRUFBRSxZQUFZO1FBQzFCLGFBQWEsRUFBRSxRQUFRO0tBQ3hCO0lBQ0QsRUFBRSxFQUFFO1FBQ0YsY0FBYyxFQUFFLDhCQUE4QjtRQUM5QyxnQkFBZ0IsRUFBRSx3Q0FBd0M7UUFDMUQsYUFBYSxFQUFFLDZCQUE2QjtRQUM1QyxlQUFlLEVBQUUscURBQXFEO1FBQ3RFLFlBQVksRUFBRSxRQUFRO1FBQ3RCLGFBQWEsRUFBRSxPQUFPO0tBQ3ZCO0lBQ0QsRUFBRSxFQUFFO1FBQ0YsY0FBYyxFQUFFLGlDQUFpQztRQUNqRCxnQkFBZ0IsRUFBRSwyQ0FBMkM7UUFDN0QsYUFBYSxFQUFFLHVDQUF1QztRQUN0RCxlQUFlLEVBQUUsMERBQTBEO1FBQzNFLFlBQVksRUFBRSxXQUFXO1FBQ3pCLGFBQWEsRUFBRSxRQUFRO0tBQ3hCO0NBQ08sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVXBkYXRlQmFubmVyIFR5cGVzXG4gKlxuICogQ29udGVuaWRvIGkxOG4gZGVsIGJhbm5lciBkZSBhY3R1YWxpemFjacOzbiBkZSBsYSBhcHAuXG4gKi9cblxuLyoqXG4gKiBOYW1lc3BhY2UgaTE4biB1c2FkbyBwb3IgYHZhbC11cGRhdGUtYmFubmVyYC5cbiAqIExhcyBhcHBzIGNvbnN1bWlkb3JhcyBwdWVkZW4gc29icmVlc2NyaWJpciBlc3RhcyBrZXlzIHJlZ2lzdHJhbmRvXG4gKiBjb250ZW5pZG8gYmFqbyBlc3RlIG5hbWVzcGFjZSBlbiBgSTE4blNlcnZpY2VgLlxuICovXG5leHBvcnQgY29uc3QgVVBEQVRFX0JBTk5FUl9JMThOX05BTUVTUEFDRSA9ICdVcGRhdGVCYW5uZXInO1xuXG4vKipcbiAqIFRleHRvcyBwb3IgZGVmZWN0byBkZWwgYmFubmVyIChmYWxsYmFjayBzaSBsYSBhcHAgbm8gcmVnaXN0cmEgZWwgbmFtZXNwYWNlKS5cbiAqIFNvcG9ydGEgZXMgLyBlbiAvIHB0LlxuICovXG5leHBvcnQgY29uc3QgVVBEQVRFX0JBTk5FUl9ERUZBVUxUX0NPTlRFTlQgPSB7XG4gIGVzOiB7XG4gICAgYXZhaWxhYmxlVGl0bGU6ICfinKggSGF5IHVuYSB2ZXJzacOzbiBudWV2YSBkaXNwb25pYmxlJyxcbiAgICBhdmFpbGFibGVNZXNzYWdlOiAnQWN0dWFsaXphIHBhcmEgb2J0ZW5lciBsYXMgw7psdGltYXMgbWVqb3Jhcy4nLFxuICAgIHJlcXVpcmVkVGl0bGU6ICdEZWJlcyBhY3R1YWxpemFyIHBhcmEgY29udGludWFyJyxcbiAgICByZXF1aXJlZE1lc3NhZ2U6ICdFc3RhIHZlcnNpw7NuIHlhIG5vIGVzIGNvbXBhdGlibGUuIEFjdHVhbGl6YSBwYXJhIHNlZ3Vpci4nLFxuICAgIHVwZGF0ZUFjdGlvbjogJ0FjdHVhbGl6YXInLFxuICAgIGRpc21pc3NBY3Rpb246ICdDZXJyYXInLFxuICB9LFxuICBlbjoge1xuICAgIGF2YWlsYWJsZVRpdGxlOiAn4pyoIEEgbmV3IHZlcnNpb24gaXMgYXZhaWxhYmxlJyxcbiAgICBhdmFpbGFibGVNZXNzYWdlOiAnVXBkYXRlIHRvIGdldCB0aGUgbGF0ZXN0IGltcHJvdmVtZW50cy4nLFxuICAgIHJlcXVpcmVkVGl0bGU6ICdZb3UgbXVzdCB1cGRhdGUgdG8gY29udGludWUnLFxuICAgIHJlcXVpcmVkTWVzc2FnZTogJ1RoaXMgdmVyc2lvbiBpcyBubyBsb25nZXIgc3VwcG9ydGVkLiBQbGVhc2UgdXBkYXRlLicsXG4gICAgdXBkYXRlQWN0aW9uOiAnVXBkYXRlJyxcbiAgICBkaXNtaXNzQWN0aW9uOiAnQ2xvc2UnLFxuICB9LFxuICBwdDoge1xuICAgIGF2YWlsYWJsZVRpdGxlOiAn4pyoIEjDoSB1bWEgbm92YSB2ZXJzw6NvIGRpc3BvbsOtdmVsJyxcbiAgICBhdmFpbGFibGVNZXNzYWdlOiAnQXR1YWxpemUgcGFyYSBvYnRlciBhcyDDumx0aW1hcyBtZWxob3JpYXMuJyxcbiAgICByZXF1aXJlZFRpdGxlOiAnVm9jw6ogcHJlY2lzYSBhdHVhbGl6YXIgcGFyYSBjb250aW51YXInLFxuICAgIHJlcXVpcmVkTWVzc2FnZTogJ0VzdGEgdmVyc8OjbyBuw6NvIMOpIG1haXMgY29tcGF0w612ZWwuIEF0dWFsaXplIHBhcmEgc2VndWlyLicsXG4gICAgdXBkYXRlQWN0aW9uOiAnQXR1YWxpemFyJyxcbiAgICBkaXNtaXNzQWN0aW9uOiAnRmVjaGFyJyxcbiAgfSxcbn0gYXMgY29uc3Q7XG4iXX0=
@@ -150,7 +150,7 @@ export class UpdateBannerComponent {
150
150
  <val-button
151
151
  [props]="{
152
152
  text: t().dismissAction,
153
- color: 'medium',
153
+ color: 'dark',
154
154
  fill: 'clear',
155
155
  size: 'small',
156
156
  state: 'ENABLED',
@@ -163,7 +163,7 @@ export class UpdateBannerComponent {
163
163
  </div>
164
164
  </div>
165
165
  }
166
- `, isInline: true, styles: [":host{display:contents}.val-update-banner{position:fixed;top:0;left:0;right:0;z-index:1100;display:flex;justify-content:center;padding:calc(12px + env(safe-area-inset-top,0px)) 16px 12px;pointer-events:none}.val-update-banner__backdrop{position:fixed;inset:0;z-index:-1;background:#0000008c;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);pointer-events:auto}.val-update-banner__panel{pointer-events:auto;display:flex;flex-direction:row;align-items:center;gap:12px;width:100%;max-width:640px;padding:12px 16px;background:var(--ion-background-color, #fff);border:1px solid var(--val-border-color, rgba(0, 0, 0, .08));border-radius:var(--val-border-radius, 12px);box-shadow:0 4px 24px #0000001f;animation:val-update-banner-in .25s ease-out}.val-update-banner--required{align-items:center;height:100%}.val-update-banner--required .val-update-banner__panel{flex-direction:column;text-align:center;max-width:420px}.val-update-banner__icon{flex:0 0 auto;display:inline-flex;align-items:center}.val-update-banner__body{flex:1 1 auto;display:flex;flex-direction:column;gap:2px;min-width:0}.val-update-banner__actions{flex:0 0 auto;display:flex;flex-direction:row;align-items:center;gap:4px}.val-update-banner--required .val-update-banner__actions{margin-top:8px}@keyframes val-update-banner-in{0%{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}@media (max-width: 540px){.val-update-banner__panel{flex-direction:column;text-align:center}.val-update-banner__actions{width:100%;justify-content:center}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: IconComponent, selector: "val-icon", inputs: ["props"] }] }); }
166
+ `, isInline: true, styles: ["@charset \"UTF-8\";:host{display:contents}.val-update-banner{position:fixed;top:0;left:0;right:0;z-index:1100;display:flex;justify-content:center;padding:calc(12px + env(safe-area-inset-top,0px)) 16px 12px;pointer-events:none}.val-update-banner__backdrop{position:fixed;inset:0;z-index:-1;background:#0000008c;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);pointer-events:auto}.val-update-banner__panel{pointer-events:auto;display:flex;flex-direction:row;align-items:center;gap:12px;width:100%;max-width:640px;padding:12px 16px;background:var(--ion-background-color, #fff);border:1px solid var(--val-border-color, rgba(0, 0, 0, .08));border-radius:var(--val-border-radius, 12px);box-shadow:0 4px 24px #0000001f;animation:val-update-banner-in .25s ease-out}.val-update-banner--required{align-items:center;height:100%}.val-update-banner--required .val-update-banner__panel{flex-direction:column;text-align:center;max-width:420px}.val-update-banner__icon{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:12px;background:color-mix(in srgb,var(--ion-color-primary) 14%,transparent)}.val-update-banner--required .val-update-banner__icon{background:color-mix(in srgb,var(--ion-color-warning) 16%,transparent)}.val-update-banner__body{flex:1 1 auto;display:flex;flex-direction:column;gap:2px;min-width:0}.val-update-banner__actions{flex:0 0 auto;display:flex;flex-direction:row;align-items:center;gap:4px}.val-update-banner--required .val-update-banner__actions{margin-top:8px}@keyframes val-update-banner-in{0%{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}@media (max-width: 540px){.val-update-banner__panel{flex-direction:column;text-align:center}.val-update-banner__actions{width:100%;justify-content:center}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: IconComponent, selector: "val-icon", inputs: ["props"] }] }); }
167
167
  }
168
168
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UpdateBannerComponent, decorators: [{
169
169
  type: Component,
@@ -225,7 +225,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
225
225
  <val-button
226
226
  [props]="{
227
227
  text: t().dismissAction,
228
- color: 'medium',
228
+ color: 'dark',
229
229
  fill: 'clear',
230
230
  size: 'small',
231
231
  state: 'ENABLED',
@@ -238,6 +238,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
238
238
  </div>
239
239
  </div>
240
240
  }
241
- `, styles: [":host{display:contents}.val-update-banner{position:fixed;top:0;left:0;right:0;z-index:1100;display:flex;justify-content:center;padding:calc(12px + env(safe-area-inset-top,0px)) 16px 12px;pointer-events:none}.val-update-banner__backdrop{position:fixed;inset:0;z-index:-1;background:#0000008c;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);pointer-events:auto}.val-update-banner__panel{pointer-events:auto;display:flex;flex-direction:row;align-items:center;gap:12px;width:100%;max-width:640px;padding:12px 16px;background:var(--ion-background-color, #fff);border:1px solid var(--val-border-color, rgba(0, 0, 0, .08));border-radius:var(--val-border-radius, 12px);box-shadow:0 4px 24px #0000001f;animation:val-update-banner-in .25s ease-out}.val-update-banner--required{align-items:center;height:100%}.val-update-banner--required .val-update-banner__panel{flex-direction:column;text-align:center;max-width:420px}.val-update-banner__icon{flex:0 0 auto;display:inline-flex;align-items:center}.val-update-banner__body{flex:1 1 auto;display:flex;flex-direction:column;gap:2px;min-width:0}.val-update-banner__actions{flex:0 0 auto;display:flex;flex-direction:row;align-items:center;gap:4px}.val-update-banner--required .val-update-banner__actions{margin-top:8px}@keyframes val-update-banner-in{0%{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}@media (max-width: 540px){.val-update-banner__panel{flex-direction:column;text-align:center}.val-update-banner__actions{width:100%;justify-content:center}}\n"] }]
241
+ `, styles: ["@charset \"UTF-8\";:host{display:contents}.val-update-banner{position:fixed;top:0;left:0;right:0;z-index:1100;display:flex;justify-content:center;padding:calc(12px + env(safe-area-inset-top,0px)) 16px 12px;pointer-events:none}.val-update-banner__backdrop{position:fixed;inset:0;z-index:-1;background:#0000008c;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);pointer-events:auto}.val-update-banner__panel{pointer-events:auto;display:flex;flex-direction:row;align-items:center;gap:12px;width:100%;max-width:640px;padding:12px 16px;background:var(--ion-background-color, #fff);border:1px solid var(--val-border-color, rgba(0, 0, 0, .08));border-radius:var(--val-border-radius, 12px);box-shadow:0 4px 24px #0000001f;animation:val-update-banner-in .25s ease-out}.val-update-banner--required{align-items:center;height:100%}.val-update-banner--required .val-update-banner__panel{flex-direction:column;text-align:center;max-width:420px}.val-update-banner__icon{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:12px;background:color-mix(in srgb,var(--ion-color-primary) 14%,transparent)}.val-update-banner--required .val-update-banner__icon{background:color-mix(in srgb,var(--ion-color-warning) 16%,transparent)}.val-update-banner__body{flex:1 1 auto;display:flex;flex-direction:column;gap:2px;min-width:0}.val-update-banner__actions{flex:0 0 auto;display:flex;flex-direction:row;align-items:center;gap:4px}.val-update-banner--required .val-update-banner__actions{margin-top:8px}@keyframes val-update-banner-in{0%{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}@media (max-width: 540px){.val-update-banner__panel{flex-direction:column;text-align:center}.val-update-banner__actions{width:100%;justify-content:center}}\n"] }]
242
242
  }] });
243
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLWJhbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3VwZGF0ZS1iYW5uZXIvdXBkYXRlLWJhbm5lci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBRXRGOzs7Ozs7Ozs7OztHQVdHO0FBK0VILE1BQU0sT0FBTyxxQkFBcUI7SUE5RWxDO1FBK0VtQixZQUFPLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDcEMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUU1Qzs7V0FFRztRQUNNLGFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsS0FBSyxpQkFBaUIsQ0FBQyxDQUFDO1FBRWhGOzs7O1dBSUc7UUFDTSxZQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMvQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3JDLElBQUksTUFBTSxLQUFLLGlCQUFpQjtnQkFBRSxPQUFPLElBQUksQ0FBQztZQUM5QyxJQUFJLE1BQU0sS0FBSyxrQkFBa0I7Z0JBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEUsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUMsQ0FBQztRQUVIOzs7V0FHRztRQUNNLE1BQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyx5QkFBeUI7WUFDM0MsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25DLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDO2dCQUMvRCxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQztnQkFDckUsWUFBWSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDO2dCQUNyQyxhQUFhLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUM7YUFDeEMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0tBMEJKO0lBeEJDLGtFQUFrRTtJQUNsRSxRQUFRO1FBQ04sS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCw4REFBOEQ7SUFDOUQsU0FBUztRQUNQLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7T0FHRztJQUNLLEVBQUUsQ0FBQyxHQUFrRDtRQUMzRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztRQUM3RCxJQUFJLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFFbEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5QixNQUFNLElBQUksR0FDUiw2QkFBNkIsQ0FBQyxJQUFrRCxDQUFDO1lBQ2pGLDZCQUE2QixDQUFDLEVBQUUsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQixDQUFDOytHQTNEVSxxQkFBcUI7bUdBQXJCLHFCQUFxQiw2RUExRXRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVFVCx1a0RBeEVTLFlBQVksK0JBQUUsYUFBYSx3RUFBRSxlQUFlLDBHQUFFLGFBQWE7OzRGQTJFMUQscUJBQXFCO2tCQTlFakMsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsYUFBYSxDQUFDLFlBQzVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVFVCIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVXBkYXRlQmFubmVyQ29tcG9uZW50XG4gKlxuICogQmFubmVyIHF1ZSBhdmlzYSBhbCB1c3VhcmlvIGN1YW5kbyBoYXkgdW5hIHZlcnNpw7NuIG51ZXZhIGRlIGxhIGFwcC5cbiAqIENvbnN1bWUgYEFwcFZlcnNpb25TZXJ2aWNlYCAobm8gdG9jYSBgU3dVcGRhdGVgIG5pIGBBcHBDb25maWdTZXJ2aWNlYFxuICogZGlyZWN0YW1lbnRlKSB5IHNvcG9ydGEgZG9zIG1vZG9zOlxuICpcbiAqIC0gYHVwZGF0ZS1hdmFpbGFibGVgIOKAlCBiYW5uZXIgZGVzY2FydGFibGU6IG1lbnNhamUgKyBib3TDs24gXCJBY3R1YWxpemFyXCJcbiAqICAgKyBib3TDs24gY2VycmFyLlxuICogLSBgdXBkYXRlLXJlcXVpcmVkYCDigJQgb3ZlcmxheSBibG9xdWVhbnRlIG5vLWRlc2NhcnRhYmxlIChoYXJkIGdhdGUpOlxuICogICBtZW5zYWplICsgYm90w7NuIFwiQWN0dWFsaXphclwiLiBTaW4gYm90w7NuIGNlcnJhci5cbiAqXG4gKiBDdWFuZG8gZWwgZXN0YWRvIGVzIGB1cC10by1kYXRlYCAobyBlbCB1c3VhcmlvIGRlc2NhcnTDsyBlbCBiYW5uZXIgb3BjaW9uYWwpXG4gKiBubyByZW5kZXJpemEgbmFkYS5cbiAqL1xuXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBBcHBWZXJzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwcC12ZXJzaW9uL2FwcC12ZXJzaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2ljb24vaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVVBEQVRFX0JBTk5FUl9ERUZBVUxUX0NPTlRFTlQsIFVQREFURV9CQU5ORVJfSTE4Tl9OQU1FU1BBQ0UgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiB2YWwtdXBkYXRlLWJhbm5lclxuICpcbiAqIEF2aXNhIGFsIHVzdWFyaW8gZGUgdW5hIHZlcnNpw7NuIG51ZXZhLiBDb2zDs2NhbG8gdW5hIHNvbGEgdmV6LCBhbHRvIGVuIGVsXG4gKiDDoXJib2wgZGUgbGEgYXBwIChwLmVqLiBlbiBgYXBwLmNvbXBvbmVudGAgcG9yIGVuY2ltYSBkZWwgcm91dGVyIG91dGxldClcbiAqIHBhcmEgcXVlIHNlYSB2aXNpYmxlIGVuIGN1YWxxdWllciBydXRhLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8dmFsLXVwZGF0ZS1iYW5uZXIgLz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtdXBkYXRlLWJhbm5lcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRleHRDb21wb25lbnQsIEJ1dHRvbkNvbXBvbmVudCwgSWNvbkNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgQGlmICh2aXNpYmxlKCkpIHtcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ2YWwtdXBkYXRlLWJhbm5lclwiXG4gICAgICAgIFtjbGFzcy52YWwtdXBkYXRlLWJhbm5lci0tcmVxdWlyZWRdPVwicmVxdWlyZWQoKVwiXG4gICAgICAgIHJvbGU9XCJhbGVydFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGl2ZV09XCJyZXF1aXJlZCgpID8gJ2Fzc2VydGl2ZScgOiAncG9saXRlJ1wiXG4gICAgICA+XG4gICAgICAgIEBpZiAocmVxdWlyZWQoKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWwtdXBkYXRlLWJhbm5lcl9fYmFja2Ryb3BcIj48L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2YWwtdXBkYXRlLWJhbm5lcl9fcGFuZWxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsLXVwZGF0ZS1iYW5uZXJfX2ljb25cIj5cbiAgICAgICAgICAgIDx2YWwtaWNvblxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIG5hbWU6IHJlcXVpcmVkKCkgPyAnd2FybmluZy1vdXRsaW5lJyA6ICdjbG91ZC1kb3dubG9hZC1vdXRsaW5lJyxcbiAgICAgICAgICAgICAgICBzaXplOiAnbGFyZ2UnLFxuICAgICAgICAgICAgICAgIGNvbG9yOiByZXF1aXJlZCgpID8gJ3dhcm5pbmcnIDogJ3ByaW1hcnknLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsLXVwZGF0ZS1iYW5uZXJfX2JvZHlcIj5cbiAgICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHQoKS50aXRsZSxcbiAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICBib2xkOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHQoKS5tZXNzYWdlLFxuICAgICAgICAgICAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsLXVwZGF0ZS1iYW5uZXJfX2FjdGlvbnNcIj5cbiAgICAgICAgICAgIDx2YWwtYnV0dG9uXG4gICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgdGV4dDogdCgpLnVwZGF0ZUFjdGlvbixcbiAgICAgICAgICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICAgICAgICAgIGZpbGw6ICdzb2xpZCcsXG4gICAgICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgICBzdGF0ZTogJ0VOQUJMRUQnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwib25VcGRhdGUoKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgQGlmICghcmVxdWlyZWQoKSkge1xuICAgICAgICAgICAgICA8dmFsLWJ1dHRvblxuICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICB0ZXh0OiB0KCkuZGlzbWlzc0FjdGlvbixcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgIGZpbGw6ICdjbGVhcicsXG4gICAgICAgICAgICAgICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgICAgICAgICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cIm9uRGlzbWlzcygpXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL3VwZGF0ZS1iYW5uZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVXBkYXRlQmFubmVyQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSB2ZXJzaW9uID0gaW5qZWN0KEFwcFZlcnNpb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcblxuICAvKipcbiAgICogVHJ1ZSBjdWFuZG8gZWwgYmFubmVyIGVzdMOhIGVuIG1vZG8gb2JsaWdhdG9yaW8gKGhhcmQgZ2F0ZSwgbm8gZGVzY2FydGFibGUpLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnZlcnNpb24uc3RhdHVzKCkgPT09ICd1cGRhdGUtcmVxdWlyZWQnKTtcblxuICAvKipcbiAgICogVHJ1ZSBjdWFuZG8gZWwgYmFubmVyIGRlYmUgcmVuZGVyaXphcnNlOlxuICAgKiAtIHNpZW1wcmUgcXVlIGVsIGVzdGFkbyBzZWEgYHVwZGF0ZS1yZXF1aXJlZGAsIG9cbiAgICogLSBzaSBlcyBgdXBkYXRlLWF2YWlsYWJsZWAgeSBlbCB1c3VhcmlvIG5vIGxvIGRlc2NhcnTDsy5cbiAgICovXG4gIHJlYWRvbmx5IHZpc2libGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc3RhdHVzID0gdGhpcy52ZXJzaW9uLnN0YXR1cygpO1xuICAgIGlmIChzdGF0dXMgPT09ICd1cGRhdGUtcmVxdWlyZWQnKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoc3RhdHVzID09PSAndXBkYXRlLWF2YWlsYWJsZScpIHJldHVybiAhdGhpcy52ZXJzaW9uLmRpc21pc3NlZCgpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFRleHRvcyByZXNvbHZpZG9zIGRlbCBiYW5uZXIuIFJlYWN0aXZvIGEgaWRpb21hIHkgYWwgZXN0YWRvIHJlcXVpcmVkLlxuICAgKiBVc2EgZWwgbmFtZXNwYWNlIGBVcGRhdGVCYW5uZXJgIGRlIGBJMThuU2VydmljZWAgY29uIGZhbGxiYWNrIGVtYmViaWRvLlxuICAgKi9cbiAgcmVhZG9ubHkgdCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB0aGlzLmkxOG4ubGFuZygpOyAvLyB0cmFjayBwYXJhIHJlYWN0aXZpZGFkXG4gICAgY29uc3QgaXNSZXF1aXJlZCA9IHRoaXMucmVxdWlyZWQoKTtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6IHRoaXMudHIoaXNSZXF1aXJlZCA/ICdyZXF1aXJlZFRpdGxlJyA6ICdhdmFpbGFibGVUaXRsZScpLFxuICAgICAgbWVzc2FnZTogdGhpcy50cihpc1JlcXVpcmVkID8gJ3JlcXVpcmVkTWVzc2FnZScgOiAnYXZhaWxhYmxlTWVzc2FnZScpLFxuICAgICAgdXBkYXRlQWN0aW9uOiB0aGlzLnRyKCd1cGRhdGVBY3Rpb24nKSxcbiAgICAgIGRpc21pc3NBY3Rpb246IHRoaXMudHIoJ2Rpc21pc3NBY3Rpb24nKSxcbiAgICB9O1xuICB9KTtcblxuICAvKiogQXBsaWNhIGxhIGFjdHVhbGl6YWNpw7NuIChhY3RpdmEgZWwgU1cgc2kgZXhpc3RlICsgcmVjYXJnYSkuICovXG4gIG9uVXBkYXRlKCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy52ZXJzaW9uLmFwcGx5VXBkYXRlKCk7XG4gIH1cblxuICAvKiogRGVzY2FydGEgZWwgYmFubmVyIG9wY2lvbmFsLiBOby1vcCBlbiBtb2RvIG9ibGlnYXRvcmlvLiAqL1xuICBvbkRpc21pc3MoKTogdm9pZCB7XG4gICAgdGhpcy52ZXJzaW9uLmRpc21pc3MoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXN1ZWx2ZSB1bmEga2V5IGkxOG4gZGVsIG5hbWVzcGFjZSBgVXBkYXRlQmFubmVyYCBjb24gZmFsbGJhY2sgYWxcbiAgICogY29udGVuaWRvIHBvciBkZWZlY3RvIGVtYmViaWRvIChlcyAvIGVuIC8gcHQpLlxuICAgKi9cbiAgcHJpdmF0ZSB0cihrZXk6IGtleW9mIHR5cGVvZiBVUERBVEVfQkFOTkVSX0RFRkFVTFRfQ09OVEVOVC5lcyk6IHN0cmluZyB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmkxOG4udChrZXksIFVQREFURV9CQU5ORVJfSTE4Tl9OQU1FU1BBQ0UpO1xuICAgIGlmICh2YWx1ZSAmJiAhdmFsdWUuc3RhcnRzV2l0aCgnWycpKSByZXR1cm4gdmFsdWU7XG5cbiAgICBjb25zdCBsYW5nID0gdGhpcy5pMThuLmxhbmcoKTtcbiAgICBjb25zdCBwYWNrID1cbiAgICAgIFVQREFURV9CQU5ORVJfREVGQVVMVF9DT05URU5UW2xhbmcgYXMga2V5b2YgdHlwZW9mIFVQREFURV9CQU5ORVJfREVGQVVMVF9DT05URU5UXSA/P1xuICAgICAgVVBEQVRFX0JBTk5FUl9ERUZBVUxUX0NPTlRFTlQuZXM7XG4gICAgcmV0dXJuIHBhY2tba2V5XTtcbiAgfVxufVxuIl19
243
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLWJhbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3VwZGF0ZS1iYW5uZXIvdXBkYXRlLWJhbm5lci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBRXRGOzs7Ozs7Ozs7OztHQVdHO0FBK0VILE1BQU0sT0FBTyxxQkFBcUI7SUE5RWxDO1FBK0VtQixZQUFPLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDcEMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUU1Qzs7V0FFRztRQUNNLGFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsS0FBSyxpQkFBaUIsQ0FBQyxDQUFDO1FBRWhGOzs7O1dBSUc7UUFDTSxZQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMvQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3JDLElBQUksTUFBTSxLQUFLLGlCQUFpQjtnQkFBRSxPQUFPLElBQUksQ0FBQztZQUM5QyxJQUFJLE1BQU0sS0FBSyxrQkFBa0I7Z0JBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEUsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUMsQ0FBQztRQUVIOzs7V0FHRztRQUNNLE1BQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyx5QkFBeUI7WUFDM0MsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25DLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDO2dCQUMvRCxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQztnQkFDckUsWUFBWSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDO2dCQUNyQyxhQUFhLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUM7YUFDeEMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0tBMEJKO0lBeEJDLGtFQUFrRTtJQUNsRSxRQUFRO1FBQ04sS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCw4REFBOEQ7SUFDOUQsU0FBUztRQUNQLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7T0FHRztJQUNLLEVBQUUsQ0FBQyxHQUFrRDtRQUMzRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztRQUM3RCxJQUFJLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFFbEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5QixNQUFNLElBQUksR0FDUiw2QkFBNkIsQ0FBQyxJQUFrRCxDQUFDO1lBQ2pGLDZCQUE2QixDQUFDLEVBQUUsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQixDQUFDOytHQTNEVSxxQkFBcUI7bUdBQXJCLHFCQUFxQiw2RUExRXRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVFVCwrMURBeEVTLFlBQVksK0JBQUUsYUFBYSx3RUFBRSxlQUFlLDBHQUFFLGFBQWE7OzRGQTJFMUQscUJBQXFCO2tCQTlFakMsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsYUFBYSxDQUFDLFlBQzVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVFVCIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVXBkYXRlQmFubmVyQ29tcG9uZW50XG4gKlxuICogQmFubmVyIHF1ZSBhdmlzYSBhbCB1c3VhcmlvIGN1YW5kbyBoYXkgdW5hIHZlcnNpw7NuIG51ZXZhIGRlIGxhIGFwcC5cbiAqIENvbnN1bWUgYEFwcFZlcnNpb25TZXJ2aWNlYCAobm8gdG9jYSBgU3dVcGRhdGVgIG5pIGBBcHBDb25maWdTZXJ2aWNlYFxuICogZGlyZWN0YW1lbnRlKSB5IHNvcG9ydGEgZG9zIG1vZG9zOlxuICpcbiAqIC0gYHVwZGF0ZS1hdmFpbGFibGVgIOKAlCBiYW5uZXIgZGVzY2FydGFibGU6IG1lbnNhamUgKyBib3TDs24gXCJBY3R1YWxpemFyXCJcbiAqICAgKyBib3TDs24gY2VycmFyLlxuICogLSBgdXBkYXRlLXJlcXVpcmVkYCDigJQgb3ZlcmxheSBibG9xdWVhbnRlIG5vLWRlc2NhcnRhYmxlIChoYXJkIGdhdGUpOlxuICogICBtZW5zYWplICsgYm90w7NuIFwiQWN0dWFsaXphclwiLiBTaW4gYm90w7NuIGNlcnJhci5cbiAqXG4gKiBDdWFuZG8gZWwgZXN0YWRvIGVzIGB1cC10by1kYXRlYCAobyBlbCB1c3VhcmlvIGRlc2NhcnTDsyBlbCBiYW5uZXIgb3BjaW9uYWwpXG4gKiBubyByZW5kZXJpemEgbmFkYS5cbiAqL1xuXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBBcHBWZXJzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwcC12ZXJzaW9uL2FwcC12ZXJzaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2ljb24vaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVVBEQVRFX0JBTk5FUl9ERUZBVUxUX0NPTlRFTlQsIFVQREFURV9CQU5ORVJfSTE4Tl9OQU1FU1BBQ0UgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiB2YWwtdXBkYXRlLWJhbm5lclxuICpcbiAqIEF2aXNhIGFsIHVzdWFyaW8gZGUgdW5hIHZlcnNpw7NuIG51ZXZhLiBDb2zDs2NhbG8gdW5hIHNvbGEgdmV6LCBhbHRvIGVuIGVsXG4gKiDDoXJib2wgZGUgbGEgYXBwIChwLmVqLiBlbiBgYXBwLmNvbXBvbmVudGAgcG9yIGVuY2ltYSBkZWwgcm91dGVyIG91dGxldClcbiAqIHBhcmEgcXVlIHNlYSB2aXNpYmxlIGVuIGN1YWxxdWllciBydXRhLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8dmFsLXVwZGF0ZS1iYW5uZXIgLz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtdXBkYXRlLWJhbm5lcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRleHRDb21wb25lbnQsIEJ1dHRvbkNvbXBvbmVudCwgSWNvbkNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgQGlmICh2aXNpYmxlKCkpIHtcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ2YWwtdXBkYXRlLWJhbm5lclwiXG4gICAgICAgIFtjbGFzcy52YWwtdXBkYXRlLWJhbm5lci0tcmVxdWlyZWRdPVwicmVxdWlyZWQoKVwiXG4gICAgICAgIHJvbGU9XCJhbGVydFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGl2ZV09XCJyZXF1aXJlZCgpID8gJ2Fzc2VydGl2ZScgOiAncG9saXRlJ1wiXG4gICAgICA+XG4gICAgICAgIEBpZiAocmVxdWlyZWQoKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWwtdXBkYXRlLWJhbm5lcl9fYmFja2Ryb3BcIj48L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2YWwtdXBkYXRlLWJhbm5lcl9fcGFuZWxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsLXVwZGF0ZS1iYW5uZXJfX2ljb25cIj5cbiAgICAgICAgICAgIDx2YWwtaWNvblxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIG5hbWU6IHJlcXVpcmVkKCkgPyAnd2FybmluZy1vdXRsaW5lJyA6ICdjbG91ZC1kb3dubG9hZC1vdXRsaW5lJyxcbiAgICAgICAgICAgICAgICBzaXplOiAnbGFyZ2UnLFxuICAgICAgICAgICAgICAgIGNvbG9yOiByZXF1aXJlZCgpID8gJ3dhcm5pbmcnIDogJ3ByaW1hcnknLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsLXVwZGF0ZS1iYW5uZXJfX2JvZHlcIj5cbiAgICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHQoKS50aXRsZSxcbiAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICBib2xkOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHQoKS5tZXNzYWdlLFxuICAgICAgICAgICAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsLXVwZGF0ZS1iYW5uZXJfX2FjdGlvbnNcIj5cbiAgICAgICAgICAgIDx2YWwtYnV0dG9uXG4gICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgdGV4dDogdCgpLnVwZGF0ZUFjdGlvbixcbiAgICAgICAgICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICAgICAgICAgIGZpbGw6ICdzb2xpZCcsXG4gICAgICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgICBzdGF0ZTogJ0VOQUJMRUQnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwib25VcGRhdGUoKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgQGlmICghcmVxdWlyZWQoKSkge1xuICAgICAgICAgICAgICA8dmFsLWJ1dHRvblxuICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICB0ZXh0OiB0KCkuZGlzbWlzc0FjdGlvbixcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgICBmaWxsOiAnY2xlYXInLFxuICAgICAgICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgICAgIHN0YXRlOiAnRU5BQkxFRCcsXG4gICAgICAgICAgICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAob25DbGljayk9XCJvbkRpc21pc3MoKVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuICBgLFxuICBzdHlsZVVybHM6IFsnLi91cGRhdGUtYmFubmVyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFVwZGF0ZUJhbm5lckNvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdmVyc2lvbiA9IGluamVjdChBcHBWZXJzaW9uU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG5cbiAgLyoqXG4gICAqIFRydWUgY3VhbmRvIGVsIGJhbm5lciBlc3TDoSBlbiBtb2RvIG9ibGlnYXRvcmlvIChoYXJkIGdhdGUsIG5vIGRlc2NhcnRhYmxlKS5cbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy52ZXJzaW9uLnN0YXR1cygpID09PSAndXBkYXRlLXJlcXVpcmVkJyk7XG5cbiAgLyoqXG4gICAqIFRydWUgY3VhbmRvIGVsIGJhbm5lciBkZWJlIHJlbmRlcml6YXJzZTpcbiAgICogLSBzaWVtcHJlIHF1ZSBlbCBlc3RhZG8gc2VhIGB1cGRhdGUtcmVxdWlyZWRgLCBvXG4gICAqIC0gc2kgZXMgYHVwZGF0ZS1hdmFpbGFibGVgIHkgZWwgdXN1YXJpbyBubyBsbyBkZXNjYXJ0w7MuXG4gICAqL1xuICByZWFkb25seSB2aXNpYmxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMudmVyc2lvbi5zdGF0dXMoKTtcbiAgICBpZiAoc3RhdHVzID09PSAndXBkYXRlLXJlcXVpcmVkJykgcmV0dXJuIHRydWU7XG4gICAgaWYgKHN0YXR1cyA9PT0gJ3VwZGF0ZS1hdmFpbGFibGUnKSByZXR1cm4gIXRoaXMudmVyc2lvbi5kaXNtaXNzZWQoKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBUZXh0b3MgcmVzb2x2aWRvcyBkZWwgYmFubmVyLiBSZWFjdGl2byBhIGlkaW9tYSB5IGFsIGVzdGFkbyByZXF1aXJlZC5cbiAgICogVXNhIGVsIG5hbWVzcGFjZSBgVXBkYXRlQmFubmVyYCBkZSBgSTE4blNlcnZpY2VgIGNvbiBmYWxsYmFjayBlbWJlYmlkby5cbiAgICovXG4gIHJlYWRvbmx5IHQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTsgLy8gdHJhY2sgcGFyYSByZWFjdGl2aWRhZFxuICAgIGNvbnN0IGlzUmVxdWlyZWQgPSB0aGlzLnJlcXVpcmVkKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiB0aGlzLnRyKGlzUmVxdWlyZWQgPyAncmVxdWlyZWRUaXRsZScgOiAnYXZhaWxhYmxlVGl0bGUnKSxcbiAgICAgIG1lc3NhZ2U6IHRoaXMudHIoaXNSZXF1aXJlZCA/ICdyZXF1aXJlZE1lc3NhZ2UnIDogJ2F2YWlsYWJsZU1lc3NhZ2UnKSxcbiAgICAgIHVwZGF0ZUFjdGlvbjogdGhpcy50cigndXBkYXRlQWN0aW9uJyksXG4gICAgICBkaXNtaXNzQWN0aW9uOiB0aGlzLnRyKCdkaXNtaXNzQWN0aW9uJyksXG4gICAgfTtcbiAgfSk7XG5cbiAgLyoqIEFwbGljYSBsYSBhY3R1YWxpemFjacOzbiAoYWN0aXZhIGVsIFNXIHNpIGV4aXN0ZSArIHJlY2FyZ2EpLiAqL1xuICBvblVwZGF0ZSgpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMudmVyc2lvbi5hcHBseVVwZGF0ZSgpO1xuICB9XG5cbiAgLyoqIERlc2NhcnRhIGVsIGJhbm5lciBvcGNpb25hbC4gTm8tb3AgZW4gbW9kbyBvYmxpZ2F0b3Jpby4gKi9cbiAgb25EaXNtaXNzKCk6IHZvaWQge1xuICAgIHRoaXMudmVyc2lvbi5kaXNtaXNzKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVzdWVsdmUgdW5hIGtleSBpMThuIGRlbCBuYW1lc3BhY2UgYFVwZGF0ZUJhbm5lcmAgY29uIGZhbGxiYWNrIGFsXG4gICAqIGNvbnRlbmlkbyBwb3IgZGVmZWN0byBlbWJlYmlkbyAoZXMgLyBlbiAvIHB0KS5cbiAgICovXG4gIHByaXZhdGUgdHIoa2V5OiBrZXlvZiB0eXBlb2YgVVBEQVRFX0JBTk5FUl9ERUZBVUxUX0NPTlRFTlQuZXMpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5pMThuLnQoa2V5LCBVUERBVEVfQkFOTkVSX0kxOE5fTkFNRVNQQUNFKTtcbiAgICBpZiAodmFsdWUgJiYgIXZhbHVlLnN0YXJ0c1dpdGgoJ1snKSkgcmV0dXJuIHZhbHVlO1xuXG4gICAgY29uc3QgbGFuZyA9IHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgY29uc3QgcGFjayA9XG4gICAgICBVUERBVEVfQkFOTkVSX0RFRkFVTFRfQ09OVEVOVFtsYW5nIGFzIGtleW9mIHR5cGVvZiBVUERBVEVfQkFOTkVSX0RFRkFVTFRfQ09OVEVOVF0gPz9cbiAgICAgIFVQREFURV9CQU5ORVJfREVGQVVMVF9DT05URU5ULmVzO1xuICAgIHJldHVybiBwYWNrW2tleV07XG4gIH1cbn1cbiJdfQ==
@@ -1,8 +1,6 @@
1
1
  import { Component, computed, EventEmitter, inject, Input, Output, signal } from '@angular/core';
2
2
  import { Validators } from '@angular/forms';
3
- import { IonButton, IonButtons, IonContent, IonHeader, IonIcon, IonModal, IonSpinner, IonToolbar, } from '@ionic/angular/standalone';
4
- import { addIcons } from 'ionicons';
5
- import { closeOutline } from 'ionicons/icons';
3
+ import { IonButton, IonButtons, IonContent, IonHeader, IonModal, IonSpinner, IonToolbar, } from '@ionic/angular/standalone';
6
4
  import { SolidDefaultBlock } from '../../atoms/button/factory';
7
5
  import { ComponentStates, InputType } from '../../types';
8
6
  import { FormComponent } from '../form/form.component';
@@ -37,20 +35,6 @@ import * as i0 from "@angular/core";
37
35
  * ```
38
36
  */
39
37
  export class ChangePasswordModalComponent {
40
- /**
41
- * Controla la visibilidad del modal. Lo decide el componente padre. Cada vez
42
- * que pasa de cerrado a abierto se resuelve el modo (change vs set).
43
- */
44
- set isOpen(value) {
45
- const opening = value && !this._isOpen;
46
- this._isOpen = value;
47
- if (opening) {
48
- this.resolveMode();
49
- }
50
- }
51
- get isOpen() {
52
- return this._isOpen;
53
- }
54
38
  constructor() {
55
39
  this._isOpen = false;
56
40
  /** Emite al cambiar/crear la contraseña con éxito. El padre cierra el modal. */
@@ -120,7 +104,20 @@ export class ChangePasswordModalComponent {
120
104
  state: this._formState(),
121
105
  });
122
106
  });
123
- addIcons({ closeOutline });
107
+ }
108
+ /**
109
+ * Controla la visibilidad del modal. Lo decide el componente padre. Cada vez
110
+ * que pasa de cerrado a abierto se resuelve el modo (change vs set).
111
+ */
112
+ set isOpen(value) {
113
+ const opening = value && !this._isOpen;
114
+ this._isOpen = value;
115
+ if (opening) {
116
+ this.resolveMode();
117
+ }
118
+ }
119
+ get isOpen() {
120
+ return this._isOpen;
124
121
  }
125
122
  /** Traduce una clave del namespace `_auth`. */
126
123
  t(key) {
@@ -237,16 +234,16 @@ export class ChangePasswordModalComponent {
237
234
  this.toast.show({ message, duration: 3500 });
238
235
  }
239
236
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChangePasswordModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
240
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ChangePasswordModalComponent, isStandalone: true, selector: "val-change-password-modal", inputs: { isOpen: "isOpen" }, outputs: { changed: "changed", dismissed: "dismissed" }, ngImport: i0, template: "<ion-modal [isOpen]=\"isOpen\" (didDismiss)=\"close()\">\n <ng-template>\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button fill=\"clear\" (click)=\"close()\">\n <ion-icon name=\"close-outline\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n <ion-content class=\"ion-padding\">\n <section class=\"modal-form-section\">\n @if (mode() === 'loading') {\n <div class=\"modal-loading\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div>\n } @else {\n <val-form [props]=\"formProps()\" (onSubmit)=\"submitHandler($event)\" />\n }\n </section>\n </ion-content>\n </ng-template>\n</ion-modal>\n", styles: [".modal-form-section{display:flex;flex-direction:column;gap:16px;max-width:420px;margin:0 auto;padding-top:8px}.modal-loading{display:flex;justify-content:center;padding:40px 0}\n"], dependencies: [{ kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: FormComponent, selector: "val-form", inputs: ["props"], outputs: ["onSubmit", "onInvalid", "onSelectChange"] }] }); }
237
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ChangePasswordModalComponent, isStandalone: true, selector: "val-change-password-modal", inputs: { isOpen: "isOpen" }, outputs: { changed: "changed", dismissed: "dismissed" }, ngImport: i0, template: "<ion-modal [isOpen]=\"isOpen\" (didDismiss)=\"close()\">\n <ng-template>\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"close()\">\n <strong>{{ t('close') }}</strong>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n <ion-content class=\"ion-padding\">\n <section class=\"modal-form-section\">\n @if (mode() === 'loading') {\n <div class=\"modal-loading\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div>\n } @else {\n <val-form [props]=\"formProps()\" (onSubmit)=\"submitHandler($event)\" />\n }\n </section>\n </ion-content>\n </ng-template>\n</ion-modal>\n", styles: [".modal-form-section{display:flex;flex-direction:column;gap:16px;max-width:420px;margin:0 auto;padding-top:8px}.modal-loading{display:flex;justify-content:center;padding:40px 0}\n"], dependencies: [{ kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: FormComponent, selector: "val-form", inputs: ["props"], outputs: ["onSubmit", "onInvalid", "onSelectChange"] }] }); }
241
238
  }
242
239
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChangePasswordModalComponent, decorators: [{
243
240
  type: Component,
244
- args: [{ selector: 'val-change-password-modal', standalone: true, imports: [IonButton, IonButtons, IonContent, IonHeader, IonIcon, IonModal, IonSpinner, IonToolbar, FormComponent], template: "<ion-modal [isOpen]=\"isOpen\" (didDismiss)=\"close()\">\n <ng-template>\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button fill=\"clear\" (click)=\"close()\">\n <ion-icon name=\"close-outline\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n <ion-content class=\"ion-padding\">\n <section class=\"modal-form-section\">\n @if (mode() === 'loading') {\n <div class=\"modal-loading\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div>\n } @else {\n <val-form [props]=\"formProps()\" (onSubmit)=\"submitHandler($event)\" />\n }\n </section>\n </ion-content>\n </ng-template>\n</ion-modal>\n", styles: [".modal-form-section{display:flex;flex-direction:column;gap:16px;max-width:420px;margin:0 auto;padding-top:8px}.modal-loading{display:flex;justify-content:center;padding:40px 0}\n"] }]
245
- }], ctorParameters: () => [], propDecorators: { isOpen: [{
241
+ args: [{ selector: 'val-change-password-modal', standalone: true, imports: [IonButton, IonButtons, IonContent, IonHeader, IonModal, IonSpinner, IonToolbar, FormComponent], template: "<ion-modal [isOpen]=\"isOpen\" (didDismiss)=\"close()\">\n <ng-template>\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"close()\">\n <strong>{{ t('close') }}</strong>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n <ion-content class=\"ion-padding\">\n <section class=\"modal-form-section\">\n @if (mode() === 'loading') {\n <div class=\"modal-loading\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div>\n } @else {\n <val-form [props]=\"formProps()\" (onSubmit)=\"submitHandler($event)\" />\n }\n </section>\n </ion-content>\n </ng-template>\n</ion-modal>\n", styles: [".modal-form-section{display:flex;flex-direction:column;gap:16px;max-width:420px;margin:0 auto;padding-top:8px}.modal-loading{display:flex;justify-content:center;padding:40px 0}\n"] }]
242
+ }], propDecorators: { isOpen: [{
246
243
  type: Input
247
244
  }], changed: [{
248
245
  type: Output
249
246
  }], dismissed: [{
250
247
  type: Output
251
248
  }] } });
252
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLXBhc3N3b3JkLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvY2hhbmdlLXBhc3N3b3JkLW1vZGFsL2NoYW5nZS1wYXNzd29yZC1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2NoYW5nZS1wYXNzd29yZC1tb2RhbC9jaGFuZ2UtcGFzc3dvcmQtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFNBQVMsRUFDVCxPQUFPLEVBQ1AsUUFBUSxFQUNSLFVBQVUsRUFDVixVQUFVLEdBQ1gsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQWtCLGVBQWUsRUFBNEIsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sbUVBQW1FLENBQUM7QUFD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dGVyLCBpbmplY3QsIElucHV0LCBPdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIElvbkJ1dHRvbixcbiAgSW9uQnV0dG9ucyxcbiAgSW9uQ29udGVudCxcbiAgSW9uSGVhZGVyLFxuICBJb25JY29uLFxuICBJb25Nb2RhbCxcbiAgSW9uU3Bpbm5lcixcbiAgSW9uVG9vbGJhcixcbn0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IGNsb3NlT3V0bGluZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuaW1wb3J0IHsgU29saWREZWZhdWx0QmxvY2sgfSBmcm9tICcuLi8uLi9hdG9tcy9idXR0b24vZmFjdG9yeSc7XG5pbXBvcnQgeyBDb21wb25lbnRTdGF0ZSwgQ29tcG9uZW50U3RhdGVzLCBGb3JtTWV0YWRhdGEsIEZvcm1TdWJtaXQsIElucHV0VHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEZvcm1Db21wb25lbnQgfSBmcm9tICcuLi9mb3JtL2Zvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aCc7XG5pbXBvcnQgeyBDb25maXJtYXRpb25EaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY29uZmlybWF0aW9uLWRpYWxvZy9jb25maXJtYXRpb24tZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UsIElucHV0STE4bkhlbHBlciB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5cbi8qKiBNb2RvIGRlbCBtb2RhbCwgcmVzdWVsdG8gYWwgYWJyaXIgc2Vnw7puIHNpIGVsIHVzZXIgeWEgdGllbmUgY29udHJhc2XDsWEuICovXG50eXBlIFBhc3N3b3JkTW9kYWxNb2RlID0gJ2xvYWRpbmcnIHwgJ2NoYW5nZScgfCAnc2V0JztcblxuLyoqXG4gKiBgdmFsLWNoYW5nZS1wYXNzd29yZC1tb2RhbGAg4oCUIG1vZGFsIGRlIGdlc3Rpw7NuIGRlIGNvbnRyYXNlw7FhIHBhcmEgdW4gdXN1YXJpb1xuICogYXV0ZW50aWNhZG8uIEFuw6Fsb2dvIGFsIG1vZGFsIGRlIFwicmVjdXBlcmFyIGNvbnRyYXNlw7FhXCIgZGVsIGB2YWwtbG9naW5gLlxuICpcbiAqIEVzIGR1YWwtbW9kZTogYWwgYWJyaXJzZSBjb25zdWx0YSBgQXV0aFNlcnZpY2UuY2hlY2tIYXNQYXNzd29yZCgpYCB5IHNlIGFkYXB0YTpcbiAqICAtICoqY2hhbmdlKiog4oCUIGVsIHVzZXIgeWEgdGllbmUgY29udHJhc2XDsWEg4oaSIHBpZGUgYWN0dWFsICsgbnVldmEg4oaSXG4gKiAgICBgY2hhbmdlUGFzc3dvcmQoKWAuXG4gKiAgLSAqKnNldCoqIOKAlCBlbCB1c2VyIGVzIE9BdXRoLW9ubHkgKHNpbiBjb250cmFzZcOxYSkg4oaSIHBpZGUgc29sbyBsYSBudWV2YSxcbiAqICAgIHBpZGUgY29uZmlybWFjacOzbiBleHBsw61jaXRhIChubyBwaWVyZGUgZWwgYWNjZXNvIHNvY2lhbCwgZXMgYWRpdGl2bykg4oaSXG4gKiAgICBgc2V0UGFzc3dvcmRGb3JPQXV0aFVzZXIoKWAuXG4gKlxuICogU2VsZi1jb250YWluZWQ6IGlueWVjdGEgYEF1dGhTZXJ2aWNlYCB5IGxsYW1hIGVsIGVuZHBvaW50IGRpcmVjdG8g4oCUIGxhIGFwcFxuICogc29sbyBjb250cm9sYSBgW2lzT3Blbl1gIHkgcmVhY2Npb25hIGEgYChjaGFuZ2VkKWAgLyBgKGRpc21pc3NlZClgLlxuICpcbiAqIGkxOG46IHVzYSBlbCBuYW1lc3BhY2UgY29tcGFydGlkbyBgX2F1dGhgIChtaXNtYXMgY2xhdmVzIHF1ZSBgdmFsLWxvZ2luYCkuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDx2YWwtY2hhbmdlLXBhc3N3b3JkLW1vZGFsXG4gKiAgIFtpc09wZW5dPVwiaXNNb2RhbE9wZW4oKVwiXG4gKiAgIChjaGFuZ2VkKT1cImlzTW9kYWxPcGVuLnNldChmYWxzZSlcIlxuICogICAoZGlzbWlzc2VkKT1cImlzTW9kYWxPcGVuLnNldChmYWxzZSlcIlxuICogLz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtY2hhbmdlLXBhc3N3b3JkLW1vZGFsJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0lvbkJ1dHRvbiwgSW9uQnV0dG9ucywgSW9uQ29udGVudCwgSW9uSGVhZGVyLCBJb25JY29uLCBJb25Nb2RhbCwgSW9uU3Bpbm5lciwgSW9uVG9vbGJhciwgRm9ybUNvbXBvbmVudF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFuZ2UtcGFzc3dvcmQtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGFuZ2UtcGFzc3dvcmQtbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hhbmdlUGFzc3dvcmRNb2RhbENvbXBvbmVudCB7XG4gIHByaXZhdGUgX2lzT3BlbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBDb250cm9sYSBsYSB2aXNpYmlsaWRhZCBkZWwgbW9kYWwuIExvIGRlY2lkZSBlbCBjb21wb25lbnRlIHBhZHJlLiBDYWRhIHZlelxuICAgKiBxdWUgcGFzYSBkZSBjZXJyYWRvIGEgYWJpZXJ0byBzZSByZXN1ZWx2ZSBlbCBtb2RvIChjaGFuZ2UgdnMgc2V0KS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBpc09wZW4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBvcGVuaW5nID0gdmFsdWUgJiYgIXRoaXMuX2lzT3BlbjtcbiAgICB0aGlzLl9pc09wZW4gPSB2YWx1ZTtcbiAgICBpZiAob3BlbmluZykge1xuICAgICAgdGhpcy5yZXNvbHZlTW9kZSgpO1xuICAgIH1cbiAgfVxuICBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc09wZW47XG4gIH1cblxuICAvKiogRW1pdGUgYWwgY2FtYmlhci9jcmVhciBsYSBjb250cmFzZcOxYSBjb24gw6l4aXRvLiBFbCBwYWRyZSBjaWVycmEgZWwgbW9kYWwuICovXG4gIEBPdXRwdXQoKSBjaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKiBFbWl0ZSBjdWFuZG8gZWwgdXNlciBjaWVycmEgZWwgbW9kYWwgKGJvdMOzbiBYIG8gYmFja2Ryb3ApLiAqL1xuICBAT3V0cHV0KCkgZGlzbWlzc2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHByaXZhdGUgYXV0aCA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIHByaXZhdGUgdG9hc3QgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBpMThuSGVscGVyID0gaW5qZWN0KElucHV0STE4bkhlbHBlcik7XG4gIHByaXZhdGUgY29uZmlybURpYWxvZyA9IGluamVjdChDb25maXJtYXRpb25EaWFsb2dTZXJ2aWNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9tb2RlID0gc2lnbmFsPFBhc3N3b3JkTW9kYWxNb2RlPignbG9hZGluZycpO1xuICAvKiogTW9kbyBhY3R1YWwg4oCUIGBsb2FkaW5nYCBtaWVudHJhcyBzZSBjb25zdWx0YSBgY2hlY2tIYXNQYXNzd29yZCgpYC4gKi9cbiAgcmVhZG9ubHkgbW9kZSA9IHRoaXMuX21vZGUuYXNSZWFkb25seSgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Zvcm1TdGF0ZSA9IHNpZ25hbDxDb21wb25lbnRTdGF0ZT4oQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGFkZEljb25zKHsgY2xvc2VPdXRsaW5lIH0pO1xuICB9XG5cbiAgLyoqIFRyYWR1Y2UgdW5hIGNsYXZlIGRlbCBuYW1lc3BhY2UgYF9hdXRoYC4gKi9cbiAgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgJ19hdXRoJyk7XG4gIH1cblxuICByZWFkb25seSBmb3JtUHJvcHMgPSBjb21wdXRlZDxGb3JtTWV0YWRhdGE+KCgpID0+IHtcbiAgICBpZiAodGhpcy5fbW9kZSgpID09PSAnc2V0Jykge1xuICAgICAgcmV0dXJuIHRoaXMuaTE4bkhlbHBlci5yZXNvbHZlRm9ybSh7XG4gICAgICAgIG5hbWVLZXk6ICdzZXRQYXNzd29yZFRpdGxlJyxcbiAgICAgICAgaTE4bk5hbWVzcGFjZTogJ19hdXRoJyxcbiAgICAgICAgc2VjdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiB0aGlzLnQoJ3NldFBhc3N3b3JkRGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIG9yZGVyOiAwLFxuICAgICAgICAgICAgZmllbGRzOiBbdGhpcy5uZXdQYXNzd29yZEZpZWxkKDApXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBhY3Rpb25zOiB7XG4gICAgICAgICAgLi4uU29saWREZWZhdWx0QmxvY2soJycsICdzdWJtaXQnKSxcbiAgICAgICAgICB0b2tlbjogJ3NldC1zdWJtaXQnLFxuICAgICAgICAgIHRleHRLZXk6ICdzZXRQYXNzd29yZFN1Ym1pdCcsXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXRlOiB0aGlzLl9mb3JtU3RhdGUoKSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmkxOG5IZWxwZXIucmVzb2x2ZUZvcm0oe1xuICAgICAgbmFtZUtleTogJ2NoYW5nZVBhc3N3b3JkVGl0bGUnLFxuICAgICAgaTE4bk5hbWVzcGFjZTogJ19hdXRoJyxcbiAgICAgIHNlY3Rpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiB0aGlzLnQoJ2NoYW5nZVBhc3N3b3JkRGVzY3JpcHRpb24nKSxcbiAgICAgICAgICBvcmRlcjogMCxcbiAgICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogSW5wdXRUeXBlLlBBU1NXT1JELFxuICAgICAgICAgICAgICBuYW1lOiAnY3VycmVudFBhc3N3b3JkJyxcbiAgICAgICAgICAgICAgdG9rZW46ICdjaGFuZ2UtY3VycmVudC1wYXNzd29yZCcsXG4gICAgICAgICAgICAgIGxhYmVsS2V5OiAnY3VycmVudFBhc3N3b3JkJyxcbiAgICAgICAgICAgICAgaGludDogJycsXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyS2V5OiAncGFzc3dvcmRQbGFjZWhvbGRlcicsXG4gICAgICAgICAgICAgIGVycm9yS2V5czoge1xuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnY3VycmVudFBhc3N3b3JkUmVxdWlyZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgIG9yZGVyOiAwLFxuICAgICAgICAgICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhpcy5uZXdQYXNzd29yZEZpZWxkKDEpLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgYWN0aW9uczoge1xuICAgICAgICAuLi5Tb2xpZERlZmF1bHRCbG9jaygnJywgJ3N1Ym1pdCcpLFxuICAgICAgICB0b2tlbjogJ2NoYW5nZS1zdWJtaXQnLFxuICAgICAgICB0ZXh0S2V5OiAnY2hhbmdlUGFzc3dvcmRTdWJtaXQnLFxuICAgICAgfSxcbiAgICAgIHN0YXRlOiB0aGlzLl9mb3JtU3RhdGUoKSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgLyoqIENhbXBvIFwibnVldmEgY29udHJhc2XDsWFcIiDigJQgY29tcGFydGlkbyBwb3IgYW1ib3MgbW9kb3MuICovXG4gIHByaXZhdGUgbmV3UGFzc3dvcmRGaWVsZChvcmRlcjogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IElucHV0VHlwZS5QQVNTV09SRCxcbiAgICAgIG5hbWU6ICduZXdQYXNzd29yZCcsXG4gICAgICB0b2tlbjogJ2NoYW5nZS1uZXctcGFzc3dvcmQnLFxuICAgICAgbGFiZWxLZXk6ICduZXdQYXNzd29yZCcsXG4gICAgICBoaW50S2V5OiAnbmV3UGFzc3dvcmRIaW50JyxcbiAgICAgIHBsYWNlaG9sZGVyS2V5OiAncGFzc3dvcmRQbGFjZWhvbGRlcicsXG4gICAgICBlcnJvcktleXM6IHtcbiAgICAgICAgcmVxdWlyZWQ6ICdwYXNzd29yZFJlcXVpcmVkJyxcbiAgICAgICAgbWlubGVuZ3RoOiAncGFzc3dvcmRNaW5MZW5ndGgnLFxuICAgICAgfSxcbiAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg4KV0sXG4gICAgICBvcmRlcixcbiAgICAgIHN0YXRlOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICB9O1xuICB9XG5cbiAgLyoqIENpZXJyZSBpbmljaWFkbyBwb3IgZWwgdXNlciAoWCAvIGJhY2tkcm9wKS4gKi9cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNtaXNzZWQuZW1pdCgpO1xuICB9XG5cbiAgLyoqIENvbnN1bHRhIHNpIGVsIHVzZXIgeWEgdGllbmUgY29udHJhc2XDsWEgcGFyYSBlbGVnaXIgZWwgbW9kbyBkZWwgbW9kYWwuICovXG4gIHByaXZhdGUgcmVzb2x2ZU1vZGUoKTogdm9pZCB7XG4gICAgdGhpcy5fbW9kZS5zZXQoJ2xvYWRpbmcnKTtcbiAgICB0aGlzLl9mb3JtU3RhdGUuc2V0KENvbXBvbmVudFN0YXRlcy5FTkFCTEVEKTtcbiAgICB0aGlzLmF1dGguY2hlY2tIYXNQYXNzd29yZCgpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiByZXMgPT4gdGhpcy5fbW9kZS5zZXQocmVzLmhhc1Bhc3N3b3JkID8gJ2NoYW5nZScgOiAnc2V0JyksXG4gICAgICAvLyBGYWxsYmFjayBjb25zZXJ2YWRvcjogYW50ZSB1biBmYWxsbywgYXN1bWlyIGZsdWpvIGRlIGNhbWJpbyBub3JtYWwuXG4gICAgICBlcnJvcjogKCkgPT4gdGhpcy5fbW9kZS5zZXQoJ2NoYW5nZScpLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgc3VibWl0SGFuZGxlcihldmVudDogRm9ybVN1Ym1pdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLl9tb2RlKCkgPT09ICdzZXQnKSB7XG4gICAgICBhd2FpdCB0aGlzLmhhbmRsZVNldFBhc3N3b3JkKGV2ZW50KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5oYW5kbGVDaGFuZ2VQYXNzd29yZChldmVudCk7XG4gIH1cblxuICAvKiogRmx1am8gbm9ybWFsOiBlbCB1c2VyIHRpZW5lIGNvbnRyYXNlw7FhIHkgbGEgY2FtYmlhLiAqL1xuICBwcml2YXRlIGhhbmRsZUNoYW5nZVBhc3N3b3JkKGV2ZW50OiBGb3JtU3VibWl0KTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFBhc3N3b3JkID0gZXZlbnQuZmllbGRzWydjdXJyZW50UGFzc3dvcmQnXTtcbiAgICBjb25zdCBuZXdQYXNzd29yZCA9IGV2ZW50LmZpZWxkc1snbmV3UGFzc3dvcmQnXTtcblxuICAgIGlmICghY3VycmVudFBhc3N3b3JkIHx8ICFuZXdQYXNzd29yZCkge1xuICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy50KCdjb21wbGV0ZUFsbEZpZWxkcycpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9mb3JtU3RhdGUuc2V0KENvbXBvbmVudFN0YXRlcy5XT1JLSU5HKTtcblxuICAgIHRoaXMuYXV0aC5jaGFuZ2VQYXNzd29yZChjdXJyZW50UGFzc3dvcmQsIG5ld1Bhc3N3b3JkKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICB0aGlzLl9mb3JtU3RhdGUuc2V0KENvbXBvbmVudFN0YXRlcy5FTkFCTEVEKTtcbiAgICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy50KCdwYXNzd29yZENoYW5nZWRTdWNjZXNzJykpO1xuICAgICAgICB0aGlzLmNoYW5nZWQuZW1pdCgpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICB0aGlzLl9mb3JtU3RhdGUuc2V0KENvbXBvbmVudFN0YXRlcy5FTkFCTEVEKTtcbiAgICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy5yZXNvbHZlRXJyb3IoZXJyKSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZsdWpvIE9BdXRoLW9ubHk6IGVsIHVzZXIgbm8gdGllbmUgY29udHJhc2XDsWEuIEFudGVzIGRlIGNyZWFybGEgcGlkZVxuICAgKiBjb25maXJtYWNpw7NuIGV4cGzDrWNpdGEg4oCUIGVzIHVuIGNhbWJpbyBkZSBjdWVudGEsIGF1bnF1ZSBhZGl0aXZvIChjb25zZXJ2YVxuICAgKiBlbCBhY2Nlc28gc29jaWFsKS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlU2V0UGFzc3dvcmQoZXZlbnQ6IEZvcm1TdWJtaXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBuZXdQYXNzd29yZCA9IGV2ZW50LmZpZWxkc1snbmV3UGFzc3dvcmQnXTtcblxuICAgIGlmICghbmV3UGFzc3dvcmQpIHtcbiAgICAgIHRoaXMuc2hvd1RvYXN0KHRoaXMudCgnY29tcGxldGVBbGxGaWVsZHMnKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5jb25maXJtRGlhbG9nLmNvbmZpcm0oe1xuICAgICAgdGl0bGU6IHRoaXMudCgnc2V0UGFzc3dvcmRDb25maXJtVGl0bGUnKSxcbiAgICAgIG1lc3NhZ2U6IHRoaXMudCgnc2V0UGFzc3dvcmRDb25maXJtTWVzc2FnZScpLFxuICAgICAgY29uZmlybUJ1dHRvbjogeyB0ZXh0OiB0aGlzLnQoJ3NldFBhc3N3b3JkQ29uZmlybU9rJyksIHJvbGU6ICdjb25maXJtJyB9LFxuICAgICAgY2FuY2VsQnV0dG9uOiB7IHRleHQ6IHRoaXMudCgnc2V0UGFzc3dvcmRDb25maXJtQ2FuY2VsJyksIHJvbGU6ICdjYW5jZWwnIH0sXG4gICAgfSk7XG4gICAgaWYgKCFyZXN1bHQuY29uZmlybWVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuV09SS0lORyk7XG5cbiAgICB0aGlzLmF1dGguc2V0UGFzc3dvcmRGb3JPQXV0aFVzZXIobmV3UGFzc3dvcmQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgIHRoaXMuX2Zvcm1TdGF0ZS5zZXQoQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpO1xuICAgICAgICB0aGlzLnNob3dUb2FzdCh0aGlzLnQoJ3Bhc3N3b3JkU2V0U3VjY2VzcycpKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VkLmVtaXQoKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgdGhpcy5fZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCk7XG4gICAgICAgIHRoaXMuc2hvd1RvYXN0KHRoaXMucmVzb2x2ZUVycm9yKGVycikpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBNYXBlYSBsb3MgY8OzZGlnb3MgZGUgZXJyb3IgZGVsIGJhY2tlbmQgYSBtZW5zYWplcyBkZWwgbmFtZXNwYWNlIGBfYXV0aGAuICovXG4gIHByaXZhdGUgcmVzb2x2ZUVycm9yKGVycjogdW5rbm93bik6IHN0cmluZyB7XG4gICAgY29uc3QgY29kZSA9IChlcnIgYXMgeyBjb2RlPzogc3RyaW5nIH0pPy5jb2RlO1xuICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgY2FzZSAnQVVUSFYyX0lOVkFMSURfQ1VSUkVOVF9QQVNTV09SRCc6XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ2Vycm9yQ3VycmVudFBhc3N3b3JkV3JvbmcnKTtcbiAgICAgIGNhc2UgJ0FVVEhWMl9TQU1FX1BBU1NXT1JEJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudCgnZXJyb3JTYW1lUGFzc3dvcmQnKTtcbiAgICAgIGNhc2UgJ0FVVEhWMl9QQVNTV09SRF9BTFJFQURZX1NFVCc6XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ2Vycm9yUGFzc3dvcmRBbHJlYWR5U2V0Jyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy50KCdlcnJvckdlbmVyaWMnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNob3dUb2FzdChtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRvYXN0LnNob3coeyBtZXNzYWdlLCBkdXJhdGlvbjogMzUwMCB9KTtcbiAgfVxufVxuIiwiPGlvbi1tb2RhbCBbaXNPcGVuXT1cImlzT3BlblwiIChkaWREaXNtaXNzKT1cImNsb3NlKClcIj5cbiAgPG5nLXRlbXBsYXRlPlxuICAgIDxpb24taGVhZGVyPlxuICAgICAgPGlvbi10b29sYmFyPlxuICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIChjbGljayk9XCJjbG9zZSgpXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgIDwvaW9uLXRvb2xiYXI+XG4gICAgPC9pb24taGVhZGVyPlxuICAgIDxpb24tY29udGVudCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgICA8c2VjdGlvbiBjbGFzcz1cIm1vZGFsLWZvcm0tc2VjdGlvblwiPlxuICAgICAgICBAaWYgKG1vZGUoKSA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1sb2FkaW5nXCI+XG4gICAgICAgICAgPGlvbi1zcGlubmVyIG5hbWU9XCJjcmVzY2VudFwiPjwvaW9uLXNwaW5uZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgPHZhbC1mb3JtIFtwcm9wc109XCJmb3JtUHJvcHMoKVwiIChvblN1Ym1pdCk9XCJzdWJtaXRIYW5kbGVyKCRldmVudClcIiAvPlxuICAgICAgICB9XG4gICAgICA8L3NlY3Rpb24+XG4gICAgPC9pb24tY29udGVudD5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvaW9uLW1vZGFsPlxuIl19
249
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLXBhc3N3b3JkLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvY2hhbmdlLXBhc3N3b3JkLW1vZGFsL2NoYW5nZS1wYXNzd29yZC1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2NoYW5nZS1wYXNzd29yZC1tb2RhbC9jaGFuZ2UtcGFzc3dvcmQtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLFVBQVUsR0FDWCxNQUFNLDJCQUEyQixDQUFDO0FBRW5DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBa0IsZUFBZSxFQUE0QixTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQztBQUM5RyxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7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LDJCQUEyQixDQUFDLENBQUM7WUFDN0MsS0FBSyxzQkFBc0I7Z0JBQ3pCLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQ3JDLEtBQUssNkJBQTZCO2dCQUNoQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQztZQUMzQztnQkFDRSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbEMsQ0FBQztJQUNILENBQUM7SUFFTyxTQUFTLENBQUMsT0FBZTtRQUMvQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDOytHQTdOVSw0QkFBNEI7bUdBQTVCLDRCQUE0Qiw0S0N2RHpDLCt3QkF3QkEsNE9EMkJZLFNBQVMsb1BBQUUsVUFBVSw4RUFBRSxVQUFVLHdLQUFFLFNBQVMsb0dBQUUsUUFBUSxzREFBRSxVQUFVLHlHQUFFLFVBQVUsbUZBQUUsYUFBYTs7NEZBSTVGLDRCQUE0QjtrQkFQeEMsU0FBUzsrQkFDRSwyQkFBMkIsY0FDekIsSUFBSSxXQUNQLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQzs4QkFZcEcsTUFBTTtzQkFEVCxLQUFLO2dCQWFJLE9BQU87c0JBQWhCLE1BQU07Z0JBR0csU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBJb25CdXR0b24sXG4gIElvbkJ1dHRvbnMsXG4gIElvbkNvbnRlbnQsXG4gIElvbkhlYWRlcixcbiAgSW9uTW9kYWwsXG4gIElvblNwaW5uZXIsXG4gIElvblRvb2xiYXIsXG59IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuXG5pbXBvcnQgeyBTb2xpZERlZmF1bHRCbG9jayB9IGZyb20gJy4uLy4uL2F0b21zL2J1dHRvbi9mYWN0b3J5JztcbmltcG9ydCB7IENvbXBvbmVudFN0YXRlLCBDb21wb25lbnRTdGF0ZXMsIEZvcm1NZXRhZGF0YSwgRm9ybVN1Ym1pdCwgSW5wdXRUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0vZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoJztcbmltcG9ydCB7IENvbmZpcm1hdGlvbkRpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jb25maXJtYXRpb24tZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSwgSW5wdXRJMThuSGVscGVyIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90b2FzdC5zZXJ2aWNlJztcblxuLyoqIE1vZG8gZGVsIG1vZGFsLCByZXN1ZWx0byBhbCBhYnJpciBzZWfDum4gc2kgZWwgdXNlciB5YSB0aWVuZSBjb250cmFzZcOxYS4gKi9cbnR5cGUgUGFzc3dvcmRNb2RhbE1vZGUgPSAnbG9hZGluZycgfCAnY2hhbmdlJyB8ICdzZXQnO1xuXG4vKipcbiAqIGB2YWwtY2hhbmdlLXBhc3N3b3JkLW1vZGFsYCDigJQgbW9kYWwgZGUgZ2VzdGnDs24gZGUgY29udHJhc2XDsWEgcGFyYSB1biB1c3VhcmlvXG4gKiBhdXRlbnRpY2Fkby4gQW7DoWxvZ28gYWwgbW9kYWwgZGUgXCJyZWN1cGVyYXIgY29udHJhc2XDsWFcIiBkZWwgYHZhbC1sb2dpbmAuXG4gKlxuICogRXMgZHVhbC1tb2RlOiBhbCBhYnJpcnNlIGNvbnN1bHRhIGBBdXRoU2VydmljZS5jaGVja0hhc1Bhc3N3b3JkKClgIHkgc2UgYWRhcHRhOlxuICogIC0gKipjaGFuZ2UqKiDigJQgZWwgdXNlciB5YSB0aWVuZSBjb250cmFzZcOxYSDihpIgcGlkZSBhY3R1YWwgKyBudWV2YSDihpJcbiAqICAgIGBjaGFuZ2VQYXNzd29yZCgpYC5cbiAqICAtICoqc2V0Kiog4oCUIGVsIHVzZXIgZXMgT0F1dGgtb25seSAoc2luIGNvbnRyYXNlw7FhKSDihpIgcGlkZSBzb2xvIGxhIG51ZXZhLFxuICogICAgcGlkZSBjb25maXJtYWNpw7NuIGV4cGzDrWNpdGEgKG5vIHBpZXJkZSBlbCBhY2Nlc28gc29jaWFsLCBlcyBhZGl0aXZvKSDihpJcbiAqICAgIGBzZXRQYXNzd29yZEZvck9BdXRoVXNlcigpYC5cbiAqXG4gKiBTZWxmLWNvbnRhaW5lZDogaW55ZWN0YSBgQXV0aFNlcnZpY2VgIHkgbGxhbWEgZWwgZW5kcG9pbnQgZGlyZWN0byDigJQgbGEgYXBwXG4gKiBzb2xvIGNvbnRyb2xhIGBbaXNPcGVuXWAgeSByZWFjY2lvbmEgYSBgKGNoYW5nZWQpYCAvIGAoZGlzbWlzc2VkKWAuXG4gKlxuICogaTE4bjogdXNhIGVsIG5hbWVzcGFjZSBjb21wYXJ0aWRvIGBfYXV0aGAgKG1pc21hcyBjbGF2ZXMgcXVlIGB2YWwtbG9naW5gKS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPHZhbC1jaGFuZ2UtcGFzc3dvcmQtbW9kYWxcbiAqICAgW2lzT3Blbl09XCJpc01vZGFsT3BlbigpXCJcbiAqICAgKGNoYW5nZWQpPVwiaXNNb2RhbE9wZW4uc2V0KGZhbHNlKVwiXG4gKiAgIChkaXNtaXNzZWQpPVwiaXNNb2RhbE9wZW4uc2V0KGZhbHNlKVwiXG4gKiAvPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1jaGFuZ2UtcGFzc3dvcmQtbW9kYWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbSW9uQnV0dG9uLCBJb25CdXR0b25zLCBJb25Db250ZW50LCBJb25IZWFkZXIsIElvbk1vZGFsLCBJb25TcGlubmVyLCBJb25Ub29sYmFyLCBGb3JtQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYW5nZS1wYXNzd29yZC1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoYW5nZS1wYXNzd29yZC1tb2RhbC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDaGFuZ2VQYXNzd29yZE1vZGFsQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBfaXNPcGVuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIENvbnRyb2xhIGxhIHZpc2liaWxpZGFkIGRlbCBtb2RhbC4gTG8gZGVjaWRlIGVsIGNvbXBvbmVudGUgcGFkcmUuIENhZGEgdmV6XG4gICAqIHF1ZSBwYXNhIGRlIGNlcnJhZG8gYSBhYmllcnRvIHNlIHJlc3VlbHZlIGVsIG1vZG8gKGNoYW5nZSB2cyBzZXQpLlxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGlzT3Blbih2YWx1ZTogYm9vbGVhbikge1xuICAgIGNvbnN0IG9wZW5pbmcgPSB2YWx1ZSAmJiAhdGhpcy5faXNPcGVuO1xuICAgIHRoaXMuX2lzT3BlbiA9IHZhbHVlO1xuICAgIGlmIChvcGVuaW5nKSB7XG4gICAgICB0aGlzLnJlc29sdmVNb2RlKCk7XG4gICAgfVxuICB9XG4gIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzT3BlbjtcbiAgfVxuXG4gIC8qKiBFbWl0ZSBhbCBjYW1iaWFyL2NyZWFyIGxhIGNvbnRyYXNlw7FhIGNvbiDDqXhpdG8uIEVsIHBhZHJlIGNpZXJyYSBlbCBtb2RhbC4gKi9cbiAgQE91dHB1dCgpIGNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqIEVtaXRlIGN1YW5kbyBlbCB1c2VyIGNpZXJyYSBlbCBtb2RhbCAoYm90w7NuIFggbyBiYWNrZHJvcCkuICovXG4gIEBPdXRwdXQoKSBkaXNtaXNzZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBhdXRoID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdCA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIGkxOG5IZWxwZXIgPSBpbmplY3QoSW5wdXRJMThuSGVscGVyKTtcbiAgcHJpdmF0ZSBjb25maXJtRGlhbG9nID0gaW5qZWN0KENvbmZpcm1hdGlvbkRpYWxvZ1NlcnZpY2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX21vZGUgPSBzaWduYWw8UGFzc3dvcmRNb2RhbE1vZGU+KCdsb2FkaW5nJyk7XG4gIC8qKiBNb2RvIGFjdHVhbCDigJQgYGxvYWRpbmdgIG1pZW50cmFzIHNlIGNvbnN1bHRhIGBjaGVja0hhc1Bhc3N3b3JkKClgLiAqL1xuICByZWFkb25seSBtb2RlID0gdGhpcy5fbW9kZS5hc1JlYWRvbmx5KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZm9ybVN0YXRlID0gc2lnbmFsPENvbXBvbmVudFN0YXRlPihDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCk7XG5cbiAgLyoqIFRyYWR1Y2UgdW5hIGNsYXZlIGRlbCBuYW1lc3BhY2UgYF9hdXRoYC4gKi9cbiAgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgJ19hdXRoJyk7XG4gIH1cblxuICByZWFkb25seSBmb3JtUHJvcHMgPSBjb21wdXRlZDxGb3JtTWV0YWRhdGE+KCgpID0+IHtcbiAgICBpZiAodGhpcy5fbW9kZSgpID09PSAnc2V0Jykge1xuICAgICAgcmV0dXJuIHRoaXMuaTE4bkhlbHBlci5yZXNvbHZlRm9ybSh7XG4gICAgICAgIG5hbWVLZXk6ICdzZXRQYXNzd29yZFRpdGxlJyxcbiAgICAgICAgaTE4bk5hbWVzcGFjZTogJ19hdXRoJyxcbiAgICAgICAgc2VjdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiB0aGlzLnQoJ3NldFBhc3N3b3JkRGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgIG9yZGVyOiAwLFxuICAgICAgICAgICAgZmllbGRzOiBbdGhpcy5uZXdQYXNzd29yZEZpZWxkKDApXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBhY3Rpb25zOiB7XG4gICAgICAgICAgLi4uU29saWREZWZhdWx0QmxvY2soJycsICdzdWJtaXQnKSxcbiAgICAgICAgICB0b2tlbjogJ3NldC1zdWJtaXQnLFxuICAgICAgICAgIHRleHRLZXk6ICdzZXRQYXNzd29yZFN1Ym1pdCcsXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXRlOiB0aGlzLl9mb3JtU3RhdGUoKSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmkxOG5IZWxwZXIucmVzb2x2ZUZvcm0oe1xuICAgICAgbmFtZUtleTogJ2NoYW5nZVBhc3N3b3JkVGl0bGUnLFxuICAgICAgaTE4bk5hbWVzcGFjZTogJ19hdXRoJyxcbiAgICAgIHNlY3Rpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiB0aGlzLnQoJ2NoYW5nZVBhc3N3b3JkRGVzY3JpcHRpb24nKSxcbiAgICAgICAgICBvcmRlcjogMCxcbiAgICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogSW5wdXRUeXBlLlBBU1NXT1JELFxuICAgICAgICAgICAgICBuYW1lOiAnY3VycmVudFBhc3N3b3JkJyxcbiAgICAgICAgICAgICAgdG9rZW46ICdjaGFuZ2UtY3VycmVudC1wYXNzd29yZCcsXG4gICAgICAgICAgICAgIGxhYmVsS2V5OiAnY3VycmVudFBhc3N3b3JkJyxcbiAgICAgICAgICAgICAgaGludDogJycsXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyS2V5OiAncGFzc3dvcmRQbGFjZWhvbGRlcicsXG4gICAgICAgICAgICAgIGVycm9yS2V5czoge1xuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAnY3VycmVudFBhc3N3b3JkUmVxdWlyZWQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgIG9yZGVyOiAwLFxuICAgICAgICAgICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhpcy5uZXdQYXNzd29yZEZpZWxkKDEpLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgYWN0aW9uczoge1xuICAgICAgICAuLi5Tb2xpZERlZmF1bHRCbG9jaygnJywgJ3N1Ym1pdCcpLFxuICAgICAgICB0b2tlbjogJ2NoYW5nZS1zdWJtaXQnLFxuICAgICAgICB0ZXh0S2V5OiAnY2hhbmdlUGFzc3dvcmRTdWJtaXQnLFxuICAgICAgfSxcbiAgICAgIHN0YXRlOiB0aGlzLl9mb3JtU3RhdGUoKSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgLyoqIENhbXBvIFwibnVldmEgY29udHJhc2XDsWFcIiDigJQgY29tcGFydGlkbyBwb3IgYW1ib3MgbW9kb3MuICovXG4gIHByaXZhdGUgbmV3UGFzc3dvcmRGaWVsZChvcmRlcjogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IElucHV0VHlwZS5QQVNTV09SRCxcbiAgICAgIG5hbWU6ICduZXdQYXNzd29yZCcsXG4gICAgICB0b2tlbjogJ2NoYW5nZS1uZXctcGFzc3dvcmQnLFxuICAgICAgbGFiZWxLZXk6ICduZXdQYXNzd29yZCcsXG4gICAgICBoaW50S2V5OiAnbmV3UGFzc3dvcmRIaW50JyxcbiAgICAgIHBsYWNlaG9sZGVyS2V5OiAncGFzc3dvcmRQbGFjZWhvbGRlcicsXG4gICAgICBlcnJvcktleXM6IHtcbiAgICAgICAgcmVxdWlyZWQ6ICdwYXNzd29yZFJlcXVpcmVkJyxcbiAgICAgICAgbWlubGVuZ3RoOiAncGFzc3dvcmRNaW5MZW5ndGgnLFxuICAgICAgfSxcbiAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg4KV0sXG4gICAgICBvcmRlcixcbiAgICAgIHN0YXRlOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICB9O1xuICB9XG5cbiAgLyoqIENpZXJyZSBpbmljaWFkbyBwb3IgZWwgdXNlciAoWCAvIGJhY2tkcm9wKS4gKi9cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNtaXNzZWQuZW1pdCgpO1xuICB9XG5cbiAgLyoqIENvbnN1bHRhIHNpIGVsIHVzZXIgeWEgdGllbmUgY29udHJhc2XDsWEgcGFyYSBlbGVnaXIgZWwgbW9kbyBkZWwgbW9kYWwuICovXG4gIHByaXZhdGUgcmVzb2x2ZU1vZGUoKTogdm9pZCB7XG4gICAgdGhpcy5fbW9kZS5zZXQoJ2xvYWRpbmcnKTtcbiAgICB0aGlzLl9mb3JtU3RhdGUuc2V0KENvbXBvbmVudFN0YXRlcy5FTkFCTEVEKTtcbiAgICB0aGlzLmF1dGguY2hlY2tIYXNQYXNzd29yZCgpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiByZXMgPT4gdGhpcy5fbW9kZS5zZXQocmVzLmhhc1Bhc3N3b3JkID8gJ2NoYW5nZScgOiAnc2V0JyksXG4gICAgICAvLyBGYWxsYmFjayBjb25zZXJ2YWRvcjogYW50ZSB1biBmYWxsbywgYXN1bWlyIGZsdWpvIGRlIGNhbWJpbyBub3JtYWwuXG4gICAgICBlcnJvcjogKCkgPT4gdGhpcy5fbW9kZS5zZXQoJ2NoYW5nZScpLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgc3VibWl0SGFuZGxlcihldmVudDogRm9ybVN1Ym1pdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLl9tb2RlKCkgPT09ICdzZXQnKSB7XG4gICAgICBhd2FpdCB0aGlzLmhhbmRsZVNldFBhc3N3b3JkKGV2ZW50KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5oYW5kbGVDaGFuZ2VQYXNzd29yZChldmVudCk7XG4gIH1cblxuICAvKiogRmx1am8gbm9ybWFsOiBlbCB1c2VyIHRpZW5lIGNvbnRyYXNlw7FhIHkgbGEgY2FtYmlhLiAqL1xuICBwcml2YXRlIGhhbmRsZUNoYW5nZVBhc3N3b3JkKGV2ZW50OiBGb3JtU3VibWl0KTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFBhc3N3b3JkID0gZXZlbnQuZmllbGRzWydjdXJyZW50UGFzc3dvcmQnXTtcbiAgICBjb25zdCBuZXdQYXNzd29yZCA9IGV2ZW50LmZpZWxkc1snbmV3UGFzc3dvcmQnXTtcblxuICAgIGlmICghY3VycmVudFBhc3N3b3JkIHx8ICFuZXdQYXNzd29yZCkge1xuICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy50KCdjb21wbGV0ZUFsbEZpZWxkcycpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9mb3JtU3RhdGUuc2V0KENvbXBvbmVudFN0YXRlcy5XT1JLSU5HKTtcblxuICAgIHRoaXMuYXV0aC5jaGFuZ2VQYXNzd29yZChjdXJyZW50UGFzc3dvcmQsIG5ld1Bhc3N3b3JkKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICB0aGlzLl9mb3JtU3RhdGUuc2V0KENvbXBvbmVudFN0YXRlcy5FTkFCTEVEKTtcbiAgICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy50KCdwYXNzd29yZENoYW5nZWRTdWNjZXNzJykpO1xuICAgICAgICB0aGlzLmNoYW5nZWQuZW1pdCgpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICB0aGlzLl9mb3JtU3RhdGUuc2V0KENvbXBvbmVudFN0YXRlcy5FTkFCTEVEKTtcbiAgICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy5yZXNvbHZlRXJyb3IoZXJyKSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZsdWpvIE9BdXRoLW9ubHk6IGVsIHVzZXIgbm8gdGllbmUgY29udHJhc2XDsWEuIEFudGVzIGRlIGNyZWFybGEgcGlkZVxuICAgKiBjb25maXJtYWNpw7NuIGV4cGzDrWNpdGEg4oCUIGVzIHVuIGNhbWJpbyBkZSBjdWVudGEsIGF1bnF1ZSBhZGl0aXZvIChjb25zZXJ2YVxuICAgKiBlbCBhY2Nlc28gc29jaWFsKS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlU2V0UGFzc3dvcmQoZXZlbnQ6IEZvcm1TdWJtaXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBuZXdQYXNzd29yZCA9IGV2ZW50LmZpZWxkc1snbmV3UGFzc3dvcmQnXTtcblxuICAgIGlmICghbmV3UGFzc3dvcmQpIHtcbiAgICAgIHRoaXMuc2hvd1RvYXN0KHRoaXMudCgnY29tcGxldGVBbGxGaWVsZHMnKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5jb25maXJtRGlhbG9nLmNvbmZpcm0oe1xuICAgICAgdGl0bGU6IHRoaXMudCgnc2V0UGFzc3dvcmRDb25maXJtVGl0bGUnKSxcbiAgICAgIG1lc3NhZ2U6IHRoaXMudCgnc2V0UGFzc3dvcmRDb25maXJtTWVzc2FnZScpLFxuICAgICAgY29uZmlybUJ1dHRvbjogeyB0ZXh0OiB0aGlzLnQoJ3NldFBhc3N3b3JkQ29uZmlybU9rJyksIHJvbGU6ICdjb25maXJtJyB9LFxuICAgICAgY2FuY2VsQnV0dG9uOiB7IHRleHQ6IHRoaXMudCgnc2V0UGFzc3dvcmRDb25maXJtQ2FuY2VsJyksIHJvbGU6ICdjYW5jZWwnIH0sXG4gICAgfSk7XG4gICAgaWYgKCFyZXN1bHQuY29uZmlybWVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuV09SS0lORyk7XG5cbiAgICB0aGlzLmF1dGguc2V0UGFzc3dvcmRGb3JPQXV0aFVzZXIobmV3UGFzc3dvcmQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgIHRoaXMuX2Zvcm1TdGF0ZS5zZXQoQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpO1xuICAgICAgICB0aGlzLnNob3dUb2FzdCh0aGlzLnQoJ3Bhc3N3b3JkU2V0U3VjY2VzcycpKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VkLmVtaXQoKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgdGhpcy5fZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCk7XG4gICAgICAgIHRoaXMuc2hvd1RvYXN0KHRoaXMucmVzb2x2ZUVycm9yKGVycikpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBNYXBlYSBsb3MgY8OzZGlnb3MgZGUgZXJyb3IgZGVsIGJhY2tlbmQgYSBtZW5zYWplcyBkZWwgbmFtZXNwYWNlIGBfYXV0aGAuICovXG4gIHByaXZhdGUgcmVzb2x2ZUVycm9yKGVycjogdW5rbm93bik6IHN0cmluZyB7XG4gICAgY29uc3QgY29kZSA9IChlcnIgYXMgeyBjb2RlPzogc3RyaW5nIH0pPy5jb2RlO1xuICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgY2FzZSAnQVVUSFYyX0lOVkFMSURfQ1VSUkVOVF9QQVNTV09SRCc6XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ2Vycm9yQ3VycmVudFBhc3N3b3JkV3JvbmcnKTtcbiAgICAgIGNhc2UgJ0FVVEhWMl9TQU1FX1BBU1NXT1JEJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudCgnZXJyb3JTYW1lUGFzc3dvcmQnKTtcbiAgICAgIGNhc2UgJ0FVVEhWMl9QQVNTV09SRF9BTFJFQURZX1NFVCc6XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ2Vycm9yUGFzc3dvcmRBbHJlYWR5U2V0Jyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy50KCdlcnJvckdlbmVyaWMnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNob3dUb2FzdChtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRvYXN0LnNob3coeyBtZXNzYWdlLCBkdXJhdGlvbjogMzUwMCB9KTtcbiAgfVxufVxuIiwiPGlvbi1tb2RhbCBbaXNPcGVuXT1cImlzT3BlblwiIChkaWREaXNtaXNzKT1cImNsb3NlKClcIj5cbiAgPG5nLXRlbXBsYXRlPlxuICAgIDxpb24taGVhZGVyPlxuICAgICAgPGlvbi10b29sYmFyPlxuICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFya1wiIChjbGljayk9XCJjbG9zZSgpXCI+XG4gICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2Nsb3NlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgICA8L2lvbi10b29sYmFyPlxuICAgIDwvaW9uLWhlYWRlcj5cbiAgICA8aW9uLWNvbnRlbnQgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJtb2RhbC1mb3JtLXNlY3Rpb25cIj5cbiAgICAgICAgQGlmIChtb2RlKCkgPT09ICdsb2FkaW5nJykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtbG9hZGluZ1wiPlxuICAgICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIj48L2lvbi1zcGlubmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDx2YWwtZm9ybSBbcHJvcHNdPVwiZm9ybVByb3BzKClcIiAob25TdWJtaXQpPVwic3VibWl0SGFuZGxlcigkZXZlbnQpXCIgLz5cbiAgICAgICAgfVxuICAgICAgPC9zZWN0aW9uPlxuICAgIDwvaW9uLWNvbnRlbnQ+XG4gIDwvbmctdGVtcGxhdGU+XG48L2lvbi1tb2RhbD5cbiJdfQ==