ng-easycommerce-v18 0.2.14 → 0.2.15

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.
@@ -1,4 +1,4 @@
1
- import { AsyncPipe } from '@angular/common';
1
+ import { AsyncPipe, CommonModule } from '@angular/common';
2
2
  import { Component, inject } from '@angular/core';
3
3
  import { CheckoutService, PaymentService } from '../../../ec-services';
4
4
  import { TranslateModule } from '@ngx-translate/core';
@@ -6,19 +6,29 @@ import { BehaviorSubject } from 'rxjs';
6
6
  import { LoadingInlineEcComponent } from '../../widgets-ec';
7
7
  import { MpRedirectEcComponent, OfflineEcComponent } from './payment-methods';
8
8
  import { BankTransferEcComponent } from './payment-methods/bank-transfer-ec/bank-transfer-ec.component';
9
+ import { DecidirEcComponent } from '../../widgets-ec/decidir-ec/decidir-ec.component';
10
+ import { CartService } from '../../../ec-services';
9
11
  import * as i0 from "@angular/core";
10
- import * as i1 from "@ngx-translate/core";
12
+ import * as i1 from "@angular/common";
13
+ import * as i2 from "@ngx-translate/core";
11
14
  export class PaymentEcComponent {
12
15
  _paymentService = inject(PaymentService);
13
16
  _checkoutService = inject(CheckoutService);
17
+ _cartService = inject(CartService);
14
18
  _methodDataSubject = new BehaviorSubject(null);
15
19
  _loadingSubject = new BehaviorSubject(false);
16
20
  methods$ = this._paymentService.methods$;
17
21
  loading$ = this._loadingSubject.asObservable();
18
22
  methodData$ = this._methodDataSubject.asObservable();
19
23
  loadingInternal = false;
24
+ total_amount = 0;
20
25
  constructor() { }
21
26
  ngOnInit() {
27
+ this._checkoutService.associatedData$.subscribe((data) => {
28
+ const totalItem = data.find(item => item.type == 'total');
29
+ this.total_amount = totalItem?.amount ?? 0;
30
+ });
31
+ console.log('PaymentEcComponent initialized with total_amount:', this.total_amount);
22
32
  }
23
33
  setActive($event) {
24
34
  const parent = $event.target.parentElement.children;
@@ -55,7 +65,10 @@ export class PaymentEcComponent {
55
65
  isCatastro = (code) => !!code?.toLowerCase().includes('catastro');
56
66
  isBamboo = (code) => !!code?.toLowerCase().includes('bamboo');
57
67
  allData() {
58
- throw new Error('Method not implemented.');
68
+ return {
69
+ ...this._paymentService.getUserData().shippingAddress,
70
+ ...this._paymentService.getShipmentData(),
71
+ };
59
72
  }
60
73
  emitResult = async () => {
61
74
  this._paymentService.setPayment(this._methodDataSubject.getValue());
@@ -77,16 +90,18 @@ export class PaymentEcComponent {
77
90
  this._checkoutService.back();
78
91
  };
79
92
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PaymentEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
80
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: PaymentEcComponent, isStandalone: true, selector: "app-payment-ec", ngImport: i0, template: "@if(methods$ | async; as methods){\r\n<div class=\"container-fluid\">\r\n\r\n\t<div class=\"row\">\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<div class=\"card \">\r\n\t\t\t\t<div class=\"card-header text-dark text-center\">\r\n\t\t\t\t\t<h4>{{ 'select-method' | translate }}</h4>\r\n\t\t\t\t\t<div class=\"btn-toolbar justify-content-center\" role=\"toolbar\" aria-label=\"Envios toolbar\">\r\n\t\t\t\t\t\t<div class=\"\" role=\"group\" aria-label=\"Grupo botones envio\">\r\n\t\t\t\t\t\t\t<div class=\"d-flex align-content-start justify-content-center flex-wrap\">\r\n\t\t\t\t\t\t\t\t@for (method of methods; track $index; let x = $index) {\r\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"btn btn-outline-secondary mx-1 mb-1\"(click)=\"setMethod(method) ; setActive($event)\">\r\n\t\t\t\t\t\t\t\t\t{{ method.name | translate }}\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"card-body text-center\">\r\n\t\t\t\t\t@if(methodData$ | async; as method){\r\n\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t@if(!loadingInternal){\r\n\t\t\t\t\t\t\t@if(isMP(method.code)){\r\n\t\t\t\t\t\t\t\t<div class=\"method-container text-dark\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<p id=\"faqs\" class=\"qt px-5 \">{{ method.description }}</p>\r\n\t\t\t\t\t\t\t\t\t\t\t<p class=\"px-5\">{{ method.instructions }}</p>\r\n\t\t\t\t\t\t\t\t\t\t<app-mp-redirect-ec (ready)=\"verifyValidate($event)\" \t[method]=\"method\"></app-mp-redirect-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t<!-- <div class=\"method-container text-dark text-left\" *ngIf=\"isMPTarjetaDeCredito(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t<p id=\"faqs\" class=\"qt px-5 \">{{ method.description }}</p>\r\n\t\t\t\t\t\t\t\t\t\t<p class=\"px-5\">{{ method.instructions }}</p>\r\n\t\t\t\t\t\t\t\t\t\t<div app-mp-credit-ec (ready)=\"verifyValidate()\" [public_key]=\"getPK(method)\"\r\n\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [total_amount]=\"total_amount\">\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isRedirectRedsys(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"!method.code.includes('bizum') && !method.code.includes('_out_')\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-redsys-redirect-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-redsys-redirect-ec>\r\n\t\t\t\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"method.code.includes('bizum') || method.code.includes('_out_')\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-redsys-redirect-out-ec (ready)=\"verifyValidate($event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[method]=\"method\" [user_data]=\"allData()\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-redsys-redirect-out-ec>\r\n\t\t\t\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isRedirectCecaBank(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t<app-ceca-redirect-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\">\r\n\t\t\t\t\t\t\t\t\t\t</app-ceca-redirect-ec>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isPeyPalExpress(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-paypal-express-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [total_amount]=\"total_amount\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-paypal-express-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isMobbex(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-mobbex-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [paymentServiceInst]=\"paymentService\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[total_amount]=\"total_amount\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-mobbex-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isBancard(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-bancard-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [paymentServiceInst]=\"paymentService\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[total_amount]=\"total_amount\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-bancard-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isDecidir(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-decidir-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [paymentServiceInst]=\"paymentService\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[total_amount]=\"total_amount\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-decidir-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div> -->\r\n\t\t\t\t\t\t\t@if(isMethodOffline(method.code)){\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark\">\r\n\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t<app-offline-ec \r\n\t\t\t\t\t\t\t\t\t\t[method]=\"method\" \r\n\t\t\t\t\t\t\t\t\t\t[verifyValidate]= \"verifyValidate\"\r\n\t\t\t\t\t\t\t\t\t\t[setLoading] = \"setLoading\" />\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\t\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<!--\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isCulqi(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-culqi-ec [apiKey]=\"getPKCulqi(method)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[amount]=\"total_amount\" [customStyle]=\"true\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(ready)=\"verifyValidate()\"></app-culqi-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isCatastro(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-bancard-catastro-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [paymentServiceInst]=\"paymentService\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[total_amount]=\"total_amount\"></app-bancard-catastro-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isBamboo(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-bamboo-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [paymentServiceInst]=\"paymentService\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[total_amount]=\"total_amount\"></app-bamboo-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div> -->\r\n\t\t\t\t\t\t\t@if(isBankTransfer(method.code)){\r\n\t\t\t\t\t\t\t\t<div class=\"method-container text-dark\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-bank-transfer-ec \r\n\t\t\t\t\t\t\t\t\t\t\t\t[method]=\"method\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t[verifyValidate]= \"verifyValidate\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[setLoading] = \"setLoading\" />\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t<app-loading-inline-ec></app-loading-inline-ec>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"row d-flex flex-row\">\r\n\t\t\t\t<div class=\"col-12 d-flex justify-content-between\">\r\n\t\t\t\t\t<button class=\"btn btn-primary text-white\" (click)=\"goBack()\">{{'back'|translate}}</button>\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: [""], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: LoadingInlineEcComponent, selector: "app-loading-inline-ec", inputs: ["type"] }, { kind: "component", type: MpRedirectEcComponent, selector: "app-mp-redirect-ec", inputs: ["method", "total_amount", "allData"], outputs: ["ready"] }, { kind: "component", type: BankTransferEcComponent, selector: "app-bank-transfer-ec", inputs: ["method", "verifyValidate", "setLoading"] }, { kind: "component", type: OfflineEcComponent, selector: "app-offline-ec", inputs: ["method", "verifyValidate", "setLoading"] }] });
93
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: PaymentEcComponent, isStandalone: true, selector: "app-payment-ec", ngImport: i0, template: "@if(methods$ | async; as methods){\r\n<div class=\"container-fluid\">\r\n\r\n\t<div class=\"row\">\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<div class=\"card \">\r\n\t\t\t\t<div class=\"card-header text-dark text-center\">\r\n\t\t\t\t\t<h4>{{ 'select-method' | translate }}</h4>\r\n\t\t\t\t\t<div class=\"btn-toolbar justify-content-center\" role=\"toolbar\" aria-label=\"Envios toolbar\">\r\n\t\t\t\t\t\t<div class=\"\" role=\"group\" aria-label=\"Grupo botones envio\">\r\n\t\t\t\t\t\t\t<div class=\"d-flex align-content-start justify-content-center flex-wrap\">\r\n\t\t\t\t\t\t\t\t@for (method of methods; track $index; let x = $index) {\r\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"btn btn-outline-secondary mx-1 mb-1\"(click)=\"setMethod(method) ; setActive($event)\">\r\n\t\t\t\t\t\t\t\t\t{{ method.name | translate }}\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"card-body text-center\">\r\n\t\t\t\t\t@if(methodData$ | async; as method){\r\n\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t@if(!loadingInternal){\r\n\t\t\t\t\t\t\t@if(isMP(method.code)){\r\n\t\t\t\t\t\t\t\t<div class=\"method-container text-dark\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<p id=\"faqs\" class=\"qt px-5 \">{{ method.description }}</p>\r\n\t\t\t\t\t\t\t\t\t\t\t<p class=\"px-5\">{{ method.instructions }}</p>\r\n\t\t\t\t\t\t\t\t\t\t<app-mp-redirect-ec (ready)=\"verifyValidate($event)\" \t[method]=\"method\"></app-mp-redirect-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t<!-- <div class=\"method-container text-dark text-left\" *ngIf=\"isMPTarjetaDeCredito(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t<p id=\"faqs\" class=\"qt px-5 \">{{ method.description }}</p>\r\n\t\t\t\t\t\t\t\t\t\t<p class=\"px-5\">{{ method.instructions }}</p>\r\n\t\t\t\t\t\t\t\t\t\t<div app-mp-credit-ec (ready)=\"verifyValidate()\" [public_key]=\"getPK(method)\"\r\n\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [total_amount]=\"total_amount\">\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isRedirectRedsys(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"!method.code.includes('bizum') && !method.code.includes('_out_')\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-redsys-redirect-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-redsys-redirect-ec>\r\n\t\t\t\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"method.code.includes('bizum') || method.code.includes('_out_')\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-redsys-redirect-out-ec (ready)=\"verifyValidate($event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[method]=\"method\" [user_data]=\"allData()\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-redsys-redirect-out-ec>\r\n\t\t\t\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isRedirectCecaBank(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t<app-ceca-redirect-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\">\r\n\t\t\t\t\t\t\t\t\t\t</app-ceca-redirect-ec>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isPeyPalExpress(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-paypal-express-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [total_amount]=\"total_amount\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-paypal-express-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isMobbex(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-mobbex-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [paymentServiceInst]=\"paymentService\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[total_amount]=\"total_amount\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-mobbex-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isBancard(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-bancard-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [paymentServiceInst]=\"paymentService\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[total_amount]=\"total_amount\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-bancard-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>-->\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isDecidir(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-decidir-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [paymentServiceInst]=\"_paymentService\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[total_amount]=\"total_amount\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-decidir-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div> \r\n\t\t\t\t\t\t\t@if(isMethodOffline(method.code)){\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark\">\r\n\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t<app-offline-ec \r\n\t\t\t\t\t\t\t\t\t\t[method]=\"method\" \r\n\t\t\t\t\t\t\t\t\t\t[verifyValidate]= \"verifyValidate\"\r\n\t\t\t\t\t\t\t\t\t\t[setLoading] = \"setLoading\" />\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\t\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<!--\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isCulqi(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-culqi-ec [apiKey]=\"getPKCulqi(method)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[amount]=\"total_amount\" [customStyle]=\"true\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(ready)=\"verifyValidate()\"></app-culqi-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isCatastro(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-bancard-catastro-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [paymentServiceInst]=\"paymentService\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[total_amount]=\"total_amount\"></app-bancard-catastro-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isBamboo(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-bamboo-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [paymentServiceInst]=\"paymentService\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[total_amount]=\"total_amount\"></app-bamboo-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div> -->\r\n\t\t\t\t\t\t\t@if(isBankTransfer(method.code)){\r\n\t\t\t\t\t\t\t\t<div class=\"method-container text-dark\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-bank-transfer-ec \r\n\t\t\t\t\t\t\t\t\t\t\t\t[method]=\"method\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t[verifyValidate]= \"verifyValidate\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[setLoading] = \"setLoading\" />\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t<app-loading-inline-ec></app-loading-inline-ec>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"row d-flex flex-row\">\r\n\t\t\t\t<div class=\"col-12 d-flex justify-content-between\">\r\n\t\t\t\t\t<button class=\"btn btn-primary text-white\" (click)=\"goBack()\">{{'back'|translate}}</button>\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: [""], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: LoadingInlineEcComponent, selector: "app-loading-inline-ec", inputs: ["type"] }, { kind: "component", type: MpRedirectEcComponent, selector: "app-mp-redirect-ec", inputs: ["method", "total_amount", "allData"], outputs: ["ready"] }, { kind: "component", type: BankTransferEcComponent, selector: "app-bank-transfer-ec", inputs: ["method", "verifyValidate", "setLoading"] }, { kind: "component", type: OfflineEcComponent, selector: "app-offline-ec", inputs: ["method", "verifyValidate", "setLoading"] }, { kind: "component", type: DecidirEcComponent, selector: "app-decidir-ec", inputs: ["paymentServiceInst", "method", "total_amount", "allData", "user_data"], outputs: ["ready"] }] });
81
94
  }
82
95
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PaymentEcComponent, decorators: [{
83
96
  type: Component,
84
97
  args: [{ selector: 'app-payment-ec', standalone: true, imports: [AsyncPipe,
98
+ CommonModule,
85
99
  TranslateModule,
86
100
  LoadingInlineEcComponent,
87
101
  MpRedirectEcComponent,
88
102
  BankTransferEcComponent,
89
- OfflineEcComponent
90
- ], template: "@if(methods$ | async; as methods){\r\n<div class=\"container-fluid\">\r\n\r\n\t<div class=\"row\">\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<div class=\"card \">\r\n\t\t\t\t<div class=\"card-header text-dark text-center\">\r\n\t\t\t\t\t<h4>{{ 'select-method' | translate }}</h4>\r\n\t\t\t\t\t<div class=\"btn-toolbar justify-content-center\" role=\"toolbar\" aria-label=\"Envios toolbar\">\r\n\t\t\t\t\t\t<div class=\"\" role=\"group\" aria-label=\"Grupo botones envio\">\r\n\t\t\t\t\t\t\t<div class=\"d-flex align-content-start justify-content-center flex-wrap\">\r\n\t\t\t\t\t\t\t\t@for (method of methods; track $index; let x = $index) {\r\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"btn btn-outline-secondary mx-1 mb-1\"(click)=\"setMethod(method) ; setActive($event)\">\r\n\t\t\t\t\t\t\t\t\t{{ method.name | translate }}\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"card-body text-center\">\r\n\t\t\t\t\t@if(methodData$ | async; as method){\r\n\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t@if(!loadingInternal){\r\n\t\t\t\t\t\t\t@if(isMP(method.code)){\r\n\t\t\t\t\t\t\t\t<div class=\"method-container text-dark\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<p id=\"faqs\" class=\"qt px-5 \">{{ method.description }}</p>\r\n\t\t\t\t\t\t\t\t\t\t\t<p class=\"px-5\">{{ method.instructions }}</p>\r\n\t\t\t\t\t\t\t\t\t\t<app-mp-redirect-ec (ready)=\"verifyValidate($event)\" \t[method]=\"method\"></app-mp-redirect-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t<!-- <div class=\"method-container text-dark text-left\" *ngIf=\"isMPTarjetaDeCredito(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t<p id=\"faqs\" class=\"qt px-5 \">{{ method.description }}</p>\r\n\t\t\t\t\t\t\t\t\t\t<p class=\"px-5\">{{ method.instructions }}</p>\r\n\t\t\t\t\t\t\t\t\t\t<div app-mp-credit-ec (ready)=\"verifyValidate()\" [public_key]=\"getPK(method)\"\r\n\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [total_amount]=\"total_amount\">\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isRedirectRedsys(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"!method.code.includes('bizum') && !method.code.includes('_out_')\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-redsys-redirect-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-redsys-redirect-ec>\r\n\t\t\t\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"method.code.includes('bizum') || method.code.includes('_out_')\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-redsys-redirect-out-ec (ready)=\"verifyValidate($event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[method]=\"method\" [user_data]=\"allData()\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-redsys-redirect-out-ec>\r\n\t\t\t\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isRedirectCecaBank(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t<app-ceca-redirect-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\">\r\n\t\t\t\t\t\t\t\t\t\t</app-ceca-redirect-ec>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isPeyPalExpress(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-paypal-express-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [total_amount]=\"total_amount\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-paypal-express-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isMobbex(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-mobbex-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [paymentServiceInst]=\"paymentService\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[total_amount]=\"total_amount\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-mobbex-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isBancard(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-bancard-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [paymentServiceInst]=\"paymentService\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[total_amount]=\"total_amount\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-bancard-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isDecidir(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-decidir-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [paymentServiceInst]=\"paymentService\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[total_amount]=\"total_amount\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-decidir-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div> -->\r\n\t\t\t\t\t\t\t@if(isMethodOffline(method.code)){\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark\">\r\n\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t<app-offline-ec \r\n\t\t\t\t\t\t\t\t\t\t[method]=\"method\" \r\n\t\t\t\t\t\t\t\t\t\t[verifyValidate]= \"verifyValidate\"\r\n\t\t\t\t\t\t\t\t\t\t[setLoading] = \"setLoading\" />\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\t\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<!--\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isCulqi(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-culqi-ec [apiKey]=\"getPKCulqi(method)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[amount]=\"total_amount\" [customStyle]=\"true\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(ready)=\"verifyValidate()\"></app-culqi-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isCatastro(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-bancard-catastro-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [paymentServiceInst]=\"paymentService\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[total_amount]=\"total_amount\"></app-bancard-catastro-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isBamboo(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-bamboo-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [paymentServiceInst]=\"paymentService\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[total_amount]=\"total_amount\"></app-bamboo-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div> -->\r\n\t\t\t\t\t\t\t@if(isBankTransfer(method.code)){\r\n\t\t\t\t\t\t\t\t<div class=\"method-container text-dark\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-bank-transfer-ec \r\n\t\t\t\t\t\t\t\t\t\t\t\t[method]=\"method\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t[verifyValidate]= \"verifyValidate\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[setLoading] = \"setLoading\" />\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t<app-loading-inline-ec></app-loading-inline-ec>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"row d-flex flex-row\">\r\n\t\t\t\t<div class=\"col-12 d-flex justify-content-between\">\r\n\t\t\t\t\t<button class=\"btn btn-primary text-white\" (click)=\"goBack()\">{{'back'|translate}}</button>\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}" }]
103
+ OfflineEcComponent,
104
+ DecidirEcComponent
105
+ ], template: "@if(methods$ | async; as methods){\r\n<div class=\"container-fluid\">\r\n\r\n\t<div class=\"row\">\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<div class=\"card \">\r\n\t\t\t\t<div class=\"card-header text-dark text-center\">\r\n\t\t\t\t\t<h4>{{ 'select-method' | translate }}</h4>\r\n\t\t\t\t\t<div class=\"btn-toolbar justify-content-center\" role=\"toolbar\" aria-label=\"Envios toolbar\">\r\n\t\t\t\t\t\t<div class=\"\" role=\"group\" aria-label=\"Grupo botones envio\">\r\n\t\t\t\t\t\t\t<div class=\"d-flex align-content-start justify-content-center flex-wrap\">\r\n\t\t\t\t\t\t\t\t@for (method of methods; track $index; let x = $index) {\r\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"btn btn-outline-secondary mx-1 mb-1\"(click)=\"setMethod(method) ; setActive($event)\">\r\n\t\t\t\t\t\t\t\t\t{{ method.name | translate }}\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"card-body text-center\">\r\n\t\t\t\t\t@if(methodData$ | async; as method){\r\n\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t@if(!loadingInternal){\r\n\t\t\t\t\t\t\t@if(isMP(method.code)){\r\n\t\t\t\t\t\t\t\t<div class=\"method-container text-dark\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<p id=\"faqs\" class=\"qt px-5 \">{{ method.description }}</p>\r\n\t\t\t\t\t\t\t\t\t\t\t<p class=\"px-5\">{{ method.instructions }}</p>\r\n\t\t\t\t\t\t\t\t\t\t<app-mp-redirect-ec (ready)=\"verifyValidate($event)\" \t[method]=\"method\"></app-mp-redirect-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t<!-- <div class=\"method-container text-dark text-left\" *ngIf=\"isMPTarjetaDeCredito(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t<p id=\"faqs\" class=\"qt px-5 \">{{ method.description }}</p>\r\n\t\t\t\t\t\t\t\t\t\t<p class=\"px-5\">{{ method.instructions }}</p>\r\n\t\t\t\t\t\t\t\t\t\t<div app-mp-credit-ec (ready)=\"verifyValidate()\" [public_key]=\"getPK(method)\"\r\n\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [total_amount]=\"total_amount\">\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isRedirectRedsys(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"!method.code.includes('bizum') && !method.code.includes('_out_')\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-redsys-redirect-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-redsys-redirect-ec>\r\n\t\t\t\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"method.code.includes('bizum') || method.code.includes('_out_')\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-redsys-redirect-out-ec (ready)=\"verifyValidate($event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[method]=\"method\" [user_data]=\"allData()\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-redsys-redirect-out-ec>\r\n\t\t\t\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isRedirectCecaBank(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t<app-ceca-redirect-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\">\r\n\t\t\t\t\t\t\t\t\t\t</app-ceca-redirect-ec>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isPeyPalExpress(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-paypal-express-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [total_amount]=\"total_amount\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-paypal-express-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isMobbex(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-mobbex-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [paymentServiceInst]=\"paymentService\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[total_amount]=\"total_amount\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-mobbex-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isBancard(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-bancard-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [paymentServiceInst]=\"paymentService\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[total_amount]=\"total_amount\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-bancard-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>-->\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isDecidir(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-decidir-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [paymentServiceInst]=\"_paymentService\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[total_amount]=\"total_amount\">\r\n\t\t\t\t\t\t\t\t\t\t\t</app-decidir-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div> \r\n\t\t\t\t\t\t\t@if(isMethodOffline(method.code)){\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark\">\r\n\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t<app-offline-ec \r\n\t\t\t\t\t\t\t\t\t\t[method]=\"method\" \r\n\t\t\t\t\t\t\t\t\t\t[verifyValidate]= \"verifyValidate\"\r\n\t\t\t\t\t\t\t\t\t\t[setLoading] = \"setLoading\" />\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\t\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<!--\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isCulqi(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-culqi-ec [apiKey]=\"getPKCulqi(method)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[amount]=\"total_amount\" [customStyle]=\"true\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(ready)=\"verifyValidate()\"></app-culqi-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isCatastro(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-bancard-catastro-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [paymentServiceInst]=\"paymentService\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[total_amount]=\"total_amount\"></app-bancard-catastro-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"method-container text-dark text-start\" *ngIf=\"isBamboo(method.code)\">\r\n\t\t\t\t\t\t\t\t<div class=\"container\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row justify-content-center\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-bamboo-ec (ready)=\"verifyValidate($event)\" [method]=\"method\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[user_data]=\"allData()\" [paymentServiceInst]=\"paymentService\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[total_amount]=\"total_amount\"></app-bamboo-ec>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div> -->\r\n\t\t\t\t\t\t\t@if(isBankTransfer(method.code)){\r\n\t\t\t\t\t\t\t\t<div class=\"method-container text-dark\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t\t\t\t\t<app-bank-transfer-ec \r\n\t\t\t\t\t\t\t\t\t\t\t\t[method]=\"method\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t[verifyValidate]= \"verifyValidate\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[setLoading] = \"setLoading\" />\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t<app-loading-inline-ec></app-loading-inline-ec>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"row d-flex flex-row\">\r\n\t\t\t\t<div class=\"col-12 d-flex justify-content-between\">\r\n\t\t\t\t\t<button class=\"btn btn-primary text-white\" (click)=\"goBack()\">{{'back'|translate}}</button>\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}" }]
91
106
  }], ctorParameters: () => [] });
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9jaGVja291dC1lYy9wYXltZW50LWVjL3BheW1lbnQtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvY2hlY2tvdXQtZWMvcGF5bWVudC1lYy9wYXltZW50LWVjLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtEQUErRCxDQUFDOzs7QUFleEcsTUFBTSxPQUFPLGtCQUFrQjtJQUV0QixlQUFlLEdBQW1CLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUN4RCxnQkFBZ0IsR0FBb0IsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFBO0lBRTNELGtCQUFrQixHQUFHLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxDQUFDO0lBQ3BELGVBQWUsR0FBRyxJQUFJLGVB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RU0sY0FBYyxHQUFHLENBQUMsTUFBVSxFQUFFLEVBQUU7UUFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNyQixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUMsQ0FBQTtJQUVNLElBQUksR0FBRyxHQUFHLEVBQUU7UUFDbEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFBO0lBQzdCLENBQUMsQ0FBQTtJQUVNLE1BQU0sR0FBRyxHQUFHLEVBQUU7UUFDcEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFBO0lBQzdCLENBQUMsQ0FBQTt3R0EvRVcsa0JBQWtCOzRGQUFsQixrQkFBa0IsMEVDdEIvQiwrclRBa01DLHFERHBMVSxTQUFTLDZDQUNsQixlQUFlLDRGQUNmLHdCQUF3QixvRkFDeEIscUJBQXFCLGtJQUNyQix1QkFBdUIscUhBQ3ZCLGtCQUFrQjs7NEZBR1Asa0JBQWtCO2tCQWI5QixTQUFTOytCQUNDLGdCQUFnQixjQUNkLElBQUksV0FHUCxDQUFDLFNBQVM7d0JBQ2xCLGVBQWU7d0JBQ2Ysd0JBQXdCO3dCQUN4QixxQkFBcUI7d0JBQ3JCLHVCQUF1Qjt3QkFDdkIsa0JBQWtCO3FCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2hlY2tvdXRTZXJ2aWNlLCBQYXltZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2VjLXNlcnZpY2VzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBMb2FkaW5nSW5saW5lRWNDb21wb25lbnQgfSBmcm9tICcuLi8uLi93aWRnZXRzLWVjJztcclxuaW1wb3J0IHsgTXBSZWRpcmVjdEVjQ29tcG9uZW50LCBPZmZsaW5lRWNDb21wb25lbnQgfSBmcm9tICcuL3BheW1lbnQtbWV0aG9kcyc7XHJcbmltcG9ydCB7IEJhbmtUcmFuc2ZlckVjQ29tcG9uZW50IH0gZnJvbSAnLi9wYXltZW50LW1ldGhvZHMvYmFuay10cmFuc2Zlci1lYy9iYW5rLXRyYW5zZmVyLWVjLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2FwcC1wYXltZW50LWVjJyxcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9wYXltZW50LWVjLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9wYXltZW50LWVjLmNvbXBvbmVudC5zY3NzJ10sXHJcblx0aW1wb3J0czogW0FzeW5jUGlwZSxcclxuXHRcdFRyYW5zbGF0ZU1vZHVsZSxcclxuXHRcdExvYWRpbmdJbmxpbmVFY0NvbXBvbmVudCxcclxuXHRcdE1wUmVkaXJlY3RFY0NvbXBvbmVudCxcclxuXHRcdEJhbmtUcmFuc2ZlckVjQ29tcG9uZW50LFxyXG5cdFx0T2ZmbGluZUVjQ29tcG9uZW50XHJcblx0XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGF5bWVudEVjQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcblx0cHJpdmF0ZSBfcGF5bWVudFNlcnZpY2U6IFBheW1lbnRTZXJ2aWNlID0gaW5qZWN0KFBheW1lbnRTZXJ2aWNlKVxyXG5cdHByaXZhdGUgX2NoZWNrb3V0U2VydmljZTogQ2hlY2tvdXRTZXJ2aWNlID0gaW5qZWN0KENoZWNrb3V0U2VydmljZSlcclxuXHJcblx0cHJpdmF0ZSBfbWV0aG9kRGF0YVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XHJcblx0cHJpdmF0ZSBfbG9hZGluZ1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcblx0cHVibGljIG1ldGhvZHMkID0gdGhpcy5fcGF5bWVudFNlcnZpY2UubWV0aG9kcyQ7XHJcblx0cHVibGljIGxvYWRpbmckID0gdGhpcy5fbG9hZGluZ1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblx0cHVibGljIG1ldGhvZERhdGEkID0gdGhpcy5fbWV0aG9kRGF0YVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG5cdHB1YmxpYyBsb2FkaW5nSW50ZXJuYWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0Y29uc3RydWN0b3IoKSB7IH1cclxuXHJcblx0bmdPbkluaXQoKSB7XHJcblx0fVxyXG5cdHNldEFjdGl2ZSgkZXZlbnQ6IGFueSkge1xyXG5cdFx0Y29uc3QgcGFyZW50ID0gJGV2ZW50LnRhcmdldC5wYXJlbnRFbGVtZW50LmNoaWxkcmVuO1xyXG5cdFx0Zm9yIChjb25zdCBidXR0b24gb2YgcGFyZW50KSB7XHJcblx0XHRcdGlmIChidXR0b24uY2xhc3NMaXN0LmNvbnRhaW5zKCdhY3RpdmUnKSkge1xyXG5cdFx0XHRcdGJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHQkZXZlbnQudGFyZ2V0LmNsYXNzTGlzdC5hZGQoXCJhY3RpdmVcIilcclxuXHR9XHJcblx0YXN5bmMgc2V0TWV0aG9kKG1ldGhvZDogYW55KSB7XHJcblx0XHR0aGlzLl9tZXRob2REYXRhU3ViamVjdC5uZXh0KG51bGwpO1xyXG5cdFx0bGV0IHJlc3VsdCA9IGF3YWl0IHRoaXMuX3BheW1lbnRTZXJ2aWNlLnB1dFBheW1lbnQobWV0aG9kLmNvZGUpO1xyXG5cdFx0dGhpcy5fbWV0aG9kRGF0YVN1YmplY3QubmV4dChtZXRob2QpO1xyXG5cdH1cclxuXHJcblx0Ly9GdW5jaW9uZXMgcGFyYSBjaGVxdWVhciBlbCBtZXRvZG8gZGUgcGFnby5cclxuXHRpc1JlZGlyZWN0UmVkc3lzID0gKGNvZGU6IHN0cmluZykgPT4gISFjb2RlPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdyZWRzeXNfcmVkaXJlY3QnKVxyXG5cdGlzUmVkaXJlY3RDZWNhQmFuayA9IChjb2RlOiBzdHJpbmcpID0+ICEhY29kZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnY2VjYV9iYW5rX3JlZGlyZWN0JylcclxuXHRpc01QID0gKGNvZGU6IHN0cmluZykgPT4ge1xyXG5cdFx0Y29uc3QgbG93ZXJDb2RlID0gY29kZT8udG9Mb3dlckNhc2UoKSB8fCAnJztcclxuXHRcdHJldHVybiBsb3dlckNvZGUuaW5jbHVkZXMoJ21lcmNhZG9fcGFnbycpICYmICFsb3dlckNvZGUuaW5jbHVkZXMoJ2NyZWRpdCcpO1xyXG5cdH1cclxuXHRpc01QVGFyamV0YURlQ3JlZGl0byA9IChjb2RlOiBzdHJpbmcpID0+ICEhY29kZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnY3JlZGl0JylcclxuXHRpc01ldGhvZE9mZmxpbmUgPSAoY29kZTogc3RyaW5nKSA9PiAhIWNvZGU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ29mZmxpbmUnKVxyXG5cdGlzUGV5UGFsRXhwcmVzcyA9IChjb2RlOiBzdHJpbmcpID0+IHtcclxuXHRcdGNvbnN0IGxvd2VyQ29kZSA9IGNvZGU/LnRvTG93ZXJDYXNlKCkgfHwgJyc7XHJcblx0XHRyZXR1cm4gbG93ZXJDb2RlLmluY2x1ZGVzKCdwYXlwYWwnKSAmJiBsb3dlckNvZGUuaW5jbHVkZXMoJ2V4cHJlc3MnKTtcclxuXHR9XHJcblx0aXNNb2JiZXggPSAoY29kZTogc3RyaW5nKSA9PiAhIWNvZGU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ21vYmJleCcpXHJcblx0aXNCYW5jYXJkID0gKGNvZGU6IHN0cmluZykgPT4gISFjb2RlPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdiYW5jYXJkJylcclxuXHRpc0RlY2lkaXIgPSAoY29kZTogc3RyaW5nKSA9PiAhIWNvZGU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2RlY2lkaXInKVxyXG5cdGlzQ3VscWkgPSAoY29kZTogc3RyaW5nKSA9PiAhIWNvZGU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2N1bHFpJylcclxuXHRpc0JhbmtUcmFuc2ZlciA9IChjb2RlOiBzdHJpbmcpID0+ICEhY29kZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnYmFua190cmFuc2ZlcicpXHJcblx0aXNDYXRhc3RybyA9IChjb2RlOiBzdHJpbmcpID0+ICEhY29kZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnY2F0YXN0cm8nKVxyXG5cdGlzQmFtYm9vID0gKGNvZGU6IHN0cmluZykgPT4gISFjb2RlPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdiYW1ib28nKVxyXG5cclxuXHRhbGxEYXRhKCk6IGFueSB7XHJcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XHJcblx0fVxyXG5cdGVtaXRSZXN1bHQgPSBhc3luYyAoKSA9PiB7XHJcblx0XHR0aGlzLl9wYXltZW50U2VydmljZS5zZXRQYXltZW50KHRoaXMuX21ldGhvZERhdGFTdWJqZWN0LmdldFZhbHVlKCkpXHJcblx0XHR0aGlzLnNldExvYWRpbmcoZmFsc2UpXHJcblx0XHR0aGlzLm5leHQoKVxyXG5cdH1cclxuXHJcblx0cHVibGljIHNldExvYWRpbmcgPSAoZXN0YWRvID0gdHJ1ZSkgPT4ge1xyXG5cdFx0dGhpcy5fbG9hZGluZ1N1YmplY3QubmV4dChlc3RhZG8pO1xyXG5cdFx0cmV0dXJuIHRydWU7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgdmVyaWZ5VmFsaWRhdGUgPSAoJGV2ZW50OmFueSkgPT4ge1xyXG5cdFx0dGhpcy5zZXRMb2FkaW5nKHRydWUpXHJcblx0XHRzZXRUaW1lb3V0KCgpID0+IHRoaXMuZW1pdFJlc3VsdCgpLCAxMDAwKTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBuZXh0ID0gKCkgPT4ge1xyXG5cdFx0dGhpcy5fY2hlY2tvdXRTZXJ2aWNlLm5leHQoKVxyXG5cdH1cclxuXHJcblx0cHVibGljIGdvQmFjayA9ICgpID0+IHtcclxuXHRcdHRoaXMuX2NoZWNrb3V0U2VydmljZS5iYWNrKClcclxuXHR9XHJcbn1cclxuIiwiQGlmKG1ldGhvZHMkIHwgYXN5bmM7IGFzIG1ldGhvZHMpe1xyXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcblxyXG5cdDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImNhcmQgXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHRleHQtZGFyayB0ZXh0LWNlbnRlclwiPlxyXG5cdFx0XHRcdFx0PGg0Pnt7ICdzZWxlY3QtbWV0aG9kJyB8IHRyYW5zbGF0ZSB9fTwvaDQ+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiYnRuLXRvb2xiYXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiIHJvbGU9XCJ0b29sYmFyXCIgYXJpYS1sYWJlbD1cIkVudmlvcyB0b29sYmFyXCI+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsPVwiR3J1cG8gYm90b25lcyBlbnZpb1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24tY29udGVudC1zdGFydCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGZsZXgtd3JhcFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0QGZvciAobWV0aG9kIG9mIG1ldGhvZHM7IHRyYWNrICRpbmRleDsgbGV0IHggPSAkaW5kZXgpIHtcclxuXHRcdFx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBteC0xIG1iLTFcIihjbGljayk9XCJzZXRNZXRob2QobWV0aG9kKSA7IHNldEFjdGl2ZSgkZXZlbnQpXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdHt7IG1ldGhvZC5uYW1lIHwgdHJhbnNsYXRlIH19XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHRleHQtY2VudGVyXCI+XHJcblx0XHRcdFx0XHRAaWYobWV0aG9kRGF0YSQgfCBhc3luYzsgYXMgbWV0aG9kKXtcclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG5cdFx0XHRcdFx0XHRAaWYoIWxvYWRpbmdJbnRlcm5hbCl7XHJcblx0XHRcdFx0XHRcdFx0QGlmKGlzTVAobWV0aG9kLmNvZGUpKXtcclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJtZXRob2QtY29udGFpbmVyIHRleHQtZGFya1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwicm93XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHAgaWQ9XCJmYXFzXCIgY2xhc3M9XCJxdCBweC01IFwiPnt7IG1ldGhvZC5kZXNjcmlwdGlvbiB9fTwvcD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwicHgtNVwiPnt7IG1ldGhvZC5pbnN0cnVjdGlvbnMgfX08L3A+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGFwcC1tcC1yZWRpcmVjdC1lYyAocmVhZHkpPVwidmVyaWZ5VmFsaWRhdGUoJGV2ZW50KVwiIFx0W21ldGhvZF09XCJtZXRob2RcIj48L2FwcC1tcC1yZWRpcmVjdC1lYz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0PCEtLSA8ZGl2IGNsYXNzPVwibWV0aG9kLWNvbnRhaW5lciB0ZXh0LWRhcmsgdGV4dC1sZWZ0XCIgKm5nSWY9XCJpc01QVGFyamV0YURlQ3JlZGl0byhtZXRob2QuY29kZSlcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxwIGlkPVwiZmFxc1wiIGNsYXNzPVwicXQgcHgtNSBcIj57eyBtZXRob2QuZGVzY3JpcHRpb24gfX08L3A+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHAgY2xhc3M9XCJweC01XCI+e3sgbWV0aG9kLmluc3RydWN0aW9ucyB9fTwvcD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGFwcC1tcC1jcmVkaXQtZWMgKHJlYWR5KT1cInZlcmlmeVZhbGlkYXRlKClcIiBbcHVibGljX2tleV09XCJnZXRQSyhtZXRob2QpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFt1c2VyX2RhdGFdPVwiYWxsRGF0YSgpXCIgW3RvdGFsX2Ftb3VudF09XCJ0b3RhbF9hbW91bnRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibWV0aG9kLWNvbnRhaW5lciB0ZXh0LWRhcmsgdGV4dC1zdGFydFwiICpuZ0lmPVwiaXNSZWRpcmVjdFJlZHN5cyhtZXRob2QuY29kZSlcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxuZy1jb250YWluZXJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCpuZ0lmPVwiIW1ldGhvZC5jb2RlLmluY2x1ZGVzKCdiaXp1bScpICYmICFtZXRob2QuY29kZS5pbmNsdWRlcygnX291dF8nKVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGFwcC1yZWRzeXMtcmVkaXJlY3QtZWMgKHJlYWR5KT1cInZlcmlmeVZhbGlkYXRlKCRldmVudClcIiBbbWV0aG9kXT1cIm1ldGhvZFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFt1c2VyX2RhdGFdPVwiYWxsRGF0YSgpXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2FwcC1yZWRzeXMtcmVkaXJlY3QtZWM+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9uZy1jb250YWluZXI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lclxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Km5nSWY9XCJtZXRob2QuY29kZS5pbmNsdWRlcygnYml6dW0nKSB8fCBtZXRob2QuY29kZS5pbmNsdWRlcygnX291dF8nKVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGFwcC1yZWRzeXMtcmVkaXJlY3Qtb3V0LWVjIChyZWFkeSk9XCJ2ZXJpZnlWYWxpZGF0ZSgkZXZlbnQpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W21ldGhvZF09XCJtZXRob2RcIiBbdXNlcl9kYXRhXT1cImFsbERhdGEoKVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9hcHAtcmVkc3lzLXJlZGlyZWN0LW91dC1lYz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibWV0aG9kLWNvbnRhaW5lciB0ZXh0LWRhcmsgdGV4dC1zdGFydFwiICpuZ0lmPVwiaXNSZWRpcmVjdENlY2FCYW5rKG1ldGhvZC5jb2RlKVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInJvd1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGFwcC1jZWNhLXJlZGlyZWN0LWVjIChyZWFkeSk9XCJ2ZXJpZnlWYWxpZGF0ZSgkZXZlbnQpXCIgW21ldGhvZF09XCJtZXRob2RcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0W3VzZXJfZGF0YV09XCJhbGxEYXRhKClcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2FwcC1jZWNhLXJlZGlyZWN0LWVjPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJtZXRob2QtY29udGFpbmVyIHRleHQtZGFyayB0ZXh0LXN0YXJ0XCIgKm5nSWY9XCJpc1BleVBhbEV4cHJlc3MobWV0aG9kLmNvZGUpXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxhcHAtcGF5cGFsLWV4cHJlc3MtZWMgKHJlYWR5KT1cInZlcmlmeVZhbGlkYXRlKCRldmVudClcIiBbbWV0aG9kXT1cIm1ldGhvZFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFt1c2VyX2RhdGFdPVwiYWxsRGF0YSgpXCIgW3RvdGFsX2Ftb3VudF09XCJ0b3RhbF9hbW91bnRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvYXBwLXBheXBhbC1leHByZXNzLWVjPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJtZXRob2QtY29udGFpbmVyIHRleHQtZGFyayB0ZXh0LXN0YXJ0XCIgKm5nSWY9XCJpc01vYmJleChtZXRob2QuY29kZSlcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGFwcC1tb2JiZXgtZWMgKHJlYWR5KT1cInZlcmlmeVZhbGlkYXRlKCRldmVudClcIiBbbWV0aG9kXT1cIm1ldGhvZFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFt1c2VyX2RhdGFdPVwiYWxsRGF0YSgpXCIgW3BheW1lbnRTZXJ2aWNlSW5zdF09XCJwYXltZW50U2VydmljZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFt0b3RhbF9hbW91bnRdPVwidG90YWxfYW1vdW50XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2FwcC1tb2JiZXgtZWM+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cIm1ldGhvZC1jb250YWluZXIgdGV4dC1kYXJrIHRleHQtc3RhcnRcIiAqbmdJZj1cImlzQmFuY2FyZChtZXRob2QuY29kZSlcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGFwcC1iYW5jYXJkLWVjIChyZWFkeSk9XCJ2ZXJpZnlWYWxpZGF0ZSgkZXZlbnQpXCIgW21ldGhvZF09XCJtZXRob2RcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbdXNlcl9kYXRhXT1cImFsbERhdGEoKVwiIFtwYXltZW50U2VydmljZUluc3RdPVwicGF5bWVudFNlcnZpY2VcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbdG90YWxfYW1vdW50XT1cInRvdGFsX2Ftb3VudFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9hcHAtYmFuY2FyZC1lYz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibWV0aG9kLWNvbnRhaW5lciB0ZXh0LWRhcmsgdGV4dC1zdGFydFwiICpuZ0lmPVwiaXNEZWNpZGlyKG1ldGhvZC5jb2RlKVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YXBwLWRlY2lkaXItZWMgKHJlYWR5KT1cInZlcmlmeVZhbGlkYXRlKCRldmVudClcIiBbbWV0aG9kXT1cIm1ldGhvZFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFt1c2VyX2RhdGFdPVwiYWxsRGF0YSgpXCIgW3BheW1lbnRTZXJ2aWNlSW5zdF09XCJwYXltZW50U2VydmljZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFt0b3RhbF9hbW91bnRdPVwidG90YWxfYW1vdW50XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2FwcC1kZWNpZGlyLWVjPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PiAtLT5cclxuXHRcdFx0XHRcdFx0XHRAaWYoaXNNZXRob2RPZmZsaW5lKG1ldGhvZC5jb2RlKSl7XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cIm1ldGhvZC1jb250YWluZXIgdGV4dC1kYXJrXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwicm93XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8YXBwLW9mZmxpbmUtZWMgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0W21ldGhvZF09XCJtZXRob2RcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRbdmVyaWZ5VmFsaWRhdGVdPSBcInZlcmlmeVZhbGlkYXRlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRbc2V0TG9hZGluZ10gPSBcInNldExvYWRpbmdcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2Plx0XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdDwhLS1cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibWV0aG9kLWNvbnRhaW5lciB0ZXh0LWRhcmsgdGV4dC1zdGFydFwiICpuZ0lmPVwiaXNDdWxxaShtZXRob2QuY29kZSlcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGFwcC1jdWxxaS1lYyBbYXBpS2V5XT1cImdldFBLQ3VscWkobWV0aG9kKVwiIFttZXRob2RdPVwibWV0aG9kXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W2Ftb3VudF09XCJ0b3RhbF9hbW91bnRcIiBbY3VzdG9tU3R5bGVdPVwidHJ1ZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChyZWFkeSk9XCJ2ZXJpZnlWYWxpZGF0ZSgpXCI+PC9hcHAtY3VscWktZWM+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cIm1ldGhvZC1jb250YWluZXIgdGV4dC1kYXJrIHRleHQtc3RhcnRcIiAqbmdJZj1cImlzQ2F0YXN0cm8obWV0aG9kLmNvZGUpXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxhcHAtYmFuY2FyZC1jYXRhc3Ryby1lYyAocmVhZHkpPVwidmVyaWZ5VmFsaWRhdGUoJGV2ZW50KVwiIFttZXRob2RdPVwibWV0aG9kXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W3VzZXJfZGF0YV09XCJhbGxEYXRhKClcIiBbcGF5bWVudFNlcnZpY2VJbnN0XT1cInBheW1lbnRTZXJ2aWNlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W3RvdGFsX2Ftb3VudF09XCJ0b3RhbF9hbW91bnRcIj48L2FwcC1iYW5jYXJkLWNhdGFzdHJvLWVjPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJtZXRob2QtY29udGFpbmVyIHRleHQtZGFyayB0ZXh0LXN0YXJ0XCIgKm5nSWY9XCJpc0JhbWJvbyhtZXRob2QuY29kZSlcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGFwcC1iYW1ib28tZWMgKHJlYWR5KT1cInZlcmlmeVZhbGlkYXRlKCRldmVudClcIiBbbWV0aG9kXT1cIm1ldGhvZFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFt1c2VyX2RhdGFdPVwiYWxsRGF0YSgpXCIgW3BheW1lbnRTZXJ2aWNlSW5zdF09XCJwYXltZW50U2VydmljZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFt0b3RhbF9hbW91bnRdPVwidG90YWxfYW1vdW50XCI+PC9hcHAtYmFtYm9vLWVjPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PiAtLT5cclxuXHRcdFx0XHRcdFx0XHRAaWYoaXNCYW5rVHJhbnNmZXIobWV0aG9kLmNvZGUpKXtcclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJtZXRob2QtY29udGFpbmVyIHRleHQtZGFya1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwicm93XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGFwcC1iYW5rLXRyYW5zZmVyLWVjIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbbWV0aG9kXT1cIm1ldGhvZFwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbdmVyaWZ5VmFsaWRhdGVdPSBcInZlcmlmeVZhbGlkYXRlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W3NldExvYWRpbmddID0gXCJzZXRMb2FkaW5nXCIgLz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH0gQGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdDxhcHAtbG9hZGluZy1pbmxpbmUtZWM+PC9hcHAtbG9hZGluZy1pbmxpbmUtZWM+XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cInJvdyBkLWZsZXggZmxleC1yb3dcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY29sLTEyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG5cdFx0XHRcdFx0PGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB0ZXh0LXdoaXRlXCIgKGNsaWNrKT1cImdvQmFjaygpXCI+e3snYmFjayd8dHJhbnNsYXRlfX08L2J1dHRvbj5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuPC9kaXY+XHJcbn0iXX0=
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9jaGVja291dC1lYy9wYXltZW50LWVjL3BheW1lbnQtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvY2hlY2tvdXQtZWMvcGF5bWVudC1lYy9wYXltZW50LWVjLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUN4RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN0RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7QUFrQm5ELE1BQU0sT0FBTyxrQkFBa0I7SUFFdkIsZUFBZSxHQUFtQixNQUFNLENBQUMsY0FBYyxDQUFDLENBQUE7SUFDdkQsZ0JBQWdCLEdB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QzNCL0IsZ3NUQWtNQyxxRERqTFUsU0FBUyw2Q0FDbEIsWUFBWSxrSUFDWixlQUFlLDRGQUNmLHdCQUF3QixvRkFDeEIscUJBQXFCLGtJQUNyQix1QkFBdUIscUhBQ3ZCLGtCQUFrQiwrR0FDbEIsa0JBQWtCOzs0RkFHUCxrQkFBa0I7a0JBZjlCLFNBQVM7K0JBQ0MsZ0JBQWdCLGNBQ2QsSUFBSSxXQUdQLENBQUMsU0FBUzt3QkFDbEIsWUFBWTt3QkFDWixlQUFlO3dCQUNmLHdCQUF3Qjt3QkFDeEIscUJBQXFCO3dCQUNyQix1QkFBdUI7d0JBQ3ZCLGtCQUFrQjt3QkFDbEIsa0JBQWtCO3FCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDaGVja291dFNlcnZpY2UsIFBheW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZWMtc2VydmljZXMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IExvYWRpbmdJbmxpbmVFY0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL3dpZGdldHMtZWMnO1xyXG5pbXBvcnQgeyBNcFJlZGlyZWN0RWNDb21wb25lbnQsIE9mZmxpbmVFY0NvbXBvbmVudCB9IGZyb20gJy4vcGF5bWVudC1tZXRob2RzJztcclxuaW1wb3J0IHsgQmFua1RyYW5zZmVyRWNDb21wb25lbnQgfSBmcm9tICcuL3BheW1lbnQtbWV0aG9kcy9iYW5rLXRyYW5zZmVyLWVjL2JhbmstdHJhbnNmZXItZWMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGVjaWRpckVjQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vd2lkZ2V0cy1lYy9kZWNpZGlyLWVjL2RlY2lkaXItZWMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9lYy1zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IENoZWNrb3V0RGF0YSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdhcHAtcGF5bWVudC1lYycsXHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHR0ZW1wbGF0ZVVybDogJy4vcGF5bWVudC1lYy5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vcGF5bWVudC1lYy5jb21wb25lbnQuc2NzcyddLFxyXG5cdGltcG9ydHM6IFtBc3luY1BpcGUsXHJcblx0XHRDb21tb25Nb2R1bGUsXHJcblx0XHRUcmFuc2xhdGVNb2R1bGUsXHJcblx0XHRMb2FkaW5nSW5saW5lRWNDb21wb25lbnQsXHJcblx0XHRNcFJlZGlyZWN0RWNDb21wb25lbnQsXHJcblx0XHRCYW5rVHJhbnNmZXJFY0NvbXBvbmVudCxcclxuXHRcdE9mZmxpbmVFY0NvbXBvbmVudCxcclxuXHRcdERlY2lkaXJFY0NvbXBvbmVudFxyXG5cdF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFBheW1lbnRFY0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG5cdHB1YmxpYyBfcGF5bWVudFNlcnZpY2U6IFBheW1lbnRTZXJ2aWNlID0gaW5qZWN0KFBheW1lbnRTZXJ2aWNlKVxyXG5cdHByaXZhdGUgX2NoZWNrb3V0U2VydmljZTogQ2hlY2tvdXRTZXJ2aWNlID0gaW5qZWN0KENoZWNrb3V0U2VydmljZSlcclxuXHRwcml2YXRlIF9jYXJ0U2VydmljZTogQ2FydFNlcnZpY2UgPSBpbmplY3QoQ2FydFNlcnZpY2UpO1xyXG5cclxuXHRwcml2YXRlIF9tZXRob2REYXRhU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcclxuXHRwcml2YXRlIF9sb2FkaW5nU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuXHRwdWJsaWMgbWV0aG9kcyQgPSB0aGlzLl9wYXltZW50U2VydmljZS5tZXRob2RzJDtcclxuXHRwdWJsaWMgbG9hZGluZyQgPSB0aGlzLl9sb2FkaW5nU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHRwdWJsaWMgbWV0aG9kRGF0YSQgPSB0aGlzLl9tZXRob2REYXRhU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcblx0cHVibGljIGxvYWRpbmdJbnRlcm5hbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdHB1YmxpYyB0b3RhbF9hbW91bnQ6IG51bWJlciA9IDA7XHJcblxyXG5cdGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG5cdG5nT25Jbml0KCkge1xyXG5cdFx0XHRcdHRoaXMuX2NoZWNrb3V0U2VydmljZS5hc3NvY2lhdGVkRGF0YSQuc3Vic2NyaWJlKChkYXRhOiBDaGVja291dERhdGFbXSkgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc3QgdG90YWxJdGVtID0gZGF0YS5maW5kKGl0ZW0gPT4gaXRlbS50eXBlID09ICd0b3RhbCcpO1xyXG5cdFx0XHRcdFx0dGhpcy50b3RhbF9hbW91bnQgPSB0b3RhbEl0ZW0/LmFtb3VudCA/PyAwO1xyXG5cdFx0XHRcdH0pXHJcblxyXG5cdFx0Y29uc29sZS5sb2coJ1BheW1lbnRFY0NvbXBvbmVudCBpbml0aWFsaXplZCB3aXRoIHRvdGFsX2Ftb3VudDonLCB0aGlzLnRvdGFsX2Ftb3VudCk7XHJcblx0fVxyXG5cdHNldEFjdGl2ZSgkZXZlbnQ6IGFueSkge1xyXG5cdFx0Y29uc3QgcGFyZW50ID0gJGV2ZW50LnRhcmdldC5wYXJlbnRFbGVtZW50LmNoaWxkcmVuO1xyXG5cdFx0Zm9yIChjb25zdCBidXR0b24gb2YgcGFyZW50KSB7XHJcblx0XHRcdGlmIChidXR0b24uY2xhc3NMaXN0LmNvbnRhaW5zKCdhY3RpdmUnKSkge1xyXG5cdFx0XHRcdGJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHQkZXZlbnQudGFyZ2V0LmNsYXNzTGlzdC5hZGQoXCJhY3RpdmVcIilcclxuXHR9XHJcblx0YXN5bmMgc2V0TWV0aG9kKG1ldGhvZDogYW55KSB7XHJcblx0XHR0aGlzLl9tZXRob2REYXRhU3ViamVjdC5uZXh0KG51bGwpO1xyXG5cdFx0bGV0IHJlc3VsdCA9IGF3YWl0IHRoaXMuX3BheW1lbnRTZXJ2aWNlLnB1dFBheW1lbnQobWV0aG9kLmNvZGUpO1xyXG5cdFx0dGhpcy5fbWV0aG9kRGF0YVN1YmplY3QubmV4dChtZXRob2QpO1xyXG5cdH1cclxuXHJcblx0Ly9GdW5jaW9uZXMgcGFyYSBjaGVxdWVhciBlbCBtZXRvZG8gZGUgcGFnby5cclxuXHRpc1JlZGlyZWN0UmVkc3lzID0gKGNvZGU6IHN0cmluZykgPT4gISFjb2RlPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdyZWRzeXNfcmVkaXJlY3QnKVxyXG5cdGlzUmVkaXJlY3RDZWNhQmFuayA9IChjb2RlOiBzdHJpbmcpID0+ICEhY29kZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnY2VjYV9iYW5rX3JlZGlyZWN0JylcclxuXHRpc01QID0gKGNvZGU6IHN0cmluZykgPT4ge1xyXG5cdFx0Y29uc3QgbG93ZXJDb2RlID0gY29kZT8udG9Mb3dlckNhc2UoKSB8fCAnJztcclxuXHRcdHJldHVybiBsb3dlckNvZGUuaW5jbHVkZXMoJ21lcmNhZG9fcGFnbycpICYmICFsb3dlckNvZGUuaW5jbHVkZXMoJ2NyZWRpdCcpO1xyXG5cdH1cclxuXHRpc01QVGFyamV0YURlQ3JlZGl0byA9IChjb2RlOiBzdHJpbmcpID0+ICEhY29kZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnY3JlZGl0JylcclxuXHRpc01ldGhvZE9mZmxpbmUgPSAoY29kZTogc3RyaW5nKSA9PiAhIWNvZGU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ29mZmxpbmUnKVxyXG5cdGlzUGV5UGFsRXhwcmVzcyA9IChjb2RlOiBzdHJpbmcpID0+IHtcclxuXHRcdGNvbnN0IGxvd2VyQ29kZSA9IGNvZGU/LnRvTG93ZXJDYXNlKCkgfHwgJyc7XHJcblx0XHRyZXR1cm4gbG93ZXJDb2RlLmluY2x1ZGVzKCdwYXlwYWwnKSAmJiBsb3dlckNvZGUuaW5jbHVkZXMoJ2V4cHJlc3MnKTtcclxuXHR9XHJcblx0aXNNb2JiZXggPSAoY29kZTogc3RyaW5nKSA9PiAhIWNvZGU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ21vYmJleCcpXHJcblx0aXNCYW5jYXJkID0gKGNvZGU6IHN0cmluZykgPT4gISFjb2RlPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdiYW5jYXJkJylcclxuXHRpc0RlY2lkaXIgPSAoY29kZTogc3RyaW5nKSA9PiAhIWNvZGU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2RlY2lkaXInKVxyXG5cdGlzQ3VscWkgPSAoY29kZTogc3RyaW5nKSA9PiAhIWNvZGU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2N1bHFpJylcclxuXHRpc0JhbmtUcmFuc2ZlciA9IChjb2RlOiBzdHJpbmcpID0+ICEhY29kZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnYmFua190cmFuc2ZlcicpXHJcblx0aXNDYXRhc3RybyA9IChjb2RlOiBzdHJpbmcpID0+ICEhY29kZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnY2F0YXN0cm8nKVxyXG5cdGlzQmFtYm9vID0gKGNvZGU6IHN0cmluZykgPT4gISFjb2RlPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdiYW1ib28nKVxyXG5cclxuXHRhbGxEYXRhKCk6IGFueSB7XHJcblx0XHRyZXR1cm4ge1xyXG5cdFx0XHQuLi50aGlzLl9wYXltZW50U2VydmljZS5nZXRVc2VyRGF0YSgpLnNoaXBwaW5nQWRkcmVzcyxcclxuXHRcdFx0Li4udGhpcy5fcGF5bWVudFNlcnZpY2UuZ2V0U2hpcG1lbnREYXRhKCksXHJcblx0XHR9O1xyXG5cdH1cclxuXHRlbWl0UmVzdWx0ID0gYXN5bmMgKCkgPT4ge1xyXG5cdFx0dGhpcy5fcGF5bWVudFNlcnZpY2Uuc2V0UGF5bWVudCh0aGlzLl9tZXRob2REYXRhU3ViamVjdC5nZXRWYWx1ZSgpKVxyXG5cdFx0dGhpcy5zZXRMb2FkaW5nKGZhbHNlKVxyXG5cdFx0dGhpcy5uZXh0KClcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBzZXRMb2FkaW5nID0gKGVzdGFkbyA9IHRydWUpID0+IHtcclxuXHRcdHRoaXMuX2xvYWRpbmdTdWJqZWN0Lm5leHQoZXN0YWRvKTtcclxuXHRcdHJldHVybiB0cnVlO1xyXG5cdH1cclxuXHJcblx0cHVibGljIHZlcmlmeVZhbGlkYXRlID0gKCRldmVudDphbnkpID0+IHtcclxuXHRcdHRoaXMuc2V0TG9hZGluZyh0cnVlKVxyXG5cdFx0c2V0VGltZW91dCgoKSA9PiB0aGlzLmVtaXRSZXN1bHQoKSwgMTAwMCk7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgbmV4dCA9ICgpID0+IHtcclxuXHRcdHRoaXMuX2NoZWNrb3V0U2VydmljZS5uZXh0KClcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBnb0JhY2sgPSAoKSA9PiB7XHJcblx0XHR0aGlzLl9jaGVja291dFNlcnZpY2UuYmFjaygpXHJcblx0fVxyXG59XHJcbiIsIkBpZihtZXRob2RzJCB8IGFzeW5jOyBhcyBtZXRob2RzKXtcclxuPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG5cclxuXHQ8ZGl2IGNsYXNzPVwicm93XCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJjYXJkIFwiPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciB0ZXh0LWRhcmsgdGV4dC1jZW50ZXJcIj5cclxuXHRcdFx0XHRcdDxoND57eyAnc2VsZWN0LW1ldGhvZCcgfCB0cmFuc2xhdGUgfX08L2g0PlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImJ0bi10b29sYmFyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIiByb2xlPVwidG9vbGJhclwiIGFyaWEtbGFiZWw9XCJFbnZpb3MgdG9vbGJhclwiPlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiXCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbD1cIkdydXBvIGJvdG9uZXMgZW52aW9cIj5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWNvbnRlbnQtc3RhcnQganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LXdyYXBcIj5cclxuXHRcdFx0XHRcdFx0XHRcdEBmb3IgKG1ldGhvZCBvZiBtZXRob2RzOyB0cmFjayAkaW5kZXg7IGxldCB4ID0gJGluZGV4KSB7XHJcblx0XHRcdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnkgbXgtMSBtYi0xXCIoY2xpY2spPVwic2V0TWV0aG9kKG1ldGhvZCkgOyBzZXRBY3RpdmUoJGV2ZW50KVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHR7eyBtZXRob2QubmFtZSB8IHRyYW5zbGF0ZSB9fVxyXG5cdFx0XHRcdFx0XHRcdFx0PC9idXR0b24+XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImNhcmQtYm9keSB0ZXh0LWNlbnRlclwiPlxyXG5cdFx0XHRcdFx0QGlmKG1ldGhvZERhdGEkIHwgYXN5bmM7IGFzIG1ldGhvZCl7XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuXHRcdFx0XHRcdFx0QGlmKCFsb2FkaW5nSW50ZXJuYWwpe1xyXG5cdFx0XHRcdFx0XHRcdEBpZihpc01QKG1ldGhvZC5jb2RlKSl7XHJcblx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibWV0aG9kLWNvbnRhaW5lciB0ZXh0LWRhcmtcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInJvd1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxwIGlkPVwiZmFxc1wiIGNsYXNzPVwicXQgcHgtNSBcIj57eyBtZXRob2QuZGVzY3JpcHRpb24gfX08L3A+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8cCBjbGFzcz1cInB4LTVcIj57eyBtZXRob2QuaW5zdHJ1Y3Rpb25zIH19PC9wPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxhcHAtbXAtcmVkaXJlY3QtZWMgKHJlYWR5KT1cInZlcmlmeVZhbGlkYXRlKCRldmVudClcIiBcdFttZXRob2RdPVwibWV0aG9kXCI+PC9hcHAtbXAtcmVkaXJlY3QtZWM+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdDwhLS0gPGRpdiBjbGFzcz1cIm1ldGhvZC1jb250YWluZXIgdGV4dC1kYXJrIHRleHQtbGVmdFwiICpuZ0lmPVwiaXNNUFRhcmpldGFEZUNyZWRpdG8obWV0aG9kLmNvZGUpXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwicm93XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8cCBpZD1cImZhcXNcIiBjbGFzcz1cInF0IHB4LTUgXCI+e3sgbWV0aG9kLmRlc2NyaXB0aW9uIH19PC9wPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxwIGNsYXNzPVwicHgtNVwiPnt7IG1ldGhvZC5pbnN0cnVjdGlvbnMgfX08L3A+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBhcHAtbXAtY3JlZGl0LWVjIChyZWFkeSk9XCJ2ZXJpZnlWYWxpZGF0ZSgpXCIgW3B1YmxpY19rZXldPVwiZ2V0UEsobWV0aG9kKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbdXNlcl9kYXRhXT1cImFsbERhdGEoKVwiIFt0b3RhbF9hbW91bnRdPVwidG90YWxfYW1vdW50XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cIm1ldGhvZC1jb250YWluZXIgdGV4dC1kYXJrIHRleHQtc3RhcnRcIiAqbmdJZj1cImlzUmVkaXJlY3RSZWRzeXMobWV0aG9kLmNvZGUpXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwicm93XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQqbmdJZj1cIiFtZXRob2QuY29kZS5pbmNsdWRlcygnYml6dW0nKSAmJiAhbWV0aG9kLmNvZGUuaW5jbHVkZXMoJ19vdXRfJylcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxhcHAtcmVkc3lzLXJlZGlyZWN0LWVjIChyZWFkeSk9XCJ2ZXJpZnlWYWxpZGF0ZSgkZXZlbnQpXCIgW21ldGhvZF09XCJtZXRob2RcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbdXNlcl9kYXRhXT1cImFsbERhdGEoKVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9hcHAtcmVkc3lzLXJlZGlyZWN0LWVjPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxuZy1jb250YWluZXJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCpuZ0lmPVwibWV0aG9kLmNvZGUuaW5jbHVkZXMoJ2JpenVtJykgfHwgbWV0aG9kLmNvZGUuaW5jbHVkZXMoJ19vdXRfJylcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxhcHAtcmVkc3lzLXJlZGlyZWN0LW91dC1lYyAocmVhZHkpPVwidmVyaWZ5VmFsaWRhdGUoJGV2ZW50KVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFttZXRob2RdPVwibWV0aG9kXCIgW3VzZXJfZGF0YV09XCJhbGxEYXRhKClcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvYXBwLXJlZHN5cy1yZWRpcmVjdC1vdXQtZWM+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9uZy1jb250YWluZXI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cIm1ldGhvZC1jb250YWluZXIgdGV4dC1kYXJrIHRleHQtc3RhcnRcIiAqbmdJZj1cImlzUmVkaXJlY3RDZWNhQmFuayhtZXRob2QuY29kZSlcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxhcHAtY2VjYS1yZWRpcmVjdC1lYyAocmVhZHkpPVwidmVyaWZ5VmFsaWRhdGUoJGV2ZW50KVwiIFttZXRob2RdPVwibWV0aG9kXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFt1c2VyX2RhdGFdPVwiYWxsRGF0YSgpXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9hcHAtY2VjYS1yZWRpcmVjdC1lYz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibWV0aG9kLWNvbnRhaW5lciB0ZXh0LWRhcmsgdGV4dC1zdGFydFwiICpuZ0lmPVwiaXNQZXlQYWxFeHByZXNzKG1ldGhvZC5jb2RlKVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YXBwLXBheXBhbC1leHByZXNzLWVjIChyZWFkeSk9XCJ2ZXJpZnlWYWxpZGF0ZSgkZXZlbnQpXCIgW21ldGhvZF09XCJtZXRob2RcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbdXNlcl9kYXRhXT1cImFsbERhdGEoKVwiIFt0b3RhbF9hbW91bnRdPVwidG90YWxfYW1vdW50XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2FwcC1wYXlwYWwtZXhwcmVzcy1lYz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibWV0aG9kLWNvbnRhaW5lciB0ZXh0LWRhcmsgdGV4dC1zdGFydFwiICpuZ0lmPVwiaXNNb2JiZXgobWV0aG9kLmNvZGUpXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxhcHAtbW9iYmV4LWVjIChyZWFkeSk9XCJ2ZXJpZnlWYWxpZGF0ZSgkZXZlbnQpXCIgW21ldGhvZF09XCJtZXRob2RcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbdXNlcl9kYXRhXT1cImFsbERhdGEoKVwiIFtwYXltZW50U2VydmljZUluc3RdPVwicGF5bWVudFNlcnZpY2VcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbdG90YWxfYW1vdW50XT1cInRvdGFsX2Ftb3VudFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9hcHAtbW9iYmV4LWVjPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJtZXRob2QtY29udGFpbmVyIHRleHQtZGFyayB0ZXh0LXN0YXJ0XCIgKm5nSWY9XCJpc0JhbmNhcmQobWV0aG9kLmNvZGUpXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxhcHAtYmFuY2FyZC1lYyAocmVhZHkpPVwidmVyaWZ5VmFsaWRhdGUoJGV2ZW50KVwiIFttZXRob2RdPVwibWV0aG9kXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W3VzZXJfZGF0YV09XCJhbGxEYXRhKClcIiBbcGF5bWVudFNlcnZpY2VJbnN0XT1cInBheW1lbnRTZXJ2aWNlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W3RvdGFsX2Ftb3VudF09XCJ0b3RhbF9hbW91bnRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvYXBwLWJhbmNhcmQtZWM+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+LS0+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cIm1ldGhvZC1jb250YWluZXIgdGV4dC1kYXJrIHRleHQtc3RhcnRcIiAqbmdJZj1cImlzRGVjaWRpcihtZXRob2QuY29kZSlcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGFwcC1kZWNpZGlyLWVjIChyZWFkeSk9XCJ2ZXJpZnlWYWxpZGF0ZSgkZXZlbnQpXCIgW21ldGhvZF09XCJtZXRob2RcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbdXNlcl9kYXRhXT1cImFsbERhdGEoKVwiIFtwYXltZW50U2VydmljZUluc3RdPVwiX3BheW1lbnRTZXJ2aWNlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W3RvdGFsX2Ftb3VudF09XCJ0b3RhbF9hbW91bnRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvYXBwLWRlY2lkaXItZWM+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+IFxyXG5cdFx0XHRcdFx0XHRcdEBpZihpc01ldGhvZE9mZmxpbmUobWV0aG9kLmNvZGUpKXtcclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibWV0aG9kLWNvbnRhaW5lciB0ZXh0LWRhcmtcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxhcHAtb2ZmbGluZS1lYyBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRbbWV0aG9kXT1cIm1ldGhvZFwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFt2ZXJpZnlWYWxpZGF0ZV09IFwidmVyaWZ5VmFsaWRhdGVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFtzZXRMb2FkaW5nXSA9IFwic2V0TG9hZGluZ1wiIC8+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHRcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0PCEtLVxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJtZXRob2QtY29udGFpbmVyIHRleHQtZGFyayB0ZXh0LXN0YXJ0XCIgKm5nSWY9XCJpc0N1bHFpKG1ldGhvZC5jb2RlKVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YXBwLWN1bHFpLWVjIFthcGlLZXldPVwiZ2V0UEtDdWxxaShtZXRob2QpXCIgW21ldGhvZF09XCJtZXRob2RcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbYW1vdW50XT1cInRvdGFsX2Ftb3VudFwiIFtjdXN0b21TdHlsZV09XCJ0cnVlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHJlYWR5KT1cInZlcmlmeVZhbGlkYXRlKClcIj48L2FwcC1jdWxxaS1lYz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibWV0aG9kLWNvbnRhaW5lciB0ZXh0LWRhcmsgdGV4dC1zdGFydFwiICpuZ0lmPVwiaXNDYXRhc3RybyhtZXRob2QuY29kZSlcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGFwcC1iYW5jYXJkLWNhdGFzdHJvLWVjIChyZWFkeSk9XCJ2ZXJpZnlWYWxpZGF0ZSgkZXZlbnQpXCIgW21ldGhvZF09XCJtZXRob2RcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbdXNlcl9kYXRhXT1cImFsbERhdGEoKVwiIFtwYXltZW50U2VydmljZUluc3RdPVwicGF5bWVudFNlcnZpY2VcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbdG90YWxfYW1vdW50XT1cInRvdGFsX2Ftb3VudFwiPjwvYXBwLWJhbmNhcmQtY2F0YXN0cm8tZWM+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cIm1ldGhvZC1jb250YWluZXIgdGV4dC1kYXJrIHRleHQtc3RhcnRcIiAqbmdJZj1cImlzQmFtYm9vKG1ldGhvZC5jb2RlKVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YXBwLWJhbWJvby1lYyAocmVhZHkpPVwidmVyaWZ5VmFsaWRhdGUoJGV2ZW50KVwiIFttZXRob2RdPVwibWV0aG9kXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W3VzZXJfZGF0YV09XCJhbGxEYXRhKClcIiBbcGF5bWVudFNlcnZpY2VJbnN0XT1cInBheW1lbnRTZXJ2aWNlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0W3RvdGFsX2Ftb3VudF09XCJ0b3RhbF9hbW91bnRcIj48L2FwcC1iYW1ib28tZWM+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+IC0tPlxyXG5cdFx0XHRcdFx0XHRcdEBpZihpc0JhbmtUcmFuc2ZlcihtZXRob2QuY29kZSkpe1xyXG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cIm1ldGhvZC1jb250YWluZXIgdGV4dC1kYXJrXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YXBwLWJhbmstdHJhbnNmZXItZWMgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFttZXRob2RdPVwibWV0aG9kXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFt2ZXJpZnlWYWxpZGF0ZV09IFwidmVyaWZ5VmFsaWRhdGVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbc2V0TG9hZGluZ10gPSBcInNldExvYWRpbmdcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0PGFwcC1sb2FkaW5nLWlubGluZS1lYz48L2FwcC1sb2FkaW5nLWlubGluZS1lYz5cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwicm93IGQtZmxleCBmbGV4LXJvd1wiPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJjb2wtMTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcblx0XHRcdFx0XHQ8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHRleHQtd2hpdGVcIiAoY2xpY2spPVwiZ29CYWNrKClcIj57eydiYWNrJ3x0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvZGl2PlxyXG5cdDwvZGl2PlxyXG48L2Rpdj5cclxufSJdfQ==
@@ -0,0 +1,214 @@
1
+ import { Component, Output, Input, EventEmitter } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { ComponentHelper } from "../../../classes/component-helper";
5
+ import { LoadingFullEcComponent } from '../loading';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../../api/connection.service";
8
+ import * as i2 from "../../../ec-services/toast.service";
9
+ import * as i3 from "../../../constants";
10
+ import * as i4 from "../../../ec-services/cart.service";
11
+ import * as i5 from "@angular/router";
12
+ import * as i6 from "@angular/platform-browser";
13
+ import * as i7 from "../../../ec-services/parameters.service";
14
+ export class DecidirEcComponent extends ComponentHelper {
15
+ renderer;
16
+ connection;
17
+ toastrService;
18
+ consts;
19
+ apiConsts;
20
+ cartService;
21
+ activedRoute;
22
+ sanitizer;
23
+ paramsService;
24
+ paymentServiceInst;
25
+ method = null;
26
+ total_amount = 0;
27
+ allData;
28
+ user_data = null;
29
+ ready = new EventEmitter();
30
+ modalRef = null;
31
+ dataDecidir;
32
+ loading = false;
33
+ isDobleAuth = false;
34
+ urls = [];
35
+ url;
36
+ closeModal = '';
37
+ paramsMensaje = '';
38
+ ventana;
39
+ params;
40
+ showModal = false;
41
+ dataRedirect = () => this.apiConsts.getUrlBase() + 'shop-api/' + this.consts.getChannel() + '/decidir/' + this.cartService.cartToken + '/process-payment';
42
+ constructor(renderer, connection, toastrService, consts, apiConsts, cartService, activedRoute, sanitizer, paramsService) {
43
+ super();
44
+ this.renderer = renderer;
45
+ this.connection = connection;
46
+ this.toastrService = toastrService;
47
+ this.consts = consts;
48
+ this.apiConsts = apiConsts;
49
+ this.cartService = cartService;
50
+ this.activedRoute = activedRoute;
51
+ this.sanitizer = sanitizer;
52
+ this.paramsService = paramsService;
53
+ this.ecOnConstruct();
54
+ }
55
+ ngOnInit() {
56
+ this.getCheckoutDecidir();
57
+ this.paramsService.getParameters().subscribe((res) => {
58
+ this.params = res;
59
+ const paramValue = this.hasParams(res, 'partially_authorized_decidir');
60
+ this.paramsMensaje = (typeof paramValue === 'string' ? paramValue : null) || 'Se está procesando el pago con tarjeta.';
61
+ });
62
+ this.ecOnInit();
63
+ }
64
+ ngOnDestroy() {
65
+ // Remover el listener de mensajes
66
+ window.removeEventListener('message', this.handleIframeMessage, false);
67
+ // console.log("SE DESTROZA");
68
+ }
69
+ ngOnChanges() {
70
+ // console.log("SE CAMBIO");
71
+ }
72
+ openModal() {
73
+ this.clearStorageState();
74
+ localStorage.setItem('dataRedirect', this.dataRedirect());
75
+ localStorage.setItem('dataDecidir', JSON.stringify({
76
+ ...this.method,
77
+ total_amount: this.total_amount
78
+ }));
79
+ localStorage.setItem('subtotal', this.total_amount.toString());
80
+ this.showModal = true;
81
+ this.closeModal = '';
82
+ this.callState();
83
+ }
84
+ clearStorageState = () => {
85
+ sessionStorage.removeItem('state');
86
+ localStorage.removeItem('state');
87
+ localStorage.removeItem('dataRedirect');
88
+ localStorage.removeItem('dataDecidir');
89
+ localStorage.removeItem('message');
90
+ localStorage.removeItem('subMessage');
91
+ localStorage.removeItem('subtotal');
92
+ };
93
+ clickClose = () => {
94
+ this.closeModal = 'cancel';
95
+ this.showModal = false;
96
+ this.processError('Se cancelo el pago con Decidir');
97
+ };
98
+ showMessage = () => {
99
+ let message = localStorage.getItem('message') || undefined;
100
+ let subMessage = localStorage.getItem('subMessage') || undefined;
101
+ message && this.toastrService.show(message, {}, '', { closeButton: true, timeOut: 6000 });
102
+ subMessage && this.toastrService.show(subMessage, {}, '', { closeButton: true, timeOut: 6000 });
103
+ };
104
+ callState = () => {
105
+ try {
106
+ let state = this.closeModal != '' ? this.closeModal : localStorage.getItem('state');
107
+ this.loading = true;
108
+ state && this.showMessage();
109
+ if (state) {
110
+ this.loading = false;
111
+ this.clearStorageState();
112
+ if (state == 'success') {
113
+ this.ready.emit(true);
114
+ }
115
+ if (state == 'partially_authorized') {
116
+ this.ready.emit(true);
117
+ this.processError(this.paramsMensaje);
118
+ }
119
+ if (state == 'cancel') {
120
+ return;
121
+ }
122
+ if (state == 'failure') {
123
+ this.processError('');
124
+ }
125
+ this.showModal = false;
126
+ return;
127
+ }
128
+ setTimeout(() => {
129
+ this.callState();
130
+ }, 5000);
131
+ }
132
+ catch (error) {
133
+ console.error(error);
134
+ }
135
+ };
136
+ processError = (err) => {
137
+ this.toastrService.show(err != '' ? err : 'payment-error');
138
+ console.log("ERROR ENVIO BACK ", err);
139
+ };
140
+ getCheckoutDecidir = () => {
141
+ this.loading = true;
142
+ this.dataDecidir = this.method;
143
+ this.url = this.sanitizer.bypassSecurityTrustResourceUrl('assets/decidirFormEc.html');
144
+ this.loading = false;
145
+ // Escuchar mensajes del iframe para manejar la comunicación
146
+ window.addEventListener('message', this.handleIframeMessage.bind(this), false);
147
+ };
148
+ handleIframeMessage = (event) => {
149
+ // Verificar el origen por seguridad
150
+ if (event.origin !== window.location.origin) {
151
+ return;
152
+ }
153
+ if (event.data && event.data.type === 'DECIDIR_PAYMENT') {
154
+ console.log('DecidirComponent - Procesando pago con payload:', event.data.payload);
155
+ this.processPayment(event.data.payload);
156
+ }
157
+ };
158
+ processPayment = (paymentData) => {
159
+ this.loading = true;
160
+ this.connection.post('shop-api/' + this.consts.getChannel() + '/decidir/' + this.cartService.cartToken + '/process-payment')
161
+ .subscribe({
162
+ next: (response) => {
163
+ this.loading = false;
164
+ console.log('Respuesta del backend:', response);
165
+ if (response.status === 'approved' || response.status === 'partially_authorized') {
166
+ localStorage.setItem('state', response.status === 'approved' ? 'success' : 'partially_authorized');
167
+ if (response.message)
168
+ localStorage.setItem('message', response.message);
169
+ if (response.subMessage)
170
+ localStorage.setItem('subMessage', response.subMessage);
171
+ this.callState();
172
+ }
173
+ else {
174
+ localStorage.setItem('state', 'failure');
175
+ if (response.message)
176
+ localStorage.setItem('message', response.message);
177
+ if (response.subMessage)
178
+ localStorage.setItem('subMessage', response.subMessage);
179
+ this.callState();
180
+ }
181
+ },
182
+ error: (error) => {
183
+ this.loading = false;
184
+ console.error('Error processing payment:', error);
185
+ localStorage.setItem('state', 'failure');
186
+ this.processError('Error al procesar el pago');
187
+ this.callState();
188
+ }
189
+ });
190
+ };
191
+ resizeIframe = (obj) => {
192
+ obj.style.height = obj.contentWindow.document.body.scrollHeight + 'px';
193
+ obj.style.width = obj.contentWindow.document.body.scrollWidth + 'px';
194
+ };
195
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DecidirEcComponent, deps: [{ token: i0.Renderer2 }, { token: i1.ConnectionService }, { token: i2.ToastService }, { token: i3.CoreConstantsService }, { token: i3.ApiConstantsService }, { token: i4.CartService }, { token: i5.ActivatedRoute }, { token: i6.DomSanitizer }, { token: i7.ParametersService }], target: i0.ɵɵFactoryTarget.Component });
196
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DecidirEcComponent, isStandalone: true, selector: "app-decidir-ec", inputs: { paymentServiceInst: "paymentServiceInst", method: "method", total_amount: "total_amount", allData: "allData", user_data: "user_data" }, outputs: { ready: "ready" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"text-center\">\r\n <h3>Continuar con el pago en Decidir</h3>\r\n @if (method) {\r\n <p class=\"px-5\">{{ method.description }}</p>\r\n <p class=\"px-5\">{{ method.instructions }}</p>\r\n }\r\n @if (!loading) {\r\n <button class=\"btn btn-outline-secondary comprar\" (click)=\"openModal()\">Pagar</button>\r\n } @else {\r\n <div class=\"d-flex flex-column jusitfy-content-center align-items-center mt-2\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n }\r\n </div>\r\n\r\n@if (showModal) {\r\n<div class=\"modal-backdrop\" (click)=\"clickClose()\">\r\n <div class=\"modal-dialog modal-lg\" (click)=\"$event.stopPropagation()\">\r\n <div class=\"modal-content\">\r\n\r\n <div class=\"modal-body\">\r\n <div class=\"payment-container\">\r\n \r\n <!-- Iframe del formulario de decidir -->\r\n <div class=\"iframe-container\">\r\n <iframe [src]=\"url\" frameborder=\"0\" class=\"payment-iframe\"></iframe>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n}\r\n", styles: [".modal-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#0009;display:flex;justify-content:center;align-items:center;z-index:1050;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal-dialog{max-width:90%;max-height:90%;width:800px;background:#fff;border-radius:16px;overflow:hidden;box-shadow:0 20px 60px #0000004d;animation:modalFadeIn .3s ease-out}.modal-dialog.modal-lg{max-width:900px;width:90%}@keyframes modalFadeIn{0%{opacity:0;transform:scale(.9) translateY(-20px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-content{display:flex;flex-direction:column;height:100%;border:none;border-radius:16px;background:#fff}.modal-header{padding:1.5rem 2rem;border-bottom:1px solid #e9ecef;background:linear-gradient(135deg,#f8f9fa,#e9ecef);display:flex;justify-content:space-between;align-items:center;position:relative}.modal-header:after{content:\"\";position:absolute;bottom:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent 0%,#dee2e6 50%,transparent 100%)}.modal-header .modal-title{margin:0;font-size:1.5rem;font-weight:700;color:#2c3e50;text-shadow:0 1px 2px rgba(0,0,0,.1)}.modal-header .btn-close{background:none;border:none;font-size:1.8rem;color:#6c757d;cursor:pointer;padding:0;width:35px;height:35px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .3s ease;position:relative}.modal-header .btn-close:hover{background-color:#dc3545;color:#fff;transform:rotate(90deg);box-shadow:0 4px 12px #dc35454d}.modal-header .btn-close:active{transform:rotate(90deg) scale(.95)}.modal-body{padding:0;flex:1;overflow:hidden;background:#fff}.payment-container{height:100%;display:flex;flex-direction:column;background:#fff}.cards-accepted{padding:1.5rem 2rem;text-align:center;border-bottom:1px solid #e9ecef;background:linear-gradient(135deg,#fff,#f8f9fa);position:relative}.cards-accepted:after{content:\"\";position:absolute;bottom:0;left:5%;right:5%;height:1px;background:linear-gradient(90deg,transparent 0%,#dee2e6 50%,transparent 100%)}.cards-accepted .cards-img{height:45px;max-width:100%;object-fit:contain;filter:drop-shadow(0 2px 4px rgba(0,0,0,.1));transition:transform .2s ease}.cards-accepted .cards-img:hover{transform:scale(1.05)}.iframe-container{flex:1;padding:1.5rem;background:#fff;position:relative}.iframe-container:before{content:\"\";position:absolute;top:0;left:1.5rem;right:1.5rem;height:1px;background:linear-gradient(90deg,transparent 0%,#e9ecef 50%,transparent 100%)}.payment-iframe{width:100%;height:620px;border:none;border-radius:12px;background:#fff;box-shadow:inset 0 2px 8px #0000000d}.half-width{width:49%!important}.ml-1{margin-left:1%}#card-form{height:450px}.iframeStyle{height:520px;width:100%}@media only screen and (max-width: 1024px){.modal-dialog,.modal-dialog.modal-lg{max-width:95%;width:95%}.payment-iframe{height:650px}.modal-header{padding:1rem 1.5rem}.modal-header .modal-title{font-size:1.125rem}.cards-accepted{padding:.75rem 1.5rem}}@media only screen and (max-width: 680px){.modal-dialog{max-width:98%;width:98%;margin:1rem;max-height:calc(100vh - 2rem)}.modal-dialog.modal-lg{max-width:98%;width:98%}.payment-iframe{height:550px}.modal-header{padding:1rem}.modal-header .modal-title{font-size:1rem}.modal-header .btn-close{width:28px;height:28px;font-size:1.25rem}.cards-accepted{padding:.5rem 1rem}.cards-accepted .cards-img{height:35px}.iframe-container{padding:.5rem}}@media only screen and (max-width: 480px){.modal-dialog{margin:.5rem;max-height:calc(100vh - 1rem);border-radius:8px}.modal-content{border-radius:8px}.payment-iframe{height:500px}.cards-accepted .cards-img{height:30px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: LoadingFullEcComponent, selector: "app-loading-full-ec" }] });
197
+ }
198
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DecidirEcComponent, decorators: [{
199
+ type: Component,
200
+ args: [{ selector: 'app-decidir-ec', standalone: true, imports: [CommonModule, FormsModule, LoadingFullEcComponent], template: "<div class=\"text-center\">\r\n <h3>Continuar con el pago en Decidir</h3>\r\n @if (method) {\r\n <p class=\"px-5\">{{ method.description }}</p>\r\n <p class=\"px-5\">{{ method.instructions }}</p>\r\n }\r\n @if (!loading) {\r\n <button class=\"btn btn-outline-secondary comprar\" (click)=\"openModal()\">Pagar</button>\r\n } @else {\r\n <div class=\"d-flex flex-column jusitfy-content-center align-items-center mt-2\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n }\r\n </div>\r\n\r\n@if (showModal) {\r\n<div class=\"modal-backdrop\" (click)=\"clickClose()\">\r\n <div class=\"modal-dialog modal-lg\" (click)=\"$event.stopPropagation()\">\r\n <div class=\"modal-content\">\r\n\r\n <div class=\"modal-body\">\r\n <div class=\"payment-container\">\r\n \r\n <!-- Iframe del formulario de decidir -->\r\n <div class=\"iframe-container\">\r\n <iframe [src]=\"url\" frameborder=\"0\" class=\"payment-iframe\"></iframe>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n}\r\n", styles: [".modal-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#0009;display:flex;justify-content:center;align-items:center;z-index:1050;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal-dialog{max-width:90%;max-height:90%;width:800px;background:#fff;border-radius:16px;overflow:hidden;box-shadow:0 20px 60px #0000004d;animation:modalFadeIn .3s ease-out}.modal-dialog.modal-lg{max-width:900px;width:90%}@keyframes modalFadeIn{0%{opacity:0;transform:scale(.9) translateY(-20px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-content{display:flex;flex-direction:column;height:100%;border:none;border-radius:16px;background:#fff}.modal-header{padding:1.5rem 2rem;border-bottom:1px solid #e9ecef;background:linear-gradient(135deg,#f8f9fa,#e9ecef);display:flex;justify-content:space-between;align-items:center;position:relative}.modal-header:after{content:\"\";position:absolute;bottom:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent 0%,#dee2e6 50%,transparent 100%)}.modal-header .modal-title{margin:0;font-size:1.5rem;font-weight:700;color:#2c3e50;text-shadow:0 1px 2px rgba(0,0,0,.1)}.modal-header .btn-close{background:none;border:none;font-size:1.8rem;color:#6c757d;cursor:pointer;padding:0;width:35px;height:35px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .3s ease;position:relative}.modal-header .btn-close:hover{background-color:#dc3545;color:#fff;transform:rotate(90deg);box-shadow:0 4px 12px #dc35454d}.modal-header .btn-close:active{transform:rotate(90deg) scale(.95)}.modal-body{padding:0;flex:1;overflow:hidden;background:#fff}.payment-container{height:100%;display:flex;flex-direction:column;background:#fff}.cards-accepted{padding:1.5rem 2rem;text-align:center;border-bottom:1px solid #e9ecef;background:linear-gradient(135deg,#fff,#f8f9fa);position:relative}.cards-accepted:after{content:\"\";position:absolute;bottom:0;left:5%;right:5%;height:1px;background:linear-gradient(90deg,transparent 0%,#dee2e6 50%,transparent 100%)}.cards-accepted .cards-img{height:45px;max-width:100%;object-fit:contain;filter:drop-shadow(0 2px 4px rgba(0,0,0,.1));transition:transform .2s ease}.cards-accepted .cards-img:hover{transform:scale(1.05)}.iframe-container{flex:1;padding:1.5rem;background:#fff;position:relative}.iframe-container:before{content:\"\";position:absolute;top:0;left:1.5rem;right:1.5rem;height:1px;background:linear-gradient(90deg,transparent 0%,#e9ecef 50%,transparent 100%)}.payment-iframe{width:100%;height:620px;border:none;border-radius:12px;background:#fff;box-shadow:inset 0 2px 8px #0000000d}.half-width{width:49%!important}.ml-1{margin-left:1%}#card-form{height:450px}.iframeStyle{height:520px;width:100%}@media only screen and (max-width: 1024px){.modal-dialog,.modal-dialog.modal-lg{max-width:95%;width:95%}.payment-iframe{height:650px}.modal-header{padding:1rem 1.5rem}.modal-header .modal-title{font-size:1.125rem}.cards-accepted{padding:.75rem 1.5rem}}@media only screen and (max-width: 680px){.modal-dialog{max-width:98%;width:98%;margin:1rem;max-height:calc(100vh - 2rem)}.modal-dialog.modal-lg{max-width:98%;width:98%}.payment-iframe{height:550px}.modal-header{padding:1rem}.modal-header .modal-title{font-size:1rem}.modal-header .btn-close{width:28px;height:28px;font-size:1.25rem}.cards-accepted{padding:.5rem 1rem}.cards-accepted .cards-img{height:35px}.iframe-container{padding:.5rem}}@media only screen and (max-width: 480px){.modal-dialog{margin:.5rem;max-height:calc(100vh - 1rem);border-radius:8px}.modal-content{border-radius:8px}.payment-iframe{height:500px}.cards-accepted .cards-img{height:30px}}\n"] }]
201
+ }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i1.ConnectionService }, { type: i2.ToastService }, { type: i3.CoreConstantsService }, { type: i3.ApiConstantsService }, { type: i4.CartService }, { type: i5.ActivatedRoute }, { type: i6.DomSanitizer }, { type: i7.ParametersService }], propDecorators: { paymentServiceInst: [{
202
+ type: Input
203
+ }], method: [{
204
+ type: Input
205
+ }], total_amount: [{
206
+ type: Input
207
+ }], allData: [{
208
+ type: Input
209
+ }], user_data: [{
210
+ type: Input
211
+ }], ready: [{
212
+ type: Output
213
+ }] } });
214
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjaWRpci1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy93aWRnZXRzLWVjL2RlY2lkaXItZWMvZGVjaWRpci1lYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy93aWRnZXRzLWVjL2RlY2lkaXItZWMvZGVjaWRpci1lYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBc0IsS0FBSyxFQUF3QixZQUFZLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDNUgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxXQUFXLEVBQVUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFPcEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sWUFBWSxDQUFDOzs7Ozs7Ozs7QUFVcEQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGVBQWU7SUFzQmhDO0lBQ1I7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQTVCRixrQkFBa0IsQ0FBTTtJQUN4QixNQUFNLEdBQTBFLElBQUksQ0FBQztJQUNyRixZQUFZLEdBQUcsQ0FBQyxDQUFDO0lBQ2pCLE9BQU8sQ0FBTTtJQUNiLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDaEIsS0FBSyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDM0IsUUFBUSxHQUFlLElBQUksQ0FBQztJQUM1QixXQUFXLENBQU07SUFFcEIsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNoQixXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLElBQUksR0FBVSxFQUFFLENBQUM7SUFDakIsR0FBRyxDQUE4QjtJQUNqQyxVQUFVLEdBQUcsRUFBRSxDQUFBO0lBQ2YsYUFBYSxHQUFHLEVBQUUsQ0FBQTtJQUNsQixPQUFPLENBQUs7SUFDWixNQUFNLENBQUs7SUFDWCxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ2YsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLEdBQUcsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLEdBQUcsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLGtCQUFrQixDQUFDO0lBRXBLLFlBQW1CLFFBQW1CLEVBQzNCLFVBQTZCLEVBQzdCLGFBQTJCLEVBQzNCLE1BQTRCLEVBQzVCLFNBQThCLEVBQzlCLFdBQXdCLEVBQ3hCLFlBQTRCLEVBQzVCLFNBQXVCLEVBQ3ZCLGFBQWdDO1FBRXZDLEtBQUssRUFBRSxDQUFDO1FBVk8sYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUMzQixlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUMzQixXQUFNLEdBQU4sTUFBTSxDQUFzQjtRQUM1QixjQUFTLEdBQVQsU0FBUyxDQUFxQjtRQUM5QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBZ0I7UUFDNUIsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUN2QixrQkFBYSxHQUFiLGFBQWEsQ0FBbUI7UUFHdkMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFBO0lBQ3hCLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUE7UUFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUN0RCxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQTtZQUNqQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBQyw4QkFBOEIsQ0FBQyxDQUFDO1lBQ3RFLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxPQUFPLFVBQVUsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUkseUNBQXlDLENBQUE7UUFDMUgsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDbkIsQ0FBQztJQUVELFdBQVc7UUFDUCxrQ0FBa0M7UUFDbEMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkUsOEJBQThCO0lBQ2xDLENBQUM7SUFFRCxXQUFXO1FBQ1AsNEJBQTRCO0lBQ2hDLENBQUM7SUFFRCxTQUFTO1FBQ0wsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUE7UUFDeEIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUE7UUFDekQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUMvQyxHQUFHLElBQUksQ0FBQyxNQUFNO1lBQ2QsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1NBQ2xDLENBQUMsQ0FBQyxDQUFBO1FBQ0YsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO1FBQy9ELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQTtJQUNwQixDQUFDO0lBRUQsaUJBQWlCLEdBQUcsR0FBRyxFQUFFO1FBQ3JCLGNBQWMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDbEMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNoQyxZQUFZLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBQ3ZDLFlBQVksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDdEMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNsQyxZQUFZLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQ3JDLFlBQVksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDdkMsQ0FBQyxDQUFBO0lBRUQsVUFBVSxHQUFHLEdBQUcsRUFBRTtRQUNkLElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFBO1FBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsZ0NBQWdDLENBQUMsQ0FBQTtJQUN2RCxDQUFDLENBQUE7SUFFRCxXQUFXLEdBQUcsR0FBRyxFQUFFO1FBQ2YsSUFBSSxPQUFPLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxTQUFTLENBQUE7UUFDMUQsSUFBSSxVQUFVLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxTQUFTLENBQUE7UUFDaEUsT0FBTyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFFLEVBQUMsV0FBVyxFQUFDLElBQUksRUFBQyxPQUFPLEVBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUNuRixVQUFVLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUUsRUFBQyxXQUFXLEVBQUMsSUFBSSxFQUFDLE9BQU8sRUFBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDO0lBQzdGLENBQUMsQ0FBQTtJQUdELFNBQVMsR0FBRyxHQUFHLEVBQUU7UUFDYixJQUFJLENBQUM7WUFDRCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUNuRixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQTtZQUNuQixLQUFLLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzVCLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1IsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUE7Z0JBQ3BCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO2dCQUN4QixJQUFJLEtBQUssSUFBSSxTQUFTLEVBQUUsQ0FBQztvQkFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7Z0JBQ3pCLENBQUM7Z0JBQ0QsSUFBSSxLQUFLLElBQUksc0JBQXNCLEVBQUUsQ0FBQztvQkFDbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7b0JBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFBO2dCQUN6QyxDQUFDO2dCQUNELElBQUksS0FBSyxJQUFJLFFBQVEsRUFBRSxDQUFDO29CQUNwQixPQUFNO2dCQUNWLENBQUM7Z0JBQ0QsSUFBSSxLQUFLLElBQUksU0FBUyxFQUFFLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUE7Z0JBQ3pCLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7Z0JBQ3ZCLE9BQU07WUFDVixDQUFDO1lBQ0QsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUE7WUFDcEIsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2IsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXpCLENBQUM7SUFDTCxDQUFDLENBQUE7SUFFRCxZQUFZLEdBQUcsQ0FBQyxHQUFRLEVBQUUsRUFBRTtRQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzNELE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDM0MsQ0FBQyxDQUFBO0lBRUQsa0JBQWtCLEdBQUcsR0FBRyxFQUFFO1FBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO1FBQ25CLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMvQixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsOEJBQThCLENBQUMsMkJBQTJCLENBQUMsQ0FBQTtRQUNyRixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQTtRQUVwQiw0REFBNEQ7UUFDNUQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25GLENBQUMsQ0FBQTtJQUVELG1CQUFtQixHQUFHLENBQUMsS0FBbUIsRUFBRSxFQUFFO1FBQzFDLG9DQUFvQztRQUNwQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMxQyxPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3RELE9BQU8sQ0FBQyxHQUFHLENBQUMsaURBQWlELEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNuRixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUMsQ0FBQztJQUNMLENBQUMsQ0FBQTtJQUVELGNBQWMsR0FBRyxDQUFDLFdBQWdCLEVBQUUsRUFBRTtRQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUdwQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsR0FBRyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsa0JBQWtCLENBQUM7YUFDdkgsU0FBUyxDQUFDO1lBQ1AsSUFBSSxFQUFFLENBQUMsUUFBYSxFQUFFLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNyQixPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUVoRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssVUFBVSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssc0JBQXNCLEVBQUUsQ0FBQztvQkFDL0UsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQztvQkFDbkcsSUFBSSxRQUFRLENBQUMsT0FBTzt3QkFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ3hFLElBQUksUUFBUSxDQUFDLFVBQVU7d0JBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUNqRixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3JCLENBQUM7cUJBQU0sQ0FBQztvQkFDSixZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztvQkFDekMsSUFBSSxRQUFRLENBQUMsT0FBTzt3QkFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ3hFLElBQUksUUFBUSxDQUFDLFVBQVU7d0JBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUNqRixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3JCLENBQUM7WUFDTCxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsS0FBVSxFQUFFLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNyQixPQUFPLENBQUMsS0FBSyxDQUFDLDJCQUEyQixFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNsRCxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO2dCQUMvQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDckIsQ0FBQztTQUNKLENBQUMsQ0FBQztJQUNYLENBQUMsQ0FBQTtJQUVELFlBQVksR0FBRyxDQUFDLEdBQVEsRUFBRSxFQUFFO1FBQ3hCLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3ZFLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQ3pFLENBQUMsQ0FBQTt3R0E1TFEsa0JBQWtCOzRGQUFsQixrQkFBa0IscVNDckIvQix1c0NBaUNBLGlvSERkYyxZQUFZLDhCQUFFLFdBQVcsK0JBQUUsc0JBQXNCOzs0RkFFbEQsa0JBQWtCO2tCQVA5QixTQUFTOytCQUNJLGdCQUFnQixjQUNkLElBQUksV0FHUCxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsc0JBQXNCLENBQUM7Z1VBSW5ELGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDSSxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE91dHB1dCwgT25Jbml0LCBFbGVtZW50UmVmLCBJbnB1dCwgUmVuZGVyZXIyLCBPbkNoYW5nZXMsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29tcG9uZW50SGVscGVyIH0gZnJvbSBcIi4uLy4uLy4uL2NsYXNzZXMvY29tcG9uZW50LWhlbHBlclwiO1xyXG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FwaS9jb25uZWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9lYy1zZXJ2aWNlcy90b2FzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29yZUNvbnN0YW50c1NlcnZpY2UsIEFwaUNvbnN0YW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2VjLXNlcnZpY2VzL2NhcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZVJlc291cmNlVXJsLCBTYWZlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IFBhcmFtZXRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZWMtc2VydmljZXMvcGFyYW1ldGVycy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTG9hZGluZ0Z1bGxFY0NvbXBvbmVudCB9IGZyb20gJy4uL2xvYWRpbmcnO1xyXG5kZWNsYXJlIHZhciAkOiBhbnlcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdhcHAtZGVjaWRpci1lYycsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgdGVtcGxhdGVVcmw6ICdkZWNpZGlyLWVjLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWydkZWNpZGlyLWVjLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgTG9hZGluZ0Z1bGxFY0NvbXBvbmVudF1cclxufSlcclxuZXhwb3J0IGNsYXNzIERlY2lkaXJFY0NvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEhlbHBlciBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xyXG5cclxuICAgIEBJbnB1dCgpIHBheW1lbnRTZXJ2aWNlSW5zdDogYW55O1xyXG4gICAgQElucHV0KCkgbWV0aG9kOiB7IGRlc2NyaXB0aW9uPzogc3RyaW5nOyBpbnN0cnVjdGlvbnM/OiBzdHJpbmc7IGNvZGU/OiBzdHJpbmcgfSB8IG51bGwgPSBudWxsO1xyXG4gICAgQElucHV0KCkgdG90YWxfYW1vdW50ID0gMDtcclxuICAgIEBJbnB1dCgpIGFsbERhdGE6IGFueTtcclxuICAgIEBJbnB1dCgpIHVzZXJfZGF0YSA9IG51bGw7XHJcbiAgICBAT3V0cHV0KCkgcmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBwcm90ZWN0ZWQgbW9kYWxSZWY6IGFueSB8IG51bGwgPSBudWxsO1xyXG4gICAgcHJvdGVjdGVkIGRhdGFEZWNpZGlyOiBhbnk7XHJcblxyXG4gICAgcHVibGljIGxvYWRpbmcgPSBmYWxzZTtcclxuICAgIHB1YmxpYyBpc0RvYmxlQXV0aCA9IGZhbHNlO1xyXG4gICAgcHVibGljIHVybHM6IGFueVtdID0gW107XHJcbiAgICBwdWJsaWMgdXJsOiBTYWZlUmVzb3VyY2VVcmwgfCB1bmRlZmluZWQ7XHJcbiAgICBwdWJsaWMgY2xvc2VNb2RhbCA9ICcnXHJcbiAgICBwdWJsaWMgcGFyYW1zTWVuc2FqZSA9ICcnXHJcbiAgICBwdWJsaWMgdmVudGFuYTogYW55XHJcbiAgICBwdWJsaWMgcGFyYW1zOiBhbnlcclxuICAgIHB1YmxpYyBzaG93TW9kYWwgPSBmYWxzZTtcclxuICAgIHByb3RlY3RlZCBkYXRhUmVkaXJlY3QgPSAoKSA9PiB0aGlzLmFwaUNvbnN0cy5nZXRVcmxCYXNlKCkgKyAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvZGVjaWRpci8nICsgdGhpcy5jYXJ0U2VydmljZS5jYXJ0VG9rZW4gKyAnL3Byb2Nlc3MtcGF5bWVudCc7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICAgICAgcHVibGljIGNvbm5lY3Rpb246IENvbm5lY3Rpb25TZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyB0b2FzdHJTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIGNvbnN0czogQ29yZUNvbnN0YW50c1NlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIGFwaUNvbnN0czogQXBpQ29uc3RhbnRzU2VydmljZSxcclxuICAgICAgICBwdWJsaWMgY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyBhY3RpdmVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICAgIHB1YmxpYyBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcclxuICAgICAgICBwdWJsaWMgcGFyYW1zU2VydmljZTogUGFyYW1ldGVyc1NlcnZpY2VcclxuICAgICAgICApIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMuZWNPbkNvbnN0cnVjdCgpXHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5nZXRDaGVja291dERlY2lkaXIoKVxyXG4gICAgICAgIHRoaXMucGFyYW1zU2VydmljZS5nZXRQYXJhbWV0ZXJzKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBhcmFtcyA9IHJlc1xyXG4gICAgICAgICAgICBjb25zdCBwYXJhbVZhbHVlID0gdGhpcy5oYXNQYXJhbXMocmVzLCdwYXJ0aWFsbHlfYXV0aG9yaXplZF9kZWNpZGlyJyk7XHJcbiAgICAgICAgICAgIHRoaXMucGFyYW1zTWVuc2FqZSA9ICh0eXBlb2YgcGFyYW1WYWx1ZSA9PT0gJ3N0cmluZycgPyBwYXJhbVZhbHVlIDogbnVsbCkgfHwgJ1NlIGVzdMOhIHByb2Nlc2FuZG8gZWwgcGFnbyBjb24gdGFyamV0YS4nXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5lY09uSW5pdCgpXHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgLy8gUmVtb3ZlciBlbCBsaXN0ZW5lciBkZSBtZW5zYWplc1xyXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgdGhpcy5oYW5kbGVJZnJhbWVNZXNzYWdlLCBmYWxzZSk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJTRSBERVNUUk9aQVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcygpIHtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIlNFIENBTUJJT1wiKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuTW9kYWwoKSB7XHJcbiAgICAgICAgdGhpcy5jbGVhclN0b3JhZ2VTdGF0ZSgpXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2RhdGFSZWRpcmVjdCcsIHRoaXMuZGF0YVJlZGlyZWN0KCkpXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2RhdGFEZWNpZGlyJywgSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgICAgICAuLi50aGlzLm1ldGhvZCxcclxuICAgICAgICAgICAgdG90YWxfYW1vdW50OiB0aGlzLnRvdGFsX2Ftb3VudFxyXG4gICAgICAgIH0pKVxyXG4gICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc3VidG90YWwnLCB0aGlzLnRvdGFsX2Ftb3VudC50b1N0cmluZygpKVxyXG4gICAgICAgIHRoaXMuc2hvd01vZGFsID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNsb3NlTW9kYWwgPSAnJ1xyXG4gICAgICAgIHRoaXMuY2FsbFN0YXRlKClcclxuICAgIH1cclxuXHJcbiAgICBjbGVhclN0b3JhZ2VTdGF0ZSA9ICgpID0+IHtcclxuICAgICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdzdGF0ZScpXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3N0YXRlJylcclxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnZGF0YVJlZGlyZWN0JylcclxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnZGF0YURlY2lkaXInKVxyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdtZXNzYWdlJylcclxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnc3ViTWVzc2FnZScpXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3N1YnRvdGFsJylcclxuICAgIH1cclxuXHJcbiAgICBjbGlja0Nsb3NlID0gKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2xvc2VNb2RhbCA9ICdjYW5jZWwnXHJcbiAgICAgICAgdGhpcy5zaG93TW9kYWwgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnByb2Nlc3NFcnJvcignU2UgY2FuY2VsbyBlbCBwYWdvIGNvbiBEZWNpZGlyJylcclxuICAgIH1cclxuXHJcbiAgICBzaG93TWVzc2FnZSA9ICgpID0+IHtcclxuICAgICAgICBsZXQgbWVzc2FnZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtZXNzYWdlJykgfHwgdW5kZWZpbmVkXHJcbiAgICAgICAgbGV0IHN1Yk1lc3NhZ2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnc3ViTWVzc2FnZScpIHx8IHVuZGVmaW5lZFxyXG4gICAgICAgIG1lc3NhZ2UgJiYgdGhpcy50b2FzdHJTZXJ2aWNlLnNob3cobWVzc2FnZSx7fSwnJywge2Nsb3NlQnV0dG9uOnRydWUsdGltZU91dDo2MDAwfSk7XHJcbiAgICAgICAgc3ViTWVzc2FnZSAmJiB0aGlzLnRvYXN0clNlcnZpY2Uuc2hvdyhzdWJNZXNzYWdlLHt9LCcnLCB7Y2xvc2VCdXR0b246dHJ1ZSx0aW1lT3V0OjYwMDB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgY2FsbFN0YXRlID0gKCkgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGxldCBzdGF0ZSA9IHRoaXMuY2xvc2VNb2RhbCAhPSAnJyA/IHRoaXMuY2xvc2VNb2RhbCA6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdzdGF0ZScpXHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWVcclxuICAgICAgICAgICAgc3RhdGUgJiYgdGhpcy5zaG93TWVzc2FnZSgpO1xyXG4gICAgICAgICAgICBpZiAoc3RhdGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyU3RvcmFnZVN0YXRlKClcclxuICAgICAgICAgICAgICAgIGlmIChzdGF0ZSA9PSAnc3VjY2VzcycpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWR5LmVtaXQodHJ1ZSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChzdGF0ZSA9PSAncGFydGlhbGx5X2F1dGhvcml6ZWQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkeS5lbWl0KHRydWUpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzRXJyb3IodGhpcy5wYXJhbXNNZW5zYWplKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHN0YXRlID09ICdjYW5jZWwnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPT0gJ2ZhaWx1cmUnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzRXJyb3IoJycpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dNb2RhbCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGxTdGF0ZSgpXHJcbiAgICAgICAgICAgIH0sIDUwMDApO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG5cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvY2Vzc0Vycm9yID0gKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coZXJyICE9ICcnID8gZXJyIDogJ3BheW1lbnQtZXJyb3InKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIkVSUk9SIEVOVklPIEJBQ0sgIFwiLCBlcnIpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldENoZWNrb3V0RGVjaWRpciA9ICgpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlXHJcbiAgICAgICAgdGhpcy5kYXRhRGVjaWRpciA9IHRoaXMubWV0aG9kO1xyXG4gICAgICAgIHRoaXMudXJsID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKCdhc3NldHMvZGVjaWRpckZvcm1FYy5odG1sJylcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIEVzY3VjaGFyIG1lbnNhamVzIGRlbCBpZnJhbWUgcGFyYSBtYW5lamFyIGxhIGNvbXVuaWNhY2nDs25cclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMuaGFuZGxlSWZyYW1lTWVzc2FnZS5iaW5kKHRoaXMpLCBmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlSWZyYW1lTWVzc2FnZSA9IChldmVudDogTWVzc2FnZUV2ZW50KSA9PiB7XHJcbiAgICAgICAgLy8gVmVyaWZpY2FyIGVsIG9yaWdlbiBwb3Igc2VndXJpZGFkXHJcbiAgICAgICAgaWYgKGV2ZW50Lm9yaWdpbiAhPT0gd2luZG93LmxvY2F0aW9uLm9yaWdpbikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZXZlbnQuZGF0YSAmJiBldmVudC5kYXRhLnR5cGUgPT09ICdERUNJRElSX1BBWU1FTlQnKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdEZWNpZGlyQ29tcG9uZW50IC0gUHJvY2VzYW5kbyBwYWdvIGNvbiBwYXlsb2FkOicsIGV2ZW50LmRhdGEucGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc1BheW1lbnQoZXZlbnQuZGF0YS5wYXlsb2FkKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvY2Vzc1BheW1lbnQgPSAocGF5bWVudERhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICBcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24ucG9zdCgnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvZGVjaWRpci8nICsgdGhpcy5jYXJ0U2VydmljZS5jYXJ0VG9rZW4gKyAnL3Byb2Nlc3MtcGF5bWVudCcpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnUmVzcHVlc3RhIGRlbCBiYWNrZW5kOicsIHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAnYXBwcm92ZWQnIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gJ3BhcnRpYWxseV9hdXRob3JpemVkJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc3RhdGUnLCByZXNwb25zZS5zdGF0dXMgPT09ICdhcHByb3ZlZCcgPyAnc3VjY2VzcycgOiAncGFydGlhbGx5X2F1dGhvcml6ZWQnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLm1lc3NhZ2UpIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdtZXNzYWdlJywgcmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWJNZXNzYWdlKSBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc3ViTWVzc2FnZScsIHJlc3BvbnNlLnN1Yk1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGxTdGF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzdGF0ZScsICdmYWlsdXJlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5tZXNzYWdlKSBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbWVzc2FnZScsIHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3ViTWVzc2FnZSkgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3N1Yk1lc3NhZ2UnLCByZXNwb25zZS5zdWJNZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxsU3RhdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgcHJvY2Vzc2luZyBwYXltZW50OicsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc3RhdGUnLCAnZmFpbHVyZScpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0Vycm9yKCdFcnJvciBhbCBwcm9jZXNhciBlbCBwYWdvJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxsU3RhdGUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVzaXplSWZyYW1lID0gKG9iajogYW55KSA9PiB7XHJcbiAgICAgICAgb2JqLnN0eWxlLmhlaWdodCA9IG9iai5jb250ZW50V2luZG93LmRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0ICsgJ3B4JztcclxuICAgICAgICBvYmouc3R5bGUud2lkdGggPSBvYmouY29udGVudFdpbmRvdy5kb2N1bWVudC5ib2R5LnNjcm9sbFdpZHRoICsgJ3B4JztcclxuICAgIH1cclxuXHJcbn1cclxuXHJcbiIsIjxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgPGgzPkNvbnRpbnVhciBjb24gZWwgcGFnbyBlbiBEZWNpZGlyPC9oMz5cclxuICAgIEBpZiAobWV0aG9kKSB7XHJcbiAgICA8cCBjbGFzcz1cInB4LTVcIj57eyBtZXRob2QuZGVzY3JpcHRpb24gfX08L3A+XHJcbiAgICA8cCBjbGFzcz1cInB4LTVcIj57eyBtZXRob2QuaW5zdHJ1Y3Rpb25zIH19PC9wPlxyXG4gICAgfVxyXG4gICAgQGlmICghbG9hZGluZykge1xyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGNvbXByYXJcIiAoY2xpY2spPVwib3Blbk1vZGFsKClcIj5QYWdhcjwvYnV0dG9uPlxyXG4gICAgfSBAZWxzZSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c2l0ZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG10LTJcIj5cclxuICAgICAgICA8YXBwLWxvYWRpbmctZnVsbC1lYz48L2FwcC1sb2FkaW5nLWZ1bGwtZWM+XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIDwvZGl2PlxyXG5cclxuQGlmIChzaG93TW9kYWwpIHtcclxuPGRpdiBjbGFzcz1cIm1vZGFsLWJhY2tkcm9wXCIgKGNsaWNrKT1cImNsaWNrQ2xvc2UoKVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC1sZ1wiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBJZnJhbWUgZGVsIGZvcm11bGFyaW8gZGUgZGVjaWRpciAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWZyYW1lLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aWZyYW1lIFtzcmNdPVwidXJsXCIgZnJhbWVib3JkZXI9XCIwXCIgY2xhc3M9XCJwYXltZW50LWlmcmFtZVwiPjwvaWZyYW1lPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG59XHJcbiJdfQ==