@maplander/components 0.19.14 → 0.20.2

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 (31) hide show
  1. package/_theming.scss +4 -0
  2. package/bundles/maplander-components.umd.js +171 -39
  3. package/bundles/maplander-components.umd.js.map +1 -1
  4. package/bundles/maplander-components.umd.min.js +2 -2
  5. package/bundles/maplander-components.umd.min.js.map +1 -1
  6. package/esm2015/lib/components/filters/filters.component.js +8 -5
  7. package/esm2015/lib/components/filters/filters.module.js +3 -1
  8. package/esm2015/lib/components/property/components/details/details.component.js +3 -3
  9. package/esm2015/lib/components/property/components/editor/editor.component.js +13 -3
  10. package/esm2015/lib/components/property/components/multimedia-uploader/multimedia-uploader.component.js +7 -1
  11. package/esm2015/lib/components/property/components/property/property.component.js +12 -4
  12. package/esm2015/lib/components/property/validators/currency-filter-validator.js +36 -0
  13. package/esm2015/lib/components/property-card/property-card.component.js +70 -3
  14. package/esm5/lib/components/filters/filters.component.js +8 -5
  15. package/esm5/lib/components/filters/filters.module.js +3 -1
  16. package/esm5/lib/components/property/components/details/details.component.js +3 -3
  17. package/esm5/lib/components/property/components/editor/editor.component.js +13 -3
  18. package/esm5/lib/components/property/components/multimedia-uploader/multimedia-uploader.component.js +7 -1
  19. package/esm5/lib/components/property/components/property/property.component.js +12 -4
  20. package/esm5/lib/components/property/validators/currency-filter-validator.js +36 -0
  21. package/esm5/lib/components/property-card/property-card.component.js +84 -3
  22. package/fesm2015/maplander-components.js +158 -40
  23. package/fesm2015/maplander-components.js.map +1 -1
  24. package/fesm5/maplander-components.js +172 -40
  25. package/fesm5/maplander-components.js.map +1 -1
  26. package/lib/components/property/components/editor/editor.component.d.ts +1 -0
  27. package/lib/components/property/components/property/property.component.d.ts +3 -1
  28. package/lib/components/property/validators/currency-filter-validator.d.ts +2 -0
  29. package/lib/components/property-card/property-card.component.d.ts +7 -2
  30. package/maplander-components.metadata.json +1 -1
  31. package/package.json +12 -12
@@ -33,6 +33,7 @@ const PropertyEventType = {
33
33
  CLIENTS: 'CLIENTS',
34
34
  BACK: 'BACK',
35
35
  SHOW_AGENTS: 'SHOW_AGENTS',
36
+ TARPS: 'TARPS',
36
37
  };
37
38
  export { PropertyEventType };
38
39
  /**
@@ -87,6 +88,7 @@ export class PropertyComponent {
87
88
  * @return {?}
88
89
  */
89
90
  ngOnInit() {
91
+ // this.agentActions('SHOW_AGENTS');
90
92
  }
91
93
  /**
92
94
  * @param {?} changes
@@ -133,7 +135,10 @@ export class PropertyComponent {
133
135
  */
134
136
  shareProperty() {
135
137
  this.agentActions('SHARE');
136
- this._share.open(this.completeProperty.property.url);
138
+ this._share.open({
139
+ url: this.completeProperty.property.url,
140
+ urlUser: this.userUrl
141
+ });
137
142
  }
138
143
  /**
139
144
  * @return {?}
@@ -444,8 +449,8 @@ export class PropertyComponent {
444
449
  PropertyComponent.decorators = [
445
450
  { type: Component, args: [{
446
451
  selector: 'lib-property',
447
- 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 Asesores\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'))\">\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 <!-- 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 </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",
448
- 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:56px;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}"]
452
+ 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",
453
+ 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}"]
449
454
  }] }
450
455
  ];
451
456
  /** @nocollapse */
@@ -471,6 +476,7 @@ PropertyComponent.propDecorators = {
471
476
  isFavorite: [{ type: Input }],
472
477
  disableConfirmAnnounce: [{ type: Input }],
473
478
  currencyConverted: [{ type: Input }],
479
+ userUrl: [{ type: Input }],
474
480
  change: [{ type: Output }],
475
481
  modeChange: [{ type: Output }]
476
482
  };
