ng-easycommerce-v18 0.2.16 → 0.2.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/assets/decidirFormEc.html +7 -7
- package/esm2022/lib/ec-components/account-ec/order-ec/order-ec.component.mjs +2 -2
- package/esm2022/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.mjs +2 -2
- package/esm2022/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.mjs +11 -11
- package/esm2022/lib/ec-components/blocks-ec/block-newsletter-ec/block-newsletter-ec.component.mjs +2 -2
- package/esm2022/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.mjs +12 -12
- package/esm2022/lib/ec-components/cart-ec/cart-ec.component.mjs +2 -2
- package/esm2022/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.mjs +2 -2
- package/esm2022/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.mjs +2 -2
- package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.mjs +2 -2
- package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.mjs +2 -2
- package/esm2022/lib/ec-components/checkout-ec/shipment-ec/shipment-ec.component.mjs +49 -3
- package/esm2022/lib/ec-components/checkout-ec/step-container-ec/step-container-ec.component.mjs +2 -2
- package/esm2022/lib/ec-components/faqs-ec/faqs-ec.component.mjs +2 -2
- package/esm2022/lib/ec-components/filters-ec/filters-ec.component.mjs +12 -4
- package/esm2022/lib/ec-components/header-ec/header-ec.component.mjs +4 -4
- package/esm2022/lib/ec-components/related-products-ec/related-products-ec.component.mjs +4 -4
- package/esm2022/lib/ec-components/section-container-ec/section-container-ec.component.mjs +2 -2
- package/esm2022/lib/ec-components/stores-ec/stores-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/decidir-ec/decidir-ec.component.mjs +4 -4
- package/esm2022/lib/ec-components/widgets-ec/re-captcha-ec/re-captcha-ec.component.mjs +2 -2
- package/esm2022/lib/ec-pipe/ec-safe-html.pipe.mjs +24 -0
- package/esm2022/lib/ec-pipe/index.mjs +2 -1
- package/esm2022/lib/ec-services/cart.service.mjs +2 -2
- package/esm2022/lib/ec-services/checkout.service.mjs +3 -3
- package/esm2022/lib/ec-services/currency.service.mjs +2 -2
- package/esm2022/lib/ec-services/test.service.mjs +2 -2
- package/fesm2022/ng-easycommerce-v18.mjs +132 -58
- package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
- package/lib/ec-components/checkout-ec/shipment-ec/shipment-ec.component.d.ts +22 -0
- package/lib/ec-components/filters-ec/filters-ec.component.d.ts +5 -0
- package/lib/ec-pipe/ec-safe-html.pipe.d.ts +10 -0
- package/lib/ec-pipe/index.d.ts +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
# Version 0.2.18
|
|
2
|
+
- Se implementa el check de ocultar precios para usuarios no logueados en el filter para el rango de precio
|
|
3
|
+
- Se implementa en el metodo de envio la clase .active para el que el metodo seleccionado quede diferenciado
|
|
4
|
+
# Version 0.2.17
|
|
5
|
+
- Se implementa pipe safe url.
|
|
6
|
+
- Se comentan console.log
|
|
1
7
|
# Version 0.2.16
|
|
2
8
|
- Se modifica funcionamiento del carrito con login y logout
|
|
3
9
|
# Version 0.2.15
|
|
@@ -428,8 +428,8 @@
|
|
|
428
428
|
"device_unique_identifier": session_id
|
|
429
429
|
}
|
|
430
430
|
data['date_of_birth'] = document.getElementById('date_of_birth').value;
|
|
431
|
-
console.log('Datos para el envio: ', data)
|
|
432
|
-
console.log(dataDecidir)
|
|
431
|
+
// console.log('Datos para el envio: ', data)
|
|
432
|
+
// console.log(dataDecidir)
|
|
433
433
|
if (dataDecidir?.config?.public_cybersource != 'deshabilitado') {
|
|
434
434
|
data['address'] = {
|
|
435
435
|
'name': document.getElementById('address').value,
|
|
@@ -452,7 +452,7 @@
|
|
|
452
452
|
processError(response)
|
|
453
453
|
})
|
|
454
454
|
.then(response => {
|
|
455
|
-
console.log('Success:', response)
|
|
455
|
+
// console.log('Success:', response)
|
|
456
456
|
setMessageInStore(response)
|
|
457
457
|
if (response.hasOwnProperty('status')) {
|
|
458
458
|
if (response.status == 'approved' || response.status == 'partially_authorized') {
|
|
@@ -473,7 +473,7 @@
|
|
|
473
473
|
}
|
|
474
474
|
|
|
475
475
|
const sdkResponseHandler = (status, response) => {
|
|
476
|
-
console.log('Respuesta: ', response)
|
|
476
|
+
// console.log('Respuesta: ', response)
|
|
477
477
|
if (status != 200 && status != 201) {
|
|
478
478
|
//Manejo de error: Ver Respuesta de Error
|
|
479
479
|
processError(response)
|
|
@@ -485,20 +485,20 @@
|
|
|
485
485
|
|
|
486
486
|
const sendForm = (event) => {
|
|
487
487
|
isLoad(true)
|
|
488
|
-
console.log('Formulario: ', form)
|
|
488
|
+
// console.log('Formulario: ', form)
|
|
489
489
|
event.preventDefault();
|
|
490
490
|
decidir.createToken(form, sdkResponseHandler);
|
|
491
491
|
return false;
|
|
492
492
|
}
|
|
493
493
|
|
|
494
494
|
const processError = (error) => {
|
|
495
|
-
console.log("ERROR ENVIO BACK ", error);
|
|
495
|
+
// console.log("ERROR ENVIO BACK ", error);
|
|
496
496
|
isLoad(false)
|
|
497
497
|
localStorage.setItem('state', 'failure')
|
|
498
498
|
}
|
|
499
499
|
|
|
500
500
|
const processResponse = (response) => {
|
|
501
|
-
console.log("ENVIO BACK ", response);
|
|
501
|
+
// console.log("ENVIO BACK ", response);
|
|
502
502
|
isLoad(false)
|
|
503
503
|
localStorage.setItem('state', response.status == 'approved' ? 'success' : 'partially_authorized')
|
|
504
504
|
}
|
|
@@ -33,7 +33,7 @@ export class OrderEcComponent {
|
|
|
33
33
|
const number = this._activedRoute.snapshot.params["number"];
|
|
34
34
|
this._ordersService.getOrderByNumber(number);
|
|
35
35
|
}
|
|
36
|
-
console.log('inside');
|
|
36
|
+
// console.log('inside');
|
|
37
37
|
});
|
|
38
38
|
this._channelConfigService.channel$.subscribe((config) => {
|
|
39
39
|
if (config && config.allowRepeatOrders !== undefined) {
|
|
@@ -78,4 +78,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
78
78
|
UpperCasePipe
|
|
79
79
|
], template: "<main class=\"py-5\" id=\"orderEcComponent\">\r\n <div class=\"container\">\r\n @if(order$ | async; as order){\r\n <div class=\"wrap\">\r\n @if(order){\r\n\r\n <div class=\"row justify-content-between \">\r\n <div class=\"col-sm-auto col-12 font-brandon\">\r\n <h4 class=\"tit1 fw-bold\">{{ ('order' | translate) + ': ' + order.number }}</h4>\r\n </div>\r\n @if(order?.invoice){\r\n <div class=\"col-sm col-12 font-brandon\">\r\n <a target=\"_blank\" [href]=\"getUrlBase().slice(0, -1) + order.invoice\"\r\n class=\"btn btn-link btn-invoice\">\r\n <i class=\"fas fa-file-download me-1\"></i>\r\n {{ 'download' | translate }} {{ 'invoices' | translate | titlecase }}\r\n </a>\r\n </div>\r\n }\r\n <a (click)=\"back()\" class=\"col-auto text-end\">\r\n <button class=\"btn btn-outline-dark btvolver border\">{{ 'back-to-orders' | translate }}</button>\r\n </a>\r\n </div>\r\n\r\n <section id=\"orders\">\r\n <div class=\"row pt-2\">\r\n <div class=\"col-md-2 col-12\">\r\n <p class=\"st\">{{ 'payment-state' | translate }}:</p>\r\n <p class=\"\">\r\n {{ order.payments[0].state | translate }}\r\n </p>\r\n </div>\r\n <div class=\"col-md-2 col-12 font-brandon\">\r\n <p class=\"st\">{{ 'shipment-state' | translate }}:</p>\r\n <p class=\"\">\r\n {{ order.shipments[0].state | translate }}\r\n </p>\r\n </div>\r\n <div class=\"col-md-2 col-12 font-brandon\">\r\n <p class=\"st\">{{ 'payment-method' | translate }}:</p>\r\n <p class=\"\">\r\n {{ order.payments[0]?.method?.name | translate }}\r\n </p>\r\n </div>\r\n <div class=\"col-md-2 col-12 font-brandon\">\r\n <p class=\"st\">{{ 'shipment-method' | translate }}:</p>\r\n <p class=\"\">\r\n {{ order.shipments[0].method.name }}\r\n </p>\r\n <!-- ACA DEBERIA IR EL LINK DE SEGUIMIENTO -->\r\n @if(order.tracking){\r\n <a [href]=\"order.tracking\"\r\n class=\"btn btn-outline-dark btnLogout px-3 py-1 font-size-10 w-auto btn-sm\">\r\n Ver seguimiento</a>\r\n }\r\n </div>\r\n <div class=\"col-md-2 col-12 font-brandon\">\r\n <p class=\"st\">{{ 'date' | translate }}:</p>\r\n <p class=\"\">\r\n {{ toDate(order.checkoutCompletedAt, 'DD/MM/YYYY') | translate }}<br>\r\n {{ toDate(order.checkoutCompletedAt, 'h:mm:ss a') | translate }}\r\n </p>\r\n </div>\r\n @if(creditAccountShowPrices !== null ? creditAccountShowPrices : true){\r\n <div class=\"col-md-2 col-12 font-brandon\">\r\n <p class=\"st\">{{ 'total' | translate }}:</p>\r\n <h5 class=\"fw-bold\">\r\n {{ (order.totals.total) | ecCurrencySymbol}}\r\n\r\n </h5>\r\n </div>\r\n }\r\n </div>\r\n </section>\r\n @if(!hidePrices && allowRepeatOrders){\r\n <div class=\"text-end mt-3\">\r\n <button class=\"btn btn-primary mb-2\" (click)=\"repeatOrder(order)\">\r\n {{ 'repeat-order' | translate }}\r\n </button>\r\n </div>\r\n }\r\n\r\n <div class=\"container py-3 border-top border-bottom\">\r\n @if(order.items.length){\r\n <div class=\"row\">\r\n <div class=\"col-2 font-sm font-brandon d-none d-md-block\">\r\n {{ 'product' | translate | uppercase }}\r\n </div>\r\n <div class=\"col-4 font-sm font-brandon d-none d-md-block\">\r\n {{ 'description' | translate | uppercase }}\r\n </div>\r\n @if(channelConfig.applyOrderLot){\r\n <div id=\"colLots\" class=\"col-1 font-sm font-brandon d-none d-md-block\">\r\n <!-- {{ 'description' | translate | uppercase }} -->\r\n {{ 'lots' | translate | uppercase }}\r\n </div>\r\n }\r\n @if(creditAccountShowPrices !== null ? creditAccountShowPrices : true){\r\n <div class=\"col-2 text-center font-sm font-brandon d-none d-md-block\">\r\n {{ 'unit-price' | translate | uppercase }}\r\n </div>\r\n }\r\n <div class=\"col-1 text-center font-sm font-brandon d-none d-md-block\">\r\n {{ 'quantity' | translate | uppercase }}\r\n </div>\r\n @if(creditAccountShowPrices !== null ? creditAccountShowPrices : true){\r\n <div class=\"col-2 text-end font-sm font-brandon d-none d-md-block\">\r\n {{ 'total' | translate | uppercase }}\r\n </div>\r\n }\r\n </div>\r\n } @else {\r\n\r\n }\r\n @for(item of order.items; track $index; let i = $index){\r\n <div class=\"row cart-items\">\r\n <div class=\"col-5 col-md-2 py-2\">\r\n @if(item.product.variants[0]?.images?.length){\r\n <img class=\"smc maxwidth img-fluid rounded-custom \"\r\n [src]=\"mediaUrl() + item.product.variants[0].images[0]\" alt=\"\">\r\n } @else {\r\n @if(item.product.picturesdefault){\r\n <img class=\"smc maxwidth img-fluid rounded-custom\"\r\n [src]=\"mediaUrl() + item.product.picturesdefault[0]\" alt=\"\">\r\n }\r\n }\r\n </div>\r\n <div\r\n class=\"col-md-4 col-7 flex-column flex-md-row justify-content-start d-flex align-items-center\">\r\n <p class=\"font-brandon d-flex w-100 mb-0\">\r\n {{ item.product.name }} (Cod:{{ item.product.variants[0].code }})\r\n </p>\r\n </div>\r\n @if(channelConfig.applyOrderLot){\r\n <div class=\"col-md-1 col-1 flex-column flex-md-row justify-content-start d-flex align-items-center\">\r\n <input type=\"button\" class=\"btn btn-primary btnSeguir m-0 text-center\" type=\"button\"\r\n [attr.data-bs-toggle]=\"'collapse'\" [attr.data-bs-target]=\"'#collapseExample'+i\"\r\n aria-expanded=\"false\" [attr.aria-controls]=\"'collapseExample'+i\"\r\n value=\"{{ 'see' | translate | uppercase }}\">\r\n </div>\r\n }\r\n <div class=\"container d-md-none\">\r\n <div class=\"row\">\r\n <div class=\"col-4\">\r\n <p class=\"text-center w-100 m-0\"> {{ item.quantity }}</p>\r\n </div>\r\n @if(creditAccountShowPrices !== null ? creditAccountShowPrices : true){\r\n <div class=\"col-4 font-xl\">\r\n <p class=\"text-center w-100 m-0\"> {{ (item.product.variants[0].saleprice ?\r\n item.product.variants[0].saleprice : item.product.variants[0].price) |\r\n ecCurrencySymbol}}</p>\r\n </div>\r\n }\r\n @if(creditAccountShowPrices !== null ? creditAccountShowPrices : true){\r\n <div class=\"col-4 font-xl\">\r\n <p class=\"text-center w-100 m-0\"> {{ ((item.product.variants[0].saleprice ?\r\n item.product.variants[0].saleprice : item.product.variants[0].price) *\r\n item.quantity) | ecCurrencySymbol}}</p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n @if(creditAccountShowPrices !== null ? creditAccountShowPrices : true){\r\n <div class=\"col-2 d-none d-md-flex align-items-center\">\r\n <p class=\"text-center w-100 m-0\">\r\n {{ (item.product.variants[0].saleprice ? item.product.variants[0].saleprice :\r\n item.product.variants[0].price) | ecCurrencySymbol}}\r\n </p>\r\n </div>\r\n }\r\n <div class=\"col-1 d-none d-md-flex align-items-center\">\r\n <p class=\"text-center w-100 m-0\"> {{ item.quantity }}</p>\r\n </div>\r\n @if(creditAccountShowPrices !== null ? creditAccountShowPrices : true){\r\n <div class=\"col-2 d-none d-md-flex align-items-center\">\r\n <p class=\"text-end w-100 m-0\">\r\n {{ ((item.product.variants[0].saleprice ? item.product.variants[0].saleprice :\r\n item.product.variants[0].price) * item.quantity) | ecCurrencySymbol}}</p>\r\n </div>\r\n }\r\n <div class=\"collapse\" [attr.id]=\"'collapseExample'+i\">\r\n <div class=\"card card-body\">\r\n <table class=\"table table-striped\">\r\n <thead>\r\n <tr>\r\n <th scope=\"col\">#</th>\r\n <th scope=\"col\">Estado</th>\r\n <th scope=\"col\">Cantidad</th>\r\n <th scope=\"col\">Fecha Solicitada</th>\r\n <th scope=\"col\">Fecha Estimada</th>\r\n <th scope=\"col\">Sede</th>\r\n <th scope=\"col\">Nota</th>\r\n <th scope=\"col\">Total Lote</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for( lot of item.orderItemLot; track $index){\r\n <tr>\r\n <th scope=\"row\">{{lot.id}}</th>\r\n <td>{{lot.lot_status}}</td>\r\n <td>{{lot.quantity}}</td>\r\n <td>{{ toDate(lot.date_request, 'DD/MM/YYYY') | translate }}</td>\r\n @if(lot.date_deliver){\r\n <td>{{\r\n toDate(lot.date_deliver, 'DD/MM/YYYY') | translate }}</td>\r\n } @else {\r\n <td>Pendiente</td>\r\n }\r\n <td>{{lot.shipping_address_name}}</td>\r\n <td>{{lot.notes}}</td>\r\n <td>{{lot.total_lot | ecCurrencySymbol}}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-12 col-md-6\"></div>\r\n @if(creditAccountShowPrices !== null ? creditAccountShowPrices : true){\r\n <div class=\"col-12 col-md-6\">\r\n <div class=\"row py-4\">\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom \">{{ 'total-products' |\r\n translate }}</div>\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom text-end\">\r\n {{ (order.totals.items) | ecCurrencySymbol }}\r\n </div>\r\n\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom \">{{ 'shipment' |\r\n translate }}</div>\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom text-end\">\r\n {{ (order.totals.shipping || '0') | ecCurrencySymbol }}\r\n\r\n </div>\r\n @if(!hideDiscounts && order.totals.promotion && order.totals.promotion != 0){\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom \">{{ 'discount' |\r\n translate }}</div>\r\n }\r\n @if(!hideDiscounts && order.totals.promotion && order.totals.promotion != 0){\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom text-end text-end\">\r\n {{ (order.totals.promotion) | ecCurrencySymbol }}</div>\r\n }\r\n @if(!hideTaxes && order.totals.taxes && order.totals.taxes != 0 ){\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom \">{{ 'taxes' | translate }}</div>\r\n }\r\n @if(!hideTaxes && order.totals.taxes && order.totals.taxes != 0){\r\n <div class=\"col-6 font-brandon font-md text-gray border-bottom text-end\">\r\n {{ (order.totals.taxes) | ecCurrencySymbol }}</div>\r\n }\r\n\r\n <div class=\"col-6 font-brandon font-md\">{{ 'total' | translate | uppercase }}</div>\r\n <div class=\"col-6 font-brandon font-md text-end\">\r\n {{ (order.totals.total) | ecCurrencySymbol }}\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n } @else {\r\n <div class=\"w-100 h-50\">\r\n <div class=\"d-flex flex-row justify-content-center align-items-center text-center\">\r\n <h5>{{ 'no-orders' | translate }}</h5>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n } @else {\r\n <div class=\"w-100 h-50 py-5\">\r\n <div class=\"d-flex flex-row justify-content-center align-items-center text-center\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</main>" }]
|
|
80
80
|
}] });
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvYWNjb3VudC1lYy9vcmRlci1lYy9vcmRlci1lYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9hY2NvdW50LWVjL29yZGVyLWVjL29yZGVyLWVjLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQzs7O0FBZTVCLE1BQU0sT0FBTyxnQkFBZ0I7SUFFcEIsY0FBYyxHQUFrQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdEQsT0FBTyxHQUF3QixNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUMzRCxVQUFV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LFFBQVEsRUFBRSxDQUFDO3dHQTdEaEMsZ0JBQWdCOzRGQUFoQixnQkFBZ0Isd0VDeEI3QixnMmxCQTBSTyx5REQ1UUksZUFBZSx1RkFDdkIsb0JBQW9CLHlEQUNwQixzQkFBc0IsMkRBQ3RCLFNBQVMseUNBQ1QsYUFBYSw2Q0FDYixhQUFhOzs0RkFLSCxnQkFBZ0I7a0JBYjVCLFNBQVM7K0JBQ0MsY0FBYyxjQUNaLElBQUksV0FDUCxDQUFDLGVBQWU7d0JBQ3ZCLG9CQUFvQjt3QkFDcEIsc0JBQXNCO3dCQUN0QixTQUFTO3dCQUNULGFBQWE7d0JBQ2IsYUFBYTtxQkFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2FydFNlcnZpY2UsIENoYW5uZWxTZXJ2aWNlLCBPcmRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZWMtc2VydmljZXMnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEVjQ3VycmVuY3lTeW1ib2xQaXBlIH0gZnJvbSAnLi4vLi4vLi4vZWMtcGlwZSc7XHJcbmltcG9ydCB7IExvYWRpbmdGdWxsRWNDb21wb25lbnQgfSBmcm9tICcuLi8uLi93aWRnZXRzLWVjJztcclxuaW1wb3J0IHsgQXN5bmNQaXBlLCBUaXRsZUNhc2VQaXBlLCBVcHBlckNhc2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQXBpQ29uc3RhbnRzU2VydmljZSwgQ29yZUNvbnN0YW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdhcHAtb3JkZXItZWMnLFxyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0aW1wb3J0czogW1RyYW5zbGF0ZU1vZHVsZSwgXHJcblx0XHRcdEVjQ3VycmVuY3lTeW1ib2xQaXBlLCBcclxuXHRcdFx0TG9hZGluZ0Z1bGxFY0NvbXBvbmVudCxcclxuXHRcdFx0QXN5bmNQaXBlLFxyXG5cdFx0XHRUaXRsZUNhc2VQaXBlLFxyXG5cdFx0XHRVcHBlckNhc2VQaXBlXHJcblx0XHRdLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9vcmRlci1lYy5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmw6ICcuL29yZGVyLWVjLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgT3JkZXJFY0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCAge1xyXG5cclxuXHRwcml2YXRlIF9vcmRlcnNTZXJ2aWNlOiBPcmRlcnNTZXJ2aWNlID0gaW5qZWN0KE9yZGVyc1NlcnZpY2UpO1xyXG5cdHByaXZhdGUgX2NvbnN0czogQXBpQ29uc3RhbnRzU2VydmljZSA9IGluamVjdChBcGlDb25zdGFudHNTZXJ2aWNlKTtcclxuXHRwcml2YXRlIF9jb25zdGFudHM6IENvcmVDb25zdGFudHNTZXJ2aWNlID0gaW5qZWN0KENvcmVDb25zdGFudHNTZXJ2aWNlKTtcclxuXHRwcml2YXRlIF9yb3V0ZXI6IFJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG5cdHByaXZhdGUgX2NhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSA9IGluamVjdChDYXJ0U2VydmljZSk7XHJcblx0cHJpdmF0ZSBfY2hhbm5lbENvbmZpZ1NlcnZpY2U6IENoYW5uZWxTZXJ2aWNlID0gaW5qZWN0KENoYW5uZWxTZXJ2aWNlKTtcclxuXHRwcml2YXRlIF9hY3RpdmVkUm91dGU6IEFjdGl2YXRlZFJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcclxuXHJcblx0cHVibGljIG9yZGVyJDogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy5fb3JkZXJzU2VydmljZS5zZWxlY3RlZE9yZGVyJDtcclxuXHRwdWJsaWMgYWxsb3dSZXBlYXRPcmRlcnM6Ym9vbGVhbiA9IGZhbHNlO1xyXG5cdHB1YmxpYyBsb2FkaW5nOmJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBjcmVkaXRBY2NvdW50U2hvd1ByaWNlczogYm9vbGVhbiB8IG51bGwgPSBudWxsO1xyXG5cdHB1YmxpYyBoaWRlUHJpY2VzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgaGlkZURpc2NvdW50czogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGhpZGVUYXhlczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdHB1YmxpYyBjaGFubmVsQ29uZmlnOmFueSA9IHRoaXMuX29yZGVyc1NlcnZpY2UuY2hhbm5lbENvbmZpZztcclxuXHRwdWJsaWMgbnVtYmVyT3JkZXI6YW55O1xyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuXHRcdHRoaXMuX29yZGVyc1NlcnZpY2Uuc2VsZWN0ZWRPcmRlciQuc3Vic2NyaWJlKCByZXMgPT4ge1xyXG5cdFx0XHRpZighcmVzKXtcclxuXHRcdFx0XHRjb25zdCBudW1iZXIgPSAgdGhpcy5fYWN0aXZlZFJvdXRlLnNuYXBzaG90LnBhcmFtc1tcIm51bWJlclwiXTtcclxuXHRcdFx0XHR0aGlzLl9vcmRlcnNTZXJ2aWNlLmdldE9yZGVyQnlOdW1iZXIobnVtYmVyKVxyXG5cdFx0XHR9XHJcblx0XHRcdGNvbnNvbGUubG9nKCdpbnNpZGUnKTtcclxuXHRcdH0pXHJcblx0XHR0aGlzLl9jaGFubmVsQ29uZmlnU2VydmljZS5jaGFubmVsJC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgIChjb25maWc6YW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29uZmlnICYmIGNvbmZpZy5hbGxvd1JlcGVhdE9yZGVycyAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGxvd1JlcGVhdE9yZGVycyA9IGNvbmZpZy5hbGxvd1JlcGVhdE9yZGVycztcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGxvd1JlcGVhdE9yZGVycyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlUHJpY2VzID0gY29uZmlnPy5oaWRlUHJpY2VzID8/IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlRGlzY291bnRzID0gY29uZmlnPy5oaWRlRGlzY291bnRzID8/IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlVGF4ZXMgPSBjb25maWc/LmhpZGVUYXhlcyA/PyBmYWxzZTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuX2NhcnRTZXJ2aWNlLnNob3dQcmljZSQuc3Vic2NyaWJlKChzaG93UHJpY2U6YW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY3JlZGl0QWNjb3VudFNob3dQcmljZXMgPSBzaG93UHJpY2U7XHJcbiAgICAgICAgfSk7XHJcblx0fVxyXG5cclxuXHRnZXRVcmxCYXNlKCl7XHJcblx0XHRyZXR1cm4gdGhpcy5fY29uc3RzLmdldFVybEJhc2UoKTtcclxuXHR9XHJcblx0YmFjaygpe1xyXG5cdFx0dGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJ2FjY291bnQvb3JkZXJzJyk7XHJcblx0fVxyXG5cdHRvRGF0ZShkYXRlOmFueSwgZm9ybWF0OmFueSl7XHJcblx0XHRyZXR1cm4gbW9tZW50KGRhdGUpLmZvcm1hdCghZm9ybWF0ICYmICdERC9NTS9ZWVlZLCBoOm1tOnNzIGEnIHx8IGZvcm1hdClcclxuXHR9XHJcblxyXG5cdHJlcGVhdE9yZGVyKG9yZGVyOmFueSk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmFsbG93UmVwZWF0T3JkZXJzICYmIG9yZGVyKSB7XHJcbiAgICAgICAgICAgIC8vdGhpcy5fY2FydFNlcnZpY2UuYWRkUmVwZWF0T3JkZXJUb0NhcnQodGhpcy5vcmRlci5pdGVtcyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHRtZWRpYVVybCA9ICgpID0+IHRoaXMuX2NvbnN0YW50cy5tZWRpYVVybCgpO1xyXG59XHJcbiIsIjxtYWluIGNsYXNzPVwicHktNVwiIGlkPVwib3JkZXJFY0NvbXBvbmVudFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG4gICAgICAgIEBpZihvcmRlciQgfCBhc3luYzsgYXMgb3JkZXIpe1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgQGlmKG9yZGVyKXtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS1hdXRvIGNvbC0xMiBmb250LWJyYW5kb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cInRpdDEgZnctYm9sZFwiPnt7ICgnb3JkZXInIHwgdHJhbnNsYXRlKSArICc6ICcgKyBvcmRlci5udW1iZXIgfX08L2g0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmKG9yZGVyPy5pbnZvaWNlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20gY29sLTEyIGZvbnQtYnJhbmRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIFtocmVmXT1cImdldFVybEJhc2UoKS5zbGljZSgwLCAtMSkgKyBvcmRlci5pbnZvaWNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgYnRuLWludm9pY2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZmlsZS1kb3dubG9hZCBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZG93bmxvYWQnIHwgdHJhbnNsYXRlIH19IHt7ICdpbnZvaWNlcycgfCB0cmFuc2xhdGUgfCB0aXRsZWNhc2UgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSAoY2xpY2spPVwiYmFjaygpXCIgY2xhc3M9XCJjb2wtYXV0byB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1kYXJrIGJ0dm9sdmVyIGJvcmRlclwiPnt7ICdiYWNrLXRvLW9yZGVycycgfCB0cmFuc2xhdGUgfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD1cIm9yZGVyc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB0LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiBjb2wtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInN0XCI+e3sgJ3BheW1lbnQtc3RhdGUnIHwgdHJhbnNsYXRlIH19OjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvcmRlci5wYXltZW50c1swXS5zdGF0ZSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yIGNvbC0xMiBmb250LWJyYW5kb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInN0XCI+e3sgJ3NoaXBtZW50LXN0YXRlJyB8IHRyYW5zbGF0ZSB9fTo8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3JkZXIuc2hpcG1lbnRzWzBdLnN0YXRlIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgY29sLTEyIGZvbnQtYnJhbmRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwic3RcIj57eyAncGF5bWVudC1tZXRob2QnIHwgdHJhbnNsYXRlIH19OjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvcmRlci5wYXltZW50c1swXT8ubWV0aG9kPy5uYW1lIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgY29sLTEyIGZvbnQtYnJhbmRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwic3RcIj57eyAnc2hpcG1lbnQtbWV0aG9kJyB8IHRyYW5zbGF0ZSB9fTo8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3JkZXIuc2hpcG1lbnRzWzBdLm1ldGhvZC5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQUNBIERFQkVSSUEgSVIgRUwgTElOSyBERSBTRUdVSU1JRU5UTyAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKG9yZGVyLnRyYWNraW5nKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgW2hyZWZdPVwib3JkZXIudHJhY2tpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1kYXJrIGJ0bkxvZ291dCBweC0zIHB5LTEgZm9udC1zaXplLTEwIHctYXV0byBidG4tc21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyIHNlZ3VpbWllbnRvPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiBjb2wtMTIgZm9udC1icmFuZG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJzdFwiPnt7ICdkYXRlJyB8IHRyYW5zbGF0ZSB9fTo8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdG9EYXRlKG9yZGVyLmNoZWNrb3V0Q29tcGxldGVkQXQsICdERC9NTS9ZWVlZJykgfCB0cmFuc2xhdGUgfX08YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRvRGF0ZShvcmRlci5jaGVja291dENvbXBsZXRlZEF0LCAnaDptbTpzcyBhJykgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihjcmVkaXRBY2NvdW50U2hvd1ByaWNlcyAhPT0gbnVsbCA/IGNyZWRpdEFjY291bnRTaG93UHJpY2VzIDogdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yIGNvbC0xMiBmb250LWJyYW5kb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJzdFwiPnt7ICd0b3RhbCcgfCB0cmFuc2xhdGUgfX06PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJmdy1ib2xkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAob3JkZXIudG90YWxzLnRvdGFsKSB8IGVjQ3VycmVuY3lTeW1ib2x9fVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIEBpZighaGlkZVByaWNlcyAmJiBhbGxvd1JlcGVhdE9yZGVycyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWVuZCBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG1iLTJcIiAoY2xpY2spPVwicmVwZWF0T3JkZXIob3JkZXIpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3JlcGVhdC1vcmRlcicgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXIgcHktMyBib3JkZXItdG9wIGJvcmRlci1ib3R0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmKG9yZGVyLml0ZW1zLmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMiBmb250LXNtIGZvbnQtYnJhbmRvbiBkLW5vbmUgZC1tZC1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAncHJvZHVjdCcgfCB0cmFuc2xhdGUgfCB1cHBlcmNhc2UgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgZm9udC1zbSBmb250LWJyYW5kb24gZC1ub25lIGQtbWQtYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2Rlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSB8IHVwcGVyY2FzZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihjaGFubmVsQ29uZmlnLmFwcGx5T3JkZXJMb3Qpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiY29sTG90c1wiIGNsYXNzPVwiY29sLTEgZm9udC1zbSBmb250LWJyYW5kb24gZC1ub25lIGQtbWQtYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0ge3sgJ2Rlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSB8IHVwcGVyY2FzZSB9fSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdsb3RzJyB8IHRyYW5zbGF0ZSB8IHVwcGVyY2FzZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGNyZWRpdEFjY291bnRTaG93UHJpY2VzICE9PSBudWxsID8gY3JlZGl0QWNjb3VudFNob3dQcmljZXMgOiB0cnVlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0yIHRleHQtY2VudGVyIGZvbnQtc20gZm9udC1icmFuZG9uIGQtbm9uZSBkLW1kLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAndW5pdC1wcmljZScgfCB0cmFuc2xhdGUgfCB1cHBlcmNhc2UgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMSB0ZXh0LWNlbnRlciBmb250LXNtIGZvbnQtYnJhbmRvbiBkLW5vbmUgZC1tZC1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAncXVhbnRpdHknIHwgdHJhbnNsYXRlIHwgdXBwZXJjYXNlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGNyZWRpdEFjY291bnRTaG93UHJpY2VzICE9PSBudWxsID8gY3JlZGl0QWNjb3VudFNob3dQcmljZXMgOiB0cnVlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0yIHRleHQtZW5kIGZvbnQtc20gZm9udC1icmFuZG9uIGQtbm9uZSBkLW1kLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAndG90YWwnIHwgdHJhbnNsYXRlIHwgdXBwZXJjYXNlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvcihpdGVtIG9mIG9yZGVyLml0ZW1zOyB0cmFjayAkaW5kZXg7IGxldCBpID0gJGluZGV4KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgY2FydC1pdGVtc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNSBjb2wtbWQtMiBweS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0/LmltYWdlcz8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJzbWMgbWF4d2lkdGggaW1nLWZsdWlkIHJvdW5kZWQtY3VzdG9tIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJtZWRpYVVybCgpICsgIGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXS5pbWFnZXNbMF1cIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoaXRlbS5wcm9kdWN0LnBpY3R1cmVzZGVmYXVsdCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cInNtYyBtYXh3aWR0aCBpbWctZmx1aWQgcm91bmRlZC1jdXN0b21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwibWVkaWFVcmwoKSArIGl0ZW0ucHJvZHVjdC5waWN0dXJlc2RlZmF1bHRbMF1cIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtbWQtNCBjb2wtNyBmbGV4LWNvbHVtbiBmbGV4LW1kLXJvdyBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImZvbnQtYnJhbmRvbiBkLWZsZXggdy0xMDAgbWItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5wcm9kdWN0Lm5hbWUgfX0gKENvZDp7eyBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0uY29kZSB9fSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihjaGFubmVsQ29uZmlnLmFwcGx5T3JkZXJMb3Qpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEgY29sLTEgZmxleC1jb2x1bW4gZmxleC1tZC1yb3cganVzdGlmeS1jb250ZW50LXN0YXJ0IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuU2VndWlyIG0tMCB0ZXh0LWNlbnRlclwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYnMtdG9nZ2xlXT1cIidjb2xsYXBzZSdcIiBbYXR0ci5kYXRhLWJzLXRhcmdldF09XCInI2NvbGxhcHNlRXhhbXBsZScraVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCIgW2F0dHIuYXJpYS1jb250cm9sc109XCInY29sbGFwc2VFeGFtcGxlJytpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cInt7ICdzZWUnIHwgdHJhbnNsYXRlIHwgdXBwZXJjYXNlIH19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyIGQtbWQtbm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtY2VudGVyIHctMTAwIG0tMFwiPiB7eyBpdGVtLnF1YW50aXR5IH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoY3JlZGl0QWNjb3VudFNob3dQcmljZXMgIT09IG51bGwgPyBjcmVkaXRBY2NvdW50U2hvd1ByaWNlcyA6IHRydWUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBmb250LXhsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1jZW50ZXIgdy0xMDAgbS0wXCI+IHt7IChpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0uc2FsZXByaWNlID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXS5zYWxlcHJpY2UgOiBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0ucHJpY2UpIHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjQ3VycmVuY3lTeW1ib2x9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihjcmVkaXRBY2NvdW50U2hvd1ByaWNlcyAhPT0gbnVsbCA/IGNyZWRpdEFjY291bnRTaG93UHJpY2VzIDogdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IGZvbnQteGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWNlbnRlciB3LTEwMCBtLTBcIj4ge3sgKChpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0uc2FsZXByaWNlID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXS5zYWxlcHJpY2UgOiBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0ucHJpY2UpICpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ucXVhbnRpdHkpIHwgZWNDdXJyZW5jeVN5bWJvbH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoY3JlZGl0QWNjb3VudFNob3dQcmljZXMgIT09IG51bGwgPyBjcmVkaXRBY2NvdW50U2hvd1ByaWNlcyA6IHRydWUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTIgZC1ub25lIGQtbWQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1jZW50ZXIgdy0xMDAgbS0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgKGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXS5zYWxlcHJpY2UgPyBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0uc2FsZXByaWNlIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0ucHJpY2UpIHwgZWNDdXJyZW5jeVN5bWJvbH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEgZC1ub25lIGQtbWQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWNlbnRlciB3LTEwMCBtLTBcIj4ge3sgaXRlbS5xdWFudGl0eSB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoY3JlZGl0QWNjb3VudFNob3dQcmljZXMgIT09IG51bGwgPyBjcmVkaXRBY2NvdW50U2hvd1ByaWNlcyA6IHRydWUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTIgZC1ub25lIGQtbWQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1lbmQgdy0xMDAgbS0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgKChpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0uc2FsZXByaWNlID8gaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdLnNhbGVwcmljZSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdLnByaWNlKSAqIGl0ZW0ucXVhbnRpdHkpIHwgZWNDdXJyZW5jeVN5bWJvbH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbGxhcHNlXCIgW2F0dHIuaWRdPVwiJ2NvbGxhcHNlRXhhbXBsZScraVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLXN0cmlwZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPiM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+RXN0YWRvPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPkNhbnRpZGFkPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPkZlY2hhIFNvbGljaXRhZGE8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+RmVjaGEgRXN0aW1hZGE8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+U2VkZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5Ob3RhPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlRvdGFsIExvdGU8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yKCBsb3Qgb2YgaXRlbS5vcmRlckl0ZW1Mb3Q7IHRyYWNrICRpbmRleCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwicm93XCI+e3tsb3QuaWR9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7bG90LmxvdF9zdGF0dXN9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7bG90LnF1YW50aXR5fX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyB0b0RhdGUobG90LmRhdGVfcmVxdWVzdCwgJ0REL01NL1lZWVknKSB8IHRyYW5zbGF0ZSB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGxvdC5kYXRlX2RlbGl2ZXIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9EYXRlKGxvdC5kYXRlX2RlbGl2ZXIsICdERC9NTS9ZWVlZJykgfCB0cmFuc2xhdGUgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+UGVuZGllbnRlPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7bG90LnNoaXBwaW5nX2FkZHJlc3NfbmFtZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tsb3Qubm90ZXN9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7bG90LnRvdGFsX2xvdCB8IGVjQ3VycmVuY3lTeW1ib2x9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC02XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoY3JlZGl0QWNjb3VudFNob3dQcmljZXMgIT09IG51bGwgPyBjcmVkaXRBY2NvdW50U2hvd1ByaWNlcyA6IHRydWUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHktNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgZm9udC1icmFuZG9uIGZvbnQtbWQgdGV4dC1ncmF5IGJvcmRlci1ib3R0b20gXCI+e3sgJ3RvdGFsLXByb2R1Y3RzJyB8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGUgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IGZvbnQtYnJhbmRvbiBmb250LW1kIHRleHQtZ3JheSBib3JkZXItYm90dG9tICB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgKG9yZGVyLnRvdGFscy5pdGVtcykgfCBlY0N1cnJlbmN5U3ltYm9sIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IGZvbnQtYnJhbmRvbiBmb250LW1kIHRleHQtZ3JheSBib3JkZXItYm90dG9tIFwiPnt7ICdzaGlwbWVudCcgfFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBmb250LWJyYW5kb24gZm9udC1tZCB0ZXh0LWdyYXkgYm9yZGVyLWJvdHRvbSAgdGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IChvcmRlci50b3RhbHMuc2hpcHBpbmcgfHwgJzAnKSB8IGVjQ3VycmVuY3lTeW1ib2wgfX1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoIWhpZGVEaXNjb3VudHMgJiYgb3JkZXIudG90YWxzLnByb21vdGlvbiAmJiBvcmRlci50b3RhbHMucHJvbW90aW9uICE9IDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IGZvbnQtYnJhbmRvbiBmb250LW1kIHRleHQtZ3JheSBib3JkZXItYm90dG9tIFwiPnt7ICdkaXNjb3VudCcgfFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKCFoaWRlRGlzY291bnRzICYmIG9yZGVyLnRvdGFscy5wcm9tb3Rpb24gJiYgb3JkZXIudG90YWxzLnByb21vdGlvbiAhPSAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBmb250LWJyYW5kb24gZm9udC1tZCB0ZXh0LWdyYXkgYm9yZGVyLWJvdHRvbSAgdGV4dC1lbmQgdGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IChvcmRlci50b3RhbHMucHJvbW90aW9uKSB8IGVjQ3VycmVuY3lTeW1ib2wgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoIWhpZGVUYXhlcyAmJiBvcmRlci50b3RhbHMudGF4ZXMgJiYgb3JkZXIudG90YWxzLnRheGVzICE9IDAgKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBmb250LWJyYW5kb24gZm9udC1tZCB0ZXh0LWdyYXkgYm9yZGVyLWJvdHRvbSBcIj57eyAndGF4ZXMnIHwgdHJhbnNsYXRlIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKCFoaWRlVGF4ZXMgJiYgb3JkZXIudG90YWxzLnRheGVzICYmIG9yZGVyLnRvdGFscy50YXhlcyAhPSAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBmb250LWJyYW5kb24gZm9udC1tZCB0ZXh0LWdyYXkgYm9yZGVyLWJvdHRvbSAgdGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IChvcmRlci50b3RhbHMudGF4ZXMpIHwgZWNDdXJyZW5jeVN5bWJvbCB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgZm9udC1icmFuZG9uIGZvbnQtbWRcIj57eyAndG90YWwnIHwgdHJhbnNsYXRlIHwgdXBwZXJjYXNlIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBmb250LWJyYW5kb24gZm9udC1tZCB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgKG9yZGVyLnRvdGFscy50b3RhbCkgfCBlY0N1cnJlbmN5U3ltYm9sIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBoLTUwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNT57eyAnbm8tb3JkZXJzJyB8IHRyYW5zbGF0ZSB9fTwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBoLTUwIHB5LTVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YXBwLWxvYWRpbmctZnVsbC1lYz48L2FwcC1sb2FkaW5nLWZ1bGwtZWM+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbjwvbWFpbj4iXX0=
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvYWNjb3VudC1lYy9vcmRlci1lYy9vcmRlci1lYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9hY2NvdW50LWVjL29yZGVyLWVjL29yZGVyLWVjLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQzs7O0FBZTVCLE1BQU0sT0FBTyxnQkFBZ0I7SUFFcEIsY0FBYyxHQUFrQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdEQsT0FBTyxHQUF3QixNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUMzRCxVQUFV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Z0I7NEZBQWhCLGdCQUFnQix3RUN4QjdCLGcybEJBMFJPLHlERDVRSSxlQUFlLHVGQUN2QixvQkFBb0IseURBQ3BCLHNCQUFzQiwyREFDdEIsU0FBUyx5Q0FDVCxhQUFhLDZDQUNiLGFBQWE7OzRGQUtILGdCQUFnQjtrQkFiNUIsU0FBUzsrQkFDQyxjQUFjLGNBQ1osSUFBSSxXQUNQLENBQUMsZUFBZTt3QkFDdkIsb0JBQW9CO3dCQUNwQixzQkFBc0I7d0JBQ3RCLFNBQVM7d0JBQ1QsYUFBYTt3QkFDYixhQUFhO3FCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDYXJ0U2VydmljZSwgQ2hhbm5lbFNlcnZpY2UsIE9yZGVyc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9lYy1zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgRWNDdXJyZW5jeVN5bWJvbFBpcGUgfSBmcm9tICcuLi8uLi8uLi9lYy1waXBlJztcclxuaW1wb3J0IHsgTG9hZGluZ0Z1bGxFY0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL3dpZGdldHMtZWMnO1xyXG5pbXBvcnQgeyBBc3luY1BpcGUsIFRpdGxlQ2FzZVBpcGUsIFVwcGVyQ2FzZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBBcGlDb25zdGFudHNTZXJ2aWNlLCBDb3JlQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2FwcC1vcmRlci1lYycsXHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRpbXBvcnRzOiBbVHJhbnNsYXRlTW9kdWxlLCBcclxuXHRcdFx0RWNDdXJyZW5jeVN5bWJvbFBpcGUsIFxyXG5cdFx0XHRMb2FkaW5nRnVsbEVjQ29tcG9uZW50LFxyXG5cdFx0XHRBc3luY1BpcGUsXHJcblx0XHRcdFRpdGxlQ2FzZVBpcGUsXHJcblx0XHRcdFVwcGVyQ2FzZVBpcGVcclxuXHRcdF0sXHJcblx0dGVtcGxhdGVVcmw6ICcuL29yZGVyLWVjLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybDogJy4vb3JkZXItZWMuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBPcmRlckVjQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0ICB7XHJcblxyXG5cdHByaXZhdGUgX29yZGVyc1NlcnZpY2U6IE9yZGVyc1NlcnZpY2UgPSBpbmplY3QoT3JkZXJzU2VydmljZSk7XHJcblx0cHJpdmF0ZSBfY29uc3RzOiBBcGlDb25zdGFudHNTZXJ2aWNlID0gaW5qZWN0KEFwaUNvbnN0YW50c1NlcnZpY2UpO1xyXG5cdHByaXZhdGUgX2NvbnN0YW50czogQ29yZUNvbnN0YW50c1NlcnZpY2UgPSBpbmplY3QoQ29yZUNvbnN0YW50c1NlcnZpY2UpO1xyXG5cdHByaXZhdGUgX3JvdXRlcjogUm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcblx0cHJpdmF0ZSBfY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlID0gaW5qZWN0KENhcnRTZXJ2aWNlKTtcclxuXHRwcml2YXRlIF9jaGFubmVsQ29uZmlnU2VydmljZTogQ2hhbm5lbFNlcnZpY2UgPSBpbmplY3QoQ2hhbm5lbFNlcnZpY2UpO1xyXG5cdHByaXZhdGUgX2FjdGl2ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xyXG5cclxuXHRwdWJsaWMgb3JkZXIkOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLl9vcmRlcnNTZXJ2aWNlLnNlbGVjdGVkT3JkZXIkO1xyXG5cdHB1YmxpYyBhbGxvd1JlcGVhdE9yZGVyczpib29sZWFuID0gZmFsc2U7XHJcblx0cHVibGljIGxvYWRpbmc6Ym9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGNyZWRpdEFjY291bnRTaG93UHJpY2VzOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XHJcblx0cHVibGljIGhpZGVQcmljZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBoaWRlRGlzY291bnRzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgaGlkZVRheGVzOiBib29sZWFuID0gZmFsc2U7XHJcblx0cHVibGljIGNoYW5uZWxDb25maWc6YW55ID0gdGhpcy5fb3JkZXJzU2VydmljZS5jaGFubmVsQ29uZmlnO1xyXG5cdHB1YmxpYyBudW1iZXJPcmRlcjphbnk7XHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cdFx0dGhpcy5fb3JkZXJzU2VydmljZS5zZWxlY3RlZE9yZGVyJC5zdWJzY3JpYmUoIHJlcyA9PiB7XHJcblx0XHRcdGlmKCFyZXMpe1xyXG5cdFx0XHRcdGNvbnN0IG51bWJlciA9ICB0aGlzLl9hY3RpdmVkUm91dGUuc25hcHNob3QucGFyYW1zW1wibnVtYmVyXCJdO1xyXG5cdFx0XHRcdHRoaXMuX29yZGVyc1NlcnZpY2UuZ2V0T3JkZXJCeU51bWJlcihudW1iZXIpXHJcblx0XHRcdH1cclxuXHRcdFx0Ly8gY29uc29sZS5sb2coJ2luc2lkZScpO1xyXG5cdFx0fSlcclxuXHRcdHRoaXMuX2NoYW5uZWxDb25maWdTZXJ2aWNlLmNoYW5uZWwkLnN1YnNjcmliZShcclxuICAgICAgICAgICAgKGNvbmZpZzphbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChjb25maWcgJiYgY29uZmlnLmFsbG93UmVwZWF0T3JkZXJzICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbG93UmVwZWF0T3JkZXJzID0gY29uZmlnLmFsbG93UmVwZWF0T3JkZXJzO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbG93UmVwZWF0T3JkZXJzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGVQcmljZXMgPSBjb25maWc/LmhpZGVQcmljZXMgPz8gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGVEaXNjb3VudHMgPSBjb25maWc/LmhpZGVEaXNjb3VudHMgPz8gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGVUYXhlcyA9IGNvbmZpZz8uaGlkZVRheGVzID8/IGZhbHNlO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5fY2FydFNlcnZpY2Uuc2hvd1ByaWNlJC5zdWJzY3JpYmUoKHNob3dQcmljZTphbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jcmVkaXRBY2NvdW50U2hvd1ByaWNlcyA9IHNob3dQcmljZTtcclxuICAgICAgICB9KTtcclxuXHR9XHJcblxyXG5cdGdldFVybEJhc2UoKXtcclxuXHRcdHJldHVybiB0aGlzLl9jb25zdHMuZ2V0VXJsQmFzZSgpO1xyXG5cdH1cclxuXHRiYWNrKCl7XHJcblx0XHR0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgnYWNjb3VudC9vcmRlcnMnKTtcclxuXHR9XHJcblx0dG9EYXRlKGRhdGU6YW55LCBmb3JtYXQ6YW55KXtcclxuXHRcdHJldHVybiBtb21lbnQoZGF0ZSkuZm9ybWF0KCFmb3JtYXQgJiYgJ0REL01NL1lZWVksIGg6bW06c3MgYScgfHwgZm9ybWF0KVxyXG5cdH1cclxuXHJcblx0cmVwZWF0T3JkZXIob3JkZXI6YW55KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuYWxsb3dSZXBlYXRPcmRlcnMgJiYgb3JkZXIpIHtcclxuICAgICAgICAgICAgLy90aGlzLl9jYXJ0U2VydmljZS5hZGRSZXBlYXRPcmRlclRvQ2FydCh0aGlzLm9yZGVyLml0ZW1zKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cdG1lZGlhVXJsID0gKCkgPT4gdGhpcy5fY29uc3RhbnRzLm1lZGlhVXJsKCk7XHJcbn1cclxuIiwiPG1haW4gY2xhc3M9XCJweS01XCIgaWQ9XCJvcmRlckVjQ29tcG9uZW50XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcbiAgICAgICAgQGlmKG9yZGVyJCB8IGFzeW5jOyBhcyBvcmRlcil7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwXCI+XHJcbiAgICAgICAgICAgICAgICBAaWYob3JkZXIpe1xyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLWF1dG8gY29sLTEyIGZvbnQtYnJhbmRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwidGl0MSBmdy1ib2xkXCI+e3sgKCdvcmRlcicgfCB0cmFuc2xhdGUpICsgJzogJyArIG9yZGVyLm51bWJlciB9fTwvaDQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYob3JkZXI/Lmludm9pY2Upe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbSBjb2wtMTIgZm9udC1icmFuZG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgW2hyZWZdPVwiZ2V0VXJsQmFzZSgpLnNsaWNlKDAsIC0xKSArIG9yZGVyLmludm9pY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBidG4taW52b2ljZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1maWxlLWRvd25sb2FkIG1lLTFcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdkb3dubG9hZCcgfCB0cmFuc2xhdGUgfX0ge3sgJ2ludm9pY2VzJyB8IHRyYW5zbGF0ZSB8IHRpdGxlY2FzZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJiYWNrKClcIiBjbGFzcz1cImNvbC1hdXRvIHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLWRhcmsgYnR2b2x2ZXIgYm9yZGVyXCI+e3sgJ2JhY2stdG8tb3JkZXJzJyB8IHRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGlkPVwib3JkZXJzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yIGNvbC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwic3RcIj57eyAncGF5bWVudC1zdGF0ZScgfCB0cmFuc2xhdGUgfX06PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9yZGVyLnBheW1lbnRzWzBdLnN0YXRlIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgY29sLTEyIGZvbnQtYnJhbmRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwic3RcIj57eyAnc2hpcG1lbnQtc3RhdGUnIHwgdHJhbnNsYXRlIH19OjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvcmRlci5zaGlwbWVudHNbMF0uc3RhdGUgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiBjb2wtMTIgZm9udC1icmFuZG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJzdFwiPnt7ICdwYXltZW50LW1ldGhvZCcgfCB0cmFuc2xhdGUgfX06PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9yZGVyLnBheW1lbnRzWzBdPy5tZXRob2Q/Lm5hbWUgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiBjb2wtMTIgZm9udC1icmFuZG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJzdFwiPnt7ICdzaGlwbWVudC1tZXRob2QnIHwgdHJhbnNsYXRlIH19OjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvcmRlci5zaGlwbWVudHNbMF0ubWV0aG9kLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBBQ0EgREVCRVJJQSBJUiBFTCBMSU5LIERFIFNFR1VJTUlFTlRPIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYob3JkZXIudHJhY2tpbmcpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBbaHJlZl09XCJvcmRlci50cmFja2luZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLWRhcmsgYnRuTG9nb3V0IHB4LTMgcHktMSBmb250LXNpemUtMTAgdy1hdXRvIGJ0bi1zbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXIgc2VndWltaWVudG88L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yIGNvbC0xMiBmb250LWJyYW5kb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInN0XCI+e3sgJ2RhdGUnIHwgdHJhbnNsYXRlIH19OjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0b0RhdGUob3JkZXIuY2hlY2tvdXRDb21wbGV0ZWRBdCwgJ0REL01NL1lZWVknKSB8IHRyYW5zbGF0ZSB9fTxicj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdG9EYXRlKG9yZGVyLmNoZWNrb3V0Q29tcGxldGVkQXQsICdoOm1tOnNzIGEnKSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGNyZWRpdEFjY291bnRTaG93UHJpY2VzICE9PSBudWxsID8gY3JlZGl0QWNjb3VudFNob3dQcmljZXMgOiB0cnVlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgY29sLTEyIGZvbnQtYnJhbmRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInN0XCI+e3sgJ3RvdGFsJyB8IHRyYW5zbGF0ZSB9fTo8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cImZ3LWJvbGRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IChvcmRlci50b3RhbHMudG90YWwpIHwgZWNDdXJyZW5jeVN5bWJvbH19XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgQGlmKCFoaWRlUHJpY2VzICYmIGFsbG93UmVwZWF0T3JkZXJzKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZW5kIG10LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbWItMlwiIChjbGljayk9XCJyZXBlYXRPcmRlcihvcmRlcilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAncmVwZWF0LW9yZGVyJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lciBweS0zIGJvcmRlci10b3AgYm9yZGVyLWJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYob3JkZXIuaXRlbXMubGVuZ3RoKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0yIGZvbnQtc20gZm9udC1icmFuZG9uIGQtbm9uZSBkLW1kLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwcm9kdWN0JyB8IHRyYW5zbGF0ZSB8IHVwcGVyY2FzZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBmb250LXNtIGZvbnQtYnJhbmRvbiBkLW5vbmUgZC1tZC1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlIHwgdXBwZXJjYXNlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGNoYW5uZWxDb25maWcuYXBwbHlPcmRlckxvdCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJjb2xMb3RzXCIgY2xhc3M9XCJjb2wtMSBmb250LXNtIGZvbnQtYnJhbmRvbiBkLW5vbmUgZC1tZC1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSB7eyAnZGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlIHwgdXBwZXJjYXNlIH19IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2xvdHMnIHwgdHJhbnNsYXRlIHwgdXBwZXJjYXNlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoY3JlZGl0QWNjb3VudFNob3dQcmljZXMgIT09IG51bGwgPyBjcmVkaXRBY2NvdW50U2hvd1ByaWNlcyA6IHRydWUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTIgdGV4dC1jZW50ZXIgZm9udC1zbSBmb250LWJyYW5kb24gZC1ub25lIGQtbWQtYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICd1bml0LXByaWNlJyB8IHRyYW5zbGF0ZSB8IHVwcGVyY2FzZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xIHRleHQtY2VudGVyIGZvbnQtc20gZm9udC1icmFuZG9uIGQtbm9uZSBkLW1kLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdxdWFudGl0eScgfCB0cmFuc2xhdGUgfCB1cHBlcmNhc2UgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoY3JlZGl0QWNjb3VudFNob3dQcmljZXMgIT09IG51bGwgPyBjcmVkaXRBY2NvdW50U2hvd1ByaWNlcyA6IHRydWUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTIgdGV4dC1lbmQgZm9udC1zbSBmb250LWJyYW5kb24gZC1ub25lIGQtbWQtYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICd0b3RhbCcgfCB0cmFuc2xhdGUgfCB1cHBlcmNhc2UgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yKGl0ZW0gb2Ygb3JkZXIuaXRlbXM7IHRyYWNrICRpbmRleDsgbGV0IGkgPSAkaW5kZXgpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBjYXJ0LWl0ZW1zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC01IGNvbC1tZC0yIHB5LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uaW1hZ2VzPy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cInNtYyBtYXh3aWR0aCBpbWctZmx1aWQgcm91bmRlZC1jdXN0b20gXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIm1lZGlhVXJsKCkgKyAgaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdLmltYWdlc1swXVwiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihpdGVtLnByb2R1Y3QucGljdHVyZXNkZWZhdWx0KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwic21jIG1heHdpZHRoIGltZy1mbHVpZCByb3VuZGVkLWN1c3RvbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJtZWRpYVVybCgpICsgaXRlbS5wcm9kdWN0LnBpY3R1cmVzZGVmYXVsdFswXVwiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1tZC00IGNvbC03IGZsZXgtY29sdW1uIGZsZXgtbWQtcm93IGp1c3RpZnktY29udGVudC1zdGFydCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZm9udC1icmFuZG9uIGQtZmxleCB3LTEwMCBtYi0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnByb2R1Y3QubmFtZSB9fSAoQ29kOnt7IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXS5jb2RlIH19KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGNoYW5uZWxDb25maWcuYXBwbHlPcmRlckxvdCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMSBjb2wtMSBmbGV4LWNvbHVtbiBmbGV4LW1kLXJvdyBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG5TZWd1aXIgbS0wIHRleHQtY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1icy10b2dnbGVdPVwiJ2NvbGxhcHNlJ1wiIFthdHRyLmRhdGEtYnMtdGFyZ2V0XT1cIicjY29sbGFwc2VFeGFtcGxlJytpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIiBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cIidjb2xsYXBzZUV4YW1wbGUnK2lcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwie3sgJ3NlZScgfCB0cmFuc2xhdGUgfCB1cHBlcmNhc2UgfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXIgZC1tZC1ub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1jZW50ZXIgdy0xMDAgbS0wXCI+IHt7IGl0ZW0ucXVhbnRpdHkgfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihjcmVkaXRBY2NvdW50U2hvd1ByaWNlcyAhPT0gbnVsbCA/IGNyZWRpdEFjY291bnRTaG93UHJpY2VzIDogdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IGZvbnQteGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWNlbnRlciB3LTEwMCBtLTBcIj4ge3sgKGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXS5zYWxlcHJpY2UgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdLnNhbGVwcmljZSA6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXS5wcmljZSkgfFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNDdXJyZW5jeVN5bWJvbH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGNyZWRpdEFjY291bnRTaG93UHJpY2VzICE9PSBudWxsID8gY3JlZGl0QWNjb3VudFNob3dQcmljZXMgOiB0cnVlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgZm9udC14bFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtY2VudGVyIHctMTAwIG0tMFwiPiB7eyAoKGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXS5zYWxlcHJpY2UgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdLnNhbGVwcmljZSA6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXS5wcmljZSkgKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5xdWFudGl0eSkgfCBlY0N1cnJlbmN5U3ltYm9sfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihjcmVkaXRBY2NvdW50U2hvd1ByaWNlcyAhPT0gbnVsbCA/IGNyZWRpdEFjY291bnRTaG93UHJpY2VzIDogdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMiBkLW5vbmUgZC1tZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWNlbnRlciB3LTEwMCBtLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAoaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdLnNhbGVwcmljZSA/IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXS5zYWxlcHJpY2UgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXS5wcmljZSkgfCBlY0N1cnJlbmN5U3ltYm9sfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMSBkLW5vbmUgZC1tZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtY2VudGVyIHctMTAwIG0tMFwiPiB7eyBpdGVtLnF1YW50aXR5IH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihjcmVkaXRBY2NvdW50U2hvd1ByaWNlcyAhPT0gbnVsbCA/IGNyZWRpdEFjY291bnRTaG93UHJpY2VzIDogdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMiBkLW5vbmUgZC1tZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWVuZCB3LTEwMCBtLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAoKGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXS5zYWxlcHJpY2UgPyBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0uc2FsZXByaWNlIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0ucHJpY2UpICogaXRlbS5xdWFudGl0eSkgfCBlY0N1cnJlbmN5U3ltYm9sfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sbGFwc2VcIiBbYXR0ci5pZF09XCInY29sbGFwc2VFeGFtcGxlJytpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtc3RyaXBlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+IzwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5Fc3RhZG88L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+Q2FudGlkYWQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+RmVjaGEgU29saWNpdGFkYTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5GZWNoYSBFc3RpbWFkYTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5TZWRlPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPk5vdGE8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+VG90YWwgTG90ZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IoIGxvdCBvZiBpdGVtLm9yZGVySXRlbUxvdDsgdHJhY2sgJGluZGV4KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJyb3dcIj57e2xvdC5pZH19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tsb3QubG90X3N0YXR1c319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tsb3QucXVhbnRpdHl9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IHRvRGF0ZShsb3QuZGF0ZV9yZXF1ZXN0LCAnREQvTU0vWVlZWScpIHwgdHJhbnNsYXRlIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYobG90LmRhdGVfZGVsaXZlcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b0RhdGUobG90LmRhdGVfZGVsaXZlciwgJ0REL01NL1lZWVknKSB8IHRyYW5zbGF0ZSB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5QZW5kaWVudGU8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tsb3Quc2hpcHBpbmdfYWRkcmVzc19uYW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2xvdC5ub3Rlc319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tsb3QudG90YWxfbG90IHwgZWNDdXJyZW5jeVN5bWJvbH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTZcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihjcmVkaXRBY2NvdW50U2hvd1ByaWNlcyAhPT0gbnVsbCA/IGNyZWRpdEFjY291bnRTaG93UHJpY2VzIDogdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBweS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBmb250LWJyYW5kb24gZm9udC1tZCB0ZXh0LWdyYXkgYm9yZGVyLWJvdHRvbSBcIj57eyAndG90YWwtcHJvZHVjdHMnIHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgZm9udC1icmFuZG9uIGZvbnQtbWQgdGV4dC1ncmF5IGJvcmRlci1ib3R0b20gIHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAob3JkZXIudG90YWxzLml0ZW1zKSB8IGVjQ3VycmVuY3lTeW1ib2wgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgZm9udC1icmFuZG9uIGZvbnQtbWQgdGV4dC1ncmF5IGJvcmRlci1ib3R0b20gXCI+e3sgJ3NoaXBtZW50JyB8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGUgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IGZvbnQtYnJhbmRvbiBmb250LW1kIHRleHQtZ3JheSBib3JkZXItYm90dG9tICB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgKG9yZGVyLnRvdGFscy5zaGlwcGluZyB8fCAnMCcpIHwgZWNDdXJyZW5jeVN5bWJvbCB9fVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZighaGlkZURpc2NvdW50cyAmJiBvcmRlci50b3RhbHMucHJvbW90aW9uICYmIG9yZGVyLnRvdGFscy5wcm9tb3Rpb24gIT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgZm9udC1icmFuZG9uIGZvbnQtbWQgdGV4dC1ncmF5IGJvcmRlci1ib3R0b20gXCI+e3sgJ2Rpc2NvdW50JyB8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGUgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoIWhpZGVEaXNjb3VudHMgJiYgb3JkZXIudG90YWxzLnByb21vdGlvbiAmJiBvcmRlci50b3RhbHMucHJvbW90aW9uICE9IDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IGZvbnQtYnJhbmRvbiBmb250LW1kIHRleHQtZ3JheSBib3JkZXItYm90dG9tICB0ZXh0LWVuZCB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgKG9yZGVyLnRvdGFscy5wcm9tb3Rpb24pIHwgZWNDdXJyZW5jeVN5bWJvbCB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZighaGlkZVRheGVzICYmIG9yZGVyLnRvdGFscy50YXhlcyAmJiBvcmRlci50b3RhbHMudGF4ZXMgIT0gMCApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IGZvbnQtYnJhbmRvbiBmb250LW1kIHRleHQtZ3JheSBib3JkZXItYm90dG9tIFwiPnt7ICd0YXhlcycgfCB0cmFuc2xhdGUgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoIWhpZGVUYXhlcyAmJiBvcmRlci50b3RhbHMudGF4ZXMgJiYgb3JkZXIudG90YWxzLnRheGVzICE9IDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IGZvbnQtYnJhbmRvbiBmb250LW1kIHRleHQtZ3JheSBib3JkZXItYm90dG9tICB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgKG9yZGVyLnRvdGFscy50YXhlcykgfCBlY0N1cnJlbmN5U3ltYm9sIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBmb250LWJyYW5kb24gZm9udC1tZFwiPnt7ICd0b3RhbCcgfCB0cmFuc2xhdGUgfCB1cHBlcmNhc2UgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IGZvbnQtYnJhbmRvbiBmb250LW1kIHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAob3JkZXIudG90YWxzLnRvdGFsKSB8IGVjQ3VycmVuY3lTeW1ib2wgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIGgtNTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg1Pnt7ICduby1vcmRlcnMnIHwgdHJhbnNsYXRlIH19PC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIGgtNTAgcHktNVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtbG9hZGluZy1mdWxsLWVjPjwvYXBwLWxvYWRpbmctZnVsbC1lYz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICA8L2Rpdj5cclxuPC9tYWluPiJdfQ==
|
|
@@ -55,7 +55,7 @@ export class RegisterFormEcComponent {
|
|
|
55
55
|
register(event) {
|
|
56
56
|
event.preventDefault();
|
|
57
57
|
this.loading = true;
|
|
58
|
-
console.log('registerForm', this.registerForm);
|
|
58
|
+
// console.log('registerForm', this.registerForm);
|
|
59
59
|
if (!this.registerForm.valid) {
|
|
60
60
|
this._toastService.show('fields-incomplete');
|
|
61
61
|
this.loading = false;
|
|
@@ -107,4 +107,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
107
107
|
}], ready: [{
|
|
108
108
|
type: Output
|
|
109
109
|
}] } });
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItZm9ybS1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9hdXRoLWVjL3JlZ2lzdGVyLWZvcm0tZWMvcmVnaXN0ZXItZm9ybS1lYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9hdXRoLWVjL3JlZ2lzdGVyLWZvcm0tZWMvcmVnaXN0ZXItZm9ybS1lYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFhLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQVN0QyxNQUFNLE9BQU8sdUJBQXVCO0lBQzNCLFlBQVksR0FBZ0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hELGFBQWEsR0FBaUIsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ25ELE9BQU8sR0FBVyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsaUJBQWlCLEdBQXFCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQy9ELFlBQVksR0FBZ0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3hEOztNQUVFO0lBQ08sUUFBUSxHQUFZLElBQUksQ0FBQztJQUNsQzs7T0FFRztJQUNPLEtBQUssR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ3JDOztPQUVHO0lBQ0ksWUFBWSxHQUFjLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1FBQ3hELFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1FBQ3BDLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1FBQ25DLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELGFBQWEsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1FBQ3hDLGNBQWMsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1FBQ3pDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRztRQUNiLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNoQixLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFlBQVksQ0FBQztLQUNwQyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7SUFFaEQsc0JBQXNCLENBQUMsS0FBZ0I7UUFDdEMsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLEtBQUssS0FBSyxLQUFLLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsS0FBSztZQUM5RSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBQ0Q7O09BRUc7SUFDSSxPQUFPLEdBQVksS0FBSyxDQUFDO0lBQ2hDOztPQUVHO0lBQ0ksT0FBTyxHQUFZLEtBQUssQ0FBQztJQUVoQztJQUVBLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsUUFBUSxDQUFDLEtBQVk7UUFDcEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFBO1lBQ3BCLE9BQU87UUFDUixDQUFDO1FBQUEsQ0FBQztRQUNGLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3JGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDL0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUE7WUFDcEIsT0FBTztRQUNSLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDN0IsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3JFLEdBQUcsQ0FBQyxFQUFFO2dCQUNMLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFBO2dCQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQTtnQkFDdEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUU7b0JBQzNDLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxTQUFTO29CQUM1QyxRQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUTtvQkFDMUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUs7aUJBQ3BDLENBQUMsQ0FBQTtnQkFDRixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQTtnQkFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7Z0JBQ3JCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtnQkFDbkMsQ0FBQztZQUNGLENBQUMsRUFDRCxHQUFHLENBQUMsRUFBRTtnQkFDTCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQTtnQkFDcEIsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO29CQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFBO2dCQUNwRCxDQUFDO3FCQUFNLENBQUM7b0JBQ1AsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtnQkFDakQsQ0FBQztZQUNGLENBQUMsQ0FDRCxDQUFBO1FBQ0YsQ0FBQzthQUFNLENBQUM7WUFDUCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQTtZQUN2QyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQTtRQUNyQixDQUFDO0lBQ0YsQ0FBQzt3R0E1RlcsdUJBQXVCOzRGQUF2Qix1QkFBdUIsK0lDZHBDLDgwRkF1REEseUREN0NXLG1CQUFtQixzckRBQUUseUJBQXlCOzs0RkFJNUMsdUJBQXVCO2tCQVBuQyxTQUFTOytCQUNDLHNCQUFzQixjQUNwQixJQUFJLFdBQ1AsQ0FBQyxtQkFBbUIsRUFBRSx5QkFBeUIsQ0FBQzt3REFhaEQsUUFBUTtzQkFBaEIsS0FBSztnQkFJSSxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlLCBBdXRoU2VydmljZSwgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZWMtc2VydmljZXMnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBMb2FkaW5nU2VjdGlvbkVjQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL3dpZGdldHMtZWMvbG9hZGluZ1wiO1xyXG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdhcHAtcmVnaXN0ZXItZm9ybS1lYycsXHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRpbXBvcnRzOiBbUmVhY3RpdmVGb3Jtc01vZHVsZSwgTG9hZGluZ1NlY3Rpb25FY0NvbXBvbmVudF0sXHJcblx0dGVtcGxhdGVVcmw6ICcuL3JlZ2lzdGVyLWZvcm0tZWMuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWycuL3JlZ2lzdGVyLWZvcm0tZWMuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVnaXN0ZXJGb3JtRWNDb21wb25lbnQge1xyXG5cdHByaXZhdGUgX2F1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XHJcblx0cHJpdmF0ZSBfdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcclxuXHRwcml2YXRlIF9yb3V0ZXI6IFJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG5cdHByaXZhdGUgX2FuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2UgPSBpbmplY3QoQW5hbHl0aWNzU2VydmljZSk7XHJcblx0cHJpdmF0ZSBfZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcclxuXHQvKipcclxuXHQqIEluZGljYSBzaSBkZWJlIHJlZGlyZWNjaW9uYXIgbyBzZSBxdWVkYSBlbiBsYSBtaXNtYSBwYW50YWxsYVxyXG5cdCovXHJcblx0QElucHV0KCkgcmVkaXJlY3Q6IGJvb2xlYW4gPSB0cnVlO1xyXG5cdC8qKlxyXG5cdCAqIFBhcmEgcXVlIHNlIHB1ZWRlIGNhcHR1cmFyIGVsIGVzdGFkbyBkZSBsYSBwZXRpY2nDs24gZGUgcmVnaXN0cm8uXHJcblx0ICovXHJcblx0QE91dHB1dCgpIHJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdC8qKlxyXG5cdCAqIENvbnRpZW5lIGVsIGZvcm11bGFyaW8gZGUgcmVnaXN0cm8uXHJcblx0ICovXHJcblx0cHVibGljIHJlZ2lzdGVyRm9ybTogRm9ybUdyb3VwID0gdGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG5cdFx0Zmlyc3ROYW1lOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG5cdFx0bGFzdE5hbWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcblx0XHRlbWFpbDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF1dLFxyXG5cdFx0cGxhaW5QYXNzd29yZDogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuXHRcdHBsYWluUGFzc3dvcmQyOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG5cdFx0cGhvbmU6IFsnJywgXSxcclxuXHRcdG5ld3NsZXR0ZXI6IFsnJ10sXHJcblx0XHR0ZXJtczogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkVHJ1ZV0sXHJcblx0fSwgeyB2YWxpZGF0b3JzOiB0aGlzLnBhc3N3b3JkTWF0Y2hWYWxpZGF0b3IgfSk7XHJcblxyXG5cdHBhc3N3b3JkTWF0Y2hWYWxpZGF0b3IoZ3JvdXA6IEZvcm1Hcm91cCkge1xyXG5cdFx0cmV0dXJuIGdyb3VwLmdldCgncGxhaW5QYXNzd29yZCcpPy52YWx1ZSA9PT0gZ3JvdXAuZ2V0KCdwbGFpblBhc3N3b3JkMicpPy52YWx1ZVxyXG5cdFx0XHQ/IG51bGwgOiB7IG1pc21hdGNoOiB0cnVlIH07XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFBhcmEgaW5kaWNhciBxdWUgc2UgZXN0YSBwcm9jZXNhbmRvIGxhIHNvbGljaXR1ZCBkZSByZWdpc3Ryby5cclxuXHQgKi9cclxuXHRwdWJsaWMgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdC8qKlxyXG5cdCAqIFBhcmEgaW5kaWNhciBlbCBleGl0byBkZSBsYSBzb2xpY2l0dWQgZGUgcmVnaXN0cm8uXHJcblx0ICovXHJcblx0cHVibGljIHN1Y2Nlc3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0Y29uc3RydWN0b3IoKSB7XHJcblxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBSZWdpc3RyYSB1biB1c3VhcmlvLlxyXG5cdCAqIEBwYXJhbSBldmVudCBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRyZWdpc3RlcihldmVudDogRXZlbnQpIHtcclxuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHR0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cdFx0Y29uc29sZS5sb2coJ3JlZ2lzdGVyRm9ybScsIHRoaXMucmVnaXN0ZXJGb3JtKTtcclxuXHRcdGlmICghdGhpcy5yZWdpc3RlckZvcm0udmFsaWQpIHtcclxuXHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ2ZpZWxkcy1pbmNvbXBsZXRlJyk7XHJcblx0XHRcdHRoaXMubG9hZGluZyA9IGZhbHNlXHJcblx0XHRcdHJldHVybjtcclxuXHRcdH07XHJcblx0XHRpZiAodGhpcy5yZWdpc3RlckZvcm0udmFsdWUucGxhaW5QYXNzd29yZCAhPSB0aGlzLnJlZ2lzdGVyRm9ybS52YWx1ZS5wbGFpblBhc3N3b3JkMikge1xyXG5cdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnbWlzbWF0Y2hlZC1wYXNzd29yZCcpO1xyXG5cdFx0XHR0aGlzLmxvYWRpbmcgPSBmYWxzZVxyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRpZiAodGhpcy5yZWdpc3RlckZvcm0udmFsaWQpIHtcclxuXHRcdFx0Zmlyc3RWYWx1ZUZyb20odGhpcy5fYXV0aFNlcnZpY2Uuc2luZ1VwKHRoaXMucmVnaXN0ZXJGb3JtLnZhbHVlKSkudGhlbihcclxuXHRcdFx0XHRyZXMgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5sb2FkaW5nID0gZmFsc2VcclxuXHRcdFx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdyZWdpc3Rlci1vaycpXHJcblx0XHRcdFx0XHR0aGlzLl9hbmFseXRpY3NTZXJ2aWNlLmNhbGxFdmVudCgnc2lnbl91cCcsIHtcclxuXHRcdFx0XHRcdFx0Zmlyc3ROYW1lOiB0aGlzLnJlZ2lzdGVyRm9ybS52YWx1ZS5maXJzdE5hbWUsXHJcblx0XHRcdFx0XHRcdGxhc3ROYW1lOiB0aGlzLnJlZ2lzdGVyRm9ybS52YWx1ZS5sYXN0TmFtZSxcclxuXHRcdFx0XHRcdFx0ZW1haWw6IHRoaXMucmVnaXN0ZXJGb3JtLnZhbHVlLmVtYWlsXHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0dGhpcy5zdWNjZXNzID0gdHJ1ZVxyXG5cdFx0XHRcdFx0dGhpcy5yZWFkeS5lbWl0KHRydWUpXHJcblx0XHRcdFx0XHRpZiAodGhpcy5yZWRpcmVjdCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgnaG9tZScpXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRlcnIgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5sb2FkaW5nID0gZmFsc2VcclxuXHRcdFx0XHRcdGlmIChlcnIuc3RhdHVzID09IDQwMCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnZW1haWwtYWxyZWFkeS1yZWdpc3RlcmVkJylcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5lcnJvcignZW1haWwtcmVnaXN0ZXItZXJyb3InKVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0KVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ2ludmFsaWQtZm9ybScpXHJcblx0XHRcdHRoaXMubG9hZGluZyA9IGZhbHNlXHJcblx0XHR9XHJcblx0fVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidy0xMDAgcGwtbWQtNSBwb3NpdGlvbi1yZWxhdGl2ZVwiIGlkPVwicmVnaXN0ZXJcIj5cclxuICA8ZGl2IGNsYXNzPVwicHktMlwiPlxyXG4gICAgICA8aDU+Q1JFQVIgQ1VFTlRBPC9oNT5cclxuICA8L2Rpdj5cclxuICA8Zm9ybSBpZD1cInJlZ2lzdHJvXCIgW2Zvcm1Hcm91cF09XCJyZWdpc3RlckZvcm1cIiAoc3VibWl0KT1cInJlZ2lzdGVyKCRldmVudClcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5OT01CUkU8L2xhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImZpcnN0TmFtZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHJvdW5kZWQtMFwiIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJOb21icmVcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICA8bGFiZWwgZm9yPVwiXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+QVBFTExJRE88L2xhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImxhc3ROYW1lXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcm91bmRlZC0wXCIgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIkFwZWxsaWRvXCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGZvcj1cIlwiIGNsYXNzPVwiXCI+Q09SUkVPIEVMRUNUUk9OSUNPPC9sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiIGVtYWlsIHJlcXVpcmVkIGNsYXNzPVwiZm9ybS1jb250cm9sIHJvdW5kZWQtMFwiIHR5cGU9XCJlbWFpbFwiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJDb3JyZW8gZWxlY3Ryw7NuaWNvXCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGZvcj1cIlwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkNPTlRSQVNFw5FBPC9sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJwbGFpblBhc3N3b3JkXCIgcmVxdWlyZWQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcm91bmRlZC0wXCIgdHlwZT1cInBhc3N3b3JkXCJcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkNvbnRyYXNlw7FhXCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGZvcj1cIlwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlJFUEVUSVIgQ09OVFJBU0XDkUE8L2xhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cInBsYWluUGFzc3dvcmQyXCIgcmVxdWlyZWQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcm91bmRlZC0wXCIgdHlwZT1cInBhc3N3b3JkXCJcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlJlcGV0aXIgY29udHJhc2XDsWFcIj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wgZC1mbGV4IGZsZXgtcm93IGZvcm0tY2hlY2sgY3VzdG9tLWNoZWNrYm94IG1yLXNtLTIgbXQtNCBtYi0yXCI+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgZm9ybUNvbnRyb2xOYW1lPVwidGVybXNcIiByZXF1aXJlZCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWlucHV0IGZvcm0tY2hlY2staW5wdXRcIiBuYW1lPVwiQ29sb3IyXCJcclxuICAgICAgICAgICAgICBpZD1cIkNvbG9yMlwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtbGFiZWwgZmYtdWJ1bnR1LWxpZ2h0IGZvbnQtc20gZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cIkNvbG9yMlwiPiBIZVxyXG4gICAgICAgICAgICAgIGxlw61kbyB5IGFjZXB0byBsYXMgcG9sw610aWNhcyBkZSBwcml2YWNpZGFkIHkgbG9zIHTDqXJtaW5vcyB5XHJcbiAgICAgICAgICAgICAgY29uZGljaW9uZXM8L2xhYmVsPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tY29udHJvbCBkLWZsZXggZmxleC1yb3cgZm9ybS1jaGVjayBjdXN0b20tY2hlY2tib3ggbXItc20tMiBtYi00XCI+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgZm9ybUNvbnRyb2xOYW1lPVwibmV3c2xldHRlclwiIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtaW5wdXQgZm9ybS1jaGVjay1pbnB1dFwiIG5hbWU9XCJDb2xvcjNcIiBpZD1cIkNvbG9yM1wiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtbGFiZWwgZm9ybS1jaGVjay1sYWJlbCBmZi11YnVudHUtbGlnaHQgZm9udC1zbVwiIGZvcj1cIkNvbG9yM1wiPlxyXG4gICAgICAgICAgICAgIFN1c2NyaXBjacOzbiBhbCBOZXdzbGV0dGVyPC9sYWJlbD5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwicmVnaXN0ZXJGb3JtLmludmFsaWRcIiB0eXBlPVwic3VibWl0XCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcHgtNSBweS0yIGgtZml0XCI+Q1JFQVI8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICA8L2Zvcm0+XHJcbiAgQGlmKGxvYWRpbmcpe1xyXG4gICAgPGFwcC1sb2FkaW5nLXNlY3Rpb24tZWMgLz5cclxuICB9XHJcbiAgXHJcbjwvZGl2PlxyXG4iXX0=
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItZm9ybS1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9hdXRoLWVjL3JlZ2lzdGVyLWZvcm0tZWMvcmVnaXN0ZXItZm9ybS1lYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9hdXRoLWVjL3JlZ2lzdGVyLWZvcm0tZWMvcmVnaXN0ZXItZm9ybS1lYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFhLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQVN0QyxNQUFNLE9BQU8sdUJBQXVCO0lBQzNCLFlBQVksR0FBZ0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hELGFBQWEsR0FBaUIsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ25ELE9BQU8sR0FBVyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsaUJBQWlCLEdBQXFCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQy9ELFlBQVksR0FBZ0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3hEOztNQUVFO0lBQ08sUUFBUSxHQUFZLElBQUksQ0FBQztJQUNsQzs7T0FFRztJQUNPLEtBQUssR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ3JDOztPQUVHO0lBQ0ksWUFBWSxHQUFjLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1FBQ3hELFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1FBQ3BDLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1FBQ25DLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELGFBQWEsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1FBQ3hDLGNBQWMsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1FBQ3pDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRztRQUNiLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNoQixLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFlBQVksQ0FBQztLQUNwQyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7SUFFaEQsc0JBQXNCLENBQUMsS0FBZ0I7UUFDdEMsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLEtBQUssS0FBSyxLQUFLLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsS0FBSztZQUM5RSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBQ0Q7O09BRUc7SUFDSSxPQUFPLEdBQVksS0FBSyxDQUFDO0lBQ2hDOztPQUVHO0lBQ0ksT0FBTyxHQUFZLEtBQUssQ0FBQztJQUVoQztJQUVBLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsUUFBUSxDQUFDLEtBQVk7UUFDcEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLGtEQUFrRDtRQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFBO1lBQ3BCLE9BQU87UUFDUixDQUFDO1FBQUEsQ0FBQztRQUNGLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3JGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDL0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUE7WUFDcEIsT0FBTztRQUNSLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDN0IsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3JFLEdBQUcsQ0FBQyxFQUFFO2dCQUNMLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFBO2dCQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQTtnQkFDdEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUU7b0JBQzNDLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxTQUFTO29CQUM1QyxRQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUTtvQkFDMUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUs7aUJBQ3BDLENBQUMsQ0FBQTtnQkFDRixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQTtnQkFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7Z0JBQ3JCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtnQkFDbkMsQ0FBQztZQUNGLENBQUMsRUFDRCxHQUFHLENBQUMsRUFBRTtnQkFDTCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQTtnQkFDcEIsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO29CQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFBO2dCQUNwRCxDQUFDO3FCQUFNLENBQUM7b0JBQ1AsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtnQkFDakQsQ0FBQztZQUNGLENBQUMsQ0FDRCxDQUFBO1FBQ0YsQ0FBQzthQUFNLENBQUM7WUFDUCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQTtZQUN2QyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQTtRQUNyQixDQUFDO0lBQ0YsQ0FBQzt3R0E1RlcsdUJBQXVCOzRGQUF2Qix1QkFBdUIsK0lDZHBDLDgwRkF1REEseUREN0NXLG1CQUFtQixzckRBQUUseUJBQXlCOzs0RkFJNUMsdUJBQXVCO2tCQVBuQyxTQUFTOytCQUNDLHNCQUFzQixjQUNwQixJQUFJLFdBQ1AsQ0FBQyxtQkFBbUIsRUFBRSx5QkFBeUIsQ0FBQzt3REFhaEQsUUFBUTtzQkFBaEIsS0FBSztnQkFJSSxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlLCBBdXRoU2VydmljZSwgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZWMtc2VydmljZXMnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBMb2FkaW5nU2VjdGlvbkVjQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL3dpZGdldHMtZWMvbG9hZGluZ1wiO1xyXG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdhcHAtcmVnaXN0ZXItZm9ybS1lYycsXHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRpbXBvcnRzOiBbUmVhY3RpdmVGb3Jtc01vZHVsZSwgTG9hZGluZ1NlY3Rpb25FY0NvbXBvbmVudF0sXHJcblx0dGVtcGxhdGVVcmw6ICcuL3JlZ2lzdGVyLWZvcm0tZWMuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWycuL3JlZ2lzdGVyLWZvcm0tZWMuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVnaXN0ZXJGb3JtRWNDb21wb25lbnQge1xyXG5cdHByaXZhdGUgX2F1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XHJcblx0cHJpdmF0ZSBfdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcclxuXHRwcml2YXRlIF9yb3V0ZXI6IFJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG5cdHByaXZhdGUgX2FuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2UgPSBpbmplY3QoQW5hbHl0aWNzU2VydmljZSk7XHJcblx0cHJpdmF0ZSBfZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcclxuXHQvKipcclxuXHQqIEluZGljYSBzaSBkZWJlIHJlZGlyZWNjaW9uYXIgbyBzZSBxdWVkYSBlbiBsYSBtaXNtYSBwYW50YWxsYVxyXG5cdCovXHJcblx0QElucHV0KCkgcmVkaXJlY3Q6IGJvb2xlYW4gPSB0cnVlO1xyXG5cdC8qKlxyXG5cdCAqIFBhcmEgcXVlIHNlIHB1ZWRlIGNhcHR1cmFyIGVsIGVzdGFkbyBkZSBsYSBwZXRpY2nDs24gZGUgcmVnaXN0cm8uXHJcblx0ICovXHJcblx0QE91dHB1dCgpIHJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdC8qKlxyXG5cdCAqIENvbnRpZW5lIGVsIGZvcm11bGFyaW8gZGUgcmVnaXN0cm8uXHJcblx0ICovXHJcblx0cHVibGljIHJlZ2lzdGVyRm9ybTogRm9ybUdyb3VwID0gdGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG5cdFx0Zmlyc3ROYW1lOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG5cdFx0bGFzdE5hbWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcblx0XHRlbWFpbDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF1dLFxyXG5cdFx0cGxhaW5QYXNzd29yZDogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuXHRcdHBsYWluUGFzc3dvcmQyOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG5cdFx0cGhvbmU6IFsnJywgXSxcclxuXHRcdG5ld3NsZXR0ZXI6IFsnJ10sXHJcblx0XHR0ZXJtczogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkVHJ1ZV0sXHJcblx0fSwgeyB2YWxpZGF0b3JzOiB0aGlzLnBhc3N3b3JkTWF0Y2hWYWxpZGF0b3IgfSk7XHJcblxyXG5cdHBhc3N3b3JkTWF0Y2hWYWxpZGF0b3IoZ3JvdXA6IEZvcm1Hcm91cCkge1xyXG5cdFx0cmV0dXJuIGdyb3VwLmdldCgncGxhaW5QYXNzd29yZCcpPy52YWx1ZSA9PT0gZ3JvdXAuZ2V0KCdwbGFpblBhc3N3b3JkMicpPy52YWx1ZVxyXG5cdFx0XHQ/IG51bGwgOiB7IG1pc21hdGNoOiB0cnVlIH07XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFBhcmEgaW5kaWNhciBxdWUgc2UgZXN0YSBwcm9jZXNhbmRvIGxhIHNvbGljaXR1ZCBkZSByZWdpc3Ryby5cclxuXHQgKi9cclxuXHRwdWJsaWMgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdC8qKlxyXG5cdCAqIFBhcmEgaW5kaWNhciBlbCBleGl0byBkZSBsYSBzb2xpY2l0dWQgZGUgcmVnaXN0cm8uXHJcblx0ICovXHJcblx0cHVibGljIHN1Y2Nlc3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0Y29uc3RydWN0b3IoKSB7XHJcblxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBSZWdpc3RyYSB1biB1c3VhcmlvLlxyXG5cdCAqIEBwYXJhbSBldmVudCBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRyZWdpc3RlcihldmVudDogRXZlbnQpIHtcclxuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHR0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cdFx0Ly8gY29uc29sZS5sb2coJ3JlZ2lzdGVyRm9ybScsIHRoaXMucmVnaXN0ZXJGb3JtKTtcclxuXHRcdGlmICghdGhpcy5yZWdpc3RlckZvcm0udmFsaWQpIHtcclxuXHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ2ZpZWxkcy1pbmNvbXBsZXRlJyk7XHJcblx0XHRcdHRoaXMubG9hZGluZyA9IGZhbHNlXHJcblx0XHRcdHJldHVybjtcclxuXHRcdH07XHJcblx0XHRpZiAodGhpcy5yZWdpc3RlckZvcm0udmFsdWUucGxhaW5QYXNzd29yZCAhPSB0aGlzLnJlZ2lzdGVyRm9ybS52YWx1ZS5wbGFpblBhc3N3b3JkMikge1xyXG5cdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnbWlzbWF0Y2hlZC1wYXNzd29yZCcpO1xyXG5cdFx0XHR0aGlzLmxvYWRpbmcgPSBmYWxzZVxyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRpZiAodGhpcy5yZWdpc3RlckZvcm0udmFsaWQpIHtcclxuXHRcdFx0Zmlyc3RWYWx1ZUZyb20odGhpcy5fYXV0aFNlcnZpY2Uuc2luZ1VwKHRoaXMucmVnaXN0ZXJGb3JtLnZhbHVlKSkudGhlbihcclxuXHRcdFx0XHRyZXMgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5sb2FkaW5nID0gZmFsc2VcclxuXHRcdFx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdyZWdpc3Rlci1vaycpXHJcblx0XHRcdFx0XHR0aGlzLl9hbmFseXRpY3NTZXJ2aWNlLmNhbGxFdmVudCgnc2lnbl91cCcsIHtcclxuXHRcdFx0XHRcdFx0Zmlyc3ROYW1lOiB0aGlzLnJlZ2lzdGVyRm9ybS52YWx1ZS5maXJzdE5hbWUsXHJcblx0XHRcdFx0XHRcdGxhc3ROYW1lOiB0aGlzLnJlZ2lzdGVyRm9ybS52YWx1ZS5sYXN0TmFtZSxcclxuXHRcdFx0XHRcdFx0ZW1haWw6IHRoaXMucmVnaXN0ZXJGb3JtLnZhbHVlLmVtYWlsXHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0dGhpcy5zdWNjZXNzID0gdHJ1ZVxyXG5cdFx0XHRcdFx0dGhpcy5yZWFkeS5lbWl0KHRydWUpXHJcblx0XHRcdFx0XHRpZiAodGhpcy5yZWRpcmVjdCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgnaG9tZScpXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRlcnIgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5sb2FkaW5nID0gZmFsc2VcclxuXHRcdFx0XHRcdGlmIChlcnIuc3RhdHVzID09IDQwMCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnZW1haWwtYWxyZWFkeS1yZWdpc3RlcmVkJylcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5lcnJvcignZW1haWwtcmVnaXN0ZXItZXJyb3InKVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0KVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ2ludmFsaWQtZm9ybScpXHJcblx0XHRcdHRoaXMubG9hZGluZyA9IGZhbHNlXHJcblx0XHR9XHJcblx0fVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidy0xMDAgcGwtbWQtNSBwb3NpdGlvbi1yZWxhdGl2ZVwiIGlkPVwicmVnaXN0ZXJcIj5cclxuICA8ZGl2IGNsYXNzPVwicHktMlwiPlxyXG4gICAgICA8aDU+Q1JFQVIgQ1VFTlRBPC9oNT5cclxuICA8L2Rpdj5cclxuICA8Zm9ybSBpZD1cInJlZ2lzdHJvXCIgW2Zvcm1Hcm91cF09XCJyZWdpc3RlckZvcm1cIiAoc3VibWl0KT1cInJlZ2lzdGVyKCRldmVudClcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5OT01CUkU8L2xhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImZpcnN0TmFtZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHJvdW5kZWQtMFwiIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJOb21icmVcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICA8bGFiZWwgZm9yPVwiXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+QVBFTExJRE88L2xhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImxhc3ROYW1lXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcm91bmRlZC0wXCIgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIkFwZWxsaWRvXCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGZvcj1cIlwiIGNsYXNzPVwiXCI+Q09SUkVPIEVMRUNUUk9OSUNPPC9sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiIGVtYWlsIHJlcXVpcmVkIGNsYXNzPVwiZm9ybS1jb250cm9sIHJvdW5kZWQtMFwiIHR5cGU9XCJlbWFpbFwiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJDb3JyZW8gZWxlY3Ryw7NuaWNvXCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGZvcj1cIlwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkNPTlRSQVNFw5FBPC9sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJwbGFpblBhc3N3b3JkXCIgcmVxdWlyZWQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcm91bmRlZC0wXCIgdHlwZT1cInBhc3N3b3JkXCJcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkNvbnRyYXNlw7FhXCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGZvcj1cIlwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlJFUEVUSVIgQ09OVFJBU0XDkUE8L2xhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cInBsYWluUGFzc3dvcmQyXCIgcmVxdWlyZWQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcm91bmRlZC0wXCIgdHlwZT1cInBhc3N3b3JkXCJcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlJlcGV0aXIgY29udHJhc2XDsWFcIj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wgZC1mbGV4IGZsZXgtcm93IGZvcm0tY2hlY2sgY3VzdG9tLWNoZWNrYm94IG1yLXNtLTIgbXQtNCBtYi0yXCI+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgZm9ybUNvbnRyb2xOYW1lPVwidGVybXNcIiByZXF1aXJlZCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWlucHV0IGZvcm0tY2hlY2staW5wdXRcIiBuYW1lPVwiQ29sb3IyXCJcclxuICAgICAgICAgICAgICBpZD1cIkNvbG9yMlwiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtbGFiZWwgZmYtdWJ1bnR1LWxpZ2h0IGZvbnQtc20gZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cIkNvbG9yMlwiPiBIZVxyXG4gICAgICAgICAgICAgIGxlw61kbyB5IGFjZXB0byBsYXMgcG9sw610aWNhcyBkZSBwcml2YWNpZGFkIHkgbG9zIHTDqXJtaW5vcyB5XHJcbiAgICAgICAgICAgICAgY29uZGljaW9uZXM8L2xhYmVsPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tY29udHJvbCBkLWZsZXggZmxleC1yb3cgZm9ybS1jaGVjayBjdXN0b20tY2hlY2tib3ggbXItc20tMiBtYi00XCI+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgZm9ybUNvbnRyb2xOYW1lPVwibmV3c2xldHRlclwiIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtaW5wdXQgZm9ybS1jaGVjay1pbnB1dFwiIG5hbWU9XCJDb2xvcjNcIiBpZD1cIkNvbG9yM1wiPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtbGFiZWwgZm9ybS1jaGVjay1sYWJlbCBmZi11YnVudHUtbGlnaHQgZm9udC1zbVwiIGZvcj1cIkNvbG9yM1wiPlxyXG4gICAgICAgICAgICAgIFN1c2NyaXBjacOzbiBhbCBOZXdzbGV0dGVyPC9sYWJlbD5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwicmVnaXN0ZXJGb3JtLmludmFsaWRcIiB0eXBlPVwic3VibWl0XCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcHgtNSBweS0yIGgtZml0XCI+Q1JFQVI8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICA8L2Zvcm0+XHJcbiAgQGlmKGxvYWRpbmcpe1xyXG4gICAgPGFwcC1sb2FkaW5nLXNlY3Rpb24tZWMgLz5cclxuICB9XHJcbiAgXHJcbjwvZGl2PlxyXG4iXX0=
|
package/esm2022/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.mjs
CHANGED
|
@@ -101,19 +101,19 @@ export class BlockBannerFullEcComponent extends BlockEcComponent {
|
|
|
101
101
|
const nextButton = this.document?.getElementById(`${this.meta?.code}-next`);
|
|
102
102
|
const swiperElement = this.document?.getElementById(this.meta?.code);
|
|
103
103
|
if (prevButton && nextButton && swiperElement) {
|
|
104
|
-
console.log('Configurando navegación personalizada para banners:', this.meta?.code);
|
|
104
|
+
// console.log('Configurando navegación personalizada para banners:', this.meta?.code);
|
|
105
105
|
// Actualizar configuración del Swiper existente
|
|
106
106
|
this.updateSwiperForBanners(swiperElement);
|
|
107
107
|
// Configurar los event listeners para los botones
|
|
108
108
|
this.setupBannerNavigationEventListeners(prevButton, nextButton, swiperElement);
|
|
109
|
-
console.log('Event listeners configurados para navegación de banners');
|
|
109
|
+
// console.log('Event listeners configurados para navegación de banners');
|
|
110
110
|
}
|
|
111
111
|
else {
|
|
112
|
-
console.log('No se pudieron encontrar los elementos de navegación para banners:', {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
});
|
|
112
|
+
// console.log('No se pudieron encontrar los elementos de navegación para banners:', {
|
|
113
|
+
// prevButton: !!prevButton,
|
|
114
|
+
// nextButton: !!nextButton,
|
|
115
|
+
// swiperElement: !!swiperElement
|
|
116
|
+
// });
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
119
|
/**
|
|
@@ -121,7 +121,7 @@ export class BlockBannerFullEcComponent extends BlockEcComponent {
|
|
|
121
121
|
*/
|
|
122
122
|
updateSwiperForBanners(swiperElement) {
|
|
123
123
|
if (swiperElement.swiper) {
|
|
124
|
-
console.log('Actualizando configuración de Swiper para banners');
|
|
124
|
+
// console.log('Actualizando configuración de Swiper para banners');
|
|
125
125
|
// Configuración específica para banners
|
|
126
126
|
swiperElement.swiper.params.slidesPerGroup = 1;
|
|
127
127
|
swiperElement.swiper.allowSlideNext = true;
|
|
@@ -148,7 +148,7 @@ export class BlockBannerFullEcComponent extends BlockEcComponent {
|
|
|
148
148
|
prevClone.addEventListener('click', (e) => {
|
|
149
149
|
e.preventDefault();
|
|
150
150
|
e.stopPropagation();
|
|
151
|
-
console.log('Click en botón anterior (banners)');
|
|
151
|
+
// console.log('Click en botón anterior (banners)');
|
|
152
152
|
if (swiperElement.swiper) {
|
|
153
153
|
swiperElement.swiper.slidePrev();
|
|
154
154
|
}
|
|
@@ -156,7 +156,7 @@ export class BlockBannerFullEcComponent extends BlockEcComponent {
|
|
|
156
156
|
nextClone.addEventListener('click', (e) => {
|
|
157
157
|
e.preventDefault();
|
|
158
158
|
e.stopPropagation();
|
|
159
|
-
console.log('Click en botón siguiente (banners)');
|
|
159
|
+
// console.log('Click en botón siguiente (banners)');
|
|
160
160
|
if (swiperElement.swiper) {
|
|
161
161
|
swiperElement.swiper.slideNext();
|
|
162
162
|
}
|
|
@@ -219,4 +219,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
219
219
|
}], enableCustomNavigation: [{
|
|
220
220
|
type: Input
|
|
221
221
|
}] } });
|
|
222
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stYmFubmVyLWZ1bGwtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvYmxvY2tzLWVjL2Jsb2NrLWJhbm5lci1mdWxsLWVjL2Jsb2NrLWJhbm5lci1mdWxsLWVjLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL2Jsb2Nrcy1lYy9ibG9jay1iYW5uZXItZnVsbC1lYy9ibG9jay1iYW5uZXItZnVsbC1lYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFlLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUksT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLFFBQVEsRUFBbUIsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7QUFFeEQsUUFBUSxFQUFFLENBQUM7QUFFWDs7Ozs7R0FLRztBQVNILE1BQU0sT0FBTywwQkFBMkIsU0FBUSxnQkFBZ0I7SUFDNUQ7O09BRUc7SUFHQSxPQUFPLENBQU07SUFFaEI7O09BRUc7SUFDd0IsSUFBSSxDQUFNO0lBRXJDLHdFQUF3RTtJQUN4RTs7O09BR0c7SUFDTSxjQUFjLENBQVUsQ0FBQyxtQ0FBbUM7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dGVyTmV4dFJlbmRlciwgYWZ0ZXJSZW5kZXIsIENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBQTEFURk9STV9JRCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElCbG9jayB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBCbG9ja0VjQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYWJzdHJhY3Rpb25zLWNvbXBvbmVudHMnO1xyXG5pbXBvcnQgeyByZWdpc3RlciwgU3dpcGVyQ29udGFpbmVyIH0gZnJvbSAnc3dpcGVyL2VsZW1lbnQvYnVuZGxlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZWMtc2VydmljZXMnO1xyXG5cclxucmVnaXN0ZXIoKTtcclxuXHJcbi8qKlxyXG4gKiBDb21wb25lbnRlIHBhcmEgbWFuZWphciBsb3MgYmFubmVycyBkZSB0aXBvIGZ1bGxcclxuICogQGV4dGVuZHMge0Jsb2NrRWNDb21wb25lbnR9XHJcbiAqIEBpbXBsZW1lbnRzIHtPbkluaXR9XHJcbiAqIEBjbGFzcyBCbG9ja0Jhbm5lckZ1bGxFY0NvbXBvbmVudFxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FwcC1ibG9jay1iYW5uZXItZnVsbC1lYycsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUm91dGVyTGlua10sXHJcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmxvY2stYmFubmVyLWZ1bGwtZWMuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmw6ICcuL2Jsb2NrLWJhbm5lci1mdWxsLWVjLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQmxvY2tCYW5uZXJGdWxsRWNDb21wb25lbnQgZXh0ZW5kcyBCbG9ja0VjQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIC8qKlxyXG4gICAgICogQmFubmVycyB0aXBvIGZ1bGxcclxuICAgICAqL1xyXG4gICAgQElucHV0KHtcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZVxyXG4gICAgfSkgYmFubmVyczogYW55O1xyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIERhdG9zIGRlbCBibG9xdWUgcXVlIGNvbnRpZW5lIGEgbG9zIGJhbm5lcnNcclxuICAgICAqL1xyXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgbWV0YTogYW55O1xyXG5cclxuICAgIC8vID09PT09PT09PT09PT09PT09PT0gUEVSU09OQUxJWkFDScOTTiBERSBOQVZFR0FDScOTTiA9PT09PT09PT09PT09PT09PT09XHJcbiAgICAvKipcclxuICAgICAqIFBlcnNvbmFsaXphY2nDs24gZGUgbGFzIGZsZWNoYXMgZGUgbmF2ZWdhY2nDs25cclxuICAgICAqIFBvciBkZWZlY3RvIHVzYSBzw61tYm9sb3MgZGUgdGV4dG8sIHBlcm8gc2UgcHVlZGVuIGVzcGVjaWZpY2FyIGltw6FnZW5lc1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwcmV2QXJyb3dJbWFnZT86IHN0cmluZzsgLy8gdW5kZWZpbmVkID0gdXNhIHPDrW1ib2xvIGRlIHRleHRvXHJcbiAgICBASW5wdXQoKSBuZXh0QXJyb3dJbWFnZT86IHN0cmluZzsgLy8gdW5kZWZpbmVkID0gdXNhIHPDrW1ib2xvIGRlIHRleHRvXHJcbiAgICBASW5wdXQoKSBwcmV2QXJyb3dUZXh0OiBzdHJpbmcgPSAnPCc7XHJcbiAgICBASW5wdXQoKSBuZXh0QXJyb3dUZXh0OiBzdHJpbmcgPSAnPic7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPcGNpw7NuIHBhcmEgaGFiaWxpdGFyL2Rlc2hhYmlsaXRhciBsYSBuYXZlZ2FjacOzbiBwZXJzb25hbGl6YWRhXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGVuYWJsZUN1c3RvbU5hdmlnYXRpb246IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXJ2aWNpbyBwYXJhIEFuYWx5dGljc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGFuYWx5dGljc1NlcnZpY2UgPSBpbmplY3QoQW5hbHl0aWNzU2VydmljZSk7XHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogU2lnbmFsIHV0aWxpemFkbyBwYXJhIGd1YXJkYXIgZWwgY29udGVuZWRvciBkZWwgY2FycnVzZWxcclxuICAgICAqL1xyXG4gICAgc3dpcGVyRWxlbWVudCA9IHNpZ25hbDxTd2lwZXJDb250YWluZXIgfCBudWxsPihudWxsKTtcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBNw6l0b2RvIG9yaWdpbmFsIGVuOiB7QGxpbmsgQmxvY2tFY0NvbXBvbmVudH1cclxuICAgICAqIEBwYXJhbSBiYW5uZXIgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIG92ZXJyaWRlIGdldEltYWdlID0gKGJhbm5lcjogYW55KSA9PiB0aGlzLmdldEJhbm5lckltYWdlKGJhbm5lcik7XHJcbiAgICBcclxuICAgIHByaXZhdGUgZG9jdW1lbnQ/OiBEb2N1bWVudDtcclxuICAgIHByaXZhdGUgcGxhdGZvcm1JZDogYW55ID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNlIG1hcHBlYSBsb3MgYmFubmVycyBwYXJhIHN1bWFybGUgZWwgb2JqZXRvIGRlIHRyYW5zbGF0aW9ucyB5IHF1ZVxyXG4gICAgICogc2VhbiBtYXMgYW1pZ2FibGVzIHBhcmEgc3UgdXNvLlxyXG4gICAgICovXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmJhbm5lcnMgPSB0aGlzLmJhbm5lcnMubWFwKChiYW5uZXI6IGFueSkgPT4geyBcclxuICAgICAgICAgICAgcmV0dXJuIHsgLi4uYmFubmVyLCAuLi5iYW5uZXIudHJhbnNsYXRpb25zW3RoaXMuYXBpQ29uc3RzLkxPQ0FMRV0gfSBcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEVqZWN1dGEgZWwgbcOpdG9kbyBgYWZ0ZXJOZXh0UmVuZGVyYCBwYXJhIGNhcmdhciBsYXMgY29uZmlndXJhY2lvbmVzIG5lY2VzYXJpYXMgXHJcbiAgICAgKiBwYXJhIGVsIGNhcnJ1c2VsIGRlIGJhbm5lcnMuIEVzdG8gZGViZSBzZXIgYXPDrSBkZWJpZG8gYSBxdWUgeWEgZGViZSBlc3RhciBwcmVzZW50ZVxyXG4gICAgICogZW4gZWwgRE9NIGVsIGVsZW1lbnRvIGA8c3dpcGVyLWNvbnRhaW5lcj5gIHBhcmEgcG9kZXIgY29uZmlndXJhcmxvLlxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnQgPSBkb2N1bWVudDtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplU3dpcGVyV2l0aE5hdmlnYXRpb24oKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEluaWNpYWxpemEgZWwgU3dpcGVyIGNvbiBuYXZlZ2FjacOzbiBwZXJzb25hbGl6YWRhXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZVN3aXBlcldpdGhOYXZpZ2F0aW9uKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHN3aXBlckVsZW1Db25zdHJ1Y3RvciA9IHRoaXMuZG9jdW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoJyMnICsgdGhpcy5tZXRhPy5jb2RlKTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAoc3dpcGVyRWxlbUNvbnN0cnVjdG9yKSB7XHJcbiAgICAgICAgICAgIC8vIENvbmZpZ3VyYXIgZWwgU3dpcGVyIGNvbiBsYXMgb3BjaW9uZXMgYmFzZVxyXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHN3aXBlckVsZW1Db25zdHJ1Y3RvciwgdGhpcy5zd2lwZXJPcHRpb25zKCkpO1xyXG4gICAgICAgICAgICB0aGlzLnN3aXBlckVsZW1lbnQuc2V0KHN3aXBlckVsZW1Db25zdHJ1Y3RvciBhcyBTd2lwZXJDb250YWluZXIpO1xyXG4gICAgICAgICAgICB0aGlzLnN3aXBlckVsZW1lbnQoKT8uaW5pdGlhbGl6ZSgpO1xyXG5cclxuICAgICAgICAgICAgLy8gQ29uZmlndXJhciBuYXZlZ2FjacOzbiBwZXJzb25hbGl6YWRhIHNpIGVzdMOhIGhhYmlsaXRhZGFcclxuICAgICAgICAgICAgaWYgKHRoaXMuZW5hYmxlQ3VzdG9tTmF2aWdhdGlvbikge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR1cEN1c3RvbU5hdmlnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIH0sIDIwMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25maWd1cmEgbGEgbmF2ZWdhY2nDs24gcGVyc29uYWxpemFkYSBkZWwgU3dpcGVyIHBhcmEgYmFubmVyc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHNldHVwQ3VzdG9tTmF2aWdhdGlvbigpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBwcmV2QnV0dG9uID0gdGhpcy5kb2N1bWVudD8uZ2V0RWxlbWVudEJ5SWQoYCR7dGhpcy5tZXRhPy5jb2RlfS1wcmV2YCk7XHJcbiAgICAgICAgY29uc3QgbmV4dEJ1dHRvbiA9IHRoaXMuZG9jdW1lbnQ/LmdldEVsZW1lbnRCeUlkKGAke3RoaXMubWV0YT8uY29kZX0tbmV4dGApO1xyXG4gICAgICAgIGNvbnN0IHN3aXBlckVsZW1lbnQgPSB0aGlzLmRvY3VtZW50Py5nZXRFbGVtZW50QnlJZCh0aGlzLm1ldGE/LmNvZGUpIGFzIGFueTtcclxuXHJcbiAgICAgICAgaWYgKHByZXZCdXR0b24gJiYgbmV4dEJ1dHRvbiAmJiBzd2lwZXJFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDb25maWd1cmFuZG8gbmF2ZWdhY2nDs24gcGVyc29uYWxpemFkYSBwYXJhIGJhbm5lcnM6JywgdGhpcy5tZXRhPy5jb2RlKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIEFjdHVhbGl6YXIgY29uZmlndXJhY2nDs24gZGVsIFN3aXBlciBleGlzdGVudGVcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVTd2lwZXJGb3JCYW5uZXJzKHN3aXBlckVsZW1lbnQpO1xyXG5cclxuICAgICAgICAgICAgLy8gQ29uZmlndXJhciBsb3MgZXZlbnQgbGlzdGVuZXJzIHBhcmEgbG9zIGJvdG9uZXNcclxuICAgICAgICAgICAgdGhpcy5zZXR1cEJhbm5lck5hdmlnYXRpb25FdmVudExpc3RlbmVycyhwcmV2QnV0dG9uLCBuZXh0QnV0dG9uLCBzd2lwZXJFbGVtZW50KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdFdmVudCBsaXN0ZW5lcnMgY29uZmlndXJhZG9zIHBhcmEgbmF2ZWdhY2nDs24gZGUgYmFubmVycycpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdObyBzZSBwdWRpZXJvbiBlbmNvbnRyYXIgbG9zIGVsZW1lbnRvcyBkZSBuYXZlZ2FjacOzbiBwYXJhIGJhbm5lcnM6Jywge1xyXG4gICAgICAgICAgICAgICAgcHJldkJ1dHRvbjogISFwcmV2QnV0dG9uLFxyXG4gICAgICAgICAgICAgICAgbmV4dEJ1dHRvbjogISFuZXh0QnV0dG9uLFxyXG4gICAgICAgICAgICAgICAgc3dpcGVyRWxlbWVudDogISFzd2lwZXJFbGVtZW50XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFjdHVhbGl6YSBsYSBjb25maWd1cmFjacOzbiBkZWwgU3dpcGVyIGVzcGVjw61maWNhbWVudGUgcGFyYSBiYW5uZXJzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdXBkYXRlU3dpcGVyRm9yQmFubmVycyhzd2lwZXJFbGVtZW50OiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAoc3dpcGVyRWxlbWVudC5zd2lwZXIpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ0FjdHVhbGl6YW5kbyBjb25maWd1cmFjacOzbiBkZSBTd2lwZXIgcGFyYSBiYW5uZXJzJyk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvLyBDb25maWd1cmFjacOzbiBlc3BlY8OtZmljYSBwYXJhIGJhbm5lcnNcclxuICAgICAgICAgICAgc3dpcGVyRWxlbWVudC5zd2lwZXIucGFyYW1zLnNsaWRlc1Blckdyb3VwID0gMTtcclxuICAgICAgICAgICAgc3dpcGVyRWxlbWVudC5zd2lwZXIuYWxsb3dTbGlkZU5leHQgPSB0cnVlO1xyXG4gICAgICAgICAgICBzd2lwZXJFbGVtZW50LnN3aXBlci5hbGxvd1NsaWRlUHJldiA9IHRydWU7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvLyBBY3R1YWxpemFyIHRhbWJpw6luIGxvcyBicmVha3BvaW50cyBzaSBleGlzdGVuXHJcbiAgICAgICAgICAgIGlmIChzd2lwZXJFbGVtZW50LnN3aXBlci5wYXJhbXMuYnJlYWtwb2ludHMpIHtcclxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHN3aXBlckVsZW1lbnQuc3dpcGVyLnBhcmFtcy5icmVha3BvaW50cykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHN3aXBlckVsZW1lbnQuc3dpcGVyLnBhcmFtcy5icmVha3BvaW50c1trZXldLnNsaWRlc1Blckdyb3VwID0gMTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBzd2lwZXJFbGVtZW50LnN3aXBlci51cGRhdGUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25maWd1cmEgbG9zIGV2ZW50IGxpc3RlbmVycyBwYXJhIGxvcyBib3RvbmVzIGRlIG5hdmVnYWNpw7NuIGRlIGJhbm5lcnNcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzZXR1cEJhbm5lck5hdmlnYXRpb25FdmVudExpc3RlbmVycyhwcmV2QnV0dG9uOiBFbGVtZW50LCBuZXh0QnV0dG9uOiBFbGVtZW50LCBzd2lwZXJFbGVtZW50OiBhbnkpOiB2b2lkIHtcclxuICAgICAgICAvLyBSZW1vdmVyIGV2ZW50IGxpc3RlbmVycyBleGlzdGVudGVzIHBhcmEgZXZpdGFyIGR1cGxpY2Fkb3NcclxuICAgICAgICBjb25zdCBwcmV2Q2xvbmUgPSBwcmV2QnV0dG9uLmNsb25lTm9kZSh0cnVlKTtcclxuICAgICAgICBjb25zdCBuZXh0Q2xvbmUgPSBuZXh0QnV0dG9uLmNsb25lTm9kZSh0cnVlKTtcclxuICAgICAgICBwcmV2QnV0dG9uLnBhcmVudE5vZGU/LnJlcGxhY2VDaGlsZChwcmV2Q2xvbmUsIHByZXZCdXR0b24pO1xyXG4gICAgICAgIG5leHRCdXR0b24ucGFyZW50Tm9kZT8ucmVwbGFjZUNoaWxkKG5leHRDbG9uZSwgbmV4dEJ1dHRvbik7XHJcblxyXG4gICAgICAgIC8vIEFncmVnYXIgbnVldm9zIGV2ZW50IGxpc3RlbmVyc1xyXG4gICAgICAgIHByZXZDbG9uZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XHJcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ0NsaWNrIGVuIGJvdMOzbiBhbnRlcmlvciAoYmFubmVycyknKTtcclxuICAgICAgICAgICAgaWYgKHN3aXBlckVsZW1lbnQuc3dpcGVyKSB7XHJcbiAgICAgICAgICAgICAgICBzd2lwZXJFbGVtZW50LnN3aXBlci5zbGlkZVByZXYoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBuZXh0Q2xvbmUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xyXG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDbGljayBlbiBib3TDs24gc2lndWllbnRlIChiYW5uZXJzKScpO1xyXG4gICAgICAgICAgICBpZiAoc3dpcGVyRWxlbWVudC5zd2lwZXIpIHtcclxuICAgICAgICAgICAgICAgIHN3aXBlckVsZW1lbnQuc3dpcGVyLnNsaWRlTmV4dCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBcGxpY2EgZWwgZXZlbnRvIGBzZWxlY3RfcHJvbW90aW9uYCBqdW50byBjb24gZWwgYmFubmVyIHF1ZSBpbnRlcmFjdMO6YS5cclxuICAgICAqIEBwYXJhbSBiYW5uZXIgXHJcbiAgICAgKi9cclxuICAgIHNlbGVjdFByb21vdGlvbihiYW5uZXI6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5jYWxsRXZlbnQoJ3NlbGVjdF9wcm9tb3Rpb24nLCBiYW5uZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogT2J0aWVuZSBsYSBjb25maWd1cmFjacOzbiBlc3BlY8OtZmljYSBkZWwgU3dpcGVyIHBhcmEgYmFubmVyc1xyXG4gICAgICogU29icmVzY3JpYmUgbGEgY29uZmlndXJhY2nDs24gYmFzZSBzaSBlcyBuZWNlc2FyaW9cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBnZXRCYW5uZXJTd2lwZXJDb25maWd1cmF0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IDEsXHJcbiAgICAgICAgICAgIHNwYWNlQmV0d2VlbjogMCxcclxuICAgICAgICAgICAgc2xpZGVzUGVyR3JvdXA6IDEsXHJcbiAgICAgICAgICAgIG5hdmlnYXRpb246IGZhbHNlLCAvLyBEZXNoYWJpbGl0YW1vcyBsYSBuYXZlZ2FjacOzbiBwb3IgZGVmZWN0b1xyXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiB7XHJcbiAgICAgICAgICAgICAgICBlbDogJy5zd2lwZXItcGFnaW5hdGlvbicsXHJcbiAgICAgICAgICAgICAgICBjbGlja2FibGU6IHRydWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGxvb3A6IHRydWUsXHJcbiAgICAgICAgICAgIGF1dG9wbGF5OiB7XHJcbiAgICAgICAgICAgICAgICBkZWxheTogNTAwMCxcclxuICAgICAgICAgICAgICAgIGRpc2FibGVPbkludGVyYWN0aW9uOiBmYWxzZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZWZmZWN0OiAnZmFkZScsXHJcbiAgICAgICAgICAgIGZhZGVFZmZlY3Q6IHtcclxuICAgICAgICAgICAgICAgIGNyb3NzRmFkZTogdHJ1ZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufVxyXG4iLCJAaWYoYmFubmVycy5sZW5ndGggPiAwKSB7XHJcbiAgICA8c2VjdGlvbiBbbmdDbGFzc109XCJ0cmltQ2xhc3NCbG9jayhtZXRhPy5jb2RlKSsnIGNvbnRhaW5lci1mbHVpZCBweC0wJ1wiXHJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwibWV0YS5zdHlsZXM/LmJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtaW1hZ2VdPVwibWV0YS5zdHlsZXM/LmJhY2tncm91bmRJbWFnZSA/ICd1cmwoJyArIG1lZGlhVXJsICsgbWV0YS5zdHlsZXM/LmJhY2tncm91bmRJbWFnZSArJyknIDogJ2luaGVyaXQnXCI+XHJcblxyXG4gICAgICAgIEBpZiAoYmFubmVycy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgICA8IS0tIHNpIGVzIGZvcm1hdG8gZmlqbyAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICBAbGV0IGJhbm5lciA9IGJhbm5lcnNbMF07XHJcbiAgICAgICAgICAgICAgICBAaWYoIWJhbm5lcnMuc3R5bGVzPy5idXR0b24/LnRleHQpe1xyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gYmFubmVyIHNpbiBib3RvbiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBbaHJlZl09XCJiYW5uZXIudXJsXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbSBjb2wtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctZmx1aWRcIiBbc3JjXT1cIm1lZGlhQmFubmVyVXJsICsgZ2V0SW1hZ2UoYmFubmVyKVwiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIHctMTAwIGgtMTAwIHN0YXJ0LTAgdG9wLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoYmFubmVyLnRpdGxlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIFtjbGFzc109XCInaXRlbS10aXRsZS1mdWxsIHB4LTIgaXRlbS1wb3NpdGlvbi12ZXJ0aWNhbC0nICsgKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5wb3NpdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5jb2xvcikgPyBiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8uY29sb3IgOiAnI2ZmZicgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2Jhbm5lci50aXRsZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihiYW5uZXIuc3VidGl0bGUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBbc3R5bGUuY29sb3JdPVwiKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5jb2xvcikgPyBiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8uY29sb3IgOiAnIzAwMCcgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIidweC00IGl0ZW0tc3VidGl0bGUtZnVsbCBpdGVtLXBvc2l0aW9uLXZlcnRpY2FsLScgKyAoYmFubmVyLnN0eWxlcz8uZGVzY3JpcHRpb24/LnBvc2l0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tiYW5uZXIuc3VidGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBiYW5uZXIgZmlqbyBjb24gYm90b24gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0gY29sLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctZmx1aWRcIiBbc3JjXT1cIm1lZGlhQmFubmVyVXJsICsgZ2V0SW1hZ2UoYmFubmVyKVwiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgdy0xMDAgaC0xMDAgc3RhcnQtMCB0b3AtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGJhbm5lci50aXRsZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIFtjbGFzc109XCInaXRlbS10aXRsZS1mdWxsIHB4LTIgaXRlbS1wb3NpdGlvbi12ZXJ0aWNhbC0nICsgKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5wb3NpdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCIoYmFubmVyLnN0eWxlcz8uZGVzY3JpcHRpb24/LmNvbG9yKSA/IGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5jb2xvciA6ICcjMDAwJyBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tiYW5uZXIudGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoYmFubmVyLnN1YnRpdGxlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5jb2xvcikgPyBiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8uY29sb3IgOiAnIzAwMCcgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiJ3B4LTQgaXRlbS1zdWJ0aXRsZS1mdWxsIGl0ZW0tcG9zaXRpb24tdmVydGljYWwtJyArIChiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8ucG9zaXRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7YmFubmVyLnN1YnRpdGxlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzc109XCInaXRlbS1wb3NpdGlvbi12ZXJ0aWNhbC0nICsgKGJhbm5lci5zdHlsZXM/LmJ1dHRvbj8ucG9zaXRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGJhbm5lci5zdHlsZXM/LmJ1dHRvbj8udGV4dCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInt7YmFubmVyLnVybH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIidpdGVtLWJ1dHRvbi1mdWxsIGJ0biBidG4tbGlnaHQgJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tiYW5uZXIuc3R5bGVzLmJ1dHRvbi50ZXh0fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgIDwhLS0gc2kgZXMgY2Fycm91c2VsIC0tPlxyXG4gICAgICAgICAgICA8IS0tICBAaWYoc3dpcGVyRWxlbWVudCgpICE9IG51bGwpeyAtLT5cclxuICAgICAgICAgICAgICAgIDxzd2lwZXItY29udGFpbmVyIGluaXQ9XCJmYWxzZVwiIFtpZF09XCJtZXRhPy5jb2RlXCI+XHJcbiAgICAgICAgICAgICAgICBAZm9yIChiYW5uZXIgb2YgYmFubmVyczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPHN3aXBlci1zbGlkZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIWJhbm5lci5zdHlsZXM/LmJ1dHRvbj8udGV4dCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gYmFubmVyIHNpbiBib3RvbiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoYmFubmVyLnVybCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cImJhbm5lci51cmxcIiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cIm1lZGlhQmFubmVyVXJsICsgZ2V0SW1hZ2UoYmFubmVyKVwiIGFsdD1cIlwiIGNsYXNzPVwiaW1nLWZsdWlkIHctMTAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJtZWRpYUJhbm5lclVybCArIGdldEltYWdlKGJhbm5lcilcIiBhbHQ9XCJcIiAgY2xhc3M9XCJpbWctZmx1aWQgdy0xMDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBiYW5uZXIgY29uIGJvdG9uIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJtZWRpYUJhbm5lclVybCArIGdldEltYWdlKGJhbm5lcilcIiBhbHQ9XCJcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB3LTEwMCBoLTEwMCBzdGFydC0wIHRvcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihiYW5uZXIudGl0bGUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIFtjbGFzc109XCInaXRlbS10aXRsZS1mdWxsIHB4LTIgaXRlbS1wb3NpdGlvbi12ZXJ0aWNhbC0nKyAoYmFubmVyLnN0eWxlcz8uZGVzY3JpcHRpb24/LnBvc2l0aW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cIihiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8uY29sb3IpID8gYmFubmVyLnN0eWxlcz8uZGVzY3JpcHRpb24/LmNvbG9yIDogJyMwMDAnIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7YmFubmVyLnRpdGxlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGJhbm5lci5zdWJ0aXRsZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBbc3R5bGUuY29sb3JdPVwiKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5jb2xvcikgPyBiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8uY29sb3IgOiAnIzAwMCcgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiJ3B4LTQgaXRlbS1zdWJ0aXRsZS1mdWxsIGl0ZW0tcG9zaXRpb24tdmVydGljYWwtJyArIChiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8ucG9zaXRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tiYW5uZXIuc3VidGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzXT1cIidpdGVtLXBvc2l0aW9uLXZlcnRpY2FsLScgKyAoYmFubmVyLnN0eWxlcz8uYnV0dG9uPy5wb3NpdGlvbilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihiYW5uZXIuc3R5bGVzPy5idXR0b24/LnRleHQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJ7e2Jhbm5lci51cmx9fVwiIFtjbGFzc109XCInaXRlbS1idXR0b24tZnVsbCBidG4gYnRuLWxpZ2h0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2Jhbm5lci5zdHlsZXMuYnV0dG9uLnRleHR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3dpcGVyLXNsaWRlPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L3N3aXBlci1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwhLS0gIH0gLS0+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgIDwvc2VjdGlvbj5cclxufSJdfQ==
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stYmFubmVyLWZ1bGwtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvYmxvY2tzLWVjL2Jsb2NrLWJhbm5lci1mdWxsLWVjL2Jsb2NrLWJhbm5lci1mdWxsLWVjLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL2Jsb2Nrcy1lYy9ibG9jay1iYW5uZXItZnVsbC1lYy9ibG9jay1iYW5uZXItZnVsbC1lYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFlLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUksT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLFFBQVEsRUFBbUIsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7QUFFeEQsUUFBUSxFQUFFLENBQUM7QUFFWDs7Ozs7R0FLRztBQVNILE1BQU0sT0FBTywwQkFBMkIsU0FBUSxnQkFBZ0I7SUFDNUQ7O09BRUc7SUFHQSxPQUFPLENBQU07SUFFaEI7O09BRUc7SUFDd0IsSUFBSSxDQUFNO0lBRXJDLHdFQUF3RTtJQUN4RTs7O09BR0c7SUFDTSxjQUFjLENBQVUsQ0FBQyxtQ0FBbUM7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LEVBQUUsRUFBRSxvQkFBb0I7Z0JBQ3hCLFNBQVMsRUFBRSxJQUFJO2FBQ2xCO1lBQ0QsSUFBSSxFQUFFLElBQUk7WUFDVixRQUFRLEVBQUU7Z0JBQ04sS0FBSyxFQUFFLElBQUk7Z0JBQ1gsb0JBQW9CLEVBQUUsS0FBSzthQUM5QjtZQUNELE1BQU0sRUFBRSxNQUFNO1lBQ2QsVUFBVSxFQUFFO2dCQUNSLFNBQVMsRUFBRSxJQUFJO2FBQ2xCO1NBQ0osQ0FBQztJQUNOLENBQUM7d0dBak5RLDBCQUEwQjs0RkFBMUIsMEJBQTBCLCtVQ3hCdkMsczNOQThHQyx5REQzRmEsWUFBWTs7NEZBS2IsMEJBQTBCO2tCQVJ0QyxTQUFTOytCQUNJLDBCQUEwQixjQUN4QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLFdBQzFCLENBQUMsc0JBQXNCLENBQUM7d0RBVTlCLE9BQU87c0JBRlQsS0FBSzt1QkFBQzt3QkFDSCxRQUFRLEVBQUUsSUFBSTtxQkFDakI7Z0JBSzBCLElBQUk7c0JBQTlCLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQU9oQixjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUtHLHNCQUFzQjtzQkFBOUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFmdGVyTmV4dFJlbmRlciwgYWZ0ZXJSZW5kZXIsIENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBQTEFURk9STV9JRCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElCbG9jayB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBCbG9ja0VjQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYWJzdHJhY3Rpb25zLWNvbXBvbmVudHMnO1xyXG5pbXBvcnQgeyByZWdpc3RlciwgU3dpcGVyQ29udGFpbmVyIH0gZnJvbSAnc3dpcGVyL2VsZW1lbnQvYnVuZGxlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZWMtc2VydmljZXMnO1xyXG5cclxucmVnaXN0ZXIoKTtcclxuXHJcbi8qKlxyXG4gKiBDb21wb25lbnRlIHBhcmEgbWFuZWphciBsb3MgYmFubmVycyBkZSB0aXBvIGZ1bGxcclxuICogQGV4dGVuZHMge0Jsb2NrRWNDb21wb25lbnR9XHJcbiAqIEBpbXBsZW1lbnRzIHtPbkluaXR9XHJcbiAqIEBjbGFzcyBCbG9ja0Jhbm5lckZ1bGxFY0NvbXBvbmVudFxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FwcC1ibG9jay1iYW5uZXItZnVsbC1lYycsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUm91dGVyTGlua10sXHJcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmxvY2stYmFubmVyLWZ1bGwtZWMuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmw6ICcuL2Jsb2NrLWJhbm5lci1mdWxsLWVjLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQmxvY2tCYW5uZXJGdWxsRWNDb21wb25lbnQgZXh0ZW5kcyBCbG9ja0VjQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIC8qKlxyXG4gICAgICogQmFubmVycyB0aXBvIGZ1bGxcclxuICAgICAqL1xyXG4gICAgQElucHV0KHtcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZVxyXG4gICAgfSkgYmFubmVyczogYW55O1xyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIERhdG9zIGRlbCBibG9xdWUgcXVlIGNvbnRpZW5lIGEgbG9zIGJhbm5lcnNcclxuICAgICAqL1xyXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgbWV0YTogYW55O1xyXG5cclxuICAgIC8vID09PT09PT09PT09PT09PT09PT0gUEVSU09OQUxJWkFDScOTTiBERSBOQVZFR0FDScOTTiA9PT09PT09PT09PT09PT09PT09XHJcbiAgICAvKipcclxuICAgICAqIFBlcnNvbmFsaXphY2nDs24gZGUgbGFzIGZsZWNoYXMgZGUgbmF2ZWdhY2nDs25cclxuICAgICAqIFBvciBkZWZlY3RvIHVzYSBzw61tYm9sb3MgZGUgdGV4dG8sIHBlcm8gc2UgcHVlZGVuIGVzcGVjaWZpY2FyIGltw6FnZW5lc1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwcmV2QXJyb3dJbWFnZT86IHN0cmluZzsgLy8gdW5kZWZpbmVkID0gdXNhIHPDrW1ib2xvIGRlIHRleHRvXHJcbiAgICBASW5wdXQoKSBuZXh0QXJyb3dJbWFnZT86IHN0cmluZzsgLy8gdW5kZWZpbmVkID0gdXNhIHPDrW1ib2xvIGRlIHRleHRvXHJcbiAgICBASW5wdXQoKSBwcmV2QXJyb3dUZXh0OiBzdHJpbmcgPSAnPCc7XHJcbiAgICBASW5wdXQoKSBuZXh0QXJyb3dUZXh0OiBzdHJpbmcgPSAnPic7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPcGNpw7NuIHBhcmEgaGFiaWxpdGFyL2Rlc2hhYmlsaXRhciBsYSBuYXZlZ2FjacOzbiBwZXJzb25hbGl6YWRhXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGVuYWJsZUN1c3RvbU5hdmlnYXRpb246IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXJ2aWNpbyBwYXJhIEFuYWx5dGljc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGFuYWx5dGljc1NlcnZpY2UgPSBpbmplY3QoQW5hbHl0aWNzU2VydmljZSk7XHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogU2lnbmFsIHV0aWxpemFkbyBwYXJhIGd1YXJkYXIgZWwgY29udGVuZWRvciBkZWwgY2FycnVzZWxcclxuICAgICAqL1xyXG4gICAgc3dpcGVyRWxlbWVudCA9IHNpZ25hbDxTd2lwZXJDb250YWluZXIgfCBudWxsPihudWxsKTtcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBNw6l0b2RvIG9yaWdpbmFsIGVuOiB7QGxpbmsgQmxvY2tFY0NvbXBvbmVudH1cclxuICAgICAqIEBwYXJhbSBiYW5uZXIgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIG92ZXJyaWRlIGdldEltYWdlID0gKGJhbm5lcjogYW55KSA9PiB0aGlzLmdldEJhbm5lckltYWdlKGJhbm5lcik7XHJcbiAgICBcclxuICAgIHByaXZhdGUgZG9jdW1lbnQ/OiBEb2N1bWVudDtcclxuICAgIHByaXZhdGUgcGxhdGZvcm1JZDogYW55ID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNlIG1hcHBlYSBsb3MgYmFubmVycyBwYXJhIHN1bWFybGUgZWwgb2JqZXRvIGRlIHRyYW5zbGF0aW9ucyB5IHF1ZVxyXG4gICAgICogc2VhbiBtYXMgYW1pZ2FibGVzIHBhcmEgc3UgdXNvLlxyXG4gICAgICovXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmJhbm5lcnMgPSB0aGlzLmJhbm5lcnMubWFwKChiYW5uZXI6IGFueSkgPT4geyBcclxuICAgICAgICAgICAgcmV0dXJuIHsgLi4uYmFubmVyLCAuLi5iYW5uZXIudHJhbnNsYXRpb25zW3RoaXMuYXBpQ29uc3RzLkxPQ0FMRV0gfSBcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEVqZWN1dGEgZWwgbcOpdG9kbyBgYWZ0ZXJOZXh0UmVuZGVyYCBwYXJhIGNhcmdhciBsYXMgY29uZmlndXJhY2lvbmVzIG5lY2VzYXJpYXMgXHJcbiAgICAgKiBwYXJhIGVsIGNhcnJ1c2VsIGRlIGJhbm5lcnMuIEVzdG8gZGViZSBzZXIgYXPDrSBkZWJpZG8gYSBxdWUgeWEgZGViZSBlc3RhciBwcmVzZW50ZVxyXG4gICAgICogZW4gZWwgRE9NIGVsIGVsZW1lbnRvIGA8c3dpcGVyLWNvbnRhaW5lcj5gIHBhcmEgcG9kZXIgY29uZmlndXJhcmxvLlxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnQgPSBkb2N1bWVudDtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplU3dpcGVyV2l0aE5hdmlnYXRpb24oKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEluaWNpYWxpemEgZWwgU3dpcGVyIGNvbiBuYXZlZ2FjacOzbiBwZXJzb25hbGl6YWRhXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZVN3aXBlcldpdGhOYXZpZ2F0aW9uKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHN3aXBlckVsZW1Db25zdHJ1Y3RvciA9IHRoaXMuZG9jdW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoJyMnICsgdGhpcy5tZXRhPy5jb2RlKTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAoc3dpcGVyRWxlbUNvbnN0cnVjdG9yKSB7XHJcbiAgICAgICAgICAgIC8vIENvbmZpZ3VyYXIgZWwgU3dpcGVyIGNvbiBsYXMgb3BjaW9uZXMgYmFzZVxyXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHN3aXBlckVsZW1Db25zdHJ1Y3RvciwgdGhpcy5zd2lwZXJPcHRpb25zKCkpO1xyXG4gICAgICAgICAgICB0aGlzLnN3aXBlckVsZW1lbnQuc2V0KHN3aXBlckVsZW1Db25zdHJ1Y3RvciBhcyBTd2lwZXJDb250YWluZXIpO1xyXG4gICAgICAgICAgICB0aGlzLnN3aXBlckVsZW1lbnQoKT8uaW5pdGlhbGl6ZSgpO1xyXG5cclxuICAgICAgICAgICAgLy8gQ29uZmlndXJhciBuYXZlZ2FjacOzbiBwZXJzb25hbGl6YWRhIHNpIGVzdMOhIGhhYmlsaXRhZGFcclxuICAgICAgICAgICAgaWYgKHRoaXMuZW5hYmxlQ3VzdG9tTmF2aWdhdGlvbikge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR1cEN1c3RvbU5hdmlnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIH0sIDIwMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25maWd1cmEgbGEgbmF2ZWdhY2nDs24gcGVyc29uYWxpemFkYSBkZWwgU3dpcGVyIHBhcmEgYmFubmVyc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHNldHVwQ3VzdG9tTmF2aWdhdGlvbigpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBwcmV2QnV0dG9uID0gdGhpcy5kb2N1bWVudD8uZ2V0RWxlbWVudEJ5SWQoYCR7dGhpcy5tZXRhPy5jb2RlfS1wcmV2YCk7XHJcbiAgICAgICAgY29uc3QgbmV4dEJ1dHRvbiA9IHRoaXMuZG9jdW1lbnQ/LmdldEVsZW1lbnRCeUlkKGAke3RoaXMubWV0YT8uY29kZX0tbmV4dGApO1xyXG4gICAgICAgIGNvbnN0IHN3aXBlckVsZW1lbnQgPSB0aGlzLmRvY3VtZW50Py5nZXRFbGVtZW50QnlJZCh0aGlzLm1ldGE/LmNvZGUpIGFzIGFueTtcclxuXHJcbiAgICAgICAgaWYgKHByZXZCdXR0b24gJiYgbmV4dEJ1dHRvbiAmJiBzd2lwZXJFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdDb25maWd1cmFuZG8gbmF2ZWdhY2nDs24gcGVyc29uYWxpemFkYSBwYXJhIGJhbm5lcnM6JywgdGhpcy5tZXRhPy5jb2RlKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIEFjdHVhbGl6YXIgY29uZmlndXJhY2nDs24gZGVsIFN3aXBlciBleGlzdGVudGVcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVTd2lwZXJGb3JCYW5uZXJzKHN3aXBlckVsZW1lbnQpO1xyXG5cclxuICAgICAgICAgICAgLy8gQ29uZmlndXJhciBsb3MgZXZlbnQgbGlzdGVuZXJzIHBhcmEgbG9zIGJvdG9uZXNcclxuICAgICAgICAgICAgdGhpcy5zZXR1cEJhbm5lck5hdmlnYXRpb25FdmVudExpc3RlbmVycyhwcmV2QnV0dG9uLCBuZXh0QnV0dG9uLCBzd2lwZXJFbGVtZW50KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdFdmVudCBsaXN0ZW5lcnMgY29uZmlndXJhZG9zIHBhcmEgbmF2ZWdhY2nDs24gZGUgYmFubmVycycpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdObyBzZSBwdWRpZXJvbiBlbmNvbnRyYXIgbG9zIGVsZW1lbnRvcyBkZSBuYXZlZ2FjacOzbiBwYXJhIGJhbm5lcnM6Jywge1xyXG4gICAgICAgICAgICAvLyAgICAgcHJldkJ1dHRvbjogISFwcmV2QnV0dG9uLFxyXG4gICAgICAgICAgICAvLyAgICAgbmV4dEJ1dHRvbjogISFuZXh0QnV0dG9uLFxyXG4gICAgICAgICAgICAvLyAgICAgc3dpcGVyRWxlbWVudDogISFzd2lwZXJFbGVtZW50XHJcbiAgICAgICAgICAgIC8vIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFjdHVhbGl6YSBsYSBjb25maWd1cmFjacOzbiBkZWwgU3dpcGVyIGVzcGVjw61maWNhbWVudGUgcGFyYSBiYW5uZXJzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdXBkYXRlU3dpcGVyRm9yQmFubmVycyhzd2lwZXJFbGVtZW50OiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAoc3dpcGVyRWxlbWVudC5zd2lwZXIpIHtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ0FjdHVhbGl6YW5kbyBjb25maWd1cmFjacOzbiBkZSBTd2lwZXIgcGFyYSBiYW5uZXJzJyk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvLyBDb25maWd1cmFjacOzbiBlc3BlY8OtZmljYSBwYXJhIGJhbm5lcnNcclxuICAgICAgICAgICAgc3dpcGVyRWxlbWVudC5zd2lwZXIucGFyYW1zLnNsaWRlc1Blckdyb3VwID0gMTtcclxuICAgICAgICAgICAgc3dpcGVyRWxlbWVudC5zd2lwZXIuYWxsb3dTbGlkZU5leHQgPSB0cnVlO1xyXG4gICAgICAgICAgICBzd2lwZXJFbGVtZW50LnN3aXBlci5hbGxvd1NsaWRlUHJldiA9IHRydWU7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvLyBBY3R1YWxpemFyIHRhbWJpw6luIGxvcyBicmVha3BvaW50cyBzaSBleGlzdGVuXHJcbiAgICAgICAgICAgIGlmIChzd2lwZXJFbGVtZW50LnN3aXBlci5wYXJhbXMuYnJlYWtwb2ludHMpIHtcclxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHN3aXBlckVsZW1lbnQuc3dpcGVyLnBhcmFtcy5icmVha3BvaW50cykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHN3aXBlckVsZW1lbnQuc3dpcGVyLnBhcmFtcy5icmVha3BvaW50c1trZXldLnNsaWRlc1Blckdyb3VwID0gMTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBzd2lwZXJFbGVtZW50LnN3aXBlci51cGRhdGUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25maWd1cmEgbG9zIGV2ZW50IGxpc3RlbmVycyBwYXJhIGxvcyBib3RvbmVzIGRlIG5hdmVnYWNpw7NuIGRlIGJhbm5lcnNcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzZXR1cEJhbm5lck5hdmlnYXRpb25FdmVudExpc3RlbmVycyhwcmV2QnV0dG9uOiBFbGVtZW50LCBuZXh0QnV0dG9uOiBFbGVtZW50LCBzd2lwZXJFbGVtZW50OiBhbnkpOiB2b2lkIHtcclxuICAgICAgICAvLyBSZW1vdmVyIGV2ZW50IGxpc3RlbmVycyBleGlzdGVudGVzIHBhcmEgZXZpdGFyIGR1cGxpY2Fkb3NcclxuICAgICAgICBjb25zdCBwcmV2Q2xvbmUgPSBwcmV2QnV0dG9uLmNsb25lTm9kZSh0cnVlKTtcclxuICAgICAgICBjb25zdCBuZXh0Q2xvbmUgPSBuZXh0QnV0dG9uLmNsb25lTm9kZSh0cnVlKTtcclxuICAgICAgICBwcmV2QnV0dG9uLnBhcmVudE5vZGU/LnJlcGxhY2VDaGlsZChwcmV2Q2xvbmUsIHByZXZCdXR0b24pO1xyXG4gICAgICAgIG5leHRCdXR0b24ucGFyZW50Tm9kZT8ucmVwbGFjZUNoaWxkKG5leHRDbG9uZSwgbmV4dEJ1dHRvbik7XHJcblxyXG4gICAgICAgIC8vIEFncmVnYXIgbnVldm9zIGV2ZW50IGxpc3RlbmVyc1xyXG4gICAgICAgIHByZXZDbG9uZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XHJcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ0NsaWNrIGVuIGJvdMOzbiBhbnRlcmlvciAoYmFubmVycyknKTtcclxuICAgICAgICAgICAgaWYgKHN3aXBlckVsZW1lbnQuc3dpcGVyKSB7XHJcbiAgICAgICAgICAgICAgICBzd2lwZXJFbGVtZW50LnN3aXBlci5zbGlkZVByZXYoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBuZXh0Q2xvbmUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xyXG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdDbGljayBlbiBib3TDs24gc2lndWllbnRlIChiYW5uZXJzKScpO1xyXG4gICAgICAgICAgICBpZiAoc3dpcGVyRWxlbWVudC5zd2lwZXIpIHtcclxuICAgICAgICAgICAgICAgIHN3aXBlckVsZW1lbnQuc3dpcGVyLnNsaWRlTmV4dCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBcGxpY2EgZWwgZXZlbnRvIGBzZWxlY3RfcHJvbW90aW9uYCBqdW50byBjb24gZWwgYmFubmVyIHF1ZSBpbnRlcmFjdMO6YS5cclxuICAgICAqIEBwYXJhbSBiYW5uZXIgXHJcbiAgICAgKi9cclxuICAgIHNlbGVjdFByb21vdGlvbihiYW5uZXI6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5jYWxsRXZlbnQoJ3NlbGVjdF9wcm9tb3Rpb24nLCBiYW5uZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogT2J0aWVuZSBsYSBjb25maWd1cmFjacOzbiBlc3BlY8OtZmljYSBkZWwgU3dpcGVyIHBhcmEgYmFubmVyc1xyXG4gICAgICogU29icmVzY3JpYmUgbGEgY29uZmlndXJhY2nDs24gYmFzZSBzaSBlcyBuZWNlc2FyaW9cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBnZXRCYW5uZXJTd2lwZXJDb25maWd1cmF0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IDEsXHJcbiAgICAgICAgICAgIHNwYWNlQmV0d2VlbjogMCxcclxuICAgICAgICAgICAgc2xpZGVzUGVyR3JvdXA6IDEsXHJcbiAgICAgICAgICAgIG5hdmlnYXRpb246IGZhbHNlLCAvLyBEZXNoYWJpbGl0YW1vcyBsYSBuYXZlZ2FjacOzbiBwb3IgZGVmZWN0b1xyXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiB7XHJcbiAgICAgICAgICAgICAgICBlbDogJy5zd2lwZXItcGFnaW5hdGlvbicsXHJcbiAgICAgICAgICAgICAgICBjbGlja2FibGU6IHRydWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGxvb3A6IHRydWUsXHJcbiAgICAgICAgICAgIGF1dG9wbGF5OiB7XHJcbiAgICAgICAgICAgICAgICBkZWxheTogNTAwMCxcclxuICAgICAgICAgICAgICAgIGRpc2FibGVPbkludGVyYWN0aW9uOiBmYWxzZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZWZmZWN0OiAnZmFkZScsXHJcbiAgICAgICAgICAgIGZhZGVFZmZlY3Q6IHtcclxuICAgICAgICAgICAgICAgIGNyb3NzRmFkZTogdHJ1ZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufVxyXG4iLCJAaWYoYmFubmVycy5sZW5ndGggPiAwKSB7XHJcbiAgICA8c2VjdGlvbiBbbmdDbGFzc109XCJ0cmltQ2xhc3NCbG9jayhtZXRhPy5jb2RlKSsnIGNvbnRhaW5lci1mbHVpZCBweC0wJ1wiXHJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwibWV0YS5zdHlsZXM/LmJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtaW1hZ2VdPVwibWV0YS5zdHlsZXM/LmJhY2tncm91bmRJbWFnZSA/ICd1cmwoJyArIG1lZGlhVXJsICsgbWV0YS5zdHlsZXM/LmJhY2tncm91bmRJbWFnZSArJyknIDogJ2luaGVyaXQnXCI+XHJcblxyXG4gICAgICAgIEBpZiAoYmFubmVycy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgICA8IS0tIHNpIGVzIGZvcm1hdG8gZmlqbyAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICBAbGV0IGJhbm5lciA9IGJhbm5lcnNbMF07XHJcbiAgICAgICAgICAgICAgICBAaWYoIWJhbm5lcnMuc3R5bGVzPy5idXR0b24/LnRleHQpe1xyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gYmFubmVyIHNpbiBib3RvbiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBbaHJlZl09XCJiYW5uZXIudXJsXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbSBjb2wtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctZmx1aWRcIiBbc3JjXT1cIm1lZGlhQmFubmVyVXJsICsgZ2V0SW1hZ2UoYmFubmVyKVwiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIHctMTAwIGgtMTAwIHN0YXJ0LTAgdG9wLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoYmFubmVyLnRpdGxlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIFtjbGFzc109XCInaXRlbS10aXRsZS1mdWxsIHB4LTIgaXRlbS1wb3NpdGlvbi12ZXJ0aWNhbC0nICsgKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5wb3NpdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5jb2xvcikgPyBiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8uY29sb3IgOiAnI2ZmZicgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2Jhbm5lci50aXRsZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihiYW5uZXIuc3VidGl0bGUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBbc3R5bGUuY29sb3JdPVwiKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5jb2xvcikgPyBiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8uY29sb3IgOiAnIzAwMCcgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIidweC00IGl0ZW0tc3VidGl0bGUtZnVsbCBpdGVtLXBvc2l0aW9uLXZlcnRpY2FsLScgKyAoYmFubmVyLnN0eWxlcz8uZGVzY3JpcHRpb24/LnBvc2l0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tiYW5uZXIuc3VidGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBiYW5uZXIgZmlqbyBjb24gYm90b24gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0gY29sLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctZmx1aWRcIiBbc3JjXT1cIm1lZGlhQmFubmVyVXJsICsgZ2V0SW1hZ2UoYmFubmVyKVwiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgdy0xMDAgaC0xMDAgc3RhcnQtMCB0b3AtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGJhbm5lci50aXRsZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIFtjbGFzc109XCInaXRlbS10aXRsZS1mdWxsIHB4LTIgaXRlbS1wb3NpdGlvbi12ZXJ0aWNhbC0nICsgKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5wb3NpdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCIoYmFubmVyLnN0eWxlcz8uZGVzY3JpcHRpb24/LmNvbG9yKSA/IGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5jb2xvciA6ICcjMDAwJyBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tiYW5uZXIudGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoYmFubmVyLnN1YnRpdGxlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5jb2xvcikgPyBiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8uY29sb3IgOiAnIzAwMCcgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiJ3B4LTQgaXRlbS1zdWJ0aXRsZS1mdWxsIGl0ZW0tcG9zaXRpb24tdmVydGljYWwtJyArIChiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8ucG9zaXRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7YmFubmVyLnN1YnRpdGxlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzc109XCInaXRlbS1wb3NpdGlvbi12ZXJ0aWNhbC0nICsgKGJhbm5lci5zdHlsZXM/LmJ1dHRvbj8ucG9zaXRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGJhbm5lci5zdHlsZXM/LmJ1dHRvbj8udGV4dCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInt7YmFubmVyLnVybH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIidpdGVtLWJ1dHRvbi1mdWxsIGJ0biBidG4tbGlnaHQgJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tiYW5uZXIuc3R5bGVzLmJ1dHRvbi50ZXh0fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgIDwhLS0gc2kgZXMgY2Fycm91c2VsIC0tPlxyXG4gICAgICAgICAgICA8IS0tICBAaWYoc3dpcGVyRWxlbWVudCgpICE9IG51bGwpeyAtLT5cclxuICAgICAgICAgICAgICAgIDxzd2lwZXItY29udGFpbmVyIGluaXQ9XCJmYWxzZVwiIFtpZF09XCJtZXRhPy5jb2RlXCI+XHJcbiAgICAgICAgICAgICAgICBAZm9yIChiYW5uZXIgb2YgYmFubmVyczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPHN3aXBlci1zbGlkZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIWJhbm5lci5zdHlsZXM/LmJ1dHRvbj8udGV4dCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gYmFubmVyIHNpbiBib3RvbiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYoYmFubmVyLnVybCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cImJhbm5lci51cmxcIiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cIm1lZGlhQmFubmVyVXJsICsgZ2V0SW1hZ2UoYmFubmVyKVwiIGFsdD1cIlwiIGNsYXNzPVwiaW1nLWZsdWlkIHctMTAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJtZWRpYUJhbm5lclVybCArIGdldEltYWdlKGJhbm5lcilcIiBhbHQ9XCJcIiAgY2xhc3M9XCJpbWctZmx1aWQgdy0xMDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBiYW5uZXIgY29uIGJvdG9uIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJtZWRpYUJhbm5lclVybCArIGdldEltYWdlKGJhbm5lcilcIiBhbHQ9XCJcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB3LTEwMCBoLTEwMCBzdGFydC0wIHRvcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihiYW5uZXIudGl0bGUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIFtjbGFzc109XCInaXRlbS10aXRsZS1mdWxsIHB4LTIgaXRlbS1wb3NpdGlvbi12ZXJ0aWNhbC0nKyAoYmFubmVyLnN0eWxlcz8uZGVzY3JpcHRpb24/LnBvc2l0aW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cIihiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8uY29sb3IpID8gYmFubmVyLnN0eWxlcz8uZGVzY3JpcHRpb24/LmNvbG9yIDogJyMwMDAnIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7YmFubmVyLnRpdGxlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGJhbm5lci5zdWJ0aXRsZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBbc3R5bGUuY29sb3JdPVwiKGJhbm5lci5zdHlsZXM/LmRlc2NyaXB0aW9uPy5jb2xvcikgPyBiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8uY29sb3IgOiAnIzAwMCcgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiJ3B4LTQgaXRlbS1zdWJ0aXRsZS1mdWxsIGl0ZW0tcG9zaXRpb24tdmVydGljYWwtJyArIChiYW5uZXIuc3R5bGVzPy5kZXNjcmlwdGlvbj8ucG9zaXRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tiYW5uZXIuc3VidGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzXT1cIidpdGVtLXBvc2l0aW9uLXZlcnRpY2FsLScgKyAoYmFubmVyLnN0eWxlcz8uYnV0dG9uPy5wb3NpdGlvbilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZihiYW5uZXIuc3R5bGVzPy5idXR0b24/LnRleHQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJ7e2Jhbm5lci51cmx9fVwiIFtjbGFzc109XCInaXRlbS1idXR0b24tZnVsbCBidG4gYnRuLWxpZ2h0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2Jhbm5lci5zdHlsZXMuYnV0dG9uLnRleHR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3dpcGVyLXNsaWRlPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L3N3aXBlci1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwhLS0gIH0gLS0+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgIDwvc2VjdGlvbj5cclxufSJdfQ==
|