@maplander/components 0.21.76 → 0.21.77

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/bundles/maplander-components.umd.js +12 -12
  2. package/bundles/maplander-components.umd.js.map +1 -1
  3. package/bundles/maplander-components.umd.min.js +2 -2
  4. package/bundles/maplander-components.umd.min.js.map +1 -1
  5. package/esm2015/lib/components/filters/filters.component.js +1 -1
  6. package/esm2015/lib/components/panorama-visor/panorama-visor.component.js +3 -3
  7. package/esm2015/lib/components/property/components/details/details.component.js +1 -1
  8. package/esm2015/lib/components/property/components/editor/editor.component.js +3 -3
  9. package/esm2015/lib/components/property/components/gallery/gallery.component.js +1 -1
  10. package/esm2015/lib/components/property/components/multimedia-uploader/multimedia-uploader.component.js +1 -1
  11. package/esm2015/lib/components/property/components/property/property.component.js +1 -1
  12. package/esm2015/lib/components/property/components/slideshow/slide-show.component.js +1 -1
  13. package/esm2015/lib/components/property/components/stats/stats.component.js +1 -1
  14. package/esm2015/lib/components/property-card/property-card.component.js +1 -1
  15. package/esm5/lib/components/filters/filters.component.js +1 -1
  16. package/esm5/lib/components/panorama-visor/panorama-visor.component.js +3 -3
  17. package/esm5/lib/components/property/components/details/details.component.js +1 -1
  18. package/esm5/lib/components/property/components/editor/editor.component.js +3 -3
  19. package/esm5/lib/components/property/components/gallery/gallery.component.js +1 -1
  20. package/esm5/lib/components/property/components/multimedia-uploader/multimedia-uploader.component.js +1 -1
  21. package/esm5/lib/components/property/components/property/property.component.js +1 -1
  22. package/esm5/lib/components/property/components/slideshow/slide-show.component.js +1 -1
  23. package/esm5/lib/components/property/components/stats/stats.component.js +1 -1
  24. package/esm5/lib/components/property-card/property-card.component.js +1 -1
  25. package/fesm2015/maplander-components.js +12 -12
  26. package/fesm2015/maplander-components.js.map +1 -1
  27. package/fesm5/maplander-components.js +12 -12
  28. package/fesm5/maplander-components.js.map +1 -1
  29. package/maplander-components.metadata.json +1 -1
  30. package/package.json +1 -1