@@ -498,6 +504,8 @@ if (false) {
498
504
  /** @type {?} */
499
505
  PropertyComponent.prototype.currencyConverted;
500
506
  /** @type {?} */
507
+ PropertyComponent.prototype.userUrl;
508
+ /** @type {?} */
501
509
  PropertyComponent.prototype.change;
502
510
  /** @type {?} */
503
511
  PropertyComponent.prototype.modeChange;
@@ -581,4 +589,4 @@ if (false) {
581
589
  */
582
590
  PropertyComponent.prototype._statsService;
583
591
  }
584
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG1hcGxhbmRlci9jb21wb25lbnRzLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvcHJvcGVydHkvY29tcG9uZW50cy9wcm9wZXJ0eS9wcm9wZXJ0eS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLFFBQVEsRUFBRSxNQUFNLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ3pILE9BQU8sRUFDTCxPQUFPLEVBRVAsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixXQUFXLEVBRVgsYUFBYSxFQUNiLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsY0FBYyxFQUVmLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBSWhELE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBQzdGLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ3BGLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQ3BGLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUN4QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDM0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdCQUF3QixDQUFDOzs7SUFHbEQsUUFBUyxRQUFRO0lBQ2pCLFFBQVMsUUFBUTtJQUNqQixVQUFXLFVBQVU7SUFDckIsTUFBTyxNQUFNO0lBQ2IsTUFBTyxNQUFNO0lBQ2IsU0FBVSxTQUFTO0lBQ25C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QyxrQ0FBd0I7O0lBQ3hCLHlDQUF3Qzs7SUFDeEMsaUNBQTJDOztJQUMzQywyQ0FBa0g7O0lBQ2xILG9DQUEwQjs7SUFDMUIscUNBQTBCOztJQUMxQixtREFBeUM7O0lBQ3pDLHVDQUE2Qjs7SUFDN0IsbURBQXlDOztJQUN6Qyw4Q0FBZ0U7O0lBQ2hFLG1DQUFvRDs7SUFDcEQsdUNBQWdFOztJQUNoRSx1Q0FBMkI7O0lBQzNCLGtDQUFzQjs7SUFDdEIseUNBQTRCOztJQUM1Qiw0Q0FBZ0M7O0lBQ2hDLHdDQUFrQzs7SUFDbEMsNENBSUU7O0lBQ0YsNkNBQTZDOzs7OztJQUM3QywyQ0FBZ0M7Ozs7O0lBQ2hDLHNDQUErQjs7Ozs7SUFDL0IsNENBQXlDOzs7OztJQUN6QywyQ0FBMkM7Ozs7O0lBQzNDLCtDQUErQzs7Ozs7SUFHN0Msb0NBQTREOzs7OztJQUM1RCw2Q0FBbUQ7Ozs7O0lBQ25ELDZDQUFnRDs7Ozs7SUFDaEQsc0NBQWtDOzs7OztJQUNsQyxtQ0FBNEI7Ozs7O0lBQzVCLHFDQUFnQzs7Ozs7SUFDaEMsNkNBQThDOzs7OztJQUM5QywwQ0FBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgU2ltcGxlQ2hhbmdlc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWRkcmVzcyxcclxuICBBcHBVdGlsLFxyXG4gIERpYWxvZ1Jlc3BvbnNlVHlwZSxcclxuICBOZXdDb21wbGV0ZVByb3BlcnR5LFxyXG4gIE5ld1Byb3BlcnR5LFxyXG4gIFBGaWxlLFxyXG4gIFBGaWxlVHlwZUVudW0sXHJcbiAgUHJvcGVydHlJbmZvLFxyXG4gIFByb3BlcnR5VHlwZUVudW0sXHJcbiAgU3RhdHVzVHlwZUVudW0sXHJcbiAgVXNlck1lZGlhXHJcbn0gZnJvbSAnQG1hcGxhbmRlci90eXBlcyc7XHJcbmltcG9ydCB7U25hY2tCYXJTZXJ2aWNlfSBmcm9tICdAbWFwbGFuZGVyL2NvcmUnO1xyXG5pbXBvcnQge0VkaXRvckNvbXBvbmVudH0gZnJvbSAnLi4vZWRpdG9yL2VkaXRvci5jb21wb25lbnQnO1xyXG5pbXBvcnQge093bmVySW5mb0NvbXBvbmVudH0gZnJvbSAnLi4vb3duZXItaW5mby9vd25lci1pbmZvLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7RG9jdW1lbnRzQ29tcG9uZW50fSBmcm9tICcuLi9kb2N1bWVudHMvZG9jdW1lbnRzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7TXVsdGltZWRpYVVwbG9hZGVyU2VydmljZX0gZnJvbSAnLi4vbXVsdGltZWRpYS11cGxvYWRlci9tdWx0aW1lZGlhLXVwbG9hZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQge0Fubm91bmNlQ29uZmlybVNlcnZpY2V9IGZyb20gJy4uL2Fubm91bmNlLWNvbmZpcm0vYW5ub3VuY2UtY29uZmlybS5zZXJ2aWNlJztcclxuaW1wb3J0IHtEb2N1bWVudFZpc29yU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vZG9jdW1lbnQtdmlzb3IvZG9jdW1lbnQtdmlzb3Iuc2VydmljZSc7XHJcbmltcG9ydCB7VXRpbHN9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzJztcclxuaW1wb3J0IHtTaGFyZVNlcnZpY2V9IGZyb20gJ0BtYXBsYW5kZXIvc2hhcmVkJztcclxuaW1wb3J0IHtHYWxsZXJ5U2VydmljZX0gZnJvbSAnLi4vZ2FsbGVyeS9nYWxsZXJ5LnNlcnZpY2UnO1xyXG5pbXBvcnQge1BST1BFUlRZX1RPS0VOfSBmcm9tICcuLi8uLi90b2tlbic7XHJcbmltcG9ydCB7U3RhdHNTZXJ2aWNlfSBmcm9tICcuLi9zdGF0cy9zdGF0cy5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBlbnVtIFByb3BlcnR5RXZlbnRUeXBlIHtcclxuICBDUkVBVEUgPSAnQ1JFQVRFJyxcclxuICBVUERBVEUgPSAnVVBEQVRFJyxcclxuICBBTk5PVU5DRSA9ICdBTk5PVU5DRScsXHJcbiAgSElERSA9ICdISURFJyxcclxuICBTSE9XID0gJ1NIT1cnLFxyXG4gIEFERFJFU1MgPSAnQUREUkVTUycsXHJcbiAgT0ZGRVIgPSAnT0ZGRVInLFxyXG4gIEZBVk9SSVRFID0gJ0ZBVk9SSVRFJyxcclxuICBSRVFVRVNUX0lORk8gPSAnUkVRVUVTVF9JTkZPJyxcclxuICBTSEFSRSA9ICdTSEFSRScsXHJcbiAgQVJDSElWRSA9ICdBUkNISVZFJyxcclxuICBSRUFMX0VTVEFURV9FWENIQU5HRSA9ICdSRUFMX0VTVEFURV9FWENIQU5HRScsXHJcbiAgU0hBUkVfQ09NTUlTU0lPTiA9ICdTSEFSRV9DT01NSVNTSU9OJyxcclxuICBCUk9DSFVSRSA9ICdCUk9DSFVSRScsXHJcbiAgUE9TVEVSID0gJ1BPU1RFUicsXHJcbiAgQ0xJRU5UUyA9ICdDTElFTlRTJyxcclxuICBCQUNLID0gJ0JBQ0snLFxyXG4gIFNIT1dfQUdFTlRTID0gJ1NIT1dfQUdFTlRTJ1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFByb3BlcnR5RXZlbnRDaGFuZ2Uge1xyXG4gIHR5cGU6IFByb3BlcnR5RXZlbnRUeXBlO1xyXG4gIHBheWxvYWQ/OiBhbnk7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXByb3BlcnR5JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcHJvcGVydHkuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Byb3BlcnR5LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFByb3BlcnR5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgpIHByb3BlcnR5OiBOZXdDb21wbGV0ZVByb3BlcnR5O1xyXG4gIEBJbnB1dCgpIHV0aWxzOiBBcHBVdGlsO1xyXG4gIEBJbnB1dCgpIHByb3BlcnR5VHlwZTogUHJvcGVydHlUeXBlRW51bTtcclxuICBASW5wdXQoKSBtb2RlOiAnZGV0YWlsJyB8ICdyZWNvcmQnIHwgJ2FkZCc7XHJcbiAgQElucHV0KCkgc2hhcmVkUHJvcGVydHk6IHsgaXNTaGFyZWQ6IGJvb2xlYW4sIG93bmVyQXZhaWxhYmxlOiBib29sZWFuIH0gPSB7aXNTaGFyZWQ6IGZhbHNlLCBvd25lckF2YWlsYWJsZTogdHJ1ZX07XHJcbiAgQElucHV0KCkgYWRkcmVzczogQWRkcmVzcztcclxuICBASW5wdXQoKSBtbHNMYWJlbDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVTaGFyZUNvbW1pc3Npb246IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaXNGYXZvcml0ZTogYm9vbGVhbjtcclxuICBASW5wdXQoKSBkaXNhYmxlQ29uZmlybUFubm91bmNlOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGN1cnJlbmN5Q29udmVydGVkOiB7IGN1cnJlbmN5OiBzdHJpbmcsIHByaWNlOiBudW1iZXIgfTtcclxuICBAT3V0cHV0KCkgY2hhbmdlOiBFdmVudEVtaXR0ZXI8UHJvcGVydHlFdmVudENoYW5nZT47XHJcbiAgQE91dHB1dCgpIG1vZGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjwnZGV0YWlsJyB8ICdyZWNvcmQnIHwgJ2FkZCc+O1xyXG4gIHB1YmxpYyBtdWx0aW1lZGlhOiBQRmlsZVtdO1xyXG4gIHB1YmxpYyBpc09QSTogYm9vbGVhbjtcclxuICBwdWJsaWMgY3VycmVudEluZGV4OiBudW1iZXI7XHJcbiAgcHVibGljIGZyb250SW1hZ2VFcnJvcjogYm9vbGVhbjtcclxuICBwdWJsaWMgY3VycmVudFR5cGU6IFBGaWxlVHlwZUVudW07XHJcbiAgcHVibGljIG11bHRpbWVkaWFDb3VudDoge1xyXG4gICAgaW1hZ2VzOiBudW1iZXIsXHJcbiAgICBpbWFnZXMzNjA6IG51bWJlcixcclxuICAgIHZpZGVvczogbnVtYmVyXHJcbiAgfTtcclxuICBwdWJsaWMgY29tcGxldGVQcm9wZXJ0eTogTmV3Q29tcGxldGVQcm9wZXJ0eTtcclxuICBwcml2YXRlIF9hbGxNdWx0aW1lZGlhOiBQRmlsZVtdO1xyXG4gIHByaXZhdGUgX25ld01lZGlhOiBVc2VyTWVkaWFbXTtcclxuICBwcml2YXRlIF9lZGl0b3JJbnN0YW5jZTogRWRpdG9yQ29tcG9uZW50O1xyXG4gIHByaXZhdGUgX293bmVySW5zdGFuY2U6IE93bmVySW5mb0NvbXBvbmVudDtcclxuICBwcml2YXRlIF9kb2N1bWVudHNJbnN0YW5jZTogRG9jdW1lbnRzQ29tcG9uZW50O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUFJPUEVSVFlfVE9LRU4pIHByaXZhdGUgX2NvbmZpZzogYm9vbGVhbixcclxuICAgIHByaXZhdGUgX3VwbG9hZGVyU2VydmljZTogTXVsdGltZWRpYVVwbG9hZGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgX2Fubm91bmNlU2VydmljZTogQW5ub3VuY2VDb25maXJtU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NuYWNrQmFyOiBTbmFja0JhclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zaGFyZTogU2hhcmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZ2FsbGVyeTogR2FsbGVyeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9kb2N1bWVudFNlcnZpY2U6IERvY3VtZW50Vmlzb3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc3RhdHNTZXJ2aWNlOiBTdGF0c1NlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuaW5pdENvbXBsZXRlUHJvcGVydHkoKTtcclxuICAgIHRoaXMuY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxQcm9wZXJ0eUV2ZW50Q2hhbmdlPigpO1xyXG4gICAgdGhpcy5tb2RlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjwnZGV0YWlsJyB8ICdyZWNvcmQnIHwgJ2FkZCc+KCk7XHJcbiAgICB0aGlzLmRpc2FibGVTaGFyZUNvbW1pc3Npb24gPSBmYWxzZTtcclxuICAgIHRoaXMuZGlzYWJsZUNvbmZpcm1Bbm5vdW5jZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5jdXJyZW50SW5kZXggPSAwO1xyXG4gICAgdGhpcy5tdWx0aW1lZGlhID0gW107XHJcbiAgICB0aGlzLl9hbGxNdWx0aW1lZGlhID0gW107XHJcbiAgICB0aGlzLl9uZXdNZWRpYSA9IFtdO1xyXG4gICAgdGhpcy5tdWx0aW1lZGlhQ291bnQgPSB7XHJcbiAgICAgIGltYWdlczogMCxcclxuICAgICAgaW1hZ2VzMzYwOiAwLFxyXG4gICAgICB2aWRlb3M6IDBcclxuICAgIH07XHJcbiAgICB0aGlzLmlzT1BJID0gdGhpcy5fY29uZmlnIHx8IGZhbHNlO1xyXG4gICAgdGhpcy5jdXJyZW50VHlwZSA9IFBGaWxlVHlwZUVudW0uSU1BR0U7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydwcm9wZXJ0eSddICYmIGNoYW5nZXNbJ3Byb3BlcnR5J10uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIHRoaXMuY29tcGxldGVQcm9wZXJ0eSA9IG5ldyBOZXdDb21wbGV0ZVByb3BlcnR5KGNoYW5nZXNbJ3Byb3BlcnR5J10uY3VycmVudFZhbHVlIHx8IG51bGwpO1xyXG4gICAgICB0aGlzLnBhcnNlTXVsdGltZWRpYSgpO1xyXG4gICAgICB0aGlzLmFzc2lnbk11bHRpbWVkaWFCeVR5cGUoKTtcclxuICAgICAgdGhpcy52YWxpZGF0ZU11bHRpbWVkaWFUeXBlQ291bnQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNhdmVEYXRhKCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXN0b3JlRnJvbnRJbWFnZUVycm9yKCk7XHJcbiAgICBpZiAodGhpcy5fZWRpdG9ySW5zdGFuY2UudmFsaWRhdGVGb3JtSW52YWxpZCgpKSB7XHJcbiAgICAgIHRoaXMuX3NuYWNrQmFyLnNldE1lc3NhZ2UoJ1ZlcmlmaXF1ZSB0b2RvcyBsb3MgY2FtcG9zIG9ibGlnYXRvcmlvcycsICdPSycsIDUwMDAsICdsZWZ0JywgJ2JvdHRvbScpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnBhcnNlRGF0YUJ5Q29tcG9uZW50cygpO1xyXG4gICAgdGhpcy5jaGFuZ2UuZW1pdCh7XHJcbiAgICAgIHR5cGU6IHRoaXMuY29tcGxldGVQcm9wZXJ0eS5wcm9wZXJ0eS5pZCA/IFByb3BlcnR5RXZlbnRUeXBlLlVQREFURSA6IFByb3BlcnR5RXZlbnRUeXBlLkNSRUFURSxcclxuICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgIHByb3BlcnR5OiB0aGlzLmNvbXBsZXRlUHJvcGVydHksXHJcbiAgICAgICAgbmV3TWVkaWE6IHRoaXMuX25ld01lZGlhXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYWdlbnRBY3Rpb25zKHR5cGU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5jaGFuZ2UuZW1pdCh7XHJcbiAgICAgIHR5cGU6IHR5cGUgYXMgUHJvcGVydHlFdmVudFR5cGUsXHJcbiAgICAgIHBheWxvYWQ6IHtwcm9wZXJ0eTogdGhpcy5jb21wbGV0ZVByb3BlcnR5LCBuZXdNZWRpYTogdGhpcy5fbmV3TWVkaWF9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNoYXJlUHJvcGVydHkoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFnZW50QWN0aW9ucygnU0hBUkUnKTtcclxuICAgIHRoaXMuX3NoYXJlLm9wZW4odGhpcy5jb21wbGV0ZVByb3BlcnR5LnByb3BlcnR5LnVybCk7XHJcbiAgfVxyXG5cclxuICBvcGVuR2FsbGVyeSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9hbGxNdWx0aW1lZGlhLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgdHlwZSA9IG51bGw7XHJcbiAgICBpZiAodGhpcy5tdWx0aW1lZGlhLmxlbmd0aCA+IDApIHtcclxuICAgICAgdHlwZSA9IHRoaXMubXVsdGltZWRpYVswXS50eXBlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZ2FsbGVyeS5vcGVuKHRoaXMuX2FsbE11bHRpbWVkaWEsIHRoaXMuY3VycmVudEluZGV4LCB0eXBlKTtcclxuICB9XHJcblxyXG4gIGdvVG9TdGF0cygpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N0YXRzU2VydmljZS5vcGVuKHRoaXMuY29tcGxldGVQcm9wZXJ0eS5sZWFkSW5mbyB8fCBudWxsKTtcclxuICB9XHJcblxyXG4gIGdvVG9FZGl0UHJvcGVydHkoKTogdm9pZCB7XHJcbiAgICB0aGlzLm1vZGUgPSAnYWRkJztcclxuICAgIHRoaXMubW9kZUNoYW5nZS5lbWl0KHRoaXMubW9kZSk7XHJcbiAgfVxyXG5cclxuICBnb1RvQmFjaygpOiB2b2lkIHtcclxuICAgIHRoaXMucmVzdG9yZUZyb250SW1hZ2VFcnJvcigpO1xyXG4gICAgdGhpcy5jaGFuZ2UuZW1pdCh7XHJcbiAgICAgIHR5cGU6IFByb3BlcnR5RXZlbnRUeXBlLkJBQ0tcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ29Ub0NsaWVudHMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNoYW5nZS5lbWl0KHtcclxuICAgICAgdHlwZTogUHJvcGVydHlFdmVudFR5cGUuQ0xJRU5UU1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnb1RvVXBkYXRlVmlzaWJpbGl0eSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2hhbmdlLmVtaXQoe1xyXG4gICAgICB0eXBlOiB0aGlzLmNvbXBsZXRlUHJvcGVydHkucHJvcGVydHkuc3RhdHVzID09PSBTdGF0dXNUeXBlRW51bS5BTk5PVU5DRUQgPyBQcm9wZXJ0eUV2ZW50VHlwZS5ISURFIDogUHJvcGVydHlFdmVudFR5cGUuU0hPVyxcclxuICAgICAgcGF5bG9hZDoge3Byb3BlcnR5OiB0aGlzLmNvbXBsZXRlUHJvcGVydHksIG5ld01lZGlhOiB0aGlzLl9uZXdNZWRpYX1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ29Ub1B1Ymxpc2goKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5tb2RlID09PSAnYWRkJykge1xyXG4gICAgICB0aGlzLnBhcnNlRGF0YUJ5Q29tcG9uZW50cygpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZXJyb3JzID0gVXRpbHMuZ2V0RXJyb3JzRm9yUHVibGlzaCh0aGlzLmNvbXBsZXRlUHJvcGVydHkucHJvcGVydHkpO1xyXG4gICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMubW9kZSA9ICdhZGQnO1xyXG4gICAgICB0aGlzLm1vZGVDaGFuZ2UuZW1pdCh0aGlzLm1vZGUpO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnZhbGlkYXRlRnJvbnRJbWFnZU9uRXJyb3JzKGVycm9ycyk7XHJcbiAgICAgICAgdGhpcy5fZWRpdG9ySW5zdGFuY2Uuc2V0RXJyb3JzT25GaWVsZHMoZXJyb3JzKTtcclxuICAgICAgfSwgMjAwKTtcclxuICAgICAgdGhpcy5fc25hY2tCYXIuc2V0TWVzc2FnZSgnQ29tcGxldGUgbG9zIGNhbXBvcyBmYWx0YW50ZXMgcGFyYSBwb2RlciBwdWJsaWNhcicsICdPSycsIDUwMDAsICdsZWZ0JywgJ2JvdHRvbScpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuZGlzYWJsZUNvbmZpcm1Bbm5vdW5jZSkge1xyXG4gICAgICAgIHRoaXMuY2hhbmdlLmVtaXQoe1xyXG4gICAgICAgICAgdHlwZTogUHJvcGVydHlFdmVudFR5cGUuQU5OT1VOQ0UsXHJcbiAgICAgICAgICBwYXlsb2FkOiB7cHJvcGVydHk6IHRoaXMuY29tcGxldGVQcm9wZXJ0eSwgbmV3TWVkaWE6IHRoaXMuX25ld01lZGlhfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9hbm5vdW5jZVNlcnZpY2Uub3BlbigpLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5jb2RlID09PSBEaWFsb2dSZXNwb25zZVR5cGUuQUNDRVBUKSB7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZS5lbWl0KHtcclxuICAgICAgICAgICAgdHlwZTogUHJvcGVydHlFdmVudFR5cGUuQU5OT1VOQ0UsXHJcbiAgICAgICAgICAgIHBheWxvYWQ6IHtwcm9wZXJ0eTogdGhpcy5jb21wbGV0ZVByb3BlcnR5LCBuZXdNZWRpYTogdGhpcy5fbmV3TWVkaWF9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25NdWx0aW1lZGlhSW5kZXhDaGFuZ2VkKGV2OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVudEluZGV4ID0gZXY7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VNdWx0aW1lZGlhVHlwZSh0eXBlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVudFR5cGUgPSB0eXBlIGFzIFBGaWxlVHlwZUVudW07XHJcbiAgICB0aGlzLmFzc2lnbk11bHRpbWVkaWFCeVR5cGUoKTtcclxuICB9XHJcblxyXG4gIG9wZW5VcGxvYWRlck11bHRpbWVkaWEoKTogdm9pZCB7XHJcbiAgICB0aGlzLl91cGxvYWRlclNlcnZpY2Uub3Blbih0aGlzLmN1cnJlbnRUeXBlLCB0aGlzLl9hbGxNdWx0aW1lZGlhLCB0aGlzLl9uZXdNZWRpYSkuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZSkge1xyXG4gICAgICAgIHRoaXMuX25ld01lZGlhID0gcmVzcG9uc2UubmV3TWVkaWEgfHwgW107XHJcbiAgICAgICAgdGhpcy5fYWxsTXVsdGltZWRpYSA9IE9iamVjdC5hc3NpZ24oW10sIHJlc3BvbnNlLm11bHRpbWVkaWEgfHwgW10pO1xyXG4gICAgICAgIHRoaXMuYXNzaWduRnJvbnRJbWFnZSgpO1xyXG4gICAgICAgIHRoaXMuYXNzaWduTXVsdGltZWRpYUJ5VHlwZSgpO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGVNdWx0aW1lZGlhVHlwZUNvdW50KCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25FZGl0b3JJbnN0YW5jZShldjogRWRpdG9yQ29tcG9uZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLl9lZGl0b3JJbnN0YW5jZSA9IGV2O1xyXG4gIH1cclxuXHJcbiAgb25Pd25lckluc3RhbmNlKGV2OiBPd25lckluZm9Db21wb25lbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuX293bmVySW5zdGFuY2UgPSBldjtcclxuICB9XHJcblxyXG4gIG9uRG9jdW1lbnRzSW5zdGFuY2UoZXY6IERvY3VtZW50c0NvbXBvbmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZG9jdW1lbnRzSW5zdGFuY2UgPSBldjtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0QWRkcmVzcygpOiB2b2lkIHtcclxuICAgIHRoaXMuY2hhbmdlLmVtaXQoe1xyXG4gICAgICB0eXBlOiBQcm9wZXJ0eUV2ZW50VHlwZS5BRERSRVNTXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzdG9yZUZyb250SW1hZ2VFcnJvcigpOiB2b2lkIHtcclxuICAgIHRoaXMuZnJvbnRJbWFnZUVycm9yID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBhcnNlTXVsdGltZWRpYSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2FsbE11bHRpbWVkaWEgPSBbXTtcclxuICAgIHRoaXMuX2FsbE11bHRpbWVkaWEgPSB0aGlzLl9hbGxNdWx0aW1lZGlhLmNvbmNhdCh0aGlzLmNvbXBsZXRlUHJvcGVydHkuaW1hZ2VzIHx8IFtdKTtcclxuICAgIHRoaXMuX2FsbE11bHRpbWVkaWEgPSB0aGlzLl9hbGxNdWx0aW1lZGlhLmNvbmNhdCh0aGlzLmNvbXBsZXRlUHJvcGVydHkudmlkZW9zIHx8IFtdKTtcclxuICAgIHRoaXMuX2FsbE11bHRpbWVkaWEgPSB0aGlzLl9hbGxNdWx0aW1lZGlhLmNvbmNhdCh0aGlzLmNvbXBsZXRlUHJvcGVydHkuc3BoZXJpY3MgfHwgW10pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRNdWx0aW1lZGlhQnlUeXBlKHR5cGU6IFBGaWxlVHlwZUVudW0pOiBQRmlsZVtdIHtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gW107XHJcbiAgICB0aGlzLl9hbGxNdWx0aW1lZGlhLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIGlmIChpdGVtLnR5cGUgPT09IHR5cGUpIHtcclxuICAgICAgICByZXNwb25zZS5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXNzaWduRnJvbnRJbWFnZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGltYWdlczogUEZpbGVbXSA9IFtdO1xyXG4gICAgdGhpcy5fYWxsTXVsdGltZWRpYS5mb3JFYWNoKG11bHRpbWVkaWEgPT4ge1xyXG4gICAgICBpZiAobXVsdGltZWRpYS50eXBlID09PSBQRmlsZVR5cGVFbnVtLklNQUdFKSB7XHJcbiAgICAgICAgaW1hZ2VzLnB1c2gobXVsdGltZWRpYSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKGltYWdlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuY29tcGxldGVQcm9wZXJ0eS5wcm9wZXJ0eS5pbWFnZSA9IGltYWdlc1swXS5maWxlQ1MudGh1bWJuYWlsO1xyXG4gICAgICB0aGlzLmZyb250SW1hZ2VFcnJvciA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jb21wbGV0ZVByb3BlcnR5LnByb3BlcnR5LmltYWdlID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMuY29tcGxldGVQcm9wZXJ0eSA9IG5ldyBOZXdDb21wbGV0ZVByb3BlcnR5KHRoaXMuY29tcGxldGVQcm9wZXJ0eSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzc2lnbk11bHRpbWVkaWFCeVR5cGUoKTogdm9pZCB7XHJcbiAgICBjb25zdCByZXNwb25zZSA9IFtdO1xyXG4gICAgdGhpcy5fYWxsTXVsdGltZWRpYS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICBpZiAoaXRlbS50eXBlID09PSB0aGlzLmN1cnJlbnRUeXBlKSB7XHJcbiAgICAgICAgcmVzcG9uc2UucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLm11bHRpbWVkaWEgPSBPYmplY3QuYXNzaWduKFtdLCByZXNwb25zZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHZhbGlkYXRlRnJvbnRJbWFnZU9uRXJyb3JzKGVycm9yczogc3RyaW5nW10pOiB2b2lkIHtcclxuICAgIGVycm9ycy5mb3JFYWNoKGVycm9yID0+IHtcclxuICAgICAgaWYgKGVycm9yID09PSAnaW1hZ2UnKSB7XHJcbiAgICAgICAgdGhpcy5mcm9udEltYWdlRXJyb3IgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdGVNdWx0aW1lZGlhVHlwZUNvdW50KCk6IHZvaWQge1xyXG4gICAgdGhpcy5tdWx0aW1lZGlhQ291bnQuaW1hZ2VzID0gMDtcclxuICAgIHRoaXMubXVsdGltZWRpYUNvdW50LmltYWdlczM2MCA9IDA7XHJcbiAgICB0aGlzLm11bHRpbWVkaWFDb3VudC52aWRlb3MgPSAwO1xyXG4gICAgdGhpcy5fYWxsTXVsdGltZWRpYS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICBzd2l0Y2ggKGl0ZW0udHlwZSkge1xyXG4gICAgICAgIGNhc2UgUEZpbGVUeXBlRW51bS5JTUFHRTpcclxuICAgICAgICAgIHRoaXMubXVsdGltZWRpYUNvdW50LmltYWdlcysrO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBQRmlsZVR5cGVFbnVtLlNQSEVSSUM6XHJcbiAgICAgICAgICB0aGlzLm11bHRpbWVkaWFDb3VudC5pbWFnZXMzNjArKztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgUEZpbGVUeXBlRW51bS5WSURFTzpcclxuICAgICAgICAgIHRoaXMubXVsdGltZWRpYUNvdW50LnZpZGVvcysrO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwYXJzZURhdGFCeUNvbXBvbmVudHMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbXBsZXRlUHJvcGVydHkucHJvcGVydHkgPSB0aGlzLl9lZGl0b3JJbnN0YW5jZS5nZXRQcm9wZXJ0eSgpO1xyXG4gICAgdGhpcy5jb21wbGV0ZVByb3BlcnR5LnByb3BlcnR5LnByb3BlcnR5SW5mby5vd25lciA9IHRoaXMuX293bmVySW5zdGFuY2UuZ2V0T3duZXIoKTtcclxuICAgIGNvbnN0IGRvY3VtZW50c1Jlc3BvbnNlID0gdGhpcy5fZG9jdW1lbnRzSW5zdGFuY2UuZ2V0RG9jdW1lbnRzKCk7XHJcbiAgICB0aGlzLmNvbXBsZXRlUHJvcGVydHkuZmlsZXMgPSBkb2N1bWVudHNSZXNwb25zZS5kb2N1bWVudHM7XHJcbiAgICB0aGlzLl9uZXdNZWRpYSA9IHRoaXMuX25ld01lZGlhLmNvbmNhdChkb2N1bWVudHNSZXNwb25zZS5uZXdNZWRpYSk7XHJcbiAgICB0aGlzLmNvbXBsZXRlUHJvcGVydHkuaW1hZ2VzID0gdGhpcy5nZXRNdWx0aW1lZGlhQnlUeXBlKFBGaWxlVHlwZUVudW0uSU1BR0UpO1xyXG4gICAgdGhpcy5jb21wbGV0ZVByb3BlcnR5LnNwaGVyaWNzID0gdGhpcy5nZXRNdWx0aW1lZGlhQnlUeXBlKFBGaWxlVHlwZUVudW0uU1BIRVJJQyk7XHJcbiAgICB0aGlzLmNvbXBsZXRlUHJvcGVydHkudmlkZW9zID0gdGhpcy5nZXRNdWx0aW1lZGlhQnlUeXBlKFBGaWxlVHlwZUVudW0uVklERU8pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0Q29tcGxldGVQcm9wZXJ0eSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbXBsZXRlID0gbmV3IE5ld0NvbXBsZXRlUHJvcGVydHkoKTtcclxuICAgIGNvbXBsZXRlLnByb3BlcnR5ID0gbmV3IE5ld1Byb3BlcnR5KCk7XHJcbiAgICBjb21wbGV0ZS5wcm9wZXJ0eS5wcm9wZXJ0eUluZm8gPSBuZXcgUHJvcGVydHlJbmZvKCk7XHJcbiAgICB0aGlzLmNvbXBsZXRlUHJvcGVydHkgPSBjb21wbGV0ZTtcclxuICB9XHJcbn1cclxuIl19
592
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG1hcGxhbmRlci9jb21wb25lbnRzLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvcHJvcGVydHkvY29tcG9uZW50cy9wcm9wZXJ0eS9wcm9wZXJ0eS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLFFBQVEsRUFBRSxNQUFNLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ3pILE9BQU8sRUFDTCxPQUFPLEVBRVAsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixXQUFXLEVBRVgsYUFBYSxFQUNiLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsY0FBYyxFQUVmLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBSWhELE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBQzdGLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ3BGLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQ3BGLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUN4QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDM0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdCQUF3QixDQUFDOzs7SUFHbEQsUUFBUyxRQUFRO0lBQ2pCLFFBQVMsUUFBUTtJQUNqQixVQUFXLFVBQVU7SUFDckIsTUFBTyxNQUFNO0lBQ2IsTUFBTyxNQUFNO0lBQ2IsU0FBVSxTQUFTO0lBQ25C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S0FBSzt5QkFDTCxLQUFLO3FDQUNMLEtBQUs7Z0NBQ0wsS0FBSztzQkFDTCxLQUFLO3FCQUNMLE1BQU07eUJBQ04sTUFBTTs7OztJQWJQLHFDQUF1Qzs7SUFDdkMsa0NBQXdCOztJQUN4Qix5Q0FBd0M7O0lBQ3hDLGlDQUEyQzs7SUFDM0MsMkNBQWtIOztJQUNsSCxvQ0FBMEI7O0lBQzFCLHFDQUEwQjs7SUFDMUIsbURBQXlDOztJQUN6Qyx1Q0FBNkI7O0lBQzdCLG1EQUF5Qzs7SUFDekMsOENBQWdFOztJQUNoRSxvQ0FBeUI7O0lBQ3pCLG1DQUFvRDs7SUFDcEQsdUNBQWdFOztJQUNoRSx1Q0FBMkI7O0lBQzNCLGtDQUFzQjs7SUFDdEIseUNBQTRCOztJQUM1Qiw0Q0FBZ0M7O0lBQ2hDLHdDQUFrQzs7SUFDbEMsNENBSUU7O0lBQ0YsNkNBQTZDOzs7OztJQUM3QywyQ0FBZ0M7Ozs7O0lBQ2hDLHNDQUErQjs7Ozs7SUFDL0IsNENBQXlDOzs7OztJQUN6QywyQ0FBMkM7Ozs7O0lBQzNDLCtDQUErQzs7Ozs7SUFHN0Msb0NBQTREOzs7OztJQUM1RCw2Q0FBbUQ7Ozs7O0lBQ25ELDZDQUFnRDs7Ozs7SUFDaEQsc0NBQWtDOzs7OztJQUNsQyxtQ0FBNEI7Ozs7O0lBQzVCLHFDQUFnQzs7Ozs7SUFDaEMsNkNBQThDOzs7OztJQUM5QywwQ0FBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgU2ltcGxlQ2hhbmdlc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWRkcmVzcyxcclxuICBBcHBVdGlsLFxyXG4gIERpYWxvZ1Jlc3BvbnNlVHlwZSxcclxuICBOZXdDb21wbGV0ZVByb3BlcnR5LFxyXG4gIE5ld1Byb3BlcnR5LFxyXG4gIFBGaWxlLFxyXG4gIFBGaWxlVHlwZUVudW0sXHJcbiAgUHJvcGVydHlJbmZvLFxyXG4gIFByb3BlcnR5VHlwZUVudW0sXHJcbiAgU3RhdHVzVHlwZUVudW0sXHJcbiAgVXNlck1lZGlhXHJcbn0gZnJvbSAnQG1hcGxhbmRlci90eXBlcyc7XHJcbmltcG9ydCB7U25hY2tCYXJTZXJ2aWNlfSBmcm9tICdAbWFwbGFuZGVyL2NvcmUnO1xyXG5pbXBvcnQge0VkaXRvckNvbXBvbmVudH0gZnJvbSAnLi4vZWRpdG9yL2VkaXRvci5jb21wb25lbnQnO1xyXG5pbXBvcnQge093bmVySW5mb0NvbXBvbmVudH0gZnJvbSAnLi4vb3duZXItaW5mby9vd25lci1pbmZvLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7RG9jdW1lbnRzQ29tcG9uZW50fSBmcm9tICcuLi9kb2N1bWVudHMvZG9jdW1lbnRzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7TXVsdGltZWRpYVVwbG9hZGVyU2VydmljZX0gZnJvbSAnLi4vbXVsdGltZWRpYS11cGxvYWRlci9tdWx0aW1lZGlhLXVwbG9hZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQge0Fubm91bmNlQ29uZmlybVNlcnZpY2V9IGZyb20gJy4uL2Fubm91bmNlLWNvbmZpcm0vYW5ub3VuY2UtY29uZmlybS5zZXJ2aWNlJztcclxuaW1wb3J0IHtEb2N1bWVudFZpc29yU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vZG9jdW1lbnQtdmlzb3IvZG9jdW1lbnQtdmlzb3Iuc2VydmljZSc7XHJcbmltcG9ydCB7VXRpbHN9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzJztcclxuaW1wb3J0IHtTaGFyZVNlcnZpY2V9IGZyb20gJ0BtYXBsYW5kZXIvc2hhcmVkJztcclxuaW1wb3J0IHtHYWxsZXJ5U2VydmljZX0gZnJvbSAnLi4vZ2FsbGVyeS9nYWxsZXJ5LnNlcnZpY2UnO1xyXG5pbXBvcnQge1BST1BFUlRZX1RPS0VOfSBmcm9tICcuLi8uLi90b2tlbic7XHJcbmltcG9ydCB7U3RhdHNTZXJ2aWNlfSBmcm9tICcuLi9zdGF0cy9zdGF0cy5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBlbnVtIFByb3BlcnR5RXZlbnRUeXBlIHtcclxuICBDUkVBVEUgPSAnQ1JFQVRFJyxcclxuICBVUERBVEUgPSAnVVBEQVRFJyxcclxuICBBTk5PVU5DRSA9ICdBTk5PVU5DRScsXHJcbiAgSElERSA9ICdISURFJyxcclxuICBTSE9XID0gJ1NIT1cnLFxyXG4gIEFERFJFU1MgPSAnQUREUkVTUycsXHJcbiAgT0ZGRVIgPSAnT0ZGRVInLFxyXG4gIEZBVk9SSVRFID0gJ0ZBVk9SSVRFJyxcclxuICBSRVFVRVNUX0lORk8gPSAnUkVRVUVTVF9JTkZPJyxcclxuICBTSEFSRSA9ICdTSEFSRScsXHJcbiAgQVJDSElWRSA9ICdBUkNISVZFJyxcclxuICBSRUFMX0VTVEFURV9FWENIQU5HRSA9ICdSRUFMX0VTVEFURV9FWENIQU5HRScsXHJcbiAgU0hBUkVfQ09NTUlTU0lPTiA9ICdTSEFSRV9DT01NSVNTSU9OJyxcclxuICBCUk9DSFVSRSA9ICdCUk9DSFVSRScsXHJcbiAgUE9TVEVSID0gJ1BPU1RFUicsXHJcbiAgQ0xJRU5UUyA9ICdDTElFTlRTJyxcclxuICBCQUNLID0gJ0JBQ0snLFxyXG4gIFNIT1dfQUdFTlRTID0gJ1NIT1dfQUdFTlRTJyxcclxuICBUQVJQUyA9ICdUQVJQUydcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQcm9wZXJ0eUV2ZW50Q2hhbmdlIHtcclxuICB0eXBlOiBQcm9wZXJ0eUV2ZW50VHlwZTtcclxuICBwYXlsb2FkPzogYW55O1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1wcm9wZXJ0eScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb3BlcnR5LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wcm9wZXJ0eS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9wZXJ0eUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSBwcm9wZXJ0eTogTmV3Q29tcGxldGVQcm9wZXJ0eTtcclxuICBASW5wdXQoKSB1dGlsczogQXBwVXRpbDtcclxuICBASW5wdXQoKSBwcm9wZXJ0eVR5cGU6IFByb3BlcnR5VHlwZUVudW07XHJcbiAgQElucHV0KCkgbW9kZTogJ2RldGFpbCcgfCAncmVjb3JkJyB8ICdhZGQnO1xyXG4gIEBJbnB1dCgpIHNoYXJlZFByb3BlcnR5OiB7IGlzU2hhcmVkOiBib29sZWFuLCBvd25lckF2YWlsYWJsZTogYm9vbGVhbiB9ID0ge2lzU2hhcmVkOiBmYWxzZSwgb3duZXJBdmFpbGFibGU6IHRydWV9O1xyXG4gIEBJbnB1dCgpIGFkZHJlc3M6IEFkZHJlc3M7XHJcbiAgQElucHV0KCkgbWxzTGFiZWw6IHN0cmluZztcclxuICBASW5wdXQoKSBkaXNhYmxlU2hhcmVDb21taXNzaW9uOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGlzRmF2b3JpdGU6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZGlzYWJsZUNvbmZpcm1Bbm5vdW5jZTogYm9vbGVhbjtcclxuICBASW5wdXQoKSBjdXJyZW5jeUNvbnZlcnRlZDogeyBjdXJyZW5jeTogc3RyaW5nLCBwcmljZTogbnVtYmVyIH07XHJcbiAgQElucHV0KCkgdXNlclVybDogc3RyaW5nO1xyXG4gIEBPdXRwdXQoKSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxQcm9wZXJ0eUV2ZW50Q2hhbmdlPjtcclxuICBAT3V0cHV0KCkgbW9kZUNoYW5nZTogRXZlbnRFbWl0dGVyPCdkZXRhaWwnIHwgJ3JlY29yZCcgfCAnYWRkJz47XHJcbiAgcHVibGljIG11bHRpbWVkaWE6IFBGaWxlW107XHJcbiAgcHVibGljIGlzT1BJOiBib29sZWFuO1xyXG4gIHB1YmxpYyBjdXJyZW50SW5kZXg6IG51bWJlcjtcclxuICBwdWJsaWMgZnJvbnRJbWFnZUVycm9yOiBib29sZWFuO1xyXG4gIHB1YmxpYyBjdXJyZW50VHlwZTogUEZpbGVUeXBlRW51bTtcclxuICBwdWJsaWMgbXVsdGltZWRpYUNvdW50OiB7XHJcbiAgICBpbWFnZXM6IG51bWJlcixcclxuICAgIGltYWdlczM2MDogbnVtYmVyLFxyXG4gICAgdmlkZW9zOiBudW1iZXJcclxuICB9O1xyXG4gIHB1YmxpYyBjb21wbGV0ZVByb3BlcnR5OiBOZXdDb21wbGV0ZVByb3BlcnR5O1xyXG4gIHByaXZhdGUgX2FsbE11bHRpbWVkaWE6IFBGaWxlW107XHJcbiAgcHJpdmF0ZSBfbmV3TWVkaWE6IFVzZXJNZWRpYVtdO1xyXG4gIHByaXZhdGUgX2VkaXRvckluc3RhbmNlOiBFZGl0b3JDb21wb25lbnQ7XHJcbiAgcHJpdmF0ZSBfb3duZXJJbnN0YW5jZTogT3duZXJJbmZvQ29tcG9uZW50O1xyXG4gIHByaXZhdGUgX2RvY3VtZW50c0luc3RhbmNlOiBEb2N1bWVudHNDb21wb25lbnQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChQUk9QRVJUWV9UT0tFTikgcHJpdmF0ZSBfY29uZmlnOiBib29sZWFuLFxyXG4gICAgcHJpdmF0ZSBfdXBsb2FkZXJTZXJ2aWNlOiBNdWx0aW1lZGlhVXBsb2FkZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfYW5ub3VuY2VTZXJ2aWNlOiBBbm5vdW5jZUNvbmZpcm1TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc25hY2tCYXI6IFNuYWNrQmFyU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NoYXJlOiBTaGFyZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9nYWxsZXJ5OiBHYWxsZXJ5U2VydmljZSxcclxuICAgIHByaXZhdGUgX2RvY3VtZW50U2VydmljZTogRG9jdW1lbnRWaXNvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zdGF0c1NlcnZpY2U6IFN0YXRzU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5pbml0Q29tcGxldGVQcm9wZXJ0eSgpO1xyXG4gICAgdGhpcy5jaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFByb3BlcnR5RXZlbnRDaGFuZ2U+KCk7XHJcbiAgICB0aGlzLm1vZGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPCdkZXRhaWwnIHwgJ3JlY29yZCcgfCAnYWRkJz4oKTtcclxuICAgIHRoaXMuZGlzYWJsZVNoYXJlQ29tbWlzc2lvbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5kaXNhYmxlQ29uZmlybUFubm91bmNlID0gZmFsc2U7XHJcbiAgICB0aGlzLmN1cnJlbnRJbmRleCA9IDA7XHJcbiAgICB0aGlzLm11bHRpbWVkaWEgPSBbXTtcclxuICAgIHRoaXMuX2FsbE11bHRpbWVkaWEgPSBbXTtcclxuICAgIHRoaXMuX25ld01lZGlhID0gW107XHJcbiAgICB0aGlzLm11bHRpbWVkaWFDb3VudCA9IHtcclxuICAgICAgaW1hZ2VzOiAwLFxyXG4gICAgICBpbWFnZXMzNjA6IDAsXHJcbiAgICAgIHZpZGVvczogMFxyXG4gICAgfTtcclxuICAgIHRoaXMuaXNPUEkgPSB0aGlzLl9jb25maWcgfHwgZmFsc2U7XHJcbiAgICB0aGlzLmN1cnJlbnRUeXBlID0gUEZpbGVUeXBlRW51bS5JTUFHRTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgLy8gdGhpcy5hZ2VudEFjdGlvbnMoJ1NIT1dfQUdFTlRTJyk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1sncHJvcGVydHknXSAmJiBjaGFuZ2VzWydwcm9wZXJ0eSddLmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICB0aGlzLmNvbXBsZXRlUHJvcGVydHkgPSBuZXcgTmV3Q29tcGxldGVQcm9wZXJ0eShjaGFuZ2VzWydwcm9wZXJ0eSddLmN1cnJlbnRWYWx1ZSB8fCBudWxsKTtcclxuICAgICAgdGhpcy5wYXJzZU11bHRpbWVkaWEoKTtcclxuICAgICAgdGhpcy5hc3NpZ25NdWx0aW1lZGlhQnlUeXBlKCk7XHJcbiAgICAgIHRoaXMudmFsaWRhdGVNdWx0aW1lZGlhVHlwZUNvdW50KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzYXZlRGF0YSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVzdG9yZUZyb250SW1hZ2VFcnJvcigpO1xyXG4gICAgaWYgKHRoaXMuX2VkaXRvckluc3RhbmNlLnZhbGlkYXRlRm9ybUludmFsaWQoKSkge1xyXG4gICAgICB0aGlzLl9zbmFja0Jhci5zZXRNZXNzYWdlKCdWZXJpZmlxdWUgdG9kb3MgbG9zIGNhbXBvcyBvYmxpZ2F0b3Jpb3MnLCAnT0snLCA1MDAwLCAnbGVmdCcsICdib3R0b20nKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wYXJzZURhdGFCeUNvbXBvbmVudHMoKTtcclxuICAgIHRoaXMuY2hhbmdlLmVtaXQoe1xyXG4gICAgICB0eXBlOiB0aGlzLmNvbXBsZXRlUHJvcGVydHkucHJvcGVydHkuaWQgPyBQcm9wZXJ0eUV2ZW50VHlwZS5VUERBVEUgOiBQcm9wZXJ0eUV2ZW50VHlwZS5DUkVBVEUsXHJcbiAgICAgIHBheWxvYWQ6IHtcclxuICAgICAgICBwcm9wZXJ0eTogdGhpcy5jb21wbGV0ZVByb3BlcnR5LFxyXG4gICAgICAgIG5ld01lZGlhOiB0aGlzLl9uZXdNZWRpYVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFnZW50QWN0aW9ucyh0eXBlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuY2hhbmdlLmVtaXQoe1xyXG4gICAgICB0eXBlOiB0eXBlIGFzIFByb3BlcnR5RXZlbnRUeXBlLFxyXG4gICAgICBwYXlsb2FkOiB7cHJvcGVydHk6IHRoaXMuY29tcGxldGVQcm9wZXJ0eSwgbmV3TWVkaWE6IHRoaXMuX25ld01lZGlhfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzaGFyZVByb3BlcnR5KCk6IHZvaWQge1xyXG4gICAgdGhpcy5hZ2VudEFjdGlvbnMoJ1NIQVJFJyk7XHJcbiAgICB0aGlzLl9zaGFyZS5vcGVuKHtcclxuICAgICAgdXJsOiB0aGlzLmNvbXBsZXRlUHJvcGVydHkucHJvcGVydHkudXJsLFxyXG4gICAgICB1cmxVc2VyOiB0aGlzLnVzZXJVcmxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb3BlbkdhbGxlcnkoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fYWxsTXVsdGltZWRpYS5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IHR5cGUgPSBudWxsO1xyXG4gICAgaWYgKHRoaXMubXVsdGltZWRpYS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHR5cGUgPSB0aGlzLm11bHRpbWVkaWFbMF0udHlwZTtcclxuICAgIH1cclxuICAgIHRoaXMuX2dhbGxlcnkub3Blbih0aGlzLl9hbGxNdWx0aW1lZGlhLCB0aGlzLmN1cnJlbnRJbmRleCwgdHlwZSk7XHJcbiAgfVxyXG5cclxuICBnb1RvU3RhdHMoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zdGF0c1NlcnZpY2Uub3Blbih0aGlzLmNvbXBsZXRlUHJvcGVydHkubGVhZEluZm8gfHwgbnVsbCk7XHJcbiAgfVxyXG5cclxuICBnb1RvRWRpdFByb3BlcnR5KCk6IHZvaWQge1xyXG4gICAgdGhpcy5tb2RlID0gJ2FkZCc7XHJcbiAgICB0aGlzLm1vZGVDaGFuZ2UuZW1pdCh0aGlzLm1vZGUpO1xyXG4gIH1cclxuXHJcbiAgZ29Ub0JhY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlc3RvcmVGcm9udEltYWdlRXJyb3IoKTtcclxuICAgIHRoaXMuY2hhbmdlLmVtaXQoe1xyXG4gICAgICB0eXBlOiBQcm9wZXJ0eUV2ZW50VHlwZS5CQUNLXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdvVG9DbGllbnRzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jaGFuZ2UuZW1pdCh7XHJcbiAgICAgIHR5cGU6IFByb3BlcnR5RXZlbnRUeXBlLkNMSUVOVFNcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ29Ub1VwZGF0ZVZpc2liaWxpdHkoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNoYW5nZS5lbWl0KHtcclxuICAgICAgdHlwZTogdGhpcy5jb21wbGV0ZVByb3BlcnR5LnByb3BlcnR5LnN0YXR1cyA9PT0gU3RhdHVzVHlwZUVudW0uQU5OT1VOQ0VEID8gUHJvcGVydHlFdmVudFR5cGUuSElERSA6IFByb3BlcnR5RXZlbnRUeXBlLlNIT1csXHJcbiAgICAgIHBheWxvYWQ6IHtwcm9wZXJ0eTogdGhpcy5jb21wbGV0ZVByb3BlcnR5LCBuZXdNZWRpYTogdGhpcy5fbmV3TWVkaWF9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdvVG9QdWJsaXNoKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ2FkZCcpIHtcclxuICAgICAgdGhpcy5wYXJzZURhdGFCeUNvbXBvbmVudHMoKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGVycm9ycyA9IFV0aWxzLmdldEVycm9yc0ZvclB1Ymxpc2godGhpcy5jb21wbGV0ZVByb3BlcnR5LnByb3BlcnR5KTtcclxuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLm1vZGUgPSAnYWRkJztcclxuICAgICAgdGhpcy5tb2RlQ2hhbmdlLmVtaXQodGhpcy5tb2RlKTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0ZUZyb250SW1hZ2VPbkVycm9ycyhlcnJvcnMpO1xyXG4gICAgICAgIHRoaXMuX2VkaXRvckluc3RhbmNlLnNldEVycm9yc09uRmllbGRzKGVycm9ycyk7XHJcbiAgICAgIH0sIDIwMCk7XHJcbiAgICAgIHRoaXMuX3NuYWNrQmFyLnNldE1lc3NhZ2UoJ0NvbXBsZXRlIGxvcyBjYW1wb3MgZmFsdGFudGVzIHBhcmEgcG9kZXIgcHVibGljYXInLCAnT0snLCA1MDAwLCAnbGVmdCcsICdib3R0b20nKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmRpc2FibGVDb25maXJtQW5ub3VuY2UpIHtcclxuICAgICAgICB0aGlzLmNoYW5nZS5lbWl0KHtcclxuICAgICAgICAgIHR5cGU6IFByb3BlcnR5RXZlbnRUeXBlLkFOTk9VTkNFLFxyXG4gICAgICAgICAgcGF5bG9hZDoge3Byb3BlcnR5OiB0aGlzLmNvbXBsZXRlUHJvcGVydHksIG5ld01lZGlhOiB0aGlzLl9uZXdNZWRpYX1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5fYW5ub3VuY2VTZXJ2aWNlLm9wZW4oKS5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2UuY29kZSA9PT0gRGlhbG9nUmVzcG9uc2VUeXBlLkFDQ0VQVCkge1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2UuZW1pdCh7XHJcbiAgICAgICAgICAgIHR5cGU6IFByb3BlcnR5RXZlbnRUeXBlLkFOTk9VTkNFLFxyXG4gICAgICAgICAgICBwYXlsb2FkOiB7cHJvcGVydHk6IHRoaXMuY29tcGxldGVQcm9wZXJ0eSwgbmV3TWVkaWE6IHRoaXMuX25ld01lZGlhfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uTXVsdGltZWRpYUluZGV4Q2hhbmdlZChldjogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmN1cnJlbnRJbmRleCA9IGV2O1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlTXVsdGltZWRpYVR5cGUodHlwZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmN1cnJlbnRUeXBlID0gdHlwZSBhcyBQRmlsZVR5cGVFbnVtO1xyXG4gICAgdGhpcy5hc3NpZ25NdWx0aW1lZGlhQnlUeXBlKCk7XHJcbiAgfVxyXG5cclxuICBvcGVuVXBsb2FkZXJNdWx0aW1lZGlhKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fdXBsb2FkZXJTZXJ2aWNlLm9wZW4odGhpcy5jdXJyZW50VHlwZSwgdGhpcy5fYWxsTXVsdGltZWRpYSwgdGhpcy5fbmV3TWVkaWEpLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2UpIHtcclxuICAgICAgICB0aGlzLl9uZXdNZWRpYSA9IHJlc3BvbnNlLm5ld01lZGlhIHx8IFtdO1xyXG4gICAgICAgIHRoaXMuX2FsbE11bHRpbWVkaWEgPSBPYmplY3QuYXNzaWduKFtdLCByZXNwb25zZS5tdWx0aW1lZGlhIHx8IFtdKTtcclxuICAgICAgICB0aGlzLmFzc2lnbkZyb250SW1hZ2UoKTtcclxuICAgICAgICB0aGlzLmFzc2lnbk11bHRpbWVkaWFCeVR5cGUoKTtcclxuICAgICAgICB0aGlzLnZhbGlkYXRlTXVsdGltZWRpYVR5cGVDb3VudCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uRWRpdG9ySW5zdGFuY2UoZXY6IEVkaXRvckNvbXBvbmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZWRpdG9ySW5zdGFuY2UgPSBldjtcclxuICB9XHJcblxyXG4gIG9uT3duZXJJbnN0YW5jZShldjogT3duZXJJbmZvQ29tcG9uZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLl9vd25lckluc3RhbmNlID0gZXY7XHJcbiAgfVxyXG5cclxuICBvbkRvY3VtZW50c0luc3RhbmNlKGV2OiBEb2N1bWVudHNDb21wb25lbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuX2RvY3VtZW50c0luc3RhbmNlID0gZXY7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdEFkZHJlc3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNoYW5nZS5lbWl0KHtcclxuICAgICAgdHlwZTogUHJvcGVydHlFdmVudFR5cGUuQUREUkVTU1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc3RvcmVGcm9udEltYWdlRXJyb3IoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZyb250SW1hZ2VFcnJvciA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwYXJzZU11bHRpbWVkaWEoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9hbGxNdWx0aW1lZGlhID0gW107XHJcbiAgICB0aGlzLl9hbGxNdWx0aW1lZGlhID0gdGhpcy5fYWxsTXVsdGltZWRpYS5jb25jYXQodGhpcy5jb21wbGV0ZVByb3BlcnR5LmltYWdlcyB8fCBbXSk7XHJcbiAgICB0aGlzLl9hbGxNdWx0aW1lZGlhID0gdGhpcy5fYWxsTXVsdGltZWRpYS5jb25jYXQodGhpcy5jb21wbGV0ZVByb3BlcnR5LnZpZGVvcyB8fCBbXSk7XHJcbiAgICB0aGlzLl9hbGxNdWx0aW1lZGlhID0gdGhpcy5fYWxsTXVsdGltZWRpYS5jb25jYXQodGhpcy5jb21wbGV0ZVByb3BlcnR5LnNwaGVyaWNzIHx8IFtdKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0TXVsdGltZWRpYUJ5VHlwZSh0eXBlOiBQRmlsZVR5cGVFbnVtKTogUEZpbGVbXSB7XHJcbiAgICBjb25zdCByZXNwb25zZSA9IFtdO1xyXG4gICAgdGhpcy5fYWxsTXVsdGltZWRpYS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICBpZiAoaXRlbS50eXBlID09PSB0eXBlKSB7XHJcbiAgICAgICAgcmVzcG9uc2UucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzc2lnbkZyb250SW1hZ2UoKTogdm9pZCB7XHJcbiAgICBjb25zdCBpbWFnZXM6IFBGaWxlW10gPSBbXTtcclxuICAgIHRoaXMuX2FsbE11bHRpbWVkaWEuZm9yRWFjaChtdWx0aW1lZGlhID0+IHtcclxuICAgICAgaWYgKG11bHRpbWVkaWEudHlwZSA9PT0gUEZpbGVUeXBlRW51bS5JTUFHRSkge1xyXG4gICAgICAgIGltYWdlcy5wdXNoKG11bHRpbWVkaWEpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmIChpbWFnZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmNvbXBsZXRlUHJvcGVydHkucHJvcGVydHkuaW1hZ2UgPSBpbWFnZXNbMF0uZmlsZUNTLnRodW1ibmFpbDtcclxuICAgICAgdGhpcy5mcm9udEltYWdlRXJyb3IgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29tcGxldGVQcm9wZXJ0eS5wcm9wZXJ0eS5pbWFnZSA9IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbXBsZXRlUHJvcGVydHkgPSBuZXcgTmV3Q29tcGxldGVQcm9wZXJ0eSh0aGlzLmNvbXBsZXRlUHJvcGVydHkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3NpZ25NdWx0aW1lZGlhQnlUeXBlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBbXTtcclxuICAgIHRoaXMuX2FsbE11bHRpbWVkaWEuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gdGhpcy5jdXJyZW50VHlwZSkge1xyXG4gICAgICAgIHJlc3BvbnNlLnB1c2goaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5tdWx0aW1lZGlhID0gT2JqZWN0LmFzc2lnbihbXSwgcmVzcG9uc2UpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB2YWxpZGF0ZUZyb250SW1hZ2VPbkVycm9ycyhlcnJvcnM6IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICBlcnJvcnMuZm9yRWFjaChlcnJvciA9PiB7XHJcbiAgICAgIGlmIChlcnJvciA9PT0gJ2ltYWdlJykge1xyXG4gICAgICAgIHRoaXMuZnJvbnRJbWFnZUVycm9yID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHZhbGlkYXRlTXVsdGltZWRpYVR5cGVDb3VudCgpOiB2b2lkIHtcclxuICAgIHRoaXMubXVsdGltZWRpYUNvdW50LmltYWdlcyA9IDA7XHJcbiAgICB0aGlzLm11bHRpbWVkaWFDb3VudC5pbWFnZXMzNjAgPSAwO1xyXG4gICAgdGhpcy5tdWx0aW1lZGlhQ291bnQudmlkZW9zID0gMDtcclxuICAgIHRoaXMuX2FsbE11bHRpbWVkaWEuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgc3dpdGNoIChpdGVtLnR5cGUpIHtcclxuICAgICAgICBjYXNlIFBGaWxlVHlwZUVudW0uSU1BR0U6XHJcbiAgICAgICAgICB0aGlzLm11bHRpbWVkaWFDb3VudC5pbWFnZXMrKztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgUEZpbGVUeXBlRW51bS5TUEhFUklDOlxyXG4gICAgICAgICAgdGhpcy5tdWx0aW1lZGlhQ291bnQuaW1hZ2VzMzYwKys7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFBGaWxlVHlwZUVudW0uVklERU86XHJcbiAgICAgICAgICB0aGlzLm11bHRpbWVkaWFDb3VudC52aWRlb3MrKztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcGFyc2VEYXRhQnlDb21wb25lbnRzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb21wbGV0ZVByb3BlcnR5LnByb3BlcnR5ID0gdGhpcy5fZWRpdG9ySW5zdGFuY2UuZ2V0UHJvcGVydHkoKTtcclxuICAgIHRoaXMuY29tcGxldGVQcm9wZXJ0eS5wcm9wZXJ0eS5wcm9wZXJ0eUluZm8ub3duZXIgPSB0aGlzLl9vd25lckluc3RhbmNlLmdldE93bmVyKCk7XHJcbiAgICBjb25zdCBkb2N1bWVudHNSZXNwb25zZSA9IHRoaXMuX2RvY3VtZW50c0luc3RhbmNlLmdldERvY3VtZW50cygpO1xyXG4gICAgdGhpcy5jb21wbGV0ZVByb3BlcnR5LmZpbGVzID0gZG9jdW1lbnRzUmVzcG9uc2UuZG9jdW1lbnRzO1xyXG4gICAgdGhpcy5fbmV3TWVkaWEgPSB0aGlzLl9uZXdNZWRpYS5jb25jYXQoZG9jdW1lbnRzUmVzcG9uc2UubmV3TWVkaWEpO1xyXG4gICAgdGhpcy5jb21wbGV0ZVByb3BlcnR5LmltYWdlcyA9IHRoaXMuZ2V0TXVsdGltZWRpYUJ5VHlwZShQRmlsZVR5cGVFbnVtLklNQUdFKTtcclxuICAgIHRoaXMuY29tcGxldGVQcm9wZXJ0eS5zcGhlcmljcyA9IHRoaXMuZ2V0TXVsdGltZWRpYUJ5VHlwZShQRmlsZVR5cGVFbnVtLlNQSEVSSUMpO1xyXG4gICAgdGhpcy5jb21wbGV0ZVByb3BlcnR5LnZpZGVvcyA9IHRoaXMuZ2V0TXVsdGltZWRpYUJ5VHlwZShQRmlsZVR5cGVFbnVtLlZJREVPKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdENvbXBsZXRlUHJvcGVydHkoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb21wbGV0ZSA9IG5ldyBOZXdDb21wbGV0ZVByb3BlcnR5KCk7XHJcbiAgICBjb21wbGV0ZS5wcm9wZXJ0eSA9IG5ldyBOZXdQcm9wZXJ0eSgpO1xyXG4gICAgY29tcGxldGUucHJvcGVydHkucHJvcGVydHlJbmZvID0gbmV3IFByb3BlcnR5SW5mbygpO1xyXG4gICAgdGhpcy5jb21wbGV0ZVByb3BlcnR5ID0gY29tcGxldGU7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import { removeError } from './remove-error';
6
+ /**
7
+ * @param {?} controlName
8
+ * @param {?} controlName2
9
+ * @return {?}
10
+ */
11
+ export function CurrencyFilterValidator(controlName, controlName2) {
12
+ return (/**
13
+ * @param {?} control
14
+ * @return {?}
15
+ */
16
+ (control) => {
17
+ if (control) {
18
+ /** @type {?} */
19
+ const peerControl = control.controls[controlName];
20
+ /** @type {?} */
21
+ const peerControl2 = control.controls[controlName2];
22
+ if (peerControl2.value) {
23
+ if (peerControl.value >= peerControl2.value) {
24
+ peerControl2.setErrors({
25
+ currency: true
26
+ });
27
+ }
28
+ if (peerControl.value < peerControl2.value) {
29
+ removeError(peerControl2, 'currency');
30
+ }
31
+ }
32
+ }
33
+ return null;
34
+ });
35
+ }
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3ktZmlsdGVyLXZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BtYXBsYW5kZXIvY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3Byb3BlcnR5L3ZhbGlkYXRvcnMvY3VycmVuY3ktZmlsdGVyLXZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0EsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFHM0MsTUFBTSxVQUFVLHVCQUF1QixDQUFDLFdBQW1CLEVBQUUsWUFBb0I7SUFDL0U7Ozs7SUFBTyxDQUFDLE9BQWtCLEVBQXFDLEVBQUU7UUFDL0QsSUFBSSxPQUFPLEVBQUU7O2tCQUNMLFdBQVcsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQzs7a0JBQzNDLFlBQVksR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztZQUNuRCxJQUFJLFlBQVksQ0FBQyxLQUFLLEVBQUU7Z0JBQ3RCLElBQUksV0FBVyxDQUFDLEtBQUssSUFBSSxZQUFZLENBQUMsS0FBSyxFQUFFO29CQUMzQyxZQUFZLENBQUMsU0FBUyxDQUFDO3dCQUNyQixRQUFRLEVBQUUsSUFBSTtxQkFDZixDQUFDLENBQUM7aUJBQ0o7Z0JBQ0QsSUFBSSxXQUFXLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLEVBQUU7b0JBQzFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7aUJBQ3ZDO2FBQ0Y7U0FDRjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxFQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvckZufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7cmVtb3ZlRXJyb3J9IGZyb20gJy4vcmVtb3ZlLWVycm9yJztcclxuXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gQ3VycmVuY3lGaWx0ZXJWYWxpZGF0b3IoY29udHJvbE5hbWU6IHN0cmluZywgY29udHJvbE5hbWUyOiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XHJcbiAgcmV0dXJuIChjb250cm9sOiBGb3JtR3JvdXApOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSB8IG51bGwgPT4ge1xyXG4gICAgaWYgKGNvbnRyb2wpIHtcclxuICAgICAgY29uc3QgcGVlckNvbnRyb2wgPSBjb250cm9sLmNvbnRyb2xzW2NvbnRyb2xOYW1lXTtcclxuICAgICAgY29uc3QgcGVlckNvbnRyb2wyID0gY29udHJvbC5jb250cm9sc1tjb250cm9sTmFtZTJdO1xyXG4gICAgICBpZiAocGVlckNvbnRyb2wyLnZhbHVlKSB7XHJcbiAgICAgICAgaWYgKHBlZXJDb250cm9sLnZhbHVlID49IHBlZXJDb250cm9sMi52YWx1ZSkge1xyXG4gICAgICAgICAgcGVlckNvbnRyb2wyLnNldEVycm9ycyh7XHJcbiAgICAgICAgICAgIGN1cnJlbmN5OiB0cnVlXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBlZXJDb250cm9sLnZhbHVlIDwgcGVlckNvbnRyb2wyLnZhbHVlKSB7XHJcbiAgICAgICAgICByZW1vdmVFcnJvcihwZWVyQ29udHJvbDIsICdjdXJyZW5jeScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfTtcclxufVxyXG4iXX0=
@@ -16,6 +16,14 @@ export class PropertyCardComponent {
16
16
  this.favoriteChanged = new EventEmitter();
17
17
  this.propertyDiscarded = new EventEmitter();
18
18
  }
19
+ /**
20
+ * @return {?}
21
+ */
22
+ ngOnInit() {
23
+ if (this.positionLatLng) {
24
+ this.latLng(this.positionLatLng.latitude, this.positionLatLng.longitude);
25
+ }
26
+ }
19
27
  /**
20
28
  * @param {?} changes
21
29
  * @return {?}
@@ -54,12 +62,66 @@ export class PropertyCardComponent {
54
62
  discard() {
55
63
  this.propertyDiscarded.emit(this.info.propertyId);
56
64
  }
65
+ /**
66
+ * @private
67
+ * @param {?} deg
68
+ * @return {?}
69
+ */
70
+ deg2rad(deg) {
71
+ return deg * (Math.PI / 180);
72
+ }
73
+ /**
74
+ * @private
75
+ * @param {?} lat
76
+ * @param {?} lng
77
+ * @return {?}
78
+ */
79
+ latLng(lat, lng) {
80
+ /** @type {?} */
81
+ const lat1 = lat;
82
+ /** @type {?} */
83
+ const lon1 = lng;
84
+ /** @type {?} */
85
+ const lat2 = this.marker.location.latitude;
86
+ /** @type {?} */
87
+ const lon2 = this.marker.location.longitude;
88
+ /** @type {?} */
89
+ const R = 6371;
90
+ // Radius of the earth in km
91
+ /** @type {?} */
92
+ const dLat = this.deg2rad(lat2 - lat1);
93
+ // deg2rad below
94
+ /** @type {?} */
95
+ const dLon = this.deg2rad(lon2 - lon1);
96
+ /** @type {?} */
97
+ const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
98
+ Math.cos(this.deg2rad(lat1)) * Math.cos(this.deg2rad(lat2)) *
99
+ Math.sin(dLon / 2) * Math.sin(dLon / 2);
100
+ /** @type {?} */
101
+ const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
102
+ /** @type {?} */
103
+ let d = R * c;
104
+ if (Math.trunc(d) < 1) {
105
+ d = d * 1000;
106
+ d = Math.trunc(d);
107
+ if (d < 10) {
108
+ this.distance = 10 + ' m de su búsqueda';
109
+ }
110
+ else {
111
+ d = d - (d % 10);
112
+ this.distance = d + ' m de su búsqueda';
113
+ }
114
+ }
115
+ else {
116
+ this.distance = d.toFixed(2) + ' km de su búsqueda';
117
+ }
118
+ }
57
119
  }