@@ -622,13 +622,13 @@ var EditorComponent = /** @class */ (function () {
622
622
  EditorComponent.decorators = [
623
623
  { type: Component, args: [{
624
624
  selector: 'lib-property-editor',
625
- template: "<form class=\"editor\" [formGroup]=\"propertyForm\" autocomplete=\"off\">\r\n <div class=\"offering\">\r\n <p class=\"section_label\"><span>Tipo de oferta</span> <span>Informaci\u00F3n P\u00FAblica</span></p>\r\n <mat-button-toggle-group class=\"offering__toggle\" formControlName=\"offering\">\r\n <ng-container *ngFor=\"let offering of offeringTypeList\">\r\n <mat-button-toggle\r\n [disabled]=\"(propertyType === 'ROOM' && offering.value === 'SALE') || (propertyType === 'INVESTMENT' && offering.value === 'RENT')\"\r\n [value]=\"offering.value\">{{offering.name}}</mat-button-toggle>\r\n </ng-container>\r\n </mat-button-toggle-group>\r\n </div>\r\n <ng-template [ngIf]=\"propertyForm.controls['offering'].value === 'RENT'\">\r\n <div class=\"direct-debit\">\r\n <mat-checkbox class=\"direct-debit__check-box\" formControlName=\"consumerReporting\">Domiciliaci\u00F3n</mat-checkbox>\r\n <mat-radio-group class=\"direct-debit__radio-group\" aria-label=\"Select an option\"\r\n formControlName=\"consumerReportingOption\"\r\n *ngIf=\"propertyForm.controls['consumerReporting'].value\">\r\n <mat-radio-button class=\"direct-debit__radio-button\" [value]=\"1\">Requerir certificado <br> de fiabilidad\r\n </mat-radio-button>\r\n <mat-radio-button class=\"direct-debit__radio-button\" [value]=\"2\">Requerir poliza <br> de arrendamiento\r\n </mat-radio-button>\r\n <p>\r\n Para mayor informaci\u00F3n de este servicio visite <br>\r\n <a href=\"https://www.burorentas.mx\">\r\n www.burorentas.mx\r\n </a>\r\n </p>\r\n <mat-error *ngIf=\"propertyForm.controls['consumerReportingOption'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n </mat-radio-group>\r\n </div>\r\n </ng-template>\r\n <div class=\"pricing\">\r\n <mat-form-field appearance=\"outline\" class=\"pricing__form-field\">\r\n <mat-label>Moneda</mat-label>\r\n <mat-select formControlName=\"currency\">\r\n <ng-container *ngFor=\"let currency of currencyList\">\r\n <mat-option [value]=\"currency.type\">{{currency.type}}</mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <mat-error *ngIf=\"propertyForm.controls['currency'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"pricing__form-field\">\r\n <mat-label>Precio deseado</mat-label>\r\n <input libFormatPrice autocomplete=\"off\" matInput=\"\" type=\"text\" title=\"Max price\" formControlName=\"price\"\r\n [control]=\"propertyForm.controls['price']\" [currency]=\"propertyForm.get('currency').value\">\r\n <mat-error *ngIf=\"propertyForm.controls['price'].hasError('format')\">\r\n Debe ingresar solo numeros\r\n </mat-error>\r\n <mat-error *ngIf=\"propertyForm.controls['price'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"pricing__form-field\">\r\n <mat-label>Precio m\u00EDnimo</mat-label>\r\n <input libFormatPrice autocomplete=\"off\" matInput=\"\" type=\"text\" title=\"Min price\" formControlName=\"minPrice\"\r\n [control]=\"propertyForm.controls['minPrice']\" [currency]=\"propertyForm.get('currency').value\">\r\n <mat-error *ngIf=\"propertyForm.controls['minPrice'].hasError('minPriceInvalid')\">\r\n Este valor debe ser menor al precio deseado\r\n </mat-error>\r\n <mat-error *ngIf=\"propertyForm.controls['minPrice'].hasError('format')\">\r\n Debe ingresar solo numeros\r\n </mat-error>\r\n </mat-form-field>\r\n <div class=\"pricing__maintenance-fee\" *ngIf=\"propertyType !== 'INVESTMENT' && propertyType !== 'LAND'\">\r\n <mat-checkbox formControlName=\"maintenance\">Tiene cuota de mantenimiento\r\n </mat-checkbox>\r\n <mat-form-field appearance=\"outline\" class=\"pricing__form-field\"\r\n *ngIf=\"propertyForm.controls['maintenance'].value\">\r\n <mat-label>Cuota de mantenimiento</mat-label>\r\n <input autocomplete=\"off\" matInput type=\"text\" libFormatPrice title=\"Price\"\r\n [control]=\"propertyForm.controls['maintenancePrice']\"\r\n [currency]=\"propertyForm.get('currency').value\"\r\n formControlName=\"maintenancePrice\">\r\n <mat-error *ngIf=\"propertyForm.controls['maintenancePrice'].hasError('format')\">\r\n Debe ingresar solo numeros\r\n </mat-error>\r\n <mat-error *ngIf=\"propertyForm.controls['maintenancePrice'].hasError('required')\">\r\n Esta campo es requerido\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"sku__maintenance-fee\">\r\n <mat-form-field appearance=\"outline\" class=\"sku__form-field\">\r\n <mat-label>SKU</mat-label>\r\n <input matInput=\"\" title=\"SKU\" formControlName=\"sku\">\r\n <mat-error *ngIf=\"propertyForm.controls['sku'].hasError('pattern')\">\r\n SKU invalida\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <ng-template [ngIf]=\"propertyForm.controls['offering'].value === 'RENT' && propertyType !== 'INVESTMENT'\">\r\n <div class=\"pricing__maintenance-fee\" *ngIf=\"propertyType !== 'ROOM'\">\r\n <mat-checkbox formControlName=\"transfer\">Traspaso\r\n </mat-checkbox>\r\n <mat-form-field appearance=\"outline\" class=\"pricing__form-field\"\r\n *ngIf=\"propertyForm.controls['transfer'].value\">\r\n <mat-label>Monto por traspaso</mat-label>\r\n <input autocomplete=\"off\" matInput type=\"text\" libFormatPrice\r\n title=\"Price\" [control]=\"propertyForm.controls['transferPrice']\"\r\n [currency]=\"propertyForm.get('currency').value\"\r\n formControlName=\"transferPrice\">\r\n <mat-error *ngIf=\"propertyForm.controls['transferPrice'].hasError('format')\">\r\n Debe ingresar solo numeros\r\n </mat-error>\r\n <mat-error *ngIf=\"propertyForm.controls['transferPrice'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <hr>\r\n <div class=\"address\" formGroupName=\"address\">\r\n <p class=\"section_label\">\r\n Direcci\u00F3n\r\n <button mat-flat-button=\"\" type=\"button\" color=\"primary\" (click)=\"goToSelectAddress()\"\r\n class=\"address__label-button\">\r\n COLOCAR UBICACI\u00D3N EN EL MAPA\r\n </button>\r\n </p>\r\n <div class=\"address__body\">\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>Pa\u00EDs</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Country\" formControlName=\"country\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>C\u00F3digo postal</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Postal code\" formControlName=\"postalCode\" type=\"number\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>Entidad Federativa</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"State\" formControlName=\"state\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>Ciudad</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"City\" formControlName=\"city\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>Alcaldia/Municipio</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Township\" formControlName=\"township\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>Colonia</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Colony\" formControlName=\"colony\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>Vialidad</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Street\" formControlName=\"street\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>N\u00FAmero exterior</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"No exterior\" formControlName=\"extNumber\" type=\"number\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>N\u00FAmero interior</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"No interior\" formControlName=\"intNumber\" type=\"number\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>Manzana</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Mz\" formControlName=\"mz\" type=\"number\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>Lote</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Lt\" formControlName=\"lt\" type=\"number\">\r\n </mat-form-field>\r\n <div class=\"address__visibility\">\r\n <p class=\"section_label\">\r\n Ubicaci\u00F3n en el mapa\r\n </p>\r\n <div class=\"address__visibility-body\">\r\n <mat-radio-group formControlName=\"visible\" class=\"address__visibility-radio-group\">\r\n <mat-radio-button class=\"visibility-radio-group__button\" [value]=\"true\">\r\n Mostrar direcci\u00F3n exacta\r\n </mat-radio-button>\r\n <mat-radio-button class=\"visibility-radio-group__button\" [value]=\"false\">\r\n Mostrar direcci\u00F3n aproximada\r\n </mat-radio-button>\r\n </mat-radio-group>\r\n <p class=\"visibility__about\">\r\n <span class=\"visibility__about-label\" [ngStyle]=\"{'font-weight': propertyForm.get('address.visible').value ? 'bold' : 'normal'}\">\r\n Mostrar direcci\u00F3n exacta: muestra el <br> lugar preciso en el mapa con un marcador.\r\n </span>\r\n <span class=\"visibility__about-label\" [ngStyle]=\"{'font-weight': !propertyForm.get('address.visible').value ? 'bold' : 'normal'}\">\r\n Mostrar direcci\u00F3n aproximada: reacomoda la ubicaci\u00F3n en un radio de 50 metros, ocultando calle y n\u00FAmero.\r\n </span>\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <hr>\r\n <!-- Features [START], Only visible for all property types except INVESTMENT -->\r\n <div class=\"features\">\r\n <p class=\"section_label\">Caracteristicas</p>\r\n <div class=\"features__body\">\r\n <div class=\"features__item\" *ngIf=\"propertyType === 'HOUSE' || propertyType === 'APARTMENT'\">\r\n <span class=\"label__icon ic-features-bedroom\"></span>\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Habitaciones</mat-label>\r\n <input autocomplete=\"off\" matInput title=\"Bedrooms\" formControlName=\"bedrooms\" type=\"number\">\r\n <mat-error *ngIf=\"propertyForm.controls['bedrooms'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n <mat-error *ngIf=\"propertyForm.controls['bedrooms'].hasError('pattern')\">\r\n Valor invalido\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"features__item features-item-bathrooms\"\r\n *ngIf=\"propertyType === 'HOUSE' || propertyType === 'APARTMENT' || propertyType === 'ROOM'\">\r\n <span class=\"label__icon ic-features-bathroom\"></span>\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Ba\u00F1os</mat-label>\r\n <input autocomplete=\"off\" title=\"Bathrooms\" matInput formControlName=\"bathrooms\" type=\"number\">\r\n <mat-error *ngIf=\"propertyForm.controls['bathrooms'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n <mat-error *ngIf=\"propertyForm.controls['bathrooms'].hasError('pattern')\">\r\n Valor invalido\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"features__item features-item-parking-spaces\" *ngIf=\"propertyType !== 'INVESTMENT'\">\r\n <span class=\"label__icon ic-features-parking\"></span>\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Estacionamientos</mat-label>\r\n <input autocomplete=\"off\" title=\"Parking spaces\" matInput formControlName=\"parkingSpaces\" type=\"number\">\r\n <mat-error *ngIf=\"propertyForm.controls['parkingSpaces'].hasError('pattern')\">\r\n Valor invalido\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <!-- Surfaces [START] Only visible for property type distinct INVESTMENT-->\r\n <div class=\"features__item features-item-surface\" *ngIf=\"propertyType !== 'INVESTMENT'\">\r\n <p class=\"features-item__label\">\r\n <span class=\"label__icon ic-features-surface\"></span>\r\n Superficie\r\n </p>\r\n <mat-radio-group class=\"features-item__radio-group\" formControlName=\"unit\">\r\n <mat-radio-button class=\"features-item__radio-button\" [value]=\"'M2'\">m<sup>2</sup></mat-radio-button>\r\n <mat-radio-button class=\"features-item__radio-button\" [value]=\"'FT2'\">sq ft</mat-radio-button>\r\n </mat-radio-group>\r\n <!--\r\n Build area [START]\r\n Only visible for HOUSE, APARTMENT, ROOM, OFFICE, RETAIL, WAREHOUSE and LAND property types\r\n -->\r\n <mat-form-field appearance=\"outline\"\r\n *ngIf=\"propertyType !== 'INVESTMENT'\">\r\n <mat-label>\r\n <ng-container [ngSwitch]=\"propertyType\">\r\n <span *ngSwitchDefault>Construida</span>\r\n <span *ngSwitchCase=\"'OFFICE'\">De Oficinas</span>\r\n <span *ngSwitchCase=\"'LAND'\">De Terreno</span>\r\n </ng-container>\r\n </mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Surface build\" formControlName=\"mainArea\" type=\"number\">\r\n <span matSuffix>\r\n <span *ngIf=\"propertyForm.controls['unit'].value === 'M2'\">m<sup>2</sup></span>\r\n <span *ngIf=\"propertyForm.controls['unit'].value === 'FT2'\">sq ft</span>\r\n </span>\r\n <mat-error *ngIf=\"propertyForm.controls['mainArea'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n <mat-error *ngIf=\"propertyForm.controls['mainArea'].hasError('pattern')\">\r\n Valor invalido\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- Build area [END] -->\r\n <!--\r\n Secondary build area [START]\r\n Only visible for HOUSE, and WAREHOUSE\r\n -->\r\n <mat-form-field appearance=\"outline\"\r\n *ngIf=\"propertyType === 'HOUSE' || propertyType === 'WAREHOUSE'\">\r\n <mat-label>\r\n <ng-container [ngSwitch]=\"propertyType\">\r\n <span *ngSwitchCase=\"'HOUSE'\">De terreno</span>\r\n <span *ngSwitchCase=\"'WAREHOUSE'\">De oficinas</span>\r\n </ng-container>\r\n </mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Surface land build\" formControlName=\"secondaryArea\" type=\"number\">\r\n <span matSuffix>\r\n <span *ngIf=\"propertyForm.controls['unit'].value === 'M2'\">m<sup>2</sup></span>\r\n <span *ngIf=\"propertyForm.controls['unit'].value === 'FT2'\">sq ft</span>\r\n </span>\r\n <mat-error *ngIf=\"propertyForm.controls['secondaryArea'].hasError('pattern')\">\r\n Valor invalido\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- Secondary build area [END]-->\r\n </div>\r\n <!-- Surfaces [END]-->\r\n <!-- Year build [START], Only visible for HOUSE, APARTMENT, ROOM, OFFICE, RETAIL and WAREHOUSE property types -->\r\n <div class=\"features__item\"\r\n *ngIf=\"propertyType === 'HOUSE' || propertyType === 'APARTMENT' || propertyType === 'ROOM' || propertyType === 'OFFICE' || propertyType === 'RETAIL' || propertyType === 'WAREHOUSE'\">\r\n <p class=\"features-item__label\">\r\n <span class=\"label__icon\"><mat-icon>event</mat-icon></span>\r\n A\u00F1o de construcci\u00F3n\r\n </p>\r\n <lib-property-custom-datepicker formControlName=\"buildIn\"></lib-property-custom-datepicker>\r\n </div>\r\n <!-- Year build [END] -->\r\n <!-- Land use [START], Only for LAND property type -->\r\n <div class=\"features__item\" *ngIf=\"propertyType === 'LAND'\">\r\n <p class=\"features-item__label\">\r\n <span class=\"label__icon ic-features-land-use\"></span>\r\n Uso de suelo\r\n </p>\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Tipo</mat-label>\r\n <mat-select formControlName=\"landUse\">\r\n <mat-option [value]=\"null\">\r\n Seleccione una opci\u00F3n\r\n </mat-option>\r\n <ng-container *ngFor=\"let use of landUseList\">\r\n <mat-option [value]=\"use.value\">\r\n {{use.name}}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <!-- Land use [END] -->\r\n </div>\r\n </div>\r\n <!-- Features [END] -->\r\n <hr>\r\n <div class=\"agreement\">\r\n <p class=\"section_label\">Contrato</p>\r\n <div class=\"agreement__body\">\r\n <mat-form-field appearance=\"outline\" class=\"agreement__form-field\">\r\n <mat-label>Fecha de inicio</mat-label>\r\n <input autocomplete=\"off\" matInput formControlName=\"agreementDate\" [matDatepicker]=\"dp2\"\r\n placeholder=\"Seleccione una fecha\"\r\n title=\"Chose a date\">\r\n <mat-datepicker-toggle matSuffix [for]=\"dp2\"></mat-datepicker-toggle>\r\n <mat-datepicker #dp2 [disabled]=\"false\"></mat-datepicker>\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"agreement__form-field\">\r\n <mat-label>Duraci\u00F3n</mat-label>\r\n <mat-select formControlName=\"duration\">\r\n <mat-option [value]=\"null\">\r\n Seleccione una opci\u00F3n\r\n </mat-option>\r\n <ng-container *ngFor=\"let time of durationList\">\r\n <mat-option [value]=\"time\">\r\n <ng-container [ngSwitch]=\"time\">\r\n <span *ngSwitchCase=\"365\">1 a\u00F1o</span>\r\n <span *ngSwitchCase=\"180\">6 meses</span>\r\n <span *ngSwitchDefault>{{time}} d\u00EDas</span>\r\n </ng-container>\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"agreement__form-field\">\r\n <mat-label>Comisi\u00F3n</mat-label>\r\n <mat-select formControlName=\"commission\">\r\n <mat-option [value]=\"null\">\r\n Seleccione una opci\u00F3n\r\n </mat-option>\r\n <ng-container *ngFor=\"let commission of commissionList\">\r\n <mat-option [value]=\"commission\">\r\n <span *ngIf=\"propertyForm.controls['offering'].value === 'RENT'\">\r\n <ng-container [ngSwitch]=\"commission\">\r\n <span *ngSwitchCase=\"1\">1 mes = {{propertyForm.controls['price'].value * commission | currency : '' : 'symbol' : '1.0-0'}}</span>\r\n <span *ngSwitchDefault>\r\n {{commission}} meses = {{propertyForm.controls['price'].value * commission | currency : '' : 'symbol' : '1.0-0'}}\r\n </span>\r\n </ng-container>\r\n </span>\r\n <span *ngIf=\"propertyForm.controls['offering'].value === 'SALE'\">\r\n <span>{{commission * 100 | currency: '' : '': '1.1-1'}}\r\n % = {{propertyForm.controls['price'].value * commission | currency : '' : 'symbol' : '1.0-0'}}</span>\r\n </span>\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <mat-error *ngIf=\"propertyForm.controls['commission'].hasError('commissionInvalid')\">\r\n Es necesario ingresar el precio deseado\r\n </mat-error>\r\n </mat-form-field>\r\n <ng-template [ngIf]=\"propertyType === 'INVESTMENT'\">\r\n <mat-form-field appearance=\"outline\" class=\"investment-return__form-field\">\r\n <mat-label>Retorno de Inversi\u00F3n</mat-label>\r\n <input autocomplete=\"off\" matInput title=\"Investment return\" formControlName=\"roi\" type=\"number\">\r\n <span matSuffix>%</span>\r\n </mat-form-field>\r\n </ng-template>\r\n <mat-checkbox class=\"agreement__body-check-box\" formControlName=\"exclusivity\">Contrato con exclusividad\r\n </mat-checkbox>\r\n <mat-checkbox class=\"agreement__body-check-box\" formControlName=\"mlm\">Quiero compartir en el {{mlsLabel || 'MLS'}}</mat-checkbox>\r\n <mat-form-field appearance=\"outline\" class=\"agreement__form-field\" *ngIf=\"propertyForm.controls['mlm'].value\">\r\n <mat-label>Monto de comisi\u00F3n compartida</mat-label>\r\n <mat-select formControlName=\"sharedCommission\">\r\n <mat-option [value]=\"null\">\r\n Seleccione una opci\u00F3n\r\n </mat-option>\r\n <ng-container *ngFor=\"let commission of sharedCommissionList\">\r\n <mat-option [value]=\"commission\">\r\n {{commission * 100}}% de mi comisi\u00F3n\r\n = {{propertyForm.controls['price'].value * propertyForm.controls['commission'].value * commission | currency : '' : 'symbol' : '1.0-0'}}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <mat-error *ngIf=\"propertyForm.controls['sharedCommission'].hasError('sharedCommissionInvalid')\">\r\n Debe seleccionar su comisi\u00F3n\r\n </mat-error>\r\n <mat-error *ngIf=\"propertyForm.controls['sharedCommission'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <hr>\r\n <div class=\"description\">\r\n <p class=\"section_label\">Descripci\u00F3n</p>\r\n <mat-form-field appearance=\"outline\" class=\"description__form-field\">\r\n <textarea matInput=\"\" cdkTextareaAutosize title=\"Description\" formControlName=\"description\"></textarea>\r\n <mat-hint align=\"end\"><span>N\u00FAmero de caracteres ideal: 3500</span>\r\n Actuales: {{propertyForm.controls['description'].value ? propertyForm.controls['description'].value.length : 0}}\r\n </mat-hint>\r\n <mat-error *ngIf=\"propertyForm.controls['description'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"external-link\">\r\n <p class=\"section_label\">Tour virtual</p>\r\n <mat-form-field appearance=\"outline\" class=\"external-link__form-field\">\r\n <input matInput=\"\" title=\"externalLink\" formControlName=\"externalLink\">\r\n <mat-error *ngIf=\"propertyForm.controls['externalLink'].hasError('pattern')\">\r\n Url invalida\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"notes\">\r\n <p class=\"section_label\">Notas</p>\r\n <mat-form-field appearance=\"outline\" class=\"notes__form-field\">\r\n <textarea matInput=\"\" cdkTextareaAutosize title=\"Notes\" formControlName=\"notes\"></textarea>\r\n </mat-form-field>\r\n </div>\r\n <hr *ngIf=\"propertyType !== 'INVESTMENT'\">\r\n <div class=\"amenities\" *ngIf=\"propertyType !== 'INVESTMENT'\">\r\n <p class=\"section_label\">Amenidades</p>\r\n <p class=\"amenities__list-amenities\">\r\n <ng-container *ngFor=\"let amenity of amenitiesList\">\r\n <span matRipple class=\"list-amenities__amenity\" (click)=\"updateAmenity(amenity)\">\r\n <span class=\"amenity__icon ic-amenities-{{amenity.iconName}}\"\r\n [ngClass]=\"{'amenity__icon-active': amenity.checked}\"></span>\r\n <span class=\"amenity__text\">{{amenity.name}}</span>\r\n </span>\r\n </ng-container>\r\n </p>\r\n </div>\r\n <div class=\"attributes\" *ngIf=\"propertyType !== 'INVESTMENT'\">\r\n <p class=\"section_label\">Caracteristicas de ubicaci\u00F3n</p>\r\n <p class=\"amenities__list-amenities\">\r\n <ng-container *ngFor=\"let feature of featuresList\">\r\n <span matRipple class=\"list-amenities__amenity\" (click)=\"updateAmenity(feature)\">\r\n <span class=\"amenity__icon ic-amenities-{{feature.iconName}}\"\r\n [ngClass]=\"{'amenity__icon-active': feature.checked}\"></span>\r\n <span class=\"amenity__text\">{{feature.name}}</span>\r\n </span>\r\n </ng-container>\r\n </p>\r\n </div>\r\n <button type=\"submit\" class=\"button-submit\" mat-button #btnSubmit>Enviar</button>\r\n</form>\r\n",
625
+ template: "<form class=\"editor\" [formGroup]=\"propertyForm\" autocomplete=\"off\">\r\n <div class=\"offering\">\r\n <p class=\"section_label\"><span>Tipo de oferta</span> <span>Informaci\u00F3n P\u00FAblica</span></p>\r\n <mat-button-toggle-group class=\"offering__toggle\" formControlName=\"offering\">\r\n <ng-container *ngFor=\"let offering of offeringTypeList\">\r\n <mat-button-toggle\r\n [disabled]=\"(propertyType === 'ROOM' && offering.value === 'SALE') || (propertyType === 'INVESTMENT' && offering.value === 'RENT')\"\r\n [value]=\"offering.value\">{{offering.name}}</mat-button-toggle>\r\n </ng-container>\r\n </mat-button-toggle-group>\r\n </div>\r\n <ng-template [ngIf]=\"propertyForm.controls['offering'].value === 'RENT'\">\r\n <div class=\"direct-debit\">\r\n <mat-checkbox class=\"direct-debit__check-box\" formControlName=\"consumerReporting\">Domiciliaci\u00F3n</mat-checkbox>\r\n <mat-radio-group class=\"direct-debit__radio-group\" aria-label=\"Select an option\"\r\n formControlName=\"consumerReportingOption\"\r\n *ngIf=\"propertyForm.controls['consumerReporting'].value\">\r\n <mat-radio-button class=\"direct-debit__radio-button\" [value]=\"1\">Requerir certificado <br> de fiabilidad\r\n </mat-radio-button>\r\n <mat-radio-button class=\"direct-debit__radio-button\" [value]=\"2\">Requerir poliza <br> de arrendamiento\r\n </mat-radio-button>\r\n <p>\r\n Para mayor informaci\u00F3n de este servicio visite <br>\r\n <a href=\"https://www.burorentas.mx\">\r\n www.burorentas.mx\r\n </a>\r\n </p>\r\n <mat-error *ngIf=\"propertyForm.controls['consumerReportingOption'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n </mat-radio-group>\r\n </div>\r\n </ng-template>\r\n <div class=\"pricing\">\r\n <mat-form-field appearance=\"outline\" class=\"pricing__form-field\">\r\n <mat-label>Moneda</mat-label>\r\n <mat-select formControlName=\"currency\">\r\n <ng-container *ngFor=\"let currency of currencyList\">\r\n <mat-option [value]=\"currency.type\">{{currency.type}}</mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <mat-error *ngIf=\"propertyForm.controls['currency'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"pricing__form-field\">\r\n <mat-label>Precio deseado</mat-label>\r\n <input libFormatPrice autocomplete=\"off\" matInput=\"\" type=\"text\" title=\"Max price\" formControlName=\"price\"\r\n [control]=\"propertyForm.controls['price']\" [currency]=\"propertyForm.get('currency').value\">\r\n <mat-error *ngIf=\"propertyForm.controls['price'].hasError('format')\">\r\n Debe ingresar solo n\u00FAmeros\r\n </mat-error>\r\n <mat-error *ngIf=\"propertyForm.controls['price'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"pricing__form-field\">\r\n <mat-label>Precio m\u00EDnimo</mat-label>\r\n <input libFormatPrice autocomplete=\"off\" matInput=\"\" type=\"text\" title=\"Min price\" formControlName=\"minPrice\"\r\n [control]=\"propertyForm.controls['minPrice']\" [currency]=\"propertyForm.get('currency').value\">\r\n <mat-error *ngIf=\"propertyForm.controls['minPrice'].hasError('minPriceInvalid')\">\r\n Este valor debe ser menor al precio deseado\r\n </mat-error>\r\n <mat-error *ngIf=\"propertyForm.controls['minPrice'].hasError('format')\">\r\n Debe ingresar solo n\u00FAmeros\r\n </mat-error>\r\n </mat-form-field>\r\n <div class=\"pricing__maintenance-fee\" *ngIf=\"propertyType !== 'INVESTMENT' && propertyType !== 'LAND'\">\r\n <mat-checkbox formControlName=\"maintenance\">Tiene cuota de mantenimiento\r\n </mat-checkbox>\r\n <mat-form-field appearance=\"outline\" class=\"pricing__form-field\"\r\n *ngIf=\"propertyForm.controls['maintenance'].value\">\r\n <mat-label>Cuota de mantenimiento</mat-label>\r\n <input autocomplete=\"off\" matInput type=\"text\" libFormatPrice title=\"Price\"\r\n [control]=\"propertyForm.controls['maintenancePrice']\"\r\n [currency]=\"propertyForm.get('currency').value\"\r\n formControlName=\"maintenancePrice\">\r\n <mat-error *ngIf=\"propertyForm.controls['maintenancePrice'].hasError('format')\">\r\n Debe ingresar solo n\u00FAmeros\r\n </mat-error>\r\n <mat-error *ngIf=\"propertyForm.controls['maintenancePrice'].hasError('required')\">\r\n Esta campo es requerido\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"sku__maintenance-fee\">\r\n <mat-form-field appearance=\"outline\" class=\"sku__form-field\">\r\n <mat-label>SKU</mat-label>\r\n <input matInput=\"\" title=\"SKU\" formControlName=\"sku\">\r\n <mat-error *ngIf=\"propertyForm.controls['sku'].hasError('pattern')\">\r\n SKU invalida\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <ng-template [ngIf]=\"propertyForm.controls['offering'].value === 'RENT' && propertyType !== 'INVESTMENT'\">\r\n <div class=\"pricing__maintenance-fee\" *ngIf=\"propertyType !== 'ROOM'\">\r\n <mat-checkbox formControlName=\"transfer\">Traspaso\r\n </mat-checkbox>\r\n <mat-form-field appearance=\"outline\" class=\"pricing__form-field\"\r\n *ngIf=\"propertyForm.controls['transfer'].value\">\r\n <mat-label>Monto por traspaso</mat-label>\r\n <input autocomplete=\"off\" matInput type=\"text\" libFormatPrice\r\n title=\"Price\" [control]=\"propertyForm.controls['transferPrice']\"\r\n [currency]=\"propertyForm.get('currency').value\"\r\n formControlName=\"transferPrice\">\r\n <mat-error *ngIf=\"propertyForm.controls['transferPrice'].hasError('format')\">\r\n Debe ingresar solo n\u00FAmeros\r\n </mat-error>\r\n <mat-error *ngIf=\"propertyForm.controls['transferPrice'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <hr>\r\n <div class=\"address\" formGroupName=\"address\">\r\n <p class=\"section_label\">\r\n Direcci\u00F3n\r\n <button mat-flat-button=\"\" type=\"button\" color=\"primary\" (click)=\"goToSelectAddress()\"\r\n class=\"address__label-button\">\r\n COLOCAR UBICACI\u00D3N EN EL MAPA\r\n </button>\r\n </p>\r\n <div class=\"address__body\">\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>Pa\u00EDs</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Country\" formControlName=\"country\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>C\u00F3digo postal</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Postal code\" formControlName=\"postalCode\" type=\"number\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>Entidad Federativa</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"State\" formControlName=\"state\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>Ciudad</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"City\" formControlName=\"city\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>Alcaldia/Municipio</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Township\" formControlName=\"township\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>Colonia</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Colony\" formControlName=\"colony\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>Vialidad</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Street\" formControlName=\"street\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>N\u00FAmero exterior</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"No exterior\" formControlName=\"extNumber\" type=\"number\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>N\u00FAmero interior</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"No interior\" formControlName=\"intNumber\" type=\"number\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>Manzana</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Mz\" formControlName=\"mz\" type=\"number\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"address__form-field\">\r\n <mat-label>Lote</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Lt\" formControlName=\"lt\" type=\"number\">\r\n </mat-form-field>\r\n <div class=\"address__visibility\">\r\n <p class=\"section_label\">\r\n Ubicaci\u00F3n en el mapa\r\n </p>\r\n <div class=\"address__visibility-body\">\r\n <mat-radio-group formControlName=\"visible\" class=\"address__visibility-radio-group\">\r\n <mat-radio-button class=\"visibility-radio-group__button\" [value]=\"true\">\r\n Mostrar direcci\u00F3n exacta\r\n </mat-radio-button>\r\n <mat-radio-button class=\"visibility-radio-group__button\" [value]=\"false\">\r\n Mostrar direcci\u00F3n aproximada\r\n </mat-radio-button>\r\n </mat-radio-group>\r\n <p class=\"visibility__about\">\r\n <span class=\"visibility__about-label\" [ngStyle]=\"{'font-weight': propertyForm.get('address.visible').value ? 'bold' : 'normal'}\">\r\n Mostrar direcci\u00F3n exacta: muestra el <br> lugar preciso en el mapa con un marcador.\r\n </span>\r\n <span class=\"visibility__about-label\" [ngStyle]=\"{'font-weight': !propertyForm.get('address.visible').value ? 'bold' : 'normal'}\">\r\n Mostrar direcci\u00F3n aproximada: reacomoda la ubicaci\u00F3n en un radio de 50 metros, ocultando calle y n\u00FAmero.\r\n </span>\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <hr>\r\n <!-- Features [START], Only visible for all property types except INVESTMENT -->\r\n <div class=\"features\">\r\n <p class=\"section_label\">Caracteristicas</p>\r\n <div class=\"features__body\">\r\n <div class=\"features__item\" *ngIf=\"propertyType === 'HOUSE' || propertyType === 'APARTMENT'\">\r\n <span class=\"label__icon ic-features-bedroom\"></span>\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Habitaciones</mat-label>\r\n <input autocomplete=\"off\" matInput title=\"Bedrooms\" formControlName=\"bedrooms\" type=\"number\">\r\n <mat-error *ngIf=\"propertyForm.controls['bedrooms'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n <mat-error *ngIf=\"propertyForm.controls['bedrooms'].hasError('pattern')\">\r\n Valor invalido\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"features__item features-item-bathrooms\"\r\n *ngIf=\"propertyType === 'HOUSE' || propertyType === 'APARTMENT' || propertyType === 'ROOM'\">\r\n <span class=\"label__icon ic-features-bathroom\"></span>\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Ba\u00F1os</mat-label>\r\n <input autocomplete=\"off\" title=\"Bathrooms\" matInput formControlName=\"bathrooms\" type=\"number\">\r\n <mat-error *ngIf=\"propertyForm.controls['bathrooms'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n <mat-error *ngIf=\"propertyForm.controls['bathrooms'].hasError('pattern')\">\r\n Valor invalido\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"features__item features-item-parking-spaces\" *ngIf=\"propertyType !== 'INVESTMENT'\">\r\n <span class=\"label__icon ic-features-parking\"></span>\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Estacionamientos</mat-label>\r\n <input autocomplete=\"off\" title=\"Parking spaces\" matInput formControlName=\"parkingSpaces\" type=\"number\">\r\n <mat-error *ngIf=\"propertyForm.controls['parkingSpaces'].hasError('pattern')\">\r\n Valor invalido\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <!-- Surfaces [START] Only visible for property type distinct INVESTMENT-->\r\n <div class=\"features__item features-item-surface\" *ngIf=\"propertyType !== 'INVESTMENT'\">\r\n <p class=\"features-item__label\">\r\n <span class=\"label__icon ic-features-surface\"></span>\r\n Superficie\r\n </p>\r\n <mat-radio-group class=\"features-item__radio-group\" formControlName=\"unit\">\r\n <mat-radio-button class=\"features-item__radio-button\" [value]=\"'M2'\">m<sup>2</sup></mat-radio-button>\r\n <mat-radio-button class=\"features-item__radio-button\" [value]=\"'FT2'\">sq ft</mat-radio-button>\r\n </mat-radio-group>\r\n <!--\r\n Build area [START]\r\n Only visible for HOUSE, APARTMENT, ROOM, OFFICE, RETAIL, WAREHOUSE and LAND property types\r\n -->\r\n <mat-form-field appearance=\"outline\"\r\n *ngIf=\"propertyType !== 'INVESTMENT'\">\r\n <mat-label>\r\n <ng-container [ngSwitch]=\"propertyType\">\r\n <span *ngSwitchDefault>Construida</span>\r\n <span *ngSwitchCase=\"'OFFICE'\">De Oficinas</span>\r\n <span *ngSwitchCase=\"'LAND'\">De Terreno</span>\r\n </ng-container>\r\n </mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Surface build\" formControlName=\"mainArea\" type=\"number\">\r\n <span matSuffix>\r\n <span *ngIf=\"propertyForm.controls['unit'].value === 'M2'\">m<sup>2</sup></span>\r\n <span *ngIf=\"propertyForm.controls['unit'].value === 'FT2'\">sq ft</span>\r\n </span>\r\n <mat-error *ngIf=\"propertyForm.controls['mainArea'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n <mat-error *ngIf=\"propertyForm.controls['mainArea'].hasError('pattern')\">\r\n Valor invalido\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- Build area [END] -->\r\n <!--\r\n Secondary build area [START]\r\n Only visible for HOUSE, and WAREHOUSE\r\n -->\r\n <mat-form-field appearance=\"outline\"\r\n *ngIf=\"propertyType === 'HOUSE' || propertyType === 'WAREHOUSE'\">\r\n <mat-label>\r\n <ng-container [ngSwitch]=\"propertyType\">\r\n <span *ngSwitchCase=\"'HOUSE'\">De terreno</span>\r\n <span *ngSwitchCase=\"'WAREHOUSE'\">De oficinas</span>\r\n </ng-container>\r\n </mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" title=\"Surface land build\" formControlName=\"secondaryArea\" type=\"number\">\r\n <span matSuffix>\r\n <span *ngIf=\"propertyForm.controls['unit'].value === 'M2'\">m<sup>2</sup></span>\r\n <span *ngIf=\"propertyForm.controls['unit'].value === 'FT2'\">sq ft</span>\r\n </span>\r\n <mat-error *ngIf=\"propertyForm.controls['secondaryArea'].hasError('pattern')\">\r\n Valor invalido\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- Secondary build area [END]-->\r\n </div>\r\n <!-- Surfaces [END]-->\r\n <!-- Year build [START], Only visible for HOUSE, APARTMENT, ROOM, OFFICE, RETAIL and WAREHOUSE property types -->\r\n <div class=\"features__item\"\r\n *ngIf=\"propertyType === 'HOUSE' || propertyType === 'APARTMENT' || propertyType === 'ROOM' || propertyType === 'OFFICE' || propertyType === 'RETAIL' || propertyType === 'WAREHOUSE'\">\r\n <p class=\"features-item__label\">\r\n <span class=\"label__icon\"><mat-icon>event</mat-icon></span>\r\n A\u00F1o de construcci\u00F3n\r\n </p>\r\n <lib-property-custom-datepicker formControlName=\"buildIn\"></lib-property-custom-datepicker>\r\n </div>\r\n <!-- Year build [END] -->\r\n <!-- Land use [START], Only for LAND property type -->\r\n <div class=\"features__item\" *ngIf=\"propertyType === 'LAND'\">\r\n <p class=\"features-item__label\">\r\n <span class=\"label__icon ic-features-land-use\"></span>\r\n Uso de suelo\r\n </p>\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Tipo</mat-label>\r\n <mat-select formControlName=\"landUse\">\r\n <mat-option [value]=\"null\">\r\n Seleccione una opci\u00F3n\r\n </mat-option>\r\n <ng-container *ngFor=\"let use of landUseList\">\r\n <mat-option [value]=\"use.value\">\r\n {{use.name}}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <!-- Land use [END] -->\r\n </div>\r\n </div>\r\n <!-- Features [END] -->\r\n <hr>\r\n <div class=\"agreement\">\r\n <p class=\"section_label\">Contrato</p>\r\n <div class=\"agreement__body\">\r\n <mat-form-field appearance=\"outline\" class=\"agreement__form-field\">\r\n <mat-label>Fecha de inicio</mat-label>\r\n <input autocomplete=\"off\" matInput formControlName=\"agreementDate\" [matDatepicker]=\"dp2\"\r\n placeholder=\"Seleccione una fecha\"\r\n title=\"Chose a date\">\r\n <mat-datepicker-toggle matSuffix [for]=\"dp2\"></mat-datepicker-toggle>\r\n <mat-datepicker #dp2 [disabled]=\"false\"></mat-datepicker>\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"agreement__form-field\">\r\n <mat-label>Duraci\u00F3n</mat-label>\r\n <mat-select formControlName=\"duration\">\r\n <mat-option [value]=\"null\">\r\n Seleccione una opci\u00F3n\r\n </mat-option>\r\n <ng-container *ngFor=\"let time of durationList\">\r\n <mat-option [value]=\"time\">\r\n <ng-container [ngSwitch]=\"time\">\r\n <span *ngSwitchCase=\"365\">1 a\u00F1o</span>\r\n <span *ngSwitchCase=\"180\">6 meses</span>\r\n <span *ngSwitchDefault>{{time}} d\u00EDas</span>\r\n </ng-container>\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"agreement__form-field\">\r\n <mat-label>Comisi\u00F3n</mat-label>\r\n <mat-select formControlName=\"commission\">\r\n <mat-option [value]=\"null\">\r\n Seleccione una opci\u00F3n\r\n </mat-option>\r\n <ng-container *ngFor=\"let commission of commissionList\">\r\n <mat-option [value]=\"commission\">\r\n <span *ngIf=\"propertyForm.controls['offering'].value === 'RENT'\">\r\n <ng-container [ngSwitch]=\"commission\">\r\n <span *ngSwitchCase=\"1\">1 mes = {{propertyForm.controls['price'].value * commission | currency : '' : 'symbol' : '1.0-0'}}</span>\r\n <span *ngSwitchDefault>\r\n {{commission}} meses = {{propertyForm.controls['price'].value * commission | currency : '' : 'symbol' : '1.0-0'}}\r\n </span>\r\n </ng-container>\r\n </span>\r\n <span *ngIf=\"propertyForm.controls['offering'].value === 'SALE'\">\r\n <span>{{commission * 100 | currency: '' : '': '1.1-1'}}\r\n % = {{propertyForm.controls['price'].value * commission | currency : '' : 'symbol' : '1.0-0'}}</span>\r\n </span>\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <mat-error *ngIf=\"propertyForm.controls['commission'].hasError('commissionInvalid')\">\r\n Es necesario ingresar el precio deseado\r\n </mat-error>\r\n </mat-form-field>\r\n <ng-template [ngIf]=\"propertyType === 'INVESTMENT'\">\r\n <mat-form-field appearance=\"outline\" class=\"investment-return__form-field\">\r\n <mat-label>Retorno de Inversi\u00F3n</mat-label>\r\n <input autocomplete=\"off\" matInput title=\"Investment return\" formControlName=\"roi\" type=\"number\">\r\n <span matSuffix>%</span>\r\n </mat-form-field>\r\n </ng-template>\r\n <mat-checkbox class=\"agreement__body-check-box\" formControlName=\"exclusivity\">Contrato con exclusividad\r\n </mat-checkbox>\r\n <mat-checkbox class=\"agreement__body-check-box\" formControlName=\"mlm\">Quiero compartir en el {{mlsLabel || 'MLS'}}</mat-checkbox>\r\n <mat-form-field appearance=\"outline\" class=\"agreement__form-field\" *ngIf=\"propertyForm.controls['mlm'].value\">\r\n <mat-label>Monto de comisi\u00F3n compartida</mat-label>\r\n <mat-select formControlName=\"sharedCommission\">\r\n <mat-option [value]=\"null\">\r\n Seleccione una opci\u00F3n\r\n </mat-option>\r\n <ng-container *ngFor=\"let commission of sharedCommissionList\">\r\n <mat-option [value]=\"commission\">\r\n {{commission * 100}}% de mi comisi\u00F3n\r\n = {{propertyForm.controls['price'].value * propertyForm.controls['commission'].value * commission | currency : '' : 'symbol' : '1.0-0'}}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <mat-error *ngIf=\"propertyForm.controls['sharedCommission'].hasError('sharedCommissionInvalid')\">\r\n Debe seleccionar su comisi\u00F3n\r\n </mat-error>\r\n <mat-error *ngIf=\"propertyForm.controls['sharedCommission'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <hr>\r\n <div class=\"description\">\r\n <p class=\"section_label\">Descripci\u00F3n</p>\r\n <mat-form-field appearance=\"outline\" class=\"description__form-field\">\r\n <textarea matInput=\"\" cdkTextareaAutosize title=\"Description\" formControlName=\"description\"></textarea>\r\n <mat-hint align=\"end\"><span>N\u00FAmero de caracteres ideal: 3500</span>\r\n Actuales: {{propertyForm.controls['description'].value ? propertyForm.controls['description'].value.length : 0}}\r\n </mat-hint>\r\n <mat-error *ngIf=\"propertyForm.controls['description'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"external-link\">\r\n <p class=\"section_label\">Tour virtual</p>\r\n <mat-form-field appearance=\"outline\" class=\"external-link__form-field\">\r\n <input matInput=\"\" title=\"externalLink\" formControlName=\"externalLink\">\r\n <mat-error *ngIf=\"propertyForm.controls['externalLink'].hasError('pattern')\">\r\n Url invalida\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"notes\">\r\n <p class=\"section_label\">Notas</p>\r\n <mat-form-field appearance=\"outline\" class=\"notes__form-field\">\r\n <textarea matInput=\"\" cdkTextareaAutosize title=\"Notes\" formControlName=\"notes\"></textarea>\r\n </mat-form-field>\r\n </div>\r\n <hr *ngIf=\"propertyType !== 'INVESTMENT'\">\r\n <div class=\"amenities\" *ngIf=\"propertyType !== 'INVESTMENT'\">\r\n <p class=\"section_label\">Amenidades</p>\r\n <p class=\"amenities__list-amenities\">\r\n <ng-container *ngFor=\"let amenity of amenitiesList\">\r\n <span matRipple class=\"list-amenities__amenity\" (click)=\"updateAmenity(amenity)\">\r\n <span class=\"amenity__icon ic-amenities-{{amenity.iconName}}\"\r\n [ngClass]=\"{'amenity__icon-active': amenity.checked}\"></span>\r\n <span class=\"amenity__text\">{{amenity.name}}</span>\r\n </span>\r\n </ng-container>\r\n </p>\r\n </div>\r\n <div class=\"attributes\" *ngIf=\"propertyType !== 'INVESTMENT'\">\r\n <p class=\"section_label\">Caracteristicas de ubicaci\u00F3n</p>\r\n <p class=\"amenities__list-amenities\">\r\n <ng-container *ngFor=\"let feature of featuresList\">\r\n <span matRipple class=\"list-amenities__amenity\" (click)=\"updateAmenity(feature)\">\r\n <span class=\"amenity__icon ic-amenities-{{feature.iconName}}\"\r\n [ngClass]=\"{'amenity__icon-active': feature.checked}\"></span>\r\n <span class=\"amenity__text\">{{feature.name}}</span>\r\n </span>\r\n </ng-container>\r\n </p>\r\n </div>\r\n <button type=\"submit\" class=\"button-submit\" mat-button #btnSubmit>Enviar</button>\r\n</form>\r\n",
626
626
  providers: [
627
627
  { provide: MAT_DATE_LOCALE, useValue: 'es-MX' },
628
628
  { provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS] },
629
629
  { provide: MAT_DATE_FORMATS, useValue: ɵ0 }
630
630
  ],
631
- styles: [":host{display:block;width:100%}.section_label{font-weight:700;display:flex;justify-content:space-between}.address__label-button{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.offering{margin-bottom:8px}.direct-debit{margin:16px 0;display:flex}.direct-debit__check-box{margin-top:4px}.direct-debit__radio-group{display:inline-block;margin:0 0 0 32px}@media screen and (max-width:600px){.section_label{flex-direction:column}.section_label :last-child{margin-top:16px}.direct-debit{flex-direction:column;align-items:flex-start}.direct-debit__radio-group{margin:16px 0 0}}.direct-debit__radio-button{margin-right:16px}.pricing{display:-ms-grid;display:grid;-ms-grid-columns:(33.3333333333%)[3];grid-template-columns:repeat(3,33.3333333333%)}@media screen and (max-width:600px){.pricing{-ms-grid-columns:100%;grid-template-columns:100%}}@media screen and (min-width:1800px){.pricing{-ms-grid-columns:(25%)[4];grid-template-columns:repeat(4,25%)}}.agreement__body{display:-ms-grid;display:grid;-ms-grid-columns:(33.3333333333%)[2];grid-template-columns:repeat(2,33.3333333333%)}@media screen and (max-width:600px){.agreement__body{-ms-grid-columns:100%;grid-template-columns:100%}}@media screen and (min-width:1800px){.agreement__body{-ms-grid-columns:(25%)[4];grid-template-columns:repeat(4,25%)}}.agreement__body-check-box{margin-bottom:16px;-ms-grid-column:1;grid-column-start:1;-ms-grid-column-span:2;grid-column-end:3}.address__body{display:-ms-grid;display:grid;-ms-grid-columns:(25%)[4];grid-template-columns:repeat(4,25%)}@media screen and (max-width:600px){.agreement__body-check-box{-ms-grid-column-span:auto;grid-column-end:auto}.address__body{-ms-grid-columns:100%;grid-template-columns:100%}}@media screen and (min-width:1800px){.address__body{-ms-grid-columns:(20%)[4];grid-template-columns:repeat(4,20%)}}.features__body{display:-ms-grid;display:grid;-ms-grid-columns:(50%)[2];grid-template-columns:repeat(2,50%)}.features-item__label{display:flex;align-items:center;margin:0;padding:8px 0}.features-item__radio-group{display:block;margin:8px 0}.features-item__radio-button{margin-right:16px}.features-item-bathrooms,.features-item-parking-spaces{-ms-grid-column:1;grid-column-start:1}.features-item-surface{-ms-grid-column:2;grid-column-start:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-row-span:2;grid-row-end:3}.address__form-field,.agreement__form-field,.description__form-field,.external-link__form-field,.notes__form-field,.pricing__form-field{width:95%;margin:0 auto 0 0}@media screen and (max-width:600px){.features__body{-ms-grid-columns:100%;grid-template-columns:100%}.features-item-surface{-ms-grid-column:auto;grid-column-start:auto;-ms-grid-row:auto;grid-row-start:auto;-ms-grid-row-span:NaN;grid-row-end:auto}.address__form-field,.agreement__form-field,.description__form-field,.external-link__form-field,.notes__form-field,.pricing__form-field{width:100%;margin:0}}.pricing__maintenance-fee{display:flex;align-items:center;-ms-grid-column:1;grid-column-start:1;-ms-grid-column-span:2;grid-column-end:3}.pricing__maintenance-fee :first-child{margin:0 16px 0 0}@media screen and (max-width:600px){.pricing__maintenance-fee{flex-direction:column;align-items:start;-ms-grid-column:1;grid-column-start:1;-ms-grid-column-span:NaN;grid-column-end:auto}.pricing__maintenance-fee :first-child{margin:0 0 16px}}.address__visibility{-ms-grid-row:4;grid-row-start:4;-ms-grid-column:1;grid-column-start:1;-ms-grid-column-span:4;grid-column-end:5}.address__visibility-body{display:flex}.address__visibility-radio-group{display:block;margin-right:16px}.visibility-radio-group__button{margin-bottom:16px;display:block}.visibility__about{margin:0}.visibility__about-label{display:block;padding:0 8px 8px;font-size:14px}.label__icon{width:24px;height:24px;font-size:24px;color:#707070;margin-right:8px}.amenities,.attributes{width:50%;display:inline-block}@media screen and (max-width:600px){.address__visibility{-ms-grid-row:auto;grid-row-start:auto;-ms-grid-column:auto;grid-column-start:auto;-ms-grid-column-span:NaN;grid-column-end:auto}.address__visibility-body{flex-direction:column}.amenities,.attributes{width:100%;display:block}}.amenities__list-amenities{display:-ms-grid;display:grid;-ms-grid-columns:(33.3333333333%)[3];grid-template-columns:repeat(3,33.3333333333%)}.list-amenities__amenity{display:flex;flex-direction:column;justify-content:space-between;align-items:center;cursor:pointer;width:100px;padding:4px;box-sizing:border-box;border-radius:8px;margin:8px auto 0;text-align:center}.amenity__icon{width:24px;height:24px;font-size:24px;background:#707070;border-radius:50%;padding:8px;color:#fff;display:block;margin:0 auto}.amenity__text{padding:8px;box-sizing:border-box;display:block;font-size:12px}.button-submit{display:none}"]
631
+ styles: [":host{display:block;width:100%}.section_label{font-weight:700;display:flex;justify-content:space-between}.address__label-button{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.offering{margin-bottom:8px}.direct-debit{margin:16px 0;display:flex}.direct-debit__check-box{margin-top:4px}.direct-debit__radio-group{display:inline-block;margin:0 0 0 32px}@media screen and (max-width:600px){.section_label{flex-direction:column}.section_label :last-child{margin-top:16px}.direct-debit{flex-direction:column;align-items:flex-start}.direct-debit__radio-group{margin:16px 0 0}}.direct-debit__radio-button{margin-right:16px}.pricing{display:-ms-grid;display:grid;-ms-grid-columns:(calc(100% / 3))[3];grid-template-columns:repeat(3,calc(100% / 3))}@media screen and (max-width:600px){.pricing{-ms-grid-columns:100%;grid-template-columns:100%}}@media screen and (min-width:1800px){.pricing{-ms-grid-columns:(calc(100% / 4))[4];grid-template-columns:repeat(4,calc(100% / 4))}}.agreement__body{display:-ms-grid;display:grid;-ms-grid-columns:(calc(100% / 3))[2];grid-template-columns:repeat(2,calc(100% / 3))}@media screen and (max-width:600px){.agreement__body{-ms-grid-columns:100%;grid-template-columns:100%}}@media screen and (min-width:1800px){.agreement__body{-ms-grid-columns:(calc(100% / 4))[4];grid-template-columns:repeat(4,calc(100% / 4))}}.agreement__body-check-box{margin-bottom:16px;-ms-grid-column:1;grid-column-start:1;-ms-grid-column-span:2;grid-column-end:3}.address__body{display:-ms-grid;display:grid;-ms-grid-columns:(calc(100% / 4))[4];grid-template-columns:repeat(4,calc(100% / 4))}@media screen and (max-width:600px){.agreement__body-check-box{-ms-grid-column-span:auto;grid-column-end:auto}.address__body{-ms-grid-columns:100%;grid-template-columns:100%}}@media screen and (min-width:1800px){.address__body{-ms-grid-columns:(calc(100% / 5))[4];grid-template-columns:repeat(4,calc(100% / 5))}}.features__body{display:-ms-grid;display:grid;-ms-grid-columns:(calc(100% / 2))[2];grid-template-columns:repeat(2,calc(100% / 2))}.features-item__label{display:flex;align-items:center;margin:0;padding:8px 0}.features-item__radio-group{display:block;margin:8px 0}.features-item__radio-button{margin-right:16px}.features-item-bathrooms,.features-item-parking-spaces{-ms-grid-column:1;grid-column-start:1}.features-item-surface{-ms-grid-column:2;grid-column-start:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-row-span:2;grid-row-end:3}.address__form-field,.agreement__form-field,.description__form-field,.external-link__form-field,.notes__form-field,.pricing__form-field{width:95%;margin:0 auto 0 0}@media screen and (max-width:600px){.features__body{-ms-grid-columns:100%;grid-template-columns:100%}.features-item-surface{-ms-grid-column:auto;grid-column-start:auto;-ms-grid-row:auto;grid-row-start:auto;-ms-grid-row-span:NaN;grid-row-end:auto}.address__form-field,.agreement__form-field,.description__form-field,.external-link__form-field,.notes__form-field,.pricing__form-field{width:100%;margin:0}}.pricing__maintenance-fee{display:flex;align-items:center;-ms-grid-column:1;grid-column-start:1;-ms-grid-column-span:2;grid-column-end:3}.pricing__maintenance-fee :first-child{margin:0 16px 0 0}@media screen and (max-width:600px){.pricing__maintenance-fee{flex-direction:column;align-items:start;-ms-grid-column:1;grid-column-start:1;-ms-grid-column-span:NaN;grid-column-end:auto}.pricing__maintenance-fee :first-child{margin:0 0 16px}}.address__visibility{-ms-grid-row:4;grid-row-start:4;-ms-grid-column:1;grid-column-start:1;-ms-grid-column-span:4;grid-column-end:5}.address__visibility-body{display:flex}.address__visibility-radio-group{display:block;margin-right:16px}.visibility-radio-group__button{margin-bottom:16px;display:block}.visibility__about{margin:0}.visibility__about-label{display:block;padding:0 8px 8px;font-size:14px}.label__icon{width:24px;height:24px;font-size:24px;color:#707070;margin-right:8px}.amenities,.attributes{width:50%;display:inline-block}@media screen and (max-width:600px){.address__visibility{-ms-grid-row:auto;grid-row-start:auto;-ms-grid-column:auto;grid-column-start:auto;-ms-grid-column-span:NaN;grid-column-end:auto}.address__visibility-body{flex-direction:column}.amenities,.attributes{width:100%;display:block}}.amenities__list-amenities{display:-ms-grid;display:grid;-ms-grid-columns:(calc(100% / 3))[3];grid-template-columns:repeat(3,calc(100% / 3))}.list-amenities__amenity{display:flex;flex-direction:column;justify-content:space-between;align-items:center;cursor:pointer;width:100px;padding:4px;box-sizing:border-box;border-radius:8px;margin:8px auto 0;text-align:center}.amenity__icon{width:24px;height:24px;font-size:24px;background:#707070;border-radius:50%;padding:8px;color:#fff;display:block;margin:0 auto}.amenity__text{padding:8px;box-sizing:border-box;display:block;font-size:12px}.button-submit{display:none}"]
632
632
  }] }
633
633
  ];
634
634
  /** @nocollapse */
@@ -755,4 +755,4 @@ if (false) {
755
755
  EditorComponent.prototype._adapter;
756
756
  }
757
757
  export { ɵ0 };
758
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BtYXBsYW5kZXIvY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3Byb3BlcnR5L2NvbXBvbmVudHMvZWRpdG9yL2VkaXRvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFdBQVcsRUFBMEIsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUNMLE9BQU8sRUFDUCxTQUFTLEVBRVQsWUFBWSxFQUVaLFFBQVEsRUFHUixXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsY0FBYyxFQUNmLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxFQUFDLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RixPQUFPLEVBQUMsK0JBQStCLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRyxPQUFPLEtBQUssY0FBYyxNQUFNLFFBQVEsQ0FBQztBQUd6QyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQztBQUNyRixPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDaEQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLG1CQUFtQixDQUFDOztJQUNsQyxNQUFNLEdBQUcsY0FB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QiwyQ0FBcUU7O0lBQ3JFLHVDQUEyQjs7SUFDM0Isa0NBQXlCOztJQUN6QixzQ0FBMkQ7O0lBQzNELHdDQUFvQzs7SUFDcEMsdUNBQW1DOztJQUNuQyx5Q0FBZ0M7O0lBQ2hDLCtDQUFzQzs7SUFDdEMsdUNBQThCOzs7OztJQUc1Qix1Q0FBaUM7Ozs7O0lBQ2pDLGtDQUE4Qjs7Ozs7SUFDOUIsbUNBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge1xyXG4gIEFkZHJlc3MsXHJcbiAgQW1lbml0aWVzLFxyXG4gIEFwcFV0aWwsXHJcbiAgQXJlYVVuaXRFbnVtLFxyXG4gIENFUixcclxuICBGZWF0dXJlcyxcclxuICBHZW9QdCxcclxuICBMYW5kVXNlRW51bSxcclxuICBOZXdQcm9wZXJ0eSxcclxuICBPZmZlcmluZ1R5cGVFbnVtLFxyXG4gIFByb3BlcnR5SW5mbyxcclxuICBQcm9wZXJ0eVR5cGVFbnVtLFxyXG4gIFN0YXR1c1R5cGVFbnVtXHJcbn0gZnJvbSAnQG1hcGxhbmRlci90eXBlcyc7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtEaWFsb2dTZXJ2aWNlfSBmcm9tICdAbWFwbGFuZGVyL3NoYXJlZCc7XHJcbmltcG9ydCB7RGF0ZUFkYXB0ZXIsIE1BVF9EQVRFX0ZPUk1BVFMsIE1BVF9EQVRFX0xPQ0FMRX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XHJcbmltcG9ydCB7TUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OUywgTW9tZW50RGF0ZUFkYXB0ZXJ9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsLW1vbWVudC1hZGFwdGVyJztcclxuaW1wb3J0ICogYXMgbW9tZW50SW1wb3J0ZWQgZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IHtQcm9wZXJ0eVR5cGVJdGVtfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9tb2RlbHMvcHJvcGVydHktdHlwZS1pdGVtJztcclxuaW1wb3J0IHtBbWVuaXR5SXRlbX0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvbW9kZWxzL2FtZW5pdHktaXRlbSc7XHJcbmltcG9ydCB7Q29uc3RhbnRzQ29tcG9uZW50c30gZnJvbSAnLi4vLi4vLi4vLi4vY29uc3RhbnRzQ29tcG9uZW50cyc7XHJcbmltcG9ydCB7UHJvcGVydHlFZGl0b3JWYWxpZGF0b3JzfSBmcm9tICcuLi8uLi92YWxpZGF0b3JzL3Byb3BlcnR5LWVkaXRvci12YWxpZGF0b3JzJztcclxuaW1wb3J0IHtNRGF0ZX0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvY2xhc3Nlcyc7XHJcbmltcG9ydCB7VXRpbHN9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzJztcclxuY29uc3QgbW9tZW50ID0gbW9tZW50SW1wb3J0ZWQ7XHJcblxyXG5jb25zdCBNWV9GT1JNQVRTID0ge1xyXG4gIHBhcnNlOiB7XHJcbiAgICBkYXRlSW5wdXQ6ICdMJyxcclxuICB9LFxyXG4gIGRpc3BsYXk6IHtcclxuICAgIGRhdGVJbnB1dDogJ0wnLFxyXG4gICAgbW9udGhZZWFyTGFiZWw6ICdNTU0gWVlZWScsXHJcbiAgICBkYXRlQTExeUxhYmVsOiAnTCcsXHJcbiAgICBtb250aFllYXJBMTF5TGFiZWw6ICdNTU1NIFlZWVknLFxyXG4gIH0sXHJcbn07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1wcm9wZXJ0eS1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2VkaXRvci5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge3Byb3ZpZGU6IE1BVF9EQVRFX0xPQ0FMRSwgdXNlVmFsdWU6ICdlcy1NWCd9LFxyXG4gICAge3Byb3ZpZGU6IERhdGVBZGFwdGVyLCB1c2VDbGFzczogTW9tZW50RGF0ZUFkYXB0ZXIsIGRlcHM6IFtNQVRfREFURV9MT0NBTEUsIE1BVF9NT01FTlRfREFURV9BREFQVEVSX09QVElPTlNdfSxcclxuICAgIHtwcm92aWRlOiBNQVRfREFURV9GT1JNQVRTLCB1c2VWYWx1ZTogTVlfRk9STUFUU31cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKCdidG5TdWJtaXQnLCB7c3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmfSkgcHJpdmF0ZSBfYnRuU3VibWl0UmVmOiBFbGVtZW50UmVmO1xyXG4gIEBJbnB1dCgpIHV0aWxzOiBBcHBVdGlsO1xyXG4gIEBJbnB1dCgpIGFkZHJlc3M6IEFkZHJlc3M7XHJcbiAgQElucHV0KCkgcHJvcGVydHlUeXBlOiBQcm9wZXJ0eVR5cGVFbnVtO1xyXG4gIEBJbnB1dCgpIHByb3BlcnR5OiBOZXdQcm9wZXJ0eTtcclxuICBASW5wdXQoKSBtbHNMYWJlbDogc3RyaW5nO1xyXG4gIEBPdXRwdXQoKSBlZGl0b3JJbnN0YW5jZTogRXZlbnRFbWl0dGVyPEVkaXRvckNvbXBvbmVudD47XHJcbiAgQE91dHB1dCgpIHNlbGVjdEFkZHJlc3M6IEV2ZW50RW1pdHRlcjx2b2lkPjtcclxuICAvKipcclxuICAgKiBSRUdFWF9PTkxZX0lOVEVHRVJTXHJcbiAgICogUmVnZXggcGF0dGVybiB0byBvbmx5IGFjY2VwdCBpbnRlZ2VyIGFuZCBwb3NpdGl2ZSBudW1iZXJzXHJcbiAgICogKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IFJFR0VYX09OTFlfSU5URUdFUlMgPSBuZXcgUmVnRXhwKC9eWzAtOV1cXGQqJC8pO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgUkVHRVhfTUlERExFX05VTUJFUiA9IG5ldyBSZWdFeHAoL15bMC05XSooXFwuWzVdKT8kLyk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBSRUdFWF9XRUJTSVRFID0gbmV3IFJlZ0V4cCgvKGh0dHB8aHR0cHMpOlxcL1xcLyhcXHcrOj9cXHcqQCk/KFxcUyspKDpbMC05XSspPyhcXC98XFwvKFtcXHcjITouPys9JiVAXFwtXFwvXSkpPy8pO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgUkVHRVhfQUxQSEFfTlVNQkVSID0gbmV3IFJlZ0V4cCgvW0EtWmEtejAtOV9dLyk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfdmFsaWRhdG9yczoge1xyXG4gICAgYmVkcm9vbXM6IFZhbGlkYXRvckZuW10sXHJcbiAgICBiYXRocm9vbXM6IFZhbGlkYXRvckZuW10sXHJcbiAgICBwYXJraW5nU3BhY2VzOiBWYWxpZGF0b3JGbltdLFxyXG4gICAgbWFpbkFyZWE6IFZhbGlkYXRvckZuW10sXHJcbiAgICBzZWNvbmRhcnlBcmVhOiBWYWxpZGF0b3JGbltdLFxyXG4gICAgZXh0ZXJuYWxMaW5rOiBWYWxpZGF0b3JGbltdLFxyXG4gICAgc2t1OiBWYWxpZGF0b3JGbltdXHJcbiAgfTtcclxuICBwcml2YXRlIF9wcm9wZXJ0eTogTmV3UHJvcGVydHk7XHJcbiAgcHJpdmF0ZSBfcHJvcGVydHlUeXBlSXRlbTogUHJvcGVydHlUeXBlSXRlbTtcclxuICBwcml2YXRlIF9lcnJvckZpZWxkczogc3RyaW5nW107XHJcbiAgcHVibGljIHByb3BlcnR5Rm9ybTogRm9ybUdyb3VwO1xyXG4gIHB1YmxpYyBvZmZlcmluZ1R5cGVMaXN0OiB7IG5hbWU6IHN0cmluZywgdmFsdWU6IE9mZmVyaW5nVHlwZUVudW0gfVtdO1xyXG4gIHB1YmxpYyBjdXJyZW5jeUxpc3Q6IENFUltdO1xyXG4gIHB1YmxpYyByb2lMaXN0OiBudW1iZXJbXTtcclxuICBwdWJsaWMgbGFuZFVzZUxpc3Q6IHsgbmFtZTogc3RyaW5nLCB2YWx1ZTogTGFuZFVzZUVudW0gfVtdO1xyXG4gIHB1YmxpYyBhbWVuaXRpZXNMaXN0OiBBbWVuaXR5SXRlbVtdO1xyXG4gIHB1YmxpYyBmZWF0dXJlc0xpc3Q6IEFtZW5pdHlJdGVtW107XHJcbiAgcHVibGljIGNvbW1pc3Npb25MaXN0OiBudW1iZXJbXTtcclxuICBwdWJsaWMgc2hhcmVkQ29tbWlzc2lvbkxpc3Q6IG51bWJlcltdO1xyXG4gIHB1YmxpYyBkdXJhdGlvbkxpc3Q6IG51bWJlcltdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2Zvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgX2RpYWxvZzogRGlhbG9nU2VydmljZSxcclxuICAgIHByaXZhdGUgX2FkYXB0ZXI6IERhdGVBZGFwdGVyPGFueT5cclxuICApIHtcclxuICAgIHRoaXMuZWRpdG9ySW5zdGFuY2UgPSBuZXcgRXZlbnRFbWl0dGVyPEVkaXRvckNvbXBvbmVudD4oKTtcclxuICAgIHRoaXMuc2VsZWN0QWRkcmVzcyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICAgIHRoaXMub2ZmZXJpbmdUeXBlTGlzdCA9IENvbnN0YW50c0NvbXBvbmVudHMuT2ZmZXJpbmdUeXBlTGlzdC5tYXAoZG9jID0+ICh7Li4uZG9jfSkpO1xyXG4gICAgdGhpcy5sYW5kVXNlTGlzdCA9IENvbnN0YW50c0NvbXBvbmVudHMuTGFuZFVzZUxpc3QubWFwKGRvYyA9PiAoey4uLmRvY30pKTtcclxuICAgIHRoaXMuY29tbWlzc2lvbkxpc3QgPSBDb25zdGFudHNDb21wb25lbnRzLkNvbW1pc3Npb25MaXN0W09mZmVyaW5nVHlwZUVudW0uU0FMRV07XHJcbiAgICB0aGlzLnJvaUxpc3QgPSBPYmplY3QuYXNzaWduKFtdLCBDb25zdGFudHNDb21wb25lbnRzLlJPSUxpc3QpO1xyXG4gICAgdGhpcy5kdXJhdGlvbkxpc3QgPSBPYmplY3QuYXNzaWduKFtdLCBDb25zdGFudHNDb21wb25lbnRzLkR1cmF0aW9uTGlzdCk7XHJcbiAgICB0aGlzLnNoYXJlZENvbW1pc3Npb25MaXN0ID0gT2JqZWN0LmFzc2lnbihbXSwgQ29uc3RhbnRzQ29tcG9uZW50cy5TaGFyZWRDb21taXNzaW9uTGlzdCk7XHJcbiAgICB0aGlzLl9hZGFwdGVyLnNldExvY2FsZSgnZXMnKTtcclxuICAgIHRoaXMuX2Vycm9yRmllbGRzID0gW107XHJcbiAgICB0aGlzLl92YWxpZGF0b3JzID0ge1xyXG4gICAgICBiZWRyb29tczogW1ZhbGlkYXRvcnMucGF0dGVybih0aGlzLlJFR0VYX09OTFlfSU5URUdFUlMpXSxcclxuICAgICAgYmF0aHJvb21zOiBbVmFsaWRhdG9ycy5wYXR0ZXJuKHRoaXMuUkVHRVhfTUlERExFX05VTUJFUildLFxyXG4gICAgICBwYXJraW5nU3BhY2VzOiBbVmFsaWRhdG9ycy5wYXR0ZXJuKHRoaXMuUkVHRVhfT05MWV9JTlRFR0VSUyldLFxyXG4gICAgICBtYWluQXJlYTogW10sXHJcbiAgICAgIHNlY29uZGFyeUFyZWE6IFtdLFxyXG4gICAgICBleHRlcm5hbExpbms6IFtWYWxpZGF0b3JzLnBhdHRlcm4odGhpcy5SRUdFWF9XRUJTSVRFKV0sXHJcbiAgICAgIHNrdTogW1ZhbGlkYXRvcnMucGF0dGVybih0aGlzLlJFR0VYX0FMUEhBX05VTUJFUildXHJcbiAgICB9O1xyXG4gICAgdGhpcy5wcm9wZXJ0eUZvcm0gPSB0aGlzLl9mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIG9mZmVyaW5nOiBbT2ZmZXJpbmdUeXBlRW51bS5TQUxFXSxcclxuICAgICAgc2t1OiBbbnVsbCwgdGhpcy5fdmFsaWRhdG9ycy5za3VdLFxyXG4gICAgICBjb25zdW1lclJlcG9ydGluZzogW10sXHJcbiAgICAgIGNvbnN1bWVyUmVwb3J0aW5nT3B0aW9uOiBbMV0sXHJcbiAgICAgIGN1cnJlbmN5OiBbJ01YTiddLFxyXG4gICAgICBtaW5QcmljZTogW10sXHJcbiAgICAgIHByaWNlOiBbXSxcclxuICAgICAgbWFpbnRlbmFuY2U6IFtdLFxyXG4gICAgICBtYWludGVuYW5jZVByaWNlOiBbXSxcclxuICAgICAgdHJhbnNmZXI6IFtdLFxyXG4gICAgICB0cmFuc2ZlclByaWNlOiBbXSxcclxuICAgICAgYmVkcm9vbXM6IFtudWxsLCB0aGlzLl92YWxpZGF0b3JzLmJlZHJvb21zXSxcclxuICAgICAgYmF0aHJvb21zOiBbbnVsbCwgdGhpcy5fdmFsaWRhdG9ycy5iYXRocm9vbXNdLFxyXG4gICAgICBwYXJraW5nU3BhY2VzOiBbbnVsbCwgdGhpcy5fdmFsaWRhdG9ycy5wYXJraW5nU3BhY2VzXSxcclxuICAgICAgbWFpbkFyZWE6IFtudWxsLCB0aGlzLl92YWxpZGF0b3JzLm1haW5BcmVhXSxcclxuICAgICAgc2Vjb25kYXJ5QXJlYTogW251bGwsIHRoaXMuX3ZhbGlkYXRvcnMuc2Vjb25kYXJ5QXJlYV0sXHJcbiAgICAgIHVuaXQ6IFtBcmVhVW5pdEVudW0uTTJdLFxyXG4gICAgICBidWlsZEluOiBbXSxcclxuICAgICAgbGFuZFVzZTogW10sXHJcbiAgICAgIGV4Y2x1c2l2aXR5OiBbXSxcclxuICAgICAgbWxtOiBbXSxcclxuICAgICAgc2hhcmVkQ29tbWlzc2lvbjogW10sXHJcbiAgICAgIGFncmVlbWVudERhdGU6IFt7dmFsdWU6IG51bGwsIGRpc2FibGVkOiB0cnVlfV0sXHJcbiAgICAgIGR1cmF0aW9uOiBbXSxcclxuICAgICAgY29tbWlzc2lvbjogW10sXHJcbiAgICAgIHJvaTogW10sXHJcbiAgICAgIGRlc2NyaXB0aW9uOiBbXSxcclxuICAgICAgZXh0ZXJuYWxMaW5rOiBbbnVsbCwgdGhpcy5fdmFsaWRhdG9ycy5leHRlcm5hbExpbmtdLFxyXG4gICAgICBub3RlczogW10sXHJcbiAgICAgIGFkZHJlc3M6IHRoaXMuX2Zvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgICBjb3VudHJ5OiBbXSxcclxuICAgICAgICBwb3N0YWxDb2RlOiBbXSxcclxuICAgICAgICBzdGF0ZTogW10sXHJcbiAgICAgICAgY2l0eTogW10sXHJcbiAgICAgICAgdG93bnNoaXA6IFtdLFxyXG4gICAgICAgIGNvbG9ueTogW10sXHJcbiAgICAgICAgc3RyZWV0OiBbXSxcclxuICAgICAgICBleHROdW1iZXI6IFtdLFxyXG4gICAgICAgIGludE51bWJlcjogW10sXHJcbiAgICAgICAgbXo6IFtdLFxyXG4gICAgICAgIGx0OiBbXSxcclxuICAgICAgICB2aXNpYmxlOiBbdHJ1ZV0sXHJcbiAgICAgIH0pLFxyXG4gICAgfSwge1xyXG4gICAgICB2YWxpZGF0b3JzOiBQcm9wZXJ0eUVkaXRvclZhbGlkYXRvcnMudmFsaWRhdG9yXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGdlb1B0R2VuZXJhdG9yKGdlb1B0OiBHZW9QdCwgbWluRGlzdGFuY2U6IG51bWJlciwgbWF4RGlzdGFuY2U6IG51bWJlcik6IEdlb1B0IHtcclxuICAgIGNvbnN0IEVBUlRIX1JBRElVU19NRVRFUlMgPSA2MzcxMDEwLjA7XHJcbiAgICBjb25zdCBsID0gTWF0aC5yYW5kb20oKSAqIChtYXhEaXN0YW5jZSAtIG1pbkRpc3RhbmNlKSArIG1pbkRpc3RhbmNlO1xyXG4gICAgY29uc3QgYWxwaGEgPSBNYXRoLnJhbmRvbSgpICogTWF0aC5QSSAvIDI7XHJcbiAgICBjb25zdCBzeCA9IChNYXRoLnJhbmRvbSgpIDwgMC41KSA/IGwgKiBNYXRoLmNvcyhhbHBoYSkgOiAtbCAqIE1hdGguY29zKGFscGhhKTtcclxuICAgIGNvbnN0IHN5ID0gKE1hdGgucmFuZG9tKCkgPCAwLjUpID8gbCAqIE1hdGguc2luKGFscGhhKSA6IC1sICogTWF0aC5zaW4oYWxwaGEpO1xyXG4gICAgY29uc3QgZGVsdGFMYXQgPSBzeSAvIEVBUlRIX1JBRElVU19NRVRFUlMgKiAxODAgLyBNYXRoLlBJO1xyXG4gICAgY29uc3QgbGF0ID0gZ2VvUHQubGF0aXR1ZGUgKyBkZWx0YUxhdDtcclxuICAgIGNvbnN0IGRlbHRhTG9uZyA9IHN4IC8gRUFSVEhfUkFESVVTX01FVEVSUyAvIE1hdGguY29zKGxhdCAqIE1hdGguUEkgLyAxODApICogMTgwIC8gTWF0aC5QSTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGxhdGl0dWRlOiBsYXQsXHJcbiAgICAgIGxvbmdpdHVkZTogZ2VvUHQubG9uZ2l0dWRlICsgZGVsdGFMb25nXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmxpc3RlbkNoYW5nZXNPbkZvcm0oKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWyd1dGlscyddICYmIGNoYW5nZXNbJ3V0aWxzJ10uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIHRoaXMuY3VycmVuY3lMaXN0ID0gY2hhbmdlc1sndXRpbHMnXS5jdXJyZW50VmFsdWUuY2VycztcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydwcm9wZXJ0eVR5cGUnXSAmJiBjaGFuZ2VzWydwcm9wZXJ0eVR5cGUnXS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy5wcm9wZXJ0eVR5cGUgPSBjaGFuZ2VzWydwcm9wZXJ0eVR5cGUnXS5jdXJyZW50VmFsdWU7XHJcbiAgICAgIHRoaXMuc2VhcmNoQW1lbml0aWVzQnlQcm9wZXJ0eVR5cGUoKTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydwcm9wZXJ0eSddICYmIGNoYW5nZXNbJ3Byb3BlcnR5J10uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlUHJvcGVydHkoY2hhbmdlc1sncHJvcGVydHknXS5jdXJyZW50VmFsdWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2FkZHJlc3MnXSAmJiBjaGFuZ2VzWydhZGRyZXNzJ10uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlQWRkcmVzc0Zvcm0oY2hhbmdlc1snYWRkcmVzcyddLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRvckluc3RhbmNlLmVtaXQodGhpcyk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJvcGVydHkoKTogTmV3UHJvcGVydHkge1xyXG4gICAgdGhpcy5zZXRWYWxpZGF0b3JPbkZpZWxkcyh0aGlzLl9lcnJvckZpZWxkcywgdHJ1ZSk7XHJcbiAgICB0aGlzLnVwZGF0ZVByb3BlcnR5QnlGb3JtKHRoaXMucHJvcGVydHlGb3JtLmdldFJhd1ZhbHVlKCkpO1xyXG4gICAgcmV0dXJuIHRoaXMuX3Byb3BlcnR5O1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVGb3JtSW52YWxpZCgpOiBib29sZWFuIHtcclxuICAgIHRoaXMuc2V0VmFsaWRhdG9yT25GaWVsZHModGhpcy5fZXJyb3JGaWVsZHMsIHRydWUpO1xyXG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlGb3JtLmludmFsaWQ7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVBbWVuaXR5KGFtZW5pdHk6IEFtZW5pdHlJdGVtKTogdm9pZCB7XHJcbiAgICBhbWVuaXR5LmNoZWNrZWQgPSAhYW1lbml0eS5jaGVja2VkO1xyXG4gICAgdGhpcy5fcHJvcGVydHkuYW1lbml0aWVzW2FtZW5pdHkudmFsdWVdID0gYW1lbml0eS5jaGVja2VkO1xyXG4gIH1cclxuXHJcbiAgZ29Ub1NlbGVjdEFkZHJlc3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdEFkZHJlc3MuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgc2V0RXJyb3JzT25GaWVsZHMoZXJyb3JzOiBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5fZXJyb3JGaWVsZHMgPSBlcnJvcnM7XHJcbiAgICB0aGlzLnNldFZhbGlkYXRvck9uRmllbGRzKHRoaXMuX2Vycm9yRmllbGRzKTtcclxuICAgIHRoaXMuX2J0blN1Ym1pdFJlZi5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUFkZHJlc3NGb3JtKGFkZHJlc3M6IEFkZHJlc3MpOiB2b2lkIHtcclxuICAgIHRoaXMucHJvcGVydHlGb3JtLnBhdGNoVmFsdWUoe1xyXG4gICAgICBhZGRyZXNzOiB7XHJcbiAgICAgICAgY291bnRyeTogYWRkcmVzcy5jb3VudHJ5LFxyXG4gICAgICAgIHN0YXRlOiBhZGRyZXNzLnN0YXRlLFxyXG4gICAgICAgIGNpdHk6IGFkZHJlc3MuY2l0eSxcclxuICAgICAgICB0b3duc2hpcDogYWRkcmVzcy50b3duc2hpcCxcclxuICAgICAgICBjb2xvbnk6IGFkZHJlc3MuY29sb255LFxyXG4gICAgICAgIHN0cmVldDogYWRkcmVzcy5zdHJlZXQsXHJcbiAgICAgICAgcG9zdGFsQ29kZTogYWRkcmVzcy5wb3N0YWxDb2RlLFxyXG4gICAgICAgIGV4dE51bWJlcjogYWRkcmVzcy5vdXRkb29yTnVtYmVyXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3NpZ25BbWVuaXRpZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFtZW5pdGllc0xpc3QuZm9yRWFjaCgoYW1lbml0eSkgPT4ge1xyXG4gICAgICBhbWVuaXR5LmNoZWNrZWQgPSB0aGlzLl9wcm9wZXJ0eS5hbWVuaXRpZXNbYW1lbml0eS52YWx1ZV07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXNzaWduTG9jYXRpb25GZWF0dXJlcygpOiB2b2lkIHtcclxuICAgIHRoaXMuZmVhdHVyZXNMaXN0LmZvckVhY2goKGFtZW5pdHkpID0+IHtcclxuICAgICAgYW1lbml0eS5jaGVja2VkID0gdGhpcy5fcHJvcGVydHkuYW1lbml0aWVzW2FtZW5pdHkudmFsdWVdO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzc2lnbkNvbW1pc3Npb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbW1pc3Npb25MaXN0ID0gQ29uc3RhbnRzQ29tcG9uZW50cy5Db21taXNzaW9uTGlzdFt0aGlzLl9wcm9wZXJ0eS5vZmZlcmluZ107XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzc2lnbkJ1c2luZXNzUnVsZXMoKTogdm9pZCB7XHJcbiAgICBzd2l0Y2ggKHRoaXMucHJvcGVydHlUeXBlKSB7XHJcbiAgICAgIGNhc2UgUHJvcGVydHlUeXBlRW51bS5ST09NOlxyXG4gICAgICAgIHRoaXMucHJvcGVydHlGb3JtLnBhdGNoVmFsdWUoe1xyXG4gICAgICAgICAgb2ZmZXJpbmc6IE9mZmVyaW5nVHlwZUVudW0uUkVOVFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFByb3BlcnR5VHlwZUVudW0uSU5WRVNUTUVOVDpcclxuICAgICAgICB0aGlzLnByb3BlcnR5Rm9ybS5wYXRjaFZhbHVlKHtcclxuICAgICAgICAgIG9mZmVyaW5nOiBPZmZlcmluZ1R5cGVFbnVtLlNBTEVcclxuICAgICAgICB9KTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9wcm9wZXJ0eS5zdGF0dXMgPT09IFN0YXR1c1R5cGVFbnVtLkFOTk9VTkNFRCkge1xyXG4gICAgICBjb25zdCBlcnJvcnMgPSBVdGlscy5saXN0RXJyb3JzQnlQcm9wZXJ0eVR5cGVGb3JQdWJsaXNoKHRoaXMuX3Byb3BlcnR5LnR5cGUpO1xyXG4gICAgICB0aGlzLnNldFZhbGlkYXRvck9uRmllbGRzKGVycm9ycyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUZvcm1CeVByb3BlcnR5KCk6IHZvaWQge1xyXG4gICAgdGhpcy5wcm9wZXJ0eUZvcm0ucGF0Y2hWYWx1ZSh7XHJcbiAgICAgIG9mZmVyaW5nOiB0aGlzLl9wcm9wZXJ0eS5vZmZlcmluZyxcclxuICAgICAgc2t1OiB0aGlzLl9wcm9wZXJ0eS5za3UsXHJcbiAgICAgIGNvbnN1bWVyUmVwb3J0aW5nOiB0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8uY29uc3VtZXJSZXBvcnRpbmcgJiYgdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLmNvbnN1bWVyUmVwb3J0aW5nICE9PSAwLFxyXG4gICAgICBjb25zdW1lclJlcG9ydGluZ09wdGlvbjogdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLmNvbnN1bWVyUmVwb3J0aW5nLFxyXG4gICAgICBjdXJyZW5jeTogdGhpcy5fcHJvcGVydHkuY3VycmVuY3ksXHJcbiAgICAgIG1pblByaWNlOiB0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8ubG93ZXN0UHJpY2UsXHJcbiAgICAgIHByaWNlOiB0aGlzLl9wcm9wZXJ0eS5wcmljZSxcclxuICAgICAgbWFpbnRlbmFuY2U6IHRoaXMuX3Byb3BlcnR5LmZlYXR1cmVzLmNvbmRvbWluaXVtRmVlUHJpY2UgJiYgdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMuY29uZG9taW5pdW1GZWVQcmljZSAhPT0gMCxcclxuICAgICAgbWFpbnRlbmFuY2VQcmljZTogdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMuY29uZG9taW5pdW1GZWVQcmljZSxcclxuICAgICAgdHJhbnNmZXI6IHRoaXMuX3Byb3BlcnR5LnByb3BlcnR5SW5mby5sZWFzZVRyYW5zZmVyUHJpY2UgJiYgdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLmxlYXNlVHJhbnNmZXJQcmljZSAhPT0gMCxcclxuICAgICAgdHJhbnNmZXJQcmljZTogdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLmxlYXNlVHJhbnNmZXJQcmljZSxcclxuICAgICAgYmVkcm9vbXM6IHRoaXMuX3Byb3BlcnR5LmZlYXR1cmVzLmJlZHJvb21zLFxyXG4gICAgICBiYXRocm9vbXM6IHRoaXMuX3Byb3BlcnR5LmZlYXR1cmVzLmJhdGhyb29tcyxcclxuICAgICAgcGFya2luZ1NwYWNlczogdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMucGFya2luZ1NwYWNlcyxcclxuICAgICAgbWFpbkFyZWE6IHRoaXMuX3Byb3BlcnR5LmZlYXR1cmVzLm1haW5BcmVhLFxyXG4gICAgICBzZWNvbmRhcnlBcmVhOiB0aGlzLl9wcm9wZXJ0eS5mZWF0dXJlcy5zZWNvbmRhcnlBcmVhLFxyXG4gICAgICB1bml0OiB0aGlzLl9wcm9wZXJ0eS5mZWF0dXJlcy5hcmVhVW5pdCxcclxuICAgICAgYnVpbGRJbjogdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMuYnVpbHRJbiA/IG5ldyBEYXRlKHRoaXMuX3Byb3BlcnR5LmZlYXR1cmVzLmJ1aWx0SW4sIDEsIDEpIDogbnVsbCxcclxuICAgICAgbGFuZFVzZTogdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMubGFuZFVzZSxcclxuICAgICAgZXhjbHVzaXZpdHk6IHRoaXMuX3Byb3BlcnR5LnByb3BlcnR5SW5mby5leGNsdXNpdml0eSxcclxuICAgICAgbWxtOiB0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8ubWxzLFxyXG4gICAgICBzaGFyZWRDb21taXNzaW9uOiB0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8uc2hhcmVkQ29tbWlzc2lvbixcclxuICAgICAgYWdyZWVtZW50RGF0ZTogdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLmxpc3RpbmdBZ3JlZW1lbnRTdGFydERhdGUgP1xyXG4gICAgICAgIG1vbWVudChuZXcgTURhdGUodGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLmxpc3RpbmdBZ3JlZW1lbnRTdGFydERhdGUpLnRvRGF0ZSgpKSA6IG51bGwsXHJcbiAgICAgIGR1cmF0aW9uOiB0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8ubGlzdGluZ0FncmVlbWVudFRpbWUsXHJcbiAgICAgIGNvbW1pc3Npb246IHRoaXMuX3Byb3BlcnR5LnByb3BlcnR5SW5mby5jb21taXNzaW9uLFxyXG4gICAgICByb2k6IHRoaXMuX3Byb3BlcnR5LmZlYXR1cmVzLnJvaSxcclxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuX3Byb3BlcnR5LmRlc2NyaXB0aW9uLFxyXG4gICAgICBleHRlcm5hbExpbms6IHRoaXMuX3Byb3BlcnR5LmV4dGVybmFsTGluayxcclxuICAgICAgbm90ZXM6IHRoaXMuX3Byb3BlcnR5LnByb3BlcnR5SW5mby5ub3RlcyxcclxuICAgICAgYWRkcmVzczoge1xyXG4gICAgICAgIGNvdW50cnk6IHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MuY291bnRyeSxcclxuICAgICAgICBzdGF0ZTogdGhpcy5fcHJvcGVydHkuYWRkcmVzcy5zdGF0ZSxcclxuICAgICAgICBjaXR5OiB0aGlzLl9wcm9wZXJ0eS5hZGRyZXNzLmNpdHksXHJcbiAgICAgICAgdG93bnNoaXA6IHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MudG93bnNoaXAsXHJcbiAgICAgICAgY29sb255OiB0aGlzLl9wcm9wZXJ0eS5hZGRyZXNzLmNvbG9ueSxcclxuICAgICAgICBwb3N0YWxDb2RlOiB0aGlzLl9wcm9wZXJ0eS5hZGRyZXNzLnBvc3RhbENvZGUsXHJcbiAgICAgICAgc3RyZWV0OiB0aGlzLl9wcm9wZXJ0eS5hZGRyZXNzLnN0cmVldCxcclxuICAgICAgICBleHROdW1iZXI6IHRoaXMuX3Byb3BlcnR5LmFkZHJlc3Mub3V0ZG9vck51bWJlcixcclxuICAgICAgICBpbnROdW1iZXI6IHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MuaW50ZXJpb3JOdW1iZXIsXHJcbiAgICAgICAgbXo6IHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MubXosXHJcbiAgICAgICAgbHQ6IHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MubHQsXHJcbiAgICAgICAgdmlzaWJsZTogdGhpcy5fcHJvcGVydHkuYWRkcmVzcy52aXNpYmxlIHx8IGZhbHNlLFxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlUHJvcGVydHlCeUZvcm0oZGF0YTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS50eXBlID0gdGhpcy5wcm9wZXJ0eVR5cGU7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5vZmZlcmluZyA9IGRhdGEub2ZmZXJpbmc7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5za3UgPSBkYXRhLnNrdTtcclxuICAgIHRoaXMuX3Byb3BlcnR5LnByb3BlcnR5SW5mby5jb25zdW1lclJlcG9ydGluZyA9IGRhdGEuY29uc3VtZXJSZXBvcnRpbmcgPyBkYXRhLmNvbnN1bWVyUmVwb3J0aW5nT3B0aW9uIDogbnVsbDtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmN1cnJlbmN5ID0gZGF0YS5jdXJyZW5jeTtcclxuICAgIHRoaXMuX3Byb3BlcnR5LnByb3BlcnR5SW5mby5sb3dlc3RQcmljZSA9IGRhdGEubWluUHJpY2UgPyBOdW1iZXIoZGF0YS5taW5QcmljZSkgOiBudWxsO1xyXG4gICAgdGhpcy5fcHJvcGVydHkucHJpY2UgPSBkYXRhLnByaWNlID8gTnVtYmVyKGRhdGEucHJpY2UpIDogbnVsbDtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmZlYXR1cmVzLmNvbmRvbWluaXVtRmVlUHJpY2UgPSBkYXRhLm1haW50ZW5hbmNlID8gTnVtYmVyKGRhdGEubWFpbnRlbmFuY2VQcmljZSkgOiBudWxsO1xyXG4gICAgdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLmxlYXNlVHJhbnNmZXJQcmljZSA9IGRhdGEudHJhbnNmZXIgPyBOdW1iZXIoZGF0YS50cmFuc2ZlclByaWNlKSA6IG51bGw7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5mZWF0dXJlcy5iZWRyb29tcyA9IGRhdGEuYmVkcm9vbXMgPyBOdW1iZXIoZGF0YS5iZWRyb29tcykgOiBudWxsO1xyXG4gICAgdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMuYmF0aHJvb21zID0gZGF0YS5iYXRocm9vbXMgPyBOdW1iZXIoZGF0YS5iYXRocm9vbXMpIDogbnVsbDtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmZlYXR1cmVzLnBhcmtpbmdTcGFjZXMgPSBkYXRhLnBhcmtpbmdTcGFjZXMgPyBOdW1iZXIoZGF0YS5wYXJraW5nU3BhY2VzKSA6IG51bGw7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5mZWF0dXJlcy5tYWluQXJlYSA9IGRhdGEubWFpbkFyZWEgPyBOdW1iZXIoZGF0YS5tYWluQXJlYSkgOiBudWxsO1xyXG4gICAgdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMuc2Vjb25kYXJ5QXJlYSA9IGRhdGEuc2Vjb25kYXJ5QXJlYSA/IE51bWJlcihkYXRhLnNlY29uZGFyeUFyZWEpIDogbnVsbDtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmZlYXR1cmVzLmFyZWFVbml0ID0gZGF0YS51bml0O1xyXG4gICAgdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMuYnVpbHRJbiA9IGRhdGEuYnVpbGRJbiA/IGRhdGEuYnVpbGRJbi5nZXRGdWxsWWVhcigpIDogbnVsbDtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmZlYXR1cmVzLmxhbmRVc2UgPSBkYXRhLmxhbmRVc2U7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8uZXhjbHVzaXZpdHkgPSBkYXRhLmV4Y2x1c2l2aXR5O1xyXG4gICAgdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLm1scyA9IGRhdGEubWxtO1xyXG4gICAgdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLnNoYXJlZENvbW1pc3Npb24gPSBkYXRhLm1sbSA/IE51bWJlcihkYXRhLnNoYXJlZENvbW1pc3Npb24pIDogbnVsbDtcclxuICAgIHRoaXMuX3Byb3BlcnR5LnByb3BlcnR5SW5mby5saXN0aW5nQWdyZWVtZW50U3RhcnREYXRlID1cclxuICAgICAgZGF0YS5hZ3JlZW1lbnREYXRlID8gTURhdGUuZ2V0VGltZXN0YW1wKGRhdGEuYWdyZWVtZW50RGF0ZS50b0RhdGUoKSkgOiBudWxsO1xyXG4gICAgdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLmxpc3RpbmdBZ3JlZW1lbnRUaW1lID0gZGF0YS5kdXJhdGlvbjtcclxuICAgIHRoaXMuX3Byb3BlcnR5LnByb3BlcnR5SW5mby5jb21taXNzaW9uID0gZGF0YS5jb21taXNzaW9uO1xyXG4gICAgdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMucm9pID0gZGF0YS5yb2k7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5kZXNjcmlwdGlvbiA9IGRhdGEuZGVzY3JpcHRpb247XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5leHRlcm5hbExpbmsgPSBkYXRhLmV4dGVybmFsTGluaztcclxuICAgIHRoaXMuX3Byb3BlcnR5LnByb3BlcnR5SW5mby5ub3RlcyA9IGRhdGEubm90ZXM7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5hZGRyZXNzLmNvdW50cnkgPSBkYXRhLmFkZHJlc3MuY291bnRyeTtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmFkZHJlc3Muc3RhdGUgPSBkYXRhLmFkZHJlc3Muc3RhdGU7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5hZGRyZXNzLmNpdHkgPSBkYXRhLmFkZHJlc3MuY2l0eTtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MudG93bnNoaXAgPSBkYXRhLmFkZHJlc3MudG93bnNoaXA7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5hZGRyZXNzLmNvbG9ueSA9IGRhdGEuYWRkcmVzcy5jb2xvbnk7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5hZGRyZXNzLnBvc3RhbENvZGUgPSBkYXRhLmFkZHJlc3MucG9zdGFsQ29kZTtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmFkZHJlc3Muc3RyZWV0ID0gZGF0YS5hZGRyZXNzLnN0cmVldDtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmFkZHJlc3Mub3V0ZG9vck51bWJlciA9IGRhdGEuYWRkcmVzcy5leHROdW1iZXI7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5hZGRyZXNzLmludGVyaW9yTnVtYmVyID0gZGF0YS5hZGRyZXNzLmludE51bWJlcjtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MubXogPSBkYXRhLmFkZHJlc3MubXo7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5hZGRyZXNzLmx0ID0gZGF0YS5hZGRyZXNzLmx0O1xyXG4gICAgdGhpcy5fcHJvcGVydHkuYWRkcmVzcy5sb2NhdGlvbiA9IHRoaXMuYWRkcmVzcy5sb2NhdGlvbjtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MucHVibGljTG9jYXRpb24gPSAhZGF0YS5hZGRyZXNzLnZpc2libGUgP1xyXG4gICAgICBFZGl0b3JDb21wb25lbnQuZ2VvUHRHZW5lcmF0b3IodGhpcy5hZGRyZXNzLmxvY2F0aW9uLCAyMDAsIDQwMCkgOiB0aGlzLmFkZHJlc3MubG9jYXRpb247XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5hZGRyZXNzLnZpc2libGUgPSBkYXRhLmFkZHJlc3MudmlzaWJsZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2VhcmNoQW1lbml0aWVzQnlQcm9wZXJ0eVR5cGUoKTogdm9pZCB7XHJcbiAgICBDb25zdGFudHNDb21wb25lbnRzLlByb3BlcnR5VHlwZUxpc3QuZm9yRWFjaCh0eXBlID0+IHtcclxuICAgICAgaWYgKHR5cGUudmFsdWUgPT09IHRoaXMucHJvcGVydHlUeXBlKSB7XHJcbiAgICAgICAgdGhpcy5fcHJvcGVydHlUeXBlSXRlbSA9IHR5cGU7XHJcbiAgICAgICAgdGhpcy5hbWVuaXRpZXNMaXN0ID0gdHlwZS5hbWVuaXRpZXMubWFwKGl0ZW0gPT4gKHsuLi5pdGVtfSkpO1xyXG4gICAgICAgIHRoaXMuZmVhdHVyZXNMaXN0ID0gdHlwZS5mZWF0dXJlcy5tYXAoaXRlbSA9PiAoey4uLml0ZW19KSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsaXN0ZW5DaGFuZ2VzT25Gb3JtKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGhpcy5wcm9wZXJ0eUZvcm0uY29udHJvbHNbJ29mZmVyaW5nJ10udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgICB0aGlzLmNvbW1pc3Npb25MaXN0ID0gQ29uc3RhbnRzQ29tcG9uZW50cy5Db21taXNzaW9uTGlzdFt2YWx1ZV07XHJcbiAgICAgICAgdGhpcy5wcm9wZXJ0eUZvcm0ucGF0Y2hWYWx1ZSh7XHJcbiAgICAgICAgICBtaW5QcmljZTogbnVsbCxcclxuICAgICAgICAgIG1heFByaWNlOiBudWxsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGhpcy5wcm9wZXJ0eUZvcm0uY29udHJvbHNbJ3ByaWNlJ10udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgICBpZiAodmFsdWUgJiYgTnVtYmVyKHZhbHVlKSA9PT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5wcm9wZXJ0eUZvcm0ucGF0Y2hWYWx1ZSh7XHJcbiAgICAgICAgICAgIG1pblByaWNlOiBudWxsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGhpcy5wcm9wZXJ0eUZvcm0uY29udHJvbHNbJ21sbSddLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucHJvcGVydHlGb3JtLmNvbnRyb2xzWydzaGFyZWRDb21taXNzaW9uJ10uc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGhpcy5wcm9wZXJ0eUZvcm0uY29udHJvbHNbJ21haW50ZW5hbmNlJ10udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wcm9wZXJ0eUZvcm0uY29udHJvbHNbJ21haW50ZW5hbmNlUHJpY2UnXS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLnByb3BlcnR5Rm9ybS5jb250cm9sc1sndHJhbnNmZXInXS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLnByb3BlcnR5Rm9ybS5jb250cm9sc1sndHJhbnNmZXJQcmljZSddLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgIHRoaXMucHJvcGVydHlGb3JtLmNvbnRyb2xzWydjb25zdW1lclJlcG9ydGluZyddLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucHJvcGVydHlGb3JtLmNvbnRyb2xzWydjb25zdW1lclJlcG9ydGluZ09wdGlvbiddLnNldFZhbHVlKDEpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlUHJvcGVydHkocHJvcGVydHk/OiBOZXdQcm9wZXJ0eSk6IHZvaWQge1xyXG4gICAgdGhpcy5fcHJvcGVydHkgPSBuZXcgTmV3UHJvcGVydHkocHJvcGVydHkgfHwgbnVsbCk7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS50eXBlID0gdGhpcy5wcm9wZXJ0eVR5cGU7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8gPSBuZXcgUHJvcGVydHlJbmZvKHByb3BlcnR5ID8gcHJvcGVydHkucHJvcGVydHlJbmZvIDogbnVsbCk7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5mZWF0dXJlcyA9IG5ldyBGZWF0dXJlcyhwcm9wZXJ0eSA/IHByb3BlcnR5LmZlYXR1cmVzIDogbnVsbCk7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5hZGRyZXNzID0gbmV3IEFkZHJlc3MocHJvcGVydHkgPyBwcm9wZXJ0eS5hZGRyZXNzIDogbnVsbCk7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5hbWVuaXRpZXMgPSBuZXcgQW1lbml0aWVzKHByb3BlcnR5ID8gcHJvcGVydHkuYW1lbml0aWVzIDogbnVsbCk7XHJcbiAgICB0aGlzLmFzc2lnbkJ1c2luZXNzUnVsZXMoKTtcclxuICAgIGlmIChwcm9wZXJ0eSAmJiBwcm9wZXJ0eS5pZCkge1xyXG4gICAgICB0aGlzLnVwZGF0ZUZvcm1CeVByb3BlcnR5KCk7XHJcbiAgICAgIHRoaXMuYXNzaWduQW1lbml0aWVzKCk7XHJcbiAgICAgIHRoaXMuYXNzaWduTG9jYXRpb25GZWF0dXJlcygpO1xyXG4gICAgICB0aGlzLmFzc2lnbkNvbW1pc3Npb24oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VmFsaWRhdG9yT25GaWVsZHMoZXJyb3JzOiBzdHJpbmdbXSwgcmVtb3ZlPzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKGVycm9ycy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgZXJyb3JzLmZvckVhY2goZXJyb3IgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMucHJvcGVydHlGb3JtLmNvbnRyb2xzW2Vycm9yXSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAocmVtb3ZlKSB7XHJcbiAgICAgICAgdGhpcy5wcm9wZXJ0eUZvcm0uY29udHJvbHNbZXJyb3JdLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgIHRoaXMucHJvcGVydHlGb3JtLmNvbnRyb2xzW2Vycm9yXS5zZXRWYWxpZGF0b3JzKHRoaXMuX3ZhbGlkYXRvcnNbZXJyb3JdID8gdGhpcy5fdmFsaWRhdG9yc1tlcnJvcl0gOiBbXSk7XHJcbiAgICAgICAgdGhpcy5wcm9wZXJ0eUZvcm0uY29udHJvbHNbZXJyb3JdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnByb3BlcnR5Rm9ybS5jb250cm9sc1tlcnJvcl0uY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgdGhpcy5wcm9wZXJ0eUZvcm0uY29udHJvbHNbZXJyb3JdLnNldFZhbGlkYXRvcnMoXHJcbiAgICAgICAgICB0aGlzLl92YWxpZGF0b3JzW2Vycm9yXSA/IHRoaXMuX3ZhbGlkYXRvcnNbZXJyb3JdLmNvbmNhdChWYWxpZGF0b3JzLnJlcXVpcmVkKSA6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XHJcbiAgICAgICAgdGhpcy5wcm9wZXJ0eUZvcm0uY29udHJvbHNbZXJyb3JdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
758
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BtYXBsYW5kZXIvY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3Byb3BlcnR5L2NvbXBvbmVudHMvZWRpdG9yL2VkaXRvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFdBQVcsRUFBMEIsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUNMLE9BQU8sRUFDUCxTQUFTLEVBRVQsWUFBWSxFQUVaLFFBQVEsRUFHUixXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsY0FBYyxFQUNmLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxFQUFDLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RixPQUFPLEVBQUMsK0JBQStCLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRyxPQUFPLEtBQUssY0FBYyxNQUFNLFFBQVEsQ0FBQztBQUd6QyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQztBQUNyRixPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDaEQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLG1CQUFtQixDQUFDOztJQUNsQyxNQUFNLEdBQUcsY0FB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QiwyQ0FBcUU7O0lBQ3JFLHVDQUEyQjs7SUFDM0Isa0NBQXlCOztJQUN6QixzQ0FBMkQ7O0lBQzNELHdDQUFvQzs7SUFDcEMsdUNBQW1DOztJQUNuQyx5Q0FBZ0M7O0lBQ2hDLCtDQUFzQzs7SUFDdEMsdUNBQThCOzs7OztJQUc1Qix1Q0FBaUM7Ozs7O0lBQ2pDLGtDQUE4Qjs7Ozs7SUFDOUIsbUNBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge1xyXG4gIEFkZHJlc3MsXHJcbiAgQW1lbml0aWVzLFxyXG4gIEFwcFV0aWwsXHJcbiAgQXJlYVVuaXRFbnVtLFxyXG4gIENFUixcclxuICBGZWF0dXJlcyxcclxuICBHZW9QdCxcclxuICBMYW5kVXNlRW51bSxcclxuICBOZXdQcm9wZXJ0eSxcclxuICBPZmZlcmluZ1R5cGVFbnVtLFxyXG4gIFByb3BlcnR5SW5mbyxcclxuICBQcm9wZXJ0eVR5cGVFbnVtLFxyXG4gIFN0YXR1c1R5cGVFbnVtXHJcbn0gZnJvbSAnQG1hcGxhbmRlci90eXBlcyc7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtEaWFsb2dTZXJ2aWNlfSBmcm9tICdAbWFwbGFuZGVyL3NoYXJlZCc7XHJcbmltcG9ydCB7RGF0ZUFkYXB0ZXIsIE1BVF9EQVRFX0ZPUk1BVFMsIE1BVF9EQVRFX0xPQ0FMRX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XHJcbmltcG9ydCB7TUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OUywgTW9tZW50RGF0ZUFkYXB0ZXJ9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsLW1vbWVudC1hZGFwdGVyJztcclxuaW1wb3J0ICogYXMgbW9tZW50SW1wb3J0ZWQgZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IHtQcm9wZXJ0eVR5cGVJdGVtfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9tb2RlbHMvcHJvcGVydHktdHlwZS1pdGVtJztcclxuaW1wb3J0IHtBbWVuaXR5SXRlbX0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvbW9kZWxzL2FtZW5pdHktaXRlbSc7XHJcbmltcG9ydCB7Q29uc3RhbnRzQ29tcG9uZW50c30gZnJvbSAnLi4vLi4vLi4vLi4vY29uc3RhbnRzQ29tcG9uZW50cyc7XHJcbmltcG9ydCB7UHJvcGVydHlFZGl0b3JWYWxpZGF0b3JzfSBmcm9tICcuLi8uLi92YWxpZGF0b3JzL3Byb3BlcnR5LWVkaXRvci12YWxpZGF0b3JzJztcclxuaW1wb3J0IHtNRGF0ZX0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvY2xhc3Nlcyc7XHJcbmltcG9ydCB7VXRpbHN9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzJztcclxuY29uc3QgbW9tZW50ID0gbW9tZW50SW1wb3J0ZWQ7XHJcblxyXG5jb25zdCBNWV9GT1JNQVRTID0ge1xyXG4gIHBhcnNlOiB7XHJcbiAgICBkYXRlSW5wdXQ6ICdMJyxcclxuICB9LFxyXG4gIGRpc3BsYXk6IHtcclxuICAgIGRhdGVJbnB1dDogJ0wnLFxyXG4gICAgbW9udGhZZWFyTGFiZWw6ICdNTU0gWVlZWScsXHJcbiAgICBkYXRlQTExeUxhYmVsOiAnTCcsXHJcbiAgICBtb250aFllYXJBMTF5TGFiZWw6ICdNTU1NIFlZWVknLFxyXG4gIH0sXHJcbn07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1wcm9wZXJ0eS1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2VkaXRvci5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge3Byb3ZpZGU6IE1BVF9EQVRFX0xPQ0FMRSwgdXNlVmFsdWU6ICdlcy1NWCd9LFxyXG4gICAge3Byb3ZpZGU6IERhdGVBZGFwdGVyLCB1c2VDbGFzczogTW9tZW50RGF0ZUFkYXB0ZXIsIGRlcHM6IFtNQVRfREFURV9MT0NBTEUsIE1BVF9NT01FTlRfREFURV9BREFQVEVSX09QVElPTlNdfSxcclxuICAgIHtwcm92aWRlOiBNQVRfREFURV9GT1JNQVRTLCB1c2VWYWx1ZTogTVlfRk9STUFUU31cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKCdidG5TdWJtaXQnLCB7c3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmfSkgcHJpdmF0ZSBfYnRuU3VibWl0UmVmOiBFbGVtZW50UmVmO1xyXG4gIEBJbnB1dCgpIHV0aWxzOiBBcHBVdGlsO1xyXG4gIEBJbnB1dCgpIGFkZHJlc3M6IEFkZHJlc3M7XHJcbiAgQElucHV0KCkgcHJvcGVydHlUeXBlOiBQcm9wZXJ0eVR5cGVFbnVtO1xyXG4gIEBJbnB1dCgpIHByb3BlcnR5OiBOZXdQcm9wZXJ0eTtcclxuICBASW5wdXQoKSBtbHNMYWJlbDogc3RyaW5nO1xyXG4gIEBPdXRwdXQoKSBlZGl0b3JJbnN0YW5jZTogRXZlbnRFbWl0dGVyPEVkaXRvckNvbXBvbmVudD47XHJcbiAgQE91dHB1dCgpIHNlbGVjdEFkZHJlc3M6IEV2ZW50RW1pdHRlcjx2b2lkPjtcclxuICAvKipcclxuICAgKiBSRUdFWF9PTkxZX0lOVEVHRVJTXHJcbiAgICogUmVnZXggcGF0dGVybiB0byBvbmx5IGFjY2VwdCBpbnRlZ2VyIGFuZCBwb3NpdGl2ZSBudW1iZXJzXHJcbiAgICogKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IFJFR0VYX09OTFlfSU5URUdFUlMgPSBuZXcgUmVnRXhwKC9eWzAtOV1cXGQqJC8pO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgUkVHRVhfTUlERExFX05VTUJFUiA9IG5ldyBSZWdFeHAoL15bMC05XSooXFwuWzVdKT8kLyk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBSRUdFWF9XRUJTSVRFID0gbmV3IFJlZ0V4cCgvKGh0dHB8aHR0cHMpOlxcL1xcLyhcXHcrOj9cXHcqQCk/KFxcUyspKDpbMC05XSspPyhcXC98XFwvKFtcXHcjITouPys9JiVAXFwtXFwvXSkpPy8pO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgUkVHRVhfQUxQSEFfTlVNQkVSID0gbmV3IFJlZ0V4cCgvW0EtWmEtejAtOV9dLyk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfdmFsaWRhdG9yczoge1xyXG4gICAgYmVkcm9vbXM6IFZhbGlkYXRvckZuW10sXHJcbiAgICBiYXRocm9vbXM6IFZhbGlkYXRvckZuW10sXHJcbiAgICBwYXJraW5nU3BhY2VzOiBWYWxpZGF0b3JGbltdLFxyXG4gICAgbWFpbkFyZWE6IFZhbGlkYXRvckZuW10sXHJcbiAgICBzZWNvbmRhcnlBcmVhOiBWYWxpZGF0b3JGbltdLFxyXG4gICAgZXh0ZXJuYWxMaW5rOiBWYWxpZGF0b3JGbltdLFxyXG4gICAgc2t1OiBWYWxpZGF0b3JGbltdXHJcbiAgfTtcclxuICBwcml2YXRlIF9wcm9wZXJ0eTogTmV3UHJvcGVydHk7XHJcbiAgcHJpdmF0ZSBfcHJvcGVydHlUeXBlSXRlbTogUHJvcGVydHlUeXBlSXRlbTtcclxuICBwcml2YXRlIF9lcnJvckZpZWxkczogc3RyaW5nW107XHJcbiAgcHVibGljIHByb3BlcnR5Rm9ybTogRm9ybUdyb3VwO1xyXG4gIHB1YmxpYyBvZmZlcmluZ1R5cGVMaXN0OiB7IG5hbWU6IHN0cmluZywgdmFsdWU6IE9mZmVyaW5nVHlwZUVudW0gfVtdO1xyXG4gIHB1YmxpYyBjdXJyZW5jeUxpc3Q6IENFUltdO1xyXG4gIHB1YmxpYyByb2lMaXN0OiBudW1iZXJbXTtcclxuICBwdWJsaWMgbGFuZFVzZUxpc3Q6IHsgbmFtZTogc3RyaW5nLCB2YWx1ZTogTGFuZFVzZUVudW0gfVtdO1xyXG4gIHB1YmxpYyBhbWVuaXRpZXNMaXN0OiBBbWVuaXR5SXRlbVtdO1xyXG4gIHB1YmxpYyBmZWF0dXJlc0xpc3Q6IEFtZW5pdHlJdGVtW107XHJcbiAgcHVibGljIGNvbW1pc3Npb25MaXN0OiBudW1iZXJbXTtcclxuICBwdWJsaWMgc2hhcmVkQ29tbWlzc2lvbkxpc3Q6IG51bWJlcltdO1xyXG4gIHB1YmxpYyBkdXJhdGlvbkxpc3Q6IG51bWJlcltdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2Zvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgX2RpYWxvZzogRGlhbG9nU2VydmljZSxcclxuICAgIHByaXZhdGUgX2FkYXB0ZXI6IERhdGVBZGFwdGVyPGFueT5cclxuICApIHtcclxuICAgIHRoaXMuZWRpdG9ySW5zdGFuY2UgPSBuZXcgRXZlbnRFbWl0dGVyPEVkaXRvckNvbXBvbmVudD4oKTtcclxuICAgIHRoaXMuc2VsZWN0QWRkcmVzcyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICAgIHRoaXMub2ZmZXJpbmdUeXBlTGlzdCA9IENvbnN0YW50c0NvbXBvbmVudHMuT2ZmZXJpbmdUeXBlTGlzdC5tYXAoZG9jID0+ICh7Li4uZG9jfSkpO1xyXG4gICAgdGhpcy5sYW5kVXNlTGlzdCA9IENvbnN0YW50c0NvbXBvbmVudHMuTGFuZFVzZUxpc3QubWFwKGRvYyA9PiAoey4uLmRvY30pKTtcclxuICAgIHRoaXMuY29tbWlzc2lvbkxpc3QgPSBDb25zdGFudHNDb21wb25lbnRzLkNvbW1pc3Npb25MaXN0W09mZmVyaW5nVHlwZUVudW0uU0FMRV07XHJcbiAgICB0aGlzLnJvaUxpc3QgPSBPYmplY3QuYXNzaWduKFtdLCBDb25zdGFudHNDb21wb25lbnRzLlJPSUxpc3QpO1xyXG4gICAgdGhpcy5kdXJhdGlvbkxpc3QgPSBPYmplY3QuYXNzaWduKFtdLCBDb25zdGFudHNDb21wb25lbnRzLkR1cmF0aW9uTGlzdCk7XHJcbiAgICB0aGlzLnNoYXJlZENvbW1pc3Npb25MaXN0ID0gT2JqZWN0LmFzc2lnbihbXSwgQ29uc3RhbnRzQ29tcG9uZW50cy5TaGFyZWRDb21taXNzaW9uTGlzdCk7XHJcbiAgICB0aGlzLl9hZGFwdGVyLnNldExvY2FsZSgnZXMnKTtcclxuICAgIHRoaXMuX2Vycm9yRmllbGRzID0gW107XHJcbiAgICB0aGlzLl92YWxpZGF0b3JzID0ge1xyXG4gICAgICBiZWRyb29tczogW1ZhbGlkYXRvcnMucGF0dGVybih0aGlzLlJFR0VYX09OTFlfSU5URUdFUlMpXSxcclxuICAgICAgYmF0aHJvb21zOiBbVmFsaWRhdG9ycy5wYXR0ZXJuKHRoaXMuUkVHRVhfTUlERExFX05VTUJFUildLFxyXG4gICAgICBwYXJraW5nU3BhY2VzOiBbVmFsaWRhdG9ycy5wYXR0ZXJuKHRoaXMuUkVHRVhfT05MWV9JTlRFR0VSUyldLFxyXG4gICAgICBtYWluQXJlYTogW10sXHJcbiAgICAgIHNlY29uZGFyeUFyZWE6IFtdLFxyXG4gICAgICBleHRlcm5hbExpbms6IFtWYWxpZGF0b3JzLnBhdHRlcm4odGhpcy5SRUdFWF9XRUJTSVRFKV0sXHJcbiAgICAgIHNrdTogW1ZhbGlkYXRvcnMucGF0dGVybih0aGlzLlJFR0VYX0FMUEhBX05VTUJFUildXHJcbiAgICB9O1xyXG4gICAgdGhpcy5wcm9wZXJ0eUZvcm0gPSB0aGlzLl9mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIG9mZmVyaW5nOiBbT2ZmZXJpbmdUeXBlRW51bS5TQUxFXSxcclxuICAgICAgc2t1OiBbbnVsbCwgdGhpcy5fdmFsaWRhdG9ycy5za3VdLFxyXG4gICAgICBjb25zdW1lclJlcG9ydGluZzogW10sXHJcbiAgICAgIGNvbnN1bWVyUmVwb3J0aW5nT3B0aW9uOiBbMV0sXHJcbiAgICAgIGN1cnJlbmN5OiBbJ01YTiddLFxyXG4gICAgICBtaW5QcmljZTogW10sXHJcbiAgICAgIHByaWNlOiBbXSxcclxuICAgICAgbWFpbnRlbmFuY2U6IFtdLFxyXG4gICAgICBtYWludGVuYW5jZVByaWNlOiBbXSxcclxuICAgICAgdHJhbnNmZXI6IFtdLFxyXG4gICAgICB0cmFuc2ZlclByaWNlOiBbXSxcclxuICAgICAgYmVkcm9vbXM6IFtudWxsLCB0aGlzLl92YWxpZGF0b3JzLmJlZHJvb21zXSxcclxuICAgICAgYmF0aHJvb21zOiBbbnVsbCwgdGhpcy5fdmFsaWRhdG9ycy5iYXRocm9vbXNdLFxyXG4gICAgICBwYXJraW5nU3BhY2VzOiBbbnVsbCwgdGhpcy5fdmFsaWRhdG9ycy5wYXJraW5nU3BhY2VzXSxcclxuICAgICAgbWFpbkFyZWE6IFtudWxsLCB0aGlzLl92YWxpZGF0b3JzLm1haW5BcmVhXSxcclxuICAgICAgc2Vjb25kYXJ5QXJlYTogW251bGwsIHRoaXMuX3ZhbGlkYXRvcnMuc2Vjb25kYXJ5QXJlYV0sXHJcbiAgICAgIHVuaXQ6IFtBcmVhVW5pdEVudW0uTTJdLFxyXG4gICAgICBidWlsZEluOiBbXSxcclxuICAgICAgbGFuZFVzZTogW10sXHJcbiAgICAgIGV4Y2x1c2l2aXR5OiBbXSxcclxuICAgICAgbWxtOiBbXSxcclxuICAgICAgc2hhcmVkQ29tbWlzc2lvbjogW10sXHJcbiAgICAgIGFncmVlbWVudERhdGU6IFt7dmFsdWU6IG51bGwsIGRpc2FibGVkOiB0cnVlfV0sXHJcbiAgICAgIGR1cmF0aW9uOiBbXSxcclxuICAgICAgY29tbWlzc2lvbjogW10sXHJcbiAgICAgIHJvaTogW10sXHJcbiAgICAgIGRlc2NyaXB0aW9uOiBbXSxcclxuICAgICAgZXh0ZXJuYWxMaW5rOiBbbnVsbCwgdGhpcy5fdmFsaWRhdG9ycy5leHRlcm5hbExpbmtdLFxyXG4gICAgICBub3RlczogW10sXHJcbiAgICAgIGFkZHJlc3M6IHRoaXMuX2Zvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgICBjb3VudHJ5OiBbXSxcclxuICAgICAgICBwb3N0YWxDb2RlOiBbXSxcclxuICAgICAgICBzdGF0ZTogW10sXHJcbiAgICAgICAgY2l0eTogW10sXHJcbiAgICAgICAgdG93bnNoaXA6IFtdLFxyXG4gICAgICAgIGNvbG9ueTogW10sXHJcbiAgICAgICAgc3RyZWV0OiBbXSxcclxuICAgICAgICBleHROdW1iZXI6IFtdLFxyXG4gICAgICAgIGludE51bWJlcjogW10sXHJcbiAgICAgICAgbXo6IFtdLFxyXG4gICAgICAgIGx0OiBbXSxcclxuICAgICAgICB2aXNpYmxlOiBbdHJ1ZV0sXHJcbiAgICAgIH0pLFxyXG4gICAgfSwge1xyXG4gICAgICB2YWxpZGF0b3JzOiBQcm9wZXJ0eUVkaXRvclZhbGlkYXRvcnMudmFsaWRhdG9yXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGdlb1B0R2VuZXJhdG9yKGdlb1B0OiBHZW9QdCwgbWluRGlzdGFuY2U6IG51bWJlciwgbWF4RGlzdGFuY2U6IG51bWJlcik6IEdlb1B0IHtcclxuICAgIGNvbnN0IEVBUlRIX1JBRElVU19NRVRFUlMgPSA2MzcxMDEwLjA7XHJcbiAgICBjb25zdCBsID0gTWF0aC5yYW5kb20oKSAqIChtYXhEaXN0YW5jZSAtIG1pbkRpc3RhbmNlKSArIG1pbkRpc3RhbmNlO1xyXG4gICAgY29uc3QgYWxwaGEgPSBNYXRoLnJhbmRvbSgpICogTWF0aC5QSSAvIDI7XHJcbiAgICBjb25zdCBzeCA9IChNYXRoLnJhbmRvbSgpIDwgMC41KSA/IGwgKiBNYXRoLmNvcyhhbHBoYSkgOiAtbCAqIE1hdGguY29zKGFscGhhKTtcclxuICAgIGNvbnN0IHN5ID0gKE1hdGgucmFuZG9tKCkgPCAwLjUpID8gbCAqIE1hdGguc2luKGFscGhhKSA6IC1sICogTWF0aC5zaW4oYWxwaGEpO1xyXG4gICAgY29uc3QgZGVsdGFMYXQgPSBzeSAvIEVBUlRIX1JBRElVU19NRVRFUlMgKiAxODAgLyBNYXRoLlBJO1xyXG4gICAgY29uc3QgbGF0ID0gZ2VvUHQubGF0aXR1ZGUgKyBkZWx0YUxhdDtcclxuICAgIGNvbnN0IGRlbHRhTG9uZyA9IHN4IC8gRUFSVEhfUkFESVVTX01FVEVSUyAvIE1hdGguY29zKGxhdCAqIE1hdGguUEkgLyAxODApICogMTgwIC8gTWF0aC5QSTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGxhdGl0dWRlOiBsYXQsXHJcbiAgICAgIGxvbmdpdHVkZTogZ2VvUHQubG9uZ2l0dWRlICsgZGVsdGFMb25nXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmxpc3RlbkNoYW5nZXNPbkZvcm0oKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWyd1dGlscyddICYmIGNoYW5nZXNbJ3V0aWxzJ10uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIHRoaXMuY3VycmVuY3lMaXN0ID0gY2hhbmdlc1sndXRpbHMnXS5jdXJyZW50VmFsdWUuY2VycztcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydwcm9wZXJ0eVR5cGUnXSAmJiBjaGFuZ2VzWydwcm9wZXJ0eVR5cGUnXS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy5wcm9wZXJ0eVR5cGUgPSBjaGFuZ2VzWydwcm9wZXJ0eVR5cGUnXS5jdXJyZW50VmFsdWU7XHJcbiAgICAgIHRoaXMuc2VhcmNoQW1lbml0aWVzQnlQcm9wZXJ0eVR5cGUoKTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydwcm9wZXJ0eSddICYmIGNoYW5nZXNbJ3Byb3BlcnR5J10uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlUHJvcGVydHkoY2hhbmdlc1sncHJvcGVydHknXS5jdXJyZW50VmFsdWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2FkZHJlc3MnXSAmJiBjaGFuZ2VzWydhZGRyZXNzJ10uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlQWRkcmVzc0Zvcm0oY2hhbmdlc1snYWRkcmVzcyddLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRvckluc3RhbmNlLmVtaXQodGhpcyk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJvcGVydHkoKTogTmV3UHJvcGVydHkge1xyXG4gICAgdGhpcy5zZXRWYWxpZGF0b3JPbkZpZWxkcyh0aGlzLl9lcnJvckZpZWxkcywgdHJ1ZSk7XHJcbiAgICB0aGlzLnVwZGF0ZVByb3BlcnR5QnlGb3JtKHRoaXMucHJvcGVydHlGb3JtLmdldFJhd1ZhbHVlKCkpO1xyXG4gICAgcmV0dXJuIHRoaXMuX3Byb3BlcnR5O1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVGb3JtSW52YWxpZCgpOiBib29sZWFuIHtcclxuICAgIHRoaXMuc2V0VmFsaWRhdG9yT25GaWVsZHModGhpcy5fZXJyb3JGaWVsZHMsIHRydWUpO1xyXG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlGb3JtLmludmFsaWQ7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVBbWVuaXR5KGFtZW5pdHk6IEFtZW5pdHlJdGVtKTogdm9pZCB7XHJcbiAgICBhbWVuaXR5LmNoZWNrZWQgPSAhYW1lbml0eS5jaGVja2VkO1xyXG4gICAgdGhpcy5fcHJvcGVydHkuYW1lbml0aWVzW2FtZW5pdHkudmFsdWVdID0gYW1lbml0eS5jaGVja2VkO1xyXG4gIH1cclxuXHJcbiAgZ29Ub1NlbGVjdEFkZHJlc3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdEFkZHJlc3MuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgc2V0RXJyb3JzT25GaWVsZHMoZXJyb3JzOiBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5fZXJyb3JGaWVsZHMgPSBlcnJvcnM7XHJcbiAgICB0aGlzLnNldFZhbGlkYXRvck9uRmllbGRzKHRoaXMuX2Vycm9yRmllbGRzKTtcclxuICAgIHRoaXMuX2J0blN1Ym1pdFJlZi5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUFkZHJlc3NGb3JtKGFkZHJlc3M6IEFkZHJlc3MpOiB2b2lkIHtcclxuICAgIHRoaXMucHJvcGVydHlGb3JtLnBhdGNoVmFsdWUoe1xyXG4gICAgICBhZGRyZXNzOiB7XHJcbiAgICAgICAgY291bnRyeTogYWRkcmVzcy5jb3VudHJ5LFxyXG4gICAgICAgIHN0YXRlOiBhZGRyZXNzLnN0YXRlLFxyXG4gICAgICAgIGNpdHk6IGFkZHJlc3MuY2l0eSxcclxuICAgICAgICB0b3duc2hpcDogYWRkcmVzcy50b3duc2hpcCxcclxuICAgICAgICBjb2xvbnk6IGFkZHJlc3MuY29sb255LFxyXG4gICAgICAgIHN0cmVldDogYWRkcmVzcy5zdHJlZXQsXHJcbiAgICAgICAgcG9zdGFsQ29kZTogYWRkcmVzcy5wb3N0YWxDb2RlLFxyXG4gICAgICAgIGV4dE51bWJlcjogYWRkcmVzcy5vdXRkb29yTnVtYmVyXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3NpZ25BbWVuaXRpZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFtZW5pdGllc0xpc3QuZm9yRWFjaCgoYW1lbml0eSkgPT4ge1xyXG4gICAgICBhbWVuaXR5LmNoZWNrZWQgPSB0aGlzLl9wcm9wZXJ0eS5hbWVuaXRpZXNbYW1lbml0eS52YWx1ZV07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXNzaWduTG9jYXRpb25GZWF0dXJlcygpOiB2b2lkIHtcclxuICAgIHRoaXMuZmVhdHVyZXNMaXN0LmZvckVhY2goKGFtZW5pdHkpID0+IHtcclxuICAgICAgYW1lbml0eS5jaGVja2VkID0gdGhpcy5fcHJvcGVydHkuYW1lbml0aWVzW2FtZW5pdHkudmFsdWVdO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzc2lnbkNvbW1pc3Npb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbW1pc3Npb25MaXN0ID0gQ29uc3RhbnRzQ29tcG9uZW50cy5Db21taXNzaW9uTGlzdFt0aGlzLl9wcm9wZXJ0eS5vZmZlcmluZ107XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzc2lnbkJ1c2luZXNzUnVsZXMoKTogdm9pZCB7XHJcbiAgICBzd2l0Y2ggKHRoaXMucHJvcGVydHlUeXBlKSB7XHJcbiAgICAgIGNhc2UgUHJvcGVydHlUeXBlRW51bS5ST09NOlxyXG4gICAgICAgIHRoaXMucHJvcGVydHlGb3JtLnBhdGNoVmFsdWUoe1xyXG4gICAgICAgICAgb2ZmZXJpbmc6IE9mZmVyaW5nVHlwZUVudW0uUkVOVFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFByb3BlcnR5VHlwZUVudW0uSU5WRVNUTUVOVDpcclxuICAgICAgICB0aGlzLnByb3BlcnR5Rm9ybS5wYXRjaFZhbHVlKHtcclxuICAgICAgICAgIG9mZmVyaW5nOiBPZmZlcmluZ1R5cGVFbnVtLlNBTEVcclxuICAgICAgICB9KTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9wcm9wZXJ0eS5zdGF0dXMgPT09IFN0YXR1c1R5cGVFbnVtLkFOTk9VTkNFRCkge1xyXG4gICAgICBjb25zdCBlcnJvcnMgPSBVdGlscy5saXN0RXJyb3JzQnlQcm9wZXJ0eVR5cGVGb3JQdWJsaXNoKHRoaXMuX3Byb3BlcnR5LnR5cGUpO1xyXG4gICAgICB0aGlzLnNldFZhbGlkYXRvck9uRmllbGRzKGVycm9ycyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUZvcm1CeVByb3BlcnR5KCk6IHZvaWQge1xyXG4gICAgdGhpcy5wcm9wZXJ0eUZvcm0ucGF0Y2hWYWx1ZSh7XHJcbiAgICAgIG9mZmVyaW5nOiB0aGlzLl9wcm9wZXJ0eS5vZmZlcmluZyxcclxuICAgICAgc2t1OiB0aGlzLl9wcm9wZXJ0eS5za3UsXHJcbiAgICAgIGNvbnN1bWVyUmVwb3J0aW5nOiB0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8uY29uc3VtZXJSZXBvcnRpbmcgJiYgdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLmNvbnN1bWVyUmVwb3J0aW5nICE9PSAwLFxyXG4gICAgICBjb25zdW1lclJlcG9ydGluZ09wdGlvbjogdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLmNvbnN1bWVyUmVwb3J0aW5nLFxyXG4gICAgICBjdXJyZW5jeTogdGhpcy5fcHJvcGVydHkuY3VycmVuY3ksXHJcbiAgICAgIG1pblByaWNlOiB0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8ubG93ZXN0UHJpY2UsXHJcbiAgICAgIHByaWNlOiB0aGlzLl9wcm9wZXJ0eS5wcmljZSxcclxuICAgICAgbWFpbnRlbmFuY2U6IHRoaXMuX3Byb3BlcnR5LmZlYXR1cmVzLmNvbmRvbWluaXVtRmVlUHJpY2UgJiYgdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMuY29uZG9taW5pdW1GZWVQcmljZSAhPT0gMCxcclxuICAgICAgbWFpbnRlbmFuY2VQcmljZTogdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMuY29uZG9taW5pdW1GZWVQcmljZSxcclxuICAgICAgdHJhbnNmZXI6IHRoaXMuX3Byb3BlcnR5LnByb3BlcnR5SW5mby5sZWFzZVRyYW5zZmVyUHJpY2UgJiYgdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLmxlYXNlVHJhbnNmZXJQcmljZSAhPT0gMCxcclxuICAgICAgdHJhbnNmZXJQcmljZTogdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLmxlYXNlVHJhbnNmZXJQcmljZSxcclxuICAgICAgYmVkcm9vbXM6IHRoaXMuX3Byb3BlcnR5LmZlYXR1cmVzLmJlZHJvb21zLFxyXG4gICAgICBiYXRocm9vbXM6IHRoaXMuX3Byb3BlcnR5LmZlYXR1cmVzLmJhdGhyb29tcyxcclxuICAgICAgcGFya2luZ1NwYWNlczogdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMucGFya2luZ1NwYWNlcyxcclxuICAgICAgbWFpbkFyZWE6IHRoaXMuX3Byb3BlcnR5LmZlYXR1cmVzLm1haW5BcmVhLFxyXG4gICAgICBzZWNvbmRhcnlBcmVhOiB0aGlzLl9wcm9wZXJ0eS5mZWF0dXJlcy5zZWNvbmRhcnlBcmVhLFxyXG4gICAgICB1bml0OiB0aGlzLl9wcm9wZXJ0eS5mZWF0dXJlcy5hcmVhVW5pdCxcclxuICAgICAgYnVpbGRJbjogdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMuYnVpbHRJbiA/IG5ldyBEYXRlKHRoaXMuX3Byb3BlcnR5LmZlYXR1cmVzLmJ1aWx0SW4sIDEsIDEpIDogbnVsbCxcclxuICAgICAgbGFuZFVzZTogdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMubGFuZFVzZSxcclxuICAgICAgZXhjbHVzaXZpdHk6IHRoaXMuX3Byb3BlcnR5LnByb3BlcnR5SW5mby5leGNsdXNpdml0eSxcclxuICAgICAgbWxtOiB0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8ubWxzLFxyXG4gICAgICBzaGFyZWRDb21taXNzaW9uOiB0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8uc2hhcmVkQ29tbWlzc2lvbixcclxuICAgICAgYWdyZWVtZW50RGF0ZTogdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLmxpc3RpbmdBZ3JlZW1lbnRTdGFydERhdGUgP1xyXG4gICAgICAgIG1vbWVudChuZXcgTURhdGUodGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLmxpc3RpbmdBZ3JlZW1lbnRTdGFydERhdGUpLnRvRGF0ZSgpKSA6IG51bGwsXHJcbiAgICAgIGR1cmF0aW9uOiB0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8ubGlzdGluZ0FncmVlbWVudFRpbWUsXHJcbiAgICAgIGNvbW1pc3Npb246IHRoaXMuX3Byb3BlcnR5LnByb3BlcnR5SW5mby5jb21taXNzaW9uLFxyXG4gICAgICByb2k6IHRoaXMuX3Byb3BlcnR5LmZlYXR1cmVzLnJvaSxcclxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuX3Byb3BlcnR5LmRlc2NyaXB0aW9uLFxyXG4gICAgICBleHRlcm5hbExpbms6IHRoaXMuX3Byb3BlcnR5LmV4dGVybmFsTGluayxcclxuICAgICAgbm90ZXM6IHRoaXMuX3Byb3BlcnR5LnByb3BlcnR5SW5mby5ub3RlcyxcclxuICAgICAgYWRkcmVzczoge1xyXG4gICAgICAgIGNvdW50cnk6IHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MuY291bnRyeSxcclxuICAgICAgICBzdGF0ZTogdGhpcy5fcHJvcGVydHkuYWRkcmVzcy5zdGF0ZSxcclxuICAgICAgICBjaXR5OiB0aGlzLl9wcm9wZXJ0eS5hZGRyZXNzLmNpdHksXHJcbiAgICAgICAgdG93bnNoaXA6IHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MudG93bnNoaXAsXHJcbiAgICAgICAgY29sb255OiB0aGlzLl9wcm9wZXJ0eS5hZGRyZXNzLmNvbG9ueSxcclxuICAgICAgICBwb3N0YWxDb2RlOiB0aGlzLl9wcm9wZXJ0eS5hZGRyZXNzLnBvc3RhbENvZGUsXHJcbiAgICAgICAgc3RyZWV0OiB0aGlzLl9wcm9wZXJ0eS5hZGRyZXNzLnN0cmVldCxcclxuICAgICAgICBleHROdW1iZXI6IHRoaXMuX3Byb3BlcnR5LmFkZHJlc3Mub3V0ZG9vck51bWJlcixcclxuICAgICAgICBpbnROdW1iZXI6IHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MuaW50ZXJpb3JOdW1iZXIsXHJcbiAgICAgICAgbXo6IHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MubXosXHJcbiAgICAgICAgbHQ6IHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MubHQsXHJcbiAgICAgICAgdmlzaWJsZTogdGhpcy5fcHJvcGVydHkuYWRkcmVzcy52aXNpYmxlIHx8IGZhbHNlLFxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlUHJvcGVydHlCeUZvcm0oZGF0YTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS50eXBlID0gdGhpcy5wcm9wZXJ0eVR5cGU7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5vZmZlcmluZyA9IGRhdGEub2ZmZXJpbmc7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5za3UgPSBkYXRhLnNrdTtcclxuICAgIHRoaXMuX3Byb3BlcnR5LnByb3BlcnR5SW5mby5jb25zdW1lclJlcG9ydGluZyA9IGRhdGEuY29uc3VtZXJSZXBvcnRpbmcgPyBkYXRhLmNvbnN1bWVyUmVwb3J0aW5nT3B0aW9uIDogbnVsbDtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmN1cnJlbmN5ID0gZGF0YS5jdXJyZW5jeTtcclxuICAgIHRoaXMuX3Byb3BlcnR5LnByb3BlcnR5SW5mby5sb3dlc3RQcmljZSA9IGRhdGEubWluUHJpY2UgPyBOdW1iZXIoZGF0YS5taW5QcmljZSkgOiBudWxsO1xyXG4gICAgdGhpcy5fcHJvcGVydHkucHJpY2UgPSBkYXRhLnByaWNlID8gTnVtYmVyKGRhdGEucHJpY2UpIDogbnVsbDtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmZlYXR1cmVzLmNvbmRvbWluaXVtRmVlUHJpY2UgPSBkYXRhLm1haW50ZW5hbmNlID8gTnVtYmVyKGRhdGEubWFpbnRlbmFuY2VQcmljZSkgOiBudWxsO1xyXG4gICAgdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLmxlYXNlVHJhbnNmZXJQcmljZSA9IGRhdGEudHJhbnNmZXIgPyBOdW1iZXIoZGF0YS50cmFuc2ZlclByaWNlKSA6IG51bGw7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5mZWF0dXJlcy5iZWRyb29tcyA9IGRhdGEuYmVkcm9vbXMgPyBOdW1iZXIoZGF0YS5iZWRyb29tcykgOiBudWxsO1xyXG4gICAgdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMuYmF0aHJvb21zID0gZGF0YS5iYXRocm9vbXMgPyBOdW1iZXIoZGF0YS5iYXRocm9vbXMpIDogbnVsbDtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmZlYXR1cmVzLnBhcmtpbmdTcGFjZXMgPSBkYXRhLnBhcmtpbmdTcGFjZXMgPyBOdW1iZXIoZGF0YS5wYXJraW5nU3BhY2VzKSA6IG51bGw7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5mZWF0dXJlcy5tYWluQXJlYSA9IGRhdGEubWFpbkFyZWEgPyBOdW1iZXIoZGF0YS5tYWluQXJlYSkgOiBudWxsO1xyXG4gICAgdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMuc2Vjb25kYXJ5QXJlYSA9IGRhdGEuc2Vjb25kYXJ5QXJlYSA/IE51bWJlcihkYXRhLnNlY29uZGFyeUFyZWEpIDogbnVsbDtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmZlYXR1cmVzLmFyZWFVbml0ID0gZGF0YS51bml0O1xyXG4gICAgdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMuYnVpbHRJbiA9IGRhdGEuYnVpbGRJbiA/IGRhdGEuYnVpbGRJbi5nZXRGdWxsWWVhcigpIDogbnVsbDtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmZlYXR1cmVzLmxhbmRVc2UgPSBkYXRhLmxhbmRVc2U7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8uZXhjbHVzaXZpdHkgPSBkYXRhLmV4Y2x1c2l2aXR5O1xyXG4gICAgdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLm1scyA9IGRhdGEubWxtO1xyXG4gICAgdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLnNoYXJlZENvbW1pc3Npb24gPSBkYXRhLm1sbSA/IE51bWJlcihkYXRhLnNoYXJlZENvbW1pc3Npb24pIDogbnVsbDtcclxuICAgIHRoaXMuX3Byb3BlcnR5LnByb3BlcnR5SW5mby5saXN0aW5nQWdyZWVtZW50U3RhcnREYXRlID1cclxuICAgICAgZGF0YS5hZ3JlZW1lbnREYXRlID8gTURhdGUuZ2V0VGltZXN0YW1wKGRhdGEuYWdyZWVtZW50RGF0ZS50b0RhdGUoKSkgOiBudWxsO1xyXG4gICAgdGhpcy5fcHJvcGVydHkucHJvcGVydHlJbmZvLmxpc3RpbmdBZ3JlZW1lbnRUaW1lID0gZGF0YS5kdXJhdGlvbjtcclxuICAgIHRoaXMuX3Byb3BlcnR5LnByb3BlcnR5SW5mby5jb21taXNzaW9uID0gZGF0YS5jb21taXNzaW9uO1xyXG4gICAgdGhpcy5fcHJvcGVydHkuZmVhdHVyZXMucm9pID0gZGF0YS5yb2k7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5kZXNjcmlwdGlvbiA9IGRhdGEuZGVzY3JpcHRpb247XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5leHRlcm5hbExpbmsgPSBkYXRhLmV4dGVybmFsTGluaztcclxuICAgIHRoaXMuX3Byb3BlcnR5LnByb3BlcnR5SW5mby5ub3RlcyA9IGRhdGEubm90ZXM7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5hZGRyZXNzLmNvdW50cnkgPSBkYXRhLmFkZHJlc3MuY291bnRyeTtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmFkZHJlc3Muc3RhdGUgPSBkYXRhLmFkZHJlc3Muc3RhdGU7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5hZGRyZXNzLmNpdHkgPSBkYXRhLmFkZHJlc3MuY2l0eTtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MudG93bnNoaXAgPSBkYXRhLmFkZHJlc3MudG93bnNoaXA7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5hZGRyZXNzLmNvbG9ueSA9IGRhdGEuYWRkcmVzcy5jb2xvbnk7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5hZGRyZXNzLnBvc3RhbENvZGUgPSBkYXRhLmFkZHJlc3MucG9zdGFsQ29kZTtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmFkZHJlc3Muc3RyZWV0ID0gZGF0YS5hZGRyZXNzLnN0cmVldDtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmFkZHJlc3Mub3V0ZG9vck51bWJlciA9IGRhdGEuYWRkcmVzcy5leHROdW1iZXI7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5hZGRyZXNzLmludGVyaW9yTnVtYmVyID0gZGF0YS5hZGRyZXNzLmludE51bWJlcjtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MubXogPSBkYXRhLmFkZHJlc3MubXo7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5hZGRyZXNzLmx0ID0gZGF0YS5hZGRyZXNzLmx0O1xyXG4gICAgdGhpcy5fcHJvcGVydHkuYWRkcmVzcy5sb2NhdGlvbiA9IHRoaXMuYWRkcmVzcy5sb2NhdGlvbjtcclxuICAgIHRoaXMuX3Byb3BlcnR5LmFkZHJlc3MucHVibGljTG9jYXRpb24gPSAhZGF0YS5hZGRyZXNzLnZpc2libGUgP1xyXG4gICAgICBFZGl0b3JDb21wb25lbnQuZ2VvUHRHZW5lcmF0b3IodGhpcy5hZGRyZXNzLmxvY2F0aW9uLCAyMDAsIDQwMCkgOiB0aGlzLmFkZHJlc3MubG9jYXRpb247XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5hZGRyZXNzLnZpc2libGUgPSBkYXRhLmFkZHJlc3MudmlzaWJsZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2VhcmNoQW1lbml0aWVzQnlQcm9wZXJ0eVR5cGUoKTogdm9pZCB7XHJcbiAgICBDb25zdGFudHNDb21wb25lbnRzLlByb3BlcnR5VHlwZUxpc3QuZm9yRWFjaCh0eXBlID0+IHtcclxuICAgICAgaWYgKHR5cGUudmFsdWUgPT09IHRoaXMucHJvcGVydHlUeXBlKSB7XHJcbiAgICAgICAgdGhpcy5fcHJvcGVydHlUeXBlSXRlbSA9IHR5cGU7XHJcbiAgICAgICAgdGhpcy5hbWVuaXRpZXNMaXN0ID0gdHlwZS5hbWVuaXRpZXMubWFwKGl0ZW0gPT4gKHsuLi5pdGVtfSkpO1xyXG4gICAgICAgIHRoaXMuZmVhdHVyZXNMaXN0ID0gdHlwZS5mZWF0dXJlcy5tYXAoaXRlbSA9PiAoey4uLml0ZW19KSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsaXN0ZW5DaGFuZ2VzT25Gb3JtKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGhpcy5wcm9wZXJ0eUZvcm0uY29udHJvbHNbJ29mZmVyaW5nJ10udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgICB0aGlzLmNvbW1pc3Npb25MaXN0ID0gQ29uc3RhbnRzQ29tcG9uZW50cy5Db21taXNzaW9uTGlzdFt2YWx1ZV07XHJcbiAgICAgICAgdGhpcy5wcm9wZXJ0eUZvcm0ucGF0Y2hWYWx1ZSh7XHJcbiAgICAgICAgICBtaW5QcmljZTogbnVsbCxcclxuICAgICAgICAgIG1heFByaWNlOiBudWxsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGhpcy5wcm9wZXJ0eUZvcm0uY29udHJvbHNbJ3ByaWNlJ10udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgICBpZiAodmFsdWUgJiYgTnVtYmVyKHZhbHVlKSA9PT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5wcm9wZXJ0eUZvcm0ucGF0Y2hWYWx1ZSh7XHJcbiAgICAgICAgICAgIG1pblByaWNlOiBudWxsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGhpcy5wcm9wZXJ0eUZvcm0uY29udHJvbHNbJ21sbSddLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucHJvcGVydHlGb3JtLmNvbnRyb2xzWydzaGFyZWRDb21taXNzaW9uJ10uc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGhpcy5wcm9wZXJ0eUZvcm0uY29udHJvbHNbJ21haW50ZW5hbmNlJ10udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wcm9wZXJ0eUZvcm0uY29udHJvbHNbJ21haW50ZW5hbmNlUHJpY2UnXS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLnByb3BlcnR5Rm9ybS5jb250cm9sc1sndHJhbnNmZXInXS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLnByb3BlcnR5Rm9ybS5jb250cm9sc1sndHJhbnNmZXJQcmljZSddLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgIHRoaXMucHJvcGVydHlGb3JtLmNvbnRyb2xzWydjb25zdW1lclJlcG9ydGluZyddLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucHJvcGVydHlGb3JtLmNvbnRyb2xzWydjb25zdW1lclJlcG9ydGluZ09wdGlvbiddLnNldFZhbHVlKDEpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlUHJvcGVydHkocHJvcGVydHk/OiBOZXdQcm9wZXJ0eSk6IHZvaWQge1xyXG4gICAgdGhpcy5fcHJvcGVydHkgPSBuZXcgTmV3UHJvcGVydHkocHJvcGVydHkgfHwgbnVsbCk7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS50eXBlID0gdGhpcy5wcm9wZXJ0eVR5cGU7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5wcm9wZXJ0eUluZm8gPSBuZXcgUHJvcGVydHlJbmZvKHByb3BlcnR5ID8gcHJvcGVydHkucHJvcGVydHlJbmZvIDogbnVsbCk7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5mZWF0dXJlcyA9IG5ldyBGZWF0dXJlcyhwcm9wZXJ0eSA/IHByb3BlcnR5LmZlYXR1cmVzIDogbnVsbCk7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5hZGRyZXNzID0gbmV3IEFkZHJlc3MocHJvcGVydHkgPyBwcm9wZXJ0eS5hZGRyZXNzIDogbnVsbCk7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eS5hbWVuaXRpZXMgPSBuZXcgQW1lbml0aWVzKHByb3BlcnR5ID8gcHJvcGVydHkuYW1lbml0aWVzIDogbnVsbCk7XHJcbiAgICB0aGlzLmFzc2lnbkJ1c2luZXNzUnVsZXMoKTtcclxuICAgIGlmIChwcm9wZXJ0eSAmJiBwcm9wZXJ0eS5pZCkge1xyXG4gICAgICB0aGlzLnVwZGF0ZUZvcm1CeVByb3BlcnR5KCk7XHJcbiAgICAgIHRoaXMuYXNzaWduQW1lbml0aWVzKCk7XHJcbiAgICAgIHRoaXMuYXNzaWduTG9jYXRpb25GZWF0dXJlcygpO1xyXG4gICAgICB0aGlzLmFzc2lnbkNvbW1pc3Npb24oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VmFsaWRhdG9yT25GaWVsZHMoZXJyb3JzOiBzdHJpbmdbXSwgcmVtb3ZlPzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKGVycm9ycy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgZXJyb3JzLmZvckVhY2goZXJyb3IgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMucHJvcGVydHlGb3JtLmNvbnRyb2xzW2Vycm9yXSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAocmVtb3ZlKSB7XHJcbiAgICAgICAgdGhpcy5wcm9wZXJ0eUZvcm0uY29udHJvbHNbZXJyb3JdLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgIHRoaXMucHJvcGVydHlGb3JtLmNvbnRyb2xzW2Vycm9yXS5zZXRWYWxpZGF0b3JzKHRoaXMuX3ZhbGlkYXRvcnNbZXJyb3JdID8gdGhpcy5fdmFsaWRhdG9yc1tlcnJvcl0gOiBbXSk7XHJcbiAgICAgICAgdGhpcy5wcm9wZXJ0eUZvcm0uY29udHJvbHNbZXJyb3JdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnByb3BlcnR5Rm9ybS5jb250cm9sc1tlcnJvcl0uY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgdGhpcy5wcm9wZXJ0eUZvcm0uY29udHJvbHNbZXJyb3JdLnNldFZhbGlkYXRvcnMoXHJcbiAgICAgICAgICB0aGlzLl92YWxpZGF0b3JzW2Vycm9yXSA/IHRoaXMuX3ZhbGlkYXRvcnNbZXJyb3JdLmNvbmNhdChWYWxpZGF0b3JzLnJlcXVpcmVkKSA6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XHJcbiAgICAgICAgdGhpcy5wcm9wZXJ0eUZvcm0uY29udHJvbHNbZXJyb3JdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -160,7 +160,7 @@ var GalleryComponent = /** @class */ (function () {
160
160
  { type: Component, args: [{
161
161
  selector: 'lib-gallery',
162
162
  template: "<div class=\"gallery\">\r\n <mat-sidenav-container class=\"gallery__sidenav-container\">\r\n <mat-sidenav mode=\"side\" [opened]=\"sideOpened\" class=\"sidenav-container__sidenav\">\r\n <mat-toolbar class=\"sidenav__toolbar\" color=\"primary\">\r\n <span>Galeria</span>\r\n <button mat-icon-button (click)=\"close()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-toolbar>\r\n <mat-toolbar class=\"sidenav__thumbnails-types\">\r\n <button class=\"thumbnails-types__item-type\" mat-button\r\n [ngClass]=\"{'item-type--selected': typeSelected === 'IMAGE'}\" (click)=\"changePFileType('IMAGE')\">\r\n <span class=\"item-type__icon ic-component-property-file-image\"></span>\r\n <span class=\"item-type__label\">{{count.image}}</span>\r\n </button>\r\n <button class=\"thumbnails-types__item-type\" mat-button\r\n [ngClass]=\"{'item-type--selected': typeSelected === 'SPHERIC'}\" (click)=\"changePFileType('SPHERIC')\">\r\n <span class=\"item-type__icon ic-component-property-sphere\"></span>\r\n <span class=\"item-type__label\">{{count.sphere}}</span>\r\n </button>\r\n <button class=\"thumbnails-types__item-type\" mat-button\r\n [ngClass]=\"{'item-type--selected': typeSelected === 'VIDEO'}\" (click)=\"changePFileType('VIDEO')\">\r\n <span class=\"item-type__icon ic-component-property-video\"></span>\r\n <span class=\"item-type__label\">{{count.video}}</span>\r\n </button>\r\n </mat-toolbar>\r\n <div class=\"sidenav__thumbnail-list\">\r\n <ng-container *ngFor=\"let image of multimedia; let i = index\">\r\n <div class=\"thumbnail-list__item\" (click)=\"selectPFile(i)\"\r\n [ngClass]=\"{'thumbnail-list__item--selected': indexSelected === i}\">\r\n <ng-template [ngIf]=\"image.type !== 'VIDEO'\" [ngIfElse]=\"youTubeVideo\">\r\n <img class=\"item__img\" [src]=\"image.fileCS.thumbnail\" alt=\"Property image\">\r\n </ng-template>\r\n <ng-template #youTubeVideo>\r\n <img class=\"item__img\" [src]=\"'https://i3.ytimg.com/vi/'+image.fileCS.thumbnail+'/hqdefault.jpg'\"\r\n alt=\"Property image\">\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n <ng-template [ngIf]=\"multimedia.length === 0\">\r\n <div class=\"thumbnail-list__empty-list\">\r\n <p class=\"empty-list__label\">\r\n Por el momento no hay\r\n <span *ngIf=\"typeSelected === 'IMAGE'\">fotos</span>\r\n <span *ngIf=\"typeSelected === 'VIDEO'\">videos</span>\r\n <span *ngIf=\"typeSelected === 'SPHERIC'\">fotos esf\u00E9ricas</span>\r\n </p>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </mat-sidenav>\r\n <mat-sidenav-content class=\"sidenav-container__content\" [ngStyle]=\"{'width': sideOpened ? '80%' : '100%'}\">\r\n <button class=\"sidenav-container__button-sidenav\" mat-flat-button color=\"primary\" (click)=\"updateSideNav()\">\r\n <mat-icon *ngIf=\"sideOpened\">chevron_left</mat-icon>\r\n <mat-icon *ngIf=\"!sideOpened\">chevron_right</mat-icon>\r\n </button>\r\n <button class=\"sidenav-container__button-close\" mat-mini-fab color=\"primary\" (click)=\"close()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <div class=\"content__list-container\">\r\n <lib-property-slide-show class=\"list-container__slide-show\" [multimedia]=\"multimedia\" [selectIndex]=\"indexSelected\"\r\n [initialIndex]=\"indexSelected\"\r\n (currentIndex)=\"onIndexSelectedChange($event)\"></lib-property-slide-show>\r\n </div>\r\n </mat-sidenav-content>\r\n </mat-sidenav-container>\r\n</div>\r\n",
163
- styles: ["::ng-deep .gallery_dialog{max-width:100%!important;width:100%;height:100%}::ng-deep .gallery_dialog mat-dialog-container{width:100%;height:100%;padding:0}:host{display:block;width:100%;height:100%}.gallery,.gallery__sidenav-container{width:100%;height:100%}.sidenav__toolbar{display:flex;justify-content:space-between}.sidenav__thumbnail-list{width:100%;height:calc(100% - 128px);padding:16px;box-sizing:border-box;overflow-x:hidden;overflow-y:auto}.thumbnail-list__empty-list{width:100%;height:100%;display:flex}.empty-list__label{margin:auto;text-align:center}.thumbnail-list__item{width:100%;cursor:pointer;padding-bottom:75%;border-radius:8px;margin-bottom:16px;position:relative}.item__img{position:absolute;top:0;left:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;border-radius:8px}.sidenav-container__sidenav{width:20%}@media screen and (max-width:1024px){.sidenav-container__sidenav{width:100%}}.sidenav__thumbnails-types{display:flex;align-items:center;justify-content:space-around}.item-type{padding:0}.item-type__label{padding:0 4px;display:inline-block}.item-type__icon{display:inline-block;width:24px;height:24px;font-size:24px;margin:auto}.sidenav-container__content{width:80%;display:flex;position:relative}@media screen and (max-width:1024px){.sidenav-container__content{width:100%}}.sidenav-container__button-sidenav{position:absolute;top:0;left:0;height:64px;padding:0;min-width:36px;border-radius:0 8px 8px 0;z-index:1}.sidenav-container__button-close{position:absolute;top:16px;right:16px;z-index:1}.content__list-container{width:100%;height:100%;margin:auto;overflow:hidden;position:relative;border-radius:8px}.list-container__slide-show{width:100%;height:100%;padding:initial}::ng-deep .list-container__slide-show .panorama-visor{height:100%!important;padding:initial!important}::ng-deep .list-container__slide-show lib-panorama-visor .panorama-visor__actions{top:72px!important}"]
163
+ styles: ["::ng-deep .gallery_dialog{max-width:100%!important;width:100%;height:100%}::ng-deep .gallery_dialog mat-dialog-container{width:100%;height:100%;padding:0}:host{display:block;width:100%;height:100%}.gallery,.gallery__sidenav-container{width:100%;height:100%}.sidenav__toolbar{display:flex;justify-content:space-between}.sidenav__thumbnail-list{width:100%;height:calc(100% - 128px);padding:16px;box-sizing:border-box;overflow-x:hidden;overflow-y:auto}.thumbnail-list__empty-list{width:100%;height:100%;display:flex}.empty-list__label{margin:auto;text-align:center}.thumbnail-list__item{width:100%;cursor:pointer;padding-bottom:calc(100% / 4 * 3);border-radius:8px;margin-bottom:16px;position:relative}.item__img{position:absolute;top:0;left:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;border-radius:8px}.sidenav-container__sidenav{width:20%}@media screen and (max-width:1024px){.sidenav-container__sidenav{width:100%}}.sidenav__thumbnails-types{display:flex;align-items:center;justify-content:space-around}.item-type{padding:0}.item-type__label{padding:0 4px;display:inline-block}.item-type__icon{display:inline-block;width:24px;height:24px;font-size:24px;margin:auto}.sidenav-container__content{width:80%;display:flex;position:relative}@media screen and (max-width:1024px){.sidenav-container__content{width:100%}}.sidenav-container__button-sidenav{position:absolute;top:0;left:0;height:64px;padding:0;min-width:36px;border-radius:0 8px 8px 0;z-index:1}.sidenav-container__button-close{position:absolute;top:16px;right:16px;z-index:1}.content__list-container{width:100%;height:100%;margin:auto;overflow:hidden;position:relative;border-radius:8px}.list-container__slide-show{width:100%;height:100%;padding:initial}::ng-deep .list-container__slide-show .panorama-visor{height:100%!important;padding:initial!important}::ng-deep .list-container__slide-show lib-panorama-visor .panorama-visor__actions{top:72px!important}"]
164
164
  }] }
165
165
  ];
166
166
  /** @nocollapse */
@@ -408,7 +408,7 @@ var MultimediaUploaderComponent = /** @class */ (function () {
408
408
  { type: Component, args: [{
409
409
  selector: 'lib-property-multimedia-uploader',
410
410
  template: "<div class=\"multimedia-uploader\">\r\n <p class=\"title\">\r\n Multimedia\r\n <ng-template [ngIf]=\"currentIndex !== 2\">\r\n <lib-upload-file [content]=\"buttonUploadTemplate\" [noCrop]=\"true\" [fab]=\"true\" [fileType]=\"fileType\" [aspectRatio]=\"4 / 3\"\r\n [multiple]=\"true\"\r\n (loadImage)=\"onUploadImage($event)\">\r\n <ng-template #buttonUploadTemplate>\r\n <button mat-icon-button color=\"primary\">\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n </ng-template>\r\n </lib-upload-file>\r\n </ng-template>\r\n </p>\r\n <mat-tab-group class=\"multimedia-uploader__tab-group\" [selectedIndex]=\"currentIndex\"\r\n (selectedIndexChange)=\"onTabChanged($event)\">\r\n <mat-tab label=\"Fotografias\">\r\n <lib-custom-drag-and-drop [items]=\"images\" [content]=\"imageTemplate\" (itemsChanged)=\"onListChanged($event)\">\r\n <ng-template #imageTemplate let-image=\"image\" let-index=\"index\">\r\n <div class=\"list__item\" [ngClass]=\"{'first-photo': index === 0}\">\r\n <img alt=\"Property image\" [src]=\"image.fileCS.thumbnail\" class=\"list__item-img\">\r\n <button mat-icon-button class=\"list__item-button mat-elevation-z2\" (click)=\"removeMedia(image)\">\r\n <mat-icon class=\"list__item-icon\">close</mat-icon>\r\n </button>\r\n </div>\r\n </ng-template>\r\n </lib-custom-drag-and-drop>\r\n </mat-tab>\r\n <mat-tab label=\"Esfericas\">\r\n <lib-custom-drag-and-drop [items]=\"images360\" [content]=\"image360Template\" (itemsChanged)=\"onListChanged($event)\">\r\n <ng-template #image360Template let-image=\"image\">\r\n <div class=\"list__item\">\r\n <img alt=\"Property image\" [src]=\"image.fileCS.thumbnail\" class=\"list__item-img\">\r\n <button mat-icon-button class=\"list__item-button mat-elevation-z2\" (click)=\"removeMedia(image)\">\r\n <mat-icon class=\"list__item-icon\">close</mat-icon>\r\n </button>\r\n </div>\r\n </ng-template>\r\n </lib-custom-drag-and-drop>\r\n </mat-tab>\r\n <mat-tab label=\"Videos\">\r\n <div class=\"you-tube-container\">\r\n <span class=\"you-tube-container__searchbox\">\r\n <button *ngIf=\"inputYouTube.value !== ''\" mat-icon-button class=\"you-tube-container__close-btn\"\r\n (click)=\"inputYouTube.value = ''\"><mat-icon>close</mat-icon></button>\r\n <input class=\"you-tube-container__input\" #inputYouTube (input)=\"onYouTubeInputTextChanged(inputYouTube)\"\r\n title=\"YouTube URL\" placeholder=\"YouTube URL o YouTube Video ID\">\r\n </span>\r\n <a href=\"https://www.youtube.com\" target=\"_blank\" mat-button color=\"primary\">\r\n Ir a Youtube\r\n </a>\r\n </div>\r\n <lib-custom-drag-and-drop [items]=\"videos\" [content]=\"videosTemplate\" (itemsChanged)=\"onListChanged($event)\">\r\n <ng-template #videosTemplate let-image=\"image\">\r\n <div class=\"list__item\">\r\n <img alt=\"Property image\" [src]=\"'https://i3.ytimg.com/vi/'+image.fileCS.thumbnail+'/hqdefault.jpg'\"\r\n class=\"list__item-img\">\r\n <button mat-icon-button class=\"list__item-button mat-elevation-z2\" (click)=\"removeMedia(image)\">\r\n <mat-icon class=\"list__item-icon\">close</mat-icon>\r\n </button>\r\n </div>\r\n </ng-template>\r\n </lib-custom-drag-and-drop>\r\n </mat-tab>\r\n </mat-tab-group>\r\n <div class=\"multimedia-uploader__actions\">\r\n <button mat-flat-button color=\"primary\" class=\"actions__button\" (click)=\"close()\">\r\n CERRAR\r\n </button>\r\n <button mat-flat-button color=\"primary\" class=\"actions__button\" (click)=\"accept()\">\r\n ACEPTAR\r\n </button>\r\n </div>\r\n</div>\r\n",
411
- styles: [":host{display:block;width:100%;height:100%}::ng-deep .multimedia-uploader-panel-class{width:50%;height:70%}::ng-deep .multimedia-uploader-panel-class mat-dialog-container{width:100%;height:100%;padding:16px;overflow:hidden;position:relative}.multimedia-uploader{width:100%;height:100%}.multimedia-uploader__actions{position:absolute;left:0;bottom:0;width:100%;background:#fff;z-index:1}.actions__button{width:50%}.actions__button:first-child{border-radius:8px 0 0}.actions__button:last-child{border-radius:0 8px 0 0}.title{font-weight:700;display:flex;align-items:center;justify-content:space-between;padding:0 16px;margin:0}.multimedia-uploader__tab-group{width:100%;height:calc(100% - 36px)}.multimedia-uploader__list{width:100%;height:100%;overflow-x:hidden;overflow-y:auto;display:-ms-grid;display:grid;-ms-grid-columns:(33.3333333333%)[3];grid-template-columns:repeat(3,33.3333333333%)}@media screen and (max-width:600px){::ng-deep .multimedia-uploader-panel-class{width:100%!important;max-width:100%!important;height:100%!important}.multimedia-uploader__list{-ms-grid-columns:100%;grid-template-columns:100%}}.list__item{width:200px;height:150px;border-radius:8px;margin:16px auto;position:relative}.first-photo:after{content:\"Imagen principal del anuncio\";position:absolute;top:0;padding:8px;box-sizing:border-box;font-size:12px;width:100%;color:#fff;background:rgba(0,0,0,.3)}.list__item-img{position:absolute;top:0;left:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;border-radius:8px}.list__item-button{position:absolute;width:24px;height:24px;top:-12px;right:-12px;background:#000;color:#fff}.list__item-icon{width:24px;height:24px;font-size:16px;line-height:8px}.you-tube-container{display:flex;padding:8px 0;box-sizing:border-box;justify-content:space-between;position:-webkit-sticky;position:sticky;top:0;z-index:5;background:#fff}.you-tube-container__searchbox{position:relative;width:calc(100% - 120px);box-sizing:border-box;display:flex;align-items:center}.you-tube-container__close-btn{position:absolute;right:0}.you-tube-container__input{width:100%;border:1px solid #d3d3d3;padding:8px 32px 8px 8px;border-radius:8px;outline:0}"]
411
+ styles: [":host{display:block;width:100%;height:100%}::ng-deep .multimedia-uploader-panel-class{width:50%;height:70%}::ng-deep .multimedia-uploader-panel-class mat-dialog-container{width:100%;height:100%;padding:16px;overflow:hidden;position:relative}.multimedia-uploader{width:100%;height:100%}.multimedia-uploader__actions{position:absolute;left:0;bottom:0;width:100%;background:#fff;z-index:1}.actions__button{width:50%}.actions__button:first-child{border-radius:8px 0 0}.actions__button:last-child{border-radius:0 8px 0 0}.title{font-weight:700;display:flex;align-items:center;justify-content:space-between;padding:0 16px;margin:0}.multimedia-uploader__tab-group{width:100%;height:calc(100% - 36px)}.multimedia-uploader__list{width:100%;height:100%;overflow-x:hidden;overflow-y:auto;display:-ms-grid;display:grid;-ms-grid-columns:(calc(100% / 3))[3];grid-template-columns:repeat(3,calc(100% / 3))}@media screen and (max-width:600px){::ng-deep .multimedia-uploader-panel-class{width:100%!important;max-width:100%!important;height:100%!important}.multimedia-uploader__list{-ms-grid-columns:100%;grid-template-columns:100%}}.list__item{width:200px;height:150px;border-radius:8px;margin:16px auto;position:relative}.first-photo:after{content:\"Imagen principal del anuncio\";position:absolute;top:0;padding:8px;box-sizing:border-box;font-size:12px;width:100%;color:#fff;background:rgba(0,0,0,.3)}.list__item-img{position:absolute;top:0;left:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;border-radius:8px}.list__item-button{position:absolute;width:24px;height:24px;top:-12px;right:-12px;background:#000;color:#fff}.list__item-icon{width:24px;height:24px;font-size:16px;line-height:8px}.you-tube-container{display:flex;padding:8px 0;box-sizing:border-box;justify-content:space-between;position:-webkit-sticky;position:sticky;top:0;z-index:5;background:#fff}.you-tube-container__searchbox{position:relative;width:calc(100% - 120px);box-sizing:border-box;display:flex;align-items:center}.you-tube-container__close-btn{position:absolute;right:0}.you-tube-container__input{width:100%;border:1px solid #d3d3d3;padding:8px 32px 8px 8px;border-radius:8px;outline:0}"]
412
412
  }] }
413
413
  ];
414
414
  /** @nocollapse */
@@ -546,7 +546,7 @@ var PropertyComponent = /** @class */ (function () {
546
546
  { type: Component, args: [{
547
547
  selector: 'lib-property',
548
548
  template: "<div class=\"property\">\r\n <div class=\"header\">\r\n <ng-container [ngSwitch]=\"mode\">\r\n <ng-container *ngSwitchCase=\"'add'\">\r\n <h1 class=\"title\">\r\n <span *ngIf=\"!completeProperty.property.id\">Cargar </span>\r\n <span *ngIf=\"completeProperty.property.id\">Editar </span>\r\n expediente de {{ propertyType | propertyType }}\r\n </h1>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'record'\">\r\n <h1 class=\"title\">Expediente de {{propertyType | propertyType}}</h1>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'detail'\">\r\n <div class=\"breadcrumb-list\">\r\n <p class=\"breadcrumb-content\">\r\n <span class=\"breadcrumb-item\">\r\n {{completeProperty.property.type | propertyType}}\r\n </span>\r\n <span class=\"breadcrumb-item\">\r\n {{completeProperty.property.offering | offeringType : ' ' | stringManipulation : 'capitalize'}}\r\n </span>\r\n <span *ngIf=\"completeProperty.property.address.city\" class=\"breadcrumb-item\">\r\n {{completeProperty.property.address.city}}\r\n </span>\r\n <span *ngIf=\"completeProperty.property.address.postalCode\" class=\"breadcrumb-item\">\r\n {{completeProperty.property.address.postalCode}}\r\n </span>\r\n <span *ngIf=\"completeProperty.property.address.colony\" class=\"breadcrumb-item\">\r\n {{completeProperty.property.address.colony}}\r\n </span>\r\n </p>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <div class=\"header__actions\">\r\n <!-- Button Publish [START] -->\r\n <ng-template\r\n [ngIf]=\"(mode === 'record' || mode === 'add') && (completeProperty.property.status !== 'ANNOUNCED' && completeProperty.property.status !== 'HIDDEN')\">\r\n <button mat-icon-button color=\"primary\" matTooltip=\"Publicar\" matTooltipPosition=\"left\"\r\n class=\"header__actions-button-publish\" (click)=\"goToPublish()\">\r\n <span class=\"header__actions-button-publish-icon ic-property-status-announce\"></span>\r\n </button>\r\n </ng-template>\r\n <!-- Button Publish [END] -->\r\n <ng-container [ngSwitch]=\"mode\">\r\n <ng-container *ngSwitchCase=\"'add'\">\r\n <ng-template [ngIf]=\"multimedia.length > 0\">\r\n <button mat-icon-button color=\"primary\" (click)=\"openUploaderMultimedia()\">\r\n <mat-icon>photo_library</mat-icon>\r\n </button>\r\n </ng-template>\r\n <ng-template [ngIf]=\"completeProperty?.property?.id\">\r\n <button mat-icon-button color=\"primary\" matTooltip=\"Guardar\" matTooltipPosition=\"left\" (click)=\"saveData()\">\r\n <mat-icon>save</mat-icon>\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'record'\">\r\n <ng-template\r\n [ngIf]=\"!sharedProperty.isShared && (completeProperty.property.status !== 'DRAFT' && completeProperty.property.status !== 'NONE')\">\r\n <button mat-icon-button color=\"primary\" matTooltip=\"Estad\u00EDsticas\" matTooltipPosition=\"left\"\r\n (click)=\"goToStats()\">\r\n <mat-icon>bar_chart</mat-icon>\r\n </button>\r\n </ng-template>\r\n <ng-template\r\n [ngIf]=\"(completeProperty.property.status === 'ANNOUNCED' || completeProperty.property.status === 'HIDDEN') && !sharedProperty.isShared\">\r\n <button mat-icon-button color=\"primary\"\r\n matTooltip=\"{{completeProperty.property.status === 'ANNOUNCED' ? 'Ocultar' : 'Mostrar'}}\"\r\n matTooltipPosition=\"left\" (click)=\"goToUpdateVisibility()\">\r\n <mat-icon *ngIf=\"completeProperty.property.status === 'HIDDEN'\">visibility</mat-icon>\r\n <mat-icon *ngIf=\"completeProperty.property.status === 'ANNOUNCED'\">visibility_off</mat-icon>\r\n </button>\r\n </ng-template>\r\n <ng-template [ngIf]=\"!sharedProperty.isShared\">\r\n <button mat-icon-button color=\"primary\" matTooltip=\"Editar\" matTooltipPosition=\"left\"\r\n (click)=\"goToEditProperty()\">\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'detail'\">\r\n <ng-template [ngIf]=\"isOPI\" [ngIfElse]=\"maplanderActions\">\r\n <button mat-flat-button color=\"primary\" class=\"header__actions-button-commission\"\r\n [disabled]=\"disableShareCommission\"\r\n (click)=\"agentActions('SHARE_COMMISSION')\">\r\n <span *ngIf=\"!disableShareCommission\">Solicitar comisi\u00F3n compartida</span>\r\n <span *ngIf=\"disableShareCommission\">Solicitud pendiente</span>\r\n </button>\r\n </ng-template>\r\n <ng-template #maplanderActions>\r\n <button mat-flat-button color=\"primary\" class=\"header__actions-button-commission\"\r\n (click)=\"agentActions('SHOW_AGENTS')\">\r\n Mostrar Asesor\r\n </button>\r\n <button mat-icon-button color=\"primary\" class=\"header__actions-button-commission\"\r\n (click)=\"agentActions('FAVORITE')\">\r\n <mat-icon *ngIf=\"isFavorite\">favorite</mat-icon>\r\n <mat-icon *ngIf=\"!isFavorite\">favorite_border</mat-icon>\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n <!-- Button Share [START] -->\r\n <ng-template\r\n [ngIf]=\"mode === 'detail' || (mode === 'record' && (completeProperty.property.status === 'READY' || completeProperty.property.status === 'ANNOUNCED'))\" [ngIfElse]=\"noShare\">\r\n <button mat-icon-button color=\"primary\" (click)=\"shareProperty()\">\r\n <mat-icon>share</mat-icon>\r\n </button>\r\n </ng-template>\r\n <!-- Button Share [END] -->\r\n <ng-template #noShare>\r\n <ng-template [ngIf]=\"sharedProperty.isShared\">\r\n <h1 class=\"title\">\r\n Propiedad oculta</h1>\r\n </ng-template>\r\n </ng-template>\r\n <!-- Button Back [START] -->\r\n <button mat-icon-button color=\"primary\" (click)=\"goToBack()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <!-- Button Back [END] -->\r\n </div>\r\n </div>\r\n <div class=\"body\">\r\n <div class=\"body__multimedia-wrapper\">\r\n <div class=\"multimedia-wrapper__list-thumbnails\">\r\n <div class=\"list-thumbnails__wrapper-thumbnails\">\r\n <div class=\"wrapper-thumbnails__header-types\">\r\n <button mat-button class=\"header-types__button-type\"\r\n [ngClass]=\"{'header-types__button-type--active': currentType === 'IMAGE'}\"\r\n (click)=\"changeMultimediaType('IMAGE')\">\r\n <span class=\"button-type__icon ic-component-property-file-image\"></span>\r\n <span class=\"button-type__label\">{{multimediaCount.images}}</span>\r\n </button>\r\n <button mat-button class=\"header-types__button-type\"\r\n [ngClass]=\"{'header-types__button-type--active': currentType === 'SPHERIC'}\"\r\n (click)=\"changeMultimediaType('SPHERIC')\">\r\n <span class=\"button-type__icon ic-component-property-sphere\"></span>\r\n <span class=\"button-type__label\">{{multimediaCount.images360}}</span>\r\n </button>\r\n <button mat-button class=\"header-types__button-type\"\r\n [ngClass]=\"{'header-types__button-type--active': currentType === 'VIDEO'}\"\r\n (click)=\"changeMultimediaType('VIDEO')\">\r\n <span class=\"button-type__icon ic-component-property-video\"></span>\r\n <span class=\"button-type__label\">{{multimediaCount.videos}}</span>\r\n </button>\r\n </div>\r\n <ng-template [ngIf]=\"multimedia && multimedia.length === 0\">\r\n <div class=\"wrapper-thumbnails__item-thumbnail\"></div>\r\n <div class=\"wrapper-thumbnails__item-thumbnail\"></div>\r\n <div class=\"wrapper-thumbnails__item-thumbnail\"></div>\r\n </ng-template>\r\n <ng-container *ngFor=\"let image of multimedia; let i = index;\">\r\n <div class=\"wrapper-thumbnails__item-thumbnail\"\r\n [ngClass]=\"{'wrapper-thumbnails__item-thumbnail--selected': i === currentIndex}\"\r\n (click)=\"onMultimediaIndexChanged(i)\">\r\n <ng-container [ngSwitch]=\"image.type\">\r\n <ng-container *ngSwitchCase=\"'VIDEO'\">\r\n <img class=\"item-thumbnail__img\" alt=\"Property image\"\r\n [src]=\"'https://i3.ytimg.com/vi/'+image.fileCS.thumbnail+'/hqdefault.jpg'\">\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <img class=\"item-thumbnail__img\" alt=\"Property image\" [src]=\"image.fileCS.thumbnail\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"multimedia-wrapper__front-image\">\r\n <lib-property-slide-show [multimedia]=\"multimedia\"\r\n [selectIndex]=\"currentIndex\"\r\n (currentIndex)=\"onMultimediaIndexChanged($event)\"\r\n [customActions]=\"customSlideShowActions\"\r\n ></lib-property-slide-show>\r\n <ng-template [ngIf]=\"mode === 'add' && multimedia.length === 0\">\r\n <div class=\"front-image__upload-multimedia\">\r\n <div class=\"upload-multimedia__container-add-multimedia\">\r\n <button class=\"container-add-multimedia__button\" mat-button color=\"primary\"\r\n (click)=\"openUploaderMultimedia()\">\r\n AGREGAR\r\n </button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #customSlideShowActions>\r\n <button *ngIf=\"multimedia.length > 0\" mat-icon-button (click)=\"openGallery()\" matTooltip=\"Fullscreen\">\r\n <mat-icon>fullscreen</mat-icon>\r\n </button>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div class=\"body__additional-content\">\r\n <ng-template\r\n [ngIf]=\"mode === 'record' && property.property.status === 'ANNOUNCED' && property.property.propertyInfo.mls\">\r\n <div class=\"additional-content__mls\">\r\n <p class=\"mls__title\">\r\n Bolsa inmobiliaria\r\n </p>\r\n <button mat-flat-button color=\"primary\" class=\"mls__button\"\r\n (click)=\"agentActions('REAL_ESTATE_EXCHANGE')\">\r\n Mesa de comercializaci\u00F3n\r\n </button>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div class=\"body__content\">\r\n <ng-container [ngSwitch]=\"mode\">\r\n <ng-container *ngSwitchCase=\"'detail'\">\r\n <lib-property-details [property]=\"completeProperty.property\" [mlsLabel]=\"mlsLabel\"\r\n [currencyConverted]=\"currencyConverted\" [visibleTour]=\"!isOPI\"></lib-property-details>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'record'\">\r\n <lib-property-details [property]=\"completeProperty.property\" [mlsLabel]=\"mlsLabel\"\r\n [record]=\"true\"></lib-property-details>\r\n <ng-template [ngIf]=\"sharedProperty.ownerAvailable\">\r\n <div class=\"content__private-info\">\r\n <p class=\"private-info__title\">INFORMACI\u00D3N PRIVADA</p>\r\n <lib-property-owner-info [owner]=\"completeProperty.property.propertyInfo.owner\"\r\n [disabled]=\"true\"></lib-property-owner-info>\r\n <ng-template [ngIf]=\"!sharedProperty.isShared\">\r\n <lib-property-documents [files]=\"completeProperty.files\" [disabled]=\"true\"></lib-property-documents>\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'add'\">\r\n <ng-template [ngIf]=\"frontImageError\">\r\n <p class=\"content__error-front-image\">\r\n * Debe subir al menos una imagen\r\n </p>\r\n </ng-template>\r\n <lib-property-editor [utils]=\"utils\" [propertyType]=\"propertyType\" [address]=\"address\"\r\n [mlsLabel]=\"mlsLabel\"\r\n [property]=\"completeProperty.property\"\r\n (editorInstance)=\"onEditorInstance($event)\"\r\n (selectAddress)=\"onSelectAddress()\"></lib-property-editor>\r\n <div class=\"content__private-info\">\r\n <p class=\"private-info__title\">INFORMACI\u00D3N PRIVADA</p>\r\n <lib-property-owner-info (ownerInstance)=\"onOwnerInstance($event)\"\r\n [owner]=\"completeProperty.property.propertyInfo.owner\"></lib-property-owner-info>\r\n <lib-property-documents (documentsInstance)=\"onDocumentsInstance($event)\"\r\n [files]=\"completeProperty.files\"></lib-property-documents>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"footer mat-elevation-z2\" [ngClass]=\"{'footer--primary': mode === 'record'}\"\r\n [ngStyle]=\"{'display': (mode === 'detail' && isOPI) ? 'none' : 'block'}\">\r\n <ng-container [ngSwitch]=\"mode\">\r\n <ng-container *ngSwitchCase=\"'detail'\">\r\n <div class=\"footer__footer-content\">\r\n <ng-template [ngIf]=\"!isOPI\">\r\n <button mat-raised-button color=\"primary\" class=\"footer-content__button-request-info mat-elevation-z2\"\r\n (click)=\"agentActions('REQUEST_INFO')\">\r\n Solicitar informaci\u00F3n\r\n </button>\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'record'\">\r\n <div class=\"footer__footer-content\">\r\n <p class=\"footer-content__status-label\">\r\n <ng-container [ngSwitch]=\"completeProperty.property.status\">\r\n <ng-container *ngSwitchCase=\"'HIDDEN'\">\r\n Propiedad oculta\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'READY'\">\r\n Propiedad lista <br> para publicar\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'EXPIRED'\">\r\n Propiedad expirada desde el <br>\r\n {{completeProperty.property.propertyInfo.endPublishDate | libFormatDate : true : 'dd MMMMM yyyy'}}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'ANNOUNCED'\">\r\n Anunciada\r\n <br> Anuncio valido hasta el\r\n {{completeProperty.property.propertyInfo.endPublishDate | libFormatDate : true : 'dd MMMMM yyyy'}}\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n Propiedad en borrador\r\n </ng-container>\r\n </ng-container>\r\n </p>\r\n <div class=\"footer-content__fab\">\r\n <eco-fab-speed-dial>\r\n <eco-fab-speed-dial-trigger>\r\n <button mat-fab color=\"primary\">\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n </eco-fab-speed-dial-trigger>\r\n <eco-fab-speed-dial-actions>\r\n <button *ngIf=\"completeProperty.property.status !== 'NONE' && completeProperty.property.status !== 'DRAFT'\"\r\n mat-mini-fab color=\"primary\" matTooltip=\"Clientes\" matTooltipPosition=\"left\" (click)=\"goToClients()\">\r\n <mat-icon class=\"fab-button__icon\">people</mat-icon>\r\n </button>\r\n <button *ngIf=\"!sharedProperty.isShared\" mat-mini-fab color=\"primary\" matTooltip=\"Archivar propiedad\"\r\n matTooltipPosition=\"left\"\r\n (click)=\"agentActions('ARCHIVE')\">\r\n <mat-icon class=\"fab-button__icon\">archive</mat-icon>\r\n </button>\r\n <button mat-mini-fab color=\"primary\" matTooltip=\"Generar letrero\" matTooltipPosition=\"left\"\r\n (click)=\"agentActions('POSTER')\">\r\n <span class=\"fab-button__icon ic-component-property-poster\"></span>\r\n </button>\r\n <button mat-mini-fab color=\"primary\" matTooltip=\"Generar folleto\" matTooltipPosition=\"left\"\r\n (click)=\"agentActions('BROCHURE')\">\r\n <span class=\"fab-button__icon ic-component-property-brochure\"></span>\r\n </button>\r\n <button mat-mini-fab color=\"primary\" matTooltip=\"Generar lona\" matTooltipPosition=\"left\"\r\n (click)=\"agentActions('TARPS')\">\r\n <span class=\"fab-button__icon ic-component-property-canvas\"></span>\r\n </button>\r\n </eco-fab-speed-dial-actions>\r\n </eco-fab-speed-dial>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'add'\">\r\n <div class=\"footer__footer-content\">\r\n <button class=\"footer-content__button-save\" mat-flat-button color=\"primary\" (click)=\"saveData()\">Guardar\r\n </button>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n",
549
- styles: [":host{width:100%;height:100%;display:block}.property{position:relative;width:100%;height:100%;z-index:5;border-radius:4px}.title{margin:0 16px;font-size:24px}.breadcrumb-list{width:50%;padding:4px 16px;box-sizing:border-box;border-radius:0 24px 24px 0}.breadcrumb-content{color:#fff;margin:4px 0;width:100%;line-height:21px}.breadcrumb-item{position:relative;display:inline-flex;padding:0 18px 0 4px}.breadcrumb-item:last-child:before{content:none}.divider{border-width:1px}.divider-vertical{display:block;border:.5px inset}.header{width:100%;position:-webkit-sticky;position:sticky;top:0;z-index:10;padding:8px 0;display:flex;align-items:center;justify-content:space-between}@media screen and (max-width:600px){.breadcrumb-list{width:100%;order:1}.header{flex-direction:column}}.header__actions{padding:8px;box-sizing:border-box;display:flex;align-items:center;justify-content:space-between}@media screen and (max-width:600px){.header__actions{order:0;width:100%;padding:4px 8px;justify-content:flex-end}}.header__actions button{margin-right:8px}.header__actions-button-commission{border-radius:16px}.actions-button-commission__icon{display:inline-block;width:24px;height:24px;font-size:24px;margin-left:8px}.header__actions-button-publish-icon{font-size:24px;width:24px;height:24px}.body{width:100%;height:calc(100% - 80px);overflow-x:hidden;overflow-y:auto;background:0 0;box-sizing:border-box;padding-bottom:56px}@media screen and (max-width:600px){.body{display:flex;flex-direction:column;padding:0 8px 56px}}.body__additional-content{width:25%;display:inline-block;padding:16px;box-sizing:border-box;background:#fff}@media screen and (max-width:600px){.body__additional-content{width:100%;order:2}}.mls__title{font-size:12px}.mls__button{width:100%;display:block;margin-bottom:8px;border-radius:16px}.body__content{width:75%;display:inline-block;padding:16px;box-sizing:border-box;float:right;background:#fff}.body__multimedia-wrapper{width:100%;background:#fff;display:flex}@media screen and (max-width:600px){.body__content{width:100%;order:1}.body__multimedia-wrapper{width:100%;order:0;flex-direction:column}}.multimedia-wrapper__list-thumbnails{width:25%;height:0;padding-bottom:56.25%;overflow:hidden;position:relative}@media screen and (max-width:600px){.multimedia-wrapper__list-thumbnails{width:100%;height:56px;padding:0}}.list-thumbnails__wrapper-thumbnails{position:absolute;width:100%;height:100%;background:#fff;overflow-x:hidden;overflow-y:scroll;padding:0 18px 8px;box-sizing:border-box}.wrapper-thumbnails__header-types{width:100%;height:40px;background:#fff;padding-top:8px;position:-webkit-sticky;position:sticky;top:0;z-index:1}.header-types__button-type{min-width:33.3333333333%;width:33.3333333333%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:0;height:100%;font-size:12px;line-height:16px}.button-type__icon{font-size:24px;width:24px;height:24px;display:inline-block}.button-type__label{display:inline-block;margin:0 4px}.wrapper-thumbnails__item-thumbnail{width:100%;padding-bottom:75%;margin-top:8px;border-radius:8px;position:relative;cursor:pointer}.item-thumbnail__img{position:absolute;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;border-radius:inherit}.multimedia-wrapper__front-image{width:calc(75% - 16px);height:0;padding-bottom:calc((75% - 16px)/ 4 * 3);margin:auto;border-radius:8px;position:relative}@media screen and (max-width:600px){.wrapper-thumbnails__item-thumbnail{display:none}.multimedia-wrapper__front-image{width:100%;padding-bottom:75%}}.front-image__upload-multimedia{position:absolute;top:0;left:25%;width:50%;height:100%;z-index:1;display:flex}@media screen{.front-image__upload-multimedia{width:80%;left:10%}}.upload-multimedia__container-add-multimedia{margin:auto;width:200px;height:200px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;background:url(https://storage.googleapis.com/maplander-develop/public/file/front-end/cdn/360-image.svg) center/80% no-repeat}.container-add-multimedia__button{position:absolute;bottom:8px}.content__error-front-image{font-size:12px;margin:8px 0 8px 8px}.content__private-info{border-radius:8px}.private-info__title{font-weight:700;margin:0;padding:16px;border-radius:8px 8px 0 0}.footer{width:100%;height:43px;border-radius:16px 16px 0 0;padding:8px 16px;box-sizing:border-box;background:#fff;position:-webkit-sticky;position:sticky;z-index:2;bottom:0}.footer__footer-content{width:100%;height:100%;position:relative;display:flex;align-items:center;justify-content:center}.footer-content__status-label{margin:6px 0;font-size:14px;text-align:center}.footer-content__button-request-info{width:30%;border-radius:16px}@media screen and (max-width:600px){.footer-content__button-request-info{width:90%}}.footer-content__button-save{width:120px;border-radius:16px}.footer-content__fab{position:absolute;right:0;bottom:12px;padding:8px;border-radius:50%;background:linear-gradient(transparent 50%,#fff 50%)}.fab-button__icon{width:24px;height:24px;font-size:24px}"]
549
+ styles: [":host{width:100%;height:100%;display:block}.property{position:relative;width:100%;height:100%;z-index:5;border-radius:4px}.title{margin:0 16px;font-size:24px}.breadcrumb-list{width:50%;padding:4px 16px;box-sizing:border-box;border-radius:0 24px 24px 0}.breadcrumb-content{color:#fff;margin:4px 0;width:100%;line-height:21px}.breadcrumb-item{position:relative;display:inline-flex;padding:0 18px 0 4px}.breadcrumb-item:last-child:before{content:none}.divider{border-width:1px}.divider-vertical{display:block;border:.5px inset}.header{width:100%;position:-webkit-sticky;position:sticky;top:0;z-index:10;padding:8px 0;display:flex;align-items:center;justify-content:space-between}@media screen and (max-width:600px){.breadcrumb-list{width:100%;order:1}.header{flex-direction:column}}.header__actions{padding:8px;box-sizing:border-box;display:flex;align-items:center;justify-content:space-between}@media screen and (max-width:600px){.header__actions{order:0;width:100%;padding:4px 8px;justify-content:flex-end}}.header__actions button{margin-right:8px}.header__actions-button-commission{border-radius:16px}.actions-button-commission__icon{display:inline-block;width:24px;height:24px;font-size:24px;margin-left:8px}.header__actions-button-publish-icon{font-size:24px;width:24px;height:24px}.body{width:100%;height:calc(100% - 80px);overflow-x:hidden;overflow-y:auto;background:0 0;box-sizing:border-box;padding-bottom:56px}@media screen and (max-width:600px){.body{display:flex;flex-direction:column;padding:0 8px 56px}}.body__additional-content{width:25%;display:inline-block;padding:16px;box-sizing:border-box;background:#fff}@media screen and (max-width:600px){.body__additional-content{width:100%;order:2}}.mls__title{font-size:12px}.mls__button{width:100%;display:block;margin-bottom:8px;border-radius:16px}.body__content{width:75%;display:inline-block;padding:16px;box-sizing:border-box;float:right;background:#fff}.body__multimedia-wrapper{width:100%;background:#fff;display:flex}@media screen and (max-width:600px){.body__content{width:100%;order:1}.body__multimedia-wrapper{width:100%;order:0;flex-direction:column}}.multimedia-wrapper__list-thumbnails{width:25%;height:0;padding-bottom:calc((100% - 25%)/ 4 * 3);overflow:hidden;position:relative}@media screen and (max-width:600px){.multimedia-wrapper__list-thumbnails{width:100%;height:56px;padding:0}}.list-thumbnails__wrapper-thumbnails{position:absolute;width:100%;height:100%;background:#fff;overflow-x:hidden;overflow-y:scroll;padding:0 18px 8px;box-sizing:border-box}.wrapper-thumbnails__header-types{width:100%;height:40px;background:#fff;padding-top:8px;position:-webkit-sticky;position:sticky;top:0;z-index:1}.header-types__button-type{min-width:calc(100% / 3);width:calc(100% / 3);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:0;height:100%;font-size:12px;line-height:16px}.button-type__icon{font-size:24px;width:24px;height:24px;display:inline-block}.button-type__label{display:inline-block;margin:0 4px}.wrapper-thumbnails__item-thumbnail{width:100%;padding-bottom:calc(100% / 4 * 3);margin-top:8px;border-radius:8px;position:relative;cursor:pointer}.item-thumbnail__img{position:absolute;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;border-radius:inherit}.multimedia-wrapper__front-image{width:calc(75% - 16px);height:0;padding-bottom:calc((75% - 16px)/ 4 * 3);margin:auto;border-radius:8px;position:relative}@media screen and (max-width:600px){.wrapper-thumbnails__item-thumbnail{display:none}.multimedia-wrapper__front-image{width:100%;padding-bottom:calc(100% / 4 * 3)}}.front-image__upload-multimedia{position:absolute;top:0;left:25%;width:50%;height:100%;z-index:1;display:flex}@media screen{.front-image__upload-multimedia{width:80%;left:10%}}.upload-multimedia__container-add-multimedia{margin:auto;width:200px;height:200px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;background:url(https://storage.googleapis.com/maplander-develop/public/file/front-end/cdn/360-image.svg) center/80% no-repeat}.container-add-multimedia__button{position:absolute;bottom:8px}.content__error-front-image{font-size:12px;margin:8px 0 8px 8px}.content__private-info{border-radius:8px}.private-info__title{font-weight:700;margin:0;padding:16px;border-radius:8px 8px 0 0}.footer{width:100%;height:43px;border-radius:16px 16px 0 0;padding:8px 16px;box-sizing:border-box;background:#fff;position:-webkit-sticky;position:sticky;z-index:2;bottom:0}.footer__footer-content{width:100%;height:100%;position:relative;display:flex;align-items:center;justify-content:center}.footer-content__status-label{margin:6px 0;font-size:14px;text-align:center}.footer-content__button-request-info{width:30%;border-radius:16px}@media screen and (max-width:600px){.footer-content__button-request-info{width:90%}}.footer-content__button-save{width:120px;border-radius:16px}.footer-content__fab{position:absolute;right:0;bottom:12px;padding:8px;border-radius:50%;background:linear-gradient(transparent 50%,#fff 50%)}.fab-button__icon{width:24px;height:24px;font-size:24px}"]
550
550
  }] }
551
551
  ];
552
552
  /** @nocollapse */