58
120
  PropertyCardComponent.decorators = [
59
121
  { type: Component, args: [{
60
122
  selector: 'lib-property-card',
61
- template: "<div class=\"property-card\">\r\n <ng-template [ngIf]=\"!isOPI\">\r\n <div class=\"property-card__favorite\">\r\n <button class=\"favorite__button\" mat-icon-button (click)=\"favorite()\">\r\n <ng-template [ngIf]=\"isFavorite\" [ngIfElse]=\"noIsFavorite\">\r\n <mat-icon>favorite</mat-icon>\r\n </ng-template>\r\n <ng-template #noIsFavorite>\r\n <mat-icon>favorite_border</mat-icon>\r\n </ng-template>\r\n </button>\r\n </div>\r\n </ng-template>\r\n <ng-template [ngIf]=\"showDiscard\">\r\n <div class=\"property-card__discard\">\r\n <button class=\"discard__button\" mat-icon-button (click)=\"discard()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </ng-template>\r\n <a routerLink=\"{{href || '/'}}\" [queryParams]=\"queryParams || null\" [target]=\"target || null\"\r\n [state]=\"state || null\"\r\n class=\"property-card__image\" (mouseover)=\"onFrontImageOver()\"\r\n (mouseleave)=\"onFrontImageLeave()\">\r\n <img [src]=\"info.image\" alt=\"Property image\" libImageError [typeImage]=\"info.type\">\r\n <ng-template [ngIf]=\"mode === 'summary'\">\r\n <div class=\"property-card__body-summary\">\r\n <h2 class=\"color--white property-card__price\">\r\n {{info.price | currency}} {{info.currency}}\r\n </h2>\r\n <p class=\"color--white property-card__type\">\r\n {{info.type | propertyType}} {{info.offering | offeringType}}\r\n </p>\r\n <p class=\"color--white property-card__address body-summary__address\">\r\n {{info.address.colony}}, {{info.address.city}}\r\n </p>\r\n </div>\r\n </ng-template>\r\n </a>\r\n <ng-template [ngIf]=\"mode === 'full'\">\r\n <div class=\"property-card__body\">\r\n <h2 class=\"property-card__price\">\r\n {{info.price | currency : currency : 'symbol' : '1.0-0'}} {{info.currency}}\r\n </h2>\r\n <p class=\"property-card__type\">\r\n {{info.type | propertyType}} {{info.offering | offeringType}}\r\n </p>\r\n <p class=\"property-card__address\">\r\n {{info.address.colony}}, {{info.address.city}}\r\n </p>\r\n <ng-template [ngIf]=\"info.features\">\r\n <div class=\"property-card__features\">\r\n <ng-template [ngIf]=\"info.features && info.features.bedrooms && info.features.bedrooms > 0\">\r\n <p class=\"property-card__feature\">\r\n <span class=\"property-card__icon ic-features-bedroom\"></span>\r\n {{info.features.bedrooms}}\r\n </p>\r\n <span class=\"property-card__divider\"></span>\r\n </ng-template>\r\n <ng-template [ngIf]=\"info.features && info.features.bathrooms && info.features.bathrooms > 0 \">\r\n <p class=\"property-card__feature\">\r\n <span class=\"property-card__icon ic-features-bathroom\"></span>\r\n {{info.features.bathrooms}}\r\n </p>\r\n <span class=\"property-card__divider\"></span>\r\n </ng-template>\r\n <ng-template [ngIf]=\"info.features && info.features.mainArea && info.features.mainArea > 0\">\r\n <p class=\"property-card__feature\">\r\n <span class=\"property-card__icon ic-features-surface\"></span>\r\n {{info.features.mainArea}}\r\n <ng-template [ngIf]=\"info.features.areaUnit && info.features.areaUnit === 'M2'\"\r\n [ngIfElse]=\"ftUnit\">\r\n m<sup>2</sup>\r\n </ng-template>\r\n <ng-template #ftUnit>\r\n sq ft\r\n </ng-template>\r\n </p>\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n</div>\r\n",
62
- styles: [":host{display:block;width:calc(100% - 16px);margin:16px auto;border-radius:16px}.property-card{width:100%;border-radius:16px;position:relative}.property-card__favorite{position:absolute;top:4px;right:4px;border-radius:50%;z-index:1;width:40px;height:40px;display:flex}.favorite__button{margin:auto}.property-card__discard{position:absolute;right:8px;bottom:8px;z-index:1;width:40px;height:40px;border-radius:16px;display:flex}.discard__button{margin:auto}.property-card__image{width:100%;border-radius:16px;padding-bottom:calc(100% / 4 * 3);position:relative;text-decoration:none;display:block}.property-card__image:hover{width:calc(100% - 6px);padding-bottom:calc((100% - 6px)/ 4 * 3)}.property-card__image img{border-radius:16px;position:absolute;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.property-card__body{padding:8px;box-sizing:border-box}.property-card__body-summary{padding:8px;box-sizing:border-box;position:absolute;bottom:0;width:100%;border-radius:16px;background:linear-gradient(transparent,rgba(0,0,0,.8))}.body-summary__address{width:80%!important}.property-card__price{margin:3px 0;font-size:16px}.property-card__price:empty{width:60%;height:16px;background:#e0e0e0;border-radius:16px}.property-card__type{margin:3px 0}.property-card__type:empty{width:70%;height:16px;border-radius:16px;background:#e0e0e0}.property-card__address{margin:3px 0;color:#707070;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.property-card__address:empty{width:80%;height:16px;border-radius:16px;background:#e0e0e0}.property-card__features{display:flex;margin:6px 0 0}.property-card__feature{margin:0 8px 0 0;display:flex;align-items:center;font-size:12px;color:#707070}.property-card__divider{display:block;margin:auto 8px;width:1px;height:16px;background:#9e9e9e}.property-card__icon{width:24px;height:24px;font-size:24px;margin:0 4px 0 0;color:#bdbdbd}"]
123
+ template: "<div class=\"property-card\">\r\n <ng-template [ngIf]=\"!isOPI\">\r\n <div class=\"property-card__favorite\">\r\n <button class=\"favorite__button\" mat-icon-button (click)=\"favorite()\">\r\n <ng-template [ngIf]=\"isFavorite\" [ngIfElse]=\"noIsFavorite\">\r\n <mat-icon>favorite</mat-icon>\r\n </ng-template>\r\n <ng-template #noIsFavorite>\r\n <mat-icon>favorite_border</mat-icon>\r\n </ng-template>\r\n </button>\r\n </div>\r\n </ng-template>\r\n <ng-template [ngIf]=\"showDiscard\">\r\n <div class=\"property-card__discard\">\r\n <button class=\"discard__button\" mat-icon-button (click)=\"discard()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </ng-template>\r\n <a routerLink=\"{{href || '/'}}\" [queryParams]=\"queryParams || null\" [target]=\"target || null\"\r\n [state]=\"state || null\"\r\n class=\"property-card__image\" (mouseover)=\"onFrontImageOver()\"\r\n (mouseleave)=\"onFrontImageLeave()\">\r\n <img [src]=\"info.image\" alt=\"Property image\" libImageError [typeImage]=\"info.type\">\r\n <ng-template [ngIf]=\"mode === 'summary'\">\r\n <div class=\"property-card__body-summary\">\r\n <h2 class=\"color--white property-card__price\">\r\n {{info.price | currency}} {{info.currency}}\r\n </h2>\r\n <p class=\"color--white property-card__type\">\r\n {{info.type | propertyType}} {{info.offering | offeringType}}\r\n </p>\r\n <p class=\"color--white property-card__address body-summary__address\">\r\n {{info.address.colony}}, {{info.address.city}}\r\n </p>\r\n </div>\r\n </ng-template>\r\n </a>\r\n <ng-template [ngIf]=\"mode === 'full'\">\r\n <div class=\"property-card__body\">\r\n <div class=\"property-card__location-title\">\r\n <h2 class=\"property-card__price\">\r\n {{info.price | currency : currency : 'symbol' : '1.0-0'}} {{info.currency}}\r\n </h2>\r\n <ng-container *ngIf=\"distance !== ''\" >\r\n <h2 class=\"property-card__location\" [hidden]=\"!distance\">\r\n {{distance}}\r\n </h2>\r\n </ng-container>\r\n </div>\r\n <p class=\"property-card__type\">\r\n {{info.type | propertyType}} {{info.offering | offeringType}}\r\n </p>\r\n <p class=\"property-card__address\">\r\n {{info.address.colony}}, {{info.address.city}}\r\n </p>\r\n <ng-template [ngIf]=\"info.features\">\r\n <div class=\"property-card__features\">\r\n <ng-template [ngIf]=\"info.features && info.features.bedrooms && info.features.bedrooms > 0\">\r\n <p class=\"property-card__feature\">\r\n <span class=\"property-card__icon ic-features-bedroom\"></span>\r\n {{info.features.bedrooms}}\r\n </p>\r\n <span class=\"property-card__divider\"></span>\r\n </ng-template>\r\n <ng-template [ngIf]=\"info.features && info.features.bathrooms && info.features.bathrooms > 0 \">\r\n <p class=\"property-card__feature\">\r\n <span class=\"property-card__icon ic-features-bathroom\"></span>\r\n {{info.features.bathrooms}}\r\n </p>\r\n <span class=\"property-card__divider\"></span>\r\n </ng-template>\r\n <ng-template [ngIf]=\"info.features && info.features.mainArea && info.features.mainArea > 0\">\r\n <p class=\"property-card__feature\">\r\n <span class=\"property-card__icon ic-features-surface\"></span>\r\n {{info.features.mainArea}}\r\n <ng-template [ngIf]=\"info.features.areaUnit && info.features.areaUnit === 'M2'\"\r\n [ngIfElse]=\"ftUnit\">\r\n m<sup>2</sup>\r\n </ng-template>\r\n <ng-template #ftUnit>\r\n sq ft\r\n </ng-template>\r\n </p>\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n</div>\r\n",
124
+ styles: [":host{display:block;width:calc(100% - 16px);margin:16px auto;border-radius:16px}.property-card{width:100%;border-radius:16px;position:relative}.property-card__favorite{position:absolute;top:4px;right:4px;border-radius:50%;z-index:1;width:40px;height:40px;display:flex}.favorite__button{margin:auto}.property-card__discard{position:absolute;right:8px;bottom:8px;z-index:1;width:40px;height:40px;border-radius:16px;display:flex}.discard__button{margin:auto}.property-card__image{width:100%;border-radius:16px;padding-bottom:calc(100% / 4 * 3);position:relative;text-decoration:none;display:block}.property-card__image:hover{width:calc(100% - 6px);padding-bottom:calc((100% - 6px)/ 4 * 3)}.property-card__image img{border-radius:16px;position:absolute;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.property-card__body{padding:8px;box-sizing:border-box}.property-card__body-summary{padding:8px;box-sizing:border-box;position:absolute;bottom:0;width:100%;border-radius:16px;background:linear-gradient(transparent,rgba(0,0,0,.8))}.body-summary__address{width:80%!important}.property-card__location-title{display:flex;width:100%;flex-direction:row;flex-wrap:wrap}.property-card__location{font-size:12px;margin:4px;color:#707070}@media (min-width:1200px){.property-card__location{font-size:14px}}.property-card__location:empty{width:60%;height:14px;background:#e0e0e0;border-radius:16px}.property-card__price{margin:3px 0;font-size:16px}.property-card__price:empty{width:60%;height:16px;background:#e0e0e0;border-radius:16px}.property-card__type{margin:3px 0}.property-card__type:empty{width:70%;height:16px;border-radius:16px;background:#e0e0e0}.property-card__address{margin:3px 0;color:#707070;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.property-card__address:empty{width:80%;height:16px;border-radius:16px;background:#e0e0e0}.property-card__features{display:flex;margin:6px 0 0}.property-card__feature{margin:0 8px 0 0;display:flex;align-items:center;font-size:12px;color:#707070}.property-card__divider{display:block;margin:auto 8px;width:1px;height:16px;background:#9e9e9e}.property-card__icon{width:24px;height:24px;font-size:24px;margin:0 4px 0 0;color:#bdbdbd}"]
63
125
  }] }
64
126
  ];
65
127
  /** @nocollapse */
@@ -72,6 +134,7 @@ PropertyCardComponent.propDecorators = {
72
134
  target: [{ type: Input }],
73
135
  queryParams: [{ type: Input }],
74
136
  state: [{ type: Input }],
137
+ positionLatLng: [{ type: Input }],
75
138
  isFavorite: [{ type: Input }],
76
139
  currency: [{ type: Input }],
77
140
  showDiscard: [{ type: Input }],
@@ -92,6 +155,8 @@ if (false) {
92
155
  /** @type {?} */
93
156
  PropertyCardComponent.prototype.state;
94
157
  /** @type {?} */
158
+ PropertyCardComponent.prototype.positionLatLng;
159
+ /** @type {?} */
95
160
  PropertyCardComponent.prototype.isFavorite;
96
161
  /** @type {?} */
97
162
  PropertyCardComponent.prototype.currency;
@@ -108,6 +173,8 @@ if (false) {
108
173
  /** @type {?} */
109
174
  PropertyCardComponent.prototype.info;
110
175
  /** @type {?} */
176
+ PropertyCardComponent.prototype.distance;
177
+ /** @type {?} */
111
178
  PropertyCardComponent.prototype.isOPI;
112
179
  }
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbWFwbGFuZGVyL2NvbXBvbmVudHMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9wcm9wZXJ0eS1jYXJkL3Byb3BlcnR5LWNhcmQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFhLFFBQVEsRUFBRSxNQUFNLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQVNwRCxNQUFNLE9BQU8scUJBQXFCOzs7O0lBbUJoQyxZQUMwRCxLQUFjO1FBQWQsVUFBSyxHQUFMLEtBQUssQ0FBUztRQVAvRCxTQUFJLEdBQXVCLE1BQU0sQ0FBQztRQVN6QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDaEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ2xELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBQ3RELENBQUM7Ozs7O0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxZQUFZLEVBQUU7WUFDM0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQ3RHO1FBQ0QsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksRUFBRTtZQUN2RCxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO1NBQ2pEO0lBQ0gsQ0FBQzs7OztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkMsQ0FBQzs7OztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkMsQ0FBQzs7OztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7Ozs7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7OztZQTFERixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtnQkFDN0Isc3dIQUE2Qzs7YUFFOUM7Ozs7MENBcUJJLFFBQVEsWUFBSSxNQUFNLFNBQUMsMkJBQTJCOzs7cUJBbkJoRCxLQUFLO21CQUNMLEtBQUs7cUJBQ0wsS0FBSzswQkFDTCxLQUFLO29CQUdMLEtBQUs7eUJBR0wsS0FBSzt1QkFDTCxLQUFLOzBCQUNMLEtBQUs7bUJBQ0wsS0FBSzs0QkFDTCxNQUFNOzhCQUNOLE1BQU07Z0NBQ04sTUFBTTs7OztJQWZQLHVDQUF3Qjs7SUFDeEIscUNBQXNCOztJQUN0Qix1Q0FBd0I7O0lBQ3hCLDRDQUVFOztJQUNGLHNDQUVFOztJQUNGLDJDQUE2Qjs7SUFDN0IseUNBQTBCOztJQUMxQiw0Q0FBOEI7O0lBQzlCLHFDQUEyQzs7SUFDM0MsOENBQThDOztJQUM5QyxnREFBZ0Q7O0lBQ2hELGtEQUFrRDs7SUFDbEQscUNBQThCOztJQUc1QixzQ0FBc0UiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9wdGlvbmFsLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1BST1BFUlRZX0NBUkRfQ09ORklHX01PRFVMRX0gZnJvbSAnLi90b2tlbic7XHJcbmltcG9ydCB7TWFya2VyfSBmcm9tICcuLi8uLi91dGlscy9tb2RlbHMvbWFya2VyJztcclxuaW1wb3J0IHtQcm9wZXJ0eUNhcmRJbmZvfSBmcm9tICcuLi8uLi91dGlscy9tb2RlbHMvcHJvcGVydHktY2FyZC1pbmZvJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXByb3BlcnR5LWNhcmQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9wZXJ0eS1jYXJkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wcm9wZXJ0eS1jYXJkLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFByb3BlcnR5Q2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KCkgbWFya2VyOiBNYXJrZXI7XHJcbiAgQElucHV0KCkgaHJlZjogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHRhcmdldDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHF1ZXJ5UGFyYW1zOiB7XHJcbiAgICBbazogc3RyaW5nXTogYW55O1xyXG4gIH07XHJcbiAgQElucHV0KCkgc3RhdGU6IHtcclxuICAgIFtrOiBzdHJpbmddOiBhbnk7XHJcbiAgfTtcclxuICBASW5wdXQoKSBpc0Zhdm9yaXRlOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGN1cnJlbmN5OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2hvd0Rpc2NhcmQ6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgbW9kZTogJ2Z1bGwnIHwgJ3N1bW1hcnknID0gJ2Z1bGwnO1xyXG4gIEBPdXRwdXQoKSBtYXJrZXJDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8TWFya2VyPjtcclxuICBAT3V0cHV0KCkgZmF2b3JpdGVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPjtcclxuICBAT3V0cHV0KCkgcHJvcGVydHlEaXNjYXJkZWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+O1xyXG4gIHB1YmxpYyBpbmZvOiBQcm9wZXJ0eUNhcmRJbmZvO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUFJPUEVSVFlfQ0FSRF9DT05GSUdfTU9EVUxFKSBwdWJsaWMgaXNPUEk6IGJvb2xlYW4sXHJcbiAgKSB7XHJcbiAgICB0aGlzLmN1cnJlbmN5ID0gbnVsbDtcclxuICAgIHRoaXMubWFya2VyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8TWFya2VyPigpO1xyXG4gICAgdGhpcy5mYXZvcml0ZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICAgIHRoaXMucHJvcGVydHlEaXNjYXJkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydjdXJyZW5jeSddICYmIGNoYW5nZXNbJ2N1cnJlbmN5J10uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIHRoaXMuY3VycmVuY3kgPSBjaGFuZ2VzWydjdXJyZW5jeSddLmN1cnJlbnRWYWx1ZSAhPT0gJ01YTicgPyBjaGFuZ2VzWydjdXJyZW5jeSddLmN1cnJlbnRWYWx1ZSA6IG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snbWFya2VyJ10gJiYgY2hhbmdlc1snbWFya2VyJ10uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIHRoaXMuaW5mbyA9IGNoYW5nZXNbJ21hcmtlciddLmN1cnJlbnRWYWx1ZS5pbmZvO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Gcm9udEltYWdlT3ZlcigpOiB2b2lkIHtcclxuICAgIHRoaXMubWFya2VyLmhvdmVyID0gdHJ1ZTtcclxuICAgIHRoaXMubWFya2VyQ2hhbmdlZC5lbWl0KHRoaXMubWFya2VyKTtcclxuICB9XHJcblxyXG4gIG9uRnJvbnRJbWFnZUxlYXZlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5tYXJrZXIuaG92ZXIgPSBmYWxzZTtcclxuICAgIHRoaXMubWFya2VyQ2hhbmdlZC5lbWl0KHRoaXMubWFya2VyKTtcclxuICB9XHJcblxyXG4gIGZhdm9yaXRlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mYXZvcml0ZUNoYW5nZWQuZW1pdCh0aGlzLmluZm8ucHJvcGVydHlJZCk7XHJcbiAgfVxyXG5cclxuICBkaXNjYXJkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5wcm9wZXJ0eURpc2NhcmRlZC5lbWl0KHRoaXMuaW5mby5wcm9wZXJ0eUlkKTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbWFwbGFuZGVyL2NvbXBvbmVudHMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9wcm9wZXJ0eS1jYXJkL3Byb3BlcnR5LWNhcmQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFhLFFBQVEsRUFBRSxNQUFNLEVBQXdCLE1BQU0sZUFBZSxDQUFDO0FBQ3pILE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQVNwRCxNQUFNLE9BQU8scUJBQXFCOzs7O0lBcUJoQyxZQUMwRCxLQUFjO1FBQWQsVUFBSyxHQUFMLEtBQUssQ0FBUztRQVIvRCxTQUFJLEdBQXVCLE1BQU0sQ0FBQztRQVV6QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDaEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ2xELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBQ3RELENBQUM7Ozs7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUMxRTtJQUNILENBQUM7Ozs7O0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxZQUFZLEVBQUU7WUFDM0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENB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QUcsbUJBQW1CLENBQUM7YUFDMUM7aUJBQU07Z0JBQ0wsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLEdBQUcsbUJBQW1CLENBQUM7YUFDekM7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLG9CQUFvQixDQUFDO1NBQ3JEO0lBQ0gsQ0FBQzs7O1lBbkdGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3Qiw2aElBQTZDOzthQUU5Qzs7OzswQ0F1QkksUUFBUSxZQUFJLE1BQU0sU0FBQywyQkFBMkI7OztxQkFyQmhELEtBQUs7bUJBQ0wsS0FBSztxQkFDTCxLQUFLOzBCQUNMLEtBQUs7b0JBR0wsS0FBSzs2QkFHTCxLQUFLO3lCQUNMLEtBQUs7dUJBQ0wsS0FBSzswQkFDTCxLQUFLO21CQUNMLEtBQUs7NEJBQ0wsTUFBTTs4QkFDTixNQUFNO2dDQUNOLE1BQU07Ozs7SUFoQlAsdUNBQXdCOztJQUN4QixxQ0FBc0I7O0lBQ3RCLHVDQUF3Qjs7SUFDeEIsNENBRUU7O0lBQ0Ysc0NBRUU7O0lBQ0YsK0NBQTZCOztJQUM3QiwyQ0FBNkI7O0lBQzdCLHlDQUEwQjs7SUFDMUIsNENBQThCOztJQUM5QixxQ0FBMkM7O0lBQzNDLDhDQUE4Qzs7SUFDOUMsZ0RBQWdEOztJQUNoRCxrREFBa0Q7O0lBQ2xELHFDQUE4Qjs7SUFDOUIseUNBQXFCOztJQUduQixzQ0FBc0UiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9wdGlvbmFsLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7UFJPUEVSVFlfQ0FSRF9DT05GSUdfTU9EVUxFfSBmcm9tICcuL3Rva2VuJztcclxuaW1wb3J0IHtNYXJrZXJ9IGZyb20gJy4uLy4uL3V0aWxzL21vZGVscy9tYXJrZXInO1xyXG5pbXBvcnQge1Byb3BlcnR5Q2FyZEluZm99IGZyb20gJy4uLy4uL3V0aWxzL21vZGVscy9wcm9wZXJ0eS1jYXJkLWluZm8nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItcHJvcGVydHktY2FyZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb3BlcnR5LWNhcmQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Byb3BlcnR5LWNhcmQuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvcGVydHlDYXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQge1xyXG4gIEBJbnB1dCgpIG1hcmtlcjogTWFya2VyO1xyXG4gIEBJbnB1dCgpIGhyZWY6IHN0cmluZztcclxuICBASW5wdXQoKSB0YXJnZXQ6IHN0cmluZztcclxuICBASW5wdXQoKSBxdWVyeVBhcmFtczoge1xyXG4gICAgW2s6IHN0cmluZ106IGFueTtcclxuICB9O1xyXG4gIEBJbnB1dCgpIHN0YXRlOiB7XHJcbiAgICBbazogc3RyaW5nXTogYW55O1xyXG4gIH07XHJcbiAgQElucHV0KCkgcG9zaXRpb25MYXRMbmc6IGFueTtcclxuICBASW5wdXQoKSBpc0Zhdm9yaXRlOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGN1cnJlbmN5OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2hvd0Rpc2NhcmQ6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgbW9kZTogJ2Z1bGwnIHwgJ3N1bW1hcnknID0gJ2Z1bGwnO1xyXG4gIEBPdXRwdXQoKSBtYXJrZXJDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8TWFya2VyPjtcclxuICBAT3V0cHV0KCkgZmF2b3JpdGVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPjtcclxuICBAT3V0cHV0KCkgcHJvcGVydHlEaXNjYXJkZWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+O1xyXG4gIHB1YmxpYyBpbmZvOiBQcm9wZXJ0eUNhcmRJbmZvO1xyXG4gIHB1YmxpYyBkaXN0YW5jZTogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUFJPUEVSVFlfQ0FSRF9DT05GSUdfTU9EVUxFKSBwdWJsaWMgaXNPUEk6IGJvb2xlYW4sXHJcbiAgKSB7XHJcbiAgICB0aGlzLmN1cnJlbmN5ID0gbnVsbDtcclxuICAgIHRoaXMubWFya2VyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8TWFya2VyPigpO1xyXG4gICAgdGhpcy5mYXZvcml0ZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICAgIHRoaXMucHJvcGVydHlEaXNjYXJkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCl7XHJcbiAgICBpZiAodGhpcy5wb3NpdGlvbkxhdExuZykge1xyXG4gICAgICB0aGlzLmxhdExuZyh0aGlzLnBvc2l0aW9uTGF0TG5nLmxhdGl0dWRlLCB0aGlzLnBvc2l0aW9uTGF0TG5nLmxvbmdpdHVkZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snY3VycmVuY3knXSAmJiBjaGFuZ2VzWydjdXJyZW5jeSddLmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICB0aGlzLmN1cnJlbmN5ID0gY2hhbmdlc1snY3VycmVuY3knXS5jdXJyZW50VmFsdWUgIT09ICdNWE4nID8gY2hhbmdlc1snY3VycmVuY3knXS5jdXJyZW50VmFsdWUgOiBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ21hcmtlciddICYmIGNoYW5nZXNbJ21hcmtlciddLmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICB0aGlzLmluZm8gPSBjaGFuZ2VzWydtYXJrZXInXS5jdXJyZW50VmFsdWUuaW5mbztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRnJvbnRJbWFnZU92ZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLm1hcmtlci5ob3ZlciA9IHRydWU7XHJcbiAgICB0aGlzLm1hcmtlckNoYW5nZWQuZW1pdCh0aGlzLm1hcmtlcik7XHJcbiAgfVxyXG5cclxuICBvbkZyb250SW1hZ2VMZWF2ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMubWFya2VyLmhvdmVyID0gZmFsc2U7XHJcbiAgICB0aGlzLm1hcmtlckNoYW5nZWQuZW1pdCh0aGlzLm1hcmtlcik7XHJcbiAgfVxyXG5cclxuICBmYXZvcml0ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZmF2b3JpdGVDaGFuZ2VkLmVtaXQodGhpcy5pbmZvLnByb3BlcnR5SWQpO1xyXG4gIH1cclxuXHJcbiAgZGlzY2FyZCgpOiB2b2lkIHtcclxuICAgIHRoaXMucHJvcGVydHlEaXNjYXJkZWQuZW1pdCh0aGlzLmluZm8ucHJvcGVydHlJZCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRlZzJyYWQoZGVnKTogYW55IHtcclxuICAgIHJldHVybiBkZWcgKiAoTWF0aC5QSSAvIDE4MCApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsYXRMbmcobGF0OiBhbnksIGxuZzogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBsYXQxID0gbGF0O1xyXG4gICAgY29uc3QgbG9uMSA9IGxuZztcclxuICAgIGNvbnN0IGxhdDIgPSB0aGlzLm1hcmtlci5sb2NhdGlvbi5sYXRpdHVkZTtcclxuICAgIGNvbnN0IGxvbjIgPSB0aGlzLm1hcmtlci5sb2NhdGlvbi5sb25naXR1ZGU7XHJcbiAgICBjb25zdCBSID0gNjM3MTsgLy8gUmFkaXVzIG9mIHRoZSBlYXJ0aCBpbiBrbVxyXG4gICAgY29uc3QgZExhdCA9IHRoaXMuZGVnMnJhZChsYXQyIC0gbGF0MSApOyAgLy8gZGVnMnJhZCBiZWxvd1xyXG4gICAgY29uc3QgZExvbiA9IHRoaXMuZGVnMnJhZChsb24yIC0gbG9uMSApO1xyXG4gICAgY29uc3QgYSA9XHJcbiAgICAgIE1hdGguc2luKGRMYXQgLyAyKSAqIE1hdGguc2luKGRMYXQgLyAyKSArXHJcbiAgICAgIE1hdGguY29zKHRoaXMuZGVnMnJhZChsYXQxKSkgKiBNYXRoLmNvcyh0aGlzLmRlZzJyYWQobGF0MikpICpcclxuICAgICAgTWF0aC5zaW4oZExvbiAvIDIpICogTWF0aC5zaW4oZExvbiAvIDIpXHJcbiAgICA7XHJcbiAgICBjb25zdCBjID0gMiAqIE1hdGguYXRhbjIoTWF0aC5zcXJ0KGEpLCBNYXRoLnNxcnQoMSAtIGEpKTtcclxuICAgIGxldCAgZCA9IFIgKiBjOyAvLyBEaXN0YW5jZSBpbiBrbVxyXG4gICAgaWYgKE1hdGgudHJ1bmMoZCkgPCAxKSB7XHJcbiAgICAgIGQgPSBkICogMTAwMDtcclxuICAgICAgZCA9IE1hdGgudHJ1bmMoZCk7XHJcbiAgICAgIGlmIChkIDwgMTApIHtcclxuICAgICAgICB0aGlzLmRpc3RhbmNlID0gMTAgKyAnIG0gZGUgc3UgYsO6c3F1ZWRhJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBkID0gZCAtIChkICUgMTApO1xyXG4gICAgICAgIHRoaXMuZGlzdGFuY2UgPSBkICsgJyBtIGRlIHN1IGLDunNxdWVkYSc7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGlzdGFuY2UgPSBkLnRvRml4ZWQoMikgKyAnIGttIGRlIHN1IGLDunNxdWVkYSc7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==